// fallow-ignore-file code-duplication // fallow-ignore-file dead-code import type { TimelineElement } from "../store/playerStore"; import type { BlockedTimelineEditIntent } from "./timelineEditing"; /** * 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, ) => Promise | void; onResizeElement?: ( element: TimelineElement, updates: Pick, ) => 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; onMoveKeyframe?: (element: TimelineElement, oldPct: number, newPct: number) => void; onToggleKeyframeAtPlayhead?: (element: TimelineElement) => void; }