This commit is contained in:
Maze Winther
2026-02-01 11:06:20 +01:00
parent 33f4a54768
commit 58f23e8f2a
10 changed files with 32 additions and 32 deletions
+1 -1
View File
@@ -7,7 +7,7 @@ interface ColorPickerProps {
value?: string; value?: string;
onChange?: (value: string) => void; onChange?: (value: string) => void;
className?: string; className?: string;
containerRef?: React.RefObject<HTMLDivElement>; containerRef?: React.RefObject<HTMLDivElement | null>;
} }
const hexToHsv = (hex: string) => { const hexToHsv = (hex: string) => {
@@ -25,10 +25,10 @@ const DRAG_THRESHOLD_PX = 5;
interface UseElementInteractionProps { interface UseElementInteractionProps {
zoomLevel: number; zoomLevel: number;
timelineRef: RefObject<HTMLDivElement>; timelineRef: RefObject<HTMLDivElement | null>;
tracksContainerRef: RefObject<HTMLDivElement>; tracksContainerRef: RefObject<HTMLDivElement | null>;
tracksScrollRef: RefObject<HTMLDivElement>; tracksScrollRef: RefObject<HTMLDivElement | null>;
headerRef?: RefObject<HTMLElement>; headerRef?: RefObject<HTMLElement | null>;
snappingEnabled: boolean; snappingEnabled: boolean;
onSnapPointChange?: (snapPoint: SnapPoint | null) => void; onSnapPointChange?: (snapPoint: SnapPoint | null) => void;
} }
@@ -115,9 +115,9 @@ function getDragDropTarget({
elementId: string; elementId: string;
trackId: string; trackId: string;
tracks: TimelineTrack[]; tracks: TimelineTrack[];
tracksContainerRef: RefObject<HTMLDivElement>; tracksContainerRef: RefObject<HTMLDivElement | null>;
tracksScrollRef: RefObject<HTMLDivElement>; tracksScrollRef: RefObject<HTMLDivElement | null>;
headerRef?: RefObject<HTMLElement>; headerRef?: RefObject<HTMLElement | null>;
zoomLevel: number; zoomLevel: number;
snappedTime: number; snappedTime: number;
verticalDragDirection?: "up" | "down" | null; verticalDragDirection?: "up" | "down" | null;
@@ -3,8 +3,8 @@ import { useEffect, useRef } from "react";
interface UseEdgeAutoScrollParams { interface UseEdgeAutoScrollParams {
isActive: boolean; isActive: boolean;
getMouseClientX: () => number; getMouseClientX: () => number;
rulerScrollRef: React.RefObject<HTMLDivElement>; rulerScrollRef: React.RefObject<HTMLDivElement | null>;
tracksScrollRef: React.RefObject<HTMLDivElement>; tracksScrollRef: React.RefObject<HTMLDivElement | null>;
contentWidth: number; contentWidth: number;
edgeThreshold?: number; edgeThreshold?: number;
maxScrollSpeed?: number; maxScrollSpeed?: number;
@@ -1,10 +1,10 @@
import { useEffect, useRef } from "react"; import { useEffect, useRef } from "react";
interface UseScrollSyncProps { interface UseScrollSyncProps {
rulerScrollRef?: React.RefObject<HTMLDivElement>; rulerScrollRef?: React.RefObject<HTMLDivElement | null>;
tracksScrollRef: React.RefObject<HTMLDivElement>; tracksScrollRef: React.RefObject<HTMLDivElement | null>;
trackLabelsScrollRef?: React.RefObject<HTMLDivElement>; trackLabelsScrollRef?: React.RefObject<HTMLDivElement | null>;
bookmarksScrollRef?: React.RefObject<HTMLDivElement>; bookmarksScrollRef?: React.RefObject<HTMLDivElement | null>;
} }
export function useScrollSync({ export function useScrollSync({
@@ -4,12 +4,12 @@ import { getCumulativeHeightBefore, getTrackHeight } from "@/lib/timeline";
import { useEditor } from "../use-editor"; import { useEditor } from "../use-editor";
interface UseSelectionBoxProps { interface UseSelectionBoxProps {
containerRef: React.RefObject<HTMLElement>; containerRef: React.RefObject<HTMLElement | null>;
onSelectionComplete: ( onSelectionComplete: (
elements: { trackId: string; elementId: string }[], elements: { trackId: string; elementId: string }[],
) => void; ) => void;
isEnabled?: boolean; isEnabled?: boolean;
tracksScrollRef: React.RefObject<HTMLDivElement>; tracksScrollRef: React.RefObject<HTMLDivElement | null>;
zoomLevel: number; zoomLevel: number;
} }
@@ -6,9 +6,9 @@ interface UseSnapIndicatorPositionParams {
snapPoint: { time: number } | null; snapPoint: { time: number } | null;
zoomLevel: number; zoomLevel: number;
tracks: TimelineTrack[]; tracks: TimelineTrack[];
timelineRef: React.RefObject<HTMLDivElement>; timelineRef: React.RefObject<HTMLDivElement | null>;
trackLabelsRef?: React.RefObject<HTMLDivElement>; trackLabelsRef?: React.RefObject<HTMLDivElement | null>;
tracksScrollRef: React.RefObject<HTMLDivElement>; tracksScrollRef: React.RefObject<HTMLDivElement | null>;
} }
interface SnapIndicatorPosition { interface SnapIndicatorPosition {
@@ -17,8 +17,8 @@ import type { TrackType, DropTarget, ElementType } from "@/types/timeline";
import type { MediaDragData, StickerDragData } from "@/types/drag"; import type { MediaDragData, StickerDragData } from "@/types/drag";
interface UseTimelineDragDropProps { interface UseTimelineDragDropProps {
containerRef: RefObject<HTMLDivElement>; containerRef: RefObject<HTMLDivElement | null>;
headerRef?: RefObject<HTMLElement>; headerRef?: RefObject<HTMLElement | null>;
zoomLevel: number; zoomLevel: number;
} }
@@ -6,10 +6,10 @@ import { TIMELINE_CONSTANTS } from "@/constants/timeline-constants";
interface UseTimelinePlayheadProps { interface UseTimelinePlayheadProps {
zoomLevel: number; zoomLevel: number;
rulerRef: React.RefObject<HTMLDivElement>; rulerRef: React.RefObject<HTMLDivElement | null>;
rulerScrollRef: React.RefObject<HTMLDivElement>; rulerScrollRef: React.RefObject<HTMLDivElement | null>;
tracksScrollRef: React.RefObject<HTMLDivElement>; tracksScrollRef: React.RefObject<HTMLDivElement | null>;
playheadRef?: React.RefObject<HTMLDivElement>; playheadRef?: React.RefObject<HTMLDivElement | null>;
} }
export function useTimelinePlayhead({ export function useTimelinePlayhead({
@@ -5,10 +5,10 @@ import { getSnappedSeekTime } from "@/lib/time";
import { useEditor } from "../use-editor"; import { useEditor } from "../use-editor";
interface UseTimelineSeekProps { interface UseTimelineSeekProps {
playheadRef: RefObject<HTMLDivElement>; playheadRef: RefObject<HTMLDivElement | null>;
trackLabelsRef: RefObject<HTMLDivElement>; trackLabelsRef: RefObject<HTMLDivElement | null>;
rulerScrollRef: RefObject<HTMLDivElement>; rulerScrollRef: RefObject<HTMLDivElement | null>;
tracksScrollRef: RefObject<HTMLDivElement>; tracksScrollRef: RefObject<HTMLDivElement | null>;
zoomLevel: number; zoomLevel: number;
duration: number; duration: number;
isSelecting: boolean; isSelecting: boolean;
@@ -11,13 +11,13 @@ import { TIMELINE_CONSTANTS } from "@/constants/timeline-constants";
import { useEditor } from "@/hooks/use-editor"; import { useEditor } from "@/hooks/use-editor";
interface UseTimelineZoomProps { interface UseTimelineZoomProps {
containerRef: RefObject<HTMLDivElement>; containerRef: RefObject<HTMLDivElement | null>;
minZoom?: number; minZoom?: number;
initialZoom?: number; initialZoom?: number;
initialScrollLeft?: number; initialScrollLeft?: number;
initialPlayheadTime?: number; initialPlayheadTime?: number;
tracksScrollRef: RefObject<HTMLDivElement>; tracksScrollRef: RefObject<HTMLDivElement | null>;
rulerScrollRef: RefObject<HTMLDivElement>; rulerScrollRef: RefObject<HTMLDivElement | null>;
} }
interface UseTimelineZoomReturn { interface UseTimelineZoomReturn {