hyperframes 0.8.55 → 0.8.57
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 +16 -8
- package/dist/fontLocalizeCli.js +2 -2
- package/dist/hyperframes-player.global.js +3 -3
- package/dist/skills/hyperframes/SKILL.md +2 -2
- package/dist/studio/assets/hyperframes-player-c23wnIfc.js +464 -0
- package/dist/studio/assets/{index-DrHQAuGO.css → index-DKJpHYYd.css} +1 -1
- package/dist/studio/assets/{index-BEIRytvV.js → index-DgkAzx3n.js} +1 -1
- package/dist/studio/assets/{index-DaNpNFJC.js → index-IDNr3X1H.js} +1 -1
- package/dist/studio/assets/{index-TcBZyzNA.js → index-gbOCDCuZ.js} +202 -202
- package/dist/studio/index.d.ts +111 -17
- package/dist/studio/index.html +2 -2
- package/dist/studio/index.js +21534 -20683
- package/dist/studio/index.js.map +1 -1
- package/dist/studio/styles.css +1 -1
- package/package.json +1 -1
- package/dist/studio/assets/hyperframes-player-BjAGc2ID.js +0 -464
package/dist/studio/index.d.ts
CHANGED
|
@@ -304,7 +304,15 @@ interface PlayerProps {
|
|
|
304
304
|
projectId?: string;
|
|
305
305
|
directUrl?: string;
|
|
306
306
|
onLoad: () => void;
|
|
307
|
+
/** Fires once the loaded document is painted and every loader (shader, assets) has cleared. */
|
|
308
|
+
onReadyToShowChange?: (ready: boolean) => void;
|
|
309
|
+
onPreviewError?: (message: string) => void;
|
|
307
310
|
onCompositionLoadingChange?: (loading: boolean) => void;
|
|
311
|
+
onPainted?: (details: {
|
|
312
|
+
iframe: HTMLIFrameElement;
|
|
313
|
+
startedAt: number;
|
|
314
|
+
loadId: number;
|
|
315
|
+
}) => void;
|
|
308
316
|
portrait?: boolean;
|
|
309
317
|
style?: React.CSSProperties;
|
|
310
318
|
suppressLoadingOverlay?: boolean;
|
|
@@ -644,10 +652,8 @@ interface TimelineElement {
|
|
|
644
652
|
audioGroupFxChain?: string;
|
|
645
653
|
audioGroupAutomation?: string;
|
|
646
654
|
/**
|
|
647
|
-
*
|
|
648
|
-
*
|
|
649
|
-
* lives in. Presence marks the element as expanded; edits subtract it to get
|
|
650
|
-
* the child's local (sourceFile-relative) time. Works at any nesting depth.
|
|
655
|
+
* Legacy source-coordinate marker for an inline sub-composition child. The
|
|
656
|
+
* current timeline keeps sub-compositions as single rows.
|
|
651
657
|
*/
|
|
652
658
|
expandedParentStart?: number;
|
|
653
659
|
expandedHostKey?: string;
|
|
@@ -839,8 +845,6 @@ interface PlayerState extends PlayerStoreSlices {
|
|
|
839
845
|
clipManifest: ClipManifestClip[] | null;
|
|
840
846
|
setClipManifest: (clips: ClipManifestClip[] | null) => void;
|
|
841
847
|
clipParentMap: Map<string, string>;
|
|
842
|
-
topLevelIds: ReadonlySet<string> | null;
|
|
843
|
-
setTopLevelIds: (ids: ReadonlySet<string> | null) => void;
|
|
844
848
|
setClipParentMap: (map: Map<string, string>) => void;
|
|
845
849
|
/**
|
|
846
850
|
* Sub-composition DOM descendants (groups + their children) that have no
|
|
@@ -1291,6 +1295,8 @@ interface TimelineTheme {
|
|
|
1291
1295
|
tickMinor: string;
|
|
1292
1296
|
clipBackground: string;
|
|
1293
1297
|
clipBackgroundActive: string;
|
|
1298
|
+
clipBackgroundHover: string;
|
|
1299
|
+
clipBackgroundDragging: string;
|
|
1294
1300
|
clipBorder: string;
|
|
1295
1301
|
clipBorderHover: string;
|
|
1296
1302
|
clipBorderActive: string;
|
|
@@ -1372,6 +1378,23 @@ interface CompositionThumbnailProps {
|
|
|
1372
1378
|
/** Server-rendered composition poster, deduplicated and budgeted by project/session. */
|
|
1373
1379
|
declare const CompositionThumbnail: react.NamedExoticComponent<CompositionThumbnailProps>;
|
|
1374
1380
|
|
|
1381
|
+
/**
|
|
1382
|
+
* React callbacks for synchronising the player store from iframe runtime data.
|
|
1383
|
+
*
|
|
1384
|
+
* Covers four related concerns:
|
|
1385
|
+
* - processTimelineMessage — turn a clip-manifest postMessage into TimelineElements
|
|
1386
|
+
* - enrichMissingCompositions — fill gaps the manifest misses (element-ref starts)
|
|
1387
|
+
* - initializeAdapter — called after iframe load: seek, set duration, read elements
|
|
1388
|
+
* - onIframeLoad — orchestrates initializeAdapter with a message-based fallback
|
|
1389
|
+
*/
|
|
1390
|
+
|
|
1391
|
+
type PreviewIframeRole = "live" | "shadow";
|
|
1392
|
+
interface PreviewIframeSlot {
|
|
1393
|
+
gen: number;
|
|
1394
|
+
role: PreviewIframeRole;
|
|
1395
|
+
url?: string;
|
|
1396
|
+
}
|
|
1397
|
+
|
|
1375
1398
|
/**
|
|
1376
1399
|
* Runtime iframe integration utilities.
|
|
1377
1400
|
*
|
|
@@ -1406,7 +1429,13 @@ declare const CompositionThumbnail: react.NamedExoticComponent<CompositionThumbn
|
|
|
1406
1429
|
*/
|
|
1407
1430
|
declare function resolveIframe(el: Element | null): HTMLIFrameElement | null;
|
|
1408
1431
|
|
|
1409
|
-
|
|
1432
|
+
interface UseTimelinePlayerOptions {
|
|
1433
|
+
/** Runs right after a reloaded preview becomes the live iframe. */
|
|
1434
|
+
onShadowPromoted?: () => void;
|
|
1435
|
+
/** A reload was abandoned (cause in the message); the previous preview is still showing. */
|
|
1436
|
+
onPreviewReloadFailed?: (message: string) => void;
|
|
1437
|
+
}
|
|
1438
|
+
declare function useTimelinePlayer({ onShadowPromoted, onPreviewReloadFailed, }?: UseTimelinePlayerOptions): {
|
|
1410
1439
|
iframeRef: react.RefObject<HTMLIFrameElement | null>;
|
|
1411
1440
|
play: () => void;
|
|
1412
1441
|
pause: () => void;
|
|
@@ -1414,10 +1443,16 @@ declare function useTimelinePlayer(): {
|
|
|
1414
1443
|
seek: (time: number, options?: {
|
|
1415
1444
|
keepPlaying?: boolean;
|
|
1416
1445
|
}) => boolean;
|
|
1417
|
-
onIframeLoad: () => void;
|
|
1446
|
+
onIframeLoad: (context?: number) => void;
|
|
1418
1447
|
refreshPlayer: () => void;
|
|
1419
1448
|
saveSeekPosition: () => void;
|
|
1420
1449
|
resetPlayer: () => void;
|
|
1450
|
+
previewSlots: PreviewIframeSlot[];
|
|
1451
|
+
onShadowIframeLoad: (context?: number) => void;
|
|
1452
|
+
onShadowReadyChange: (gen: number, ready: boolean) => void;
|
|
1453
|
+
onShadowError: (gen: number, cause: string) => void;
|
|
1454
|
+
setShadowIframeNode: (node: HTMLIFrameElement | null) => void;
|
|
1455
|
+
resetPreviewSlots: () => void;
|
|
1421
1456
|
};
|
|
1422
1457
|
|
|
1423
1458
|
declare function formatTime(time: number): string;
|
|
@@ -1491,13 +1526,28 @@ interface EditorShellProps extends TimelineEditCallbackDeps {
|
|
|
1491
1526
|
* fullscreen and during a block preview; below the selection overlay past z-index 10.
|
|
1492
1527
|
*/
|
|
1493
1528
|
gestureOverlay?: ReactNode;
|
|
1529
|
+
/** Clicks still select and report; the preview cannot move, edit or delete anything. */
|
|
1530
|
+
readOnlyPreview?: boolean;
|
|
1531
|
+
/** Short text shown on disabled hand-edit controls while `readOnlyPreview` is set. */
|
|
1532
|
+
readOnlyPreviewReason?: string;
|
|
1533
|
+
}
|
|
1534
|
+
declare function EditorShell({ panels, timelineToolbar, renderClipContent, handleTimelineElementDelete, handleTimelineAssetDrop, handleTimelineBlockDrop, handleTimelineCompositionDrop, handlePreviewBlockDrop, handleTimelineFileDrop, handleTimelineElementMove, handleTimelineElementsMove, handleTimelineElementResize, handleTimelineGroupResize, handleToggleTrackHidden, setAudioGroupAttribute, handleGroupClips, setElementFxAttribute, handleBlockedTimelineEdit, handleTimelineElementSplit, handleRazorSplit, handleRazorSplitAll, onCopyClip, onPasteClip, onDuplicateClip, canPasteClip, setCompIdToSrc, setCompositionLoading, shouldShowMotionPath, shouldShowSelectedDomBounds, isGestureRecording, recordingState, onToggleRecording, blockPreview, gestureOverlay, readOnlyPreview, readOnlyPreviewReason, }: EditorShellProps): react_jsx_runtime.JSX.Element;
|
|
1535
|
+
|
|
1536
|
+
interface PreviewCompositionSize {
|
|
1537
|
+
width: number;
|
|
1538
|
+
height: number;
|
|
1494
1539
|
}
|
|
1495
|
-
declare function EditorShell({ panels, timelineToolbar, renderClipContent, handleTimelineElementDelete, handleTimelineAssetDrop, handleTimelineBlockDrop, handleTimelineCompositionDrop, handlePreviewBlockDrop, handleTimelineFileDrop, handleTimelineElementMove, handleTimelineElementsMove, handleTimelineElementResize, handleTimelineGroupResize, handleToggleTrackHidden, setAudioGroupAttribute, handleGroupClips, setElementFxAttribute, handleBlockedTimelineEdit, handleTimelineElementSplit, handleRazorSplit, handleRazorSplitAll, onCopyClip, onPasteClip, onDuplicateClip, canPasteClip, setCompIdToSrc, setCompositionLoading, shouldShowMotionPath, shouldShowSelectedDomBounds, isGestureRecording, recordingState, onToggleRecording, blockPreview, gestureOverlay, }: EditorShellProps): react_jsx_runtime.JSX.Element;
|
|
1496
1540
|
|
|
1497
1541
|
interface NLEPreviewProps {
|
|
1498
1542
|
projectId: string;
|
|
1499
1543
|
iframeRef: RefObject<HTMLIFrameElement | null>;
|
|
1500
1544
|
onIframeLoad: () => void;
|
|
1545
|
+
previewSlots: PreviewIframeSlot[];
|
|
1546
|
+
onShadowIframeLoad: (gen: number) => void;
|
|
1547
|
+
onShadowReadyChange: (gen: number, ready: boolean) => void;
|
|
1548
|
+
onShadowError: (gen: number, message: string) => void;
|
|
1549
|
+
setShadowIframeNode: (node: HTMLIFrameElement | null) => void;
|
|
1550
|
+
resetPreviewSlots: () => void;
|
|
1501
1551
|
onCompositionLoadingChange?: (loading: boolean) => void;
|
|
1502
1552
|
portrait?: boolean;
|
|
1503
1553
|
directUrl?: string;
|
|
@@ -1506,10 +1556,6 @@ interface NLEPreviewProps {
|
|
|
1506
1556
|
/** Reports the authored composition size measured from the loaded preview. */
|
|
1507
1557
|
onCompositionSizeChange?: (size: PreviewCompositionSize | null) => void;
|
|
1508
1558
|
}
|
|
1509
|
-
interface PreviewCompositionSize {
|
|
1510
|
-
width: number;
|
|
1511
|
-
height: number;
|
|
1512
|
-
}
|
|
1513
1559
|
declare const NLEPreview: react.NamedExoticComponent<NLEPreviewProps>;
|
|
1514
1560
|
|
|
1515
1561
|
interface CompositionLevel {
|
|
@@ -1537,9 +1583,51 @@ interface DomEditCompositionRect {
|
|
|
1537
1583
|
|
|
1538
1584
|
/**
|
|
1539
1585
|
* Where the composition sits inside `overlayRef`, in overlay pixels, plus the scale from
|
|
1540
|
-
* composition units to pixels.
|
|
1586
|
+
* composition units to pixels.
|
|
1541
1587
|
*/
|
|
1542
|
-
declare function usePreviewCompositionRect(overlayRef: RefObject<HTMLDivElement | null
|
|
1588
|
+
declare function usePreviewCompositionRect(overlayRef: RefObject<HTMLDivElement | null>, iframe: HTMLIFrameElement | null): DomEditCompositionRect;
|
|
1589
|
+
|
|
1590
|
+
interface PreviewSnapPreferences {
|
|
1591
|
+
snapEnabled: boolean;
|
|
1592
|
+
gridVisible: boolean;
|
|
1593
|
+
gridSpacing: number;
|
|
1594
|
+
snapToGrid: boolean;
|
|
1595
|
+
}
|
|
1596
|
+
interface PreviewOverlayContextValue {
|
|
1597
|
+
state: {
|
|
1598
|
+
snapPrefs: PreviewSnapPreferences;
|
|
1599
|
+
rulerVisible: boolean;
|
|
1600
|
+
safeMarginsVisible: boolean;
|
|
1601
|
+
iframeRef: RefObject<HTMLIFrameElement | null>;
|
|
1602
|
+
compositionRect: DomEditCompositionRect;
|
|
1603
|
+
};
|
|
1604
|
+
actions: {
|
|
1605
|
+
setSnapPrefs: (patch: Partial<PreviewSnapPreferences>) => void;
|
|
1606
|
+
toggleRulers: () => void;
|
|
1607
|
+
toggleSafeMargins: () => void;
|
|
1608
|
+
};
|
|
1609
|
+
}
|
|
1610
|
+
interface PreviewOverlayProviderProps {
|
|
1611
|
+
iframe?: HTMLIFrameElement | null;
|
|
1612
|
+
children: ReactNode;
|
|
1613
|
+
}
|
|
1614
|
+
declare function PreviewOverlayProvider({ iframe, children }: PreviewOverlayProviderProps): react_jsx_runtime.JSX.Element;
|
|
1615
|
+
declare function usePreviewOverlayContext(): PreviewOverlayContextValue;
|
|
1616
|
+
|
|
1617
|
+
/** Ruler and safe-margin boxes drawn over the preview pane, never inside the composition. */
|
|
1618
|
+
declare const PreviewGuides: react.NamedExoticComponent<object>;
|
|
1619
|
+
|
|
1620
|
+
declare const GridOverlay: react.NamedExoticComponent<object>;
|
|
1621
|
+
|
|
1622
|
+
declare const SnapToolbar: react.NamedExoticComponent<object>;
|
|
1623
|
+
|
|
1624
|
+
type GuideKey = "rulerVisible" | "safeMarginsVisible";
|
|
1625
|
+
interface PreviewGuidesState {
|
|
1626
|
+
rulerVisible: boolean;
|
|
1627
|
+
safeMarginsVisible: boolean;
|
|
1628
|
+
toggle: (key: GuideKey) => void;
|
|
1629
|
+
}
|
|
1630
|
+
declare const usePreviewGuidesStore: zustand.UseBoundStore<zustand.StoreApi<PreviewGuidesState>>;
|
|
1543
1631
|
|
|
1544
1632
|
interface SourceEditorProps {
|
|
1545
1633
|
content: string;
|
|
@@ -1744,7 +1832,13 @@ interface FileTreeProps {
|
|
|
1744
1832
|
}
|
|
1745
1833
|
declare const FileTree: react.NamedExoticComponent<FileTreeProps>;
|
|
1746
1834
|
|
|
1747
|
-
|
|
1835
|
+
interface StudioAppProps {
|
|
1836
|
+
/** Clicks still select and report; the preview cannot move, edit or delete anything. */
|
|
1837
|
+
readOnlyPreview?: boolean;
|
|
1838
|
+
/** Short text shown on disabled hand-edit controls while `readOnlyPreview` is set. */
|
|
1839
|
+
readOnlyPreviewReason?: string;
|
|
1840
|
+
}
|
|
1841
|
+
declare function StudioApp({ readOnlyPreview, readOnlyPreviewReason }?: StudioAppProps): react_jsx_runtime.JSX.Element;
|
|
1748
1842
|
|
|
1749
1843
|
interface AgentModalAnchorPoint {
|
|
1750
1844
|
x: number;
|
|
@@ -2179,4 +2273,4 @@ declare function TimelineEditProvider({ value, children, }: {
|
|
|
2179
2273
|
children: ReactNode;
|
|
2180
2274
|
}): react_jsx_runtime.JSX.Element;
|
|
2181
2275
|
|
|
2182
|
-
export { type AgentModalAnchorPoint, type AgentPromptElementInfo, AskAgentModal, type AskAgentModalProps, type BlockedTimelineEditIntent, Button, type ButtonSize, type ButtonVariant, type CanEditTimelineElement, CompositionBreadcrumb, type CompositionDimensions, type CompositionLevel, CompositionThumbnail, ContextMenu, type EditHistoryHandle, EditorShell, type EditorShellProps, type ExternalFileChangeBlockedState, type ExternalFileChangeCoordinatorHandle, ExternalFileConflictBanner, type FfmpegStatus, FileTree, HyperframesLoader, type HyperframesLoaderProps, HyperframesLogo, IconButton, Input, type InputProps, Menu, MenuItem, type MenuItemTone, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuShortcut, NLEPreview, NumberField, type NumberFieldProps, type PatchOperation, type PersistedRenderSettings, type PickedElement, Player, PlayerControls, Popover, type PopupPreviewState, type DomEditCompositionRect as PreviewCompositionRect, type PreviewState, PropertyPanel, type RenderJob, RenderQueue, type RenderQueueProps, type ResolutionPreset, Select, type SelectOption, type SelectProps, Slider, type SliderProps, SourceEditor, type StartRenderOptions, StudioApp, StudioFileConflictError, type StudioPendingEditsDrainResult, Tab, TabPanel, Tabs, TabsList, Timeline, type TimelineEditCallbacks, type TimelineEditPermission, TimelineEditProvider, type TimelineElement, TimelinePane, type TimelinePaneProps, type TimelineTimeRange, Toggle, type ToggleProps, Tooltip, type UseEditHistoryActionsOptions, type UsePersistentEditHistoryOptions, type UseProjectFileWriterOptions, 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, usePlayerStore, usePreviewCompositionRect, useProjectFileWriter, useRenderQueue, useTimelineEditing, useTimelinePlayer };
|
|
2276
|
+
export { type AgentModalAnchorPoint, type AgentPromptElementInfo, AskAgentModal, type AskAgentModalProps, type BlockedTimelineEditIntent, Button, type ButtonSize, type ButtonVariant, type CanEditTimelineElement, CompositionBreadcrumb, type CompositionDimensions, type CompositionLevel, CompositionThumbnail, ContextMenu, type EditHistoryHandle, EditorShell, type EditorShellProps, type ExternalFileChangeBlockedState, type ExternalFileChangeCoordinatorHandle, ExternalFileConflictBanner, type FfmpegStatus, FileTree, GridOverlay, HyperframesLoader, type HyperframesLoaderProps, HyperframesLogo, IconButton, Input, type InputProps, Menu, MenuItem, type MenuItemTone, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuShortcut, NLEPreview, NumberField, type NumberFieldProps, type PatchOperation, type PersistedRenderSettings, type PickedElement, Player, PlayerControls, 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, Slider, type SliderProps, SnapToolbar, SourceEditor, type StartRenderOptions, StudioApp, StudioFileConflictError, type StudioPendingEditsDrainResult, Tab, TabPanel, Tabs, TabsList, Timeline, type TimelineEditCallbacks, type TimelineEditPermission, TimelineEditProvider, type TimelineElement, TimelinePane, type TimelinePaneProps, type TimelineTimeRange, Toggle, type ToggleProps, Tooltip, type UseEditHistoryActionsOptions, type UsePersistentEditHistoryOptions, type UseProjectFileWriterOptions, 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, usePlayerStore, usePreviewCompositionRect, usePreviewGuidesStore, usePreviewOverlayContext, useProjectFileWriter, useRenderQueue, useTimelineEditing, useTimelinePlayer };
|
package/dist/studio/index.html
CHANGED
|
@@ -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-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-gbOCDCuZ.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="/assets/index-DKJpHYYd.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
12
12
|
<div data-hf-id="hf-aph5" id="root"></div>
|