run operations only on selected segments

pull/2233/head
Mikael Finstad 1 year ago
parent 08233f6e80
commit 93b9ae783c
No known key found for this signature in database
GPG Key ID: 25AB36E3E81CBC26

@ -106,7 +106,10 @@ function useSegments({ filePath, workingRef, setWorking, setProgress, videoStrea
safeSetCutSegments([]);
}, [clearSegColorCounter, safeSetCutSegments]);
const shuffleSegments = useCallback(() => safeSetCutSegments((oldSegments) => shuffleArray(oldSegments)), [safeSetCutSegments]);
const shuffleSegments = useCallback(() => safeSetCutSegments((existingSegments) => [
...existingSegments.filter((s) => !s.selected),
...shuffleArray(existingSegments.filter((s) => s.selected)),
]), [safeSetCutSegments]);
// todo combine with safeSetCutSegments?
const loadCutSegments = useCallback((edl: SegmentBase[], append: boolean) => {
@ -273,6 +276,7 @@ function useSegments({ filePath, workingRef, setWorking, setProgress, videoStrea
}, [cutSegments, fileDuration, haveInvalidSegs]);
const invertAllSegments = useCallback(() => {
// todo leave non selected segments as is?
// treat markers as 0 length
const sortedSegments = sortSegments(selectedSegments.map(({ end, ...rest }) => ({ ...rest, end: end ?? rest.start })));
@ -302,7 +306,10 @@ function useSegments({ filePath, workingRef, setWorking, setProgress, videoStrea
}, [createIndexedSegment, fileDuration, selectedSegments, safeSetCutSegments]);
const combineOverlappingSegments = useCallback(() => {
safeSetCutSegments((existingSegments) => combineOverlappingSegments2(existingSegments));
safeSetCutSegments((existingSegments) => [
...existingSegments.filter((s) => !s.selected),
...combineOverlappingSegments2(existingSegments.filter((s) => s.selected)), // only process selected
]);
}, [safeSetCutSegments]);
const combineSelectedSegments = useCallback(() => {
@ -693,8 +700,8 @@ function useSegments({ filePath, workingRef, setWorking, setProgress, videoStrea
const value = await labelSegmentDialog({ currentName: name, maxLength: maxLabelLength });
if (value == null) return;
safeSetCutSegments((existingSegments) => existingSegments.map((existingSegment) => {
if (selectedSegments.some((seg) => seg.segId === existingSegment.segId)) return { ...existingSegment, name: value };
return existingSegment;
if (!existingSegment.selected) return existingSegment;
return { ...existingSegment, name: value };
}));
}, [maxLabelLength, selectedSegments, safeSetCutSegments]);

@ -106,6 +106,7 @@ export function combineSelectedSegments(existingSegments: StateSegment[]) {
return []; // remove other selected segments
}
// pass through non selected segments
return [existingSegment];
});
}

Loading…
Cancel
Save