hyperframes 0.8.77 → 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.
- package/dist/cli.js +2942 -1786
- package/dist/fontLocalizeCli.js +99 -33
- package/dist/hyperframe-runtime.js +54 -54
- package/dist/hyperframe.manifest.json +1 -1
- package/dist/hyperframe.runtime.iife.js +54 -54
- package/dist/hyperframes-player.global.js +3 -3
- package/dist/registry/localSemantic.js +20 -1
- package/dist/skills/hyperframes/SKILL.md +6 -0
- package/dist/skills/hyperframes-cli/SKILL.md +14 -1
- package/dist/skills/media-use/registry/localSemantic.js +20 -1
- package/dist/skills/media-use/scripts/compatibility.test.mjs +2 -0
- package/dist/skills/media-use/scripts/lib/cache.mjs +6 -8
- package/dist/skills/media-use/scripts/lib/candidates.test.mjs +2 -2
- package/dist/skills/media-use/scripts/lib/manifest.test.mjs +2 -0
- package/dist/skills/media-use/scripts/lib/media-home.mjs +20 -0
- package/dist/skills/media-use/scripts/lib/media-home.test.mjs +61 -0
- package/dist/skills/media-use/scripts/lib/misses.mjs +6 -6
- package/dist/skills/media-use/scripts/lib/misses.test.mjs +12 -1
- package/dist/skills/media-use/scripts/lib/prefs-store.mjs +2 -2
- package/dist/skills/media-use/scripts/lib/prefs-store.test.mjs +1 -1
- package/dist/skills/media-use/scripts/lib/recipe-store.mjs +2 -2
- package/dist/skills/media-use/scripts/lib/recipe-store.test.mjs +1 -1
- package/dist/skills/media-use/scripts/lib/stats.test.mjs +1 -1
- package/dist/skills/media-use/scripts/lib/telemetry.mjs +2 -1
- package/dist/skills/media-use/scripts/lib/telemetry.test.mjs +1 -0
- package/dist/skills/registry/localSemantic.js +20 -1
- package/dist/studio/assets/hyperframes-player-Bx_Kw4Ey.js +464 -0
- package/dist/studio/assets/{index-DcxWQ7Za.js → index-CJP92F4-.js} +1 -1
- package/dist/studio/assets/{index-2GgHjQq-.js → index-DBKySIo7.js} +187 -187
- package/dist/studio/assets/{index-CsFCRdMo.js → index-ORZXYB0k.js} +1 -1
- package/dist/studio/{chunk-5VANA2TG.js → chunk-I7XNAIOF.js} +2 -1
- package/dist/studio/{domEditingLayers-IGPLTI5E.js → domEditingLayers-MHFDKAQ7.js} +2 -2
- package/dist/studio/index.d.ts +23 -15
- package/dist/studio/index.html +1 -1
- package/dist/studio/index.js +459 -257
- package/dist/studio/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/studio/assets/hyperframes-player-BSDTJ9EF.js +0 -464
- /package/dist/studio/{chunk-5VANA2TG.js.map → chunk-I7XNAIOF.js.map} +0 -0
- /package/dist/studio/{domEditingLayers-IGPLTI5E.js.map → domEditingLayers-MHFDKAQ7.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{g as P}from"./index-
|
|
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-
|
|
1153
|
+
//# sourceMappingURL=chunk-I7XNAIOF.js.map
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
resolveDomEditCapabilities,
|
|
21
21
|
resolveDomEditSelection,
|
|
22
22
|
serializeDomEditTextFields
|
|
23
|
-
} from "./chunk-
|
|
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-
|
|
48
|
+
//# sourceMappingURL=domEditingLayers-MHFDKAQ7.js.map
|
package/dist/studio/index.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ import { StoreApi } from 'zustand';
|
|
|
14
14
|
import { GsapAnimation as GsapAnimation$1, ArcPathSegment } from '@hyperframes/parsers/gsap-parser';
|
|
15
15
|
import { CanvasResolution } from '@hyperframes/parsers';
|
|
16
16
|
import { Composition } from '@hyperframes/sdk';
|
|
17
|
+
export { SeamTransitionFrameSource, SeamTransitionLoopHandle, SeamTransitionLoopOptions, playSeamTransitionLoop } from '@hyperframes/shader-transitions';
|
|
17
18
|
|
|
18
19
|
type ButtonVariant = "primary" | "secondary" | "danger" | "ghost";
|
|
19
20
|
type ButtonSize = "sm" | "md" | "lg";
|
|
@@ -1093,13 +1094,6 @@ interface DomEditPatchBatchesResult {
|
|
|
1093
1094
|
changed: boolean;
|
|
1094
1095
|
}
|
|
1095
1096
|
|
|
1096
|
-
/** A host's verdict on one element: editable, or blocked with a reason to show. */
|
|
1097
|
-
type TimelineEditPermission = true | {
|
|
1098
|
-
blocked: true;
|
|
1099
|
-
reason: string;
|
|
1100
|
-
};
|
|
1101
|
-
type CanEditTimelineElement = (element: TimelineElement) => TimelineEditPermission;
|
|
1102
|
-
|
|
1103
1097
|
interface RecordEditInput$1 {
|
|
1104
1098
|
label: string;
|
|
1105
1099
|
coalesceKey?: string;
|
|
@@ -1253,7 +1247,7 @@ interface TimelineEditCallbacks {
|
|
|
1253
1247
|
/** B7's bus strip: live-write the group's own attribute while dragging. */
|
|
1254
1248
|
onSetAudioGroupAttributeLive?: (groupId: string, attr: string, value: string | null) => void;
|
|
1255
1249
|
/** ...and persist one undo entry on release. */
|
|
1256
|
-
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>;
|
|
1257
1251
|
/** C1's ungrouped-track FX pointer: "Group these clips" — write
|
|
1258
1252
|
* `data-audio-group` on every one of them, atomically. Same shape B6's
|
|
1259
1253
|
* carve auto-grouping uses. */
|
|
@@ -1261,7 +1255,7 @@ interface TimelineEditCallbacks {
|
|
|
1261
1255
|
/** C1's single-clip FX write: addressed by the clip itself rather than the
|
|
1262
1256
|
* current selection, mirroring `onSetAudioGroupAttributeLive/Quiet`. */
|
|
1263
1257
|
onSetElementAttributeLive?: (element: TimelineElement, attr: string, value: string | null) => void;
|
|
1264
|
-
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>;
|
|
1265
1259
|
onBlockedEditAttempt?: (element: TimelineElement, intent: BlockedTimelineEditIntent) => void;
|
|
1266
1260
|
onSplitElement?: (element: TimelineElement, splitTime: number) => Promise<void> | void;
|
|
1267
1261
|
onRazorSplit?: (element: TimelineElement, splitTime: number) => Promise<void> | void;
|
|
@@ -2008,6 +2002,20 @@ declare function usePlayerHandle(): PlayerHandle;
|
|
|
2008
2002
|
|
|
2009
2003
|
declare function formatTime(time: number): string;
|
|
2010
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
|
+
|
|
2011
2019
|
interface TimelineEditCallbackDeps {
|
|
2012
2020
|
handleTimelineElementMove: (element: TimelineElement, updates: Pick<TimelineElement, "start" | "track">) => Promise<void> | void;
|
|
2013
2021
|
handleTimelineElementsMove: (edits: Array<{
|
|
@@ -2019,7 +2027,7 @@ interface TimelineEditCallbackDeps {
|
|
|
2019
2027
|
handleToggleTrackHidden: (track: number, hidden: boolean) => Promise<void> | void;
|
|
2020
2028
|
setAudioGroupAttribute: {
|
|
2021
2029
|
setLive: (groupId: string, attr: string, value: string | null) => void;
|
|
2022
|
-
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>;
|
|
2023
2031
|
};
|
|
2024
2032
|
handleBlockedTimelineEdit: (element: TimelineElement, intent: BlockedTimelineEditIntent) => void;
|
|
2025
2033
|
handleTimelineElementSplit: (element: TimelineElement, splitTime: number) => Promise<void> | void;
|
|
@@ -2030,7 +2038,7 @@ interface TimelineEditCallbackDeps {
|
|
|
2030
2038
|
/** C1's single-clip FX write, addressed by the clip itself. */
|
|
2031
2039
|
setElementFxAttribute?: {
|
|
2032
2040
|
setLive: (element: TimelineElement, attr: string, value: string | null) => void;
|
|
2033
|
-
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>;
|
|
2034
2042
|
};
|
|
2035
2043
|
}
|
|
2036
2044
|
|
|
@@ -2665,7 +2673,7 @@ interface ApplyResult {
|
|
|
2665
2673
|
paths?: string[];
|
|
2666
2674
|
files?: Record<string, ApplyRestoredFile>;
|
|
2667
2675
|
}
|
|
2668
|
-
/** Studio's undo over the server's project history: an edit claims what it wrote; Cmd+Z steps
|
|
2676
|
+
/** Studio's undo over the server's project history: an edit claims what it wrote; Cmd+Z steps the person's. */
|
|
2669
2677
|
declare function usePersistentEditHistory({ projectId }: UsePersistentEditHistoryOptions): {
|
|
2670
2678
|
loaded: boolean;
|
|
2671
2679
|
canUndo: boolean;
|
|
@@ -2694,11 +2702,11 @@ declare function useTimelineEditing({ projectId, activeCompPath, timelineElement
|
|
|
2694
2702
|
handleToggleElementHidden: (elementKey: string | readonly string[], hidden: boolean) => Promise<void>;
|
|
2695
2703
|
handleAutoGroupCarveSources: (clipIds: readonly string[], groupId: string, groupLabel?: string | undefined) => Promise<void>;
|
|
2696
2704
|
setAudioGroupAttribute: {
|
|
2697
|
-
setQuiet: (groupId: string, attr: string, value: string | null, label: string) => Promise<
|
|
2705
|
+
setQuiet: (groupId: string, attr: string, value: string | null, label: string) => Promise<TimelineEditOutcome>;
|
|
2698
2706
|
setLive: (groupId: string, attr: string, value: string | null) => void;
|
|
2699
2707
|
};
|
|
2700
2708
|
setElementFxAttribute: {
|
|
2701
|
-
setQuiet: (element: TimelineElement, attr: string, value: string | null, label: string) => Promise<
|
|
2709
|
+
setQuiet: (element: TimelineElement, attr: string, value: string | null, label: string) => Promise<TimelineEditOutcome>;
|
|
2702
2710
|
setLive: (element: TimelineElement, attr: string, value: string | null) => void;
|
|
2703
2711
|
};
|
|
2704
2712
|
handleTimelineElementDelete: (element: TimelineElement) => Promise<void>;
|
|
@@ -2865,4 +2873,4 @@ declare function TimelineEditProvider({ value, children, }: {
|
|
|
2865
2873
|
children: ReactNode;
|
|
2866
2874
|
}): react_jsx_runtime.JSX.Element;
|
|
2867
2875
|
|
|
2868
|
-
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 };
|
package/dist/studio/index.html
CHANGED
|
@@ -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-
|
|
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>
|