hyperframes 0.8.79 → 0.8.81

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.
@@ -1246,6 +1246,7 @@ interface TimelineEditCallbacks {
1246
1246
  onToggleTrackHidden?: (track: number, hidden: boolean, displayNumber?: number | null) => Promise<void> | void;
1247
1247
  /** B7's bus strip: live-write the group's own attribute while dragging. */
1248
1248
  onSetAudioGroupAttributeLive?: (groupId: string, attr: string, value: string | null) => void;
1249
+ onRevertAudioGroupAttributeLive?: (groupId: string, attr: string) => void;
1249
1250
  /** ...and persist one undo entry on release. */
1250
1251
  onSetAudioGroupAttributeQuiet?: (groupId: string, attr: string, value: string | null, label: string) => Promise<TimelineEditOutcome | void>;
1251
1252
  /** C1's ungrouped-track FX pointer: "Group these clips" — write
@@ -1255,6 +1256,7 @@ interface TimelineEditCallbacks {
1255
1256
  /** C1's single-clip FX write: addressed by the clip itself rather than the
1256
1257
  * current selection, mirroring `onSetAudioGroupAttributeLive/Quiet`. */
1257
1258
  onSetElementAttributeLive?: (element: TimelineElement, attr: string, value: string | null) => void;
1259
+ onRevertElementAttributeLive?: (element: TimelineElement, attr: string) => void;
1258
1260
  onSetElementAttributeQuiet?: (element: TimelineElement, attr: string, value: string | null, label: string) => Promise<TimelineEditOutcome | void>;
1259
1261
  onBlockedEditAttempt?: (element: TimelineElement, intent: BlockedTimelineEditIntent) => void;
1260
1262
  onSplitElement?: (element: TimelineElement, splitTime: number) => Promise<void> | void;
@@ -2027,6 +2029,7 @@ interface TimelineEditCallbackDeps {
2027
2029
  handleToggleTrackHidden: (track: number, hidden: boolean) => Promise<void> | void;
2028
2030
  setAudioGroupAttribute: {
2029
2031
  setLive: (groupId: string, attr: string, value: string | null) => void;
2032
+ revertLive?: (groupId: string, attr: string) => void;
2030
2033
  setQuiet: (groupId: string, attr: string, value: string | null, label: string) => Promise<TimelineEditOutcome | void>;
2031
2034
  };
2032
2035
  handleBlockedTimelineEdit: (element: TimelineElement, intent: BlockedTimelineEditIntent) => void;
@@ -2038,6 +2041,7 @@ interface TimelineEditCallbackDeps {
2038
2041
  /** C1's single-clip FX write, addressed by the clip itself. */
2039
2042
  setElementFxAttribute?: {
2040
2043
  setLive: (element: TimelineElement, attr: string, value: string | null) => void;
2044
+ revertLive?: (element: TimelineElement, attr: string) => void;
2041
2045
  setQuiet: (element: TimelineElement, attr: string, value: string | null, label: string) => Promise<TimelineEditOutcome | void>;
2042
2046
  };
2043
2047
  }
@@ -2695,6 +2699,14 @@ declare function usePersistentEditHistory({ projectId }: UsePersistentEditHistor
2695
2699
  redo: (callbacks: ApplyCallbacks) => Promise<ApplyResult>;
2696
2700
  };
2697
2701
 
2702
+ /** The files an undo or redo rewrote. */
2703
+ interface LiveLaneRestore {
2704
+ paths?: string[];
2705
+ files?: Record<string, {
2706
+ restored: string;
2707
+ }>;
2708
+ }
2709
+
2698
2710
  declare function useTimelineEditing({ projectId, activeCompPath, timelineElements, showToast, writeProjectFile, observeProjectFileVersion, recordEdit, reloadPreview, previewIframeRef, pendingTimelineEditPathRef, uploadProjectFiles, isRecordingRef, sdkSession, publishSdkSession, forceReloadSdkSession, invalidateGsapCache, handleDomZIndexReorderCommitRef, canEdit, }: UseTimelineEditingOptions): {
2699
2711
  handleTimelineElementMove: (element: TimelineElement, updates: TimelineMoveUpdates) => Promise<void>;
2700
2712
  handleTimelineElementResize: (element: TimelineElement, updates: Pick<TimelineElement, "start" | "duration" | "playbackStart">) => Promise<void>;
@@ -2704,10 +2716,14 @@ declare function useTimelineEditing({ projectId, activeCompPath, timelineElement
2704
2716
  setAudioGroupAttribute: {
2705
2717
  setQuiet: (groupId: string, attr: string, value: string | null, label: string) => Promise<TimelineEditOutcome>;
2706
2718
  setLive: (groupId: string, attr: string, value: string | null) => void;
2719
+ revertLive: (groupId: string, attr: string) => void;
2720
+ restoreLive: (restore: LiveLaneRestore) => void;
2707
2721
  };
2708
2722
  setElementFxAttribute: {
2709
2723
  setQuiet: (element: TimelineElement, attr: string, value: string | null, label: string) => Promise<TimelineEditOutcome>;
2710
2724
  setLive: (element: TimelineElement, attr: string, value: string | null) => void;
2725
+ revertLive: (element: TimelineElement, attr: string) => void;
2726
+ restoreLive: (restore: LiveLaneRestore) => void;
2711
2727
  };
2712
2728
  handleTimelineElementDelete: (element: TimelineElement) => Promise<void>;
2713
2729
  handleTimelineElementsDelete: (selection: TimelineElement[]) => Promise<void>;
@@ -2720,6 +2736,7 @@ declare function useTimelineEditing({ projectId, activeCompPath, timelineElement
2720
2736
  handleBlockedTimelineEdit: (element: TimelineElement) => void;
2721
2737
  handleTimelineGroupMove: (changes: TimelineGroupMoveChange[], options?: TimelineGroupCommitOptions | undefined) => Promise<void>;
2722
2738
  handleTimelineGroupResize: (changes: TimelineGroupResizeChange[], options?: TimelineGroupCommitOptions | undefined) => Promise<void>;
2739
+ restoreLiveLanes: (restore: Parameters<(restore: LiveLaneRestore) => void>[0]) => void;
2723
2740
  };
2724
2741
 
2725
2742
  declare class StudioSaveHttpError extends Error {
@@ -2790,7 +2807,7 @@ interface UseEditHistoryActionsOptions {
2790
2807
  showToast: (message: string, tone?: "error" | "info") => void;
2791
2808
  syncHistoryPreviewAfterApply: (restore: Pick<HistoryResult, "paths" | "files">) => Promise<void>;
2792
2809
  waitForPendingDomEditSaves: () => Promise<void>;
2793
- onAfterUndoRedo?: () => void;
2810
+ onAfterUndoRedo?: (restore: Pick<HistoryResult, "paths" | "files">) => void;
2794
2811
  /** Active composition path — decides whether undo/redo must resync the SDK session. */
2795
2812
  activeCompPath?: string | null;
2796
2813
  /** Reloads the SDK session after a revert of the active comp, past the self-write suppress window. */
@@ -5,7 +5,7 @@
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-DBKySIo7.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-hNVM9Pd2.js"></script>
9
9
  <link rel="stylesheet" crossorigin href="/assets/index-BWJqxeaH.css">
10
10
  </head>
11
11
  <body>