import { TimelineCommandResult, TimelineKeyframeBezierHandle, TimelineKeyframePropertyId, TimelineKeyframeSegmentGeometryOptions, TimelineKeyframeSide, TimelineKeyframeTangentHandle } from "@techsquidtv/canvas-timeline-core"; //#region src/hooks/keyframes/useTimelineKeyframeTangentDrag.d.ts /** Pointer data needed to begin a Bezier tangent handle drag by ids. */ interface TimelineKeyframeTangentDragIdStartInput { /** Clip owning the segment. */ clipId: string; /** Segment whose tangent is being dragged. */ segmentId: string; /** Anchor keyframe whose side will be edited. */ keyframeId: string; /** Keyframe side being edited. */ side: TimelineKeyframeSide; /** Supplied handles use `TimelineKeyframeTangentDragHandleStartInput` instead. */ tangentHandle?: never; } /** Pointer data needed to begin a Bezier tangent handle drag from hit-test geometry. */ interface TimelineKeyframeTangentDragHandleStartInput { /** Tangent entry from the initiating hit test. */ tangentHandle: TimelineKeyframeTangentHandle; /** Initial pointer position, used to preserve the padded grab offset. */ viewportX?: number; /** Initial pointer position, used to preserve the padded grab offset. */ viewportY?: number; } /** Pointer data needed to begin a Bezier tangent handle drag. */ type TimelineKeyframeTangentDragStartInput = TimelineKeyframeTangentDragIdStartInput | TimelineKeyframeTangentDragHandleStartInput; /** Pointer data needed to update a Bezier tangent handle drag. */ interface TimelineKeyframeTangentDragMoveInput { /** Current pointer X in timeline viewport coordinates. */ viewportX: number; /** Current pointer Y in timeline viewport coordinates, including the ruler area. */ viewportY: number; } /** Options accepted by `useTimelineKeyframeTangentDrag`. */ interface UseTimelineKeyframeTangentDragOptions extends TimelineKeyframeSegmentGeometryOptions { /** Keyframe property used to scope tangent drag geometry. */ property: TimelineKeyframePropertyId; } /** Result returned by `useTimelineKeyframeTangentDrag`. */ interface UseTimelineKeyframeTangentDragResult { /** Whether a Bezier tangent handle drag is currently active. */ dragging: boolean; /** Starts a Bezier tangent handle drag. */ startKeyframeTangentDrag: (input: TimelineKeyframeTangentDragStartInput) => TimelineCommandResult; /** Updates the active Bezier tangent handle drag preview. */ moveKeyframeTangentDrag: (input: TimelineKeyframeTangentDragMoveInput) => TimelineCommandResult; /** Ends the active Bezier tangent handle drag and settles history. */ endKeyframeTangentDrag: () => TimelineCommandResult; /** Cancels the drag and restores committed state without an undo entry. */ cancelKeyframeTangentDrag: () => TimelineCommandResult; } /** Successful Bezier tangent handle drag update payload. */ interface TimelineKeyframeTangentDragUpdate { /** Clip owning the edited keyframe. */ clipId: string; /** Segment whose tangent was dragged. */ segmentId: string; /** Anchor keyframe whose side changed. */ keyframeId: string; /** Keyframe side that changed. */ side: TimelineKeyframeSide; /** Updated Bezier tangent handle. */ handle: TimelineKeyframeBezierHandle; } /** * Headless Bezier tangent drag behavior shared by package and custom timeline UIs. * * @param options - Drag geometry aligned with the renderer and hit-test layer. */ declare function useTimelineKeyframeTangentDrag(options: UseTimelineKeyframeTangentDragOptions): UseTimelineKeyframeTangentDragResult; //#endregion export { TimelineKeyframeTangentDragHandleStartInput, TimelineKeyframeTangentDragIdStartInput, TimelineKeyframeTangentDragMoveInput, TimelineKeyframeTangentDragStartInput, TimelineKeyframeTangentDragUpdate, UseTimelineKeyframeTangentDragOptions, UseTimelineKeyframeTangentDragResult, useTimelineKeyframeTangentDrag }; //# sourceMappingURL=useTimelineKeyframeTangentDrag.d.mts.map