// fallow-ignore-file code-duplication // fallow-ignore-file dead-code import type { TimelineElement } from "../store/playerStore"; import type { BlockedTimelineEditIntent, TimelineStackingReorderIntent } from "./timelineEditing"; import type { TimelineGroupCommitOptions, TimelineGroupMoveChange, TimelineGroupResizeChange, } from "../../hooks/useTimelineGroupEditing"; /** * Shared callback signatures for timeline editing operations. * Used by NLELayout, Timeline, and any component that passes through * the standard set of timeline mutation handlers. */ export interface TimelineDropCallbacks { onFileDrop?: ( files: File[], placement?: { start: number; track: number }, ) => Promise | void; onAssetDrop?: ( assetPath: string, placement: { start: number; track: number }, ) => Promise | void; onBlockDrop?: ( blockName: string, placement: { start: number; track: number }, ) => Promise | void; } export interface TimelineEditCallbacks { onMoveElement?: ( element: TimelineElement, updates: Pick & { stackingReorder?: TimelineStackingReorderIntent | null; }, ) => Promise | void; onResizeElement?: ( element: TimelineElement, updates: Pick, ) => Promise | void; onMoveElements?: ( changes: TimelineGroupMoveChange[], options?: TimelineGroupCommitOptions, ) => Promise | void; onResizeElements?: ( changes: TimelineGroupResizeChange[], options?: TimelineGroupCommitOptions, ) => Promise | void; onPreviewMoveElements?: (changes: TimelineGroupMoveChange[]) => void; onPreviewResizeElements?: (changes: TimelineGroupResizeChange[]) => void; onToggleTrackHidden?: (track: number, hidden: boolean) => Promise | void; onToggleElementHidden?: (elementKey: string, hidden: boolean) => Promise | void; onBlockedEditAttempt?: (element: TimelineElement, intent: BlockedTimelineEditIntent) => void; onSplitElement?: (element: TimelineElement, splitTime: number) => Promise | void; onRazorSplit?: (element: TimelineElement, splitTime: number) => Promise | void; onRazorSplitAll?: (splitTime: number) => Promise | void; onDeleteKeyframe?: (elementId: string, percentage: number) => void; onDeleteAllKeyframes?: (elementId: string) => void; onChangeKeyframeEase?: (elementId: string, percentage: number, ease: string) => void; onMoveKeyframeToPlayhead?: (elementId: string, percentage: number) => void; onMoveKeyframe?: ( elementId: string, fromClipPercentage: number, toClipPercentage: number, ) => void; onToggleKeyframeAtPlayhead?: (element: TimelineElement) => void; }