@lumencast/runtime 0.9.0 → 0.11.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.
Files changed (100) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/app.d.ts +6 -1
  3. package/dist/app.d.ts.map +1 -1
  4. package/dist/app.js +3 -1
  5. package/dist/app.js.map +1 -1
  6. package/dist/{broadcast-ryjLRD5q.js → broadcast-DtHoU_fS.js} +3 -3
  7. package/dist/{broadcast-ryjLRD5q.js.map → broadcast-DtHoU_fS.js.map} +1 -1
  8. package/dist/{control-AgxbXOVS.js → control-B9frEbNG.js} +4 -4
  9. package/dist/{control-AgxbXOVS.js.map → control-B9frEbNG.js.map} +1 -1
  10. package/dist/index-Dz27r92m.js +1327 -0
  11. package/dist/index-Dz27r92m.js.map +1 -0
  12. package/dist/index.d.ts +3 -0
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.html +1 -1
  15. package/dist/index.js +16 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/lumencast.js +21 -12
  18. package/dist/mount.d.ts.map +1 -1
  19. package/dist/mount.js +22 -0
  20. package/dist/mount.js.map +1 -1
  21. package/dist/overlay/runtime-context.d.ts +10 -0
  22. package/dist/overlay/runtime-context.d.ts.map +1 -1
  23. package/dist/overlay/runtime-context.js.map +1 -1
  24. package/dist/render/bundle.d.ts +1 -1
  25. package/dist/render/bundle.d.ts.map +1 -1
  26. package/dist/render/bundle.js.map +1 -1
  27. package/dist/render/primitives/capture.d.ts +13 -4
  28. package/dist/render/primitives/capture.d.ts.map +1 -1
  29. package/dist/render/primitives/capture.js +54 -22
  30. package/dist/render/primitives/capture.js.map +1 -1
  31. package/dist/render/primitives/index.d.ts.map +1 -1
  32. package/dist/render/primitives/index.js +10 -0
  33. package/dist/render/primitives/index.js.map +1 -1
  34. package/dist/render/primitives/live-peer-video.d.ts +27 -0
  35. package/dist/render/primitives/live-peer-video.d.ts.map +1 -0
  36. package/dist/render/primitives/live-peer-video.js +64 -0
  37. package/dist/render/primitives/live-peer-video.js.map +1 -0
  38. package/dist/render/primitives/media.d.ts +37 -12
  39. package/dist/render/primitives/media.d.ts.map +1 -1
  40. package/dist/render/primitives/media.js +43 -17
  41. package/dist/render/primitives/media.js.map +1 -1
  42. package/dist/render/primitives/meet-peer-slot.d.ts +29 -0
  43. package/dist/render/primitives/meet-peer-slot.d.ts.map +1 -0
  44. package/dist/render/primitives/meet-peer-slot.js +46 -0
  45. package/dist/render/primitives/meet-peer-slot.js.map +1 -0
  46. package/dist/render/primitives/meet-peer.d.ts +31 -0
  47. package/dist/render/primitives/meet-peer.d.ts.map +1 -0
  48. package/dist/render/primitives/meet-peer.js +46 -0
  49. package/dist/render/primitives/meet-peer.js.map +1 -0
  50. package/dist/render/prop-allowlist.d.ts.map +1 -1
  51. package/dist/render/prop-allowlist.js +27 -1
  52. package/dist/render/prop-allowlist.js.map +1 -1
  53. package/dist/render/tree.js +42 -8
  54. package/dist/render/tree.js.map +1 -1
  55. package/dist/state/reserved-leaves.d.ts +37 -0
  56. package/dist/state/reserved-leaves.d.ts.map +1 -0
  57. package/dist/state/reserved-leaves.js +96 -0
  58. package/dist/state/reserved-leaves.js.map +1 -0
  59. package/dist/{status-pill-BxCdj-KZ.js → status-pill-B2vBTwRC.js} +2 -2
  60. package/dist/{status-pill-BxCdj-KZ.js.map → status-pill-B2vBTwRC.js.map} +1 -1
  61. package/dist/{test-CaRHj_J6.js → test-DD2SBDku.js} +4 -4
  62. package/dist/{test-CaRHj_J6.js.map → test-DD2SBDku.js.map} +1 -1
  63. package/dist/{tree-BLIxJbD3.js → tree-CgU_sUwI.js} +581 -479
  64. package/dist/tree-CgU_sUwI.js.map +1 -0
  65. package/dist/types.d.ts +25 -0
  66. package/dist/types.d.ts.map +1 -1
  67. package/dist/webrtc/index.d.ts +76 -0
  68. package/dist/webrtc/index.d.ts.map +1 -0
  69. package/dist/webrtc/index.js +180 -0
  70. package/dist/webrtc/index.js.map +1 -0
  71. package/dist/webrtc/meet-viewer.d.ts +139 -0
  72. package/dist/webrtc/meet-viewer.d.ts.map +1 -0
  73. package/dist/webrtc/meet-viewer.js +379 -0
  74. package/dist/webrtc/meet-viewer.js.map +1 -0
  75. package/dist/webrtc/peer-stream-registry.d.ts +21 -0
  76. package/dist/webrtc/peer-stream-registry.d.ts.map +1 -0
  77. package/dist/webrtc/peer-stream-registry.js +77 -0
  78. package/dist/webrtc/peer-stream-registry.js.map +1 -0
  79. package/package.json +4 -4
  80. package/src/app.tsx +9 -0
  81. package/src/index.ts +47 -0
  82. package/src/mount.ts +23 -0
  83. package/src/overlay/runtime-context.tsx +10 -0
  84. package/src/render/bundle.ts +11 -1
  85. package/src/render/primitives/capture.tsx +73 -28
  86. package/src/render/primitives/index.ts +10 -0
  87. package/src/render/primitives/live-peer-video.tsx +90 -0
  88. package/src/render/primitives/media.tsx +66 -17
  89. package/src/render/primitives/meet-peer-slot.tsx +55 -0
  90. package/src/render/primitives/meet-peer.tsx +57 -0
  91. package/src/render/prop-allowlist.ts +27 -1
  92. package/src/render/tree.tsx +44 -8
  93. package/src/state/reserved-leaves.ts +121 -0
  94. package/src/types.ts +25 -0
  95. package/src/webrtc/index.ts +252 -0
  96. package/src/webrtc/meet-viewer.ts +497 -0
  97. package/src/webrtc/peer-stream-registry.ts +93 -0
  98. package/dist/index-DrXsLYhe.js +0 -903
  99. package/dist/index-DrXsLYhe.js.map +0 -1
  100. package/dist/tree-BLIxJbD3.js.map +0 -1
@@ -0,0 +1,29 @@
1
+ import type { PrimitiveProps } from "./index";
2
+ /** `x-zab.meet-peer` — the transparent meet-peer SLOT placeholder (Zab vendor
3
+ * primitive, ADR Blue 009 §3.1 Amendment 2 ; type shipped in v0.10.0 / #81).
4
+ *
5
+ * Distinct from `meet.peer` (the cam-identity source) : this node carries NO
6
+ * peer identity, only a hash-stable LOGICAL `x-zab.slotRef` (e.g. `cam-caster-1`)
7
+ * + geometry. WHICH `peer_label` fills a slot is RUNTIME, stream-level ZabCam
8
+ * state — never baked in the scene. The slot→peer binding is ported by Orion on
9
+ * the LSDP as `__cam.slots.<slotRef>` = "<peer_label>" (§3.3) and re-keyed into
10
+ * the host's peer-stream registry (Solar `slot-binding.ts`) so the registry
11
+ * resolves `slotRef → peer_label → MediaStream`.
12
+ *
13
+ * Contract (rendered verbatim) :
14
+ * - `x-zab.slotRef` (string) — the SLOT REFERENCE, used as the resolver KEY.
15
+ * The host's peer-stream resolver (`resolvePeerStream`/`subscribePeerStream`)
16
+ * is keyed by `slotRef` on the antenne (Solar's slot-aware registry maps it
17
+ * to a `peer_label`, then to a stream). Empty / missing → a transparent inert
18
+ * box (the slot is not addressable).
19
+ * - geometry (`width`/`height` + position) — applied by the Tree's
20
+ * UniversalWrapper, exactly like `meet.peer` ; the `<video>` fills the box
21
+ * 100%/100% and is never forced full-screen (RC-Geo).
22
+ *
23
+ * Receive-only : the slot reads its stream through the host viewer (Solar joins
24
+ * the room and owns the peer connections / track lifecycle) ; the primitive
25
+ * carries no creds and never mutates the scene (RC-ReadOnly). An UNBOUND slot
26
+ * (no `__cam.slots.*` assignment) or a not-yet-connected peer → a transparent
27
+ * placeholder, no throw, no diagnostic (R3). */
28
+ export declare function MeetPeerSlot({ resolved }: PrimitiveProps): import("react/jsx-runtime").JSX.Element;
29
+ //# sourceMappingURL=meet-peer-slot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meet-peer-slot.d.ts","sourceRoot":"","sources":["../../../src/render/primitives/meet-peer-slot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG9C;;;;;;;;;;;;;;;;;;;;;;;;;iDAyBiD;AACjD,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE,cAAc,2CAyBxD"}
@@ -0,0 +1,46 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { LivePeerVideo } from "./live-peer-video";
3
+ /** `x-zab.meet-peer` — the transparent meet-peer SLOT placeholder (Zab vendor
4
+ * primitive, ADR Blue 009 §3.1 Amendment 2 ; type shipped in v0.10.0 / #81).
5
+ *
6
+ * Distinct from `meet.peer` (the cam-identity source) : this node carries NO
7
+ * peer identity, only a hash-stable LOGICAL `x-zab.slotRef` (e.g. `cam-caster-1`)
8
+ * + geometry. WHICH `peer_label` fills a slot is RUNTIME, stream-level ZabCam
9
+ * state — never baked in the scene. The slot→peer binding is ported by Orion on
10
+ * the LSDP as `__cam.slots.<slotRef>` = "<peer_label>" (§3.3) and re-keyed into
11
+ * the host's peer-stream registry (Solar `slot-binding.ts`) so the registry
12
+ * resolves `slotRef → peer_label → MediaStream`.
13
+ *
14
+ * Contract (rendered verbatim) :
15
+ * - `x-zab.slotRef` (string) — the SLOT REFERENCE, used as the resolver KEY.
16
+ * The host's peer-stream resolver (`resolvePeerStream`/`subscribePeerStream`)
17
+ * is keyed by `slotRef` on the antenne (Solar's slot-aware registry maps it
18
+ * to a `peer_label`, then to a stream). Empty / missing → a transparent inert
19
+ * box (the slot is not addressable).
20
+ * - geometry (`width`/`height` + position) — applied by the Tree's
21
+ * UniversalWrapper, exactly like `meet.peer` ; the `<video>` fills the box
22
+ * 100%/100% and is never forced full-screen (RC-Geo).
23
+ *
24
+ * Receive-only : the slot reads its stream through the host viewer (Solar joins
25
+ * the room and owns the peer connections / track lifecycle) ; the primitive
26
+ * carries no creds and never mutates the scene (RC-ReadOnly). An UNBOUND slot
27
+ * (no `__cam.slots.*` assignment) or a not-yet-connected peer → a transparent
28
+ * placeholder, no throw, no diagnostic (R3). */
29
+ export function MeetPeerSlot({ resolved }) {
30
+ const slotRef = typeof resolved["x-zab.slotRef"] === "string" &&
31
+ resolved["x-zab.slotRef"].length > 0
32
+ ? resolved["x-zab.slotRef"]
33
+ : "";
34
+ // No slotRef → not addressable : a transparent inert box of the wrapper
35
+ // geometry (no throw, no diagnostic), exactly like an unbound slot.
36
+ if (slotRef === "") {
37
+ return (_jsx("div", { "aria-hidden": true, "data-lumencast-meet-peer-slot": true, style: { width: "100%", height: "100%", opacity: 0, pointerEvents: "none" } }));
38
+ }
39
+ // Key the peer-viewer resolver by `slotRef` (NOT a peer_label). The shared
40
+ // `LivePeerVideo` is resolver-key agnostic : it passes its `peerLabel` prop
41
+ // straight to `resolvePeerStream`/`subscribePeerStream`, and the host's
42
+ // slot-aware registry translates the slotRef to the bound peer's stream. An
43
+ // unbound slot resolves to `null` → the transparent placeholder.
44
+ return _jsx(LivePeerVideo, { peerLabel: slotRef, objectFit: "cover", muted: true });
45
+ }
46
+ //# sourceMappingURL=meet-peer-slot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meet-peer-slot.js","sourceRoot":"","sources":["../../../src/render/primitives/meet-peer-slot.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;iDAyBiD;AACjD,MAAM,UAAU,YAAY,CAAC,EAAE,QAAQ,EAAkB;IACvD,MAAM,OAAO,GACX,OAAO,QAAQ,CAAC,eAAe,CAAC,KAAK,QAAQ;QAC5C,QAAQ,CAAC,eAAe,CAAY,CAAC,MAAM,GAAG,CAAC;QAC9C,CAAC,CAAE,QAAQ,CAAC,eAAe,CAAY;QACvC,CAAC,CAAC,EAAE,CAAC;IAET,wEAAwE;IACxE,oEAAoE;IACpE,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QACnB,OAAO,CACL,0EAGE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,GAC3E,CACH,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,4EAA4E;IAC5E,wEAAwE;IACxE,4EAA4E;IAC5E,iEAAiE;IACjE,OAAO,KAAC,aAAa,IAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAC,OAAO,EAAC,KAAK,SAAG,CAAC;AACvE,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { PrimitiveProps } from "./index";
2
+ /** `meet.peer` — the UNIFIED source primitive (ADR 006 §3.3/§3.5). Every source
3
+ * that crosses the Prism export (cam, screen, game_capture, …) arrives as a
4
+ * single `meet.peer` LSML node ; this is the ONE renderer for all of them — not
5
+ * a special-case path. It generalises the `media` primitive's live mode (#4) to
6
+ * the source abstraction : read `peer_label`, resolve the peer's `MediaStream`
7
+ * through the host viewer (#3), and paint it in `<video srcObject>` constrained
8
+ * to the node's box.
9
+ *
10
+ * Contract (rendered verbatim, ADR §3.3 — no variation) :
11
+ * - `peer_label` (string) — the STREAM REFERENCE. Resolved `peer_label →
12
+ * MediaStream` via `subscribePeerStream`/`resolvePeerStream`. Empty / missing
13
+ * → a transparent inert box (the source is not addressable).
14
+ * - `x-zab.sourceKind` (string) — ADVISORY only. Rendering is UNIFORM whatever
15
+ * the kind ; at most it could hint audio-only, but Phase 0 paints every
16
+ * visual source identically.
17
+ * - `object_fit` ("cover"|"contain"|"fill") — how the video fills the box.
18
+ * - `muted` (bool, optional) — audio playout hint (default muted ; broadcast
19
+ * audio is Pulsar-side).
20
+ * - `position{x,y}` + `size{w,h}` — geometry via the Tree's UniversalWrapper
21
+ * (compiler-flattened to `x/y/width/height`). Z-ORDER = sibling order (cam
22
+ * over game = two ordered `meet.peer` nodes — no special z handling here).
23
+ * - `metadata.figma` — advisory (editor round-trip), never read for rendering.
24
+ *
25
+ * RC-Geo : the `<video>` fills `100%`/`100%` of the wrapper box at the exact
26
+ * authored geometry / `object_fit` — never forced full-screen (the geometry is
27
+ * on the wrapper, not the video). RC-ReadOnly : the primitive only READS
28
+ * `resolved` ; it never writes geometry or any field back to the scene. An
29
+ * unconnected peer → transparent inert box, no throw, no diagnostic. */
30
+ export declare function MeetPeer({ resolved }: PrimitiveProps): import("react/jsx-runtime").JSX.Element;
31
+ //# sourceMappingURL=meet-peer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meet-peer.d.ts","sourceRoot":"","sources":["../../../src/render/primitives/meet-peer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG9C;;;;;;;;;;;;;;;;;;;;;;;;;;;yEA2ByE;AACzE,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,cAAc,2CAyBpD"}
@@ -0,0 +1,46 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { LivePeerVideo } from "./live-peer-video";
3
+ /** `meet.peer` — the UNIFIED source primitive (ADR 006 §3.3/§3.5). Every source
4
+ * that crosses the Prism export (cam, screen, game_capture, …) arrives as a
5
+ * single `meet.peer` LSML node ; this is the ONE renderer for all of them — not
6
+ * a special-case path. It generalises the `media` primitive's live mode (#4) to
7
+ * the source abstraction : read `peer_label`, resolve the peer's `MediaStream`
8
+ * through the host viewer (#3), and paint it in `<video srcObject>` constrained
9
+ * to the node's box.
10
+ *
11
+ * Contract (rendered verbatim, ADR §3.3 — no variation) :
12
+ * - `peer_label` (string) — the STREAM REFERENCE. Resolved `peer_label →
13
+ * MediaStream` via `subscribePeerStream`/`resolvePeerStream`. Empty / missing
14
+ * → a transparent inert box (the source is not addressable).
15
+ * - `x-zab.sourceKind` (string) — ADVISORY only. Rendering is UNIFORM whatever
16
+ * the kind ; at most it could hint audio-only, but Phase 0 paints every
17
+ * visual source identically.
18
+ * - `object_fit` ("cover"|"contain"|"fill") — how the video fills the box.
19
+ * - `muted` (bool, optional) — audio playout hint (default muted ; broadcast
20
+ * audio is Pulsar-side).
21
+ * - `position{x,y}` + `size{w,h}` — geometry via the Tree's UniversalWrapper
22
+ * (compiler-flattened to `x/y/width/height`). Z-ORDER = sibling order (cam
23
+ * over game = two ordered `meet.peer` nodes — no special z handling here).
24
+ * - `metadata.figma` — advisory (editor round-trip), never read for rendering.
25
+ *
26
+ * RC-Geo : the `<video>` fills `100%`/`100%` of the wrapper box at the exact
27
+ * authored geometry / `object_fit` — never forced full-screen (the geometry is
28
+ * on the wrapper, not the video). RC-ReadOnly : the primitive only READS
29
+ * `resolved` ; it never writes geometry or any field back to the scene. An
30
+ * unconnected peer → transparent inert box, no throw, no diagnostic. */
31
+ export function MeetPeer({ resolved }) {
32
+ const peerLabel = typeof resolved.peer_label === "string" && resolved.peer_label.length > 0
33
+ ? resolved.peer_label
34
+ : "";
35
+ // Empty / missing label → not addressable yet : a transparent inert box of the
36
+ // wrapper geometry, exactly like an unconnected peer (no throw, no diagnostic).
37
+ if (peerLabel === "") {
38
+ return (_jsx("div", { "aria-hidden": true, "data-lumencast-meet-peer": true, style: { width: "100%", height: "100%", opacity: 0, pointerEvents: "none" } }));
39
+ }
40
+ const objectFit = typeof resolved.object_fit === "string" && resolved.object_fit.length > 0
41
+ ? resolved.object_fit
42
+ : "cover";
43
+ const muted = resolved.muted === undefined ? true : resolved.muted !== false;
44
+ return _jsx(LivePeerVideo, { peerLabel: peerLabel, objectFit: objectFit, muted: muted });
45
+ }
46
+ //# sourceMappingURL=meet-peer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meet-peer.js","sourceRoot":"","sources":["../../../src/render/primitives/meet-peer.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;yEA2ByE;AACzE,MAAM,UAAU,QAAQ,CAAC,EAAE,QAAQ,EAAkB;IACnD,MAAM,SAAS,GACb,OAAO,QAAQ,CAAC,UAAU,KAAK,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;QACvE,CAAC,CAAC,QAAQ,CAAC,UAAU;QACrB,CAAC,CAAC,EAAE,CAAC;IAET,+EAA+E;IAC/E,gFAAgF;IAChF,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;QACrB,OAAO,CACL,qEAGE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,GAC3E,CACH,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GACb,OAAO,QAAQ,CAAC,UAAU,KAAK,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;QACvE,CAAC,CAAC,QAAQ,CAAC,UAAU;QACrB,CAAC,CAAC,OAAO,CAAC;IACd,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,KAAK,KAAK,CAAC;IAE7E,OAAO,KAAC,aAAa,IAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAI,CAAC;AACrF,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,CAsDtF,CAAC;AAgBF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAgBrD"}
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,CAgFtF,CAAC;AAgBF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAgBrD"}
@@ -92,13 +92,39 @@ export const PRIMITIVE_PROP_ALLOWLIST = {
92
92
  "paths",
93
93
  "ariaLabel",
94
94
  ]),
95
- media: allow(["src", "loop", "mute", "autoplay", "fit"]),
95
+ // `peerLabel` (ADR 006 #4) selects the live MediaStream mode : a node whose
96
+ // source is a `meet.peer.peer_label` is rendered in `srcObject` from a host
97
+ // resolver instead of `<video src>`. Listed so it is NOT flagged as a silent
98
+ // drop by the anti-drop audit when a scene carries a live source.
99
+ media: allow(["src", "peerLabel", "loop", "mute", "autoplay", "fit"]),
100
+ // ADR 006 §3.3/§3.5 — the unified source kind. `peer_label` is the stream
101
+ // reference (resolved to a MediaStream → srcObject) ; `object_fit`/`muted`
102
+ // drive the video ; `x-zab.sourceKind` is advisory ; `metadata` carries the
103
+ // editor round-trip (figma). Geometry is universal as flat `x/y/width/height`,
104
+ // but an UNCOMPILED from-scene node carries the NESTED `position`/`size` shape
105
+ // (the Tree flattens it as a fallback) — listed so neither form is flagged as
106
+ // a silent drop by the anti-drop audit.
107
+ "meet.peer": allow([
108
+ "peer_label",
109
+ "object_fit",
110
+ "muted",
111
+ "x-zab.sourceKind",
112
+ "metadata",
113
+ "position",
114
+ "size",
115
+ ]),
96
116
  instance: allow(["scene_id", "scene_version", "size", "position"]),
97
117
  // RFC-0001 / ADR 004 — vendor capture placeholder. `width`/`height` are the
98
118
  // flattened geometry (universal) ; the `x-zab.*` props are carried as
99
119
  // metadata (the renderer reserves the box, ignores deviceRef). Listed so
100
120
  // they are NOT flagged as silent drops by the anti-drop audit.
101
121
  "x-zab.capture": allow(["x-zab.sourceKind", "x-zab.deviceRef", "width", "height"]),
122
+ // ADR Blue 009 §3.1 (Amendment 2) — vendor meet-peer SLOT placeholder.
123
+ // `width`/`height` are the flattened geometry (universal) ; `x-zab.slotRef`
124
+ // is the logical slot identity carried as metadata (the runtime resolves
125
+ // `slotRef → peer_label` from stream-level ZabCam state). NO cam/peer
126
+ // identity is carried. Listed so they are NOT flagged as silent drops.
127
+ "x-zab.meet-peer": allow(["x-zab.slotRef", "width", "height"]),
102
128
  // `repeat` is dispatched specially by the tree ; its only consumed
103
129
  // binding is `items`.
104
130
  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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"}
@@ -253,20 +253,47 @@ function finite(v) {
253
253
  * the compiler-flattened `resolved.x`/`resolved.y`. BOTH axes must be
254
254
  * finite numbers : a partial or malformed pair yields `undefined` (the
255
255
  * node stays in the normal flow — RC#3 mistyped-position is inert, not
256
- * injected). Values are plain numbers, never untrusted strings. */
256
+ * injected). Values are plain numbers, never untrusted strings.
257
+ *
258
+ * ADR 006 §3.3 — a `meet.peer` node produced DIRECTLY by the Prism from-scene
259
+ * export bypasses `@lumencast/compiler`, so its geometry arrives in the NESTED
260
+ * LSML shape (`position:{x,y}`) rather than flattened `x`/`y`. We accept that
261
+ * nested form as a fallback ONLY when the flat form is absent. This is purely
262
+ * additive : every compiled bundle always carries flat `x`/`y` (which win), so
263
+ * no existing node's placement changes. */
257
264
  function extractPosition(resolved) {
258
- const x = finite(resolved.x);
259
- const y = finite(resolved.y);
265
+ let x = finite(resolved.x);
266
+ let y = finite(resolved.y);
267
+ if (x === undefined && y === undefined) {
268
+ const nested = resolved.position;
269
+ if (nested && typeof nested === "object") {
270
+ x = finite(nested.x);
271
+ y = finite(nested.y);
272
+ }
273
+ }
260
274
  if (x === undefined || y === undefined)
261
275
  return undefined;
262
276
  return { x, y };
263
277
  }
264
278
  /** ADR 002 §3.1 (D1) — the absolute box size from `resolved.width`/
265
279
  * `resolved.height`. Only meaningful alongside `position` (the wrapper
266
- * ignores it otherwise). Partial sizes are allowed (one axis hugs). */
280
+ * ignores it otherwise). Partial sizes are allowed (one axis hugs).
281
+ *
282
+ * ADR 006 §3.3 — like `extractPosition`, accept the NESTED `size:{w,h}` shape
283
+ * as a fallback for an uncompiled `meet.peer` node (flat `width`/`height`
284
+ * always win when present, so compiled bundles are unaffected). Without this,
285
+ * the `meet.peer` wrapper got a position but NO size → the `<video>` filled a
286
+ * collapsed box instead of the authored geometry (the observed RC-Geo bug). */
267
287
  function extractSize(resolved) {
268
- const w = finite(resolved.width);
269
- const h = finite(resolved.height);
288
+ let w = finite(resolved.width);
289
+ let h = finite(resolved.height);
290
+ if (w === undefined && h === undefined) {
291
+ const nested = resolved.size;
292
+ if (nested && typeof nested === "object") {
293
+ w = finite(nested.w);
294
+ h = finite(nested.h);
295
+ }
296
+ }
270
297
  if (w === undefined && h === undefined)
271
298
  return undefined;
272
299
  return { w, h };
@@ -281,8 +308,15 @@ function childIsAbsolute(child) {
281
308
  return false; // a frame positions itself
282
309
  const props = child.props ?? {};
283
310
  const bindings = child.bindings ?? {};
284
- const hasX = finite(props.x) !== undefined || "x" in bindings;
285
- const hasY = finite(props.y) !== undefined || "y" in bindings;
311
+ // ADR 006 §3.3 also recognise the nested `position:{x,y}` shape (an
312
+ // uncompiled `meet.peer` node), mirroring extractPosition's fallback.
313
+ const nested = props.position;
314
+ const hasX = finite(props.x) !== undefined ||
315
+ "x" in bindings ||
316
+ (nested ? finite(nested.x) !== undefined : false);
317
+ const hasY = finite(props.y) !== undefined ||
318
+ "y" in bindings ||
319
+ (nested ? finite(nested.y) !== undefined : false);
286
320
  return hasX && hasY;
287
321
  }
288
322
  function Repeat({ node, store }) {
@@ -1 +1 @@
1
- {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/render/tree.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/render/tree.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /** Every reserved cam leaf lives under this prefix. */
2
+ export declare const CAM_RESERVED_PREFIX = "__cam.";
3
+ /** One scalar leaf per bound slot : `__cam.slots.<slotRef>` = "<peer_label>"
4
+ * (ADR Blue 009 §3.3). Mirrors Solar's `CAM_SLOTS_PREFIX` — keep them in sync. */
5
+ export declare const CAM_SLOTS_PREFIX = "__cam.slots.";
6
+ /** The single viewer-credentials leaf (ADR Blue 009 §3.2, Orion #268). */
7
+ export declare const CAM_VIEWER_LEAF = "__cam.viewer";
8
+ /** The reserved cam state surfaced to the host in one shot on every change. */
9
+ export interface ReservedCamLeaves {
10
+ /** `__cam.viewer` — receive-only viewer creds for the active stream. Opaque to
11
+ * the runtime (shape `{ rooms: [{ signalingUrl, roomId, token }] }` validated
12
+ * host-side) ; `undefined` when the leaf is absent. */
13
+ viewer?: unknown;
14
+ /** `slotRef → peer_label` snapshot from the `__cam.slots.*` subtree. A slot
15
+ * ABSENT from this map is UNBOUND — the host releases it (`assign(slotRef,
16
+ * null)`) so the `x-zab.meet-peer` node falls back to its placeholder. Only
17
+ * non-empty string values are kept. */
18
+ slots: Record<string, string>;
19
+ }
20
+ /** A reserved cam leaf the runtime forwards rather than renders. */
21
+ export declare function isReservedCamPath(path: string): boolean;
22
+ export interface ReservedLeafObserver {
23
+ /** Reseed from a full snapshot's state (reserved leaves not present are
24
+ * dropped). Emits when the projected state changed. */
25
+ onSnapshot(state: Record<string, unknown>): void;
26
+ /** Apply a delta's patches ; emits only when a reserved leaf actually moved. */
27
+ onDelta(patches: ReadonlyArray<{
28
+ path: string;
29
+ value: unknown;
30
+ }>): void;
31
+ }
32
+ /** Track the reserved `__cam.*` leaves across snapshots + deltas and `emit` the
33
+ * host-facing projection whenever it changes (de-duplicated by content, so an
34
+ * unrelated scene's deltas never call back). Created only when the host supplies
35
+ * `onReservedLeaves` — zero cost otherwise. */
36
+ export declare function createReservedLeafObserver(emit: (leaves: ReservedCamLeaves) => void): ReservedLeafObserver;
37
+ //# sourceMappingURL=reserved-leaves.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reserved-leaves.d.ts","sourceRoot":"","sources":["../../src/state/reserved-leaves.ts"],"names":[],"mappings":"AAkBA,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAE5C;mFACmF;AACnF,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,0EAA0E;AAC1E,eAAO,MAAM,eAAe,iBAAiB,CAAC;AAE9C,+EAA+E;AAC/E,MAAM,WAAW,iBAAiB;IAChC;;4DAEwD;IACxD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;4CAGwC;IACxC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,oEAAoE;AACpE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvD;AA6BD,MAAM,WAAW,oBAAoB;IACnC;4DACwD;IACxD,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACjD,gFAAgF;IAChF,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;CACzE;AAED;;;gDAGgD;AAChD,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,GACxC,oBAAoB,CAiCtB"}
@@ -0,0 +1,96 @@
1
+ // Reserved `__cam.*` LSDP leaves — surfaced to the host, never rendered.
2
+ //
3
+ // ADR Blue 009 §3.2–3.3 (axe 1, antenne). The meet-cam antenne path needs two
4
+ // pieces of RUNTIME, stream-level ZabCam state that travel on the LSDP wire as
5
+ // RESERVED leaves (they bind to no node and are never painted) :
6
+ //
7
+ // - `__cam.slots.<slotRef>` = "<peer_label>" (Orion #267 deltas, §3.3)
8
+ // which peer currently fills an authored `x-zab.meet-peer` slot.
9
+ // - `__cam.viewer` = { rooms: [{ signalingUrl, roomId, token }] } (Orion #268)
10
+ // the receive-only viewer credentials for the active stream.
11
+ //
12
+ // The runtime does NOT join rooms, hold creds, or re-key slots itself — that is
13
+ // the host's WebRTC viewer (Solar `peer-viewer/*`). The runtime's only job is to
14
+ // SURFACE these reserved leaves to the host through `MountOptions.onReservedLeaves`
15
+ // so Solar can feed `__cam.viewer` into its viewer injection and drive its
16
+ // slot-binding registry's `assign(slotRef, peer_label | null)` from `__cam.slots.*`.
17
+ // Receive-only : the token flows host→viewer→join ; the runtime never reads it.
18
+ /** Every reserved cam leaf lives under this prefix. */
19
+ export const CAM_RESERVED_PREFIX = "__cam.";
20
+ /** One scalar leaf per bound slot : `__cam.slots.<slotRef>` = "<peer_label>"
21
+ * (ADR Blue 009 §3.3). Mirrors Solar's `CAM_SLOTS_PREFIX` — keep them in sync. */
22
+ export const CAM_SLOTS_PREFIX = "__cam.slots.";
23
+ /** The single viewer-credentials leaf (ADR Blue 009 §3.2, Orion #268). */
24
+ export const CAM_VIEWER_LEAF = "__cam.viewer";
25
+ /** A reserved cam leaf the runtime forwards rather than renders. */
26
+ export function isReservedCamPath(path) {
27
+ return path === CAM_VIEWER_LEAF || path.startsWith(CAM_SLOTS_PREFIX);
28
+ }
29
+ /** Project a raw reserved-leaf state into the host-facing shape. Defensive : a
30
+ * malformed slot value (non-string / empty) or empty slotRef is dropped. */
31
+ function project(raw) {
32
+ const slots = {};
33
+ let viewer;
34
+ for (const [path, value] of raw) {
35
+ if (path === CAM_VIEWER_LEAF) {
36
+ if (value !== undefined && value !== null)
37
+ viewer = value;
38
+ }
39
+ else if (path.startsWith(CAM_SLOTS_PREFIX)) {
40
+ const slotRef = path.slice(CAM_SLOTS_PREFIX.length);
41
+ if (slotRef !== "" && typeof value === "string" && value !== "")
42
+ slots[slotRef] = value;
43
+ }
44
+ }
45
+ return viewer !== undefined ? { viewer, slots } : { slots };
46
+ }
47
+ /** A stable identity key for change detection — two `ReservedCamLeaves` with the
48
+ * same content always produce the same key regardless of insertion order. */
49
+ function identity(leaves) {
50
+ const slots = Object.keys(leaves.slots)
51
+ .sort()
52
+ .map((k) => `${k}=${leaves.slots[k]}`)
53
+ .join("&");
54
+ const viewer = leaves.viewer === undefined ? "" : JSON.stringify(leaves.viewer);
55
+ return `${slots}|${viewer}`;
56
+ }
57
+ /** Track the reserved `__cam.*` leaves across snapshots + deltas and `emit` the
58
+ * host-facing projection whenever it changes (de-duplicated by content, so an
59
+ * unrelated scene's deltas never call back). Created only when the host supplies
60
+ * `onReservedLeaves` — zero cost otherwise. */
61
+ export function createReservedLeafObserver(emit) {
62
+ const raw = new Map();
63
+ // Seed with the empty projection's identity so a plain scene (no cam leaves)
64
+ // never fires a spurious empty emit ; a later transition to/from cam state does.
65
+ let last = identity({ slots: {} });
66
+ const flush = () => {
67
+ const leaves = project(raw);
68
+ const key = identity(leaves);
69
+ if (key === last)
70
+ return;
71
+ last = key;
72
+ emit(leaves);
73
+ };
74
+ return {
75
+ onSnapshot(state) {
76
+ raw.clear();
77
+ for (const [path, value] of Object.entries(state)) {
78
+ if (isReservedCamPath(path))
79
+ raw.set(path, value);
80
+ }
81
+ flush();
82
+ },
83
+ onDelta(patches) {
84
+ let touched = false;
85
+ for (const patch of patches) {
86
+ if (isReservedCamPath(patch.path)) {
87
+ raw.set(patch.path, patch.value);
88
+ touched = true;
89
+ }
90
+ }
91
+ if (touched)
92
+ flush();
93
+ },
94
+ };
95
+ }
96
+ //# sourceMappingURL=reserved-leaves.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reserved-leaves.js","sourceRoot":"","sources":["../../src/state/reserved-leaves.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-DrXsLYhe.js";
3
+ import { u as d } from "./index-Dz27r92m.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-BxCdj-KZ.js.map
241
+ //# sourceMappingURL=status-pill-B2vBTwRC.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"status-pill-BxCdj-KZ.js","sources":["../src/overlay/control.tsx","../src/overlay/status-pill.tsx"],"sourcesContent":["import { useSignals } from \"@preact/signals-react/runtime\";\nimport type { OperatorInput } from \"../render/bundle\";\nimport { useLumencastRuntime } from \"./runtime-context\";\n\nconst PANEL_STYLE: React.CSSProperties = {\n position: \"fixed\",\n bottom: 12,\n left: 12,\n zIndex: 100_000,\n width: 320,\n maxHeight: \"70vh\",\n overflowY: \"auto\",\n padding: 12,\n fontFamily: \"system-ui, -apple-system, BlinkMacSystemFont, sans-serif\",\n fontSize: 12,\n color: \"#e5e7eb\",\n background: \"rgba(17, 24, 39, 0.92)\",\n border: \"1px solid rgba(75, 85, 99, 0.6)\",\n borderRadius: 10,\n boxShadow: \"0 8px 32px rgba(0, 0, 0, 0.45)\",\n};\n\nconst ROW_STYLE: React.CSSProperties = {\n display: \"flex\",\n flexDirection: \"column\",\n gap: 4,\n padding: \"6px 0\",\n borderBottom: \"1px solid rgba(75, 85, 99, 0.35)\",\n};\n\nconst LABEL_STYLE: React.CSSProperties = {\n color: \"#9ca3af\",\n fontSize: 10.5,\n letterSpacing: \"0.02em\",\n textTransform: \"uppercase\",\n};\n\nconst INPUT_STYLE: React.CSSProperties = {\n background: \"rgba(31, 41, 55, 0.8)\",\n border: \"1px solid rgba(75, 85, 99, 0.6)\",\n borderRadius: 6,\n color: \"#f9fafb\",\n padding: \"4px 6px\",\n fontSize: 12,\n width: \"100%\",\n};\n\nexport function ControlPanel() {\n const { bundle, store, sendInput } = useLumencastRuntime();\n useSignals();\n\n const inputs = bundle.operator_inputs ?? [];\n if (inputs.length === 0) return null;\n\n // Group entries by `group` field for readability.\n const groups = new Map<string, OperatorInput[]>();\n for (const entry of inputs) {\n const g = entry.group ?? \"General\";\n const list = groups.get(g) ?? [];\n list.push(entry);\n groups.set(g, list);\n }\n\n return (\n <div style={PANEL_STYLE} data-testid=\"lumencast-control-panel\">\n <div\n style={{\n fontWeight: 600,\n fontSize: 11,\n letterSpacing: \"0.06em\",\n color: \"#9ca3af\",\n textTransform: \"uppercase\",\n marginBottom: 6,\n }}\n >\n Operator inputs\n </div>\n {[...groups.entries()].map(([group, entries]) => (\n <div key={group} style={{ marginBottom: 8 }}>\n <div\n style={{\n color: \"#6b7280\",\n fontSize: 10,\n letterSpacing: \"0.04em\",\n textTransform: \"uppercase\",\n padding: \"4px 0\",\n }}\n >\n {group}\n </div>\n {entries.map((entry) => (\n <InputRow\n key={entry.path}\n entry={entry}\n currentValue={store.signal(entry.path).value}\n onCommit={(v) =>\n // Operator-control values come from form widgets typed per\n // OperatorInput.type; coerce to LeafValue at the boundary.\n sendInput([\n {\n path: entry.path,\n value: v as Parameters<typeof sendInput>[0][number][\"value\"],\n },\n ])\n }\n />\n ))}\n </div>\n ))}\n </div>\n );\n}\n\nfunction InputRow({\n entry,\n currentValue,\n onCommit,\n}: {\n entry: OperatorInput;\n currentValue: unknown;\n onCommit: (value: unknown) => void;\n}) {\n return (\n <div style={ROW_STYLE}>\n <span style={LABEL_STYLE}>{entry.label}</span>\n <Editor entry={entry} currentValue={currentValue} onCommit={onCommit} />\n </div>\n );\n}\n\nfunction Editor({\n entry,\n currentValue,\n onCommit,\n}: {\n entry: OperatorInput;\n currentValue: unknown;\n onCommit: (value: unknown) => void;\n}) {\n switch (entry.type) {\n case \"boolean\": {\n const checked = currentValue === true;\n return (\n <label style={{ display: \"flex\", alignItems: \"center\", gap: 6 }}>\n <input type=\"checkbox\" checked={checked} onChange={(e) => onCommit(e.target.checked)} />\n <span style={{ fontSize: 11, color: \"#d1d5db\" }}>{checked ? \"on\" : \"off\"}</span>\n </label>\n );\n }\n case \"number\": {\n const min = entry.min as number | undefined;\n const max = entry.max as number | undefined;\n const step = entry.step as number | undefined;\n return (\n <input\n type=\"number\"\n style={INPUT_STYLE}\n value={typeof currentValue === \"number\" ? currentValue : \"\"}\n min={min}\n max={max}\n step={step}\n onChange={(e) => {\n const n = Number(e.target.value);\n if (Number.isFinite(n)) onCommit(n);\n }}\n />\n );\n }\n case \"text\": {\n const max = entry.max_length as number | undefined;\n return (\n <input\n type=\"text\"\n style={INPUT_STYLE}\n value={typeof currentValue === \"string\" ? currentValue : \"\"}\n maxLength={max}\n onChange={(e) => onCommit(e.target.value)}\n />\n );\n }\n case \"colour\": {\n return (\n <input\n type=\"color\"\n style={INPUT_STYLE}\n value={typeof currentValue === \"string\" ? currentValue : \"#000000\"}\n onChange={(e) => onCommit(e.target.value)}\n />\n );\n }\n case \"duration\": {\n return (\n <input\n type=\"number\"\n style={INPUT_STYLE}\n value={typeof currentValue === \"number\" ? currentValue : \"\"}\n min={0}\n step={100}\n onChange={(e) => {\n const n = Number(e.target.value);\n if (Number.isFinite(n) && n >= 0) onCommit(n);\n }}\n />\n );\n }\n case \"select\":\n case \"enum\": {\n const options =\n (entry.enum_values as string[] | undefined) ??\n (entry.options as string[] | undefined) ??\n [];\n return (\n <select\n style={INPUT_STYLE}\n value={typeof currentValue === \"string\" ? currentValue : \"\"}\n onChange={(e) => onCommit(e.target.value)}\n >\n {options.map((opt) => (\n <option key={opt} value={opt}>\n {opt}\n </option>\n ))}\n </select>\n );\n }\n case \"path-ref\":\n default:\n // FIXME (v2) — `path-ref` UX is deferred ; for now show a plain\n // text entry so the value is still editable.\n return (\n <input\n type=\"text\"\n style={INPUT_STYLE}\n value={typeof currentValue === \"string\" ? currentValue : \"\"}\n onChange={(e) => onCommit(e.target.value)}\n />\n );\n }\n}\n","import { useLumencastRuntime } from \"./runtime-context\";\n\nconst COLOURS: Record<string, string> = {\n live: \"rgba(34, 197, 94, 0.85)\",\n connecting: \"rgba(234, 179, 8, 0.85)\",\n disconnected: \"rgba(239, 68, 68, 0.85)\",\n};\n\nconst LABELS: Record<string, string> = {\n live: \"live\",\n connecting: \"reconnecting\",\n disconnected: \"disconnected\",\n};\n\nexport function StatusPill() {\n const { status } = useLumencastRuntime();\n return (\n <div\n data-testid=\"lumencast-status-pill\"\n style={{\n position: \"fixed\",\n top: 12,\n right: 12,\n padding: \"4px 10px\",\n fontSize: 11,\n fontFamily: \"system-ui, -apple-system, BlinkMacSystemFont, sans-serif\",\n color: \"white\",\n background: COLOURS[status] ?? \"#444\",\n borderRadius: 999,\n userSelect: \"none\",\n pointerEvents: \"none\",\n }}\n >\n {LABELS[status] ?? status}\n </div>\n );\n}\n"],"names":["PANEL_STYLE","ROW_STYLE","LABEL_STYLE","INPUT_STYLE","ControlPanel","bundle","store","sendInput","useLumencastRuntime","useSignals","inputs","groups","entry","g","list","jsxs","jsx","group","entries","InputRow","v","currentValue","onCommit","Editor","checked","min","max","step","e","n","options","opt","COLOURS","LABELS","StatusPill","status"],"mappings":"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"}
1
+ {"version":3,"file":"status-pill-B2vBTwRC.js","sources":["../src/overlay/control.tsx","../src/overlay/status-pill.tsx"],"sourcesContent":["import { useSignals } from \"@preact/signals-react/runtime\";\nimport type { OperatorInput } from \"../render/bundle\";\nimport { useLumencastRuntime } from \"./runtime-context\";\n\nconst PANEL_STYLE: React.CSSProperties = {\n position: \"fixed\",\n bottom: 12,\n left: 12,\n zIndex: 100_000,\n width: 320,\n maxHeight: \"70vh\",\n overflowY: \"auto\",\n padding: 12,\n fontFamily: \"system-ui, -apple-system, BlinkMacSystemFont, sans-serif\",\n fontSize: 12,\n color: \"#e5e7eb\",\n background: \"rgba(17, 24, 39, 0.92)\",\n border: \"1px solid rgba(75, 85, 99, 0.6)\",\n borderRadius: 10,\n boxShadow: \"0 8px 32px rgba(0, 0, 0, 0.45)\",\n};\n\nconst ROW_STYLE: React.CSSProperties = {\n display: \"flex\",\n flexDirection: \"column\",\n gap: 4,\n padding: \"6px 0\",\n borderBottom: \"1px solid rgba(75, 85, 99, 0.35)\",\n};\n\nconst LABEL_STYLE: React.CSSProperties = {\n color: \"#9ca3af\",\n fontSize: 10.5,\n letterSpacing: \"0.02em\",\n textTransform: \"uppercase\",\n};\n\nconst INPUT_STYLE: React.CSSProperties = {\n background: \"rgba(31, 41, 55, 0.8)\",\n border: \"1px solid rgba(75, 85, 99, 0.6)\",\n borderRadius: 6,\n color: \"#f9fafb\",\n padding: \"4px 6px\",\n fontSize: 12,\n width: \"100%\",\n};\n\nexport function ControlPanel() {\n const { bundle, store, sendInput } = useLumencastRuntime();\n useSignals();\n\n const inputs = bundle.operator_inputs ?? [];\n if (inputs.length === 0) return null;\n\n // Group entries by `group` field for readability.\n const groups = new Map<string, OperatorInput[]>();\n for (const entry of inputs) {\n const g = entry.group ?? \"General\";\n const list = groups.get(g) ?? [];\n list.push(entry);\n groups.set(g, list);\n }\n\n return (\n <div style={PANEL_STYLE} data-testid=\"lumencast-control-panel\">\n <div\n style={{\n fontWeight: 600,\n fontSize: 11,\n letterSpacing: \"0.06em\",\n color: \"#9ca3af\",\n textTransform: \"uppercase\",\n marginBottom: 6,\n }}\n >\n Operator inputs\n </div>\n {[...groups.entries()].map(([group, entries]) => (\n <div key={group} style={{ marginBottom: 8 }}>\n <div\n style={{\n color: \"#6b7280\",\n fontSize: 10,\n letterSpacing: \"0.04em\",\n textTransform: \"uppercase\",\n padding: \"4px 0\",\n }}\n >\n {group}\n </div>\n {entries.map((entry) => (\n <InputRow\n key={entry.path}\n entry={entry}\n currentValue={store.signal(entry.path).value}\n onCommit={(v) =>\n // Operator-control values come from form widgets typed per\n // OperatorInput.type; coerce to LeafValue at the boundary.\n sendInput([\n {\n path: entry.path,\n value: v as Parameters<typeof sendInput>[0][number][\"value\"],\n },\n ])\n }\n />\n ))}\n </div>\n ))}\n </div>\n );\n}\n\nfunction InputRow({\n entry,\n currentValue,\n onCommit,\n}: {\n entry: OperatorInput;\n currentValue: unknown;\n onCommit: (value: unknown) => void;\n}) {\n return (\n <div style={ROW_STYLE}>\n <span style={LABEL_STYLE}>{entry.label}</span>\n <Editor entry={entry} currentValue={currentValue} onCommit={onCommit} />\n </div>\n );\n}\n\nfunction Editor({\n entry,\n currentValue,\n onCommit,\n}: {\n entry: OperatorInput;\n currentValue: unknown;\n onCommit: (value: unknown) => void;\n}) {\n switch (entry.type) {\n case \"boolean\": {\n const checked = currentValue === true;\n return (\n <label style={{ display: \"flex\", alignItems: \"center\", gap: 6 }}>\n <input type=\"checkbox\" checked={checked} onChange={(e) => onCommit(e.target.checked)} />\n <span style={{ fontSize: 11, color: \"#d1d5db\" }}>{checked ? \"on\" : \"off\"}</span>\n </label>\n );\n }\n case \"number\": {\n const min = entry.min as number | undefined;\n const max = entry.max as number | undefined;\n const step = entry.step as number | undefined;\n return (\n <input\n type=\"number\"\n style={INPUT_STYLE}\n value={typeof currentValue === \"number\" ? currentValue : \"\"}\n min={min}\n max={max}\n step={step}\n onChange={(e) => {\n const n = Number(e.target.value);\n if (Number.isFinite(n)) onCommit(n);\n }}\n />\n );\n }\n case \"text\": {\n const max = entry.max_length as number | undefined;\n return (\n <input\n type=\"text\"\n style={INPUT_STYLE}\n value={typeof currentValue === \"string\" ? currentValue : \"\"}\n maxLength={max}\n onChange={(e) => onCommit(e.target.value)}\n />\n );\n }\n case \"colour\": {\n return (\n <input\n type=\"color\"\n style={INPUT_STYLE}\n value={typeof currentValue === \"string\" ? currentValue : \"#000000\"}\n onChange={(e) => onCommit(e.target.value)}\n />\n );\n }\n case \"duration\": {\n return (\n <input\n type=\"number\"\n style={INPUT_STYLE}\n value={typeof currentValue === \"number\" ? currentValue : \"\"}\n min={0}\n step={100}\n onChange={(e) => {\n const n = Number(e.target.value);\n if (Number.isFinite(n) && n >= 0) onCommit(n);\n }}\n />\n );\n }\n case \"select\":\n case \"enum\": {\n const options =\n (entry.enum_values as string[] | undefined) ??\n (entry.options as string[] | undefined) ??\n [];\n return (\n <select\n style={INPUT_STYLE}\n value={typeof currentValue === \"string\" ? currentValue : \"\"}\n onChange={(e) => onCommit(e.target.value)}\n >\n {options.map((opt) => (\n <option key={opt} value={opt}>\n {opt}\n </option>\n ))}\n </select>\n );\n }\n case \"path-ref\":\n default:\n // FIXME (v2) — `path-ref` UX is deferred ; for now show a plain\n // text entry so the value is still editable.\n return (\n <input\n type=\"text\"\n style={INPUT_STYLE}\n value={typeof currentValue === \"string\" ? currentValue : \"\"}\n onChange={(e) => onCommit(e.target.value)}\n />\n );\n }\n}\n","import { useLumencastRuntime } from \"./runtime-context\";\n\nconst COLOURS: Record<string, string> = {\n live: \"rgba(34, 197, 94, 0.85)\",\n connecting: \"rgba(234, 179, 8, 0.85)\",\n disconnected: \"rgba(239, 68, 68, 0.85)\",\n};\n\nconst LABELS: Record<string, string> = {\n live: \"live\",\n connecting: \"reconnecting\",\n disconnected: \"disconnected\",\n};\n\nexport function StatusPill() {\n const { status } = useLumencastRuntime();\n return (\n <div\n data-testid=\"lumencast-status-pill\"\n style={{\n position: \"fixed\",\n top: 12,\n right: 12,\n padding: \"4px 10px\",\n fontSize: 11,\n fontFamily: \"system-ui, -apple-system, BlinkMacSystemFont, sans-serif\",\n color: \"white\",\n background: COLOURS[status] ?? \"#444\",\n borderRadius: 999,\n userSelect: \"none\",\n pointerEvents: \"none\",\n }}\n >\n {LABELS[status] ?? status}\n </div>\n );\n}\n"],"names":["PANEL_STYLE","ROW_STYLE","LABEL_STYLE","INPUT_STYLE","ControlPanel","bundle","store","sendInput","useLumencastRuntime","useSignals","inputs","groups","entry","g","list","jsxs","jsx","group","entries","InputRow","v","currentValue","onCommit","Editor","checked","min","max","step","e","n","options","opt","COLOURS","LABELS","StatusPill","status"],"mappings":"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"}