implemented 15,12,18 didn't check 18
This commit is contained in:
@ -67,6 +67,7 @@ interface EditorActions {
|
||||
setHoveredWordIndex: (index: number | null) => void;
|
||||
deleteSelectedWords: () => void;
|
||||
deleteWordRange: (startIndex: number, endIndex: number) => void;
|
||||
updateWordText: (index: number, text: string) => void;
|
||||
addCutRange: (start: number, end: number, trimGroupId?: string) => void;
|
||||
addMuteRange: (start: number, end: number) => void;
|
||||
addGainRange: (start: number, end: number, gainDb: number) => void;
|
||||
@ -262,6 +263,33 @@ export const useEditorStore = create<EditorState & EditorActions>()(
|
||||
get().addCutRange(words[startIndex].start, words[endIndex].end);
|
||||
},
|
||||
|
||||
updateWordText: (index, text) => {
|
||||
const { words, segments } = get();
|
||||
if (index < 0 || index >= words.length) return;
|
||||
const newWords = words.map((w, i) =>
|
||||
i === index ? { ...w, word: text } : w
|
||||
);
|
||||
// Also update the corresponding segment's words and text
|
||||
let globalIdx = 0;
|
||||
const newSegments = segments.map((seg) => {
|
||||
const start = globalIdx;
|
||||
globalIdx += seg.words.length;
|
||||
if (index >= start && index < start + seg.words.length) {
|
||||
const localIdx = index - start;
|
||||
const updatedSegWords = seg.words.map((w, i) =>
|
||||
i === localIdx ? { ...w, word: text } : w
|
||||
);
|
||||
return {
|
||||
...seg,
|
||||
words: updatedSegWords,
|
||||
text: updatedSegWords.map((w) => w.word).join(' '),
|
||||
};
|
||||
}
|
||||
return seg;
|
||||
});
|
||||
set({ words: newWords, segments: newSegments });
|
||||
},
|
||||
|
||||
addCutRange: (start, end, trimGroupId) => {
|
||||
const { cutRanges } = get();
|
||||
const newRange: CutRange = {
|
||||
|
||||
Reference in New Issue
Block a user