feat: Cycle excluded segments by recency on Exclude area clicks
Co-authored-by: aider (gemini/gemini-2.5-pro) <aider@aider.chat>
This commit is contained in:
@@ -312,6 +312,8 @@ function Menu({data, duration, setDuration, end, setEnd, slider, setSlider, subm
|
|||||||
const [activeSearchResult, setActiveSearchResult] = useState(null);
|
const [activeSearchResult, setActiveSearchResult] = useState(null);
|
||||||
const scrollContainerRef = useRef(null);
|
const scrollContainerRef = useRef(null);
|
||||||
const scrollPositionRef = useRef(0);
|
const scrollPositionRef = useRef(0);
|
||||||
|
const [lastDrawnItemsForExclusion, setLastDrawnItemsForExclusion] = useState(null);
|
||||||
|
const [exclusionCycleIndex, setExclusionCycleIndex] = useState(0);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const container = scrollContainerRef.current;
|
const container = scrollContainerRef.current;
|
||||||
@@ -450,17 +452,22 @@ function Menu({data, duration, setDuration, end, setEnd, slider, setSlider, subm
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let longestSegment = goodSegments[0];
|
goodSegments.sort((a, b) => moment(b.end).diff(moment(a.end)));
|
||||||
for (let i = 1; i < goodSegments.length; i++) {
|
|
||||||
const durationCurrent = moment(longestSegment.end).diff(moment(longestSegment.start));
|
const drawnItemsKey = JSON.stringify(drawnItems.map(item => item.bounds.toBBoxString()).sort());
|
||||||
const durationNew = moment(goodSegments[i].end).diff(moment(goodSegments[i].start));
|
|
||||||
if (durationNew > durationCurrent) {
|
let newIndex = 0;
|
||||||
longestSegment = goodSegments[i];
|
if (lastDrawnItemsForExclusion === drawnItemsKey) {
|
||||||
}
|
newIndex = (exclusionCycleIndex + 1) % goodSegments.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
const startUnix = moment(longestSegment.start).unix();
|
setLastDrawnItemsForExclusion(drawnItemsKey);
|
||||||
const endUnix = moment(longestSegment.end).unix();
|
setExclusionCycleIndex(newIndex);
|
||||||
|
|
||||||
|
const segmentToSelect = goodSegments[newIndex];
|
||||||
|
|
||||||
|
const startUnix = moment(segmentToSelect.start).unix();
|
||||||
|
const endUnix = moment(segmentToSelect.end).unix();
|
||||||
const endOfWindowUnix = end.unix();
|
const endOfWindowUnix = end.unix();
|
||||||
|
|
||||||
const newSliderStart = Math.floor((startUnix - endOfWindowUnix) / duration.secs + duration.num);
|
const newSliderStart = Math.floor((startUnix - endOfWindowUnix) / duration.secs + duration.num);
|
||||||
|
|||||||
Reference in New Issue
Block a user