hyperframes 0.7.45 → 0.7.47
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 +509 -183
- package/dist/commands/contrast-audit.browser.js +250 -102
- package/dist/hyperframe-runtime.js +25 -25
- package/dist/hyperframe.manifest.json +1 -1
- package/dist/hyperframe.runtime.iife.js +25 -25
- package/dist/studio/assets/index-Dq7FEg0K.css +1 -0
- package/dist/studio/assets/{index-CZkdm5YL.js → index-DsckwbdW.js} +1 -1
- package/dist/studio/assets/index-VsAbY3rl.js +423 -0
- package/dist/studio/assets/{index-CbQKp0Ek.js → index-uvB30_yI.js} +1 -1
- package/dist/studio/index.d.ts +96 -29
- package/dist/studio/index.html +2 -2
- package/dist/studio/index.js +8443 -4305
- package/dist/studio/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/studio/assets/index-CZUbpYhQ.js +0 -416
- package/dist/studio/assets/index-DoVLXke0.css +0 -1
package/dist/studio/index.d.ts
CHANGED
|
@@ -52,9 +52,12 @@ interface ClipManifestClip {
|
|
|
52
52
|
start: number;
|
|
53
53
|
duration: number;
|
|
54
54
|
track: number;
|
|
55
|
+
zIndex?: number;
|
|
56
|
+
stackingContextId?: string | null;
|
|
55
57
|
kind: "video" | "audio" | "image" | "element" | "composition";
|
|
56
58
|
tagName: string | null;
|
|
57
59
|
compositionId: string | null;
|
|
60
|
+
compositionAncestors?: string[];
|
|
58
61
|
parentCompositionId: string | null;
|
|
59
62
|
compositionSrc: string | null;
|
|
60
63
|
assetUrl: string | null;
|
|
@@ -83,6 +86,16 @@ interface TimelineElement {
|
|
|
83
86
|
start: number;
|
|
84
87
|
duration: number;
|
|
85
88
|
track: number;
|
|
89
|
+
/** Resolved z-index for stacking-aware timeline ordering. */
|
|
90
|
+
zIndex?: number;
|
|
91
|
+
/** True when the effective z-index was authored inline or through CSS, not auto. */
|
|
92
|
+
hasExplicitZIndex?: boolean;
|
|
93
|
+
/** Stacking context this element belongs to; root clips use the root composition id. */
|
|
94
|
+
stackingContextId?: string | null;
|
|
95
|
+
/** Nearest parent composition context, matching RuntimeTimelineClip. */
|
|
96
|
+
parentCompositionId?: string | null;
|
|
97
|
+
/** Composition ancestry from root to nearest parent, matching RuntimeTimelineClip. */
|
|
98
|
+
compositionAncestors?: string[];
|
|
86
99
|
domId?: string;
|
|
87
100
|
/** Stable `data-hf-id` attribute value — used as primary patch target when present */
|
|
88
101
|
hfId?: string;
|
|
@@ -164,8 +177,10 @@ interface PlayerState {
|
|
|
164
177
|
setAutoKeyframeEnabled: (enabled: boolean) => void;
|
|
165
178
|
/** Multi-select: additional selected elements beyond selectedElementId. */
|
|
166
179
|
selectedElementIds: Set<string>;
|
|
180
|
+
setSelection: (ids: Iterable<string>, anchor?: string | null) => void;
|
|
181
|
+
addSelectedElementId: (id: string) => void;
|
|
167
182
|
toggleSelectedElementId: (id: string) => void;
|
|
168
|
-
|
|
183
|
+
clearSelection: () => void;
|
|
169
184
|
/** Keyframe data per element id, populated from parsed GSAP animations. */
|
|
170
185
|
keyframeCache: Map<string, KeyframeCacheEntry>;
|
|
171
186
|
setKeyframeCache: (elementId: string, data: KeyframeCacheEntry | undefined) => void;
|
|
@@ -179,7 +194,9 @@ interface PlayerState {
|
|
|
179
194
|
setBeatDragging: (dragging: boolean) => void;
|
|
180
195
|
setElements: (elements: TimelineElement[]) => void;
|
|
181
196
|
setSelectedElementId: (id: string | null) => void;
|
|
182
|
-
|
|
197
|
+
/** Move the selection anchor within an active multi-selection without collapsing it. */
|
|
198
|
+
setSelectionAnchor: (id: string | null) => void;
|
|
199
|
+
updateElement: (elementId: string, updates: Partial<Pick<TimelineElement, "start" | "duration" | "track" | "zIndex" | "hasExplicitZIndex" | "playbackStart" | "hidden">>) => void;
|
|
183
200
|
setZoomMode: (mode: ZoomMode) => void;
|
|
184
201
|
setManualZoomPercent: (percent: number) => void;
|
|
185
202
|
setInPoint: (time: number | null) => void;
|
|
@@ -247,8 +264,77 @@ declare const liveTime: {
|
|
|
247
264
|
};
|
|
248
265
|
declare const usePlayerStore: zustand.UseBoundStore<zustand.StoreApi<PlayerState>>;
|
|
249
266
|
|
|
267
|
+
type TimelineLayerDropPlacement = {
|
|
268
|
+
type: "onto";
|
|
269
|
+
layerId: string;
|
|
270
|
+
} | {
|
|
271
|
+
type: "between";
|
|
272
|
+
beforeLayerId: string;
|
|
273
|
+
afterLayerId: string;
|
|
274
|
+
} | {
|
|
275
|
+
type: "above";
|
|
276
|
+
layerId: string;
|
|
277
|
+
} | {
|
|
278
|
+
type: "below";
|
|
279
|
+
layerId: string;
|
|
280
|
+
};
|
|
281
|
+
interface TimelineStackingZIndexChange {
|
|
282
|
+
key: string;
|
|
283
|
+
zIndex: number;
|
|
284
|
+
domId?: string;
|
|
285
|
+
selector?: string;
|
|
286
|
+
selectorIndex?: number;
|
|
287
|
+
sourceFile?: string;
|
|
288
|
+
}
|
|
289
|
+
interface TimelineStackingReorderIntent {
|
|
290
|
+
contextKey: string;
|
|
291
|
+
placement: TimelineLayerDropPlacement;
|
|
292
|
+
zIndexChanges: TimelineStackingZIndexChange[];
|
|
293
|
+
}
|
|
294
|
+
|
|
250
295
|
type BlockedTimelineEditIntent = "move" | "resize-start" | "resize-end";
|
|
251
296
|
|
|
297
|
+
/**
|
|
298
|
+
* Source Patcher — Maps visual property edits back to source HTML files.
|
|
299
|
+
* Handles inline style updates, attribute changes, and text content.
|
|
300
|
+
*/
|
|
301
|
+
interface PatchOperation {
|
|
302
|
+
type: "inline-style" | "attribute" | "text-content" | "html-attribute";
|
|
303
|
+
property: string;
|
|
304
|
+
value: string | null;
|
|
305
|
+
childSelector?: string;
|
|
306
|
+
childIndex?: number;
|
|
307
|
+
}
|
|
308
|
+
interface PatchTarget {
|
|
309
|
+
id?: string | null;
|
|
310
|
+
hfId?: string;
|
|
311
|
+
selector?: string;
|
|
312
|
+
selectorIndex?: number;
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Find which source file contains an element by its ID.
|
|
316
|
+
*/
|
|
317
|
+
declare function resolveSourceFile(elementId: string | null, selector: string, files: Record<string, string>): string | null;
|
|
318
|
+
/**
|
|
319
|
+
* Apply a patch operation to an HTML source file.
|
|
320
|
+
*/
|
|
321
|
+
declare function applyPatch(html: string, elementId: string, op: PatchOperation): string;
|
|
322
|
+
|
|
323
|
+
interface TimelineGroupMoveChange {
|
|
324
|
+
element: TimelineElement;
|
|
325
|
+
start: number;
|
|
326
|
+
}
|
|
327
|
+
interface TimelineGroupResizeChange {
|
|
328
|
+
element: TimelineElement;
|
|
329
|
+
start: number;
|
|
330
|
+
duration: number;
|
|
331
|
+
playbackStart?: number;
|
|
332
|
+
}
|
|
333
|
+
interface TimelineGroupCommitOptions {
|
|
334
|
+
beforeTiming?: Promise<void>;
|
|
335
|
+
coalesceKey?: string;
|
|
336
|
+
}
|
|
337
|
+
|
|
252
338
|
/**
|
|
253
339
|
* Shared callback signatures for timeline editing operations.
|
|
254
340
|
* Used by NLELayout, Timeline, and any component that passes through
|
|
@@ -269,9 +355,16 @@ interface TimelineDropCallbacks {
|
|
|
269
355
|
}) => Promise<void> | void;
|
|
270
356
|
}
|
|
271
357
|
interface TimelineEditCallbacks {
|
|
272
|
-
onMoveElement?: (element: TimelineElement, updates: Pick<TimelineElement, "start" | "track">
|
|
358
|
+
onMoveElement?: (element: TimelineElement, updates: Pick<TimelineElement, "start" | "track"> & {
|
|
359
|
+
stackingReorder?: TimelineStackingReorderIntent | null;
|
|
360
|
+
}) => Promise<void> | void;
|
|
273
361
|
onResizeElement?: (element: TimelineElement, updates: Pick<TimelineElement, "start" | "duration" | "playbackStart">) => Promise<void> | void;
|
|
362
|
+
onMoveElements?: (changes: TimelineGroupMoveChange[], options?: TimelineGroupCommitOptions) => Promise<void> | void;
|
|
363
|
+
onResizeElements?: (changes: TimelineGroupResizeChange[], options?: TimelineGroupCommitOptions) => Promise<void> | void;
|
|
364
|
+
onPreviewMoveElements?: (changes: TimelineGroupMoveChange[]) => void;
|
|
365
|
+
onPreviewResizeElements?: (changes: TimelineGroupResizeChange[]) => void;
|
|
274
366
|
onToggleTrackHidden?: (track: number, hidden: boolean) => Promise<void> | void;
|
|
367
|
+
onToggleElementHidden?: (elementKey: string, hidden: boolean) => Promise<void> | void;
|
|
275
368
|
onBlockedEditAttempt?: (element: TimelineElement, intent: BlockedTimelineEditIntent) => void;
|
|
276
369
|
onSplitElement?: (element: TimelineElement, splitTime: number) => Promise<void> | void;
|
|
277
370
|
onRazorSplit?: (element: TimelineElement, splitTime: number) => Promise<void> | void;
|
|
@@ -490,32 +583,6 @@ interface SourceEditorProps {
|
|
|
490
583
|
}
|
|
491
584
|
declare const SourceEditor: react.NamedExoticComponent<SourceEditorProps>;
|
|
492
585
|
|
|
493
|
-
/**
|
|
494
|
-
* Source Patcher — Maps visual property edits back to source HTML files.
|
|
495
|
-
* Handles inline style updates, attribute changes, and text content.
|
|
496
|
-
*/
|
|
497
|
-
interface PatchOperation {
|
|
498
|
-
type: "inline-style" | "attribute" | "text-content" | "html-attribute";
|
|
499
|
-
property: string;
|
|
500
|
-
value: string | null;
|
|
501
|
-
childSelector?: string;
|
|
502
|
-
childIndex?: number;
|
|
503
|
-
}
|
|
504
|
-
interface PatchTarget {
|
|
505
|
-
id?: string | null;
|
|
506
|
-
hfId?: string;
|
|
507
|
-
selector?: string;
|
|
508
|
-
selectorIndex?: number;
|
|
509
|
-
}
|
|
510
|
-
/**
|
|
511
|
-
* Find which source file contains an element by its ID.
|
|
512
|
-
*/
|
|
513
|
-
declare function resolveSourceFile(elementId: string | null, selector: string, files: Record<string, string>): string | null;
|
|
514
|
-
/**
|
|
515
|
-
* Apply a patch operation to an HTML source file.
|
|
516
|
-
*/
|
|
517
|
-
declare function applyPatch(html: string, elementId: string, op: PatchOperation): string;
|
|
518
|
-
|
|
519
586
|
interface DomEditCapabilities {
|
|
520
587
|
canSelect: boolean;
|
|
521
588
|
canEditStyles: boolean;
|
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-VsAbY3rl.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="/assets/index-Dq7FEg0K.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
12
12
|
<div data-hf-id="hf-aph5" id="root"></div>
|