{"version":3,"file":"useTimelineKeyframeGeometry.mjs","names":[],"sources":["../../../src/hooks/keyframes/useTimelineKeyframeGeometry.ts"],"sourcesContent":["import { useTimelineEngine } from '#react/hooks/core/useTimelineEngine';\nimport { useTimelineGeometryRevision } from '#react/hooks/core/useTimelineGeometryRevision';\nimport type {\n  TimelineKeyframeGeometryOptions,\n  TimelineKeyframeRect,\n  VisibleTimelineKeyframe,\n} from '@techsquidtv/canvas-timeline-core';\nimport { useMemo } from 'react';\n\n/** Live geometry for custom DOM or canvas implementations. */\nexport interface UseTimelineKeyframeGeometryResult {\n  /** All matching keyframe rectangles. */\n  keyframeRects: TimelineKeyframeRect[];\n  /** Matching keyframes intersecting the viewport. */\n  visibleKeyframes: VisibleTimelineKeyframe[];\n}\n\n/** Reads live geometry separately from settled keyframe commands and inspector state. */\nexport function useTimelineKeyframeGeometry(\n  options: TimelineKeyframeGeometryOptions = {}\n): UseTimelineKeyframeGeometryResult {\n  const engine = useTimelineEngine();\n  const revision = useTimelineGeometryRevision({ redrawOnPreview: true });\n  const {\n    clipId,\n    collapsedTrackHeight,\n    edgeThreshold,\n    keyframeSize,\n    keyframeValuePadding,\n    overscanPixels,\n    property,\n    rulerHeight,\n    selectedClipOnly,\n    touchEdgeThreshold,\n    trackHeight,\n    viewportHeight,\n    viewportWidth,\n  } = options;\n\n  return useMemo(() => {\n    void revision;\n    const geometry = {\n      clipId,\n      collapsedTrackHeight,\n      edgeThreshold,\n      keyframeSize,\n      keyframeValuePadding,\n      overscanPixels,\n      property,\n      rulerHeight,\n      selectedClipOnly,\n      touchEdgeThreshold,\n      trackHeight,\n      viewportHeight,\n      viewportWidth,\n    };\n    const keyframeRects = engine.keyframes.getKeyframeRects(geometry);\n    const visibleKeyframes = engine.keyframes.getVisibleKeyframes(geometry, keyframeRects);\n    return { keyframeRects, visibleKeyframes };\n  }, [\n    engine,\n    revision,\n    clipId,\n    collapsedTrackHeight,\n    edgeThreshold,\n    keyframeSize,\n    keyframeValuePadding,\n    overscanPixels,\n    property,\n    rulerHeight,\n    selectedClipOnly,\n    touchEdgeThreshold,\n    trackHeight,\n    viewportHeight,\n    viewportWidth,\n  ]);\n}\n"],"mappings":";;;;;AAkBA,SAAgB,4BACd,UAA2C,CAAC,GACT;CACnC,MAAM,SAAS,kBAAkB;CACjC,MAAM,WAAW,4BAA4B,EAAE,iBAAiB,KAAK,CAAC;CACtE,MAAM,EACJ,QACA,sBACA,eACA,cACA,sBACA,gBACA,UACA,aACA,kBACA,oBACA,aACA,gBACA,kBACE;CAEJ,OAAO,cAAc;EAEnB,MAAM,WAAW;GACf;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF;EACA,MAAM,gBAAgB,OAAO,UAAU,iBAAiB,QAAQ;EAEhE,OAAO;GAAE;GAAe,kBADC,OAAO,UAAU,oBAAoB,UAAU,aACjC;EAAE;CAC3C,GAAG;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;AACH"}