"use client"; import { useElementSelection } from "@/timeline/hooks/element/use-element-selection"; import { TimelineElement } from "./timeline-element"; import type { TimelineTrack } from "@/timeline"; import type { TimelineElement as TimelineElementType } from "@/timeline"; import { TIMELINE_LAYERS } from "./layers"; import { BASE_TIMELINE_PIXELS_PER_SECOND } from "@/timeline/scale"; import { useEdgeAutoScroll } from "@/timeline/hooks/use-edge-auto-scroll"; import type { ElementDragState } from "@/timeline"; import { useEditor } from "@/editor/use-editor"; interface TimelineTrackContentProps { track: TimelineTrack; zoomLevel: number; dragState: ElementDragState; rulerScrollRef: React.RefObject; tracksScrollRef: React.RefObject; lastMouseXRef: React.RefObject; onResizeStart: (params: { event: React.MouseEvent; element: TimelineElementType; track: TimelineTrack; side: "left" | "right"; }) => void; onElementMouseDown: (params: { event: React.MouseEvent; element: TimelineElementType; track: TimelineTrack; }) => void; onElementClick: (params: { event: React.MouseEvent; element: TimelineElementType; track: TimelineTrack; }) => void; onTrackMouseDown?: (event: React.MouseEvent) => void; onTrackMouseUp?: (event: React.MouseEvent) => void; shouldIgnoreClick?: () => boolean; targetElementId?: string | null; } export function TimelineTrackContent({ track, zoomLevel, dragState, rulerScrollRef, tracksScrollRef, lastMouseXRef, onResizeStart, onElementMouseDown, onElementClick, onTrackMouseDown, onTrackMouseUp, shouldIgnoreClick, targetElementId = null, }: TimelineTrackContentProps) { const { isElementSelected } = useElementSelection(); const duration = useEditor((e) => e.timeline.getTotalDuration()); useEdgeAutoScroll({ isActive: dragState.isDragging, getMouseClientX: () => lastMouseXRef.current ?? 0, rulerScrollRef, tracksScrollRef, contentWidth: duration * BASE_TIMELINE_PIXELS_PER_SECOND * zoomLevel, }); return (