diff --git a/web/src/components/timeline/ReviewTimeline.tsx b/web/src/components/timeline/ReviewTimeline.tsx index 6d5ba883f..16aec8083 100644 --- a/web/src/components/timeline/ReviewTimeline.tsx +++ b/web/src/components/timeline/ReviewTimeline.tsx @@ -58,6 +58,7 @@ export function ReviewTimeline({ const [isDraggingExportEnd, setIsDraggingExportEnd] = useState(false); const [exportStartPosition, setExportStartPosition] = useState(0); const [exportEndPosition, setExportEndPosition] = useState(0); + const segmentsRef = useRef(null); const handlebarRef = useRef(null); const handlebarTimeRef = useRef(null); const exportStartRef = useRef(null); @@ -100,6 +101,7 @@ export function ReviewTimeline({ } = useDraggableElement({ contentRef, timelineRef, + segmentsRef, draggableElementRef: handlebarRef, segmentDuration, showDraggableElement: showHandlebar, @@ -123,6 +125,7 @@ export function ReviewTimeline({ } = useDraggableElement({ contentRef, timelineRef, + segmentsRef, draggableElementRef: exportStartRef, segmentDuration, showDraggableElement: showExportHandles, @@ -147,6 +150,7 @@ export function ReviewTimeline({ } = useDraggableElement({ contentRef, timelineRef, + segmentsRef, draggableElementRef: exportEndRef, segmentDuration, showDraggableElement: showExportHandles, @@ -319,7 +323,7 @@ export function ReviewTimeline({ : "cursor-auto" }`} > -
+
{children} diff --git a/web/src/hooks/use-draggable-element.ts b/web/src/hooks/use-draggable-element.ts index 1f957e39d..4367907f6 100644 --- a/web/src/hooks/use-draggable-element.ts +++ b/web/src/hooks/use-draggable-element.ts @@ -6,6 +6,7 @@ import { useTimelineUtils } from "./use-timeline-utils"; type DraggableElementProps = { contentRef: React.RefObject; timelineRef: React.RefObject; + segmentsRef: React.RefObject; draggableElementRef: React.RefObject; segmentDuration: number; showDraggableElement: boolean; @@ -29,6 +30,7 @@ type DraggableElementProps = { function useDraggableElement({ contentRef, timelineRef, + segmentsRef, draggableElementRef, segmentDuration, showDraggableElement, @@ -430,12 +432,18 @@ function useDraggableElement({ useEffect(() => { if ( timelineRef.current && + segmentsRef.current && draggableElementTime && timelineCollapsed && timelineSegments && segments ) { - setFullTimelineHeight(timelineRef.current.scrollHeight); + setFullTimelineHeight( + Math.min( + timelineRef.current.scrollHeight, + segmentsRef.current.scrollHeight, + ), + ); const alignedSegmentTime = alignStartDateToTimeline(draggableElementTime); let segmentElement = timelineRef.current.querySelector( @@ -486,11 +494,16 @@ function useDraggableElement({ }, [timelineCollapsed, segments]); useEffect(() => { - if (timelineRef.current && segments) { + if (timelineRef.current && segments && segmentsRef.current) { setScrollEdgeSize(timelineRef.current.clientHeight * 0.03); - setFullTimelineHeight(timelineRef.current.scrollHeight); + setFullTimelineHeight( + Math.min( + timelineRef.current.scrollHeight, + segmentsRef.current.scrollHeight, + ), + ); } - }, [timelineRef, segments]); + }, [timelineRef, segmentsRef, segments]); return { handleMouseDown, handleMouseUp, handleMouseMove }; }