timeline utils hook props

This commit is contained in:
Josh Hawkins 2024-03-21 12:40:37 -05:00
parent 2bd7a8e93e
commit c12617fd56
8 changed files with 38 additions and 24 deletions

View File

@ -79,9 +79,11 @@ export function EventReviewTimeline({
);
const { alignStartDateToTimeline, alignEndDateToTimeline } = useTimelineUtils(
segmentDuration,
timelineDuration,
selectedTimelineRef,
{
segmentDuration,
timelineDuration,
timelineRef: selectedTimelineRef,
},
);
const timelineStartAligned = useMemo(

View File

@ -54,8 +54,7 @@ export function EventSegment({
} = useEventSegmentUtils(segmentDuration, events, severityType);
const { alignStartDateToTimeline, alignEndDateToTimeline } = useTimelineUtils(
segmentDuration,
0,
{ segmentDuration },
);
const severity = useMemo(

View File

@ -77,8 +77,10 @@ export function MotionReviewTimeline({
);
const { alignStartDateToTimeline, alignEndDateToTimeline } = useTimelineUtils(
segmentDuration,
timelineDuration,
{
segmentDuration,
timelineDuration,
},
);
const timelineStartAligned = useMemo(

View File

@ -43,8 +43,7 @@ export function MotionSegment({
useMotionSegmentUtils(segmentDuration, motion_events);
const { alignStartDateToTimeline, alignEndDateToTimeline } = useTimelineUtils(
segmentDuration,
0,
{ segmentDuration },
);
const { handleTouchStart } = useTapUtils();

View File

@ -44,11 +44,11 @@ export function SummaryTimeline({
[timelineEnd, timelineStart, segmentDuration],
);
const { alignStartDateToTimeline } = useTimelineUtils(
const { alignStartDateToTimeline } = useTimelineUtils({
segmentDuration,
reviewTimelineDuration,
reviewTimelineRef,
);
timelineDuration: reviewTimelineDuration,
timelineRef: reviewTimelineRef,
});
const timelineStartAligned = useMemo(
() => alignStartDateToTimeline(timelineStart) + 2 * segmentDuration,

View File

@ -41,9 +41,11 @@ function useDraggableElement({
const [clientYPosition, setClientYPosition] = useState<number | null>(null);
const [initialClickAdjustment, setInitialClickAdjustment] = useState(0);
const { alignStartDateToTimeline, getCumulativeScrollTop } = useTimelineUtils(
segmentDuration,
timelineDuration,
timelineRef,
{
segmentDuration: segmentDuration,
timelineDuration: timelineDuration,
timelineRef,
},
);
const draggingAtTopEdge = useMemo(() => {

View File

@ -1,10 +1,16 @@
import { useCallback } from "react";
export const useTimelineUtils = (
segmentDuration: number,
timelineDuration: number,
timelineRef?: React.RefObject<HTMLElement>,
) => {
export type TimelineUtilsProps = {
segmentDuration: number;
timelineDuration?: number;
timelineRef?: React.RefObject<HTMLElement>;
};
export function useTimelineUtils({
segmentDuration,
timelineDuration,
timelineRef,
}: TimelineUtilsProps) {
const alignEndDateToTimeline = useCallback(
(time: number): number => {
const remainder = time % segmentDuration;
@ -33,7 +39,7 @@ export const useTimelineUtils = (
}, []);
const getVisibleTimelineDuration = useCallback(() => {
if (timelineRef?.current) {
if (timelineRef?.current && timelineDuration) {
const {
scrollHeight: timelineHeight,
clientHeight: visibleTimelineHeight,
@ -55,4 +61,4 @@ export const useTimelineUtils = (
getCumulativeScrollTop,
getVisibleTimelineDuration,
};
};
}

View File

@ -385,7 +385,11 @@ function DetectionReview({
);
const { alignStartDateToTimeline, getVisibleTimelineDuration } =
useTimelineUtils(segmentDuration, timelineDuration, reviewTimelineRef);
useTimelineUtils({
segmentDuration,
timelineDuration,
timelineRef: reviewTimelineRef,
});
const scrollLock = useScrollLockout(contentRef);