@lumencast/runtime 0.7.0 → 0.9.0
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/.tsbuildinfo +1 -1
- package/dist/animate/keyframes.js +8 -1
- package/dist/animate/keyframes.js.map +1 -1
- package/dist/app.d.ts +4 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +2 -1
- package/dist/app.js.map +1 -1
- package/dist/{broadcast-DUYqvcgo.js → broadcast-ryjLRD5q.js} +3 -3
- package/dist/{broadcast-DUYqvcgo.js.map → broadcast-ryjLRD5q.js.map} +1 -1
- package/dist/{control-CL8TWXaE.js → control-AgxbXOVS.js} +4 -4
- package/dist/{control-CL8TWXaE.js.map → control-AgxbXOVS.js.map} +1 -1
- package/dist/{index-C6viWFcT.js → index-DrXsLYhe.js} +309 -212
- package/dist/index-DrXsLYhe.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.html +1 -1
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -1
- package/dist/lumencast.js +14 -9
- package/dist/mount.d.ts.map +1 -1
- package/dist/mount.js +5 -0
- package/dist/mount.js.map +1 -1
- package/dist/overlay/runtime-context.d.ts +11 -0
- package/dist/overlay/runtime-context.d.ts.map +1 -1
- package/dist/overlay/runtime-context.js +8 -0
- package/dist/overlay/runtime-context.js.map +1 -1
- package/dist/render/asset-resolve.d.ts +27 -0
- package/dist/render/asset-resolve.d.ts.map +1 -0
- package/dist/render/asset-resolve.js +86 -0
- package/dist/render/asset-resolve.js.map +1 -0
- package/dist/render/bundle.d.ts +1 -1
- package/dist/render/bundle.d.ts.map +1 -1
- package/dist/render/bundle.js +4 -0
- package/dist/render/bundle.js.map +1 -1
- package/dist/render/headless.d.ts +39 -0
- package/dist/render/headless.d.ts.map +1 -0
- package/dist/render/headless.js +83 -0
- package/dist/render/headless.js.map +1 -0
- package/dist/render/keyframe-player.d.ts.map +1 -1
- package/dist/render/keyframe-player.js +15 -1
- package/dist/render/keyframe-player.js.map +1 -1
- package/dist/render/primitives/capture.d.ts +40 -0
- package/dist/render/primitives/capture.d.ts.map +1 -0
- package/dist/render/primitives/capture.js +171 -0
- package/dist/render/primitives/capture.js.map +1 -0
- package/dist/render/primitives/index.d.ts.map +1 -1
- package/dist/render/primitives/index.js +3 -0
- package/dist/render/primitives/index.js.map +1 -1
- package/dist/render/primitives/media.d.ts +11 -2
- package/dist/render/primitives/media.d.ts.map +1 -1
- package/dist/render/primitives/media.js +14 -3
- package/dist/render/primitives/media.js.map +1 -1
- package/dist/render/prop-allowlist.d.ts.map +1 -1
- package/dist/render/prop-allowlist.js +5 -0
- package/dist/render/prop-allowlist.js.map +1 -1
- package/dist/{status-pill-jJT54n07.js → status-pill-BxCdj-KZ.js} +2 -2
- package/dist/{status-pill-jJT54n07.js.map → status-pill-BxCdj-KZ.js.map} +1 -1
- package/dist/{test-84XodL1c.js → test-CaRHj_J6.js} +4 -4
- package/dist/{test-84XodL1c.js.map → test-CaRHj_J6.js.map} +1 -1
- package/dist/{tree-BIimahCf.js → tree-BLIxJbD3.js} +515 -432
- package/dist/tree-BLIxJbD3.js.map +1 -0
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -5
- package/src/animate/keyframes.ts +8 -1
- package/src/app.tsx +5 -0
- package/src/index.ts +29 -0
- package/src/mount.ts +5 -0
- package/src/overlay/runtime-context.tsx +14 -0
- package/src/render/asset-resolve.ts +97 -0
- package/src/render/bundle.ts +9 -1
- package/src/render/headless.tsx +129 -0
- package/src/render/keyframe-player.tsx +14 -1
- package/src/render/primitives/capture.tsx +210 -0
- package/src/render/primitives/index.ts +3 -0
- package/src/render/primitives/media.tsx +14 -3
- package/src/render/prop-allowlist.ts +5 -0
- package/src/types.ts +10 -0
- package/dist/index-C6viWFcT.js.map +0 -1
- package/dist/tree-BIimahCf.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../src/render/bundle.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAIzD,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,MAAM,GACN,OAAO,GACP,MAAM,GACN,OAAO,GACP,OAAO,GACP,OAAO,GACP,QAAQ,GACR,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../src/render/bundle.ts"],"names":[],"mappings":"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"}
|
package/dist/render/bundle.js
CHANGED
|
@@ -23,6 +23,10 @@
|
|
|
23
23
|
*/
|
|
24
24
|
export const SUPPORTED_PROFILES = new Set([
|
|
25
25
|
"x-lumencast.color-srgb-1.0",
|
|
26
|
+
// RFC-0001 / ADR 004 — this runtime ships the Zab capture plugin, so a
|
|
27
|
+
// bundle declaring `x-zab.capture/1` in `profiles[]` is compatible (it is
|
|
28
|
+
// NOT rejected as BUNDLE_INCOMPATIBLE, §17.3.1).
|
|
29
|
+
"x-zab.capture/1",
|
|
26
30
|
]);
|
|
27
31
|
// LSML 1.1 §17.5.1 + ADR 001 RC#14 — authoring-profile detection.
|
|
28
32
|
//
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../src/render/bundle.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,EAAE;AACF,oEAAoE;AACpE,0EAA0E;AAC1E,8EAA8E;AAC9E,EAAE;AACF,6EAA6E;AAC7E,iFAAiF;AACjF,8EAA8E;AAC9E,0EAA0E;AAC1E,yEAAyE;AACzE,mDAAmD;
|
|
1
|
+
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../src/render/bundle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type DiagnosticHandler } from "./diagnostics.js";
|
|
2
|
+
import type { RenderBundle } from "./bundle.js";
|
|
3
|
+
export interface HeadlessRenderOptions {
|
|
4
|
+
/** Already-compiled bundle (via `@lumencast/compiler` on the host side). */
|
|
5
|
+
bundle: RenderBundle;
|
|
6
|
+
/** A live, mounted DOM node. Its size is set from `stage` unless the host
|
|
7
|
+
* has already dimensioned it (see `stage`). */
|
|
8
|
+
target: HTMLElement;
|
|
9
|
+
/** Initial leaf-grain store state (`store.reset(defaults)`) — the bound
|
|
10
|
+
* values the bundle reads (`__lit.*`, score, names…). */
|
|
11
|
+
defaults?: Record<string, unknown>;
|
|
12
|
+
/** Stage dimensions in CSS px. Defaults to 1920×1080. Applied to `target`
|
|
13
|
+
* as `width`/`height`/`position:relative`/`overflow:hidden` so the
|
|
14
|
+
* screenshot frame matches the reference exactly. */
|
|
15
|
+
stage?: {
|
|
16
|
+
width: number;
|
|
17
|
+
height: number;
|
|
18
|
+
};
|
|
19
|
+
/** Anti-drop diagnostics channel (ADR 001 §3.4): omitted assets, unhonoured
|
|
20
|
+
* fields surface here as `{ nodeId, field, reason }` (never a value — R9).
|
|
21
|
+
* Wired to the same global channel `mount()` uses. */
|
|
22
|
+
onDiagnostic?: DiagnosticHandler;
|
|
23
|
+
}
|
|
24
|
+
export interface HeadlessRenderHandle {
|
|
25
|
+
/** Resolves after the scene has rendered, two animation frames have passed
|
|
26
|
+
* AND `document.fonts.ready` (ADR 003 §3.3) — i.e. the DOM is laid out and
|
|
27
|
+
* fonts are loaded, so a screenshot taken now is fidelity-faithful. */
|
|
28
|
+
ready: Promise<void>;
|
|
29
|
+
/** Tear down the React root and detach the diagnostics handler. */
|
|
30
|
+
unmount(): void;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Render `bundle` into `target` through the production broadcast path and
|
|
34
|
+
* resolve `ready` once it is settled. The runtime performs NO network fetch and
|
|
35
|
+
* takes NO screenshot — it produces a settled live DOM and a readiness signal,
|
|
36
|
+
* nothing more (ADR 003 D5).
|
|
37
|
+
*/
|
|
38
|
+
export declare function renderBundleHeadless(opts: HeadlessRenderOptions): HeadlessRenderHandle;
|
|
39
|
+
//# sourceMappingURL=headless.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headless.d.ts","sourceRoot":"","sources":["../../src/render/headless.tsx"],"names":[],"mappings":"AA0BA,OAAO,EAAyB,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAKhD,MAAM,WAAW,qBAAqB;IACpC,4EAA4E;IAC5E,MAAM,EAAE,YAAY,CAAC;IACrB;oDACgD;IAChD,MAAM,EAAE,WAAW,CAAC;IACpB;8DAC0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC;;0DAEsD;IACtD,KAAK,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C;;2DAEuD;IACvD,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC;;4EAEwE;IACxE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,mEAAmE;IACnE,OAAO,IAAI,IAAI,CAAC;CACjB;AAID;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,GAAG,oBAAoB,CA4DtF"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
// Public headless render entry — render an already-compiled `RenderBundle`
|
|
3
|
+
// into a live DOM node, no WebSocket, ready when layout + fonts have settled
|
|
4
|
+
// (ADR 003 §3.1). The host (Playwright / Chromium / a CEF offscreen surface)
|
|
5
|
+
// screenshots `target` once `ready` resolves. The runtime does DOM + readiness
|
|
6
|
+
// ONLY — no screenshot, no fetch (ADR 003 D5/D3).
|
|
7
|
+
//
|
|
8
|
+
// This is the zero-loss harness (ADR 002 #J) generalised: it mounts the EXACT
|
|
9
|
+
// production seam —
|
|
10
|
+
// LumencastRuntimeProvider{ mode:"broadcast", status:"live" } > BroadcastMode
|
|
11
|
+
// — into a real `createRoot(target)`, NOT `renderToStaticMarkup` (which yields
|
|
12
|
+
// unlaid-out markup: unmeasured fonts, uncomposited masks → an infidel PNG,
|
|
13
|
+
// ADR 003 §3.1). `BroadcastMode` is dynamically imported so the headless
|
|
14
|
+
// function adds no weight to the eager `mount`/broadcast path (ADR 003 §4,
|
|
15
|
+
// RC6); the heavy render code already lives in the broadcast/tree chunks.
|
|
16
|
+
//
|
|
17
|
+
// Asset resolution is the HOST's job, done in the bundle BEFORE this call
|
|
18
|
+
// (ADR 003 §3.2): the runtime renders the bundle as-is, gating every remaining
|
|
19
|
+
// `src` through the unchanged deny-by-default host-allow gate inside
|
|
20
|
+
// `BroadcastMode` (`AllowedHostsProvider`). A `src` on a host not in the
|
|
21
|
+
// bundle's `allowedHosts` is omitted + a diagnostic is emitted — never faked
|
|
22
|
+
// (ADR 002 borne, D4). Use `render/asset-resolve` helpers to pre-resolve.
|
|
23
|
+
import { StrictMode } from "react";
|
|
24
|
+
import { createRoot } from "react-dom/client";
|
|
25
|
+
import { createStore } from "../state/store.js";
|
|
26
|
+
import { LumencastRuntimeProvider } from "../overlay/runtime-context.js";
|
|
27
|
+
import { addDiagnosticsHandler } from "./diagnostics.js";
|
|
28
|
+
/** Default stage size — the Figma 817:3 cover frame, the SSIM reference. */
|
|
29
|
+
const DEFAULT_STAGE = { width: 1920, height: 1080 };
|
|
30
|
+
const noop = () => { };
|
|
31
|
+
/**
|
|
32
|
+
* Render `bundle` into `target` through the production broadcast path and
|
|
33
|
+
* resolve `ready` once it is settled. The runtime performs NO network fetch and
|
|
34
|
+
* takes NO screenshot — it produces a settled live DOM and a readiness signal,
|
|
35
|
+
* nothing more (ADR 003 D5).
|
|
36
|
+
*/
|
|
37
|
+
export function renderBundleHeadless(opts) {
|
|
38
|
+
const stage = opts.stage ?? DEFAULT_STAGE;
|
|
39
|
+
const target = opts.target;
|
|
40
|
+
// Pose the stage so the screenshot frame is exact (mirrors harness.html).
|
|
41
|
+
target.style.position ||= "relative";
|
|
42
|
+
target.style.width = `${stage.width}px`;
|
|
43
|
+
target.style.height = `${stage.height}px`;
|
|
44
|
+
target.style.overflow = "hidden";
|
|
45
|
+
const removeDiagnostics = opts.onDiagnostic
|
|
46
|
+
? addDiagnosticsHandler(opts.onDiagnostic)
|
|
47
|
+
: undefined;
|
|
48
|
+
const store = createStore();
|
|
49
|
+
store.reset(opts.defaults ?? {});
|
|
50
|
+
const root = createRoot(target);
|
|
51
|
+
const ready = new Promise((resolve) => {
|
|
52
|
+
// BroadcastMode is dynamically imported so its (and the tree's) weight is
|
|
53
|
+
// not pulled into the eager `mount` entry chunk (RC6). It is already a
|
|
54
|
+
// separate chunk reused from the broadcast path.
|
|
55
|
+
void import("../modes/broadcast.js").then(({ BroadcastMode }) => {
|
|
56
|
+
root.render(_jsx(StrictMode, { children: _jsx(LumencastRuntimeProvider, { value: {
|
|
57
|
+
mode: "broadcast",
|
|
58
|
+
store,
|
|
59
|
+
bundle: opts.bundle,
|
|
60
|
+
status: "live",
|
|
61
|
+
sendInput: noop,
|
|
62
|
+
}, children: _jsx(BroadcastMode, {}) }) }));
|
|
63
|
+
// Settle: two animation frames (layout) AND fonts loaded (ADR 003 §3.3).
|
|
64
|
+
// Both must complete before `ready` resolves, so a screenshot taken on
|
|
65
|
+
// `ready` uses the brand glyphs, not the fallback font (no FOUT freeze).
|
|
66
|
+
const framesSettled = new Promise((res) => {
|
|
67
|
+
requestAnimationFrame(() => requestAnimationFrame(() => res()));
|
|
68
|
+
});
|
|
69
|
+
const fontsReady = typeof document !== "undefined" && document.fonts
|
|
70
|
+
? document.fonts.ready.then(() => undefined)
|
|
71
|
+
: Promise.resolve();
|
|
72
|
+
void Promise.all([framesSettled, fontsReady]).then(() => resolve());
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
return {
|
|
76
|
+
ready,
|
|
77
|
+
unmount() {
|
|
78
|
+
removeDiagnostics?.();
|
|
79
|
+
root.unmount();
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=headless.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headless.js","sourceRoot":"","sources":["../../src/render/headless.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyframe-player.d.ts","sourceRoot":"","sources":["../../src/render/keyframe-player.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAiC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAIxE,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,KAAK,CAAC;IACb;iDAC6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,KAAK,EACL,MAAM,EACN,QAAQ,GACT,EAAE,mBAAmB,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"keyframe-player.d.ts","sourceRoot":"","sources":["../../src/render/keyframe-player.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAiC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAIxE,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,KAAK,CAAC;IACb;iDAC6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,KAAK,EACL,MAAM,EACN,QAAQ,GACT,EAAE,mBAAmB,GAAG,SAAS,CAqDjC"}
|
|
@@ -40,7 +40,21 @@ export function KeyframePlayer({ keyframes, store, nodeId, children, }) {
|
|
|
40
40
|
const transition = staggerDelayMs > 0
|
|
41
41
|
? { ...compiled.transition, delay: staggerDelayMs / 1000 }
|
|
42
42
|
: compiled.transition;
|
|
43
|
-
return (_jsxs(motion.div, {
|
|
43
|
+
return (_jsxs(motion.div, {
|
|
44
|
+
// A `display:contents` element generates NO box, so the browser
|
|
45
|
+
// never composites the animated `transform`/`opacity`/`filter` this
|
|
46
|
+
// player writes — they are silently dropped and the subtree renders
|
|
47
|
+
// dead at its child's default origin (ADR 011 I7 live bug). The
|
|
48
|
+
// player must be a REAL compositing box. `position:absolute; inset:0`
|
|
49
|
+
// overlays the parent without disturbing sibling layout, and — being
|
|
50
|
+
// positioned — becomes the containing block for the absolutely-
|
|
51
|
+
// positioned primitive nested beneath it (Frame is `position:absolute;
|
|
52
|
+
// left:0; top:0`), so the child's authored `x`/`y` resolve against the
|
|
53
|
+
// player's (0,0) exactly as they did against the grandparent under
|
|
54
|
+
// `display:contents`. The animated channels now composite onto a live
|
|
55
|
+
// box and the whole subtree (the nested target's geometry + fill)
|
|
56
|
+
// moves and fades with the keyframes.
|
|
57
|
+
style: { position: "absolute", inset: 0 }, initial: firstFrame(compiled.animate), animate: compiled.animate, transition: transition, children: [_jsx(ReplayOnMount, {}), children] }, replayTokenRef.current));
|
|
44
58
|
}
|
|
45
59
|
/** No-op effect placeholder — kept for symmetry / future hooks like
|
|
46
60
|
* reporting playback completion to the renderer. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyframe-player.js","sourceRoot":"","sources":["../../src/render/keyframe-player.tsx"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,EAAE;AACF,uEAAuE;AACvE,sEAAsE;AACtE,qEAAqE;AACrE,uEAAuE;AACvE,sEAAsE;AACtE,EAAE;AACF,uEAAuE;AACvE,wEAAwE;AACxE,0EAA0E;AAC1E,0BAA0B;AAE1B,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAkB,MAAM,OAAO,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAkB,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAWnD,MAAM,UAAU,cAAc,CAAC,EAC7B,SAAS,EACT,KAAK,EACL,MAAM,EACN,QAAQ,GACY;IACpB,UAAU,EAAE,CAAC;IACb,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;IAC7B,MAAM,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAElD,+DAA+D;IAC/D,kEAAkE;IAClE,iEAAiE;IACjE,MAAM,YAAY,GAAG,MAAM,CAAU,SAAS,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,SAAS,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;QAC/D,IAAI,YAAY,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;YAC/B,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC;YACzB,cAAc,CAAC,OAAO,IAAI,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACrD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,4BAAG,QAAQ,GAAI,CAAC;IACzB,CAAC;IAED,MAAM,UAAU,GACd,cAAc,GAAG,CAAC;QAChB,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI,EAAE;QAC1D,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;IAE1B,OAAO,CACL,MAAC,MAAM,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"keyframe-player.js","sourceRoot":"","sources":["../../src/render/keyframe-player.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { PrimitiveProps } from "./index";
|
|
2
|
+
/** `x-zab.capture` — context-aware capture primitive (Zab vendor primitive,
|
|
3
|
+
* RFC-0001 / ADR 004 §Amendment 1).
|
|
4
|
+
*
|
|
5
|
+
* The primitive reserves a box of the declared geometry so downstream layout
|
|
6
|
+
* (siblings, masks, stacks, grids) is unaffected — exactly as an `image` of
|
|
7
|
+
* the same geometry, in BOTH modes below. It picks a mode by **capability
|
|
8
|
+
* detection at mount** (feature detection, not an env flag) :
|
|
9
|
+
*
|
|
10
|
+
* - **ACQUIRE** (capable host, e.g. the Electron preview webview with
|
|
11
|
+
* auto-granted media permissions) : it acquires a live stream itself via
|
|
12
|
+
* `getUserMedia` (webcam/mic) or `getDisplayMedia` (screen/window) per
|
|
13
|
+
* `x-zab.sourceKind`, and renders it in a `<video>` for visual kinds
|
|
14
|
+
* (audio kinds stay visually empty). The physical device is resolved from
|
|
15
|
+
* the LOGICAL `x-zab.deviceRef` through a host-provided resolver
|
|
16
|
+
* (`resolveCaptureDevice`, §A1.3) — never a bundle-baked id. Any failure
|
|
17
|
+
* (no resolver, no device, permission denied, acquisition error) falls
|
|
18
|
+
* back to PLACEHOLDER WITHOUT throwing or blanking the surrounding tree.
|
|
19
|
+
*
|
|
20
|
+
* - **PLACEHOLDER** (non-capable host, e.g. CEF/Pulsar on-air) : the box is
|
|
21
|
+
* fully transparent, acquires nothing, reaches no device — the original
|
|
22
|
+
* §3.2 behaviour. The consuming app composites a native source behind it
|
|
23
|
+
* (ON-AIR PATH UNCHANGED).
|
|
24
|
+
*
|
|
25
|
+
* A stream-less box is a valid mode, not an error : NO diagnostic is emitted
|
|
26
|
+
* for PLACEHOLDER mode or for an ACQUIRE→PLACEHOLDER fallback.
|
|
27
|
+
*
|
|
28
|
+
* Geometry is the only layout input. `width`/`height` are the
|
|
29
|
+
* compiler-flattened `size:{w,h}` ; universal props (visible/opacity/
|
|
30
|
+
* position) are applied by the Tree's UniversalWrapper. An audio-only
|
|
31
|
+
* capture (`media.mic` / `media.app_audio`) may omit `size` → a zero-area
|
|
32
|
+
* box that never paints. */
|
|
33
|
+
export declare function Capture({ resolved }: PrimitiveProps): import("react/jsx-runtime").JSX.Element;
|
|
34
|
+
/** Resolver injected by the consuming app (ADR 004 §A1.3). Maps the LOGICAL
|
|
35
|
+
* `deviceRef` to a physical `deviceId` for a live `getUserMedia` constraint.
|
|
36
|
+
* The result NEVER enters the bundle or the content hash. */
|
|
37
|
+
export type ResolveCaptureDevice = (deviceRef: string, sourceKind: string) => {
|
|
38
|
+
deviceId?: string;
|
|
39
|
+
} | null;
|
|
40
|
+
//# sourceMappingURL=capture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../../src/render/primitives/capture.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BA8B6B;AAC7B,wBAAgB,OAAO,CAAC,EAAE,QAAQ,EAAE,EAAE,cAAc,2CA8FnD;AAED;;8DAE8D;AAC9D,MAAM,MAAM,oBAAoB,GAAG,CACjC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,KACf;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef, useState } from "react";
|
|
3
|
+
import { useOptionalLumencastRuntime } from "../../overlay/runtime-context";
|
|
4
|
+
/** `x-zab.capture` — context-aware capture primitive (Zab vendor primitive,
|
|
5
|
+
* RFC-0001 / ADR 004 §Amendment 1).
|
|
6
|
+
*
|
|
7
|
+
* The primitive reserves a box of the declared geometry so downstream layout
|
|
8
|
+
* (siblings, masks, stacks, grids) is unaffected — exactly as an `image` of
|
|
9
|
+
* the same geometry, in BOTH modes below. It picks a mode by **capability
|
|
10
|
+
* detection at mount** (feature detection, not an env flag) :
|
|
11
|
+
*
|
|
12
|
+
* - **ACQUIRE** (capable host, e.g. the Electron preview webview with
|
|
13
|
+
* auto-granted media permissions) : it acquires a live stream itself via
|
|
14
|
+
* `getUserMedia` (webcam/mic) or `getDisplayMedia` (screen/window) per
|
|
15
|
+
* `x-zab.sourceKind`, and renders it in a `<video>` for visual kinds
|
|
16
|
+
* (audio kinds stay visually empty). The physical device is resolved from
|
|
17
|
+
* the LOGICAL `x-zab.deviceRef` through a host-provided resolver
|
|
18
|
+
* (`resolveCaptureDevice`, §A1.3) — never a bundle-baked id. Any failure
|
|
19
|
+
* (no resolver, no device, permission denied, acquisition error) falls
|
|
20
|
+
* back to PLACEHOLDER WITHOUT throwing or blanking the surrounding tree.
|
|
21
|
+
*
|
|
22
|
+
* - **PLACEHOLDER** (non-capable host, e.g. CEF/Pulsar on-air) : the box is
|
|
23
|
+
* fully transparent, acquires nothing, reaches no device — the original
|
|
24
|
+
* §3.2 behaviour. The consuming app composites a native source behind it
|
|
25
|
+
* (ON-AIR PATH UNCHANGED).
|
|
26
|
+
*
|
|
27
|
+
* A stream-less box is a valid mode, not an error : NO diagnostic is emitted
|
|
28
|
+
* for PLACEHOLDER mode or for an ACQUIRE→PLACEHOLDER fallback.
|
|
29
|
+
*
|
|
30
|
+
* Geometry is the only layout input. `width`/`height` are the
|
|
31
|
+
* compiler-flattened `size:{w,h}` ; universal props (visible/opacity/
|
|
32
|
+
* position) are applied by the Tree's UniversalWrapper. An audio-only
|
|
33
|
+
* capture (`media.mic` / `media.app_audio`) may omit `size` → a zero-area
|
|
34
|
+
* box that never paints. */
|
|
35
|
+
export function Capture({ resolved }) {
|
|
36
|
+
const width = dimOr(resolved.width, "100%");
|
|
37
|
+
const height = dimOr(resolved.height, "100%");
|
|
38
|
+
const sourceKind = typeof resolved["x-zab.sourceKind"] === "string"
|
|
39
|
+
? resolved["x-zab.sourceKind"]
|
|
40
|
+
: "";
|
|
41
|
+
const deviceRef = typeof resolved["x-zab.deviceRef"] === "string"
|
|
42
|
+
? resolved["x-zab.deviceRef"]
|
|
43
|
+
: "";
|
|
44
|
+
// §A1.3 — the host-provided resolver, injected at mount through the runtime
|
|
45
|
+
// context (NOT the bundle, NOT the LSDP wire). Absent when the tree renders
|
|
46
|
+
// outside a host (direct embedding, tooling, tests) → the default-device
|
|
47
|
+
// path applies.
|
|
48
|
+
const runtime = useOptionalLumencastRuntime();
|
|
49
|
+
const resolveCaptureDevice = runtime?.resolveCaptureDevice;
|
|
50
|
+
const videoRef = useRef(null);
|
|
51
|
+
// `null` → PLACEHOLDER (non-capable, or ACQUIRE→PLACEHOLDER fallback).
|
|
52
|
+
// A `MediaStream` → ACQUIRE succeeded and a visual stream is mounted.
|
|
53
|
+
const [stream, setStream] = useState(null);
|
|
54
|
+
useEffect(() => {
|
|
55
|
+
// §A1.2(2) — capability detection at mount. A non-capable host (no
|
|
56
|
+
// `getUserMedia`, e.g. CEF/Pulsar on-air, or jsdom without a mock) stays
|
|
57
|
+
// in PLACEHOLDER : acquire nothing, no diagnostic.
|
|
58
|
+
if (!isCaptureCapable())
|
|
59
|
+
return;
|
|
60
|
+
let cancelled = false;
|
|
61
|
+
let acquired = null;
|
|
62
|
+
void (async () => {
|
|
63
|
+
try {
|
|
64
|
+
const media = await acquireStream(sourceKind, deviceRef, resolveCaptureDevice);
|
|
65
|
+
if (media === null)
|
|
66
|
+
return; // unknown/unsupported kind → PLACEHOLDER
|
|
67
|
+
if (cancelled) {
|
|
68
|
+
// Unmounted (or scene-changed) during acquisition — stop immediately
|
|
69
|
+
// so we never leave a camera light on (RC11).
|
|
70
|
+
stopStream(media);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
acquired = media;
|
|
74
|
+
setStream(media);
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
// §A1.2(2)(a) — any acquisition failure (permission denied, no device,
|
|
78
|
+
// getUserMedia rejected) falls back to PLACEHOLDER, no throw, no
|
|
79
|
+
// diagnostic.
|
|
80
|
+
}
|
|
81
|
+
})();
|
|
82
|
+
return () => {
|
|
83
|
+
cancelled = true;
|
|
84
|
+
// RC11 — stop the tracks at unmount / scene change. Clearing state is
|
|
85
|
+
// unnecessary (the component is gone) but stopping the device is not.
|
|
86
|
+
if (acquired !== null)
|
|
87
|
+
stopStream(acquired);
|
|
88
|
+
};
|
|
89
|
+
// Re-acquire when the logical source identity changes (a scene switch can
|
|
90
|
+
// reuse the node with a new sourceKind/deviceRef).
|
|
91
|
+
}, [sourceKind, deviceRef, resolveCaptureDevice]);
|
|
92
|
+
// Attach / detach the live stream to the <video> element imperatively —
|
|
93
|
+
// `srcObject` is not a serialisable attribute.
|
|
94
|
+
useEffect(() => {
|
|
95
|
+
const el = videoRef.current;
|
|
96
|
+
if (el === null)
|
|
97
|
+
return;
|
|
98
|
+
el.srcObject = stream;
|
|
99
|
+
return () => {
|
|
100
|
+
if (el !== null)
|
|
101
|
+
el.srcObject = null;
|
|
102
|
+
};
|
|
103
|
+
}, [stream]);
|
|
104
|
+
// ACQUIRE with a visual stream → render the <video>. Audio-only kinds keep
|
|
105
|
+
// the transparent box (no visible element) even when acquired.
|
|
106
|
+
if (stream !== null && isVisualKind(sourceKind)) {
|
|
107
|
+
return (_jsx("video", { ref: videoRef, "data-lumencast-capture": true, autoPlay: true, muted: true, playsInline: true, style: { width, height, objectFit: "cover", pointerEvents: "none" } }));
|
|
108
|
+
}
|
|
109
|
+
// PLACEHOLDER (or audio-only ACQUIRE) — fully transparent, inert box.
|
|
110
|
+
return (_jsx("div", { "aria-hidden": true, "data-lumencast-capture": true, style: { width, height, opacity: 0, pointerEvents: "none" } }));
|
|
111
|
+
}
|
|
112
|
+
/** §A1.2(2) — capture-capable iff `navigator.mediaDevices.getUserMedia`
|
|
113
|
+
* exists and is callable in the current context. Feature detection only ;
|
|
114
|
+
* CEF/Pulsar on-air and jsdom (without a mock) report non-capable. */
|
|
115
|
+
function isCaptureCapable() {
|
|
116
|
+
return (typeof navigator !== "undefined" &&
|
|
117
|
+
typeof navigator.mediaDevices?.getUserMedia === "function");
|
|
118
|
+
}
|
|
119
|
+
/** Visual kinds render a `<video>` ; audio kinds stay visually empty. */
|
|
120
|
+
function isVisualKind(sourceKind) {
|
|
121
|
+
return (sourceKind === "media.webcam" ||
|
|
122
|
+
sourceKind === "media.screen" ||
|
|
123
|
+
sourceKind === "media.window");
|
|
124
|
+
}
|
|
125
|
+
/** Acquire a live stream for `sourceKind`, applying a host-resolved `deviceId`
|
|
126
|
+
* when available. Returns `null` for an unsupported/unknown kind (→
|
|
127
|
+
* PLACEHOLDER) ; throws are caught by the caller (→ PLACEHOLDER fallback). */
|
|
128
|
+
async function acquireStream(sourceKind, deviceRef, resolveCaptureDevice) {
|
|
129
|
+
const md = navigator.mediaDevices;
|
|
130
|
+
// §A1.3 — a resolver maps the LOGICAL deviceRef to a physical deviceId. No
|
|
131
|
+
// resolver / `null` result → default constraints (no deviceId), so "the cam
|
|
132
|
+
// traverses" on the first pass. The deviceId is a live constraint only.
|
|
133
|
+
const resolved = resolveCaptureDevice?.(deviceRef, sourceKind) ?? null;
|
|
134
|
+
const deviceId = resolved?.deviceId;
|
|
135
|
+
switch (sourceKind) {
|
|
136
|
+
case "media.webcam":
|
|
137
|
+
return md.getUserMedia({ video: deviceConstraint(deviceId) });
|
|
138
|
+
case "media.mic":
|
|
139
|
+
return md.getUserMedia({ audio: deviceConstraint(deviceId) });
|
|
140
|
+
case "media.app_audio":
|
|
141
|
+
return md.getUserMedia({ audio: deviceConstraint(deviceId) });
|
|
142
|
+
case "media.screen":
|
|
143
|
+
case "media.window":
|
|
144
|
+
// Display capture has no deviceId constraint (the picker selects the
|
|
145
|
+
// surface). The resolver is consulted but its id is not applicable here.
|
|
146
|
+
return md.getDisplayMedia({ video: true });
|
|
147
|
+
default:
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/** A `getUserMedia` track constraint : a specific `deviceId` when resolved,
|
|
152
|
+
* else `true` (the host's default device). */
|
|
153
|
+
function deviceConstraint(deviceId) {
|
|
154
|
+
return typeof deviceId === "string" && deviceId.length > 0 ? { deviceId } : true;
|
|
155
|
+
}
|
|
156
|
+
/** Stop every track of a stream (RC11 — release the camera/mic, kill the
|
|
157
|
+
* device light). */
|
|
158
|
+
function stopStream(stream) {
|
|
159
|
+
for (const track of stream.getTracks())
|
|
160
|
+
track.stop();
|
|
161
|
+
}
|
|
162
|
+
/** A render dimension: a finite number → px, a non-empty string → verbatim,
|
|
163
|
+
* anything else → the fallback (matches the `image` primitive's helper). */
|
|
164
|
+
function dimOr(v, fallback) {
|
|
165
|
+
if (typeof v === "number" && Number.isFinite(v))
|
|
166
|
+
return `${v}px`;
|
|
167
|
+
if (typeof v === "string" && v.length > 0)
|
|
168
|
+
return v;
|
|
169
|
+
return fallback;
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=capture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../../../src/render/primitives/capture.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/render/primitives/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/render/primitives/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAc5D,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC;oEACgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,UAAU,GAAG,SAAS,CAAC;IACvD;;;;0EAIsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACjD;;;;;uEAKmE;IACnE,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,eAAO,MAAM,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC,CAWjF,CAAC"}
|
|
@@ -9,6 +9,7 @@ import { Image } from "./image";
|
|
|
9
9
|
import { Shape } from "./shape";
|
|
10
10
|
import { Media } from "./media";
|
|
11
11
|
import { Instance } from "./instance";
|
|
12
|
+
import { Capture } from "./capture";
|
|
12
13
|
export const PRIMITIVES = {
|
|
13
14
|
stack: Stack,
|
|
14
15
|
grid: Grid,
|
|
@@ -18,5 +19,7 @@ export const PRIMITIVES = {
|
|
|
18
19
|
shape: Shape,
|
|
19
20
|
media: Media,
|
|
20
21
|
instance: Instance,
|
|
22
|
+
// RFC-0001 / ADR 004 — Zab vendor capture placeholder (transparent, inert).
|
|
23
|
+
"x-zab.capture": Capture,
|
|
21
24
|
};
|
|
22
25
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/render/primitives/index.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,uEAAuE;AACvE,0DAA0D;AAK1D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/render/primitives/index.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,uEAAuE;AACvE,0DAA0D;AAK1D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BpC,MAAM,CAAC,MAAM,UAAU,GAA+D;IACpF,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,QAAQ;IAClB,4EAA4E;IAC5E,eAAe,EAAE,OAAO;CACzB,CAAC"}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import type { PrimitiveProps } from "./index";
|
|
2
2
|
/** Embedded video. `src`, `loop`, `mute`, `autoplay`. Audio is muted
|
|
3
3
|
* by default — broadcast audio is Pulsar-side, not from the browser
|
|
4
|
-
* source.
|
|
5
|
-
|
|
4
|
+
* source.
|
|
5
|
+
*
|
|
6
|
+
* Security (Bastion, ADR 003) : `src` is the media primitive's sole
|
|
7
|
+
* network sink (no `poster` / `<source>` / `<track>` are rendered). Like
|
|
8
|
+
* every other asset leaf (image / image-fill / mask) it MUST pass
|
|
9
|
+
* `gateSrc` BEFORE reaching the `<video>` — otherwise a `kind:"media"`
|
|
10
|
+
* node would make the headless Chromium of `zabrender` emit an
|
|
11
|
+
* off-allowlist request (an SSRF surface). A rejected host/scheme omits
|
|
12
|
+
* the source entirely (no passthrough), with an R9-clean diagnostic
|
|
13
|
+
* ({ nodeId, field, reason } — never the URL). */
|
|
14
|
+
export declare function Media({ resolved, nodeId }: PrimitiveProps): import("react/jsx-runtime").JSX.Element | null;
|
|
6
15
|
//# sourceMappingURL=media.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../src/render/primitives/media.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../src/render/primitives/media.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG9C;;;;;;;;;;;mDAWmD;AACnD,wBAAgB,KAAK,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,cAAc,kDAuBzD"}
|
|
@@ -1,9 +1,20 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { gateSrc, useAllowedHosts } from "../allowed-hosts";
|
|
2
3
|
/** Embedded video. `src`, `loop`, `mute`, `autoplay`. Audio is muted
|
|
3
4
|
* by default — broadcast audio is Pulsar-side, not from the browser
|
|
4
|
-
* source.
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
* source.
|
|
6
|
+
*
|
|
7
|
+
* Security (Bastion, ADR 003) : `src` is the media primitive's sole
|
|
8
|
+
* network sink (no `poster` / `<source>` / `<track>` are rendered). Like
|
|
9
|
+
* every other asset leaf (image / image-fill / mask) it MUST pass
|
|
10
|
+
* `gateSrc` BEFORE reaching the `<video>` — otherwise a `kind:"media"`
|
|
11
|
+
* node would make the headless Chromium of `zabrender` emit an
|
|
12
|
+
* off-allowlist request (an SSRF surface). A rejected host/scheme omits
|
|
13
|
+
* the source entirely (no passthrough), with an R9-clean diagnostic
|
|
14
|
+
* ({ nodeId, field, reason } — never the URL). */
|
|
15
|
+
export function Media({ resolved, nodeId }) {
|
|
16
|
+
const allowedHosts = useAllowedHosts();
|
|
17
|
+
const src = gateSrc(resolved.src, allowedHosts, "media.src", nodeId);
|
|
7
18
|
if (!src)
|
|
8
19
|
return null;
|
|
9
20
|
const loop = resolved.loop ?? true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../../src/render/primitives/media.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../../src/render/primitives/media.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE5D;;;;;;;;;;;mDAWmD;AACnD,MAAM,UAAU,KAAK,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAkB;IACxD,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IACrE,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,IAAI,GAAI,QAAQ,CAAC,IAA4B,IAAI,IAAI,CAAC;IAC5D,MAAM,IAAI,GAAI,QAAQ,CAAC,IAA4B,IAAI,IAAI,CAAC;IAC5D,MAAM,QAAQ,GAAI,QAAQ,CAAC,QAAgC,IAAI,IAAI,CAAC;IACpE,MAAM,GAAG,GAAI,QAAQ,CAAC,GAA0B,IAAI,OAAO,CAAC;IAE5D,OAAO,CACL,gBACE,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,IAAI,EACX,WAAW,QACX,KAAK,EAAE;YACL,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,GAAuC;SACnD,GACD,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prop-allowlist.d.ts","sourceRoot":"","sources":["../../src/render/prop-allowlist.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAkCvD,uEAAuE;AACvE,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"prop-allowlist.d.ts","sourceRoot":"","sources":["../../src/render/prop-allowlist.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAkCvD,uEAAuE;AACvE,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAsDtF,CAAC;AAgBF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAgBrD"}
|
|
@@ -94,6 +94,11 @@ export const PRIMITIVE_PROP_ALLOWLIST = {
|
|
|
94
94
|
]),
|
|
95
95
|
media: allow(["src", "loop", "mute", "autoplay", "fit"]),
|
|
96
96
|
instance: allow(["scene_id", "scene_version", "size", "position"]),
|
|
97
|
+
// RFC-0001 / ADR 004 — vendor capture placeholder. `width`/`height` are the
|
|
98
|
+
// flattened geometry (universal) ; the `x-zab.*` props are carried as
|
|
99
|
+
// metadata (the renderer reserves the box, ignores deviceRef). Listed so
|
|
100
|
+
// they are NOT flagged as silent drops by the anti-drop audit.
|
|
101
|
+
"x-zab.capture": allow(["x-zab.sourceKind", "x-zab.deviceRef", "width", "height"]),
|
|
97
102
|
// `repeat` is dispatched specially by the tree ; its only consumed
|
|
98
103
|
// binding is `items`.
|
|
99
104
|
repeat: new Set(["items"]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prop-allowlist.js","sourceRoot":"","sources":["../../src/render/prop-allowlist.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prop-allowlist.js","sourceRoot":"","sources":["../../src/render/prop-allowlist.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxs as c, jsx as s } from "react/jsx-runtime";
|
|
2
2
|
import { useSignals as g } from "@preact/signals-react/runtime";
|
|
3
|
-
import { u as d } from "./index-
|
|
3
|
+
import { u as d } from "./index-DrXsLYhe.js";
|
|
4
4
|
const f = {
|
|
5
5
|
position: "fixed",
|
|
6
6
|
bottom: 12,
|
|
@@ -238,4 +238,4 @@ export {
|
|
|
238
238
|
k as C,
|
|
239
239
|
w as S
|
|
240
240
|
};
|
|
241
|
-
//# sourceMappingURL=status-pill-
|
|
241
|
+
//# sourceMappingURL=status-pill-BxCdj-KZ.js.map
|