hyperframes 0.8.78 → 0.8.79

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 (34) hide show
  1. package/dist/cli.js +1071 -523
  2. package/dist/fontLocalizeCli.js +99 -33
  3. package/dist/hyperframe-runtime.js +54 -54
  4. package/dist/hyperframe.manifest.json +1 -1
  5. package/dist/hyperframe.runtime.iife.js +54 -54
  6. package/dist/hyperframes-player.global.js +3 -3
  7. package/dist/skills/media-use/scripts/compatibility.test.mjs +2 -0
  8. package/dist/skills/media-use/scripts/lib/cache.mjs +6 -8
  9. package/dist/skills/media-use/scripts/lib/candidates.test.mjs +2 -2
  10. package/dist/skills/media-use/scripts/lib/manifest.test.mjs +2 -0
  11. package/dist/skills/media-use/scripts/lib/media-home.mjs +20 -0
  12. package/dist/skills/media-use/scripts/lib/media-home.test.mjs +61 -0
  13. package/dist/skills/media-use/scripts/lib/misses.mjs +6 -6
  14. package/dist/skills/media-use/scripts/lib/misses.test.mjs +12 -1
  15. package/dist/skills/media-use/scripts/lib/prefs-store.mjs +2 -2
  16. package/dist/skills/media-use/scripts/lib/prefs-store.test.mjs +1 -1
  17. package/dist/skills/media-use/scripts/lib/recipe-store.mjs +2 -2
  18. package/dist/skills/media-use/scripts/lib/recipe-store.test.mjs +1 -1
  19. package/dist/skills/media-use/scripts/lib/stats.test.mjs +1 -1
  20. package/dist/skills/media-use/scripts/lib/telemetry.mjs +2 -1
  21. package/dist/skills/media-use/scripts/lib/telemetry.test.mjs +1 -0
  22. package/dist/studio/assets/{hyperframes-player-BdnQGwG5.js → hyperframes-player-Bx_Kw4Ey.js} +3 -3
  23. package/dist/studio/assets/{index-C_n__Uh3.js → index-CJP92F4-.js} +1 -1
  24. package/dist/studio/assets/{index-CX_4MYbk.js → index-DBKySIo7.js} +187 -187
  25. package/dist/studio/assets/{index-DdpuHaGN.js → index-ORZXYB0k.js} +1 -1
  26. package/dist/studio/{chunk-5VANA2TG.js → chunk-I7XNAIOF.js} +2 -1
  27. package/dist/studio/{domEditingLayers-IGPLTI5E.js → domEditingLayers-MHFDKAQ7.js} +2 -2
  28. package/dist/studio/index.d.ts +22 -15
  29. package/dist/studio/index.html +1 -1
  30. package/dist/studio/index.js +452 -256
  31. package/dist/studio/index.js.map +1 -1
  32. package/package.json +1 -1
  33. /package/dist/studio/{chunk-5VANA2TG.js.map → chunk-I7XNAIOF.js.map} +0 -0
  34. /package/dist/studio/{domEditingLayers-IGPLTI5E.js.map → domEditingLayers-MHFDKAQ7.js.map} +0 -0
@@ -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-DBKySIo7.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;
@@ -1254,7 +1247,7 @@ interface TimelineEditCallbacks {
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;
1256
1249
  /** ...and persist one undo entry on release. */
1257
- onSetAudioGroupAttributeQuiet?: (groupId: string, attr: string, value: string | null, label: string) => Promise<void>;
1250
+ onSetAudioGroupAttributeQuiet?: (groupId: string, attr: string, value: string | null, label: string) => Promise<TimelineEditOutcome | void>;
1258
1251
  /** C1's ungrouped-track FX pointer: "Group these clips" — write
1259
1252
  * `data-audio-group` on every one of them, atomically. Same shape B6's
1260
1253
  * carve auto-grouping uses. */
@@ -1262,7 +1255,7 @@ interface TimelineEditCallbacks {
1262
1255
  /** C1's single-clip FX write: addressed by the clip itself rather than the
1263
1256
  * current selection, mirroring `onSetAudioGroupAttributeLive/Quiet`. */
1264
1257
  onSetElementAttributeLive?: (element: TimelineElement, attr: string, value: string | null) => void;
1265
- onSetElementAttributeQuiet?: (element: TimelineElement, attr: string, value: string | null, label: string) => Promise<void>;
1258
+ onSetElementAttributeQuiet?: (element: TimelineElement, attr: string, value: string | null, label: string) => Promise<TimelineEditOutcome | void>;
1266
1259
  onBlockedEditAttempt?: (element: TimelineElement, intent: BlockedTimelineEditIntent) => void;
1267
1260
  onSplitElement?: (element: TimelineElement, splitTime: number) => Promise<void> | void;
1268
1261
  onRazorSplit?: (element: TimelineElement, splitTime: number) => Promise<void> | void;
@@ -2009,6 +2002,20 @@ declare function usePlayerHandle(): PlayerHandle;
2009
2002
 
2010
2003
  declare function formatTime(time: number): string;
2011
2004
 
2005
+ /** A host's verdict on one element: editable, or blocked with a reason to show. */
2006
+ type TimelineEditPermission = true | {
2007
+ blocked: true;
2008
+ reason: string;
2009
+ };
2010
+ type CanEditTimelineElement = (element: TimelineElement) => TimelineEditPermission;
2011
+ /** What an effect save did: landed, refused before writing, or failed while writing. */
2012
+ type TimelineEditOutcome = {
2013
+ status: "saved";
2014
+ } | {
2015
+ status: "refused" | "failed";
2016
+ reason: string;
2017
+ };
2018
+
2012
2019
  interface TimelineEditCallbackDeps {
2013
2020
  handleTimelineElementMove: (element: TimelineElement, updates: Pick<TimelineElement, "start" | "track">) => Promise<void> | void;
2014
2021
  handleTimelineElementsMove: (edits: Array<{
@@ -2020,7 +2027,7 @@ interface TimelineEditCallbackDeps {
2020
2027
  handleToggleTrackHidden: (track: number, hidden: boolean) => Promise<void> | void;
2021
2028
  setAudioGroupAttribute: {
2022
2029
  setLive: (groupId: string, attr: string, value: string | null) => void;
2023
- setQuiet: (groupId: string, attr: string, value: string | null, label: string) => Promise<void>;
2030
+ setQuiet: (groupId: string, attr: string, value: string | null, label: string) => Promise<TimelineEditOutcome | void>;
2024
2031
  };
2025
2032
  handleBlockedTimelineEdit: (element: TimelineElement, intent: BlockedTimelineEditIntent) => void;
2026
2033
  handleTimelineElementSplit: (element: TimelineElement, splitTime: number) => Promise<void> | void;
@@ -2031,7 +2038,7 @@ interface TimelineEditCallbackDeps {
2031
2038
  /** C1's single-clip FX write, addressed by the clip itself. */
2032
2039
  setElementFxAttribute?: {
2033
2040
  setLive: (element: TimelineElement, attr: string, value: string | null) => void;
2034
- setQuiet: (element: TimelineElement, attr: string, value: string | null, label: string) => Promise<void>;
2041
+ setQuiet: (element: TimelineElement, attr: string, value: string | null, label: string) => Promise<TimelineEditOutcome | void>;
2035
2042
  };
2036
2043
  }
2037
2044
 
@@ -2666,7 +2673,7 @@ interface ApplyResult {
2666
2673
  paths?: string[];
2667
2674
  files?: Record<string, ApplyRestoredFile>;
2668
2675
  }
2669
- /** Studio's undo over the server's project history: an edit claims what it wrote; Cmd+Z steps every writer's. */
2676
+ /** Studio's undo over the server's project history: an edit claims what it wrote; Cmd+Z steps the person's. */
2670
2677
  declare function usePersistentEditHistory({ projectId }: UsePersistentEditHistoryOptions): {
2671
2678
  loaded: boolean;
2672
2679
  canUndo: boolean;
@@ -2695,11 +2702,11 @@ declare function useTimelineEditing({ projectId, activeCompPath, timelineElement
2695
2702
  handleToggleElementHidden: (elementKey: string | readonly string[], hidden: boolean) => Promise<void>;
2696
2703
  handleAutoGroupCarveSources: (clipIds: readonly string[], groupId: string, groupLabel?: string | undefined) => Promise<void>;
2697
2704
  setAudioGroupAttribute: {
2698
- setQuiet: (groupId: string, attr: string, value: string | null, label: string) => Promise<void>;
2705
+ setQuiet: (groupId: string, attr: string, value: string | null, label: string) => Promise<TimelineEditOutcome>;
2699
2706
  setLive: (groupId: string, attr: string, value: string | null) => void;
2700
2707
  };
2701
2708
  setElementFxAttribute: {
2702
- setQuiet: (element: TimelineElement, attr: string, value: string | null, label: string) => Promise<void>;
2709
+ setQuiet: (element: TimelineElement, attr: string, value: string | null, label: string) => Promise<TimelineEditOutcome>;
2703
2710
  setLive: (element: TimelineElement, attr: string, value: string | null) => void;
2704
2711
  };
2705
2712
  handleTimelineElementDelete: (element: TimelineElement) => Promise<void>;
@@ -2866,4 +2873,4 @@ declare function TimelineEditProvider({ value, children, }: {
2866
2873
  children: ReactNode;
2867
2874
  }): react_jsx_runtime.JSX.Element;
2868
2875
 
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 };
2876
+ 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-DBKySIo7.js"></script>
9
9
  <link rel="stylesheet" crossorigin href="/assets/index-BWJqxeaH.css">
10
10
  </head>
11
11
  <body>