hyperframes 0.8.84 → 0.8.85

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1357,6 +1357,7 @@ interface TimelineLogicalItem {
1357
1357
  elementId: string;
1358
1358
  /** The item's time anchor. Clips use their midpoint; ease controls use the segment midpoint. */
1359
1359
  time: number;
1360
+ element?: TimelineElement;
1360
1361
  keyframeTarget?: TimelineKeyframeTarget;
1361
1362
  }
1362
1363
  interface TimelineLogicalRow {
@@ -1937,6 +1938,25 @@ interface CompositionBreadcrumbProps {
1937
1938
  }
1938
1939
  declare function CompositionBreadcrumb({ stack, onNavigate }: CompositionBreadcrumbProps): react_jsx_runtime.JSX.Element | null;
1939
1940
 
1941
+ interface UseCompositionStackOptions {
1942
+ projectId: string;
1943
+ activeCompositionPath?: string | null;
1944
+ onCompositionChange?: (compositionPath: string | null) => void;
1945
+ }
1946
+ interface UseCompositionStackResult {
1947
+ compositionStack: CompositionLevel[];
1948
+ updateCompositionStack: React.Dispatch<React.SetStateAction<CompositionLevel[]>>;
1949
+ handleNavigateComposition: (index: number) => void;
1950
+ handleDrillDown: (element: {
1951
+ id: string;
1952
+ compositionSrc?: string;
1953
+ }) => void;
1954
+ masterSeekRef: React.MutableRefObject<number>;
1955
+ compIdToSrc: Map<string, string>;
1956
+ setCompIdToSrc: React.Dispatch<React.SetStateAction<Map<string, string>>>;
1957
+ }
1958
+ declare function useCompositionStack({ projectId, activeCompositionPath, onCompositionChange, }: UseCompositionStackOptions): UseCompositionStackResult;
1959
+
1940
1960
  interface AudioWaveformProps {
1941
1961
  audioUrl: string;
1942
1962
  waveformUrl?: string;
@@ -3394,4 +3414,4 @@ interface MarqueeOverlayProps {
3394
3414
  */
3395
3415
  declare function MarqueeOverlay({ candidateRects, marqueeRect }: MarqueeOverlayProps): react_jsx_runtime.JSX.Element;
3396
3416
 
3397
- export { type AgentModalAnchorPoint, type AgentPromptElementInfo, AskAgentModal, type AskAgentModalProps, AudioMeterStrip, type AudioMeterStripProps, AudioWaveform, type AudioWaveformProps, type BlockedTimelineEditIntent, type CanEditTimelineElement, CompositionBreadcrumb, type CompositionDimensions, type CompositionLevel, CompositionThumbnail, ConnectedDomEditOverlay, type ConnectedDomEditOverlayProps, DEFAULT_SHORTCUT_SECTIONS, type DomEditCapabilities, DomEditProvider, type DomEditSelection, type EditHistoryHandle, EditorShell, type EditorShellProps, type ExternalFileChangeBlockedState, type ExternalFileChangeCoordinatorHandle, ExternalFileConflictBanner, type FfmpegStatus, FileTree, GridOverlay, ImageThumbnail, type ImageThumbnailProps, type MarqueeGestures, type MarqueeGesturesDeps, MarqueeOverlay, type MarqueeOverlayProps, type Rect$1 as MarqueeRect, NLEPreview, type PatchOperation, type PersistedRenderSettings, type PickedElement, PlayerControls, type PlayerHandle, type PlayerHandleElement, type PlayerHandleListener, type PlayerHandleTimeListener, type DomEditCompositionRect as PreviewCompositionRect, PreviewGuides, PreviewOverlayProvider, type PreviewOverlayProviderProps, PreviewReadOnlyProvider, type PreviewSnapPreferences, PropertyPanel, type RenderJob, RenderQueue, type RenderQueueProps, type ResolutionPreset, SNAP_THRESHOLD_PX, type ShortcutHint, type ShortcutSection, type SnapContext, type SnapEdge, type SnapGuide, SnapGuideOverlay, type SnapGuideOverlayProps, type SnapGuidesState, type Rect as SnapRect, type SnapResult, type SnapTarget, SnapToolbar, SourceEditor, type SpacingGuide, type StartRenderOptions, StudioApp, StudioFileConflictError, type StudioPendingEditsDrainResult, type ThumbnailPriority, Timeline, TimelineClipMenu, type TimelineClipRenderContext, type TimelineEditCallbacks, type TimelineEditOutcome, type TimelineEditPermission, TimelineEditPopover, TimelineEditProvider, type TimelineElement, TimelineEmptyStatePart, TimelineFrame, TimelineGapMenu, TimelineHistoryButtons, type TimelineHistoryButtonsProps, TimelineKeyframeMenu, TimelineLanes, TimelineOverlays, TimelinePane, type TimelinePaneProps, TimelinePlayhead, TimelineProvider, TimelineRazorGuide, TimelineRuler, TimelineShortcutHint, type TimelineTheme, type TimelineTimeRange$1 as TimelineTimeRange, TimelineToolbar, type TimelineToolbarProps, type TimelineZIndexReorderCommit, type UseClipboardOptions, type UseDomEditSessionParams, type UseEditHistoryActionsOptions, type UsePersistentEditHistoryOptions, type UsePreviewPersistenceParams, type UseProjectFileWriterOptions, type UseRenderClipContentOptions, type UseTimelineEditingOptions, VideoThumbnail, applyPatch, buildCompositionSnapTarget, buildGridSnapEdges, buildPickerAgentContextPreview, buildPickerAgentPrompt, collectSnapContext, extractSnapTargets, findElementBlock, flushStudioPendingEdits, formatTime, getPersistedRenderSettings, liveTime, mergeStyleIntoTag, parseStyleString, persistRenderSettings, resolveEquidistanceGuides, resolveGuideLineRect, resolveIframe, resolveSnapAdjustment, resolveSourceFile, snapEngagedForTravel, useClipboard, useDomEditSelectionContext, useDomEditSession, useEditHistoryActions, useElementPicker, useMarqueeGestures, usePersistentEditHistory, usePlayerHandle, usePlayerStore, usePreviewCompositionRect, usePreviewGuidesStore, usePreviewOverlayContext, usePreviewPersistence, useProjectFileWriter, useRenderClipContent, useRenderQueue, useTimelineContext, useTimelineEditing, useTimelinePlayer };
3417
+ export { type AgentModalAnchorPoint, type AgentPromptElementInfo, AskAgentModal, type AskAgentModalProps, AudioMeterStrip, type AudioMeterStripProps, AudioWaveform, type AudioWaveformProps, type BlockedTimelineEditIntent, type CanEditTimelineElement, CompositionBreadcrumb, type CompositionDimensions, type CompositionLevel, CompositionThumbnail, ConnectedDomEditOverlay, type ConnectedDomEditOverlayProps, DEFAULT_SHORTCUT_SECTIONS, type DomEditCapabilities, DomEditProvider, type DomEditSelection, type EditHistoryHandle, EditorShell, type EditorShellProps, type ExternalFileChangeBlockedState, type ExternalFileChangeCoordinatorHandle, ExternalFileConflictBanner, type FfmpegStatus, FileTree, GridOverlay, ImageThumbnail, type ImageThumbnailProps, type MarqueeGestures, type MarqueeGesturesDeps, MarqueeOverlay, type MarqueeOverlayProps, type Rect$1 as MarqueeRect, NLEPreview, type PatchOperation, type PersistedRenderSettings, type PickedElement, PlayerControls, type PlayerHandle, type PlayerHandleElement, type PlayerHandleListener, type PlayerHandleTimeListener, type DomEditCompositionRect as PreviewCompositionRect, PreviewGuides, PreviewOverlayProvider, type PreviewOverlayProviderProps, PreviewReadOnlyProvider, type PreviewSnapPreferences, PropertyPanel, type RenderJob, RenderQueue, type RenderQueueProps, type ResolutionPreset, SNAP_THRESHOLD_PX, type ShortcutHint, type ShortcutSection, type SnapContext, type SnapEdge, type SnapGuide, SnapGuideOverlay, type SnapGuideOverlayProps, type SnapGuidesState, type Rect as SnapRect, type SnapResult, type SnapTarget, SnapToolbar, SourceEditor, type SpacingGuide, type StartRenderOptions, StudioApp, StudioFileConflictError, type StudioPendingEditsDrainResult, type ThumbnailPriority, Timeline, TimelineClipMenu, type TimelineClipRenderContext, type TimelineEditCallbacks, type TimelineEditOutcome, type TimelineEditPermission, TimelineEditPopover, TimelineEditProvider, type TimelineElement, TimelineEmptyStatePart, TimelineFrame, TimelineGapMenu, TimelineHistoryButtons, type TimelineHistoryButtonsProps, TimelineKeyframeMenu, TimelineLanes, TimelineOverlays, TimelinePane, type TimelinePaneProps, TimelinePlayhead, TimelineProvider, TimelineRazorGuide, TimelineRuler, TimelineShortcutHint, type TimelineTheme, type TimelineTimeRange$1 as TimelineTimeRange, TimelineToolbar, type TimelineToolbarProps, type TimelineZIndexReorderCommit, type UseClipboardOptions, type UseDomEditSessionParams, type UseEditHistoryActionsOptions, type UsePersistentEditHistoryOptions, type UsePreviewPersistenceParams, type UseProjectFileWriterOptions, type UseRenderClipContentOptions, type UseTimelineEditingOptions, VideoThumbnail, applyPatch, buildCompositionSnapTarget, buildGridSnapEdges, buildPickerAgentContextPreview, buildPickerAgentPrompt, collectSnapContext, extractSnapTargets, findElementBlock, flushStudioPendingEdits, formatTime, getPersistedRenderSettings, liveTime, mergeStyleIntoTag, parseStyleString, persistRenderSettings, resolveEquidistanceGuides, resolveGuideLineRect, resolveIframe, resolveSnapAdjustment, resolveSourceFile, snapEngagedForTravel, useClipboard, useCompositionStack, useDomEditSelectionContext, useDomEditSession, useEditHistoryActions, useElementPicker, useMarqueeGestures, usePersistentEditHistory, usePlayerHandle, usePlayerStore, usePreviewCompositionRect, usePreviewGuidesStore, usePreviewOverlayContext, usePreviewPersistence, useProjectFileWriter, useRenderClipContent, useRenderQueue, useTimelineContext, useTimelineEditing, useTimelinePlayer };
@@ -5,8 +5,8 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
6
6
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
7
7
  <title>HyperFrames Studio</title>
8
- <script type="module" crossorigin src="/assets/index-gjbSm-vt.js"></script>
9
- <link rel="stylesheet" crossorigin href="/assets/index-BWJqxeaH.css">
8
+ <script type="module" crossorigin src="/assets/index-ClLdmgua.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/assets/index-mzZCha_N.css">
10
10
  </head>
11
11
  <body>
12
12
  <div data-hf-id="hf-aph5" id="root"></div>
@@ -11914,7 +11914,8 @@ function clipItems(rowId, elements) {
11914
11914
  kind: "clip",
11915
11915
  rowId,
11916
11916
  elementId: id,
11917
- time: element.start + element.duration / 2
11917
+ time: element.start + element.duration / 2,
11918
+ element
11918
11919
  };
11919
11920
  });
11920
11921
  }
@@ -20390,7 +20391,8 @@ function useTimelineKeyboardActor({
20390
20391
  focusedTargetId,
20391
20392
  rowGeometry,
20392
20393
  scrollRef,
20393
- onToggleRow
20394
+ onToggleRow,
20395
+ onDrillDown
20394
20396
  }) {
20395
20397
  const rovingTargetId = (focusedTargetId && locateTimelineLogicalTarget(logicalRows, focusedTargetId)?.target.id) ?? logicalRows[0]?.id ?? null;
20396
20398
  const logicalRowCountByTrack = useMemo27(() => {
@@ -20441,13 +20443,19 @@ function useTimelineKeyboardActor({
20441
20443
  openContextMenu(targetElement);
20442
20444
  return;
20443
20445
  }
20446
+ const composition = located.target.kind === "clip" && located.target.element;
20447
+ if (event.key === "Enter" && composition && composition.compositionSrc && onDrillDown) {
20448
+ event.preventDefault();
20449
+ onDrillDown(composition);
20450
+ return;
20451
+ }
20444
20452
  if (event.key !== "Enter" && event.key !== " " || located.target.kind !== "row" || !located.target.expandable) {
20445
20453
  return;
20446
20454
  }
20447
20455
  event.preventDefault();
20448
20456
  onToggleRow(located.target);
20449
20457
  },
20450
- [logicalRowCountByTrack, logicalRows, onToggleRow, rowGeometry, scrollRef]
20458
+ [logicalRowCountByTrack, logicalRows, onDrillDown, onToggleRow, rowGeometry, scrollRef]
20451
20459
  );
20452
20460
  return { rovingTargetId, onFocus, onKeyDown };
20453
20461
  }
@@ -20683,9 +20691,8 @@ function TimelineLanes({
20683
20691
  focusedTargetId,
20684
20692
  rowGeometry,
20685
20693
  scrollRef,
20686
- onToggleRow: (row) => {
20687
- if (row.elementId) toggleClipExpandedTracked(row.elementId);
20688
- }
20694
+ onToggleRow: (row) => row.elementId && toggleClipExpandedTracked(row.elementId),
20695
+ onDrillDown
20689
20696
  });
20690
20697
  return /* @__PURE__ */ jsx52(
20691
20698
  "div",
@@ -27300,7 +27307,7 @@ function CompositionBreadcrumb({ stack, onNavigate }) {
27300
27307
  "nav",
27301
27308
  {
27302
27309
  "aria-label": "Composition navigation",
27303
- className: "flex items-center gap-1 px-2 h-8 border-b border-neutral-800/50 bg-neutral-900/50 shrink-0",
27310
+ className: "flex items-center gap-1 px-2 h-8 border-b border-hairline bg-bg-1 shrink-0",
27304
27311
  children: [
27305
27312
  /* @__PURE__ */ jsx70(
27306
27313
  "button",
@@ -27313,7 +27320,7 @@ function CompositionBreadcrumb({ stack, onNavigate }) {
27313
27320
  });
27314
27321
  onNavigate(stack.length - 2);
27315
27322
  },
27316
- className: "flex items-center gap-1 px-1.5 py-0.5 rounded-sm text-xs text-neutral-400 hover:text-white hover:bg-neutral-800 active:scale-[0.98] transition-colors",
27323
+ className: "flex items-center gap-1 px-1.5 py-0.5 rounded-sm text-xs text-text-3 hover:text-text-0 hover:bg-hover active:scale-[0.98] transition-colors",
27317
27324
  title: "Back (Esc, or double-click empty timeline)",
27318
27325
  "aria-label": "Back to parent composition",
27319
27326
  children: /* @__PURE__ */ jsx70(ArrowLeft2, { size: 12, weight: "bold" })
@@ -27322,8 +27329,8 @@ function CompositionBreadcrumb({ stack, onNavigate }) {
27322
27329
  stack.map((level, i) => {
27323
27330
  const isLast = i === stack.length - 1;
27324
27331
  return /* @__PURE__ */ jsxs48("span", { className: "flex items-center gap-1", children: [
27325
- i > 0 && /* @__PURE__ */ jsx70(CaretRight2, { size: 10, className: "text-neutral-600 shrink-0" }),
27326
- isLast ? /* @__PURE__ */ jsx70("span", { className: "text-xs text-neutral-200 font-medium", children: level.label }) : /* @__PURE__ */ jsx70(
27332
+ i > 0 && /* @__PURE__ */ jsx70(CaretRight2, { size: 10, className: "text-text-4 shrink-0" }),
27333
+ isLast ? /* @__PURE__ */ jsx70("span", { className: "text-xs text-text-1 font-medium", children: level.label }) : /* @__PURE__ */ jsx70(
27327
27334
  "button",
27328
27335
  {
27329
27336
  type: "button",
@@ -27331,7 +27338,7 @@ function CompositionBreadcrumb({ stack, onNavigate }) {
27331
27338
  trackStudioEvent("navigation", { action: "breadcrumb", target: level.label });
27332
27339
  onNavigate(i);
27333
27340
  },
27334
- className: "text-xs text-neutral-500 hover:text-neutral-200 transition-colors",
27341
+ className: "text-xs text-text-3 hover:text-text-1 transition-colors",
27335
27342
  children: level.label
27336
27343
  }
27337
27344
  )
@@ -91481,6 +91488,7 @@ export {
91481
91488
  resolveSourceFile,
91482
91489
  snapEngagedForTravel,
91483
91490
  useClipboard,
91491
+ useCompositionStack,
91484
91492
  useDomEditSelectionContext,
91485
91493
  useDomEditSession,
91486
91494
  useEditHistoryActions,