@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
package/dist/registry/types.d.ts
CHANGED
|
@@ -4,8 +4,25 @@ export type ItemType = "hyperframes:example" | "hyperframes:block" | "hyperframe
|
|
|
4
4
|
export type FileType = "hyperframes:composition" | "hyperframes:asset" | "hyperframes:snippet" | "hyperframes:style" | "hyperframes:timeline";
|
|
5
5
|
/** A single file to install as part of a registry item. */
|
|
6
6
|
export interface FileTarget {
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Path to the source file, relative to the item's `registry-item.json`.
|
|
9
|
+
* Stays the file's identity even when the bytes live off-repo: it is what an
|
|
10
|
+
* installed composition references, and what `url` replaces only the source
|
|
11
|
+
* of.
|
|
12
|
+
*/
|
|
8
13
|
path: string;
|
|
14
|
+
/**
|
|
15
|
+
* Absolute `https://` URL the bytes are fetched from, instead of
|
|
16
|
+
* `<registry base>/<type dir>/<item>/<path>`.
|
|
17
|
+
*
|
|
18
|
+
* Binary assets are the one thing a repository-backed registry carries
|
|
19
|
+
* badly: every revision of a 100 KB JPEG is permanent, and a block shipping
|
|
20
|
+
* two dozen of them costs more history than every composition in the
|
|
21
|
+
* registry combined. Hosting them keeps the repository text-only. `path`
|
|
22
|
+
* still says where the file lands relative to the item, so nothing that
|
|
23
|
+
* reads an installed composition can tell the difference.
|
|
24
|
+
*/
|
|
25
|
+
url?: string;
|
|
9
26
|
/** Destination path in the user's project, relative to the project root. */
|
|
10
27
|
target: string;
|
|
11
28
|
/** File type — controls how the installer treats this file. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"AAGA,oDAAoD;AACpD,MAAM,MAAM,QAAQ,GAAG,qBAAqB,GAAG,mBAAmB,GAAG,uBAAuB,CAAC;AAE7F,4DAA4D;AAC5D,MAAM,MAAM,QAAQ,GAChB,yBAAyB,GACzB,mBAAmB,GACnB,qBAAqB,GACrB,mBAAmB,GACnB,sBAAsB,CAAC;AAE3B,2DAA2D;AAC3D,MAAM,WAAW,UAAU;IACzB
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,0EAA0E;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applyVariableBindings.d.ts","sourceRoot":"","sources":["../../src/runtime/applyVariableBindings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;
|
|
1
|
+
{"version":3,"file":"applyVariableBindings.d.ts","sourceRoot":"","sources":["../../src/runtime/applyVariableBindings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAwBH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtD;AAsFD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CA8BzD"}
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
*/
|
|
29
29
|
import { readVariablesForElement } from "./variableScope.js";
|
|
30
30
|
import { isScalarVariableValue as isScalar, isSafeMediaUrl, } from "@hyperframes/parsers/composition";
|
|
31
|
+
import { isHtmlElement } from "./domRealm.js";
|
|
31
32
|
// data-var-src only rebinds media `src` on media elements. A user-controlled
|
|
32
33
|
// variable value assigned to a src is an XSS surface on tags whose src executes
|
|
33
34
|
// (`<iframe src="javascript:…">`, `<script src="data:…">`, `<embed>`), so the
|
|
@@ -129,7 +130,7 @@ function applyCssCustomProperties(doc, cache) {
|
|
|
129
130
|
const values = valuesForElement(root, cache);
|
|
130
131
|
for (const [id, value] of Object.entries(values)) {
|
|
131
132
|
const css = cssValueFor(value);
|
|
132
|
-
if (css !== null && root
|
|
133
|
+
if (css !== null && isHtmlElement(root)) {
|
|
133
134
|
root.style.setProperty(`--${id}`, sanitizeCssValue(css));
|
|
134
135
|
}
|
|
135
136
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applyVariableBindings.js","sourceRoot":"","sources":["../../src/runtime/applyVariableBindings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EACL,qBAAqB,IAAI,QAAQ,EACjC,cAAc,GACf,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"applyVariableBindings.js","sourceRoot":"","sources":["../../src/runtime/applyVariableBindings.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/runtime/bridge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAA+B,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAQnF,KAAK,UAAU,GAAG;IAChB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,MAAM,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,KAAK,IAAI,CAAC;IACnE,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,qBAAqB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,4BAA4B,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1D,0BAA0B,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IACxD,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,iBAAiB,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,iBAAiB,EAAE,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5F,wBAAwB,EAAE,CACxB,MAAM,EAAE,oBAAoB,GAAG,MAAM,GAAG,IAAI,EAC5C,OAAO,EAAE,OAAO,KACb,IAAI,CAAC;IACV,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACnF,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACnE,eAAe,EAAE,MAAM,MAAM,CAAC;CAC/B,CAAC;AAIF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEvD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAOxE;
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/runtime/bridge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAA+B,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAQnF,KAAK,UAAU,GAAG;IAChB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,MAAM,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,KAAK,IAAI,CAAC;IACnE,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,qBAAqB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,4BAA4B,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1D,0BAA0B,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IACxD,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,iBAAiB,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,iBAAiB,EAAE,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5F,wBAAwB,EAAE,CACxB,MAAM,EAAE,oBAAoB,GAAG,MAAM,GAAG,IAAI,EAC5C,OAAO,EAAE,OAAO,KACb,IAAI,CAAC;IACV,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACnF,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACnE,eAAe,EAAE,MAAM,MAAM,CAAC;CAC/B,CAAC;AAIF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEvD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAOxE;AA8ED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,UAAU,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAmB3F"}
|
package/dist/runtime/bridge.js
CHANGED
|
@@ -16,7 +16,7 @@ export function postRuntimeMessage(payload) {
|
|
|
16
16
|
// Per-action dispatchers. Splitting the handler into a lookup table keeps the
|
|
17
17
|
// top-level message listener trivial (one map lookup), and each action's logic
|
|
18
18
|
// becomes individually testable / inheritable for fallow's CRAP analysis.
|
|
19
|
-
const CONTROL_HANDLERS = {
|
|
19
|
+
const CONTROL_HANDLERS = new Map(Object.entries({
|
|
20
20
|
play: (_d, deps) => deps.onPlay(),
|
|
21
21
|
pause: (_d, deps) => deps.onPause(),
|
|
22
22
|
"stop-media": (_d, deps) => deps.onStopMedia(),
|
|
@@ -42,7 +42,7 @@ const CONTROL_HANDLERS = {
|
|
|
42
42
|
if (typeof data.channel === "string")
|
|
43
43
|
deps.onClearRuntimeData?.(data.channel, data.requestId);
|
|
44
44
|
},
|
|
45
|
-
};
|
|
45
|
+
}));
|
|
46
46
|
function resolveSeekTimeSeconds(data, deps) {
|
|
47
47
|
const explicitSeconds = Number(data.timeSeconds);
|
|
48
48
|
if (Number.isFinite(explicitSeconds))
|
|
@@ -78,6 +78,8 @@ function handleFlashElements(data) {
|
|
|
78
78
|
}
|
|
79
79
|
export function installRuntimeControlBridge(deps) {
|
|
80
80
|
const handler = (event) => {
|
|
81
|
+
if (event.source !== window.parent && event.source !== window)
|
|
82
|
+
return;
|
|
81
83
|
const data = event.data;
|
|
82
84
|
if (!data || data.source !== "hf-parent" || data.type !== "control")
|
|
83
85
|
return;
|
|
@@ -86,7 +88,7 @@ export function installRuntimeControlBridge(deps) {
|
|
|
86
88
|
const action = data.action;
|
|
87
89
|
if (typeof action !== "string")
|
|
88
90
|
return;
|
|
89
|
-
const fn = CONTROL_HANDLERS
|
|
91
|
+
const fn = CONTROL_HANDLERS.get(action);
|
|
90
92
|
if (fn)
|
|
91
93
|
fn(data, deps);
|
|
92
94
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/runtime/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,GAExB,MAAM,YAAY,CAAC;AA2BpB,IAAI,kBAAkB,GAAG,EAAE,CAAC;AAE5B,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,kBAAkB,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAA+B;IAChE,IAAI,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,uBAAuB,CAAC,kBAAkB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACjG,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,0EAA0E;QAC1E,OAAO,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;AACH,CAAC;AAKD,8EAA8E;AAC9E,+EAA+E;AAC/E,0EAA0E;AAC1E,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/runtime/bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clipTree.d.ts","sourceRoot":"","sources":["../../src/runtime/clipTree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"clipTree.d.ts","sourceRoot":"","sources":["../../src/runtime/clipTree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAInD,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,SAAS,QAAQ,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;CACrC;AAaD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAEvD;AAED,UAAU,iBAAiB;IACzB,sBAAsB,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CACzE;AAoDD,wBAAgB,cAAc,CAAC,MAAM,EAAE;IACrC,aAAa,EAAE,iBAAiB,CAAC;IACjC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,GAAG,SAAS,CAAC,CAAC;IAClE,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,QAAQ,CAyBX"}
|
package/dist/runtime/clipTree.js
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* absolute start) when a caller needs them.
|
|
11
11
|
*/
|
|
12
12
|
import { parseStrictFiniteTimingNumber, resolveNaturalMediaTimelineDuration } from "./playbackRate.js";
|
|
13
|
+
import { isMediaElement } from "./domRealm.js";
|
|
13
14
|
const DECORATIVE_TAGS = new Set(["SCRIPT", "STYLE", "LINK", "META", "TEMPLATE", "NOSCRIPT"]);
|
|
14
15
|
/**
|
|
15
16
|
* Stable identity for a timed element, shared by __clipTree and __clipManifest
|
|
@@ -33,7 +34,7 @@ function durationFromTimeline(el, registry) {
|
|
|
33
34
|
return Number.isFinite(d) && d > 0 ? d : null;
|
|
34
35
|
}
|
|
35
36
|
function durationFromMedia(el) {
|
|
36
|
-
if (!(el
|
|
37
|
+
if (!isMediaElement(el) || !Number.isFinite(el.duration))
|
|
37
38
|
return null;
|
|
38
39
|
return resolveNaturalMediaTimelineDuration(el, el.duration);
|
|
39
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clipTree.js","sourceRoot":"","sources":["../../src/runtime/clipTree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,6BAA6B,EAAE,mCAAmC,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"clipTree.js","sourceRoot":"","sources":["../../src/runtime/clipTree.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Realm-independent "what kind of node is this" tests for composition DOM.
|
|
3
|
+
*
|
|
4
|
+
* THE INVARIANT: the runtime never assumes the composition DOM was built by the
|
|
5
|
+
* same JavaScript realm the runtime is running in. It asks what a node IS (node
|
|
6
|
+
* type, namespace, tag name), never which window's constructor made it.
|
|
7
|
+
*
|
|
8
|
+
* Why that matters. `node instanceof HTMLElement` compares against the
|
|
9
|
+
* `HTMLElement` of the realm this module was loaded into, so it answers "which
|
|
10
|
+
* window built this node", not "what is this node". One document can hold
|
|
11
|
+
* elements from several realms at once, and a node keeps the prototype chain of
|
|
12
|
+
* whichever realm created it however it got there.
|
|
13
|
+
*
|
|
14
|
+
* MEASURED, in the Studio preview, on some loads: `<html>`, `<head>` and
|
|
15
|
+
* `<script>` carry the preview frame's prototypes while `<body>` and every
|
|
16
|
+
* element under it carry the editor window's. Tagging each realm's
|
|
17
|
+
* `Element.prototype` before any page script ran and reading the tag back off
|
|
18
|
+
* the live nodes is how that was established. NOT established: how the nodes
|
|
19
|
+
* come to be there. No `adoptNode`, `importNode` or `document.write` call was
|
|
20
|
+
* caught doing it, and the frame is populated by `src`/`srcdoc`, so treat the
|
|
21
|
+
* mechanism as an open question and the mixed realms as a fact.
|
|
22
|
+
*
|
|
23
|
+
* Either way `instanceof` does not throw and does not warn. It just returns
|
|
24
|
+
* false, forever, for every element in the composition, and every guard written
|
|
25
|
+
* as `if (!(node instanceof HTMLElement)) continue;` silently skips the whole
|
|
26
|
+
* document. A whole pass goes dark with no error: the timed-element visibility
|
|
27
|
+
* pass stops writing, so every scene paints on top of every other.
|
|
28
|
+
*
|
|
29
|
+
* `doc.defaultView.HTMLElement` is not a sufficient repair, which is why this
|
|
30
|
+
* module replaced two hand-rolled attempts at it. It fixes the case where the
|
|
31
|
+
* nodes belong to the document's own realm and still fails when they belong to
|
|
32
|
+
* a third one. A structural test has no such case to get wrong.
|
|
33
|
+
*
|
|
34
|
+
* Scope of ownership: these predicates own the RUNTIME's answer to "what kind of
|
|
35
|
+
* node is this", for HTML and SVG, which is everything a composition contains.
|
|
36
|
+
* `packages/studio` still hand-rolls its own checks in several places and is not
|
|
37
|
+
* covered by this module or by the lint guard that keeps `src/runtime` clean
|
|
38
|
+
* (`scripts/lint-runtime-preview-guards.ts`).
|
|
39
|
+
*/
|
|
40
|
+
/** Any element node, from any realm (HTML, SVG, MathML). Mirrors `instanceof Element`. */
|
|
41
|
+
export declare function isElementNode(value: unknown): value is Element;
|
|
42
|
+
/**
|
|
43
|
+
* An HTML element, from any realm. Mirrors `instanceof HTMLElement`, including
|
|
44
|
+
* its exclusion of SVG/MathML: "is an HTMLElement" and "is an element in the
|
|
45
|
+
* XHTML namespace" are the same set.
|
|
46
|
+
*/
|
|
47
|
+
export declare function isHtmlElement(value: unknown): value is HTMLElement;
|
|
48
|
+
/** `<video>`, from any realm. Mirrors `instanceof HTMLVideoElement`. */
|
|
49
|
+
export declare function isVideoElement(value: unknown): value is HTMLVideoElement;
|
|
50
|
+
/** `<audio>`, from any realm. Mirrors `instanceof HTMLAudioElement`. */
|
|
51
|
+
export declare function isAudioElement(value: unknown): value is HTMLAudioElement;
|
|
52
|
+
/** `<video>` or `<audio>`, from any realm. Mirrors `instanceof HTMLMediaElement`. */
|
|
53
|
+
export declare function isMediaElement(value: unknown): value is HTMLMediaElement;
|
|
54
|
+
/** `<img>`, from any realm. Mirrors `instanceof HTMLImageElement`. */
|
|
55
|
+
export declare function isImageElement(value: unknown): value is HTMLImageElement;
|
|
56
|
+
/** `<style>`, from any realm. Mirrors `instanceof HTMLStyleElement`. */
|
|
57
|
+
export declare function isStyleElement(value: unknown): value is HTMLStyleElement;
|
|
58
|
+
/** `<link>`, from any realm. Mirrors `instanceof HTMLLinkElement`. */
|
|
59
|
+
export declare function isLinkElement(value: unknown): value is HTMLLinkElement;
|
|
60
|
+
/**
|
|
61
|
+
* An element that carries a CSS `style` map: HTML **or** SVG. Position edits and
|
|
62
|
+
* transform writes apply to both (authored SVG `<text>`/shapes honour the CSS
|
|
63
|
+
* `translate` longhand exactly as HTML does).
|
|
64
|
+
*/
|
|
65
|
+
export declare function isStylableElement(value: unknown): value is HTMLElement | SVGElement;
|
|
66
|
+
//# sourceMappingURL=domRealm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domRealm.d.ts","sourceRoot":"","sources":["../../src/runtime/domRealm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAUH,0FAA0F;AAC1F,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAElE;AAQD,wEAAwE;AACxE,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAExE;AAED,wEAAwE;AACxE,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAExE;AAED,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAExE;AAED,sEAAsE;AACtE,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAExE;AAED,wEAAwE;AACxE,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAExE;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,GAAG,UAAU,CAMnF"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Realm-independent "what kind of node is this" tests for composition DOM.
|
|
3
|
+
*
|
|
4
|
+
* THE INVARIANT: the runtime never assumes the composition DOM was built by the
|
|
5
|
+
* same JavaScript realm the runtime is running in. It asks what a node IS (node
|
|
6
|
+
* type, namespace, tag name), never which window's constructor made it.
|
|
7
|
+
*
|
|
8
|
+
* Why that matters. `node instanceof HTMLElement` compares against the
|
|
9
|
+
* `HTMLElement` of the realm this module was loaded into, so it answers "which
|
|
10
|
+
* window built this node", not "what is this node". One document can hold
|
|
11
|
+
* elements from several realms at once, and a node keeps the prototype chain of
|
|
12
|
+
* whichever realm created it however it got there.
|
|
13
|
+
*
|
|
14
|
+
* MEASURED, in the Studio preview, on some loads: `<html>`, `<head>` and
|
|
15
|
+
* `<script>` carry the preview frame's prototypes while `<body>` and every
|
|
16
|
+
* element under it carry the editor window's. Tagging each realm's
|
|
17
|
+
* `Element.prototype` before any page script ran and reading the tag back off
|
|
18
|
+
* the live nodes is how that was established. NOT established: how the nodes
|
|
19
|
+
* come to be there. No `adoptNode`, `importNode` or `document.write` call was
|
|
20
|
+
* caught doing it, and the frame is populated by `src`/`srcdoc`, so treat the
|
|
21
|
+
* mechanism as an open question and the mixed realms as a fact.
|
|
22
|
+
*
|
|
23
|
+
* Either way `instanceof` does not throw and does not warn. It just returns
|
|
24
|
+
* false, forever, for every element in the composition, and every guard written
|
|
25
|
+
* as `if (!(node instanceof HTMLElement)) continue;` silently skips the whole
|
|
26
|
+
* document. A whole pass goes dark with no error: the timed-element visibility
|
|
27
|
+
* pass stops writing, so every scene paints on top of every other.
|
|
28
|
+
*
|
|
29
|
+
* `doc.defaultView.HTMLElement` is not a sufficient repair, which is why this
|
|
30
|
+
* module replaced two hand-rolled attempts at it. It fixes the case where the
|
|
31
|
+
* nodes belong to the document's own realm and still fails when they belong to
|
|
32
|
+
* a third one. A structural test has no such case to get wrong.
|
|
33
|
+
*
|
|
34
|
+
* Scope of ownership: these predicates own the RUNTIME's answer to "what kind of
|
|
35
|
+
* node is this", for HTML and SVG, which is everything a composition contains.
|
|
36
|
+
* `packages/studio` still hand-rolls its own checks in several places and is not
|
|
37
|
+
* covered by this module or by the lint guard that keeps `src/runtime` clean
|
|
38
|
+
* (`scripts/lint-runtime-preview-guards.ts`).
|
|
39
|
+
*/
|
|
40
|
+
const XHTML_NS = "http://www.w3.org/1999/xhtml";
|
|
41
|
+
/** Any element node, from any realm (HTML, SVG, MathML). Mirrors `instanceof Element`. */
|
|
42
|
+
export function isElementNode(value) {
|
|
43
|
+
return value != null && value.nodeType === 1;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* An HTML element, from any realm. Mirrors `instanceof HTMLElement`, including
|
|
47
|
+
* its exclusion of SVG/MathML: "is an HTMLElement" and "is an element in the
|
|
48
|
+
* XHTML namespace" are the same set.
|
|
49
|
+
*/
|
|
50
|
+
export function isHtmlElement(value) {
|
|
51
|
+
return isElementNode(value) && value.namespaceURI === XHTML_NS;
|
|
52
|
+
}
|
|
53
|
+
/** Single tag, by value: a rest parameter here allocates on every call, and these
|
|
54
|
+
* predicates run per element per seek and per animation frame. */
|
|
55
|
+
function isHtmlTag(value, tag) {
|
|
56
|
+
return isHtmlElement(value) && value.localName === tag;
|
|
57
|
+
}
|
|
58
|
+
/** `<video>`, from any realm. Mirrors `instanceof HTMLVideoElement`. */
|
|
59
|
+
export function isVideoElement(value) {
|
|
60
|
+
return isHtmlTag(value, "video");
|
|
61
|
+
}
|
|
62
|
+
/** `<audio>`, from any realm. Mirrors `instanceof HTMLAudioElement`. */
|
|
63
|
+
export function isAudioElement(value) {
|
|
64
|
+
return isHtmlTag(value, "audio");
|
|
65
|
+
}
|
|
66
|
+
/** `<video>` or `<audio>`, from any realm. Mirrors `instanceof HTMLMediaElement`. */
|
|
67
|
+
export function isMediaElement(value) {
|
|
68
|
+
return isVideoElement(value) || isAudioElement(value);
|
|
69
|
+
}
|
|
70
|
+
/** `<img>`, from any realm. Mirrors `instanceof HTMLImageElement`. */
|
|
71
|
+
export function isImageElement(value) {
|
|
72
|
+
return isHtmlTag(value, "img");
|
|
73
|
+
}
|
|
74
|
+
/** `<style>`, from any realm. Mirrors `instanceof HTMLStyleElement`. */
|
|
75
|
+
export function isStyleElement(value) {
|
|
76
|
+
return isHtmlTag(value, "style");
|
|
77
|
+
}
|
|
78
|
+
/** `<link>`, from any realm. Mirrors `instanceof HTMLLinkElement`. */
|
|
79
|
+
export function isLinkElement(value) {
|
|
80
|
+
return isHtmlTag(value, "link");
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* An element that carries a CSS `style` map: HTML **or** SVG. Position edits and
|
|
84
|
+
* transform writes apply to both (authored SVG `<text>`/shapes honour the CSS
|
|
85
|
+
* `translate` longhand exactly as HTML does).
|
|
86
|
+
*/
|
|
87
|
+
export function isStylableElement(value) {
|
|
88
|
+
return (isElementNode(value) &&
|
|
89
|
+
(value.namespaceURI === XHTML_NS ||
|
|
90
|
+
value.namespaceURI === "http://www.w3.org/2000/svg"));
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=domRealm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domRealm.js","sourceRoot":"","sources":["../../src/runtime/domRealm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,MAAM,QAAQ,GAAG,8BAA8B,CAAC;AAQhD,0FAA0F;AAC1F,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,KAAK,IAAI,IAAI,IAAK,KAAkB,CAAC,QAAQ,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,aAAa,CAAC,KAAK,CAAC,IAAK,KAAkB,CAAC,YAAY,KAAK,QAAQ,CAAC;AAC/E,CAAC;AAED;mEACmE;AACnE,SAAS,SAAS,CAAC,KAAc,EAAE,GAAW;IAC5C,OAAO,aAAa,CAAC,KAAK,CAAC,IAAK,KAAkB,CAAC,SAAS,KAAK,GAAG,CAAC;AACvE,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,CACL,aAAa,CAAC,KAAK,CAAC;QACpB,CAAE,KAAkB,CAAC,YAAY,KAAK,QAAQ;YAC3C,KAAkB,CAAC,YAAY,KAAK,4BAA4B,CAAC,CACrE,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mediaVolumeEnvelope.d.ts","sourceRoot":"","sources":["../../src/runtime/mediaVolumeEnvelope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"mediaVolumeEnvelope.d.ts","sourceRoot":"","sources":["../../src/runtime/mediaVolumeEnvelope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAMnD;;;;;;;GAOG;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,cAAc,EAAE,EAC3B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,cAAc,EAAE,CAwBlB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAgBnF;AA2DD;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CACzC,EAAE,EAAE,gBAAgB,GAAG,gBAAgB,EACvC,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,EACjC,mBAAmB,EAAE,MAAM,EAC3B,SAAS,EAAE,MAAM,GAChB,cAAc,EAAE,GAAG,IAAI,CAQzB;AA2CD,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC;AAE1F,MAAM,WAAW,kBAAkB;IACjC;;;;;;;OAOG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,EAC/C,mBAAmB,EAAE,MAAM,EAC3B,KAAK,EAAE,OAAO,CAAC,gBAAgB,EAAE,cAAc,EAAE,CAAC,EAClD,OAAO,GAAE,kBAAuB,GAC/B,IAAI,CAiCN"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { clampAudioGain, withUnclampedVolume } from "../audioGain.js";
|
|
2
2
|
import { parseStrictFiniteTimingNumber } from "./playbackRate.js";
|
|
3
|
+
import { createRuntimeStartTimeResolver } from "./startResolver.js";
|
|
4
|
+
import { isMediaElement } from "./domRealm.js";
|
|
3
5
|
/**
|
|
4
6
|
* Normalise raw keyframes to track-relative seconds: subtract `trackStart`,
|
|
5
7
|
* clamp to [0,1], sort, de-duplicate, and prepend a `baseVolume` anchor at
|
|
@@ -74,7 +76,16 @@ function parseVolumeNumber(value) {
|
|
|
74
76
|
return Number.isFinite(parsed) ? parsed : undefined;
|
|
75
77
|
}
|
|
76
78
|
function resolveVolumeProbeWindow(el, compositionDuration) {
|
|
77
|
-
|
|
79
|
+
// Probe samples are stamped with ROOT-timeline seek times, and
|
|
80
|
+
// `normaliseEnvelope` rebases them by this start — so it has to be the same
|
|
81
|
+
// absolute start the transport plays the clip at. Reading `data-start`
|
|
82
|
+
// directly gave a composition-local value, which put a nested clip's whole
|
|
83
|
+
// envelope at the wrong origin.
|
|
84
|
+
const start = createRuntimeStartTimeResolver({
|
|
85
|
+
timelineRegistry: window
|
|
86
|
+
.__timelines,
|
|
87
|
+
includeAuthoredTimingAttrs: true,
|
|
88
|
+
}).resolveMediaStartForElement(el);
|
|
78
89
|
const endAttr = parseStrictFiniteTimingNumber(el.dataset.end) ?? undefined;
|
|
79
90
|
const durAttr = parseStrictFiniteTimingNumber(el.dataset.duration) ?? undefined;
|
|
80
91
|
let end = compositionDuration;
|
|
@@ -98,7 +109,12 @@ function resolveVolumeProbeWindow(el, compositionDuration) {
|
|
|
98
109
|
* changes from its initial `data-volume` value).
|
|
99
110
|
*/
|
|
100
111
|
export function probeElementVolumeKeyframes(el, seekTimeline, compositionDuration, sampleFps) {
|
|
101
|
-
|
|
112
|
+
return probeKeyframesInWindow(el, seekTimeline, compositionDuration, sampleFps, resolveVolumeProbeWindow(el, compositionDuration));
|
|
113
|
+
}
|
|
114
|
+
/** Sampling half of the probe, given an already-resolved window. Split out so
|
|
115
|
+
* `probeAndCacheElementVolume` resolves that window ONCE and reuses it for the
|
|
116
|
+
* envelope rebase, instead of deriving the same start twice per element. */
|
|
117
|
+
function probeKeyframesInWindow(el, seekTimeline, compositionDuration, sampleFps, { start, end, staticVolume }) {
|
|
102
118
|
const step = 1 / Math.min(60, Math.max(1, sampleFps));
|
|
103
119
|
const sampleStart = Math.max(0, start);
|
|
104
120
|
const sampleEnd = Math.min(compositionDuration, end);
|
|
@@ -143,7 +159,7 @@ export function probeAndCacheElementVolume(mediaEl, timeline, compositionDuratio
|
|
|
143
159
|
return;
|
|
144
160
|
if (!timeline)
|
|
145
161
|
return;
|
|
146
|
-
if (!(mediaEl
|
|
162
|
+
if (!isMediaElement(mediaEl))
|
|
147
163
|
return;
|
|
148
164
|
if (compositionDuration <= 0)
|
|
149
165
|
return;
|
|
@@ -168,12 +184,12 @@ export function probeAndCacheElementVolume(mediaEl, timeline, compositionDuratio
|
|
|
168
184
|
: typeof timeline.seek === "function"
|
|
169
185
|
? Number(timeline.seek())
|
|
170
186
|
: 0;
|
|
171
|
-
const
|
|
187
|
+
const probeWindow = resolveVolumeProbeWindow(mediaEl, compositionDuration);
|
|
188
|
+
const keyframes = probeKeyframesInWindow(mediaEl, seekFn, compositionDuration, 60, probeWindow);
|
|
172
189
|
if (Number.isFinite(originalTime))
|
|
173
190
|
seekFn(originalTime);
|
|
174
191
|
if (keyframes) {
|
|
175
|
-
const
|
|
176
|
-
const envelope = normaliseEnvelope(keyframes, start, staticVolume);
|
|
192
|
+
const envelope = normaliseEnvelope(keyframes, probeWindow.start, probeWindow.staticVolume);
|
|
177
193
|
if (envelope.length > 0)
|
|
178
194
|
cache.set(mediaEl, envelope);
|
|
179
195
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mediaVolumeEnvelope.js","sourceRoot":"","sources":["../../src/runtime/mediaVolumeEnvelope.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"mediaVolumeEnvelope.js","sourceRoot":"","sources":["../../src/runtime/mediaVolumeEnvelope.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,5 +4,16 @@ export declare function parseStrictFiniteTimingNumber(raw: string | null | undef
|
|
|
4
4
|
export declare function readElementPlaybackRate(el: Pick<Element, "getAttribute">): number;
|
|
5
5
|
export declare function readMediaStart(el: Pick<Element, "getAttribute">): number;
|
|
6
6
|
export declare function resolveNaturalMediaTimelineDuration(el: Pick<Element, "getAttribute">, sourceDuration: number): number | null;
|
|
7
|
+
/**
|
|
8
|
+
* How long a media element occupies the timeline: an explicit `data-duration`
|
|
9
|
+
* trim if authored, otherwise the natural source length adjusted for playback
|
|
10
|
+
* start and rate. `null` when the source has not reported a duration yet.
|
|
11
|
+
*
|
|
12
|
+
* Single owner for the media-window scan run by BOTH the runtime's duration
|
|
13
|
+
* floor and the clip manifest.
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolveMediaElementDurationSeconds(el: Pick<Element, "getAttribute"> & {
|
|
16
|
+
duration: number;
|
|
17
|
+
}): number | null;
|
|
7
18
|
export declare function resolveNaturalMediaTimelineDurationFromValues(sourceDuration: number, mediaStart: number, playbackRate: number): number | null;
|
|
8
19
|
//# sourceMappingURL=playbackRate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playbackRate.d.ts","sourceRoot":"","sources":["../../src/runtime/playbackRate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"playbackRate.d.ts","sourceRoot":"","sources":["../../src/runtime/playbackRate.ts"],"names":[],"mappings":"AAEA,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,4FAA4F;AAC5F,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAE3F;AAED,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,GAAG,MAAM,CASjF;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,GAAG,MAAM,CASxE;AACD,wBAAgB,mCAAmC,CACjD,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,EACjC,cAAc,EAAE,MAAM,GACrB,MAAM,GAAG,IAAI,CAMf;AAED;;;;;;;GAOG;AACH,wBAAgB,kCAAkC,CAChD,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GACvD,MAAM,GAAG,IAAI,CAKf;AAED,wBAAgB,6CAA6C,CAC3D,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,IAAI,CAIf"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isMediaElement } from "./domRealm.js";
|
|
1
2
|
export function normalizePlaybackRate(raw) {
|
|
2
3
|
return Number.isFinite(raw) && raw > 0 ? Math.max(0.1, Math.min(5, raw)) : 1;
|
|
3
4
|
}
|
|
@@ -9,7 +10,7 @@ export function readElementPlaybackRate(el) {
|
|
|
9
10
|
const authored = Number.parseFloat(el.getAttribute("data-playback-rate") ?? "");
|
|
10
11
|
const raw = Number.isFinite(authored) && authored > 0
|
|
11
12
|
? authored
|
|
12
|
-
:
|
|
13
|
+
: isMediaElement(el)
|
|
13
14
|
? el.defaultPlaybackRate
|
|
14
15
|
: 1;
|
|
15
16
|
return normalizePlaybackRate(raw);
|
|
@@ -26,6 +27,22 @@ export function readMediaStart(el) {
|
|
|
26
27
|
export function resolveNaturalMediaTimelineDuration(el, sourceDuration) {
|
|
27
28
|
return resolveNaturalMediaTimelineDurationFromValues(sourceDuration, readMediaStart(el), readElementPlaybackRate(el));
|
|
28
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* How long a media element occupies the timeline: an explicit `data-duration`
|
|
32
|
+
* trim if authored, otherwise the natural source length adjusted for playback
|
|
33
|
+
* start and rate. `null` when the source has not reported a duration yet.
|
|
34
|
+
*
|
|
35
|
+
* Single owner for the media-window scan run by BOTH the runtime's duration
|
|
36
|
+
* floor and the clip manifest.
|
|
37
|
+
*/
|
|
38
|
+
export function resolveMediaElementDurationSeconds(el) {
|
|
39
|
+
const declaredDuration = parseStrictFiniteTimingNumber(el.getAttribute("data-duration"));
|
|
40
|
+
if (declaredDuration != null && declaredDuration > 0)
|
|
41
|
+
return declaredDuration;
|
|
42
|
+
if (Number.isFinite(el.duration))
|
|
43
|
+
return resolveNaturalMediaTimelineDuration(el, el.duration);
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
29
46
|
export function resolveNaturalMediaTimelineDurationFromValues(sourceDuration, mediaStart, playbackRate) {
|
|
30
47
|
if (!Number.isFinite(sourceDuration))
|
|
31
48
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playbackRate.js","sourceRoot":"","sources":["../../src/runtime/playbackRate.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,6BAA6B,CAAC,GAA8B;IAC1E,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,EAAiC;IACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC;IAChF,MAAM,GAAG,GACP,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC;QACvC,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"playbackRate.js","sourceRoot":"","sources":["../../src/runtime/playbackRate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,6BAA6B,CAAC,GAA8B;IAC1E,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,EAAiC;IACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC;IAChF,MAAM,GAAG,GACP,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC;QACvC,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC;YAClB,CAAC,CAAC,EAAE,CAAC,mBAAmB;YACxB,CAAC,CAAC,CAAC,CAAC;IACV,OAAO,qBAAqB,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAiC;IAC9D,MAAM,KAAK,GAAG,CAAC,GAAkB,EAAiB,EAAE;QAClD,MAAM,KAAK,GAAG,6BAA6B,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QAC/B,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7D,CAAC,CAAC;IACF,OAAO,CACL,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CACjG,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,mCAAmC,CACjD,EAAiC,EACjC,cAAsB;IAEtB,OAAO,6CAA6C,CAClD,cAAc,EACd,cAAc,CAAC,EAAE,CAAC,EAClB,uBAAuB,CAAC,EAAE,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kCAAkC,CAChD,EAAwD;IAExD,MAAM,gBAAgB,GAAG,6BAA6B,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC;IACzF,IAAI,gBAAgB,IAAI,IAAI,IAAI,gBAAgB,GAAG,CAAC;QAAE,OAAO,gBAAgB,CAAC;IAC9E,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC;QAAE,OAAO,mCAAmC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC9F,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,6CAA6C,CAC3D,cAAsB,EACtB,UAAkB,EAClB,YAAoB;IAEpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC;QAAE,OAAO,IAAI,CAAC;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC,CAAC;IAC3D,OAAO,SAAS,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;AACzD,CAAC;AACD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"positionEdits.d.ts","sourceRoot":"","sources":["../../src/runtime/positionEdits.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;GAoBG;
|
|
1
|
+
{"version":3,"file":"positionEdits.d.ts","sourceRoot":"","sources":["../../src/runtime/positionEdits.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH,eAAO,MAAM,gBAAgB,wBAAwB,CAAC;AACtD,eAAO,MAAM,gBAAgB,wBAAwB,CAAC;AACtD,eAAO,MAAM,4BAA4B,oCAAoC,CAAC;AAE9E;;;;;GAKG;AACH,KAAK,eAAe,GAAG,WAAW,GAAG,UAAU,CAAC;AAkChD,0EAA0E;AAC1E,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,KAAG,MAOzE,CAAC;AAqBF,wFAAwF;AACxF,eAAO,MAAM,oBAAoB,GAAI,IAAI,eAAe,KAAG,MAU1D,CAAC;AAYF;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAwBhG;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CA+BpF;AAcD,sFAAsF;AACtF,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,UAAU,GAAG,IAAI,CAgHrF"}
|