@hyperframes/core 0.8.33 → 0.8.34
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/README.md +15 -0
- package/dist/compiler/externalScripts.d.ts +8 -0
- package/dist/compiler/externalScripts.d.ts.map +1 -0
- package/dist/compiler/externalScripts.js +34 -0
- package/dist/compiler/externalScripts.js.map +1 -0
- package/dist/compiler/htmlBundler.d.ts.map +1 -1
- package/dist/compiler/htmlBundler.js +75 -66
- package/dist/compiler/htmlBundler.js.map +1 -1
- package/dist/compiler/index.d.ts +1 -0
- package/dist/compiler/index.d.ts.map +1 -1
- package/dist/compiler/index.js +1 -0
- package/dist/compiler/index.js.map +1 -1
- package/dist/compiler/inlineSubCompositions.d.ts +3 -2
- package/dist/compiler/inlineSubCompositions.d.ts.map +1 -1
- package/dist/compiler/inlineSubCompositions.js +6 -1
- package/dist/compiler/inlineSubCompositions.js.map +1 -1
- package/dist/generated/position-edits-render-inline.js +1 -1
- package/dist/generated/position-edits-render-inline.js.map +1 -1
- package/dist/generated/runtime-inline.js +1 -1
- package/dist/generated/runtime-inline.js.map +1 -1
- package/dist/generators/hyperframes.d.ts +6 -0
- package/dist/generators/hyperframes.d.ts.map +1 -1
- package/dist/generators/hyperframes.js +118 -69
- package/dist/generators/hyperframes.js.map +1 -1
- package/dist/generators/richTextHtml.d.ts +3 -0
- package/dist/generators/richTextHtml.d.ts.map +1 -0
- package/dist/generators/richTextHtml.js +41 -0
- package/dist/generators/richTextHtml.js.map +1 -0
- package/dist/hyperframe.runtime.iife.js +29 -29
- package/dist/registry/types.d.ts +18 -1
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/registry/types.js.map +1 -1
- package/dist/runtime/applyVariableBindings.d.ts.map +1 -1
- package/dist/runtime/applyVariableBindings.js +2 -1
- package/dist/runtime/applyVariableBindings.js.map +1 -1
- package/dist/runtime/bridge.d.ts.map +1 -1
- package/dist/runtime/bridge.js +5 -3
- package/dist/runtime/bridge.js.map +1 -1
- package/dist/runtime/clipTree.d.ts.map +1 -1
- package/dist/runtime/clipTree.js +2 -1
- package/dist/runtime/clipTree.js.map +1 -1
- package/dist/runtime/domRealm.d.ts +66 -0
- package/dist/runtime/domRealm.d.ts.map +1 -0
- package/dist/runtime/domRealm.js +92 -0
- package/dist/runtime/domRealm.js.map +1 -0
- package/dist/runtime/mediaVolumeEnvelope.d.ts.map +1 -1
- package/dist/runtime/mediaVolumeEnvelope.js +22 -6
- package/dist/runtime/mediaVolumeEnvelope.js.map +1 -1
- package/dist/runtime/playbackRate.d.ts +11 -0
- package/dist/runtime/playbackRate.d.ts.map +1 -1
- package/dist/runtime/playbackRate.js +18 -1
- package/dist/runtime/playbackRate.js.map +1 -1
- package/dist/runtime/positionEdits.d.ts.map +1 -1
- package/dist/runtime/positionEdits.js +8 -18
- package/dist/runtime/positionEdits.js.map +1 -1
- package/dist/runtime/renderFrameSibling.d.ts.map +1 -1
- package/dist/runtime/renderFrameSibling.js +2 -1
- package/dist/runtime/renderFrameSibling.js.map +1 -1
- package/dist/runtime/startResolver.d.ts +1 -0
- package/dist/runtime/startResolver.d.ts.map +1 -1
- package/dist/runtime/startResolver.js +34 -10
- package/dist/runtime/startResolver.js.map +1 -1
- package/package.json +6 -6
- package/schemas/registry-item.json +6 -0
- package/dist/runtime/audioAutomationVolume.d.ts +0 -17
- package/dist/runtime/audioAutomationVolume.d.ts.map +0 -1
- package/dist/runtime/audioAutomationVolume.js +0 -49
- package/dist/runtime/audioAutomationVolume.js.map +0 -1
- package/dist/runtime/media.d.ts +0 -95
- package/dist/runtime/media.d.ts.map +0 -1
- package/dist/runtime/media.js +0 -434
- package/dist/runtime/media.js.map +0 -1
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
* emits position_edit_fold_skipped instead of double-applying).
|
|
25
25
|
*/
|
|
26
26
|
import { emitAnalyticsEvent } from "./analytics.js";
|
|
27
|
+
import { isStylableElement } from "./domRealm.js";
|
|
27
28
|
export const EDIT_BASE_X_ATTR = "data-hf-edit-base-x";
|
|
28
29
|
export const EDIT_BASE_Y_ATTR = "data-hf-edit-base-y";
|
|
29
30
|
export const EDIT_ORIGINAL_TRANSLATE_ATTR = "data-hf-edit-original-translate";
|
|
@@ -165,26 +166,15 @@ export function applyPositionEditToElement(el, opts) {
|
|
|
165
166
|
* longer matches and the non-forced path would silently skip the redo.
|
|
166
167
|
*/
|
|
167
168
|
export function applyPositionEdits(doc, opts) {
|
|
168
|
-
//
|
|
169
|
-
//
|
|
170
|
-
//
|
|
171
|
-
//
|
|
172
|
-
//
|
|
173
|
-
// `.style` when defaultView is unavailable (a detached/synthetic document).
|
|
174
|
-
const RealmHTMLElement = doc.defaultView?.HTMLElement;
|
|
175
|
-
const RealmSVGElement = doc.defaultView?.SVGElement;
|
|
176
|
-
// Stylable = HTML OR SVG element (SVG `<text>`/shapes are positioned via the same CSS `translate`
|
|
177
|
-
// longhand). The old HTML-only check silently dropped every SVG move. Cross-realm safe (uses the
|
|
178
|
-
// document's own realm constructors — see the note above); duck-type on `.style` when defaultView
|
|
179
|
-
// is unavailable.
|
|
180
|
-
const isStylable = (el) => RealmHTMLElement || RealmSVGElement
|
|
181
|
-
? (RealmHTMLElement !== undefined && el instanceof RealmHTMLElement) ||
|
|
182
|
-
(RealmSVGElement !== undefined && el instanceof RealmSVGElement)
|
|
183
|
-
: typeof el.style?.setProperty === "function";
|
|
169
|
+
// `isStylableElement` covers HTML **and** SVG (SVG `<text>`/shapes are positioned via the same
|
|
170
|
+
// CSS `translate` longhand; an HTML-only check silently dropped every SVG move), and it is
|
|
171
|
+
// realm-independent, which this needs to be twice over: `doc` is frequently an iframe's document
|
|
172
|
+
// (the SDK's edit preview, a host embedding a composition), AND its elements are not necessarily
|
|
173
|
+
// from that iframe's realm either — see domRealm.ts.
|
|
184
174
|
const orphaned = doc.querySelectorAll(`[${EDIT_ORIGINAL_TRANSLATE_ATTR}]:not([${EDIT_BASE_X_ATTR}]):not([${EDIT_BASE_Y_ATTR}])`);
|
|
185
175
|
for (let i = 0; i < orphaned.length; i++) {
|
|
186
176
|
const el = orphaned[i];
|
|
187
|
-
if (el === undefined || !
|
|
177
|
+
if (el === undefined || !isStylableElement(el))
|
|
188
178
|
continue;
|
|
189
179
|
const original = el.getAttribute(EDIT_ORIGINAL_TRANSLATE_ATTR) ?? "";
|
|
190
180
|
if (original === "") {
|
|
@@ -200,7 +190,7 @@ export function applyPositionEdits(doc, opts) {
|
|
|
200
190
|
let applied = 0;
|
|
201
191
|
for (let i = 0; i < marked.length; i++) {
|
|
202
192
|
const el = marked[i];
|
|
203
|
-
if (el === undefined || !
|
|
193
|
+
if (el === undefined || !isStylableElement(el))
|
|
204
194
|
continue;
|
|
205
195
|
applyPositionEditToElement(el, opts);
|
|
206
196
|
applied += 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"positionEdits.js","sourceRoot":"","sources":["../../src/runtime/positionEdits.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,2EAA2E;AAC3E,4EAA4E;AAC5E,oEAAoE;AACpE;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"positionEdits.js","sourceRoot":"","sources":["../../src/runtime/positionEdits.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderFrameSibling.d.ts","sourceRoot":"","sources":["../../src/runtime/renderFrameSibling.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;
|
|
1
|
+
{"version":3,"file":"renderFrameSibling.d.ts","sourceRoot":"","sources":["../../src/runtime/renderFrameSibling.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAE/D;AAED;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,oBAAoB,CAAC;AACxD,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C,wEAAwE;AACxE,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,sEAAsE;AACtE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAGlE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,GAAG,IAAI,CAK/E"}
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
* sides follow, and its format is pinned by test.
|
|
17
17
|
*/
|
|
18
18
|
import { MEDIA_RENDER_ID_ATTR } from "../compiler/mediaRenderIds.js";
|
|
19
|
+
import { isImageElement } from "./domRealm.js";
|
|
19
20
|
/**
|
|
20
21
|
* The render id an element is addressed by: its stamped, document-unique id
|
|
21
22
|
* when the producer compiled this document, else its author id. The two are
|
|
@@ -50,6 +51,6 @@ export function findInjectedRenderFrame(media) {
|
|
|
50
51
|
if (!frameId)
|
|
51
52
|
return null;
|
|
52
53
|
const frame = document.getElementById(frameId);
|
|
53
|
-
return frame
|
|
54
|
+
return isImageElement(frame) ? frame : null;
|
|
54
55
|
}
|
|
55
56
|
//# sourceMappingURL=renderFrameSibling.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderFrameSibling.js","sourceRoot":"","sources":["../../src/runtime/renderFrameSibling.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"renderFrameSibling.js","sourceRoot":"","sources":["../../src/runtime/renderFrameSibling.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,KAAK,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;AACxD,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAE3C,wEAAwE;AACxE,MAAM,UAAU,wBAAwB,CAAC,QAAgB;IACvD,OAAO,GAAG,sBAAsB,GAAG,QAAQ,GAAG,sBAAsB,EAAE,CAAC;AACzE,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC1C,OAAO,QAAQ,CAAC,CAAC,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,MAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC/C,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC"}
|
|
@@ -12,6 +12,7 @@ export declare function createRuntimeStartTimeResolver(params: {
|
|
|
12
12
|
}): {
|
|
13
13
|
resolveStartForElement: (element: Element, fallback?: number) => number;
|
|
14
14
|
resolveDurationForElement: (element: Element) => number | null;
|
|
15
|
+
resolveMediaStartForElement: (element: Element) => number;
|
|
15
16
|
};
|
|
16
17
|
export type { RuntimeTimelineLike } from "./types";
|
|
17
18
|
//# sourceMappingURL=startResolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startResolver.d.ts","sourceRoot":"","sources":["../../src/runtime/startResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"startResolver.d.ts","sourceRoot":"","sources":["../../src/runtime/startResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAenD,wBAAgB,8BAA8B,CAAC,MAAM,EAAE;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,GAAG,SAAS,CAAC,CAAC;IACnE,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,QAAQ,CAAC;CACxB,GAAG;IACF,sBAAsB,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACxE,yBAAyB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,GAAG,IAAI,CAAC;IAC/D,2BAA2B,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC;CAC3D,CAuLA;AAED,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { swallow } from "./diagnostics.js";
|
|
2
2
|
import { resolveAuthoredTimingWindow } from "./authoredTiming.js";
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
// Straight from playbackRate, not through media.ts's re-export: media.ts
|
|
4
|
+
// imports mediaVolumeEnvelope, which needs this resolver, and the round trip
|
|
5
|
+
// would be an import cycle.
|
|
6
|
+
import { parseStrictFiniteTimingNumber, readElementPlaybackRate, readMediaStart, } from "./playbackRate.js";
|
|
7
|
+
import { isMediaElement } from "./domRealm.js";
|
|
5
8
|
import { parseStartExpression } from "./startExpression.js";
|
|
9
|
+
import { MEDIA_START_BASIS_ATTR, resolveAbsoluteMediaStartSeconds } from "../mediaTiming.js";
|
|
6
10
|
export function createRuntimeStartTimeResolver(params) {
|
|
7
11
|
const timelineRegistry = params.timelineRegistry ?? {};
|
|
8
12
|
const includeAuthoredTimingAttrs = params.includeAuthoredTimingAttrs ?? false;
|
|
@@ -16,14 +20,6 @@ export function createRuntimeStartTimeResolver(params) {
|
|
|
16
20
|
return byId;
|
|
17
21
|
return (doc.querySelector(`[data-composition-id="${CSS.escape(refId)}"]`) ?? null);
|
|
18
22
|
};
|
|
19
|
-
// Realm-safe: an iframe document's media elements are instances of THAT
|
|
20
|
-
// frame's HTMLMediaElement, never this module's global one.
|
|
21
|
-
const isMediaElement = (el) => {
|
|
22
|
-
const RealmMedia = el.ownerDocument.defaultView?.HTMLMediaElement;
|
|
23
|
-
if (RealmMedia)
|
|
24
|
-
return el instanceof RealmMedia;
|
|
25
|
-
return typeof HTMLMediaElement !== "undefined" && el instanceof HTMLMediaElement;
|
|
26
|
-
};
|
|
27
23
|
const resolveDurationForElement = (element) => {
|
|
28
24
|
const cached = durationCache.get(element);
|
|
29
25
|
if (cached !== undefined)
|
|
@@ -157,9 +153,37 @@ export function createRuntimeStartTimeResolver(params) {
|
|
|
157
153
|
visiting.delete(element);
|
|
158
154
|
}
|
|
159
155
|
};
|
|
156
|
+
/**
|
|
157
|
+
* The ONE owner of "when does this media element start on the root timeline".
|
|
158
|
+
*
|
|
159
|
+
* A media element is not a plain timed clip: `data-hf-media-start-basis`
|
|
160
|
+
* decides whether its `data-start` is composition-local (the default, so the
|
|
161
|
+
* host offset is added) or a legacy root-global timestamp (already absolute,
|
|
162
|
+
* so adding the host offset double-counts it). Anything that derives a media
|
|
163
|
+
* start from attributes — the clip manifest, the visibility pass, the media
|
|
164
|
+
* cache, WebAudio scheduling — must come through here, or the timeline the
|
|
165
|
+
* editor draws stops matching the timeline that plays.
|
|
166
|
+
*/
|
|
167
|
+
const resolveMediaStartForElement = (element) => {
|
|
168
|
+
const compositionRoot = element.closest("[data-composition-id]");
|
|
169
|
+
const hostStart = compositionRoot ? resolveStartForElementInternal(compositionRoot, 0) : 0;
|
|
170
|
+
const authoredStart = parseStrictFiniteTimingNumber(element.getAttribute("data-start"));
|
|
171
|
+
// No literal start (absent, or a `data-start="intro + 2"` reference), an
|
|
172
|
+
// auto-injected start, or a host at t=0 — nothing for the basis to
|
|
173
|
+
// disambiguate, so the ordinary start resolution is already correct.
|
|
174
|
+
if (element.hasAttribute("data-hf-auto-start") || authoredStart == null || hostStart <= 0) {
|
|
175
|
+
return resolveStartForElementInternal(element, hostStart);
|
|
176
|
+
}
|
|
177
|
+
return resolveAbsoluteMediaStartSeconds({
|
|
178
|
+
authoredStart,
|
|
179
|
+
hostStart,
|
|
180
|
+
basis: element.getAttribute(MEDIA_START_BASIS_ATTR),
|
|
181
|
+
});
|
|
182
|
+
};
|
|
160
183
|
return {
|
|
161
184
|
resolveStartForElement: (element, fallback = 0) => resolveStartForElementInternal(element, Math.max(0, fallback)),
|
|
162
185
|
resolveDurationForElement: (element) => resolveDurationForElement(element),
|
|
186
|
+
resolveMediaStartForElement,
|
|
163
187
|
};
|
|
164
188
|
}
|
|
165
189
|
//# sourceMappingURL=startResolver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startResolver.js","sourceRoot":"","sources":["../../src/runtime/startResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"startResolver.js","sourceRoot":"","sources":["../../src/runtime/startResolver.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyperframes/core",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.34",
|
|
4
4
|
"description": "",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -282,18 +282,18 @@
|
|
|
282
282
|
"bpm-detective": "^2.0.5",
|
|
283
283
|
"linkedom": "^0.18.12",
|
|
284
284
|
"postcss": "^8.5.8",
|
|
285
|
-
"@hyperframes/lint": "0.8.
|
|
286
|
-
"@hyperframes/studio-server": "0.8.
|
|
287
|
-
"@hyperframes/parsers": "0.8.
|
|
285
|
+
"@hyperframes/lint": "0.8.34",
|
|
286
|
+
"@hyperframes/studio-server": "0.8.34",
|
|
287
|
+
"@hyperframes/parsers": "0.8.34"
|
|
288
288
|
},
|
|
289
289
|
"devDependencies": {
|
|
290
290
|
"@types/jsdom": "^28.0.0",
|
|
291
291
|
"@types/node": "^25.0.10",
|
|
292
|
-
"@vitest/coverage-v8": "^
|
|
292
|
+
"@vitest/coverage-v8": "^4.1.11",
|
|
293
293
|
"jsdom": "^29.0.0",
|
|
294
294
|
"tsx": "^4.21.0",
|
|
295
295
|
"typescript": "^5.0.0",
|
|
296
|
-
"vitest": "^
|
|
296
|
+
"vitest": "^4.1.11"
|
|
297
297
|
},
|
|
298
298
|
"optionalDependencies": {
|
|
299
299
|
"esbuild": "^0.25.12"
|
|
@@ -92,6 +92,12 @@
|
|
|
92
92
|
"minLength": 1,
|
|
93
93
|
"description": "Source path, relative to registry-item.json."
|
|
94
94
|
},
|
|
95
|
+
"url": {
|
|
96
|
+
"type": "string",
|
|
97
|
+
"format": "uri",
|
|
98
|
+
"pattern": "^https://",
|
|
99
|
+
"description": "Absolute https:// URL the bytes are fetched from, instead of <registry base>/<type dir>/<item>/<path>. Used for CDN-hosted binary assets so the registry stays text-only; `path` still says where the file lands relative to the item."
|
|
100
|
+
},
|
|
95
101
|
"target": {
|
|
96
102
|
"type": "string",
|
|
97
103
|
"minLength": 1,
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The volume lane's gain for an element at a moment in its clip.
|
|
3
|
-
*
|
|
4
|
-
* Volume is not scheduled onto the gain AudioParam the way FX parameters are.
|
|
5
|
-
* The runtime rewrites that gain every tick from `data-volume` and the GSAP
|
|
6
|
-
* seeked value, which would erase a scheduled envelope within a frame — so the
|
|
7
|
-
* lane feeds the same per-tick path the probed `volumeKeyframes` already use,
|
|
8
|
-
* and the render still bakes it into the samples.
|
|
9
|
-
*/
|
|
10
|
-
/**
|
|
11
|
-
* Gain the lane asks for at `relTime` clip-local seconds, or null when the
|
|
12
|
-
* element has no volume lane and the caller should fall back to its own rules.
|
|
13
|
-
*/
|
|
14
|
-
export declare function elementVolumeLaneGain(el: {
|
|
15
|
-
getAttribute?(name: string): string | null;
|
|
16
|
-
}, relTime: number): number | null;
|
|
17
|
-
//# sourceMappingURL=audioAutomationVolume.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"audioAutomationVolume.d.ts","sourceRoot":"","sources":["../../src/runtime/audioAutomationVolume.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiCH;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE;IAAE,YAAY,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;CAAE,EAClD,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,IAAI,CAQf"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The volume lane's gain for an element at a moment in its clip.
|
|
3
|
-
*
|
|
4
|
-
* Volume is not scheduled onto the gain AudioParam the way FX parameters are.
|
|
5
|
-
* The runtime rewrites that gain every tick from `data-volume` and the GSAP
|
|
6
|
-
* seeked value, which would erase a scheduled envelope within a frame — so the
|
|
7
|
-
* lane feeds the same per-tick path the probed `volumeKeyframes` already use,
|
|
8
|
-
* and the render still bakes it into the samples.
|
|
9
|
-
*/
|
|
10
|
-
import { HF_AUDIO_AUTOMATION_ATTR, parseAutomation, sampleAutomationLane, VOLUME_TARGET, } from "../audioAutomation.js";
|
|
11
|
-
/**
|
|
12
|
-
* Parsed lanes by the attribute text they came from. Reparsing on every tick
|
|
13
|
-
* would run the JSON parser 60 times a second per track for a value that only
|
|
14
|
-
* changes when the author edits it.
|
|
15
|
-
*/
|
|
16
|
-
const cache = new Map();
|
|
17
|
-
const CACHE_LIMIT = 64;
|
|
18
|
-
function laneFromAttr(raw) {
|
|
19
|
-
const hit = cache.get(raw);
|
|
20
|
-
if (hit !== undefined)
|
|
21
|
-
return hit;
|
|
22
|
-
let lane = null;
|
|
23
|
-
try {
|
|
24
|
-
lane = parseAutomation(raw).lanes.find((l) => l.target === VOLUME_TARGET) ?? null;
|
|
25
|
-
}
|
|
26
|
-
catch {
|
|
27
|
-
// Unreadable automation plays the track flat rather than silencing it.
|
|
28
|
-
lane = null;
|
|
29
|
-
}
|
|
30
|
-
if (cache.size > CACHE_LIMIT)
|
|
31
|
-
cache.clear();
|
|
32
|
-
cache.set(raw, lane);
|
|
33
|
-
return lane;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Gain the lane asks for at `relTime` clip-local seconds, or null when the
|
|
37
|
-
* element has no volume lane and the caller should fall back to its own rules.
|
|
38
|
-
*/
|
|
39
|
-
export function elementVolumeLaneGain(el, relTime) {
|
|
40
|
-
const raw = (typeof el.getAttribute === "function" ? el.getAttribute(HF_AUDIO_AUTOMATION_ATTR) : null) ??
|
|
41
|
-
"";
|
|
42
|
-
if (!raw)
|
|
43
|
-
return null;
|
|
44
|
-
const lane = laneFromAttr(raw);
|
|
45
|
-
if (!lane || lane.points.length === 0)
|
|
46
|
-
return null;
|
|
47
|
-
return sampleAutomationLane(lane, relTime);
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=audioAutomationVolume.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"audioAutomationVolume.js","sourceRoot":"","sources":["../../src/runtime/audioAutomationVolume.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,wBAAwB,EACxB,eAAe,EACf,oBAAoB,EACpB,aAAa,GAEd,MAAM,uBAAuB,CAAC;AAE/B;;;;GAIG;AACH,MAAM,KAAK,GAAG,IAAI,GAAG,EAAmC,CAAC;AACzD,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB,SAAS,YAAY,CAAC,GAAW;IAC/B,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IAClC,IAAI,IAAI,GAA4B,IAAI,CAAC;IACzC,IAAI,CAAC;QACH,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,IAAI,IAAI,CAAC;IACpF,CAAC;IAAC,MAAM,CAAC;QACP,uEAAuE;QACvE,IAAI,GAAG,IAAI,CAAC;IACd,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,GAAG,WAAW;QAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IAC5C,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACrB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,EAAkD,EAClD,OAAe;IAEf,MAAM,GAAG,GACP,CAAC,OAAO,EAAE,CAAC,YAAY,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1F,EAAE,CAAC;IACL,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,OAAO,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC"}
|
package/dist/runtime/media.d.ts
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { type VolumeKeyframe } from "./mediaVolumeEnvelope.js";
|
|
2
|
-
export { readElementPlaybackRate, resolveNaturalMediaTimelineDuration } from "./playbackRate.js";
|
|
3
|
-
export declare function readElementPlaybackStart(el: Element): number;
|
|
4
|
-
/**
|
|
5
|
-
* Resolve a media element's timeline window without conflating a video's
|
|
6
|
-
* authored display slot with the amount of source left to decode.
|
|
7
|
-
*
|
|
8
|
-
* An explicit video slot may outlive its source and holds the final frame.
|
|
9
|
-
* Audio remains source-bounded because it has no visual hold state.
|
|
10
|
-
*/
|
|
11
|
-
export declare function resolveRuntimeMediaClipDuration(params: {
|
|
12
|
-
isVideo: boolean;
|
|
13
|
-
sourceDuration: number | null;
|
|
14
|
-
hostRemaining: number | null;
|
|
15
|
-
explicitDuration: number | null;
|
|
16
|
-
}): number | null;
|
|
17
|
-
export type RuntimeMediaClip = {
|
|
18
|
-
el: HTMLVideoElement | HTMLAudioElement;
|
|
19
|
-
start: number;
|
|
20
|
-
mediaStart: number;
|
|
21
|
-
duration: number;
|
|
22
|
-
end: number;
|
|
23
|
-
volume: number | null;
|
|
24
|
-
playbackRate: number;
|
|
25
|
-
loop: boolean;
|
|
26
|
-
/** Source media duration in seconds (from el.duration). Used for loop wrapping. */
|
|
27
|
-
sourceDuration: number | null;
|
|
28
|
-
/**
|
|
29
|
-
* Probed volume keyframes from the GSAP timeline (same probe the renderer
|
|
30
|
-
* uses). When present, `syncRuntimeMedia` drives volume from the envelope
|
|
31
|
-
* rather than from `data-volume` + GSAP-change tracking, eliminating the
|
|
32
|
-
* race between the 60 Hz transport tick and GSAP's own seek.
|
|
33
|
-
*/
|
|
34
|
-
volumeKeyframes?: VolumeKeyframe[];
|
|
35
|
-
};
|
|
36
|
-
export declare function refreshRuntimeMediaCache(params?: {
|
|
37
|
-
resolveStartSeconds?: (element: Element) => number;
|
|
38
|
-
resolveDurationSeconds?: (element: HTMLVideoElement | HTMLAudioElement) => number | null;
|
|
39
|
-
shouldIncludeElement?: (element: HTMLVideoElement | HTMLAudioElement) => boolean;
|
|
40
|
-
}): {
|
|
41
|
-
timedMediaEls: Array<HTMLVideoElement | HTMLAudioElement>;
|
|
42
|
-
mediaClips: RuntimeMediaClip[];
|
|
43
|
-
videoClips: RuntimeMediaClip[];
|
|
44
|
-
maxMediaEnd: number;
|
|
45
|
-
};
|
|
46
|
-
/**
|
|
47
|
-
* Drop every per-source sync baseline tracked for `el` — offset drift
|
|
48
|
-
* samples, the seek-past-buffered-range retry latch, and the last
|
|
49
|
-
* runtime-applied volume — so the next `syncRuntimeMedia` tick treats it as
|
|
50
|
-
* a first tick (hard resync, fresh drift baseline) instead of comparing
|
|
51
|
-
* against state computed for a different file. Used both when a clip leaves
|
|
52
|
-
* its active window (below) and by the runtime's proxy-swap helper
|
|
53
|
-
* (mediaProxy.ts) right after an in-place `src` swap, which points the same
|
|
54
|
-
* element at a different file without ever leaving its active window.
|
|
55
|
-
*/
|
|
56
|
-
export declare function evictMediaSyncState(el: HTMLMediaElement): void;
|
|
57
|
-
/** Test-only seam: whether any per-source sync state is still tracked for `el`. */
|
|
58
|
-
export declare function hasMediaSyncStateForTest(el: HTMLMediaElement): boolean;
|
|
59
|
-
export declare function syncRuntimeMedia(params: {
|
|
60
|
-
clips: RuntimeMediaClip[];
|
|
61
|
-
timeSeconds: number;
|
|
62
|
-
playing: boolean;
|
|
63
|
-
playbackRate: number;
|
|
64
|
-
/** Force-mute every element (parent-frame proxy owns all audio). Asserted per
|
|
65
|
-
* tick so sub-composition media added mid-playback inherits the silence. */
|
|
66
|
-
outputMuted?: boolean;
|
|
67
|
-
/**
|
|
68
|
-
* User's explicit mute preference (set via `onSetMuted`). Symmetric to
|
|
69
|
-
* `outputMuted` — also asserted per tick — so a sub-composition that
|
|
70
|
-
* activates after the user mutes doesn't briefly play at author volume
|
|
71
|
-
* before the next bridge message lands.
|
|
72
|
-
*/
|
|
73
|
-
userMuted?: boolean;
|
|
74
|
-
/**
|
|
75
|
-
* User's volume preference (0–1, set via `onSetVolume`). Multiplied with the
|
|
76
|
-
* per-clip author volume so `data-volume="0.5"` at user volume 0.8 yields 0.4.
|
|
77
|
-
*/
|
|
78
|
-
userVolume?: number;
|
|
79
|
-
/**
|
|
80
|
-
* Invoked at most once when a media element's `play()` promise rejects with
|
|
81
|
-
* `NotAllowedError`. The caller is expected to latch and post a single
|
|
82
|
-
* outbound message; further invocations are suppressed by the caller.
|
|
83
|
-
*/
|
|
84
|
-
onAutoplayBlocked?: () => void;
|
|
85
|
-
onElementVolume?: (el: HTMLMediaElement, effectiveVolume: number, authorVolume: number) => void;
|
|
86
|
-
/** Is THIS element owned by the Web Audio transport? Owned → mute it (transport
|
|
87
|
-
* plays it); not owned → leave audible (HTMLMedia fallback). Per-element, not a
|
|
88
|
-
* global flag, so a not-yet-claimed track isn't muted by other tracks. */
|
|
89
|
-
isWebAudioOwned?: (el: HTMLMediaElement) => boolean;
|
|
90
|
-
/** Native media routed through WebAudio keeps its upstream element volume at
|
|
91
|
-
* unity; do not mistake that transport write for an authored volume edit. */
|
|
92
|
-
isWebAudioRouted?: (el: HTMLMediaElement) => boolean;
|
|
93
|
-
forceSync?: boolean;
|
|
94
|
-
}): void;
|
|
95
|
-
//# sourceMappingURL=media.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/runtime/media.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAMtF,OAAO,EAAE,uBAAuB,EAAE,mCAAmC,EAAE,MAAM,mBAAmB,CAAC;AAEjG,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,CAE5D;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,MAAM,EAAE;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,GAAG,MAAM,GAAG,IAAI,CAUhB;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,gBAAgB,GAAG,gBAAgB,CAAC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,mFAAmF;IACnF,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;CACpC,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,MAAM,CAAC,EAAE;IAChD,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC;IACnD,sBAAsB,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB,KAAK,MAAM,GAAG,IAAI,CAAC;IACzF,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB,KAAK,OAAO,CAAC;CAClF,GAAG;IACF,aAAa,EAAE,KAAK,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,CAAC;IAC1D,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;CACrB,CA6CA;AAmDD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,gBAAgB,GAAG,IAAI,CAM9D;AAED,mFAAmF;AACnF,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAQtE;AAGD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IACvC,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB;iFAC6E;IAC7E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAChG;;+EAE2E;IAC3E,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,gBAAgB,KAAK,OAAO,CAAC;IACpD;iFAC6E;IAC7E,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,gBAAgB,KAAK,OAAO,CAAC;IACrD,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,IAAI,CA6RP"}
|