@lumencast/runtime 0.7.0 → 0.8.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 (38) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/{broadcast-DUYqvcgo.js → broadcast-Gcd-dmC7.js} +3 -3
  3. package/dist/{broadcast-DUYqvcgo.js.map → broadcast-Gcd-dmC7.js.map} +1 -1
  4. package/dist/{control-CL8TWXaE.js → control-C5TfClga.js} +4 -4
  5. package/dist/{control-CL8TWXaE.js.map → control-C5TfClga.js.map} +1 -1
  6. package/dist/{index-C6viWFcT.js → index-N-VqrIxN.js} +288 -209
  7. package/dist/index-N-VqrIxN.js.map +1 -0
  8. package/dist/index.d.ts +3 -0
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.html +1 -1
  11. package/dist/index.js +13 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/lumencast.js +14 -9
  14. package/dist/render/asset-resolve.d.ts +27 -0
  15. package/dist/render/asset-resolve.d.ts.map +1 -0
  16. package/dist/render/asset-resolve.js +86 -0
  17. package/dist/render/asset-resolve.js.map +1 -0
  18. package/dist/render/headless.d.ts +39 -0
  19. package/dist/render/headless.d.ts.map +1 -0
  20. package/dist/render/headless.js +83 -0
  21. package/dist/render/headless.js.map +1 -0
  22. package/dist/render/primitives/media.d.ts +11 -2
  23. package/dist/render/primitives/media.d.ts.map +1 -1
  24. package/dist/render/primitives/media.js +14 -3
  25. package/dist/render/primitives/media.js.map +1 -1
  26. package/dist/{status-pill-jJT54n07.js → status-pill-BaLQoIDl.js} +2 -2
  27. package/dist/{status-pill-jJT54n07.js.map → status-pill-BaLQoIDl.js.map} +1 -1
  28. package/dist/{test-84XodL1c.js → test-CA30C2By.js} +4 -4
  29. package/dist/{test-84XodL1c.js.map → test-CA30C2By.js.map} +1 -1
  30. package/dist/{tree-BIimahCf.js → tree-1coZ32nd.js} +103 -103
  31. package/dist/tree-1coZ32nd.js.map +1 -0
  32. package/package.json +6 -5
  33. package/src/index.ts +24 -0
  34. package/src/render/asset-resolve.ts +97 -0
  35. package/src/render/headless.tsx +129 -0
  36. package/src/render/primitives/media.tsx +14 -3
  37. package/dist/index-C6viWFcT.js.map +0 -1
  38. package/dist/tree-BIimahCf.js.map +0 -1
@@ -1,12 +1,12 @@
1
1
  import { jsx as f, jsxs as G, Fragment as J } from "react/jsx-runtime";
2
2
  import { useSignals as wt } from "@preact/signals-react/runtime";
3
- import { motion as I, useMotionValue as B, useTransform as pe, animate as At } from "framer-motion";
4
- import { createContext as rt, useContext as K, useRef as mt, useEffect as qt, useState as he, useMemo as Gt } from "react";
5
- import { e as S, r as it, m as ot, t as Q, s as ge, w as Yt, F as me, c as Ft, a as Xt } from "./index-C6viWFcT.js";
6
- import { checkHostAllowed as It } from "@lumencast/protocol";
3
+ import { motion as I, useMotionValue as B, useTransform as pe, animate as Ft } from "framer-motion";
4
+ import { createContext as it, useContext as K, useRef as mt, useEffect as Gt, useState as he, useMemo as Yt } from "react";
5
+ import { e as S, r as ot, m as st, t as Q, s as ge, w as Xt, F as me, c as _t, a as It } from "./index-N-VqrIxN.js";
6
+ import { checkHostAllowed as Kt } from "@lumencast/protocol";
7
7
  import { effect as ye } from "@preact/signals-react";
8
8
  function be({ resolved: t, children: e, establishesContainingBlock: n }) {
9
- const i = t.direction ?? "vertical", r = _t(t.gap, 0), s = t.wrap === !0, o = _t(t.crossGap, 0), a = t.align ?? "stretch", l = t.justify ?? "flex-start", c = i === "horizontal", u = {
9
+ const i = t.direction ?? "vertical", r = Rt(t.gap, 0), s = t.wrap === !0, o = Rt(t.crossGap, 0), a = t.align ?? "stretch", l = t.justify ?? "flex-start", c = i === "horizontal", u = {
10
10
  display: "flex",
11
11
  flexDirection: c ? "row" : "column",
12
12
  alignItems: a,
@@ -18,7 +18,7 @@ function be({ resolved: t, children: e, establishesContainingBlock: n }) {
18
18
  };
19
19
  return s ? (u.flexWrap = "wrap", c ? (u.columnGap = r, u.rowGap = o) : (u.rowGap = r, u.columnGap = o)) : u.gap = r, /* @__PURE__ */ f("div", { style: u, children: e });
20
20
  }
21
- function _t(t, e) {
21
+ function Rt(t, e) {
22
22
  return typeof t == "number" && Number.isFinite(t) ? t : e;
23
23
  }
24
24
  function ke({ resolved: t, children: e, establishesContainingBlock: n }) {
@@ -39,10 +39,10 @@ function ke({ resolved: t, children: e, establishesContainingBlock: n }) {
39
39
  }
40
40
  );
41
41
  }
42
- const we = 64, xe = /^[#a-zA-Z0-9(),.% ]{1,64}$/, $e = /^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/, W = String.raw`\d{1,3}(?:\.\d{1,4})?`, Kt = String.raw`(?:0|1|0?\.\d{1,4}|${W}%)`, R = String.raw`[ ]{0,4}`, ve = new RegExp(
43
- `^rgba?\\(${R}(${W})(%?)${R},${R}(${W})(%?)${R},${R}(${W})(%?)${R}(?:,${R}${Kt}${R})?\\)$`
42
+ const we = 64, xe = /^[#a-zA-Z0-9(),.% ]{1,64}$/, $e = /^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/, W = String.raw`\d{1,3}(?:\.\d{1,4})?`, Ut = String.raw`(?:0|1|0?\.\d{1,4}|${W}%)`, R = String.raw`[ ]{0,4}`, ve = new RegExp(
43
+ `^rgba?\\(${R}(${W})(%?)${R},${R}(${W})(%?)${R},${R}(${W})(%?)${R}(?:,${R}${Ut}${R})?\\)$`
44
44
  ), Se = new RegExp(
45
- `^hsla?\\(${R}(${W})(?:deg)?${R},${R}(${W})%${R},${R}(${W})%${R}(?:,${R}${Kt}${R})?\\)$`
45
+ `^hsla?\\(${R}(${W})(?:deg)?${R},${R}(${W})%${R},${R}(${W})%${R}(?:,${R}${Ut}${R})?\\)$`
46
46
  ), Me = new Set(
47
47
  "aliceblue antiquewhite aqua aquamarine azure beige bisque black blanchedalmond blue blueviolet brown burlywood cadetblue chartreuse chocolate coral cornflowerblue cornsilk crimson cyan darkblue darkcyan darkgoldenrod darkgray darkgreen darkgrey darkkhaki darkmagenta darkolivegreen darkorange darkorchid darkred darksalmon darkseagreen darkslateblue darkslategray darkslategrey darkturquoise darkviolet deeppink deepskyblue dimgray dimgrey dodgerblue firebrick floralwhite forestgreen fuchsia gainsboro ghostwhite gold goldenrod gray green greenyellow grey honeydew hotpink indianred indigo ivory khaki lavender lavenderblush lawngreen lemonchiffon lightblue lightcoral lightcyan lightgoldenrodyellow lightgray lightgreen lightgrey lightpink lightsalmon lightseagreen lightskyblue lightslategray lightslategrey lightsteelblue lightyellow lime limegreen linen magenta maroon mediumaquamarine mediumblue mediumorchid mediumpurple mediumseagreen mediumslateblue mediumspringgreen mediumturquoise mediumvioletred midnightblue mintcream mistyrose moccasin navajowhite navy oldlace olive olivedrab orange orangered orchid palegoldenrod palegreen paleturquoise palevioletred papayawhip peachpuff peru pink plum powderblue purple rebeccapurple red rosybrown royalblue saddlebrown salmon sandybrown seagreen seashell sienna silver skyblue slateblue slategray slategrey snow springgreen steelblue tan teal thistle tomato turquoise violet wheat white whitesmoke yellow yellowgreen transparent currentcolor".split(" ")
48
48
  );
@@ -76,15 +76,15 @@ function D(t, e) {
76
76
  "rejected unsafe colour : not a strict hex/rgb()/hsl()/named colour"
77
77
  );
78
78
  }
79
- const Ut = rt(void 0);
79
+ const Vt = it(void 0);
80
80
  function nr({
81
81
  hosts: t,
82
82
  children: e
83
83
  }) {
84
- return /* @__PURE__ */ f(Ut.Provider, { value: t, children: e });
84
+ return /* @__PURE__ */ f(Vt.Provider, { value: t, children: e });
85
85
  }
86
- function st() {
87
- return K(Ut);
86
+ function tt() {
87
+ return K(Vt);
88
88
  }
89
89
  function rr(t) {
90
90
  const n = t.assets?.allowedHosts;
@@ -92,9 +92,9 @@ function rr(t) {
92
92
  const i = n.filter((r) => typeof r == "string");
93
93
  return i.length > 0 ? i : void 0;
94
94
  }
95
- function Vt(t, e, n, i) {
95
+ function xt(t, e, n, i) {
96
96
  if (typeof t != "string" || t.length === 0) return;
97
- const r = It(t, e);
97
+ const r = Kt(t, e);
98
98
  if (r.allowed) return t;
99
99
  S(i, n, r.reason ?? "asset host/scheme rejected");
100
100
  }
@@ -126,7 +126,7 @@ function _e(t) {
126
126
  return typeof t == "string" && Fe.has(t) ? t : void 0;
127
127
  }
128
128
  let ct = 0;
129
- function Rt() {
129
+ function Tt() {
130
130
  return ct = (ct + 1) % 1e6, `lumen-grad-${ct.toString(36)}`;
131
131
  }
132
132
  function Re(t) {
@@ -136,12 +136,12 @@ function Re(t) {
136
136
  return { defs: [], ref: a, mixBlendMode: e };
137
137
  }
138
138
  if (t.kind === "image") {
139
- const a = Rt(), l = je(t.objectFit);
139
+ const a = Tt(), l = je(t.objectFit);
140
140
  return { defs: [
141
141
  /* @__PURE__ */ f("pattern", { id: a, patternContentUnits: "objectBoundingBox", width: "1", height: "1", children: /* @__PURE__ */ f("image", { href: t.src, width: "1", height: "1", preserveAspectRatio: l }) }, a)
142
142
  ], ref: `url(#${a})`, mixBlendMode: e };
143
143
  }
144
- const n = Rt();
144
+ const n = Tt();
145
145
  if (t.kind === "linear-gradient") {
146
146
  let a, l, c, u;
147
147
  const d = t.transform;
@@ -300,12 +300,12 @@ function Zt(t, e, n) {
300
300
  if (!Array.isArray(t)) return [];
301
301
  if (e !== void 0)
302
302
  for (const i of t)
303
- Tt(i) || S(
303
+ jt(i) || S(
304
304
  n,
305
305
  `${e}.kind`,
306
306
  "fill kind is not renderable by this runtime ; layer dropped (angular/diamond gradients land with LSML 1.2)"
307
307
  );
308
- return t.filter(Tt).map((i) => {
308
+ return t.filter(jt).map((i) => {
309
309
  let r = i;
310
310
  if (r.blendMode !== void 0 && Y(r.blendMode) === void 0) {
311
311
  S(
@@ -330,13 +330,13 @@ function Zt(t, e, n) {
330
330
  return { ...r, objectFit: s };
331
331
  });
332
332
  }
333
- function Tt(t) {
333
+ function jt(t) {
334
334
  if (typeof t != "object" || t === null) return !1;
335
335
  const e = t.kind;
336
336
  return e === "solid" || e === "linear-gradient" || e === "radial-gradient" ? !0 : e === "image" && typeof t.src == "string";
337
337
  }
338
338
  function Jt(t, e, n, i) {
339
- return t.filter((r) => r.kind !== "image" ? !0 : Vt(r.src, e, `${n}.src`, i) !== void 0);
339
+ return t.filter((r) => r.kind !== "image" ? !0 : xt(r.src, e, `${n}.src`, i) !== void 0);
340
340
  }
341
341
  function Ee({
342
342
  resolved: t,
@@ -345,14 +345,14 @@ function Ee({
345
345
  animateInitial: i,
346
346
  children: r
347
347
  }) {
348
- const s = N(t.x, 0), o = N(t.y, 0), a = jt(t.width), l = jt(t.height), c = N(t.opacity, 1), u = N(t.scale, 1), d = N(t.rotate, N(t.rotation, 0)), m = t.flipY === !0, h = N(t.radius, 0), g = t.background, A = g === void 0 ? void 0 : E(g);
348
+ const s = N(t.x, 0), o = N(t.y, 0), a = Nt(t.width), l = Nt(t.height), c = N(t.opacity, 1), u = N(t.scale, 1), d = N(t.rotate, N(t.rotation, 0)), m = t.flipY === !0, h = N(t.radius, 0), g = t.background, A = g === void 0 ? void 0 : E(g);
349
349
  g !== void 0 && A === null && D("frame.background", e);
350
- const x = st(), F = Jt(
350
+ const x = tt(), F = Jt(
351
351
  Zt(t.backgrounds, "frame.backgrounds", e),
352
352
  x,
353
353
  "frame.backgrounds",
354
354
  e
355
- ), k = De(t.clipsContent, e), y = it(
355
+ ), k = De(t.clipsContent, e), y = ot(
356
356
  n,
357
357
  ["opacity", "scale", "rotate", "x", "y"],
358
358
  i
@@ -378,7 +378,7 @@ function Ee({
378
378
  F.length > 0 ? Object.assign(p, Ne(F, e)) : A != null && (p.background = A);
379
379
  const { filter: w, boxShadow: $ } = Be(t.shadow, e);
380
380
  $ !== void 0 && (p.boxShadow = $), w !== void 0 && (p.filter = w);
381
- const v = ot(
381
+ const v = st(
382
382
  { opacity: c, x: s, y: o, scale: u, rotate: d, ...m ? { scaleY: -1 } : {} },
383
383
  i,
384
384
  e
@@ -421,10 +421,10 @@ function Be(t, e) {
421
421
  const r = {};
422
422
  return n.length > 0 && (r.filter = n.join(" ")), i.length > 0 && (r.boxShadow = i.join(", ")), r;
423
423
  }
424
- function jt(t) {
424
+ function Nt(t) {
425
425
  if (typeof t == "number" && Number.isFinite(t) || typeof t == "string" && t.length > 0) return t;
426
426
  }
427
- const Le = /* @__PURE__ */ new Set(["none", "uppercase", "lowercase", "capitalize"]), He = /* @__PURE__ */ new Set(["none", "underline", "line-through"]), ze = /* @__PURE__ */ new Set(["normal", "italic", "oblique"]), We = 1e3, qe = 100, Nt = 1e3, Ge = /^[a-zA-Z0-9 ,.'"_-]{1,256}$/;
427
+ const Le = /* @__PURE__ */ new Set(["none", "uppercase", "lowercase", "capitalize"]), He = /* @__PURE__ */ new Set(["none", "underline", "line-through"]), ze = /* @__PURE__ */ new Set(["normal", "italic", "oblique"]), We = 1e3, qe = 100, Ct = 1e3, Ge = /^[a-zA-Z0-9 ,.'"_-]{1,256}$/;
428
428
  function Ye(t) {
429
429
  if (typeof t != "string") return null;
430
430
  const e = t.trim();
@@ -442,7 +442,7 @@ function Xe({ resolved: t, nodeId: e, transitionFor: n, animateInitial: i }) {
442
442
  const g = E(t.colour);
443
443
  g === null ? D("text.colour", e) : l = g;
444
444
  }
445
- const c = t.align ?? "start", u = Ie(t.opacity, 1), d = Ke(t, e), m = it(n, ["opacity", "value"], i), h = ot({ opacity: u }, i, e);
445
+ const c = t.align ?? "start", u = Ie(t.opacity, 1), d = Ke(t, e), m = ot(n, ["opacity", "value"], i), h = st({ opacity: u }, i, e);
446
446
  return /* @__PURE__ */ f(
447
447
  I.span,
448
448
  {
@@ -468,16 +468,16 @@ function Ie(t, e) {
468
468
  return typeof t == "number" && Number.isFinite(t) ? t : e;
469
469
  }
470
470
  function Ke(t, e) {
471
- const n = Ct(
471
+ const n = Ot(
472
472
  t.lineHeight,
473
473
  0,
474
474
  qe,
475
475
  "text.lineHeight",
476
476
  e
477
- ), i = Ct(
477
+ ), i = Ot(
478
478
  t.letterSpacing,
479
- -Nt,
480
- Nt,
479
+ -Ct,
480
+ Ct,
481
481
  "text.letterSpacing",
482
482
  e
483
483
  ), r = ut(
@@ -510,22 +510,22 @@ function Ke(t, e) {
510
510
  function ut(t, e, n, i) {
511
511
  if (t !== void 0) {
512
512
  if (typeof t == "string" && e.has(t)) return t;
513
- xt(n, i);
513
+ $t(n, i);
514
514
  }
515
515
  }
516
- function Ct(t, e, n, i, r) {
516
+ function Ot(t, e, n, i, r) {
517
517
  if (t !== void 0) {
518
518
  if (typeof t == "number" && Number.isFinite(t) && t >= e && t <= n) return t;
519
- xt(i, r);
519
+ $t(i, r);
520
520
  }
521
521
  }
522
522
  function Ue(t, e, n, i) {
523
523
  if (t !== void 0) {
524
524
  if (typeof t == "number" && Number.isInteger(t) && t >= 1 && t <= e) return t;
525
- xt(n, i);
525
+ $t(n, i);
526
526
  }
527
527
  }
528
- function xt(t, e) {
528
+ function $t(t, e) {
529
529
  S(
530
530
  e,
531
531
  t,
@@ -533,9 +533,9 @@ function xt(t, e) {
533
533
  );
534
534
  }
535
535
  function Ve({ resolved: t, nodeId: e, transitionFor: n, animateInitial: i }) {
536
- const r = st(), s = Vt(t.src, r, "image.src", e);
536
+ const r = tt(), s = xt(t.src, r, "image.src", e);
537
537
  if (!s) return null;
538
- const o = typeof t.alt == "string" ? t.alt : "", a = t.fit ?? "contain", l = t.position ?? "center", c = Ze(t.opacity, 1), u = Ot(t.width, "100%"), d = Ot(t.height, "100%"), m = it(n, ["opacity", "src"], i), h = ot({ opacity: c }, i, e);
538
+ const o = typeof t.alt == "string" ? t.alt : "", a = t.fit ?? "contain", l = t.position ?? "center", c = Ze(t.opacity, 1), u = Pt(t.width, "100%"), d = Pt(t.height, "100%"), m = ot(n, ["opacity", "src"], i), h = st({ opacity: c }, i, e);
539
539
  return /* @__PURE__ */ f(
540
540
  I.img,
541
541
  {
@@ -563,7 +563,7 @@ function Ve({ resolved: t, nodeId: e, transitionFor: n, animateInitial: i }) {
563
563
  function Ze(t, e) {
564
564
  return typeof t == "number" && Number.isFinite(t) ? t : e;
565
565
  }
566
- function Ot(t, e) {
566
+ function Pt(t, e) {
567
567
  return typeof t == "number" && Number.isFinite(t) ? `${t}px` : typeof t == "string" && t.length > 0 ? t : e;
568
568
  }
569
569
  const Je = 8192, Qe = 4e3, tn = 64, en = new Set("MmLlHhVvCcSsQqTtAaZz");
@@ -573,7 +573,7 @@ function ft(t) {
573
573
  function nn(t) {
574
574
  return t === 32 || t === 9 || t === 13 || t === 10 || t === 44;
575
575
  }
576
- function Pt(t) {
576
+ function Et(t) {
577
577
  if (typeof t != "string" || t.length === 0 || t.length > Je) return null;
578
578
  const e = t.trim();
579
579
  if (e.length === 0) return null;
@@ -627,7 +627,7 @@ function rn(t, e) {
627
627
  z(e, "shape.paths", "subpath cap exceeded ; remaining entries dropped");
628
628
  break;
629
629
  }
630
- const o = n[s], a = Pt(
630
+ const o = n[s], a = Et(
631
631
  typeof o == "object" && o !== null ? o.data : void 0
632
632
  );
633
633
  if (a === null) {
@@ -639,7 +639,7 @@ function rn(t, e) {
639
639
  return r.length === 0 && n.length > 0 && z(e, "shape.paths", "no renderable subpath ; shape geometry omitted"), r;
640
640
  }
641
641
  if (i !== void 0) {
642
- const r = Pt(i);
642
+ const r = Et(i);
643
643
  return r === null ? (z(e, "shape.pathData", "not a strict SVG path grammar (allowlist/caps)"), []) : [{ d: r, fillRule: "nonzero" }];
644
644
  }
645
645
  return z(e, "shape.paths", "geometry is path but neither pathData nor paths[] is present"), [];
@@ -656,7 +656,7 @@ function sn(t) {
656
656
  function dt(t, e) {
657
657
  return typeof t == "number" && Number.isFinite(t) ? t : e;
658
658
  }
659
- function $t(t, e, n, i = "geom") {
659
+ function vt(t, e, n, i = "geom") {
660
660
  const r = sn(t), s = dt(t.width, 100), o = dt(t.height, 100), a = dt(t.radius, 0), l = e.stroke ?? "none", c = e.strokeWidth ?? 0, u = e.mixBlendMode !== void 0 ? { mixBlendMode: e.mixBlendMode } : void 0;
661
661
  if (r === "path") {
662
662
  const d = rn(t, n);
@@ -717,13 +717,13 @@ function $t(t, e, n, i = "geom") {
717
717
  function an(t, e) {
718
718
  if (t.kind !== "shape") return null;
719
719
  const n = t.props ?? {};
720
- return $t(n, { fill: "white" }, e, "mask-cover");
720
+ return vt(n, { fill: "white" }, e, "mask-cover");
721
721
  }
722
722
  const ln = 64, Qt = 1;
723
723
  function te(t) {
724
724
  return t.props?.visible === !1;
725
725
  }
726
- function nt(t, e) {
726
+ function rt(t, e) {
727
727
  const n = t?.[e];
728
728
  return typeof n == "number" && Number.isFinite(n) ? n : 0;
729
729
  }
@@ -735,7 +735,7 @@ function cn(t, e, n = Qt, i = ln) {
735
735
  function ee(t, e = Qt) {
736
736
  if (t.kind !== "frame") return !1;
737
737
  for (const n of t.children ?? [])
738
- if (!te(n) && (nt(n.props, "blur") > 0 || n.kind === "frame" && e > 0 && ee(n, e - 1)))
738
+ if (!te(n) && (rt(n.props, "blur") > 0 || n.kind === "frame" && e > 0 && ee(n, e - 1)))
739
739
  return !0;
740
740
  return !1;
741
741
  }
@@ -755,13 +755,13 @@ function ne(t, e, n, i, r) {
755
755
  }
756
756
  let u = null;
757
757
  if (c.kind === "shape")
758
- u = $t(c.props ?? {}, { fill: "white" }, c.id, `${r}-${l}`);
758
+ u = vt(c.props ?? {}, { fill: "white" }, c.id, `${r}-${l}`);
759
759
  else if (c.kind === "frame" && n > 0) {
760
760
  const g = ne(c, e, n - 1, i, `${r}-${l}`);
761
761
  g.length > 0 && (u = /* @__PURE__ */ f("g", { children: g }, `${r}-${l}`));
762
762
  }
763
763
  if (u === null) continue;
764
- const d = nt(c.props, "blur");
764
+ const d = rt(c.props, "blur");
765
765
  if (d > 0) {
766
766
  const g = `lumen-mcov-blur-${e ?? "x"}-${r}-${l}`;
767
767
  u = /* @__PURE__ */ G("g", { children: [
@@ -769,7 +769,7 @@ function ne(t, e, n, i, r) {
769
769
  /* @__PURE__ */ f("g", { filter: `url(#${g})`, children: u })
770
770
  ] }, `${r}-b-${l}`);
771
771
  }
772
- const m = nt(c.props, "x"), h = nt(c.props, "y");
772
+ const m = rt(c.props, "x"), h = rt(c.props, "y");
773
773
  o.push(
774
774
  m !== 0 || h !== 0 ? /* @__PURE__ */ f("g", { transform: `translate(${m} ${h})`, children: u }, `${r}-t-${l}`) : u
775
775
  ), a++;
@@ -777,7 +777,7 @@ function ne(t, e, n, i, r) {
777
777
  return o;
778
778
  }
779
779
  function un({ resolved: t, nodeId: e, transitionFor: n, animateInitial: i }) {
780
- const r = t.geometry ?? t.kind ?? "rect", s = pt(t.fill, "shape.fill", e) ?? "transparent", o = pt(t.stroke, "shape.stroke", e) ?? "transparent", a = tt(t.stroke_width, 0), l = tt(t.width, 100), c = tt(t.height, 100), u = tt(t.opacity, 1), d = typeof t.ariaLabel == "string" ? t.ariaLabel : void 0, m = it(n, ["opacity"], i), h = Q(m), g = ot({ opacity: u }, i, e), A = st(), x = Jt(
780
+ const r = t.geometry ?? t.kind ?? "rect", s = pt(t.fill, "shape.fill", e) ?? "transparent", o = pt(t.stroke, "shape.stroke", e) ?? "transparent", a = et(t.stroke_width, 0), l = et(t.width, 100), c = et(t.height, 100), u = et(t.opacity, 1), d = typeof t.ariaLabel == "string" ? t.ariaLabel : void 0, m = ot(n, ["opacity"], i), h = Q(m), g = st({ opacity: u }, i, e), A = tt(), x = Jt(
781
781
  Pe(Zt(t.fills, "shape.fills", e), "shape.fills", e),
782
782
  A,
783
783
  "shape.fills",
@@ -785,7 +785,7 @@ function un({ resolved: t, nodeId: e, transitionFor: n, animateInitial: i }) {
785
785
  ), F = fn(t.strokes), k = x.map(Re), y = k.flatMap((_) => _.defs), p = k.length > 0 ? k.map((_) => ({ ref: _.ref, mixBlendMode: _.mixBlendMode })) : [{ ref: s }], w = F.length > 0 ? F.map((_) => ({
786
786
  color: pt(_.color, "shape.strokes.color", e) ?? "transparent",
787
787
  width: _.width ?? 0
788
- })) : [{ color: o, width: a }], $ = [...p].reverse(), v = [...w].reverse(), T = r === "path" ? v.filter((_) => _.width > 0 && _.color !== "transparent") : v, U = (_, b, C, O) => $t(
788
+ })) : [{ color: o, width: a }], $ = [...p].reverse(), v = [...w].reverse(), T = r === "path" ? v.filter((_) => _.width > 0 && _.color !== "transparent") : v, U = (_, b, C, O) => vt(
789
789
  t,
790
790
  { fill: _, stroke: b.color, strokeWidth: b.width, mixBlendMode: O },
791
791
  e,
@@ -821,36 +821,36 @@ function fn(t) {
821
821
  (e) => typeof e == "object" && e !== null && ("color" in e || "width" in e)
822
822
  ) : [];
823
823
  }
824
- function tt(t, e) {
824
+ function et(t, e) {
825
825
  return typeof t == "number" && Number.isFinite(t) ? t : e;
826
826
  }
827
- function dn({ resolved: t }) {
828
- const e = t.src;
829
- if (!e) return null;
830
- const n = t.loop ?? !0, i = t.mute ?? !0, r = t.autoplay ?? !0, s = t.fit ?? "cover";
827
+ function dn({ resolved: t, nodeId: e }) {
828
+ const n = tt(), i = xt(t.src, n, "media.src", e);
829
+ if (!i) return null;
830
+ const r = t.loop ?? !0, s = t.mute ?? !0, o = t.autoplay ?? !0, a = t.fit ?? "cover";
831
831
  return /* @__PURE__ */ f(
832
832
  "video",
833
833
  {
834
- src: e,
835
- autoPlay: r,
836
- loop: n,
837
- muted: i,
834
+ src: i,
835
+ autoPlay: o,
836
+ loop: r,
837
+ muted: s,
838
838
  playsInline: !0,
839
839
  style: {
840
840
  width: "100%",
841
841
  height: "100%",
842
- objectFit: s
842
+ objectFit: a
843
843
  }
844
844
  }
845
845
  );
846
846
  }
847
- const Et = /* @__PURE__ */ new Set();
847
+ const Dt = /* @__PURE__ */ new Set();
848
848
  function pn({ resolved: t, nodeId: e }) {
849
849
  const n = t.scene_id, i = t.scene_version;
850
850
  if (!n || !i)
851
851
  return S(e, "instance.scene_id", "missing scene_id or scene_version ; not rendered"), null;
852
852
  const r = `${n}:${i}`;
853
- Et.has(r) || (Et.add(r), S(
853
+ Dt.has(r) || (Dt.add(r), S(
854
854
  e,
855
855
  "instance",
856
856
  "scaffold render — async bundle fetch + __params.* injection are not yet wired (LSML 1.1 §4.9)"
@@ -882,18 +882,18 @@ const hn = {
882
882
  shape: un,
883
883
  media: dn,
884
884
  instance: pn
885
- }, bt = rt("");
885
+ }, bt = it("");
886
886
  function gn({ prefix: t, children: e }) {
887
887
  const n = K(bt), i = n ? `${n}.${t}` : t;
888
888
  return /* @__PURE__ */ f(bt.Provider, { value: i, children: e });
889
889
  }
890
- function vt() {
890
+ function St() {
891
891
  return K(bt);
892
892
  }
893
893
  function q(t, e) {
894
894
  return !t || e.startsWith("__") ? e : `${t}.${e}`;
895
895
  }
896
- function Dt(t) {
896
+ function Bt(t) {
897
897
  switch (t) {
898
898
  case "fixed":
899
899
  return "0 0 auto";
@@ -906,7 +906,7 @@ function Dt(t) {
906
906
  }
907
907
  }
908
908
  function mn(t) {
909
- const e = Dt(t?.x), n = Dt(t?.y);
909
+ const e = Bt(t?.x), n = Bt(t?.y);
910
910
  return e === n && e !== void 0 ? e : e ?? n;
911
911
  }
912
912
  function yn({
@@ -953,7 +953,7 @@ function kn(t, e) {
953
953
  const i = n[0], r = n[n.length - 1];
954
954
  if (i.at !== 0 || r.at !== 1) return;
955
955
  const s = n.map((a) => a.at), o = {};
956
- return Bt(n, "opacity", o, e), Bt(n, "filter", o, e), et(n, "scale", o), et(n, "translateX", o), et(n, "translateY", o), et(n, "rotate", o), {
956
+ return Lt(n, "opacity", o, e), Lt(n, "filter", o, e), nt(n, "scale", o), nt(n, "translateX", o), nt(n, "translateY", o), nt(n, "rotate", o), {
957
957
  animate: o,
958
958
  transition: {
959
959
  duration: t.duration_ms / 1e3,
@@ -962,7 +962,7 @@ function kn(t, e) {
962
962
  }
963
963
  };
964
964
  }
965
- function Bt(t, e, n, i) {
965
+ function Lt(t, e, n, i) {
966
966
  let r = !1;
967
967
  const s = [];
968
968
  let o;
@@ -970,13 +970,13 @@ function Bt(t, e, n, i) {
970
970
  let l = a[e];
971
971
  if (e === "filter" && l !== void 0) {
972
972
  const c = ge(l);
973
- c === null ? (Yt("keyframes.steps[].filter", i), l = void 0) : l = c;
973
+ c === null ? (Xt("keyframes.steps[].filter", i), l = void 0) : l = c;
974
974
  }
975
975
  l !== void 0 ? (r = !0, o = l, s.push(l)) : s.push(o ?? (e === "opacity" ? 1 : me));
976
976
  }
977
977
  r && (n[e] = s);
978
978
  }
979
- function et(t, e, n) {
979
+ function nt(t, e, n) {
980
980
  let i = !1;
981
981
  const r = [];
982
982
  let s;
@@ -989,11 +989,11 @@ function et(t, e, n) {
989
989
  function wn(t) {
990
990
  return t === "scale" ? 1 : 0;
991
991
  }
992
- const St = rt(0), Lt = 2e3;
992
+ const Mt = it(0), Ht = 2e3;
993
993
  function xn(t, e) {
994
994
  if (e <= 0) return 0;
995
995
  const n = t * e;
996
- return n > Lt ? Lt : n;
996
+ return n > Ht ? Ht : n;
997
997
  }
998
998
  function $n({
999
999
  keyframes: t,
@@ -1002,7 +1002,7 @@ function $n({
1002
1002
  children: i
1003
1003
  }) {
1004
1004
  wt();
1005
- const r = vt(), s = K(St), o = mt(void 0), a = mt(0);
1005
+ const r = St(), s = K(Mt), o = mt(void 0), a = mt(0);
1006
1006
  if (t.key !== void 0) {
1007
1007
  const u = e.signal(q(r, t.key)).value;
1008
1008
  o.current !== u && (o.current = u, a.current += 1);
@@ -1027,7 +1027,7 @@ function $n({
1027
1027
  );
1028
1028
  }
1029
1029
  function vn() {
1030
- return qt(() => {
1030
+ return Gt(() => {
1031
1031
  }, []), null;
1032
1032
  }
1033
1033
  function Sn(t) {
@@ -1212,13 +1212,13 @@ function Fn(t) {
1212
1212
  if (e.startsWith("rgb")) {
1213
1213
  const r = e.slice(e.indexOf("(") + 1, -1).split(",").map((d) => d.trim());
1214
1214
  if (r.length < 3) return null;
1215
- const o = r[0].endsWith("%") ? 100 : 255, a = ht(r[0], o), l = ht(r[1], o), c = ht(r[2], o), u = r.length > 3 ? Ht(r[3]) : 1;
1215
+ const o = r[0].endsWith("%") ? 100 : 255, a = ht(r[0], o), l = ht(r[1], o), c = ht(r[2], o), u = r.length > 3 ? zt(r[3]) : 1;
1216
1216
  return a === null || l === null || c === null || u === null ? null : [a, l, c, u];
1217
1217
  }
1218
1218
  if (e.startsWith("hsl")) {
1219
1219
  const r = e.slice(e.indexOf("(") + 1, -1).split(",").map((m) => m.trim());
1220
1220
  if (r.length < 3) return null;
1221
- const s = Number(r[0].replace("deg", "")), o = Number(r[1].replace("%", "")) / 100, a = Number(r[2].replace("%", "")) / 100, l = r.length > 3 ? Ht(r[3]) : 1;
1221
+ const s = Number(r[0].replace("deg", "")), o = Number(r[1].replace("%", "")) / 100, a = Number(r[2].replace("%", "")) / 100, l = r.length > 3 ? zt(r[3]) : 1;
1222
1222
  if (![s, o, a].every(Number.isFinite) || l === null) return null;
1223
1223
  const [c, u, d] = Rn(s, o, a);
1224
1224
  return [c, u, d, l];
@@ -1244,7 +1244,7 @@ function ht(t, e) {
1244
1244
  const n = Number(t.replace("%", ""));
1245
1245
  return Number.isFinite(n) ? j(n / e) : null;
1246
1246
  }
1247
- function Ht(t) {
1247
+ function zt(t) {
1248
1248
  const e = t.endsWith("%"), n = Number(t.replace("%", ""));
1249
1249
  return Number.isFinite(n) ? j(e ? n / 100 : n) : null;
1250
1250
  }
@@ -1263,7 +1263,7 @@ function Tn(t, e, n) {
1263
1263
  j(t[3] + n * (e[3] - t[3]))
1264
1264
  ];
1265
1265
  }
1266
- function zt(t) {
1266
+ function Wt(t) {
1267
1267
  const e = Math.round(j(t[0]) * 255), n = Math.round(j(t[1]) * 255), i = Math.round(j(t[2]) * 255), r = Math.round(j(t[3]) * 1e4) / 1e4;
1268
1268
  return `rgba(${e}, ${n}, ${i}, ${r})`;
1269
1269
  }
@@ -1300,11 +1300,11 @@ function jn(t, e) {
1300
1300
  return n === null ? null : { rotate: n };
1301
1301
  }
1302
1302
  case "filter.blur": {
1303
- const n = Ft("blur", e);
1303
+ const n = _t("blur", e);
1304
1304
  return n === null ? null : { blur: n };
1305
1305
  }
1306
1306
  case "filter.brightness": {
1307
- const n = Ft("brightness", e);
1307
+ const n = _t("brightness", e);
1308
1308
  return n === null ? null : { brightness: n };
1309
1309
  }
1310
1310
  default:
@@ -1339,7 +1339,7 @@ function Cn(t) {
1339
1339
  }
1340
1340
  const On = {};
1341
1341
  function Pn(t, e, n) {
1342
- const i = t.animateBindings, r = K(St), s = B(1), o = B(0), a = B(0), l = B(1), c = B(1), u = B(0), d = B(0), m = B(1), h = pe(
1342
+ const i = t.animateBindings, r = K(Mt), s = B(1), o = B(0), a = B(0), l = B(1), c = B(1), u = B(0), d = B(0), m = B(1), h = pe(
1343
1343
  [d, m],
1344
1344
  ([k, y]) => `blur(${k}px) brightness(${y})`
1345
1345
  ), [g, A] = he(On), x = mt({
@@ -1352,7 +1352,7 @@ function Pn(t, e, n) {
1352
1352
  blur: d,
1353
1353
  brightness: m
1354
1354
  });
1355
- return qt(() => {
1355
+ return Gt(() => {
1356
1356
  if (!i || Object.keys(i).length === 0) return;
1357
1357
  const k = x.current, y = /* @__PURE__ */ new Map(), p = /* @__PURE__ */ new Map(), w = /* @__PURE__ */ new Set();
1358
1358
  let $ = !1;
@@ -1369,17 +1369,17 @@ function Pn(t, e, n) {
1369
1369
  }
1370
1370
  const L = p.get(b);
1371
1371
  if (O || L === void 0) {
1372
- p.set(b, { current: P }), A((lt) => ({ ...lt, [V]: zt(P) }));
1372
+ p.set(b, { current: P }), A((lt) => ({ ...lt, [V]: Wt(P) }));
1373
1373
  return;
1374
1374
  }
1375
1375
  const ue = L.current, fe = v(b, Z);
1376
1376
  w.add(b), y.get(`color:${b}`)?.stop(), y.set(
1377
1377
  `color:${b}`,
1378
- At(0, 1, {
1378
+ Ft(0, 1, {
1379
1379
  ...fe,
1380
1380
  onUpdate: (lt) => {
1381
- const Mt = Tn(ue, P, lt);
1382
- L.current = Mt, A((de) => ({ ...de, [V]: zt(Mt) }));
1381
+ const At = Tn(ue, P, lt);
1382
+ L.current = At, A((de) => ({ ...de, [V]: Wt(At) }));
1383
1383
  }
1384
1384
  })
1385
1385
  );
@@ -1387,7 +1387,7 @@ function Pn(t, e, n) {
1387
1387
  }
1388
1388
  const at = jn(b, C);
1389
1389
  if (at === null) {
1390
- b.startsWith("filter.") ? Yt(`bindAnimate.${b}`, t.id) : En(b, t.id);
1390
+ b.startsWith("filter.") ? Xt(`bindAnimate.${b}`, t.id) : En(b, t.id);
1391
1391
  return;
1392
1392
  }
1393
1393
  if (O) {
@@ -1398,7 +1398,7 @@ function Pn(t, e, n) {
1398
1398
  const ce = v(b, Z);
1399
1399
  w.add(b);
1400
1400
  for (const [P, L] of Object.entries(at))
1401
- y.set(P, At(k[P], L, ce));
1401
+ y.set(P, Ft(k[P], L, ce));
1402
1402
  }, U = Mn((b, C) => T(b, C, !1)), _ = Object.entries(i).map(
1403
1403
  ([b, C]) => ye(() => {
1404
1404
  const O = e.signal(q(n, C)).value;
@@ -1410,7 +1410,7 @@ function Pn(t, e, n) {
1410
1410
  U.dispose();
1411
1411
  for (const b of y.values()) b.stop();
1412
1412
  };
1413
- }, [t, i, e, n, r]), { motionStyle: Gt(() => {
1413
+ }, [t, i, e, n, r]), { motionStyle: Yt(() => {
1414
1414
  if (!i) return null;
1415
1415
  const k = {};
1416
1416
  let y = !1;
@@ -1499,7 +1499,7 @@ function Hn(t, e, n, i, r, s = !1) {
1499
1499
  };
1500
1500
  let m;
1501
1501
  if (t.source.kind === "image") {
1502
- const x = It(t.source.src, e);
1502
+ const x = Kt(t.source.src, e);
1503
1503
  if (!x.allowed)
1504
1504
  return S(
1505
1505
  n,
@@ -1575,7 +1575,7 @@ function Hn(t, e, n, i, r, s = !1) {
1575
1575
  ), A = `url(#${o})`;
1576
1576
  return { def: g, style: { mask: A, WebkitMask: A }, id: o, feather: s };
1577
1577
  }
1578
- const se = /* @__PURE__ */ new Map(), ae = rt(se);
1578
+ const se = /* @__PURE__ */ new Map(), ae = it(se);
1579
1579
  function ir(t) {
1580
1580
  if (!t) return se;
1581
1581
  const e = /* @__PURE__ */ new Map(), n = [t];
@@ -1606,7 +1606,7 @@ function le({ node: t, store: e }) {
1606
1606
  }
1607
1607
  function Wn({ node: t, store: e }) {
1608
1608
  wt();
1609
- const n = vt(), i = st(), r = zn(), s = Gt(
1609
+ const n = St(), i = tt(), r = zn(), s = Yt(
1610
1610
  () => In(t, e, n),
1611
1611
  // We re-build per render — signals re-render cheaply, and the
1612
1612
  // resolution itself is O(bindings) which is small. The memo is a
@@ -1614,7 +1614,7 @@ function Wn({ node: t, store: e }) {
1614
1614
  // when the inputs haven't changed.
1615
1615
  [t, e, n, ...Kn(t, e, n)]
1616
1616
  ), o = Pn(t, e, n);
1617
- Xt(t);
1617
+ It(t);
1618
1618
  const a = hn[t.kind];
1619
1619
  if (!a)
1620
1620
  return S(t.id, "kind", "unknown render kind ; node not rendered"), null;
@@ -1638,7 +1638,7 @@ function Wn({ node: t, store: e }) {
1638
1638
  blur: typeof s.blur == "number" ? s.blur : void 0,
1639
1639
  sizing: qn(s.sizing),
1640
1640
  position: t.kind === "frame" ? void 0 : Gn(s),
1641
- size: t.kind === "frame" ? void 0 : Wt(s),
1641
+ size: t.kind === "frame" ? void 0 : qt(s),
1642
1642
  // ADR 002 §3.2 (D2 / #D) — `blendMode` is a universal prop on every
1643
1643
  // primitive ; the wrapper re-validates it against the closed enum
1644
1644
  // before applying `mix-blend-mode` (T4 runtime gate). Pass the raw
@@ -1674,7 +1674,7 @@ function Wn({ node: t, store: e }) {
1674
1674
  $ = T ? ee(T) : !1;
1675
1675
  }
1676
1676
  }
1677
- x = p ? Hn(p, i, t.id, w, Wt(s), $) : null;
1677
+ x = p ? Hn(p, i, t.id, w, qt(s), $) : null;
1678
1678
  }
1679
1679
  const F = x !== null && x.style != null && "maskImage" in x.style;
1680
1680
  let k = A;
@@ -1727,7 +1727,7 @@ function Gn(t) {
1727
1727
  if (!(e === void 0 || n === void 0))
1728
1728
  return { x: e, y: n };
1729
1729
  }
1730
- function Wt(t) {
1730
+ function qt(t) {
1731
1731
  const e = X(t.width), n = X(t.height);
1732
1732
  if (!(e === void 0 && n === void 0))
1733
1733
  return { w: e, h: n };
@@ -1739,8 +1739,8 @@ function Yn(t) {
1739
1739
  }
1740
1740
  function Xn({ node: t, store: e }) {
1741
1741
  wt();
1742
- const n = vt();
1743
- Xt(t);
1742
+ const n = St();
1743
+ It(t);
1744
1744
  const i = t.bindings?.items, r = i === void 0 ? [] : e.signal(q(n, i)).value ?? [];
1745
1745
  if (!Array.isArray(r)) return null;
1746
1746
  const s = t.children?.[0];
@@ -1748,7 +1748,7 @@ function Xn({ node: t, store: e }) {
1748
1748
  const o = typeof t.stagger_ms == "number" ? t.stagger_ms : 0;
1749
1749
  return /* @__PURE__ */ f(J, { children: r.map((a, l) => {
1750
1750
  const c = xn(l, o), u = /* @__PURE__ */ f(gn, { prefix: `${i ?? ""}.${l}`, children: /* @__PURE__ */ f(le, { node: s, store: e }) }, l);
1751
- return c <= 0 ? u : /* @__PURE__ */ f(St.Provider, { value: c, children: u }, l);
1751
+ return c <= 0 ? u : /* @__PURE__ */ f(Mt.Provider, { value: c, children: u }, l);
1752
1752
  }) });
1753
1753
  }
1754
1754
  function In(t, e, n) {
@@ -1774,4 +1774,4 @@ export {
1774
1774
  ir as b,
1775
1775
  rr as r
1776
1776
  };
1777
- //# sourceMappingURL=tree-BIimahCf.js.map
1777
+ //# sourceMappingURL=tree-1coZ32nd.js.map