hyperframes 0.8.78 → 0.8.80

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.
Files changed (42) hide show
  1. package/dist/cli.js +2958 -1893
  2. package/dist/fontLocalizeCli.js +160 -54
  3. package/dist/hyperframe-runtime.js +57 -57
  4. package/dist/hyperframe.manifest.json +1 -1
  5. package/dist/hyperframe.runtime.iife.js +57 -57
  6. package/dist/hyperframes-player.global.js +3 -3
  7. package/dist/registry/localSemantic.js +6 -25
  8. package/dist/skills/media-use/audio/references/remove-background.md +1 -1
  9. package/dist/skills/media-use/registry/localSemantic.js +6 -25
  10. package/dist/skills/media-use/scripts/compatibility.test.mjs +2 -0
  11. package/dist/skills/media-use/scripts/lib/cache.mjs +6 -8
  12. package/dist/skills/media-use/scripts/lib/candidates.test.mjs +2 -2
  13. package/dist/skills/media-use/scripts/lib/config-lock.d.mts +3 -0
  14. package/dist/skills/media-use/scripts/lib/config-lock.mjs +45 -0
  15. package/dist/skills/media-use/scripts/lib/config-lock.test.mjs +79 -0
  16. package/dist/skills/media-use/scripts/lib/manifest.test.mjs +2 -0
  17. package/dist/skills/media-use/scripts/lib/media-home.mjs +20 -0
  18. package/dist/skills/media-use/scripts/lib/media-home.test.mjs +61 -0
  19. package/dist/skills/media-use/scripts/lib/misses.mjs +6 -6
  20. package/dist/skills/media-use/scripts/lib/misses.test.mjs +12 -1
  21. package/dist/skills/media-use/scripts/lib/prefs-store.mjs +2 -2
  22. package/dist/skills/media-use/scripts/lib/prefs-store.test.mjs +1 -1
  23. package/dist/skills/media-use/scripts/lib/recipe-store.mjs +2 -2
  24. package/dist/skills/media-use/scripts/lib/recipe-store.test.mjs +1 -1
  25. package/dist/skills/media-use/scripts/lib/stats.test.mjs +1 -1
  26. package/dist/skills/media-use/scripts/lib/telemetry.mjs +26 -9
  27. package/dist/skills/media-use/scripts/lib/telemetry.test.mjs +64 -0
  28. package/dist/skills/registry/localSemantic.js +6 -25
  29. package/dist/studio/assets/hyperframes-player-CgnoxDoD.js +464 -0
  30. package/dist/studio/assets/{index-CX_4MYbk.js → index-CsG24Jub.js} +190 -187
  31. package/dist/studio/assets/{index-C_n__Uh3.js → index-DZGVvqDT.js} +1 -1
  32. package/dist/studio/assets/{index-DdpuHaGN.js → index-J9HXe7mU.js} +1 -1
  33. package/dist/studio/{chunk-5VANA2TG.js → chunk-I7XNAIOF.js} +2 -1
  34. package/dist/studio/{domEditingLayers-IGPLTI5E.js → domEditingLayers-MHFDKAQ7.js} +2 -2
  35. package/dist/studio/index.d.ts +40 -16
  36. package/dist/studio/index.html +1 -1
  37. package/dist/studio/index.js +1918 -1408
  38. package/dist/studio/index.js.map +1 -1
  39. package/package.json +1 -1
  40. package/dist/studio/assets/hyperframes-player-BdnQGwG5.js +0 -464
  41. /package/dist/studio/{chunk-5VANA2TG.js.map → chunk-I7XNAIOF.js.map} +0 -0
  42. /package/dist/studio/{domEditingLayers-IGPLTI5E.js.map → domEditingLayers-MHFDKAQ7.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- import{n as Qi}from"./index-CX_4MYbk.js";/*!
1
+ import{n as Qi}from"./index-CsG24Jub.js";/*!
2
2
  * Copyright (c) 2026-present, Vanilagy and contributors
3
3
  *
4
4
  * This Source Code Form is subject to the terms of the Mozilla Public
@@ -1 +1 @@
1
- import{g as P}from"./index-CX_4MYbk.js";function j(c,d){for(var s=0;s<d.length;s++){const a=d[s];if(typeof a!="string"&&!Array.isArray(a)){for(const i in a)if(i!=="default"&&!(i in c)){const l=Object.getOwnPropertyDescriptor(a,i);l&&Object.defineProperty(c,i,l.get?l:{enumerable:!0,get:()=>a[i]})}}}return Object.freeze(Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}))}var v={},w;function k(){if(w)return v;w=1,Object.defineProperty(v,"__esModule",{value:!0}),v.default=d;var c=window.OfflineAudioContext||window.webkitOfflineAudioContext;function d(e){var r=a(e);return r.start(0),[i,y,O(e.sampleRate),s].reduce(function(t,o){return o(t)},r.buffer.getChannelData(0))}function s(e){return e.sort(function(r,t){return t.count-r.count}).splice(0,5)[0].tempo}function a(e){var r=e.length,t=e.numberOfChannels,o=e.sampleRate,n=new c(t,r,o),u=n.createBufferSource();u.buffer=e;var f=n.createBiquadFilter();return f.type="lowpass",u.connect(f),f.connect(n.destination),u}function i(e){for(var r=[],t=.9,o=.3,n=15;r.length<n&&t>=o;)r=l(e,t),t-=.05;if(r.length<n)throw new Error("Could not find enough samples for a reliable detection.");return r}function l(e,r){for(var t=[],o=0,n=e.length;o<n;o+=1)e[o]>r&&(t.push(o),o+=1e4);return t}function y(e){var r=[];return e.forEach(function(t,o){for(var n=function(x){var g=e[o+x]-t,_=r.some(function(h){if(h.interval===g)return h.count+=1});_||r.push({interval:g,count:1})},u=0;u<10;u+=1)n(u)}),r}function O(e){return function(r){var t=[];return r.forEach(function(o){if(o.interval!==0){for(var n=60/(o.interval/e);n<90;)n*=2;for(;n>180;)n/=2;n=Math.round(n);var u=t.some(function(f){if(f.tempo===n)return f.count+=o.count});u||t.push({tempo:n,count:o.count})}}),t}}return v}var p,b;function q(){return b||(b=1,p=k().default),p}var m=q();const A=P(m),D=j({__proto__:null,default:A},[m]);export{D as i};
1
+ import{g as P}from"./index-CsG24Jub.js";function j(c,d){for(var s=0;s<d.length;s++){const a=d[s];if(typeof a!="string"&&!Array.isArray(a)){for(const i in a)if(i!=="default"&&!(i in c)){const l=Object.getOwnPropertyDescriptor(a,i);l&&Object.defineProperty(c,i,l.get?l:{enumerable:!0,get:()=>a[i]})}}}return Object.freeze(Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}))}var v={},w;function k(){if(w)return v;w=1,Object.defineProperty(v,"__esModule",{value:!0}),v.default=d;var c=window.OfflineAudioContext||window.webkitOfflineAudioContext;function d(e){var r=a(e);return r.start(0),[i,y,O(e.sampleRate),s].reduce(function(t,o){return o(t)},r.buffer.getChannelData(0))}function s(e){return e.sort(function(r,t){return t.count-r.count}).splice(0,5)[0].tempo}function a(e){var r=e.length,t=e.numberOfChannels,o=e.sampleRate,n=new c(t,r,o),u=n.createBufferSource();u.buffer=e;var f=n.createBiquadFilter();return f.type="lowpass",u.connect(f),f.connect(n.destination),u}function i(e){for(var r=[],t=.9,o=.3,n=15;r.length<n&&t>=o;)r=l(e,t),t-=.05;if(r.length<n)throw new Error("Could not find enough samples for a reliable detection.");return r}function l(e,r){for(var t=[],o=0,n=e.length;o<n;o+=1)e[o]>r&&(t.push(o),o+=1e4);return t}function y(e){var r=[];return e.forEach(function(t,o){for(var n=function(x){var g=e[o+x]-t,_=r.some(function(h){if(h.interval===g)return h.count+=1});_||r.push({interval:g,count:1})},u=0;u<10;u+=1)n(u)}),r}function O(e){return function(r){var t=[];return r.forEach(function(o){if(o.interval!==0){for(var n=60/(o.interval/e);n<90;)n*=2;for(;n>180;)n/=2;n=Math.round(n);var u=t.some(function(f){if(f.tempo===n)return f.count+=o.count});u||t.push({tempo:n,count:o.count})}}),t}}return v}var p,b;function q(){return b||(b=1,p=k().default),p}var m=q();const A=P(m),D=j({__proto__:null,default:A},[m]);export{D as i};
@@ -1115,6 +1115,7 @@ export {
1115
1115
  isHtmlElement,
1116
1116
  isElementVisibleThroughAncestors,
1117
1117
  setCompositionSourceMap,
1118
+ getSourceFileForElement,
1118
1119
  escapeCssString,
1119
1120
  buildStableSelector,
1120
1121
  getSelectorIndex,
@@ -1149,4 +1150,4 @@ export {
1149
1150
  readHfId,
1150
1151
  buildDomEditPatchTarget
1151
1152
  };
1152
- //# sourceMappingURL=chunk-5VANA2TG.js.map
1153
+ //# sourceMappingURL=chunk-I7XNAIOF.js.map
@@ -20,7 +20,7 @@ import {
20
20
  resolveDomEditCapabilities,
21
21
  resolveDomEditSelection,
22
22
  serializeDomEditTextFields
23
- } from "./chunk-5VANA2TG.js";
23
+ } from "./chunk-I7XNAIOF.js";
24
24
  import "./chunk-PZ5AY32C.js";
25
25
  export {
26
26
  buildDefaultDomEditTextField,
@@ -45,4 +45,4 @@ export {
45
45
  resolveDomEditSelection,
46
46
  serializeDomEditTextFields
47
47
  };
48
- //# sourceMappingURL=domEditingLayers-IGPLTI5E.js.map
48
+ //# sourceMappingURL=domEditingLayers-MHFDKAQ7.js.map
@@ -1094,13 +1094,6 @@ interface DomEditPatchBatchesResult {
1094
1094
  changed: boolean;
1095
1095
  }
1096
1096
 
1097
- /** A host's verdict on one element: editable, or blocked with a reason to show. */
1098
- type TimelineEditPermission = true | {
1099
- blocked: true;
1100
- reason: string;
1101
- };
1102
- type CanEditTimelineElement = (element: TimelineElement) => TimelineEditPermission;
1103
-
1104
1097
  interface RecordEditInput$1 {
1105
1098
  label: string;
1106
1099
  coalesceKey?: string;
@@ -1253,8 +1246,9 @@ interface TimelineEditCallbacks {
1253
1246
  onToggleTrackHidden?: (track: number, hidden: boolean, displayNumber?: number | null) => Promise<void> | void;
1254
1247
  /** B7's bus strip: live-write the group's own attribute while dragging. */
1255
1248
  onSetAudioGroupAttributeLive?: (groupId: string, attr: string, value: string | null) => void;
1249
+ onRevertAudioGroupAttributeLive?: (groupId: string, attr: string) => void;
1256
1250
  /** ...and persist one undo entry on release. */
1257
- onSetAudioGroupAttributeQuiet?: (groupId: string, attr: string, value: string | null, label: string) => Promise<void>;
1251
+ onSetAudioGroupAttributeQuiet?: (groupId: string, attr: string, value: string | null, label: string) => Promise<TimelineEditOutcome | void>;
1258
1252
  /** C1's ungrouped-track FX pointer: "Group these clips" — write
1259
1253
  * `data-audio-group` on every one of them, atomically. Same shape B6's
1260
1254
  * carve auto-grouping uses. */
@@ -1262,7 +1256,8 @@ interface TimelineEditCallbacks {
1262
1256
  /** C1's single-clip FX write: addressed by the clip itself rather than the
1263
1257
  * current selection, mirroring `onSetAudioGroupAttributeLive/Quiet`. */
1264
1258
  onSetElementAttributeLive?: (element: TimelineElement, attr: string, value: string | null) => void;
1265
- onSetElementAttributeQuiet?: (element: TimelineElement, attr: string, value: string | null, label: string) => Promise<void>;
1259
+ onRevertElementAttributeLive?: (element: TimelineElement, attr: string) => void;
1260
+ onSetElementAttributeQuiet?: (element: TimelineElement, attr: string, value: string | null, label: string) => Promise<TimelineEditOutcome | void>;
1266
1261
  onBlockedEditAttempt?: (element: TimelineElement, intent: BlockedTimelineEditIntent) => void;
1267
1262
  onSplitElement?: (element: TimelineElement, splitTime: number) => Promise<void> | void;
1268
1263
  onRazorSplit?: (element: TimelineElement, splitTime: number) => Promise<void> | void;
@@ -2009,6 +2004,20 @@ declare function usePlayerHandle(): PlayerHandle;
2009
2004
 
2010
2005
  declare function formatTime(time: number): string;
2011
2006
 
2007
+ /** A host's verdict on one element: editable, or blocked with a reason to show. */
2008
+ type TimelineEditPermission = true | {
2009
+ blocked: true;
2010
+ reason: string;
2011
+ };
2012
+ type CanEditTimelineElement = (element: TimelineElement) => TimelineEditPermission;
2013
+ /** What an effect save did: landed, refused before writing, or failed while writing. */
2014
+ type TimelineEditOutcome = {
2015
+ status: "saved";
2016
+ } | {
2017
+ status: "refused" | "failed";
2018
+ reason: string;
2019
+ };
2020
+
2012
2021
  interface TimelineEditCallbackDeps {
2013
2022
  handleTimelineElementMove: (element: TimelineElement, updates: Pick<TimelineElement, "start" | "track">) => Promise<void> | void;
2014
2023
  handleTimelineElementsMove: (edits: Array<{
@@ -2020,7 +2029,8 @@ interface TimelineEditCallbackDeps {
2020
2029
  handleToggleTrackHidden: (track: number, hidden: boolean) => Promise<void> | void;
2021
2030
  setAudioGroupAttribute: {
2022
2031
  setLive: (groupId: string, attr: string, value: string | null) => void;
2023
- setQuiet: (groupId: string, attr: string, value: string | null, label: string) => Promise<void>;
2032
+ revertLive?: (groupId: string, attr: string) => void;
2033
+ setQuiet: (groupId: string, attr: string, value: string | null, label: string) => Promise<TimelineEditOutcome | void>;
2024
2034
  };
2025
2035
  handleBlockedTimelineEdit: (element: TimelineElement, intent: BlockedTimelineEditIntent) => void;
2026
2036
  handleTimelineElementSplit: (element: TimelineElement, splitTime: number) => Promise<void> | void;
@@ -2031,7 +2041,8 @@ interface TimelineEditCallbackDeps {
2031
2041
  /** C1's single-clip FX write, addressed by the clip itself. */
2032
2042
  setElementFxAttribute?: {
2033
2043
  setLive: (element: TimelineElement, attr: string, value: string | null) => void;
2034
- setQuiet: (element: TimelineElement, attr: string, value: string | null, label: string) => Promise<void>;
2044
+ revertLive?: (element: TimelineElement, attr: string) => void;
2045
+ setQuiet: (element: TimelineElement, attr: string, value: string | null, label: string) => Promise<TimelineEditOutcome | void>;
2035
2046
  };
2036
2047
  }
2037
2048
 
@@ -2666,7 +2677,7 @@ interface ApplyResult {
2666
2677
  paths?: string[];
2667
2678
  files?: Record<string, ApplyRestoredFile>;
2668
2679
  }
2669
- /** Studio's undo over the server's project history: an edit claims what it wrote; Cmd+Z steps every writer's. */
2680
+ /** Studio's undo over the server's project history: an edit claims what it wrote; Cmd+Z steps the person's. */
2670
2681
  declare function usePersistentEditHistory({ projectId }: UsePersistentEditHistoryOptions): {
2671
2682
  loaded: boolean;
2672
2683
  canUndo: boolean;
@@ -2688,6 +2699,14 @@ declare function usePersistentEditHistory({ projectId }: UsePersistentEditHistor
2688
2699
  redo: (callbacks: ApplyCallbacks) => Promise<ApplyResult>;
2689
2700
  };
2690
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
+
2691
2710
  declare function useTimelineEditing({ projectId, activeCompPath, timelineElements, showToast, writeProjectFile, observeProjectFileVersion, recordEdit, reloadPreview, previewIframeRef, pendingTimelineEditPathRef, uploadProjectFiles, isRecordingRef, sdkSession, publishSdkSession, forceReloadSdkSession, invalidateGsapCache, handleDomZIndexReorderCommitRef, canEdit, }: UseTimelineEditingOptions): {
2692
2711
  handleTimelineElementMove: (element: TimelineElement, updates: TimelineMoveUpdates) => Promise<void>;
2693
2712
  handleTimelineElementResize: (element: TimelineElement, updates: Pick<TimelineElement, "start" | "duration" | "playbackStart">) => Promise<void>;
@@ -2695,12 +2714,16 @@ declare function useTimelineEditing({ projectId, activeCompPath, timelineElement
2695
2714
  handleToggleElementHidden: (elementKey: string | readonly string[], hidden: boolean) => Promise<void>;
2696
2715
  handleAutoGroupCarveSources: (clipIds: readonly string[], groupId: string, groupLabel?: string | undefined) => Promise<void>;
2697
2716
  setAudioGroupAttribute: {
2698
- setQuiet: (groupId: string, attr: string, value: string | null, label: string) => Promise<void>;
2717
+ setQuiet: (groupId: string, attr: string, value: string | null, label: string) => Promise<TimelineEditOutcome>;
2699
2718
  setLive: (groupId: string, attr: string, value: string | null) => void;
2719
+ revertLive: (groupId: string, attr: string) => void;
2720
+ restoreLive: (restore: LiveLaneRestore) => void;
2700
2721
  };
2701
2722
  setElementFxAttribute: {
2702
- setQuiet: (element: TimelineElement, attr: string, value: string | null, label: string) => Promise<void>;
2723
+ setQuiet: (element: TimelineElement, attr: string, value: string | null, label: string) => Promise<TimelineEditOutcome>;
2703
2724
  setLive: (element: TimelineElement, attr: string, value: string | null) => void;
2725
+ revertLive: (element: TimelineElement, attr: string) => void;
2726
+ restoreLive: (restore: LiveLaneRestore) => void;
2704
2727
  };
2705
2728
  handleTimelineElementDelete: (element: TimelineElement) => Promise<void>;
2706
2729
  handleTimelineElementsDelete: (selection: TimelineElement[]) => Promise<void>;
@@ -2713,6 +2736,7 @@ declare function useTimelineEditing({ projectId, activeCompPath, timelineElement
2713
2736
  handleBlockedTimelineEdit: (element: TimelineElement) => void;
2714
2737
  handleTimelineGroupMove: (changes: TimelineGroupMoveChange[], options?: TimelineGroupCommitOptions | undefined) => Promise<void>;
2715
2738
  handleTimelineGroupResize: (changes: TimelineGroupResizeChange[], options?: TimelineGroupCommitOptions | undefined) => Promise<void>;
2739
+ restoreLiveLanes: (restore: Parameters<(restore: LiveLaneRestore) => void>[0]) => void;
2716
2740
  };
2717
2741
 
2718
2742
  declare class StudioSaveHttpError extends Error {
@@ -2783,7 +2807,7 @@ interface UseEditHistoryActionsOptions {
2783
2807
  showToast: (message: string, tone?: "error" | "info") => void;
2784
2808
  syncHistoryPreviewAfterApply: (restore: Pick<HistoryResult, "paths" | "files">) => Promise<void>;
2785
2809
  waitForPendingDomEditSaves: () => Promise<void>;
2786
- onAfterUndoRedo?: () => void;
2810
+ onAfterUndoRedo?: (restore: Pick<HistoryResult, "paths" | "files">) => void;
2787
2811
  /** Active composition path — decides whether undo/redo must resync the SDK session. */
2788
2812
  activeCompPath?: string | null;
2789
2813
  /** Reloads the SDK session after a revert of the active comp, past the self-write suppress window. */
@@ -2866,4 +2890,4 @@ declare function TimelineEditProvider({ value, children, }: {
2866
2890
  children: ReactNode;
2867
2891
  }): react_jsx_runtime.JSX.Element;
2868
2892
 
2869
- export { type AgentModalAnchorPoint, type AgentPromptElementInfo, AskAgentModal, type AskAgentModalProps, AudioWaveform, type AudioWaveformProps, type BlockedTimelineEditIntent, Button, type ButtonSize, type ButtonVariant, type CanEditTimelineElement, CompositionBreadcrumb, type CompositionDimensions, type CompositionLevel, CompositionThumbnail, ContextMenu, DEFAULT_SHORTCUT_SECTIONS, type EditHistoryHandle, EditorShell, type EditorShellProps, type ExternalFileChangeBlockedState, type ExternalFileChangeCoordinatorHandle, ExternalFileConflictBanner, type FfmpegStatus, FileTree, GridOverlay, HyperframesLoader, type HyperframesLoaderProps, HyperframesLogo, IconButton, ImageThumbnail, type ImageThumbnailProps, Input, type InputProps, Menu, MenuItem, type MenuItemTone, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuShortcut, NLEPreview, NumberField, type NumberFieldProps, type PatchOperation, type PersistedRenderSettings, type PickedElement, Player, PlayerControls, type PlayerHandle, type PlayerHandleElement, type PlayerHandleListener, type PlayerHandleTimeListener, Popover, type PopupPreviewState, type DomEditCompositionRect as PreviewCompositionRect, PreviewGuides, PreviewOverlayProvider, type PreviewOverlayProviderProps, type PreviewSnapPreferences, type PreviewState, PropertyPanel, type RenderJob, RenderQueue, type RenderQueueProps, type ResolutionPreset, Select, type SelectOption, type SelectProps, type ShortcutHint, type ShortcutSection, Slider, type SliderProps, SnapToolbar, SourceEditor, type StartRenderOptions, StudioApp, StudioFileConflictError, type StudioPendingEditsDrainResult, Tab, TabPanel, Tabs, TabsList, type ThumbnailPriority, Timeline, TimelineClipMenu, type TimelineClipRenderContext, type TimelineEditCallbacks, type TimelineEditPermission, TimelineEditPopover, TimelineEditProvider, type TimelineElement, TimelineEmptyStatePart, TimelineFrame, TimelineGapMenu, TimelineKeyframeMenu, TimelineLanes, TimelineOverlays, TimelinePane, type TimelinePaneProps, TimelinePlayhead, TimelineProvider, TimelineRazorGuide, TimelineRuler, TimelineShortcutHint, type TimelineTheme, type TimelineTimeRange$1 as TimelineTimeRange, Toggle, type ToggleProps, Tooltip, type UseEditHistoryActionsOptions, type UsePersistentEditHistoryOptions, type UseProjectFileWriterOptions, type UseRenderClipContentOptions, type UseTimelineEditingOptions, VideoThumbnail, applyPatch, buildPickerAgentContextPreview, buildPickerAgentPrompt, buttonBase, buttonSizes, buttonVariants, cn, fieldBase, fieldText, findElementBlock, flushStudioPendingEdits, formatTime, getPersistedRenderSettings, liveTime, mergeStyleIntoTag, parseStyleString, persistRenderSettings, popupSurface, resolveIframe, resolveSourceFile, useEditHistoryActions, useElementPicker, usePersistentEditHistory, usePlayerHandle, usePlayerStore, usePreviewCompositionRect, usePreviewGuidesStore, usePreviewOverlayContext, useProjectFileWriter, useRenderClipContent, useRenderQueue, useTimelineContext, useTimelineEditing, useTimelinePlayer };
2893
+ export { type AgentModalAnchorPoint, type AgentPromptElementInfo, AskAgentModal, type AskAgentModalProps, AudioWaveform, type AudioWaveformProps, type BlockedTimelineEditIntent, Button, type ButtonSize, type ButtonVariant, type CanEditTimelineElement, CompositionBreadcrumb, type CompositionDimensions, type CompositionLevel, CompositionThumbnail, ContextMenu, DEFAULT_SHORTCUT_SECTIONS, type EditHistoryHandle, EditorShell, type EditorShellProps, type ExternalFileChangeBlockedState, type ExternalFileChangeCoordinatorHandle, ExternalFileConflictBanner, type FfmpegStatus, FileTree, GridOverlay, HyperframesLoader, type HyperframesLoaderProps, HyperframesLogo, IconButton, ImageThumbnail, type ImageThumbnailProps, Input, type InputProps, Menu, MenuItem, type MenuItemTone, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuShortcut, NLEPreview, NumberField, type NumberFieldProps, type PatchOperation, type PersistedRenderSettings, type PickedElement, Player, PlayerControls, type PlayerHandle, type PlayerHandleElement, type PlayerHandleListener, type PlayerHandleTimeListener, Popover, type PopupPreviewState, type DomEditCompositionRect as PreviewCompositionRect, PreviewGuides, PreviewOverlayProvider, type PreviewOverlayProviderProps, type PreviewSnapPreferences, type PreviewState, PropertyPanel, type RenderJob, RenderQueue, type RenderQueueProps, type ResolutionPreset, Select, type SelectOption, type SelectProps, type ShortcutHint, type ShortcutSection, Slider, type SliderProps, SnapToolbar, SourceEditor, type StartRenderOptions, StudioApp, StudioFileConflictError, type StudioPendingEditsDrainResult, Tab, TabPanel, Tabs, TabsList, type ThumbnailPriority, Timeline, TimelineClipMenu, type TimelineClipRenderContext, type TimelineEditCallbacks, type TimelineEditOutcome, type TimelineEditPermission, TimelineEditPopover, TimelineEditProvider, type TimelineElement, TimelineEmptyStatePart, TimelineFrame, TimelineGapMenu, TimelineKeyframeMenu, TimelineLanes, TimelineOverlays, TimelinePane, type TimelinePaneProps, TimelinePlayhead, TimelineProvider, TimelineRazorGuide, TimelineRuler, TimelineShortcutHint, type TimelineTheme, type TimelineTimeRange$1 as TimelineTimeRange, Toggle, type ToggleProps, Tooltip, type UseEditHistoryActionsOptions, type UsePersistentEditHistoryOptions, type UseProjectFileWriterOptions, type UseRenderClipContentOptions, type UseTimelineEditingOptions, VideoThumbnail, applyPatch, buildPickerAgentContextPreview, buildPickerAgentPrompt, buttonBase, buttonSizes, buttonVariants, cn, fieldBase, fieldText, findElementBlock, flushStudioPendingEdits, formatTime, getPersistedRenderSettings, liveTime, mergeStyleIntoTag, parseStyleString, persistRenderSettings, popupSurface, resolveIframe, resolveSourceFile, useEditHistoryActions, useElementPicker, usePersistentEditHistory, usePlayerHandle, usePlayerStore, usePreviewCompositionRect, usePreviewGuidesStore, usePreviewOverlayContext, useProjectFileWriter, useRenderClipContent, useRenderQueue, useTimelineContext, useTimelineEditing, useTimelinePlayer };
@@ -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-CX_4MYbk.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-CsG24Jub.js"></script>
9
9
  <link rel="stylesheet" crossorigin href="/assets/index-BWJqxeaH.css">
10
10
  </head>
11
11
  <body>