@glissade/browser 0.18.0-pre.1 → 0.18.0-pre.3
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.
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["index.js", "../../core/dist/targetRef.js", "../../core/dist/cmap.js", "../../core/dist/sidecar.js", "../../core/dist/index.js", "../../scene/dist/nodes.js", "../../scene/dist/layoutEngine.js", "../../scene/dist/index.js", "../../backend-canvas2d/dist/index.js", "../../core/dist/clips.js", "../../scene/dist/path.js", "../../player/dist/index.js", "../../element/dist/index.js"],
|
|
4
|
-
"sourcesContent": ["import { Canvas2DBackend, setShaderRunner } from \"@glissade/backend-canvas2d\";\nexport * from \"@glissade/core\";\nexport * from \"@glissade/core/clips\";\nexport * from \"@glissade/scene\";\nexport * from \"@glissade/scene/path\";\nexport * from \"@glissade/player\";\nexport * from \"@glissade/element\";\nexport { Canvas2DBackend, setShaderRunner };\n", "//#region src/easing.ts\nconst c1 = 1.70158;\nconst c2 = c1 * 1.525;\nconst c3 = 2.70158;\nconst c4 = 2 * Math.PI / 3;\nconst c5 = 2 * Math.PI / 4.5;\nfunction bounceOut(t) {\n\tconst n1 = 7.5625;\n\tconst d1 = 2.75;\n\tif (t < 1 / d1) return n1 * t * t;\n\tif (t < 2 / d1) return n1 * (t -= 1.5 / d1) * t + .75;\n\tif (t < 2.5 / d1) return n1 * (t -= 2.25 / d1) * t + .9375;\n\treturn n1 * (t -= 2.625 / d1) * t + .984375;\n}\nconst easings = {\n\tlinear: (t) => t,\n\teaseInQuad: (t) => t * t,\n\teaseOutQuad: (t) => 1 - (1 - t) * (1 - t),\n\teaseInOutQuad: (t) => t < .5 ? 2 * t * t : 1 - (-2 * t + 2) ** 2 / 2,\n\teaseInCubic: (t) => t ** 3,\n\teaseOutCubic: (t) => 1 - (1 - t) ** 3,\n\teaseInOutCubic: (t) => t < .5 ? 4 * t ** 3 : 1 - (-2 * t + 2) ** 3 / 2,\n\teaseInQuart: (t) => t ** 4,\n\teaseOutQuart: (t) => 1 - (1 - t) ** 4,\n\teaseInOutQuart: (t) => t < .5 ? 8 * t ** 4 : 1 - (-2 * t + 2) ** 4 / 2,\n\teaseInQuint: (t) => t ** 5,\n\teaseOutQuint: (t) => 1 - (1 - t) ** 5,\n\teaseInOutQuint: (t) => t < .5 ? 16 * t ** 5 : 1 - (-2 * t + 2) ** 5 / 2,\n\teaseInSine: (t) => 1 - Math.cos(t * Math.PI / 2),\n\teaseOutSine: (t) => Math.sin(t * Math.PI / 2),\n\teaseInOutSine: (t) => -(Math.cos(Math.PI * t) - 1) / 2,\n\teaseInExpo: (t) => t === 0 ? 0 : 2 ** (10 * t - 10),\n\teaseOutExpo: (t) => t === 1 ? 1 : 1 - 2 ** (-10 * t),\n\teaseInOutExpo: (t) => t === 0 ? 0 : t === 1 ? 1 : t < .5 ? 2 ** (20 * t - 10) / 2 : (2 - 2 ** (-20 * t + 10)) / 2,\n\teaseInCirc: (t) => 1 - Math.sqrt(1 - t * t),\n\teaseOutCirc: (t) => Math.sqrt(1 - (t - 1) * (t - 1)),\n\teaseInOutCirc: (t) => t < .5 ? (1 - Math.sqrt(1 - (2 * t) ** 2)) / 2 : (Math.sqrt(1 - (-2 * t + 2) ** 2) + 1) / 2,\n\teaseInBack: (t) => c3 * t ** 3 - c1 * t * t,\n\teaseOutBack: (t) => 1 + c3 * (t - 1) ** 3 + c1 * (t - 1) ** 2,\n\teaseInOutBack: (t) => t < .5 ? (2 * t) ** 2 * (3.5949095 * 2 * t - c2) / 2 : ((2 * t - 2) ** 2 * (3.5949095 * (t * 2 - 2) + c2) + 2) / 2,\n\teaseInElastic: (t) => t === 0 ? 0 : t === 1 ? 1 : -(2 ** (10 * t - 10)) * Math.sin((t * 10 - 10.75) * c4),\n\teaseOutElastic: (t) => t === 0 ? 0 : t === 1 ? 1 : 2 ** (-10 * t) * Math.sin((t * 10 - .75) * c4) + 1,\n\teaseInOutElastic: (t) => t === 0 ? 0 : t === 1 ? 1 : t < .5 ? -(2 ** (20 * t - 10) * Math.sin((20 * t - 11.125) * c5)) / 2 : 2 ** (-20 * t + 10) * Math.sin((20 * t - 11.125) * c5) / 2 + 1,\n\teaseInBounce: (t) => 1 - bounceOut(1 - t),\n\teaseOutBounce: bounceOut,\n\teaseInOutBounce: (t) => t < .5 ? (1 - bounceOut(1 - 2 * t)) / 2 : (1 + bounceOut(2 * t - 1)) / 2\n};\nfunction bounceOutD(t) {\n\tconst n1 = 7.5625;\n\tconst d1 = 2.75;\n\tif (t < 1 / d1) return 2 * n1 * t;\n\tif (t < 2 / d1) return 2 * n1 * (t - 1.5 / d1);\n\tif (t < 2.5 / d1) return 2 * n1 * (t - 2.25 / d1);\n\treturn 2 * n1 * (t - 2.625 / d1);\n}\nconst LN2 = Math.LN2;\n/**\n* Analytic derivatives d(u) of every named ease (\u00A7B.6) \u2014 closed-form, used\n* for reading velocity off in-flight curves at interruption time. Property-\n* tested against central differences at interior points.\n*/\nconst easingDerivatives = {\n\tlinear: () => 1,\n\teaseInQuad: (t) => 2 * t,\n\teaseOutQuad: (t) => 2 * (1 - t),\n\teaseInOutQuad: (t) => t < .5 ? 4 * t : 4 * (1 - t),\n\teaseInCubic: (t) => 3 * t ** 2,\n\teaseOutCubic: (t) => 3 * (1 - t) ** 2,\n\teaseInOutCubic: (t) => t < .5 ? 12 * t ** 2 : 12 * (1 - t) ** 2,\n\teaseInQuart: (t) => 4 * t ** 3,\n\teaseOutQuart: (t) => 4 * (1 - t) ** 3,\n\teaseInOutQuart: (t) => t < .5 ? 32 * t ** 3 : 32 * (1 - t) ** 3,\n\teaseInQuint: (t) => 5 * t ** 4,\n\teaseOutQuint: (t) => 5 * (1 - t) ** 4,\n\teaseInOutQuint: (t) => t < .5 ? 80 * t ** 4 : 80 * (1 - t) ** 4,\n\teaseInSine: (t) => Math.PI / 2 * Math.sin(t * Math.PI / 2),\n\teaseOutSine: (t) => Math.PI / 2 * Math.cos(t * Math.PI / 2),\n\teaseInOutSine: (t) => Math.PI / 2 * Math.sin(Math.PI * t),\n\teaseInExpo: (t) => t === 0 ? 0 : 10 * LN2 * 2 ** (10 * t - 10),\n\teaseOutExpo: (t) => t === 1 ? 0 : 10 * LN2 * 2 ** (-10 * t),\n\teaseInOutExpo: (t) => t === 0 || t === 1 ? 0 : t < .5 ? 10 * LN2 * 2 ** (20 * t - 10) : 10 * LN2 * 2 ** (-20 * t + 10),\n\teaseInCirc: (t) => t / Math.sqrt(1 - t * t),\n\teaseOutCirc: (t) => (1 - t) / Math.sqrt(1 - (t - 1) * (t - 1)),\n\teaseInOutCirc: (t) => t < .5 ? 2 * t / Math.sqrt(1 - 4 * t * t) : (2 - 2 * t) / Math.sqrt(1 - (-2 * t + 2) ** 2),\n\teaseInBack: (t) => 3 * c3 * t ** 2 - 2 * c1 * t,\n\teaseOutBack: (t) => 3 * c3 * (t - 1) ** 2 + 2 * c1 * (t - 1),\n\teaseInOutBack: (t) => t < .5 ? 12 * 3.5949095 * t ** 2 - 4 * c2 * t : 3 * 3.5949095 * (2 * t - 2) ** 2 + 2 * c2 * (2 * t - 2),\n\teaseInElastic: (t) => {\n\t\tif (t === 0 || t === 1) return 0;\n\t\tconst theta = (t * 10 - 10.75) * c4;\n\t\tconst amp = 2 ** (10 * t - 10);\n\t\treturn -(10 * LN2 * amp * Math.sin(theta) + amp * 10 * c4 * Math.cos(theta));\n\t},\n\teaseOutElastic: (t) => {\n\t\tif (t === 0 || t === 1) return 0;\n\t\tconst phi = (t * 10 - .75) * c4;\n\t\tconst amp = 2 ** (-10 * t);\n\t\treturn -10 * LN2 * amp * Math.sin(phi) + amp * 10 * c4 * Math.cos(phi);\n\t},\n\teaseInOutElastic: (t) => {\n\t\tif (t === 0 || t === 1) return 0;\n\t\tconst psi = (20 * t - 11.125) * c5;\n\t\tif (t < .5) {\n\t\t\tconst amp = 2 ** (20 * t - 10);\n\t\t\treturn -(20 * LN2 * amp * Math.sin(psi) + amp * 20 * c5 * Math.cos(psi)) / 2;\n\t\t}\n\t\tconst amp = 2 ** (-20 * t + 10);\n\t\treturn (-20 * LN2 * amp * Math.sin(psi) + amp * 20 * c5 * Math.cos(psi)) / 2;\n\t},\n\teaseInBounce: (t) => bounceOutD(1 - t),\n\teaseOutBounce: bounceOutD,\n\teaseInOutBounce: (t) => t < .5 ? bounceOutD(1 - 2 * t) : bounceOutD(2 * t - 1)\n};\n/** Default property-tween ease (Motion Canvas precedent). */\nconst DEFAULT_EASE = \"easeInOutCubic\";\nfunction bezierKernel(p1x, p1y, p2x, p2y) {\n\tconst ax = 3 * p1x - 3 * p2x + 1;\n\tconst bx = 3 * p2x - 6 * p1x;\n\tconst cx = 3 * p1x;\n\tconst ay = 3 * p1y - 3 * p2y + 1;\n\tconst by = 3 * p2y - 6 * p1y;\n\tconst cy = 3 * p1y;\n\tconst sampleX = (u) => ((ax * u + bx) * u + cx) * u;\n\tconst sampleY = (u) => ((ay * u + by) * u + cy) * u;\n\tconst sampleDX = (u) => (3 * ax * u + 2 * bx) * u + cx;\n\tconst sampleDY = (u) => (3 * ay * u + 2 * by) * u + cy;\n\tconst solveU = (x) => {\n\t\tlet u = x;\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\tconst err = sampleX(u) - x;\n\t\t\tif (Math.abs(err) < 1e-7) return u;\n\t\t\tconst d = sampleDX(u);\n\t\t\tif (Math.abs(d) < 1e-6) break;\n\t\t\tu -= err / d;\n\t\t}\n\t\tlet lo = 0;\n\t\tlet hi = 1;\n\t\tu = x;\n\t\twhile (hi - lo > 1e-7) {\n\t\t\tif (sampleX(u) < x) lo = u;\n\t\t\telse hi = u;\n\t\t\tu = (lo + hi) / 2;\n\t\t}\n\t\treturn u;\n\t};\n\treturn {\n\t\tsampleY,\n\t\tsampleDX,\n\t\tsampleDY,\n\t\tsolveU\n\t};\n}\n/**\n* CSS-style cubic b\u00E9zier where x is time and y is progress. Newton's method\n* with a bisection fallback for the flat-derivative regions.\n*/\nfunction cubicBezier(p1x, p1y, p2x, p2y) {\n\tconst k = bezierKernel(p1x, p1y, p2x, p2y);\n\treturn (t) => {\n\t\tif (t <= 0) return 0;\n\t\tif (t >= 1) return 1;\n\t\treturn k.sampleY(k.solveU(t));\n\t};\n}\n/** Analytic dy/dx of a cubic b\u00E9zier ease: y'(s)/x'(s) at the solved parameter (\u00A7B.6). */\nfunction cubicBezierDerivative(p1x, p1y, p2x, p2y) {\n\tconst k = bezierKernel(p1x, p1y, p2x, p2y);\n\treturn (t) => {\n\t\tconst u = k.solveU(Math.min(1, Math.max(0, t)));\n\t\tconst dx = k.sampleDX(u);\n\t\tif (Math.abs(dx) < 1e-9) return 0;\n\t\treturn k.sampleDY(u) / dx;\n\t};\n}\nvar UnknownEasingError = class extends Error {\n\tconstructor(name) {\n\t\tsuper(`unknown easing '${name}'; register it via easings or use cubicBezier/spring`);\n\t\tthis.name = \"UnknownEasingError\";\n\t}\n};\nfunction namedEasing(name) {\n\tconst fn = easings[name];\n\tif (!fn) throw new UnknownEasingError(name);\n\treturn fn;\n}\n//#endregion\n//#region src/spring.ts\nconst DEFAULT_SETTLE_TOLERANCE = .005;\nfunction params(cfg) {\n\tconst mass = cfg.mass ?? 1;\n\tif (!(cfg.stiffness > 0) || !(cfg.damping > 0) || !(mass > 0)) throw new RangeError(\"spring stiffness, damping, and mass must all be > 0\");\n\treturn {\n\t\tw0: Math.sqrt(cfg.stiffness / mass),\n\t\tzeta: cfg.damping / (2 * Math.sqrt(cfg.stiffness * mass))\n\t};\n}\n/** Raw closed-form spring velocity at time t \u2014 d/dt of rawValue's three branches. */\nfunction rawDerivative(cfg, t) {\n\tif (t <= 0) return 0;\n\tconst { w0, zeta } = params(cfg);\n\tif (Math.abs(zeta - 1) < 1e-9) return w0 * w0 * t * Math.exp(-w0 * t);\n\tif (zeta < 1) {\n\t\tconst wd = w0 * Math.sqrt(1 - zeta * zeta);\n\t\treturn Math.exp(-zeta * w0 * t) * (w0 * w0 / wd) * Math.sin(wd * t);\n\t}\n\tconst s = Math.sqrt(zeta * zeta - 1);\n\tconst r1 = -w0 * (zeta - s);\n\tconst r2 = -w0 * (zeta + s);\n\treturn r1 * r2 * (Math.exp(r1 * t) - Math.exp(r2 * t)) / (r1 - r2);\n}\n/** Raw closed-form spring position at time t (seconds). Approaches 1, may overshoot. */\nfunction rawValue(cfg, t) {\n\tif (t <= 0) return 0;\n\tconst { w0, zeta } = params(cfg);\n\tif (Math.abs(zeta - 1) < 1e-9) return 1 - Math.exp(-w0 * t) * (1 + w0 * t);\n\tif (zeta < 1) {\n\t\tconst wd = w0 * Math.sqrt(1 - zeta * zeta);\n\t\treturn 1 - Math.exp(-zeta * w0 * t) * (Math.cos(wd * t) + zeta * w0 / wd * Math.sin(wd * t));\n\t}\n\tconst s = Math.sqrt(zeta * zeta - 1);\n\tconst r1 = -w0 * (zeta - s);\n\tconst r2 = -w0 * (zeta + s);\n\treturn 1 + (r2 * Math.exp(r1 * t) - r1 * Math.exp(r2 * t)) / (r1 - r2);\n}\n/**\n* Settle duration: the earliest time after which |x - 1| stays within\n* settleTolerance. Closed-form via the decay envelope for the underdamped\n* case; bisection on the monotone tail otherwise. Deterministic.\n*/\nfunction duration(cfg, opts) {\n\tconst tol = opts?.settleTolerance ?? DEFAULT_SETTLE_TOLERANCE;\n\tconst { w0, zeta } = params(cfg);\n\tif (zeta < 1) {\n\t\tconst wd = w0 * Math.sqrt(1 - zeta * zeta);\n\t\tconst amp = Math.sqrt(1 + (zeta * w0 / wd) ** 2);\n\t\treturn Math.log(amp / tol) / (zeta * w0);\n\t}\n\tlet hi = 1 / w0;\n\twhile (1 - rawValue(cfg, hi) > tol) hi *= 2;\n\tlet lo = 0;\n\tfor (let i = 0; i < 64 && hi - lo > 1e-9; i++) {\n\t\tconst mid = (lo + hi) / 2;\n\t\tif (1 - rawValue(cfg, mid) > tol) lo = mid;\n\t\telse hi = mid;\n\t}\n\treturn hi;\n}\n/**\n* Spring progress at local time t, affinely rescaled so value(duration) = 1\n* exactly \u2014 the raw form only approaches 1, and an unscaled curve would snap\n* at the key (\u00A72.7 \"endpoint continuity\"). May exceed 1 (overshoot).\n*/\nfunction value(cfg, t, opts) {\n\tconst d = duration(cfg, opts);\n\treturn rawValue(cfg, Math.min(t, d)) / rawValue(cfg, d);\n}\nfunction retarget(cfg, x0, v0) {\n\tconst { w0, zeta } = params(cfg);\n\tlet value0;\n\tlet velocity0;\n\tlet envelope;\n\tif (Math.abs(zeta - 1) < 1e-9) {\n\t\tconst b = v0 + w0 * x0;\n\t\tvalue0 = (tau) => tau <= 0 ? x0 : Math.exp(-w0 * tau) * (x0 + b * tau);\n\t\tvelocity0 = (tau) => tau <= 0 ? v0 : Math.exp(-w0 * tau) * (v0 - w0 * b * tau);\n\t\tenvelope = (tau) => Math.exp(-w0 * tau) * (Math.abs(x0) + Math.abs(b) * tau);\n\t} else if (zeta < 1) {\n\t\tconst wd = w0 * Math.sqrt(1 - zeta * zeta);\n\t\tconst c2v = (v0 + zeta * w0 * x0) / wd;\n\t\tconst amp = Math.hypot(x0, c2v);\n\t\tvalue0 = (tau) => tau <= 0 ? x0 : Math.exp(-zeta * w0 * tau) * (x0 * Math.cos(wd * tau) + c2v * Math.sin(wd * tau));\n\t\tvelocity0 = (tau) => tau <= 0 ? v0 : Math.exp(-zeta * w0 * tau) * (v0 * Math.cos(wd * tau) - (w0 * w0 * x0 + zeta * w0 * v0) / wd * Math.sin(wd * tau));\n\t\tenvelope = (tau) => Math.exp(-zeta * w0 * tau) * amp;\n\t} else {\n\t\tconst s = Math.sqrt(zeta * zeta - 1);\n\t\tconst rp = w0 * (-zeta + s);\n\t\tconst rm = w0 * (-zeta - s);\n\t\tconst cp = (v0 - rm * x0) / (rp - rm);\n\t\tconst cm = (rp * x0 - v0) / (rp - rm);\n\t\tvalue0 = (tau) => tau <= 0 ? x0 : cp * Math.exp(rp * tau) + cm * Math.exp(rm * tau);\n\t\tvelocity0 = (tau) => tau <= 0 ? v0 : cp * rp * Math.exp(rp * tau) + cm * rm * Math.exp(rm * tau);\n\t\tenvelope = (tau) => Math.abs(cp) * Math.exp(rp * tau) + Math.abs(cm) * Math.exp(rm * tau);\n\t}\n\tconst settleTime = (tol) => {\n\t\tconst eps = tol ?? Math.abs(x0) * .005 + 1e-6;\n\t\tif (envelope(0) <= eps && Math.abs(v0) < 1e-12) return 0;\n\t\tlet hi = 1 / w0;\n\t\tlet guard = 0;\n\t\twhile (envelope(hi) > eps && guard++ < 64) hi *= 2;\n\t\tlet lo = 0;\n\t\tfor (let i = 0; i < 64 && hi - lo > 1e-9; i++) {\n\t\t\tconst mid = (lo + hi) / 2;\n\t\t\tif (Math.max(envelope(mid), envelope(mid * 1.05 + 1e-6)) > eps) lo = mid;\n\t\t\telse hi = mid;\n\t\t}\n\t\treturn hi;\n\t};\n\treturn {\n\t\tvalue: value0,\n\t\tvelocity: velocity0,\n\t\tsettleTime\n\t};\n}\nconst spring = Object.assign((cfg) => {\n\tparams(cfg);\n\treturn {\n\t\tkind: \"spring\",\n\t\tstiffness: cfg.stiffness,\n\t\tdamping: cfg.damping,\n\t\tmass: cfg.mass ?? 1\n\t};\n}, {\n\tduration,\n\tvalue,\n\tretarget\n});\n/**\n* Named spring feels (react-spring conventions, mass 1) \u2014 a vocabulary instead\n* of hand-tuned stiffness/damping. Use `spring(springPresets.wobbly)` or\n* `springTo(t, a, b, springPresets.gentle)`.\n*/\nconst springPresets = {\n\tdefault: {\n\t\tstiffness: 170,\n\t\tdamping: 26\n\t},\n\tgentle: {\n\t\tstiffness: 120,\n\t\tdamping: 14\n\t},\n\twobbly: {\n\t\tstiffness: 180,\n\t\tdamping: 12\n\t},\n\tstiff: {\n\t\tstiffness: 210,\n\t\tdamping: 20\n\t},\n\tslow: {\n\t\tstiffness: 280,\n\t\tdamping: 60\n\t},\n\tmolasses: {\n\t\tstiffness: 280,\n\t\tdamping: 120\n\t}\n};\n/**\n* The spring as a normalized easing over a segment whose length must equal\n* spring.duration(cfg) (validated at the document layer, \u00A72.7).\n*/\nfunction springEasing(cfg) {\n\tconst d = duration(cfg);\n\treturn (p) => value(cfg, p * d);\n}\n/**\n* Analytic d/dp of springEasing (\u00A7B.6): oscillator derivative \u00D7 the affine\n* rescale factor \u00D7 duration (chain rule p \u2192 t = p\u00B7D). Flat past p=1,\n* matching value()'s clamp (right-derivative convention).\n*/\nfunction springEasingDerivative(cfg) {\n\tconst d = duration(cfg);\n\tconst scale = d / rawValue(cfg, d);\n\treturn (p) => p >= 1 ? 0 : rawDerivative(cfg, p * d) * scale;\n}\n//#endregion\n//#region src/devWarning.ts\nlet devWarn = (msg) => {\n\tglobalThis.console?.warn(`[glissade] ${msg}`);\n};\nfunction setDevWarning(fn) {\n\tdevWarn = fn;\n}\n/** Internal: emit through the configurable channel. */\nfunction emitDevWarning(message) {\n\tdevWarn(message);\n}\n//#endregion\n//#region src/color.ts\nconst HEX_RE = /^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i;\nconst RGB_RE = /^rgba?\\(\\s*([\\d.]+)\\s*[, ]\\s*([\\d.]+)\\s*[, ]\\s*([\\d.]+)\\s*(?:[,/]\\s*([\\d.]+%?)\\s*)?\\)$/i;\nvar ColorParseError = class extends Error {\n\tconstructor(input) {\n\t\tsuper(`cannot parse color '${input}' (supported: #rgb[a], #rrggbb[aa], rgb()/rgba())`);\n\t\tthis.name = \"ColorParseError\";\n\t}\n};\nfunction parseColor(input) {\n\tconst hex = HEX_RE.exec(input);\n\tif (hex) {\n\t\tlet h = hex[1];\n\t\tif (h.length <= 4) h = [...h].map((c) => c + c).join(\"\");\n\t\tconst n = parseInt(h, 16);\n\t\tif (h.length === 6) return {\n\t\t\tr: n >> 16,\n\t\t\tg: n >> 8 & 255,\n\t\t\tb: n & 255,\n\t\t\ta: 1\n\t\t};\n\t\treturn {\n\t\t\tr: n >>> 24 & 255,\n\t\t\tg: n >>> 16 & 255,\n\t\t\tb: n >>> 8 & 255,\n\t\t\ta: (n & 255) / 255\n\t\t};\n\t}\n\tconst rgb = RGB_RE.exec(input);\n\tif (rgb) {\n\t\tconst alphaRaw = rgb[4];\n\t\tconst a = alphaRaw === void 0 ? 1 : alphaRaw.endsWith(\"%\") ? parseFloat(alphaRaw) / 100 : parseFloat(alphaRaw);\n\t\treturn {\n\t\t\tr: parseFloat(rgb[1]),\n\t\t\tg: parseFloat(rgb[2]),\n\t\t\tb: parseFloat(rgb[3]),\n\t\t\ta\n\t\t};\n\t}\n\tthrow new ColorParseError(input);\n}\nfunction formatColor(c) {\n\tconst clampByte = (v) => Math.min(255, Math.max(0, Math.round(v)));\n\tconst hex = (v) => clampByte(v).toString(16).padStart(2, \"0\");\n\tconst base = `#${hex(c.r)}${hex(c.g)}${hex(c.b)}`;\n\tconst a = Math.min(1, Math.max(0, c.a));\n\treturn a >= 1 ? base : `${base}${hex(a * 255)}`;\n}\nfunction srgbToLinear(c) {\n\tconst v = c / 255;\n\treturn v <= .04045 ? v / 12.92 : ((v + .055) / 1.055) ** 2.4;\n}\nfunction linearToSrgb(v) {\n\treturn (v <= .0031308 ? v * 12.92 : 1.055 * v ** (1 / 2.4) - .055) * 255;\n}\nfunction rgbaToOklab(c) {\n\tconst r = srgbToLinear(c.r);\n\tconst g = srgbToLinear(c.g);\n\tconst b = srgbToLinear(c.b);\n\tconst l = Math.cbrt(.4122214708 * r + .5363325363 * g + .0514459929 * b);\n\tconst m = Math.cbrt(.2119034982 * r + .6806995451 * g + .1073969566 * b);\n\tconst s = Math.cbrt(.0883024619 * r + .2817188376 * g + .6299787005 * b);\n\treturn {\n\t\tL: .2104542553 * l + .793617785 * m - .0040720468 * s,\n\t\ta: 1.9779984951 * l - 2.428592205 * m + .4505937099 * s,\n\t\tb: .0259040371 * l + .7827717662 * m - .808675766 * s,\n\t\talpha: c.a\n\t};\n}\nfunction oklabToRgba(c) {\n\tconst l = (c.L + .3963377774 * c.a + .2158037573 * c.b) ** 3;\n\tconst m = (c.L - .1055613458 * c.a - .0638541728 * c.b) ** 3;\n\tconst s = (c.L - .0894841775 * c.a - 1.291485548 * c.b) ** 3;\n\treturn {\n\t\tr: linearToSrgb(4.0767416621 * l - 3.3077115913 * m + .2309699292 * s),\n\t\tg: linearToSrgb(-1.2684380046 * l + 2.6097574011 * m - .3413193965 * s),\n\t\tb: linearToSrgb(-.0041960863 * l - .7034186147 * m + 1.707614701 * s),\n\t\ta: c.alpha\n\t};\n}\n/** Interpolate two CSS color strings in OKLab; t may extrapolate. */\nfunction lerpColor(from, to, t) {\n\tconst a = rgbaToOklab(parseColor(from));\n\tconst b = rgbaToOklab(parseColor(to));\n\tconst mix = (x, y) => x + (y - x) * t;\n\treturn formatColor(oklabToRgba({\n\t\tL: mix(a.L, b.L),\n\t\ta: mix(a.a, b.a),\n\t\tb: mix(a.b, b.b),\n\t\talpha: mix(a.alpha, b.alpha)\n\t}));\n}\n//#endregion\n//#region src/valueTypes.ts\n/**\n* Value-type registry with pluggable per-type interpolation (DESIGN.md \u00A72.2).\n* `extrapolates` declares whether a type's lerp accepts easedT outside [0,1]\n* (spring overshoot); non-extrapolating types clamp.\n*/\nconst registry = /* @__PURE__ */ new Map();\nfunction registerValueType(vt) {\n\tregistry.set(vt.id, vt);\n}\nvar UnknownValueTypeError = class extends Error {\n\tconstructor(id) {\n\t\tsuper(`unknown value type '${id}'; register it via registerValueType()`);\n\t\tthis.name = \"UnknownValueTypeError\";\n\t}\n};\nfunction getValueType(id) {\n\tconst vt = registry.get(id);\n\tif (!vt) throw new UnknownValueTypeError(id);\n\treturn vt;\n}\n/**\n* Resolve a value-type id to its REPRESENTATION (the bind guard's compatibility\n* key, \u00A72.2): a type's `repr` (the built-in it's representationally compatible\n* with), else the id itself. SINGLE-HOP \u2014 `repr` is never chained, so a custom\n* type's repr must be a base type. An UNREGISTERED id resolves to itself (the\n* guard's job is repr-compat, not existence \u2014 `getValueType` enforces that).\n*/\nfunction reprOf(id) {\n\treturn registry.get(id)?.repr ?? id;\n}\nconst numberType = {\n\tid: \"number\",\n\tlerp: (a, b, t) => a + (b - a) * t,\n\textrapolates: true,\n\tequals: Object.is,\n\tadd: (a, b) => a + b,\n\tsub: (a, b) => a - b,\n\tscale: (a, k) => a * k,\n\tdefaultHandoff: \"spring\"\n};\nconst vec2Equals = (a, b) => a[0] === b[0] && a[1] === b[1];\nconst vec2Type = {\n\tid: \"vec2\",\n\tlerp: (a, b, t) => [a[0] + (b[0] - a[0]) * t, a[1] + (b[1] - a[1]) * t],\n\textrapolates: true,\n\tequals: vec2Equals,\n\tadd: (a, b) => [a[0] + b[0], a[1] + b[1]],\n\tsub: (a, b) => [a[0] - b[0], a[1] - b[1]],\n\tscale: (a, k) => [a[0] * k, a[1] * k],\n\tdefaultHandoff: \"spring\"\n};\n/** vec2 swept along a circular arc: polar lerp of radius + shortest-path angle (\u00A72.2). */\nconst vec2ArcType = {\n\tid: \"vec2-arc\",\n\trepr: \"vec2\",\n\tlerp: (a, b, t) => {\n\t\tconst ra = Math.hypot(a[0], a[1]);\n\t\tconst rb = Math.hypot(b[0], b[1]);\n\t\tconst angA = Math.atan2(a[1], a[0]);\n\t\tlet dAng = Math.atan2(b[1], b[0]) - angA;\n\t\twhile (dAng > Math.PI) dAng -= 2 * Math.PI;\n\t\twhile (dAng < -Math.PI) dAng += 2 * Math.PI;\n\t\tconst r = ra + (rb - ra) * t;\n\t\tconst ang = angA + dAng * t;\n\t\treturn [r * Math.cos(ang), r * Math.sin(ang)];\n\t},\n\textrapolates: true,\n\tequals: vec2Equals,\n\tdefaultHandoff: \"blend-from-frozen\"\n};\nconst colorType = {\n\tid: \"color\",\n\tlerp: lerpColor,\n\textrapolates: true,\n\tequals: (a, b) => a === b,\n\tdefaultHandoff: \"blend-from-frozen\"\n};\n/** Discrete types: hold-only by construction (\u00A72.2); lerp snaps at t=1. */\nfunction discrete(id) {\n\treturn {\n\t\tid,\n\t\tlerp: (a, b, t) => t >= 1 ? b : a,\n\t\textrapolates: false,\n\t\tequals: (a, b) => Object.is(a, b),\n\t\tdefaultHandoff: \"cut\"\n\t};\n}\nconst stringType = discrete(\"string\");\nconst booleanType = discrete(\"boolean\");\nconst lerpV = (a, b, t) => [a[0] + (b[0] - a[0]) * t, a[1] + (b[1] - a[1]) * t];\n/** Topology must match for a morph (contour count, closed flags, vertex counts). */\nfunction pathTopologyMatches(a, b) {\n\tif (a.length !== b.length) return false;\n\tfor (let i = 0; i < a.length; i++) {\n\t\tconst ca = a[i];\n\t\tconst cb = b[i];\n\t\tif (ca.closed !== cb.closed || ca.v.length !== cb.v.length) return false;\n\t}\n\treturn true;\n}\nlet warnedPathTopology = false;\n/**\n* Path morphing (\u00A72.2): pairwise lerp of anchors and tangents \u2014 exactly how\n* lottie-web morphs, so imported animations are pixel-faithful. Mismatched\n* topology snaps (hold a, then b at t \u2265 1) with a one-time dev warning; the\n* de Casteljau normalization fallback for arbitrary native morphs is tracked\n* future work. Lerp-only: offsets are not well-defined under mismatched\n* topology, so no add/sub/scale \u2014 handoffs blend from the frozen value.\n*/\nconst pathType = {\n\tid: \"path\",\n\tlerp: (a, b, t) => {\n\t\tif (!pathTopologyMatches(a, b)) {\n\t\t\tif (!warnedPathTopology) {\n\t\t\t\twarnedPathTopology = true;\n\t\t\t\temitDevWarning(\"path lerp with mismatched topology (contour/vertex counts or closed flags differ): snapping instead of morphing \u2014 supply matched vertex counts (\u00A72.2)\");\n\t\t\t}\n\t\t\treturn t >= 1 ? b : a;\n\t\t}\n\t\treturn a.map((ca, i) => {\n\t\t\tconst cb = b[i];\n\t\t\treturn {\n\t\t\t\tclosed: ca.closed,\n\t\t\t\tv: ca.v.map((p, j) => lerpV(p, cb.v[j], t)),\n\t\t\t\tin: ca.in.map((p, j) => lerpV(p, cb.in[j], t)),\n\t\t\t\tout: ca.out.map((p, j) => lerpV(p, cb.out[j], t))\n\t\t\t};\n\t\t});\n\t},\n\textrapolates: false,\n\tequals: (a, b) => {\n\t\tif (a === b) return true;\n\t\tif (!pathTopologyMatches(a, b)) return false;\n\t\tconst eq = (x, y) => x[0] === y[0] && x[1] === y[1];\n\t\treturn a.every((ca, i) => {\n\t\t\tconst cb = b[i];\n\t\t\treturn ca.v.every((p, j) => eq(p, cb.v[j])) && ca.in.every((p, j) => eq(p, cb.in[j])) && ca.out.every((p, j) => eq(p, cb.out[j]));\n\t\t});\n\t},\n\tdefaultHandoff: \"blend-from-frozen\"\n};\nconst lerpN = (a, b, t) => a + (b - a) * t;\nconst lerpPt = (a, b, t) => [lerpN(a[0], b[0], t), lerpN(a[1], b[1], t)];\n/** Same hue at alpha 0 \u2014 a transparent stand-in so an appearing/disappearing\n* `bg` (mesh baseline) fades through alpha instead of popping at the boundary.\n* `parseColor` THROWS on a non-hex/non-canonical CSS color (hsl/named/oklch);\n* since this runs inside `lerp` during evaluate() it must NEVER throw \u2014 fall\n* back to holding the PRESENT color so the bg snaps in/out instead of crashing\n* the whole frame. */\nfunction transparentOf(color) {\n\ttry {\n\t\treturn formatColor({\n\t\t\t...parseColor(color),\n\t\t\ta: 0\n\t\t});\n\t} catch {\n\t\treturn color;\n\t}\n}\n/** `lerpColor` that NEVER throws inside `lerp` (evaluate()): on an unparseable\n* color (hsl/named/oklch \u2014 `parseColor` only knows hex/rgb) it SNAPS (holds `a`,\n* then `b` at t\u22651) instead of crashing the frame. Byte-identical to `lerpColor`\n* for parseable colors, so it does not move any golden. */\nfunction safeLerpColor(a, b, t) {\n\ttry {\n\t\treturn lerpColor(a, b, t);\n\t} catch {\n\t\treturn t >= 1 ? b : a;\n\t}\n}\n/** Lift a solid color to a uniform gradient matching `shape` (every stop = color),\n* so a color\u2194gradient tween fades smoothly instead of snapping. */\nfunction liftColor(color, shape) {\n\tconst stops = shape.stops.map((s) => ({\n\t\toffset: s.offset,\n\t\tcolor\n\t}));\n\tconst interp = shape.interpolation ? { interpolation: shape.interpolation } : {};\n\treturn shape.kind === \"radial\" ? {\n\t\tkind: \"radial\",\n\t\tstops,\n\t\t...shape.center ? { center: shape.center } : {},\n\t\t...shape.radius !== void 0 ? { radius: shape.radius } : {},\n\t\t...interp\n\t} : {\n\t\tkind: \"linear\",\n\t\tstops,\n\t\t...shape.from ? { from: shape.from } : {},\n\t\t...shape.to ? { to: shape.to } : {},\n\t\t...interp\n\t};\n}\nlet warnedPaintShape = false;\nfunction paintSnap(t, a, b, message = \"paint lerp across mismatched gradient shapes (different kind or stop count): snapping instead of interpolating \u2014 match the kind + stop count on both keyframes (\u00A72.2)\") {\n\tif (!warnedPaintShape) {\n\t\twarnedPaintShape = true;\n\t\temitDevWarning(message);\n\t}\n\treturn t >= 1 ? b : a;\n}\nconst stopsEqual = (a, b) => a.length === b.length && a.every((s, i) => s.offset === b[i].offset && s.color === b[i].color);\n/**\n* Gradient paint morphing (\u00A72.2): a solid color lifts to a uniform gradient to\n* meet the other side, then matched-kind/matched-stop-count gradients lerp their\n* stops (offset + oklab color) and geometry pairwise; a mismatched kind or stop\n* count snaps (hold a, then b at t \u2265 1) with a one-time dev warning. Lerp-only \u2014\n* no offsets under mismatch \u2014 so handoffs blend from the frozen value.\n*/\nconst paintType = {\n\tid: \"paint\",\n\tlerp: (a, b, t) => {\n\t\tif (a.kind === \"color\" && b.kind === \"color\") return {\n\t\t\tkind: \"color\",\n\t\t\tcolor: lerpColor(a.color, b.color, t)\n\t\t};\n\t\tif (a.kind === \"mesh\" && b.kind === \"mesh\") {\n\t\t\tif (a.points.length !== b.points.length) return paintSnap(t, a, b);\n\t\t\tif (a.interpolation !== b.interpolation) return paintSnap(t, a, b, `paint lerp across mismatched mesh interpolation modes ('${a.interpolation ?? \"smooth\"}' \u2192 '${b.interpolation ?? \"smooth\"}'): snapping instead of interpolating \u2014 the blend kernel is discrete, so it switches once at the boundary; match \\`interpolation\\` on both keyframes to morph the points (\u00A73 Paint)`);\n\t\t\tconst points = a.points.map((pa, i) => {\n\t\t\t\tconst pb = b.points[i];\n\t\t\t\treturn {\n\t\t\t\t\tpos: lerpPt(pa.pos, pb.pos, t),\n\t\t\t\t\tcolor: lerpColor(pa.color, pb.color, t)\n\t\t\t\t};\n\t\t\t});\n\t\t\tconst bg = a.bg !== void 0 || b.bg !== void 0 ? { bg: safeLerpColor(a.bg ?? transparentOf(b.bg), b.bg ?? transparentOf(a.bg), t) } : {};\n\t\t\treturn {\n\t\t\t\tkind: \"mesh\",\n\t\t\t\tpoints,\n\t\t\t\t...a.interpolation ? { interpolation: a.interpolation } : {},\n\t\t\t\t...bg\n\t\t\t};\n\t\t}\n\t\tif (a.kind === \"mesh\" || b.kind === \"mesh\") return paintSnap(t, a, b);\n\t\tlet A = a;\n\t\tlet B = b;\n\t\tif (A.kind === \"color\" && B.kind !== \"color\") A = liftColor(A.color, B);\n\t\telse if (B.kind === \"color\" && A.kind !== \"color\") B = liftColor(B.color, A);\n\t\tif (A.kind === \"color\" || B.kind === \"color\" || A.kind !== B.kind || A.stops.length !== B.stops.length) return paintSnap(t, a, b);\n\t\tconst stops = A.stops.map((sa, i) => ({\n\t\t\toffset: lerpN(sa.offset, B.stops[i].offset, t),\n\t\t\tcolor: lerpColor(sa.color, B.stops[i].color, t)\n\t\t}));\n\t\tconst interp = A.interpolation ? { interpolation: A.interpolation } : {};\n\t\tif (A.kind === \"radial\" && B.kind === \"radial\") return {\n\t\t\tkind: \"radial\",\n\t\t\tstops,\n\t\t\t...A.center && B.center ? { center: lerpPt(A.center, B.center, t) } : A.center ? { center: A.center } : {},\n\t\t\t...A.radius !== void 0 && B.radius !== void 0 ? { radius: lerpN(A.radius, B.radius, t) } : A.radius !== void 0 ? { radius: A.radius } : {},\n\t\t\t...interp\n\t\t};\n\t\tif (A.kind === \"linear\" && B.kind === \"linear\") return {\n\t\t\tkind: \"linear\",\n\t\t\tstops,\n\t\t\t...A.from && B.from ? { from: lerpPt(A.from, B.from, t) } : A.from ? { from: A.from } : {},\n\t\t\t...A.to && B.to ? { to: lerpPt(A.to, B.to, t) } : A.to ? { to: A.to } : {},\n\t\t\t...interp\n\t\t};\n\t\treturn paintSnap(t, a, b);\n\t},\n\textrapolates: false,\n\tequals: (a, b) => {\n\t\tif (a === b) return true;\n\t\tif (a.kind !== b.kind) return false;\n\t\tif (a.kind === \"color\") return b.kind === \"color\" && a.color === b.color;\n\t\tif (a.kind === \"mesh\") {\n\t\t\tif (b.kind !== \"mesh\") return false;\n\t\t\tif (a.interpolation !== b.interpolation || a.bg !== b.bg) return false;\n\t\t\tif (a.points.length !== b.points.length) return false;\n\t\t\treturn a.points.every((p, i) => {\n\t\t\t\tconst q = b.points[i];\n\t\t\t\treturn p.color === q.color && p.pos[0] === q.pos[0] && p.pos[1] === q.pos[1];\n\t\t\t});\n\t\t}\n\t\tif (b.kind === \"color\" || b.kind === \"mesh\") return false;\n\t\tif (!stopsEqual(a.stops, b.stops)) return false;\n\t\tif (a.interpolation !== b.interpolation) return false;\n\t\tif (a.kind === \"radial\" && b.kind === \"radial\") return JSON.stringify(a.center) === JSON.stringify(b.center) && a.radius === b.radius;\n\t\tif (a.kind === \"linear\" && b.kind === \"linear\") return JSON.stringify(a.from) === JSON.stringify(b.from) && JSON.stringify(a.to) === JSON.stringify(b.to);\n\t\treturn false;\n\t},\n\tdefaultHandoff: \"blend-from-frozen\"\n};\nvar ValueTypeInferenceError = class extends Error {\n\tconstructor(value) {\n\t\tsuper(`cannot infer a value type for ${JSON.stringify(value)}; register a custom type`);\n\t\tthis.name = \"ValueTypeInferenceError\";\n\t}\n};\nconst isContour = (c) => typeof c === \"object\" && c !== null && typeof c.closed === \"boolean\" && Array.isArray(c.v) && Array.isArray(c.in) && Array.isArray(c.out);\nconst isPaint = (v) => typeof v === \"object\" && v !== null && (v.kind === \"color\" || v.kind === \"linear\" || v.kind === \"radial\" || v.kind === \"mesh\");\n/** Infer a registered type id from a sample value (builder + bake authoring surfaces). */\nfunction inferValueType(value) {\n\tif (typeof value === \"number\") return \"number\";\n\tif (typeof value === \"boolean\") return \"boolean\";\n\tif (isPaint(value)) return \"paint\";\n\tif (Array.isArray(value) && value.length === 2 && value.every((v) => typeof v === \"number\")) return \"vec2\";\n\tif (Array.isArray(value) && value.length > 0 && value.every(isContour)) return \"path\";\n\tif (typeof value === \"string\") try {\n\t\tparseColor(value);\n\t\treturn \"color\";\n\t} catch {\n\t\treturn \"string\";\n\t}\n\tthrow new ValueTypeInferenceError(value);\n}\nregisterValueType(numberType);\nregisterValueType(vec2Type);\nregisterValueType(vec2ArcType);\nregisterValueType(colorType);\nregisterValueType(stringType);\nregisterValueType(booleanType);\nregisterValueType(pathType);\nregisterValueType(paintType);\n//#endregion\n//#region src/track.ts\n/**\n* Track & keyframe model (DESIGN.md \u00A72.2) and sampling (\u00A72.4): binary search\n* per track with a last-segment cursor \u2014 sanctioned memoization, semantics\n* identical to a cold search (property-tested).\n*/\nvar TrackValidationError = class extends Error {\n\tconstructor(target, message) {\n\t\tsuper(`track '${target}': ${message}`);\n\t\tthis.name = \"TrackValidationError\";\n\t}\n};\nfunction validateTrack(track) {\n\tconst vt = getValueType(track.type);\n\tif (track.keys.length === 0) throw new TrackValidationError(track.target, \"must have at least one key\");\n\tif (vt.defaultHandoff === \"cut\") {\n\t\tfor (const k of track.keys) if (k.interp !== \"hold\") k.interp = \"hold\";\n\t}\n\tfor (let i = 1; i < track.keys.length; i++) {\n\t\tconst prev = track.keys[i - 1];\n\t\tconst cur = track.keys[i];\n\t\tif (cur.t <= prev.t) throw new TrackValidationError(track.target, `keys must be strictly increasing in t (key[${i}] at t=${cur.t} after t=${prev.t})`);\n\t}\n\tif (!/^[^/]+\\/.+$/.test(track.target)) throw new TrackValidationError(track.target, \"target must be '<nodeId>/<prop.path>' (e.g. 'circle/opacity')\");\n}\nfunction key(t, value, easeOrOpts) {\n\tif (easeOrOpts === void 0) return {\n\t\tt,\n\t\tvalue\n\t};\n\tif (typeof easeOrOpts === \"string\" || \"kind\" in easeOrOpts) return {\n\t\tt,\n\t\tvalue,\n\t\tease: easeOrOpts\n\t};\n\tconst opts = easeOrOpts;\n\tconst k = {\n\t\tt,\n\t\tvalue\n\t};\n\tif (opts.ease !== void 0) k.ease = opts.ease;\n\tif (opts.interp !== void 0) k.interp = opts.interp;\n\tif (opts.id !== void 0) k.id = opts.id;\n\tif (opts.derived !== void 0) k.derived = opts.derived;\n\treturn k;\n}\n/**\n* The settle-ON-the-beat helper: a spring key must sit at prev.t +\n* spring.duration(cfg) (\u00A72.7), so beat-anchored authoring otherwise means\n* hand-computing the launch time. springTo returns the [launch, settle] key\n* pair with the arithmetic done \u2014 spread it into a raw track():\n* track('x/width', 'number', [...springTo(beats.start('drop'), 0, 320, cfg)])\n*/\nfunction springTo(endT, from, to, cfg) {\n\tconst d = spring.duration(cfg);\n\tif (endT - d < 0) throw new TrackValidationError(\"springTo\", `this spring needs ${d.toFixed(3)}s to settle \u2014 endT must be \u2265 its duration (got ${endT})`);\n\treturn [key(endT - d, from), key(endT, to, spring(cfg))];\n}\n/**\n* Cascade a set of tracks by shifting each one's key times \u2014 the classic\n* stagger for animating a list of nodes with a delay between them. `delay` is\n* the per-index gap in seconds, or a function of the index for non-linear\n* cascades. Pure: returns new tracks, leaving the inputs untouched.\n*\n* stagger(items.map((it, i) => track(`${it.id}/opacity`, 'number',\n* [key(0, 0), key(0.3, 1, 'easeOutCubic')])), 0.08)\n*/\nfunction stagger(tracks, delay) {\n\tconst at = typeof delay === \"function\" ? delay : (i) => i * delay;\n\treturn tracks.map((tr, i) => {\n\t\tconst d = at(i);\n\t\treturn {\n\t\t\t...tr,\n\t\t\tkeys: tr.keys.map((k) => ({\n\t\t\t\t...k,\n\t\t\t\tt: k.t + d\n\t\t\t}))\n\t\t};\n\t});\n}\nfunction track(target, type, keys, opts) {\n\tconst tr = {\n\t\ttarget,\n\t\ttype,\n\t\tkeys\n\t};\n\tif (opts?.editable !== void 0) tr.editable = opts.editable;\n\tvalidateTrack(tr);\n\treturn tr;\n}\nfunction resolveEase(spec) {\n\tif (spec === void 0) return namedEasing(\"linear\");\n\tif (typeof spec === \"string\") return namedEasing(spec);\n\tif (spec.kind === \"cubicBezier\") return cubicBezier(...spec.pts);\n\treturn springEasing(spec);\n}\nconst warnedNumericDerivative = /* @__PURE__ */ new Set();\n/**\n* Analytic d(u) for an ease spec (\u00A7B.6). Custom-registered eases without a\n* derivative fall back to a symmetric difference with a one-time dev warning.\n*/\nfunction resolveEaseDerivative(spec) {\n\tif (spec === void 0) return easingDerivatives[\"linear\"];\n\tif (typeof spec === \"string\") {\n\t\tconst d = easingDerivatives[spec];\n\t\tif (d) return d;\n\t\tconst fn = namedEasing(spec);\n\t\tif (!warnedNumericDerivative.has(spec)) {\n\t\t\twarnedNumericDerivative.add(spec);\n\t\t\temitDevWarning(`easing '${spec}' has no registered derivative; velocity uses a numeric fallback \u2014 register one in easingDerivatives for exact interruption handoff`);\n\t\t}\n\t\tconst h = 1 / 1024;\n\t\treturn (u) => (fn(Math.min(1, u + h)) - fn(Math.max(0, u - h))) / (Math.min(1, u + h) - Math.max(0, u - h));\n\t}\n\tif (spec.kind === \"cubicBezier\") return cubicBezierDerivative(...spec.pts);\n\treturn springEasingDerivative(spec);\n}\nconst samplerStates = /* @__PURE__ */ new WeakMap();\nfunction state(tr) {\n\tlet s = samplerStates.get(tr);\n\tif (!s) {\n\t\ts = {\n\t\t\tcursor: 1,\n\t\t\teaseCache: new Array(tr.keys.length)\n\t\t};\n\t\tsamplerStates.set(tr, s);\n\t}\n\treturn s;\n}\nfunction easeFor(tr, s, i) {\n\tlet fn = s.easeCache[i];\n\tif (!fn) {\n\t\tfn = resolveEase(tr.keys[i].ease);\n\t\ts.easeCache[i] = fn;\n\t}\n\treturn fn;\n}\n/**\n* Find i such that keys[i-1].t <= t < keys[i].t, i.e. the index of the\n* arrival key of the segment containing t. Returns 0 if t < first key,\n* keys.length if t >= last key.\n*/\nfunction findSegment(keys, t, hint) {\n\tconst n = keys.length;\n\tfor (let i = Math.max(1, hint - 1); i <= Math.min(n - 1, hint + 1); i++) if (keys[i - 1].t <= t && t < keys[i].t) return i;\n\tif (t < keys[0].t) return 0;\n\tif (t >= keys[n - 1].t) return n;\n\tlet lo = 1;\n\tlet hi = n - 1;\n\twhile (lo < hi) {\n\t\tconst mid = lo + hi >> 1;\n\t\tif (keys[mid].t <= t) lo = mid + 1;\n\t\telse hi = mid;\n\t}\n\treturn lo;\n}\n/**\n* Analytic track derivative at time t, in value-units per second of local\n* track time (v2 addendum \u00A7B.3/\u00A7B.6 conventions, pinned):\n* (a) at a key boundary, velocity is the RIGHT derivative;\n* (b) hold segments and the clamped regions outside the keys have v = 0;\n* (c) types without sub/scale operators return null (no kinetic velocity).\n*/\nfunction velocityAt(tr, t) {\n\tconst vt = getValueType(tr.type);\n\tif (!vt.sub || !vt.scale) return null;\n\tconst keys = tr.keys;\n\tconst n = keys.length;\n\tconst s = state(tr);\n\tconst i = findSegment(keys, t, s.cursor);\n\tconst zero = vt.scale(vt.sub(keys[0].value, keys[0].value), 0);\n\tif (i === 0 || i >= n) return zero;\n\tconst arrival = keys[i];\n\tif (arrival.interp === \"hold\") return zero;\n\tconst prev = keys[i - 1];\n\tconst segDur = arrival.t - prev.t;\n\tconst p = (t - prev.t) / segDur;\n\tif (!vt.extrapolates) {\n\t\tconst eased = easeFor(tr, s, i)(p);\n\t\tif (eased < 0 || eased > 1) return zero;\n\t}\n\tconst d = resolveEaseDerivative(arrival.ease)(p);\n\treturn vt.scale(vt.sub(arrival.value, prev.value), d / segDur);\n}\n/** Pure sample of a track at time t (\u00A72.4). */\nfunction sampleTrack(tr, t) {\n\tconst keys = tr.keys;\n\tconst n = keys.length;\n\tconst s = state(tr);\n\tconst i = findSegment(keys, t, s.cursor);\n\tif (i === 0) return keys[0].value;\n\tif (i >= n) return keys[n - 1].value;\n\ts.cursor = i;\n\tconst arrival = keys[i];\n\tconst prev = keys[i - 1];\n\tif (arrival.interp === \"hold\") return prev.value;\n\tconst vt = getValueType(tr.type);\n\tconst p = (t - prev.t) / (arrival.t - prev.t);\n\tlet easedT = easeFor(tr, s, i)(p);\n\tif (!vt.extrapolates && (easedT < 0 || easedT > 1)) {\n\t\tif (!s.warnedClamp) {\n\t\t\ts.warnedClamp = true;\n\t\t\temitDevWarning(`track '${tr.target}' (type '${tr.type}') clamped an out-of-range eased value \u2014 non-extrapolating types can't overshoot, so a spring/overshooting ease on this track is flattened`);\n\t\t}\n\t\teasedT = Math.min(1, Math.max(0, easedT));\n\t}\n\treturn vt.lerp(prev.value, arrival.value, easedT);\n}\n//#endregion\n//#region src/targetRef.ts\n/**\n* Target references (DESIGN.md \u00A72.6): the builder accepts either a canonical\n* target string ('circle/opacity') or a property signal that carries its own\n* path \u2014 attached by the scene package at node construction via TARGET_PATH.\n*/\nconst TARGET_PATH = Symbol.for(\"glissade.targetPath\");\nvar UnresolvableTargetError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message ?? \"tween target is not addressable: pass a target string (\\\"node/prop\\\") or a property signal of a node that has an explicit id (\u00A73.1 \u2014 anonymous nodes cannot be track targets)\");\n\t\tthis.name = \"UnresolvableTargetError\";\n\t}\n};\n/** The node-id portion of a canonical `nodeId/prop.path` target. */\nfunction targetNodeId(target) {\n\tconst slash = target.indexOf(\"/\");\n\treturn slash < 0 ? target : target.slice(0, slash);\n}\n/**\n* The single editable-host rule (\u00A76.4 sub-decision, the 0.9 locked predicate):\n* only a node with an EXPLICIT, non-structural id can host an editable or\n* editor-created track. Structural fallback ids (`~Type.ordinal`, \u00A76.5) are\n* inspection-only and reorder-fragile, so they are never editable nor valid\n* track targets. Lives here (the addressing module) so the builder guard, the\n* scene, and the studio host all share ONE definition.\n*/\nfunction isEditableNodeId(id) {\n\treturn typeof id === \"string\" && id.length > 0 && id !== \"__root\" && !id.startsWith(\"~\");\n}\nfunction resolveTweenTarget(target) {\n\tconst path = typeof target === \"string\" ? target : target[TARGET_PATH];\n\tif (typeof path !== \"string\") throw new UnresolvableTargetError();\n\tif (targetNodeId(path).startsWith(\"~\")) throw new UnresolvableTargetError(`'${path}': structural ids (~Type.ordinal) are inspection-only and cannot be track targets (\u00A76.5) \u2014 give the node an explicit id`);\n\treturn path;\n}\n//#endregion\nexport { vec2Type as A, springEasing as B, paintType as C, stringType as D, reprOf as E, parseColor as F, cubicBezier as G, springPresets as H, rgbaToOklab as I, easings as J, cubicBezierDerivative as K, emitDevWarning as L, formatColor as M, lerpColor as N, vec2ArcType as O, oklabToRgba as P, setDevWarning as R, numberType as S, registerValueType as T, DEFAULT_EASE as U, springEasingDerivative as V, UnknownEasingError as W, namedEasing as Y, ValueTypeInferenceError as _, targetNodeId as a, getValueType as b, resolveEase as c, springTo as d, stagger as f, UnknownValueTypeError as g, velocityAt as h, resolveTweenTarget as i, ColorParseError as j, vec2Equals as k, resolveEaseDerivative as l, validateTrack as m, UnresolvableTargetError as n, TrackValidationError as o, track as p, easingDerivatives as q, isEditableNodeId as r, key as s, TARGET_PATH as t, sampleTrack as u, booleanType as v, pathType as w, inferValueType as x, colorType as y, spring as z };\n", "//#region src/cmap.ts\n/**\n* Minimal sfnt `cmap` reader (DESIGN.md \u00A73.6 glyph-coverage check) \u2014 pure,\n* byte-only, ZERO DOM / ZERO Node. Given the raw bytes of a TrueType/OpenType\n* (or the first table of a TTC) font, returns the set of Unicode code points\n* the font claims to cover. I/O (reading the file / fetching the URL) happens\n* at the call site; this function only parses bytes.\n*\n* Hand-rolled (no font-parsing dependency) to keep core zero-dep and in budget.\n* It covers the two cmap subtable formats that matter in practice:\n* - format 4 (segment mapping to delta values \u2014 the BMP workhorse)\n* - format 12 (segmented coverage \u2014 astral planes, e.g. emoji)\n* Malformed or unsupported input yields an empty set; it never throws or hangs.\n*/\nconst PLATFORM_UNICODE = 0;\nconst PLATFORM_WINDOWS = 3;\n/** Read a big-endian u16 with bounds checking (0 when out of range). */\nfunction u16(dv, off) {\n\treturn off + 2 <= dv.byteLength ? dv.getUint16(off) : 0;\n}\nfunction u32(dv, off) {\n\treturn off + 4 <= dv.byteLength ? dv.getUint32(off) : 0;\n}\n/** Rank a (platform, encoding) cmap subtable: higher = better Unicode coverage. */\nfunction encodingScore(platform, encoding) {\n\tif (platform === PLATFORM_WINDOWS && encoding === 10) return 5;\n\tif (platform === PLATFORM_UNICODE && encoding >= 4) return 5;\n\tif (platform === PLATFORM_WINDOWS && encoding === 1) return 3;\n\tif (platform === PLATFORM_UNICODE) return 3;\n\treturn 0;\n}\nfunction parseFormat4(dv, base, into) {\n\tconst segCountX2 = u16(dv, base + 6);\n\tconst segCount = segCountX2 >> 1;\n\tconst endOff = base + 14;\n\tconst startOff = endOff + segCountX2 + 2;\n\tconst deltaOff = startOff + segCountX2;\n\tconst rangeOff = deltaOff + segCountX2;\n\tfor (let i = 0; i < segCount; i++) {\n\t\tconst end = u16(dv, endOff + i * 2);\n\t\tconst start = u16(dv, startOff + i * 2);\n\t\tif (start > end) continue;\n\t\tconst idDelta = u16(dv, deltaOff + i * 2);\n\t\tconst idRangeOffset = u16(dv, rangeOff + i * 2);\n\t\tfor (let c = start; c <= end; c++) {\n\t\t\tif (c === 65535) continue;\n\t\t\tlet glyph;\n\t\t\tif (idRangeOffset === 0) glyph = c + idDelta & 65535;\n\t\t\telse {\n\t\t\t\tconst g = u16(dv, rangeOff + i * 2 + idRangeOffset + (c - start) * 2);\n\t\t\t\tglyph = g === 0 ? 0 : g + idDelta & 65535;\n\t\t\t}\n\t\t\tif (glyph !== 0) into.add(c);\n\t\t}\n\t}\n}\nfunction parseFormat12(dv, base, into) {\n\tconst declared = u32(dv, base + 12);\n\tconst maxGroups = Math.max(0, Math.floor((dv.byteLength - (base + 16)) / 12));\n\tconst nGroups = Math.min(declared, maxGroups);\n\tlet off = base + 16;\n\tfor (let i = 0; i < nGroups; i++, off += 12) {\n\t\tconst startChar = u32(dv, off);\n\t\tconst endChar = u32(dv, off + 4);\n\t\tconst startGlyph = u32(dv, off + 8);\n\t\tif (startChar > endChar) continue;\n\t\tif (endChar - startChar > 2097152) continue;\n\t\tfor (let c = startChar; c <= endChar; c++) if (startGlyph + (c - startChar) !== 0) into.add(c);\n\t}\n}\nfunction parseCmap(bytes) {\n\tconst out = /* @__PURE__ */ new Set();\n\ttry {\n\t\tconst dv = ArrayBuffer.isView(bytes) ? new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength) : new DataView(bytes);\n\t\tif (dv.byteLength < 12) return out;\n\t\tlet sfntOff = 0;\n\t\tif (u32(dv, 0) === 1953784678) sfntOff = u32(dv, 12);\n\t\tconst numTables = u16(dv, sfntOff + 4);\n\t\tlet cmapOff = 0;\n\t\tfor (let i = 0; i < numTables; i++) {\n\t\t\tconst rec = sfntOff + 12 + i * 16;\n\t\t\tif (u32(dv, rec) === 1668112752) {\n\t\t\t\tcmapOff = u32(dv, rec + 8);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (cmapOff === 0) return out;\n\t\tconst nSub = u16(dv, cmapOff + 2);\n\t\tlet bestOff = 0;\n\t\tlet bestScore = -1;\n\t\tfor (let i = 0; i < nSub; i++) {\n\t\t\tconst rec = cmapOff + 4 + i * 8;\n\t\t\tconst platform = u16(dv, rec);\n\t\t\tconst encoding = u16(dv, rec + 2);\n\t\t\tconst subOff = cmapOff + u32(dv, rec + 4);\n\t\t\tconst score = encodingScore(platform, encoding);\n\t\t\tif (score > bestScore && subOff + 2 <= dv.byteLength) {\n\t\t\t\tbestScore = score;\n\t\t\t\tbestOff = subOff;\n\t\t\t}\n\t\t}\n\t\tif (bestScore < 0) return out;\n\t\tconst format = u16(dv, bestOff);\n\t\tif (format === 4) parseFormat4(dv, bestOff, out);\n\t\telse if (format === 12) parseFormat12(dv, bestOff, out);\n\t} catch {\n\t\treturn out;\n\t}\n\treturn out;\n}\n//#endregion\nexport { parseCmap as t };\n", "import { L as emitDevWarning, a as targetNodeId, m as validateTrack, o as TrackValidationError, r as isEditableNodeId, z as spring } from \"./targetRef.js\";\n//#region src/timeline.ts\n/**\n* The Timeline document (DESIGN.md \u00A72.3) \u2014 the serializable animation source\n* of truth \u2014 and its compiler: child flattening (add/sync), same-target\n* coalescing (last-insertion-wins, \u00A72.2), duration computation, validation.\n*/\nfunction timeline(init) {\n\tconst doc = {\n\t\tversion: 1,\n\t\ttracks: init.tracks ?? []\n\t};\n\tif (init.duration !== void 0) doc.duration = init.duration;\n\tif (init.editableDuration !== void 0) doc.editableDuration = init.editableDuration;\n\tif (init.fps !== void 0) doc.fps = init.fps;\n\tif (init.posterTime !== void 0) doc.posterTime = init.posterTime;\n\tif (init.labels !== void 0) doc.labels = init.labels;\n\tif (init.markers !== void 0) doc.markers = init.markers;\n\tif (init.children !== void 0) doc.children = init.children;\n\tif (init.audio !== void 0) doc.audio = init.audio;\n\tif (init.assets !== void 0) doc.assets = init.assets;\n\treturn doc;\n}\nvar TimelineValidationError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"TimelineValidationError\";\n\t}\n};\n/** Spring key rule (\u00A72.7): a spring-eased key's t must equal prev.t + spring.duration(cfg). */\nfunction validateSpringKeys(tr) {\n\tfor (let i = 1; i < tr.keys.length; i++) {\n\t\tconst k = tr.keys[i];\n\t\tif (k.ease && typeof k.ease === \"object\" && k.ease.kind === \"spring\") {\n\t\t\tconst expected = tr.keys[i - 1].t + spring.duration(k.ease);\n\t\t\tif (Math.abs(k.t - expected) > 1e-6) throw new TimelineValidationError(`track '${tr.target}': spring-eased key at t=${k.t} must sit at prev.t + spring.duration (${expected.toFixed(6)}); the builder computes this automatically`);\n\t\t}\n\t}\n}\n/**\n* Sample-indexed clip offset \u2014 the single A/V-sync source of truth (\u00A75.3),\n* `round(at * sampleRate)`. Both the CLI (FFmpeg) and the browser\n* (OfflineAudioContext) mixers derive their delay from this, so A/V offsets\n* agree across paths by construction rather than one rounding to milliseconds\n* and the other to raw float seconds. Default rate is the canonical mix grid.\n*/\nfunction audioOffsetSamples(at, sampleRate = 48e3) {\n\treturn Math.round(at * sampleRate);\n}\nfunction rebaseKeys(keys, at, timeScale) {\n\treturn keys.map((k) => ({\n\t\t...k,\n\t\tt: at + k.t / timeScale\n\t}));\n}\nfunction flatten(doc, at, timeScale, unit, out, counter) {\n\tfor (const tr of doc.tracks) {\n\t\tvalidateTrack(tr);\n\t\tvalidateSpringKeys(tr);\n\t\tout.push({\n\t\t\ttrack: {\n\t\t\t\t...tr,\n\t\t\t\tkeys: rebaseKeys(tr.keys, at, timeScale)\n\t\t\t},\n\t\t\tunit\n\t\t});\n\t}\n\tfor (const child of doc.children ?? []) {\n\t\tconst scale = child.mode === \"sync\" ? child.timeScale ?? 1 : 1;\n\t\tif (child.mode === \"add\" && child.timeScale !== void 0) throw new TimelineValidationError(\"timeScale is only valid on mode:'sync' children (\u00A72.3)\");\n\t\tif (scale <= 0) throw new TimelineValidationError(\"sync timeScale must be > 0\");\n\t\tconst childUnit = child.mode === \"sync\" ? ++counter.n : unit;\n\t\tflatten(child.timeline, at + child.at / timeScale, timeScale * scale, childUnit, out, counter);\n\t}\n}\n/**\n* Coalesce same-target tracks: later insertion wins where key ranges overlap\n* (\u00A72.2/\u00A72.6 decided rule), with a dev warning. Earlier keys inside the later\n* track's [first.t, last.t] span are dropped.\n*/\nfunction coalesce(entries) {\n\tconst byTarget = /* @__PURE__ */ new Map();\n\tfor (const { track: tr, unit } of entries) {\n\t\tconst existing = byTarget.get(tr.target);\n\t\tif (!existing) {\n\t\t\tbyTarget.set(tr.target, {\n\t\t\t\ttrack: {\n\t\t\t\t\t...tr,\n\t\t\t\t\tkeys: [...tr.keys]\n\t\t\t\t},\n\t\t\t\tunit\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (existing.unit !== unit) throw new TimelineValidationError(`target '${tr.target}' is animated by a sync (opaque) child and another timeline unit; sync children must own disjoint targets (no last-writer-wins across the sync boundary, \u00A72.3)`);\n\t\tif (existing.track.type !== tr.type) throw new TimelineValidationError(`target '${tr.target}' has conflicting value types '${existing.track.type}' and '${tr.type}'`);\n\t\tconst start = tr.keys[0].t;\n\t\tconst end = tr.keys[tr.keys.length - 1].t;\n\t\tconst existingStart = existing.track.keys[0].t;\n\t\tconst existingEnd = existing.track.keys[existing.track.keys.length - 1].t;\n\t\tconst kept = existing.track.keys.filter((k) => k.t < start || k.t > end);\n\t\tif (existingStart <= end && start <= existingEnd) emitDevWarning(`overlapping tracks for '${tr.target}' in [${start}, ${end}]: later insertion wins (${existing.track.keys.length - kept.length} earlier key(s) dropped)`);\n\t\texisting.track.keys = [...kept, ...tr.keys].sort((a, b) => a.t - b.t);\n\t}\n\tconst result = /* @__PURE__ */ new Map();\n\tfor (const [target, { track }] of byTarget) result.set(target, track);\n\treturn result;\n}\n/**\n* Studio reader (\u00A76.2 rule 4): is this timeline's duration opted into editor\n* editing? Code-owned and read-only by default; `editableDuration()` flips it.\n*/\nfunction isDurationEditable(doc) {\n\treturn doc.editableDuration === true;\n}\nfunction childExtent(child) {\n\tconst scale = child.mode === \"sync\" ? child.timeScale ?? 1 : 1;\n\treturn child.at + computeDuration(child.timeline) / scale;\n}\nfunction computeDuration(doc) {\n\tif (doc.duration !== void 0) return doc.duration;\n\tlet max = 0;\n\tfor (const tr of doc.tracks) {\n\t\tconst last = tr.keys[tr.keys.length - 1];\n\t\tif (last) max = Math.max(max, last.t);\n\t}\n\tfor (const m of doc.markers ?? []) max = Math.max(max, m.t);\n\tfor (const child of doc.children ?? []) max = Math.max(max, childExtent(child));\n\treturn max;\n}\nfunction compileTimeline(doc) {\n\tif (doc.version !== 1) throw new TimelineValidationError(`unsupported timeline document version ${String(doc.version)}`);\n\tconst flat = [];\n\tflatten(doc, 0, 1, 0, flat, { n: 0 });\n\tconst tracks = coalesce(flat);\n\tconst labels = { ...doc.labels };\n\tconst markers = [...doc.markers ?? []];\n\tconst audio = [...doc.audio ?? []];\n\tconst visitChildren = (children, at, scale) => {\n\t\tfor (const child of children ?? []) {\n\t\t\tconst base = at + child.at / scale;\n\t\t\tconst childScale = scale * (child.mode === \"sync\" ? child.timeScale ?? 1 : 1);\n\t\t\tfor (const [name, t] of Object.entries(child.timeline.labels ?? {})) if (!(name in labels)) labels[name] = base + t / childScale;\n\t\t\tfor (const m of child.timeline.markers ?? []) markers.push({\n\t\t\t\t...m,\n\t\t\t\tt: base + m.t / childScale\n\t\t\t});\n\t\t\tfor (const clip of child.timeline.audio ?? []) audio.push({\n\t\t\t\t...clip,\n\t\t\t\tat: base + clip.at / childScale,\n\t\t\t\t...childScale !== 1 ? { playbackRate: (clip.playbackRate ?? 1) * childScale } : {}\n\t\t\t});\n\t\t\tvisitChildren(child.timeline.children, base, childScale);\n\t\t}\n\t};\n\tvisitChildren(doc.children, 0, 1);\n\tmarkers.sort((a, b) => a.t - b.t);\n\taudio.sort((a, b) => a.at - b.at);\n\treturn {\n\t\tduration: computeDuration(doc),\n\t\tlabels,\n\t\tmarkers,\n\t\ttracks,\n\t\taudio\n\t};\n}\n//#endregion\n//#region src/sidecar.ts\n/**\n* The editor sidecar (DESIGN.md \u00A76.2): code declares scene structure and\n* programmatic tracks; the studio owns keyframe data persisted next to the\n* scene module and merged at track granularity. Versioned independently of the\n* API (\u00A77.4) \u2014 breaking it orphans users' files, so v1 documents migrate.\n*\n* v2 namespaces edits by timeline id ('main' for the linear timeline; v2\n* machines add more), keys tracks by canonical target, records the code\n* baseline hash for drift detection, parks drifted tracks as `orphans`, and\n* gives keys stable `k<N>` ids.\n*/\nconst MAIN = \"main\";\nvar SidecarVersionError = class extends Error {\n\tconstructor(version) {\n\t\tsuper(`unsupported sidecar version ${String(version)}; this build reads sidecarVersion 1 or 2`);\n\t\tthis.name = \"SidecarVersionError\";\n\t}\n};\nfunction emptySidecar() {\n\treturn {\n\t\tsidecarVersion: 2,\n\t\ttimelines: { [MAIN]: { tracks: {} } }\n\t};\n}\n/** Lift a v1 (or already-v2) document to the v2 shape. Throws on unknown versions. */\nfunction migrateSidecar(doc) {\n\tif (!doc) return null;\n\tif (doc.sidecarVersion === 2) return doc;\n\tif (doc.sidecarVersion === 1) {\n\t\tconst tracks = {};\n\t\tfor (const t of doc.tracks) tracks[t.target] = {\n\t\t\ttype: t.type,\n\t\t\tbaseHash: null,\n\t\t\tkeys: t.keys\n\t\t};\n\t\tconst main = { tracks };\n\t\tif (doc.labels) main.labels = doc.labels;\n\t\treturn {\n\t\t\tsidecarVersion: 2,\n\t\t\ttimelines: { [MAIN]: main }\n\t\t};\n\t}\n\tthrow new SidecarVersionError(doc.sidecarVersion);\n}\n/** Stable hash of a code track's keys \u2014 the baseline an editor branch records. */\nfunction hashKeys(keys) {\n\tconst s = JSON.stringify(keys.map((k) => [\n\t\tk.t,\n\t\tk.value,\n\t\tk.ease ?? null,\n\t\tk.interp ?? null\n\t]));\n\tlet h = 2166136261;\n\tfor (let i = 0; i < s.length; i++) {\n\t\th ^= s.charCodeAt(i);\n\t\th = Math.imul(h, 16777619);\n\t}\n\treturn (h >>> 0).toString(16);\n}\n/** Assign stable monotonic `k<N>` ids to keys lacking one; existing ids preserved. */\nfunction assignKeyIds(keys) {\n\tlet max = -1;\n\tfor (const k of keys) {\n\t\tconst m = k.id ? /^k(\\d+)$/.exec(k.id) : null;\n\t\tif (m) max = Math.max(max, Number(m[1]));\n\t}\n\treturn keys.map((k) => k.id ? { ...k } : {\n\t\t...k,\n\t\tid: `k${++max}`\n\t});\n}\n/**\n* Set one editable track's keys in the sidecar (\u00A76.2) \u2014 the studio write path.\n* `codeBaselineKeys` is the code track this branches from (null = editor-created\n* with no baseline). Keys get stable `k<N>` ids. Returns a new document.\n*/\nfunction setSidecarTrack(doc, timelineId, target, type, keys, codeBaselineKeys) {\n\tif (!isEditableNodeId(targetNodeId(target))) throw new TrackValidationError(target, \"structural/un-id'd nodes cannot host editor tracks (\u00A76.5) \u2014 only nodes with an explicit id\");\n\tconst tl = doc.timelines[timelineId] ?? { tracks: {} };\n\tconst entry = {\n\t\ttype,\n\t\tbaseHash: codeBaselineKeys ? hashKeys(codeBaselineKeys) : null,\n\t\tkeys: assignKeyIds(keys)\n\t};\n\treturn {\n\t\t...doc,\n\t\ttimelines: {\n\t\t\t...doc.timelines,\n\t\t\t[timelineId]: {\n\t\t\t\t...tl,\n\t\t\t\ttracks: {\n\t\t\t\t\t...tl.tracks,\n\t\t\t\t\t[target]: entry\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n/**\n* Remove one editor-owned track from the sidecar (\u00A76.2 rule 7 write-back): the\n* \"extract edits to code\" affordance deletes the sidecar entry after copying its\n* `key(...)` source to the clipboard. Source is never mutated \u2014 the user pastes\n* the generated calls themselves. A missing entry is a no-op (returns the input\n* unchanged); the document is never mutated in place.\n*/\nfunction deleteSidecarTrack(doc, timelineId, target) {\n\tconst tl = doc.timelines[timelineId];\n\tif (!tl || !(target in tl.tracks)) return doc;\n\tconst { [target]: _removed, ...rest } = tl.tracks;\n\treturn {\n\t\t...doc,\n\t\ttimelines: {\n\t\t\t...doc.timelines,\n\t\t\t[timelineId]: {\n\t\t\t\t...tl,\n\t\t\t\ttracks: rest\n\t\t\t}\n\t\t}\n\t};\n}\n/**\n* Re-resolve `derived:true` leading keys against the merged track (\u00A72.6): a\n* derived from-key duplicates the preceding key's held value, so an upstream\n* edit must flow into it or the segment pops at its start. Build-time derived\n* keys are already correct; this fixes the ones an edit moved beneath.\n*/\nfunction reresolveDerived(keys) {\n\tif (!keys.some((k) => k.derived)) return keys;\n\treturn keys.map((k, i) => k.derived && i > 0 ? {\n\t\t...k,\n\t\tvalue: keys[i - 1].value\n\t} : k);\n}\n/**\n* Merge with the full \u00A76.2 report: the bindable Timeline, the list of targets\n* whose code baseline drifted, and the orphaned tracks (type-changed, or whose\n* code track vanished). Orphans are NEVER merged, so a drifted edit can't make\n* the whole overlay fail to bind \u2014 the good edits survive. Inputs unmutated.\n*/\nfunction mergeSidecarDetailed(code, sidecar) {\n\tconst doc = migrateSidecar(sidecar);\n\tif (!doc) return {\n\t\ttimeline: code,\n\t\tdrift: [],\n\t\torphans: {}\n\t};\n\tconst main = doc.timelines[MAIN] ?? { tracks: {} };\n\tconst overlay = new Map(Object.entries(main.tracks));\n\tconst drift = [];\n\tconst orphans = { ...main.orphans ?? {} };\n\tconst tracks = code.tracks.map((t) => {\n\t\tconst entry = overlay.get(t.target);\n\t\tif (!entry) return t;\n\t\toverlay.delete(t.target);\n\t\tif (entry.type !== t.type) {\n\t\t\torphans[t.target] = {\n\t\t\t\ttype: entry.type,\n\t\t\t\tkeys: entry.keys,\n\t\t\t\treason: \"type-changed\"\n\t\t\t};\n\t\t\treturn t;\n\t\t}\n\t\tif (entry.baseHash !== null && entry.baseHash !== hashKeys(t.keys)) drift.push(t.target);\n\t\treturn {\n\t\t\t...t,\n\t\t\tkeys: reresolveDerived(entry.keys.map((k) => ({ ...k }))),\n\t\t\teditable: true\n\t\t};\n\t});\n\tfor (const [target, entry] of overlay) if (entry.baseHash !== null) orphans[target] = {\n\t\ttype: entry.type,\n\t\tkeys: entry.keys,\n\t\treason: \"prop-missing\"\n\t};\n\telse tracks.push({\n\t\ttarget,\n\t\ttype: entry.type,\n\t\tkeys: reresolveDerived(entry.keys.map((k) => ({ ...k }))),\n\t\teditable: true\n\t});\n\tconst merged = {\n\t\t...code,\n\t\ttracks\n\t};\n\tif (main.labels && Object.keys(main.labels).length > 0) {\n\t\tconst codeLabels = code.labels ?? {};\n\t\tconst shadowed = Object.keys(main.labels).filter((n) => n in codeLabels);\n\t\tif (shadowed.length) emitDevWarning(`sidecar label(s) ${shadowed.join(\", \")} collide with code labels; code wins (\u00A76.2)`);\n\t\tmerged.labels = {\n\t\t\t...main.labels,\n\t\t\t...codeLabels\n\t\t};\n\t}\n\tif (drift.length) emitDevWarning(`sidecar: code baseline changed beneath edits on ${drift.join(\", \")} (\u00A76.2)`);\n\treturn {\n\t\ttimeline: merged,\n\t\tdrift,\n\t\torphans\n\t};\n}\n/** Merge the sidecar overlay onto the code baseline \u2192 a bindable Timeline (\u00A76.2). */\nfunction mergeSidecar(code, sidecar) {\n\treturn mergeSidecarDetailed(code, sidecar).timeline;\n}\n/**\n* Editor-edit normalization (\u00A72.7 invariant): a spring-eased key's t is\n* intrinsic \u2014 prev.t + spring.duration(cfg) \u2014 so after any retime, sort and\n* re-pin spring keys to their predecessors. Dragging a spring key itself\n* therefore snaps back; retiming its predecessor carries it along. Returns a\n* new array. Colliding keys are NUDGED apart (+1ms), never deleted \u2014 an editor\n* must not silently destroy keyframe data on an exact-t collision.\n*/\nfunction normalizeEditedKeys(keys) {\n\tconst out = keys.map((k) => ({ ...k })).sort((a, b) => a.t - b.t);\n\tfor (let pass = 0; pass < 2; pass++) {\n\t\tfor (let i = 1; i < out.length; i++) {\n\t\t\tconst ease = out[i].ease;\n\t\t\tif (ease && typeof ease === \"object\" && ease.kind === \"spring\") out[i].t = out[i - 1].t + spring.duration(ease);\n\t\t}\n\t\tout.sort((a, b) => a.t - b.t);\n\t}\n\tfor (let i = 1; i < out.length; i++) if (out[i].t <= out[i - 1].t) out[i].t = out[i - 1].t + .001;\n\treturn out;\n}\n//#endregion\nexport { hashKeys as a, migrateSidecar as c, TimelineValidationError as d, audioOffsetSamples as f, timeline as h, emptySidecar as i, normalizeEditedKeys as l, isDurationEditable as m, assignKeyIds as n, mergeSidecar as o, compileTimeline as p, deleteSidecarTrack as r, mergeSidecarDetailed as s, SidecarVersionError as t, setSidecarTrack as u };\n", "import { A as vec2Type, B as springEasing, C as paintType, D as stringType, E as reprOf, F as parseColor, G as cubicBezier, H as springPresets, I as rgbaToOklab, J as easings, K as cubicBezierDerivative, L as emitDevWarning, M as formatColor, N as lerpColor, O as vec2ArcType, P as oklabToRgba, R as setDevWarning, S as numberType, T as registerValueType, U as DEFAULT_EASE, V as springEasingDerivative, W as UnknownEasingError, Y as namedEasing, _ as ValueTypeInferenceError, a as targetNodeId, b as getValueType, c as resolveEase, d as springTo, f as stagger, g as UnknownValueTypeError, h as velocityAt, i as resolveTweenTarget, j as ColorParseError, k as vec2Equals, l as resolveEaseDerivative, m as validateTrack, n as UnresolvableTargetError, o as TrackValidationError, p as track, q as easingDerivatives, r as isEditableNodeId, s as key, t as TARGET_PATH, u as sampleTrack, v as booleanType, w as pathType, x as inferValueType, y as colorType, z as spring } from \"./targetRef.js\";\nimport { t as parseCmap } from \"./cmap.js\";\nimport { a as hashKeys, c as migrateSidecar, d as TimelineValidationError, f as audioOffsetSamples, h as timeline$1, i as emptySidecar, l as normalizeEditedKeys, m as isDurationEditable, n as assignKeyIds, o as mergeSidecar, p as compileTimeline, r as deleteSidecarTrack, s as mergeSidecarDetailed, t as SidecarVersionError, u as setSidecarTrack } from \"./sidecar.js\";\n//#region src/ticker.ts\n/** The default scheduler: flush synchronously, preserving pre-ticker timing. */\nconst synchronousScheduler = (flush) => flush();\nlet scheduler = synchronousScheduler;\n/** Pending subscriber callbacks for the current tick (deduped, insertion-ordered). */\nconst pending = /* @__PURE__ */ new Set();\n/**\n* Depth of active `batch()` calls *plus* in-flight top-level writes; >0\n* suppresses flushing so a write's whole staleness cascade completes before any\n* subscriber runs, and `batch()` coalesces across writes.\n*/\nlet batchDepth = 0;\n/** True while a flush is in progress, so writes mid-flush enqueue, not re-flush. */\nlet flushing = false;\n/** True once a flush has been requested from the scheduler but not yet run. */\nlet flushScheduled = false;\n/** Guard against an unbounded write-during-flush cascade. */\nconst MAX_FLUSH_PASSES = 1e3;\n/**\n* Install a notification scheduler. Pass the synchronous default back (or call\n* with no argument) to restore eager flushing. Returns the previous scheduler.\n*/\nfunction setScheduler(next) {\n\tconst prev = scheduler;\n\tscheduler = next ?? synchronousScheduler;\n\tif (flushScheduled && !flushing) {\n\t\tflushScheduled = false;\n\t\tif (pending.size > 0) requestFlush();\n\t}\n\treturn prev;\n}\n/**\n* Enqueue a subscriber notification. Called by the signal layer in place of\n* invoking the callback directly. Honors the active batch and scheduler.\n*/\nfunction enqueueNotification(cb) {\n\tpending.add(cb);\n\trequestFlush();\n}\nfunction requestFlush() {\n\tif (batchDepth > 0 || flushing || flushScheduled) return;\n\tflushScheduled = true;\n\tscheduler(runFlush);\n}\nfunction runFlush() {\n\tflushScheduled = false;\n\tif (flushing) return;\n\tdrain();\n}\n/**\n* Drain the pending queue. A subscriber may write synchronously (e.g.\n* useSyncExternalStore re-reads and a derived store updates), enqueuing more\n* callbacks; the bounded loop catches those in subsequent passes within the\n* same flush so each tick settles in one synchronous burst.\n*/\nfunction drain() {\n\tif (flushing) return;\n\tflushing = true;\n\tlet thrown;\n\ttry {\n\t\tlet passes = 0;\n\t\twhile (pending.size > 0) {\n\t\t\tif (++passes > MAX_FLUSH_PASSES) {\n\t\t\t\tpending.clear();\n\t\t\t\tthrow new Error(\"signal notification flush did not settle within 1000 passes: a subscriber is writing to a signal it observes (DESIGN.md \u00A76.1).\");\n\t\t\t}\n\t\t\tconst batchCbs = [...pending];\n\t\t\tpending.clear();\n\t\t\tfor (const cb of batchCbs) try {\n\t\t\t\tcb();\n\t\t\t} catch (err) {\n\t\t\t\tthrown ??= { err };\n\t\t\t}\n\t\t}\n\t} finally {\n\t\tflushing = false;\n\t}\n\tif (thrown) throw thrown.err;\n}\n/**\n* Bracket a single top-level write (the signal layer calls this around each\n* set/forceSet/bindSource cascade). While open, enqueued notifications are\n* held; on the outermost close \u2014 when no `batch()` and no other write is in\n* flight \u2014 the queue is flushed exactly as before this module existed.\n*\n* Nesting these (a write whose flush triggers another write) or wrapping them in\n* `batch()` defers the flush to the outermost boundary, the coalescing the\n* ticker exists to provide.\n*/\nfunction beginNotify() {\n\tbatchDepth++;\n}\nfunction endNotify() {\n\tbatchDepth--;\n\tif (batchDepth === 0 && pending.size > 0) requestFlush();\n}\n/**\n* Coalesce every signal write inside `fn` into a single subscriber-notification\n* pass. Reads inside `fn` stay synchronous and see each write immediately; only\n* the *notification* is deferred to the end. Nested batches flush once, at the\n* outermost exit. Returns whatever `fn` returns.\n*/\nfunction batch(fn) {\n\tbeginNotify();\n\ttry {\n\t\treturn fn();\n\t} finally {\n\t\tendNotify();\n\t}\n}\n//#endregion\n//#region src/signal.ts\n/**\n* Pull-based reactive signals: lazy, cached, dependency-tracked (DESIGN.md \u00A72.1).\n*\n* Staleness uses the two-flag scheme: a write marks direct dependents DIRTY and\n* transitive dependents CHECK. A CHECK node re-validates dependency versions on\n* read and only recomputes if one actually changed; a recompute that produces an\n* equal value keeps its version, so dirtiness stops propagating at that node.\n*\n* Subscriber NOTIFICATION (only) is routed through the ticker (`./ticker.ts`,\n* DESIGN.md \u00A76.1): a write enqueues affected subscribers and the active\n* scheduler decides when to flush. The default scheduler is synchronous and\n* flushes at the end of the outermost write, reproducing the pre-ticker timing\n* byte-for-byte. The read path (get/peek/updateIfNecessary) is untouched and\n* stays fully synchronous.\n*/\nlet activeConsumer = null;\nlet readPhaseDepth = 0;\nvar WriteDuringEvaluationError = class extends Error {\n\tconstructor() {\n\t\tsuper(\"signal.set() during evaluation: the read phase is pure (DESIGN.md \u00A72.1). Drivers write the playhead before evaluation begins; stateful animation belongs in bake().\");\n\t\tthis.name = \"WriteDuringEvaluationError\";\n\t}\n};\nvar CircularDependencyError = class extends Error {\n\tconstructor() {\n\t\tsuper(\"circular signal dependency detected\");\n\t\tthis.name = \"CircularDependencyError\";\n\t}\n};\n/** Begin the pure read phase; any signal write until {@link endReadPhase} throws. */\nfunction beginReadPhase() {\n\treadPhaseDepth++;\n}\nfunction endReadPhase() {\n\tif (readPhaseDepth === 0) throw new Error(\"endReadPhase() without matching beginReadPhase()\");\n\treadPhaseDepth--;\n}\nfunction inReadPhase() {\n\treturn readPhaseDepth > 0;\n}\nvar SignalNode = class {\n\tvalue;\n\t/** Compute function; null for plain writable sources. Binding installs one. */\n\tfn;\n\tequals;\n\tversion = 0;\n\tstate;\n\tcomputing = false;\n\tdeps = [];\n\tdepVersions = [];\n\tdependents = /* @__PURE__ */ new Set();\n\tsubscribers = /* @__PURE__ */ new Set();\n\tconstructor(init) {\n\t\tthis.fn = init.fn ?? null;\n\t\tthis.value = init.value;\n\t\tthis.equals = init.equals ?? Object.is;\n\t\tthis.state = this.fn ? 2 : 0;\n\t}\n\tget() {\n\t\tif (activeConsumer) activeConsumer.addDep(this);\n\t\tthis.updateIfNecessary();\n\t\treturn this.value;\n\t}\n\tpeek() {\n\t\tthis.updateIfNecessary();\n\t\treturn this.value;\n\t}\n\tset(next) {\n\t\tif (readPhaseDepth > 0) throw new WriteDuringEvaluationError();\n\t\tbeginNotify();\n\t\ttry {\n\t\t\tif (this.fn) this.detachFn();\n\t\t\tthis.writeValue(next);\n\t\t} finally {\n\t\t\tendNotify();\n\t\t}\n\t}\n\t/**\n\t* Sanctioned entry write (the playhead at evaluate() entry, DESIGN.md \u00A72.5).\n\t* Identical to set() but exempt from the phase guard; not part of the public\n\t* signal surface.\n\t*/\n\tforceSet(next) {\n\t\tbeginNotify();\n\t\ttry {\n\t\t\tif (this.fn) this.detachFn();\n\t\t\tthis.writeValue(next);\n\t\t} finally {\n\t\t\tendNotify();\n\t\t}\n\t}\n\t/** Rewire this signal's source to a computation (timeline binding, \u00A72.4). */\n\tbindSource(fn) {\n\t\tif (readPhaseDepth > 0) throw new WriteDuringEvaluationError();\n\t\tbeginNotify();\n\t\ttry {\n\t\t\tthis.fn = fn;\n\t\t\tthis.state = 2;\n\t\t\tthis.invalidateDependents(2);\n\t\t} finally {\n\t\t\tendNotify();\n\t\t}\n\t}\n\t/** Remove a bound source, freezing the signal at its last value. */\n\tunbindSource() {\n\t\tif (readPhaseDepth > 0) throw new WriteDuringEvaluationError();\n\t\tif (!this.fn) return;\n\t\tthis.updateIfNecessary();\n\t\tthis.detachFn();\n\t}\n\tget isBound() {\n\t\treturn this.fn !== null;\n\t}\n\tsubscribe(cb) {\n\t\tthis.subscribers.add(cb);\n\t\treturn () => this.subscribers.delete(cb);\n\t}\n\taddDep(dep) {\n\t\tif (this.deps[this.deps.length - 1] !== dep) {\n\t\t\tthis.deps.push(dep);\n\t\t\tthis.depVersions.push(-1);\n\t\t\tdep.dependents.add(this);\n\t\t}\n\t}\n\tdetachFn() {\n\t\tthis.fn = null;\n\t\tthis.clearDeps();\n\t\tthis.state = 0;\n\t}\n\twriteValue(next) {\n\t\tif (this.version > 0 || this.value !== void 0) {\n\t\t\tif (this.equals(this.value, next)) return;\n\t\t}\n\t\tthis.value = next;\n\t\tthis.version++;\n\t\tthis.invalidateDependents(2);\n\t}\n\tinvalidateDependents(level) {\n\t\tfor (const d of [...this.dependents]) d.markStale(level);\n\t\tif (this.subscribers.size > 0) for (const cb of [...this.subscribers]) enqueueNotification(cb);\n\t}\n\tmarkStale(level) {\n\t\tif (this.state >= level) return;\n\t\tconst wasClean = this.state === 0;\n\t\tthis.state = level;\n\t\tif (wasClean) this.invalidateDependents(1);\n\t}\n\tupdateIfNecessary() {\n\t\tif (this.fn === null || this.state === 0) return;\n\t\tif (this.computing) throw new CircularDependencyError();\n\t\tif (this.state === 1) {\n\t\t\tthis.state = 0;\n\t\t\tfor (let i = 0; i < this.deps.length; i++) {\n\t\t\t\tconst dep = this.deps[i];\n\t\t\t\tdep.updateIfNecessary();\n\t\t\t\tif (dep.version !== this.depVersions[i]) {\n\t\t\t\t\tthis.state = 2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (this.state === 2) this.recompute();\n\t\tthis.state = 0;\n\t}\n\trecompute() {\n\t\tthis.clearDeps();\n\t\tconst prevConsumer = activeConsumer;\n\t\tactiveConsumer = this;\n\t\tthis.computing = true;\n\t\tlet next;\n\t\ttry {\n\t\t\tnext = this.fn();\n\t\t} finally {\n\t\t\tthis.computing = false;\n\t\t\tactiveConsumer = prevConsumer;\n\t\t}\n\t\tfor (let i = 0; i < this.deps.length; i++) this.depVersions[i] = this.deps[i].version;\n\t\tif (!(this.version > 0 || this.value !== void 0) || !this.equals(this.value, next)) {\n\t\t\tthis.value = next;\n\t\t\tthis.version++;\n\t\t}\n\t}\n\tclearDeps() {\n\t\tfor (const dep of this.deps) dep.dependents.delete(this);\n\t\tthis.deps = [];\n\t\tthis.depVersions = [];\n\t}\n};\nfunction makeCallable(node, extra) {\n\tconst sig = (() => node.get());\n\tsig[\"peek\"] = () => node.peek();\n\tsig[\"subscribe\"] = (cb) => node.subscribe(cb);\n\textra(sig);\n\treturn sig;\n}\nfunction signal(initial, options) {\n\tconst node = new SignalNode({\n\t\tvalue: initial,\n\t\tequals: options?.equals\n\t});\n\treturn makeCallable(node, (sig) => {\n\t\tsig[\"set\"] = (v) => node.set(v);\n\t\tsig[\"forceSet\"] = (v) => node.forceSet(v);\n\t\tsig[\"bindSource\"] = (fn) => node.bindSource(fn);\n\t\tsig[\"unbindSource\"] = () => node.unbindSource();\n\t\tObject.defineProperty(sig, \"isBound\", { get: () => node.isBound });\n\t});\n}\nfunction computed(fn, options) {\n\treturn makeCallable(new SignalNode({\n\t\tfn,\n\t\tequals: options?.equals\n\t}), () => {});\n}\n/** Run `fn` without registering dependencies on the active consumer. */\nfunction untracked(fn) {\n\tconst prev = activeConsumer;\n\tactiveConsumer = null;\n\ttry {\n\t\treturn fn();\n\t} finally {\n\t\tactiveConsumer = prev;\n\t}\n}\n//#endregion\n//#region src/vec2Signal.ts\n/**\n* Compound Vec2 signal (DESIGN.md \u00A72.1): sub-signals are real signals, the\n* parent read derives from them, and tracks may target either level \u2014 a\n* sub-signal binding takes precedence for its component (\u00A72.2).\n*/\nfunction vec2Signal(initial) {\n\tconst [ix, iy] = Array.isArray(initial) ? initial : [initial.x, initial.y];\n\tconst x = signal(ix);\n\tconst y = signal(iy);\n\tx.expects = \"number\";\n\ty.expects = \"number\";\n\tconst compound = signal(null, { equals: (a, b) => a === null || b === null ? a === b : a[0] === b[0] && a[1] === b[1] });\n\tconst baseX = signal(ix);\n\tconst baseY = signal(iy);\n\tx.bindSource(() => {\n\t\tconst c = compound();\n\t\treturn c === null ? baseX() : c[0];\n\t});\n\ty.bindSource(() => {\n\t\tconst c = compound();\n\t\treturn c === null ? baseY() : c[1];\n\t});\n\tconst value = computed(() => [x(), y()], { equals: (a, b) => a[0] === b[0] && a[1] === b[1] });\n\tconst sig = (() => value());\n\tsig[\"peek\"] = () => value.peek();\n\tsig[\"subscribe\"] = (cb) => value.subscribe(cb);\n\tsig[\"set\"] = (v) => {\n\t\tcompound.set(null);\n\t\tbaseX.set(v[0]);\n\t\tbaseY.set(v[1]);\n\t};\n\tsig[\"bindSource\"] = (fn) => compound.bindSource(() => fn());\n\tsig[\"unbindSource\"] = () => {\n\t\tcompound.unbindSource();\n\t\tcompound.set(null);\n\t};\n\tsig[\"expects\"] = \"vec2\";\n\tObject.defineProperty(sig, \"x\", {\n\t\tvalue: x,\n\t\tenumerable: true\n\t});\n\tObject.defineProperty(sig, \"y\", {\n\t\tvalue: y,\n\t\tenumerable: true\n\t});\n\treturn sig;\n}\n//#endregion\n//#region src/fontRegistry.ts\nfunction facesOf(family, ref) {\n\tif (ref.faces && ref.faces.length > 0) return ref.faces.map((f) => ({\n\t\tfamily,\n\t\turl: f.url,\n\t\tweight: f.weight ?? 400,\n\t\tstyle: f.style ?? \"normal\"\n\t}));\n\treturn [{\n\t\tfamily,\n\t\turl: ref.url,\n\t\tweight: 400,\n\t\tstyle: \"normal\"\n\t}];\n}\n/**\n* CSS Fonts \u00A75.2 nearest-weight: among candidates (already filtered to the\n* desired style when possible), pick the closest weight. Ties below the target\n* prefer the lighter; the standard's directional preference (\u2264500 search down\n* first, \u2265500 search up first) collapses to \"closest, lighter on a tie\" here,\n* which is sufficient for the small, explicit face sets glissade documents\n* carry.\n*/\nfunction nearestWeight(faces, weight) {\n\tlet best;\n\tlet bestDist = Number.POSITIVE_INFINITY;\n\tfor (const f of faces) {\n\t\tconst dist = Math.abs(f.weight - weight);\n\t\tif (dist < bestDist || dist === bestDist && best !== void 0 && f.weight < best.weight) {\n\t\t\tbest = f;\n\t\t\tbestDist = dist;\n\t\t}\n\t}\n\treturn best;\n}\nfunction buildFontRegistry(assets) {\n\tconst families = /* @__PURE__ */ new Map();\n\tfor (const [family, ref] of Object.entries(assets ?? {})) {\n\t\tif (ref.kind !== \"font\") continue;\n\t\tfamilies.set(family, {\n\t\t\tfaces: facesOf(family, ref),\n\t\t\tfallback: ref.fallback ? [...ref.fallback] : []\n\t\t});\n\t}\n\treturn {\n\t\thas(family) {\n\t\t\treturn families.has(family);\n\t\t},\n\t\tfaces() {\n\t\t\tconst out = [];\n\t\t\tfor (const entry of families.values()) out.push(...entry.faces);\n\t\t\treturn out;\n\t\t},\n\t\tresolveFace(family, weight = 400, style = \"normal\") {\n\t\t\tconst entry = families.get(family);\n\t\t\tif (!entry) return void 0;\n\t\t\tconst styled = entry.faces.filter((f) => f.style === style);\n\t\t\treturn nearestWeight(styled.length > 0 ? styled : entry.faces, weight);\n\t\t},\n\t\tfallbackChain(family) {\n\t\t\tconst entry = families.get(family);\n\t\t\treturn entry ? [family, ...entry.fallback] : [family];\n\t\t}\n\t};\n}\n//#endregion\n//#region src/fontValidation.ts\n/**\n* Font validation (DESIGN.md \u00A73.6) \u2014 the family-level + glyph-coverage check.\n* Pure: given the text usages collected from a scene, the FontRegistry, and the\n* already-parsed cmap coverage per family, it reports unregistered families and\n* glyphs that would hit system fallback (\"h\u00E9llo \uD83D\uDC4B renders emoji in Chrome,\n* tofu in Skia\"). Strict mode throws; dev mode warns and returns the report.\n*\n* The strict-vs-dev switch is a per-render/per-export OPTION, never a Timeline\n* document flag. Generic and OS families are exempt \u2014 only a non-generic,\n* UNREGISTERED family is a strict error (the locked decision).\n*/\nvar FontValidationError = class extends Error {\n\treport;\n\tconstructor(report) {\n\t\tsuper(formatReport(report));\n\t\tthis.name = \"FontValidationError\";\n\t\tthis.report = report;\n\t}\n};\n/**\n* Generic CSS families (CSS Fonts \u00A715) \u2014 exempt from the unregistered check;\n* they intentionally resolve to a system/UA font. `sans-serif` is the Text\n* default, so a default-font Text never errors in strict mode.\n*/\nconst GENERIC_FAMILIES = new Set([\n\t\"serif\",\n\t\"sans-serif\",\n\t\"monospace\",\n\t\"cursive\",\n\t\"fantasy\",\n\t\"system-ui\",\n\t\"ui-serif\",\n\t\"ui-sans-serif\",\n\t\"ui-monospace\",\n\t\"ui-rounded\",\n\t\"math\",\n\t\"emoji\",\n\t\"fangsong\"\n]);\n/**\n* Is `family` exempt from the unregistered-family check? Generics are exempt by\n* the spec; an `osFamilies` allowlist lets a caller mark OS-installed families\n* (which the rasterizer can resolve without registration) as exempt too.\n*/\nfunction isExemptFamily(family, osFamilies) {\n\tconst f = family.trim().toLowerCase();\n\tif (GENERIC_FAMILIES.has(f)) return true;\n\treturn osFamilies?.has(f) ?? false;\n}\nfunction codePoints(text) {\n\tconst out = [];\n\tfor (const ch of text) {\n\t\tconst cp = ch.codePointAt(0);\n\t\tif (cp !== void 0) out.push(cp);\n\t}\n\treturn out;\n}\nfunction formatReport(report) {\n\tconst parts = [];\n\tif (report.unregistered.length > 0) parts.push(`unregistered font ${report.unregistered.length === 1 ? \"family\" : \"families\"}: ${report.unregistered.join(\", \")}`);\n\tfor (const m of report.missingGlyphs) {\n\t\tconst cps = m.codePoints.map((c) => \"U+\" + c.toString(16).toUpperCase().padStart(4, \"0\")).join(\", \");\n\t\tparts.push(`family '${m.family}' is missing glyphs for ${cps}`);\n\t}\n\treturn \"font validation failed (\u00A73.6): \" + parts.join(\"; \") + \" \u2014 register the family with its faces/fallback, or supply covering glyphs\";\n}\n/**\n* Validate `usages` against `registry`. `cmaps` maps family \u2192 covered code\n* points (already parsed via parseCmap by the caller's I/O). A family with no\n* cmap entry contributes no coverage (its glyphs all count as missing) unless\n* it is exempt or its chain reaches a covered family.\n*\n* Returns the report. In `'strict'` mode it throws FontValidationError when the\n* report is non-empty; in `'dev'` mode it emits a dev warning instead.\n*/\nfunction validateFonts(usages, registry, cmaps, mode, options = {}) {\n\tconst unregistered = /* @__PURE__ */ new Set();\n\tconst missing = /* @__PURE__ */ new Map();\n\tfor (const usage of usages) {\n\t\tconst family = usage.family;\n\t\tconst exempt = isExemptFamily(family, options.osFamilies);\n\t\tif (!registry.has(family)) {\n\t\t\tif (!exempt) unregistered.add(family);\n\t\t\tcontinue;\n\t\t}\n\t\tconst chain = registry.fallbackChain(family);\n\t\tfor (const cp of codePoints(usage.text)) if (!chain.some((fam) => cmaps.get(fam)?.has(cp) ?? false)) {\n\t\t\tlet set = missing.get(family);\n\t\t\tif (!set) {\n\t\t\t\tset = /* @__PURE__ */ new Set();\n\t\t\t\tmissing.set(family, set);\n\t\t\t}\n\t\t\tset.add(cp);\n\t\t}\n\t}\n\tconst report = {\n\t\tunregistered: [...unregistered].sort(),\n\t\tmissingGlyphs: [...missing.entries()].map(([family, cps]) => ({\n\t\t\tfamily,\n\t\t\tcodePoints: [...cps].sort((a, b) => a - b)\n\t\t})).sort((a, b) => a.family < b.family ? -1 : a.family > b.family ? 1 : 0)\n\t};\n\tif (!(report.unregistered.length === 0 && report.missingGlyphs.length === 0)) {\n\t\tif (mode === \"strict\") throw new FontValidationError(report);\n\t\temitDevWarning(formatReport(report));\n\t}\n\treturn report;\n}\n//#endregion\n//#region src/builder.ts\n/**\n* The fluent timeline builder (DESIGN.md \u00A72.6): imperative-LOOKING chains that\n* compile to the declarative Timeline document. Nothing executes at play time.\n*\n* Position grammar (GSAP-proven): absolute `1.5`; `'+=0.5'`/`'-=0.2'` from the\n* previous insertion's END; `'<'`/`'>'` previous START/END; `'label'`,\n* `'label+=0.3'`. Implicit from-values resolve in a finalize pass in t-order\n* against the complete document \u2014 never sampled live (the GSAP invalidate()\n* bug class, \u00A72.6), with the build-time signal value as the t-order base.\n*/\nvar PositionError = class extends Error {\n\tconstructor(pos, detail) {\n\t\tsuper(`invalid position '${pos}': ${detail}`);\n\t\tthis.name = \"PositionError\";\n\t}\n};\nfunction peekBase(target) {\n\treturn typeof target !== \"string\" && typeof target.peek === \"function\" ? target.peek() : void 0;\n}\n/** Callbacks registered via .call(), keyed by the produced document. */\nconst timelineCallbacks = /* @__PURE__ */ new WeakMap();\nfunction getTimelineCallbacks(doc) {\n\treturn timelineCallbacks.get(doc) ?? /* @__PURE__ */ new Map();\n}\nfunction buildTimeline(build, init = {}) {\n\tconst insertions = [];\n\tconst labels = { ...init.labels };\n\tconst children = [];\n\tconst markers = [];\n\tconst callbacks = /* @__PURE__ */ new Map();\n\tlet durationEditable = false;\n\tlet prevStart = 0;\n\tlet prevEnd = 0;\n\tlet callCount = 0;\n\tfunction resolvePosition(at) {\n\t\tif (at === void 0) return prevEnd;\n\t\tif (typeof at === \"number\") return at;\n\t\tif (at === \"<\") return prevStart;\n\t\tif (at === \">\") return prevEnd;\n\t\tconst rel = /^([+-])=([\\d.]+)$/.exec(at);\n\t\tif (rel) return prevEnd + (rel[1] === \"+\" ? 1 : -1) * parseFloat(rel[2]);\n\t\tconst labelRel = /^([^+\\-=]+?)(?:([+-])=([\\d.]+))?$/.exec(at);\n\t\tif (labelRel) {\n\t\t\tconst name = labelRel[1];\n\t\t\tif (!(name in labels)) throw new PositionError(at, `unknown label '${name}' (labels must be declared before use)`);\n\t\t\tconst offset = labelRel[2] ? (labelRel[2] === \"+\" ? 1 : -1) * parseFloat(labelRel[3]) : 0;\n\t\t\treturn labels[name] + offset;\n\t\t}\n\t\tthrow new PositionError(at, \"expected a number, '<', '>', '+=x', '-=x', or 'label[+=x]'\");\n\t}\n\tconst builder = {\n\t\tto(target, value, opts = {}) {\n\t\t\tconst ease = opts.ease ?? \"easeInOutCubic\";\n\t\t\tconst isSpring = typeof ease === \"object\" && ease.kind === \"spring\";\n\t\t\tconst duration = isSpring ? spring.duration(ease) : opts.duration ?? 1;\n\t\t\tif (isSpring && opts.duration !== void 0) throw new TimelineValidationError(\"a spring ease determines its duration (spring.duration(cfg)); do not pass duration with a spring\");\n\t\t\tconst start = resolvePosition(opts.at);\n\t\t\tconst ins = {\n\t\t\t\tkind: \"tween\",\n\t\t\t\ttarget: resolveTweenTarget(target),\n\t\t\t\tvalue,\n\t\t\t\tduration,\n\t\t\t\tease,\n\t\t\t\tat: opts.at,\n\t\t\t\tbaseValue: peekBase(target),\n\t\t\t\teditable: false,\n\t\t\t\tstart\n\t\t\t};\n\t\t\tif (opts.from !== void 0) ins.explicitFrom = opts.from;\n\t\t\tinsertions.push(ins);\n\t\t\tprevStart = start;\n\t\t\tprevEnd = start + duration;\n\t\t\treturn builder;\n\t\t},\n\t\tfromTo(target, from, to, opts = {}) {\n\t\t\tbuilder.to(target, to, opts);\n\t\t\tinsertions[insertions.length - 1].explicitFrom = from;\n\t\t\treturn builder;\n\t\t},\n\t\tstagger(targets, spec, opts) {\n\t\t\tconst n = targets.length;\n\t\t\tconst base = resolvePosition(opts.at);\n\t\t\tconst c = (n - 1) / 2;\n\t\t\tconst rankOf = (i) => {\n\t\t\t\tconst f = opts.from ?? \"start\";\n\t\t\t\tif (f === \"start\") return i;\n\t\t\t\tif (f === \"end\") return n - 1 - i;\n\t\t\t\tif (f === \"center\") return Math.round(Math.abs(i - c));\n\t\t\t\tif (f === \"edges\") return Math.round(c - Math.abs(i - c));\n\t\t\t\treturn Math.round(Math.abs(i - f));\n\t\t\t};\n\t\t\tconst duration = spec.duration ?? 1;\n\t\t\tlet maxDelay = 0;\n\t\t\tconst tweenOpts = (d) => ({\n\t\t\t\tat: base + d,\n\t\t\t\t...spec.duration !== void 0 ? { duration: spec.duration } : {},\n\t\t\t\t...spec.ease !== void 0 ? { ease: spec.ease } : {}\n\t\t\t});\n\t\t\tfor (let i = 0; i < n; i++) {\n\t\t\t\tconst d = rankOf(i) * opts.each;\n\t\t\t\tif (d > maxDelay) maxDelay = d;\n\t\t\t\tconst t = targets[i];\n\t\t\t\tif (spec.from !== void 0) builder.fromTo(t, spec.from, spec.to, tweenOpts(d));\n\t\t\t\telse builder.to(t, spec.to, tweenOpts(d));\n\t\t\t}\n\t\t\tprevStart = base;\n\t\t\tprevEnd = base + maxDelay + duration;\n\t\t\treturn builder;\n\t\t},\n\t\tset(target, value, opts = {}) {\n\t\t\tconst start = resolvePosition(opts.at);\n\t\t\tinsertions.push({\n\t\t\t\tkind: \"set\",\n\t\t\t\ttarget: resolveTweenTarget(target),\n\t\t\t\tvalue,\n\t\t\t\tduration: 0,\n\t\t\t\tease: \"linear\",\n\t\t\t\tat: opts.at,\n\t\t\t\tbaseValue: peekBase(target),\n\t\t\t\teditable: false,\n\t\t\t\tstart\n\t\t\t});\n\t\t\tprevStart = start;\n\t\t\tprevEnd = start;\n\t\t\treturn builder;\n\t\t},\n\t\tlabel(name, at) {\n\t\t\tlabels[name] = at === void 0 ? prevEnd : resolvePosition(at);\n\t\t\treturn builder;\n\t\t},\n\t\tadd(child, at, opts = {}) {\n\t\t\tconst start = at === void 0 ? prevEnd : resolvePosition(at);\n\t\t\tconst mode = opts.mode ?? \"add\";\n\t\t\tconst entry = {\n\t\t\t\ttimeline: child,\n\t\t\t\tat: start,\n\t\t\t\tmode,\n\t\t\t\t_pos: at\n\t\t\t};\n\t\t\tif (opts.timeScale !== void 0) entry.timeScale = opts.timeScale;\n\t\t\tchildren.push(entry);\n\t\t\tfor (const [name, fn] of getTimelineCallbacks(child)) if (!callbacks.has(name)) callbacks.set(name, fn);\n\t\t\tconst scale = mode === \"sync\" ? opts.timeScale ?? 1 : 1;\n\t\t\tprevStart = start;\n\t\t\tprevEnd = start + compileTimeline(child).duration / scale;\n\t\t\treturn builder;\n\t\t},\n\t\tsequence(subs, opts = {}) {\n\t\t\tconst gap = opts.gap ?? 0;\n\t\t\tconst rel = gap < 0 ? `-=${-gap}` : `+=${gap}`;\n\t\t\tfor (let i = 0; i < subs.length; i++) builder.add(subs[i], i === 0 ? void 0 : rel);\n\t\t\treturn builder;\n\t\t},\n\t\tat(time, sub) {\n\t\t\treturn builder.add(sub, time);\n\t\t},\n\t\tcall(fn, at) {\n\t\t\tconst t = at === void 0 ? prevEnd : resolvePosition(at);\n\t\t\tconst name = `call:${callCount++}`;\n\t\t\tmarkers.push({\n\t\t\t\tt,\n\t\t\t\tname\n\t\t\t});\n\t\t\tcallbacks.set(name, fn);\n\t\t\treturn builder;\n\t\t},\n\t\tcue(at, name, data) {\n\t\t\tconst merged = data !== void 0 && data !== null && typeof data === \"object\" && !Array.isArray(data) ? {\n\t\t\t\tkind: \"cue\",\n\t\t\t\t...data\n\t\t\t} : { kind: \"cue\" };\n\t\t\tmarkers.push({\n\t\t\t\tt: resolvePosition(at),\n\t\t\t\tname,\n\t\t\t\tdata: merged\n\t\t\t});\n\t\t\treturn builder;\n\t\t},\n\t\tadBreak(at, opts = {}) {\n\t\t\tconst data = {\n\t\t\t\tkind: \"ad-break\",\n\t\t\t\t...opts.duration !== void 0 ? { duration: opts.duration } : {}\n\t\t\t};\n\t\t\tmarkers.push({\n\t\t\t\tt: resolvePosition(at),\n\t\t\t\tname: opts.id ?? \"ad-break\",\n\t\t\t\tdata\n\t\t\t});\n\t\t\treturn builder;\n\t\t},\n\t\teditable() {\n\t\t\tconst last = insertions[insertions.length - 1];\n\t\t\tif (!last) throw new TimelineValidationError(\".editable() requires a preceding insertion\");\n\t\t\tconst nodeId = targetNodeId(last.target);\n\t\t\tif (!isEditableNodeId(nodeId)) throw new TimelineValidationError(`.editable() needs a node with an explicit id; '${nodeId}' is not an editable host (\u00A76.4)`);\n\t\t\tlast.editable = true;\n\t\t\treturn builder;\n\t\t},\n\t\teditableDuration() {\n\t\t\tdurationEditable = true;\n\t\t\treturn builder;\n\t\t}\n\t};\n\tbuild(builder);\n\tconst byTarget = /* @__PURE__ */ new Map();\n\tfor (const ins of insertions) {\n\t\tlet list = byTarget.get(ins.target);\n\t\tif (!list) {\n\t\t\tlist = [];\n\t\t\tbyTarget.set(ins.target, list);\n\t\t}\n\t\tlist.push(ins);\n\t}\n\tconst tracks = [];\n\tfor (const [target, list] of byTarget) {\n\t\tlist.sort((a, b) => a.start - b.start);\n\t\tconst keys = [];\n\t\tconst editable = list.some((i) => i.editable);\n\t\tlet prevValue = list.find((i) => i.baseValue !== void 0)?.baseValue;\n\t\tconst first = list[0];\n\t\tif (first.kind === \"tween\" && first.explicitFrom === void 0 && prevValue === void 0) emitDevWarning(`'${target}': first tween has no resolvable from-value (string targets have no base) \u2014 the track sits at its end state before the tween. Anchor it with { from }, fromTo(), or set(..., { at: 0 }).`);\n\t\tfor (const ins of list) {\n\t\t\tif (ins.kind === \"set\") {\n\t\t\t\tkeys.push({\n\t\t\t\t\tt: ins.start,\n\t\t\t\t\tvalue: ins.value,\n\t\t\t\t\tinterp: \"hold\"\n\t\t\t\t});\n\t\t\t\tprevValue = ins.value;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst from = ins.explicitFrom !== void 0 ? ins.explicitFrom : prevValue;\n\t\t\tconst lastKey = keys[keys.length - 1];\n\t\t\tif (from !== void 0 && (!lastKey || lastKey.t < ins.start)) {\n\t\t\t\tconst fromKey = {\n\t\t\t\t\tt: ins.start,\n\t\t\t\t\tvalue: from\n\t\t\t\t};\n\t\t\t\tif (ins.explicitFrom === void 0) fromKey.derived = true;\n\t\t\t\tif (!lastKey || ins.start > lastKey.t) keys.push(fromKey);\n\t\t\t}\n\t\t\tkeys.push({\n\t\t\t\tt: ins.start + ins.duration,\n\t\t\t\tvalue: ins.value,\n\t\t\t\tease: ins.ease\n\t\t\t});\n\t\t\tprevValue = ins.value;\n\t\t}\n\t\tconst deduped = [];\n\t\tfor (const k of keys.sort((a, b) => a.t - b.t)) {\n\t\t\tconst last = deduped[deduped.length - 1];\n\t\t\tif (last && last.t === k.t) deduped[deduped.length - 1] = k;\n\t\t\telse deduped.push(k);\n\t\t}\n\t\tconst tr = {\n\t\t\ttarget,\n\t\t\ttype: inferValueType(list[0].value),\n\t\t\tkeys: deduped\n\t\t};\n\t\tif (editable) tr.editable = true;\n\t\ttracks.push(tr);\n\t}\n\tconst doc = timeline$1({\n\t\t...init,\n\t\ttracks,\n\t\tlabels,\n\t\t...durationEditable ? { editableDuration: true } : {},\n\t\t...markers.length ? { markers } : {},\n\t\t...children.length ? { children: children.map(({ _pos, ...c }) => c) } : {}\n\t});\n\tif (callbacks.size) timelineCallbacks.set(doc, callbacks);\n\treturn doc;\n}\nfunction timeline(arg, init) {\n\treturn typeof arg === \"function\" ? buildTimeline(arg, init) : timeline$1(arg);\n}\n//#endregion\n//#region src/binding.ts\n/**\n* Playhead + timeline binding (DESIGN.md \u00A72.4): animated properties are not\n* written each frame \u2014 binding rewires each targeted signal's source to\n* `() => sampleTrack(track, playhead())`, so evaluation stays pull-only and\n* unchanged samples don't propagate dirtiness.\n*/\nfunction createPlayhead(initial = 0) {\n\treturn signal(initial);\n}\nvar UnboundTargetError = class extends Error {\n\tconstructor(target) {\n\t\tsuper(`timeline targets '${target}' but no property signal resolves to it`);\n\t\tthis.name = \"UnboundTargetError\";\n\t}\n};\n/**\n* A track's value type doesn't match the shape of the property it targets \u2014 the\n* silent-NaN class (\u00A72.2): e.g. a scalar `number` track bound to a `vec2` prop\n* makes the compound a number, its `.x`/`.y` index it to `undefined`, and the\n* node's matrix goes NaN \u2014 the node and its subtree vanish. Caught at BIND time\n* (the track's type is known then), the precedent being UnboundTargetError:\n* mismatched binds are build errors, not silent no-ops.\n*/\nvar BindTypeMismatchError = class extends Error {\n\ttarget;\n\tgot;\n\t/** The accepted type(s) \u2014 a single id, or the set a polymorphic prop (e.g. `fill`: color|paint) admits. */\n\texpected;\n\tconstructor(target, got, expected) {\n\t\tconst prop = target.slice(target.lastIndexOf(\"/\") + 1);\n\t\tconst want = [expected].flat();\n\t\tconst hint = got === \"number\" && want.includes(\"vec2\") ? `; target '${prop}.x'/'${prop}.y' or author a vec2 track` : \"\";\n\t\tsuper(`track '${target}' is '${got}' but '${prop}' expects '${want.join(\"'|'\")}' (would silently NaN evaluation)${hint}`);\n\t\tthis.target = target;\n\t\tthis.got = got;\n\t\tthis.name = \"BindTypeMismatchError\";\n\t\tthis.expected = expected;\n\t}\n};\n/**\n* Bind a compiled timeline's tracks to property signals. `resolve` returns\n* the signal for a target path, or undefined \u2014 which is a compile-time-style\n* error (\u00A72.2: unbound tracks are build errors, not silent no-ops).\n*/\nfunction bindTimeline(compiled, resolve, playhead = createPlayhead()) {\n\tconst bound = [];\n\tconst samplers = /* @__PURE__ */ new Map();\n\tfor (const [target, tr] of compiled.tracks) {\n\t\tconst sig = resolve(target);\n\t\tif (!sig) throw new UnboundTargetError(target);\n\t\tconst got = tr.type;\n\t\tconst expects = sig.expects;\n\t\tif (expects !== void 0) {\n\t\t\tconst gotRepr = reprOf(got);\n\t\t\tif (!(Array.isArray(expects) ? expects : [expects]).some((e) => reprOf(e) === gotRepr)) throw new BindTypeMismatchError(target, got, expects);\n\t\t}\n\t\tsig.bindSource(() => sampleTrack(tr, playhead()));\n\t\tbound.push(sig);\n\t\tsamplers.set(target, {\n\t\t\ttrack: tr,\n\t\t\tvalue: (t) => sampleTrack(tr, t),\n\t\t\tvelocity: (t) => velocityAt(tr, t)\n\t\t});\n\t}\n\treturn {\n\t\tplayhead,\n\t\tsamplers,\n\t\tunbind: () => {\n\t\t\tfor (const sig of bound) sig.unbindSource();\n\t\t}\n\t};\n}\n/**\n* The evaluation entry discipline (\u00A72.5): the playhead write is the sanctioned\n* entry mutation, then the read phase begins and `read` must be pure.\n*/\nfunction evaluateAt(playhead, t, read) {\n\tplayhead.forceSet(t);\n\tbeginReadPhase();\n\ttry {\n\t\treturn read();\n\t} finally {\n\t\tendReadPhase();\n\t}\n}\n//#endregion\n//#region src/rng.ts\n/** Returns a deterministic [0,1) generator for the given integer seed. */\nfunction random(seed) {\n\tlet a = seed >>> 0;\n\treturn () => {\n\t\ta = a + 2654435769 | 0;\n\t\tlet t = a ^ a >>> 16;\n\t\tt = Math.imul(t, 569420461);\n\t\tt = t ^ t >>> 15;\n\t\tt = Math.imul(t, 1935289751);\n\t\tt = t ^ t >>> 15;\n\t\treturn (t >>> 0) / 4294967296;\n\t};\n}\n//#endregion\n//#region src/bake.ts\n/**\n* bake() (DESIGN.md \u00A72.8): stateful simulation as a compilation step. Run the\n* stepper ONCE \u2014 fixed dt, seeded RNG \u2014 and emit ordinary frame-indexed\n* Tracks; rendering stays a pure lookup and the \u00A72.5 contract survives.\n* The checkpointed variant trades memory for bounded re-simulation.\n*/\nvar BakeError = class extends Error {\n\tconstructor(detail) {\n\t\tsuper(`bake(): ${detail}`);\n\t\tthis.name = \"BakeError\";\n\t}\n};\nfunction emit(acc, sampled, t) {\n\tfor (const [path, value] of Object.entries(sampled)) {\n\t\tlet a = acc.get(path);\n\t\tif (!a) {\n\t\t\ta = {\n\t\t\t\tkeys: [],\n\t\t\t\ttype: inferValueType(value)\n\t\t\t};\n\t\t\tacc.set(path, a);\n\t\t}\n\t\ta.keys.push({\n\t\t\tt,\n\t\t\tvalue\n\t\t});\n\t}\n}\nfunction toTracks(acc) {\n\treturn [...acc.entries()].map(([target, a]) => ({\n\t\ttarget,\n\t\ttype: a.type,\n\t\tkeys: a.keys\n\t}));\n}\nfunction bake(cfg) {\n\tif (!(cfg.fps > 0) || !(cfg.duration >= 0)) throw new BakeError(\"fps must be > 0 and duration >= 0\");\n\tconst rng = random(cfg.seed ?? 0);\n\tconst dt = 1 / cfg.fps;\n\tconst frames = Math.round(cfg.duration * cfg.fps);\n\tlet world = cfg.setup(rng);\n\tconst acc = /* @__PURE__ */ new Map();\n\temit(acc, cfg.sample(world), 0);\n\tfor (let f = 1; f <= frames; f++) {\n\t\tworld = cfg.step(world, dt, rng) ?? world;\n\t\temit(acc, cfg.sample(world), f * dt);\n\t}\n\treturn toTracks(acc);\n}\nfunction bakeCheckpointed(cfg) {\n\tif (!(cfg.every >= 1)) throw new BakeError(\"checkpoint interval `every` must be >= 1 frame\");\n\tconst dt = 1 / cfg.fps;\n\tconst totalFrames = Math.round(cfg.duration * cfg.fps);\n\tlet draws = 0;\n\tconst baseRng = random(cfg.seed ?? 0);\n\tconst countingRng = () => {\n\t\tdraws++;\n\t\treturn baseRng();\n\t};\n\tconst rngAt = (targetDraws) => {\n\t\tconst r = random(cfg.seed ?? 0);\n\t\tfor (let i = 0; i < targetDraws; i++) r();\n\t\treturn r;\n\t};\n\tlet world = cfg.setup(countingRng);\n\tconst checkpoints = [{\n\t\tsnap: cfg.snapshot(world),\n\t\trngDraws: draws\n\t}];\n\tlet simulatedTo = 0;\n\t/** Advance the master simulation, recording a checkpoint every K frames. */\n\tfunction ensureSimulatedTo(frame) {\n\t\twhile (simulatedTo < Math.min(frame, totalFrames)) {\n\t\t\tworld = cfg.step(world, dt, countingRng) ?? world;\n\t\t\tsimulatedTo++;\n\t\t\tif (simulatedTo % cfg.every === 0) checkpoints.push({\n\t\t\t\tsnap: cfg.snapshot(world),\n\t\t\t\trngDraws: draws\n\t\t\t});\n\t\t}\n\t}\n\treturn {\n\t\tframes: totalFrames,\n\t\tbakeRange(fromFrame, toFrame) {\n\t\t\tif (fromFrame < 0 || toFrame > totalFrames || fromFrame > toFrame) throw new BakeError(`range ${fromFrame}..${toFrame} outside 0..${totalFrames}`);\n\t\t\tconst cpFrame = Math.floor(fromFrame / cfg.every) * cfg.every;\n\t\t\tensureSimulatedTo(cpFrame);\n\t\t\tconst cp = checkpoints[cpFrame / cfg.every];\n\t\t\tlet w = cfg.restore(cp.snap);\n\t\t\tconst rng = rngAt(cp.rngDraws);\n\t\t\tlet frame = cpFrame;\n\t\t\tconst acc = /* @__PURE__ */ new Map();\n\t\t\tif (frame >= fromFrame) emit(acc, cfg.sample(w), frame * dt);\n\t\t\twhile (frame < toFrame) {\n\t\t\t\tw = cfg.step(w, dt, rng) ?? w;\n\t\t\t\tframe++;\n\t\t\t\tif (frame >= fromFrame) emit(acc, cfg.sample(w), frame * dt);\n\t\t\t}\n\t\t\treturn toTracks(acc);\n\t\t}\n\t};\n}\n//#endregion\nexport { BakeError, BindTypeMismatchError, CircularDependencyError, ColorParseError, DEFAULT_EASE, FontValidationError, PositionError, SidecarVersionError, TARGET_PATH, TimelineValidationError, TrackValidationError, UnboundTargetError, UnknownEasingError, UnknownValueTypeError, UnresolvableTargetError, ValueTypeInferenceError, WriteDuringEvaluationError, assignKeyIds, audioOffsetSamples, bake, bakeCheckpointed, batch, beginReadPhase, bindTimeline, booleanType, buildFontRegistry, buildTimeline, colorType, compileTimeline, computed, createPlayhead, cubicBezier, cubicBezierDerivative, deleteSidecarTrack, easingDerivatives, easings, emitDevWarning, emptySidecar, endReadPhase, evaluateAt, formatColor, getTimelineCallbacks, getValueType, hashKeys, inReadPhase, inferValueType, isDurationEditable, isEditableNodeId, isExemptFamily, key, lerpColor, mergeSidecar, mergeSidecarDetailed, migrateSidecar, namedEasing, normalizeEditedKeys, numberType, oklabToRgba, paintType, parseCmap, parseColor, pathType, random, registerValueType, reprOf, resolveEase, resolveEaseDerivative, resolveTweenTarget, rgbaToOklab, sampleTrack, setDevWarning, setScheduler, setSidecarTrack, signal, spring, springEasing, springEasingDerivative, springPresets, springTo, stagger, stringType, synchronousScheduler, targetNodeId, timeline, track, untracked, validateFonts, validateTrack, vec2ArcType, vec2Equals, vec2Signal, vec2Type, velocityAt };\n", "import { TARGET_PATH, computed, emitDevWarning, random, signal, vec2Signal } from \"@glissade/core\";\n//#region src/matrix.ts\nconst IDENTITY = [\n\t1,\n\t0,\n\t0,\n\t1,\n\t0,\n\t0\n];\nconst z = (v) => v === 0 ? 0 : v;\nfunction multiply(m1, m2) {\n\tconst [a1, b1, c1, d1, e1, f1] = m1;\n\tconst [a2, b2, c2, d2, e2, f2] = m2;\n\treturn [\n\t\tz(a1 * a2 + c1 * b2),\n\t\tz(b1 * a2 + d1 * b2),\n\t\tz(a1 * c2 + c1 * d2),\n\t\tz(b1 * c2 + d1 * d2),\n\t\tz(a1 * e2 + c1 * f2 + e1),\n\t\tz(b1 * e2 + d1 * f2 + f1)\n\t];\n}\n/** Compose translate \u00D7 rotate \u00D7 scale (rotation in degrees). */\nfunction fromTRS(position, rotationDeg, scale) {\n\tconst r = rotationDeg * Math.PI / 180;\n\tconst cos = Math.cos(r);\n\tconst sin = Math.sin(r);\n\tconst [sx, sy] = scale;\n\treturn [\n\t\tz(cos * sx),\n\t\tz(sin * sx),\n\t\tz(-sin * sy),\n\t\tz(cos * sy),\n\t\tz(position[0]),\n\t\tz(position[1])\n\t];\n}\n/** Inverse affine: [A | t]\u207B\u00B9 = [A\u207B\u00B9 | \u2212A\u207B\u00B9t]; null when degenerate (det 0). */\nfunction invert(m) {\n\tconst [a, b, c, d, e, f] = m;\n\tconst det = a * d - b * c;\n\tif (det === 0) return null;\n\tconst ia = d / det;\n\tconst ib = -b / det;\n\tconst ic = -c / det;\n\tconst id = a / det;\n\treturn [\n\t\tz(ia),\n\t\tz(ib),\n\t\tz(ic),\n\t\tz(id),\n\t\tz(-(ia * e + ic * f)),\n\t\tz(-(ib * e + id * f))\n\t];\n}\nfunction applyToPoint(m, p) {\n\treturn [m[0] * p[0] + m[2] * p[1] + m[4], m[1] * p[0] + m[3] * p[1] + m[5]];\n}\nfunction matEquals(a, b) {\n\treturn a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5];\n}\n//#endregion\n//#region src/displayDiff.ts\n/**\n* The collapse-replacer shared by the cacheKey serializer\n* (`createDisplayListBuilder().cacheKey`), `cacheColdAudit.hashDisplayList`,\n* and `serializeDisplayList` here. CRITICAL: this is BYTE-PRESERVING \u2014 the\n* cacheKey it backs stamps into pushGroup and keys the \u00A73.5 raster cache, so\n* its output must not move. The three call sites previously DUPLICATED this\n* byte-for-byte; it lives here once.\n*\n* - ArrayBuffer / typed-array views collapse to a `ab:<len>` / `view:<len>`\n* length marker (opaque binary never belongs in a structural key).\n* - Functions drop (JSON would already drop them; explicit for parity).\n* - Non-finite numbers (`NaN`/`Infinity`/`-Infinity`) collapse to DISTINCT\n* string sentinels. `JSON.stringify` natively serializes all three to the\n* SAME token (`null`), which would collide the cacheKey of two DisplayLists\n* that differ only in WHICH non-finite value reaches a draw field \u2014 a stale\n* raster + an `auditCacheCold` false-OK. The distinct sentinels keep them\n* apart. This does NOT touch FINITE numbers (the common path): only the\n* three non-finite inputs change, so the \u00A73.5 cacheKey bytes for every real\n* (finite) list are byte-identical \u2014 pinned by the regression guard.\n*\n* NOTE: `-0` is intentionally NOT normalized here. The matrix layer\n* (`matrix.ts`) already normalizes `-0 \u2192 0` at the source, and adding a `-0`\n* pass to THIS replacer would change the cacheKey bytes for any list that ever\n* carried a raw `-0` \u2014 silently invalidating the cache cluster-wide. (`-0` is\n* finite, so the non-finite branch never touches it.) Byte preservation wins;\n* the regression guard pins the exact key.\n*/\nfunction collapseReplacer(_key, value) {\n\tif (value instanceof ArrayBuffer) return `ab:${value.byteLength}`;\n\tif (ArrayBuffer.isView(value)) return `view:${value.byteLength}`;\n\tif (typeof value === \"function\") return void 0;\n\tif (typeof value === \"number\" && !Number.isFinite(value)) {\n\t\tif (Number.isNaN(value)) return \"NaN\";\n\t\treturn value > 0 ? \"Infinity\" : \"-Infinity\";\n\t}\n\treturn value;\n}\n/** A flat, stable JSON value for one command with its resource ids INLINED to content. */\nfunction commandView(cmd, resources) {\n\tconst out = {};\n\tfor (const [k, v] of Object.entries(cmd)) out[k] = v;\n\tif (cmd.op === \"clip\" || cmd.op === \"fillPath\" || cmd.op === \"strokePath\") out[\"path\"] = resources[cmd.path];\n\telse if (cmd.op === \"drawImage\") out[\"image\"] = resources[cmd.image];\n\treturn out;\n}\nconst stable = (v) => JSON.stringify(v, collapseReplacer);\n/** Field-level diff of two same-op command views (shallow over top-level props). */\nfunction diffFields(a, b) {\n\tconst changes = [];\n\tconst keys = new Set([...Object.keys(a), ...Object.keys(b)]);\n\tfor (const k of keys) {\n\t\tif (k === \"op\") continue;\n\t\tif (stable(a[k]) !== stable(b[k])) changes.push({\n\t\t\tpath: k,\n\t\t\tfrom: a[k],\n\t\t\tto: b[k]\n\t\t});\n\t}\n\treturn changes;\n}\n/**\n* Index-aligned positional diff of two DisplayLists. Command i in `a` is\n* compared to command i in `b`; trailing commands become `add`/`remove`. A\n* single insert/remove cascades \u2014 this is the documented v1 cliff.\n*/\nfunction diffDisplayLists(a, b) {\n\tconst deltas = [];\n\tconst n = Math.max(a.commands.length, b.commands.length);\n\tfor (let i = 0; i < n; i++) {\n\t\tconst ca = a.commands[i];\n\t\tconst cb = b.commands[i];\n\t\tif (ca !== void 0 && cb !== void 0) {\n\t\t\tconst va = commandView(ca, a.resources);\n\t\t\tconst vb = commandView(cb, b.resources);\n\t\t\tif (stable(va) === stable(vb)) continue;\n\t\t\tif (ca.op !== cb.op) deltas.push({\n\t\t\t\tindex: i,\n\t\t\t\tkind: \"change\",\n\t\t\t\topA: ca.op,\n\t\t\t\topB: cb.op,\n\t\t\t\tfields: [{\n\t\t\t\t\tpath: \"op\",\n\t\t\t\t\tfrom: ca.op,\n\t\t\t\t\tto: cb.op\n\t\t\t\t}]\n\t\t\t});\n\t\t\telse deltas.push({\n\t\t\t\tindex: i,\n\t\t\t\tkind: \"change\",\n\t\t\t\topA: ca.op,\n\t\t\t\topB: cb.op,\n\t\t\t\tfields: diffFields(va, vb)\n\t\t\t});\n\t\t} else if (cb !== void 0) deltas.push({\n\t\t\tindex: i,\n\t\t\tkind: \"add\",\n\t\t\topB: cb.op,\n\t\t\tfields: []\n\t\t});\n\t\telse if (ca !== void 0) deltas.push({\n\t\t\tindex: i,\n\t\t\tkind: \"remove\",\n\t\t\topA: ca.op,\n\t\t\tfields: []\n\t\t});\n\t}\n\tconst sizeDiffers = a.size.w !== b.size.w || a.size.h !== b.size.h;\n\treturn {\n\t\tequal: deltas.length === 0 && !sizeDiffers,\n\t\tdeltas,\n\t\t...sizeDiffers ? { size: {\n\t\t\tfrom: a.size,\n\t\t\tto: b.size\n\t\t} } : {}\n\t};\n}\n/** Human-readable, multi-line rendering of a DisplayDiff (CLI command-tree). */\nfunction formatDisplayDiff(diff) {\n\tif (diff.equal) return \"DisplayLists are identical.\";\n\tconst lines = [];\n\tif (diff.size) lines.push(`size ${diff.size.from.w}x${diff.size.from.h} -> ${diff.size.to.w}x${diff.size.to.h}`);\n\tfor (const d of diff.deltas) if (d.kind === \"add\") lines.push(`+ [${d.index}] add ${d.opB ?? \"?\"}`);\n\telse if (d.kind === \"remove\") lines.push(`- [${d.index}] remove ${d.opA ?? \"?\"}`);\n\telse {\n\t\tconst op = d.opA === d.opB ? d.opA : `${d.opA ?? \"?\"} -> ${d.opB ?? \"?\"}`;\n\t\tlines.push(`~ [${d.index}] ${op}`);\n\t\tfor (const f of d.fields) lines.push(` ${f.path}: ${stable(f.from)} -> ${stable(f.to)}`);\n\t}\n\treturn lines.join(\"\\n\");\n}\n/**\n* The `.dl.json` snapshot interchange schema (DESIGN \u00A77.4). Users commit\n* `.dl.json` baselines, so this carries the SAME break-policy obligation as\n* `Timeline.version` and `SidecarDoc.sidecarVersion`: bump on a breaking shape\n* change. Independent of the API version.\n*/\nconst DL_SNAPSHOT_VERSION = 1;\n/**\n* Serialize a DisplayList to a stable `.dl.json` document string (reusing the\n* byte-preserving collapse-replacer). Round-trips through `parseDisplaySnapshot`.\n*/\nfunction serializeDisplayList(dl) {\n\tconst snapshot = {\n\t\tdlSnapshotVersion: 1,\n\t\tsize: dl.size,\n\t\tcommands: dl.commands,\n\t\tresources: dl.resources\n\t};\n\treturn JSON.stringify(snapshot, collapseReplacer, 2);\n}\nvar DlSnapshotError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"DlSnapshotError\";\n\t}\n};\n/** Parse a `.dl.json` snapshot back into a DisplayList (validates the version). */\nfunction parseDisplaySnapshot(json) {\n\tconst doc = JSON.parse(json);\n\tif (doc.dlSnapshotVersion !== 1) throw new DlSnapshotError(`unsupported dlSnapshotVersion ${String(doc.dlSnapshotVersion)}; this build reads 1`);\n\tif (!doc.size || !Array.isArray(doc.commands) || !Array.isArray(doc.resources)) throw new DlSnapshotError(\"malformed .dl.json snapshot (need size, commands[], resources[])\");\n\treturn {\n\t\tsize: doc.size,\n\t\tcommands: doc.commands,\n\t\tresources: doc.resources\n\t};\n}\n//#endregion\n//#region src/displayList.ts\nvar FilterValidationError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"FilterValidationError\";\n\t}\n};\nconst FILTER_KINDS = new Set([\n\t\"blur\",\n\t\"drop-shadow\",\n\t\"brightness\",\n\t\"contrast\",\n\t\"saturate\"\n]);\n/** Document-layer validation: reject unknown kinds and out-of-range params loudly. */\nfunction validateFilters(filters) {\n\tfor (const f of filters) {\n\t\tif (!FILTER_KINDS.has(f.kind)) throw new FilterValidationError(`unknown filter kind '${String(f.kind)}' (have: ${[...FILTER_KINDS].join(\", \")})`);\n\t\tif (f.kind === \"blur\" && !(Number.isFinite(f.radius) && f.radius >= 0)) throw new FilterValidationError(`blur radius must be \u2265 0, got ${String(f.radius)}`);\n\t\tif (f.kind === \"drop-shadow\") {\n\t\t\tif (![\n\t\t\t\tf.dx,\n\t\t\t\tf.dy,\n\t\t\t\tf.blur\n\t\t\t].every(Number.isFinite) || f.blur < 0) throw new FilterValidationError(\"drop-shadow needs finite dx/dy and blur \u2265 0\");\n\t\t\tif (typeof f.color !== \"string\" || f.color.length === 0) throw new FilterValidationError(\"drop-shadow needs a color string\");\n\t\t}\n\t\tif ((f.kind === \"brightness\" || f.kind === \"contrast\" || f.kind === \"saturate\") && !(Number.isFinite(f.amount) && f.amount >= 0)) throw new FilterValidationError(`${f.kind} amount must be \u2265 0, got ${String(f.amount)}`);\n\t}\n}\n/**\n* Compile the validated union to the canvas 2D `ctx.filter` syntax \u2014 both\n* backends speak it (browser canvas and @napi-rs/canvas/Skia). This is the\n* ONLY place the CSS-like syntax appears; documents never carry it.\n*/\nfunction filtersToCanvasFilter(filters) {\n\tif (filters.length === 0) return \"none\";\n\treturn filters.map((f) => {\n\t\tswitch (f.kind) {\n\t\t\tcase \"blur\": return `blur(${f.radius}px)`;\n\t\t\tcase \"drop-shadow\": return `drop-shadow(${f.dx}px ${f.dy}px ${f.blur}px ${f.color})`;\n\t\t\tdefault: return `${f.kind}(${f.amount})`;\n\t\t}\n\t}).join(\" \");\n}\n/**\n* Outer glow as stacked zero-offset drop-shadows \u2014 the classic recipe, fully\n* deterministic on both backends (it is just filters). intensity stacks more\n* layers; pair with a signal binding to follow an animated fill.\n*/\nfunction glow(color, radius = 16, intensity = 2) {\n\tconst layers = [];\n\tfor (let i = 0; i < Math.max(1, intensity); i++) layers.push({\n\t\tkind: \"drop-shadow\",\n\t\tdx: 0,\n\t\tdy: 0,\n\t\tblur: radius * (1 + i * 1.5),\n\t\tcolor\n\t});\n\treturn layers;\n}\n/**\n* Resource ids that appear in a draw command \u2014 only path/image/video draws\n* carry one. Keeps the cacheKey serializer in lockstep with DrawCommand.\n*/\nfunction commandResourceIds(cmd) {\n\tswitch (cmd.op) {\n\t\tcase \"clip\":\n\t\tcase \"fillPath\":\n\t\tcase \"strokePath\": return [cmd.path];\n\t\tcase \"drawImage\": return [cmd.image];\n\t\tdefault: return [];\n\t}\n}\n/** FNV-1a over a string \u2192 an 8-hex-digit stable token (no crypto dep, ESM-safe). */\nfunction fnv1a(s) {\n\tlet h = 2166136261;\n\tfor (let i = 0; i < s.length; i++) {\n\t\th ^= s.charCodeAt(i);\n\t\th = Math.imul(h, 16777619);\n\t}\n\treturn (h >>> 0).toString(16).padStart(8, \"0\");\n}\nfunction createDisplayListBuilder(size) {\n\tconst commands = [];\n\tconst resources = [];\n\tconst interned = /* @__PURE__ */ new Map();\n\treturn {\n\t\tpush: (cmd) => {\n\t\t\tif (cmd.op === \"pushGroup\" && cmd.filters.length > 0) validateFilters(cmd.filters);\n\t\t\tcommands.push(cmd);\n\t\t},\n\t\tresource: (res) => {\n\t\t\tconst k = JSON.stringify(res);\n\t\t\tconst hit = interned.get(k);\n\t\t\tif (hit !== void 0) return hit;\n\t\t\tconst id = resources.length;\n\t\t\tresources.push(res);\n\t\t\tinterned.set(k, id);\n\t\t\treturn id;\n\t\t},\n\t\tmark: () => commands.length,\n\t\tcacheKey: (start, end) => {\n\t\t\tif (end <= start) return void 0;\n\t\t\tconst localIds = /* @__PURE__ */ new Map();\n\t\t\tconst usedResources = [];\n\t\t\tconst remap = (id) => {\n\t\t\t\tlet local = localIds.get(id);\n\t\t\t\tif (local === void 0) {\n\t\t\t\t\tlocal = localIds.size;\n\t\t\t\t\tlocalIds.set(id, local);\n\t\t\t\t\tusedResources.push(resources[id]);\n\t\t\t\t}\n\t\t\t\treturn local;\n\t\t\t};\n\t\t\tconst sliceCmds = commands.slice(start, end).map((cmd) => {\n\t\t\t\tif (commandResourceIds(cmd).length === 0) return cmd;\n\t\t\t\tif (cmd.op === \"drawImage\") return {\n\t\t\t\t\t...cmd,\n\t\t\t\t\timage: remap(cmd.image)\n\t\t\t\t};\n\t\t\t\treturn {\n\t\t\t\t\t...cmd,\n\t\t\t\t\tpath: remap(cmd.path)\n\t\t\t\t};\n\t\t\t});\n\t\t\treturn fnv1a(JSON.stringify({\n\t\t\t\tc: sliceCmds,\n\t\t\t\tr: usedResources\n\t\t\t}, collapseReplacer));\n\t\t},\n\t\tpatchCacheKey: (i, key) => {\n\t\t\tconst cmd = commands[i];\n\t\t\tif (cmd && cmd.op === \"pushGroup\") cmd.cacheKey = key;\n\t\t},\n\t\tfinish: () => ({\n\t\t\tcommands,\n\t\t\tresources,\n\t\t\tsize\n\t\t})\n\t};\n}\n//#endregion\n//#region src/text.ts\n/**\n* \u00A73.6 measurement quantum (px). Scene-owned pre-measure quantizes every\n* layout-feeding advance to this grid ONCE, then hands Yoga frozen integers \u2014\n* so sub-pixel measureText drift between Skia/HarfBuzz versions cannot move a\n* whole layout. The single source of truth for the grid; `quantize` rounds to\n* it. (Yoga's `setMeasureFunc` was considered and rejected \u2014 see DESIGN.md \u00A73.6.)\n*/\nconst MEASURE_QUANTUM_PX = .5;\n/** \u00A73.6 measurement quantum \u2014 round to the MEASURE_QUANTUM_PX grid. */\nfunction quantize(v) {\n\treturn Math.round(v / MEASURE_QUANTUM_PX) * MEASURE_QUANTUM_PX;\n}\n/**\n* Estimating fallback measurer \u2014 used only when no backend has been injected\n* (e.g. evaluating for IR-level tests). Deterministic but not metrically\n* faithful; mount(), the CLI, and exporters always inject the real one.\n*/\nlet defaultMeasurer = null;\n/**\n* Process-wide fallback measurer for FACTORY-TIME measurement \u2014 component\n* factories run before any scene exists, so Text pulls (measuredSize,\n* lineBoxes, wordBoxes) and createScene fall back here before the estimator.\n* Node consumers: `setDefaultMeasurer(createMeasurer({ fonts }))` from\n* @glissade/backend-skia gives factory code the rasterizer's real metrics.\n* Scene-injected measurers (mount/CLI/golden harness) always win.\n*/\nfunction setDefaultMeasurer(m) {\n\tdefaultMeasurer = m;\n}\n/** The default-or-estimating chain end; internal fallback for measurer pulls. */\nfunction fallbackMeasurer() {\n\treturn defaultMeasurer ?? estimatingMeasurer;\n}\nconst estimatingMeasurer = { measureText(text, font) {\n\treturn {\n\t\twidth: text.length * font.size * .52,\n\t\tascent: font.size * .8,\n\t\tdescent: font.size * .2\n\t};\n} };\nlet wordSegmenter;\n/**\n* The draw-path word segmentation (Intl.Segmenter boundaries, punctuation\n* glued to its predecessor) \u2014 exported so Text.wordBoxes() boxes EXACTLY the\n* units the breaker flows.\n*/\nfunction segmentWords(text) {\n\tif (wordSegmenter === void 0) wordSegmenter = typeof Intl !== \"undefined\" && \"Segmenter\" in Intl ? new Intl.Segmenter(void 0, { granularity: \"word\" }) : null;\n\tif (wordSegmenter) {\n\t\tconst raw = [...wordSegmenter.segment(text)].map((s) => s.segment);\n\t\tconst glued = [];\n\t\tfor (const seg of raw) if (glued.length > 0 && /^[^\\p{L}\\p{N}\\s]+$/u.test(seg)) glued[glued.length - 1] += seg;\n\t\telse glued.push(seg);\n\t\treturn glued;\n\t}\n\treturn text.split(/(\\s+)/).filter((w) => w.length > 0);\n}\nlet graphemeSegmenter;\n/**\n* Split text into graphemes (user-perceived characters). Exported so Text.draw\n* (reveal masking), Text.graphemes() (authoring), and revealSchedule() (the SFX\n* keystroke contract) all count the SAME units.\n*/\nfunction segmentGraphemes(text) {\n\tif (graphemeSegmenter === void 0) graphemeSegmenter = typeof Intl !== \"undefined\" && \"Segmenter\" in Intl ? new Intl.Segmenter(void 0, { granularity: \"grapheme\" }) : null;\n\tif (graphemeSegmenter) return [...graphemeSegmenter.segment(text)].map((s) => s.segment);\n\treturn Array.from(text);\n}\n/**\n* Greedy line breaking: explicit '\\n' always breaks; otherwise word segments\n* flow until maxWidth is exceeded (Intl.Segmenter boundaries, so CJK wraps\n* without spaces). A segment wider than maxWidth gets its own line (no\n* intra-word breaking in v1).\n*/\nfunction breakLines(text, font, maxWidth, measurer) {\n\tconst paragraphs = text.split(\"\\n\");\n\tif (maxWidth === void 0 || maxWidth <= 0) return paragraphs;\n\tconst lines = [];\n\tfor (const para of paragraphs) {\n\t\tconst words = segmentWords(para);\n\t\tlet line = \"\";\n\t\tfor (const word of words) {\n\t\t\tconst candidate = line + word;\n\t\t\tif (line !== \"\" && quantize(measurer.measureText(candidate.trimEnd(), font).width) > maxWidth) {\n\t\t\t\tlines.push(line.trimEnd());\n\t\t\t\tline = word.trimStart() === \"\" ? \"\" : word;\n\t\t\t} else line = candidate;\n\t\t}\n\t\tlines.push(line.trimEnd());\n\t}\n\treturn lines;\n}\n//#endregion\n//#region src/node.ts\n/**\n* Scene-graph node base (DESIGN.md \u00A73.1): every animatable property is a\n* signal; transforms are computed matrix signals; emit() is pure \u2014 it reads\n* signals and ctx only, and produces IR commands, never canvas calls.\n*/\nconst ANCHOR_PRESETS = {\n\t\"center\": [.5, .5],\n\t\"top-left\": [0, 0],\n\t\"top\": [.5, 0],\n\t\"top-right\": [1, 0],\n\t\"left\": [0, .5],\n\t\"right\": [1, .5],\n\t\"bottom-left\": [0, 1],\n\t\"bottom\": [.5, 1],\n\t\"bottom-right\": [1, 1]\n};\nfunction resolveAnchor(spec) {\n\tif (typeof spec === \"string\") {\n\t\tconst preset = ANCHOR_PRESETS[spec];\n\t\tif (!preset) throw new Error(`unknown anchor '${spec}' (use a preset like 'top-left' or a [ax, ay] pair)`);\n\t\treturn preset;\n\t}\n\treturn [spec[0], spec[1]];\n}\nfunction initScalar(sig, init) {\n\tif (typeof init === \"function\") sig.bindSource(init);\n\telse if (init !== void 0) sig.set(init);\n\treturn sig;\n}\nfunction initVec2(sig, init) {\n\tif (typeof init === \"function\") sig.bindSource(init);\n\telse if (init !== void 0) sig.set(init);\n\treturn sig;\n}\nvar Node = class {\n\tid;\n\tposition;\n\trotation;\n\tscale;\n\topacity;\n\tblend;\n\tzIndex;\n\tfilters;\n\t/** Resolved anchor fraction over the intrinsic box; [0.5, 0.5] = center. */\n\tanchor;\n\t/** True only when the author SET an anchor \u2014 unset keeps the legacy origin. */\n\thasAnchor;\n\t/** \u00A73.5: opt-in cross-frame raster cache. Forces a group + a stamped cacheKey. */\n\tcache;\n\tparent = null;\n\t#warnedAnchor = false;\n\t/** v2 \u00A7C.3: participates in hit testing; set implicitly by attaching a listener. */\n\tinteractive = false;\n\t/** v2 \u00A7C.3: false prunes this subtree from hit testing (PixiJS's flag). */\n\tinteractiveChildren = true;\n\t/** v2 \u00A7C.3: explicit hit-shape override in node-local coordinates. */\n\thitArea;\n\t/**\n\t* Injected by createScene: the scene's CURRENT TextMeasurer (\u00A73.2), so\n\t* derived-size bindings (e.g. a background tracking Layout.computedSize)\n\t* measure with the same rasterizer the flow uses.\n\t*/\n\tmeasurerSource = null;\n\tlocalMatrix;\n\tworldMatrix;\n\t/** Track-target paths \u2192 bindable signals; subclasses register their own props. */\n\ttargets = /* @__PURE__ */ new Map();\n\tconstructor(props = {}) {\n\t\tthis.id = props.id;\n\t\tthis.position = initVec2(vec2Signal([0, 0]), props.position);\n\t\tthis.rotation = initScalar(signal(0), props.rotation);\n\t\tthis.scale = initVec2(vec2Signal([1, 1]), props.scale);\n\t\tthis.opacity = initScalar(signal(1), props.opacity);\n\t\tthis.blend = initScalar(signal(\"source-over\"), props.blend);\n\t\tthis.zIndex = initScalar(signal(0), props.zIndex);\n\t\tthis.filters = initScalar(signal([]), props.filters);\n\t\tthis.hasAnchor = props.anchor !== void 0;\n\t\tthis.anchor = resolveAnchor(props.anchor ?? \"center\");\n\t\tthis.cache = props.cache === true;\n\t\tthis.localMatrix = computed(() => {\n\t\t\tconst trs = fromTRS(this.position(), this.rotation(), this.scale());\n\t\t\tconst [sx, sy] = this.anchorShift();\n\t\t\treturn sx === 0 && sy === 0 ? trs : multiply(trs, [\n\t\t\t\t1,\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\t1,\n\t\t\t\tsx,\n\t\t\t\tsy\n\t\t\t]);\n\t\t}, { equals: matEquals });\n\t\tthis.worldMatrix = computed(() => this.parent ? multiply(this.parent.worldMatrix(), this.localMatrix()) : this.localMatrix(), { equals: matEquals });\n\t\tthis.registerTarget(\"position\", this.position, \"vec2\");\n\t\tthis.registerTarget(\"position.x\", this.position.x, \"number\");\n\t\tthis.registerTarget(\"position.y\", this.position.y, \"number\");\n\t\tthis.registerTarget(\"rotation\", this.rotation, \"number\");\n\t\tthis.registerTarget(\"scale\", this.scale, \"vec2\");\n\t\tthis.registerTarget(\"scale.x\", this.scale.x, \"number\");\n\t\tthis.registerTarget(\"scale.y\", this.scale.y, \"number\");\n\t\tthis.registerTarget(\"opacity\", this.opacity, \"number\");\n\t\tthis.registerTarget(\"zIndex\", this.zIndex, \"number\");\n\t}\n\t/**\n\t* Register a track-target path \u2192 bindable signal, stamping the value type the\n\t* signal accepts (\u00A72.2). The stamp is what bindTimeline's bind-time guard\n\t* reads to reject a mismatched track (a scalar on a vec2, a number on a paint\n\t* prop, \u2026) instead of silently sampling to NaN/undefined.\n\t*\n\t* `expects` is OPTIONAL: omitting it (the 2-arg form) leaves the target\n\t* UNtagged \u2014 bindTimeline then skips the type guard for it, which is the\n\t* back-compat seam for external `Custom`/`Node` subclasses (DESIGN.md \u00A7329)\n\t* and prebuilt 0.13 nodes that called the 2-arg form (0.13 had no guard). A\n\t* built-in node opts INTO the guard by tagging.\n\t*/\n\tregisterTarget(path, sig, expects) {\n\t\tsig.expects = expects;\n\t\tthis.targets.set(path, sig);\n\t\tif (this.id !== void 0) sig[TARGET_PATH] = `${this.id}/${path}`;\n\t}\n\tresolveTarget(path) {\n\t\treturn this.targets.get(path);\n\t}\n\t/**\n\t* Natural size for flex flow (\u00A73.2); null = not flowable (a Layout parent\n\t* emits such children absolutely, untouched).\n\t*/\n\tintrinsicSize(measurer) {\n\t\treturn null;\n\t}\n\t/**\n\t* Vector from the DRAW origin to the intrinsic box's top-left, in the\n\t* geometry space draw() emits into (anchor-independent \u2014 the anchor shift\n\t* lives in localMatrix). Hit testing boxes nodes with this. Default:\n\t* center-anchored geometry (every shape). Text overrides \u2014 it draws from a\n\t* left/center/right baseline origin; Path from author-positioned bounds.\n\t*/\n\tdrawOffset(measurer) {\n\t\tconst m = measurer ?? this.measurerSource?.() ?? fallbackMeasurer();\n\t\tconst size = this.intrinsicSize(m) ?? {\n\t\t\tw: 0,\n\t\t\th: 0\n\t\t};\n\t\treturn {\n\t\t\tx: -size.w / 2,\n\t\t\ty: -size.h / 2\n\t\t};\n\t}\n\t/**\n\t* Vector from the node ORIGIN (the point `position` places) to the box's\n\t* top-left, so Layout can place any node. With an anchor this is exactly\n\t* (\u2212ax\u00B7w, \u2212ay\u00B7h); the center default reproduces (\u2212w/2, \u2212h/2).\n\t*/\n\tflowOffset(measurer) {\n\t\tconst m = measurer ?? this.measurerSource?.() ?? fallbackMeasurer();\n\t\tconst d = this.drawOffset(m);\n\t\tconst [sx, sy] = this.anchorShift(m);\n\t\treturn {\n\t\t\tx: d.x + sx,\n\t\t\ty: d.y + sy\n\t\t};\n\t}\n\t/**\n\t* Translation composed after TRS in localMatrix: moves the drawn box so the\n\t* anchor point lands on the origin. shift = \u2212(drawOffset + anchor\u00B7size).\n\t* No anchor set \u2192 zero shift, the legacy origin (shape center / Text\n\t* baseline / Path author coords) \u2014 every pre-anchor scene is byte-stable.\n\t* An EXPLICIT anchor pins position to that fraction of the box, even\n\t* 'center' (which differs from the legacy origin only for Text and Path).\n\t* Nodes without an intrinsic box (Group) warn once and ignore it.\n\t*/\n\tanchorShift(measurer) {\n\t\tif (!this.hasAnchor) return [0, 0];\n\t\tconst [ax, ay] = this.anchor;\n\t\tconst m = measurer ?? this.measurerSource?.() ?? fallbackMeasurer();\n\t\tconst size = this.intrinsicSize(m);\n\t\tif (!size) {\n\t\t\tif (!this.#warnedAnchor) {\n\t\t\t\tthis.#warnedAnchor = true;\n\t\t\t\temitDevWarning(`anchor set on a node without an intrinsic box${this.id ? ` ('${this.id}')` : \"\"} \u2014 ignored (give it a sized node, or position children explicitly)`);\n\t\t\t}\n\t\t\treturn [0, 0];\n\t\t}\n\t\tconst d = this.drawOffset(m);\n\t\tconst sx = -(d.x + ax * size.w);\n\t\tconst sy = -(d.y + ay * size.h);\n\t\treturn [sx === 0 ? 0 : sx, sy === 0 ? 0 : sy];\n\t}\n\t/** \u00A73.5 predicate: composite-as-a-unit when opacity/blend/filters demand it. */\n\trequiresGroup() {\n\t\treturn this.opacity() < 1 || this.blend() !== \"source-over\" || this.filters().length > 0;\n\t}\n\t/** \u00A73.7: a subtree-level shader pass; ShaderEffect overrides. */\n\tgroupShader() {}\n\temit(out, ctx) {\n\t\tconst opacity = this.opacity();\n\t\tif (opacity <= 0) return;\n\t\tconst local = this.localMatrix();\n\t\tconst isIdentity = matEquals(local, IDENTITY);\n\t\tconst shader = this.groupShader();\n\t\tconst group = this.requiresGroup() || shader !== void 0 || this.cache;\n\t\tconst wantsKey = this.cache && out.mark !== void 0;\n\t\tout.push({ op: \"save\" });\n\t\tif (!isIdentity) out.push({\n\t\t\top: \"transform\",\n\t\t\tm: local\n\t\t});\n\t\tlet pushIdx = -1;\n\t\tif (group) {\n\t\t\tif (wantsKey) pushIdx = out.mark();\n\t\t\tout.push({\n\t\t\t\top: \"pushGroup\",\n\t\t\t\topacity,\n\t\t\t\tblend: this.blend(),\n\t\t\t\tfilters: this.filters(),\n\t\t\t\t...shader !== void 0 ? { shader } : {}\n\t\t\t});\n\t\t}\n\t\tconst drawStart = wantsKey ? out.mark() : -1;\n\t\tthis.draw(out, ctx);\n\t\tif (group) {\n\t\t\tif (wantsKey) {\n\t\t\t\tconst key = out.cacheKey(drawStart, out.mark());\n\t\t\t\tif (key !== void 0) out.patchCacheKey(pushIdx, key);\n\t\t\t}\n\t\t\tout.push({ op: \"popGroup\" });\n\t\t}\n\t\tout.push({ op: \"restore\" });\n\t}\n};\n//#endregion\n//#region src/sketch.ts\n/**\n* Hand-drawn stroke styles via GEOMETRIC roughening \u2014 not raster textures. A\n* shape's outline is flattened to polylines, then each segment is redrawn as a\n* slightly jittered, bowed stroke, overlaid in a few passes. Because it's pure\n* path math seeded by a stable per-shape seed, the result is byte-identical on\n* both backends and re-evaluates deterministically (the seed is consumed fresh\n* each draw, never as a shared stateful stream).\n*/\nconst KINDS = [\n\t\"marker\",\n\t\"crayon\",\n\t\"pencil\",\n\t\"ink\",\n\t\"chalk\"\n];\nvar SketchValidationError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"SketchValidationError\";\n\t}\n};\n/** Reject unknown kinds / out-of-range params at construction (like validateFilters). */\nfunction validateSketch(s) {\n\tif (!KINDS.includes(s.kind)) throw new SketchValidationError(`unknown sketch kind '${String(s.kind)}' (have: ${KINDS.join(\", \")})`);\n\tif (s.width !== void 0 && !(s.width > 0)) throw new SketchValidationError(`sketch width must be > 0, got ${String(s.width)}`);\n\tif (s.roughness !== void 0 && !(s.roughness >= 0)) throw new SketchValidationError(`sketch roughness must be \u2265 0, got ${String(s.roughness)}`);\n\tif ((s.kind === \"crayon\" || s.kind === \"pencil\") && s.passes !== void 0 && !(s.passes >= 1)) throw new SketchValidationError(`sketch passes must be \u2265 1, got ${String(s.passes)}`);\n\tif (s.kind === \"chalk\" && s.dash !== void 0 && (!Array.isArray(s.dash) || s.dash.some((d) => !(d >= 0)))) throw new SketchValidationError(\"sketch chalk dash must be an array of non-negative numbers\");\n}\n/** Per-kind defaults \u2014 the character of each look. */\nfunction resolveSketch(s) {\n\tswitch (s.kind) {\n\t\tcase \"marker\": return {\n\t\t\twidth: s.width ?? 8,\n\t\t\troughness: s.roughness ?? 1.2,\n\t\t\tpasses: 2\n\t\t};\n\t\tcase \"crayon\": return {\n\t\t\twidth: s.width ?? 4,\n\t\t\troughness: s.roughness ?? 2.4,\n\t\t\tpasses: s.passes ?? 3\n\t\t};\n\t\tcase \"pencil\": return {\n\t\t\twidth: s.width ?? 1.5,\n\t\t\troughness: s.roughness ?? 1,\n\t\t\tpasses: s.passes ?? 2\n\t\t};\n\t\tcase \"ink\": return {\n\t\t\twidth: s.width ?? 2.5,\n\t\t\troughness: s.roughness ?? .8,\n\t\t\tpasses: 1\n\t\t};\n\t\tcase \"chalk\": return {\n\t\t\twidth: s.width ?? 3,\n\t\t\troughness: s.roughness ?? 1.6,\n\t\t\tpasses: 1,\n\t\t\tdash: s.dash ?? [6, 5]\n\t\t};\n\t}\n}\nconst cubic = (p0, c1, c2, p1, t) => {\n\tconst mt = 1 - t;\n\tconst a = mt * mt * mt;\n\tconst b = 3 * mt * mt * t;\n\tconst c = 3 * mt * t * t;\n\tconst d = t * t * t;\n\treturn [a * p0[0] + b * c1[0] + c * c2[0] + d * p1[0], a * p0[1] + b * c1[1] + c * c2[1] + d * p1[1]];\n};\nconst quad = (p0, c, p1, t) => {\n\tconst mt = 1 - t;\n\treturn [mt * mt * p0[0] + 2 * mt * t * c[0] + t * t * p1[0], mt * mt * p0[1] + 2 * mt * t * c[1] + t * t * p1[1]];\n};\nconst ellipse = (cx, cy, rx, ry, rot, ang) => {\n\tconst ex = rx * Math.cos(ang);\n\tconst ey = ry * Math.sin(ang);\n\tconst cos = Math.cos(rot);\n\tconst sin = Math.sin(rot);\n\treturn [cx + ex * cos - ey * sin, cy + ex * sin + ey * cos];\n};\n/**\n* Flatten a path to polylines \u2014 de Casteljau for C/Q, arc sampling for E\n* (Circle and rounded-rect corners are 'E' segments, so this MUST handle them\n* or those shapes roughen wrong). `steps` is the samples per curved segment.\n*/\nfunction flatten(segs, steps = 16) {\n\tconst polys = [];\n\tlet cur = null;\n\tlet px = 0;\n\tlet py = 0;\n\tlet sx = 0;\n\tlet sy = 0;\n\tconst ensure = (x, y) => {\n\t\tif (!cur) {\n\t\t\tcur = {\n\t\t\t\tpoints: [[x, y]],\n\t\t\t\tclosed: false\n\t\t\t};\n\t\t\tpolys.push(cur);\n\t\t\tsx = x;\n\t\t\tsy = y;\n\t\t}\n\t\treturn cur;\n\t};\n\tfor (const s of segs) switch (s[0]) {\n\t\tcase \"M\":\n\t\t\tcur = {\n\t\t\t\tpoints: [[s[1], s[2]]],\n\t\t\t\tclosed: false\n\t\t\t};\n\t\t\tpolys.push(cur);\n\t\t\tpx = sx = s[1];\n\t\t\tpy = sy = s[2];\n\t\t\tbreak;\n\t\tcase \"L\":\n\t\t\tensure(px, py).points.push([s[1], s[2]]);\n\t\t\tpx = s[1];\n\t\t\tpy = s[2];\n\t\t\tbreak;\n\t\tcase \"C\": {\n\t\t\tconst c = ensure(px, py);\n\t\t\tfor (let k = 1; k <= steps; k++) c.points.push(cubic([px, py], [s[1], s[2]], [s[3], s[4]], [s[5], s[6]], k / steps));\n\t\t\tpx = s[5];\n\t\t\tpy = s[6];\n\t\t\tbreak;\n\t\t}\n\t\tcase \"Q\": {\n\t\t\tconst c = ensure(px, py);\n\t\t\tfor (let k = 1; k <= steps; k++) c.points.push(quad([px, py], [s[1], s[2]], [s[3], s[4]], k / steps));\n\t\t\tpx = s[3];\n\t\t\tpy = s[4];\n\t\t\tbreak;\n\t\t}\n\t\tcase \"E\": {\n\t\t\tconst [, cx, cy, rx, ry, rot, a0, a1] = s;\n\t\t\tconst begin = ellipse(cx, cy, rx, ry, rot, a0);\n\t\t\tconst c = ensure(begin[0], begin[1]);\n\t\t\tfor (let k = 1; k <= steps; k++) c.points.push(ellipse(cx, cy, rx, ry, rot, a0 + (a1 - a0) * (k / steps)));\n\t\t\tconst end = ellipse(cx, cy, rx, ry, rot, a1);\n\t\t\tpx = end[0];\n\t\t\tpy = end[1];\n\t\t\tbreak;\n\t\t}\n\t\tcase \"Z\":\n\t\t\tif (cur) {\n\t\t\t\tcur.points.push([sx, sy]);\n\t\t\t\tcur.closed = true;\n\t\t\t\tpx = sx;\n\t\t\t\tpy = sy;\n\t\t\t}\n\t\t\tbreak;\n\t}\n\treturn polys.filter((p) => p.points.length > 0);\n}\n/** Total length of a flattened polyline (for draw-on dashing). */\nfunction arcLength(poly) {\n\tlet len = 0;\n\tfor (let i = 1; i < poly.points.length; i++) len += Math.hypot(poly.points[i][0] - poly.points[i - 1][0], poly.points[i][1] - poly.points[i - 1][1]);\n\treturn len;\n}\nfunction validateHachure(h) {\n\tif (!(h.gap > 0)) throw new SketchValidationError(`hachure gap must be > 0, got ${String(h.gap)}`);\n\tif (h.roughness !== void 0 && !(h.roughness >= 0)) throw new SketchValidationError(`hachure roughness must be \u2265 0, got ${String(h.roughness)}`);\n}\n/**\n* Parallel hatch lines covering a path's bounding box at `angleRad`, spaced\n* `gap`, lightly jittered. Returned as `M/L` segments to be stroked INSIDE a\n* clip of the shape (the caller emits the clip). Pure; `rng` reseeded per draw.\n*/\nfunction hachureLines(segs, spec, rng) {\n\tconst polys = flatten(segs);\n\tlet minX = Infinity;\n\tlet minY = Infinity;\n\tlet maxX = -Infinity;\n\tlet maxY = -Infinity;\n\tfor (const p of polys) for (const [x, y] of p.points) {\n\t\tif (x < minX) minX = x;\n\t\tif (y < minY) minY = y;\n\t\tif (x > maxX) maxX = x;\n\t\tif (y > maxY) maxY = y;\n\t}\n\tif (!Number.isFinite(minX)) return [];\n\tconst cx = (minX + maxX) / 2;\n\tconst cy = (minY + maxY) / 2;\n\tconst ca = Math.cos(spec.angleRad);\n\tconst sa = Math.sin(spec.angleRad);\n\tconst toRot = (x, y) => [(x - cx) * ca + (y - cy) * sa, -(x - cx) * sa + (y - cy) * ca];\n\tconst fromRot = (x, y) => [cx + x * ca - y * sa, cy + x * sa + y * ca];\n\tlet rMinX = Infinity;\n\tlet rMinY = Infinity;\n\tlet rMaxX = -Infinity;\n\tlet rMaxY = -Infinity;\n\tconst corners = [\n\t\t[minX, minY],\n\t\t[maxX, minY],\n\t\t[maxX, maxY],\n\t\t[minX, maxY]\n\t];\n\tfor (const [x, y] of corners) {\n\t\tconst [rx, ry] = toRot(x, y);\n\t\tif (rx < rMinX) rMinX = rx;\n\t\tif (ry < rMinY) rMinY = ry;\n\t\tif (rx > rMaxX) rMaxX = rx;\n\t\tif (ry > rMaxY) rMaxY = ry;\n\t}\n\tconst rough = spec.roughness ?? 1;\n\tconst jit = () => (rng() * 2 - 1) * rough;\n\tconst out = [];\n\tfor (let y = rMinY + spec.gap / 2; y < rMaxY; y += spec.gap) {\n\t\tconst a = fromRot(rMinX, y + jit());\n\t\tconst b = fromRot(rMaxX, y + jit());\n\t\tout.push([\n\t\t\t\"M\",\n\t\t\ta[0],\n\t\t\ta[1]\n\t\t], [\n\t\t\t\"L\",\n\t\t\tb[0],\n\t\t\tb[1]\n\t\t]);\n\t}\n\treturn out;\n}\n/**\n* Roughen a path into hand-drawn stroke passes. Each segment becomes a bowed,\n* jittered quadratic; `passes` overlay slightly different jitters for the\n* built-up look. `rng` must be a freshly seeded generator (the caller reseeds\n* per draw from a stable seed, so evaluate() stays pure).\n*/\nfunction roughen(segs, style, rng) {\n\tconst resolved = resolveSketch(style);\n\tconst polys = flatten(segs);\n\tconst jit = () => (rng() * 2 - 1) * resolved.roughness;\n\tconst strokes = [];\n\tfor (let pass = 0; pass < resolved.passes; pass++) {\n\t\tconst out = [];\n\t\tfor (const poly of polys) {\n\t\t\tconst pts = poly.points;\n\t\t\tif (pts.length < 2) continue;\n\t\t\tlet ax = pts[0][0] + jit();\n\t\t\tlet ay = pts[0][1] + jit();\n\t\t\tout.push([\n\t\t\t\t\"M\",\n\t\t\t\tax,\n\t\t\t\tay\n\t\t\t]);\n\t\t\tfor (let i = 1; i < pts.length; i++) {\n\t\t\t\tconst bx = pts[i][0] + jit();\n\t\t\t\tconst by = pts[i][1] + jit();\n\t\t\t\tconst dx = bx - ax;\n\t\t\t\tconst dy = by - ay;\n\t\t\t\tconst len = Math.hypot(dx, dy) || 1;\n\t\t\t\tconst bow = jit() * .5;\n\t\t\t\tconst mx = (ax + bx) / 2 + -dy / len * bow;\n\t\t\t\tconst my = (ay + by) / 2 + dx / len * bow;\n\t\t\t\tout.push([\n\t\t\t\t\t\"Q\",\n\t\t\t\t\tmx,\n\t\t\t\t\tmy,\n\t\t\t\t\tbx,\n\t\t\t\t\tby\n\t\t\t\t]);\n\t\t\t\tax = bx;\n\t\t\t\tay = by;\n\t\t\t}\n\t\t}\n\t\tstrokes.push(out);\n\t}\n\treturn {\n\t\tstrokes,\n\t\tresolved\n\t};\n}\n/** FNV-1a 32-bit \u2014 a stable per-shape sketch seed from its id. */\nfunction hashStr(s) {\n\tlet h = 2166136261;\n\tfor (let i = 0; i < s.length; i++) {\n\t\th ^= s.charCodeAt(i);\n\t\th = Math.imul(h, 16777619);\n\t}\n\treturn h >>> 0;\n}\n/** Convenience: the rough stroke passes for a path at a given seed. */\nfunction sketchStrokes(segs, style, seed) {\n\treturn roughen(segs, style, random(seed >>> 0)).strokes;\n}\n//#endregion\n//#region src/nodes.ts\n/**\n* Built-in nodes for M1 (DESIGN.md \u00A73.1): Group, Rect, Circle, Text.\n* Path/Image/Video/Layout arrive with their milestones.\n*/\n/**\n* The NAMED extension point of the closed \u00A73.1 taxonomy: the documented base\n* an author subclasses to emit IR commands (never canvas calls). It adds\n* nothing to `Node` \u2014 it exists so \"custom-via-subclassing\" is a real,\n* exported surface (the ninth taxonomy member) rather than an unnamed\n* convention. Subclasses implement the abstract `draw()` from `Node`.\n*/\nvar Custom = class extends Node {};\n/** Rounded-rect path segments \u2014 Rect's outline, shared with Highlight. */\nfunction roundedRectSegs(x, y, w, h, r) {\n\tif (r <= 0) return [\n\t\t[\n\t\t\t\"M\",\n\t\t\tx,\n\t\t\ty\n\t\t],\n\t\t[\n\t\t\t\"L\",\n\t\t\tx + w,\n\t\t\ty\n\t\t],\n\t\t[\n\t\t\t\"L\",\n\t\t\tx + w,\n\t\t\ty + h\n\t\t],\n\t\t[\n\t\t\t\"L\",\n\t\t\tx,\n\t\t\ty + h\n\t\t],\n\t\t[\"Z\"]\n\t];\n\tconst HALF = Math.PI / 2;\n\treturn [\n\t\t[\n\t\t\t\"M\",\n\t\t\tx + r,\n\t\t\ty\n\t\t],\n\t\t[\n\t\t\t\"L\",\n\t\t\tx + w - r,\n\t\t\ty\n\t\t],\n\t\t[\n\t\t\t\"E\",\n\t\t\tx + w - r,\n\t\t\ty + r,\n\t\t\tr,\n\t\t\tr,\n\t\t\t0,\n\t\t\t-HALF,\n\t\t\t0\n\t\t],\n\t\t[\n\t\t\t\"L\",\n\t\t\tx + w,\n\t\t\ty + h - r\n\t\t],\n\t\t[\n\t\t\t\"E\",\n\t\t\tx + w - r,\n\t\t\ty + h - r,\n\t\t\tr,\n\t\t\tr,\n\t\t\t0,\n\t\t\t0,\n\t\t\tHALF\n\t\t],\n\t\t[\n\t\t\t\"L\",\n\t\t\tx + r,\n\t\t\ty + h\n\t\t],\n\t\t[\n\t\t\t\"E\",\n\t\t\tx + r,\n\t\t\ty + h - r,\n\t\t\tr,\n\t\t\tr,\n\t\t\t0,\n\t\t\tHALF,\n\t\t\tMath.PI\n\t\t],\n\t\t[\n\t\t\t\"L\",\n\t\t\tx,\n\t\t\ty + r\n\t\t],\n\t\t[\n\t\t\t\"E\",\n\t\t\tx + r,\n\t\t\ty + r,\n\t\t\tr,\n\t\t\tr,\n\t\t\t0,\n\t\t\tMath.PI,\n\t\t\tMath.PI + HALF\n\t\t],\n\t\t[\"Z\"]\n\t];\n}\nvar Group = class extends Node {\n\tchildren;\n\t/** Version bumped on structural child mutation, so a dependency-tracked memo\n\t* (e.g. Layout's computed) re-runs when the child SET changes \u2014 not only when\n\t* a participating prop signal does. */\n\t#structure = signal(0);\n\tconstructor(props = {}) {\n\t\tsuper(props);\n\t\tthis.children = props.children ?? [];\n\t\tfor (const child of this.children) child.parent = this;\n\t}\n\t/** Record the structural version as a dependency \u2014 call inside a computed\n\t* that walks `children` so add()/remove() invalidate it. */\n\ttrackStructure() {\n\t\tthis.#structure();\n\t}\n\tadd(child) {\n\t\tchild.parent = this;\n\t\tthis.children.push(child);\n\t\tthis.#structure.set(this.#structure.peek() + 1);\n\t\treturn this;\n\t}\n\t/** Remove a child (the reactive counterpart to add()); no-op if absent. */\n\tremove(child) {\n\t\tconst i = this.children.indexOf(child);\n\t\tif (i >= 0) {\n\t\t\tthis.children.splice(i, 1);\n\t\t\tif (child.parent === this) child.parent = null;\n\t\t\tthis.#structure.set(this.#structure.peek() + 1);\n\t\t}\n\t\treturn this;\n\t}\n\tdraw(out, ctx) {\n\t\tconst sorted = this.children.map((node, i) => ({\n\t\t\tnode,\n\t\t\ti\n\t\t})).sort((a, b) => a.node.zIndex() - b.node.zIndex() || a.i - b.i).map((e) => e.node);\n\t\tfor (const child of sorted) child.emit(out, ctx);\n\t}\n};\n/** A color string is sugar for a solid `color` Paint; a Paint passes through. */\nfunction toPaint(fill) {\n\treturn typeof fill === \"string\" ? {\n\t\tkind: \"color\",\n\t\tcolor: fill\n\t} : fill;\n}\nvar Shape = class extends Node {\n\tfill;\n\tstroke;\n\tstrokeWidth;\n\tsketch;\n\tsketchFill;\n\tsketchSeed;\n\treveal;\n\tconstructor(props = {}) {\n\t\tsuper(props);\n\t\tthis.fill = initProp(signal(\"\"), props.fill);\n\t\tthis.stroke = initProp(signal(\"\"), props.stroke);\n\t\tthis.strokeWidth = initProp(signal(0), props.strokeWidth);\n\t\tthis.reveal = initProp(signal(1), props.reveal);\n\t\tthis.registerTarget(\"fill\", this.fill, [\"color\", \"paint\"]);\n\t\tthis.registerTarget(\"stroke\", this.stroke, \"color\");\n\t\tthis.registerTarget(\"strokeWidth\", this.strokeWidth, \"number\");\n\t\tthis.registerTarget(\"reveal\", this.reveal, \"number\");\n\t\tif (props.sketch) validateSketch(props.sketch);\n\t\tif (props.sketchFill) validateHachure(props.sketchFill);\n\t\tif (props.sketchFill && !props.sketch) emitDevWarning(`${this.id !== void 0 ? `'${this.id}': ` : \"\"}sketchFill is ignored without sketch \u2014 hachure fill is drawn only by the sketch renderer. Set a sketch style (e.g. { kind: 'pencil' }) to see it.`);\n\t\tthis.sketch = props.sketch;\n\t\tthis.sketchFill = props.sketchFill;\n\t\tthis.sketchSeed = props.sketchSeed ?? (this.id !== void 0 ? hashStr(this.id) : 0);\n\t}\n\tdraw(out) {\n\t\tconst segs = this.pathSegs();\n\t\tif (this.sketch) return this.drawSketch(out, segs);\n\t\tconst path = out.resource({\n\t\t\tkind: \"path\",\n\t\t\tsegs\n\t\t});\n\t\tconst fill = this.fill();\n\t\tif (fill) out.push({\n\t\t\top: \"fillPath\",\n\t\t\tpath,\n\t\t\tpaint: toPaint(fill)\n\t\t});\n\t\tconst stroke = this.stroke();\n\t\tconst width = this.strokeWidth();\n\t\tif (stroke && width > 0) {\n\t\t\tconst reveal = this.reveal();\n\t\t\tif (reveal < 1) emitDrawOnStroke(out, segs, {\n\t\t\t\tkind: \"color\",\n\t\t\t\tcolor: stroke\n\t\t\t}, { width }, reveal);\n\t\t\telse out.push({\n\t\t\t\top: \"strokePath\",\n\t\t\t\tpath,\n\t\t\t\tpaint: {\n\t\t\t\t\tkind: \"color\",\n\t\t\t\t\tcolor: stroke\n\t\t\t\t},\n\t\t\t\tstroke: { width }\n\t\t\t});\n\t\t}\n\t}\n\t/** Hand-drawn render: solid fill (if any) under roughened, multi-pass strokes.\n\t* The seed is consumed fresh each draw, so re-evaluation is byte-identical. */\n\tdrawSketch(out, segs) {\n\t\tconst rng = random(this.sketchSeed >>> 0);\n\t\tconst fill = this.fill();\n\t\tif (fill) {\n\t\t\tconst path = out.resource({\n\t\t\t\tkind: \"path\",\n\t\t\t\tsegs\n\t\t\t});\n\t\t\tout.push({\n\t\t\t\top: \"fillPath\",\n\t\t\t\tpath,\n\t\t\t\tpaint: toPaint(fill)\n\t\t\t});\n\t\t}\n\t\tconst { strokes, resolved } = roughen(segs, this.sketch, rng);\n\t\tconst ink = this.stroke() || (typeof fill === \"string\" ? fill : \"\") || \"#000000\";\n\t\tif (this.sketchFill) {\n\t\t\tconst clipPath = out.resource({\n\t\t\t\tkind: \"path\",\n\t\t\t\tsegs\n\t\t\t});\n\t\t\tout.push({ op: \"save\" });\n\t\t\tout.push({\n\t\t\t\top: \"clip\",\n\t\t\t\tpath: clipPath,\n\t\t\t\trule: \"nonzero\"\n\t\t\t});\n\t\t\tconst hatch = hachureLines(segs, this.sketchFill, rng);\n\t\t\tif (hatch.length > 0) {\n\t\t\t\tconst hp = out.resource({\n\t\t\t\t\tkind: \"path\",\n\t\t\t\t\tsegs: hatch\n\t\t\t\t});\n\t\t\t\tout.push({\n\t\t\t\t\top: \"strokePath\",\n\t\t\t\t\tpath: hp,\n\t\t\t\t\tpaint: {\n\t\t\t\t\t\tkind: \"color\",\n\t\t\t\t\t\tcolor: ink\n\t\t\t\t\t},\n\t\t\t\t\tstroke: {\n\t\t\t\t\t\twidth: Math.max(1, resolved.width * .5),\n\t\t\t\t\t\tcap: \"round\"\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tout.push({ op: \"restore\" });\n\t\t}\n\t\tconst reveal = this.reveal();\n\t\tconst drawOn = reveal < 1;\n\t\tfor (const passSegs of strokes) {\n\t\t\tif (passSegs.length === 0) continue;\n\t\t\tif (drawOn) {\n\t\t\t\temitDrawOnStroke(out, passSegs, {\n\t\t\t\t\tkind: \"color\",\n\t\t\t\t\tcolor: ink\n\t\t\t\t}, {\n\t\t\t\t\twidth: resolved.width,\n\t\t\t\t\tcap: \"round\",\n\t\t\t\t\tjoin: \"round\"\n\t\t\t\t}, reveal);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst path = out.resource({\n\t\t\t\tkind: \"path\",\n\t\t\t\tsegs: passSegs\n\t\t\t});\n\t\t\tout.push({\n\t\t\t\top: \"strokePath\",\n\t\t\t\tpath,\n\t\t\t\tpaint: {\n\t\t\t\t\tkind: \"color\",\n\t\t\t\t\tcolor: ink\n\t\t\t\t},\n\t\t\t\tstroke: {\n\t\t\t\t\twidth: resolved.width,\n\t\t\t\t\tcap: \"round\",\n\t\t\t\t\tjoin: \"round\",\n\t\t\t\t\t...resolved.dash ? { dash: resolved.dash } : {}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n};\nfunction initProp(sig, init) {\n\tif (typeof init === \"function\") sig.bindSource(init);\n\telse if (init !== void 0) sig.set(init);\n\treturn sig;\n}\n/** Split a stroke path into its subpaths (each starting at an 'M'). */\nfunction splitContours(segs) {\n\tconst out = [];\n\tlet cur = null;\n\tfor (const s of segs) if (s[0] === \"M\") {\n\t\tcur = [s];\n\t\tout.push(cur);\n\t} else if (cur) cur.push(s);\n\treturn out;\n}\n/**\n* Emit a stroke that \"draws on\" by arc length \u2014 a retreating dash PER CONTOUR\n* (canvas restarts the dash phase at each subpath move, so each contour reveals\n* from its own start). Shared by sketched and plain stroked shapes.\n*/\nfunction emitDrawOnStroke(out, segs, paint, baseStroke, reveal) {\n\tfor (const contour of splitContours(segs)) {\n\t\tconst len = flatten(contour).reduce((s, p) => s + arcLength(p), 0);\n\t\tconst path = out.resource({\n\t\t\tkind: \"path\",\n\t\t\tsegs: contour\n\t\t});\n\t\tout.push({\n\t\t\top: \"strokePath\",\n\t\t\tpath,\n\t\t\tpaint,\n\t\t\tstroke: {\n\t\t\t\t...baseStroke,\n\t\t\t\tdash: [len, len],\n\t\t\t\tdashOffset: len * (1 - reveal)\n\t\t\t}\n\t\t});\n\t}\n}\n/**\n* Coerce a `Path.data` init to a `PathValue`: an array of contour objects\n* passes through; anything else (a string, a number, \u2026) is a construction-time\n* error. SVG `d` strings are NOT parsed here \u2014 that parser lives on the\n* tree-shakeable `@glissade/scene/path` subpath (kept off the base embed), so a\n* string `data` throws a clear error pointing at `pathFromSvg(d)`. Returns `[]`\n* for `undefined` (the empty-path default).\n*/\nfunction coercePathData(data) {\n\tif (data === void 0) return [];\n\tif (Array.isArray(data)) {\n\t\tif (data.every((c) => typeof c === \"object\" && c !== null && Array.isArray(c.v) && Array.isArray(c.in) && Array.isArray(c.out))) return data;\n\t}\n\tthrow new TypeError(`Path.data expects PathValue (PathContour[]); for an SVG path 'd' string, parse it with pathFromSvg(d) from \"@glissade/scene/path\" (or window.glissade.pathFromSvg in the browser bundle)`);\n}\n/**\n* `PathSeg[]` \u2192 `PathValue` (Lottie vertex contours) \u2014 the inverse of\n* `Path.pathSegs`, so geometry from `roundedRectSegs` / `sketchStrokes` /\n* `flatten` can be placed on a `Path` node (to morph, motion-path, or draw-on\n* it). C/Q become an anchor + relative in/out tangents; L is a zero-tangent\n* vertex; E samples to vertices; Z closes the contour, folding the closing\n* tangent back onto the first vertex. Round-trips C-contours exactly.\n*/\nfunction pathFromSegs(segs) {\n\tconst contours = [];\n\tlet c = null;\n\tconst push = (v, inT = [0, 0], outT = [0, 0]) => {\n\t\tc.v.push(v);\n\t\tc.in.push(inT);\n\t\tc.out.push(outT);\n\t};\n\tconst last = () => c.v[c.v.length - 1];\n\tfor (const s of segs) switch (s[0]) {\n\t\tcase \"M\":\n\t\t\tc = {\n\t\t\t\tclosed: false,\n\t\t\t\tv: [[s[1], s[2]]],\n\t\t\t\tin: [[0, 0]],\n\t\t\t\tout: [[0, 0]]\n\t\t\t};\n\t\t\tcontours.push(c);\n\t\t\tbreak;\n\t\tcase \"L\":\n\t\t\tif (c) push([s[1], s[2]]);\n\t\t\tbreak;\n\t\tcase \"C\":\n\t\t\tif (c) {\n\t\t\t\tconst p0 = last();\n\t\t\t\tc.out[c.out.length - 1] = [s[1] - p0[0], s[2] - p0[1]];\n\t\t\t\tpush([s[5], s[6]], [s[3] - s[5], s[4] - s[6]]);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"Q\":\n\t\t\tif (c) {\n\t\t\t\tconst p0 = last();\n\t\t\t\tconst qx = s[1];\n\t\t\t\tconst qy = s[2];\n\t\t\t\tconst px = s[3];\n\t\t\t\tconst py = s[4];\n\t\t\t\tc.out[c.out.length - 1] = [2 / 3 * (qx - p0[0]), 2 / 3 * (qy - p0[1])];\n\t\t\t\tpush([px, py], [2 / 3 * (qx - px), 2 / 3 * (qy - py)]);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"E\":\n\t\t\tif (c) {\n\t\t\t\tconst [, cx, cy, rx, ry, rot, a0, a1] = s;\n\t\t\t\tconst cos = Math.cos(rot);\n\t\t\t\tconst sin = Math.sin(rot);\n\t\t\t\tfor (let k = 1; k <= 16; k++) {\n\t\t\t\t\tconst ang = a0 + (a1 - a0) * (k / 16);\n\t\t\t\t\tconst ex = rx * Math.cos(ang);\n\t\t\t\t\tconst ey = ry * Math.sin(ang);\n\t\t\t\t\tpush([cx + ex * cos - ey * sin, cy + ex * sin + ey * cos]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"Z\":\n\t\t\tif (c) {\n\t\t\t\tc.closed = true;\n\t\t\t\tconst f = c.v[0];\n\t\t\t\tconst l = last();\n\t\t\t\tif (c.v.length > 1 && Math.abs(f[0] - l[0]) < 1e-9 && Math.abs(f[1] - l[1]) < 1e-9) {\n\t\t\t\t\tc.in[0] = c.in[c.in.length - 1];\n\t\t\t\t\tc.v.pop();\n\t\t\t\t\tc.in.pop();\n\t\t\t\t\tc.out.pop();\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t}\n\treturn contours;\n}\nvar Rect = class extends Shape {\n\twidth;\n\theight;\n\t/** Corner radius; clamped to half the smaller dimension. radius = h/2 makes a pill. */\n\tcornerRadius;\n\tconstructor(props = {}) {\n\t\tsuper(props);\n\t\tthis.width = initProp(signal(0), props.width);\n\t\tthis.height = initProp(signal(0), props.height);\n\t\tthis.cornerRadius = initProp(signal(0), props.cornerRadius);\n\t\tthis.registerTarget(\"width\", this.width, \"number\");\n\t\tthis.registerTarget(\"height\", this.height, \"number\");\n\t\tthis.registerTarget(\"cornerRadius\", this.cornerRadius, \"number\");\n\t}\n\tintrinsicSize() {\n\t\treturn {\n\t\t\tw: this.width(),\n\t\t\th: this.height()\n\t\t};\n\t}\n\tpathSegs() {\n\t\tconst w = this.width();\n\t\tconst h = this.height();\n\t\tconst r = Math.min(Math.max(0, this.cornerRadius()), w / 2, h / 2);\n\t\treturn roundedRectSegs(-w / 2, -h / 2, w, h, r);\n\t}\n};\nvar Circle = class extends Shape {\n\tradius;\n\tconstructor(props = {}) {\n\t\tsuper(props);\n\t\tthis.radius = initProp(signal(0), props.radius);\n\t\tthis.registerTarget(\"radius\", this.radius, \"number\");\n\t}\n\tintrinsicSize() {\n\t\tconst d = this.radius() * 2;\n\t\treturn {\n\t\t\tw: d,\n\t\t\th: d\n\t\t};\n\t}\n\tpathSegs() {\n\t\tconst r = this.radius();\n\t\treturn [[\n\t\t\t\"E\",\n\t\t\t0,\n\t\t\t0,\n\t\t\tr,\n\t\t\tr,\n\t\t\t0,\n\t\t\t0,\n\t\t\tMath.PI * 2\n\t\t], [\"Z\"]];\n\t}\n};\n/**\n* Arbitrary bezier geometry \u2014 the Lottie-import landing spot and the target\n* of native path morphs. Coordinates are node-local (the node origin is\n* wherever the author put 0,0); flow placement uses the control-point bounds.\n*/\nvar Path = class extends Shape {\n\tdata;\n\tconstructor(props = {}) {\n\t\tsuper(props);\n\t\tconst init = props.data;\n\t\tconst coerced = typeof init === \"function\" ? () => coercePathData(init()) : init !== void 0 ? coercePathData(init) : void 0;\n\t\tthis.data = initProp(signal([]), coerced);\n\t\tthis.registerTarget(\"d\", this.data, \"path\");\n\t}\n\t/** Control-point bounding box (conservative: contains the true curve). */\n\tbounds() {\n\t\tlet minX = Infinity;\n\t\tlet minY = Infinity;\n\t\tlet maxX = -Infinity;\n\t\tlet maxY = -Infinity;\n\t\tfor (const c of this.data()) for (let i = 0; i < c.v.length; i++) {\n\t\t\tconst vx = c.v[i][0];\n\t\t\tconst vy = c.v[i][1];\n\t\t\tconst candidates = [\n\t\t\t\t[vx, vy],\n\t\t\t\t[vx + c.in[i][0], vy + c.in[i][1]],\n\t\t\t\t[vx + c.out[i][0], vy + c.out[i][1]]\n\t\t\t];\n\t\t\tfor (const p of candidates) {\n\t\t\t\tif (p[0] < minX) minX = p[0];\n\t\t\t\tif (p[1] < minY) minY = p[1];\n\t\t\t\tif (p[0] > maxX) maxX = p[0];\n\t\t\t\tif (p[1] > maxY) maxY = p[1];\n\t\t\t}\n\t\t}\n\t\tif (minX > maxX) return {\n\t\t\tminX: 0,\n\t\t\tminY: 0,\n\t\t\tmaxX: 0,\n\t\t\tmaxY: 0\n\t\t};\n\t\treturn {\n\t\t\tminX,\n\t\t\tminY,\n\t\t\tmaxX,\n\t\t\tmaxY\n\t\t};\n\t}\n\tintrinsicSize() {\n\t\tconst b = this.bounds();\n\t\treturn {\n\t\t\tw: b.maxX - b.minX,\n\t\t\th: b.maxY - b.minY\n\t\t};\n\t}\n\t/** Geometry is node-local, not center-anchored: offset to the box's actual top-left. */\n\tdrawOffset() {\n\t\tconst b = this.bounds();\n\t\treturn {\n\t\t\tx: b.minX,\n\t\t\ty: b.minY\n\t\t};\n\t}\n\tpathSegs() {\n\t\tconst segs = [];\n\t\tfor (const c of this.data()) {\n\t\t\tconst n = c.v.length;\n\t\t\tif (n === 0) continue;\n\t\t\tsegs.push([\n\t\t\t\t\"M\",\n\t\t\t\tc.v[0][0],\n\t\t\t\tc.v[0][1]\n\t\t\t]);\n\t\t\tfor (let i = 0; i < n - 1; i++) segs.push([\n\t\t\t\t\"C\",\n\t\t\t\tc.v[i][0] + c.out[i][0],\n\t\t\t\tc.v[i][1] + c.out[i][1],\n\t\t\t\tc.v[i + 1][0] + c.in[i + 1][0],\n\t\t\t\tc.v[i + 1][1] + c.in[i + 1][1],\n\t\t\t\tc.v[i + 1][0],\n\t\t\t\tc.v[i + 1][1]\n\t\t\t]);\n\t\t\tif (c.closed && n > 1) {\n\t\t\t\tsegs.push([\n\t\t\t\t\t\"C\",\n\t\t\t\t\tc.v[n - 1][0] + c.out[n - 1][0],\n\t\t\t\t\tc.v[n - 1][1] + c.out[n - 1][1],\n\t\t\t\t\tc.v[0][0] + c.in[0][0],\n\t\t\t\t\tc.v[0][1] + c.in[0][1],\n\t\t\t\t\tc.v[0][0],\n\t\t\t\t\tc.v[0][1]\n\t\t\t\t]);\n\t\t\t\tsegs.push([\"Z\"]);\n\t\t\t}\n\t\t}\n\t\treturn segs;\n\t}\n};\nvar ImageNode = class extends Node {\n\t/** Marks this node as referencing a kind 'image' timeline asset (\u00A72.3). */\n\tstatic assetKind = \"image\";\n\tassetId;\n\twidth;\n\theight;\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.assetId = props.assetId;\n\t\tthis.width = initProp(signal(0), props.width);\n\t\tthis.height = initProp(signal(0), props.height);\n\t\tthis.registerTarget(\"width\", this.width, \"number\");\n\t\tthis.registerTarget(\"height\", this.height, \"number\");\n\t}\n\tintrinsicSize() {\n\t\treturn {\n\t\t\tw: this.width(),\n\t\t\th: this.height()\n\t\t};\n\t}\n\tdraw(out) {\n\t\tconst w = this.width();\n\t\tconst h = this.height();\n\t\tif (w <= 0 || h <= 0) return;\n\t\tconst image = out.resource({\n\t\t\tkind: \"image\",\n\t\t\tassetId: this.assetId\n\t\t});\n\t\tout.push({\n\t\t\top: \"drawImage\",\n\t\t\timage,\n\t\t\tdst: {\n\t\t\t\tx: -w / 2,\n\t\t\t\ty: -h / 2,\n\t\t\t\tw,\n\t\t\t\th\n\t\t\t}\n\t\t});\n\t}\n};\n/**\n* Pure given a warmed VideoFrameSource (\u00A73.8): emit() does only the\n* frame-indexed media-time arithmetic \u2014 mediaT = trimStart + (t - at) * rate \u2014\n* and references the exact source-grid frame; backends resolve it.\n*/\nvar Video = class extends Node {\n\t/** Marks this node as referencing a kind 'video' timeline asset (\u00A73.8). */\n\tstatic assetKind = \"video\";\n\tassetId;\n\tat;\n\ttrimStart;\n\tplaybackRate;\n\tclipDuration;\n\tsourceFps;\n\twidth;\n\theight;\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.assetId = props.assetId;\n\t\tthis.at = props.at ?? 0;\n\t\tthis.trimStart = props.trimStart ?? 0;\n\t\tthis.playbackRate = props.playbackRate ?? 1;\n\t\tthis.clipDuration = props.clipDuration;\n\t\tthis.sourceFps = props.sourceFps;\n\t\tthis.width = initProp(signal(0), props.width);\n\t\tthis.height = initProp(signal(0), props.height);\n\t\tthis.registerTarget(\"width\", this.width, \"number\");\n\t\tthis.registerTarget(\"height\", this.height, \"number\");\n\t}\n\t/** Frame-indexed media time for timeline time t; null when outside the clip. */\n\tmediaTime(t) {\n\t\tconst local = (t - this.at) * this.playbackRate;\n\t\tif (local < 0) return null;\n\t\tif (this.clipDuration !== void 0 && t - this.at >= this.clipDuration) return null;\n\t\tconst mediaT = this.trimStart + local;\n\t\tif (this.sourceFps !== void 0) return Math.floor(mediaT * this.sourceFps + 1e-9) / this.sourceFps;\n\t\treturn mediaT;\n\t}\n\tdraw(out, ctx) {\n\t\tconst mediaT = this.mediaTime(ctx.time);\n\t\tif (mediaT === null) return;\n\t\tconst w = this.width();\n\t\tconst h = this.height();\n\t\tif (w <= 0 || h <= 0) return;\n\t\tconst image = out.resource({\n\t\t\tkind: \"videoFrame\",\n\t\t\tassetId: this.assetId,\n\t\t\tmediaT\n\t\t});\n\t\tout.push({\n\t\t\top: \"drawImage\",\n\t\t\timage,\n\t\t\tdst: {\n\t\t\t\tx: -w / 2,\n\t\t\t\ty: -h / 2,\n\t\t\t\tw,\n\t\t\t\th\n\t\t\t}\n\t\t});\n\t}\n};\nvar Text = class extends Node {\n\ttext;\n\tfill;\n\tfontSize;\n\tfontFamily;\n\tfontWeight;\n\tfontStyle;\n\talign;\n\twidth;\n\tlineHeight;\n\treveal;\n\tconstructor(props = {}) {\n\t\tsuper(props);\n\t\tthis.text = initProp(signal(\"\"), props.text);\n\t\tthis.fill = initProp(signal(\"#000000\"), props.fill);\n\t\tthis.fontSize = initProp(signal(16), props.fontSize);\n\t\tthis.fontFamily = props.fontFamily ?? \"sans-serif\";\n\t\tthis.fontWeight = props.fontWeight ?? 400;\n\t\tthis.fontStyle = props.fontStyle ?? \"normal\";\n\t\tthis.align = props.align ?? \"left\";\n\t\tthis.width = initProp(signal(0), props.width);\n\t\tthis.lineHeight = props.lineHeight ?? 1.25;\n\t\tthis.reveal = initProp(signal(Number.POSITIVE_INFINITY), props.reveal);\n\t\tthis.registerTarget(\"width\", this.width, \"number\");\n\t\tthis.registerTarget(\"text\", this.text, \"string\");\n\t\tthis.registerTarget(\"fill\", this.fill, \"color\");\n\t\tthis.registerTarget(\"fontSize\", this.fontSize, \"number\");\n\t\tthis.registerTarget(\"reveal\", this.reveal, \"number\");\n\t}\n\tintrinsicSize(measurer) {\n\t\tconst text = this.text();\n\t\tif (!text) return {\n\t\t\tw: 0,\n\t\t\th: 0\n\t\t};\n\t\tconst font = {\n\t\t\tfamily: this.fontFamily,\n\t\t\tsize: this.fontSize(),\n\t\t\tweight: this.fontWeight,\n\t\t\t...this.fontStyle === \"italic\" ? { style: \"italic\" } : {}\n\t\t};\n\t\tconst maxWidth = this.width();\n\t\tconst lines = breakLines(text, font, maxWidth > 0 ? maxWidth : void 0, measurer);\n\t\tconst widest = Math.max(...lines.map((l) => quantize(measurer.measureText(l, font).width)), 0);\n\t\treturn {\n\t\t\tw: maxWidth > 0 ? maxWidth : widest,\n\t\t\th: quantize(font.size * this.lineHeight) * lines.length\n\t\t};\n\t}\n\t/** Text draws from a baseline origin at its align edge, not a center (\u00A73.6). */\n\tdrawOffset(measurer) {\n\t\tconst m = measurer ?? this.measurerSource?.() ?? fallbackMeasurer();\n\t\tconst size = this.intrinsicSize(m);\n\t\tconst font = {\n\t\t\tfamily: this.fontFamily,\n\t\t\tsize: this.fontSize(),\n\t\t\tweight: this.fontWeight,\n\t\t\t...this.fontStyle === \"italic\" ? { style: \"italic\" } : {}\n\t\t};\n\t\tconst firstLine = breakLines(this.text(), font, this.width() > 0 ? this.width() : void 0, m)[0] ?? \"\";\n\t\tconst ascent = m.measureText(firstLine, font).ascent;\n\t\treturn {\n\t\t\tx: this.align === \"left\" ? 0 : this.align === \"center\" ? -size.w / 2 : -size.w,\n\t\t\ty: -ascent\n\t\t};\n\t}\n\t/**\n\t* The wrapped box {w, h}, measured with the scene's active measurer \u2014 the\n\t* same numbers Layout flows with, public so bindings never hand-calculate\n\t* text dimensions (e.g. underline width = () => title.measuredSize().w).\n\t*/\n\tmeasuredSize(measurer) {\n\t\treturn this.intrinsicSize(measurer ?? this.measurerSource?.() ?? fallbackMeasurer());\n\t}\n\t/**\n\t* Per-line ink boxes in this node's DRAW space (origin = first baseline at\n\t* the align edge), from the same breakLines pass that draws. Pull-based:\n\t* re-measures when text/font/width animate. Blank lines (from '\\n\\n')\n\t* produce no box. The substrate for highlights, underlines, per-line\n\t* reveals, selections.\n\t*/\n\tlineBoxes(measurer) {\n\t\tconst m = measurer ?? this.measurerSource?.() ?? fallbackMeasurer();\n\t\tconst text = this.text();\n\t\tif (!text) return [];\n\t\tconst font = {\n\t\t\tfamily: this.fontFamily,\n\t\t\tsize: this.fontSize(),\n\t\t\tweight: this.fontWeight,\n\t\t\t...this.fontStyle === \"italic\" ? { style: \"italic\" } : {}\n\t\t};\n\t\tconst maxWidth = this.width();\n\t\tconst lines = breakLines(text, font, maxWidth > 0 ? maxWidth : void 0, m);\n\t\tconst step = quantize(font.size * this.lineHeight);\n\t\tconst boxes = [];\n\t\tfor (let i = 0; i < lines.length; i++) {\n\t\t\tconst line = lines[i];\n\t\t\tif (!line) continue;\n\t\t\tconst met = m.measureText(line, font);\n\t\t\tconst w = quantize(met.width);\n\t\t\tconst x = this.align === \"left\" ? 0 : this.align === \"center\" ? -w / 2 : -w;\n\t\t\tboxes.push({\n\t\t\t\ttext: line,\n\t\t\t\tx,\n\t\t\t\ty: i * step - met.ascent,\n\t\t\t\tw,\n\t\t\t\th: met.ascent + met.descent\n\t\t\t});\n\t\t}\n\t\treturn boxes;\n\t}\n\t/**\n\t* Per-word ink boxes within each laid-out line \u2014 the SAME segmentation the\n\t* breaker flows (Intl.Segmenter boundaries, punctuation glued), positioned\n\t* by cumulative prefix advances so cross-word kerning is exact and word\n\t* widths sum to the line's width. Whitespace contributes advance but no\n\t* box. Pair index-wise with a narration manifest's word timestamps for\n\t* karaoke; draw your own rects for sub-line multi-color token work.\n\t*/\n\twordBoxes(measurer) {\n\t\tconst m = measurer ?? this.measurerSource?.() ?? fallbackMeasurer();\n\t\tconst text = this.text();\n\t\tif (!text) return [];\n\t\tconst font = {\n\t\t\tfamily: this.fontFamily,\n\t\t\tsize: this.fontSize(),\n\t\t\tweight: this.fontWeight,\n\t\t\t...this.fontStyle === \"italic\" ? { style: \"italic\" } : {}\n\t\t};\n\t\tconst maxWidth = this.width();\n\t\tconst lines = breakLines(text, font, maxWidth > 0 ? maxWidth : void 0, m);\n\t\tconst step = quantize(font.size * this.lineHeight);\n\t\tconst boxes = [];\n\t\tfor (let i = 0; i < lines.length; i++) {\n\t\t\tconst line = lines[i];\n\t\t\tif (!line) continue;\n\t\t\tconst met = m.measureText(line, font);\n\t\t\tconst lineW = quantize(met.width);\n\t\t\tconst lineX = this.align === \"left\" ? 0 : this.align === \"center\" ? -lineW / 2 : -lineW;\n\t\t\tconst y = i * step - met.ascent;\n\t\t\tconst h = met.ascent + met.descent;\n\t\t\tlet prefix = \"\";\n\t\t\tfor (const seg of segmentWords(line)) {\n\t\t\t\tconst start = prefix;\n\t\t\t\tprefix += seg;\n\t\t\t\tconst word = seg.trim();\n\t\t\t\tif (word === \"\") continue;\n\t\t\t\tconst lead = seg.length - seg.trimStart().length;\n\t\t\t\tconst before = m.measureText(start + seg.slice(0, lead), font).width;\n\t\t\t\tconst after = m.measureText(start + seg.trimEnd(), font).width;\n\t\t\t\tboxes.push({\n\t\t\t\t\ttext: word,\n\t\t\t\t\tline: i,\n\t\t\t\t\tx: lineX + before,\n\t\t\t\t\ty,\n\t\t\t\t\tw: after - before,\n\t\t\t\t\th\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn boxes;\n\t}\n\t/**\n\t* The laid-out grapheme stream the typewriter reveal advances over \u2014 every\n\t* grapheme of every wrapped line, in reading order (soft-wrap whitespace is\n\t* dropped by the breaker, exactly as drawn, so draw/revealHead/revealSchedule\n\t* all agree). Pull-based; its length is the `reveal` count that shows\n\t* everything. Author a per-keystroke staircase straight off it:\n\t*\n\t* const g = title.graphemes();\n\t* track('title/reveal', 'number',\n\t* g.map((_, i) => key(t0 + i * 0.05, i + 1, { interp: 'hold' })));\n\t*/\n\tgraphemes(measurer) {\n\t\tconst m = measurer ?? this.measurerSource?.() ?? fallbackMeasurer();\n\t\tconst text = this.text();\n\t\tif (!text) return [];\n\t\tconst font = {\n\t\t\tfamily: this.fontFamily,\n\t\t\tsize: this.fontSize(),\n\t\t\tweight: this.fontWeight,\n\t\t\t...this.fontStyle === \"italic\" ? { style: \"italic\" } : {}\n\t\t};\n\t\tconst maxWidth = this.width();\n\t\tconst lines = breakLines(text, font, maxWidth > 0 ? maxWidth : void 0, m);\n\t\tconst out = [];\n\t\tfor (const line of lines) for (const g of segmentGraphemes(line)) out.push(g);\n\t\treturn out;\n\t}\n\t/**\n\t* Draw-space position of the reveal head \u2014 the caret point just after the\n\t* last revealed grapheme, for the current `reveal` value. Drives TextCursor;\n\t* honours align and wrap exactly like wordBoxes(). At reveal 0 it sits at the\n\t* start of the first line; fully revealed, at the end of the last line.\n\t*/\n\trevealHead(measurer) {\n\t\tconst m = measurer ?? this.measurerSource?.() ?? fallbackMeasurer();\n\t\tconst font = {\n\t\t\tfamily: this.fontFamily,\n\t\t\tsize: this.fontSize(),\n\t\t\tweight: this.fontWeight,\n\t\t\t...this.fontStyle === \"italic\" ? { style: \"italic\" } : {}\n\t\t};\n\t\tconst maxWidth = this.width();\n\t\tconst lines = breakLines(this.text(), font, maxWidth > 0 ? maxWidth : void 0, m);\n\t\tconst step = quantize(font.size * this.lineHeight);\n\t\tconst total = lines.reduce((n, l) => n + segmentGraphemes(l).length, 0);\n\t\tconst revealRaw = this.reveal();\n\t\tconst shown = Math.max(0, Math.min(Number.isFinite(revealRaw) ? Math.floor(revealRaw) : total, total));\n\t\tlet remaining = shown;\n\t\tlet last = {\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\th: 0,\n\t\t\tline: 0,\n\t\t\tindex: shown\n\t\t};\n\t\tfor (let i = 0; i < lines.length; i++) {\n\t\t\tconst line = lines[i] ?? \"\";\n\t\t\tconst met = m.measureText(line, font);\n\t\t\tconst lineW = quantize(met.width);\n\t\t\tconst lineX = this.align === \"left\" ? 0 : this.align === \"center\" ? -lineW / 2 : -lineW;\n\t\t\tconst y = i * step - met.ascent;\n\t\t\tconst h = met.ascent + met.descent;\n\t\t\tconst gs = segmentGraphemes(line);\n\t\t\tif (remaining <= gs.length) return {\n\t\t\t\tx: lineX + (remaining <= 0 ? 0 : m.measureText(gs.slice(0, remaining).join(\"\"), font).width),\n\t\t\t\ty,\n\t\t\t\th,\n\t\t\t\tline: i,\n\t\t\t\tindex: shown\n\t\t\t};\n\t\t\tremaining -= gs.length;\n\t\t\tlast = {\n\t\t\t\tx: lineX + met.width,\n\t\t\t\ty,\n\t\t\t\th,\n\t\t\t\tline: i,\n\t\t\t\tindex: shown\n\t\t\t};\n\t\t}\n\t\treturn last;\n\t}\n\tdraw(out, ctx) {\n\t\tconst text = this.text();\n\t\tif (!text) return;\n\t\tconst font = {\n\t\t\tfamily: this.fontFamily,\n\t\t\tsize: this.fontSize(),\n\t\t\tweight: this.fontWeight,\n\t\t\t...this.fontStyle === \"italic\" ? { style: \"italic\" } : {}\n\t\t};\n\t\tconst maxWidth = this.width();\n\t\tconst lines = breakLines(text, font, maxWidth > 0 ? maxWidth : void 0, ctx.measurer);\n\t\tconst step = quantize(font.size * this.lineHeight);\n\t\tconst revealRaw = this.reveal();\n\t\tconst masked = Number.isFinite(revealRaw);\n\t\tlet remaining = masked ? Math.max(0, Math.floor(revealRaw)) : 0;\n\t\tfor (let i = 0; i < lines.length; i++) {\n\t\t\tconst line = lines[i];\n\t\t\tif (!line) continue;\n\t\t\tif (!masked) {\n\t\t\t\tout.push({\n\t\t\t\t\top: \"fillText\",\n\t\t\t\t\ttext: line,\n\t\t\t\t\tfont,\n\t\t\t\t\tpaint: {\n\t\t\t\t\t\tkind: \"color\",\n\t\t\t\t\t\tcolor: this.fill()\n\t\t\t\t\t},\n\t\t\t\t\tx: 0,\n\t\t\t\t\ty: i * step,\n\t\t\t\t\t...this.align !== \"left\" ? { align: this.align } : {}\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (remaining <= 0) break;\n\t\t\tconst gs = segmentGraphemes(line);\n\t\t\tconst show = Math.min(remaining, gs.length);\n\t\t\tremaining -= show;\n\t\t\tif (show === gs.length) out.push({\n\t\t\t\top: \"fillText\",\n\t\t\t\ttext: line,\n\t\t\t\tfont,\n\t\t\t\tpaint: {\n\t\t\t\t\tkind: \"color\",\n\t\t\t\t\tcolor: this.fill()\n\t\t\t\t},\n\t\t\t\tx: 0,\n\t\t\t\ty: i * step,\n\t\t\t\t...this.align !== \"left\" ? { align: this.align } : {}\n\t\t\t});\n\t\t\telse {\n\t\t\t\tconst lineW = quantize(ctx.measurer.measureText(line, font).width);\n\t\t\t\tconst lineX = this.align === \"left\" ? 0 : this.align === \"center\" ? -lineW / 2 : -lineW;\n\t\t\t\tout.push({\n\t\t\t\t\top: \"fillText\",\n\t\t\t\t\ttext: gs.slice(0, show).join(\"\"),\n\t\t\t\t\tfont,\n\t\t\t\t\tpaint: {\n\t\t\t\t\t\tkind: \"color\",\n\t\t\t\t\t\tcolor: this.fill()\n\t\t\t\t\t},\n\t\t\t\t\tx: lineX,\n\t\t\t\t\ty: i * step\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n};\n/**\n* Pure per-grapheme schedule from a Text and its reveal track \u2014 geometry from\n* the text, timing from the track. A grapheme's time is the first key whose\n* value reveals it (value >= index + 1); graphemes the track never reaches are\n* omitted. The single source SFX keystroke-sync consumes (keystrokeClips()):\n* one click per mark at `at: mark.time`, char-class policy (skip space/newline,\n* pick a sample) decided downstream from `mark.grapheme`.\n*/\nfunction revealSchedule(text, reveal, measurer) {\n\tconst m = measurer ?? text.measurerSource?.() ?? fallbackMeasurer();\n\tconst src = text.text();\n\tif (!src) return [];\n\tconst font = {\n\t\tfamily: text.fontFamily,\n\t\tsize: text.fontSize(),\n\t\tweight: text.fontWeight,\n\t\t...text.fontStyle === \"italic\" ? { style: \"italic\" } : {}\n\t};\n\tconst maxWidth = text.width();\n\tconst lines = breakLines(src, font, maxWidth > 0 ? maxWidth : void 0, m);\n\tconst step = quantize(font.size * text.lineHeight);\n\tconst keys = reveal.keys;\n\tconst marks = [];\n\tlet k = 0;\n\tfor (let li = 0; li < lines.length; li++) {\n\t\tconst line = lines[li];\n\t\tif (!line) continue;\n\t\tconst met = m.measureText(line, font);\n\t\tconst lineW = quantize(met.width);\n\t\tconst lineX = text.align === \"left\" ? 0 : text.align === \"center\" ? -lineW / 2 : -lineW;\n\t\tconst y = li * step - met.ascent;\n\t\tlet prefix = \"\";\n\t\tfor (const g of segmentGraphemes(line)) {\n\t\t\tprefix += g;\n\t\t\tconst need = k + 1;\n\t\t\tlet time = Number.POSITIVE_INFINITY;\n\t\t\tfor (const key of keys) if (key.value >= need) {\n\t\t\t\ttime = key.t;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (Number.isFinite(time)) marks.push({\n\t\t\t\tcharIndex: k,\n\t\t\t\tgrapheme: g,\n\t\t\t\ttime,\n\t\t\t\tx: lineX + m.measureText(prefix, font).width,\n\t\t\t\ty,\n\t\t\t\tline: li\n\t\t\t});\n\t\t\tk++;\n\t\t}\n\t}\n\treturn marks;\n}\n//#endregion\nexport { segmentGraphemes as A, collapseReplacer as B, Node as C, estimatingMeasurer as D, breakLines as E, filtersToCanvasFilter as F, IDENTITY as G, formatDisplayDiff as H, glow as I, invert as J, applyToPoint as K, validateFilters as L, setDefaultMeasurer as M, FilterValidationError as N, fallbackMeasurer as O, createDisplayListBuilder as P, DL_SNAPSHOT_VERSION as R, validateSketch as S, MEASURE_QUANTUM_PX as T, parseDisplaySnapshot as U, diffDisplayLists as V, serializeDisplayList as W, multiply as X, matEquals as Y, hashStr as _, Path as a, sketchStrokes as b, Video as c, revealSchedule as d, roundedRectSegs as f, hachureLines as g, flatten as h, ImageNode as i, segmentWords as j, quantize as k, coercePathData as l, arcLength as m, Custom as n, Rect as o, SketchValidationError as p, fromTRS as q, Group as r, Text as s, Circle as t, pathFromSegs as u, resolveSketch as v, resolveAnchor as w, validateHachure as x, roughen as y, DlSnapshotError as z };\n", "//#region src/layoutEngine.ts\nvar LayoutEngineMissingError = class extends Error {\n\tconstructor() {\n\t\tsuper(\"a Layout node was evaluated but no LayoutEngine is registered \u2014 await loadYogaLayoutEngine() from '@glissade/scene/layout' before mounting/rendering (the engine is wasm and loads async; evaluate() never awaits, \u00A72.5)\");\n\t\tthis.name = \"LayoutEngineMissingError\";\n\t}\n};\nlet engine = null;\nfunction setLayoutEngine(e) {\n\tengine = e;\n}\nfunction getLayoutEngine() {\n\treturn engine;\n}\nfunction requireLayoutEngine() {\n\tif (!engine) throw new LayoutEngineMissingError();\n\treturn engine;\n}\n//#endregion\nexport { setLayoutEngine as i, getLayoutEngine as n, requireLayoutEngine as r, LayoutEngineMissingError as t };\n", "import { A as segmentGraphemes, B as collapseReplacer, C as Node, D as estimatingMeasurer, E as breakLines, F as filtersToCanvasFilter, G as IDENTITY, H as formatDisplayDiff, I as glow, J as invert, K as applyToPoint, L as validateFilters, M as setDefaultMeasurer, N as FilterValidationError, O as fallbackMeasurer, P as createDisplayListBuilder, R as DL_SNAPSHOT_VERSION, S as validateSketch, T as MEASURE_QUANTUM_PX, U as parseDisplaySnapshot, V as diffDisplayLists, W as serializeDisplayList, X as multiply, Y as matEquals, _ as hashStr, a as Path, b as sketchStrokes, c as Video, d as revealSchedule, f as roundedRectSegs, g as hachureLines, h as flatten, i as ImageNode, j as segmentWords, k as quantize, l as coercePathData, m as arcLength, n as Custom, o as Rect, p as SketchValidationError, q as fromTRS, r as Group, s as Text, t as Circle, u as pathFromSegs, v as resolveSketch, w as resolveAnchor, x as validateHachure, y as roughen, z as DlSnapshotError } from \"./nodes.js\";\nimport { i as setLayoutEngine, n as getLayoutEngine, r as requireLayoutEngine, t as LayoutEngineMissingError } from \"./layoutEngine.js\";\nimport { bindTimeline, buildFontRegistry, compileTimeline, createPlayhead, emitDevWarning, evaluateAt, key, lerpColor, oklabToRgba, parseCmap, parseColor, random, rgbaToOklab, signal, stagger, track, validateFonts, vec2Signal } from \"@glissade/core\";\n//#region src/taxonomy.ts\n/**\n* The CLOSED node taxonomy (DESIGN.md \u00A73.1): exactly nine built-in node TYPES.\n* This frozen tuple is the lock \u2014 the enumerated, testable form of the \"small,\n* closed set\" guarantee. Adding a tenth name is an intentional, reviewed spec\n* change, not an accident.\n*\n* Most names map to an exported scene-node class from the base index\n* (Group/Rect/Circle/Path/Text/Image/Video/Custom). 'Layout' is the lone\n* exception: the Layout node lives in the separately-budgeted './layout' entry\n* (\u00A73.2, Yoga), so the NAME is in the taxonomy but the class is not pulled into\n* the base index \u2014 keeping the base scene bundle free of Yoga.\n*/\nconst NODE_TAXONOMY = [\n\t\"Group\",\n\t\"Rect\",\n\t\"Circle\",\n\t\"Path\",\n\t\"Text\",\n\t\"Image\",\n\t\"Video\",\n\t\"Layout\",\n\t\"Custom\"\n];\n//#endregion\n//#region src/highlight.ts\n/**\n* Marker-style text highlight: per-line rounded rects behind a Text node's\n* laid-out lines, swept by ONE 0\u21921 progress track in reading order. Lines\n* come from Text.lineBoxes() each frame, so the marker re-flows with wrap\n* width, font, and text animation \u2014 and the line count is dynamic because\n* the rects are draw() output, not child nodes. Pure data, both backends,\n* golden-coverable. For karaoke, key '<id>/progress' from narrate's\n* word timestamps.\n*/\nvar Highlight = class extends Node {\n\ttarget;\n\tcolor;\n\tprogress;\n\tpadding;\n\tcornerRadius;\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.target = props.text;\n\t\tthis.color = init$2(signal(\"#ffe066\"), props.color);\n\t\tthis.progress = init$2(signal(1), props.progress);\n\t\tthis.padding = props.padding ?? [4, 2];\n\t\tthis.cornerRadius = props.cornerRadius ?? 4;\n\t\tthis.registerTarget(\"progress\", this.progress, \"number\");\n\t\tthis.registerTarget(\"color\", this.color, \"color\");\n\t}\n\tdraw(out, ctx) {\n\t\tconst progress = Math.min(1, Math.max(0, this.progress()));\n\t\tif (progress <= 0) return;\n\t\tconst [px, py] = this.padding;\n\t\tconst boxes = this.target.lineBoxes(ctx.measurer).map((b) => ({\n\t\t\tx: b.x - px,\n\t\t\ty: b.y - py,\n\t\t\tw: b.w + 2 * px,\n\t\t\th: b.h + 2 * py\n\t\t}));\n\t\tconst total = boxes.reduce((sum, b) => sum + b.w, 0);\n\t\tif (total <= 0) return;\n\t\tconst tm = this.target.localMatrix();\n\t\tif (!matEquals(tm, IDENTITY)) out.push({\n\t\t\top: \"transform\",\n\t\t\tm: tm\n\t\t});\n\t\tconst color = this.color();\n\t\tlet remaining = progress * total;\n\t\tfor (const b of boxes) {\n\t\t\tconst fill = Math.min(b.w, remaining);\n\t\t\tremaining -= fill;\n\t\t\tif (fill <= 0) break;\n\t\t\tconst r = Math.min(this.cornerRadius, fill / 2, b.h / 2);\n\t\t\tconst path = out.resource({\n\t\t\t\tkind: \"path\",\n\t\t\t\tsegs: roundedRectSegs(b.x, b.y, fill, b.h, r)\n\t\t\t});\n\t\t\tout.push({\n\t\t\t\top: \"fillPath\",\n\t\t\t\tpath,\n\t\t\t\tpaint: {\n\t\t\t\t\tkind: \"color\",\n\t\t\t\t\tcolor\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (remaining <= 0) break;\n\t\t}\n\t}\n};\n/** `children: [highlight(title, { color: '#ffe066' }), title]` \u2014 marker behind the text. */\nfunction highlight(text, props = {}) {\n\treturn new Highlight({\n\t\t...props,\n\t\ttext\n\t});\n}\nfunction init$2(sig, v) {\n\tif (typeof v === \"function\") sig.bindSource(v);\n\telse if (v !== void 0) sig.set(v);\n\treturn sig;\n}\n//#endregion\n//#region src/textCursor.ts\n/**\n* Terminal-style caret for a Text node's typewriter reveal: a thin vertical bar\n* at Text.revealHead(), so it rides the reveal head as graphemes appear and\n* re-flows with wrap width, font, and align. Pure data, both backends,\n* golden-coverable \u2014 the bar is draw() output, not a child node. Place this as\n* a sibling of the Text (same parent) so it shares its transform.\n*\n* Blink is a pure function of ctx.time: on for the first half of each period.\n* With solidWhileTyping (default), the caret stays solid while the reveal is\n* still advancing (reveal < total) and only blinks once the text is fully\n* shown \u2014 the familiar \"types solid, then blinks waiting\" terminal feel.\n*/\nvar TextCursor = class extends Node {\n\ttarget;\n\tblinkPeriod;\n\tblinkPhase;\n\tsolidWhileTyping;\n\tcaretWidth;\n\tfill;\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.target = props.text;\n\t\tthis.blinkPeriod = props.blinkPeriod ?? 1.06;\n\t\tthis.blinkPhase = props.blinkPhase ?? 0;\n\t\tthis.solidWhileTyping = props.solidWhileTyping ?? true;\n\t\tthis.caretWidth = props.width ?? 2;\n\t\tthis.fill = init$1(signal(\"\"), props.fill);\n\t\tthis.registerTarget(\"fill\", this.fill, \"color\");\n\t}\n\tdraw(out, ctx) {\n\t\tconst head = this.target.revealHead(ctx.measurer);\n\t\tif (head.h <= 0) return;\n\t\tlet on = true;\n\t\tconst total = this.target.graphemes(ctx.measurer).length;\n\t\tconst typing = head.index < total;\n\t\tif (!(this.solidWhileTyping && typing)) {\n\t\t\tconst period = this.blinkPeriod > 0 ? this.blinkPeriod : 1;\n\t\t\ton = ((ctx.time - this.blinkPhase) % period + period) % period < period / 2;\n\t\t}\n\t\tif (!on) return;\n\t\tconst tm = this.target.localMatrix();\n\t\tif (!matEquals(tm, IDENTITY)) out.push({\n\t\t\top: \"transform\",\n\t\t\tm: tm\n\t\t});\n\t\tconst color = this.fill() || this.target.fill();\n\t\tconst path = out.resource({\n\t\t\tkind: \"path\",\n\t\t\tsegs: roundedRectSegs(head.x, head.y, this.caretWidth, head.h, 0)\n\t\t});\n\t\tout.push({\n\t\t\top: \"fillPath\",\n\t\t\tpath,\n\t\t\tpaint: {\n\t\t\t\tkind: \"color\",\n\t\t\t\tcolor\n\t\t\t}\n\t\t});\n\t}\n};\n/** `children: [title, textCursor(title)]` \u2014 a caret riding the reveal head. */\nfunction textCursor(text, props = {}) {\n\treturn new TextCursor({\n\t\t...props,\n\t\ttext\n\t});\n}\nfunction init$1(sig, v) {\n\tif (typeof v === \"function\") sig.bindSource(v);\n\telse if (v !== void 0) sig.set(v);\n\treturn sig;\n}\n//#endregion\n//#region src/typewriter.ts\n/**\n* Edit-event-aware typewriter authoring. `Text.reveal` is monotonic sugar for\n* the type-only case; real terminal cold-opens type, delete, and retype. Since\n* `Text.text` is itself a signal, the honest substrate is a hold-key STRING\n* track that carries the visible text after every keystroke \u2014 including\n* backspaces. This compiles a compact edit script into that track plus a\n* per-keystroke schedule (deletes included) for keystroke SFX.\n*\n* Drive `Text.text` with the returned track and leave `reveal` at its default\n* (Infinity): the whole current string shows, so deletion just works, and\n* `textCursor` rides the end of the live text with no extra wiring.\n*/\nconst DEFAULT_PER_CHAR = .06;\n/**\n* Compile an edit script into a string track + keystroke schedule.\n*\n* const tw = typewriter('prompt/text', [\n* { type: 'make it pop' },\n* { hold: 0.4 },\n* { delete: 3 }, // backspace 'pop'\n* { type: 'sing' },\n* ]);\n* // tracks: [tw.track, ...]; keystroke SFX: keystrokeClips(tw.marks, ...)\n*/\nfunction typewriter(target, edits, opts = {}) {\n\tconst start = opts.start ?? 0;\n\tconst globalPer = opts.perChar ?? DEFAULT_PER_CHAR;\n\tconst gap = opts.gap ?? 0;\n\tlet t = start;\n\tconst shown = [];\n\tconst keys = [key(start, \"\", { interp: \"hold\" })];\n\tconst marks = [];\n\tconst steps = [];\n\tfor (let ei = 0; ei < edits.length; ei++) {\n\t\tconst edit = edits[ei];\n\t\tconst stepStart = t;\n\t\tconst per = edit.perChar ?? globalPer;\n\t\tif (edit.type !== void 0) for (const g of segmentGraphemes(edit.type)) {\n\t\t\tt += per;\n\t\t\tshown.push(g);\n\t\t\tconst value = shown.join(\"\");\n\t\t\tkeys.push(key(t, value, { interp: \"hold\" }));\n\t\t\tmarks.push({\n\t\t\t\ttime: t,\n\t\t\t\tkind: \"insert\",\n\t\t\t\tgrapheme: g,\n\t\t\t\tvalue\n\t\t\t});\n\t\t}\n\t\tif (edit.delete !== void 0) for (let i = 0; i < edit.delete && shown.length > 0; i++) {\n\t\t\tt += per;\n\t\t\tconst removed = shown.pop();\n\t\t\tconst value = shown.join(\"\");\n\t\t\tkeys.push(key(t, value, { interp: \"hold\" }));\n\t\t\tmarks.push({\n\t\t\t\ttime: t,\n\t\t\t\tkind: \"delete\",\n\t\t\t\tgrapheme: removed,\n\t\t\t\tvalue\n\t\t\t});\n\t\t}\n\t\tif (edit.hold !== void 0) t += edit.hold;\n\t\tsteps.push({\n\t\t\tindex: ei,\n\t\t\tstart: stepStart,\n\t\t\tend: t,\n\t\t\tvalue: shown.join(\"\")\n\t\t});\n\t\tif (gap > 0 && ei < edits.length - 1) t += gap;\n\t}\n\treturn {\n\t\ttrack: track(target, \"string\", keys),\n\t\tmarks,\n\t\tsteps,\n\t\tduration: t\n\t};\n}\n//#endregion\n//#region src/each.ts\n/**\n* `each()` \u2014 deterministic parametric instancing (0.13 clip-tier sugar). Pure\n* BUILD-TIME fan-out: it generates N scene nodes from a factory, lays them out\n* in aspect-fraction space, and (optionally) staggers a motion `clip` across\n* them \u2014 compiling to ordinary keyed `Track[]` plus a `Group` of children with\n* stable `${id}/${i}` ids. Nothing executes at play time; the emitted tracks are\n* byte-indistinguishable from hand-authored ones, so goldens hold by\n* construction and every `--workers` export shard reconstructs the same id set.\n*\n* The clip runtime is imported TYPE-ONLY (the `Clip` instance the author passes\n* carries its own `apply`), so `each` adds no clip bytes to the embed: the\n* `@glissade/core/clips` runtime lands in the consumer's bundle, never scene's.\n*/\nvar EachError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"EachError\";\n\t}\n};\n/**\n* Fold a base seed and an index into a fresh per-clone seed. splitmix-style\n* avalanche so adjacent indices decorrelate (a bare `seed + i` would hand\n* near-identical streams to neighbours).\n*/\nfunction mix(seed, i) {\n\tlet h = (seed ^ Math.imul(i + 1, 2654435769)) >>> 0;\n\th = Math.imul(h ^ h >>> 16, 569420461);\n\th = Math.imul(h ^ h >>> 15, 1935289751);\n\treturn (h ^ h >>> 15) >>> 0;\n}\n/**\n* Salt folded into the motion-jitter seed so the per-index jitter rng\n* decorrelates from `ctx.rng` (the factory rng). Both axes derive from\n* `mix(baseSeed, i)`; without a distinct salt they would be the SAME stream,\n* so a factory that draws from `ctx.rng` and a `jitter` callback would see\n* correlated \"independent\" randomness. An arbitrary fixed odd constant.\n*/\nconst JITTER_SALT = 1779033703;\n/** Resolve a built-in layout (or call the escape-hatch fn) to a fraction. */\nfunction placeAt(layout, i, n) {\n\tif (typeof layout === \"function\") return layout(i, n);\n\tswitch (layout.kind) {\n\t\tcase \"row\": {\n\t\t\tconst gap = layout.gap ?? (n > 1 ? 1 / (n - 1) : 0);\n\t\t\tconst align = layout.align ?? .5;\n\t\t\tconst x0 = .5 - gap * (n - 1) / 2;\n\t\t\treturn [n === 1 ? .5 : x0 + gap * i, align];\n\t\t}\n\t\tcase \"column\": {\n\t\t\tconst gap = layout.gap ?? (n > 1 ? 1 / (n - 1) : 0);\n\t\t\tconst align = layout.align ?? .5;\n\t\t\tconst y0 = .5 - gap * (n - 1) / 2;\n\t\t\treturn [align, n === 1 ? .5 : y0 + gap * i];\n\t\t}\n\t\tcase \"grid\": {\n\t\t\tconst cols = layout.cols;\n\t\t\tif (!(cols >= 1)) throw new EachError(`grid layout needs cols >= 1 (got ${cols})`);\n\t\t\tconst rows = layout.rows ?? Math.ceil(n / cols);\n\t\t\tconst order = layout.order ?? \"row\";\n\t\t\tconst col = order === \"row\" ? i % cols : Math.floor(i / rows);\n\t\t\tconst row = order === \"row\" ? Math.floor(i / cols) : i % rows;\n\t\t\tconst gapX = layout.gapX ?? (cols > 1 ? 1 / (cols - 1) : 0);\n\t\t\tconst gapY = layout.gapY ?? (rows > 1 ? 1 / (rows - 1) : 0);\n\t\t\tconst spanX = gapX * (cols - 1);\n\t\t\tconst spanY = gapY * (rows - 1);\n\t\t\treturn [cols === 1 ? .5 : .5 - spanX / 2 + gapX * col, rows === 1 ? .5 : .5 - spanY / 2 + gapY * row];\n\t\t}\n\t\tcase \"ring\": {\n\t\t\tconst radius = layout.radius ?? .5;\n\t\t\tconst [cx, cy] = layout.center ?? [.5, .5];\n\t\t\tconst theta = (layout.startAngle ?? -Math.PI / 2) + (layout.sweep ?? Math.PI * 2) * (n === 0 ? 0 : i / n);\n\t\t\treturn [cx + radius * Math.cos(theta), cy + radius * Math.sin(theta)];\n\t\t}\n\t}\n}\n/** Compile a `distribute` mode + numeric gap into a stagger delay fn. */\nfunction distributeFn(distribute, gap, n) {\n\tconst mid = (n - 1) / 2;\n\tswitch (distribute) {\n\t\tcase \"from-center\": return (i) => Math.abs(i - mid) * gap;\n\t\tcase \"from-edges\": return (i) => (mid - Math.abs(i - mid)) * gap;\n\t\tcase \"delay\": return (i) => i * gap;\n\t}\n}\n/** Resolve the motion's per-index delay into a plain `(i) => seconds` fn. */\nfunction staggerFn(motion, n) {\n\tconst s = motion.stagger ?? 0;\n\tif (typeof s === \"function\") return s;\n\treturn distributeFn(motion.distribute ?? \"delay\", s, n);\n}\n/**\n* Generate `n` clones from `factory`, lay them out, and (optionally) stagger a\n* motion clip across them.\n*\n* const grid = each(9, (i) => new Rect({ width: 40, height: 40, fill: '#9ef0c0' }), {\n* id: 'card',\n* layout: { kind: 'grid', cols: 3 },\n* box: { w: 600, h: 360 },\n* motion: { clip: popIn(), stagger: 0.08, distribute: 'from-center' },\n* });\n* // scene children: [grid.node]; timeline tracks: [...grid.tracks]\n*/\nfunction each(n, factory, opts) {\n\tif (!Number.isInteger(n) || n < 0) throw new EachError(`each() count must be a non-negative integer (got ${n})`);\n\tconst baseSeed = (opts.seed ?? hashStr(opts.id)) >>> 0;\n\tconst box = opts.box;\n\tconst [ox, oy] = box?.origin ?? [0, 0];\n\tconst children = [];\n\tconst places = [];\n\tconst seen = /* @__PURE__ */ new Set();\n\tfor (let i = 0; i < n; i++) {\n\t\tconst id = `${opts.id}/${i}`;\n\t\tconst frac = placeAt(opts.layout, i, n);\n\t\tconst ctx = {\n\t\t\ti,\n\t\t\tn,\n\t\t\tid,\n\t\t\tplace: frac,\n\t\t\trng: random(mix(baseSeed, i)),\n\t\t\tseed: baseSeed\n\t\t};\n\t\tconst child = factory(i, ctx);\n\t\tif (!(child instanceof Node)) throw new EachError(`each() factory must return a Node for index ${i} (got ${typeof child})`);\n\t\tif (seen.has(child)) throw new EachError(`each() factory returned the same Node instance for index ${i} \u2014 the factory must construct a new node per index (it is called once per clone)`);\n\t\tseen.add(child);\n\t\tif (child.id === void 0) child.id = id;\n\t\telse if (child.id !== id) throw new EachError(`each() factory set id '${child.id}' on index ${i}, but each owns the id namespace \u2014 leave it unset so it becomes '${id}'`);\n\t\tchildren.push(child);\n\t\tplaces.push(box ? {\n\t\t\tfrac,\n\t\t\tpx: [ox + frac[0] * box.w, oy + frac[1] * box.h]\n\t\t} : { frac });\n\t}\n\tconst node = new Group({\n\t\tid: opts.id,\n\t\tchildren\n\t});\n\tconst tracks = [];\n\tlet end = opts.motion?.startSec ?? 0;\n\tif (opts.motion) {\n\t\tconst m = opts.motion;\n\t\tconst start = m.startSec ?? 0;\n\t\tconst at = staggerFn(m, n);\n\t\tfor (let i = 0; i < n; i++) {\n\t\t\tconst rngI = random(mix(mix(baseSeed, i), JITTER_SALT));\n\t\t\tconst overrides = m.jitter?.(i, rngI, n);\n\t\t\tconst applyOpts = {\n\t\t\t\t...overrides !== void 0 ? { overrides } : {},\n\t\t\t\t...m.speed !== void 0 ? { speed: m.speed } : {}\n\t\t\t};\n\t\t\tconst r = m.clip.apply(`${opts.id}/${i}`, start + at(i), applyOpts);\n\t\t\ttracks.push(...r.tracks);\n\t\t\tif (r.end > end) end = r.end;\n\t\t}\n\t}\n\treturn {\n\t\tnode,\n\t\tchildren,\n\t\ttracks,\n\t\tend,\n\t\tplaces\n\t};\n}\n//#endregion\n//#region src/drawOn.ts\n/**\n* Whiteboard kit: one-call \"draw this shape on\" tracks. A stroked or sketched\n* shape's `reveal` (0..1) animates it stroking itself on; `drawOn` builds that\n* track, and `drawOnEach` cascades a list of shapes one after another (the\n* classic whiteboard sequence) via the core `stagger` helper.\n*/\n/** A `<id>/reveal` track running 0\u21921 \u2014 point a stroked/sketched shape at it to\n* hand-draw itself on. `target` is the node id. */\nfunction drawOn(target, opts = {}) {\n\tconst start = opts.start ?? 0;\n\tconst duration = opts.duration ?? 1;\n\tconst ease = opts.ease ?? \"easeInOutCubic\";\n\treturn track(`${target}/reveal`, \"number\", [key(start, 0), key(start + duration, 1, ease)]);\n}\n/** Cascade several shapes drawing themselves on, one after another \u2014 the\n* whiteboard sequence. Returns one reveal track per id, staggered by `delay`. */\nfunction drawOnEach(targets, opts = {}) {\n\tconst delay = opts.delay ?? (opts.duration ?? 1) * .6;\n\treturn stagger(targets.map((t) => drawOn(t, opts)), delay);\n}\n//#endregion\n//#region src/guards.ts\n/**\n* Render-mode determinism guards (DESIGN.md \u00A75.5). During export the banned\n* globals are patched \u2014 for the synchronous scope of a single evaluate() call \u2014\n* to throw (CLI/CI) or warn-once-then-delegate (browser/dev), then restored.\n* Scoped to evaluate() re-entry, never installed globally, so timers and clocks\n* outside the read phase are untouched. This backstops the static eslint rules\n* (`@glissade/eslint-plugin`) for the cases lint can't see (closures, indirect\n* calls, third-party code reachable from a node's emit()).\n*/\nvar DeterminismViolationError = class extends Error {\n\tconstructor(api) {\n\t\tsuper(`'${api}' was called inside evaluate() \u2014 scene code must be a pure function of time (\u00A75.5). Read ctx.time/frame, use the seeded random(seed) from @glissade/core, and resolve assets before rendering.`);\n\t\tthis.name = \"DeterminismViolationError\";\n\t}\n};\nfunction bannedSlots() {\n\tconst g = globalThis;\n\tconst slots = [\n\t\t{\n\t\t\ttarget: Math,\n\t\t\tkey: \"random\",\n\t\t\tlabel: \"Math.random\"\n\t\t},\n\t\t{\n\t\t\ttarget: Date,\n\t\t\tkey: \"now\",\n\t\t\tlabel: \"Date.now\"\n\t\t},\n\t\t{\n\t\t\ttarget: g,\n\t\t\tkey: \"setTimeout\",\n\t\t\tlabel: \"setTimeout\"\n\t\t},\n\t\t{\n\t\t\ttarget: g,\n\t\t\tkey: \"setInterval\",\n\t\t\tlabel: \"setInterval\"\n\t\t}\n\t];\n\tif (typeof performance !== \"undefined\") slots.push({\n\t\ttarget: performance,\n\t\tkey: \"now\",\n\t\tlabel: \"performance.now\"\n\t});\n\tif (typeof g[\"requestAnimationFrame\"] === \"function\") slots.push({\n\t\ttarget: g,\n\t\tkey: \"requestAnimationFrame\",\n\t\tlabel: \"requestAnimationFrame\"\n\t});\n\treturn slots;\n}\n/**\n* Run `fn` (a single synchronous evaluate()) with the banned globals guarded.\n* `throw` rejects any call (CLI/CI); `warn` warns once per API then delegates\n* to the real implementation (browser/dev); `off` is a no-op. Globals are\n* always restored, even if `fn` throws. `fn` MUST be synchronous \u2014 patching is\n* only valid for the sync read phase, never across an await.\n*/\nfunction withDeterminismGuards(mode, fn) {\n\tif (mode === \"off\") return fn();\n\tconst slots = bannedSlots();\n\tconst saved = slots.map((s) => s.target[s.key]);\n\tconst warned = /* @__PURE__ */ new Set();\n\tslots.forEach((s, i) => {\n\t\ts.target[s.key] = (...args) => {\n\t\t\tif (mode === \"throw\") throw new DeterminismViolationError(s.label);\n\t\t\tif (!warned.has(s.label)) {\n\t\t\t\twarned.add(s.label);\n\t\t\t\temitDevWarning(`${s.label} called inside evaluate() \u2014 nondeterministic, not reproducible on export (\u00A75.5)`);\n\t\t\t}\n\t\t\treturn saved[i].apply(s.target, args);\n\t\t};\n\t});\n\ttry {\n\t\treturn fn();\n\t} finally {\n\t\tslots.forEach((s, i) => {\n\t\t\ts.target[s.key] = saved[i];\n\t\t});\n\t}\n}\n//#endregion\n//#region src/scene.ts\n/**\n* Scene assembly + the canonical evaluate(scene, timeline, t) (DESIGN.md \u00A72.5,\n* \u00A73.1): pure, total, deterministic \u2014 driver writes the playhead (sanctioned\n* entry write), then a pull-only read phase collects the DisplayList.\n*/\nvar DuplicateNodeIdError = class extends Error {\n\tconstructor(id) {\n\t\tsuper(`duplicate node id '${id}' \u2014 explicit ids must be unique (\u00A73.1/\u00A76.5)`);\n\t\tthis.name = \"DuplicateNodeIdError\";\n\t}\n};\nvar ReservedNodeIdError = class extends Error {\n\tconstructor(id) {\n\t\tsuper(`node id '${id}' uses the reserved '~' prefix \u2014 that namespace is for structural fallback ids (\u00A76.5), which are inspection-only and never track targets; choose another id`);\n\t\tthis.name = \"ReservedNodeIdError\";\n\t}\n};\nfunction indexNodes(root, into, measurerSource) {\n\troot.measurerSource = measurerSource;\n\tif (root.id !== void 0) {\n\t\tif (root.id.startsWith(\"~\")) throw new ReservedNodeIdError(root.id);\n\t\tif (into.has(root.id)) throw new DuplicateNodeIdError(root.id);\n\t\tinto.set(root.id, root);\n\t}\n\tif (root instanceof Group) for (const child of root.children) indexNodes(child, into, measurerSource);\n}\nfunction createScene(init) {\n\tconst root = new Group({\n\t\tid: \"__root\",\n\t\tchildren: init.children\n\t});\n\tconst nodes = /* @__PURE__ */ new Map();\n\tconst playhead = createPlayhead();\n\tconst measurer = signal(null);\n\tindexNodes(root, nodes, () => measurer() ?? fallbackMeasurer());\n\treturn {\n\t\troot,\n\t\tnodes,\n\t\tsize: init.size,\n\t\tplayhead,\n\t\tresolveTarget: (target) => {\n\t\t\tfor (let slash = target.lastIndexOf(\"/\"); slash > 0; slash = target.lastIndexOf(\"/\", slash - 1)) {\n\t\t\t\tconst node = nodes.get(target.slice(0, slash));\n\t\t\t\tif (node) return node.resolveTarget(target.slice(slash + 1));\n\t\t\t}\n\t\t},\n\t\tsetTextMeasurer: (m) => {\n\t\t\tmeasurer.set(m);\n\t\t},\n\t\tget textMeasurer() {\n\t\t\treturn measurer.peek() ?? fallbackMeasurer();\n\t\t}\n\t};\n}\nconst bindings = /* @__PURE__ */ new WeakMap();\nfunction bindScene(scene, doc) {\n\tlet perScene = bindings.get(scene);\n\tif (!perScene) {\n\t\tperScene = /* @__PURE__ */ new WeakMap();\n\t\tbindings.set(scene, perScene);\n\t}\n\tlet entry = perScene.get(doc);\n\tif (!entry) {\n\t\tconst compiled = compileTimeline(doc);\n\t\tentry = {\n\t\t\tcompiled,\n\t\t\tbound: bindTimeline(compiled, scene.resolveTarget, scene.playhead)\n\t\t};\n\t\tperScene.set(doc, entry);\n\t}\n\treturn entry;\n}\n/**\n* The non-negotiable contract (\u00A72.5): same (scene, timeline, t) \u2192 identical\n* DisplayList, in any call order. Never awaits; asset readiness is the\n* caller's precondition.\n*/\nfunction evaluate(scene, doc, t) {\n\tbindScene(scene, doc);\n\tconst fps = doc.fps;\n\tconst ctx = {\n\t\ttime: t,\n\t\tframe: fps !== void 0 ? Math.round(t * fps) : -1,\n\t\tmeasurer: scene.textMeasurer\n\t};\n\treturn evaluateAt(scene.playhead, t, () => {\n\t\tconst out = createDisplayListBuilder(scene.size);\n\t\tscene.root.emit(out, ctx);\n\t\treturn out.finish();\n\t});\n}\n//#endregion\n//#region src/cacheColdAudit.ts\n/** Stable string of a DisplayList for comparison (opaque resources collapse to a marker). */\nfunction hashDisplayList(dl) {\n\treturn JSON.stringify(dl, collapseReplacer);\n}\n/**\n* Evaluate two fresh scenes from `createScene` at `t` and confirm the\n* DisplayLists are byte-identical. Returns `{ ok: true }` for a pure scene, or\n* `{ ok: false, node }` naming the first divergent node. DEV-only \u2014 never on\n* the render hot path.\n*/\nfunction auditCacheCold(createScene, doc, t) {\n\tconst warm = createScene();\n\tconst cold = createScene();\n\tconst a = evaluate(warm, doc, t);\n\tconst b = evaluate(cold, doc, t);\n\tif (hashDisplayList(a) === hashDisplayList(b)) return { ok: true };\n\tconst frame = doc.fps !== void 0 ? Math.round(t * doc.fps) : -1;\n\tconst ctxA = {\n\t\ttime: t,\n\t\tframe,\n\t\tmeasurer: warm.textMeasurer\n\t};\n\tconst ctxB = {\n\t\ttime: t,\n\t\tframe,\n\t\tmeasurer: cold.textMeasurer\n\t};\n\tlet groupFallback;\n\tfor (const [id, nodeA] of warm.nodes) {\n\t\tconst nodeB = cold.nodes.get(id);\n\t\tif (!nodeB) return {\n\t\t\tok: false,\n\t\t\tnode: id\n\t\t};\n\t\tconst ea = createDisplayListBuilder(warm.size);\n\t\tnodeA.emit(ea, ctxA);\n\t\tconst eb = createDisplayListBuilder(cold.size);\n\t\tnodeB.emit(eb, ctxB);\n\t\tconst dlA = ea.finish();\n\t\tconst dlB = eb.finish();\n\t\tif (hashDisplayList(dlA) === hashDisplayList(dlB)) continue;\n\t\tif (nodeA instanceof Group) {\n\t\t\tgroupFallback ??= id;\n\t\t\tcontinue;\n\t\t}\n\t\tconst first = diffDisplayLists(dlA, dlB).deltas[0];\n\t\treturn {\n\t\t\tok: false,\n\t\t\tnode: id,\n\t\t\t...first !== void 0 ? { delta: first } : {}\n\t\t};\n\t}\n\treturn {\n\t\tok: false,\n\t\t...groupFallback !== void 0 ? { node: groupFallback } : {}\n\t};\n}\n//#endregion\n//#region src/renderBackend.ts\n/** Every filter kind the shared Raster2D interpreter rasterizes (\u00A73.4). */\nconst ALL_FILTER_KINDS = new Set([\n\t\"blur\",\n\t\"drop-shadow\",\n\t\"brightness\",\n\t\"contrast\",\n\t\"saturate\"\n]);\n//#endregion\n//#region src/motionPath.ts\n/**\n* Motion along a path: sample a point (and tangent) at an arc-length position on\n* a PathValue, and drive a node along it over time. The Path node draws/morphs\n* geometry; this is the companion that makes another node \u2014 a cursor, a dot, an\n* arrow \u2014 *travel* that geometry.\n*\n* Sampling is arc-length parameterized (constant speed), so progress 0\u21921 moves\n* evenly instead of bunching at the control points. Pure and deterministic: the\n* table is built once from a static PathValue and `atProgress` is a pure\n* function of progress, so evaluate() stays pure and goldens are byte-stable.\n*/\nconst clamp01 = (v) => v < 0 ? 0 : v > 1 ? 1 : v;\nfunction cubicPoint(p0, p1, p2, p3, t) {\n\tconst mt = 1 - t;\n\tconst a = mt * mt * mt;\n\tconst b = 3 * mt * mt * t;\n\tconst c = 3 * mt * t * t;\n\tconst d = t * t * t;\n\treturn [a * p0[0] + b * p1[0] + c * p2[0] + d * p3[0], a * p0[1] + b * p1[1] + c * p2[1] + d * p3[1]];\n}\n/** PathValue contours \u2192 cubic segments, same v/in/out math as Path.pathSegs. */\nfunction toCubics(path) {\n\tconst out = [];\n\tfor (const ct of path) {\n\t\tconst n = ct.v.length;\n\t\tfor (let i = 0; i < n - 1; i++) out.push([\n\t\t\tct.v[i],\n\t\t\t[ct.v[i][0] + ct.out[i][0], ct.v[i][1] + ct.out[i][1]],\n\t\t\t[ct.v[i + 1][0] + ct.in[i + 1][0], ct.v[i + 1][1] + ct.in[i + 1][1]],\n\t\t\tct.v[i + 1]\n\t\t]);\n\t\tif (ct.closed && n > 1) out.push([\n\t\t\tct.v[n - 1],\n\t\t\t[ct.v[n - 1][0] + ct.out[n - 1][0], ct.v[n - 1][1] + ct.out[n - 1][1]],\n\t\t\t[ct.v[0][0] + ct.in[0][0], ct.v[0][1] + ct.in[0][1]],\n\t\t\tct.v[0]\n\t\t]);\n\t}\n\treturn out;\n}\n/**\n* Build a reusable arc-length sampler. Densely samples each cubic into a\n* cumulative-length polyline (samplesPerSegment, default 32) so `at`/`tangent`\n* are simple span lerps \u2014 smooth enough for motion, no per-call bezier solve.\n*/\nfunction motionPath(path, opts = {}) {\n\tconst steps = Math.max(1, Math.floor(opts.samplesPerSegment ?? 32));\n\tconst cubics = toCubics(path);\n\tconst pts = [];\n\tconst cum = [];\n\tif (cubics.length > 0) {\n\t\tlet prev = cubicPoint(...cubics[0], 0);\n\t\tpts.push(prev);\n\t\tcum.push(0);\n\t\tlet acc = 0;\n\t\tfor (const cub of cubics) for (let k = 1; k <= steps; k++) {\n\t\t\tconst p = cubicPoint(...cub, k / steps);\n\t\t\tacc += Math.hypot(p[0] - prev[0], p[1] - prev[1]);\n\t\t\tpts.push(p);\n\t\t\tcum.push(acc);\n\t\t\tprev = p;\n\t\t}\n\t} else {\n\t\tconst first = path[0]?.v[0];\n\t\tpts.push(first ? [first[0], first[1]] : [0, 0]);\n\t\tcum.push(0);\n\t}\n\tconst total = cum[cum.length - 1];\n\tconst locate = (s) => {\n\t\tif (total <= 0 || s <= 0) return {\n\t\t\ti: 0,\n\t\t\tf: 0\n\t\t};\n\t\tif (s >= total) return {\n\t\t\ti: pts.length - 2,\n\t\t\tf: 1\n\t\t};\n\t\tlet i = 0;\n\t\twhile (i < cum.length - 1 && cum[i + 1] < s) i++;\n\t\tconst span = cum[i + 1] - cum[i];\n\t\treturn {\n\t\t\ti,\n\t\t\tf: span > 0 ? (s - cum[i]) / span : 0\n\t\t};\n\t};\n\tconst at = (s) => {\n\t\tif (pts.length === 1) return [pts[0][0], pts[0][1]];\n\t\tconst { i, f } = locate(s);\n\t\tconst a = pts[i];\n\t\tconst b = pts[i + 1];\n\t\treturn [a[0] + (b[0] - a[0]) * f, a[1] + (b[1] - a[1]) * f];\n\t};\n\tconst tangentAt = (s) => {\n\t\tif (pts.length === 1) return [1, 0];\n\t\tconst { i } = locate(s);\n\t\tconst a = pts[i];\n\t\tconst b = pts[i + 1];\n\t\tconst dx = b[0] - a[0];\n\t\tconst dy = b[1] - a[1];\n\t\tconst len = Math.hypot(dx, dy);\n\t\treturn len > 0 ? [dx / len, dy / len] : [1, 0];\n\t};\n\treturn {\n\t\tlength: total,\n\t\tat,\n\t\ttangentAt,\n\t\tatProgress: (u) => at(clamp01(u) * total),\n\t\ttangentAtProgress: (u) => tangentAt(clamp01(u) * total)\n\t};\n}\n/** Total arc length of a path. */\nfunction pathLength(path) {\n\treturn motionPath(path).length;\n}\n/** Point at arc-length s along a path (clamped to [0, length]). */\nfunction pointAtLength(path, s) {\n\treturn motionPath(path).at(s);\n}\n/**\n* A companion node that drives `target` along `path` as `progress` animates.\n* Owns the target's `position` (and `rotation` when `orient`) via pull-based\n* binding, so there's no eval-order side effect. Add it to the scene (its\n* `progress` is the animatable target); it draws nothing itself.\n*/\nvar FollowPath = class extends Node {\n\ttarget;\n\tprogress;\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.target = props.target;\n\t\tthis.progress = signal(1);\n\t\tif (typeof props.progress === \"function\") this.progress.bindSource(props.progress);\n\t\telse if (props.progress !== void 0) this.progress.set(props.progress);\n\t\tthis.registerTarget(\"progress\", this.progress, \"number\");\n\t\tconst sOpts = props.samplesPerSegment !== void 0 ? { samplesPerSegment: props.samplesPerSegment } : {};\n\t\tconst getPath = props.path instanceof Path ? () => props.path.data() : () => props.path;\n\t\tlet cachedPath = getPath();\n\t\tlet cachedSampler = motionPath(cachedPath, sOpts);\n\t\tconst sampler = () => {\n\t\t\tconst pv = getPath();\n\t\t\tif (pv !== cachedPath) {\n\t\t\t\tcachedPath = pv;\n\t\t\t\tcachedSampler = motionPath(pv, sOpts);\n\t\t\t}\n\t\t\treturn cachedSampler;\n\t\t};\n\t\tprops.target.position.bindSource(() => sampler().atProgress(this.progress()));\n\t\tif (props.orient) {\n\t\t\tconst offset = props.orientOffset ?? 0;\n\t\t\tprops.target.rotation.bindSource(() => {\n\t\t\t\tconst t = sampler().tangentAtProgress(this.progress());\n\t\t\t\treturn Math.atan2(t[1], t[0]) * 180 / Math.PI + offset;\n\t\t\t});\n\t\t}\n\t}\n\tdraw() {}\n};\n/** `children: [route, cursor, followPath(cursor, route, { orient: true })]` \u2014 cursor traces the route.\n* Pass the Path *node* to follow it as it morphs; pass a PathValue for a fixed route. */\nfunction followPath(target, path, props = {}) {\n\treturn new FollowPath({\n\t\t...props,\n\t\ttarget,\n\t\tpath\n\t});\n}\n//#endregion\n//#region src/tokenHighlight.ts\n/**\n* Multi-range token highlight: sub-line ranges over a Text node's wordBoxes,\n* each with its OWN animatable fill/opacity/progress/scale \u2014 four-color\n* category passes, per-token flips, karaoke-with-color. Design answers from\n* downstream production (the NNDL verification ritual):\n* - ranges VALIDATE at construction and THROW on copy drift at draw \u2014 the\n* throw is load-bearing (it catches edited copy that no longer matches);\n* `rematch: true` opts animated text into per-frame re-resolution.\n* - a range spanning a wrap produces one rect per line segment.\n* - string matches are whitespace-stripped consecutive box runs and must end\n* boundary-exact (mid-segment end = error listing the actual segments);\n* `[wordIndex, wordIndex]` ranges sidestep matching entirely.\n*/\nvar TokenMatchError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"TokenMatchError\";\n\t}\n};\nconst stripWs = (s) => s.replace(/\\s+/g, \"\");\n/**\n* Find the Nth whitespace-stripped consecutive run of boxes equal to token.\n* Boundary-exact: a run that diverges mid-segment is not a match; ending\n* mid-segment throws (with the real segment list) rather than half-boxing.\n*/\nfunction matchTokenRun(boxes, token, occurrence = 1) {\n\tconst want = stripWs(token);\n\tif (want.length === 0) throw new TokenMatchError(\"empty token\");\n\tlet seen = 0;\n\tfor (let i = 0; i < boxes.length; i++) {\n\t\tlet acc = \"\";\n\t\tfor (let j = i; j < boxes.length; j++) {\n\t\t\tacc += stripWs(boxes[j].text);\n\t\t\tif (acc === want) {\n\t\t\t\tseen++;\n\t\t\t\tif (seen === occurrence) return [i, j];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (!want.startsWith(acc)) break;\n\t\t}\n\t}\n\tthrow new TokenMatchError(`no match for token '${token}'${occurrence > 1 ? ` (occurrence ${occurrence})` : \"\"} \u2014 segments are [${boxes.map((b) => `'${b.text}'`).join(\", \")}]`);\n}\nvar TokenHighlight = class extends Node {\n\ttarget;\n\tpadding;\n\tcornerRadius;\n\trematch;\n\tranges;\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.target = props.text;\n\t\tthis.padding = props.padding ?? [4, 2];\n\t\tthis.cornerRadius = props.cornerRadius ?? 4;\n\t\tthis.rematch = props.rematch ?? false;\n\t\tconst boxes = this.target.wordBoxes();\n\t\tthis.ranges = props.ranges.map((spec, index) => {\n\t\t\tconst run = this.resolveRun(boxes, spec);\n\t\t\tconst id = spec.id ?? `r${index}`;\n\t\t\tconst r = {\n\t\t\t\tspec,\n\t\t\t\tfill: init(signal(\"#ffe066\"), spec.fill),\n\t\t\t\topacity: init(signal(1), spec.opacity),\n\t\t\t\tprogress: init(signal(1), spec.progress),\n\t\t\t\tscale: init(signal(1), spec.scale),\n\t\t\t\toffset: initVec(vec2Signal([0, 0]), spec.offset),\n\t\t\t\trun,\n\t\t\t\tbound: runText(boxes, run)\n\t\t\t};\n\t\t\tthis.registerTarget(`${id}/fill`, r.fill, \"color\");\n\t\t\tthis.registerTarget(`${id}/opacity`, r.opacity, \"number\");\n\t\t\tthis.registerTarget(`${id}/progress`, r.progress, \"number\");\n\t\t\tthis.registerTarget(`${id}/scale`, r.scale, \"number\");\n\t\t\tthis.registerTarget(`${id}/offset`, r.offset, \"vec2\");\n\t\t\tthis.registerTarget(`${id}/offset.x`, r.offset.x, \"number\");\n\t\t\tthis.registerTarget(`${id}/offset.y`, r.offset.y, \"number\");\n\t\t\treturn r;\n\t\t});\n\t}\n\tresolveRun(boxes, spec) {\n\t\tif (typeof spec.match !== \"string\") {\n\t\t\tconst [from, to] = spec.match;\n\t\t\tif (from < 0 || to >= boxes.length || from > to) throw new TokenMatchError(`word index range [${from}, ${to}] out of bounds (${boxes.length} boxes)`);\n\t\t\treturn [from, to];\n\t\t}\n\t\treturn matchTokenRun(boxes, spec.match, spec.occurrence ?? 1);\n\t}\n\tdraw(out, ctx) {\n\t\tconst boxes = this.target.wordBoxes(ctx.measurer);\n\t\tif (boxes.length === 0) return;\n\t\tconst tm = this.target.localMatrix();\n\t\tconst [px, py] = this.padding;\n\t\tlet pushedTransform = false;\n\t\tfor (const r of this.ranges) {\n\t\t\tconst opacity = r.opacity();\n\t\t\tif (opacity <= 0) continue;\n\t\t\tconst progress = Math.min(1, Math.max(0, r.progress()));\n\t\t\tif (progress <= 0) continue;\n\t\t\tlet run = r.run;\n\t\t\tif (this.rematch && typeof r.spec.match === \"string\") run = matchTokenRun(boxes, r.spec.match, r.spec.occurrence ?? 1);\n\t\t\telse if (runText(boxes, run) !== r.bound) throw new TokenMatchError(`bound token '${r.bound}' no longer matches boxes [${run[0]}, ${run[1]}] \u2014 the text changed (segments now [${boxes.slice(run[0], run[1] + 1).map((b) => `'${b.text}'`).join(\", \")}]); pass rematch: true for animated text`);\n\t\t\tconst lineRects = [];\n\t\t\tfor (let i = run[0]; i <= run[1]; i++) {\n\t\t\t\tconst b = boxes[i];\n\t\t\t\tconst last = lineRects[lineRects.length - 1];\n\t\t\t\tconst cur = i > run[0] && boxes[i - 1].line === b.line ? last : void 0;\n\t\t\t\tif (cur) {\n\t\t\t\t\tcur.w = b.x + b.w + px - cur.x;\n\t\t\t\t\tcur.y = Math.min(cur.y, b.y - py);\n\t\t\t\t\tcur.h = Math.max(cur.h, b.y + b.h + py - cur.y);\n\t\t\t\t} else lineRects.push({\n\t\t\t\t\tx: b.x - px,\n\t\t\t\t\ty: b.y - py,\n\t\t\t\t\tw: b.w + 2 * px,\n\t\t\t\t\th: b.h + 2 * py\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (!pushedTransform && !matEquals(tm, IDENTITY)) {\n\t\t\t\tout.push({\n\t\t\t\t\top: \"transform\",\n\t\t\t\t\tm: tm\n\t\t\t\t});\n\t\t\t\tpushedTransform = true;\n\t\t\t}\n\t\t\tconst grouped = opacity < 1;\n\t\t\tif (grouped) out.push({\n\t\t\t\top: \"pushGroup\",\n\t\t\t\topacity,\n\t\t\t\tblend: \"source-over\",\n\t\t\t\tfilters: []\n\t\t\t});\n\t\t\tconst fill = r.fill();\n\t\t\tconst scale = r.scale();\n\t\t\tconst [ox, oy] = r.offset();\n\t\t\tlet remaining = progress * lineRects.reduce((sum, q) => sum + q.w, 0);\n\t\t\tfor (const q of lineRects) {\n\t\t\t\tconst fillW = Math.min(q.w, remaining);\n\t\t\t\tremaining -= fillW;\n\t\t\t\tif (fillW <= 0) break;\n\t\t\t\tconst cx = q.x + q.w / 2 + ox;\n\t\t\t\tconst cy = q.y + q.h / 2 + oy;\n\t\t\t\tconst w = fillW * scale;\n\t\t\t\tconst h = q.h * scale;\n\t\t\t\tconst x = cx - q.w / 2 * scale;\n\t\t\t\tconst y = cy - h / 2;\n\t\t\t\tconst rad = Math.min(this.cornerRadius, w / 2, h / 2);\n\t\t\t\tconst path = out.resource({\n\t\t\t\t\tkind: \"path\",\n\t\t\t\t\tsegs: roundedRectSegs(x, y, w, h, rad)\n\t\t\t\t});\n\t\t\t\tout.push({\n\t\t\t\t\top: \"fillPath\",\n\t\t\t\t\tpath,\n\t\t\t\t\tpaint: {\n\t\t\t\t\t\tkind: \"color\",\n\t\t\t\t\t\tcolor: fill\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (remaining <= 0) break;\n\t\t\t}\n\t\t\tif (grouped) out.push({ op: \"popGroup\" });\n\t\t}\n\t}\n};\nfunction runText(boxes, run) {\n\treturn boxes.slice(run[0], run[1] + 1).map((b) => stripWs(b.text)).join(\"\");\n}\n/**\n* `children: [tokenHighlight(para, { ranges: [{ match: '$48,200', fill: cat.money }] }), para]`\n* \u2014 each range animates independently via '<id>/<rangeId>/fill|opacity|progress|scale'.\n*/\nfunction tokenHighlight(text, props) {\n\treturn new TokenHighlight({\n\t\t...props,\n\t\ttext\n\t});\n}\nfunction init(sig, v) {\n\tif (typeof v === \"function\") sig.bindSource(v);\n\telse if (v !== void 0) sig.set(v);\n\treturn sig;\n}\nfunction initVec(sig, v) {\n\tif (typeof v === \"function\") sig.bindSource(v);\n\telse if (v !== void 0) sig.set(v);\n\treturn sig;\n}\n//#endregion\n//#region src/fontUsage.ts\n/**\n* Scene \u2192 font-validation bridge (DESIGN.md \u00A73.6). Core owns the AssetRef,\n* FontRegistry, cmap reader, and the pure validation; this module owns the\n* node-walk (which only `scene` can do) and the I/O seam that loads a font\n* face's bytes so core stays DOM/Node-free.\n*\n* `collectTextUsages` walks every Text node and reads the FULL `.text()` (not\n* the reveal-masked prefix) \u2014 coverage is a property of the authored content,\n* independent of the playhead, so it stays out of the pure evaluate() path.\n*/\n/** Walk `scene` for Text nodes; one usage per node carrying its full text. */\nfunction collectTextUsages(scene) {\n\tconst out = [];\n\tconst visit = (node) => {\n\t\tif (node instanceof Text) {\n\t\t\tconst text = node.text();\n\t\t\tif (text) out.push({\n\t\t\t\tfamily: node.fontFamily,\n\t\t\t\ttext\n\t\t\t});\n\t\t}\n\t\tif (node instanceof Group) for (const child of node.children) visit(child);\n\t};\n\tvisit(scene.root);\n\treturn out;\n}\n/** The node-id of a track target ('<nodeId>/<prop.path>' \u2192 '<nodeId>'). */\nfunction nodeIdOf(target) {\n\tconst slash = target.indexOf(\"/\");\n\treturn slash >= 0 ? target.slice(0, slash) : target;\n}\n/**\n* Collect font usages from the POST-localize document's STRING tracks (FIX 3,\n* 0.14 canary). For every `'string'` track whose target node is a Text node,\n* emit one usage per distinct localized KEY VALUE under that node's fontFamily \u2014\n* so a localized CJK message bound to a Latin-only font surfaces as an uncovered\n* glyph. `collectTextUsages` only sees the authored BASE `node.text()`, which is\n* resolved BEFORE the localized string tracks bind, so it misses this.\n*/\nfunction collectLocalizedTextUsages(scene, doc) {\n\tconst out = [];\n\tfor (const tr of doc.tracks) {\n\t\tif (tr.type !== \"string\") continue;\n\t\tconst node = scene.nodes.get(nodeIdOf(tr.target));\n\t\tif (!(node instanceof Text)) continue;\n\t\tfor (const k of tr.keys) {\n\t\t\tconst value = k.value;\n\t\t\tif (typeof value === \"string\" && value) out.push({\n\t\t\t\tfamily: node.fontFamily,\n\t\t\t\ttext: value\n\t\t\t});\n\t\t}\n\t}\n\treturn out;\n}\n/**\n* Run \u00A73.6 font validation for a scene + its timeline document. Builds the\n* registry from `doc.assets`, loads each registered face's cmap via `loadBytes`\n* (once per family \u2014 the first face's URL is enough for coverage), and runs the\n* pure `validateFonts`. Strict mode throws FontValidationError; dev warns.\n*/\nasync function validateSceneFonts(scene, doc, loadBytes, options = {}) {\n\tconst mode = options.mode ?? \"dev\";\n\tconst registry = buildFontRegistry(doc.assets);\n\tconst usages = [...collectTextUsages(scene), ...options.extraUsages ?? []];\n\tconst wanted = /* @__PURE__ */ new Set();\n\tfor (const u of usages) if (registry.has(u.family)) for (const f of registry.fallbackChain(u.family)) wanted.add(f);\n\tconst cmaps = /* @__PURE__ */ new Map();\n\tfor (const family of wanted) {\n\t\tconst face = registry.resolveFace(family);\n\t\tif (!face) continue;\n\t\tconst bytes = await loadBytes(face.url);\n\t\tif (bytes) cmaps.set(family, parseCmap(bytes));\n\t}\n\treturn validateFonts(usages, registry, cmaps, mode, { ...options.osFamilies !== void 0 ? { osFamilies: options.osFamilies } : {} });\n}\n//#endregion\n//#region src/assets.ts\nvar ColdAssetError = class extends Error {\n\tassetId;\n\tdetail;\n\t/** Media time that was requested cold, when known \u2014 drives demand warming. */\n\tmediaT;\n\tconstructor(assetId, detail, mediaT) {\n\t\tsuper(`asset '${assetId}' not ready: ${detail}. evaluate() never awaits \u2014 warm assets before evaluating (\u00A72.5 readiness precondition)`);\n\t\tthis.name = \"ColdAssetError\";\n\t\tthis.assetId = assetId;\n\t\tthis.detail = detail;\n\t\tthis.mediaT = mediaT;\n\t}\n};\n//#endregion\n//#region src/shaderEffect.ts\n/**\n* ShaderEffect (\u00A73.7): a group whose rasterized subtree runs through a WGSL\n* pass. THIS FILE IS PURE DATA \u2014 the GPU runner lives in the browser-only\n* @glissade/effects-webgpu package; headless backends degrade per\n* caps.shaders (passthrough + warning by default). Uniforms are per-name\n* number signals registered as '<id>/u.<name>' track targets, so shader\n* params animate exactly like any other property.\n*/\nvar ShaderEffect = class extends Group {\n\twgsl;\n\tuniformSignals;\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.wgsl = props.wgsl;\n\t\tconst map = /* @__PURE__ */ new Map();\n\t\tfor (const [name, value] of Object.entries(props.uniforms ?? {})) {\n\t\t\tconst sig = signal(value);\n\t\t\tmap.set(name, sig);\n\t\t\tthis.registerTarget(`u.${name}`, sig, \"number\");\n\t\t}\n\t\tthis.uniformSignals = map;\n\t}\n\t/** The live uniform signal (throws on unknown names \u2014 typos fail loudly). */\n\tuniform(name) {\n\t\tconst sig = this.uniformSignals.get(name);\n\t\tif (!sig) throw new Error(`ShaderEffect has no uniform '${name}' (have: ${[...this.uniformSignals.keys()].join(\", \")})`);\n\t\treturn sig;\n\t}\n\tgroupShader() {\n\t\tconst uniforms = {};\n\t\tfor (const [name, sig] of this.uniformSignals) uniforms[name] = sig();\n\t\treturn {\n\t\t\twgsl: this.wgsl,\n\t\t\tuniforms\n\t\t};\n\t}\n};\nconst smoothstep = (u) => u * u * (3 - 2 * u);\nconst GAUSS_K = 2.4;\nconst GAUSS_NORM = 1 - Math.exp(-5.76 / 2);\nconst gaussianEase = (u) => (1 - Math.exp(-((u * GAUSS_K) ** 2) / 2)) / GAUSS_NORM;\n/**\n* Densify `stops` into a `smooth`/`gaussian` oklab ramp. The output spans the\n* input's offset range with GRADIENT_RAMP_STEPS uniformly-spaced stops; each\n* point eases its blend within the authored segment it falls in. Returns the\n* input unchanged for `linear` (or a single stop) \u2014 the canvas-native path.\n*/\nfunction densifyStops(stops, mode) {\n\tif (mode === \"linear\" || stops.length < 2) return stops;\n\tconst ease = mode === \"gaussian\" ? gaussianEase : smoothstep;\n\tconst o0 = stops[0].offset;\n\tconst span = stops[stops.length - 1].offset - o0;\n\tif (span <= 0) return stops;\n\tconst out = [];\n\tlet seg = 0;\n\tfor (let i = 0; i < 64; i++) {\n\t\tconst offset = o0 + span * (i / 63);\n\t\twhile (seg < stops.length - 2 && offset > stops[seg + 1].offset) seg++;\n\t\tconst a = stops[seg];\n\t\tconst b = stops[seg + 1];\n\t\tconst w = b.offset - a.offset;\n\t\tconst u = w > 0 ? Math.min(1, Math.max(0, (offset - a.offset) / w)) : 0;\n\t\tout.push({\n\t\t\toffset,\n\t\t\tcolor: lerpColor(a.color, b.color, ease(u))\n\t\t});\n\t}\n\treturn out;\n}\n//#endregion\n//#region src/meshGradient.ts\n/**\n* Mesh-gradient kernel (\u00A73 Paint, 0.12). A `mesh` Paint is N color points\n* scattered across the [0,1]\u00B2 fill rectangle, blended into ONE animatable fill\n* \u2014 the native replacement for the \"N blurred blobs\" aurora backdrop.\n*\n* THE DETERMINISM TENTPOLE: `@napi-rs/canvas` exposes NO SkSL RuntimeEffect /\n* makeShader, so there is no SkSL-vs-fallback fork \u2014 there is exactly ONE shared\n* CPU kernel that BOTH backends run. This file is that kernel, mirroring\n* `densifyStops` (gradient.ts): pinned named constants (`MESH_SIGMA`,\n* `MESH_SHEPARD_POWER`, `MESH_DOWNSCALE`) so neither backend picks its own, OKLab\n* blend reused bit-identically from `@glissade/core`, and integer `Uint8ClampedArray`\n* quantization so the buffer is reproducible run-to-run and byte-identical across\n* backends. Only the FINAL blit (clip + drawImage upscale) differs per backend \u2014\n* the source pixels are identical, which is what makes browser\u2194Skia SSIM \u2265 0.97.\n*\n* The blend is ONE deterministic Shepard inverse-distance kernel with a\n* colorspace knob: `smooth` = inverse-distance weighting in OKLab; `gaussian` =\n* a pinned-sigma gaussian weight (a softer, blurrier melt); `oklab` is an alias\n* for `smooth` (the blend space is always OKLab \u2014 the gradient path's contract).\n* NO triangulator (Gouraud/Delaunay/Coons are deferred).\n*/\n/**\n* The mesh raster resolution divisor. The mesh is computed at\n* ceil(bounds / MESH_DOWNSCALE) and the backend upscales it (clip + drawImage,\n* `imageSmoothingEnabled` pinned true) \u2014 a gradient is low-frequency, so the\n* downscale is invisible while cutting the per-pixel kernel cost ~16\u00D7. PINNED:\n* both backends compute the identical low-res ImageData.\n*/\nconst MESH_DOWNSCALE = 4;\n/** Inverse-distance exponent for `smooth`/`oklab` (Shepard's method). Higher =\n* sharper points; 2 is the classic IDW value and the pinned default. */\nconst MESH_SHEPARD_POWER = 2;\n/**\n* Gaussian weight sigma for `gaussian` mode, in NORMALIZED [0,1] mesh space\n* (a point's influence falls to ~60% one sigma away). Pinned so the melt width\n* is identical on both backends \u2014 the GAUSS_K precedent from gradient.ts.\n*/\nconst MESH_SIGMA = .32;\n/** Epsilon so a sample sitting exactly on a point doesn't divide by zero; small\n* enough to be a hard pin to that point's color. Pinned (folds into the bytes). */\nconst MESH_EPS = 1e-6;\n/** Cap the mesh raster so a pathological tiny-downscale \u00D7 huge-bounds can't OOM;\n* far above any real fill at /4. Pinned (it changes nothing for real meshes). */\nconst MESH_MAX_DIM = 1024;\n/**\n* Rasterize a mesh Paint into an RGBA `Uint8ClampedArray` of `w*h` pixels\n* (row-major, premultiply-free straight alpha). PURE function of\n* (mesh, w, h): identical inputs \u2192 byte-identical buffer, on any backend.\n*\n* `w`/`h` are the DOWNSCALED dimensions (the caller divides the fill bounds by\n* MESH_DOWNSCALE). Each output pixel's center maps to mesh space [0,1]\u00B2; the\n* blend is Shepard IDW (smooth/oklab) or a pinned-sigma gaussian (gaussian) of\n* the point colors in OKLab, with an optional `bg` color as a zero-weight floor\n* (a baseline so sparse meshes don't smear a single point across the whole rect).\n*/\nfunction rasterizeMesh(mesh, w, h) {\n\tconst out = new Uint8ClampedArray(Math.max(1, w) * Math.max(1, h) * 4);\n\tconst pts = mesh.points.map((p) => ({\n\t\tu: p.pos[0],\n\t\tv: p.pos[1],\n\t\tlab: rgbaToOklab(parseColor(p.color))\n\t}));\n\tconst bg = mesh.bg !== void 0 ? rgbaToOklab(parseColor(mesh.bg)) : null;\n\tconst gaussian = mesh.interpolation === \"gaussian\";\n\tconst twoSigmaSq = 2 * MESH_SIGMA * MESH_SIGMA;\n\tfor (let y = 0; y < h; y++) {\n\t\tconst v = h > 1 ? (y + .5) / h : .5;\n\t\tfor (let x = 0; x < w; x++) {\n\t\t\tconst u = w > 1 ? (x + .5) / w : .5;\n\t\t\tlet wsum = 0;\n\t\t\tlet L = 0;\n\t\t\tlet A = 0;\n\t\t\tlet B = 0;\n\t\t\tlet alpha = 0;\n\t\t\tif (bg) {\n\t\t\t\twsum = 1;\n\t\t\t\tL = bg.L;\n\t\t\t\tA = bg.a;\n\t\t\t\tB = bg.b;\n\t\t\t\talpha = bg.alpha;\n\t\t\t}\n\t\t\tlet pinned = false;\n\t\t\tfor (let i = 0; i < pts.length; i++) {\n\t\t\t\tconst p = pts[i];\n\t\t\t\tconst du = u - p.u;\n\t\t\t\tconst dv = v - p.v;\n\t\t\t\tconst d2 = du * du + dv * dv;\n\t\t\t\tif (d2 <= MESH_EPS * MESH_EPS) {\n\t\t\t\t\tL = p.lab.L;\n\t\t\t\t\tA = p.lab.a;\n\t\t\t\t\tB = p.lab.b;\n\t\t\t\t\talpha = p.lab.alpha;\n\t\t\t\t\tpinned = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tlet weight;\n\t\t\t\tif (gaussian) weight = Math.exp(-d2 / twoSigmaSq);\n\t\t\t\telse weight = 1 / d2;\n\t\t\t\twsum += weight;\n\t\t\t\tL += weight * p.lab.L;\n\t\t\t\tA += weight * p.lab.a;\n\t\t\t\tB += weight * p.lab.b;\n\t\t\t\talpha += weight * p.lab.alpha;\n\t\t\t}\n\t\t\tlet rgba;\n\t\t\tif (pinned) rgba = oklabToRgba({\n\t\t\t\tL,\n\t\t\t\ta: A,\n\t\t\t\tb: B,\n\t\t\t\talpha\n\t\t\t});\n\t\t\telse if (wsum > 0) {\n\t\t\t\tconst inv = 1 / wsum;\n\t\t\t\trgba = oklabToRgba({\n\t\t\t\t\tL: L * inv,\n\t\t\t\t\ta: A * inv,\n\t\t\t\t\tb: B * inv,\n\t\t\t\t\talpha: alpha * inv\n\t\t\t\t});\n\t\t\t} else rgba = {\n\t\t\t\tr: 0,\n\t\t\t\tg: 0,\n\t\t\t\tb: 0,\n\t\t\t\ta: 0\n\t\t\t};\n\t\t\tconst o = (y * w + x) * 4;\n\t\t\tout[o] = rgba.r;\n\t\t\tout[o + 1] = rgba.g;\n\t\t\tout[o + 2] = rgba.b;\n\t\t\tout[o + 3] = Math.round(rgba.a * 255);\n\t\t}\n\t}\n\treturn out;\n}\n/** Downscaled raster dimensions for a fill of `bw\u00D7bh` local px (\u22651, capped). */\nfunction meshRasterSize(bw, bh) {\n\treturn {\n\t\tw: Math.min(MESH_MAX_DIM, Math.max(1, Math.ceil(Math.abs(bw) / 4))),\n\t\th: Math.min(MESH_MAX_DIM, Math.max(1, Math.ceil(Math.abs(bh) / 4)))\n\t};\n}\n//#endregion\n//#region src/raster2d.ts\n/**\n* The shared DisplayList interpreter (\u00A73.4): one command walk over the\n* canvas-2d-shaped API, generic over the host's canvas/path/drawable types.\n* backend-canvas2d (DOM) and backend-skia (@napi-rs) instantiate it with\n* four-line adapters, so the twin rasterizers structurally cannot drift \u2014\n* the golden + SSIM suites verify the refactor preserved every byte.\n*/\n/** Stroke/text mesh paint has no clippable fill region \u2014 pick a deterministic\n* representative solid (bg, else the first point) so it renders without a crash. */\nlet warnedMeshStroke = false;\nfunction meshRepresentativeColor(paint) {\n\tif (!warnedMeshStroke) {\n\t\twarnedMeshStroke = true;\n\t\temitDevWarning(\"mesh Paint on a stroke/text resolves to a representative solid color (mesh fill is supported only on filled paths, \u00A73 Paint) \u2014 use a fillPath for the mesh gradient\");\n\t}\n\treturn paint.bg ?? paint.points[0]?.color ?? \"#00000000\";\n}\nfunction resolveFill(ctx, paint, bounds) {\n\tif (paint.kind === \"color\") return paint.color;\n\tif (paint.kind === \"mesh\") return meshRepresentativeColor(paint);\n\tlet g;\n\tif (paint.kind === \"radial\") {\n\t\tconst cx = paint.center ? paint.center[0] : bounds ? (bounds.minX + bounds.maxX) / 2 : 0;\n\t\tconst cy = paint.center ? paint.center[1] : bounds ? (bounds.minY + bounds.maxY) / 2 : 0;\n\t\tconst r = paint.radius !== void 0 ? paint.radius : bounds ? Math.hypot(bounds.maxX - bounds.minX, bounds.maxY - bounds.minY) / 2 : 0;\n\t\tg = ctx.createRadialGradient(cx, cy, 0, cx, cy, r);\n\t} else {\n\t\tconst fx = paint.from ? paint.from[0] : bounds ? (bounds.minX + bounds.maxX) / 2 : 0;\n\t\tconst fy = paint.from ? paint.from[1] : bounds ? bounds.minY : 0;\n\t\tconst tx = paint.to ? paint.to[0] : bounds ? (bounds.minX + bounds.maxX) / 2 : 0;\n\t\tconst ty = paint.to ? paint.to[1] : bounds ? bounds.maxY : 0;\n\t\tg = ctx.createLinearGradient(fx, fy, tx, ty);\n\t}\n\tconst stops = paint.interpolation ? densifyStops(paint.stops, paint.interpolation) : paint.stops;\n\tfor (const s of stops) g.addColorStop(s.offset, s.color);\n\treturn g;\n}\nfunction fontString(font) {\n\treturn `${font.style === \"italic\" ? \"italic \" : \"\"}${font.weight !== void 0 && font.weight !== 400 ? `${font.weight} ` : \"\"}${font.size}px ${font.family}`;\n}\n/** Hardcoded LRU cap (\u00A73.5). Evicted canvases return to the raster pool. */\nconst RASTER_CACHE_CAP = 16;\n/**\n* Round a device-transform component into the cache key. The layer bakes the\n* parent CTM into its pixels, so two frames that share a cacheKey but differ in\n* device transform are NOT interchangeable \u2014 they must key separately. Rounding\n* to 1e-4 collapses float jitter from matrix re-multiplication of an unchanged\n* transform (so a genuinely static parent HITs) while keeping any visible move\n* to a distinct key (so a stale-CTM bitmap can never blit). The float is taken\n* verbatim into the string \u2014 no lossy truncation that could alias two CTMs.\n*/\nfunction transformKey(m) {\n\tconst q = (v) => Object.is(v, -0) ? \"0\" : String(Math.round(v * 1e4) / 1e4);\n\treturn `${q(m[0])},${q(m[1])},${q(m[2])},${q(m[3])},${q(m[4])},${q(m[5])}`;\n}\n/**\n* How far a filter chain can paint beyond its input (device px). Each stage\n* feeds the next, so outsets ADD. Gaussian reach: Skia truncates at 3\u03C3 and\n* the CSS blur/shadow radii are \u2265 \u03C3, so 3\u00D7 the radius over-covers either\n* convention. Color-only filters map transparent \u2192 transparent: zero outset.\n*/\nfunction filterOutset(filters) {\n\tlet total = 0;\n\tfor (const f of filters ?? []) if (f.kind === \"blur\") total += 3 * f.radius;\n\telse if (f.kind === \"drop-shadow\") total += Math.max(Math.abs(f.dx), Math.abs(f.dy)) + 3 * f.blur;\n\treturn total;\n}\nfunction growBounds(b, x, y) {\n\tif (!b) return {\n\t\tminX: x,\n\t\tminY: y,\n\t\tmaxX: x,\n\t\tmaxY: y\n\t};\n\tif (x < b.minX) b.minX = x;\n\tif (y < b.minY) b.minY = y;\n\tif (x > b.maxX) b.maxX = x;\n\tif (y > b.maxY) b.maxY = y;\n\treturn b;\n}\n/** Local-space rect (already outset) \u2192 device-space box under m. */\nfunction accumulateRect(layer, m, x0, y0, x1, y1) {\n\tfor (const [x, y] of [\n\t\t[x0, y0],\n\t\t[x1, y0],\n\t\t[x0, y1],\n\t\t[x1, y1]\n\t]) layer.bounds = growBounds(layer.bounds, m[0] * x + m[2] * y + m[4], m[1] * x + m[3] * y + m[5]);\n}\n/** Control-point box of a path \u2014 curves and rotated ellipses stay inside it. */\nfunction segsBounds(segs) {\n\tlet b = null;\n\tconst pt = (x, y) => {\n\t\tb = growBounds(b, x, y);\n\t};\n\tfor (const seg of segs) switch (seg[0]) {\n\t\tcase \"M\":\n\t\tcase \"L\":\n\t\t\tpt(seg[1], seg[2]);\n\t\t\tbreak;\n\t\tcase \"C\":\n\t\t\tpt(seg[1], seg[2]);\n\t\t\tpt(seg[3], seg[4]);\n\t\t\tpt(seg[5], seg[6]);\n\t\t\tbreak;\n\t\tcase \"Q\":\n\t\t\tpt(seg[1], seg[2]);\n\t\t\tpt(seg[3], seg[4]);\n\t\t\tbreak;\n\t\tcase \"E\": {\n\t\t\tconst r = Math.max(seg[3], seg[4]);\n\t\t\tpt(seg[1] - r, seg[2] - r);\n\t\t\tpt(seg[1] + r, seg[2] + r);\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn b;\n}\nvar Raster2D = class {\n\thost;\n\tshaderCaps;\n\tpool = [];\n\tpathCache = /* @__PURE__ */ new WeakMap();\n\tpathBoundsCache = /* @__PURE__ */ new WeakMap();\n\timages = /* @__PURE__ */ new Map();\n\tvideos = /* @__PURE__ */ new Map();\n\twarnedShaders = false;\n\t/**\n\t* \u00A73.5 bitmap LRU: device-transform-qualified cacheKey \u2192 rasterized layer.\n\t* A Map preserves insertion order, so the oldest key is `keys().next()` \u2014\n\t* touch-on-hit by delete+set keeps it a true LRU. Disabled (stays empty) when\n\t* `cacheEnabled` is false, so cache-cold === cache-warm is testable directly.\n\t*/\n\trasterCache = /* @__PURE__ */ new Map();\n\tcacheEnabled;\n\tconstructor(host, shaderCaps = \"warn\", cacheEnabled = (globalThis.process?.env?.[\"RASTER_CACHE\"] ?? \"1\") !== \"0\") {\n\t\tthis.host = host;\n\t\tthis.shaderCaps = shaderCaps;\n\t\tthis.cacheEnabled = cacheEnabled;\n\t}\n\t/** Register a decoded still (kind 'image' assets). */\n\tsetImageAsset(assetId, image) {\n\t\tthis.images.set(assetId, image);\n\t}\n\t/** Register a warmed-on-demand video source (kind 'video' assets, \u00A73.8). */\n\tsetVideoAsset(assetId, source) {\n\t\tthis.videos.set(assetId, source);\n\t}\n\tdispose() {\n\t\tthis.pool.length = 0;\n\t\tthis.rasterCache.clear();\n\t}\n\tresolveDrawable(res, id) {\n\t\tif (res.kind === \"image\") {\n\t\t\tconst img = this.images.get(res.assetId);\n\t\t\tif (!img) throw new ColdAssetError(res.assetId, \"no decoded image registered\");\n\t\t\treturn img;\n\t\t}\n\t\tif (res.kind === \"videoFrame\") {\n\t\t\tconst source = this.videos.get(res.assetId);\n\t\t\tif (!source) throw new ColdAssetError(res.assetId, \"no VideoFrameSource registered\", res.mediaT);\n\t\t\ttry {\n\t\t\t\treturn source.getFrameSync(res.mediaT);\n\t\t\t} catch (e) {\n\t\t\t\tif (e instanceof ColdAssetError) throw new ColdAssetError(res.assetId, e.detail, res.mediaT);\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t}\n\t\tthrow new Error(`resource ${id} is not drawable`);\n\t}\n\tpath(resources, id) {\n\t\tconst res = resources[id];\n\t\tif (!res || res.kind !== \"path\") throw new Error(`resource ${id} is not a path`);\n\t\tlet p = this.pathCache.get(res);\n\t\tif (!p) {\n\t\t\tp = this.buildPath(res.segs);\n\t\t\tthis.pathCache.set(res, p);\n\t\t}\n\t\treturn p;\n\t}\n\tpathBounds(resources, id) {\n\t\tconst res = resources[id];\n\t\tif (!res || res.kind !== \"path\") return null;\n\t\tif (!this.pathBoundsCache.has(res)) this.pathBoundsCache.set(res, segsBounds(res.segs));\n\t\treturn this.pathBoundsCache.get(res) ?? null;\n\t}\n\tbuildPath(segs) {\n\t\tconst p = this.host.newPath();\n\t\tfor (const seg of segs) switch (seg[0]) {\n\t\t\tcase \"M\":\n\t\t\t\tp.moveTo(seg[1], seg[2]);\n\t\t\t\tbreak;\n\t\t\tcase \"L\":\n\t\t\t\tp.lineTo(seg[1], seg[2]);\n\t\t\t\tbreak;\n\t\t\tcase \"C\":\n\t\t\t\tp.bezierCurveTo(seg[1], seg[2], seg[3], seg[4], seg[5], seg[6]);\n\t\t\t\tbreak;\n\t\t\tcase \"Q\":\n\t\t\t\tp.quadraticCurveTo(seg[1], seg[2], seg[3], seg[4]);\n\t\t\t\tbreak;\n\t\t\tcase \"E\":\n\t\t\t\tp.ellipse(seg[1], seg[2], seg[3], seg[4], seg[5], seg[6], seg[7]);\n\t\t\t\tbreak;\n\t\t\tcase \"Z\":\n\t\t\t\tp.closePath();\n\t\t\t\tbreak;\n\t\t}\n\t\treturn p;\n\t}\n\tacquire(w, h) {\n\t\tconst pooled = this.pool.pop();\n\t\tif (pooled) {\n\t\t\tif (pooled.width !== w) pooled.width = w;\n\t\t\tif (pooled.height !== h) pooled.height = h;\n\t\t\treturn pooled;\n\t\t}\n\t\treturn this.host.createCanvas(w, h);\n\t}\n\trelease(canvas) {\n\t\tif (this.pool.length < 8) this.pool.push(canvas);\n\t}\n\t/**\n\t* \u00A73.5 LRU insert with touch-on-hit + eviction-to-pool. Storing under a key\n\t* that already holds a (different) canvas releases the old one first.\n\t*/\n\tcacheStore(key, entry) {\n\t\tconst prior = this.rasterCache.get(key);\n\t\tif (prior) {\n\t\t\tthis.rasterCache.delete(key);\n\t\t\tif (prior.canvas !== entry.canvas) this.release(prior.canvas);\n\t\t}\n\t\tthis.rasterCache.set(key, entry);\n\t\twhile (this.rasterCache.size > RASTER_CACHE_CAP) {\n\t\t\tconst oldest = this.rasterCache.keys().next().value;\n\t\t\tif (oldest === void 0) break;\n\t\t\tconst evicted = this.rasterCache.get(oldest);\n\t\t\tthis.rasterCache.delete(oldest);\n\t\t\tthis.release(evicted.canvas);\n\t\t}\n\t}\n\tcacheTouch(key) {\n\t\tconst hit = this.rasterCache.get(key);\n\t\tif (hit) {\n\t\t\tthis.rasterCache.delete(key);\n\t\t\tthis.rasterCache.set(key, hit);\n\t\t}\n\t\treturn hit;\n\t}\n\t/**\n\t* \u00A73 mesh Paint blit (the spike-chosen mechanism: clip + drawImage, NOT\n\t* createPattern \u2014 the pattern path leaks edge-AA/alpha contamination and an\n\t* uncontrolled resample filter across backends, breaking SSIM; clip+drawImage\n\t* is fully controlled and clips to the actual path, not just its bounds box).\n\t*\n\t* The mesh is rasterized by the SHARED kernel into a fixed downscaled buffer\n\t* (identical bytes on both backends), written into an offscreen tile, then\n\t* upscaled into the path-local bounds with `imageSmoothingEnabled` PINNED true.\n\t* The clip is the real fill path, so a circle/star fills correctly. Only this\n\t* final blit's AA differs per backend \u2014 the source ImageData is byte-identical,\n\t* which is what makes the golden byte-exact and browser\u2194Skia SSIM \u2265 0.97.\n\t*/\n\tfillMesh(ctx, path, paint, bounds) {\n\t\tconst bw = bounds.maxX - bounds.minX;\n\t\tconst bh = bounds.maxY - bounds.minY;\n\t\tif (bw <= 0 || bh <= 0) return;\n\t\tconst { w, h } = meshRasterSize(bw, bh);\n\t\tconst buf = rasterizeMesh(paint, w, h);\n\t\tconst tile = this.acquire(w, h);\n\t\tconst tileCtx = this.host.context(tile);\n\t\tconst img = tileCtx.createImageData(w, h);\n\t\timg.data.set(buf);\n\t\ttileCtx.putImageData(img, 0, 0);\n\t\tctx.save();\n\t\tctx.clip(path, \"nonzero\");\n\t\tctx.imageSmoothingEnabled = true;\n\t\tctx.drawImage(tile, 0, 0, w, h, bounds.minX, bounds.minY, bw, bh);\n\t\tctx.restore();\n\t\tthis.release(tile);\n\t}\n\t/**\n\t* \u00A73.4/\u00A73.5 composite of a finished group layer onto its parent \u2014 the EXACT\n\t* same save/resetTransform/clip/globalAlpha/filter/blend/drawImage sequence\n\t* for both the freshly-rasterized miss path and a cache-blit hit, so a HIT is\n\t* byte-identical to a MISS. `bounds`/`unbounded` come from the layer (miss) or\n\t* the cache entry (hit); the composite params (opacity/blend/filters) always\n\t* come from the LIVE pushGroup command, never the cache.\n\t*/\n\tcomposite(parent, parentLayer, drawable, bounds, unbounded, shaderReplaced, opacity, blend, filter, filters, w, h) {\n\t\tconst hasFilter = filter !== void 0 && filter !== \"none\";\n\t\tconst outset = hasFilter ? filterOutset(filters) : 0;\n\t\tif (unbounded || blend !== \"source-over\") parentLayer.unbounded = true;\n\t\telse if (bounds) accumulateRect(parentLayer, IDENTITY, bounds.minX - outset, bounds.minY - outset, bounds.maxX + outset, bounds.maxY + outset);\n\t\tconst clippable = hasFilter && !shaderReplaced && !unbounded && blend === \"source-over\";\n\t\tif (clippable && bounds === null) return;\n\t\tparent.save();\n\t\tparent.resetTransform();\n\t\tif (clippable && bounds) {\n\t\t\tconst x0 = Math.max(0, Math.floor(bounds.minX - outset));\n\t\t\tconst y0 = Math.max(0, Math.floor(bounds.minY - outset));\n\t\t\tconst x1 = Math.min(w, Math.ceil(bounds.maxX + outset));\n\t\t\tconst y1 = Math.min(h, Math.ceil(bounds.maxY + outset));\n\t\t\tif (x0 >= x1 || y0 >= y1) {\n\t\t\t\tparent.restore();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst clip = this.host.newPath();\n\t\t\tclip.moveTo(x0, y0);\n\t\t\tclip.lineTo(x1, y0);\n\t\t\tclip.lineTo(x1, y1);\n\t\t\tclip.lineTo(x0, y1);\n\t\t\tclip.closePath();\n\t\t\tparent.clip(clip, \"nonzero\");\n\t\t}\n\t\tparent.globalAlpha = opacity;\n\t\tif (hasFilter) parent.filter = filter;\n\t\tparent.globalCompositeOperation = blend;\n\t\tparent.drawImage(drawable, 0, 0);\n\t\tparent.restore();\n\t}\n\t/** The command walk \u2014 order and operations identical to the pre-extraction twins. */\n\trender(target, list) {\n\t\tconst { w, h } = list.size;\n\t\tif (target.width !== w) target.width = w;\n\t\tif (target.height !== h) target.height = h;\n\t\tconst base = this.host.context(target);\n\t\tbase.resetTransform();\n\t\tbase.clearRect(0, 0, w, h);\n\t\tconst layers = [{\n\t\t\tctx: base,\n\t\t\tcanvas: null,\n\t\t\topacity: 1,\n\t\t\tblend: \"source-over\",\n\t\t\tbounds: null,\n\t\t\tunbounded: false\n\t\t}];\n\t\tconst ctxOf = () => layers[layers.length - 1].ctx;\n\t\tconst top = () => layers[layers.length - 1];\n\t\tlet mat = IDENTITY;\n\t\tconst matStack = [];\n\t\tconst commands = list.commands;\n\t\tfor (let ci = 0; ci < commands.length; ci++) {\n\t\t\tconst cmd = commands[ci];\n\t\t\tswitch (cmd.op) {\n\t\t\t\tcase \"save\":\n\t\t\t\t\tmatStack.push(mat);\n\t\t\t\t\tctxOf().save();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"restore\":\n\t\t\t\t\tmat = matStack.pop() ?? mat;\n\t\t\t\t\tctxOf().restore();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"transform\":\n\t\t\t\t\tmat = multiply(mat, cmd.m);\n\t\t\t\t\tctxOf().transform(cmd.m[0], cmd.m[1], cmd.m[2], cmd.m[3], cmd.m[4], cmd.m[5]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"clip\":\n\t\t\t\t\tctxOf().clip(this.path(list.resources, cmd.path), cmd.rule ?? \"nonzero\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"fillPath\": {\n\t\t\t\t\tconst ctx = ctxOf();\n\t\t\t\t\tconst b = this.pathBounds(list.resources, cmd.path);\n\t\t\t\t\tif (cmd.paint.kind === \"mesh\" && b) this.fillMesh(ctx, this.path(list.resources, cmd.path), cmd.paint, b);\n\t\t\t\t\telse {\n\t\t\t\t\t\tctx.fillStyle = resolveFill(ctx, cmd.paint, b);\n\t\t\t\t\t\tctx.fill(this.path(list.resources, cmd.path));\n\t\t\t\t\t}\n\t\t\t\t\tif (b) accumulateRect(top(), mat, b.minX, b.minY, b.maxX, b.maxY);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"strokePath\": {\n\t\t\t\t\tconst ctx = ctxOf();\n\t\t\t\t\tconst sb = this.pathBounds(list.resources, cmd.path);\n\t\t\t\t\tctx.strokeStyle = resolveFill(ctx, cmd.paint, sb);\n\t\t\t\t\tctx.lineWidth = cmd.stroke.width;\n\t\t\t\t\tctx.lineCap = cmd.stroke.cap ?? \"butt\";\n\t\t\t\t\tctx.lineJoin = cmd.stroke.join ?? \"miter\";\n\t\t\t\t\tif (cmd.stroke.dash) {\n\t\t\t\t\t\tctx.setLineDash(cmd.stroke.dash);\n\t\t\t\t\t\tctx.lineDashOffset = cmd.stroke.dashOffset ?? 0;\n\t\t\t\t\t}\n\t\t\t\t\tctx.stroke(this.path(list.resources, cmd.path));\n\t\t\t\t\tif (cmd.stroke.dash) {\n\t\t\t\t\t\tctx.setLineDash([]);\n\t\t\t\t\t\tctx.lineDashOffset = 0;\n\t\t\t\t\t}\n\t\t\t\t\tif (sb) {\n\t\t\t\t\t\tconst o = cmd.stroke.width * ((cmd.stroke.join ?? \"miter\") === \"miter\" ? 5 : 1);\n\t\t\t\t\t\taccumulateRect(top(), mat, sb.minX - o, sb.minY - o, sb.maxX + o, sb.maxY + o);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"fillText\": {\n\t\t\t\t\tconst ctx = ctxOf();\n\t\t\t\t\tctx.font = fontString(cmd.font);\n\t\t\t\t\tctx.fillStyle = resolveFill(ctx, cmd.paint, null);\n\t\t\t\t\tctx.textBaseline = \"alphabetic\";\n\t\t\t\t\tctx.textAlign = cmd.align ?? \"left\";\n\t\t\t\t\tctx.fillText(cmd.text, cmd.x, cmd.y);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst width = ctx.measureText(cmd.text).width;\n\t\t\t\t\t\tconst align = cmd.align ?? \"left\";\n\t\t\t\t\t\tconst x0 = align === \"center\" ? cmd.x - width / 2 : align === \"right\" ? cmd.x - width : cmd.x;\n\t\t\t\t\t\tconst m = cmd.font.size;\n\t\t\t\t\t\taccumulateRect(top(), mat, x0 - m, cmd.y - 1.5 * m, x0 + width + m, cmd.y + .75 * m);\n\t\t\t\t\t} catch {\n\t\t\t\t\t\ttop().unbounded = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"drawImage\": {\n\t\t\t\t\tconst res = list.resources[cmd.image];\n\t\t\t\t\tif (!res) throw new Error(`drawImage references missing resource ${cmd.image}`);\n\t\t\t\t\tconst drawable = this.resolveDrawable(res, cmd.image);\n\t\t\t\t\tconst ctx = ctxOf();\n\t\t\t\t\tif (cmd.smoothing !== void 0) ctx.imageSmoothingEnabled = cmd.smoothing;\n\t\t\t\t\tconst { x, y, w: dw, h: dh } = cmd.dst;\n\t\t\t\t\tif (cmd.src) ctx.drawImage(drawable, cmd.src.x, cmd.src.y, cmd.src.w, cmd.src.h, x, y, dw, dh);\n\t\t\t\t\telse ctx.drawImage(drawable, x, y, dw, dh);\n\t\t\t\t\taccumulateRect(top(), mat, x, y, x + dw, y + dh);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"pushGroup\": {\n\t\t\t\t\tconst parent = ctxOf();\n\t\t\t\t\tconst lruKey = this.cacheEnabled && cmd.cacheKey !== void 0 && cmd.shader === void 0 ? `${cmd.cacheKey}@${transformKey(mat)}` : void 0;\n\t\t\t\t\tif (lruKey !== void 0) {\n\t\t\t\t\t\tconst hit = this.cacheTouch(lruKey);\n\t\t\t\t\t\tif (hit) {\n\t\t\t\t\t\t\tthis.composite(parent, top(), hit.canvas, hit.bounds, hit.unbounded, false, cmd.opacity, cmd.blend, filtersToCanvasFilter(cmd.filters), cmd.filters, w, h);\n\t\t\t\t\t\t\tlet depth = 1;\n\t\t\t\t\t\t\twhile (depth > 0 && ++ci < commands.length) {\n\t\t\t\t\t\t\t\tconst c = commands[ci];\n\t\t\t\t\t\t\t\tif (c.op === \"pushGroup\") depth++;\n\t\t\t\t\t\t\t\telse if (c.op === \"popGroup\") depth--;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst layerCanvas = this.acquire(w, h);\n\t\t\t\t\tconst layerCtx = this.host.context(layerCanvas);\n\t\t\t\t\tlayerCtx.resetTransform();\n\t\t\t\t\tlayerCtx.clearRect(0, 0, w, h);\n\t\t\t\t\tlayerCtx.setTransform(parent.getTransform());\n\t\t\t\t\tlayers.push({\n\t\t\t\t\t\tctx: layerCtx,\n\t\t\t\t\t\tcanvas: layerCanvas,\n\t\t\t\t\t\topacity: cmd.opacity,\n\t\t\t\t\t\tblend: cmd.blend,\n\t\t\t\t\t\tfilter: filtersToCanvasFilter(cmd.filters),\n\t\t\t\t\t\tfilters: cmd.filters,\n\t\t\t\t\t\t...cmd.shader !== void 0 ? { shader: cmd.shader } : {},\n\t\t\t\t\t\tbounds: null,\n\t\t\t\t\t\tunbounded: false,\n\t\t\t\t\t\t...lruKey !== void 0 ? { cacheStoreKey: lruKey } : {}\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"popGroup\": {\n\t\t\t\t\tconst layer = layers.pop();\n\t\t\t\t\tif (!layer || layer.canvas === null) throw new Error(\"popGroup without matching pushGroup\");\n\t\t\t\t\tconst parent = ctxOf();\n\t\t\t\t\tlet drawable = layer.canvas;\n\t\t\t\t\tlet shaderReplaced = false;\n\t\t\t\t\tif (layer.shader !== void 0) {\n\t\t\t\t\t\tconst replaced = this.host.applyShader?.(layer.canvas, layer.shader, w, h) ?? null;\n\t\t\t\t\t\tif (replaced !== null) {\n\t\t\t\t\t\t\tdrawable = replaced;\n\t\t\t\t\t\t\tshaderReplaced = true;\n\t\t\t\t\t\t\tlayer.bounds = {\n\t\t\t\t\t\t\t\tminX: 0,\n\t\t\t\t\t\t\t\tminY: 0,\n\t\t\t\t\t\t\t\tmaxX: w,\n\t\t\t\t\t\t\t\tmaxY: h\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tlayer.unbounded = false;\n\t\t\t\t\t\t} else if (this.shaderCaps === \"error\") throw new Error(\"a ShaderEffect reached a backend without a shader runner (\u00A73.7) \u2014 load @glissade/effects-webgpu in the browser, or accept passthrough with caps.shaders: warn\");\n\t\t\t\t\t\telse if (!this.warnedShaders) {\n\t\t\t\t\t\t\tthis.warnedShaders = true;\n\t\t\t\t\t\t\temitDevWarning(\"ShaderEffect pass skipped: no shader runner here (headless or webgpu-less browser) \u2014 subtree composites unfiltered (\u00A73.7 caps.shaders)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.composite(parent, top(), drawable, layer.bounds, layer.unbounded, shaderReplaced, layer.opacity, layer.blend, layer.filter, layer.filters, w, h);\n\t\t\t\t\tif (layer.cacheStoreKey !== void 0 && !shaderReplaced) this.cacheStore(layer.cacheStoreKey, {\n\t\t\t\t\t\tcanvas: layer.canvas,\n\t\t\t\t\t\tbounds: layer.bounds,\n\t\t\t\t\t\tunbounded: layer.unbounded\n\t\t\t\t\t});\n\t\t\t\t\telse this.release(layer.canvas);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (layers.length !== 1) throw new Error(\"unbalanced pushGroup/popGroup in DisplayList\");\n\t}\n};\n//#endregion\nexport { ALL_FILTER_KINDS, Circle, ColdAssetError, Custom, DL_SNAPSHOT_VERSION, DeterminismViolationError, DlSnapshotError, DuplicateNodeIdError, EachError, FilterValidationError, FollowPath, Group, Highlight, IDENTITY, ImageNode as Image, ImageNode, LayoutEngineMissingError, MEASURE_QUANTUM_PX, MESH_DOWNSCALE, MESH_SHEPARD_POWER, MESH_SIGMA, NODE_TAXONOMY, Node, Path, Raster2D, Rect, ReservedNodeIdError, ShaderEffect, SketchValidationError, Text, TextCursor, TokenHighlight, TokenMatchError, Video, applyToPoint, arcLength, auditCacheCold, bindScene, breakLines, coercePathData, collapseReplacer, collectLocalizedTextUsages, collectTextUsages, createDisplayListBuilder, createScene, diffDisplayLists, drawOn, drawOnEach, each, estimatingMeasurer, evaluate, filtersToCanvasFilter, flatten, followPath, fontString, formatDisplayDiff, fromTRS, getLayoutEngine, glow, hachureLines, highlight, invert, matEquals, matchTokenRun, meshRasterSize, motionPath, multiply, parseDisplaySnapshot, pathFromSegs, pathLength, pointAtLength, quantize, rasterizeMesh, requireLayoutEngine, resolveAnchor, resolveSketch, revealSchedule, roughen, roundedRectSegs, segmentGraphemes, segmentWords, serializeDisplayList, setDefaultMeasurer, setLayoutEngine, sketchStrokes, textCursor, tokenHighlight, typewriter, validateFilters, validateHachure, validateSceneFonts, validateSketch, withDeterminismGuards };\n", "import { ALL_FILTER_KINDS, Raster2D, fontString } from \"@glissade/scene\";\n//#region src/index.ts\n/**\n* @glissade/backend-canvas2d \u2014 rasterize DisplayLists onto Canvas 2D\n* (DESIGN.md \u00A73.4\u2013\u00A73.5). A thin adapter over the shared Raster2D interpreter\n* in @glissade/scene: this file owns only the DOM canvas flavor (context\n* acquisition, OffscreenCanvas layers, Path2D) and text measurement.\n*/\nlet shaderRunner = null;\nfunction setShaderRunner(runner) {\n\tshaderRunner = runner;\n}\n/**\n* Allocate an offscreen layer (hit only by group opacity<1 / blend / filter /\n* mesh). Prefer `OffscreenCanvas`, but fall back to a detached `<canvas>` where\n* it's unavailable \u2014 so the single-file `@glissade/browser` bundle survives\n* environments without `OffscreenCanvas`. Inert where `OffscreenCanvas` exists\n* (every test + the Skia twin, which never reaches this), so it moves no golden.\n*/\nfunction createLayerCanvas(w, h) {\n\tif (typeof OffscreenCanvas !== \"undefined\") return new OffscreenCanvas(w, h);\n\tconst canvas = document.createElement(\"canvas\");\n\tcanvas.width = w;\n\tcanvas.height = h;\n\treturn canvas;\n}\n/** Largest canvas dimension browsers reliably allocate. */\nconst MAX_TEXTURE = 16384;\nvar Canvas2DBackend = class {\n\ttarget;\n\traster;\n\t/** All document filters; shaders only when an effects-webgpu runner is registered (\u00A73.7). */\n\tget caps() {\n\t\treturn {\n\t\t\tfilters: ALL_FILTER_KINDS,\n\t\t\tshaders: shaderRunner !== null,\n\t\t\tmaxTextureSize: MAX_TEXTURE\n\t\t};\n\t}\n\tconstructor(target, opts = {}) {\n\t\tthis.target = target;\n\t\tthis.raster = new Raster2D({\n\t\t\tcontext: (c) => this.context(c),\n\t\t\tcreateCanvas: (w, h) => createLayerCanvas(w, h),\n\t\t\tnewPath: () => new Path2D(),\n\t\t\tapplyShader: (layer, shader, w, h) => shaderRunner?.apply(layer, shader, w, h) ?? null\n\t\t}, opts.shaderCaps ?? \"warn\");\n\t}\n\t/** Register a decoded still (kind 'image' assets). */\n\tsetImageAsset(assetId, image) {\n\t\tthis.raster.setImageAsset(assetId, image);\n\t}\n\t/** Register a warmed-on-demand video source (kind 'video' assets, \u00A73.8). */\n\tsetVideoAsset(assetId, source) {\n\t\tthis.raster.setVideoAsset(assetId, source);\n\t}\n\tmeasureText(text, font) {\n\t\tconst ctx = this.context(this.target);\n\t\tctx.save();\n\t\tctx.font = fontString(font);\n\t\tconst m = ctx.measureText(text);\n\t\tctx.restore();\n\t\treturn {\n\t\t\twidth: m.width,\n\t\t\tascent: m.actualBoundingBoxAscent,\n\t\t\tdescent: m.actualBoundingBoxDescent\n\t\t};\n\t}\n\trender(list) {\n\t\tthis.raster.render(this.target, list);\n\t}\n\tasync readPixels() {\n\t\treturn this.context(this.target).getImageData(0, 0, this.target.width, this.target.height).data;\n\t}\n\tdispose() {\n\t\tthis.raster.dispose();\n\t}\n\tcontext(canvas) {\n\t\tconst ctx = canvas.getContext(\"2d\");\n\t\tif (!ctx) throw new Error(\"canvas 2d context unavailable\");\n\t\treturn ctx;\n\t}\n};\n//#endregion\nexport { Canvas2DBackend, setShaderRunner };\n", "import { i as resolveTweenTarget, p as track, s as key, t as TARGET_PATH, x as inferValueType } from \"./targetRef.js\";\n//#region src/clip.ts\n/**\n* Motion clips (DESIGN.md \u00A72 build-time sugar): `clip()` captures a relative-time\n* key schedule over named prop CHANNELS; `clip.apply()` compiles to ordinary keyed\n* `Track[]` at apply-time \u2014 authoring SUGAR exactly like `springTo`/`stagger`, NOT a\n* runtime concept and NOT part of the serialized Timeline document. Emitted tracks\n* are BYTE-INDISTINGUISHABLE from hand-authored `track(...)`: every channel compiles\n* through `track(target, type, keys)`, so `validateTrack` runs and the output is\n* deep-equal to the literal form.\n*\n* The binding shape locked here (the channel-spec + apply signature) is FROZEN for\n* the later 1.0 cards (presence / each / morph), which inherit it.\n*/\nvar ClipError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"ClipError\";\n\t}\n};\n/**\n* Guard a clip override VALUE against the channel's resolved type. `compileChannel`\n* infers the channel type from the ORIGINAL first key, then substitutes the\n* override `from`/`to`. `validateTrack` only checks key TIMES, never value shapes,\n* so a mismatched override (e.g. a number on a `vec2` channel) would otherwise\n* sample to NaN through evaluate() into both backends with no warning. This asserts\n* the override value's inferred type matches the channel \u2014 the only place a clip\n* can introduce a wrong-shaped value. `color`/`string` are treated as one family:\n* `inferValueType` can't tell a plain string from a color string, so we never\n* reject a string override on a string-shaped channel.\n*/\nfunction assertOverrideType(target, resolvedType, value) {\n\tlet got;\n\ttry {\n\t\tgot = inferValueType(value);\n\t} catch {\n\t\tthrow new ClipError(`clip override for '${target}' has an un-typeable value ${JSON.stringify(value)} (channel type '${resolvedType}')`);\n\t}\n\tconst stringFamily = (t) => t === \"color\" || t === \"string\";\n\tif (!(got === resolvedType || stringFamily(got) && stringFamily(resolvedType))) throw new ClipError(`clip override for '${target}' is a '${got}' value but the channel is '${resolvedType}' (${JSON.stringify(value)}); a mismatched override samples to NaN`);\n\treturn value;\n}\nfunction channelDuration(ch) {\n\treturn ch.keys.length === 0 ? 0 : ch.keys[ch.keys.length - 1].t;\n}\n/**\n* Resolve a channel's canonical track target. A string `target` resolves every\n* channel against the single node id (`'<nodeId>/<channel.path>'`); a map looks\n* the channel up and resolves the supplied `TweenTarget` directly (free rejection\n* of structural / anonymous ids via `resolveTweenTarget`).\n*/\nfunction resolveChannelTarget(target, channel, path) {\n\tif (typeof target === \"string\") return resolveTweenTarget(`${target}/${path}`);\n\tconst override = target[channel];\n\tif (override === void 0) throw new ClipError(`clip target map is missing channel '${channel}' \u2014 provide a target for every channel, or pass a node-id string`);\n\treturn resolveTweenTarget(override);\n}\n/**\n* Compile ONE channel into a hand-authored-equivalent `Track`. Applies the\n* override (value/ease) topology-preservingly, then scales relative `t` by\n* `1/speed` and offsets by `startSec`. Routes through `track()` so `validateTrack`\n* runs (strictly-increasing t, hold-canonicalize) and the output is byte-identical\n* to the literal `track(target, type, keys)` form.\n*/\nfunction compileChannel(target, ch, startSec, speed, override) {\n\tif (ch.keys.length === 0) throw new ClipError(`clip channel '${target}' has no keys`);\n\tconst type = ch.type ?? inferValueType(ch.keys[0].value);\n\tconst lastIdx = ch.keys.length - 1;\n\tif (override && lastIdx === 0 && override.from !== void 0) throw new ClipError(override.to !== void 0 ? `clip override for '${target}' supplies both 'from' and 'to' on a single-key channel \u2014 ambiguous (both target the only key)` : `clip override for '${target}' supplies 'from' on a single-key channel \u2014 ambiguous (the only key already is the 'to' value)`);\n\treturn track(target, type, ch.keys.map((k, i) => {\n\t\tlet value = k.value;\n\t\tlet overridden = false;\n\t\tif (override) {\n\t\t\tif (i === 0 && override.from !== void 0) {\n\t\t\t\tvalue = assertOverrideType(target, type, override.from);\n\t\t\t\toverridden = true;\n\t\t\t}\n\t\t\tif (i === lastIdx && override.to !== void 0) {\n\t\t\t\tvalue = assertOverrideType(target, type, override.to);\n\t\t\t\toverridden = true;\n\t\t\t}\n\t\t}\n\t\tconst out = {\n\t\t\tt: startSec + k.t / speed,\n\t\t\tvalue\n\t\t};\n\t\tconst ease = override && i === lastIdx && override.ease !== void 0 ? override.ease : k.ease;\n\t\tif (ease !== void 0) out.ease = ease;\n\t\tif (k.interp !== void 0) out.interp = k.interp;\n\t\tif (k.id !== void 0) out.id = k.id;\n\t\tif (k.derived !== void 0 && !overridden) out.derived = k.derived;\n\t\tif (k.from !== void 0) out.from = k.from;\n\t\treturn out;\n\t}));\n}\n/**\n* Build a clip from a spec. Pure: holds no state; `apply` returns fresh tracks.\n*\n* const fade = clip({ channels: { fade: { keys: [key(0, 0), key(0.3, 1)], path: 'opacity' } } });\n* const { tracks, end } = fade.apply('card', 1.0); // \u2192 'card/opacity' track at t\u2208[1.0,1.3]\n*/\nfunction clip(spec) {\n\tconst names = Object.keys(spec.channels);\n\tif (names.length === 0) throw new ClipError(\"clip() requires at least one channel\");\n\tlet duration = 0;\n\tfor (const name of names) {\n\t\tconst ch = spec.channels[name];\n\t\tif (ch.keys.length === 0) throw new ClipError(`clip channel '${name}' has no keys`);\n\t\tduration = Math.max(duration, channelDuration(ch));\n\t}\n\tfunction apply(target, startSec, opts) {\n\t\tconst speed = opts?.speed ?? 1;\n\t\tif (!(speed > 0)) throw new ClipError(`clip speed must be > 0 (got ${speed})`);\n\t\tconst overrides = opts?.overrides;\n\t\tconst tracks = [];\n\t\tlet end = startSec;\n\t\tfor (const name of names) {\n\t\t\tconst ch = spec.channels[name];\n\t\t\tconst trackTarget = resolveChannelTarget(target, name, ch.path);\n\t\t\ttracks.push(compileChannel(trackTarget, ch, startSec, speed, overrides?.[name]));\n\t\t\tend = Math.max(end, startSec + channelDuration(ch) / speed);\n\t\t}\n\t\tif (overrides) {\n\t\t\tfor (const name of Object.keys(overrides)) if (!(name in spec.channels)) throw new ClipError(`clip override references unknown channel '${name}'`);\n\t\t}\n\t\treturn {\n\t\t\ttracks,\n\t\t\tend\n\t\t};\n\t}\n\treturn {\n\t\tspec,\n\t\tduration,\n\t\tapply\n\t};\n}\n/**\n* Fan a clip out over a list of targets, offsetting child i by a `stagger`-style\n* delay (REUSES the existing `stagger` shape/semantics \u2014 number per-index gap, or\n* a function of the index). `end` is the max child end.\n*\n* clipList(popIn(), items.map((it) => it.id), 0, { stagger: 0.08 })\n*/\nfunction clipList(c, targets, startSec, opts) {\n\tconst delay = opts?.stagger ?? 0;\n\tconst at = typeof delay === \"function\" ? delay : (i) => i * delay;\n\tconst { stagger: _stagger, ...applyOpts } = opts ?? {};\n\tconst tracks = [];\n\tlet end = startSec;\n\ttargets.forEach((target, i) => {\n\t\tconst r = c.apply(target, startSec + at(i), applyOpts);\n\t\ttracks.push(...r.tracks);\n\t\tif (r.end > end) end = r.end;\n\t});\n\treturn {\n\t\ttracks,\n\t\tend\n\t};\n}\n//#endregion\n//#region src/clipStdlib.ts\n/**\n* Stdlib motion clips (DESIGN.md \u00A72 build-time sugar): a small set of `clip(...)`\n* literals for the common entrance / emphasis / ambient motions. Tree-shakeable \u2014\n* shipped from the `@glissade/core/clips` SUB-PATH, never the base index, because\n* the keyframe literals are the byte weight (the base core budget is tight).\n*\n* Loop clips (`pulse`, `driftLoop`) author first-key-value == last-key-value, so\n* tiling them under `clipList` (or repeating the clip) reads seamlessly.\n*/\n/** Entrance: opacity 0\u21921 and scale [0.8,0.8]\u2192[1,1] (a \"pop\" in). */\nfunction popIn(opts) {\n\tconst d = opts?.duration ?? .3;\n\tconst ease = opts?.ease ?? \"easeOutCubic\";\n\treturn clip({ channels: {\n\t\topacity: {\n\t\t\tpath: \"opacity\",\n\t\t\tkeys: [key(0, 0), key(d, 1, ease)]\n\t\t},\n\t\tscale: {\n\t\t\tpath: \"scale\",\n\t\t\tkeys: [key(0, [.8, .8]), key(d, [1, 1], ease)]\n\t\t}\n\t} });\n}\n/**\n* Entrance: fade in while sliding a position OFFSET in from one edge. The offset\n* channel binds to a `position` suffix by default and animates a vec2 from the\n* edge-displaced point to [0,0], so it composes as a local translation.\n*/\nfunction slideIn(edge, opts) {\n\tconst d = opts?.duration ?? .3;\n\tconst ease = opts?.ease ?? \"easeOutCubic\";\n\tconst dist = opts?.distance ?? 40;\n\tconst from = edge === \"left\" ? [-dist, 0] : edge === \"right\" ? [dist, 0] : edge === \"top\" ? [0, -dist] : [0, dist];\n\treturn clip({ channels: {\n\t\topacity: {\n\t\t\tpath: \"opacity\",\n\t\t\tkeys: [key(0, 0), key(d, 1, ease)]\n\t\t},\n\t\toffset: {\n\t\t\tpath: \"position\",\n\t\t\tkeys: [key(0, from), key(d, [0, 0], ease)]\n\t\t}\n\t} });\n}\n/** Emphasis: a single scale up-and-back pulse. First/last value match (loopable). */\nfunction pulse(opts) {\n\tconst d = opts?.duration ?? .4;\n\tconst ease = opts?.ease ?? \"easeInOutSine\";\n\tconst peak = opts?.scale ?? 1.1;\n\treturn clip({ channels: { scale: {\n\t\tpath: \"scale\",\n\t\tkeys: [\n\t\t\tkey(0, [1, 1]),\n\t\t\tkey(d / 2, [peak, peak], ease),\n\t\t\tkey(d, [1, 1], ease)\n\t\t]\n\t} } });\n}\n/**\n* Ambient: a slow position drift out and back. First/last value match, so tiling\n* (clipList or repeat) reads as a continuous loop with no seam.\n*/\nfunction driftLoop(opts) {\n\tconst d = opts?.duration ?? 2;\n\tconst ease = opts?.ease ?? \"easeInOutSine\";\n\tconst a = opts?.amplitude ?? 8;\n\treturn clip({ channels: { drift: {\n\t\tpath: \"position\",\n\t\tkeys: [\n\t\t\tkey(0, [0, 0]),\n\t\t\tkey(d / 2, [a, 0], ease),\n\t\t\tkey(d, [0, 0], ease)\n\t\t]\n\t} } });\n}\n//#endregion\n//#region src/morph.ts\n/**\n* Shared-element box-FLIP morph (0.13 build-time sugar). `morph()` takes two\n* caller-supplied `Box` literals (a FROM rect and a TO rect, both with the Rect\n* CENTER convention for x,y) and a map of target nodes, and compiles a FLIP\n* (First-Last-Invert-Play) position+scale tween on ONE shared element plus an\n* optional opacity cross-fade between the from/to nodes.\n*\n* It is PURE CORE: the FLIP delta is plain arithmetic over the two boxes \u2014 no\n* Yoga, no worldMatrix, no signal evaluation, no scene query (a scene-side\n* `worldBoxOf(node)` convenience is a deferred 0.14 fast-follow). The emission\n* delegates to the validated `clip()` path (one track-emission codepath), so the\n* output is BYTE-INDISTINGUISHABLE from hand-authored `track(...)` \u2014 same\n* determinism contract as `clip`/`stagger`/`springTo`.\n*/\nvar MorphError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"MorphError\";\n\t}\n};\nfunction assertFiniteBox(label, b) {\n\tfor (const [k, v] of [\n\t\t[\"x\", b.x],\n\t\t[\"y\", b.y],\n\t\t[\"w\", b.w],\n\t\t[\"h\", b.h]\n\t]) if (!Number.isFinite(v)) throw new MorphError(`morph ${label}.${k} must be finite (got ${v})`);\n\tif (!(b.w > 0) || !(b.h > 0)) throw new MorphError(`morph ${label} must have w>0 and h>0 (got w=${b.w}, h=${b.h}); a zero/negative box yields a NaN/Infinity scale`);\n}\n/**\n* Resolve a node-level `TweenTarget` and append a prop suffix, producing the\n* `'<nodeId>/<prop>'` string the clip map form resolves (which re-runs the\n* structural/anonymous-id rejection via resolveTweenTarget). A string target is\n* a bare node id; a property-signal carrier exposes its node via TARGET_PATH.\n*\n* The node id may itself carry slashes (an each() clone like 'card/3'); DO NOT\n* re-split it on the FIRST slash \u2014 APPEND the prop and trust the caller. The\n* scene's longest-registered-prefix resolver disambiguates node id vs prop path\n* at bind time, so 'card/3' targets the clone, not the wrapping 'card' Group.\n*/\nfunction nodeTarget(target, prop) {\n\tconst id = typeof target === \"string\" ? target : target[TARGET_PATH];\n\tif (typeof id !== \"string\" || id.length === 0) return `${String(id)}/${prop}`;\n\treturn `${typeof target === \"string\" ? id : id.slice(0, Math.max(0, id.lastIndexOf(\"/\")))}/${prop}`;\n}\n/**\n* Compile a shared-element box-FLIP morph into hand-authored-equivalent tracks.\n*\n* morph({ x: 80, y: 200, w: 120, h: 36 }, { x: 320, y: 200, w: 480, h: 280 },\n* { morphNode: 'morphFx', fromNode: 'chip', toNode: 'document' },\n* { at: 0.5, duration: 1.2 })\n*\n* Emits (via the clip path):\n* morphNode/position : vec2 [at]\u2192from-center, [at+dur]\u2192to-center\n* morphNode/scale : vec2 [at]\u2192from/base, [at+dur]\u2192to/base\n* fromNode/opacity : number[at]\u21921, [at+dur*crossfade]\u21920\n* toNode/opacity : number[at+dur*(1-crossfade)]\u21920, [at+dur]\u21921\n*/\nfunction morph(from, to, targets, opts) {\n\tconst { at, duration } = opts;\n\tconst ease = opts.ease;\n\tconst crossfade = opts.crossfade ?? .5;\n\tconst metric = opts.metric ?? \"transform\";\n\tif (metric !== \"transform\") throw new MorphError(`morph metric '${metric}' is not supported in v1 (only 'transform')`);\n\tassertFiniteBox(\"from\", from);\n\tassertFiniteBox(\"to\", to);\n\tif (!(duration > 0)) throw new MorphError(`morph duration must be > 0 (got ${duration})`);\n\tif (!(crossfade >= 0 && crossfade <= 1)) throw new MorphError(`morph crossfade must be in [0,1] (got ${crossfade})`);\n\tconst base = opts.base ?? {\n\t\tw: to.w,\n\t\th: to.h\n\t};\n\tassertFiniteBox(\"to\", {\n\t\tx: 0,\n\t\ty: 0,\n\t\tw: base.w,\n\t\th: base.h\n\t});\n\tconst fromScale = [from.w / base.w, from.h / base.h];\n\tconst toScale = [to.w / base.w, to.h / base.h];\n\tconst fromCenter = [from.x, from.y];\n\tconst toCenter = [to.x, to.y];\n\tconst channels = {\n\t\tposition: {\n\t\t\tpath: \"position\",\n\t\t\ttype: \"vec2\",\n\t\t\tkeys: [key(0, fromCenter), key(duration, toCenter, ease)]\n\t\t},\n\t\tscale: {\n\t\t\tpath: \"scale\",\n\t\t\ttype: \"vec2\",\n\t\t\tkeys: [key(0, fromScale), key(duration, toScale, ease)]\n\t\t}\n\t};\n\tconst targetMap = {\n\t\tposition: nodeTarget(targets.morphNode, \"position\"),\n\t\tscale: nodeTarget(targets.morphNode, \"scale\")\n\t};\n\tif (targets.fromNode !== void 0 && duration * crossfade > 0) {\n\t\tchannels[\"fromOpacity\"] = {\n\t\t\tpath: \"opacity\",\n\t\t\ttype: \"number\",\n\t\t\tkeys: [key(0, 1), key(duration * crossfade, 0, ease)]\n\t\t};\n\t\ttargetMap[\"fromOpacity\"] = nodeTarget(targets.fromNode, \"opacity\");\n\t}\n\tif (targets.toNode !== void 0 && duration * (1 - crossfade) < duration) {\n\t\tchannels[\"toOpacity\"] = {\n\t\t\tpath: \"opacity\",\n\t\t\ttype: \"number\",\n\t\t\tkeys: [key(duration * (1 - crossfade), 0), key(duration, 1, ease)]\n\t\t};\n\t\ttargetMap[\"toOpacity\"] = nodeTarget(targets.toNode, \"opacity\");\n\t}\n\tconst { tracks } = clip({ channels }).apply(targetMap, at);\n\treturn {\n\t\ttracks,\n\t\tend: at + duration\n\t};\n}\n//#endregion\n//#region src/presence.ts\n/**\n* Presence scheduling (the 0.13 enter/exit sugar): build-time sugar over `clip`\n* that schedules a node's ENTER on `show`, its EXIT to land exactly on `hide`,\n* and authors a real `<nodeId>/opacity` WINDOW GUARD so the node is culled\n* (opacity<=0, see scene/node.ts \u00A73) outside the live window.\n*\n* Like `clip`/`springTo`/`stagger`, this is authoring SUGAR \u2014 it compiles to\n* ordinary keyed `Track[]` via `track()`, byte-INDISTINGUISHABLE from the\n* hand-authored form. There is NO runtime visibility flag and no non-track\n* document state: a presence is a pure function of its arguments. Back-timing\n* the exit is pure arithmetic; reconciling the enter/exit opacity keys with the\n* guard uses the builder's deterministic later-wins coincident-`t` dedup with a\n* fixed merge order, so goldens stay byte-identical.\n*\n* The canonical case is a \"send-line agency moment\": a node enters, lives, and\n* exits on a beat. Siblings anchor to the real exit via the returned `end`.\n*/\nvar PresenceError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"PresenceError\";\n\t}\n};\n/** The default enter/exit: a plain opacity fade over `DEFAULT_FADE` seconds. */\nconst DEFAULT_FADE = .3;\n/** Plain opacity fade-in 0\u21921 (the default enter). */\nfunction defaultEnter() {\n\treturn clip({ channels: { opacity: {\n\t\tpath: \"opacity\",\n\t\tkeys: [key(0, 0), key(DEFAULT_FADE, 1)]\n\t} } });\n}\n/** Plain opacity fade-out 1\u21920 (the default exit). */\nfunction defaultExit() {\n\treturn clip({ channels: { opacity: {\n\t\tpath: \"opacity\",\n\t\tkeys: [key(0, 1), key(DEFAULT_FADE, 0)]\n\t} } });\n}\n/** Effective duration of a clip after a speed multiplier (`apply` divides every t by speed). */\nfunction effectiveDuration(c, opts) {\n\treturn c.duration / (opts?.speed ?? 1);\n}\n/**\n* Sort keys by `t`, breaking ties by original index (a STABLE sort, so that at a\n* coincident t the LATER-emitted key survives the later-wins dedup regardless of\n* the engine's `Array.sort` stability). Pure: returns a new array.\n*/\nfunction stableSortByT(keys) {\n\treturn keys.map((k, i) => [k, i]).sort((a, b) => a[0].t - b[0].t || a[1] - b[1]).map(([k]) => k);\n}\n/**\n* Pull the keys of the clip's OWN `<nodeId>/opacity` track out of an applied\n* result (if it authored one). Non-opacity tracks pass straight through.\n*/\nfunction partitionOpacity(tracks, opacityTarget) {\n\tconst rest = [];\n\tlet opacityKeys = [];\n\tfor (const tr of tracks) if (tr.target === opacityTarget) opacityKeys = tr.keys;\n\telse rest.push(tr);\n\treturn {\n\t\topacityKeys,\n\t\trest\n\t};\n}\n/**\n* Schedule a node's enter/exit presence. Emits keyed `Track[]` only.\n*\n* presence('card', { show: 1, hide: 5 }) // fade in at 1, fade out to land on 5\n*/\nfunction presence(nodeId, opts) {\n\tconst { show, hide } = opts;\n\tconst opacityTarget = resolveTweenTarget(typeof nodeId === \"string\" ? `${nodeId}/opacity` : nodeId);\n\tconst lastSlash = opacityTarget.lastIndexOf(\"/\");\n\tconst nodeIdStr = lastSlash < 0 ? opacityTarget : opacityTarget.slice(0, lastSlash);\n\tconst enter = opts.enter ?? defaultEnter();\n\tconst exit = opts.exit ?? defaultExit();\n\tconst enterRes = enter.apply(nodeIdStr, show, opts.enterOpts);\n\tconst enterEnd = show + effectiveDuration(enter, opts.enterOpts);\n\tconst exitDur = effectiveDuration(exit, opts.exitOpts);\n\tconst exitStart = hide - exitDur;\n\tif (exitStart <= show) throw new PresenceError(`presence('${nodeIdStr}') exit needs ${exitDur.toFixed(3)}s but only ${(hide - show).toFixed(3)}s between show (${show}) and hide (${hide}) \u2014 widen the window or shorten/speed up the exit`);\n\tconst exitRes = exit.apply(nodeIdStr, exitStart, opts.exitOpts);\n\tconst { opacityKeys: enterOpacity, rest: enterRest } = partitionOpacity(enterRes.tracks, opacityTarget);\n\tconst { opacityKeys: exitOpacity, rest: exitRest } = partitionOpacity(exitRes.tracks, opacityTarget);\n\tconst bareGuard = [\n\t\tkey(0, 0, { interp: \"hold\" }),\n\t\tkey(enterEnd, 1, { interp: \"hold\" }),\n\t\tkey(hide, 0, { interp: \"hold\" })\n\t];\n\tconst overlay = [];\n\tif (enterOpacity.length > 0) enterOpacity.forEach((k, i) => {\n\t\tif (i === 0 && k.value !== 0 && k.interp !== \"hold\") overlay.push({\n\t\t\t...k,\n\t\t\tinterp: \"hold\"\n\t\t});\n\t\telse overlay.push(k);\n\t});\n\telse overlay.push(key(show, 0), key(enterEnd, 1));\n\tif (exitOpacity.length > 0) for (const k of exitOpacity) overlay.push(k);\n\telse overlay.push(key(exitStart, 1), key(hide, 0));\n\tconst sorted = stableSortByT([...bareGuard, ...overlay]);\n\tconst deduped = [];\n\tfor (const k of sorted) {\n\t\tconst last = deduped[deduped.length - 1];\n\t\tif (last && last.t === k.t) deduped[deduped.length - 1] = k;\n\t\telse deduped.push(k);\n\t}\n\treturn {\n\t\ttracks: [\n\t\t\ttrack(opacityTarget, \"number\", deduped),\n\t\t\t...enterRest,\n\t\t\t...exitRest\n\t\t],\n\t\tend: hide,\n\t\tshownAt: show,\n\t\thiddenAt: hide\n\t};\n}\n//#endregion\nexport { ClipError, MorphError, PresenceError, clip, clipList, driftLoop, morph, popIn, presence, pulse, slideIn };\n", "import { u as pathFromSegs } from \"./nodes.js\";\nimport \"@glissade/core\";\n//#region src/path.ts\n/**\n* Minimal SVG `<path d>` tokenizer \u2192 `PathSeg[]`, kept inside `scene` so it\n* never imports `@glissade/svg` (that would invert the enforced dependency\n* direction, scene \u2190 svg). Handles the common command set: M/m L/l H/h V/v\n* C/c Q/q Z/z (absolute + relative, implicit-repeat per spec). For the FULL set\n* (S/T/A smooth-curves + arcs, with reflection), import a `.svg` through\n* `@glissade/svg`'s `parseSvgPath`; this lean copy covers hand-written `data`\n* strings. Unknown commands are skipped.\n*/\nfunction parseSvgPathData(d) {\n\tconst tokens = d.match(/[MmLlHhVvCcQqZz]|-?(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][+-]?\\d+)?/g) ?? [];\n\tconst segs = [];\n\tlet i = 0;\n\tlet cx = 0;\n\tlet cy = 0;\n\tlet sx = 0;\n\tlet sy = 0;\n\tlet prevCmd = \"\";\n\tconst num = () => Number(tokens[i++]);\n\tconst isCmd = (t) => !!t && /^[MmLlHhVvCcQqZz]$/.test(t);\n\twhile (i < tokens.length) {\n\t\tlet cmd = tokens[i];\n\t\tif (isCmd(cmd)) i++;\n\t\telse cmd = prevCmd === \"M\" ? \"L\" : prevCmd === \"m\" ? \"l\" : prevCmd;\n\t\tif (!cmd) break;\n\t\tconst rel = cmd === cmd.toLowerCase();\n\t\tswitch (cmd.toUpperCase()) {\n\t\t\tcase \"M\": {\n\t\t\t\tconst x = num() + (rel ? cx : 0);\n\t\t\t\tconst y = num() + (rel ? cy : 0);\n\t\t\t\tcx = x;\n\t\t\t\tcy = y;\n\t\t\t\tsx = x;\n\t\t\t\tsy = y;\n\t\t\t\tsegs.push([\n\t\t\t\t\t\"M\",\n\t\t\t\t\tx,\n\t\t\t\t\ty\n\t\t\t\t]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"L\": {\n\t\t\t\tconst x = num() + (rel ? cx : 0);\n\t\t\t\tconst y = num() + (rel ? cy : 0);\n\t\t\t\tcx = x;\n\t\t\t\tcy = y;\n\t\t\t\tsegs.push([\n\t\t\t\t\t\"L\",\n\t\t\t\t\tx,\n\t\t\t\t\ty\n\t\t\t\t]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"H\": {\n\t\t\t\tconst x = num() + (rel ? cx : 0);\n\t\t\t\tcx = x;\n\t\t\t\tsegs.push([\n\t\t\t\t\t\"L\",\n\t\t\t\t\tx,\n\t\t\t\t\tcy\n\t\t\t\t]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"V\": {\n\t\t\t\tconst y = num() + (rel ? cy : 0);\n\t\t\t\tcy = y;\n\t\t\t\tsegs.push([\n\t\t\t\t\t\"L\",\n\t\t\t\t\tcx,\n\t\t\t\t\ty\n\t\t\t\t]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"C\": {\n\t\t\t\tconst x1 = num() + (rel ? cx : 0);\n\t\t\t\tconst y1 = num() + (rel ? cy : 0);\n\t\t\t\tconst x2 = num() + (rel ? cx : 0);\n\t\t\t\tconst y2 = num() + (rel ? cy : 0);\n\t\t\t\tconst x = num() + (rel ? cx : 0);\n\t\t\t\tconst y = num() + (rel ? cy : 0);\n\t\t\t\tcx = x;\n\t\t\t\tcy = y;\n\t\t\t\tsegs.push([\n\t\t\t\t\t\"C\",\n\t\t\t\t\tx1,\n\t\t\t\t\ty1,\n\t\t\t\t\tx2,\n\t\t\t\t\ty2,\n\t\t\t\t\tx,\n\t\t\t\t\ty\n\t\t\t\t]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"Q\": {\n\t\t\t\tconst x1 = num() + (rel ? cx : 0);\n\t\t\t\tconst y1 = num() + (rel ? cy : 0);\n\t\t\t\tconst x = num() + (rel ? cx : 0);\n\t\t\t\tconst y = num() + (rel ? cy : 0);\n\t\t\t\tcx = x;\n\t\t\t\tcy = y;\n\t\t\t\tsegs.push([\n\t\t\t\t\t\"Q\",\n\t\t\t\t\tx1,\n\t\t\t\t\ty1,\n\t\t\t\t\tx,\n\t\t\t\t\ty\n\t\t\t\t]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"Z\":\n\t\t\t\tsegs.push([\"Z\"]);\n\t\t\t\tcx = sx;\n\t\t\t\tcy = sy;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\ti++;\n\t\t\t\tbreak;\n\t\t}\n\t\tprevCmd = cmd;\n\t}\n\treturn segs;\n}\n/**\n* Convenience: an SVG `d` string \u2192 `PathValue` (the contour form `Path.data`\n* wants), via `parseSvgPathData` \u2192 `pathFromSegs`. Pass the result to a Path:\n* `new Path({ data: pathFromSvg('M0 0 \u2026') })`.\n*/\nfunction pathFromSvg(d) {\n\treturn pathFromSegs(parseSvgPathData(d));\n}\n//#endregion\nexport { parseSvgPathData, pathFromSvg };\n", "import { buildFontRegistry, compileTimeline, signal } from \"@glissade/core\";\nimport { evaluate, validateSceneFonts } from \"@glissade/scene\";\nimport { Canvas2DBackend } from \"@glissade/backend-canvas2d\";\n//#region src/driver.ts\n/**\n* rAF clock: writes monotonically increasing elapsed seconds since start().\n* Playback policy (rate, loop, pause) is the Player's job, not the clock's.\n*/\nfunction clockDriver() {\n\tlet handle = 0;\n\tlet running = false;\n\treturn {\n\t\tstart(write) {\n\t\t\trunning = true;\n\t\t\tlet origin;\n\t\t\tconst tick = (nowMs) => {\n\t\t\t\tif (!running) return;\n\t\t\t\torigin ??= nowMs;\n\t\t\t\twrite((nowMs - origin) / 1e3);\n\t\t\t\thandle = requestAnimationFrame(tick);\n\t\t\t};\n\t\t\thandle = requestAnimationFrame(tick);\n\t\t},\n\t\tstop() {\n\t\t\trunning = false;\n\t\t\tcancelAnimationFrame(handle);\n\t\t}\n\t};\n}\n/** User-controlled scalar: scroll progress 0..1 \u2192 t. Writes the playhead directly. */\nfunction scrollDriver(opts) {\n\tconst axis = opts.axis ?? \"y\";\n\tlet listener = null;\n\tconst el = opts.source;\n\treturn {\n\t\tstart(write, ctx) {\n\t\t\tconst range = opts.range ?? [0, ctx.duration ?? 1];\n\t\t\tconst progress = () => {\n\t\t\t\tif (el instanceof Element) {\n\t\t\t\t\tconst max = axis === \"y\" ? el.scrollHeight - el.clientHeight : el.scrollWidth - el.clientWidth;\n\t\t\t\t\tconst pos = axis === \"y\" ? el.scrollTop : el.scrollLeft;\n\t\t\t\t\treturn max > 0 ? pos / max : 0;\n\t\t\t\t}\n\t\t\t\tconst doc = document.documentElement;\n\t\t\t\tconst max = axis === \"y\" ? doc.scrollHeight - window.innerHeight : doc.scrollWidth - window.innerWidth;\n\t\t\t\tconst pos = axis === \"y\" ? window.scrollY : window.scrollX;\n\t\t\t\treturn max > 0 ? pos / max : 0;\n\t\t\t};\n\t\t\tlistener = () => {\n\t\t\t\tconst p = Math.min(1, Math.max(0, progress()));\n\t\t\t\twrite(range[0] + p * (range[1] - range[0]));\n\t\t\t};\n\t\t\tel.addEventListener(\"scroll\", listener, { passive: true });\n\t\t\tlistener();\n\t\t},\n\t\tstop() {\n\t\t\tif (listener) el.removeEventListener(\"scroll\", listener);\n\t\t\tlistener = null;\n\t\t}\n\t};\n}\n//#endregion\n//#region src/player.ts\n/**\n* The Player (DESIGN.md \u00A74.2): composes a clock Driver with playback policy.\n* The only stateful object in the runtime; its state is rate, loop mode, and\n* a base-time offset. Time-based, never frame-counted \u2014 a dropped frame skips\n* ahead, it never drifts.\n*/\n/** \u00A7A.1: machine and Player track-target sets must be statically disjoint. */\nvar TargetOverlapError = class extends Error {\n\tconstructor(overlaps) {\n\t\tsuper(`machine targets overlap an already-bound target set: ${overlaps.join(\", \")} \u2014 concurrent writers to one property is the silent last-writer-wins \u00A72.2 exists to kill`);\n\t\tthis.name = \"TargetOverlapError\";\n\t}\n};\nfunction createPlayer(init, opts = {}) {\n\tconst { playhead } = init;\n\tlet liveDuration = init.duration;\n\tlet markers = init.markers ?? [];\n\tconst driver = init.driver ?? clockDriver();\n\tconst loop = opts.loop ?? false;\n\tconst background = opts.background ?? \"pause\";\n\tconst visibility = init.visibility ?? (() => \"visible\");\n\tconst callbacks = /* @__PURE__ */ new Map();\n\tconst cueCallbacks = /* @__PURE__ */ new Map();\n\tlet rate = opts.rate ?? 1;\n\tlet playing = false;\n\tconst playingSig = signal(false);\n\tconst setPlaying = (v) => {\n\t\tplaying = v;\n\t\tplayingSig.set(v);\n\t};\n\tlet driverRunning = false;\n\tlet ownTargets = new Set(init.targets ?? []);\n\tconst machines = [];\n\tlet base = 0;\n\tlet elapsedOrigin = null;\n\tlet lastElapsed = 0;\n\tlet range = [0, liveDuration];\n\tlet loopsDone = 0;\n\tlet resolveFinished = null;\n\tfunction fireMarkers(from, to) {\n\t\tif (from === to || callbacks.size === 0 && cueCallbacks.size === 0) return;\n\t\tconst forward = to > from;\n\t\tfor (const m of markers) {\n\t\t\tif (!(forward ? m.t > from && m.t <= to : m.t >= to && m.t < from)) continue;\n\t\t\tfor (const cb of callbacks.get(m.name) ?? []) cb(m);\n\t\t\tconst kind = m.data?.kind;\n\t\t\tif (typeof kind === \"string\") for (const cb of cueCallbacks.get(kind) ?? []) cb(m);\n\t\t}\n\t}\n\tfunction settle(completed) {\n\t\tsetPlaying(false);\n\t\telapsedOrigin = null;\n\t\tconst resolve = resolveFinished;\n\t\tresolveFinished = null;\n\t\tresolve?.(completed);\n\t}\n\tfunction onElapsed(elapsed) {\n\t\tlastElapsed = elapsed;\n\t\tfor (const m of machines) m.step(elapsed);\n\t\tif (!playing) return;\n\t\tif (background === \"pause\" && visibility() === \"hidden\") {\n\t\t\tbase = playhead.peek();\n\t\t\telapsedOrigin = null;\n\t\t\treturn;\n\t\t}\n\t\telapsedOrigin ??= elapsed;\n\t\tconst prev = playhead.peek();\n\t\tlet t = base + (elapsed - elapsedOrigin) * rate;\n\t\tconst [lo, hi] = range;\n\t\tif (!(rate >= 0 ? t >= hi : t <= lo)) {\n\t\t\tplayhead.set(t);\n\t\t\tfireMarkers(prev, t);\n\t\t\treturn;\n\t\t}\n\t\tconst loopCfg = loop === true ? { mode: \"restart\" } : loop === false ? null : loop;\n\t\tconst maxLoops = loopCfg && \"count\" in loopCfg && loopCfg.count !== void 0 ? loopCfg.count : Infinity;\n\t\tif (!loopCfg || loopsDone + 1 >= maxLoops) {\n\t\t\tconst end = rate >= 0 ? hi : lo;\n\t\t\tplayhead.set(end);\n\t\t\tfireMarkers(prev, end);\n\t\t\tsettle(true);\n\t\t\treturn;\n\t\t}\n\t\tloopsDone++;\n\t\thi - lo;\n\t\tif (loopCfg.mode === \"alternate\") {\n\t\t\tfireMarkers(prev, rate >= 0 ? hi : lo);\n\t\t\trate = -rate;\n\t\t\tbase = rate >= 0 ? lo : hi;\n\t\t} else {\n\t\t\tfireMarkers(prev, rate >= 0 ? hi : lo);\n\t\t\tbase = rate >= 0 ? lo : hi;\n\t\t}\n\t\telapsedOrigin = elapsed;\n\t\tt = base;\n\t\tplayhead.set(t);\n\t}\n\tfunction ensureDriver() {\n\t\tif (driverRunning) return;\n\t\tdriverRunning = true;\n\t\tdriver.start(onElapsed, {\n\t\t\tduration: liveDuration,\n\t\t\tvisibility\n\t\t});\n\t}\n\treturn {\n\t\tplayhead,\n\t\tget duration() {\n\t\t\treturn liveDuration;\n\t\t},\n\t\tget playing() {\n\t\t\treturn playing;\n\t\t},\n\t\tplayingSignal: playingSig,\n\t\tget rate() {\n\t\t\treturn rate;\n\t\t},\n\t\tset rate(r) {\n\t\t\tbase = playhead.peek();\n\t\t\telapsedOrigin = playing ? lastElapsed : null;\n\t\t\trate = r;\n\t\t},\n\t\tplay(playOpts) {\n\t\t\tif (resolveFinished) settle(false);\n\t\t\trange = playOpts?.range ?? [0, liveDuration];\n\t\t\tconst t = playhead.peek();\n\t\t\tconst [lo, hi] = range;\n\t\t\tbase = rate >= 0 ? t >= hi || t < lo ? lo : t : t <= lo || t > hi ? hi : t;\n\t\t\tplayhead.set(base);\n\t\t\telapsedOrigin = null;\n\t\t\tloopsDone = 0;\n\t\t\tsetPlaying(true);\n\t\t\tensureDriver();\n\t\t\treturn { finished: new Promise((resolve) => {\n\t\t\t\tresolveFinished = resolve;\n\t\t\t}) };\n\t\t},\n\t\tpause() {\n\t\t\tif (!playing) return;\n\t\t\tbase = playhead.peek();\n\t\t\tsettle(false);\n\t\t},\n\t\tseek(t) {\n\t\t\tbase = Math.min(Math.max(t, 0), liveDuration);\n\t\t\telapsedOrigin = playing ? lastElapsed : null;\n\t\t\tplayhead.set(base);\n\t\t},\n\t\tswap(next) {\n\t\t\tliveDuration = next.duration;\n\t\t\tmarkers = next.markers ?? [];\n\t\t\townTargets = new Set(next.targets ?? []);\n\t\t\tconst t = Math.min(playhead.peek(), liveDuration);\n\t\t\trange = [0, liveDuration];\n\t\t\tbase = t;\n\t\t\telapsedOrigin = playing ? lastElapsed : null;\n\t\t\tloopsDone = 0;\n\t\t\tplayhead.set(t);\n\t\t},\n\t\tattach(machine) {\n\t\t\tif (machine.targets) {\n\t\t\t\tconst overlaps = [];\n\t\t\t\tfor (const t of machine.targets) if (ownTargets.has(t)) overlaps.push(`'${t}' (player timeline)`);\n\t\t\t\telse if (machines.some((m) => m.targets?.has(t))) overlaps.push(`'${t}' (another machine)`);\n\t\t\t\tif (overlaps.length > 0) throw new TargetOverlapError(overlaps);\n\t\t\t}\n\t\t\tmachines.push(machine);\n\t\t\tensureDriver();\n\t\t\treturn () => {\n\t\t\t\tconst i = machines.indexOf(machine);\n\t\t\t\tif (i >= 0) machines.splice(i, 1);\n\t\t\t};\n\t\t},\n\t\tonMarker(name, cb) {\n\t\t\tlet set = callbacks.get(name);\n\t\t\tif (!set) {\n\t\t\t\tset = /* @__PURE__ */ new Set();\n\t\t\t\tcallbacks.set(name, set);\n\t\t\t}\n\t\t\tset.add(cb);\n\t\t\treturn () => set.delete(cb);\n\t\t},\n\t\tonCue(kind, cb) {\n\t\t\tlet set = cueCallbacks.get(kind);\n\t\t\tif (!set) {\n\t\t\t\tset = /* @__PURE__ */ new Set();\n\t\t\t\tcueCallbacks.set(kind, set);\n\t\t\t}\n\t\t\tset.add(cb);\n\t\t\treturn () => set.delete(cb);\n\t\t},\n\t\tdispose() {\n\t\t\tif (playing) settle(false);\n\t\t\tmachines.length = 0;\n\t\t\tif (driverRunning) driver.stop();\n\t\t\tdriverRunning = false;\n\t\t}\n\t};\n}\n//#endregion\n//#region src/reducedMotion.ts\nfunction planReducedMotion(mode, prefersReduced, doc, duration, autoplayRequested) {\n\tconst m = mode ?? \"respect\";\n\tif (m === \"ignore\" || !prefersReduced) return { autoplay: autoplayRequested };\n\tif (typeof m === \"function\") return {\n\t\tautoplay: autoplayRequested,\n\t\tswapTo: m(doc)\n\t};\n\treturn {\n\t\tautoplay: false,\n\t\tseekTo: doc.posterTime ?? duration\n\t};\n}\n/** Live `prefers-reduced-motion: reduce` reading; false off-DOM. */\nfunction mediaPrefersReducedMotion() {\n\treturn typeof matchMedia !== \"undefined\" && matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n}\n//#endregion\n//#region src/mount.ts\n/**\n* mount() \u2014 the vanilla embedding primitive (DESIGN.md \u00A74.3): wire a scene +\n* timeline + canvas into a rendering Player. Rendering is pulled: a playhead\n* invalidation schedules one rAF-coalesced render.\n*/\nfunction mount(initialScene, initialDoc, canvas, opts = {}) {\n\tlet scene = initialScene;\n\tlet doc = initialDoc;\n\tconst compiled = compileTimeline(doc);\n\tconst backend = new Canvas2DBackend(canvas);\n\tscene.setTextMeasurer(backend);\n\tconst playhead = scene.playhead;\n\tconst player = createPlayer({\n\t\tplayhead,\n\t\tduration: compiled.duration,\n\t\tmarkers: compiled.markers,\n\t\ttargets: compiled.tracks.keys()\n\t}, opts);\n\tconst renderNow = () => backend.render(evaluate(scene, doc, playhead.peek()));\n\tlet scheduled = false;\n\tconst schedule = () => {\n\t\tif (scheduled) return;\n\t\tscheduled = true;\n\t\trequestAnimationFrame(() => {\n\t\t\tscheduled = false;\n\t\t\trenderNow();\n\t\t});\n\t};\n\tconst unsubscribe = playhead.subscribe(schedule);\n\tconst loadFonts = (forDoc) => {\n\t\tif (typeof FontFace === \"undefined\") return;\n\t\tconst registry = buildFontRegistry(forDoc.assets);\n\t\tfor (const f of registry.faces()) {\n\t\t\tconst face = new FontFace(f.family, `url(${f.url})`, {\n\t\t\t\tweight: String(f.weight),\n\t\t\t\tstyle: f.style\n\t\t\t});\n\t\t\tdocument.fonts.add(face);\n\t\t\tface.load().then(() => renderNow(), () => void 0);\n\t\t}\n\t\tvalidateSceneFonts(scene, forDoc, async (url) => {\n\t\t\ttry {\n\t\t\t\tconst resp = await fetch(url);\n\t\t\t\treturn resp.ok ? await resp.arrayBuffer() : void 0;\n\t\t\t} catch {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}, {\n\t\t\tmode: opts.strictFonts ? \"strict\" : \"dev\",\n\t\t\t...opts.osFonts !== void 0 ? { osFamilies: opts.osFonts } : {}\n\t\t});\n\t};\n\tloadFonts(doc);\n\tconst prefersReduced = (opts.prefersReducedMotion ?? mediaPrefersReducedMotion)();\n\tconst plan = planReducedMotion(opts.reducedMotion, prefersReduced, doc, compiled.duration, !!opts.autoplay);\n\tif (plan.swapTo) {\n\t\tdoc = plan.swapTo;\n\t\tconst recompiled = compileTimeline(doc);\n\t\tplayer.swap({\n\t\t\tduration: recompiled.duration,\n\t\t\tmarkers: recompiled.markers,\n\t\t\ttargets: recompiled.tracks.keys()\n\t\t});\n\t\tloadFonts(doc);\n\t}\n\tif (plan.seekTo !== void 0) player.seek(plan.seekTo);\n\trenderNow();\n\tif (plan.autoplay) player.play();\n\treturn {\n\t\tplayer,\n\t\tbackend,\n\t\trender: renderNow,\n\t\tswap(next) {\n\t\t\tif (next.scene) {\n\t\t\t\tscene = next.scene;\n\t\t\t\tscene.setTextMeasurer(backend);\n\t\t\t}\n\t\t\tdoc = next.timeline;\n\t\t\tconst recompiled = compileTimeline(doc);\n\t\t\tplayer.swap({\n\t\t\t\tduration: recompiled.duration,\n\t\t\t\tmarkers: recompiled.markers,\n\t\t\t\ttargets: recompiled.tracks.keys()\n\t\t\t});\n\t\t\tloadFonts(doc);\n\t\t\trenderNow();\n\t\t},\n\t\tdispose() {\n\t\t\tunsubscribe();\n\t\t\tplayer.dispose();\n\t\t\tbackend.dispose();\n\t\t}\n\t};\n}\n//#endregion\n//#region src/hmr.ts\n/**\n* Vite HMR glue for a mounted embed (DESIGN.md \u00A74.3). When the scene module is\n* edited, the dev server hands us the re-evaluated module; we hot-swap the live\n* Mounted without losing the playhead (see Mounted.swap / Player.swap). The\n* consumer owns the dependency path (only they know it), so this returns the\n* accept callback rather than calling `import.meta.hot.accept` itself:\n*\n* import * as sceneMod from './hero.scene';\n* const mounted = mount(sceneMod.createScene(), sceneMod.timeline, canvas);\n* import.meta.hot?.accept(\n* './hero.scene',\n* swapOnHmr(mounted, sceneMod.timeline, (m) => ({ scene: m.createScene(), timeline: m.timeline })),\n* );\n*\n* It also warns when an edit removes a label the previous timeline declared \u2014\n* code that seeks to that label (`play({ range: [labels.x, \u2026] })`) would break.\n*/\n/**\n* Build the `import.meta.hot.accept` callback that hot-swaps `mounted` from a\n* re-evaluated scene module. `rerun` maps the updated module namespace to the\n* fresh `{ scene?, timeline }`.\n*/\nfunction swapOnHmr(mounted, initialTimeline, rerun) {\n\tlet prevLabels = Object.keys(compileTimeline(initialTimeline).labels);\n\treturn (mod) => {\n\t\tif (mod == null) return;\n\t\tconst next = rerun(mod);\n\t\tconst nextLabels = Object.keys(compileTimeline(next.timeline).labels);\n\t\tconst dropped = prevLabels.filter((l) => !nextLabels.includes(l));\n\t\tif (dropped.length > 0) console.warn(`[glissade] HMR: this edit removed label(s) ${dropped.map((l) => `'${l}'`).join(\", \")} \u2014 anything seeking to them will no longer resolve`);\n\t\tprevLabels = nextLabels;\n\t\tmounted.swap(next);\n\t};\n}\n//#endregion\nexport { TargetOverlapError, clockDriver, createPlayer, mediaPrefersReducedMotion, mount, planReducedMotion, scrollDriver, swapOnHmr };\n", "import \"@glissade/scene\";\nimport { mount } from \"@glissade/player\";\n//#region src/index.ts\nconst TEMPLATE = `\n<style>\n :host { display: inline-block; }\n canvas { display: block; width: 100%; height: auto; }\n .controls { display: flex; gap: 8px; align-items: center; padding: 6px 4px; font: 12px system-ui, sans-serif; }\n button { font: inherit; cursor: pointer; }\n input[type='range'] { flex: 1; }\n .time { font-variant-numeric: tabular-nums; opacity: 0.75; min-width: 9ch; text-align: right; }\n</style>\n<canvas part=\"canvas\"></canvas>\n`;\nvar GsPlayerElement = class extends HTMLElement {\n\tstatic observedAttributes = [\n\t\t\"loop\",\n\t\t\"pingpong\",\n\t\t\"yoyo\",\n\t\t\"autoplay\",\n\t\t\"controls\"\n\t];\n\t#mounted = null;\n\t#scene = null;\n\t#unsubscribe = null;\n\t#scrubbing = false;\n\t#playhead = null;\n\t#shadow;\n\t#canvas;\n\t#controls = null;\n\tconstructor() {\n\t\tsuper();\n\t\tconst root = this.attachShadow({ mode: \"open\" });\n\t\troot.innerHTML = TEMPLATE;\n\t\tthis.#shadow = root;\n\t\tthis.#canvas = root.querySelector(\"canvas\");\n\t}\n\t/** The scene module to play; assigning (re)mounts. */\n\tget scene() {\n\t\treturn this.#scene;\n\t}\n\tset scene(mod) {\n\t\tthis.#scene = mod;\n\t\tthis.#remount();\n\t}\n\t/** The underlying Player, once a scene is mounted. */\n\tget player() {\n\t\treturn this.#mounted?.player ?? null;\n\t}\n\tconnectedCallback() {\n\t\tthis.#syncControls();\n\t\tthis.#remount();\n\t}\n\tdisconnectedCallback() {\n\t\tthis.#teardown();\n\t}\n\tattributeChangedCallback(name) {\n\t\tif (name === \"controls\") {\n\t\t\tthis.#syncControls();\n\t\t\tthis.#syncControlsSubscription();\n\t\t\treturn;\n\t\t}\n\t\tif (this.isConnected && this.#scene) this.#remount();\n\t}\n\t/** Wire the scrubber/time playhead subscription when controls exist, unwire\n\t* when they don't \u2014 against the existing playhead, so toggling controls never\n\t* disturbs playback position. */\n\t#syncControlsSubscription() {\n\t\tif (this.#controls && !this.#unsubscribe && this.#playhead) {\n\t\t\tthis.#unsubscribe = this.#playhead.subscribe(() => {\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tif (!this.#controls) return;\n\t\t\t\t\tthis.#syncReadout();\n\t\t\t\t\tthis.#syncButton();\n\t\t\t\t});\n\t\t\t});\n\t\t\tthis.#syncReadout();\n\t\t\tthis.#syncButton();\n\t\t} else if (!this.#controls && this.#unsubscribe) {\n\t\t\tthis.#unsubscribe();\n\t\t\tthis.#unsubscribe = null;\n\t\t}\n\t}\n\t/** Build the controls subtree + listeners on demand; tear them down when gone. */\n\t#syncControls() {\n\t\tconst want = this.hasAttribute(\"controls\");\n\t\tif (want && !this.#controls) this.#buildControls();\n\t\telse if (!want && this.#controls) this.#destroyControls();\n\t}\n\t#buildControls() {\n\t\tconst div = document.createElement(\"div\");\n\t\tdiv.className = \"controls\";\n\t\tdiv.setAttribute(\"part\", \"controls\");\n\t\tconst button = document.createElement(\"button\");\n\t\tbutton.setAttribute(\"part\", \"button\");\n\t\tbutton.setAttribute(\"aria-label\", \"Play or pause\");\n\t\tbutton.textContent = \"Play\";\n\t\tconst scrubber = document.createElement(\"input\");\n\t\tscrubber.setAttribute(\"part\", \"scrubber\");\n\t\tscrubber.type = \"range\";\n\t\tscrubber.min = \"0\";\n\t\tscrubber.max = \"1\";\n\t\tscrubber.step = \"0.0001\";\n\t\tscrubber.value = \"0\";\n\t\tscrubber.setAttribute(\"aria-label\", \"Seek\");\n\t\tconst time = document.createElement(\"span\");\n\t\ttime.className = \"time\";\n\t\ttime.setAttribute(\"part\", \"time\");\n\t\tconst onClick = () => {\n\t\t\tconst player = this.#mounted?.player;\n\t\t\tif (!player) return;\n\t\t\tif (player.playing) player.pause();\n\t\t\telse player.play();\n\t\t\tthis.#syncButton();\n\t\t};\n\t\tconst onInput = () => {\n\t\t\tconst player = this.#mounted?.player;\n\t\t\tif (!player) return;\n\t\t\tthis.#scrubbing = true;\n\t\t\tplayer.pause();\n\t\t\tplayer.seek(parseFloat(scrubber.value) * player.duration);\n\t\t\tthis.#scrubbing = false;\n\t\t\tthis.#syncButton();\n\t\t};\n\t\tbutton.addEventListener(\"click\", onClick);\n\t\tscrubber.addEventListener(\"input\", onInput);\n\t\tdiv.append(button, scrubber, time);\n\t\tthis.#shadow.append(div);\n\t\tthis.#controls = {\n\t\t\troot: div,\n\t\t\tbutton,\n\t\t\tscrubber,\n\t\t\ttime,\n\t\t\tonClick,\n\t\t\tonInput\n\t\t};\n\t\tthis.#syncReadout();\n\t\tthis.#syncButton();\n\t}\n\t#destroyControls() {\n\t\tconst c = this.#controls;\n\t\tif (!c) return;\n\t\tc.button.removeEventListener(\"click\", c.onClick);\n\t\tc.scrubber.removeEventListener(\"input\", c.onInput);\n\t\tc.root.remove();\n\t\tthis.#controls = null;\n\t}\n\t#teardown() {\n\t\tthis.#unsubscribe?.();\n\t\tthis.#unsubscribe = null;\n\t\tthis.#mounted?.dispose();\n\t\tthis.#mounted = null;\n\t\tthis.#playhead = null;\n\t}\n\t#remount() {\n\t\tthis.#teardown();\n\t\tif (!this.#scene || !this.isConnected) return;\n\t\tconst scene = this.#scene.createScene();\n\t\tthis.#canvas.width = scene.size.w;\n\t\tthis.#canvas.height = scene.size.h;\n\t\tconst loop = this.hasAttribute(\"pingpong\") || this.hasAttribute(\"yoyo\") ? { mode: \"alternate\" } : this.hasAttribute(\"loop\");\n\t\tthis.#mounted = mount(scene, this.#scene.timeline, this.#canvas, {\n\t\t\tloop,\n\t\t\tautoplay: this.hasAttribute(\"autoplay\")\n\t\t});\n\t\tthis.#playhead = scene.playhead;\n\t\tthis.#syncControlsSubscription();\n\t}\n\t#syncReadout() {\n\t\tconst c = this.#controls;\n\t\tconst player = this.#mounted?.player;\n\t\tif (!c || !player) return;\n\t\tconst t = this.#playhead?.peek() ?? 0;\n\t\tc.time.textContent = `${t.toFixed(2)} / ${player.duration.toFixed(2)}s`;\n\t\tif (!this.#scrubbing && player.duration > 0) c.scrubber.value = String(t / player.duration);\n\t}\n\t#syncButton() {\n\t\tconst c = this.#controls;\n\t\tif (!c) return;\n\t\tconst playing = this.#mounted?.player.playing ?? false;\n\t\tc.button.textContent = playing ? \"Pause\" : \"Play\";\n\t}\n};\n/** Define <gs-player> (idempotent). Importing this module defines it. */\nfunction defineGsPlayer(tagName = \"gs-player\") {\n\tif (!customElements.get(tagName)) customElements.define(tagName, GsPlayerElement);\n}\ndefineGsPlayer();\n//#endregion\nexport { GsPlayerElement, defineGsPlayer };\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["index_exports", "__export", "ALL_FILTER_KINDS", "BakeError", "BindTypeMismatchError", "Canvas2DBackend", "Circle", "CircularDependencyError", "ClipError", "ColdAssetError", "ColorParseError", "Custom", "DEFAULT_EASE", "DL_SNAPSHOT_VERSION", "DeterminismViolationError", "DlSnapshotError", "DuplicateNodeIdError", "EachError", "FilterValidationError", "FollowPath", "FontValidationError", "Group", "GsPlayerElement", "Highlight", "IDENTITY", "ImageNode", "LayoutEngineMissingError", "MEASURE_QUANTUM_PX", "MESH_DOWNSCALE", "MESH_SHEPARD_POWER", "MESH_SIGMA", "MorphError", "NODE_TAXONOMY", "Node", "Path", "PositionError", "PresenceError", "Raster2D", "Rect", "ReservedNodeIdError", "ShaderEffect", "SidecarVersionError", "SketchValidationError", "TARGET_PATH", "TargetOverlapError", "Text", "TextCursor", "TimelineValidationError", "TokenHighlight", "TokenMatchError", "TrackValidationError", "UnboundTargetError", "UnknownEasingError", "UnknownValueTypeError", "UnresolvableTargetError", "ValueTypeInferenceError", "Video", "WriteDuringEvaluationError", "applyToPoint", "arcLength", "assignKeyIds", "audioOffsetSamples", "auditCacheCold", "bake", "bakeCheckpointed", "batch", "beginReadPhase", "bindScene", "bindTimeline", "booleanType", "breakLines", "buildFontRegistry", "buildTimeline", "clip", "clipList", "clockDriver", "coercePathData", "collapseReplacer", "collectLocalizedTextUsages", "collectTextUsages", "colorType", "compileTimeline", "computed", "createDisplayListBuilder", "createPlayer", "createPlayhead", "createScene", "cubicBezier", "cubicBezierDerivative", "defineGsPlayer", "deleteSidecarTrack", "diffDisplayLists", "drawOn", "drawOnEach", "driftLoop", "each", "easingDerivatives", "easings", "emitDevWarning", "emptySidecar", "endReadPhase", "estimatingMeasurer", "evaluate", "evaluateAt", "filtersToCanvasFilter", "flatten", "followPath", "fontString", "formatColor", "formatDisplayDiff", "fromTRS", "getLayoutEngine", "getTimelineCallbacks", "getValueType", "glow", "hachureLines", "hashKeys", "highlight", "inReadPhase", "inferValueType", "invert", "isDurationEditable", "isEditableNodeId", "isExemptFamily", "key", "lerpColor", "matEquals", "matchTokenRun", "mediaPrefersReducedMotion", "mergeSidecar", "mergeSidecarDetailed", "meshRasterSize", "migrateSidecar", "morph", "motionPath", "mount", "multiply", "namedEasing", "normalizeEditedKeys", "numberType", "oklabToRgba", "paintType", "parseCmap", "parseColor", "parseDisplaySnapshot", "parseSvgPathData", "pathFromSegs", "pathFromSvg", "pathLength", "pathType", "planReducedMotion", "pointAtLength", "popIn", "presence", "pulse", "quantize", "random", "rasterizeMesh", "registerValueType", "reprOf", "requireLayoutEngine", "resolveAnchor", "resolveEase", "resolveEaseDerivative", "resolveSketch", "resolveTweenTarget", "revealSchedule", "rgbaToOklab", "roughen", "roundedRectSegs", "sampleTrack", "scrollDriver", "segmentGraphemes", "segmentWords", "serializeDisplayList", "setDefaultMeasurer", "setDevWarning", "setLayoutEngine", "setScheduler", "setShaderRunner", "setSidecarTrack", "signal", "sketchStrokes", "slideIn", "spring", "springEasing", "springEasingDerivative", "springPresets", "springTo", "stagger", "stringType", "swapOnHmr", "synchronousScheduler", "targetNodeId", "textCursor", "timeline", "tokenHighlight", "track", "typewriter", "untracked", "validateFilters", "validateFonts", "validateHachure", "validateSceneFonts", "validateSketch", "validateTrack", "vec2ArcType", "vec2Equals", "vec2Signal", "vec2Type", "velocityAt", "withDeterminismGuards", "c2", "c3", "c4", "c5", "bounceOut", "easings", "bounceOutD", "LN2", "easingDerivatives", "theta", "amp", "phi", "psi", "DEFAULT_EASE", "bezierKernel", "p1x", "p1y", "p2x", "p2y", "ax", "bx", "cx", "ay", "by", "cy", "sampleX", "u", "sampleY", "sampleDX", "x", "i", "err", "d", "lo", "hi", "cubicBezier", "k", "t", "cubicBezierDerivative", "dx", "UnknownEasingError", "name", "namedEasing", "fn", "DEFAULT_SETTLE_TOLERANCE", "params", "cfg", "_a", "mass", "rawDerivative", "w0", "zeta", "wd", "s", "r1", "r2", "rawValue", "duration", "opts", "tol", "mid", "value", "retarget", "x0", "v0", "value0", "velocity0", "envelope", "b", "tau", "c2v", "rp", "rm", "cp", "cm", "eps", "guard", "spring", "springPresets", "springEasing", "p", "springEasingDerivative", "scale", "devWarn", "msg", "setDevWarning", "emitDevWarning", "message", "HEX_RE", "RGB_RE", "ColorParseError", "input", "parseColor", "hex", "h", "c", "n", "rgb", "alphaRaw", "a", "formatColor", "clampByte", "v", "base", "srgbToLinear", "linearToSrgb", "rgbaToOklab", "r", "g", "l", "m", "oklabToRgba", "lerpColor", "from", "to", "mix", "y", "registry", "registerValueType", "vt", "UnknownValueTypeError", "id", "getValueType", "reprOf", "_b", "numberType", "vec2Equals", "vec2Type", "vec2ArcType", "ra", "rb", "angA", "dAng", "ang", "colorType", "discrete", "stringType", "booleanType", "lerpV", "pathTopologyMatches", "ca", "cb", "warnedPathTopology", "pathType", "j", "eq", "lerpN", "lerpPt", "transparentOf", "color", "__spreadProps", "__spreadValues", "safeLerpColor", "e", "liftColor", "shape", "stops", "interp", "warnedPaintShape", "paintSnap", "stopsEqual", "paintType", "_c", "_d", "points", "pa", "pb", "bg", "A", "B", "sa", "q", "ValueTypeInferenceError", "isContour", "isPaint", "inferValueType", "TrackValidationError", "target", "validateTrack", "track", "prev", "cur", "key", "easeOrOpts", "springTo", "endT", "stagger", "tracks", "delay", "at", "tr", "type", "keys", "resolveEase", "spec", "warnedNumericDerivative", "resolveEaseDerivative", "samplerStates", "state", "easeFor", "findSegment", "hint", "velocityAt", "zero", "arrival", "segDur", "eased", "sampleTrack", "easedT", "TARGET_PATH", "UnresolvableTargetError", "targetNodeId", "slash", "isEditableNodeId", "resolveTweenTarget", "path", "u16", "dv", "off", "u32", "encodingScore", "platform", "encoding", "parseFormat4", "base", "into", "segCountX2", "segCount", "endOff", "startOff", "deltaOff", "rangeOff", "i", "end", "start", "idDelta", "idRangeOffset", "c", "glyph", "g", "parseFormat12", "declared", "maxGroups", "nGroups", "startChar", "endChar", "startGlyph", "parseCmap", "bytes", "out", "sfntOff", "numTables", "cmapOff", "rec", "nSub", "bestOff", "bestScore", "subOff", "score", "format", "e", "timeline", "init", "_a", "doc", "TimelineValidationError", "message", "validateSpringKeys", "tr", "i", "k", "expected", "spring", "audioOffsetSamples", "at", "sampleRate", "rebaseKeys", "keys", "timeScale", "__spreadProps", "__spreadValues", "flatten", "unit", "out", "counter", "_b", "validateTrack", "child", "scale", "childUnit", "coalesce", "entries", "byTarget", "existing", "start", "end", "existingStart", "existingEnd", "kept", "emitDevWarning", "a", "b", "result", "target", "track", "isDurationEditable", "childExtent", "computeDuration", "max", "last", "m", "compileTimeline", "flat", "tracks", "labels", "markers", "audio", "visitChildren", "children", "_c", "_d", "_e", "base", "childScale", "name", "t", "clip", "MAIN", "SidecarVersionError", "version", "emptySidecar", "migrateSidecar", "main", "hashKeys", "s", "h", "assignKeyIds", "setSidecarTrack", "timelineId", "type", "codeBaselineKeys", "isEditableNodeId", "targetNodeId", "TrackValidationError", "tl", "entry", "deleteSidecarTrack", "_removed", "rest", "__objRest", "__restKey", "reresolveDerived", "mergeSidecarDetailed", "code", "sidecar", "overlay", "drift", "orphans", "merged", "codeLabels", "shadowed", "n", "mergeSidecar", "normalizeEditedKeys", "pass", "ease", "synchronousScheduler", "flush", "scheduler", "pending", "batchDepth", "flushing", "flushScheduled", "MAX_FLUSH_PASSES", "setScheduler", "next", "prev", "requestFlush", "enqueueNotification", "cb", "runFlush", "drain", "thrown", "passes", "batchCbs", "err", "beginNotify", "endNotify", "batch", "fn", "activeConsumer", "readPhaseDepth", "WriteDuringEvaluationError", "CircularDependencyError", "beginReadPhase", "endReadPhase", "inReadPhase", "SignalNode", "init", "__publicField", "_a", "_b", "dep", "level", "d", "wasClean", "i", "prevConsumer", "makeCallable", "node", "extra", "sig", "signal", "initial", "options", "v", "computed", "untracked", "vec2Signal", "ix", "iy", "x", "y", "compound", "a", "b", "baseX", "baseY", "c", "value", "facesOf", "family", "ref", "f", "nearestWeight", "faces", "weight", "best", "bestDist", "dist", "buildFontRegistry", "assets", "families", "out", "entry", "style", "styled", "FontValidationError", "report", "formatReport", "GENERIC_FAMILIES", "isExemptFamily", "osFamilies", "codePoints", "text", "ch", "cp", "parts", "m", "cps", "validateFonts", "usages", "registry", "cmaps", "mode", "unregistered", "missing", "usage", "exempt", "chain", "fam", "set", "emitDevWarning", "PositionError", "pos", "detail", "peekBase", "target", "timelineCallbacks", "getTimelineCallbacks", "doc", "buildTimeline", "build", "insertions", "labels", "__spreadValues", "children", "markers", "callbacks", "durationEditable", "prevStart", "prevEnd", "callCount", "resolvePosition", "at", "rel", "labelRel", "name", "offset", "builder", "opts", "ease", "isSpring", "duration", "spring", "TimelineValidationError", "start", "ins", "resolveTweenTarget", "from", "to", "targets", "spec", "n", "base", "rankOf", "maxDelay", "tweenOpts", "t", "child", "scale", "compileTimeline", "subs", "gap", "time", "sub", "data", "merged", "last", "nodeId", "targetNodeId", "isEditableNodeId", "byTarget", "list", "tracks", "keys", "editable", "prevValue", "first", "lastKey", "fromKey", "deduped", "k", "tr", "inferValueType", "timeline", "__spreadProps", "_c", "_pos", "__objRest", "arg", "createPlayhead", "UnboundTargetError", "BindTypeMismatchError", "got", "expected", "prop", "want", "hint", "bindTimeline", "compiled", "resolve", "playhead", "bound", "samplers", "expects", "gotRepr", "reprOf", "e", "sampleTrack", "velocityAt", "evaluateAt", "read", "random", "seed", "BakeError", "emit", "acc", "sampled", "path", "toTracks", "bake", "cfg", "rng", "dt", "frames", "world", "bakeCheckpointed", "totalFrames", "draws", "baseRng", "countingRng", "rngAt", "targetDraws", "r", "checkpoints", "simulatedTo", "ensureSimulatedTo", "frame", "fromFrame", "toFrame", "cpFrame", "w", "IDENTITY", "z", "v", "multiply", "m1", "m2", "a1", "b1", "c1", "d1", "e1", "f1", "a2", "b2", "c2", "d2", "e2", "f2", "fromTRS", "position", "rotationDeg", "scale", "r", "cos", "sin", "sx", "sy", "invert", "m", "a", "b", "c", "d", "e", "f", "det", "ia", "ib", "ic", "id", "applyToPoint", "p", "matEquals", "collapseReplacer", "_key", "value", "commandView", "cmd", "resources", "out", "k", "stable", "diffFields", "changes", "keys", "diffDisplayLists", "deltas", "n", "ca", "cb", "va", "vb", "sizeDiffers", "__spreadValues", "formatDisplayDiff", "diff", "_a", "_b", "_c", "_d", "lines", "op", "DL_SNAPSHOT_VERSION", "serializeDisplayList", "dl", "snapshot", "DlSnapshotError", "message", "parseDisplaySnapshot", "json", "doc", "FilterValidationError", "FILTER_KINDS", "validateFilters", "filters", "filtersToCanvasFilter", "glow", "color", "radius", "intensity", "layers", "i", "commandResourceIds", "fnv1a", "s", "h", "createDisplayListBuilder", "size", "commands", "interned", "res", "hit", "start", "end", "localIds", "usedResources", "remap", "local", "sliceCmds", "__spreadProps", "key", "MEASURE_QUANTUM_PX", "quantize", "defaultMeasurer", "setDefaultMeasurer", "fallbackMeasurer", "estimatingMeasurer", "text", "font", "wordSegmenter", "segmentWords", "raw", "glued", "seg", "w", "graphemeSegmenter", "segmentGraphemes", "breakLines", "maxWidth", "measurer", "paragraphs", "para", "words", "line", "word", "candidate", "ANCHOR_PRESETS", "resolveAnchor", "spec", "preset", "initScalar", "sig", "init", "initVec2", "_warnedAnchor", "Node", "props", "__publicField", "__privateAdd", "vec2Signal", "signal", "computed", "trs", "path", "expects", "TARGET_PATH", "ax", "ay", "__privateGet", "__privateSet", "emitDevWarning", "ctx", "opacity", "isIdentity", "shader", "group", "wantsKey", "pushIdx", "drawStart", "KINDS", "SketchValidationError", "validateSketch", "resolveSketch", "_e", "_f", "_g", "_h", "_i", "_j", "_k", "_l", "_m", "cubic", "p0", "p1", "t", "mt", "quad", "ellipse", "cx", "cy", "rx", "ry", "rot", "ang", "ex", "ey", "flatten", "segs", "steps", "polys", "cur", "px", "py", "ensure", "x", "y", "a0", "begin", "arcLength", "poly", "len", "validateHachure", "hachureLines", "rng", "minX", "minY", "maxX", "maxY", "sa", "toRot", "fromRot", "rMinX", "rMinY", "rMaxX", "rMaxY", "corners", "rough", "jit", "roughen", "style", "resolved", "strokes", "pass", "pts", "bx", "by", "dx", "dy", "bow", "mx", "my", "hashStr", "sketchStrokes", "seed", "random", "Custom", "roundedRectSegs", "HALF", "_structure", "Group", "child", "sorted", "node", "toPaint", "fill", "Shape", "initProp", "stroke", "width", "reveal", "emitDrawOnStroke", "ink", "clipPath", "hatch", "hp", "drawOn", "passSegs", "splitContours", "paint", "baseStroke", "contour", "coercePathData", "data", "pathFromSegs", "contours", "push", "inT", "outT", "last", "qx", "qy", "l", "Rect", "Circle", "Path", "coerced", "vx", "vy", "candidates", "ImageNode", "image", "Video", "mediaT", "Text", "widest", "firstLine", "ascent", "step", "boxes", "met", "lineW", "lineX", "prefix", "lead", "before", "after", "g", "total", "revealRaw", "shown", "remaining", "gs", "masked", "show", "revealSchedule", "src", "marks", "li", "need", "time", "LayoutEngineMissingError", "engine", "setLayoutEngine", "e", "getLayoutEngine", "requireLayoutEngine", "NODE_TAXONOMY", "Highlight", "Node", "props", "_a", "_b", "__publicField", "init$2", "signal", "out", "ctx", "progress", "px", "py", "boxes", "b", "total", "sum", "tm", "matEquals", "IDENTITY", "color", "remaining", "fill", "r", "path", "roundedRectSegs", "highlight", "text", "__spreadProps", "__spreadValues", "sig", "v", "TextCursor", "_c", "_d", "init$1", "head", "on", "typing", "period", "textCursor", "DEFAULT_PER_CHAR", "typewriter", "target", "edits", "opts", "start", "globalPer", "gap", "t", "shown", "keys", "key", "marks", "steps", "ei", "edit", "stepStart", "per", "segmentGraphemes", "value", "i", "removed", "track", "EachError", "message", "mix", "seed", "h", "JITTER_SALT", "placeAt", "layout", "_e", "_f", "_g", "_h", "_i", "_j", "_k", "_l", "align", "x0", "y0", "cols", "rows", "order", "col", "row", "gapX", "gapY", "spanX", "spanY", "radius", "cx", "cy", "theta", "distributeFn", "distribute", "mid", "staggerFn", "motion", "n", "s", "each", "factory", "baseSeed", "hashStr", "box", "ox", "oy", "children", "places", "seen", "id", "frac", "random", "child", "node", "Group", "tracks", "end", "m", "at", "rngI", "overrides", "applyOpts", "drawOn", "duration", "ease", "drawOnEach", "targets", "delay", "stagger", "DeterminismViolationError", "api", "bannedSlots", "g", "slots", "withDeterminismGuards", "mode", "fn", "saved", "warned", "args", "emitDevWarning", "DuplicateNodeIdError", "ReservedNodeIdError", "indexNodes", "root", "into", "measurerSource", "createScene", "init", "nodes", "playhead", "createPlayhead", "measurer", "fallbackMeasurer", "slash", "bindings", "bindScene", "scene", "doc", "perScene", "entry", "compiled", "compileTimeline", "bindTimeline", "evaluate", "fps", "evaluateAt", "createDisplayListBuilder", "hashDisplayList", "dl", "collapseReplacer", "auditCacheCold", "warm", "cold", "a", "frame", "ctxA", "ctxB", "groupFallback", "nodeA", "nodeB", "ea", "eb", "dlA", "dlB", "first", "diffDisplayLists", "ALL_FILTER_KINDS", "clamp01", "cubicPoint", "p0", "p1", "p2", "p3", "mt", "c", "d", "toCubics", "ct", "motionPath", "cubics", "pts", "cum", "prev", "acc", "cub", "k", "p", "locate", "span", "f", "tangentAt", "dx", "dy", "len", "pathLength", "pointAtLength", "FollowPath", "sOpts", "getPath", "Path", "cachedPath", "cachedSampler", "sampler", "pv", "offset", "followPath", "TokenMatchError", "stripWs", "matchTokenRun", "token", "occurrence", "want", "j", "TokenHighlight", "spec", "index", "run", "initVec", "vec2Signal", "runText", "from", "to", "pushedTransform", "opacity", "lineRects", "last", "cur", "grouped", "scale", "q", "fillW", "w", "x", "y", "rad", "tokenHighlight", "collectTextUsages", "visit", "Text", "nodeIdOf", "collectLocalizedTextUsages", "tr", "validateSceneFonts", "loadBytes", "options", "registry", "buildFontRegistry", "usages", "wanted", "u", "cmaps", "family", "face", "bytes", "parseCmap", "validateFonts", "ColdAssetError", "assetId", "detail", "mediaT", "ShaderEffect", "map", "name", "uniforms", "smoothstep", "GAUSS_K", "GAUSS_NORM", "gaussianEase", "densifyStops", "stops", "o0", "seg", "lerpColor", "MESH_DOWNSCALE", "MESH_SHEPARD_POWER", "MESH_SIGMA", "MESH_EPS", "MESH_MAX_DIM", "rasterizeMesh", "mesh", "rgbaToOklab", "parseColor", "bg", "gaussian", "twoSigmaSq", "wsum", "L", "A", "B", "alpha", "pinned", "du", "dv", "d2", "weight", "rgba", "oklabToRgba", "inv", "o", "meshRasterSize", "bw", "bh", "warnedMeshStroke", "meshRepresentativeColor", "paint", "resolveFill", "bounds", "fx", "fy", "tx", "ty", "fontString", "font", "RASTER_CACHE_CAP", "transformKey", "filterOutset", "filters", "growBounds", "accumulateRect", "layer", "x1", "y1", "segsBounds", "segs", "pt", "Raster2D", "host", "shaderCaps", "cacheEnabled", "image", "source", "res", "img", "e", "resources", "pooled", "canvas", "prior", "oldest", "evicted", "hit", "buf", "tile", "tileCtx", "parent", "parentLayer", "drawable", "unbounded", "shaderReplaced", "blend", "filter", "hasFilter", "outset", "clippable", "clip", "list", "base", "layers", "ctxOf", "top", "mat", "matStack", "commands", "ci", "cmd", "multiply", "sb", "width", "dw", "dh", "lruKey", "filtersToCanvasFilter", "depth", "layerCanvas", "layerCtx", "replaced", "shaderRunner", "setShaderRunner", "runner", "createLayerCanvas", "w", "h", "canvas", "MAX_TEXTURE", "Canvas2DBackend", "target", "opts", "__publicField", "_a", "Raster2D", "c", "layer", "shader", "ALL_FILTER_KINDS", "assetId", "image", "source", "text", "font", "ctx", "fontString", "m", "list", "ClipError", "message", "assertOverrideType", "target", "resolvedType", "value", "got", "inferValueType", "e", "stringFamily", "t", "channelDuration", "ch", "resolveChannelTarget", "channel", "path", "resolveTweenTarget", "override", "compileChannel", "startSec", "speed", "_a", "type", "lastIdx", "track", "k", "i", "overridden", "out", "ease", "clip", "spec", "names", "duration", "name", "apply", "opts", "overrides", "tracks", "end", "trackTarget", "clipList", "c", "targets", "delay", "at", "_b", "_stagger", "applyOpts", "__objRest", "r", "popIn", "d", "key", "slideIn", "edge", "_c", "dist", "from", "pulse", "peak", "driftLoop", "a", "MorphError", "assertFiniteBox", "label", "b", "v", "nodeTarget", "prop", "id", "TARGET_PATH", "morph", "to", "crossfade", "metric", "base", "fromScale", "toScale", "fromCenter", "toCenter", "channels", "targetMap", "PresenceError", "DEFAULT_FADE", "defaultEnter", "defaultExit", "effectiveDuration", "stableSortByT", "keys", "partitionOpacity", "opacityTarget", "rest", "opacityKeys", "tr", "presence", "nodeId", "show", "hide", "lastSlash", "nodeIdStr", "enter", "exit", "enterRes", "enterEnd", "exitDur", "exitStart", "exitRes", "enterOpacity", "enterRest", "exitOpacity", "exitRest", "bareGuard", "overlay", "__spreadProps", "__spreadValues", "sorted", "deduped", "last", "parseSvgPathData", "d", "_a", "tokens", "segs", "i", "cx", "cy", "sx", "sy", "prevCmd", "num", "isCmd", "t", "cmd", "rel", "x", "y", "x1", "y1", "x2", "y2", "pathFromSvg", "pathFromSegs", "clockDriver", "handle", "running", "write", "origin", "tick", "nowMs", "scrollDriver", "opts", "_a", "axis", "listener", "el", "ctx", "_b", "range", "progress", "max", "pos", "doc", "p", "TargetOverlapError", "overlaps", "createPlayer", "init", "_c", "_d", "_e", "_f", "_g", "playhead", "liveDuration", "markers", "driver", "loop", "background", "visibility", "callbacks", "cueCallbacks", "rate", "playing", "playingSig", "signal", "setPlaying", "v", "driverRunning", "ownTargets", "machines", "base", "elapsedOrigin", "lastElapsed", "loopsDone", "resolveFinished", "fireMarkers", "from", "to", "forward", "m", "cb", "kind", "settle", "completed", "resolve", "onElapsed", "elapsed", "prev", "t", "lo", "hi", "loopCfg", "maxLoops", "end", "ensureDriver", "r", "playOpts", "next", "machine", "i", "name", "set", "planReducedMotion", "mode", "prefersReduced", "duration", "autoplayRequested", "mediaPrefersReducedMotion", "mount", "initialScene", "initialDoc", "canvas", "scene", "compiled", "compileTimeline", "backend", "Canvas2DBackend", "player", "renderNow", "evaluate", "scheduled", "schedule", "unsubscribe", "loadFonts", "forDoc", "registry", "buildFontRegistry", "f", "face", "validateSceneFonts", "url", "resp", "e", "__spreadValues", "plan", "recompiled", "swapOnHmr", "mounted", "initialTimeline", "rerun", "prevLabels", "mod", "nextLabels", "dropped", "TEMPLATE", "_a", "_mounted", "_scene", "_unsubscribe", "_scrubbing", "_playhead", "_shadow", "_canvas", "_controls", "_GsPlayerElement_instances", "syncControlsSubscription_fn", "syncControls_fn", "buildControls_fn", "destroyControls_fn", "teardown_fn", "remount_fn", "syncReadout_fn", "syncButton_fn", "GsPlayerElement", "__privateAdd", "root", "__privateSet", "__privateGet", "mod", "__privateMethod", "_b", "name", "want", "div", "button", "scrubber", "time", "onClick", "player", "onInput", "c", "scene", "loop", "mount", "_c", "t", "playing", "__publicField", "defineGsPlayer", "tagName"]
|
|
4
|
+
"sourcesContent": ["import { Canvas2DBackend, setShaderRunner } from \"@glissade/backend-canvas2d\";\nexport * from \"@glissade/core\";\nexport * from \"@glissade/core/clips\";\nexport * from \"@glissade/scene\";\nexport * from \"@glissade/scene/path\";\nexport * from \"@glissade/player\";\nexport * from \"@glissade/element\";\nexport { Canvas2DBackend, setShaderRunner };\n", "//#region src/easing.ts\nconst c1 = 1.70158;\nconst c2 = c1 * 1.525;\nconst c3 = 2.70158;\nconst c4 = 2 * Math.PI / 3;\nconst c5 = 2 * Math.PI / 4.5;\nfunction bounceOut(t) {\n\tconst n1 = 7.5625;\n\tconst d1 = 2.75;\n\tif (t < 1 / d1) return n1 * t * t;\n\tif (t < 2 / d1) return n1 * (t -= 1.5 / d1) * t + .75;\n\tif (t < 2.5 / d1) return n1 * (t -= 2.25 / d1) * t + .9375;\n\treturn n1 * (t -= 2.625 / d1) * t + .984375;\n}\nconst easings = {\n\tlinear: (t) => t,\n\teaseInQuad: (t) => t * t,\n\teaseOutQuad: (t) => 1 - (1 - t) * (1 - t),\n\teaseInOutQuad: (t) => t < .5 ? 2 * t * t : 1 - (-2 * t + 2) ** 2 / 2,\n\teaseInCubic: (t) => t ** 3,\n\teaseOutCubic: (t) => 1 - (1 - t) ** 3,\n\teaseInOutCubic: (t) => t < .5 ? 4 * t ** 3 : 1 - (-2 * t + 2) ** 3 / 2,\n\teaseInQuart: (t) => t ** 4,\n\teaseOutQuart: (t) => 1 - (1 - t) ** 4,\n\teaseInOutQuart: (t) => t < .5 ? 8 * t ** 4 : 1 - (-2 * t + 2) ** 4 / 2,\n\teaseInQuint: (t) => t ** 5,\n\teaseOutQuint: (t) => 1 - (1 - t) ** 5,\n\teaseInOutQuint: (t) => t < .5 ? 16 * t ** 5 : 1 - (-2 * t + 2) ** 5 / 2,\n\teaseInSine: (t) => 1 - Math.cos(t * Math.PI / 2),\n\teaseOutSine: (t) => Math.sin(t * Math.PI / 2),\n\teaseInOutSine: (t) => -(Math.cos(Math.PI * t) - 1) / 2,\n\teaseInExpo: (t) => t === 0 ? 0 : 2 ** (10 * t - 10),\n\teaseOutExpo: (t) => t === 1 ? 1 : 1 - 2 ** (-10 * t),\n\teaseInOutExpo: (t) => t === 0 ? 0 : t === 1 ? 1 : t < .5 ? 2 ** (20 * t - 10) / 2 : (2 - 2 ** (-20 * t + 10)) / 2,\n\teaseInCirc: (t) => 1 - Math.sqrt(1 - t * t),\n\teaseOutCirc: (t) => Math.sqrt(1 - (t - 1) * (t - 1)),\n\teaseInOutCirc: (t) => t < .5 ? (1 - Math.sqrt(1 - (2 * t) ** 2)) / 2 : (Math.sqrt(1 - (-2 * t + 2) ** 2) + 1) / 2,\n\teaseInBack: (t) => c3 * t ** 3 - c1 * t * t,\n\teaseOutBack: (t) => 1 + c3 * (t - 1) ** 3 + c1 * (t - 1) ** 2,\n\teaseInOutBack: (t) => t < .5 ? (2 * t) ** 2 * (3.5949095 * 2 * t - c2) / 2 : ((2 * t - 2) ** 2 * (3.5949095 * (t * 2 - 2) + c2) + 2) / 2,\n\teaseInElastic: (t) => t === 0 ? 0 : t === 1 ? 1 : -(2 ** (10 * t - 10)) * Math.sin((t * 10 - 10.75) * c4),\n\teaseOutElastic: (t) => t === 0 ? 0 : t === 1 ? 1 : 2 ** (-10 * t) * Math.sin((t * 10 - .75) * c4) + 1,\n\teaseInOutElastic: (t) => t === 0 ? 0 : t === 1 ? 1 : t < .5 ? -(2 ** (20 * t - 10) * Math.sin((20 * t - 11.125) * c5)) / 2 : 2 ** (-20 * t + 10) * Math.sin((20 * t - 11.125) * c5) / 2 + 1,\n\teaseInBounce: (t) => 1 - bounceOut(1 - t),\n\teaseOutBounce: bounceOut,\n\teaseInOutBounce: (t) => t < .5 ? (1 - bounceOut(1 - 2 * t)) / 2 : (1 + bounceOut(2 * t - 1)) / 2\n};\nfunction bounceOutD(t) {\n\tconst n1 = 7.5625;\n\tconst d1 = 2.75;\n\tif (t < 1 / d1) return 2 * n1 * t;\n\tif (t < 2 / d1) return 2 * n1 * (t - 1.5 / d1);\n\tif (t < 2.5 / d1) return 2 * n1 * (t - 2.25 / d1);\n\treturn 2 * n1 * (t - 2.625 / d1);\n}\nconst LN2 = Math.LN2;\n/**\n* Analytic derivatives d(u) of every named ease (\u00A7B.6) \u2014 closed-form, used\n* for reading velocity off in-flight curves at interruption time. Property-\n* tested against central differences at interior points.\n*/\nconst easingDerivatives = {\n\tlinear: () => 1,\n\teaseInQuad: (t) => 2 * t,\n\teaseOutQuad: (t) => 2 * (1 - t),\n\teaseInOutQuad: (t) => t < .5 ? 4 * t : 4 * (1 - t),\n\teaseInCubic: (t) => 3 * t ** 2,\n\teaseOutCubic: (t) => 3 * (1 - t) ** 2,\n\teaseInOutCubic: (t) => t < .5 ? 12 * t ** 2 : 12 * (1 - t) ** 2,\n\teaseInQuart: (t) => 4 * t ** 3,\n\teaseOutQuart: (t) => 4 * (1 - t) ** 3,\n\teaseInOutQuart: (t) => t < .5 ? 32 * t ** 3 : 32 * (1 - t) ** 3,\n\teaseInQuint: (t) => 5 * t ** 4,\n\teaseOutQuint: (t) => 5 * (1 - t) ** 4,\n\teaseInOutQuint: (t) => t < .5 ? 80 * t ** 4 : 80 * (1 - t) ** 4,\n\teaseInSine: (t) => Math.PI / 2 * Math.sin(t * Math.PI / 2),\n\teaseOutSine: (t) => Math.PI / 2 * Math.cos(t * Math.PI / 2),\n\teaseInOutSine: (t) => Math.PI / 2 * Math.sin(Math.PI * t),\n\teaseInExpo: (t) => t === 0 ? 0 : 10 * LN2 * 2 ** (10 * t - 10),\n\teaseOutExpo: (t) => t === 1 ? 0 : 10 * LN2 * 2 ** (-10 * t),\n\teaseInOutExpo: (t) => t === 0 || t === 1 ? 0 : t < .5 ? 10 * LN2 * 2 ** (20 * t - 10) : 10 * LN2 * 2 ** (-20 * t + 10),\n\teaseInCirc: (t) => t / Math.sqrt(1 - t * t),\n\teaseOutCirc: (t) => (1 - t) / Math.sqrt(1 - (t - 1) * (t - 1)),\n\teaseInOutCirc: (t) => t < .5 ? 2 * t / Math.sqrt(1 - 4 * t * t) : (2 - 2 * t) / Math.sqrt(1 - (-2 * t + 2) ** 2),\n\teaseInBack: (t) => 3 * c3 * t ** 2 - 2 * c1 * t,\n\teaseOutBack: (t) => 3 * c3 * (t - 1) ** 2 + 2 * c1 * (t - 1),\n\teaseInOutBack: (t) => t < .5 ? 12 * 3.5949095 * t ** 2 - 4 * c2 * t : 3 * 3.5949095 * (2 * t - 2) ** 2 + 2 * c2 * (2 * t - 2),\n\teaseInElastic: (t) => {\n\t\tif (t === 0 || t === 1) return 0;\n\t\tconst theta = (t * 10 - 10.75) * c4;\n\t\tconst amp = 2 ** (10 * t - 10);\n\t\treturn -(10 * LN2 * amp * Math.sin(theta) + amp * 10 * c4 * Math.cos(theta));\n\t},\n\teaseOutElastic: (t) => {\n\t\tif (t === 0 || t === 1) return 0;\n\t\tconst phi = (t * 10 - .75) * c4;\n\t\tconst amp = 2 ** (-10 * t);\n\t\treturn -10 * LN2 * amp * Math.sin(phi) + amp * 10 * c4 * Math.cos(phi);\n\t},\n\teaseInOutElastic: (t) => {\n\t\tif (t === 0 || t === 1) return 0;\n\t\tconst psi = (20 * t - 11.125) * c5;\n\t\tif (t < .5) {\n\t\t\tconst amp = 2 ** (20 * t - 10);\n\t\t\treturn -(20 * LN2 * amp * Math.sin(psi) + amp * 20 * c5 * Math.cos(psi)) / 2;\n\t\t}\n\t\tconst amp = 2 ** (-20 * t + 10);\n\t\treturn (-20 * LN2 * amp * Math.sin(psi) + amp * 20 * c5 * Math.cos(psi)) / 2;\n\t},\n\teaseInBounce: (t) => bounceOutD(1 - t),\n\teaseOutBounce: bounceOutD,\n\teaseInOutBounce: (t) => t < .5 ? bounceOutD(1 - 2 * t) : bounceOutD(2 * t - 1)\n};\n/** Default property-tween ease (Motion Canvas precedent). */\nconst DEFAULT_EASE = \"easeInOutCubic\";\nfunction bezierKernel(p1x, p1y, p2x, p2y) {\n\tconst ax = 3 * p1x - 3 * p2x + 1;\n\tconst bx = 3 * p2x - 6 * p1x;\n\tconst cx = 3 * p1x;\n\tconst ay = 3 * p1y - 3 * p2y + 1;\n\tconst by = 3 * p2y - 6 * p1y;\n\tconst cy = 3 * p1y;\n\tconst sampleX = (u) => ((ax * u + bx) * u + cx) * u;\n\tconst sampleY = (u) => ((ay * u + by) * u + cy) * u;\n\tconst sampleDX = (u) => (3 * ax * u + 2 * bx) * u + cx;\n\tconst sampleDY = (u) => (3 * ay * u + 2 * by) * u + cy;\n\tconst solveU = (x) => {\n\t\tlet u = x;\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\tconst err = sampleX(u) - x;\n\t\t\tif (Math.abs(err) < 1e-7) return u;\n\t\t\tconst d = sampleDX(u);\n\t\t\tif (Math.abs(d) < 1e-6) break;\n\t\t\tu -= err / d;\n\t\t}\n\t\tlet lo = 0;\n\t\tlet hi = 1;\n\t\tu = x;\n\t\twhile (hi - lo > 1e-7) {\n\t\t\tif (sampleX(u) < x) lo = u;\n\t\t\telse hi = u;\n\t\t\tu = (lo + hi) / 2;\n\t\t}\n\t\treturn u;\n\t};\n\treturn {\n\t\tsampleY,\n\t\tsampleDX,\n\t\tsampleDY,\n\t\tsolveU\n\t};\n}\n/**\n* CSS-style cubic b\u00E9zier where x is time and y is progress. Newton's method\n* with a bisection fallback for the flat-derivative regions.\n*/\nfunction cubicBezier(p1x, p1y, p2x, p2y) {\n\tconst k = bezierKernel(p1x, p1y, p2x, p2y);\n\treturn (t) => {\n\t\tif (t <= 0) return 0;\n\t\tif (t >= 1) return 1;\n\t\treturn k.sampleY(k.solveU(t));\n\t};\n}\n/** Analytic dy/dx of a cubic b\u00E9zier ease: y'(s)/x'(s) at the solved parameter (\u00A7B.6). */\nfunction cubicBezierDerivative(p1x, p1y, p2x, p2y) {\n\tconst k = bezierKernel(p1x, p1y, p2x, p2y);\n\treturn (t) => {\n\t\tconst u = k.solveU(Math.min(1, Math.max(0, t)));\n\t\tconst dx = k.sampleDX(u);\n\t\tif (Math.abs(dx) < 1e-9) return 0;\n\t\treturn k.sampleDY(u) / dx;\n\t};\n}\nvar UnknownEasingError = class extends Error {\n\tconstructor(name) {\n\t\tsuper(`unknown easing '${name}'; register it via easings or use cubicBezier/spring`);\n\t\tthis.name = \"UnknownEasingError\";\n\t}\n};\nfunction namedEasing(name) {\n\tconst fn = easings[name];\n\tif (!fn) throw new UnknownEasingError(name);\n\treturn fn;\n}\n//#endregion\n//#region src/spring.ts\nconst DEFAULT_SETTLE_TOLERANCE = .005;\nfunction params(cfg) {\n\tconst mass = cfg.mass ?? 1;\n\tif (!(cfg.stiffness > 0) || !(cfg.damping > 0) || !(mass > 0)) throw new RangeError(\"spring stiffness, damping, and mass must all be > 0\");\n\treturn {\n\t\tw0: Math.sqrt(cfg.stiffness / mass),\n\t\tzeta: cfg.damping / (2 * Math.sqrt(cfg.stiffness * mass))\n\t};\n}\n/** Raw closed-form spring velocity at time t \u2014 d/dt of rawValue's three branches. */\nfunction rawDerivative(cfg, t) {\n\tif (t <= 0) return 0;\n\tconst { w0, zeta } = params(cfg);\n\tif (Math.abs(zeta - 1) < 1e-9) return w0 * w0 * t * Math.exp(-w0 * t);\n\tif (zeta < 1) {\n\t\tconst wd = w0 * Math.sqrt(1 - zeta * zeta);\n\t\treturn Math.exp(-zeta * w0 * t) * (w0 * w0 / wd) * Math.sin(wd * t);\n\t}\n\tconst s = Math.sqrt(zeta * zeta - 1);\n\tconst r1 = -w0 * (zeta - s);\n\tconst r2 = -w0 * (zeta + s);\n\treturn r1 * r2 * (Math.exp(r1 * t) - Math.exp(r2 * t)) / (r1 - r2);\n}\n/** Raw closed-form spring position at time t (seconds). Approaches 1, may overshoot. */\nfunction rawValue(cfg, t) {\n\tif (t <= 0) return 0;\n\tconst { w0, zeta } = params(cfg);\n\tif (Math.abs(zeta - 1) < 1e-9) return 1 - Math.exp(-w0 * t) * (1 + w0 * t);\n\tif (zeta < 1) {\n\t\tconst wd = w0 * Math.sqrt(1 - zeta * zeta);\n\t\treturn 1 - Math.exp(-zeta * w0 * t) * (Math.cos(wd * t) + zeta * w0 / wd * Math.sin(wd * t));\n\t}\n\tconst s = Math.sqrt(zeta * zeta - 1);\n\tconst r1 = -w0 * (zeta - s);\n\tconst r2 = -w0 * (zeta + s);\n\treturn 1 + (r2 * Math.exp(r1 * t) - r1 * Math.exp(r2 * t)) / (r1 - r2);\n}\n/**\n* Settle duration: the earliest time after which |x - 1| stays within\n* settleTolerance. Closed-form via the decay envelope for the underdamped\n* case; bisection on the monotone tail otherwise. Deterministic.\n*/\nfunction duration(cfg, opts) {\n\tconst tol = opts?.settleTolerance ?? DEFAULT_SETTLE_TOLERANCE;\n\tconst { w0, zeta } = params(cfg);\n\tif (zeta < 1) {\n\t\tconst wd = w0 * Math.sqrt(1 - zeta * zeta);\n\t\tconst amp = Math.sqrt(1 + (zeta * w0 / wd) ** 2);\n\t\treturn Math.log(amp / tol) / (zeta * w0);\n\t}\n\tlet hi = 1 / w0;\n\twhile (1 - rawValue(cfg, hi) > tol) hi *= 2;\n\tlet lo = 0;\n\tfor (let i = 0; i < 64 && hi - lo > 1e-9; i++) {\n\t\tconst mid = (lo + hi) / 2;\n\t\tif (1 - rawValue(cfg, mid) > tol) lo = mid;\n\t\telse hi = mid;\n\t}\n\treturn hi;\n}\n/**\n* Spring progress at local time t, affinely rescaled so value(duration) = 1\n* exactly \u2014 the raw form only approaches 1, and an unscaled curve would snap\n* at the key (\u00A72.7 \"endpoint continuity\"). May exceed 1 (overshoot).\n*/\nfunction value(cfg, t, opts) {\n\tconst d = duration(cfg, opts);\n\treturn rawValue(cfg, Math.min(t, d)) / rawValue(cfg, d);\n}\nfunction retarget(cfg, x0, v0) {\n\tconst { w0, zeta } = params(cfg);\n\tlet value0;\n\tlet velocity0;\n\tlet envelope;\n\tif (Math.abs(zeta - 1) < 1e-9) {\n\t\tconst b = v0 + w0 * x0;\n\t\tvalue0 = (tau) => tau <= 0 ? x0 : Math.exp(-w0 * tau) * (x0 + b * tau);\n\t\tvelocity0 = (tau) => tau <= 0 ? v0 : Math.exp(-w0 * tau) * (v0 - w0 * b * tau);\n\t\tenvelope = (tau) => Math.exp(-w0 * tau) * (Math.abs(x0) + Math.abs(b) * tau);\n\t} else if (zeta < 1) {\n\t\tconst wd = w0 * Math.sqrt(1 - zeta * zeta);\n\t\tconst c2v = (v0 + zeta * w0 * x0) / wd;\n\t\tconst amp = Math.hypot(x0, c2v);\n\t\tvalue0 = (tau) => tau <= 0 ? x0 : Math.exp(-zeta * w0 * tau) * (x0 * Math.cos(wd * tau) + c2v * Math.sin(wd * tau));\n\t\tvelocity0 = (tau) => tau <= 0 ? v0 : Math.exp(-zeta * w0 * tau) * (v0 * Math.cos(wd * tau) - (w0 * w0 * x0 + zeta * w0 * v0) / wd * Math.sin(wd * tau));\n\t\tenvelope = (tau) => Math.exp(-zeta * w0 * tau) * amp;\n\t} else {\n\t\tconst s = Math.sqrt(zeta * zeta - 1);\n\t\tconst rp = w0 * (-zeta + s);\n\t\tconst rm = w0 * (-zeta - s);\n\t\tconst cp = (v0 - rm * x0) / (rp - rm);\n\t\tconst cm = (rp * x0 - v0) / (rp - rm);\n\t\tvalue0 = (tau) => tau <= 0 ? x0 : cp * Math.exp(rp * tau) + cm * Math.exp(rm * tau);\n\t\tvelocity0 = (tau) => tau <= 0 ? v0 : cp * rp * Math.exp(rp * tau) + cm * rm * Math.exp(rm * tau);\n\t\tenvelope = (tau) => Math.abs(cp) * Math.exp(rp * tau) + Math.abs(cm) * Math.exp(rm * tau);\n\t}\n\tconst settleTime = (tol) => {\n\t\tconst eps = tol ?? Math.abs(x0) * .005 + 1e-6;\n\t\tif (envelope(0) <= eps && Math.abs(v0) < 1e-12) return 0;\n\t\tlet hi = 1 / w0;\n\t\tlet guard = 0;\n\t\twhile (envelope(hi) > eps && guard++ < 64) hi *= 2;\n\t\tlet lo = 0;\n\t\tfor (let i = 0; i < 64 && hi - lo > 1e-9; i++) {\n\t\t\tconst mid = (lo + hi) / 2;\n\t\t\tif (Math.max(envelope(mid), envelope(mid * 1.05 + 1e-6)) > eps) lo = mid;\n\t\t\telse hi = mid;\n\t\t}\n\t\treturn hi;\n\t};\n\treturn {\n\t\tvalue: value0,\n\t\tvelocity: velocity0,\n\t\tsettleTime\n\t};\n}\nconst spring = Object.assign((cfg) => {\n\tparams(cfg);\n\treturn {\n\t\tkind: \"spring\",\n\t\tstiffness: cfg.stiffness,\n\t\tdamping: cfg.damping,\n\t\tmass: cfg.mass ?? 1\n\t};\n}, {\n\tduration,\n\tvalue,\n\tretarget\n});\n/**\n* Named spring feels (react-spring conventions, mass 1) \u2014 a vocabulary instead\n* of hand-tuned stiffness/damping. Use `spring(springPresets.wobbly)` or\n* `springTo(t, a, b, springPresets.gentle)`.\n*/\nconst springPresets = {\n\tdefault: {\n\t\tstiffness: 170,\n\t\tdamping: 26\n\t},\n\tgentle: {\n\t\tstiffness: 120,\n\t\tdamping: 14\n\t},\n\twobbly: {\n\t\tstiffness: 180,\n\t\tdamping: 12\n\t},\n\tstiff: {\n\t\tstiffness: 210,\n\t\tdamping: 20\n\t},\n\tslow: {\n\t\tstiffness: 280,\n\t\tdamping: 60\n\t},\n\tmolasses: {\n\t\tstiffness: 280,\n\t\tdamping: 120\n\t}\n};\n/**\n* The spring as a normalized easing over a segment whose length must equal\n* spring.duration(cfg) (validated at the document layer, \u00A72.7).\n*/\nfunction springEasing(cfg) {\n\tconst d = duration(cfg);\n\treturn (p) => value(cfg, p * d);\n}\n/**\n* Analytic d/dp of springEasing (\u00A7B.6): oscillator derivative \u00D7 the affine\n* rescale factor \u00D7 duration (chain rule p \u2192 t = p\u00B7D). Flat past p=1,\n* matching value()'s clamp (right-derivative convention).\n*/\nfunction springEasingDerivative(cfg) {\n\tconst d = duration(cfg);\n\tconst scale = d / rawValue(cfg, d);\n\treturn (p) => p >= 1 ? 0 : rawDerivative(cfg, p * d) * scale;\n}\n//#endregion\n//#region src/devWarning.ts\nlet devWarn = (msg) => {\n\tglobalThis.console?.warn(`[glissade] ${msg}`);\n};\nfunction setDevWarning(fn) {\n\tdevWarn = fn;\n}\n/** Internal: emit through the configurable channel. */\nfunction emitDevWarning(message) {\n\tdevWarn(message);\n}\n//#endregion\n//#region src/color.ts\nconst HEX_RE = /^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i;\nconst RGB_RE = /^rgba?\\(\\s*([\\d.]+)\\s*[, ]\\s*([\\d.]+)\\s*[, ]\\s*([\\d.]+)\\s*(?:[,/]\\s*([\\d.]+%?)\\s*)?\\)$/i;\nvar ColorParseError = class extends Error {\n\tconstructor(input) {\n\t\tsuper(`cannot parse color '${input}' (supported: #rgb[a], #rrggbb[aa], rgb()/rgba())`);\n\t\tthis.name = \"ColorParseError\";\n\t}\n};\nfunction parseColor(input) {\n\tconst hex = HEX_RE.exec(input);\n\tif (hex) {\n\t\tlet h = hex[1];\n\t\tif (h.length <= 4) h = [...h].map((c) => c + c).join(\"\");\n\t\tconst n = parseInt(h, 16);\n\t\tif (h.length === 6) return {\n\t\t\tr: n >> 16,\n\t\t\tg: n >> 8 & 255,\n\t\t\tb: n & 255,\n\t\t\ta: 1\n\t\t};\n\t\treturn {\n\t\t\tr: n >>> 24 & 255,\n\t\t\tg: n >>> 16 & 255,\n\t\t\tb: n >>> 8 & 255,\n\t\t\ta: (n & 255) / 255\n\t\t};\n\t}\n\tconst rgb = RGB_RE.exec(input);\n\tif (rgb) {\n\t\tconst alphaRaw = rgb[4];\n\t\tconst a = alphaRaw === void 0 ? 1 : alphaRaw.endsWith(\"%\") ? parseFloat(alphaRaw) / 100 : parseFloat(alphaRaw);\n\t\treturn {\n\t\t\tr: parseFloat(rgb[1]),\n\t\t\tg: parseFloat(rgb[2]),\n\t\t\tb: parseFloat(rgb[3]),\n\t\t\ta\n\t\t};\n\t}\n\tthrow new ColorParseError(input);\n}\nfunction formatColor(c) {\n\tconst clampByte = (v) => Math.min(255, Math.max(0, Math.round(v)));\n\tconst hex = (v) => clampByte(v).toString(16).padStart(2, \"0\");\n\tconst base = `#${hex(c.r)}${hex(c.g)}${hex(c.b)}`;\n\tconst a = Math.min(1, Math.max(0, c.a));\n\treturn a >= 1 ? base : `${base}${hex(a * 255)}`;\n}\nfunction srgbToLinear(c) {\n\tconst v = c / 255;\n\treturn v <= .04045 ? v / 12.92 : ((v + .055) / 1.055) ** 2.4;\n}\nfunction linearToSrgb(v) {\n\treturn (v <= .0031308 ? v * 12.92 : 1.055 * v ** (1 / 2.4) - .055) * 255;\n}\nfunction rgbaToOklab(c) {\n\tconst r = srgbToLinear(c.r);\n\tconst g = srgbToLinear(c.g);\n\tconst b = srgbToLinear(c.b);\n\tconst l = Math.cbrt(.4122214708 * r + .5363325363 * g + .0514459929 * b);\n\tconst m = Math.cbrt(.2119034982 * r + .6806995451 * g + .1073969566 * b);\n\tconst s = Math.cbrt(.0883024619 * r + .2817188376 * g + .6299787005 * b);\n\treturn {\n\t\tL: .2104542553 * l + .793617785 * m - .0040720468 * s,\n\t\ta: 1.9779984951 * l - 2.428592205 * m + .4505937099 * s,\n\t\tb: .0259040371 * l + .7827717662 * m - .808675766 * s,\n\t\talpha: c.a\n\t};\n}\nfunction oklabToRgba(c) {\n\tconst l = (c.L + .3963377774 * c.a + .2158037573 * c.b) ** 3;\n\tconst m = (c.L - .1055613458 * c.a - .0638541728 * c.b) ** 3;\n\tconst s = (c.L - .0894841775 * c.a - 1.291485548 * c.b) ** 3;\n\treturn {\n\t\tr: linearToSrgb(4.0767416621 * l - 3.3077115913 * m + .2309699292 * s),\n\t\tg: linearToSrgb(-1.2684380046 * l + 2.6097574011 * m - .3413193965 * s),\n\t\tb: linearToSrgb(-.0041960863 * l - .7034186147 * m + 1.707614701 * s),\n\t\ta: c.alpha\n\t};\n}\n/** Interpolate two CSS color strings in OKLab; t may extrapolate. */\nfunction lerpColor(from, to, t) {\n\tconst a = rgbaToOklab(parseColor(from));\n\tconst b = rgbaToOklab(parseColor(to));\n\tconst mix = (x, y) => x + (y - x) * t;\n\treturn formatColor(oklabToRgba({\n\t\tL: mix(a.L, b.L),\n\t\ta: mix(a.a, b.a),\n\t\tb: mix(a.b, b.b),\n\t\talpha: mix(a.alpha, b.alpha)\n\t}));\n}\n//#endregion\n//#region src/valueTypes.ts\n/**\n* Value-type registry with pluggable per-type interpolation (DESIGN.md \u00A72.2).\n* `extrapolates` declares whether a type's lerp accepts easedT outside [0,1]\n* (spring overshoot); non-extrapolating types clamp.\n*/\nconst registry = /* @__PURE__ */ new Map();\nfunction registerValueType(vt) {\n\tregistry.set(vt.id, vt);\n}\nvar UnknownValueTypeError = class extends Error {\n\tconstructor(id) {\n\t\tsuper(`unknown value type '${id}'; register it via registerValueType()`);\n\t\tthis.name = \"UnknownValueTypeError\";\n\t}\n};\nfunction getValueType(id) {\n\tconst vt = registry.get(id);\n\tif (!vt) throw new UnknownValueTypeError(id);\n\treturn vt;\n}\n/**\n* Resolve a value-type id to its REPRESENTATION (the bind guard's compatibility\n* key, \u00A72.2): a type's `repr` (the built-in it's representationally compatible\n* with), else the id itself. SINGLE-HOP \u2014 `repr` is never chained, so a custom\n* type's repr must be a base type. An UNREGISTERED id resolves to itself (the\n* guard's job is repr-compat, not existence \u2014 `getValueType` enforces that).\n*/\nfunction reprOf(id) {\n\treturn registry.get(id)?.repr ?? id;\n}\nconst numberType = {\n\tid: \"number\",\n\tlerp: (a, b, t) => a + (b - a) * t,\n\textrapolates: true,\n\tequals: Object.is,\n\tadd: (a, b) => a + b,\n\tsub: (a, b) => a - b,\n\tscale: (a, k) => a * k,\n\tdefaultHandoff: \"spring\"\n};\nconst vec2Equals = (a, b) => a[0] === b[0] && a[1] === b[1];\nconst vec2Type = {\n\tid: \"vec2\",\n\tlerp: (a, b, t) => [a[0] + (b[0] - a[0]) * t, a[1] + (b[1] - a[1]) * t],\n\textrapolates: true,\n\tequals: vec2Equals,\n\tadd: (a, b) => [a[0] + b[0], a[1] + b[1]],\n\tsub: (a, b) => [a[0] - b[0], a[1] - b[1]],\n\tscale: (a, k) => [a[0] * k, a[1] * k],\n\tdefaultHandoff: \"spring\"\n};\n/** vec2 swept along a circular arc: polar lerp of radius + shortest-path angle (\u00A72.2). */\nconst vec2ArcType = {\n\tid: \"vec2-arc\",\n\trepr: \"vec2\",\n\tlerp: (a, b, t) => {\n\t\tconst ra = Math.hypot(a[0], a[1]);\n\t\tconst rb = Math.hypot(b[0], b[1]);\n\t\tconst angA = Math.atan2(a[1], a[0]);\n\t\tlet dAng = Math.atan2(b[1], b[0]) - angA;\n\t\twhile (dAng > Math.PI) dAng -= 2 * Math.PI;\n\t\twhile (dAng < -Math.PI) dAng += 2 * Math.PI;\n\t\tconst r = ra + (rb - ra) * t;\n\t\tconst ang = angA + dAng * t;\n\t\treturn [r * Math.cos(ang), r * Math.sin(ang)];\n\t},\n\textrapolates: true,\n\tequals: vec2Equals,\n\tdefaultHandoff: \"blend-from-frozen\"\n};\nconst colorType = {\n\tid: \"color\",\n\tlerp: lerpColor,\n\textrapolates: true,\n\tequals: (a, b) => a === b,\n\tdefaultHandoff: \"blend-from-frozen\"\n};\n/** Discrete types: hold-only by construction (\u00A72.2); lerp snaps at t=1. */\nfunction discrete(id) {\n\treturn {\n\t\tid,\n\t\tlerp: (a, b, t) => t >= 1 ? b : a,\n\t\textrapolates: false,\n\t\tequals: (a, b) => Object.is(a, b),\n\t\tdefaultHandoff: \"cut\"\n\t};\n}\nconst stringType = discrete(\"string\");\nconst booleanType = discrete(\"boolean\");\nconst lerpV = (a, b, t) => [a[0] + (b[0] - a[0]) * t, a[1] + (b[1] - a[1]) * t];\n/** Topology must match for a morph (contour count, closed flags, vertex counts). */\nfunction pathTopologyMatches(a, b) {\n\tif (a.length !== b.length) return false;\n\tfor (let i = 0; i < a.length; i++) {\n\t\tconst ca = a[i];\n\t\tconst cb = b[i];\n\t\tif (ca.closed !== cb.closed || ca.v.length !== cb.v.length) return false;\n\t}\n\treturn true;\n}\nlet warnedPathTopology = false;\n/**\n* Path morphing (\u00A72.2): pairwise lerp of anchors and tangents \u2014 exactly how\n* lottie-web morphs, so imported animations are pixel-faithful. Mismatched\n* topology snaps (hold a, then b at t \u2265 1) with a one-time dev warning; the\n* de Casteljau normalization fallback for arbitrary native morphs is tracked\n* future work. Lerp-only: offsets are not well-defined under mismatched\n* topology, so no add/sub/scale \u2014 handoffs blend from the frozen value.\n*/\nconst pathType = {\n\tid: \"path\",\n\tlerp: (a, b, t) => {\n\t\tif (!pathTopologyMatches(a, b)) {\n\t\t\tif (!warnedPathTopology) {\n\t\t\t\twarnedPathTopology = true;\n\t\t\t\temitDevWarning(\"path lerp with mismatched topology (contour/vertex counts or closed flags differ): snapping instead of morphing \u2014 supply matched vertex counts (\u00A72.2)\");\n\t\t\t}\n\t\t\treturn t >= 1 ? b : a;\n\t\t}\n\t\treturn a.map((ca, i) => {\n\t\t\tconst cb = b[i];\n\t\t\treturn {\n\t\t\t\tclosed: ca.closed,\n\t\t\t\tv: ca.v.map((p, j) => lerpV(p, cb.v[j], t)),\n\t\t\t\tin: ca.in.map((p, j) => lerpV(p, cb.in[j], t)),\n\t\t\t\tout: ca.out.map((p, j) => lerpV(p, cb.out[j], t))\n\t\t\t};\n\t\t});\n\t},\n\textrapolates: false,\n\tequals: (a, b) => {\n\t\tif (a === b) return true;\n\t\tif (!pathTopologyMatches(a, b)) return false;\n\t\tconst eq = (x, y) => x[0] === y[0] && x[1] === y[1];\n\t\treturn a.every((ca, i) => {\n\t\t\tconst cb = b[i];\n\t\t\treturn ca.v.every((p, j) => eq(p, cb.v[j])) && ca.in.every((p, j) => eq(p, cb.in[j])) && ca.out.every((p, j) => eq(p, cb.out[j]));\n\t\t});\n\t},\n\tdefaultHandoff: \"blend-from-frozen\"\n};\nconst lerpN = (a, b, t) => a + (b - a) * t;\nconst lerpPt = (a, b, t) => [lerpN(a[0], b[0], t), lerpN(a[1], b[1], t)];\n/** Same hue at alpha 0 \u2014 a transparent stand-in so an appearing/disappearing\n* `bg` (mesh baseline) fades through alpha instead of popping at the boundary.\n* `parseColor` THROWS on a non-hex/non-canonical CSS color (hsl/named/oklch);\n* since this runs inside `lerp` during evaluate() it must NEVER throw \u2014 fall\n* back to holding the PRESENT color so the bg snaps in/out instead of crashing\n* the whole frame. */\nfunction transparentOf(color) {\n\ttry {\n\t\treturn formatColor({\n\t\t\t...parseColor(color),\n\t\t\ta: 0\n\t\t});\n\t} catch {\n\t\treturn color;\n\t}\n}\n/** `lerpColor` that NEVER throws inside `lerp` (evaluate()): on an unparseable\n* color (hsl/named/oklch \u2014 `parseColor` only knows hex/rgb) it SNAPS (holds `a`,\n* then `b` at t\u22651) instead of crashing the frame. Byte-identical to `lerpColor`\n* for parseable colors, so it does not move any golden. */\nfunction safeLerpColor(a, b, t) {\n\ttry {\n\t\treturn lerpColor(a, b, t);\n\t} catch {\n\t\treturn t >= 1 ? b : a;\n\t}\n}\n/** Lift a solid color to a uniform gradient matching `shape` (every stop = color),\n* so a color\u2194gradient tween fades smoothly instead of snapping. */\nfunction liftColor(color, shape) {\n\tconst stops = shape.stops.map((s) => ({\n\t\toffset: s.offset,\n\t\tcolor\n\t}));\n\tconst interp = shape.interpolation ? { interpolation: shape.interpolation } : {};\n\treturn shape.kind === \"radial\" ? {\n\t\tkind: \"radial\",\n\t\tstops,\n\t\t...shape.center ? { center: shape.center } : {},\n\t\t...shape.radius !== void 0 ? { radius: shape.radius } : {},\n\t\t...interp\n\t} : {\n\t\tkind: \"linear\",\n\t\tstops,\n\t\t...shape.from ? { from: shape.from } : {},\n\t\t...shape.to ? { to: shape.to } : {},\n\t\t...interp\n\t};\n}\nlet warnedPaintShape = false;\nfunction paintSnap(t, a, b, message = \"paint lerp across mismatched gradient shapes (different kind or stop count): snapping instead of interpolating \u2014 match the kind + stop count on both keyframes (\u00A72.2)\") {\n\tif (!warnedPaintShape) {\n\t\twarnedPaintShape = true;\n\t\temitDevWarning(message);\n\t}\n\treturn t >= 1 ? b : a;\n}\nconst stopsEqual = (a, b) => a.length === b.length && a.every((s, i) => s.offset === b[i].offset && s.color === b[i].color);\n/**\n* Gradient paint morphing (\u00A72.2): a solid color lifts to a uniform gradient to\n* meet the other side, then matched-kind/matched-stop-count gradients lerp their\n* stops (offset + oklab color) and geometry pairwise; a mismatched kind or stop\n* count snaps (hold a, then b at t \u2265 1) with a one-time dev warning. Lerp-only \u2014\n* no offsets under mismatch \u2014 so handoffs blend from the frozen value.\n*/\nconst paintType = {\n\tid: \"paint\",\n\tlerp: (a, b, t) => {\n\t\tif (a.kind === \"color\" && b.kind === \"color\") return {\n\t\t\tkind: \"color\",\n\t\t\tcolor: lerpColor(a.color, b.color, t)\n\t\t};\n\t\tif (a.kind === \"mesh\" && b.kind === \"mesh\") {\n\t\t\tif (a.points.length !== b.points.length) return paintSnap(t, a, b);\n\t\t\tif (a.interpolation !== b.interpolation) return paintSnap(t, a, b, `paint lerp across mismatched mesh interpolation modes ('${a.interpolation ?? \"smooth\"}' \u2192 '${b.interpolation ?? \"smooth\"}'): snapping instead of interpolating \u2014 the blend kernel is discrete, so it switches once at the boundary; match \\`interpolation\\` on both keyframes to morph the points (\u00A73 Paint)`);\n\t\t\tconst points = a.points.map((pa, i) => {\n\t\t\t\tconst pb = b.points[i];\n\t\t\t\treturn {\n\t\t\t\t\tpos: lerpPt(pa.pos, pb.pos, t),\n\t\t\t\t\tcolor: lerpColor(pa.color, pb.color, t)\n\t\t\t\t};\n\t\t\t});\n\t\t\tconst bg = a.bg !== void 0 || b.bg !== void 0 ? { bg: safeLerpColor(a.bg ?? transparentOf(b.bg), b.bg ?? transparentOf(a.bg), t) } : {};\n\t\t\treturn {\n\t\t\t\tkind: \"mesh\",\n\t\t\t\tpoints,\n\t\t\t\t...a.interpolation ? { interpolation: a.interpolation } : {},\n\t\t\t\t...bg\n\t\t\t};\n\t\t}\n\t\tif (a.kind === \"mesh\" || b.kind === \"mesh\") return paintSnap(t, a, b);\n\t\tlet A = a;\n\t\tlet B = b;\n\t\tif (A.kind === \"color\" && B.kind !== \"color\") A = liftColor(A.color, B);\n\t\telse if (B.kind === \"color\" && A.kind !== \"color\") B = liftColor(B.color, A);\n\t\tif (A.kind === \"color\" || B.kind === \"color\" || A.kind !== B.kind || A.stops.length !== B.stops.length) return paintSnap(t, a, b);\n\t\tconst stops = A.stops.map((sa, i) => ({\n\t\t\toffset: lerpN(sa.offset, B.stops[i].offset, t),\n\t\t\tcolor: lerpColor(sa.color, B.stops[i].color, t)\n\t\t}));\n\t\tconst interp = A.interpolation ? { interpolation: A.interpolation } : {};\n\t\tif (A.kind === \"radial\" && B.kind === \"radial\") return {\n\t\t\tkind: \"radial\",\n\t\t\tstops,\n\t\t\t...A.center && B.center ? { center: lerpPt(A.center, B.center, t) } : A.center ? { center: A.center } : {},\n\t\t\t...A.radius !== void 0 && B.radius !== void 0 ? { radius: lerpN(A.radius, B.radius, t) } : A.radius !== void 0 ? { radius: A.radius } : {},\n\t\t\t...interp\n\t\t};\n\t\tif (A.kind === \"linear\" && B.kind === \"linear\") return {\n\t\t\tkind: \"linear\",\n\t\t\tstops,\n\t\t\t...A.from && B.from ? { from: lerpPt(A.from, B.from, t) } : A.from ? { from: A.from } : {},\n\t\t\t...A.to && B.to ? { to: lerpPt(A.to, B.to, t) } : A.to ? { to: A.to } : {},\n\t\t\t...interp\n\t\t};\n\t\treturn paintSnap(t, a, b);\n\t},\n\textrapolates: false,\n\tequals: (a, b) => {\n\t\tif (a === b) return true;\n\t\tif (a.kind !== b.kind) return false;\n\t\tif (a.kind === \"color\") return b.kind === \"color\" && a.color === b.color;\n\t\tif (a.kind === \"mesh\") {\n\t\t\tif (b.kind !== \"mesh\") return false;\n\t\t\tif (a.interpolation !== b.interpolation || a.bg !== b.bg) return false;\n\t\t\tif (a.points.length !== b.points.length) return false;\n\t\t\treturn a.points.every((p, i) => {\n\t\t\t\tconst q = b.points[i];\n\t\t\t\treturn p.color === q.color && p.pos[0] === q.pos[0] && p.pos[1] === q.pos[1];\n\t\t\t});\n\t\t}\n\t\tif (b.kind === \"color\" || b.kind === \"mesh\") return false;\n\t\tif (!stopsEqual(a.stops, b.stops)) return false;\n\t\tif (a.interpolation !== b.interpolation) return false;\n\t\tif (a.kind === \"radial\" && b.kind === \"radial\") return JSON.stringify(a.center) === JSON.stringify(b.center) && a.radius === b.radius;\n\t\tif (a.kind === \"linear\" && b.kind === \"linear\") return JSON.stringify(a.from) === JSON.stringify(b.from) && JSON.stringify(a.to) === JSON.stringify(b.to);\n\t\treturn false;\n\t},\n\tdefaultHandoff: \"blend-from-frozen\"\n};\nvar ValueTypeInferenceError = class extends Error {\n\tconstructor(value) {\n\t\tsuper(`cannot infer a value type for ${JSON.stringify(value)}; register a custom type`);\n\t\tthis.name = \"ValueTypeInferenceError\";\n\t}\n};\nconst isContour = (c) => typeof c === \"object\" && c !== null && typeof c.closed === \"boolean\" && Array.isArray(c.v) && Array.isArray(c.in) && Array.isArray(c.out);\nconst isPaint = (v) => typeof v === \"object\" && v !== null && (v.kind === \"color\" || v.kind === \"linear\" || v.kind === \"radial\" || v.kind === \"mesh\");\n/** Infer a registered type id from a sample value (builder + bake authoring surfaces). */\nfunction inferValueType(value) {\n\tif (typeof value === \"number\") return \"number\";\n\tif (typeof value === \"boolean\") return \"boolean\";\n\tif (isPaint(value)) return \"paint\";\n\tif (Array.isArray(value) && value.length === 2 && value.every((v) => typeof v === \"number\")) return \"vec2\";\n\tif (Array.isArray(value) && value.length > 0 && value.every(isContour)) return \"path\";\n\tif (typeof value === \"string\") try {\n\t\tparseColor(value);\n\t\treturn \"color\";\n\t} catch {\n\t\treturn \"string\";\n\t}\n\tthrow new ValueTypeInferenceError(value);\n}\nregisterValueType(numberType);\nregisterValueType(vec2Type);\nregisterValueType(vec2ArcType);\nregisterValueType(colorType);\nregisterValueType(stringType);\nregisterValueType(booleanType);\nregisterValueType(pathType);\nregisterValueType(paintType);\n//#endregion\n//#region src/track.ts\n/**\n* Track & keyframe model (DESIGN.md \u00A72.2) and sampling (\u00A72.4): binary search\n* per track with a last-segment cursor \u2014 sanctioned memoization, semantics\n* identical to a cold search (property-tested).\n*/\nvar TrackValidationError = class extends Error {\n\tconstructor(target, message) {\n\t\tsuper(`track '${target}': ${message}`);\n\t\tthis.name = \"TrackValidationError\";\n\t}\n};\nfunction validateTrack(track) {\n\tconst vt = getValueType(track.type);\n\tif (track.keys.length === 0) throw new TrackValidationError(track.target, \"must have at least one key\");\n\tif (vt.defaultHandoff === \"cut\") {\n\t\tfor (const k of track.keys) if (k.interp !== \"hold\") k.interp = \"hold\";\n\t}\n\tfor (let i = 1; i < track.keys.length; i++) {\n\t\tconst prev = track.keys[i - 1];\n\t\tconst cur = track.keys[i];\n\t\tif (cur.t <= prev.t) throw new TrackValidationError(track.target, `keys must be strictly increasing in t (key[${i}] at t=${cur.t} after t=${prev.t})`);\n\t}\n\tif (!/^[^/]+\\/.+$/.test(track.target)) throw new TrackValidationError(track.target, \"target must be '<nodeId>/<prop.path>' (e.g. 'circle/opacity')\");\n}\nfunction key(t, value, easeOrOpts) {\n\tif (easeOrOpts === void 0) return {\n\t\tt,\n\t\tvalue\n\t};\n\tif (typeof easeOrOpts === \"string\" || \"kind\" in easeOrOpts) return {\n\t\tt,\n\t\tvalue,\n\t\tease: easeOrOpts\n\t};\n\tconst opts = easeOrOpts;\n\tconst k = {\n\t\tt,\n\t\tvalue\n\t};\n\tif (opts.ease !== void 0) k.ease = opts.ease;\n\tif (opts.interp !== void 0) k.interp = opts.interp;\n\tif (opts.id !== void 0) k.id = opts.id;\n\tif (opts.derived !== void 0) k.derived = opts.derived;\n\treturn k;\n}\n/**\n* The settle-ON-the-beat helper: a spring key must sit at prev.t +\n* spring.duration(cfg) (\u00A72.7), so beat-anchored authoring otherwise means\n* hand-computing the launch time. springTo returns the [launch, settle] key\n* pair with the arithmetic done \u2014 spread it into a raw track():\n* track('x/width', 'number', [...springTo(beats.start('drop'), 0, 320, cfg)])\n*/\nfunction springTo(endT, from, to, cfg) {\n\tconst d = spring.duration(cfg);\n\tif (endT - d < 0) throw new TrackValidationError(\"springTo\", `this spring needs ${d.toFixed(3)}s to settle \u2014 endT must be \u2265 its duration (got ${endT})`);\n\treturn [key(endT - d, from), key(endT, to, spring(cfg))];\n}\n/**\n* Cascade a set of tracks by shifting each one's key times \u2014 the classic\n* stagger for animating a list of nodes with a delay between them. `delay` is\n* the per-index gap in seconds, or a function of the index for non-linear\n* cascades. Pure: returns new tracks, leaving the inputs untouched.\n*\n* stagger(items.map((it, i) => track(`${it.id}/opacity`, 'number',\n* [key(0, 0), key(0.3, 1, 'easeOutCubic')])), 0.08)\n*/\nfunction stagger(tracks, delay) {\n\tconst at = typeof delay === \"function\" ? delay : (i) => i * delay;\n\treturn tracks.map((tr, i) => {\n\t\tconst d = at(i);\n\t\treturn {\n\t\t\t...tr,\n\t\t\tkeys: tr.keys.map((k) => ({\n\t\t\t\t...k,\n\t\t\t\tt: k.t + d\n\t\t\t}))\n\t\t};\n\t});\n}\nfunction track(target, type, keys, opts) {\n\tconst tr = {\n\t\ttarget,\n\t\ttype,\n\t\tkeys\n\t};\n\tif (opts?.editable !== void 0) tr.editable = opts.editable;\n\tvalidateTrack(tr);\n\treturn tr;\n}\nfunction resolveEase(spec) {\n\tif (spec === void 0) return namedEasing(\"linear\");\n\tif (typeof spec === \"string\") return namedEasing(spec);\n\tif (spec.kind === \"cubicBezier\") return cubicBezier(...spec.pts);\n\treturn springEasing(spec);\n}\nconst warnedNumericDerivative = /* @__PURE__ */ new Set();\n/**\n* Analytic d(u) for an ease spec (\u00A7B.6). Custom-registered eases without a\n* derivative fall back to a symmetric difference with a one-time dev warning.\n*/\nfunction resolveEaseDerivative(spec) {\n\tif (spec === void 0) return easingDerivatives[\"linear\"];\n\tif (typeof spec === \"string\") {\n\t\tconst d = easingDerivatives[spec];\n\t\tif (d) return d;\n\t\tconst fn = namedEasing(spec);\n\t\tif (!warnedNumericDerivative.has(spec)) {\n\t\t\twarnedNumericDerivative.add(spec);\n\t\t\temitDevWarning(`easing '${spec}' has no registered derivative; velocity uses a numeric fallback \u2014 register one in easingDerivatives for exact interruption handoff`);\n\t\t}\n\t\tconst h = 1 / 1024;\n\t\treturn (u) => (fn(Math.min(1, u + h)) - fn(Math.max(0, u - h))) / (Math.min(1, u + h) - Math.max(0, u - h));\n\t}\n\tif (spec.kind === \"cubicBezier\") return cubicBezierDerivative(...spec.pts);\n\treturn springEasingDerivative(spec);\n}\nconst samplerStates = /* @__PURE__ */ new WeakMap();\nfunction state(tr) {\n\tlet s = samplerStates.get(tr);\n\tif (!s) {\n\t\ts = {\n\t\t\tcursor: 1,\n\t\t\teaseCache: new Array(tr.keys.length)\n\t\t};\n\t\tsamplerStates.set(tr, s);\n\t}\n\treturn s;\n}\nfunction easeFor(tr, s, i) {\n\tlet fn = s.easeCache[i];\n\tif (!fn) {\n\t\tfn = resolveEase(tr.keys[i].ease);\n\t\ts.easeCache[i] = fn;\n\t}\n\treturn fn;\n}\n/**\n* Find i such that keys[i-1].t <= t < keys[i].t, i.e. the index of the\n* arrival key of the segment containing t. Returns 0 if t < first key,\n* keys.length if t >= last key.\n*/\nfunction findSegment(keys, t, hint) {\n\tconst n = keys.length;\n\tfor (let i = Math.max(1, hint - 1); i <= Math.min(n - 1, hint + 1); i++) if (keys[i - 1].t <= t && t < keys[i].t) return i;\n\tif (t < keys[0].t) return 0;\n\tif (t >= keys[n - 1].t) return n;\n\tlet lo = 1;\n\tlet hi = n - 1;\n\twhile (lo < hi) {\n\t\tconst mid = lo + hi >> 1;\n\t\tif (keys[mid].t <= t) lo = mid + 1;\n\t\telse hi = mid;\n\t}\n\treturn lo;\n}\n/**\n* Analytic track derivative at time t, in value-units per second of local\n* track time (v2 addendum \u00A7B.3/\u00A7B.6 conventions, pinned):\n* (a) at a key boundary, velocity is the RIGHT derivative;\n* (b) hold segments and the clamped regions outside the keys have v = 0;\n* (c) types without sub/scale operators return null (no kinetic velocity).\n*/\nfunction velocityAt(tr, t) {\n\tconst vt = getValueType(tr.type);\n\tif (!vt.sub || !vt.scale) return null;\n\tconst keys = tr.keys;\n\tconst n = keys.length;\n\tconst s = state(tr);\n\tconst i = findSegment(keys, t, s.cursor);\n\tconst zero = vt.scale(vt.sub(keys[0].value, keys[0].value), 0);\n\tif (i === 0 || i >= n) return zero;\n\tconst arrival = keys[i];\n\tif (arrival.interp === \"hold\") return zero;\n\tconst prev = keys[i - 1];\n\tconst segDur = arrival.t - prev.t;\n\tconst p = (t - prev.t) / segDur;\n\tif (!vt.extrapolates) {\n\t\tconst eased = easeFor(tr, s, i)(p);\n\t\tif (eased < 0 || eased > 1) return zero;\n\t}\n\tconst d = resolveEaseDerivative(arrival.ease)(p);\n\treturn vt.scale(vt.sub(arrival.value, prev.value), d / segDur);\n}\n/** Pure sample of a track at time t (\u00A72.4). */\nfunction sampleTrack(tr, t) {\n\tconst keys = tr.keys;\n\tconst n = keys.length;\n\tconst s = state(tr);\n\tconst i = findSegment(keys, t, s.cursor);\n\tif (i === 0) return keys[0].value;\n\tif (i >= n) return keys[n - 1].value;\n\ts.cursor = i;\n\tconst arrival = keys[i];\n\tconst prev = keys[i - 1];\n\tif (arrival.interp === \"hold\") return prev.value;\n\tconst vt = getValueType(tr.type);\n\tconst p = (t - prev.t) / (arrival.t - prev.t);\n\tlet easedT = easeFor(tr, s, i)(p);\n\tif (!vt.extrapolates && (easedT < 0 || easedT > 1)) {\n\t\tif (!s.warnedClamp) {\n\t\t\ts.warnedClamp = true;\n\t\t\temitDevWarning(`track '${tr.target}' (type '${tr.type}') clamped an out-of-range eased value \u2014 non-extrapolating types can't overshoot, so a spring/overshooting ease on this track is flattened`);\n\t\t}\n\t\teasedT = Math.min(1, Math.max(0, easedT));\n\t}\n\treturn vt.lerp(prev.value, arrival.value, easedT);\n}\n//#endregion\n//#region src/targetRef.ts\n/**\n* Target references (DESIGN.md \u00A72.6): the builder accepts either a canonical\n* target string ('circle/opacity') or a property signal that carries its own\n* path \u2014 attached by the scene package at node construction via TARGET_PATH.\n*/\nconst TARGET_PATH = Symbol.for(\"glissade.targetPath\");\nvar UnresolvableTargetError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message ?? \"tween target is not addressable: pass a target string (\\\"node/prop\\\") or a property signal of a node that has an explicit id (\u00A73.1 \u2014 anonymous nodes cannot be track targets)\");\n\t\tthis.name = \"UnresolvableTargetError\";\n\t}\n};\n/** The node-id portion of a canonical `nodeId/prop.path` target. */\nfunction targetNodeId(target) {\n\tconst slash = target.indexOf(\"/\");\n\treturn slash < 0 ? target : target.slice(0, slash);\n}\n/**\n* The single editable-host rule (\u00A76.4 sub-decision, the 0.9 locked predicate):\n* only a node with an EXPLICIT, non-structural id can host an editable or\n* editor-created track. Structural fallback ids (`~Type.ordinal`, \u00A76.5) are\n* inspection-only and reorder-fragile, so they are never editable nor valid\n* track targets. Lives here (the addressing module) so the builder guard, the\n* scene, and the studio host all share ONE definition.\n*/\nfunction isEditableNodeId(id) {\n\treturn typeof id === \"string\" && id.length > 0 && id !== \"__root\" && !id.startsWith(\"~\");\n}\nfunction resolveTweenTarget(target) {\n\tconst path = typeof target === \"string\" ? target : target[TARGET_PATH];\n\tif (typeof path !== \"string\") throw new UnresolvableTargetError();\n\tif (targetNodeId(path).startsWith(\"~\")) throw new UnresolvableTargetError(`'${path}': structural ids (~Type.ordinal) are inspection-only and cannot be track targets (\u00A76.5) \u2014 give the node an explicit id`);\n\treturn path;\n}\n//#endregion\nexport { vec2Type as A, springEasing as B, paintType as C, stringType as D, reprOf as E, parseColor as F, cubicBezier as G, springPresets as H, rgbaToOklab as I, easings as J, cubicBezierDerivative as K, emitDevWarning as L, formatColor as M, lerpColor as N, vec2ArcType as O, oklabToRgba as P, setDevWarning as R, numberType as S, registerValueType as T, DEFAULT_EASE as U, springEasingDerivative as V, UnknownEasingError as W, namedEasing as Y, ValueTypeInferenceError as _, targetNodeId as a, getValueType as b, resolveEase as c, springTo as d, stagger as f, UnknownValueTypeError as g, velocityAt as h, resolveTweenTarget as i, ColorParseError as j, vec2Equals as k, resolveEaseDerivative as l, validateTrack as m, UnresolvableTargetError as n, TrackValidationError as o, track as p, easingDerivatives as q, isEditableNodeId as r, key as s, TARGET_PATH as t, sampleTrack as u, booleanType as v, pathType as w, inferValueType as x, colorType as y, spring as z };\n", "//#region src/cmap.ts\n/**\n* Minimal sfnt `cmap` reader (DESIGN.md \u00A73.6 glyph-coverage check) \u2014 pure,\n* byte-only, ZERO DOM / ZERO Node. Given the raw bytes of a TrueType/OpenType\n* (or the first table of a TTC) font, returns the set of Unicode code points\n* the font claims to cover. I/O (reading the file / fetching the URL) happens\n* at the call site; this function only parses bytes.\n*\n* Hand-rolled (no font-parsing dependency) to keep core zero-dep and in budget.\n* It covers the two cmap subtable formats that matter in practice:\n* - format 4 (segment mapping to delta values \u2014 the BMP workhorse)\n* - format 12 (segmented coverage \u2014 astral planes, e.g. emoji)\n* Malformed or unsupported input yields an empty set; it never throws or hangs.\n*/\nconst PLATFORM_UNICODE = 0;\nconst PLATFORM_WINDOWS = 3;\n/** Read a big-endian u16 with bounds checking (0 when out of range). */\nfunction u16(dv, off) {\n\treturn off + 2 <= dv.byteLength ? dv.getUint16(off) : 0;\n}\nfunction u32(dv, off) {\n\treturn off + 4 <= dv.byteLength ? dv.getUint32(off) : 0;\n}\n/** Rank a (platform, encoding) cmap subtable: higher = better Unicode coverage. */\nfunction encodingScore(platform, encoding) {\n\tif (platform === PLATFORM_WINDOWS && encoding === 10) return 5;\n\tif (platform === PLATFORM_UNICODE && encoding >= 4) return 5;\n\tif (platform === PLATFORM_WINDOWS && encoding === 1) return 3;\n\tif (platform === PLATFORM_UNICODE) return 3;\n\treturn 0;\n}\nfunction parseFormat4(dv, base, into) {\n\tconst segCountX2 = u16(dv, base + 6);\n\tconst segCount = segCountX2 >> 1;\n\tconst endOff = base + 14;\n\tconst startOff = endOff + segCountX2 + 2;\n\tconst deltaOff = startOff + segCountX2;\n\tconst rangeOff = deltaOff + segCountX2;\n\tfor (let i = 0; i < segCount; i++) {\n\t\tconst end = u16(dv, endOff + i * 2);\n\t\tconst start = u16(dv, startOff + i * 2);\n\t\tif (start > end) continue;\n\t\tconst idDelta = u16(dv, deltaOff + i * 2);\n\t\tconst idRangeOffset = u16(dv, rangeOff + i * 2);\n\t\tfor (let c = start; c <= end; c++) {\n\t\t\tif (c === 65535) continue;\n\t\t\tlet glyph;\n\t\t\tif (idRangeOffset === 0) glyph = c + idDelta & 65535;\n\t\t\telse {\n\t\t\t\tconst g = u16(dv, rangeOff + i * 2 + idRangeOffset + (c - start) * 2);\n\t\t\t\tglyph = g === 0 ? 0 : g + idDelta & 65535;\n\t\t\t}\n\t\t\tif (glyph !== 0) into.add(c);\n\t\t}\n\t}\n}\nfunction parseFormat12(dv, base, into) {\n\tconst declared = u32(dv, base + 12);\n\tconst maxGroups = Math.max(0, Math.floor((dv.byteLength - (base + 16)) / 12));\n\tconst nGroups = Math.min(declared, maxGroups);\n\tlet off = base + 16;\n\tfor (let i = 0; i < nGroups; i++, off += 12) {\n\t\tconst startChar = u32(dv, off);\n\t\tconst endChar = u32(dv, off + 4);\n\t\tconst startGlyph = u32(dv, off + 8);\n\t\tif (startChar > endChar) continue;\n\t\tif (endChar - startChar > 2097152) continue;\n\t\tfor (let c = startChar; c <= endChar; c++) if (startGlyph + (c - startChar) !== 0) into.add(c);\n\t}\n}\nfunction parseCmap(bytes) {\n\tconst out = /* @__PURE__ */ new Set();\n\ttry {\n\t\tconst dv = ArrayBuffer.isView(bytes) ? new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength) : new DataView(bytes);\n\t\tif (dv.byteLength < 12) return out;\n\t\tlet sfntOff = 0;\n\t\tif (u32(dv, 0) === 1953784678) sfntOff = u32(dv, 12);\n\t\tconst numTables = u16(dv, sfntOff + 4);\n\t\tlet cmapOff = 0;\n\t\tfor (let i = 0; i < numTables; i++) {\n\t\t\tconst rec = sfntOff + 12 + i * 16;\n\t\t\tif (u32(dv, rec) === 1668112752) {\n\t\t\t\tcmapOff = u32(dv, rec + 8);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (cmapOff === 0) return out;\n\t\tconst nSub = u16(dv, cmapOff + 2);\n\t\tlet bestOff = 0;\n\t\tlet bestScore = -1;\n\t\tfor (let i = 0; i < nSub; i++) {\n\t\t\tconst rec = cmapOff + 4 + i * 8;\n\t\t\tconst platform = u16(dv, rec);\n\t\t\tconst encoding = u16(dv, rec + 2);\n\t\t\tconst subOff = cmapOff + u32(dv, rec + 4);\n\t\t\tconst score = encodingScore(platform, encoding);\n\t\t\tif (score > bestScore && subOff + 2 <= dv.byteLength) {\n\t\t\t\tbestScore = score;\n\t\t\t\tbestOff = subOff;\n\t\t\t}\n\t\t}\n\t\tif (bestScore < 0) return out;\n\t\tconst format = u16(dv, bestOff);\n\t\tif (format === 4) parseFormat4(dv, bestOff, out);\n\t\telse if (format === 12) parseFormat12(dv, bestOff, out);\n\t} catch {\n\t\treturn out;\n\t}\n\treturn out;\n}\n//#endregion\nexport { parseCmap as t };\n", "import { L as emitDevWarning, a as targetNodeId, m as validateTrack, o as TrackValidationError, r as isEditableNodeId, z as spring } from \"./targetRef.js\";\n//#region src/timeline.ts\n/**\n* The Timeline document (DESIGN.md \u00A72.3) \u2014 the serializable animation source\n* of truth \u2014 and its compiler: child flattening (add/sync), same-target\n* coalescing (last-insertion-wins, \u00A72.2), duration computation, validation.\n*/\nfunction timeline(init) {\n\tconst doc = {\n\t\tversion: 1,\n\t\ttracks: init.tracks ?? []\n\t};\n\tif (init.duration !== void 0) doc.duration = init.duration;\n\tif (init.editableDuration !== void 0) doc.editableDuration = init.editableDuration;\n\tif (init.fps !== void 0) doc.fps = init.fps;\n\tif (init.posterTime !== void 0) doc.posterTime = init.posterTime;\n\tif (init.labels !== void 0) doc.labels = init.labels;\n\tif (init.markers !== void 0) doc.markers = init.markers;\n\tif (init.children !== void 0) doc.children = init.children;\n\tif (init.audio !== void 0) doc.audio = init.audio;\n\tif (init.assets !== void 0) doc.assets = init.assets;\n\treturn doc;\n}\nvar TimelineValidationError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"TimelineValidationError\";\n\t}\n};\n/** Spring key rule (\u00A72.7): a spring-eased key's t must equal prev.t + spring.duration(cfg). */\nfunction validateSpringKeys(tr) {\n\tfor (let i = 1; i < tr.keys.length; i++) {\n\t\tconst k = tr.keys[i];\n\t\tif (k.ease && typeof k.ease === \"object\" && k.ease.kind === \"spring\") {\n\t\t\tconst expected = tr.keys[i - 1].t + spring.duration(k.ease);\n\t\t\tif (Math.abs(k.t - expected) > 1e-6) throw new TimelineValidationError(`track '${tr.target}': spring-eased key at t=${k.t} must sit at prev.t + spring.duration (${expected.toFixed(6)}); the builder computes this automatically`);\n\t\t}\n\t}\n}\n/**\n* Sample-indexed clip offset \u2014 the single A/V-sync source of truth (\u00A75.3),\n* `round(at * sampleRate)`. Both the CLI (FFmpeg) and the browser\n* (OfflineAudioContext) mixers derive their delay from this, so A/V offsets\n* agree across paths by construction rather than one rounding to milliseconds\n* and the other to raw float seconds. Default rate is the canonical mix grid.\n*/\nfunction audioOffsetSamples(at, sampleRate = 48e3) {\n\treturn Math.round(at * sampleRate);\n}\nfunction rebaseKeys(keys, at, timeScale) {\n\treturn keys.map((k) => ({\n\t\t...k,\n\t\tt: at + k.t / timeScale\n\t}));\n}\nfunction flatten(doc, at, timeScale, unit, out, counter) {\n\tfor (const tr of doc.tracks) {\n\t\tvalidateTrack(tr);\n\t\tvalidateSpringKeys(tr);\n\t\tout.push({\n\t\t\ttrack: {\n\t\t\t\t...tr,\n\t\t\t\tkeys: rebaseKeys(tr.keys, at, timeScale)\n\t\t\t},\n\t\t\tunit\n\t\t});\n\t}\n\tfor (const child of doc.children ?? []) {\n\t\tconst scale = child.mode === \"sync\" ? child.timeScale ?? 1 : 1;\n\t\tif (child.mode === \"add\" && child.timeScale !== void 0) throw new TimelineValidationError(\"timeScale is only valid on mode:'sync' children (\u00A72.3)\");\n\t\tif (scale <= 0) throw new TimelineValidationError(\"sync timeScale must be > 0\");\n\t\tconst childUnit = child.mode === \"sync\" ? ++counter.n : unit;\n\t\tflatten(child.timeline, at + child.at / timeScale, timeScale * scale, childUnit, out, counter);\n\t}\n}\n/**\n* Coalesce same-target tracks: later insertion wins where key ranges overlap\n* (\u00A72.2/\u00A72.6 decided rule), with a dev warning. Earlier keys inside the later\n* track's [first.t, last.t] span are dropped.\n*/\nfunction coalesce(entries) {\n\tconst byTarget = /* @__PURE__ */ new Map();\n\tfor (const { track: tr, unit } of entries) {\n\t\tconst existing = byTarget.get(tr.target);\n\t\tif (!existing) {\n\t\t\tbyTarget.set(tr.target, {\n\t\t\t\ttrack: {\n\t\t\t\t\t...tr,\n\t\t\t\t\tkeys: [...tr.keys]\n\t\t\t\t},\n\t\t\t\tunit\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (existing.unit !== unit) throw new TimelineValidationError(`target '${tr.target}' is animated by a sync (opaque) child and another timeline unit; sync children must own disjoint targets (no last-writer-wins across the sync boundary, \u00A72.3)`);\n\t\tif (existing.track.type !== tr.type) throw new TimelineValidationError(`target '${tr.target}' has conflicting value types '${existing.track.type}' and '${tr.type}'`);\n\t\tconst start = tr.keys[0].t;\n\t\tconst end = tr.keys[tr.keys.length - 1].t;\n\t\tconst existingStart = existing.track.keys[0].t;\n\t\tconst existingEnd = existing.track.keys[existing.track.keys.length - 1].t;\n\t\tconst kept = existing.track.keys.filter((k) => k.t < start || k.t > end);\n\t\tif (existingStart <= end && start <= existingEnd) emitDevWarning(`overlapping tracks for '${tr.target}' in [${start}, ${end}]: later insertion wins (${existing.track.keys.length - kept.length} earlier key(s) dropped)`);\n\t\texisting.track.keys = [...kept, ...tr.keys].sort((a, b) => a.t - b.t);\n\t}\n\tconst result = /* @__PURE__ */ new Map();\n\tfor (const [target, { track }] of byTarget) result.set(target, track);\n\treturn result;\n}\n/**\n* Studio reader (\u00A76.2 rule 4): is this timeline's duration opted into editor\n* editing? Code-owned and read-only by default; `editableDuration()` flips it.\n*/\nfunction isDurationEditable(doc) {\n\treturn doc.editableDuration === true;\n}\nfunction childExtent(child) {\n\tconst scale = child.mode === \"sync\" ? child.timeScale ?? 1 : 1;\n\treturn child.at + computeDuration(child.timeline) / scale;\n}\nfunction computeDuration(doc) {\n\tif (doc.duration !== void 0) return doc.duration;\n\tlet max = 0;\n\tfor (const tr of doc.tracks) {\n\t\tconst last = tr.keys[tr.keys.length - 1];\n\t\tif (last) max = Math.max(max, last.t);\n\t}\n\tfor (const m of doc.markers ?? []) max = Math.max(max, m.t);\n\tfor (const child of doc.children ?? []) max = Math.max(max, childExtent(child));\n\treturn max;\n}\nfunction compileTimeline(doc) {\n\tif (doc.version !== 1) throw new TimelineValidationError(`unsupported timeline document version ${String(doc.version)}`);\n\tconst flat = [];\n\tflatten(doc, 0, 1, 0, flat, { n: 0 });\n\tconst tracks = coalesce(flat);\n\tconst labels = { ...doc.labels };\n\tconst markers = [...doc.markers ?? []];\n\tconst audio = [...doc.audio ?? []];\n\tconst visitChildren = (children, at, scale) => {\n\t\tfor (const child of children ?? []) {\n\t\t\tconst base = at + child.at / scale;\n\t\t\tconst childScale = scale * (child.mode === \"sync\" ? child.timeScale ?? 1 : 1);\n\t\t\tfor (const [name, t] of Object.entries(child.timeline.labels ?? {})) if (!(name in labels)) labels[name] = base + t / childScale;\n\t\t\tfor (const m of child.timeline.markers ?? []) markers.push({\n\t\t\t\t...m,\n\t\t\t\tt: base + m.t / childScale\n\t\t\t});\n\t\t\tfor (const clip of child.timeline.audio ?? []) audio.push({\n\t\t\t\t...clip,\n\t\t\t\tat: base + clip.at / childScale,\n\t\t\t\t...childScale !== 1 ? { playbackRate: (clip.playbackRate ?? 1) * childScale } : {}\n\t\t\t});\n\t\t\tvisitChildren(child.timeline.children, base, childScale);\n\t\t}\n\t};\n\tvisitChildren(doc.children, 0, 1);\n\tmarkers.sort((a, b) => a.t - b.t);\n\taudio.sort((a, b) => a.at - b.at);\n\treturn {\n\t\tduration: computeDuration(doc),\n\t\tlabels,\n\t\tmarkers,\n\t\ttracks,\n\t\taudio\n\t};\n}\n//#endregion\n//#region src/sidecar.ts\n/**\n* The editor sidecar (DESIGN.md \u00A76.2): code declares scene structure and\n* programmatic tracks; the studio owns keyframe data persisted next to the\n* scene module and merged at track granularity. Versioned independently of the\n* API (\u00A77.4) \u2014 breaking it orphans users' files, so v1 documents migrate.\n*\n* v2 namespaces edits by timeline id ('main' for the linear timeline; v2\n* machines add more), keys tracks by canonical target, records the code\n* baseline hash for drift detection, parks drifted tracks as `orphans`, and\n* gives keys stable `k<N>` ids.\n*/\nconst MAIN = \"main\";\nvar SidecarVersionError = class extends Error {\n\tconstructor(version) {\n\t\tsuper(`unsupported sidecar version ${String(version)}; this build reads sidecarVersion 1 or 2`);\n\t\tthis.name = \"SidecarVersionError\";\n\t}\n};\nfunction emptySidecar() {\n\treturn {\n\t\tsidecarVersion: 2,\n\t\ttimelines: { [MAIN]: { tracks: {} } }\n\t};\n}\n/** Lift a v1 (or already-v2) document to the v2 shape. Throws on unknown versions. */\nfunction migrateSidecar(doc) {\n\tif (!doc) return null;\n\tif (doc.sidecarVersion === 2) return doc;\n\tif (doc.sidecarVersion === 1) {\n\t\tconst tracks = {};\n\t\tfor (const t of doc.tracks) tracks[t.target] = {\n\t\t\ttype: t.type,\n\t\t\tbaseHash: null,\n\t\t\tkeys: t.keys\n\t\t};\n\t\tconst main = { tracks };\n\t\tif (doc.labels) main.labels = doc.labels;\n\t\treturn {\n\t\t\tsidecarVersion: 2,\n\t\t\ttimelines: { [MAIN]: main }\n\t\t};\n\t}\n\tthrow new SidecarVersionError(doc.sidecarVersion);\n}\n/** Stable hash of a code track's keys \u2014 the baseline an editor branch records. */\nfunction hashKeys(keys) {\n\tconst s = JSON.stringify(keys.map((k) => [\n\t\tk.t,\n\t\tk.value,\n\t\tk.ease ?? null,\n\t\tk.interp ?? null\n\t]));\n\tlet h = 2166136261;\n\tfor (let i = 0; i < s.length; i++) {\n\t\th ^= s.charCodeAt(i);\n\t\th = Math.imul(h, 16777619);\n\t}\n\treturn (h >>> 0).toString(16);\n}\n/** Assign stable monotonic `k<N>` ids to keys lacking one; existing ids preserved. */\nfunction assignKeyIds(keys) {\n\tlet max = -1;\n\tfor (const k of keys) {\n\t\tconst m = k.id ? /^k(\\d+)$/.exec(k.id) : null;\n\t\tif (m) max = Math.max(max, Number(m[1]));\n\t}\n\treturn keys.map((k) => k.id ? { ...k } : {\n\t\t...k,\n\t\tid: `k${++max}`\n\t});\n}\n/**\n* Set one editable track's keys in the sidecar (\u00A76.2) \u2014 the studio write path.\n* `codeBaselineKeys` is the code track this branches from (null = editor-created\n* with no baseline). Keys get stable `k<N>` ids. Returns a new document.\n*/\nfunction setSidecarTrack(doc, timelineId, target, type, keys, codeBaselineKeys) {\n\tif (!isEditableNodeId(targetNodeId(target))) throw new TrackValidationError(target, \"structural/un-id'd nodes cannot host editor tracks (\u00A76.5) \u2014 only nodes with an explicit id\");\n\tconst tl = doc.timelines[timelineId] ?? { tracks: {} };\n\tconst entry = {\n\t\ttype,\n\t\tbaseHash: codeBaselineKeys ? hashKeys(codeBaselineKeys) : null,\n\t\tkeys: assignKeyIds(keys)\n\t};\n\treturn {\n\t\t...doc,\n\t\ttimelines: {\n\t\t\t...doc.timelines,\n\t\t\t[timelineId]: {\n\t\t\t\t...tl,\n\t\t\t\ttracks: {\n\t\t\t\t\t...tl.tracks,\n\t\t\t\t\t[target]: entry\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n/**\n* Remove one editor-owned track from the sidecar (\u00A76.2 rule 7 write-back): the\n* \"extract edits to code\" affordance deletes the sidecar entry after copying its\n* `key(...)` source to the clipboard. Source is never mutated \u2014 the user pastes\n* the generated calls themselves. A missing entry is a no-op (returns the input\n* unchanged); the document is never mutated in place.\n*/\nfunction deleteSidecarTrack(doc, timelineId, target) {\n\tconst tl = doc.timelines[timelineId];\n\tif (!tl || !(target in tl.tracks)) return doc;\n\tconst { [target]: _removed, ...rest } = tl.tracks;\n\treturn {\n\t\t...doc,\n\t\ttimelines: {\n\t\t\t...doc.timelines,\n\t\t\t[timelineId]: {\n\t\t\t\t...tl,\n\t\t\t\ttracks: rest\n\t\t\t}\n\t\t}\n\t};\n}\n/**\n* Re-resolve `derived:true` leading keys against the merged track (\u00A72.6): a\n* derived from-key duplicates the preceding key's held value, so an upstream\n* edit must flow into it or the segment pops at its start. Build-time derived\n* keys are already correct; this fixes the ones an edit moved beneath.\n*/\nfunction reresolveDerived(keys) {\n\tif (!keys.some((k) => k.derived)) return keys;\n\treturn keys.map((k, i) => k.derived && i > 0 ? {\n\t\t...k,\n\t\tvalue: keys[i - 1].value\n\t} : k);\n}\n/**\n* Merge with the full \u00A76.2 report: the bindable Timeline, the list of targets\n* whose code baseline drifted, and the orphaned tracks (type-changed, or whose\n* code track vanished). Orphans are NEVER merged, so a drifted edit can't make\n* the whole overlay fail to bind \u2014 the good edits survive. Inputs unmutated.\n*/\nfunction mergeSidecarDetailed(code, sidecar) {\n\tconst doc = migrateSidecar(sidecar);\n\tif (!doc) return {\n\t\ttimeline: code,\n\t\tdrift: [],\n\t\torphans: {}\n\t};\n\tconst main = doc.timelines[MAIN] ?? { tracks: {} };\n\tconst overlay = new Map(Object.entries(main.tracks));\n\tconst drift = [];\n\tconst orphans = { ...main.orphans ?? {} };\n\tconst tracks = code.tracks.map((t) => {\n\t\tconst entry = overlay.get(t.target);\n\t\tif (!entry) return t;\n\t\toverlay.delete(t.target);\n\t\tif (entry.type !== t.type) {\n\t\t\torphans[t.target] = {\n\t\t\t\ttype: entry.type,\n\t\t\t\tkeys: entry.keys,\n\t\t\t\treason: \"type-changed\"\n\t\t\t};\n\t\t\treturn t;\n\t\t}\n\t\tif (entry.baseHash !== null && entry.baseHash !== hashKeys(t.keys)) drift.push(t.target);\n\t\treturn {\n\t\t\t...t,\n\t\t\tkeys: reresolveDerived(entry.keys.map((k) => ({ ...k }))),\n\t\t\teditable: true\n\t\t};\n\t});\n\tfor (const [target, entry] of overlay) if (entry.baseHash !== null) orphans[target] = {\n\t\ttype: entry.type,\n\t\tkeys: entry.keys,\n\t\treason: \"prop-missing\"\n\t};\n\telse tracks.push({\n\t\ttarget,\n\t\ttype: entry.type,\n\t\tkeys: reresolveDerived(entry.keys.map((k) => ({ ...k }))),\n\t\teditable: true\n\t});\n\tconst merged = {\n\t\t...code,\n\t\ttracks\n\t};\n\tif (main.labels && Object.keys(main.labels).length > 0) {\n\t\tconst codeLabels = code.labels ?? {};\n\t\tconst shadowed = Object.keys(main.labels).filter((n) => n in codeLabels);\n\t\tif (shadowed.length) emitDevWarning(`sidecar label(s) ${shadowed.join(\", \")} collide with code labels; code wins (\u00A76.2)`);\n\t\tmerged.labels = {\n\t\t\t...main.labels,\n\t\t\t...codeLabels\n\t\t};\n\t}\n\tif (drift.length) emitDevWarning(`sidecar: code baseline changed beneath edits on ${drift.join(\", \")} (\u00A76.2)`);\n\treturn {\n\t\ttimeline: merged,\n\t\tdrift,\n\t\torphans\n\t};\n}\n/** Merge the sidecar overlay onto the code baseline \u2192 a bindable Timeline (\u00A76.2). */\nfunction mergeSidecar(code, sidecar) {\n\treturn mergeSidecarDetailed(code, sidecar).timeline;\n}\n/**\n* Editor-edit normalization (\u00A72.7 invariant): a spring-eased key's t is\n* intrinsic \u2014 prev.t + spring.duration(cfg) \u2014 so after any retime, sort and\n* re-pin spring keys to their predecessors. Dragging a spring key itself\n* therefore snaps back; retiming its predecessor carries it along. Returns a\n* new array. Colliding keys are NUDGED apart (+1ms), never deleted \u2014 an editor\n* must not silently destroy keyframe data on an exact-t collision.\n*/\nfunction normalizeEditedKeys(keys) {\n\tconst out = keys.map((k) => ({ ...k })).sort((a, b) => a.t - b.t);\n\tfor (let pass = 0; pass < 2; pass++) {\n\t\tfor (let i = 1; i < out.length; i++) {\n\t\t\tconst ease = out[i].ease;\n\t\t\tif (ease && typeof ease === \"object\" && ease.kind === \"spring\") out[i].t = out[i - 1].t + spring.duration(ease);\n\t\t}\n\t\tout.sort((a, b) => a.t - b.t);\n\t}\n\tfor (let i = 1; i < out.length; i++) if (out[i].t <= out[i - 1].t) out[i].t = out[i - 1].t + .001;\n\treturn out;\n}\n//#endregion\nexport { hashKeys as a, migrateSidecar as c, TimelineValidationError as d, audioOffsetSamples as f, timeline as h, emptySidecar as i, normalizeEditedKeys as l, isDurationEditable as m, assignKeyIds as n, mergeSidecar as o, compileTimeline as p, deleteSidecarTrack as r, mergeSidecarDetailed as s, SidecarVersionError as t, setSidecarTrack as u };\n", "import { A as vec2Type, B as springEasing, C as paintType, D as stringType, E as reprOf, F as parseColor, G as cubicBezier, H as springPresets, I as rgbaToOklab, J as easings, K as cubicBezierDerivative, L as emitDevWarning, M as formatColor, N as lerpColor, O as vec2ArcType, P as oklabToRgba, R as setDevWarning, S as numberType, T as registerValueType, U as DEFAULT_EASE, V as springEasingDerivative, W as UnknownEasingError, Y as namedEasing, _ as ValueTypeInferenceError, a as targetNodeId, b as getValueType, c as resolveEase, d as springTo, f as stagger, g as UnknownValueTypeError, h as velocityAt, i as resolveTweenTarget, j as ColorParseError, k as vec2Equals, l as resolveEaseDerivative, m as validateTrack, n as UnresolvableTargetError, o as TrackValidationError, p as track, q as easingDerivatives, r as isEditableNodeId, s as key, t as TARGET_PATH, u as sampleTrack, v as booleanType, w as pathType, x as inferValueType, y as colorType, z as spring } from \"./targetRef.js\";\nimport { t as parseCmap } from \"./cmap.js\";\nimport { a as hashKeys, c as migrateSidecar, d as TimelineValidationError, f as audioOffsetSamples, h as timeline$1, i as emptySidecar, l as normalizeEditedKeys, m as isDurationEditable, n as assignKeyIds, o as mergeSidecar, p as compileTimeline, r as deleteSidecarTrack, s as mergeSidecarDetailed, t as SidecarVersionError, u as setSidecarTrack } from \"./sidecar.js\";\n//#region src/ticker.ts\n/** The default scheduler: flush synchronously, preserving pre-ticker timing. */\nconst synchronousScheduler = (flush) => flush();\nlet scheduler = synchronousScheduler;\n/** Pending subscriber callbacks for the current tick (deduped, insertion-ordered). */\nconst pending = /* @__PURE__ */ new Set();\n/**\n* Depth of active `batch()` calls *plus* in-flight top-level writes; >0\n* suppresses flushing so a write's whole staleness cascade completes before any\n* subscriber runs, and `batch()` coalesces across writes.\n*/\nlet batchDepth = 0;\n/** True while a flush is in progress, so writes mid-flush enqueue, not re-flush. */\nlet flushing = false;\n/** True once a flush has been requested from the scheduler but not yet run. */\nlet flushScheduled = false;\n/** Guard against an unbounded write-during-flush cascade. */\nconst MAX_FLUSH_PASSES = 1e3;\n/**\n* Install a notification scheduler. Pass the synchronous default back (or call\n* with no argument) to restore eager flushing. Returns the previous scheduler.\n*/\nfunction setScheduler(next) {\n\tconst prev = scheduler;\n\tscheduler = next ?? synchronousScheduler;\n\tif (flushScheduled && !flushing) {\n\t\tflushScheduled = false;\n\t\tif (pending.size > 0) requestFlush();\n\t}\n\treturn prev;\n}\n/**\n* Enqueue a subscriber notification. Called by the signal layer in place of\n* invoking the callback directly. Honors the active batch and scheduler.\n*/\nfunction enqueueNotification(cb) {\n\tpending.add(cb);\n\trequestFlush();\n}\nfunction requestFlush() {\n\tif (batchDepth > 0 || flushing || flushScheduled) return;\n\tflushScheduled = true;\n\tscheduler(runFlush);\n}\nfunction runFlush() {\n\tflushScheduled = false;\n\tif (flushing) return;\n\tdrain();\n}\n/**\n* Drain the pending queue. A subscriber may write synchronously (e.g.\n* useSyncExternalStore re-reads and a derived store updates), enqueuing more\n* callbacks; the bounded loop catches those in subsequent passes within the\n* same flush so each tick settles in one synchronous burst.\n*/\nfunction drain() {\n\tif (flushing) return;\n\tflushing = true;\n\tlet thrown;\n\ttry {\n\t\tlet passes = 0;\n\t\twhile (pending.size > 0) {\n\t\t\tif (++passes > MAX_FLUSH_PASSES) {\n\t\t\t\tpending.clear();\n\t\t\t\tthrow new Error(\"signal notification flush did not settle within 1000 passes: a subscriber is writing to a signal it observes (DESIGN.md \u00A76.1).\");\n\t\t\t}\n\t\t\tconst batchCbs = [...pending];\n\t\t\tpending.clear();\n\t\t\tfor (const cb of batchCbs) try {\n\t\t\t\tcb();\n\t\t\t} catch (err) {\n\t\t\t\tthrown ??= { err };\n\t\t\t}\n\t\t}\n\t} finally {\n\t\tflushing = false;\n\t}\n\tif (thrown) throw thrown.err;\n}\n/**\n* Bracket a single top-level write (the signal layer calls this around each\n* set/forceSet/bindSource cascade). While open, enqueued notifications are\n* held; on the outermost close \u2014 when no `batch()` and no other write is in\n* flight \u2014 the queue is flushed exactly as before this module existed.\n*\n* Nesting these (a write whose flush triggers another write) or wrapping them in\n* `batch()` defers the flush to the outermost boundary, the coalescing the\n* ticker exists to provide.\n*/\nfunction beginNotify() {\n\tbatchDepth++;\n}\nfunction endNotify() {\n\tbatchDepth--;\n\tif (batchDepth === 0 && pending.size > 0) requestFlush();\n}\n/**\n* Coalesce every signal write inside `fn` into a single subscriber-notification\n* pass. Reads inside `fn` stay synchronous and see each write immediately; only\n* the *notification* is deferred to the end. Nested batches flush once, at the\n* outermost exit. Returns whatever `fn` returns.\n*/\nfunction batch(fn) {\n\tbeginNotify();\n\ttry {\n\t\treturn fn();\n\t} finally {\n\t\tendNotify();\n\t}\n}\n//#endregion\n//#region src/signal.ts\n/**\n* Pull-based reactive signals: lazy, cached, dependency-tracked (DESIGN.md \u00A72.1).\n*\n* Staleness uses the two-flag scheme: a write marks direct dependents DIRTY and\n* transitive dependents CHECK. A CHECK node re-validates dependency versions on\n* read and only recomputes if one actually changed; a recompute that produces an\n* equal value keeps its version, so dirtiness stops propagating at that node.\n*\n* Subscriber NOTIFICATION (only) is routed through the ticker (`./ticker.ts`,\n* DESIGN.md \u00A76.1): a write enqueues affected subscribers and the active\n* scheduler decides when to flush. The default scheduler is synchronous and\n* flushes at the end of the outermost write, reproducing the pre-ticker timing\n* byte-for-byte. The read path (get/peek/updateIfNecessary) is untouched and\n* stays fully synchronous.\n*/\nlet activeConsumer = null;\nlet readPhaseDepth = 0;\nvar WriteDuringEvaluationError = class extends Error {\n\tconstructor() {\n\t\tsuper(\"signal.set() during evaluation: the read phase is pure (DESIGN.md \u00A72.1). Drivers write the playhead before evaluation begins; stateful animation belongs in bake().\");\n\t\tthis.name = \"WriteDuringEvaluationError\";\n\t}\n};\nvar CircularDependencyError = class extends Error {\n\tconstructor() {\n\t\tsuper(\"circular signal dependency detected\");\n\t\tthis.name = \"CircularDependencyError\";\n\t}\n};\n/** Begin the pure read phase; any signal write until {@link endReadPhase} throws. */\nfunction beginReadPhase() {\n\treadPhaseDepth++;\n}\nfunction endReadPhase() {\n\tif (readPhaseDepth === 0) throw new Error(\"endReadPhase() without matching beginReadPhase()\");\n\treadPhaseDepth--;\n}\nfunction inReadPhase() {\n\treturn readPhaseDepth > 0;\n}\nvar SignalNode = class {\n\tvalue;\n\t/** Compute function; null for plain writable sources. Binding installs one. */\n\tfn;\n\tequals;\n\tversion = 0;\n\tstate;\n\tcomputing = false;\n\tdeps = [];\n\tdepVersions = [];\n\tdependents = /* @__PURE__ */ new Set();\n\tsubscribers = /* @__PURE__ */ new Set();\n\tconstructor(init) {\n\t\tthis.fn = init.fn ?? null;\n\t\tthis.value = init.value;\n\t\tthis.equals = init.equals ?? Object.is;\n\t\tthis.state = this.fn ? 2 : 0;\n\t}\n\tget() {\n\t\tif (activeConsumer) activeConsumer.addDep(this);\n\t\tthis.updateIfNecessary();\n\t\treturn this.value;\n\t}\n\tpeek() {\n\t\tthis.updateIfNecessary();\n\t\treturn this.value;\n\t}\n\tset(next) {\n\t\tif (readPhaseDepth > 0) throw new WriteDuringEvaluationError();\n\t\tbeginNotify();\n\t\ttry {\n\t\t\tif (this.fn) this.detachFn();\n\t\t\tthis.writeValue(next);\n\t\t} finally {\n\t\t\tendNotify();\n\t\t}\n\t}\n\t/**\n\t* Sanctioned entry write (the playhead at evaluate() entry, DESIGN.md \u00A72.5).\n\t* Identical to set() but exempt from the phase guard; not part of the public\n\t* signal surface.\n\t*/\n\tforceSet(next) {\n\t\tbeginNotify();\n\t\ttry {\n\t\t\tif (this.fn) this.detachFn();\n\t\t\tthis.writeValue(next);\n\t\t} finally {\n\t\t\tendNotify();\n\t\t}\n\t}\n\t/** Rewire this signal's source to a computation (timeline binding, \u00A72.4). */\n\tbindSource(fn) {\n\t\tif (readPhaseDepth > 0) throw new WriteDuringEvaluationError();\n\t\tbeginNotify();\n\t\ttry {\n\t\t\tthis.fn = fn;\n\t\t\tthis.state = 2;\n\t\t\tthis.invalidateDependents(2);\n\t\t} finally {\n\t\t\tendNotify();\n\t\t}\n\t}\n\t/** Remove a bound source, freezing the signal at its last value. */\n\tunbindSource() {\n\t\tif (readPhaseDepth > 0) throw new WriteDuringEvaluationError();\n\t\tif (!this.fn) return;\n\t\tthis.updateIfNecessary();\n\t\tthis.detachFn();\n\t}\n\tget isBound() {\n\t\treturn this.fn !== null;\n\t}\n\tsubscribe(cb) {\n\t\tthis.subscribers.add(cb);\n\t\treturn () => this.subscribers.delete(cb);\n\t}\n\taddDep(dep) {\n\t\tif (this.deps[this.deps.length - 1] !== dep) {\n\t\t\tthis.deps.push(dep);\n\t\t\tthis.depVersions.push(-1);\n\t\t\tdep.dependents.add(this);\n\t\t}\n\t}\n\tdetachFn() {\n\t\tthis.fn = null;\n\t\tthis.clearDeps();\n\t\tthis.state = 0;\n\t}\n\twriteValue(next) {\n\t\tif (this.version > 0 || this.value !== void 0) {\n\t\t\tif (this.equals(this.value, next)) return;\n\t\t}\n\t\tthis.value = next;\n\t\tthis.version++;\n\t\tthis.invalidateDependents(2);\n\t}\n\tinvalidateDependents(level) {\n\t\tfor (const d of [...this.dependents]) d.markStale(level);\n\t\tif (this.subscribers.size > 0) for (const cb of [...this.subscribers]) enqueueNotification(cb);\n\t}\n\tmarkStale(level) {\n\t\tif (this.state >= level) return;\n\t\tconst wasClean = this.state === 0;\n\t\tthis.state = level;\n\t\tif (wasClean) this.invalidateDependents(1);\n\t}\n\tupdateIfNecessary() {\n\t\tif (this.fn === null || this.state === 0) return;\n\t\tif (this.computing) throw new CircularDependencyError();\n\t\tif (this.state === 1) {\n\t\t\tthis.state = 0;\n\t\t\tfor (let i = 0; i < this.deps.length; i++) {\n\t\t\t\tconst dep = this.deps[i];\n\t\t\t\tdep.updateIfNecessary();\n\t\t\t\tif (dep.version !== this.depVersions[i]) {\n\t\t\t\t\tthis.state = 2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (this.state === 2) this.recompute();\n\t\tthis.state = 0;\n\t}\n\trecompute() {\n\t\tthis.clearDeps();\n\t\tconst prevConsumer = activeConsumer;\n\t\tactiveConsumer = this;\n\t\tthis.computing = true;\n\t\tlet next;\n\t\ttry {\n\t\t\tnext = this.fn();\n\t\t} finally {\n\t\t\tthis.computing = false;\n\t\t\tactiveConsumer = prevConsumer;\n\t\t}\n\t\tfor (let i = 0; i < this.deps.length; i++) this.depVersions[i] = this.deps[i].version;\n\t\tif (!(this.version > 0 || this.value !== void 0) || !this.equals(this.value, next)) {\n\t\t\tthis.value = next;\n\t\t\tthis.version++;\n\t\t}\n\t}\n\tclearDeps() {\n\t\tfor (const dep of this.deps) dep.dependents.delete(this);\n\t\tthis.deps = [];\n\t\tthis.depVersions = [];\n\t}\n};\nfunction makeCallable(node, extra) {\n\tconst sig = (() => node.get());\n\tsig[\"peek\"] = () => node.peek();\n\tsig[\"subscribe\"] = (cb) => node.subscribe(cb);\n\textra(sig);\n\treturn sig;\n}\nfunction signal(initial, options) {\n\tconst node = new SignalNode({\n\t\tvalue: initial,\n\t\tequals: options?.equals\n\t});\n\treturn makeCallable(node, (sig) => {\n\t\tsig[\"set\"] = (v) => node.set(v);\n\t\tsig[\"forceSet\"] = (v) => node.forceSet(v);\n\t\tsig[\"bindSource\"] = (fn) => node.bindSource(fn);\n\t\tsig[\"unbindSource\"] = () => node.unbindSource();\n\t\tObject.defineProperty(sig, \"isBound\", { get: () => node.isBound });\n\t});\n}\nfunction computed(fn, options) {\n\treturn makeCallable(new SignalNode({\n\t\tfn,\n\t\tequals: options?.equals\n\t}), () => {});\n}\n/** Run `fn` without registering dependencies on the active consumer. */\nfunction untracked(fn) {\n\tconst prev = activeConsumer;\n\tactiveConsumer = null;\n\ttry {\n\t\treturn fn();\n\t} finally {\n\t\tactiveConsumer = prev;\n\t}\n}\n//#endregion\n//#region src/vec2Signal.ts\n/**\n* Compound Vec2 signal (DESIGN.md \u00A72.1): sub-signals are real signals, the\n* parent read derives from them, and tracks may target either level \u2014 a\n* sub-signal binding takes precedence for its component (\u00A72.2).\n*/\nfunction vec2Signal(initial) {\n\tconst [ix, iy] = Array.isArray(initial) ? initial : [initial.x, initial.y];\n\tconst x = signal(ix);\n\tconst y = signal(iy);\n\tx.expects = \"number\";\n\ty.expects = \"number\";\n\tconst compound = signal(null, { equals: (a, b) => a === null || b === null ? a === b : a[0] === b[0] && a[1] === b[1] });\n\tconst baseX = signal(ix);\n\tconst baseY = signal(iy);\n\tx.bindSource(() => {\n\t\tconst c = compound();\n\t\treturn c === null ? baseX() : c[0];\n\t});\n\ty.bindSource(() => {\n\t\tconst c = compound();\n\t\treturn c === null ? baseY() : c[1];\n\t});\n\tconst value = computed(() => [x(), y()], { equals: (a, b) => a[0] === b[0] && a[1] === b[1] });\n\tconst sig = (() => value());\n\tsig[\"peek\"] = () => value.peek();\n\tsig[\"subscribe\"] = (cb) => value.subscribe(cb);\n\tsig[\"set\"] = (v) => {\n\t\tcompound.set(null);\n\t\tbaseX.set(v[0]);\n\t\tbaseY.set(v[1]);\n\t};\n\tsig[\"bindSource\"] = (fn) => compound.bindSource(() => fn());\n\tsig[\"unbindSource\"] = () => {\n\t\tcompound.unbindSource();\n\t\tcompound.set(null);\n\t};\n\tsig[\"expects\"] = \"vec2\";\n\tObject.defineProperty(sig, \"x\", {\n\t\tvalue: x,\n\t\tenumerable: true\n\t});\n\tObject.defineProperty(sig, \"y\", {\n\t\tvalue: y,\n\t\tenumerable: true\n\t});\n\treturn sig;\n}\n//#endregion\n//#region src/fontRegistry.ts\nfunction facesOf(family, ref) {\n\tif (ref.faces && ref.faces.length > 0) return ref.faces.map((f) => ({\n\t\tfamily,\n\t\turl: f.url,\n\t\tweight: f.weight ?? 400,\n\t\tstyle: f.style ?? \"normal\"\n\t}));\n\treturn [{\n\t\tfamily,\n\t\turl: ref.url,\n\t\tweight: 400,\n\t\tstyle: \"normal\"\n\t}];\n}\n/**\n* CSS Fonts \u00A75.2 nearest-weight: among candidates (already filtered to the\n* desired style when possible), pick the closest weight. Ties below the target\n* prefer the lighter; the standard's directional preference (\u2264500 search down\n* first, \u2265500 search up first) collapses to \"closest, lighter on a tie\" here,\n* which is sufficient for the small, explicit face sets glissade documents\n* carry.\n*/\nfunction nearestWeight(faces, weight) {\n\tlet best;\n\tlet bestDist = Number.POSITIVE_INFINITY;\n\tfor (const f of faces) {\n\t\tconst dist = Math.abs(f.weight - weight);\n\t\tif (dist < bestDist || dist === bestDist && best !== void 0 && f.weight < best.weight) {\n\t\t\tbest = f;\n\t\t\tbestDist = dist;\n\t\t}\n\t}\n\treturn best;\n}\nfunction buildFontRegistry(assets) {\n\tconst families = /* @__PURE__ */ new Map();\n\tfor (const [family, ref] of Object.entries(assets ?? {})) {\n\t\tif (ref.kind !== \"font\") continue;\n\t\tfamilies.set(family, {\n\t\t\tfaces: facesOf(family, ref),\n\t\t\tfallback: ref.fallback ? [...ref.fallback] : []\n\t\t});\n\t}\n\treturn {\n\t\thas(family) {\n\t\t\treturn families.has(family);\n\t\t},\n\t\tfaces() {\n\t\t\tconst out = [];\n\t\t\tfor (const entry of families.values()) out.push(...entry.faces);\n\t\t\treturn out;\n\t\t},\n\t\tresolveFace(family, weight = 400, style = \"normal\") {\n\t\t\tconst entry = families.get(family);\n\t\t\tif (!entry) return void 0;\n\t\t\tconst styled = entry.faces.filter((f) => f.style === style);\n\t\t\treturn nearestWeight(styled.length > 0 ? styled : entry.faces, weight);\n\t\t},\n\t\tfallbackChain(family) {\n\t\t\tconst entry = families.get(family);\n\t\t\treturn entry ? [family, ...entry.fallback] : [family];\n\t\t}\n\t};\n}\n//#endregion\n//#region src/fontValidation.ts\n/**\n* Font validation (DESIGN.md \u00A73.6) \u2014 the family-level + glyph-coverage check.\n* Pure: given the text usages collected from a scene, the FontRegistry, and the\n* already-parsed cmap coverage per family, it reports unregistered families and\n* glyphs that would hit system fallback (\"h\u00E9llo \uD83D\uDC4B renders emoji in Chrome,\n* tofu in Skia\"). Strict mode throws; dev mode warns and returns the report.\n*\n* The strict-vs-dev switch is a per-render/per-export OPTION, never a Timeline\n* document flag. Generic and OS families are exempt \u2014 only a non-generic,\n* UNREGISTERED family is a strict error (the locked decision).\n*/\nvar FontValidationError = class extends Error {\n\treport;\n\tconstructor(report) {\n\t\tsuper(formatReport(report));\n\t\tthis.name = \"FontValidationError\";\n\t\tthis.report = report;\n\t}\n};\n/**\n* Generic CSS families (CSS Fonts \u00A715) \u2014 exempt from the unregistered check;\n* they intentionally resolve to a system/UA font. `sans-serif` is the Text\n* default, so a default-font Text never errors in strict mode.\n*/\nconst GENERIC_FAMILIES = new Set([\n\t\"serif\",\n\t\"sans-serif\",\n\t\"monospace\",\n\t\"cursive\",\n\t\"fantasy\",\n\t\"system-ui\",\n\t\"ui-serif\",\n\t\"ui-sans-serif\",\n\t\"ui-monospace\",\n\t\"ui-rounded\",\n\t\"math\",\n\t\"emoji\",\n\t\"fangsong\"\n]);\n/**\n* Is `family` exempt from the unregistered-family check? Generics are exempt by\n* the spec; an `osFamilies` allowlist lets a caller mark OS-installed families\n* (which the rasterizer can resolve without registration) as exempt too.\n*/\nfunction isExemptFamily(family, osFamilies) {\n\tconst f = family.trim().toLowerCase();\n\tif (GENERIC_FAMILIES.has(f)) return true;\n\treturn osFamilies?.has(f) ?? false;\n}\nfunction codePoints(text) {\n\tconst out = [];\n\tfor (const ch of text) {\n\t\tconst cp = ch.codePointAt(0);\n\t\tif (cp !== void 0) out.push(cp);\n\t}\n\treturn out;\n}\nfunction formatReport(report) {\n\tconst parts = [];\n\tif (report.unregistered.length > 0) parts.push(`unregistered font ${report.unregistered.length === 1 ? \"family\" : \"families\"}: ${report.unregistered.join(\", \")}`);\n\tfor (const m of report.missingGlyphs) {\n\t\tconst cps = m.codePoints.map((c) => \"U+\" + c.toString(16).toUpperCase().padStart(4, \"0\")).join(\", \");\n\t\tparts.push(`family '${m.family}' is missing glyphs for ${cps}`);\n\t}\n\treturn \"font validation failed (\u00A73.6): \" + parts.join(\"; \") + \" \u2014 register the family with its faces/fallback, or supply covering glyphs\";\n}\n/**\n* Validate `usages` against `registry`. `cmaps` maps family \u2192 covered code\n* points (already parsed via parseCmap by the caller's I/O). A family with no\n* cmap entry contributes no coverage (its glyphs all count as missing) unless\n* it is exempt or its chain reaches a covered family.\n*\n* Returns the report. In `'strict'` mode it throws FontValidationError when the\n* report is non-empty; in `'dev'` mode it emits a dev warning instead.\n*/\nfunction validateFonts(usages, registry, cmaps, mode, options = {}) {\n\tconst unregistered = /* @__PURE__ */ new Set();\n\tconst missing = /* @__PURE__ */ new Map();\n\tfor (const usage of usages) {\n\t\tconst family = usage.family;\n\t\tconst exempt = isExemptFamily(family, options.osFamilies);\n\t\tif (!registry.has(family)) {\n\t\t\tif (!exempt) unregistered.add(family);\n\t\t\tcontinue;\n\t\t}\n\t\tconst chain = registry.fallbackChain(family);\n\t\tfor (const cp of codePoints(usage.text)) if (!chain.some((fam) => cmaps.get(fam)?.has(cp) ?? false)) {\n\t\t\tlet set = missing.get(family);\n\t\t\tif (!set) {\n\t\t\t\tset = /* @__PURE__ */ new Set();\n\t\t\t\tmissing.set(family, set);\n\t\t\t}\n\t\t\tset.add(cp);\n\t\t}\n\t}\n\tconst report = {\n\t\tunregistered: [...unregistered].sort(),\n\t\tmissingGlyphs: [...missing.entries()].map(([family, cps]) => ({\n\t\t\tfamily,\n\t\t\tcodePoints: [...cps].sort((a, b) => a - b)\n\t\t})).sort((a, b) => a.family < b.family ? -1 : a.family > b.family ? 1 : 0)\n\t};\n\tif (!(report.unregistered.length === 0 && report.missingGlyphs.length === 0)) {\n\t\tif (mode === \"strict\") throw new FontValidationError(report);\n\t\temitDevWarning(formatReport(report));\n\t}\n\treturn report;\n}\n//#endregion\n//#region src/builder.ts\n/**\n* The fluent timeline builder (DESIGN.md \u00A72.6): imperative-LOOKING chains that\n* compile to the declarative Timeline document. Nothing executes at play time.\n*\n* Position grammar (GSAP-proven): absolute `1.5`; `'+=0.5'`/`'-=0.2'` from the\n* previous insertion's END; `'<'`/`'>'` previous START/END; `'label'`,\n* `'label+=0.3'`. Implicit from-values resolve in a finalize pass in t-order\n* against the complete document \u2014 never sampled live (the GSAP invalidate()\n* bug class, \u00A72.6), with the build-time signal value as the t-order base.\n*/\nvar PositionError = class extends Error {\n\tconstructor(pos, detail) {\n\t\tsuper(`invalid position '${pos}': ${detail}`);\n\t\tthis.name = \"PositionError\";\n\t}\n};\nfunction peekBase(target) {\n\treturn typeof target !== \"string\" && typeof target.peek === \"function\" ? target.peek() : void 0;\n}\n/** Callbacks registered via .call(), keyed by the produced document. */\nconst timelineCallbacks = /* @__PURE__ */ new WeakMap();\nfunction getTimelineCallbacks(doc) {\n\treturn timelineCallbacks.get(doc) ?? /* @__PURE__ */ new Map();\n}\nfunction buildTimeline(build, init = {}) {\n\tconst insertions = [];\n\tconst labels = { ...init.labels };\n\tconst children = [];\n\tconst markers = [];\n\tconst callbacks = /* @__PURE__ */ new Map();\n\tlet durationEditable = false;\n\tlet prevStart = 0;\n\tlet prevEnd = 0;\n\tlet callCount = 0;\n\tfunction resolvePosition(at) {\n\t\tif (at === void 0) return prevEnd;\n\t\tif (typeof at === \"number\") return at;\n\t\tif (at === \"<\") return prevStart;\n\t\tif (at === \">\") return prevEnd;\n\t\tconst rel = /^([+-])=([\\d.]+)$/.exec(at);\n\t\tif (rel) return prevEnd + (rel[1] === \"+\" ? 1 : -1) * parseFloat(rel[2]);\n\t\tconst labelRel = /^([^+\\-=]+?)(?:([+-])=([\\d.]+))?$/.exec(at);\n\t\tif (labelRel) {\n\t\t\tconst name = labelRel[1];\n\t\t\tif (!(name in labels)) throw new PositionError(at, `unknown label '${name}' (labels must be declared before use)`);\n\t\t\tconst offset = labelRel[2] ? (labelRel[2] === \"+\" ? 1 : -1) * parseFloat(labelRel[3]) : 0;\n\t\t\treturn labels[name] + offset;\n\t\t}\n\t\tthrow new PositionError(at, \"expected a number, '<', '>', '+=x', '-=x', or 'label[+=x]'\");\n\t}\n\tconst builder = {\n\t\tto(target, value, opts = {}) {\n\t\t\tconst ease = opts.ease ?? \"easeInOutCubic\";\n\t\t\tconst isSpring = typeof ease === \"object\" && ease.kind === \"spring\";\n\t\t\tconst duration = isSpring ? spring.duration(ease) : opts.duration ?? 1;\n\t\t\tif (isSpring && opts.duration !== void 0) throw new TimelineValidationError(\"a spring ease determines its duration (spring.duration(cfg)); do not pass duration with a spring\");\n\t\t\tconst start = resolvePosition(opts.at);\n\t\t\tconst ins = {\n\t\t\t\tkind: \"tween\",\n\t\t\t\ttarget: resolveTweenTarget(target),\n\t\t\t\tvalue,\n\t\t\t\tduration,\n\t\t\t\tease,\n\t\t\t\tat: opts.at,\n\t\t\t\tbaseValue: peekBase(target),\n\t\t\t\teditable: false,\n\t\t\t\tstart\n\t\t\t};\n\t\t\tif (opts.from !== void 0) ins.explicitFrom = opts.from;\n\t\t\tinsertions.push(ins);\n\t\t\tprevStart = start;\n\t\t\tprevEnd = start + duration;\n\t\t\treturn builder;\n\t\t},\n\t\tfromTo(target, from, to, opts = {}) {\n\t\t\tbuilder.to(target, to, opts);\n\t\t\tinsertions[insertions.length - 1].explicitFrom = from;\n\t\t\treturn builder;\n\t\t},\n\t\tstagger(targets, spec, opts) {\n\t\t\tconst n = targets.length;\n\t\t\tconst base = resolvePosition(opts.at);\n\t\t\tconst c = (n - 1) / 2;\n\t\t\tconst rankOf = (i) => {\n\t\t\t\tconst f = opts.from ?? \"start\";\n\t\t\t\tif (f === \"start\") return i;\n\t\t\t\tif (f === \"end\") return n - 1 - i;\n\t\t\t\tif (f === \"center\") return Math.round(Math.abs(i - c));\n\t\t\t\tif (f === \"edges\") return Math.round(c - Math.abs(i - c));\n\t\t\t\treturn Math.round(Math.abs(i - f));\n\t\t\t};\n\t\t\tconst duration = spec.duration ?? 1;\n\t\t\tlet maxDelay = 0;\n\t\t\tconst tweenOpts = (d) => ({\n\t\t\t\tat: base + d,\n\t\t\t\t...spec.duration !== void 0 ? { duration: spec.duration } : {},\n\t\t\t\t...spec.ease !== void 0 ? { ease: spec.ease } : {}\n\t\t\t});\n\t\t\tfor (let i = 0; i < n; i++) {\n\t\t\t\tconst d = rankOf(i) * opts.each;\n\t\t\t\tif (d > maxDelay) maxDelay = d;\n\t\t\t\tconst t = targets[i];\n\t\t\t\tif (spec.from !== void 0) builder.fromTo(t, spec.from, spec.to, tweenOpts(d));\n\t\t\t\telse builder.to(t, spec.to, tweenOpts(d));\n\t\t\t}\n\t\t\tprevStart = base;\n\t\t\tprevEnd = base + maxDelay + duration;\n\t\t\treturn builder;\n\t\t},\n\t\tset(target, value, opts = {}) {\n\t\t\tconst start = resolvePosition(opts.at);\n\t\t\tinsertions.push({\n\t\t\t\tkind: \"set\",\n\t\t\t\ttarget: resolveTweenTarget(target),\n\t\t\t\tvalue,\n\t\t\t\tduration: 0,\n\t\t\t\tease: \"linear\",\n\t\t\t\tat: opts.at,\n\t\t\t\tbaseValue: peekBase(target),\n\t\t\t\teditable: false,\n\t\t\t\tstart\n\t\t\t});\n\t\t\tprevStart = start;\n\t\t\tprevEnd = start;\n\t\t\treturn builder;\n\t\t},\n\t\tlabel(name, at) {\n\t\t\tlabels[name] = at === void 0 ? prevEnd : resolvePosition(at);\n\t\t\treturn builder;\n\t\t},\n\t\tadd(child, at, opts = {}) {\n\t\t\tconst start = at === void 0 ? prevEnd : resolvePosition(at);\n\t\t\tconst mode = opts.mode ?? \"add\";\n\t\t\tconst entry = {\n\t\t\t\ttimeline: child,\n\t\t\t\tat: start,\n\t\t\t\tmode,\n\t\t\t\t_pos: at\n\t\t\t};\n\t\t\tif (opts.timeScale !== void 0) entry.timeScale = opts.timeScale;\n\t\t\tchildren.push(entry);\n\t\t\tfor (const [name, fn] of getTimelineCallbacks(child)) if (!callbacks.has(name)) callbacks.set(name, fn);\n\t\t\tconst scale = mode === \"sync\" ? opts.timeScale ?? 1 : 1;\n\t\t\tprevStart = start;\n\t\t\tprevEnd = start + compileTimeline(child).duration / scale;\n\t\t\treturn builder;\n\t\t},\n\t\tsequence(subs, opts = {}) {\n\t\t\tconst gap = opts.gap ?? 0;\n\t\t\tconst rel = gap < 0 ? `-=${-gap}` : `+=${gap}`;\n\t\t\tfor (let i = 0; i < subs.length; i++) builder.add(subs[i], i === 0 ? void 0 : rel);\n\t\t\treturn builder;\n\t\t},\n\t\tat(time, sub) {\n\t\t\treturn builder.add(sub, time);\n\t\t},\n\t\tcall(fn, at) {\n\t\t\tconst t = at === void 0 ? prevEnd : resolvePosition(at);\n\t\t\tconst name = `call:${callCount++}`;\n\t\t\tmarkers.push({\n\t\t\t\tt,\n\t\t\t\tname\n\t\t\t});\n\t\t\tcallbacks.set(name, fn);\n\t\t\treturn builder;\n\t\t},\n\t\tcue(at, name, data) {\n\t\t\tconst merged = data !== void 0 && data !== null && typeof data === \"object\" && !Array.isArray(data) ? {\n\t\t\t\tkind: \"cue\",\n\t\t\t\t...data\n\t\t\t} : { kind: \"cue\" };\n\t\t\tmarkers.push({\n\t\t\t\tt: resolvePosition(at),\n\t\t\t\tname,\n\t\t\t\tdata: merged\n\t\t\t});\n\t\t\treturn builder;\n\t\t},\n\t\tadBreak(at, opts = {}) {\n\t\t\tconst data = {\n\t\t\t\tkind: \"ad-break\",\n\t\t\t\t...opts.duration !== void 0 ? { duration: opts.duration } : {}\n\t\t\t};\n\t\t\tmarkers.push({\n\t\t\t\tt: resolvePosition(at),\n\t\t\t\tname: opts.id ?? \"ad-break\",\n\t\t\t\tdata\n\t\t\t});\n\t\t\treturn builder;\n\t\t},\n\t\teditable() {\n\t\t\tconst last = insertions[insertions.length - 1];\n\t\t\tif (!last) throw new TimelineValidationError(\".editable() requires a preceding insertion\");\n\t\t\tconst nodeId = targetNodeId(last.target);\n\t\t\tif (!isEditableNodeId(nodeId)) throw new TimelineValidationError(`.editable() needs a node with an explicit id; '${nodeId}' is not an editable host (\u00A76.4)`);\n\t\t\tlast.editable = true;\n\t\t\treturn builder;\n\t\t},\n\t\teditableDuration() {\n\t\t\tdurationEditable = true;\n\t\t\treturn builder;\n\t\t}\n\t};\n\tbuild(builder);\n\tconst byTarget = /* @__PURE__ */ new Map();\n\tfor (const ins of insertions) {\n\t\tlet list = byTarget.get(ins.target);\n\t\tif (!list) {\n\t\t\tlist = [];\n\t\t\tbyTarget.set(ins.target, list);\n\t\t}\n\t\tlist.push(ins);\n\t}\n\tconst tracks = [];\n\tfor (const [target, list] of byTarget) {\n\t\tlist.sort((a, b) => a.start - b.start);\n\t\tconst keys = [];\n\t\tconst editable = list.some((i) => i.editable);\n\t\tlet prevValue = list.find((i) => i.baseValue !== void 0)?.baseValue;\n\t\tconst first = list[0];\n\t\tif (first.kind === \"tween\" && first.explicitFrom === void 0 && prevValue === void 0) emitDevWarning(`'${target}': first tween has no resolvable from-value (string targets have no base) \u2014 the track sits at its end state before the tween. Anchor it with { from }, fromTo(), or set(..., { at: 0 }).`);\n\t\tfor (const ins of list) {\n\t\t\tif (ins.kind === \"set\") {\n\t\t\t\tkeys.push({\n\t\t\t\t\tt: ins.start,\n\t\t\t\t\tvalue: ins.value,\n\t\t\t\t\tinterp: \"hold\"\n\t\t\t\t});\n\t\t\t\tprevValue = ins.value;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst from = ins.explicitFrom !== void 0 ? ins.explicitFrom : prevValue;\n\t\t\tconst lastKey = keys[keys.length - 1];\n\t\t\tif (from !== void 0 && (!lastKey || lastKey.t < ins.start)) {\n\t\t\t\tconst fromKey = {\n\t\t\t\t\tt: ins.start,\n\t\t\t\t\tvalue: from\n\t\t\t\t};\n\t\t\t\tif (ins.explicitFrom === void 0) fromKey.derived = true;\n\t\t\t\tif (!lastKey || ins.start > lastKey.t) keys.push(fromKey);\n\t\t\t}\n\t\t\tkeys.push({\n\t\t\t\tt: ins.start + ins.duration,\n\t\t\t\tvalue: ins.value,\n\t\t\t\tease: ins.ease\n\t\t\t});\n\t\t\tprevValue = ins.value;\n\t\t}\n\t\tconst deduped = [];\n\t\tfor (const k of keys.sort((a, b) => a.t - b.t)) {\n\t\t\tconst last = deduped[deduped.length - 1];\n\t\t\tif (last && last.t === k.t) deduped[deduped.length - 1] = k;\n\t\t\telse deduped.push(k);\n\t\t}\n\t\tconst tr = {\n\t\t\ttarget,\n\t\t\ttype: inferValueType(list[0].value),\n\t\t\tkeys: deduped\n\t\t};\n\t\tif (editable) tr.editable = true;\n\t\ttracks.push(tr);\n\t}\n\tconst doc = timeline$1({\n\t\t...init,\n\t\ttracks,\n\t\tlabels,\n\t\t...durationEditable ? { editableDuration: true } : {},\n\t\t...markers.length ? { markers } : {},\n\t\t...children.length ? { children: children.map(({ _pos, ...c }) => c) } : {}\n\t});\n\tif (callbacks.size) timelineCallbacks.set(doc, callbacks);\n\treturn doc;\n}\nfunction timeline(arg, init) {\n\treturn typeof arg === \"function\" ? buildTimeline(arg, init) : timeline$1(arg);\n}\n//#endregion\n//#region src/binding.ts\n/**\n* Playhead + timeline binding (DESIGN.md \u00A72.4): animated properties are not\n* written each frame \u2014 binding rewires each targeted signal's source to\n* `() => sampleTrack(track, playhead())`, so evaluation stays pull-only and\n* unchanged samples don't propagate dirtiness.\n*/\nfunction createPlayhead(initial = 0) {\n\treturn signal(initial);\n}\nvar UnboundTargetError = class extends Error {\n\tconstructor(target) {\n\t\tsuper(`timeline targets '${target}' but no property signal resolves to it`);\n\t\tthis.name = \"UnboundTargetError\";\n\t}\n};\n/**\n* A track's value type doesn't match the shape of the property it targets \u2014 the\n* silent-NaN class (\u00A72.2): e.g. a scalar `number` track bound to a `vec2` prop\n* makes the compound a number, its `.x`/`.y` index it to `undefined`, and the\n* node's matrix goes NaN \u2014 the node and its subtree vanish. Caught at BIND time\n* (the track's type is known then), the precedent being UnboundTargetError:\n* mismatched binds are build errors, not silent no-ops.\n*/\nvar BindTypeMismatchError = class extends Error {\n\ttarget;\n\tgot;\n\t/** The accepted type(s) \u2014 a single id, or the set a polymorphic prop (e.g. `fill`: color|paint) admits. */\n\texpected;\n\tconstructor(target, got, expected) {\n\t\tconst prop = target.slice(target.lastIndexOf(\"/\") + 1);\n\t\tconst want = [expected].flat();\n\t\tconst hint = got === \"number\" && want.includes(\"vec2\") ? `; target '${prop}.x'/'${prop}.y' or author a vec2 track` : \"\";\n\t\tsuper(`track '${target}' is '${got}' but '${prop}' expects '${want.join(\"'|'\")}' (would silently NaN evaluation)${hint}`);\n\t\tthis.target = target;\n\t\tthis.got = got;\n\t\tthis.name = \"BindTypeMismatchError\";\n\t\tthis.expected = expected;\n\t}\n};\n/**\n* Bind a compiled timeline's tracks to property signals. `resolve` returns\n* the signal for a target path, or undefined \u2014 which is a compile-time-style\n* error (\u00A72.2: unbound tracks are build errors, not silent no-ops).\n*/\nfunction bindTimeline(compiled, resolve, playhead = createPlayhead()) {\n\tconst bound = [];\n\tconst samplers = /* @__PURE__ */ new Map();\n\tfor (const [target, tr] of compiled.tracks) {\n\t\tconst sig = resolve(target);\n\t\tif (!sig) throw new UnboundTargetError(target);\n\t\tconst got = tr.type;\n\t\tconst expects = sig.expects;\n\t\tif (expects !== void 0) {\n\t\t\tconst gotRepr = reprOf(got);\n\t\t\tif (!(Array.isArray(expects) ? expects : [expects]).some((e) => reprOf(e) === gotRepr)) throw new BindTypeMismatchError(target, got, expects);\n\t\t}\n\t\tsig.bindSource(() => sampleTrack(tr, playhead()));\n\t\tbound.push(sig);\n\t\tsamplers.set(target, {\n\t\t\ttrack: tr,\n\t\t\tvalue: (t) => sampleTrack(tr, t),\n\t\t\tvelocity: (t) => velocityAt(tr, t)\n\t\t});\n\t}\n\treturn {\n\t\tplayhead,\n\t\tsamplers,\n\t\tunbind: () => {\n\t\t\tfor (const sig of bound) sig.unbindSource();\n\t\t}\n\t};\n}\n/**\n* The evaluation entry discipline (\u00A72.5): the playhead write is the sanctioned\n* entry mutation, then the read phase begins and `read` must be pure.\n*/\nfunction evaluateAt(playhead, t, read) {\n\tplayhead.forceSet(t);\n\tbeginReadPhase();\n\ttry {\n\t\treturn read();\n\t} finally {\n\t\tendReadPhase();\n\t}\n}\n//#endregion\n//#region src/rng.ts\n/** Returns a deterministic [0,1) generator for the given integer seed. */\nfunction random(seed) {\n\tlet a = seed >>> 0;\n\treturn () => {\n\t\ta = a + 2654435769 | 0;\n\t\tlet t = a ^ a >>> 16;\n\t\tt = Math.imul(t, 569420461);\n\t\tt = t ^ t >>> 15;\n\t\tt = Math.imul(t, 1935289751);\n\t\tt = t ^ t >>> 15;\n\t\treturn (t >>> 0) / 4294967296;\n\t};\n}\n//#endregion\n//#region src/bake.ts\n/**\n* bake() (DESIGN.md \u00A72.8): stateful simulation as a compilation step. Run the\n* stepper ONCE \u2014 fixed dt, seeded RNG \u2014 and emit ordinary frame-indexed\n* Tracks; rendering stays a pure lookup and the \u00A72.5 contract survives.\n* The checkpointed variant trades memory for bounded re-simulation.\n*/\nvar BakeError = class extends Error {\n\tconstructor(detail) {\n\t\tsuper(`bake(): ${detail}`);\n\t\tthis.name = \"BakeError\";\n\t}\n};\nfunction emit(acc, sampled, t) {\n\tfor (const [path, value] of Object.entries(sampled)) {\n\t\tlet a = acc.get(path);\n\t\tif (!a) {\n\t\t\ta = {\n\t\t\t\tkeys: [],\n\t\t\t\ttype: inferValueType(value)\n\t\t\t};\n\t\t\tacc.set(path, a);\n\t\t}\n\t\ta.keys.push({\n\t\t\tt,\n\t\t\tvalue\n\t\t});\n\t}\n}\nfunction toTracks(acc) {\n\treturn [...acc.entries()].map(([target, a]) => ({\n\t\ttarget,\n\t\ttype: a.type,\n\t\tkeys: a.keys\n\t}));\n}\nfunction bake(cfg) {\n\tif (!(cfg.fps > 0) || !(cfg.duration >= 0)) throw new BakeError(\"fps must be > 0 and duration >= 0\");\n\tconst rng = random(cfg.seed ?? 0);\n\tconst dt = 1 / cfg.fps;\n\tconst frames = Math.round(cfg.duration * cfg.fps);\n\tlet world = cfg.setup(rng);\n\tconst acc = /* @__PURE__ */ new Map();\n\temit(acc, cfg.sample(world), 0);\n\tfor (let f = 1; f <= frames; f++) {\n\t\tworld = cfg.step(world, dt, rng) ?? world;\n\t\temit(acc, cfg.sample(world), f * dt);\n\t}\n\treturn toTracks(acc);\n}\nfunction bakeCheckpointed(cfg) {\n\tif (!(cfg.every >= 1)) throw new BakeError(\"checkpoint interval `every` must be >= 1 frame\");\n\tconst dt = 1 / cfg.fps;\n\tconst totalFrames = Math.round(cfg.duration * cfg.fps);\n\tlet draws = 0;\n\tconst baseRng = random(cfg.seed ?? 0);\n\tconst countingRng = () => {\n\t\tdraws++;\n\t\treturn baseRng();\n\t};\n\tconst rngAt = (targetDraws) => {\n\t\tconst r = random(cfg.seed ?? 0);\n\t\tfor (let i = 0; i < targetDraws; i++) r();\n\t\treturn r;\n\t};\n\tlet world = cfg.setup(countingRng);\n\tconst checkpoints = [{\n\t\tsnap: cfg.snapshot(world),\n\t\trngDraws: draws\n\t}];\n\tlet simulatedTo = 0;\n\t/** Advance the master simulation, recording a checkpoint every K frames. */\n\tfunction ensureSimulatedTo(frame) {\n\t\twhile (simulatedTo < Math.min(frame, totalFrames)) {\n\t\t\tworld = cfg.step(world, dt, countingRng) ?? world;\n\t\t\tsimulatedTo++;\n\t\t\tif (simulatedTo % cfg.every === 0) checkpoints.push({\n\t\t\t\tsnap: cfg.snapshot(world),\n\t\t\t\trngDraws: draws\n\t\t\t});\n\t\t}\n\t}\n\treturn {\n\t\tframes: totalFrames,\n\t\tbakeRange(fromFrame, toFrame) {\n\t\t\tif (fromFrame < 0 || toFrame > totalFrames || fromFrame > toFrame) throw new BakeError(`range ${fromFrame}..${toFrame} outside 0..${totalFrames}`);\n\t\t\tconst cpFrame = Math.floor(fromFrame / cfg.every) * cfg.every;\n\t\t\tensureSimulatedTo(cpFrame);\n\t\t\tconst cp = checkpoints[cpFrame / cfg.every];\n\t\t\tlet w = cfg.restore(cp.snap);\n\t\t\tconst rng = rngAt(cp.rngDraws);\n\t\t\tlet frame = cpFrame;\n\t\t\tconst acc = /* @__PURE__ */ new Map();\n\t\t\tif (frame >= fromFrame) emit(acc, cfg.sample(w), frame * dt);\n\t\t\twhile (frame < toFrame) {\n\t\t\t\tw = cfg.step(w, dt, rng) ?? w;\n\t\t\t\tframe++;\n\t\t\t\tif (frame >= fromFrame) emit(acc, cfg.sample(w), frame * dt);\n\t\t\t}\n\t\t\treturn toTracks(acc);\n\t\t}\n\t};\n}\n//#endregion\nexport { BakeError, BindTypeMismatchError, CircularDependencyError, ColorParseError, DEFAULT_EASE, FontValidationError, PositionError, SidecarVersionError, TARGET_PATH, TimelineValidationError, TrackValidationError, UnboundTargetError, UnknownEasingError, UnknownValueTypeError, UnresolvableTargetError, ValueTypeInferenceError, WriteDuringEvaluationError, assignKeyIds, audioOffsetSamples, bake, bakeCheckpointed, batch, beginReadPhase, bindTimeline, booleanType, buildFontRegistry, buildTimeline, colorType, compileTimeline, computed, createPlayhead, cubicBezier, cubicBezierDerivative, deleteSidecarTrack, easingDerivatives, easings, emitDevWarning, emptySidecar, endReadPhase, evaluateAt, formatColor, getTimelineCallbacks, getValueType, hashKeys, inReadPhase, inferValueType, isDurationEditable, isEditableNodeId, isExemptFamily, key, lerpColor, mergeSidecar, mergeSidecarDetailed, migrateSidecar, namedEasing, normalizeEditedKeys, numberType, oklabToRgba, paintType, parseCmap, parseColor, pathType, random, registerValueType, reprOf, resolveEase, resolveEaseDerivative, resolveTweenTarget, rgbaToOklab, sampleTrack, setDevWarning, setScheduler, setSidecarTrack, signal, spring, springEasing, springEasingDerivative, springPresets, springTo, stagger, stringType, synchronousScheduler, targetNodeId, timeline, track, untracked, validateFonts, validateTrack, vec2ArcType, vec2Equals, vec2Signal, vec2Type, velocityAt };\n", "import { TARGET_PATH, computed, emitDevWarning, random, signal, vec2Signal } from \"@glissade/core\";\n//#region src/matrix.ts\nconst IDENTITY = [\n\t1,\n\t0,\n\t0,\n\t1,\n\t0,\n\t0\n];\nconst z = (v) => v === 0 ? 0 : v;\nfunction multiply(m1, m2) {\n\tconst [a1, b1, c1, d1, e1, f1] = m1;\n\tconst [a2, b2, c2, d2, e2, f2] = m2;\n\treturn [\n\t\tz(a1 * a2 + c1 * b2),\n\t\tz(b1 * a2 + d1 * b2),\n\t\tz(a1 * c2 + c1 * d2),\n\t\tz(b1 * c2 + d1 * d2),\n\t\tz(a1 * e2 + c1 * f2 + e1),\n\t\tz(b1 * e2 + d1 * f2 + f1)\n\t];\n}\n/** Compose translate \u00D7 rotate \u00D7 scale (rotation in degrees). */\nfunction fromTRS(position, rotationDeg, scale) {\n\tconst r = rotationDeg * Math.PI / 180;\n\tconst cos = Math.cos(r);\n\tconst sin = Math.sin(r);\n\tconst [sx, sy] = scale;\n\treturn [\n\t\tz(cos * sx),\n\t\tz(sin * sx),\n\t\tz(-sin * sy),\n\t\tz(cos * sy),\n\t\tz(position[0]),\n\t\tz(position[1])\n\t];\n}\n/** Inverse affine: [A | t]\u207B\u00B9 = [A\u207B\u00B9 | \u2212A\u207B\u00B9t]; null when degenerate (det 0). */\nfunction invert(m) {\n\tconst [a, b, c, d, e, f] = m;\n\tconst det = a * d - b * c;\n\tif (det === 0) return null;\n\tconst ia = d / det;\n\tconst ib = -b / det;\n\tconst ic = -c / det;\n\tconst id = a / det;\n\treturn [\n\t\tz(ia),\n\t\tz(ib),\n\t\tz(ic),\n\t\tz(id),\n\t\tz(-(ia * e + ic * f)),\n\t\tz(-(ib * e + id * f))\n\t];\n}\nfunction applyToPoint(m, p) {\n\treturn [m[0] * p[0] + m[2] * p[1] + m[4], m[1] * p[0] + m[3] * p[1] + m[5]];\n}\nfunction matEquals(a, b) {\n\treturn a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5];\n}\n//#endregion\n//#region src/displayDiff.ts\n/**\n* The collapse-replacer shared by the cacheKey serializer\n* (`createDisplayListBuilder().cacheKey`), `cacheColdAudit.hashDisplayList`,\n* and `serializeDisplayList` here. CRITICAL: this is BYTE-PRESERVING \u2014 the\n* cacheKey it backs stamps into pushGroup and keys the \u00A73.5 raster cache, so\n* its output must not move. The three call sites previously DUPLICATED this\n* byte-for-byte; it lives here once.\n*\n* - ArrayBuffer / typed-array views collapse to a `ab:<len>` / `view:<len>`\n* length marker (opaque binary never belongs in a structural key).\n* - Functions drop (JSON would already drop them; explicit for parity).\n* - Non-finite numbers (`NaN`/`Infinity`/`-Infinity`) collapse to DISTINCT\n* string sentinels. `JSON.stringify` natively serializes all three to the\n* SAME token (`null`), which would collide the cacheKey of two DisplayLists\n* that differ only in WHICH non-finite value reaches a draw field \u2014 a stale\n* raster + an `auditCacheCold` false-OK. The distinct sentinels keep them\n* apart. This does NOT touch FINITE numbers (the common path): only the\n* three non-finite inputs change, so the \u00A73.5 cacheKey bytes for every real\n* (finite) list are byte-identical \u2014 pinned by the regression guard.\n*\n* NOTE: `-0` is intentionally NOT normalized here. The matrix layer\n* (`matrix.ts`) already normalizes `-0 \u2192 0` at the source, and adding a `-0`\n* pass to THIS replacer would change the cacheKey bytes for any list that ever\n* carried a raw `-0` \u2014 silently invalidating the cache cluster-wide. (`-0` is\n* finite, so the non-finite branch never touches it.) Byte preservation wins;\n* the regression guard pins the exact key.\n*/\nfunction collapseReplacer(_key, value) {\n\tif (value instanceof ArrayBuffer) return `ab:${value.byteLength}`;\n\tif (ArrayBuffer.isView(value)) return `view:${value.byteLength}`;\n\tif (typeof value === \"function\") return void 0;\n\tif (typeof value === \"number\" && !Number.isFinite(value)) {\n\t\tif (Number.isNaN(value)) return \"NaN\";\n\t\treturn value > 0 ? \"Infinity\" : \"-Infinity\";\n\t}\n\treturn value;\n}\n/** A flat, stable JSON value for one command with its resource ids INLINED to content. */\nfunction commandView(cmd, resources) {\n\tconst out = {};\n\tfor (const [k, v] of Object.entries(cmd)) out[k] = v;\n\tif (cmd.op === \"clip\" || cmd.op === \"fillPath\" || cmd.op === \"strokePath\") out[\"path\"] = resources[cmd.path];\n\telse if (cmd.op === \"drawImage\") out[\"image\"] = resources[cmd.image];\n\treturn out;\n}\nconst stable = (v) => JSON.stringify(v, collapseReplacer);\n/** Field-level diff of two same-op command views (shallow over top-level props). */\nfunction diffFields(a, b) {\n\tconst changes = [];\n\tconst keys = new Set([...Object.keys(a), ...Object.keys(b)]);\n\tfor (const k of keys) {\n\t\tif (k === \"op\") continue;\n\t\tif (stable(a[k]) !== stable(b[k])) changes.push({\n\t\t\tpath: k,\n\t\t\tfrom: a[k],\n\t\t\tto: b[k]\n\t\t});\n\t}\n\treturn changes;\n}\n/**\n* Index-aligned positional diff of two DisplayLists. Command i in `a` is\n* compared to command i in `b`; trailing commands become `add`/`remove`. A\n* single insert/remove cascades \u2014 this is the documented v1 cliff.\n*/\nfunction diffDisplayLists(a, b) {\n\tconst deltas = [];\n\tconst n = Math.max(a.commands.length, b.commands.length);\n\tfor (let i = 0; i < n; i++) {\n\t\tconst ca = a.commands[i];\n\t\tconst cb = b.commands[i];\n\t\tif (ca !== void 0 && cb !== void 0) {\n\t\t\tconst va = commandView(ca, a.resources);\n\t\t\tconst vb = commandView(cb, b.resources);\n\t\t\tif (stable(va) === stable(vb)) continue;\n\t\t\tif (ca.op !== cb.op) deltas.push({\n\t\t\t\tindex: i,\n\t\t\t\tkind: \"change\",\n\t\t\t\topA: ca.op,\n\t\t\t\topB: cb.op,\n\t\t\t\tfields: [{\n\t\t\t\t\tpath: \"op\",\n\t\t\t\t\tfrom: ca.op,\n\t\t\t\t\tto: cb.op\n\t\t\t\t}]\n\t\t\t});\n\t\t\telse deltas.push({\n\t\t\t\tindex: i,\n\t\t\t\tkind: \"change\",\n\t\t\t\topA: ca.op,\n\t\t\t\topB: cb.op,\n\t\t\t\tfields: diffFields(va, vb)\n\t\t\t});\n\t\t} else if (cb !== void 0) deltas.push({\n\t\t\tindex: i,\n\t\t\tkind: \"add\",\n\t\t\topB: cb.op,\n\t\t\tfields: []\n\t\t});\n\t\telse if (ca !== void 0) deltas.push({\n\t\t\tindex: i,\n\t\t\tkind: \"remove\",\n\t\t\topA: ca.op,\n\t\t\tfields: []\n\t\t});\n\t}\n\tconst sizeDiffers = a.size.w !== b.size.w || a.size.h !== b.size.h;\n\treturn {\n\t\tequal: deltas.length === 0 && !sizeDiffers,\n\t\tdeltas,\n\t\t...sizeDiffers ? { size: {\n\t\t\tfrom: a.size,\n\t\t\tto: b.size\n\t\t} } : {}\n\t};\n}\n/** Human-readable, multi-line rendering of a DisplayDiff (CLI command-tree). */\nfunction formatDisplayDiff(diff) {\n\tif (diff.equal) return \"DisplayLists are identical.\";\n\tconst lines = [];\n\tif (diff.size) lines.push(`size ${diff.size.from.w}x${diff.size.from.h} -> ${diff.size.to.w}x${diff.size.to.h}`);\n\tfor (const d of diff.deltas) if (d.kind === \"add\") lines.push(`+ [${d.index}] add ${d.opB ?? \"?\"}`);\n\telse if (d.kind === \"remove\") lines.push(`- [${d.index}] remove ${d.opA ?? \"?\"}`);\n\telse {\n\t\tconst op = d.opA === d.opB ? d.opA : `${d.opA ?? \"?\"} -> ${d.opB ?? \"?\"}`;\n\t\tlines.push(`~ [${d.index}] ${op}`);\n\t\tfor (const f of d.fields) lines.push(` ${f.path}: ${stable(f.from)} -> ${stable(f.to)}`);\n\t}\n\treturn lines.join(\"\\n\");\n}\n/**\n* The `.dl.json` snapshot interchange schema (DESIGN \u00A77.4). Users commit\n* `.dl.json` baselines, so this carries the SAME break-policy obligation as\n* `Timeline.version` and `SidecarDoc.sidecarVersion`: bump on a breaking shape\n* change. Independent of the API version.\n*/\nconst DL_SNAPSHOT_VERSION = 1;\n/**\n* Serialize a DisplayList to a stable `.dl.json` document string (reusing the\n* byte-preserving collapse-replacer). Round-trips through `parseDisplaySnapshot`.\n*/\nfunction serializeDisplayList(dl) {\n\tconst snapshot = {\n\t\tdlSnapshotVersion: 1,\n\t\tsize: dl.size,\n\t\tcommands: dl.commands,\n\t\tresources: dl.resources\n\t};\n\treturn JSON.stringify(snapshot, collapseReplacer, 2);\n}\nvar DlSnapshotError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"DlSnapshotError\";\n\t}\n};\n/** Parse a `.dl.json` snapshot back into a DisplayList (validates the version). */\nfunction parseDisplaySnapshot(json) {\n\tconst doc = JSON.parse(json);\n\tif (doc.dlSnapshotVersion !== 1) throw new DlSnapshotError(`unsupported dlSnapshotVersion ${String(doc.dlSnapshotVersion)}; this build reads 1`);\n\tif (!doc.size || !Array.isArray(doc.commands) || !Array.isArray(doc.resources)) throw new DlSnapshotError(\"malformed .dl.json snapshot (need size, commands[], resources[])\");\n\treturn {\n\t\tsize: doc.size,\n\t\tcommands: doc.commands,\n\t\tresources: doc.resources\n\t};\n}\n//#endregion\n//#region src/displayList.ts\nvar FilterValidationError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"FilterValidationError\";\n\t}\n};\nconst FILTER_KINDS = new Set([\n\t\"blur\",\n\t\"drop-shadow\",\n\t\"brightness\",\n\t\"contrast\",\n\t\"saturate\"\n]);\n/** Document-layer validation: reject unknown kinds and out-of-range params loudly. */\nfunction validateFilters(filters) {\n\tfor (const f of filters) {\n\t\tif (!FILTER_KINDS.has(f.kind)) throw new FilterValidationError(`unknown filter kind '${String(f.kind)}' (have: ${[...FILTER_KINDS].join(\", \")})`);\n\t\tif (f.kind === \"blur\" && !(Number.isFinite(f.radius) && f.radius >= 0)) throw new FilterValidationError(`blur radius must be \u2265 0, got ${String(f.radius)}`);\n\t\tif (f.kind === \"drop-shadow\") {\n\t\t\tif (![\n\t\t\t\tf.dx,\n\t\t\t\tf.dy,\n\t\t\t\tf.blur\n\t\t\t].every(Number.isFinite) || f.blur < 0) throw new FilterValidationError(\"drop-shadow needs finite dx/dy and blur \u2265 0\");\n\t\t\tif (typeof f.color !== \"string\" || f.color.length === 0) throw new FilterValidationError(\"drop-shadow needs a color string\");\n\t\t}\n\t\tif ((f.kind === \"brightness\" || f.kind === \"contrast\" || f.kind === \"saturate\") && !(Number.isFinite(f.amount) && f.amount >= 0)) throw new FilterValidationError(`${f.kind} amount must be \u2265 0, got ${String(f.amount)}`);\n\t}\n}\n/**\n* Compile the validated union to the canvas 2D `ctx.filter` syntax \u2014 both\n* backends speak it (browser canvas and @napi-rs/canvas/Skia). This is the\n* ONLY place the CSS-like syntax appears; documents never carry it.\n*/\nfunction filtersToCanvasFilter(filters) {\n\tif (filters.length === 0) return \"none\";\n\treturn filters.map((f) => {\n\t\tswitch (f.kind) {\n\t\t\tcase \"blur\": return `blur(${f.radius}px)`;\n\t\t\tcase \"drop-shadow\": return `drop-shadow(${f.dx}px ${f.dy}px ${f.blur}px ${f.color})`;\n\t\t\tdefault: return `${f.kind}(${f.amount})`;\n\t\t}\n\t}).join(\" \");\n}\n/**\n* Outer glow as stacked zero-offset drop-shadows \u2014 the classic recipe, fully\n* deterministic on both backends (it is just filters). intensity stacks more\n* layers; pair with a signal binding to follow an animated fill.\n*/\nfunction glow(color, radius = 16, intensity = 2) {\n\tconst layers = [];\n\tfor (let i = 0; i < Math.max(1, intensity); i++) layers.push({\n\t\tkind: \"drop-shadow\",\n\t\tdx: 0,\n\t\tdy: 0,\n\t\tblur: radius * (1 + i * 1.5),\n\t\tcolor\n\t});\n\treturn layers;\n}\n/**\n* Resource ids that appear in a draw command \u2014 only path/image/video draws\n* carry one. Keeps the cacheKey serializer in lockstep with DrawCommand.\n*/\nfunction commandResourceIds(cmd) {\n\tswitch (cmd.op) {\n\t\tcase \"clip\":\n\t\tcase \"fillPath\":\n\t\tcase \"strokePath\": return [cmd.path];\n\t\tcase \"drawImage\": return [cmd.image];\n\t\tdefault: return [];\n\t}\n}\n/** FNV-1a over a string \u2192 an 8-hex-digit stable token (no crypto dep, ESM-safe). */\nfunction fnv1a(s) {\n\tlet h = 2166136261;\n\tfor (let i = 0; i < s.length; i++) {\n\t\th ^= s.charCodeAt(i);\n\t\th = Math.imul(h, 16777619);\n\t}\n\treturn (h >>> 0).toString(16).padStart(8, \"0\");\n}\nfunction createDisplayListBuilder(size) {\n\tconst commands = [];\n\tconst resources = [];\n\tconst interned = /* @__PURE__ */ new Map();\n\treturn {\n\t\tpush: (cmd) => {\n\t\t\tif (cmd.op === \"pushGroup\" && cmd.filters.length > 0) validateFilters(cmd.filters);\n\t\t\tcommands.push(cmd);\n\t\t},\n\t\tresource: (res) => {\n\t\t\tconst k = JSON.stringify(res);\n\t\t\tconst hit = interned.get(k);\n\t\t\tif (hit !== void 0) return hit;\n\t\t\tconst id = resources.length;\n\t\t\tresources.push(res);\n\t\t\tinterned.set(k, id);\n\t\t\treturn id;\n\t\t},\n\t\tmark: () => commands.length,\n\t\tcacheKey: (start, end) => {\n\t\t\tif (end <= start) return void 0;\n\t\t\tconst localIds = /* @__PURE__ */ new Map();\n\t\t\tconst usedResources = [];\n\t\t\tconst remap = (id) => {\n\t\t\t\tlet local = localIds.get(id);\n\t\t\t\tif (local === void 0) {\n\t\t\t\t\tlocal = localIds.size;\n\t\t\t\t\tlocalIds.set(id, local);\n\t\t\t\t\tusedResources.push(resources[id]);\n\t\t\t\t}\n\t\t\t\treturn local;\n\t\t\t};\n\t\t\tconst sliceCmds = commands.slice(start, end).map((cmd) => {\n\t\t\t\tif (commandResourceIds(cmd).length === 0) return cmd;\n\t\t\t\tif (cmd.op === \"drawImage\") return {\n\t\t\t\t\t...cmd,\n\t\t\t\t\timage: remap(cmd.image)\n\t\t\t\t};\n\t\t\t\treturn {\n\t\t\t\t\t...cmd,\n\t\t\t\t\tpath: remap(cmd.path)\n\t\t\t\t};\n\t\t\t});\n\t\t\treturn fnv1a(JSON.stringify({\n\t\t\t\tc: sliceCmds,\n\t\t\t\tr: usedResources\n\t\t\t}, collapseReplacer));\n\t\t},\n\t\tpatchCacheKey: (i, key) => {\n\t\t\tconst cmd = commands[i];\n\t\t\tif (cmd && cmd.op === \"pushGroup\") cmd.cacheKey = key;\n\t\t},\n\t\tfinish: () => ({\n\t\t\tcommands,\n\t\t\tresources,\n\t\t\tsize\n\t\t})\n\t};\n}\n//#endregion\n//#region src/text.ts\n/**\n* \u00A73.6 measurement quantum (px). Scene-owned pre-measure quantizes every\n* layout-feeding advance to this grid ONCE, then hands Yoga frozen integers \u2014\n* so sub-pixel measureText drift between Skia/HarfBuzz versions cannot move a\n* whole layout. The single source of truth for the grid; `quantize` rounds to\n* it. (Yoga's `setMeasureFunc` was considered and rejected \u2014 see DESIGN.md \u00A73.6.)\n*/\nconst MEASURE_QUANTUM_PX = .5;\n/** \u00A73.6 measurement quantum \u2014 round to the MEASURE_QUANTUM_PX grid. */\nfunction quantize(v) {\n\treturn Math.round(v / MEASURE_QUANTUM_PX) * MEASURE_QUANTUM_PX;\n}\n/**\n* Estimating fallback measurer \u2014 used only when no backend has been injected\n* (e.g. evaluating for IR-level tests). Deterministic but not metrically\n* faithful; mount(), the CLI, and exporters always inject the real one.\n*/\nlet defaultMeasurer = null;\n/**\n* Process-wide fallback measurer for FACTORY-TIME measurement \u2014 component\n* factories run before any scene exists, so Text pulls (measuredSize,\n* lineBoxes, wordBoxes) and createScene fall back here before the estimator.\n* Node consumers: `setDefaultMeasurer(createMeasurer({ fonts }))` from\n* @glissade/backend-skia gives factory code the rasterizer's real metrics.\n* Scene-injected measurers (mount/CLI/golden harness) always win.\n*/\nfunction setDefaultMeasurer(m) {\n\tdefaultMeasurer = m;\n}\n/** The default-or-estimating chain end; internal fallback for measurer pulls. */\nfunction fallbackMeasurer() {\n\treturn defaultMeasurer ?? estimatingMeasurer;\n}\nconst estimatingMeasurer = { measureText(text, font) {\n\treturn {\n\t\twidth: text.length * font.size * .52,\n\t\tascent: font.size * .8,\n\t\tdescent: font.size * .2\n\t};\n} };\nlet wordSegmenter;\n/**\n* The draw-path word segmentation (Intl.Segmenter boundaries, punctuation\n* glued to its predecessor) \u2014 exported so Text.wordBoxes() boxes EXACTLY the\n* units the breaker flows.\n*/\nfunction segmentWords(text) {\n\tif (wordSegmenter === void 0) wordSegmenter = typeof Intl !== \"undefined\" && \"Segmenter\" in Intl ? new Intl.Segmenter(void 0, { granularity: \"word\" }) : null;\n\tif (wordSegmenter) {\n\t\tconst raw = [...wordSegmenter.segment(text)].map((s) => s.segment);\n\t\tconst glued = [];\n\t\tfor (const seg of raw) if (glued.length > 0 && /^[^\\p{L}\\p{N}\\s]+$/u.test(seg)) glued[glued.length - 1] += seg;\n\t\telse glued.push(seg);\n\t\treturn glued;\n\t}\n\treturn text.split(/(\\s+)/).filter((w) => w.length > 0);\n}\nlet graphemeSegmenter;\n/**\n* Split text into graphemes (user-perceived characters). Exported so Text.draw\n* (reveal masking), Text.graphemes() (authoring), and revealSchedule() (the SFX\n* keystroke contract) all count the SAME units.\n*/\nfunction segmentGraphemes(text) {\n\tif (graphemeSegmenter === void 0) graphemeSegmenter = typeof Intl !== \"undefined\" && \"Segmenter\" in Intl ? new Intl.Segmenter(void 0, { granularity: \"grapheme\" }) : null;\n\tif (graphemeSegmenter) return [...graphemeSegmenter.segment(text)].map((s) => s.segment);\n\treturn Array.from(text);\n}\n/**\n* Greedy line breaking: explicit '\\n' always breaks; otherwise word segments\n* flow until maxWidth is exceeded (Intl.Segmenter boundaries, so CJK wraps\n* without spaces). A segment wider than maxWidth gets its own line (no\n* intra-word breaking in v1).\n*/\nfunction breakLines(text, font, maxWidth, measurer) {\n\tconst paragraphs = text.split(\"\\n\");\n\tif (maxWidth === void 0 || maxWidth <= 0) return paragraphs;\n\tconst lines = [];\n\tfor (const para of paragraphs) {\n\t\tconst words = segmentWords(para);\n\t\tlet line = \"\";\n\t\tfor (const word of words) {\n\t\t\tconst candidate = line + word;\n\t\t\tif (line !== \"\" && quantize(measurer.measureText(candidate.trimEnd(), font).width) > maxWidth) {\n\t\t\t\tlines.push(line.trimEnd());\n\t\t\t\tline = word.trimStart() === \"\" ? \"\" : word;\n\t\t\t} else line = candidate;\n\t\t}\n\t\tlines.push(line.trimEnd());\n\t}\n\treturn lines;\n}\n//#endregion\n//#region src/node.ts\n/**\n* Scene-graph node base (DESIGN.md \u00A73.1): every animatable property is a\n* signal; transforms are computed matrix signals; emit() is pure \u2014 it reads\n* signals and ctx only, and produces IR commands, never canvas calls.\n*/\nconst ANCHOR_PRESETS = {\n\t\"center\": [.5, .5],\n\t\"top-left\": [0, 0],\n\t\"top\": [.5, 0],\n\t\"top-right\": [1, 0],\n\t\"left\": [0, .5],\n\t\"right\": [1, .5],\n\t\"bottom-left\": [0, 1],\n\t\"bottom\": [.5, 1],\n\t\"bottom-right\": [1, 1]\n};\nfunction resolveAnchor(spec) {\n\tif (typeof spec === \"string\") {\n\t\tconst preset = ANCHOR_PRESETS[spec];\n\t\tif (!preset) throw new Error(`unknown anchor '${spec}' (use a preset like 'top-left' or a [ax, ay] pair)`);\n\t\treturn preset;\n\t}\n\treturn [spec[0], spec[1]];\n}\nfunction initScalar(sig, init) {\n\tif (typeof init === \"function\") sig.bindSource(init);\n\telse if (init !== void 0) sig.set(init);\n\treturn sig;\n}\nfunction initVec2(sig, init) {\n\tif (typeof init === \"function\") sig.bindSource(init);\n\telse if (init !== void 0) sig.set(init);\n\treturn sig;\n}\nvar Node = class {\n\tid;\n\tposition;\n\trotation;\n\tscale;\n\topacity;\n\tblend;\n\tzIndex;\n\tfilters;\n\t/** Resolved anchor fraction over the intrinsic box; [0.5, 0.5] = center. */\n\tanchor;\n\t/** True only when the author SET an anchor \u2014 unset keeps the legacy origin. */\n\thasAnchor;\n\t/** \u00A73.5: opt-in cross-frame raster cache. Forces a group + a stamped cacheKey. */\n\tcache;\n\tparent = null;\n\t#warnedAnchor = false;\n\t/** v2 \u00A7C.3: participates in hit testing; set implicitly by attaching a listener. */\n\tinteractive = false;\n\t/** v2 \u00A7C.3: false prunes this subtree from hit testing (PixiJS's flag). */\n\tinteractiveChildren = true;\n\t/** v2 \u00A7C.3: explicit hit-shape override in node-local coordinates. */\n\thitArea;\n\t/**\n\t* Injected by createScene: the scene's CURRENT TextMeasurer (\u00A73.2), so\n\t* derived-size bindings (e.g. a background tracking Layout.computedSize)\n\t* measure with the same rasterizer the flow uses.\n\t*/\n\tmeasurerSource = null;\n\tlocalMatrix;\n\tworldMatrix;\n\t/** Track-target paths \u2192 bindable signals; subclasses register their own props. */\n\ttargets = /* @__PURE__ */ new Map();\n\tconstructor(props = {}) {\n\t\tthis.id = props.id;\n\t\tthis.position = initVec2(vec2Signal([0, 0]), props.position);\n\t\tthis.rotation = initScalar(signal(0), props.rotation);\n\t\tthis.scale = initVec2(vec2Signal([1, 1]), props.scale);\n\t\tthis.opacity = initScalar(signal(1), props.opacity);\n\t\tthis.blend = initScalar(signal(\"source-over\"), props.blend);\n\t\tthis.zIndex = initScalar(signal(0), props.zIndex);\n\t\tthis.filters = initScalar(signal([]), props.filters);\n\t\tthis.hasAnchor = props.anchor !== void 0;\n\t\tthis.anchor = resolveAnchor(props.anchor ?? \"center\");\n\t\tthis.cache = props.cache === true;\n\t\tthis.localMatrix = computed(() => {\n\t\t\tconst trs = fromTRS(this.position(), this.rotation(), this.scale());\n\t\t\tconst [sx, sy] = this.anchorShift();\n\t\t\treturn sx === 0 && sy === 0 ? trs : multiply(trs, [\n\t\t\t\t1,\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\t1,\n\t\t\t\tsx,\n\t\t\t\tsy\n\t\t\t]);\n\t\t}, { equals: matEquals });\n\t\tthis.worldMatrix = computed(() => this.parent ? multiply(this.parent.worldMatrix(), this.localMatrix()) : this.localMatrix(), { equals: matEquals });\n\t\tthis.registerTarget(\"position\", this.position, \"vec2\");\n\t\tthis.registerTarget(\"position.x\", this.position.x, \"number\");\n\t\tthis.registerTarget(\"position.y\", this.position.y, \"number\");\n\t\tthis.registerTarget(\"rotation\", this.rotation, \"number\");\n\t\tthis.registerTarget(\"scale\", this.scale, \"vec2\");\n\t\tthis.registerTarget(\"scale.x\", this.scale.x, \"number\");\n\t\tthis.registerTarget(\"scale.y\", this.scale.y, \"number\");\n\t\tthis.registerTarget(\"opacity\", this.opacity, \"number\");\n\t\tthis.registerTarget(\"zIndex\", this.zIndex, \"number\");\n\t}\n\t/**\n\t* Register a track-target path \u2192 bindable signal, stamping the value type the\n\t* signal accepts (\u00A72.2). The stamp is what bindTimeline's bind-time guard\n\t* reads to reject a mismatched track (a scalar on a vec2, a number on a paint\n\t* prop, \u2026) instead of silently sampling to NaN/undefined.\n\t*\n\t* `expects` is OPTIONAL: omitting it (the 2-arg form) leaves the target\n\t* UNtagged \u2014 bindTimeline then skips the type guard for it, which is the\n\t* back-compat seam for external `Custom`/`Node` subclasses (DESIGN.md \u00A7329)\n\t* and prebuilt 0.13 nodes that called the 2-arg form (0.13 had no guard). A\n\t* built-in node opts INTO the guard by tagging.\n\t*/\n\tregisterTarget(path, sig, expects) {\n\t\tsig.expects = expects;\n\t\tthis.targets.set(path, sig);\n\t\tif (this.id !== void 0) sig[TARGET_PATH] = `${this.id}/${path}`;\n\t}\n\tresolveTarget(path) {\n\t\treturn this.targets.get(path);\n\t}\n\t/**\n\t* Natural size for flex flow (\u00A73.2); null = not flowable (a Layout parent\n\t* emits such children absolutely, untouched).\n\t*/\n\tintrinsicSize(measurer) {\n\t\treturn null;\n\t}\n\t/**\n\t* Vector from the DRAW origin to the intrinsic box's top-left, in the\n\t* geometry space draw() emits into (anchor-independent \u2014 the anchor shift\n\t* lives in localMatrix). Hit testing boxes nodes with this. Default:\n\t* center-anchored geometry (every shape). Text overrides \u2014 it draws from a\n\t* left/center/right baseline origin; Path from author-positioned bounds.\n\t*/\n\tdrawOffset(measurer) {\n\t\tconst m = measurer ?? this.measurerSource?.() ?? fallbackMeasurer();\n\t\tconst size = this.intrinsicSize(m) ?? {\n\t\t\tw: 0,\n\t\t\th: 0\n\t\t};\n\t\treturn {\n\t\t\tx: -size.w / 2,\n\t\t\ty: -size.h / 2\n\t\t};\n\t}\n\t/**\n\t* Vector from the node ORIGIN (the point `position` places) to the box's\n\t* top-left, so Layout can place any node. With an anchor this is exactly\n\t* (\u2212ax\u00B7w, \u2212ay\u00B7h); the center default reproduces (\u2212w/2, \u2212h/2).\n\t*/\n\tflowOffset(measurer) {\n\t\tconst m = measurer ?? this.measurerSource?.() ?? fallbackMeasurer();\n\t\tconst d = this.drawOffset(m);\n\t\tconst [sx, sy] = this.anchorShift(m);\n\t\treturn {\n\t\t\tx: d.x + sx,\n\t\t\ty: d.y + sy\n\t\t};\n\t}\n\t/**\n\t* Translation composed after TRS in localMatrix: moves the drawn box so the\n\t* anchor point lands on the origin. shift = \u2212(drawOffset + anchor\u00B7size).\n\t* No anchor set \u2192 zero shift, the legacy origin (shape center / Text\n\t* baseline / Path author coords) \u2014 every pre-anchor scene is byte-stable.\n\t* An EXPLICIT anchor pins position to that fraction of the box, even\n\t* 'center' (which differs from the legacy origin only for Text and Path).\n\t* Nodes without an intrinsic box (Group) warn once and ignore it.\n\t*/\n\tanchorShift(measurer) {\n\t\tif (!this.hasAnchor) return [0, 0];\n\t\tconst [ax, ay] = this.anchor;\n\t\tconst m = measurer ?? this.measurerSource?.() ?? fallbackMeasurer();\n\t\tconst size = this.intrinsicSize(m);\n\t\tif (!size) {\n\t\t\tif (!this.#warnedAnchor) {\n\t\t\t\tthis.#warnedAnchor = true;\n\t\t\t\temitDevWarning(`anchor set on a node without an intrinsic box${this.id ? ` ('${this.id}')` : \"\"} \u2014 ignored (give it a sized node, or position children explicitly)`);\n\t\t\t}\n\t\t\treturn [0, 0];\n\t\t}\n\t\tconst d = this.drawOffset(m);\n\t\tconst sx = -(d.x + ax * size.w);\n\t\tconst sy = -(d.y + ay * size.h);\n\t\treturn [sx === 0 ? 0 : sx, sy === 0 ? 0 : sy];\n\t}\n\t/** \u00A73.5 predicate: composite-as-a-unit when opacity/blend/filters demand it. */\n\trequiresGroup() {\n\t\treturn this.opacity() < 1 || this.blend() !== \"source-over\" || this.filters().length > 0;\n\t}\n\t/** \u00A73.7: a subtree-level shader pass; ShaderEffect overrides. */\n\tgroupShader() {}\n\temit(out, ctx) {\n\t\tconst opacity = this.opacity();\n\t\tif (opacity <= 0) return;\n\t\tconst local = this.localMatrix();\n\t\tconst isIdentity = matEquals(local, IDENTITY);\n\t\tconst shader = this.groupShader();\n\t\tconst group = this.requiresGroup() || shader !== void 0 || this.cache;\n\t\tconst wantsKey = this.cache && out.mark !== void 0;\n\t\tout.push({ op: \"save\" });\n\t\tif (!isIdentity) out.push({\n\t\t\top: \"transform\",\n\t\t\tm: local\n\t\t});\n\t\tlet pushIdx = -1;\n\t\tif (group) {\n\t\t\tif (wantsKey) pushIdx = out.mark();\n\t\t\tout.push({\n\t\t\t\top: \"pushGroup\",\n\t\t\t\topacity,\n\t\t\t\tblend: this.blend(),\n\t\t\t\tfilters: this.filters(),\n\t\t\t\t...shader !== void 0 ? { shader } : {}\n\t\t\t});\n\t\t}\n\t\tconst drawStart = wantsKey ? out.mark() : -1;\n\t\tthis.draw(out, ctx);\n\t\tif (group) {\n\t\t\tif (wantsKey) {\n\t\t\t\tconst key = out.cacheKey(drawStart, out.mark());\n\t\t\t\tif (key !== void 0) out.patchCacheKey(pushIdx, key);\n\t\t\t}\n\t\t\tout.push({ op: \"popGroup\" });\n\t\t}\n\t\tout.push({ op: \"restore\" });\n\t}\n};\n//#endregion\n//#region src/sketch.ts\n/**\n* Hand-drawn stroke styles via GEOMETRIC roughening \u2014 not raster textures. A\n* shape's outline is flattened to polylines, then each segment is redrawn as a\n* slightly jittered, bowed stroke, overlaid in a few passes. Because it's pure\n* path math seeded by a stable per-shape seed, the result is byte-identical on\n* both backends and re-evaluates deterministically (the seed is consumed fresh\n* each draw, never as a shared stateful stream).\n*/\nconst KINDS = [\n\t\"marker\",\n\t\"crayon\",\n\t\"pencil\",\n\t\"ink\",\n\t\"chalk\"\n];\nvar SketchValidationError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"SketchValidationError\";\n\t}\n};\n/** Reject unknown kinds / out-of-range params at construction (like validateFilters). */\nfunction validateSketch(s) {\n\tif (!KINDS.includes(s.kind)) throw new SketchValidationError(`unknown sketch kind '${String(s.kind)}' (have: ${KINDS.join(\", \")})`);\n\tif (s.width !== void 0 && !(s.width > 0)) throw new SketchValidationError(`sketch width must be > 0, got ${String(s.width)}`);\n\tif (s.roughness !== void 0 && !(s.roughness >= 0)) throw new SketchValidationError(`sketch roughness must be \u2265 0, got ${String(s.roughness)}`);\n\tif ((s.kind === \"crayon\" || s.kind === \"pencil\") && s.passes !== void 0 && !(s.passes >= 1)) throw new SketchValidationError(`sketch passes must be \u2265 1, got ${String(s.passes)}`);\n\tif (s.kind === \"chalk\" && s.dash !== void 0 && (!Array.isArray(s.dash) || s.dash.some((d) => !(d >= 0)))) throw new SketchValidationError(\"sketch chalk dash must be an array of non-negative numbers\");\n}\n/** Per-kind defaults \u2014 the character of each look. */\nfunction resolveSketch(s) {\n\tswitch (s.kind) {\n\t\tcase \"marker\": return {\n\t\t\twidth: s.width ?? 8,\n\t\t\troughness: s.roughness ?? 1.2,\n\t\t\tpasses: 2\n\t\t};\n\t\tcase \"crayon\": return {\n\t\t\twidth: s.width ?? 4,\n\t\t\troughness: s.roughness ?? 2.4,\n\t\t\tpasses: s.passes ?? 3\n\t\t};\n\t\tcase \"pencil\": return {\n\t\t\twidth: s.width ?? 1.5,\n\t\t\troughness: s.roughness ?? 1,\n\t\t\tpasses: s.passes ?? 2\n\t\t};\n\t\tcase \"ink\": return {\n\t\t\twidth: s.width ?? 2.5,\n\t\t\troughness: s.roughness ?? .8,\n\t\t\tpasses: 1\n\t\t};\n\t\tcase \"chalk\": return {\n\t\t\twidth: s.width ?? 3,\n\t\t\troughness: s.roughness ?? 1.6,\n\t\t\tpasses: 1,\n\t\t\tdash: s.dash ?? [6, 5]\n\t\t};\n\t}\n}\nconst cubic = (p0, c1, c2, p1, t) => {\n\tconst mt = 1 - t;\n\tconst a = mt * mt * mt;\n\tconst b = 3 * mt * mt * t;\n\tconst c = 3 * mt * t * t;\n\tconst d = t * t * t;\n\treturn [a * p0[0] + b * c1[0] + c * c2[0] + d * p1[0], a * p0[1] + b * c1[1] + c * c2[1] + d * p1[1]];\n};\nconst quad = (p0, c, p1, t) => {\n\tconst mt = 1 - t;\n\treturn [mt * mt * p0[0] + 2 * mt * t * c[0] + t * t * p1[0], mt * mt * p0[1] + 2 * mt * t * c[1] + t * t * p1[1]];\n};\nconst ellipse = (cx, cy, rx, ry, rot, ang) => {\n\tconst ex = rx * Math.cos(ang);\n\tconst ey = ry * Math.sin(ang);\n\tconst cos = Math.cos(rot);\n\tconst sin = Math.sin(rot);\n\treturn [cx + ex * cos - ey * sin, cy + ex * sin + ey * cos];\n};\n/**\n* Flatten a path to polylines \u2014 de Casteljau for C/Q, arc sampling for E\n* (Circle and rounded-rect corners are 'E' segments, so this MUST handle them\n* or those shapes roughen wrong). `steps` is the samples per curved segment.\n*/\nfunction flatten(segs, steps = 16) {\n\tconst polys = [];\n\tlet cur = null;\n\tlet px = 0;\n\tlet py = 0;\n\tlet sx = 0;\n\tlet sy = 0;\n\tconst ensure = (x, y) => {\n\t\tif (!cur) {\n\t\t\tcur = {\n\t\t\t\tpoints: [[x, y]],\n\t\t\t\tclosed: false\n\t\t\t};\n\t\t\tpolys.push(cur);\n\t\t\tsx = x;\n\t\t\tsy = y;\n\t\t}\n\t\treturn cur;\n\t};\n\tfor (const s of segs) switch (s[0]) {\n\t\tcase \"M\":\n\t\t\tcur = {\n\t\t\t\tpoints: [[s[1], s[2]]],\n\t\t\t\tclosed: false\n\t\t\t};\n\t\t\tpolys.push(cur);\n\t\t\tpx = sx = s[1];\n\t\t\tpy = sy = s[2];\n\t\t\tbreak;\n\t\tcase \"L\":\n\t\t\tensure(px, py).points.push([s[1], s[2]]);\n\t\t\tpx = s[1];\n\t\t\tpy = s[2];\n\t\t\tbreak;\n\t\tcase \"C\": {\n\t\t\tconst c = ensure(px, py);\n\t\t\tfor (let k = 1; k <= steps; k++) c.points.push(cubic([px, py], [s[1], s[2]], [s[3], s[4]], [s[5], s[6]], k / steps));\n\t\t\tpx = s[5];\n\t\t\tpy = s[6];\n\t\t\tbreak;\n\t\t}\n\t\tcase \"Q\": {\n\t\t\tconst c = ensure(px, py);\n\t\t\tfor (let k = 1; k <= steps; k++) c.points.push(quad([px, py], [s[1], s[2]], [s[3], s[4]], k / steps));\n\t\t\tpx = s[3];\n\t\t\tpy = s[4];\n\t\t\tbreak;\n\t\t}\n\t\tcase \"E\": {\n\t\t\tconst [, cx, cy, rx, ry, rot, a0, a1] = s;\n\t\t\tconst begin = ellipse(cx, cy, rx, ry, rot, a0);\n\t\t\tconst c = ensure(begin[0], begin[1]);\n\t\t\tfor (let k = 1; k <= steps; k++) c.points.push(ellipse(cx, cy, rx, ry, rot, a0 + (a1 - a0) * (k / steps)));\n\t\t\tconst end = ellipse(cx, cy, rx, ry, rot, a1);\n\t\t\tpx = end[0];\n\t\t\tpy = end[1];\n\t\t\tbreak;\n\t\t}\n\t\tcase \"Z\":\n\t\t\tif (cur) {\n\t\t\t\tcur.points.push([sx, sy]);\n\t\t\t\tcur.closed = true;\n\t\t\t\tpx = sx;\n\t\t\t\tpy = sy;\n\t\t\t}\n\t\t\tbreak;\n\t}\n\treturn polys.filter((p) => p.points.length > 0);\n}\n/** Total length of a flattened polyline (for draw-on dashing). */\nfunction arcLength(poly) {\n\tlet len = 0;\n\tfor (let i = 1; i < poly.points.length; i++) len += Math.hypot(poly.points[i][0] - poly.points[i - 1][0], poly.points[i][1] - poly.points[i - 1][1]);\n\treturn len;\n}\nfunction validateHachure(h) {\n\tif (!(h.gap > 0)) throw new SketchValidationError(`hachure gap must be > 0, got ${String(h.gap)}`);\n\tif (h.roughness !== void 0 && !(h.roughness >= 0)) throw new SketchValidationError(`hachure roughness must be \u2265 0, got ${String(h.roughness)}`);\n}\n/**\n* Parallel hatch lines covering a path's bounding box at `angleRad`, spaced\n* `gap`, lightly jittered. Returned as `M/L` segments to be stroked INSIDE a\n* clip of the shape (the caller emits the clip). Pure; `rng` reseeded per draw.\n*/\nfunction hachureLines(segs, spec, rng) {\n\tconst polys = flatten(segs);\n\tlet minX = Infinity;\n\tlet minY = Infinity;\n\tlet maxX = -Infinity;\n\tlet maxY = -Infinity;\n\tfor (const p of polys) for (const [x, y] of p.points) {\n\t\tif (x < minX) minX = x;\n\t\tif (y < minY) minY = y;\n\t\tif (x > maxX) maxX = x;\n\t\tif (y > maxY) maxY = y;\n\t}\n\tif (!Number.isFinite(minX)) return [];\n\tconst cx = (minX + maxX) / 2;\n\tconst cy = (minY + maxY) / 2;\n\tconst ca = Math.cos(spec.angleRad);\n\tconst sa = Math.sin(spec.angleRad);\n\tconst toRot = (x, y) => [(x - cx) * ca + (y - cy) * sa, -(x - cx) * sa + (y - cy) * ca];\n\tconst fromRot = (x, y) => [cx + x * ca - y * sa, cy + x * sa + y * ca];\n\tlet rMinX = Infinity;\n\tlet rMinY = Infinity;\n\tlet rMaxX = -Infinity;\n\tlet rMaxY = -Infinity;\n\tconst corners = [\n\t\t[minX, minY],\n\t\t[maxX, minY],\n\t\t[maxX, maxY],\n\t\t[minX, maxY]\n\t];\n\tfor (const [x, y] of corners) {\n\t\tconst [rx, ry] = toRot(x, y);\n\t\tif (rx < rMinX) rMinX = rx;\n\t\tif (ry < rMinY) rMinY = ry;\n\t\tif (rx > rMaxX) rMaxX = rx;\n\t\tif (ry > rMaxY) rMaxY = ry;\n\t}\n\tconst rough = spec.roughness ?? 1;\n\tconst jit = () => (rng() * 2 - 1) * rough;\n\tconst out = [];\n\tfor (let y = rMinY + spec.gap / 2; y < rMaxY; y += spec.gap) {\n\t\tconst a = fromRot(rMinX, y + jit());\n\t\tconst b = fromRot(rMaxX, y + jit());\n\t\tout.push([\n\t\t\t\"M\",\n\t\t\ta[0],\n\t\t\ta[1]\n\t\t], [\n\t\t\t\"L\",\n\t\t\tb[0],\n\t\t\tb[1]\n\t\t]);\n\t}\n\treturn out;\n}\n/**\n* Roughen a path into hand-drawn stroke passes. Each segment becomes a bowed,\n* jittered quadratic; `passes` overlay slightly different jitters for the\n* built-up look. `rng` must be a freshly seeded generator (the caller reseeds\n* per draw from a stable seed, so evaluate() stays pure).\n*/\nfunction roughen(segs, style, rng) {\n\tconst resolved = resolveSketch(style);\n\tconst polys = flatten(segs);\n\tconst jit = () => (rng() * 2 - 1) * resolved.roughness;\n\tconst strokes = [];\n\tfor (let pass = 0; pass < resolved.passes; pass++) {\n\t\tconst out = [];\n\t\tfor (const poly of polys) {\n\t\t\tconst pts = poly.points;\n\t\t\tif (pts.length < 2) continue;\n\t\t\tlet ax = pts[0][0] + jit();\n\t\t\tlet ay = pts[0][1] + jit();\n\t\t\tout.push([\n\t\t\t\t\"M\",\n\t\t\t\tax,\n\t\t\t\tay\n\t\t\t]);\n\t\t\tfor (let i = 1; i < pts.length; i++) {\n\t\t\t\tconst bx = pts[i][0] + jit();\n\t\t\t\tconst by = pts[i][1] + jit();\n\t\t\t\tconst dx = bx - ax;\n\t\t\t\tconst dy = by - ay;\n\t\t\t\tconst len = Math.hypot(dx, dy) || 1;\n\t\t\t\tconst bow = jit() * .5;\n\t\t\t\tconst mx = (ax + bx) / 2 + -dy / len * bow;\n\t\t\t\tconst my = (ay + by) / 2 + dx / len * bow;\n\t\t\t\tout.push([\n\t\t\t\t\t\"Q\",\n\t\t\t\t\tmx,\n\t\t\t\t\tmy,\n\t\t\t\t\tbx,\n\t\t\t\t\tby\n\t\t\t\t]);\n\t\t\t\tax = bx;\n\t\t\t\tay = by;\n\t\t\t}\n\t\t}\n\t\tstrokes.push(out);\n\t}\n\treturn {\n\t\tstrokes,\n\t\tresolved\n\t};\n}\n/** FNV-1a 32-bit \u2014 a stable per-shape sketch seed from its id. */\nfunction hashStr(s) {\n\tlet h = 2166136261;\n\tfor (let i = 0; i < s.length; i++) {\n\t\th ^= s.charCodeAt(i);\n\t\th = Math.imul(h, 16777619);\n\t}\n\treturn h >>> 0;\n}\n/** Convenience: the rough stroke passes for a path at a given seed. */\nfunction sketchStrokes(segs, style, seed) {\n\treturn roughen(segs, style, random(seed >>> 0)).strokes;\n}\n//#endregion\n//#region src/nodes.ts\n/**\n* Built-in nodes for M1 (DESIGN.md \u00A73.1): Group, Rect, Circle, Text.\n* Path/Image/Video/Layout arrive with their milestones.\n*/\n/**\n* The NAMED extension point of the closed \u00A73.1 taxonomy: the documented base\n* an author subclasses to emit IR commands (never canvas calls). It adds\n* nothing to `Node` \u2014 it exists so \"custom-via-subclassing\" is a real,\n* exported surface (the ninth taxonomy member) rather than an unnamed\n* convention. Subclasses implement the abstract `draw()` from `Node`.\n*/\nvar Custom = class extends Node {};\n/** Rounded-rect path segments \u2014 Rect's outline, shared with Highlight. */\nfunction roundedRectSegs(x, y, w, h, r) {\n\tif (r <= 0) return [\n\t\t[\n\t\t\t\"M\",\n\t\t\tx,\n\t\t\ty\n\t\t],\n\t\t[\n\t\t\t\"L\",\n\t\t\tx + w,\n\t\t\ty\n\t\t],\n\t\t[\n\t\t\t\"L\",\n\t\t\tx + w,\n\t\t\ty + h\n\t\t],\n\t\t[\n\t\t\t\"L\",\n\t\t\tx,\n\t\t\ty + h\n\t\t],\n\t\t[\"Z\"]\n\t];\n\tconst HALF = Math.PI / 2;\n\treturn [\n\t\t[\n\t\t\t\"M\",\n\t\t\tx + r,\n\t\t\ty\n\t\t],\n\t\t[\n\t\t\t\"L\",\n\t\t\tx + w - r,\n\t\t\ty\n\t\t],\n\t\t[\n\t\t\t\"E\",\n\t\t\tx + w - r,\n\t\t\ty + r,\n\t\t\tr,\n\t\t\tr,\n\t\t\t0,\n\t\t\t-HALF,\n\t\t\t0\n\t\t],\n\t\t[\n\t\t\t\"L\",\n\t\t\tx + w,\n\t\t\ty + h - r\n\t\t],\n\t\t[\n\t\t\t\"E\",\n\t\t\tx + w - r,\n\t\t\ty + h - r,\n\t\t\tr,\n\t\t\tr,\n\t\t\t0,\n\t\t\t0,\n\t\t\tHALF\n\t\t],\n\t\t[\n\t\t\t\"L\",\n\t\t\tx + r,\n\t\t\ty + h\n\t\t],\n\t\t[\n\t\t\t\"E\",\n\t\t\tx + r,\n\t\t\ty + h - r,\n\t\t\tr,\n\t\t\tr,\n\t\t\t0,\n\t\t\tHALF,\n\t\t\tMath.PI\n\t\t],\n\t\t[\n\t\t\t\"L\",\n\t\t\tx,\n\t\t\ty + r\n\t\t],\n\t\t[\n\t\t\t\"E\",\n\t\t\tx + r,\n\t\t\ty + r,\n\t\t\tr,\n\t\t\tr,\n\t\t\t0,\n\t\t\tMath.PI,\n\t\t\tMath.PI + HALF\n\t\t],\n\t\t[\"Z\"]\n\t];\n}\nvar Group = class extends Node {\n\tchildren;\n\t/** Version bumped on structural child mutation, so a dependency-tracked memo\n\t* (e.g. Layout's computed) re-runs when the child SET changes \u2014 not only when\n\t* a participating prop signal does. */\n\t#structure = signal(0);\n\tconstructor(props = {}) {\n\t\tsuper(props);\n\t\tthis.children = props.children ?? [];\n\t\tfor (const child of this.children) child.parent = this;\n\t}\n\t/** Record the structural version as a dependency \u2014 call inside a computed\n\t* that walks `children` so add()/remove() invalidate it. */\n\ttrackStructure() {\n\t\tthis.#structure();\n\t}\n\tadd(child) {\n\t\tchild.parent = this;\n\t\tthis.children.push(child);\n\t\tthis.#structure.set(this.#structure.peek() + 1);\n\t\treturn this;\n\t}\n\t/** Remove a child (the reactive counterpart to add()); no-op if absent. */\n\tremove(child) {\n\t\tconst i = this.children.indexOf(child);\n\t\tif (i >= 0) {\n\t\t\tthis.children.splice(i, 1);\n\t\t\tif (child.parent === this) child.parent = null;\n\t\t\tthis.#structure.set(this.#structure.peek() + 1);\n\t\t}\n\t\treturn this;\n\t}\n\tdraw(out, ctx) {\n\t\tconst sorted = this.children.map((node, i) => ({\n\t\t\tnode,\n\t\t\ti\n\t\t})).sort((a, b) => a.node.zIndex() - b.node.zIndex() || a.i - b.i).map((e) => e.node);\n\t\tfor (const child of sorted) child.emit(out, ctx);\n\t}\n};\n/** A color string is sugar for a solid `color` Paint; a Paint passes through. */\nfunction toPaint(fill) {\n\treturn typeof fill === \"string\" ? {\n\t\tkind: \"color\",\n\t\tcolor: fill\n\t} : fill;\n}\nvar Shape = class extends Node {\n\tfill;\n\tstroke;\n\tstrokeWidth;\n\tsketch;\n\tsketchFill;\n\tsketchSeed;\n\treveal;\n\tconstructor(props = {}) {\n\t\tsuper(props);\n\t\tthis.fill = initProp(signal(\"\"), props.fill);\n\t\tthis.stroke = initProp(signal(\"\"), props.stroke);\n\t\tthis.strokeWidth = initProp(signal(0), props.strokeWidth);\n\t\tthis.reveal = initProp(signal(1), props.reveal);\n\t\tthis.registerTarget(\"fill\", this.fill, [\"color\", \"paint\"]);\n\t\tthis.registerTarget(\"stroke\", this.stroke, \"color\");\n\t\tthis.registerTarget(\"strokeWidth\", this.strokeWidth, \"number\");\n\t\tthis.registerTarget(\"reveal\", this.reveal, \"number\");\n\t\tif (props.sketch) validateSketch(props.sketch);\n\t\tif (props.sketchFill) validateHachure(props.sketchFill);\n\t\tif (props.sketchFill && !props.sketch) emitDevWarning(`${this.id !== void 0 ? `'${this.id}': ` : \"\"}sketchFill is ignored without sketch \u2014 hachure fill is drawn only by the sketch renderer. Set a sketch style (e.g. { kind: 'pencil' }) to see it.`);\n\t\tthis.sketch = props.sketch;\n\t\tthis.sketchFill = props.sketchFill;\n\t\tthis.sketchSeed = props.sketchSeed ?? (this.id !== void 0 ? hashStr(this.id) : 0);\n\t}\n\tdraw(out) {\n\t\tconst segs = this.pathSegs();\n\t\tif (this.sketch) return this.drawSketch(out, segs);\n\t\tconst path = out.resource({\n\t\t\tkind: \"path\",\n\t\t\tsegs\n\t\t});\n\t\tconst fill = this.fill();\n\t\tif (fill) out.push({\n\t\t\top: \"fillPath\",\n\t\t\tpath,\n\t\t\tpaint: toPaint(fill)\n\t\t});\n\t\tconst stroke = this.stroke();\n\t\tconst width = this.strokeWidth();\n\t\tif (stroke && width > 0) {\n\t\t\tconst reveal = this.reveal();\n\t\t\tif (reveal < 1) emitDrawOnStroke(out, segs, {\n\t\t\t\tkind: \"color\",\n\t\t\t\tcolor: stroke\n\t\t\t}, { width }, reveal);\n\t\t\telse out.push({\n\t\t\t\top: \"strokePath\",\n\t\t\t\tpath,\n\t\t\t\tpaint: {\n\t\t\t\t\tkind: \"color\",\n\t\t\t\t\tcolor: stroke\n\t\t\t\t},\n\t\t\t\tstroke: { width }\n\t\t\t});\n\t\t}\n\t}\n\t/** Hand-drawn render: solid fill (if any) under roughened, multi-pass strokes.\n\t* The seed is consumed fresh each draw, so re-evaluation is byte-identical. */\n\tdrawSketch(out, segs) {\n\t\tconst rng = random(this.sketchSeed >>> 0);\n\t\tconst fill = this.fill();\n\t\tif (fill) {\n\t\t\tconst path = out.resource({\n\t\t\t\tkind: \"path\",\n\t\t\t\tsegs\n\t\t\t});\n\t\t\tout.push({\n\t\t\t\top: \"fillPath\",\n\t\t\t\tpath,\n\t\t\t\tpaint: toPaint(fill)\n\t\t\t});\n\t\t}\n\t\tconst { strokes, resolved } = roughen(segs, this.sketch, rng);\n\t\tconst ink = this.stroke() || (typeof fill === \"string\" ? fill : \"\") || \"#000000\";\n\t\tif (this.sketchFill) {\n\t\t\tconst clipPath = out.resource({\n\t\t\t\tkind: \"path\",\n\t\t\t\tsegs\n\t\t\t});\n\t\t\tout.push({ op: \"save\" });\n\t\t\tout.push({\n\t\t\t\top: \"clip\",\n\t\t\t\tpath: clipPath,\n\t\t\t\trule: \"nonzero\"\n\t\t\t});\n\t\t\tconst hatch = hachureLines(segs, this.sketchFill, rng);\n\t\t\tif (hatch.length > 0) {\n\t\t\t\tconst hp = out.resource({\n\t\t\t\t\tkind: \"path\",\n\t\t\t\t\tsegs: hatch\n\t\t\t\t});\n\t\t\t\tout.push({\n\t\t\t\t\top: \"strokePath\",\n\t\t\t\t\tpath: hp,\n\t\t\t\t\tpaint: {\n\t\t\t\t\t\tkind: \"color\",\n\t\t\t\t\t\tcolor: ink\n\t\t\t\t\t},\n\t\t\t\t\tstroke: {\n\t\t\t\t\t\twidth: Math.max(1, resolved.width * .5),\n\t\t\t\t\t\tcap: \"round\"\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tout.push({ op: \"restore\" });\n\t\t}\n\t\tconst reveal = this.reveal();\n\t\tconst drawOn = reveal < 1;\n\t\tfor (const passSegs of strokes) {\n\t\t\tif (passSegs.length === 0) continue;\n\t\t\tif (drawOn) {\n\t\t\t\temitDrawOnStroke(out, passSegs, {\n\t\t\t\t\tkind: \"color\",\n\t\t\t\t\tcolor: ink\n\t\t\t\t}, {\n\t\t\t\t\twidth: resolved.width,\n\t\t\t\t\tcap: \"round\",\n\t\t\t\t\tjoin: \"round\"\n\t\t\t\t}, reveal);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst path = out.resource({\n\t\t\t\tkind: \"path\",\n\t\t\t\tsegs: passSegs\n\t\t\t});\n\t\t\tout.push({\n\t\t\t\top: \"strokePath\",\n\t\t\t\tpath,\n\t\t\t\tpaint: {\n\t\t\t\t\tkind: \"color\",\n\t\t\t\t\tcolor: ink\n\t\t\t\t},\n\t\t\t\tstroke: {\n\t\t\t\t\twidth: resolved.width,\n\t\t\t\t\tcap: \"round\",\n\t\t\t\t\tjoin: \"round\",\n\t\t\t\t\t...resolved.dash ? { dash: resolved.dash } : {}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n};\nfunction initProp(sig, init) {\n\tif (typeof init === \"function\") sig.bindSource(init);\n\telse if (init !== void 0) sig.set(init);\n\treturn sig;\n}\n/** Split a stroke path into its subpaths (each starting at an 'M'). */\nfunction splitContours(segs) {\n\tconst out = [];\n\tlet cur = null;\n\tfor (const s of segs) if (s[0] === \"M\") {\n\t\tcur = [s];\n\t\tout.push(cur);\n\t} else if (cur) cur.push(s);\n\treturn out;\n}\n/**\n* Emit a stroke that \"draws on\" by arc length \u2014 a retreating dash PER CONTOUR\n* (canvas restarts the dash phase at each subpath move, so each contour reveals\n* from its own start). Shared by sketched and plain stroked shapes.\n*/\nfunction emitDrawOnStroke(out, segs, paint, baseStroke, reveal) {\n\tfor (const contour of splitContours(segs)) {\n\t\tconst len = flatten(contour).reduce((s, p) => s + arcLength(p), 0);\n\t\tconst path = out.resource({\n\t\t\tkind: \"path\",\n\t\t\tsegs: contour\n\t\t});\n\t\tout.push({\n\t\t\top: \"strokePath\",\n\t\t\tpath,\n\t\t\tpaint,\n\t\t\tstroke: {\n\t\t\t\t...baseStroke,\n\t\t\t\tdash: [len, len],\n\t\t\t\tdashOffset: len * (1 - reveal)\n\t\t\t}\n\t\t});\n\t}\n}\n/**\n* Coerce a `Path.data` init to a `PathValue`: an array of contour objects\n* passes through; anything else (a string, a number, \u2026) is a construction-time\n* error. SVG `d` strings are NOT parsed here \u2014 that parser lives on the\n* tree-shakeable `@glissade/scene/path` subpath (kept off the base embed), so a\n* string `data` throws a clear error pointing at `pathFromSvg(d)`. Returns `[]`\n* for `undefined` (the empty-path default).\n*/\nfunction coercePathData(data) {\n\tif (data === void 0) return [];\n\tif (Array.isArray(data)) {\n\t\tif (data.every((c) => typeof c === \"object\" && c !== null && Array.isArray(c.v) && Array.isArray(c.in) && Array.isArray(c.out))) return data;\n\t}\n\tthrow new TypeError(`Path.data expects PathValue (PathContour[]); for an SVG path 'd' string, parse it with pathFromSvg(d) from \"@glissade/scene/path\" (or window.glissade.pathFromSvg in the browser bundle)`);\n}\n/**\n* `PathSeg[]` \u2192 `PathValue` (Lottie vertex contours) \u2014 the inverse of\n* `Path.pathSegs`, so geometry from `roundedRectSegs` / `sketchStrokes` /\n* `flatten` can be placed on a `Path` node (to morph, motion-path, or draw-on\n* it). C/Q become an anchor + relative in/out tangents; L is a zero-tangent\n* vertex; E samples to vertices; Z closes the contour, folding the closing\n* tangent back onto the first vertex. Round-trips C-contours exactly.\n*/\nfunction pathFromSegs(segs) {\n\tconst contours = [];\n\tlet c = null;\n\tconst push = (v, inT = [0, 0], outT = [0, 0]) => {\n\t\tc.v.push(v);\n\t\tc.in.push(inT);\n\t\tc.out.push(outT);\n\t};\n\tconst last = () => c.v[c.v.length - 1];\n\tfor (const s of segs) switch (s[0]) {\n\t\tcase \"M\":\n\t\t\tc = {\n\t\t\t\tclosed: false,\n\t\t\t\tv: [[s[1], s[2]]],\n\t\t\t\tin: [[0, 0]],\n\t\t\t\tout: [[0, 0]]\n\t\t\t};\n\t\t\tcontours.push(c);\n\t\t\tbreak;\n\t\tcase \"L\":\n\t\t\tif (c) push([s[1], s[2]]);\n\t\t\tbreak;\n\t\tcase \"C\":\n\t\t\tif (c) {\n\t\t\t\tconst p0 = last();\n\t\t\t\tc.out[c.out.length - 1] = [s[1] - p0[0], s[2] - p0[1]];\n\t\t\t\tpush([s[5], s[6]], [s[3] - s[5], s[4] - s[6]]);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"Q\":\n\t\t\tif (c) {\n\t\t\t\tconst p0 = last();\n\t\t\t\tconst qx = s[1];\n\t\t\t\tconst qy = s[2];\n\t\t\t\tconst px = s[3];\n\t\t\t\tconst py = s[4];\n\t\t\t\tc.out[c.out.length - 1] = [2 / 3 * (qx - p0[0]), 2 / 3 * (qy - p0[1])];\n\t\t\t\tpush([px, py], [2 / 3 * (qx - px), 2 / 3 * (qy - py)]);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"E\":\n\t\t\tif (c) {\n\t\t\t\tconst [, cx, cy, rx, ry, rot, a0, a1] = s;\n\t\t\t\tconst cos = Math.cos(rot);\n\t\t\t\tconst sin = Math.sin(rot);\n\t\t\t\tfor (let k = 1; k <= 16; k++) {\n\t\t\t\t\tconst ang = a0 + (a1 - a0) * (k / 16);\n\t\t\t\t\tconst ex = rx * Math.cos(ang);\n\t\t\t\t\tconst ey = ry * Math.sin(ang);\n\t\t\t\t\tpush([cx + ex * cos - ey * sin, cy + ex * sin + ey * cos]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"Z\":\n\t\t\tif (c) {\n\t\t\t\tc.closed = true;\n\t\t\t\tconst f = c.v[0];\n\t\t\t\tconst l = last();\n\t\t\t\tif (c.v.length > 1 && Math.abs(f[0] - l[0]) < 1e-9 && Math.abs(f[1] - l[1]) < 1e-9) {\n\t\t\t\t\tc.in[0] = c.in[c.in.length - 1];\n\t\t\t\t\tc.v.pop();\n\t\t\t\t\tc.in.pop();\n\t\t\t\t\tc.out.pop();\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t}\n\treturn contours;\n}\nvar Rect = class extends Shape {\n\twidth;\n\theight;\n\t/** Corner radius; clamped to half the smaller dimension. radius = h/2 makes a pill. */\n\tcornerRadius;\n\tconstructor(props = {}) {\n\t\tsuper(props);\n\t\tthis.width = initProp(signal(0), props.width);\n\t\tthis.height = initProp(signal(0), props.height);\n\t\tthis.cornerRadius = initProp(signal(0), props.cornerRadius);\n\t\tthis.registerTarget(\"width\", this.width, \"number\");\n\t\tthis.registerTarget(\"height\", this.height, \"number\");\n\t\tthis.registerTarget(\"cornerRadius\", this.cornerRadius, \"number\");\n\t}\n\tintrinsicSize() {\n\t\treturn {\n\t\t\tw: this.width(),\n\t\t\th: this.height()\n\t\t};\n\t}\n\tpathSegs() {\n\t\tconst w = this.width();\n\t\tconst h = this.height();\n\t\tconst r = Math.min(Math.max(0, this.cornerRadius()), w / 2, h / 2);\n\t\treturn roundedRectSegs(-w / 2, -h / 2, w, h, r);\n\t}\n};\nvar Circle = class extends Shape {\n\tradius;\n\tconstructor(props = {}) {\n\t\tsuper(props);\n\t\tthis.radius = initProp(signal(0), props.radius);\n\t\tthis.registerTarget(\"radius\", this.radius, \"number\");\n\t}\n\tintrinsicSize() {\n\t\tconst d = this.radius() * 2;\n\t\treturn {\n\t\t\tw: d,\n\t\t\th: d\n\t\t};\n\t}\n\tpathSegs() {\n\t\tconst r = this.radius();\n\t\treturn [[\n\t\t\t\"E\",\n\t\t\t0,\n\t\t\t0,\n\t\t\tr,\n\t\t\tr,\n\t\t\t0,\n\t\t\t0,\n\t\t\tMath.PI * 2\n\t\t], [\"Z\"]];\n\t}\n};\n/**\n* Arbitrary bezier geometry \u2014 the Lottie-import landing spot and the target\n* of native path morphs. Coordinates are node-local (the node origin is\n* wherever the author put 0,0); flow placement uses the control-point bounds.\n*/\nvar Path = class extends Shape {\n\tdata;\n\tconstructor(props = {}) {\n\t\tsuper(props);\n\t\tconst init = props.data;\n\t\tconst coerced = typeof init === \"function\" ? () => coercePathData(init()) : init !== void 0 ? coercePathData(init) : void 0;\n\t\tthis.data = initProp(signal([]), coerced);\n\t\tthis.registerTarget(\"d\", this.data, \"path\");\n\t}\n\t/** Control-point bounding box (conservative: contains the true curve). */\n\tbounds() {\n\t\tlet minX = Infinity;\n\t\tlet minY = Infinity;\n\t\tlet maxX = -Infinity;\n\t\tlet maxY = -Infinity;\n\t\tfor (const c of this.data()) for (let i = 0; i < c.v.length; i++) {\n\t\t\tconst vx = c.v[i][0];\n\t\t\tconst vy = c.v[i][1];\n\t\t\tconst candidates = [\n\t\t\t\t[vx, vy],\n\t\t\t\t[vx + c.in[i][0], vy + c.in[i][1]],\n\t\t\t\t[vx + c.out[i][0], vy + c.out[i][1]]\n\t\t\t];\n\t\t\tfor (const p of candidates) {\n\t\t\t\tif (p[0] < minX) minX = p[0];\n\t\t\t\tif (p[1] < minY) minY = p[1];\n\t\t\t\tif (p[0] > maxX) maxX = p[0];\n\t\t\t\tif (p[1] > maxY) maxY = p[1];\n\t\t\t}\n\t\t}\n\t\tif (minX > maxX) return {\n\t\t\tminX: 0,\n\t\t\tminY: 0,\n\t\t\tmaxX: 0,\n\t\t\tmaxY: 0\n\t\t};\n\t\treturn {\n\t\t\tminX,\n\t\t\tminY,\n\t\t\tmaxX,\n\t\t\tmaxY\n\t\t};\n\t}\n\tintrinsicSize() {\n\t\tconst b = this.bounds();\n\t\treturn {\n\t\t\tw: b.maxX - b.minX,\n\t\t\th: b.maxY - b.minY\n\t\t};\n\t}\n\t/** Geometry is node-local, not center-anchored: offset to the box's actual top-left. */\n\tdrawOffset() {\n\t\tconst b = this.bounds();\n\t\treturn {\n\t\t\tx: b.minX,\n\t\t\ty: b.minY\n\t\t};\n\t}\n\tpathSegs() {\n\t\tconst segs = [];\n\t\tfor (const c of this.data()) {\n\t\t\tconst n = c.v.length;\n\t\t\tif (n === 0) continue;\n\t\t\tsegs.push([\n\t\t\t\t\"M\",\n\t\t\t\tc.v[0][0],\n\t\t\t\tc.v[0][1]\n\t\t\t]);\n\t\t\tfor (let i = 0; i < n - 1; i++) segs.push([\n\t\t\t\t\"C\",\n\t\t\t\tc.v[i][0] + c.out[i][0],\n\t\t\t\tc.v[i][1] + c.out[i][1],\n\t\t\t\tc.v[i + 1][0] + c.in[i + 1][0],\n\t\t\t\tc.v[i + 1][1] + c.in[i + 1][1],\n\t\t\t\tc.v[i + 1][0],\n\t\t\t\tc.v[i + 1][1]\n\t\t\t]);\n\t\t\tif (c.closed && n > 1) {\n\t\t\t\tsegs.push([\n\t\t\t\t\t\"C\",\n\t\t\t\t\tc.v[n - 1][0] + c.out[n - 1][0],\n\t\t\t\t\tc.v[n - 1][1] + c.out[n - 1][1],\n\t\t\t\t\tc.v[0][0] + c.in[0][0],\n\t\t\t\t\tc.v[0][1] + c.in[0][1],\n\t\t\t\t\tc.v[0][0],\n\t\t\t\t\tc.v[0][1]\n\t\t\t\t]);\n\t\t\t\tsegs.push([\"Z\"]);\n\t\t\t}\n\t\t}\n\t\treturn segs;\n\t}\n};\nvar ImageNode = class extends Node {\n\t/** Marks this node as referencing a kind 'image' timeline asset (\u00A72.3). */\n\tstatic assetKind = \"image\";\n\tassetId;\n\twidth;\n\theight;\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.assetId = props.assetId;\n\t\tthis.width = initProp(signal(0), props.width);\n\t\tthis.height = initProp(signal(0), props.height);\n\t\tthis.registerTarget(\"width\", this.width, \"number\");\n\t\tthis.registerTarget(\"height\", this.height, \"number\");\n\t}\n\tintrinsicSize() {\n\t\treturn {\n\t\t\tw: this.width(),\n\t\t\th: this.height()\n\t\t};\n\t}\n\tdraw(out) {\n\t\tconst w = this.width();\n\t\tconst h = this.height();\n\t\tif (w <= 0 || h <= 0) return;\n\t\tconst image = out.resource({\n\t\t\tkind: \"image\",\n\t\t\tassetId: this.assetId\n\t\t});\n\t\tout.push({\n\t\t\top: \"drawImage\",\n\t\t\timage,\n\t\t\tdst: {\n\t\t\t\tx: -w / 2,\n\t\t\t\ty: -h / 2,\n\t\t\t\tw,\n\t\t\t\th\n\t\t\t}\n\t\t});\n\t}\n};\n/**\n* Pure given a warmed VideoFrameSource (\u00A73.8): emit() does only the\n* frame-indexed media-time arithmetic \u2014 mediaT = trimStart + (t - at) * rate \u2014\n* and references the exact source-grid frame; backends resolve it.\n*/\nvar Video = class extends Node {\n\t/** Marks this node as referencing a kind 'video' timeline asset (\u00A73.8). */\n\tstatic assetKind = \"video\";\n\tassetId;\n\tat;\n\ttrimStart;\n\tplaybackRate;\n\tclipDuration;\n\tsourceFps;\n\twidth;\n\theight;\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.assetId = props.assetId;\n\t\tthis.at = props.at ?? 0;\n\t\tthis.trimStart = props.trimStart ?? 0;\n\t\tthis.playbackRate = props.playbackRate ?? 1;\n\t\tthis.clipDuration = props.clipDuration;\n\t\tthis.sourceFps = props.sourceFps;\n\t\tthis.width = initProp(signal(0), props.width);\n\t\tthis.height = initProp(signal(0), props.height);\n\t\tthis.registerTarget(\"width\", this.width, \"number\");\n\t\tthis.registerTarget(\"height\", this.height, \"number\");\n\t}\n\t/** Frame-indexed media time for timeline time t; null when outside the clip. */\n\tmediaTime(t) {\n\t\tconst local = (t - this.at) * this.playbackRate;\n\t\tif (local < 0) return null;\n\t\tif (this.clipDuration !== void 0 && t - this.at >= this.clipDuration) return null;\n\t\tconst mediaT = this.trimStart + local;\n\t\tif (this.sourceFps !== void 0) return Math.floor(mediaT * this.sourceFps + 1e-9) / this.sourceFps;\n\t\treturn mediaT;\n\t}\n\tdraw(out, ctx) {\n\t\tconst mediaT = this.mediaTime(ctx.time);\n\t\tif (mediaT === null) return;\n\t\tconst w = this.width();\n\t\tconst h = this.height();\n\t\tif (w <= 0 || h <= 0) return;\n\t\tconst image = out.resource({\n\t\t\tkind: \"videoFrame\",\n\t\t\tassetId: this.assetId,\n\t\t\tmediaT\n\t\t});\n\t\tout.push({\n\t\t\top: \"drawImage\",\n\t\t\timage,\n\t\t\tdst: {\n\t\t\t\tx: -w / 2,\n\t\t\t\ty: -h / 2,\n\t\t\t\tw,\n\t\t\t\th\n\t\t\t}\n\t\t});\n\t}\n};\nvar Text = class extends Node {\n\ttext;\n\tfill;\n\tfontSize;\n\tfontFamily;\n\tfontWeight;\n\tfontStyle;\n\talign;\n\twidth;\n\tlineHeight;\n\treveal;\n\tconstructor(props = {}) {\n\t\tsuper(props);\n\t\tthis.text = initProp(signal(\"\"), props.text);\n\t\tthis.fill = initProp(signal(\"#000000\"), props.fill);\n\t\tthis.fontSize = initProp(signal(16), props.fontSize);\n\t\tthis.fontFamily = props.fontFamily ?? \"sans-serif\";\n\t\tthis.fontWeight = props.fontWeight ?? 400;\n\t\tthis.fontStyle = props.fontStyle ?? \"normal\";\n\t\tthis.align = props.align ?? \"left\";\n\t\tthis.width = initProp(signal(0), props.width);\n\t\tthis.lineHeight = props.lineHeight ?? 1.25;\n\t\tthis.reveal = initProp(signal(Number.POSITIVE_INFINITY), props.reveal);\n\t\tthis.registerTarget(\"width\", this.width, \"number\");\n\t\tthis.registerTarget(\"text\", this.text, \"string\");\n\t\tthis.registerTarget(\"fill\", this.fill, \"color\");\n\t\tthis.registerTarget(\"fontSize\", this.fontSize, \"number\");\n\t\tthis.registerTarget(\"reveal\", this.reveal, \"number\");\n\t}\n\tintrinsicSize(measurer) {\n\t\tconst text = this.text();\n\t\tif (!text) return {\n\t\t\tw: 0,\n\t\t\th: 0\n\t\t};\n\t\tconst font = {\n\t\t\tfamily: this.fontFamily,\n\t\t\tsize: this.fontSize(),\n\t\t\tweight: this.fontWeight,\n\t\t\t...this.fontStyle === \"italic\" ? { style: \"italic\" } : {}\n\t\t};\n\t\tconst maxWidth = this.width();\n\t\tconst lines = breakLines(text, font, maxWidth > 0 ? maxWidth : void 0, measurer);\n\t\tconst widest = Math.max(...lines.map((l) => quantize(measurer.measureText(l, font).width)), 0);\n\t\treturn {\n\t\t\tw: maxWidth > 0 ? maxWidth : widest,\n\t\t\th: quantize(font.size * this.lineHeight) * lines.length\n\t\t};\n\t}\n\t/** Text draws from a baseline origin at its align edge, not a center (\u00A73.6). */\n\tdrawOffset(measurer) {\n\t\tconst m = measurer ?? this.measurerSource?.() ?? fallbackMeasurer();\n\t\tconst size = this.intrinsicSize(m);\n\t\tconst font = {\n\t\t\tfamily: this.fontFamily,\n\t\t\tsize: this.fontSize(),\n\t\t\tweight: this.fontWeight,\n\t\t\t...this.fontStyle === \"italic\" ? { style: \"italic\" } : {}\n\t\t};\n\t\tconst firstLine = breakLines(this.text(), font, this.width() > 0 ? this.width() : void 0, m)[0] ?? \"\";\n\t\tconst ascent = m.measureText(firstLine, font).ascent;\n\t\treturn {\n\t\t\tx: this.align === \"left\" ? 0 : this.align === \"center\" ? -size.w / 2 : -size.w,\n\t\t\ty: -ascent\n\t\t};\n\t}\n\t/**\n\t* The wrapped box {w, h}, measured with the scene's active measurer \u2014 the\n\t* same numbers Layout flows with, public so bindings never hand-calculate\n\t* text dimensions (e.g. underline width = () => title.measuredSize().w).\n\t*/\n\tmeasuredSize(measurer) {\n\t\treturn this.intrinsicSize(measurer ?? this.measurerSource?.() ?? fallbackMeasurer());\n\t}\n\t/**\n\t* Per-line ink boxes in this node's DRAW space (origin = first baseline at\n\t* the align edge), from the same breakLines pass that draws. Pull-based:\n\t* re-measures when text/font/width animate. Blank lines (from '\\n\\n')\n\t* produce no box. The substrate for highlights, underlines, per-line\n\t* reveals, selections.\n\t*/\n\tlineBoxes(measurer) {\n\t\tconst m = measurer ?? this.measurerSource?.() ?? fallbackMeasurer();\n\t\tconst text = this.text();\n\t\tif (!text) return [];\n\t\tconst font = {\n\t\t\tfamily: this.fontFamily,\n\t\t\tsize: this.fontSize(),\n\t\t\tweight: this.fontWeight,\n\t\t\t...this.fontStyle === \"italic\" ? { style: \"italic\" } : {}\n\t\t};\n\t\tconst maxWidth = this.width();\n\t\tconst lines = breakLines(text, font, maxWidth > 0 ? maxWidth : void 0, m);\n\t\tconst step = quantize(font.size * this.lineHeight);\n\t\tconst boxes = [];\n\t\tfor (let i = 0; i < lines.length; i++) {\n\t\t\tconst line = lines[i];\n\t\t\tif (!line) continue;\n\t\t\tconst met = m.measureText(line, font);\n\t\t\tconst w = quantize(met.width);\n\t\t\tconst x = this.align === \"left\" ? 0 : this.align === \"center\" ? -w / 2 : -w;\n\t\t\tboxes.push({\n\t\t\t\ttext: line,\n\t\t\t\tx,\n\t\t\t\ty: i * step - met.ascent,\n\t\t\t\tw,\n\t\t\t\th: met.ascent + met.descent\n\t\t\t});\n\t\t}\n\t\treturn boxes;\n\t}\n\t/**\n\t* Per-word ink boxes within each laid-out line \u2014 the SAME segmentation the\n\t* breaker flows (Intl.Segmenter boundaries, punctuation glued), positioned\n\t* by cumulative prefix advances so cross-word kerning is exact and word\n\t* widths sum to the line's width. Whitespace contributes advance but no\n\t* box. Pair index-wise with a narration manifest's word timestamps for\n\t* karaoke; draw your own rects for sub-line multi-color token work.\n\t*/\n\twordBoxes(measurer) {\n\t\tconst m = measurer ?? this.measurerSource?.() ?? fallbackMeasurer();\n\t\tconst text = this.text();\n\t\tif (!text) return [];\n\t\tconst font = {\n\t\t\tfamily: this.fontFamily,\n\t\t\tsize: this.fontSize(),\n\t\t\tweight: this.fontWeight,\n\t\t\t...this.fontStyle === \"italic\" ? { style: \"italic\" } : {}\n\t\t};\n\t\tconst maxWidth = this.width();\n\t\tconst lines = breakLines(text, font, maxWidth > 0 ? maxWidth : void 0, m);\n\t\tconst step = quantize(font.size * this.lineHeight);\n\t\tconst boxes = [];\n\t\tfor (let i = 0; i < lines.length; i++) {\n\t\t\tconst line = lines[i];\n\t\t\tif (!line) continue;\n\t\t\tconst met = m.measureText(line, font);\n\t\t\tconst lineW = quantize(met.width);\n\t\t\tconst lineX = this.align === \"left\" ? 0 : this.align === \"center\" ? -lineW / 2 : -lineW;\n\t\t\tconst y = i * step - met.ascent;\n\t\t\tconst h = met.ascent + met.descent;\n\t\t\tlet prefix = \"\";\n\t\t\tfor (const seg of segmentWords(line)) {\n\t\t\t\tconst start = prefix;\n\t\t\t\tprefix += seg;\n\t\t\t\tconst word = seg.trim();\n\t\t\t\tif (word === \"\") continue;\n\t\t\t\tconst lead = seg.length - seg.trimStart().length;\n\t\t\t\tconst before = m.measureText(start + seg.slice(0, lead), font).width;\n\t\t\t\tconst after = m.measureText(start + seg.trimEnd(), font).width;\n\t\t\t\tboxes.push({\n\t\t\t\t\ttext: word,\n\t\t\t\t\tline: i,\n\t\t\t\t\tx: lineX + before,\n\t\t\t\t\ty,\n\t\t\t\t\tw: after - before,\n\t\t\t\t\th\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn boxes;\n\t}\n\t/**\n\t* The laid-out grapheme stream the typewriter reveal advances over \u2014 every\n\t* grapheme of every wrapped line, in reading order (soft-wrap whitespace is\n\t* dropped by the breaker, exactly as drawn, so draw/revealHead/revealSchedule\n\t* all agree). Pull-based; its length is the `reveal` count that shows\n\t* everything. Author a per-keystroke staircase straight off it:\n\t*\n\t* const g = title.graphemes();\n\t* track('title/reveal', 'number',\n\t* g.map((_, i) => key(t0 + i * 0.05, i + 1, { interp: 'hold' })));\n\t*/\n\tgraphemes(measurer) {\n\t\tconst m = measurer ?? this.measurerSource?.() ?? fallbackMeasurer();\n\t\tconst text = this.text();\n\t\tif (!text) return [];\n\t\tconst font = {\n\t\t\tfamily: this.fontFamily,\n\t\t\tsize: this.fontSize(),\n\t\t\tweight: this.fontWeight,\n\t\t\t...this.fontStyle === \"italic\" ? { style: \"italic\" } : {}\n\t\t};\n\t\tconst maxWidth = this.width();\n\t\tconst lines = breakLines(text, font, maxWidth > 0 ? maxWidth : void 0, m);\n\t\tconst out = [];\n\t\tfor (const line of lines) for (const g of segmentGraphemes(line)) out.push(g);\n\t\treturn out;\n\t}\n\t/**\n\t* Draw-space position of the reveal head \u2014 the caret point just after the\n\t* last revealed grapheme, for the current `reveal` value. Drives TextCursor;\n\t* honours align and wrap exactly like wordBoxes(). At reveal 0 it sits at the\n\t* start of the first line; fully revealed, at the end of the last line.\n\t*/\n\trevealHead(measurer) {\n\t\tconst m = measurer ?? this.measurerSource?.() ?? fallbackMeasurer();\n\t\tconst font = {\n\t\t\tfamily: this.fontFamily,\n\t\t\tsize: this.fontSize(),\n\t\t\tweight: this.fontWeight,\n\t\t\t...this.fontStyle === \"italic\" ? { style: \"italic\" } : {}\n\t\t};\n\t\tconst maxWidth = this.width();\n\t\tconst lines = breakLines(this.text(), font, maxWidth > 0 ? maxWidth : void 0, m);\n\t\tconst step = quantize(font.size * this.lineHeight);\n\t\tconst total = lines.reduce((n, l) => n + segmentGraphemes(l).length, 0);\n\t\tconst revealRaw = this.reveal();\n\t\tconst shown = Math.max(0, Math.min(Number.isFinite(revealRaw) ? Math.floor(revealRaw) : total, total));\n\t\tlet remaining = shown;\n\t\tlet last = {\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\th: 0,\n\t\t\tline: 0,\n\t\t\tindex: shown\n\t\t};\n\t\tfor (let i = 0; i < lines.length; i++) {\n\t\t\tconst line = lines[i] ?? \"\";\n\t\t\tconst met = m.measureText(line, font);\n\t\t\tconst lineW = quantize(met.width);\n\t\t\tconst lineX = this.align === \"left\" ? 0 : this.align === \"center\" ? -lineW / 2 : -lineW;\n\t\t\tconst y = i * step - met.ascent;\n\t\t\tconst h = met.ascent + met.descent;\n\t\t\tconst gs = segmentGraphemes(line);\n\t\t\tif (remaining <= gs.length) return {\n\t\t\t\tx: lineX + (remaining <= 0 ? 0 : m.measureText(gs.slice(0, remaining).join(\"\"), font).width),\n\t\t\t\ty,\n\t\t\t\th,\n\t\t\t\tline: i,\n\t\t\t\tindex: shown\n\t\t\t};\n\t\t\tremaining -= gs.length;\n\t\t\tlast = {\n\t\t\t\tx: lineX + met.width,\n\t\t\t\ty,\n\t\t\t\th,\n\t\t\t\tline: i,\n\t\t\t\tindex: shown\n\t\t\t};\n\t\t}\n\t\treturn last;\n\t}\n\tdraw(out, ctx) {\n\t\tconst text = this.text();\n\t\tif (!text) return;\n\t\tconst font = {\n\t\t\tfamily: this.fontFamily,\n\t\t\tsize: this.fontSize(),\n\t\t\tweight: this.fontWeight,\n\t\t\t...this.fontStyle === \"italic\" ? { style: \"italic\" } : {}\n\t\t};\n\t\tconst maxWidth = this.width();\n\t\tconst lines = breakLines(text, font, maxWidth > 0 ? maxWidth : void 0, ctx.measurer);\n\t\tconst step = quantize(font.size * this.lineHeight);\n\t\tconst revealRaw = this.reveal();\n\t\tconst masked = Number.isFinite(revealRaw);\n\t\tlet remaining = masked ? Math.max(0, Math.floor(revealRaw)) : 0;\n\t\tfor (let i = 0; i < lines.length; i++) {\n\t\t\tconst line = lines[i];\n\t\t\tif (!line) continue;\n\t\t\tif (!masked) {\n\t\t\t\tout.push({\n\t\t\t\t\top: \"fillText\",\n\t\t\t\t\ttext: line,\n\t\t\t\t\tfont,\n\t\t\t\t\tpaint: {\n\t\t\t\t\t\tkind: \"color\",\n\t\t\t\t\t\tcolor: this.fill()\n\t\t\t\t\t},\n\t\t\t\t\tx: 0,\n\t\t\t\t\ty: i * step,\n\t\t\t\t\t...this.align !== \"left\" ? { align: this.align } : {}\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (remaining <= 0) break;\n\t\t\tconst gs = segmentGraphemes(line);\n\t\t\tconst show = Math.min(remaining, gs.length);\n\t\t\tremaining -= show;\n\t\t\tif (show === gs.length) out.push({\n\t\t\t\top: \"fillText\",\n\t\t\t\ttext: line,\n\t\t\t\tfont,\n\t\t\t\tpaint: {\n\t\t\t\t\tkind: \"color\",\n\t\t\t\t\tcolor: this.fill()\n\t\t\t\t},\n\t\t\t\tx: 0,\n\t\t\t\ty: i * step,\n\t\t\t\t...this.align !== \"left\" ? { align: this.align } : {}\n\t\t\t});\n\t\t\telse {\n\t\t\t\tconst lineW = quantize(ctx.measurer.measureText(line, font).width);\n\t\t\t\tconst lineX = this.align === \"left\" ? 0 : this.align === \"center\" ? -lineW / 2 : -lineW;\n\t\t\t\tout.push({\n\t\t\t\t\top: \"fillText\",\n\t\t\t\t\ttext: gs.slice(0, show).join(\"\"),\n\t\t\t\t\tfont,\n\t\t\t\t\tpaint: {\n\t\t\t\t\t\tkind: \"color\",\n\t\t\t\t\t\tcolor: this.fill()\n\t\t\t\t\t},\n\t\t\t\t\tx: lineX,\n\t\t\t\t\ty: i * step\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n};\n/**\n* Pure per-grapheme schedule from a Text and its reveal track \u2014 geometry from\n* the text, timing from the track. A grapheme's time is the first key whose\n* value reveals it (value >= index + 1); graphemes the track never reaches are\n* omitted. The single source SFX keystroke-sync consumes (keystrokeClips()):\n* one click per mark at `at: mark.time`, char-class policy (skip space/newline,\n* pick a sample) decided downstream from `mark.grapheme`.\n*/\nfunction revealSchedule(text, reveal, measurer) {\n\tconst m = measurer ?? text.measurerSource?.() ?? fallbackMeasurer();\n\tconst src = text.text();\n\tif (!src) return [];\n\tconst font = {\n\t\tfamily: text.fontFamily,\n\t\tsize: text.fontSize(),\n\t\tweight: text.fontWeight,\n\t\t...text.fontStyle === \"italic\" ? { style: \"italic\" } : {}\n\t};\n\tconst maxWidth = text.width();\n\tconst lines = breakLines(src, font, maxWidth > 0 ? maxWidth : void 0, m);\n\tconst step = quantize(font.size * text.lineHeight);\n\tconst keys = reveal.keys;\n\tconst marks = [];\n\tlet k = 0;\n\tfor (let li = 0; li < lines.length; li++) {\n\t\tconst line = lines[li];\n\t\tif (!line) continue;\n\t\tconst met = m.measureText(line, font);\n\t\tconst lineW = quantize(met.width);\n\t\tconst lineX = text.align === \"left\" ? 0 : text.align === \"center\" ? -lineW / 2 : -lineW;\n\t\tconst y = li * step - met.ascent;\n\t\tlet prefix = \"\";\n\t\tfor (const g of segmentGraphemes(line)) {\n\t\t\tprefix += g;\n\t\t\tconst need = k + 1;\n\t\t\tlet time = Number.POSITIVE_INFINITY;\n\t\t\tfor (const key of keys) if (key.value >= need) {\n\t\t\t\ttime = key.t;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (Number.isFinite(time)) marks.push({\n\t\t\t\tcharIndex: k,\n\t\t\t\tgrapheme: g,\n\t\t\t\ttime,\n\t\t\t\tx: lineX + m.measureText(prefix, font).width,\n\t\t\t\ty,\n\t\t\t\tline: li\n\t\t\t});\n\t\t\tk++;\n\t\t}\n\t}\n\treturn marks;\n}\n//#endregion\nexport { segmentGraphemes as A, collapseReplacer as B, Node as C, estimatingMeasurer as D, breakLines as E, filtersToCanvasFilter as F, IDENTITY as G, formatDisplayDiff as H, glow as I, invert as J, applyToPoint as K, validateFilters as L, setDefaultMeasurer as M, FilterValidationError as N, fallbackMeasurer as O, createDisplayListBuilder as P, DL_SNAPSHOT_VERSION as R, validateSketch as S, MEASURE_QUANTUM_PX as T, parseDisplaySnapshot as U, diffDisplayLists as V, serializeDisplayList as W, multiply as X, matEquals as Y, hashStr as _, Path as a, sketchStrokes as b, Video as c, revealSchedule as d, roundedRectSegs as f, hachureLines as g, flatten as h, ImageNode as i, segmentWords as j, quantize as k, coercePathData as l, arcLength as m, Custom as n, Rect as o, SketchValidationError as p, fromTRS as q, Group as r, Text as s, Circle as t, pathFromSegs as u, resolveSketch as v, resolveAnchor as w, validateHachure as x, roughen as y, DlSnapshotError as z };\n", "//#region src/layoutEngine.ts\nvar LayoutEngineMissingError = class extends Error {\n\tconstructor() {\n\t\tsuper(\"a Layout node was evaluated but no LayoutEngine is registered \u2014 await loadYogaLayoutEngine() from '@glissade/scene/layout' before mounting/rendering (the engine is wasm and loads async; evaluate() never awaits, \u00A72.5)\");\n\t\tthis.name = \"LayoutEngineMissingError\";\n\t}\n};\nlet engine = null;\nfunction setLayoutEngine(e) {\n\tengine = e;\n}\nfunction getLayoutEngine() {\n\treturn engine;\n}\nfunction requireLayoutEngine() {\n\tif (!engine) throw new LayoutEngineMissingError();\n\treturn engine;\n}\n//#endregion\nexport { setLayoutEngine as i, getLayoutEngine as n, requireLayoutEngine as r, LayoutEngineMissingError as t };\n", "import { A as segmentGraphemes, B as collapseReplacer, C as Node, D as estimatingMeasurer, E as breakLines, F as filtersToCanvasFilter, G as IDENTITY, H as formatDisplayDiff, I as glow, J as invert, K as applyToPoint, L as validateFilters, M as setDefaultMeasurer, N as FilterValidationError, O as fallbackMeasurer, P as createDisplayListBuilder, R as DL_SNAPSHOT_VERSION, S as validateSketch, T as MEASURE_QUANTUM_PX, U as parseDisplaySnapshot, V as diffDisplayLists, W as serializeDisplayList, X as multiply, Y as matEquals, _ as hashStr, a as Path, b as sketchStrokes, c as Video, d as revealSchedule, f as roundedRectSegs, g as hachureLines, h as flatten, i as ImageNode, j as segmentWords, k as quantize, l as coercePathData, m as arcLength, n as Custom, o as Rect, p as SketchValidationError, q as fromTRS, r as Group, s as Text, t as Circle, u as pathFromSegs, v as resolveSketch, w as resolveAnchor, x as validateHachure, y as roughen, z as DlSnapshotError } from \"./nodes.js\";\nimport { i as setLayoutEngine, n as getLayoutEngine, r as requireLayoutEngine, t as LayoutEngineMissingError } from \"./layoutEngine.js\";\nimport { bindTimeline, buildFontRegistry, compileTimeline, createPlayhead, emitDevWarning, evaluateAt, key, lerpColor, oklabToRgba, parseCmap, parseColor, random, rgbaToOklab, signal, stagger, track, validateFonts, vec2Signal } from \"@glissade/core\";\n//#region src/taxonomy.ts\n/**\n* The CLOSED node taxonomy (DESIGN.md \u00A73.1): exactly nine built-in node TYPES.\n* This frozen tuple is the lock \u2014 the enumerated, testable form of the \"small,\n* closed set\" guarantee. Adding a tenth name is an intentional, reviewed spec\n* change, not an accident.\n*\n* Most names map to an exported scene-node class from the base index\n* (Group/Rect/Circle/Path/Text/Image/Video/Custom). 'Layout' is the lone\n* exception: the Layout node lives in the separately-budgeted './layout' entry\n* (\u00A73.2, Yoga), so the NAME is in the taxonomy but the class is not pulled into\n* the base index \u2014 keeping the base scene bundle free of Yoga.\n*/\nconst NODE_TAXONOMY = [\n\t\"Group\",\n\t\"Rect\",\n\t\"Circle\",\n\t\"Path\",\n\t\"Text\",\n\t\"Image\",\n\t\"Video\",\n\t\"Layout\",\n\t\"Custom\"\n];\n//#endregion\n//#region src/highlight.ts\n/**\n* Marker-style text highlight: per-line rounded rects behind a Text node's\n* laid-out lines, swept by ONE 0\u21921 progress track in reading order. Lines\n* come from Text.lineBoxes() each frame, so the marker re-flows with wrap\n* width, font, and text animation \u2014 and the line count is dynamic because\n* the rects are draw() output, not child nodes. Pure data, both backends,\n* golden-coverable. For karaoke, key '<id>/progress' from narrate's\n* word timestamps.\n*/\nvar Highlight = class extends Node {\n\ttarget;\n\tcolor;\n\tprogress;\n\tpadding;\n\tcornerRadius;\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.target = props.text;\n\t\tthis.color = init$2(signal(\"#ffe066\"), props.color);\n\t\tthis.progress = init$2(signal(1), props.progress);\n\t\tthis.padding = props.padding ?? [4, 2];\n\t\tthis.cornerRadius = props.cornerRadius ?? 4;\n\t\tthis.registerTarget(\"progress\", this.progress, \"number\");\n\t\tthis.registerTarget(\"color\", this.color, \"color\");\n\t}\n\tdraw(out, ctx) {\n\t\tconst progress = Math.min(1, Math.max(0, this.progress()));\n\t\tif (progress <= 0) return;\n\t\tconst [px, py] = this.padding;\n\t\tconst boxes = this.target.lineBoxes(ctx.measurer).map((b) => ({\n\t\t\tx: b.x - px,\n\t\t\ty: b.y - py,\n\t\t\tw: b.w + 2 * px,\n\t\t\th: b.h + 2 * py\n\t\t}));\n\t\tconst total = boxes.reduce((sum, b) => sum + b.w, 0);\n\t\tif (total <= 0) return;\n\t\tconst tm = this.target.localMatrix();\n\t\tif (!matEquals(tm, IDENTITY)) out.push({\n\t\t\top: \"transform\",\n\t\t\tm: tm\n\t\t});\n\t\tconst color = this.color();\n\t\tlet remaining = progress * total;\n\t\tfor (const b of boxes) {\n\t\t\tconst fill = Math.min(b.w, remaining);\n\t\t\tremaining -= fill;\n\t\t\tif (fill <= 0) break;\n\t\t\tconst r = Math.min(this.cornerRadius, fill / 2, b.h / 2);\n\t\t\tconst path = out.resource({\n\t\t\t\tkind: \"path\",\n\t\t\t\tsegs: roundedRectSegs(b.x, b.y, fill, b.h, r)\n\t\t\t});\n\t\t\tout.push({\n\t\t\t\top: \"fillPath\",\n\t\t\t\tpath,\n\t\t\t\tpaint: {\n\t\t\t\t\tkind: \"color\",\n\t\t\t\t\tcolor\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (remaining <= 0) break;\n\t\t}\n\t}\n};\n/** `children: [highlight(title, { color: '#ffe066' }), title]` \u2014 marker behind the text. */\nfunction highlight(text, props = {}) {\n\treturn new Highlight({\n\t\t...props,\n\t\ttext\n\t});\n}\nfunction init$2(sig, v) {\n\tif (typeof v === \"function\") sig.bindSource(v);\n\telse if (v !== void 0) sig.set(v);\n\treturn sig;\n}\n//#endregion\n//#region src/textCursor.ts\n/**\n* Terminal-style caret for a Text node's typewriter reveal: a thin vertical bar\n* at Text.revealHead(), so it rides the reveal head as graphemes appear and\n* re-flows with wrap width, font, and align. Pure data, both backends,\n* golden-coverable \u2014 the bar is draw() output, not a child node. Place this as\n* a sibling of the Text (same parent) so it shares its transform.\n*\n* Blink is a pure function of ctx.time: on for the first half of each period.\n* With solidWhileTyping (default), the caret stays solid while the reveal is\n* still advancing (reveal < total) and only blinks once the text is fully\n* shown \u2014 the familiar \"types solid, then blinks waiting\" terminal feel.\n*/\nvar TextCursor = class extends Node {\n\ttarget;\n\tblinkPeriod;\n\tblinkPhase;\n\tsolidWhileTyping;\n\tcaretWidth;\n\tfill;\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.target = props.text;\n\t\tthis.blinkPeriod = props.blinkPeriod ?? 1.06;\n\t\tthis.blinkPhase = props.blinkPhase ?? 0;\n\t\tthis.solidWhileTyping = props.solidWhileTyping ?? true;\n\t\tthis.caretWidth = props.width ?? 2;\n\t\tthis.fill = init$1(signal(\"\"), props.fill);\n\t\tthis.registerTarget(\"fill\", this.fill, \"color\");\n\t}\n\tdraw(out, ctx) {\n\t\tconst head = this.target.revealHead(ctx.measurer);\n\t\tif (head.h <= 0) return;\n\t\tlet on = true;\n\t\tconst total = this.target.graphemes(ctx.measurer).length;\n\t\tconst typing = head.index < total;\n\t\tif (!(this.solidWhileTyping && typing)) {\n\t\t\tconst period = this.blinkPeriod > 0 ? this.blinkPeriod : 1;\n\t\t\ton = ((ctx.time - this.blinkPhase) % period + period) % period < period / 2;\n\t\t}\n\t\tif (!on) return;\n\t\tconst tm = this.target.localMatrix();\n\t\tif (!matEquals(tm, IDENTITY)) out.push({\n\t\t\top: \"transform\",\n\t\t\tm: tm\n\t\t});\n\t\tconst color = this.fill() || this.target.fill();\n\t\tconst path = out.resource({\n\t\t\tkind: \"path\",\n\t\t\tsegs: roundedRectSegs(head.x, head.y, this.caretWidth, head.h, 0)\n\t\t});\n\t\tout.push({\n\t\t\top: \"fillPath\",\n\t\t\tpath,\n\t\t\tpaint: {\n\t\t\t\tkind: \"color\",\n\t\t\t\tcolor\n\t\t\t}\n\t\t});\n\t}\n};\n/** `children: [title, textCursor(title)]` \u2014 a caret riding the reveal head. */\nfunction textCursor(text, props = {}) {\n\treturn new TextCursor({\n\t\t...props,\n\t\ttext\n\t});\n}\nfunction init$1(sig, v) {\n\tif (typeof v === \"function\") sig.bindSource(v);\n\telse if (v !== void 0) sig.set(v);\n\treturn sig;\n}\n//#endregion\n//#region src/typewriter.ts\n/**\n* Edit-event-aware typewriter authoring. `Text.reveal` is monotonic sugar for\n* the type-only case; real terminal cold-opens type, delete, and retype. Since\n* `Text.text` is itself a signal, the honest substrate is a hold-key STRING\n* track that carries the visible text after every keystroke \u2014 including\n* backspaces. This compiles a compact edit script into that track plus a\n* per-keystroke schedule (deletes included) for keystroke SFX.\n*\n* Drive `Text.text` with the returned track and leave `reveal` at its default\n* (Infinity): the whole current string shows, so deletion just works, and\n* `textCursor` rides the end of the live text with no extra wiring.\n*/\nconst DEFAULT_PER_CHAR = .06;\n/**\n* Compile an edit script into a string track + keystroke schedule.\n*\n* const tw = typewriter('prompt/text', [\n* { type: 'make it pop' },\n* { hold: 0.4 },\n* { delete: 3 }, // backspace 'pop'\n* { type: 'sing' },\n* ]);\n* // tracks: [tw.track, ...]; keystroke SFX: keystrokeClips(tw.marks, ...)\n*/\nfunction typewriter(target, edits, opts = {}) {\n\tconst start = opts.start ?? 0;\n\tconst globalPer = opts.perChar ?? DEFAULT_PER_CHAR;\n\tconst gap = opts.gap ?? 0;\n\tlet t = start;\n\tconst shown = [];\n\tconst keys = [key(start, \"\", { interp: \"hold\" })];\n\tconst marks = [];\n\tconst steps = [];\n\tfor (let ei = 0; ei < edits.length; ei++) {\n\t\tconst edit = edits[ei];\n\t\tconst stepStart = t;\n\t\tconst per = edit.perChar ?? globalPer;\n\t\tif (edit.type !== void 0) for (const g of segmentGraphemes(edit.type)) {\n\t\t\tt += per;\n\t\t\tshown.push(g);\n\t\t\tconst value = shown.join(\"\");\n\t\t\tkeys.push(key(t, value, { interp: \"hold\" }));\n\t\t\tmarks.push({\n\t\t\t\ttime: t,\n\t\t\t\tkind: \"insert\",\n\t\t\t\tgrapheme: g,\n\t\t\t\tvalue\n\t\t\t});\n\t\t}\n\t\tif (edit.delete !== void 0) for (let i = 0; i < edit.delete && shown.length > 0; i++) {\n\t\t\tt += per;\n\t\t\tconst removed = shown.pop();\n\t\t\tconst value = shown.join(\"\");\n\t\t\tkeys.push(key(t, value, { interp: \"hold\" }));\n\t\t\tmarks.push({\n\t\t\t\ttime: t,\n\t\t\t\tkind: \"delete\",\n\t\t\t\tgrapheme: removed,\n\t\t\t\tvalue\n\t\t\t});\n\t\t}\n\t\tif (edit.hold !== void 0) t += edit.hold;\n\t\tsteps.push({\n\t\t\tindex: ei,\n\t\t\tstart: stepStart,\n\t\t\tend: t,\n\t\t\tvalue: shown.join(\"\")\n\t\t});\n\t\tif (gap > 0 && ei < edits.length - 1) t += gap;\n\t}\n\treturn {\n\t\ttrack: track(target, \"string\", keys),\n\t\tmarks,\n\t\tsteps,\n\t\tduration: t\n\t};\n}\n//#endregion\n//#region src/each.ts\n/**\n* `each()` \u2014 deterministic parametric instancing (0.13 clip-tier sugar). Pure\n* BUILD-TIME fan-out: it generates N scene nodes from a factory, lays them out\n* in aspect-fraction space, and (optionally) staggers a motion `clip` across\n* them \u2014 compiling to ordinary keyed `Track[]` plus a `Group` of children with\n* stable `${id}/${i}` ids. Nothing executes at play time; the emitted tracks are\n* byte-indistinguishable from hand-authored ones, so goldens hold by\n* construction and every `--workers` export shard reconstructs the same id set.\n*\n* The clip runtime is imported TYPE-ONLY (the `Clip` instance the author passes\n* carries its own `apply`), so `each` adds no clip bytes to the embed: the\n* `@glissade/core/clips` runtime lands in the consumer's bundle, never scene's.\n*/\nvar EachError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"EachError\";\n\t}\n};\n/**\n* Fold a base seed and an index into a fresh per-clone seed. splitmix-style\n* avalanche so adjacent indices decorrelate (a bare `seed + i` would hand\n* near-identical streams to neighbours).\n*/\nfunction mix(seed, i) {\n\tlet h = (seed ^ Math.imul(i + 1, 2654435769)) >>> 0;\n\th = Math.imul(h ^ h >>> 16, 569420461);\n\th = Math.imul(h ^ h >>> 15, 1935289751);\n\treturn (h ^ h >>> 15) >>> 0;\n}\n/**\n* Salt folded into the motion-jitter seed so the per-index jitter rng\n* decorrelates from `ctx.rng` (the factory rng). Both axes derive from\n* `mix(baseSeed, i)`; without a distinct salt they would be the SAME stream,\n* so a factory that draws from `ctx.rng` and a `jitter` callback would see\n* correlated \"independent\" randomness. An arbitrary fixed odd constant.\n*/\nconst JITTER_SALT = 1779033703;\n/** Resolve a built-in layout (or call the escape-hatch fn) to a fraction. */\nfunction placeAt(layout, i, n) {\n\tif (typeof layout === \"function\") return layout(i, n);\n\tswitch (layout.kind) {\n\t\tcase \"row\": {\n\t\t\tconst gap = layout.gap ?? (n > 1 ? 1 / (n - 1) : 0);\n\t\t\tconst align = layout.align ?? .5;\n\t\t\tconst x0 = .5 - gap * (n - 1) / 2;\n\t\t\treturn [n === 1 ? .5 : x0 + gap * i, align];\n\t\t}\n\t\tcase \"column\": {\n\t\t\tconst gap = layout.gap ?? (n > 1 ? 1 / (n - 1) : 0);\n\t\t\tconst align = layout.align ?? .5;\n\t\t\tconst y0 = .5 - gap * (n - 1) / 2;\n\t\t\treturn [align, n === 1 ? .5 : y0 + gap * i];\n\t\t}\n\t\tcase \"grid\": {\n\t\t\tconst cols = layout.cols;\n\t\t\tif (!(cols >= 1)) throw new EachError(`grid layout needs cols >= 1 (got ${cols})`);\n\t\t\tconst rows = layout.rows ?? Math.ceil(n / cols);\n\t\t\tconst order = layout.order ?? \"row\";\n\t\t\tconst col = order === \"row\" ? i % cols : Math.floor(i / rows);\n\t\t\tconst row = order === \"row\" ? Math.floor(i / cols) : i % rows;\n\t\t\tconst gapX = layout.gapX ?? (cols > 1 ? 1 / (cols - 1) : 0);\n\t\t\tconst gapY = layout.gapY ?? (rows > 1 ? 1 / (rows - 1) : 0);\n\t\t\tconst spanX = gapX * (cols - 1);\n\t\t\tconst spanY = gapY * (rows - 1);\n\t\t\treturn [cols === 1 ? .5 : .5 - spanX / 2 + gapX * col, rows === 1 ? .5 : .5 - spanY / 2 + gapY * row];\n\t\t}\n\t\tcase \"ring\": {\n\t\t\tconst radius = layout.radius ?? .5;\n\t\t\tconst [cx, cy] = layout.center ?? [.5, .5];\n\t\t\tconst theta = (layout.startAngle ?? -Math.PI / 2) + (layout.sweep ?? Math.PI * 2) * (n === 0 ? 0 : i / n);\n\t\t\treturn [cx + radius * Math.cos(theta), cy + radius * Math.sin(theta)];\n\t\t}\n\t}\n}\n/** Compile a `distribute` mode + numeric gap into a stagger delay fn. */\nfunction distributeFn(distribute, gap, n) {\n\tconst mid = (n - 1) / 2;\n\tswitch (distribute) {\n\t\tcase \"from-center\": return (i) => Math.abs(i - mid) * gap;\n\t\tcase \"from-edges\": return (i) => (mid - Math.abs(i - mid)) * gap;\n\t\tcase \"delay\": return (i) => i * gap;\n\t}\n}\n/** Resolve the motion's per-index delay into a plain `(i) => seconds` fn. */\nfunction staggerFn(motion, n) {\n\tconst s = motion.stagger ?? 0;\n\tif (typeof s === \"function\") return s;\n\treturn distributeFn(motion.distribute ?? \"delay\", s, n);\n}\n/**\n* Generate `n` clones from `factory`, lay them out, and (optionally) stagger a\n* motion clip across them.\n*\n* const grid = each(9, (i) => new Rect({ width: 40, height: 40, fill: '#9ef0c0' }), {\n* id: 'card',\n* layout: { kind: 'grid', cols: 3 },\n* box: { w: 600, h: 360 },\n* motion: { clip: popIn(), stagger: 0.08, distribute: 'from-center' },\n* });\n* // scene children: [grid.node]; timeline tracks: [...grid.tracks]\n*/\nfunction each(n, factory, opts) {\n\tif (!Number.isInteger(n) || n < 0) throw new EachError(`each() count must be a non-negative integer (got ${n})`);\n\tconst baseSeed = (opts.seed ?? hashStr(opts.id)) >>> 0;\n\tconst box = opts.box;\n\tconst [ox, oy] = box?.origin ?? [0, 0];\n\tconst children = [];\n\tconst places = [];\n\tconst seen = /* @__PURE__ */ new Set();\n\tfor (let i = 0; i < n; i++) {\n\t\tconst id = `${opts.id}/${i}`;\n\t\tconst frac = placeAt(opts.layout, i, n);\n\t\tconst ctx = {\n\t\t\ti,\n\t\t\tn,\n\t\t\tid,\n\t\t\tplace: frac,\n\t\t\trng: random(mix(baseSeed, i)),\n\t\t\tseed: baseSeed\n\t\t};\n\t\tconst child = factory(i, ctx);\n\t\tif (!(child instanceof Node)) throw new EachError(`each() factory must return a Node for index ${i} (got ${typeof child})`);\n\t\tif (seen.has(child)) throw new EachError(`each() factory returned the same Node instance for index ${i} \u2014 the factory must construct a new node per index (it is called once per clone)`);\n\t\tseen.add(child);\n\t\tif (child.id === void 0) child.id = id;\n\t\telse if (child.id !== id) throw new EachError(`each() factory set id '${child.id}' on index ${i}, but each owns the id namespace \u2014 leave it unset so it becomes '${id}'`);\n\t\tchildren.push(child);\n\t\tplaces.push(box ? {\n\t\t\tfrac,\n\t\t\tpx: [ox + frac[0] * box.w, oy + frac[1] * box.h]\n\t\t} : { frac });\n\t}\n\tconst node = new Group({\n\t\tid: opts.id,\n\t\tchildren\n\t});\n\tconst tracks = [];\n\tlet end = opts.motion?.startSec ?? 0;\n\tif (opts.motion) {\n\t\tconst m = opts.motion;\n\t\tconst start = m.startSec ?? 0;\n\t\tconst at = staggerFn(m, n);\n\t\tfor (let i = 0; i < n; i++) {\n\t\t\tconst rngI = random(mix(mix(baseSeed, i), JITTER_SALT));\n\t\t\tconst overrides = m.jitter?.(i, rngI, n);\n\t\t\tconst applyOpts = {\n\t\t\t\t...overrides !== void 0 ? { overrides } : {},\n\t\t\t\t...m.speed !== void 0 ? { speed: m.speed } : {}\n\t\t\t};\n\t\t\tconst r = m.clip.apply(`${opts.id}/${i}`, start + at(i), applyOpts);\n\t\t\ttracks.push(...r.tracks);\n\t\t\tif (r.end > end) end = r.end;\n\t\t}\n\t}\n\treturn {\n\t\tnode,\n\t\tchildren,\n\t\ttracks,\n\t\tend,\n\t\tplaces\n\t};\n}\n//#endregion\n//#region src/drawOn.ts\n/**\n* Whiteboard kit: one-call \"draw this shape on\" tracks. A stroked or sketched\n* shape's `reveal` (0..1) animates it stroking itself on; `drawOn` builds that\n* track, and `drawOnEach` cascades a list of shapes one after another (the\n* classic whiteboard sequence) via the core `stagger` helper.\n*/\n/** A `<id>/reveal` track running 0\u21921 \u2014 point a stroked/sketched shape at it to\n* hand-draw itself on. `target` is the node id. */\nfunction drawOn(target, opts = {}) {\n\tconst start = opts.start ?? 0;\n\tconst duration = opts.duration ?? 1;\n\tconst ease = opts.ease ?? \"easeInOutCubic\";\n\treturn track(`${target}/reveal`, \"number\", [key(start, 0), key(start + duration, 1, ease)]);\n}\n/** Cascade several shapes drawing themselves on, one after another \u2014 the\n* whiteboard sequence. Returns one reveal track per id, staggered by `delay`. */\nfunction drawOnEach(targets, opts = {}) {\n\tconst delay = opts.delay ?? (opts.duration ?? 1) * .6;\n\treturn stagger(targets.map((t) => drawOn(t, opts)), delay);\n}\n//#endregion\n//#region src/guards.ts\n/**\n* Render-mode determinism guards (DESIGN.md \u00A75.5). During export the banned\n* globals are patched \u2014 for the synchronous scope of a single evaluate() call \u2014\n* to throw (CLI/CI) or warn-once-then-delegate (browser/dev), then restored.\n* Scoped to evaluate() re-entry, never installed globally, so timers and clocks\n* outside the read phase are untouched. This backstops the static eslint rules\n* (`@glissade/eslint-plugin`) for the cases lint can't see (closures, indirect\n* calls, third-party code reachable from a node's emit()).\n*/\nvar DeterminismViolationError = class extends Error {\n\tconstructor(api) {\n\t\tsuper(`'${api}' was called inside evaluate() \u2014 scene code must be a pure function of time (\u00A75.5). Read ctx.time/frame, use the seeded random(seed) from @glissade/core, and resolve assets before rendering.`);\n\t\tthis.name = \"DeterminismViolationError\";\n\t}\n};\nfunction bannedSlots() {\n\tconst g = globalThis;\n\tconst slots = [\n\t\t{\n\t\t\ttarget: Math,\n\t\t\tkey: \"random\",\n\t\t\tlabel: \"Math.random\"\n\t\t},\n\t\t{\n\t\t\ttarget: Date,\n\t\t\tkey: \"now\",\n\t\t\tlabel: \"Date.now\"\n\t\t},\n\t\t{\n\t\t\ttarget: g,\n\t\t\tkey: \"setTimeout\",\n\t\t\tlabel: \"setTimeout\"\n\t\t},\n\t\t{\n\t\t\ttarget: g,\n\t\t\tkey: \"setInterval\",\n\t\t\tlabel: \"setInterval\"\n\t\t}\n\t];\n\tif (typeof performance !== \"undefined\") slots.push({\n\t\ttarget: performance,\n\t\tkey: \"now\",\n\t\tlabel: \"performance.now\"\n\t});\n\tif (typeof g[\"requestAnimationFrame\"] === \"function\") slots.push({\n\t\ttarget: g,\n\t\tkey: \"requestAnimationFrame\",\n\t\tlabel: \"requestAnimationFrame\"\n\t});\n\treturn slots;\n}\n/**\n* Run `fn` (a single synchronous evaluate()) with the banned globals guarded.\n* `throw` rejects any call (CLI/CI); `warn` warns once per API then delegates\n* to the real implementation (browser/dev); `off` is a no-op. Globals are\n* always restored, even if `fn` throws. `fn` MUST be synchronous \u2014 patching is\n* only valid for the sync read phase, never across an await.\n*/\nfunction withDeterminismGuards(mode, fn) {\n\tif (mode === \"off\") return fn();\n\tconst slots = bannedSlots();\n\tconst saved = slots.map((s) => s.target[s.key]);\n\tconst warned = /* @__PURE__ */ new Set();\n\tslots.forEach((s, i) => {\n\t\ts.target[s.key] = (...args) => {\n\t\t\tif (mode === \"throw\") throw new DeterminismViolationError(s.label);\n\t\t\tif (!warned.has(s.label)) {\n\t\t\t\twarned.add(s.label);\n\t\t\t\temitDevWarning(`${s.label} called inside evaluate() \u2014 nondeterministic, not reproducible on export (\u00A75.5)`);\n\t\t\t}\n\t\t\treturn saved[i].apply(s.target, args);\n\t\t};\n\t});\n\ttry {\n\t\treturn fn();\n\t} finally {\n\t\tslots.forEach((s, i) => {\n\t\t\ts.target[s.key] = saved[i];\n\t\t});\n\t}\n}\n//#endregion\n//#region src/scene.ts\n/**\n* Scene assembly + the canonical evaluate(scene, timeline, t) (DESIGN.md \u00A72.5,\n* \u00A73.1): pure, total, deterministic \u2014 driver writes the playhead (sanctioned\n* entry write), then a pull-only read phase collects the DisplayList.\n*/\nvar DuplicateNodeIdError = class extends Error {\n\tconstructor(id) {\n\t\tsuper(`duplicate node id '${id}' \u2014 explicit ids must be unique (\u00A73.1/\u00A76.5)`);\n\t\tthis.name = \"DuplicateNodeIdError\";\n\t}\n};\nvar ReservedNodeIdError = class extends Error {\n\tconstructor(id) {\n\t\tsuper(`node id '${id}' uses the reserved '~' prefix \u2014 that namespace is for structural fallback ids (\u00A76.5), which are inspection-only and never track targets; choose another id`);\n\t\tthis.name = \"ReservedNodeIdError\";\n\t}\n};\nfunction indexNodes(root, into, measurerSource) {\n\troot.measurerSource = measurerSource;\n\tif (root.id !== void 0) {\n\t\tif (root.id.startsWith(\"~\")) throw new ReservedNodeIdError(root.id);\n\t\tif (into.has(root.id)) throw new DuplicateNodeIdError(root.id);\n\t\tinto.set(root.id, root);\n\t}\n\tif (root instanceof Group) for (const child of root.children) indexNodes(child, into, measurerSource);\n}\nfunction createScene(init) {\n\tconst root = new Group({\n\t\tid: \"__root\",\n\t\tchildren: init.children\n\t});\n\tconst nodes = /* @__PURE__ */ new Map();\n\tconst playhead = createPlayhead();\n\tconst measurer = signal(null);\n\tindexNodes(root, nodes, () => measurer() ?? fallbackMeasurer());\n\treturn {\n\t\troot,\n\t\tnodes,\n\t\tsize: init.size,\n\t\tplayhead,\n\t\tresolveTarget: (target) => {\n\t\t\tfor (let slash = target.lastIndexOf(\"/\"); slash > 0; slash = target.lastIndexOf(\"/\", slash - 1)) {\n\t\t\t\tconst node = nodes.get(target.slice(0, slash));\n\t\t\t\tif (node) return node.resolveTarget(target.slice(slash + 1));\n\t\t\t}\n\t\t},\n\t\tsetTextMeasurer: (m) => {\n\t\t\tmeasurer.set(m);\n\t\t},\n\t\tget textMeasurer() {\n\t\t\treturn measurer.peek() ?? fallbackMeasurer();\n\t\t}\n\t};\n}\nconst bindings = /* @__PURE__ */ new WeakMap();\nfunction bindScene(scene, doc) {\n\tlet perScene = bindings.get(scene);\n\tif (!perScene) {\n\t\tperScene = /* @__PURE__ */ new WeakMap();\n\t\tbindings.set(scene, perScene);\n\t}\n\tlet entry = perScene.get(doc);\n\tif (!entry) {\n\t\tconst compiled = compileTimeline(doc);\n\t\tentry = {\n\t\t\tcompiled,\n\t\t\tbound: bindTimeline(compiled, scene.resolveTarget, scene.playhead)\n\t\t};\n\t\tperScene.set(doc, entry);\n\t}\n\treturn entry;\n}\n/**\n* The non-negotiable contract (\u00A72.5): same (scene, timeline, t) \u2192 identical\n* DisplayList, in any call order. Never awaits; asset readiness is the\n* caller's precondition.\n*/\nfunction evaluate(scene, doc, t) {\n\tbindScene(scene, doc);\n\tconst fps = doc.fps;\n\tconst ctx = {\n\t\ttime: t,\n\t\tframe: fps !== void 0 ? Math.round(t * fps) : -1,\n\t\tmeasurer: scene.textMeasurer\n\t};\n\treturn evaluateAt(scene.playhead, t, () => {\n\t\tconst out = createDisplayListBuilder(scene.size);\n\t\tscene.root.emit(out, ctx);\n\t\treturn out.finish();\n\t});\n}\n//#endregion\n//#region src/cacheColdAudit.ts\n/** Stable string of a DisplayList for comparison (opaque resources collapse to a marker). */\nfunction hashDisplayList(dl) {\n\treturn JSON.stringify(dl, collapseReplacer);\n}\n/**\n* Evaluate two fresh scenes from `createScene` at `t` and confirm the\n* DisplayLists are byte-identical. Returns `{ ok: true }` for a pure scene, or\n* `{ ok: false, node }` naming the first divergent node. DEV-only \u2014 never on\n* the render hot path.\n*/\nfunction auditCacheCold(createScene, doc, t) {\n\tconst warm = createScene();\n\tconst cold = createScene();\n\tconst a = evaluate(warm, doc, t);\n\tconst b = evaluate(cold, doc, t);\n\tif (hashDisplayList(a) === hashDisplayList(b)) return { ok: true };\n\tconst frame = doc.fps !== void 0 ? Math.round(t * doc.fps) : -1;\n\tconst ctxA = {\n\t\ttime: t,\n\t\tframe,\n\t\tmeasurer: warm.textMeasurer\n\t};\n\tconst ctxB = {\n\t\ttime: t,\n\t\tframe,\n\t\tmeasurer: cold.textMeasurer\n\t};\n\tlet groupFallback;\n\tfor (const [id, nodeA] of warm.nodes) {\n\t\tconst nodeB = cold.nodes.get(id);\n\t\tif (!nodeB) return {\n\t\t\tok: false,\n\t\t\tnode: id\n\t\t};\n\t\tconst ea = createDisplayListBuilder(warm.size);\n\t\tnodeA.emit(ea, ctxA);\n\t\tconst eb = createDisplayListBuilder(cold.size);\n\t\tnodeB.emit(eb, ctxB);\n\t\tconst dlA = ea.finish();\n\t\tconst dlB = eb.finish();\n\t\tif (hashDisplayList(dlA) === hashDisplayList(dlB)) continue;\n\t\tif (nodeA instanceof Group) {\n\t\t\tgroupFallback ??= id;\n\t\t\tcontinue;\n\t\t}\n\t\tconst first = diffDisplayLists(dlA, dlB).deltas[0];\n\t\treturn {\n\t\t\tok: false,\n\t\t\tnode: id,\n\t\t\t...first !== void 0 ? { delta: first } : {}\n\t\t};\n\t}\n\treturn {\n\t\tok: false,\n\t\t...groupFallback !== void 0 ? { node: groupFallback } : {}\n\t};\n}\n//#endregion\n//#region src/renderBackend.ts\n/** Every filter kind the shared Raster2D interpreter rasterizes (\u00A73.4). */\nconst ALL_FILTER_KINDS = new Set([\n\t\"blur\",\n\t\"drop-shadow\",\n\t\"brightness\",\n\t\"contrast\",\n\t\"saturate\"\n]);\n//#endregion\n//#region src/motionPath.ts\n/**\n* Motion along a path: sample a point (and tangent) at an arc-length position on\n* a PathValue, and drive a node along it over time. The Path node draws/morphs\n* geometry; this is the companion that makes another node \u2014 a cursor, a dot, an\n* arrow \u2014 *travel* that geometry.\n*\n* Sampling is arc-length parameterized (constant speed), so progress 0\u21921 moves\n* evenly instead of bunching at the control points. Pure and deterministic: the\n* table is built once from a static PathValue and `atProgress` is a pure\n* function of progress, so evaluate() stays pure and goldens are byte-stable.\n*/\nconst clamp01 = (v) => v < 0 ? 0 : v > 1 ? 1 : v;\nfunction cubicPoint(p0, p1, p2, p3, t) {\n\tconst mt = 1 - t;\n\tconst a = mt * mt * mt;\n\tconst b = 3 * mt * mt * t;\n\tconst c = 3 * mt * t * t;\n\tconst d = t * t * t;\n\treturn [a * p0[0] + b * p1[0] + c * p2[0] + d * p3[0], a * p0[1] + b * p1[1] + c * p2[1] + d * p3[1]];\n}\n/** PathValue contours \u2192 cubic segments, same v/in/out math as Path.pathSegs. */\nfunction toCubics(path) {\n\tconst out = [];\n\tfor (const ct of path) {\n\t\tconst n = ct.v.length;\n\t\tfor (let i = 0; i < n - 1; i++) out.push([\n\t\t\tct.v[i],\n\t\t\t[ct.v[i][0] + ct.out[i][0], ct.v[i][1] + ct.out[i][1]],\n\t\t\t[ct.v[i + 1][0] + ct.in[i + 1][0], ct.v[i + 1][1] + ct.in[i + 1][1]],\n\t\t\tct.v[i + 1]\n\t\t]);\n\t\tif (ct.closed && n > 1) out.push([\n\t\t\tct.v[n - 1],\n\t\t\t[ct.v[n - 1][0] + ct.out[n - 1][0], ct.v[n - 1][1] + ct.out[n - 1][1]],\n\t\t\t[ct.v[0][0] + ct.in[0][0], ct.v[0][1] + ct.in[0][1]],\n\t\t\tct.v[0]\n\t\t]);\n\t}\n\treturn out;\n}\n/**\n* Build a reusable arc-length sampler. Densely samples each cubic into a\n* cumulative-length polyline (samplesPerSegment, default 32) so `at`/`tangent`\n* are simple span lerps \u2014 smooth enough for motion, no per-call bezier solve.\n*/\nfunction motionPath(path, opts = {}) {\n\tconst steps = Math.max(1, Math.floor(opts.samplesPerSegment ?? 32));\n\tconst cubics = toCubics(path);\n\tconst pts = [];\n\tconst cum = [];\n\tif (cubics.length > 0) {\n\t\tlet prev = cubicPoint(...cubics[0], 0);\n\t\tpts.push(prev);\n\t\tcum.push(0);\n\t\tlet acc = 0;\n\t\tfor (const cub of cubics) for (let k = 1; k <= steps; k++) {\n\t\t\tconst p = cubicPoint(...cub, k / steps);\n\t\t\tacc += Math.hypot(p[0] - prev[0], p[1] - prev[1]);\n\t\t\tpts.push(p);\n\t\t\tcum.push(acc);\n\t\t\tprev = p;\n\t\t}\n\t} else {\n\t\tconst first = path[0]?.v[0];\n\t\tpts.push(first ? [first[0], first[1]] : [0, 0]);\n\t\tcum.push(0);\n\t}\n\tconst total = cum[cum.length - 1];\n\tconst locate = (s) => {\n\t\tif (total <= 0 || s <= 0) return {\n\t\t\ti: 0,\n\t\t\tf: 0\n\t\t};\n\t\tif (s >= total) return {\n\t\t\ti: pts.length - 2,\n\t\t\tf: 1\n\t\t};\n\t\tlet i = 0;\n\t\twhile (i < cum.length - 1 && cum[i + 1] < s) i++;\n\t\tconst span = cum[i + 1] - cum[i];\n\t\treturn {\n\t\t\ti,\n\t\t\tf: span > 0 ? (s - cum[i]) / span : 0\n\t\t};\n\t};\n\tconst at = (s) => {\n\t\tif (pts.length === 1) return [pts[0][0], pts[0][1]];\n\t\tconst { i, f } = locate(s);\n\t\tconst a = pts[i];\n\t\tconst b = pts[i + 1];\n\t\treturn [a[0] + (b[0] - a[0]) * f, a[1] + (b[1] - a[1]) * f];\n\t};\n\tconst tangentAt = (s) => {\n\t\tif (pts.length === 1) return [1, 0];\n\t\tconst { i } = locate(s);\n\t\tconst a = pts[i];\n\t\tconst b = pts[i + 1];\n\t\tconst dx = b[0] - a[0];\n\t\tconst dy = b[1] - a[1];\n\t\tconst len = Math.hypot(dx, dy);\n\t\treturn len > 0 ? [dx / len, dy / len] : [1, 0];\n\t};\n\treturn {\n\t\tlength: total,\n\t\tat,\n\t\ttangentAt,\n\t\tatProgress: (u) => at(clamp01(u) * total),\n\t\ttangentAtProgress: (u) => tangentAt(clamp01(u) * total)\n\t};\n}\n/** Total arc length of a path. */\nfunction pathLength(path) {\n\treturn motionPath(path).length;\n}\n/** Point at arc-length s along a path (clamped to [0, length]). */\nfunction pointAtLength(path, s) {\n\treturn motionPath(path).at(s);\n}\n/**\n* A companion node that drives `target` along `path` as `progress` animates.\n* Owns the target's `position` (and `rotation` when `orient`) via pull-based\n* binding, so there's no eval-order side effect. Add it to the scene (its\n* `progress` is the animatable target); it draws nothing itself.\n*/\nvar FollowPath = class extends Node {\n\ttarget;\n\tprogress;\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.target = props.target;\n\t\tthis.progress = signal(1);\n\t\tif (typeof props.progress === \"function\") this.progress.bindSource(props.progress);\n\t\telse if (props.progress !== void 0) this.progress.set(props.progress);\n\t\tthis.registerTarget(\"progress\", this.progress, \"number\");\n\t\tconst sOpts = props.samplesPerSegment !== void 0 ? { samplesPerSegment: props.samplesPerSegment } : {};\n\t\tconst getPath = props.path instanceof Path ? () => props.path.data() : () => props.path;\n\t\tlet cachedPath = getPath();\n\t\tlet cachedSampler = motionPath(cachedPath, sOpts);\n\t\tconst sampler = () => {\n\t\t\tconst pv = getPath();\n\t\t\tif (pv !== cachedPath) {\n\t\t\t\tcachedPath = pv;\n\t\t\t\tcachedSampler = motionPath(pv, sOpts);\n\t\t\t}\n\t\t\treturn cachedSampler;\n\t\t};\n\t\tprops.target.position.bindSource(() => sampler().atProgress(this.progress()));\n\t\tif (props.orient) {\n\t\t\tconst offset = props.orientOffset ?? 0;\n\t\t\tprops.target.rotation.bindSource(() => {\n\t\t\t\tconst t = sampler().tangentAtProgress(this.progress());\n\t\t\t\treturn Math.atan2(t[1], t[0]) * 180 / Math.PI + offset;\n\t\t\t});\n\t\t}\n\t}\n\tdraw() {}\n};\n/** `children: [route, cursor, followPath(cursor, route, { orient: true })]` \u2014 cursor traces the route.\n* Pass the Path *node* to follow it as it morphs; pass a PathValue for a fixed route. */\nfunction followPath(target, path, props = {}) {\n\treturn new FollowPath({\n\t\t...props,\n\t\ttarget,\n\t\tpath\n\t});\n}\n//#endregion\n//#region src/tokenHighlight.ts\n/**\n* Multi-range token highlight: sub-line ranges over a Text node's wordBoxes,\n* each with its OWN animatable fill/opacity/progress/scale \u2014 four-color\n* category passes, per-token flips, karaoke-with-color. Design answers from\n* downstream production (the NNDL verification ritual):\n* - ranges VALIDATE at construction and THROW on copy drift at draw \u2014 the\n* throw is load-bearing (it catches edited copy that no longer matches);\n* `rematch: true` opts animated text into per-frame re-resolution.\n* - a range spanning a wrap produces one rect per line segment.\n* - string matches are whitespace-stripped consecutive box runs and must end\n* boundary-exact (mid-segment end = error listing the actual segments);\n* `[wordIndex, wordIndex]` ranges sidestep matching entirely.\n*/\nvar TokenMatchError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"TokenMatchError\";\n\t}\n};\nconst stripWs = (s) => s.replace(/\\s+/g, \"\");\n/**\n* Find the Nth whitespace-stripped consecutive run of boxes equal to token.\n* Boundary-exact: a run that diverges mid-segment is not a match; ending\n* mid-segment throws (with the real segment list) rather than half-boxing.\n*/\nfunction matchTokenRun(boxes, token, occurrence = 1) {\n\tconst want = stripWs(token);\n\tif (want.length === 0) throw new TokenMatchError(\"empty token\");\n\tlet seen = 0;\n\tfor (let i = 0; i < boxes.length; i++) {\n\t\tlet acc = \"\";\n\t\tfor (let j = i; j < boxes.length; j++) {\n\t\t\tacc += stripWs(boxes[j].text);\n\t\t\tif (acc === want) {\n\t\t\t\tseen++;\n\t\t\t\tif (seen === occurrence) return [i, j];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (!want.startsWith(acc)) break;\n\t\t}\n\t}\n\tthrow new TokenMatchError(`no match for token '${token}'${occurrence > 1 ? ` (occurrence ${occurrence})` : \"\"} \u2014 segments are [${boxes.map((b) => `'${b.text}'`).join(\", \")}]`);\n}\nvar TokenHighlight = class extends Node {\n\ttarget;\n\tpadding;\n\tcornerRadius;\n\trematch;\n\tranges;\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.target = props.text;\n\t\tthis.padding = props.padding ?? [4, 2];\n\t\tthis.cornerRadius = props.cornerRadius ?? 4;\n\t\tthis.rematch = props.rematch ?? false;\n\t\tconst boxes = this.target.wordBoxes();\n\t\tthis.ranges = props.ranges.map((spec, index) => {\n\t\t\tconst run = this.resolveRun(boxes, spec);\n\t\t\tconst id = spec.id ?? `r${index}`;\n\t\t\tconst r = {\n\t\t\t\tspec,\n\t\t\t\tfill: init(signal(\"#ffe066\"), spec.fill),\n\t\t\t\topacity: init(signal(1), spec.opacity),\n\t\t\t\tprogress: init(signal(1), spec.progress),\n\t\t\t\tscale: init(signal(1), spec.scale),\n\t\t\t\toffset: initVec(vec2Signal([0, 0]), spec.offset),\n\t\t\t\trun,\n\t\t\t\tbound: runText(boxes, run)\n\t\t\t};\n\t\t\tthis.registerTarget(`${id}/fill`, r.fill, \"color\");\n\t\t\tthis.registerTarget(`${id}/opacity`, r.opacity, \"number\");\n\t\t\tthis.registerTarget(`${id}/progress`, r.progress, \"number\");\n\t\t\tthis.registerTarget(`${id}/scale`, r.scale, \"number\");\n\t\t\tthis.registerTarget(`${id}/offset`, r.offset, \"vec2\");\n\t\t\tthis.registerTarget(`${id}/offset.x`, r.offset.x, \"number\");\n\t\t\tthis.registerTarget(`${id}/offset.y`, r.offset.y, \"number\");\n\t\t\treturn r;\n\t\t});\n\t}\n\tresolveRun(boxes, spec) {\n\t\tif (typeof spec.match !== \"string\") {\n\t\t\tconst [from, to] = spec.match;\n\t\t\tif (from < 0 || to >= boxes.length || from > to) throw new TokenMatchError(`word index range [${from}, ${to}] out of bounds (${boxes.length} boxes)`);\n\t\t\treturn [from, to];\n\t\t}\n\t\treturn matchTokenRun(boxes, spec.match, spec.occurrence ?? 1);\n\t}\n\tdraw(out, ctx) {\n\t\tconst boxes = this.target.wordBoxes(ctx.measurer);\n\t\tif (boxes.length === 0) return;\n\t\tconst tm = this.target.localMatrix();\n\t\tconst [px, py] = this.padding;\n\t\tlet pushedTransform = false;\n\t\tfor (const r of this.ranges) {\n\t\t\tconst opacity = r.opacity();\n\t\t\tif (opacity <= 0) continue;\n\t\t\tconst progress = Math.min(1, Math.max(0, r.progress()));\n\t\t\tif (progress <= 0) continue;\n\t\t\tlet run = r.run;\n\t\t\tif (this.rematch && typeof r.spec.match === \"string\") run = matchTokenRun(boxes, r.spec.match, r.spec.occurrence ?? 1);\n\t\t\telse if (runText(boxes, run) !== r.bound) throw new TokenMatchError(`bound token '${r.bound}' no longer matches boxes [${run[0]}, ${run[1]}] \u2014 the text changed (segments now [${boxes.slice(run[0], run[1] + 1).map((b) => `'${b.text}'`).join(\", \")}]); pass rematch: true for animated text`);\n\t\t\tconst lineRects = [];\n\t\t\tfor (let i = run[0]; i <= run[1]; i++) {\n\t\t\t\tconst b = boxes[i];\n\t\t\t\tconst last = lineRects[lineRects.length - 1];\n\t\t\t\tconst cur = i > run[0] && boxes[i - 1].line === b.line ? last : void 0;\n\t\t\t\tif (cur) {\n\t\t\t\t\tcur.w = b.x + b.w + px - cur.x;\n\t\t\t\t\tcur.y = Math.min(cur.y, b.y - py);\n\t\t\t\t\tcur.h = Math.max(cur.h, b.y + b.h + py - cur.y);\n\t\t\t\t} else lineRects.push({\n\t\t\t\t\tx: b.x - px,\n\t\t\t\t\ty: b.y - py,\n\t\t\t\t\tw: b.w + 2 * px,\n\t\t\t\t\th: b.h + 2 * py\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (!pushedTransform && !matEquals(tm, IDENTITY)) {\n\t\t\t\tout.push({\n\t\t\t\t\top: \"transform\",\n\t\t\t\t\tm: tm\n\t\t\t\t});\n\t\t\t\tpushedTransform = true;\n\t\t\t}\n\t\t\tconst grouped = opacity < 1;\n\t\t\tif (grouped) out.push({\n\t\t\t\top: \"pushGroup\",\n\t\t\t\topacity,\n\t\t\t\tblend: \"source-over\",\n\t\t\t\tfilters: []\n\t\t\t});\n\t\t\tconst fill = r.fill();\n\t\t\tconst scale = r.scale();\n\t\t\tconst [ox, oy] = r.offset();\n\t\t\tlet remaining = progress * lineRects.reduce((sum, q) => sum + q.w, 0);\n\t\t\tfor (const q of lineRects) {\n\t\t\t\tconst fillW = Math.min(q.w, remaining);\n\t\t\t\tremaining -= fillW;\n\t\t\t\tif (fillW <= 0) break;\n\t\t\t\tconst cx = q.x + q.w / 2 + ox;\n\t\t\t\tconst cy = q.y + q.h / 2 + oy;\n\t\t\t\tconst w = fillW * scale;\n\t\t\t\tconst h = q.h * scale;\n\t\t\t\tconst x = cx - q.w / 2 * scale;\n\t\t\t\tconst y = cy - h / 2;\n\t\t\t\tconst rad = Math.min(this.cornerRadius, w / 2, h / 2);\n\t\t\t\tconst path = out.resource({\n\t\t\t\t\tkind: \"path\",\n\t\t\t\t\tsegs: roundedRectSegs(x, y, w, h, rad)\n\t\t\t\t});\n\t\t\t\tout.push({\n\t\t\t\t\top: \"fillPath\",\n\t\t\t\t\tpath,\n\t\t\t\t\tpaint: {\n\t\t\t\t\t\tkind: \"color\",\n\t\t\t\t\t\tcolor: fill\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (remaining <= 0) break;\n\t\t\t}\n\t\t\tif (grouped) out.push({ op: \"popGroup\" });\n\t\t}\n\t}\n};\nfunction runText(boxes, run) {\n\treturn boxes.slice(run[0], run[1] + 1).map((b) => stripWs(b.text)).join(\"\");\n}\n/**\n* `children: [tokenHighlight(para, { ranges: [{ match: '$48,200', fill: cat.money }] }), para]`\n* \u2014 each range animates independently via '<id>/<rangeId>/fill|opacity|progress|scale'.\n*/\nfunction tokenHighlight(text, props) {\n\treturn new TokenHighlight({\n\t\t...props,\n\t\ttext\n\t});\n}\nfunction init(sig, v) {\n\tif (typeof v === \"function\") sig.bindSource(v);\n\telse if (v !== void 0) sig.set(v);\n\treturn sig;\n}\nfunction initVec(sig, v) {\n\tif (typeof v === \"function\") sig.bindSource(v);\n\telse if (v !== void 0) sig.set(v);\n\treturn sig;\n}\n//#endregion\n//#region src/fontUsage.ts\n/**\n* Scene \u2192 font-validation bridge (DESIGN.md \u00A73.6). Core owns the AssetRef,\n* FontRegistry, cmap reader, and the pure validation; this module owns the\n* node-walk (which only `scene` can do) and the I/O seam that loads a font\n* face's bytes so core stays DOM/Node-free.\n*\n* `collectTextUsages` walks every Text node and reads the FULL `.text()` (not\n* the reveal-masked prefix) \u2014 coverage is a property of the authored content,\n* independent of the playhead, so it stays out of the pure evaluate() path.\n*/\n/** Walk `scene` for Text nodes; one usage per node carrying its full text. */\nfunction collectTextUsages(scene) {\n\tconst out = [];\n\tconst visit = (node) => {\n\t\tif (node instanceof Text) {\n\t\t\tconst text = node.text();\n\t\t\tif (text) out.push({\n\t\t\t\tfamily: node.fontFamily,\n\t\t\t\ttext\n\t\t\t});\n\t\t}\n\t\tif (node instanceof Group) for (const child of node.children) visit(child);\n\t};\n\tvisit(scene.root);\n\treturn out;\n}\n/** The node-id of a track target ('<nodeId>/<prop.path>' \u2192 '<nodeId>'). */\nfunction nodeIdOf(target) {\n\tconst slash = target.indexOf(\"/\");\n\treturn slash >= 0 ? target.slice(0, slash) : target;\n}\n/**\n* Collect font usages from the POST-localize document's STRING tracks (FIX 3,\n* 0.14 canary). For every `'string'` track whose target node is a Text node,\n* emit one usage per distinct localized KEY VALUE under that node's fontFamily \u2014\n* so a localized CJK message bound to a Latin-only font surfaces as an uncovered\n* glyph. `collectTextUsages` only sees the authored BASE `node.text()`, which is\n* resolved BEFORE the localized string tracks bind, so it misses this.\n*/\nfunction collectLocalizedTextUsages(scene, doc) {\n\tconst out = [];\n\tfor (const tr of doc.tracks) {\n\t\tif (tr.type !== \"string\") continue;\n\t\tconst node = scene.nodes.get(nodeIdOf(tr.target));\n\t\tif (!(node instanceof Text)) continue;\n\t\tfor (const k of tr.keys) {\n\t\t\tconst value = k.value;\n\t\t\tif (typeof value === \"string\" && value) out.push({\n\t\t\t\tfamily: node.fontFamily,\n\t\t\t\ttext: value\n\t\t\t});\n\t\t}\n\t}\n\treturn out;\n}\n/**\n* Run \u00A73.6 font validation for a scene + its timeline document. Builds the\n* registry from `doc.assets`, loads each registered face's cmap via `loadBytes`\n* (once per family \u2014 the first face's URL is enough for coverage), and runs the\n* pure `validateFonts`. Strict mode throws FontValidationError; dev warns.\n*/\nasync function validateSceneFonts(scene, doc, loadBytes, options = {}) {\n\tconst mode = options.mode ?? \"dev\";\n\tconst registry = buildFontRegistry(doc.assets);\n\tconst usages = [...collectTextUsages(scene), ...options.extraUsages ?? []];\n\tconst wanted = /* @__PURE__ */ new Set();\n\tfor (const u of usages) if (registry.has(u.family)) for (const f of registry.fallbackChain(u.family)) wanted.add(f);\n\tconst cmaps = /* @__PURE__ */ new Map();\n\tfor (const family of wanted) {\n\t\tconst face = registry.resolveFace(family);\n\t\tif (!face) continue;\n\t\tconst bytes = await loadBytes(face.url);\n\t\tif (bytes) cmaps.set(family, parseCmap(bytes));\n\t}\n\treturn validateFonts(usages, registry, cmaps, mode, { ...options.osFamilies !== void 0 ? { osFamilies: options.osFamilies } : {} });\n}\n//#endregion\n//#region src/assets.ts\nvar ColdAssetError = class extends Error {\n\tassetId;\n\tdetail;\n\t/** Media time that was requested cold, when known \u2014 drives demand warming. */\n\tmediaT;\n\tconstructor(assetId, detail, mediaT) {\n\t\tsuper(`asset '${assetId}' not ready: ${detail}. evaluate() never awaits \u2014 warm assets before evaluating (\u00A72.5 readiness precondition)`);\n\t\tthis.name = \"ColdAssetError\";\n\t\tthis.assetId = assetId;\n\t\tthis.detail = detail;\n\t\tthis.mediaT = mediaT;\n\t}\n};\n//#endregion\n//#region src/shaderEffect.ts\n/**\n* ShaderEffect (\u00A73.7): a group whose rasterized subtree runs through a WGSL\n* pass. THIS FILE IS PURE DATA \u2014 the GPU runner lives in the browser-only\n* @glissade/effects-webgpu package; headless backends degrade per\n* caps.shaders (passthrough + warning by default). Uniforms are per-name\n* number signals registered as '<id>/u.<name>' track targets, so shader\n* params animate exactly like any other property.\n*/\nvar ShaderEffect = class extends Group {\n\twgsl;\n\tuniformSignals;\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.wgsl = props.wgsl;\n\t\tconst map = /* @__PURE__ */ new Map();\n\t\tfor (const [name, value] of Object.entries(props.uniforms ?? {})) {\n\t\t\tconst sig = signal(value);\n\t\t\tmap.set(name, sig);\n\t\t\tthis.registerTarget(`u.${name}`, sig, \"number\");\n\t\t}\n\t\tthis.uniformSignals = map;\n\t}\n\t/** The live uniform signal (throws on unknown names \u2014 typos fail loudly). */\n\tuniform(name) {\n\t\tconst sig = this.uniformSignals.get(name);\n\t\tif (!sig) throw new Error(`ShaderEffect has no uniform '${name}' (have: ${[...this.uniformSignals.keys()].join(\", \")})`);\n\t\treturn sig;\n\t}\n\tgroupShader() {\n\t\tconst uniforms = {};\n\t\tfor (const [name, sig] of this.uniformSignals) uniforms[name] = sig();\n\t\treturn {\n\t\t\twgsl: this.wgsl,\n\t\t\tuniforms\n\t\t};\n\t}\n};\nconst smoothstep = (u) => u * u * (3 - 2 * u);\nconst GAUSS_K = 2.4;\nconst GAUSS_NORM = 1 - Math.exp(-5.76 / 2);\nconst gaussianEase = (u) => (1 - Math.exp(-((u * GAUSS_K) ** 2) / 2)) / GAUSS_NORM;\n/**\n* Densify `stops` into a `smooth`/`gaussian` oklab ramp. The output spans the\n* input's offset range with GRADIENT_RAMP_STEPS uniformly-spaced stops; each\n* point eases its blend within the authored segment it falls in. Returns the\n* input unchanged for `linear` (or a single stop) \u2014 the canvas-native path.\n*/\nfunction densifyStops(stops, mode) {\n\tif (mode === \"linear\" || stops.length < 2) return stops;\n\tconst ease = mode === \"gaussian\" ? gaussianEase : smoothstep;\n\tconst o0 = stops[0].offset;\n\tconst span = stops[stops.length - 1].offset - o0;\n\tif (span <= 0) return stops;\n\tconst out = [];\n\tlet seg = 0;\n\tfor (let i = 0; i < 64; i++) {\n\t\tconst offset = o0 + span * (i / 63);\n\t\twhile (seg < stops.length - 2 && offset > stops[seg + 1].offset) seg++;\n\t\tconst a = stops[seg];\n\t\tconst b = stops[seg + 1];\n\t\tconst w = b.offset - a.offset;\n\t\tconst u = w > 0 ? Math.min(1, Math.max(0, (offset - a.offset) / w)) : 0;\n\t\tout.push({\n\t\t\toffset,\n\t\t\tcolor: lerpColor(a.color, b.color, ease(u))\n\t\t});\n\t}\n\treturn out;\n}\n//#endregion\n//#region src/meshGradient.ts\n/**\n* Mesh-gradient kernel (\u00A73 Paint, 0.12). A `mesh` Paint is N color points\n* scattered across the [0,1]\u00B2 fill rectangle, blended into ONE animatable fill\n* \u2014 the native replacement for the \"N blurred blobs\" aurora backdrop.\n*\n* THE DETERMINISM TENTPOLE: `@napi-rs/canvas` exposes NO SkSL RuntimeEffect /\n* makeShader, so there is no SkSL-vs-fallback fork \u2014 there is exactly ONE shared\n* CPU kernel that BOTH backends run. This file is that kernel, mirroring\n* `densifyStops` (gradient.ts): pinned named constants (`MESH_SIGMA`,\n* `MESH_SHEPARD_POWER`, `MESH_DOWNSCALE`) so neither backend picks its own, OKLab\n* blend reused bit-identically from `@glissade/core`, and integer `Uint8ClampedArray`\n* quantization so the buffer is reproducible run-to-run and byte-identical across\n* backends. Only the FINAL blit (clip + drawImage upscale) differs per backend \u2014\n* the source pixels are identical, which is what makes browser\u2194Skia SSIM \u2265 0.97.\n*\n* The blend is ONE deterministic Shepard inverse-distance kernel with a\n* colorspace knob: `smooth` = inverse-distance weighting in OKLab; `gaussian` =\n* a pinned-sigma gaussian weight (a softer, blurrier melt); `oklab` is an alias\n* for `smooth` (the blend space is always OKLab \u2014 the gradient path's contract).\n* NO triangulator (Gouraud/Delaunay/Coons are deferred).\n*/\n/**\n* The mesh raster resolution divisor. The mesh is computed at\n* ceil(bounds / MESH_DOWNSCALE) and the backend upscales it (clip + drawImage,\n* `imageSmoothingEnabled` pinned true) \u2014 a gradient is low-frequency, so the\n* downscale is invisible while cutting the per-pixel kernel cost ~16\u00D7. PINNED:\n* both backends compute the identical low-res ImageData.\n*/\nconst MESH_DOWNSCALE = 4;\n/** Inverse-distance exponent for `smooth`/`oklab` (Shepard's method). Higher =\n* sharper points; 2 is the classic IDW value and the pinned default. */\nconst MESH_SHEPARD_POWER = 2;\n/**\n* Gaussian weight sigma for `gaussian` mode, in NORMALIZED [0,1] mesh space\n* (a point's influence falls to ~60% one sigma away). Pinned so the melt width\n* is identical on both backends \u2014 the GAUSS_K precedent from gradient.ts.\n*/\nconst MESH_SIGMA = .32;\n/** Epsilon so a sample sitting exactly on a point doesn't divide by zero; small\n* enough to be a hard pin to that point's color. Pinned (folds into the bytes). */\nconst MESH_EPS = 1e-6;\n/** Cap the mesh raster so a pathological tiny-downscale \u00D7 huge-bounds can't OOM;\n* far above any real fill at /4. Pinned (it changes nothing for real meshes). */\nconst MESH_MAX_DIM = 1024;\n/**\n* Rasterize a mesh Paint into an RGBA `Uint8ClampedArray` of `w*h` pixels\n* (row-major, premultiply-free straight alpha). PURE function of\n* (mesh, w, h): identical inputs \u2192 byte-identical buffer, on any backend.\n*\n* `w`/`h` are the DOWNSCALED dimensions (the caller divides the fill bounds by\n* MESH_DOWNSCALE). Each output pixel's center maps to mesh space [0,1]\u00B2; the\n* blend is Shepard IDW (smooth/oklab) or a pinned-sigma gaussian (gaussian) of\n* the point colors in OKLab, with an optional `bg` color as a zero-weight floor\n* (a baseline so sparse meshes don't smear a single point across the whole rect).\n*/\nfunction rasterizeMesh(mesh, w, h) {\n\tconst out = new Uint8ClampedArray(Math.max(1, w) * Math.max(1, h) * 4);\n\tconst pts = mesh.points.map((p) => ({\n\t\tu: p.pos[0],\n\t\tv: p.pos[1],\n\t\tlab: rgbaToOklab(parseColor(p.color))\n\t}));\n\tconst bg = mesh.bg !== void 0 ? rgbaToOklab(parseColor(mesh.bg)) : null;\n\tconst gaussian = mesh.interpolation === \"gaussian\";\n\tconst twoSigmaSq = 2 * MESH_SIGMA * MESH_SIGMA;\n\tfor (let y = 0; y < h; y++) {\n\t\tconst v = h > 1 ? (y + .5) / h : .5;\n\t\tfor (let x = 0; x < w; x++) {\n\t\t\tconst u = w > 1 ? (x + .5) / w : .5;\n\t\t\tlet wsum = 0;\n\t\t\tlet L = 0;\n\t\t\tlet A = 0;\n\t\t\tlet B = 0;\n\t\t\tlet alpha = 0;\n\t\t\tif (bg) {\n\t\t\t\twsum = 1;\n\t\t\t\tL = bg.L;\n\t\t\t\tA = bg.a;\n\t\t\t\tB = bg.b;\n\t\t\t\talpha = bg.alpha;\n\t\t\t}\n\t\t\tlet pinned = false;\n\t\t\tfor (let i = 0; i < pts.length; i++) {\n\t\t\t\tconst p = pts[i];\n\t\t\t\tconst du = u - p.u;\n\t\t\t\tconst dv = v - p.v;\n\t\t\t\tconst d2 = du * du + dv * dv;\n\t\t\t\tif (d2 <= MESH_EPS * MESH_EPS) {\n\t\t\t\t\tL = p.lab.L;\n\t\t\t\t\tA = p.lab.a;\n\t\t\t\t\tB = p.lab.b;\n\t\t\t\t\talpha = p.lab.alpha;\n\t\t\t\t\tpinned = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tlet weight;\n\t\t\t\tif (gaussian) weight = Math.exp(-d2 / twoSigmaSq);\n\t\t\t\telse weight = 1 / d2;\n\t\t\t\twsum += weight;\n\t\t\t\tL += weight * p.lab.L;\n\t\t\t\tA += weight * p.lab.a;\n\t\t\t\tB += weight * p.lab.b;\n\t\t\t\talpha += weight * p.lab.alpha;\n\t\t\t}\n\t\t\tlet rgba;\n\t\t\tif (pinned) rgba = oklabToRgba({\n\t\t\t\tL,\n\t\t\t\ta: A,\n\t\t\t\tb: B,\n\t\t\t\talpha\n\t\t\t});\n\t\t\telse if (wsum > 0) {\n\t\t\t\tconst inv = 1 / wsum;\n\t\t\t\trgba = oklabToRgba({\n\t\t\t\t\tL: L * inv,\n\t\t\t\t\ta: A * inv,\n\t\t\t\t\tb: B * inv,\n\t\t\t\t\talpha: alpha * inv\n\t\t\t\t});\n\t\t\t} else rgba = {\n\t\t\t\tr: 0,\n\t\t\t\tg: 0,\n\t\t\t\tb: 0,\n\t\t\t\ta: 0\n\t\t\t};\n\t\t\tconst o = (y * w + x) * 4;\n\t\t\tout[o] = rgba.r;\n\t\t\tout[o + 1] = rgba.g;\n\t\t\tout[o + 2] = rgba.b;\n\t\t\tout[o + 3] = Math.round(rgba.a * 255);\n\t\t}\n\t}\n\treturn out;\n}\n/** Downscaled raster dimensions for a fill of `bw\u00D7bh` local px (\u22651, capped). */\nfunction meshRasterSize(bw, bh) {\n\treturn {\n\t\tw: Math.min(MESH_MAX_DIM, Math.max(1, Math.ceil(Math.abs(bw) / 4))),\n\t\th: Math.min(MESH_MAX_DIM, Math.max(1, Math.ceil(Math.abs(bh) / 4)))\n\t};\n}\n//#endregion\n//#region src/raster2d.ts\n/**\n* The shared DisplayList interpreter (\u00A73.4): one command walk over the\n* canvas-2d-shaped API, generic over the host's canvas/path/drawable types.\n* backend-canvas2d (DOM) and backend-skia (@napi-rs) instantiate it with\n* four-line adapters, so the twin rasterizers structurally cannot drift \u2014\n* the golden + SSIM suites verify the refactor preserved every byte.\n*/\n/** Stroke/text mesh paint has no clippable fill region \u2014 pick a deterministic\n* representative solid (bg, else the first point) so it renders without a crash. */\nlet warnedMeshStroke = false;\nfunction meshRepresentativeColor(paint) {\n\tif (!warnedMeshStroke) {\n\t\twarnedMeshStroke = true;\n\t\temitDevWarning(\"mesh Paint on a stroke/text resolves to a representative solid color (mesh fill is supported only on filled paths, \u00A73 Paint) \u2014 use a fillPath for the mesh gradient\");\n\t}\n\treturn paint.bg ?? paint.points[0]?.color ?? \"#00000000\";\n}\nfunction resolveFill(ctx, paint, bounds) {\n\tif (paint.kind === \"color\") return paint.color;\n\tif (paint.kind === \"mesh\") return meshRepresentativeColor(paint);\n\tlet g;\n\tif (paint.kind === \"radial\") {\n\t\tconst cx = paint.center ? paint.center[0] : bounds ? (bounds.minX + bounds.maxX) / 2 : 0;\n\t\tconst cy = paint.center ? paint.center[1] : bounds ? (bounds.minY + bounds.maxY) / 2 : 0;\n\t\tconst r = paint.radius !== void 0 ? paint.radius : bounds ? Math.hypot(bounds.maxX - bounds.minX, bounds.maxY - bounds.minY) / 2 : 0;\n\t\tg = ctx.createRadialGradient(cx, cy, 0, cx, cy, r);\n\t} else {\n\t\tconst fx = paint.from ? paint.from[0] : bounds ? (bounds.minX + bounds.maxX) / 2 : 0;\n\t\tconst fy = paint.from ? paint.from[1] : bounds ? bounds.minY : 0;\n\t\tconst tx = paint.to ? paint.to[0] : bounds ? (bounds.minX + bounds.maxX) / 2 : 0;\n\t\tconst ty = paint.to ? paint.to[1] : bounds ? bounds.maxY : 0;\n\t\tg = ctx.createLinearGradient(fx, fy, tx, ty);\n\t}\n\tconst stops = paint.interpolation ? densifyStops(paint.stops, paint.interpolation) : paint.stops;\n\tfor (const s of stops) g.addColorStop(s.offset, s.color);\n\treturn g;\n}\nfunction fontString(font) {\n\treturn `${font.style === \"italic\" ? \"italic \" : \"\"}${font.weight !== void 0 && font.weight !== 400 ? `${font.weight} ` : \"\"}${font.size}px ${font.family}`;\n}\n/** Hardcoded LRU cap (\u00A73.5). Evicted canvases return to the raster pool. */\nconst RASTER_CACHE_CAP = 16;\n/**\n* Round a device-transform component into the cache key. The layer bakes the\n* parent CTM into its pixels, so two frames that share a cacheKey but differ in\n* device transform are NOT interchangeable \u2014 they must key separately. Rounding\n* to 1e-4 collapses float jitter from matrix re-multiplication of an unchanged\n* transform (so a genuinely static parent HITs) while keeping any visible move\n* to a distinct key (so a stale-CTM bitmap can never blit). The float is taken\n* verbatim into the string \u2014 no lossy truncation that could alias two CTMs.\n*/\nfunction transformKey(m) {\n\tconst q = (v) => Object.is(v, -0) ? \"0\" : String(Math.round(v * 1e4) / 1e4);\n\treturn `${q(m[0])},${q(m[1])},${q(m[2])},${q(m[3])},${q(m[4])},${q(m[5])}`;\n}\n/**\n* How far a filter chain can paint beyond its input (device px). Each stage\n* feeds the next, so outsets ADD. Gaussian reach: Skia truncates at 3\u03C3 and\n* the CSS blur/shadow radii are \u2265 \u03C3, so 3\u00D7 the radius over-covers either\n* convention. Color-only filters map transparent \u2192 transparent: zero outset.\n*/\nfunction filterOutset(filters) {\n\tlet total = 0;\n\tfor (const f of filters ?? []) if (f.kind === \"blur\") total += 3 * f.radius;\n\telse if (f.kind === \"drop-shadow\") total += Math.max(Math.abs(f.dx), Math.abs(f.dy)) + 3 * f.blur;\n\treturn total;\n}\nfunction growBounds(b, x, y) {\n\tif (!b) return {\n\t\tminX: x,\n\t\tminY: y,\n\t\tmaxX: x,\n\t\tmaxY: y\n\t};\n\tif (x < b.minX) b.minX = x;\n\tif (y < b.minY) b.minY = y;\n\tif (x > b.maxX) b.maxX = x;\n\tif (y > b.maxY) b.maxY = y;\n\treturn b;\n}\n/** Local-space rect (already outset) \u2192 device-space box under m. */\nfunction accumulateRect(layer, m, x0, y0, x1, y1) {\n\tfor (const [x, y] of [\n\t\t[x0, y0],\n\t\t[x1, y0],\n\t\t[x0, y1],\n\t\t[x1, y1]\n\t]) layer.bounds = growBounds(layer.bounds, m[0] * x + m[2] * y + m[4], m[1] * x + m[3] * y + m[5]);\n}\n/** Control-point box of a path \u2014 curves and rotated ellipses stay inside it. */\nfunction segsBounds(segs) {\n\tlet b = null;\n\tconst pt = (x, y) => {\n\t\tb = growBounds(b, x, y);\n\t};\n\tfor (const seg of segs) switch (seg[0]) {\n\t\tcase \"M\":\n\t\tcase \"L\":\n\t\t\tpt(seg[1], seg[2]);\n\t\t\tbreak;\n\t\tcase \"C\":\n\t\t\tpt(seg[1], seg[2]);\n\t\t\tpt(seg[3], seg[4]);\n\t\t\tpt(seg[5], seg[6]);\n\t\t\tbreak;\n\t\tcase \"Q\":\n\t\t\tpt(seg[1], seg[2]);\n\t\t\tpt(seg[3], seg[4]);\n\t\t\tbreak;\n\t\tcase \"E\": {\n\t\t\tconst r = Math.max(seg[3], seg[4]);\n\t\t\tpt(seg[1] - r, seg[2] - r);\n\t\t\tpt(seg[1] + r, seg[2] + r);\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn b;\n}\nvar Raster2D = class {\n\thost;\n\tshaderCaps;\n\tpool = [];\n\tpathCache = /* @__PURE__ */ new WeakMap();\n\tpathBoundsCache = /* @__PURE__ */ new WeakMap();\n\timages = /* @__PURE__ */ new Map();\n\tvideos = /* @__PURE__ */ new Map();\n\twarnedShaders = false;\n\t/**\n\t* \u00A73.5 bitmap LRU: device-transform-qualified cacheKey \u2192 rasterized layer.\n\t* A Map preserves insertion order, so the oldest key is `keys().next()` \u2014\n\t* touch-on-hit by delete+set keeps it a true LRU. Disabled (stays empty) when\n\t* `cacheEnabled` is false, so cache-cold === cache-warm is testable directly.\n\t*/\n\trasterCache = /* @__PURE__ */ new Map();\n\tcacheEnabled;\n\tconstructor(host, shaderCaps = \"warn\", cacheEnabled = (globalThis.process?.env?.[\"RASTER_CACHE\"] ?? \"1\") !== \"0\") {\n\t\tthis.host = host;\n\t\tthis.shaderCaps = shaderCaps;\n\t\tthis.cacheEnabled = cacheEnabled;\n\t}\n\t/** Register a decoded still (kind 'image' assets). */\n\tsetImageAsset(assetId, image) {\n\t\tthis.images.set(assetId, image);\n\t}\n\t/** Register a warmed-on-demand video source (kind 'video' assets, \u00A73.8). */\n\tsetVideoAsset(assetId, source) {\n\t\tthis.videos.set(assetId, source);\n\t}\n\tdispose() {\n\t\tthis.pool.length = 0;\n\t\tthis.rasterCache.clear();\n\t}\n\tresolveDrawable(res, id) {\n\t\tif (res.kind === \"image\") {\n\t\t\tconst img = this.images.get(res.assetId);\n\t\t\tif (!img) throw new ColdAssetError(res.assetId, \"no decoded image registered\");\n\t\t\treturn img;\n\t\t}\n\t\tif (res.kind === \"videoFrame\") {\n\t\t\tconst source = this.videos.get(res.assetId);\n\t\t\tif (!source) throw new ColdAssetError(res.assetId, \"no VideoFrameSource registered\", res.mediaT);\n\t\t\ttry {\n\t\t\t\treturn source.getFrameSync(res.mediaT);\n\t\t\t} catch (e) {\n\t\t\t\tif (e instanceof ColdAssetError) throw new ColdAssetError(res.assetId, e.detail, res.mediaT);\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t}\n\t\tthrow new Error(`resource ${id} is not drawable`);\n\t}\n\tpath(resources, id) {\n\t\tconst res = resources[id];\n\t\tif (!res || res.kind !== \"path\") throw new Error(`resource ${id} is not a path`);\n\t\tlet p = this.pathCache.get(res);\n\t\tif (!p) {\n\t\t\tp = this.buildPath(res.segs);\n\t\t\tthis.pathCache.set(res, p);\n\t\t}\n\t\treturn p;\n\t}\n\tpathBounds(resources, id) {\n\t\tconst res = resources[id];\n\t\tif (!res || res.kind !== \"path\") return null;\n\t\tif (!this.pathBoundsCache.has(res)) this.pathBoundsCache.set(res, segsBounds(res.segs));\n\t\treturn this.pathBoundsCache.get(res) ?? null;\n\t}\n\tbuildPath(segs) {\n\t\tconst p = this.host.newPath();\n\t\tfor (const seg of segs) switch (seg[0]) {\n\t\t\tcase \"M\":\n\t\t\t\tp.moveTo(seg[1], seg[2]);\n\t\t\t\tbreak;\n\t\t\tcase \"L\":\n\t\t\t\tp.lineTo(seg[1], seg[2]);\n\t\t\t\tbreak;\n\t\t\tcase \"C\":\n\t\t\t\tp.bezierCurveTo(seg[1], seg[2], seg[3], seg[4], seg[5], seg[6]);\n\t\t\t\tbreak;\n\t\t\tcase \"Q\":\n\t\t\t\tp.quadraticCurveTo(seg[1], seg[2], seg[3], seg[4]);\n\t\t\t\tbreak;\n\t\t\tcase \"E\":\n\t\t\t\tp.ellipse(seg[1], seg[2], seg[3], seg[4], seg[5], seg[6], seg[7]);\n\t\t\t\tbreak;\n\t\t\tcase \"Z\":\n\t\t\t\tp.closePath();\n\t\t\t\tbreak;\n\t\t}\n\t\treturn p;\n\t}\n\tacquire(w, h) {\n\t\tconst pooled = this.pool.pop();\n\t\tif (pooled) {\n\t\t\tif (pooled.width !== w) pooled.width = w;\n\t\t\tif (pooled.height !== h) pooled.height = h;\n\t\t\treturn pooled;\n\t\t}\n\t\treturn this.host.createCanvas(w, h);\n\t}\n\trelease(canvas) {\n\t\tif (this.pool.length < 8) this.pool.push(canvas);\n\t}\n\t/**\n\t* \u00A73.5 LRU insert with touch-on-hit + eviction-to-pool. Storing under a key\n\t* that already holds a (different) canvas releases the old one first.\n\t*/\n\tcacheStore(key, entry) {\n\t\tconst prior = this.rasterCache.get(key);\n\t\tif (prior) {\n\t\t\tthis.rasterCache.delete(key);\n\t\t\tif (prior.canvas !== entry.canvas) this.release(prior.canvas);\n\t\t}\n\t\tthis.rasterCache.set(key, entry);\n\t\twhile (this.rasterCache.size > RASTER_CACHE_CAP) {\n\t\t\tconst oldest = this.rasterCache.keys().next().value;\n\t\t\tif (oldest === void 0) break;\n\t\t\tconst evicted = this.rasterCache.get(oldest);\n\t\t\tthis.rasterCache.delete(oldest);\n\t\t\tthis.release(evicted.canvas);\n\t\t}\n\t}\n\tcacheTouch(key) {\n\t\tconst hit = this.rasterCache.get(key);\n\t\tif (hit) {\n\t\t\tthis.rasterCache.delete(key);\n\t\t\tthis.rasterCache.set(key, hit);\n\t\t}\n\t\treturn hit;\n\t}\n\t/**\n\t* \u00A73 mesh Paint blit (the spike-chosen mechanism: clip + drawImage, NOT\n\t* createPattern \u2014 the pattern path leaks edge-AA/alpha contamination and an\n\t* uncontrolled resample filter across backends, breaking SSIM; clip+drawImage\n\t* is fully controlled and clips to the actual path, not just its bounds box).\n\t*\n\t* The mesh is rasterized by the SHARED kernel into a fixed downscaled buffer\n\t* (identical bytes on both backends), written into an offscreen tile, then\n\t* upscaled into the path-local bounds with `imageSmoothingEnabled` PINNED true.\n\t* The clip is the real fill path, so a circle/star fills correctly. Only this\n\t* final blit's AA differs per backend \u2014 the source ImageData is byte-identical,\n\t* which is what makes the golden byte-exact and browser\u2194Skia SSIM \u2265 0.97.\n\t*/\n\tfillMesh(ctx, path, paint, bounds) {\n\t\tconst bw = bounds.maxX - bounds.minX;\n\t\tconst bh = bounds.maxY - bounds.minY;\n\t\tif (bw <= 0 || bh <= 0) return;\n\t\tconst { w, h } = meshRasterSize(bw, bh);\n\t\tconst buf = rasterizeMesh(paint, w, h);\n\t\tconst tile = this.acquire(w, h);\n\t\tconst tileCtx = this.host.context(tile);\n\t\tconst img = tileCtx.createImageData(w, h);\n\t\timg.data.set(buf);\n\t\ttileCtx.putImageData(img, 0, 0);\n\t\tctx.save();\n\t\tctx.clip(path, \"nonzero\");\n\t\tctx.imageSmoothingEnabled = true;\n\t\tctx.drawImage(tile, 0, 0, w, h, bounds.minX, bounds.minY, bw, bh);\n\t\tctx.restore();\n\t\tthis.release(tile);\n\t}\n\t/**\n\t* \u00A73.4/\u00A73.5 composite of a finished group layer onto its parent \u2014 the EXACT\n\t* same save/resetTransform/clip/globalAlpha/filter/blend/drawImage sequence\n\t* for both the freshly-rasterized miss path and a cache-blit hit, so a HIT is\n\t* byte-identical to a MISS. `bounds`/`unbounded` come from the layer (miss) or\n\t* the cache entry (hit); the composite params (opacity/blend/filters) always\n\t* come from the LIVE pushGroup command, never the cache.\n\t*/\n\tcomposite(parent, parentLayer, drawable, bounds, unbounded, shaderReplaced, opacity, blend, filter, filters, w, h) {\n\t\tconst hasFilter = filter !== void 0 && filter !== \"none\";\n\t\tconst outset = hasFilter ? filterOutset(filters) : 0;\n\t\tif (unbounded || blend !== \"source-over\") parentLayer.unbounded = true;\n\t\telse if (bounds) accumulateRect(parentLayer, IDENTITY, bounds.minX - outset, bounds.minY - outset, bounds.maxX + outset, bounds.maxY + outset);\n\t\tconst clippable = hasFilter && !shaderReplaced && !unbounded && blend === \"source-over\";\n\t\tif (clippable && bounds === null) return;\n\t\tparent.save();\n\t\tparent.resetTransform();\n\t\tif (clippable && bounds) {\n\t\t\tconst x0 = Math.max(0, Math.floor(bounds.minX - outset));\n\t\t\tconst y0 = Math.max(0, Math.floor(bounds.minY - outset));\n\t\t\tconst x1 = Math.min(w, Math.ceil(bounds.maxX + outset));\n\t\t\tconst y1 = Math.min(h, Math.ceil(bounds.maxY + outset));\n\t\t\tif (x0 >= x1 || y0 >= y1) {\n\t\t\t\tparent.restore();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst clip = this.host.newPath();\n\t\t\tclip.moveTo(x0, y0);\n\t\t\tclip.lineTo(x1, y0);\n\t\t\tclip.lineTo(x1, y1);\n\t\t\tclip.lineTo(x0, y1);\n\t\t\tclip.closePath();\n\t\t\tparent.clip(clip, \"nonzero\");\n\t\t}\n\t\tparent.globalAlpha = opacity;\n\t\tif (hasFilter) parent.filter = filter;\n\t\tparent.globalCompositeOperation = blend;\n\t\tparent.drawImage(drawable, 0, 0);\n\t\tparent.restore();\n\t}\n\t/** The command walk \u2014 order and operations identical to the pre-extraction twins. */\n\trender(target, list) {\n\t\tconst { w, h } = list.size;\n\t\tif (target.width !== w) target.width = w;\n\t\tif (target.height !== h) target.height = h;\n\t\tconst base = this.host.context(target);\n\t\tbase.resetTransform();\n\t\tbase.clearRect(0, 0, w, h);\n\t\tconst layers = [{\n\t\t\tctx: base,\n\t\t\tcanvas: null,\n\t\t\topacity: 1,\n\t\t\tblend: \"source-over\",\n\t\t\tbounds: null,\n\t\t\tunbounded: false\n\t\t}];\n\t\tconst ctxOf = () => layers[layers.length - 1].ctx;\n\t\tconst top = () => layers[layers.length - 1];\n\t\tlet mat = IDENTITY;\n\t\tconst matStack = [];\n\t\tconst commands = list.commands;\n\t\tfor (let ci = 0; ci < commands.length; ci++) {\n\t\t\tconst cmd = commands[ci];\n\t\t\tswitch (cmd.op) {\n\t\t\t\tcase \"save\":\n\t\t\t\t\tmatStack.push(mat);\n\t\t\t\t\tctxOf().save();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"restore\":\n\t\t\t\t\tmat = matStack.pop() ?? mat;\n\t\t\t\t\tctxOf().restore();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"transform\":\n\t\t\t\t\tmat = multiply(mat, cmd.m);\n\t\t\t\t\tctxOf().transform(cmd.m[0], cmd.m[1], cmd.m[2], cmd.m[3], cmd.m[4], cmd.m[5]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"clip\":\n\t\t\t\t\tctxOf().clip(this.path(list.resources, cmd.path), cmd.rule ?? \"nonzero\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"fillPath\": {\n\t\t\t\t\tconst ctx = ctxOf();\n\t\t\t\t\tconst b = this.pathBounds(list.resources, cmd.path);\n\t\t\t\t\tif (cmd.paint.kind === \"mesh\" && b) this.fillMesh(ctx, this.path(list.resources, cmd.path), cmd.paint, b);\n\t\t\t\t\telse {\n\t\t\t\t\t\tctx.fillStyle = resolveFill(ctx, cmd.paint, b);\n\t\t\t\t\t\tctx.fill(this.path(list.resources, cmd.path));\n\t\t\t\t\t}\n\t\t\t\t\tif (b) accumulateRect(top(), mat, b.minX, b.minY, b.maxX, b.maxY);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"strokePath\": {\n\t\t\t\t\tconst ctx = ctxOf();\n\t\t\t\t\tconst sb = this.pathBounds(list.resources, cmd.path);\n\t\t\t\t\tctx.strokeStyle = resolveFill(ctx, cmd.paint, sb);\n\t\t\t\t\tctx.lineWidth = cmd.stroke.width;\n\t\t\t\t\tctx.lineCap = cmd.stroke.cap ?? \"butt\";\n\t\t\t\t\tctx.lineJoin = cmd.stroke.join ?? \"miter\";\n\t\t\t\t\tif (cmd.stroke.dash) {\n\t\t\t\t\t\tctx.setLineDash(cmd.stroke.dash);\n\t\t\t\t\t\tctx.lineDashOffset = cmd.stroke.dashOffset ?? 0;\n\t\t\t\t\t}\n\t\t\t\t\tctx.stroke(this.path(list.resources, cmd.path));\n\t\t\t\t\tif (cmd.stroke.dash) {\n\t\t\t\t\t\tctx.setLineDash([]);\n\t\t\t\t\t\tctx.lineDashOffset = 0;\n\t\t\t\t\t}\n\t\t\t\t\tif (sb) {\n\t\t\t\t\t\tconst o = cmd.stroke.width * ((cmd.stroke.join ?? \"miter\") === \"miter\" ? 5 : 1);\n\t\t\t\t\t\taccumulateRect(top(), mat, sb.minX - o, sb.minY - o, sb.maxX + o, sb.maxY + o);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"fillText\": {\n\t\t\t\t\tconst ctx = ctxOf();\n\t\t\t\t\tctx.font = fontString(cmd.font);\n\t\t\t\t\tctx.fillStyle = resolveFill(ctx, cmd.paint, null);\n\t\t\t\t\tctx.textBaseline = \"alphabetic\";\n\t\t\t\t\tctx.textAlign = cmd.align ?? \"left\";\n\t\t\t\t\tctx.fillText(cmd.text, cmd.x, cmd.y);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst width = ctx.measureText(cmd.text).width;\n\t\t\t\t\t\tconst align = cmd.align ?? \"left\";\n\t\t\t\t\t\tconst x0 = align === \"center\" ? cmd.x - width / 2 : align === \"right\" ? cmd.x - width : cmd.x;\n\t\t\t\t\t\tconst m = cmd.font.size;\n\t\t\t\t\t\taccumulateRect(top(), mat, x0 - m, cmd.y - 1.5 * m, x0 + width + m, cmd.y + .75 * m);\n\t\t\t\t\t} catch {\n\t\t\t\t\t\ttop().unbounded = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"drawImage\": {\n\t\t\t\t\tconst res = list.resources[cmd.image];\n\t\t\t\t\tif (!res) throw new Error(`drawImage references missing resource ${cmd.image}`);\n\t\t\t\t\tconst drawable = this.resolveDrawable(res, cmd.image);\n\t\t\t\t\tconst ctx = ctxOf();\n\t\t\t\t\tif (cmd.smoothing !== void 0) ctx.imageSmoothingEnabled = cmd.smoothing;\n\t\t\t\t\tconst { x, y, w: dw, h: dh } = cmd.dst;\n\t\t\t\t\tif (cmd.src) ctx.drawImage(drawable, cmd.src.x, cmd.src.y, cmd.src.w, cmd.src.h, x, y, dw, dh);\n\t\t\t\t\telse ctx.drawImage(drawable, x, y, dw, dh);\n\t\t\t\t\taccumulateRect(top(), mat, x, y, x + dw, y + dh);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"pushGroup\": {\n\t\t\t\t\tconst parent = ctxOf();\n\t\t\t\t\tconst lruKey = this.cacheEnabled && cmd.cacheKey !== void 0 && cmd.shader === void 0 ? `${cmd.cacheKey}@${transformKey(mat)}` : void 0;\n\t\t\t\t\tif (lruKey !== void 0) {\n\t\t\t\t\t\tconst hit = this.cacheTouch(lruKey);\n\t\t\t\t\t\tif (hit) {\n\t\t\t\t\t\t\tthis.composite(parent, top(), hit.canvas, hit.bounds, hit.unbounded, false, cmd.opacity, cmd.blend, filtersToCanvasFilter(cmd.filters), cmd.filters, w, h);\n\t\t\t\t\t\t\tlet depth = 1;\n\t\t\t\t\t\t\twhile (depth > 0 && ++ci < commands.length) {\n\t\t\t\t\t\t\t\tconst c = commands[ci];\n\t\t\t\t\t\t\t\tif (c.op === \"pushGroup\") depth++;\n\t\t\t\t\t\t\t\telse if (c.op === \"popGroup\") depth--;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst layerCanvas = this.acquire(w, h);\n\t\t\t\t\tconst layerCtx = this.host.context(layerCanvas);\n\t\t\t\t\tlayerCtx.resetTransform();\n\t\t\t\t\tlayerCtx.clearRect(0, 0, w, h);\n\t\t\t\t\tlayerCtx.setTransform(parent.getTransform());\n\t\t\t\t\tlayers.push({\n\t\t\t\t\t\tctx: layerCtx,\n\t\t\t\t\t\tcanvas: layerCanvas,\n\t\t\t\t\t\topacity: cmd.opacity,\n\t\t\t\t\t\tblend: cmd.blend,\n\t\t\t\t\t\tfilter: filtersToCanvasFilter(cmd.filters),\n\t\t\t\t\t\tfilters: cmd.filters,\n\t\t\t\t\t\t...cmd.shader !== void 0 ? { shader: cmd.shader } : {},\n\t\t\t\t\t\tbounds: null,\n\t\t\t\t\t\tunbounded: false,\n\t\t\t\t\t\t...lruKey !== void 0 ? { cacheStoreKey: lruKey } : {}\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"popGroup\": {\n\t\t\t\t\tconst layer = layers.pop();\n\t\t\t\t\tif (!layer || layer.canvas === null) throw new Error(\"popGroup without matching pushGroup\");\n\t\t\t\t\tconst parent = ctxOf();\n\t\t\t\t\tlet drawable = layer.canvas;\n\t\t\t\t\tlet shaderReplaced = false;\n\t\t\t\t\tif (layer.shader !== void 0) {\n\t\t\t\t\t\tconst replaced = this.host.applyShader?.(layer.canvas, layer.shader, w, h) ?? null;\n\t\t\t\t\t\tif (replaced !== null) {\n\t\t\t\t\t\t\tdrawable = replaced;\n\t\t\t\t\t\t\tshaderReplaced = true;\n\t\t\t\t\t\t\tlayer.bounds = {\n\t\t\t\t\t\t\t\tminX: 0,\n\t\t\t\t\t\t\t\tminY: 0,\n\t\t\t\t\t\t\t\tmaxX: w,\n\t\t\t\t\t\t\t\tmaxY: h\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tlayer.unbounded = false;\n\t\t\t\t\t\t} else if (this.shaderCaps === \"error\") throw new Error(\"a ShaderEffect reached a backend without a shader runner (\u00A73.7) \u2014 load @glissade/effects-webgpu in the browser, or accept passthrough with caps.shaders: warn\");\n\t\t\t\t\t\telse if (!this.warnedShaders) {\n\t\t\t\t\t\t\tthis.warnedShaders = true;\n\t\t\t\t\t\t\temitDevWarning(\"ShaderEffect pass skipped: no shader runner here (headless or webgpu-less browser) \u2014 subtree composites unfiltered (\u00A73.7 caps.shaders)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.composite(parent, top(), drawable, layer.bounds, layer.unbounded, shaderReplaced, layer.opacity, layer.blend, layer.filter, layer.filters, w, h);\n\t\t\t\t\tif (layer.cacheStoreKey !== void 0 && !shaderReplaced) this.cacheStore(layer.cacheStoreKey, {\n\t\t\t\t\t\tcanvas: layer.canvas,\n\t\t\t\t\t\tbounds: layer.bounds,\n\t\t\t\t\t\tunbounded: layer.unbounded\n\t\t\t\t\t});\n\t\t\t\t\telse this.release(layer.canvas);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (layers.length !== 1) throw new Error(\"unbalanced pushGroup/popGroup in DisplayList\");\n\t}\n};\n//#endregion\nexport { ALL_FILTER_KINDS, Circle, ColdAssetError, Custom, DL_SNAPSHOT_VERSION, DeterminismViolationError, DlSnapshotError, DuplicateNodeIdError, EachError, FilterValidationError, FollowPath, Group, Highlight, IDENTITY, ImageNode as Image, ImageNode, LayoutEngineMissingError, MEASURE_QUANTUM_PX, MESH_DOWNSCALE, MESH_SHEPARD_POWER, MESH_SIGMA, NODE_TAXONOMY, Node, Path, Raster2D, Rect, ReservedNodeIdError, ShaderEffect, SketchValidationError, Text, TextCursor, TokenHighlight, TokenMatchError, Video, applyToPoint, arcLength, auditCacheCold, bindScene, breakLines, coercePathData, collapseReplacer, collectLocalizedTextUsages, collectTextUsages, createDisplayListBuilder, createScene, diffDisplayLists, drawOn, drawOnEach, each, estimatingMeasurer, evaluate, filtersToCanvasFilter, flatten, followPath, fontString, formatDisplayDiff, fromTRS, getLayoutEngine, glow, hachureLines, highlight, invert, matEquals, matchTokenRun, meshRasterSize, motionPath, multiply, parseDisplaySnapshot, pathFromSegs, pathLength, pointAtLength, quantize, rasterizeMesh, requireLayoutEngine, resolveAnchor, resolveSketch, revealSchedule, roughen, roundedRectSegs, segmentGraphemes, segmentWords, serializeDisplayList, setDefaultMeasurer, setLayoutEngine, sketchStrokes, textCursor, tokenHighlight, typewriter, validateFilters, validateHachure, validateSceneFonts, validateSketch, withDeterminismGuards };\n", "import { ALL_FILTER_KINDS, Raster2D, fontString } from \"@glissade/scene\";\n//#region src/index.ts\n/**\n* @glissade/backend-canvas2d \u2014 rasterize DisplayLists onto Canvas 2D\n* (DESIGN.md \u00A73.4\u2013\u00A73.5). A thin adapter over the shared Raster2D interpreter\n* in @glissade/scene: this file owns only the DOM canvas flavor (context\n* acquisition, OffscreenCanvas layers, Path2D) and text measurement.\n*/\nlet shaderRunner = null;\nfunction setShaderRunner(runner) {\n\tshaderRunner = runner;\n}\n/**\n* Allocate an offscreen layer (hit only by group opacity<1 / blend / filter /\n* mesh). Prefer `OffscreenCanvas`, but fall back to a detached `<canvas>` where\n* it's unavailable \u2014 so the single-file `@glissade/browser` bundle survives\n* environments without `OffscreenCanvas`. Inert where `OffscreenCanvas` exists\n* (every test + the Skia twin, which never reaches this), so it moves no golden.\n*/\nfunction createLayerCanvas(w, h) {\n\tif (typeof OffscreenCanvas !== \"undefined\") return new OffscreenCanvas(w, h);\n\tconst canvas = document.createElement(\"canvas\");\n\tcanvas.width = w;\n\tcanvas.height = h;\n\treturn canvas;\n}\n/** Largest canvas dimension browsers reliably allocate. */\nconst MAX_TEXTURE = 16384;\nvar Canvas2DBackend = class {\n\ttarget;\n\traster;\n\t/** All document filters; shaders only when an effects-webgpu runner is registered (\u00A73.7). */\n\tget caps() {\n\t\treturn {\n\t\t\tfilters: ALL_FILTER_KINDS,\n\t\t\tshaders: shaderRunner !== null,\n\t\t\tmaxTextureSize: MAX_TEXTURE\n\t\t};\n\t}\n\tconstructor(target, opts = {}) {\n\t\tthis.target = target;\n\t\tthis.raster = new Raster2D({\n\t\t\tcontext: (c) => this.context(c),\n\t\t\tcreateCanvas: (w, h) => createLayerCanvas(w, h),\n\t\t\tnewPath: () => new Path2D(),\n\t\t\tapplyShader: (layer, shader, w, h) => shaderRunner?.apply(layer, shader, w, h) ?? null\n\t\t}, opts.shaderCaps ?? \"warn\");\n\t}\n\t/** Register a decoded still (kind 'image' assets). */\n\tsetImageAsset(assetId, image) {\n\t\tthis.raster.setImageAsset(assetId, image);\n\t}\n\t/** Register a warmed-on-demand video source (kind 'video' assets, \u00A73.8). */\n\tsetVideoAsset(assetId, source) {\n\t\tthis.raster.setVideoAsset(assetId, source);\n\t}\n\tmeasureText(text, font) {\n\t\tconst ctx = this.context(this.target);\n\t\tctx.save();\n\t\tctx.font = fontString(font);\n\t\tconst m = ctx.measureText(text);\n\t\tctx.restore();\n\t\treturn {\n\t\t\twidth: m.width,\n\t\t\tascent: m.actualBoundingBoxAscent,\n\t\t\tdescent: m.actualBoundingBoxDescent\n\t\t};\n\t}\n\trender(list) {\n\t\tthis.raster.render(this.target, list);\n\t}\n\tasync readPixels() {\n\t\treturn this.context(this.target).getImageData(0, 0, this.target.width, this.target.height).data;\n\t}\n\tdispose() {\n\t\tthis.raster.dispose();\n\t}\n\tcontext(canvas) {\n\t\tconst ctx = canvas.getContext(\"2d\");\n\t\tif (!ctx) throw new Error(\"canvas 2d context unavailable\");\n\t\treturn ctx;\n\t}\n};\n//#endregion\nexport { Canvas2DBackend, setShaderRunner };\n", "import { i as resolveTweenTarget, p as track, s as key, t as TARGET_PATH, x as inferValueType } from \"./targetRef.js\";\n//#region src/clip.ts\n/**\n* Motion clips (DESIGN.md \u00A72 build-time sugar): `clip()` captures a relative-time\n* key schedule over named prop CHANNELS; `clip.apply()` compiles to ordinary keyed\n* `Track[]` at apply-time \u2014 authoring SUGAR exactly like `springTo`/`stagger`, NOT a\n* runtime concept and NOT part of the serialized Timeline document. Emitted tracks\n* are BYTE-INDISTINGUISHABLE from hand-authored `track(...)`: every channel compiles\n* through `track(target, type, keys)`, so `validateTrack` runs and the output is\n* deep-equal to the literal form.\n*\n* The binding shape locked here (the channel-spec + apply signature) is FROZEN for\n* the later 1.0 cards (presence / each / morph), which inherit it.\n*/\nvar ClipError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"ClipError\";\n\t}\n};\n/**\n* Guard a clip override VALUE against the channel's resolved type. `compileChannel`\n* infers the channel type from the ORIGINAL first key, then substitutes the\n* override `from`/`to`. `validateTrack` only checks key TIMES, never value shapes,\n* so a mismatched override (e.g. a number on a `vec2` channel) would otherwise\n* sample to NaN through evaluate() into both backends with no warning. This asserts\n* the override value's inferred type matches the channel \u2014 the only place a clip\n* can introduce a wrong-shaped value. `color`/`string` are treated as one family:\n* `inferValueType` can't tell a plain string from a color string, so we never\n* reject a string override on a string-shaped channel.\n*/\nfunction assertOverrideType(target, resolvedType, value) {\n\tlet got;\n\ttry {\n\t\tgot = inferValueType(value);\n\t} catch {\n\t\tthrow new ClipError(`clip override for '${target}' has an un-typeable value ${JSON.stringify(value)} (channel type '${resolvedType}')`);\n\t}\n\tconst stringFamily = (t) => t === \"color\" || t === \"string\";\n\tif (!(got === resolvedType || stringFamily(got) && stringFamily(resolvedType))) throw new ClipError(`clip override for '${target}' is a '${got}' value but the channel is '${resolvedType}' (${JSON.stringify(value)}); a mismatched override samples to NaN`);\n\treturn value;\n}\nfunction channelDuration(ch) {\n\treturn ch.keys.length === 0 ? 0 : ch.keys[ch.keys.length - 1].t;\n}\n/**\n* Resolve a channel's canonical track target. A string `target` resolves every\n* channel against the single node id (`'<nodeId>/<channel.path>'`); a map looks\n* the channel up and resolves the supplied `TweenTarget` directly (free rejection\n* of structural / anonymous ids via `resolveTweenTarget`).\n*/\nfunction resolveChannelTarget(target, channel, path) {\n\tif (typeof target === \"string\") return resolveTweenTarget(`${target}/${path}`);\n\tconst override = target[channel];\n\tif (override === void 0) throw new ClipError(`clip target map is missing channel '${channel}' \u2014 provide a target for every channel, or pass a node-id string`);\n\treturn resolveTweenTarget(override);\n}\n/**\n* Compile ONE channel into a hand-authored-equivalent `Track`. Applies the\n* override (value/ease) topology-preservingly, then scales relative `t` by\n* `1/speed` and offsets by `startSec`. Routes through `track()` so `validateTrack`\n* runs (strictly-increasing t, hold-canonicalize) and the output is byte-identical\n* to the literal `track(target, type, keys)` form.\n*/\nfunction compileChannel(target, ch, startSec, speed, override) {\n\tif (ch.keys.length === 0) throw new ClipError(`clip channel '${target}' has no keys`);\n\tconst type = ch.type ?? inferValueType(ch.keys[0].value);\n\tconst lastIdx = ch.keys.length - 1;\n\tif (override && lastIdx === 0 && override.from !== void 0) throw new ClipError(override.to !== void 0 ? `clip override for '${target}' supplies both 'from' and 'to' on a single-key channel \u2014 ambiguous (both target the only key)` : `clip override for '${target}' supplies 'from' on a single-key channel \u2014 ambiguous (the only key already is the 'to' value)`);\n\treturn track(target, type, ch.keys.map((k, i) => {\n\t\tlet value = k.value;\n\t\tlet overridden = false;\n\t\tif (override) {\n\t\t\tif (i === 0 && override.from !== void 0) {\n\t\t\t\tvalue = assertOverrideType(target, type, override.from);\n\t\t\t\toverridden = true;\n\t\t\t}\n\t\t\tif (i === lastIdx && override.to !== void 0) {\n\t\t\t\tvalue = assertOverrideType(target, type, override.to);\n\t\t\t\toverridden = true;\n\t\t\t}\n\t\t}\n\t\tconst out = {\n\t\t\tt: startSec + k.t / speed,\n\t\t\tvalue\n\t\t};\n\t\tconst ease = override && i === lastIdx && override.ease !== void 0 ? override.ease : k.ease;\n\t\tif (ease !== void 0) out.ease = ease;\n\t\tif (k.interp !== void 0) out.interp = k.interp;\n\t\tif (k.id !== void 0) out.id = k.id;\n\t\tif (k.derived !== void 0 && !overridden) out.derived = k.derived;\n\t\tif (k.from !== void 0) out.from = k.from;\n\t\treturn out;\n\t}));\n}\n/**\n* Build a clip from a spec. Pure: holds no state; `apply` returns fresh tracks.\n*\n* const fade = clip({ channels: { fade: { keys: [key(0, 0), key(0.3, 1)], path: 'opacity' } } });\n* const { tracks, end } = fade.apply('card', 1.0); // \u2192 'card/opacity' track at t\u2208[1.0,1.3]\n*/\nfunction clip(spec) {\n\tconst names = Object.keys(spec.channels);\n\tif (names.length === 0) throw new ClipError(\"clip() requires at least one channel\");\n\tlet duration = 0;\n\tfor (const name of names) {\n\t\tconst ch = spec.channels[name];\n\t\tif (ch.keys.length === 0) throw new ClipError(`clip channel '${name}' has no keys`);\n\t\tduration = Math.max(duration, channelDuration(ch));\n\t}\n\tfunction apply(target, startSec, opts) {\n\t\tconst speed = opts?.speed ?? 1;\n\t\tif (!(speed > 0)) throw new ClipError(`clip speed must be > 0 (got ${speed})`);\n\t\tconst overrides = opts?.overrides;\n\t\tconst tracks = [];\n\t\tlet end = startSec;\n\t\tfor (const name of names) {\n\t\t\tconst ch = spec.channels[name];\n\t\t\tconst trackTarget = resolveChannelTarget(target, name, ch.path);\n\t\t\ttracks.push(compileChannel(trackTarget, ch, startSec, speed, overrides?.[name]));\n\t\t\tend = Math.max(end, startSec + channelDuration(ch) / speed);\n\t\t}\n\t\tif (overrides) {\n\t\t\tfor (const name of Object.keys(overrides)) if (!(name in spec.channels)) throw new ClipError(`clip override references unknown channel '${name}'`);\n\t\t}\n\t\treturn {\n\t\t\ttracks,\n\t\t\tend\n\t\t};\n\t}\n\treturn {\n\t\tspec,\n\t\tduration,\n\t\tapply\n\t};\n}\n/**\n* Fan a clip out over a list of targets, offsetting child i by a `stagger`-style\n* delay (REUSES the existing `stagger` shape/semantics \u2014 number per-index gap, or\n* a function of the index). `end` is the max child end.\n*\n* clipList(popIn(), items.map((it) => it.id), 0, { stagger: 0.08 })\n*/\nfunction clipList(c, targets, startSec, opts) {\n\tconst delay = opts?.stagger ?? 0;\n\tconst at = typeof delay === \"function\" ? delay : (i) => i * delay;\n\tconst { stagger: _stagger, ...applyOpts } = opts ?? {};\n\tconst tracks = [];\n\tlet end = startSec;\n\ttargets.forEach((target, i) => {\n\t\tconst r = c.apply(target, startSec + at(i), applyOpts);\n\t\ttracks.push(...r.tracks);\n\t\tif (r.end > end) end = r.end;\n\t});\n\treturn {\n\t\ttracks,\n\t\tend\n\t};\n}\n//#endregion\n//#region src/clipStdlib.ts\n/**\n* Stdlib motion clips (DESIGN.md \u00A72 build-time sugar): a small set of `clip(...)`\n* literals for the common entrance / emphasis / ambient motions. Tree-shakeable \u2014\n* shipped from the `@glissade/core/clips` SUB-PATH, never the base index, because\n* the keyframe literals are the byte weight (the base core budget is tight).\n*\n* Loop clips (`pulse`, `driftLoop`) author first-key-value == last-key-value, so\n* tiling them under `clipList` (or repeating the clip) reads seamlessly.\n*/\n/** Entrance: opacity 0\u21921 and scale [0.8,0.8]\u2192[1,1] (a \"pop\" in). */\nfunction popIn(opts) {\n\tconst d = opts?.duration ?? .3;\n\tconst ease = opts?.ease ?? \"easeOutCubic\";\n\treturn clip({ channels: {\n\t\topacity: {\n\t\t\tpath: \"opacity\",\n\t\t\tkeys: [key(0, 0), key(d, 1, ease)]\n\t\t},\n\t\tscale: {\n\t\t\tpath: \"scale\",\n\t\t\tkeys: [key(0, [.8, .8]), key(d, [1, 1], ease)]\n\t\t}\n\t} });\n}\n/**\n* Entrance: fade in while sliding a position OFFSET in from one edge. The offset\n* channel binds to a `position` suffix by default and animates a vec2 from the\n* edge-displaced point to [0,0], so it composes as a local translation.\n*/\nfunction slideIn(edge, opts) {\n\tconst d = opts?.duration ?? .3;\n\tconst ease = opts?.ease ?? \"easeOutCubic\";\n\tconst dist = opts?.distance ?? 40;\n\tconst from = edge === \"left\" ? [-dist, 0] : edge === \"right\" ? [dist, 0] : edge === \"top\" ? [0, -dist] : [0, dist];\n\treturn clip({ channels: {\n\t\topacity: {\n\t\t\tpath: \"opacity\",\n\t\t\tkeys: [key(0, 0), key(d, 1, ease)]\n\t\t},\n\t\toffset: {\n\t\t\tpath: \"position\",\n\t\t\tkeys: [key(0, from), key(d, [0, 0], ease)]\n\t\t}\n\t} });\n}\n/** Emphasis: a single scale up-and-back pulse. First/last value match (loopable). */\nfunction pulse(opts) {\n\tconst d = opts?.duration ?? .4;\n\tconst ease = opts?.ease ?? \"easeInOutSine\";\n\tconst peak = opts?.scale ?? 1.1;\n\treturn clip({ channels: { scale: {\n\t\tpath: \"scale\",\n\t\tkeys: [\n\t\t\tkey(0, [1, 1]),\n\t\t\tkey(d / 2, [peak, peak], ease),\n\t\t\tkey(d, [1, 1], ease)\n\t\t]\n\t} } });\n}\n/**\n* Ambient: a slow position drift out and back. First/last value match, so tiling\n* (clipList or repeat) reads as a continuous loop with no seam.\n*/\nfunction driftLoop(opts) {\n\tconst d = opts?.duration ?? 2;\n\tconst ease = opts?.ease ?? \"easeInOutSine\";\n\tconst a = opts?.amplitude ?? 8;\n\treturn clip({ channels: { drift: {\n\t\tpath: \"position\",\n\t\tkeys: [\n\t\t\tkey(0, [0, 0]),\n\t\t\tkey(d / 2, [a, 0], ease),\n\t\t\tkey(d, [0, 0], ease)\n\t\t]\n\t} } });\n}\n//#endregion\n//#region src/morph.ts\n/**\n* Shared-element box-FLIP morph (0.13 build-time sugar). `morph()` takes two\n* caller-supplied `Box` literals (a FROM rect and a TO rect, both with the Rect\n* CENTER convention for x,y) and a map of target nodes, and compiles a FLIP\n* (First-Last-Invert-Play) position+scale tween on ONE shared element plus an\n* optional opacity cross-fade between the from/to nodes.\n*\n* It is PURE CORE: the FLIP delta is plain arithmetic over the two boxes \u2014 no\n* Yoga, no worldMatrix, no signal evaluation, no scene query (a scene-side\n* `worldBoxOf(node)` convenience is a deferred 0.14 fast-follow). The emission\n* delegates to the validated `clip()` path (one track-emission codepath), so the\n* output is BYTE-INDISTINGUISHABLE from hand-authored `track(...)` \u2014 same\n* determinism contract as `clip`/`stagger`/`springTo`.\n*/\nvar MorphError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"MorphError\";\n\t}\n};\nfunction assertFiniteBox(label, b) {\n\tfor (const [k, v] of [\n\t\t[\"x\", b.x],\n\t\t[\"y\", b.y],\n\t\t[\"w\", b.w],\n\t\t[\"h\", b.h]\n\t]) if (!Number.isFinite(v)) throw new MorphError(`morph ${label}.${k} must be finite (got ${v})`);\n\tif (!(b.w > 0) || !(b.h > 0)) throw new MorphError(`morph ${label} must have w>0 and h>0 (got w=${b.w}, h=${b.h}); a zero/negative box yields a NaN/Infinity scale`);\n}\n/**\n* Resolve a node-level `TweenTarget` and append a prop suffix, producing the\n* `'<nodeId>/<prop>'` string the clip map form resolves (which re-runs the\n* structural/anonymous-id rejection via resolveTweenTarget). A string target is\n* a bare node id; a property-signal carrier exposes its node via TARGET_PATH.\n*\n* The node id may itself carry slashes (an each() clone like 'card/3'); DO NOT\n* re-split it on the FIRST slash \u2014 APPEND the prop and trust the caller. The\n* scene's longest-registered-prefix resolver disambiguates node id vs prop path\n* at bind time, so 'card/3' targets the clone, not the wrapping 'card' Group.\n*/\nfunction nodeTarget(target, prop) {\n\tconst id = typeof target === \"string\" ? target : target[TARGET_PATH];\n\tif (typeof id !== \"string\" || id.length === 0) return `${String(id)}/${prop}`;\n\treturn `${typeof target === \"string\" ? id : id.slice(0, Math.max(0, id.lastIndexOf(\"/\")))}/${prop}`;\n}\n/**\n* Compile a shared-element box-FLIP morph into hand-authored-equivalent tracks.\n*\n* morph({ x: 80, y: 200, w: 120, h: 36 }, { x: 320, y: 200, w: 480, h: 280 },\n* { morphNode: 'morphFx', fromNode: 'chip', toNode: 'document' },\n* { at: 0.5, duration: 1.2 })\n*\n* Emits (via the clip path):\n* morphNode/position : vec2 [at]\u2192from-center, [at+dur]\u2192to-center\n* morphNode/scale : vec2 [at]\u2192from/base, [at+dur]\u2192to/base\n* fromNode/opacity : number[at]\u21921, [at+dur*crossfade]\u21920\n* toNode/opacity : number[at+dur*(1-crossfade)]\u21920, [at+dur]\u21921\n*/\nfunction morph(from, to, targets, opts) {\n\tconst { at, duration } = opts;\n\tconst ease = opts.ease;\n\tconst crossfade = opts.crossfade ?? .5;\n\tconst metric = opts.metric ?? \"transform\";\n\tif (metric !== \"transform\") throw new MorphError(`morph metric '${metric}' is not supported in v1 (only 'transform')`);\n\tassertFiniteBox(\"from\", from);\n\tassertFiniteBox(\"to\", to);\n\tif (!(duration > 0)) throw new MorphError(`morph duration must be > 0 (got ${duration})`);\n\tif (!(crossfade >= 0 && crossfade <= 1)) throw new MorphError(`morph crossfade must be in [0,1] (got ${crossfade})`);\n\tconst base = opts.base ?? {\n\t\tw: to.w,\n\t\th: to.h\n\t};\n\tassertFiniteBox(\"to\", {\n\t\tx: 0,\n\t\ty: 0,\n\t\tw: base.w,\n\t\th: base.h\n\t});\n\tconst fromScale = [from.w / base.w, from.h / base.h];\n\tconst toScale = [to.w / base.w, to.h / base.h];\n\tconst fromCenter = [from.x, from.y];\n\tconst toCenter = [to.x, to.y];\n\tconst channels = {\n\t\tposition: {\n\t\t\tpath: \"position\",\n\t\t\ttype: \"vec2\",\n\t\t\tkeys: [key(0, fromCenter), key(duration, toCenter, ease)]\n\t\t},\n\t\tscale: {\n\t\t\tpath: \"scale\",\n\t\t\ttype: \"vec2\",\n\t\t\tkeys: [key(0, fromScale), key(duration, toScale, ease)]\n\t\t}\n\t};\n\tconst targetMap = {\n\t\tposition: nodeTarget(targets.morphNode, \"position\"),\n\t\tscale: nodeTarget(targets.morphNode, \"scale\")\n\t};\n\tif (targets.fromNode !== void 0 && duration * crossfade > 0) {\n\t\tchannels[\"fromOpacity\"] = {\n\t\t\tpath: \"opacity\",\n\t\t\ttype: \"number\",\n\t\t\tkeys: [key(0, 1), key(duration * crossfade, 0, ease)]\n\t\t};\n\t\ttargetMap[\"fromOpacity\"] = nodeTarget(targets.fromNode, \"opacity\");\n\t}\n\tif (targets.toNode !== void 0 && duration * (1 - crossfade) < duration) {\n\t\tchannels[\"toOpacity\"] = {\n\t\t\tpath: \"opacity\",\n\t\t\ttype: \"number\",\n\t\t\tkeys: [key(duration * (1 - crossfade), 0), key(duration, 1, ease)]\n\t\t};\n\t\ttargetMap[\"toOpacity\"] = nodeTarget(targets.toNode, \"opacity\");\n\t}\n\tconst { tracks } = clip({ channels }).apply(targetMap, at);\n\treturn {\n\t\ttracks,\n\t\tend: at + duration\n\t};\n}\n//#endregion\n//#region src/presence.ts\n/**\n* Presence scheduling (the 0.13 enter/exit sugar): build-time sugar over `clip`\n* that schedules a node's ENTER on `show`, its EXIT to land exactly on `hide`,\n* and authors a real `<nodeId>/opacity` WINDOW GUARD so the node is culled\n* (opacity<=0, see scene/node.ts \u00A73) outside the live window.\n*\n* Like `clip`/`springTo`/`stagger`, this is authoring SUGAR \u2014 it compiles to\n* ordinary keyed `Track[]` via `track()`, byte-INDISTINGUISHABLE from the\n* hand-authored form. There is NO runtime visibility flag and no non-track\n* document state: a presence is a pure function of its arguments. Back-timing\n* the exit is pure arithmetic; reconciling the enter/exit opacity keys with the\n* guard uses the builder's deterministic later-wins coincident-`t` dedup with a\n* fixed merge order, so goldens stay byte-identical.\n*\n* The canonical case is a \"send-line agency moment\": a node enters, lives, and\n* exits on a beat. Siblings anchor to the real exit via the returned `end`.\n*/\nvar PresenceError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"PresenceError\";\n\t}\n};\n/** The default enter/exit: a plain opacity fade over `DEFAULT_FADE` seconds. */\nconst DEFAULT_FADE = .3;\n/** Plain opacity fade-in 0\u21921 (the default enter). */\nfunction defaultEnter() {\n\treturn clip({ channels: { opacity: {\n\t\tpath: \"opacity\",\n\t\tkeys: [key(0, 0), key(DEFAULT_FADE, 1)]\n\t} } });\n}\n/** Plain opacity fade-out 1\u21920 (the default exit). */\nfunction defaultExit() {\n\treturn clip({ channels: { opacity: {\n\t\tpath: \"opacity\",\n\t\tkeys: [key(0, 1), key(DEFAULT_FADE, 0)]\n\t} } });\n}\n/** A `PresenceTransition` is a plain bag; a `Clip` carries `apply`. Discriminate on that. */\nfunction isClip(t) {\n\treturn typeof t.apply === \"function\";\n}\n/** Is a value a Vec2 ([number, number])? */\nfunction isVec2(v) {\n\treturn Array.isArray(v);\n}\n/**\n* Compile an inline `PresenceTransition` literal into the SAME `Clip` an author\n* would hand-write \u2014 an opacity channel (only when `opacity` is given), a position\n* channel from `offset`+`edge` (slideIn convention), and a scale channel (scalar\n* broadcast to Vec2, popIn convention). presence() then runs UNCHANGED on it.\n*\n* `dir` selects the slide direction: an `enter` slides FROM the edge-displaced\n* point TO [0,0]; an `exit` slides FROM [0,0] TO the edge-displaced point (so a\n* back-timed exit reads as the inverse of the entrance). For an explicit\n* `[Vec2,Vec2]` offset the endpoints are used verbatim (no direction flip).\n*/\nfunction transitionToClip(t, dir) {\n\tconst d = t.dur ?? DEFAULT_FADE;\n\tconst ease = t.ease;\n\tconst channels = {};\n\tif (t.opacity !== void 0) {\n\t\tconst [from, to] = t.opacity;\n\t\tchannels.opacity = {\n\t\t\tpath: \"opacity\",\n\t\t\tkeys: [key(0, from), key(d, to, ...easeArg(ease))]\n\t\t};\n\t}\n\tif (t.offset !== void 0) {\n\t\tconst [from, to] = offsetEndpoints(t.offset, t.edge ?? \"bottom\", dir);\n\t\tchannels.offset = {\n\t\t\tpath: \"position\",\n\t\t\tkeys: [key(0, from), key(d, to, ...easeArg(ease))]\n\t\t};\n\t}\n\tif (t.scale !== void 0) {\n\t\tconst [from, to] = scaleEndpoints(t.scale);\n\t\tchannels.scale = {\n\t\t\tpath: \"scale\",\n\t\t\tkeys: [key(0, from), key(d, to, ...easeArg(ease))]\n\t\t};\n\t}\n\treturn clip({ channels });\n}\n/** Spread-arg helper: pass `ease` to `key()` only when defined (no `undefined` arg). */\nfunction easeArg(ease) {\n\treturn ease !== void 0 ? [ease] : [];\n}\n/** Edge \u2192 unit displacement direction (matches clipStdlib's slideIn `from` vectors). */\nfunction edgeVec(edge, dist) {\n\treturn edge === \"left\" ? [-dist, 0] : edge === \"right\" ? [dist, 0] : edge === \"top\" ? [0, -dist] : [0, dist];\n}\n/**\n* Resolve the `offset` field to position [from, to] endpoints. A scalar slides that\n* magnitude along `edge`; a single Vec2 is the displaced point; a [Vec2,Vec2] is\n* verbatim endpoints. enter goes displaced\u2192[0,0]; exit goes [0,0]\u2192displaced.\n*/\nfunction offsetEndpoints(offset, edge, dir) {\n\tif (Array.isArray(offset) && isVec2(offset[0])) return offset;\n\tconst displaced = isVec2(offset) ? offset : edgeVec(edge, offset);\n\tconst origin = [0, 0];\n\treturn dir === \"enter\" ? [displaced, origin] : [origin, displaced];\n}\n/** Resolve the `scale` field to [from, to] Vec2 endpoints (scalar pair \u2192 broadcast). */\nfunction scaleEndpoints(scale) {\n\tconst [a, b] = scale;\n\tconst broadcast = (v) => isVec2(v) ? v : [v, v];\n\treturn [broadcast(a), broadcast(b)];\n}\n/** Normalize an enter/exit option (Clip or inline literal) to a Clip. */\nfunction resolveTransition(t, dir, fallback) {\n\tif (t === void 0) return fallback();\n\treturn isClip(t) ? t : transitionToClip(t, dir);\n}\n/** Effective duration of a clip after a speed multiplier (`apply` divides every t by speed). */\nfunction effectiveDuration(c, opts) {\n\treturn c.duration / (opts?.speed ?? 1);\n}\n/**\n* Sort keys by `t`, breaking ties by original index (a STABLE sort, so that at a\n* coincident t the LATER-emitted key survives the later-wins dedup regardless of\n* the engine's `Array.sort` stability). Pure: returns a new array.\n*/\nfunction stableSortByT(keys) {\n\treturn keys.map((k, i) => [k, i]).sort((a, b) => a[0].t - b[0].t || a[1] - b[1]).map(([k]) => k);\n}\n/**\n* Pull the keys of the clip's OWN `<nodeId>/opacity` track out of an applied\n* result (if it authored one). Non-opacity tracks pass straight through.\n*/\nfunction partitionOpacity(tracks, opacityTarget) {\n\tconst rest = [];\n\tlet opacityKeys = [];\n\tfor (const tr of tracks) if (tr.target === opacityTarget) opacityKeys = tr.keys;\n\telse rest.push(tr);\n\treturn {\n\t\topacityKeys,\n\t\trest\n\t};\n}\n/**\n* Schedule a node's enter/exit presence. Emits keyed `Track[]` only.\n*\n* presence('card', { show: 1, hide: 5 }) // fade in at 1, fade out to land on 5\n*/\nfunction presence(nodeId, opts) {\n\tconst show = opts.show ?? opts.window?.[0];\n\tconst hide = opts.hide ?? opts.window?.[1];\n\tif (show === void 0 || hide === void 0) throw new PresenceError(`presence() needs a window: pass { show, hide } or { window: [show, hide] }`);\n\tconst opacityTarget = resolveTweenTarget(typeof nodeId === \"string\" ? `${nodeId}/opacity` : nodeId);\n\tconst lastSlash = opacityTarget.lastIndexOf(\"/\");\n\tconst nodeIdStr = lastSlash < 0 ? opacityTarget : opacityTarget.slice(0, lastSlash);\n\tconst enter = resolveTransition(opts.enter, \"enter\", defaultEnter);\n\tconst exit = resolveTransition(opts.exit, \"exit\", defaultExit);\n\tconst enterRes = enter.apply(nodeIdStr, show, opts.enterOpts);\n\tconst enterEnd = show + effectiveDuration(enter, opts.enterOpts);\n\tconst exitDur = effectiveDuration(exit, opts.exitOpts);\n\tconst exitStart = hide - exitDur;\n\tif (exitStart <= show) throw new PresenceError(`presence('${nodeIdStr}') exit needs ${exitDur.toFixed(3)}s but only ${(hide - show).toFixed(3)}s between show (${show}) and hide (${hide}) \u2014 widen the window or shorten/speed up the exit`);\n\tconst exitRes = exit.apply(nodeIdStr, exitStart, opts.exitOpts);\n\tconst { opacityKeys: enterOpacity, rest: enterRest } = partitionOpacity(enterRes.tracks, opacityTarget);\n\tconst { opacityKeys: exitOpacity, rest: exitRest } = partitionOpacity(exitRes.tracks, opacityTarget);\n\tconst bareGuard = [\n\t\tkey(0, 0, { interp: \"hold\" }),\n\t\tkey(enterEnd, 1, { interp: \"hold\" }),\n\t\tkey(hide, 0, { interp: \"hold\" })\n\t];\n\tconst overlay = [];\n\tif (enterOpacity.length > 0) enterOpacity.forEach((k, i) => {\n\t\tif (i === 0 && k.value !== 0 && k.interp !== \"hold\") overlay.push({\n\t\t\t...k,\n\t\t\tinterp: \"hold\"\n\t\t});\n\t\telse overlay.push(k);\n\t});\n\telse overlay.push(key(show, 0), key(enterEnd, 1));\n\tif (exitOpacity.length > 0) for (const k of exitOpacity) overlay.push(k);\n\telse overlay.push(key(exitStart, 1), key(hide, 0));\n\tconst sorted = stableSortByT([...bareGuard, ...overlay]);\n\tconst deduped = [];\n\tfor (const k of sorted) {\n\t\tconst last = deduped[deduped.length - 1];\n\t\tif (last && last.t === k.t) deduped[deduped.length - 1] = k;\n\t\telse deduped.push(k);\n\t}\n\treturn {\n\t\ttracks: [\n\t\t\ttrack(opacityTarget, \"number\", deduped),\n\t\t\t...enterRest,\n\t\t\t...exitRest\n\t\t],\n\t\tend: hide,\n\t\tshownAt: show,\n\t\thiddenAt: hide\n\t};\n}\n//#endregion\nexport { ClipError, MorphError, PresenceError, clip, clipList, driftLoop, morph, popIn, presence, pulse, slideIn, transitionToClip };\n", "import { u as pathFromSegs } from \"./nodes.js\";\nimport \"@glissade/core\";\n//#region src/path.ts\n/**\n* Minimal SVG `<path d>` tokenizer \u2192 `PathSeg[]`, kept inside `scene` so it\n* never imports `@glissade/svg` (that would invert the enforced dependency\n* direction, scene \u2190 svg). Handles the common command set: M/m L/l H/h V/v\n* C/c Q/q Z/z (absolute + relative, implicit-repeat per spec). For the FULL set\n* (S/T/A smooth-curves + arcs, with reflection), import a `.svg` through\n* `@glissade/svg`'s `parseSvgPath`; this lean copy covers hand-written `data`\n* strings. Unknown commands are skipped.\n*/\nfunction parseSvgPathData(d) {\n\tconst tokens = d.match(/[MmLlHhVvCcQqZz]|-?(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][+-]?\\d+)?/g) ?? [];\n\tconst segs = [];\n\tlet i = 0;\n\tlet cx = 0;\n\tlet cy = 0;\n\tlet sx = 0;\n\tlet sy = 0;\n\tlet prevCmd = \"\";\n\tconst num = () => Number(tokens[i++]);\n\tconst isCmd = (t) => !!t && /^[MmLlHhVvCcQqZz]$/.test(t);\n\twhile (i < tokens.length) {\n\t\tlet cmd = tokens[i];\n\t\tif (isCmd(cmd)) i++;\n\t\telse cmd = prevCmd === \"M\" ? \"L\" : prevCmd === \"m\" ? \"l\" : prevCmd;\n\t\tif (!cmd) break;\n\t\tconst rel = cmd === cmd.toLowerCase();\n\t\tswitch (cmd.toUpperCase()) {\n\t\t\tcase \"M\": {\n\t\t\t\tconst x = num() + (rel ? cx : 0);\n\t\t\t\tconst y = num() + (rel ? cy : 0);\n\t\t\t\tcx = x;\n\t\t\t\tcy = y;\n\t\t\t\tsx = x;\n\t\t\t\tsy = y;\n\t\t\t\tsegs.push([\n\t\t\t\t\t\"M\",\n\t\t\t\t\tx,\n\t\t\t\t\ty\n\t\t\t\t]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"L\": {\n\t\t\t\tconst x = num() + (rel ? cx : 0);\n\t\t\t\tconst y = num() + (rel ? cy : 0);\n\t\t\t\tcx = x;\n\t\t\t\tcy = y;\n\t\t\t\tsegs.push([\n\t\t\t\t\t\"L\",\n\t\t\t\t\tx,\n\t\t\t\t\ty\n\t\t\t\t]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"H\": {\n\t\t\t\tconst x = num() + (rel ? cx : 0);\n\t\t\t\tcx = x;\n\t\t\t\tsegs.push([\n\t\t\t\t\t\"L\",\n\t\t\t\t\tx,\n\t\t\t\t\tcy\n\t\t\t\t]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"V\": {\n\t\t\t\tconst y = num() + (rel ? cy : 0);\n\t\t\t\tcy = y;\n\t\t\t\tsegs.push([\n\t\t\t\t\t\"L\",\n\t\t\t\t\tcx,\n\t\t\t\t\ty\n\t\t\t\t]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"C\": {\n\t\t\t\tconst x1 = num() + (rel ? cx : 0);\n\t\t\t\tconst y1 = num() + (rel ? cy : 0);\n\t\t\t\tconst x2 = num() + (rel ? cx : 0);\n\t\t\t\tconst y2 = num() + (rel ? cy : 0);\n\t\t\t\tconst x = num() + (rel ? cx : 0);\n\t\t\t\tconst y = num() + (rel ? cy : 0);\n\t\t\t\tcx = x;\n\t\t\t\tcy = y;\n\t\t\t\tsegs.push([\n\t\t\t\t\t\"C\",\n\t\t\t\t\tx1,\n\t\t\t\t\ty1,\n\t\t\t\t\tx2,\n\t\t\t\t\ty2,\n\t\t\t\t\tx,\n\t\t\t\t\ty\n\t\t\t\t]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"Q\": {\n\t\t\t\tconst x1 = num() + (rel ? cx : 0);\n\t\t\t\tconst y1 = num() + (rel ? cy : 0);\n\t\t\t\tconst x = num() + (rel ? cx : 0);\n\t\t\t\tconst y = num() + (rel ? cy : 0);\n\t\t\t\tcx = x;\n\t\t\t\tcy = y;\n\t\t\t\tsegs.push([\n\t\t\t\t\t\"Q\",\n\t\t\t\t\tx1,\n\t\t\t\t\ty1,\n\t\t\t\t\tx,\n\t\t\t\t\ty\n\t\t\t\t]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"Z\":\n\t\t\t\tsegs.push([\"Z\"]);\n\t\t\t\tcx = sx;\n\t\t\t\tcy = sy;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\ti++;\n\t\t\t\tbreak;\n\t\t}\n\t\tprevCmd = cmd;\n\t}\n\treturn segs;\n}\n/**\n* Convenience: an SVG `d` string \u2192 `PathValue` (the contour form `Path.data`\n* wants), via `parseSvgPathData` \u2192 `pathFromSegs`. Pass the result to a Path:\n* `new Path({ data: pathFromSvg('M0 0 \u2026') })`.\n*/\nfunction pathFromSvg(d) {\n\treturn pathFromSegs(parseSvgPathData(d));\n}\n//#endregion\nexport { parseSvgPathData, pathFromSvg };\n", "import { buildFontRegistry, compileTimeline, signal } from \"@glissade/core\";\nimport { evaluate, validateSceneFonts } from \"@glissade/scene\";\nimport { Canvas2DBackend } from \"@glissade/backend-canvas2d\";\n//#region src/driver.ts\n/**\n* rAF clock: writes monotonically increasing elapsed seconds since start().\n* Playback policy (rate, loop, pause) is the Player's job, not the clock's.\n*/\nfunction clockDriver() {\n\tlet handle = 0;\n\tlet running = false;\n\treturn {\n\t\tstart(write) {\n\t\t\trunning = true;\n\t\t\tlet origin;\n\t\t\tconst tick = (nowMs) => {\n\t\t\t\tif (!running) return;\n\t\t\t\torigin ??= nowMs;\n\t\t\t\twrite((nowMs - origin) / 1e3);\n\t\t\t\thandle = requestAnimationFrame(tick);\n\t\t\t};\n\t\t\thandle = requestAnimationFrame(tick);\n\t\t},\n\t\tstop() {\n\t\t\trunning = false;\n\t\t\tcancelAnimationFrame(handle);\n\t\t}\n\t};\n}\n/** User-controlled scalar: scroll progress 0..1 \u2192 t. Writes the playhead directly. */\nfunction scrollDriver(opts) {\n\tconst axis = opts.axis ?? \"y\";\n\tlet listener = null;\n\tconst el = opts.source;\n\treturn {\n\t\tstart(write, ctx) {\n\t\t\tconst range = opts.range ?? [0, ctx.duration ?? 1];\n\t\t\tconst progress = () => {\n\t\t\t\tif (el instanceof Element) {\n\t\t\t\t\tconst max = axis === \"y\" ? el.scrollHeight - el.clientHeight : el.scrollWidth - el.clientWidth;\n\t\t\t\t\tconst pos = axis === \"y\" ? el.scrollTop : el.scrollLeft;\n\t\t\t\t\treturn max > 0 ? pos / max : 0;\n\t\t\t\t}\n\t\t\t\tconst doc = document.documentElement;\n\t\t\t\tconst max = axis === \"y\" ? doc.scrollHeight - window.innerHeight : doc.scrollWidth - window.innerWidth;\n\t\t\t\tconst pos = axis === \"y\" ? window.scrollY : window.scrollX;\n\t\t\t\treturn max > 0 ? pos / max : 0;\n\t\t\t};\n\t\t\tlistener = () => {\n\t\t\t\tconst p = Math.min(1, Math.max(0, progress()));\n\t\t\t\twrite(range[0] + p * (range[1] - range[0]));\n\t\t\t};\n\t\t\tel.addEventListener(\"scroll\", listener, { passive: true });\n\t\t\tlistener();\n\t\t},\n\t\tstop() {\n\t\t\tif (listener) el.removeEventListener(\"scroll\", listener);\n\t\t\tlistener = null;\n\t\t}\n\t};\n}\n//#endregion\n//#region src/player.ts\n/**\n* The Player (DESIGN.md \u00A74.2): composes a clock Driver with playback policy.\n* The only stateful object in the runtime; its state is rate, loop mode, and\n* a base-time offset. Time-based, never frame-counted \u2014 a dropped frame skips\n* ahead, it never drifts.\n*/\n/** \u00A7A.1: machine and Player track-target sets must be statically disjoint. */\nvar TargetOverlapError = class extends Error {\n\tconstructor(overlaps) {\n\t\tsuper(`machine targets overlap an already-bound target set: ${overlaps.join(\", \")} \u2014 concurrent writers to one property is the silent last-writer-wins \u00A72.2 exists to kill`);\n\t\tthis.name = \"TargetOverlapError\";\n\t}\n};\nfunction createPlayer(init, opts = {}) {\n\tconst { playhead } = init;\n\tlet liveDuration = init.duration;\n\tlet markers = init.markers ?? [];\n\tconst driver = init.driver ?? clockDriver();\n\tconst loop = opts.loop ?? false;\n\tconst background = opts.background ?? \"pause\";\n\tconst visibility = init.visibility ?? (() => \"visible\");\n\tconst callbacks = /* @__PURE__ */ new Map();\n\tconst cueCallbacks = /* @__PURE__ */ new Map();\n\tlet rate = opts.rate ?? 1;\n\tlet playing = false;\n\tconst playingSig = signal(false);\n\tconst setPlaying = (v) => {\n\t\tplaying = v;\n\t\tplayingSig.set(v);\n\t};\n\tlet driverRunning = false;\n\tlet ownTargets = new Set(init.targets ?? []);\n\tconst machines = [];\n\tlet base = 0;\n\tlet elapsedOrigin = null;\n\tlet lastElapsed = 0;\n\tlet range = [0, liveDuration];\n\tlet loopsDone = 0;\n\tlet resolveFinished = null;\n\tfunction fireMarkers(from, to) {\n\t\tif (from === to || callbacks.size === 0 && cueCallbacks.size === 0) return;\n\t\tconst forward = to > from;\n\t\tfor (const m of markers) {\n\t\t\tif (!(forward ? m.t > from && m.t <= to : m.t >= to && m.t < from)) continue;\n\t\t\tfor (const cb of callbacks.get(m.name) ?? []) cb(m);\n\t\t\tconst kind = m.data?.kind;\n\t\t\tif (typeof kind === \"string\") for (const cb of cueCallbacks.get(kind) ?? []) cb(m);\n\t\t}\n\t}\n\tfunction settle(completed) {\n\t\tsetPlaying(false);\n\t\telapsedOrigin = null;\n\t\tconst resolve = resolveFinished;\n\t\tresolveFinished = null;\n\t\tresolve?.(completed);\n\t}\n\tfunction onElapsed(elapsed) {\n\t\tlastElapsed = elapsed;\n\t\tfor (const m of machines) m.step(elapsed);\n\t\tif (!playing) return;\n\t\tif (background === \"pause\" && visibility() === \"hidden\") {\n\t\t\tbase = playhead.peek();\n\t\t\telapsedOrigin = null;\n\t\t\treturn;\n\t\t}\n\t\telapsedOrigin ??= elapsed;\n\t\tconst prev = playhead.peek();\n\t\tlet t = base + (elapsed - elapsedOrigin) * rate;\n\t\tconst [lo, hi] = range;\n\t\tif (!(rate >= 0 ? t >= hi : t <= lo)) {\n\t\t\tplayhead.set(t);\n\t\t\tfireMarkers(prev, t);\n\t\t\treturn;\n\t\t}\n\t\tconst loopCfg = loop === true ? { mode: \"restart\" } : loop === false ? null : loop;\n\t\tconst maxLoops = loopCfg && \"count\" in loopCfg && loopCfg.count !== void 0 ? loopCfg.count : Infinity;\n\t\tif (!loopCfg || loopsDone + 1 >= maxLoops) {\n\t\t\tconst end = rate >= 0 ? hi : lo;\n\t\t\tplayhead.set(end);\n\t\t\tfireMarkers(prev, end);\n\t\t\tsettle(true);\n\t\t\treturn;\n\t\t}\n\t\tloopsDone++;\n\t\thi - lo;\n\t\tif (loopCfg.mode === \"alternate\") {\n\t\t\tfireMarkers(prev, rate >= 0 ? hi : lo);\n\t\t\trate = -rate;\n\t\t\tbase = rate >= 0 ? lo : hi;\n\t\t} else {\n\t\t\tfireMarkers(prev, rate >= 0 ? hi : lo);\n\t\t\tbase = rate >= 0 ? lo : hi;\n\t\t}\n\t\telapsedOrigin = elapsed;\n\t\tt = base;\n\t\tplayhead.set(t);\n\t}\n\tfunction ensureDriver() {\n\t\tif (driverRunning) return;\n\t\tdriverRunning = true;\n\t\tdriver.start(onElapsed, {\n\t\t\tduration: liveDuration,\n\t\t\tvisibility\n\t\t});\n\t}\n\treturn {\n\t\tplayhead,\n\t\tget duration() {\n\t\t\treturn liveDuration;\n\t\t},\n\t\tget playing() {\n\t\t\treturn playing;\n\t\t},\n\t\tplayingSignal: playingSig,\n\t\tget rate() {\n\t\t\treturn rate;\n\t\t},\n\t\tset rate(r) {\n\t\t\tbase = playhead.peek();\n\t\t\telapsedOrigin = playing ? lastElapsed : null;\n\t\t\trate = r;\n\t\t},\n\t\tplay(playOpts) {\n\t\t\tif (resolveFinished) settle(false);\n\t\t\trange = playOpts?.range ?? [0, liveDuration];\n\t\t\tconst t = playhead.peek();\n\t\t\tconst [lo, hi] = range;\n\t\t\tbase = rate >= 0 ? t >= hi || t < lo ? lo : t : t <= lo || t > hi ? hi : t;\n\t\t\tplayhead.set(base);\n\t\t\telapsedOrigin = null;\n\t\t\tloopsDone = 0;\n\t\t\tsetPlaying(true);\n\t\t\tensureDriver();\n\t\t\treturn { finished: new Promise((resolve) => {\n\t\t\t\tresolveFinished = resolve;\n\t\t\t}) };\n\t\t},\n\t\tpause() {\n\t\t\tif (!playing) return;\n\t\t\tbase = playhead.peek();\n\t\t\tsettle(false);\n\t\t},\n\t\tseek(t) {\n\t\t\tbase = Math.min(Math.max(t, 0), liveDuration);\n\t\t\telapsedOrigin = playing ? lastElapsed : null;\n\t\t\tplayhead.set(base);\n\t\t},\n\t\tswap(next) {\n\t\t\tliveDuration = next.duration;\n\t\t\tmarkers = next.markers ?? [];\n\t\t\townTargets = new Set(next.targets ?? []);\n\t\t\tconst t = Math.min(playhead.peek(), liveDuration);\n\t\t\trange = [0, liveDuration];\n\t\t\tbase = t;\n\t\t\telapsedOrigin = playing ? lastElapsed : null;\n\t\t\tloopsDone = 0;\n\t\t\tplayhead.set(t);\n\t\t},\n\t\tattach(machine) {\n\t\t\tif (machine.targets) {\n\t\t\t\tconst overlaps = [];\n\t\t\t\tfor (const t of machine.targets) if (ownTargets.has(t)) overlaps.push(`'${t}' (player timeline)`);\n\t\t\t\telse if (machines.some((m) => m.targets?.has(t))) overlaps.push(`'${t}' (another machine)`);\n\t\t\t\tif (overlaps.length > 0) throw new TargetOverlapError(overlaps);\n\t\t\t}\n\t\t\tmachines.push(machine);\n\t\t\tensureDriver();\n\t\t\treturn () => {\n\t\t\t\tconst i = machines.indexOf(machine);\n\t\t\t\tif (i >= 0) machines.splice(i, 1);\n\t\t\t};\n\t\t},\n\t\tonMarker(name, cb) {\n\t\t\tlet set = callbacks.get(name);\n\t\t\tif (!set) {\n\t\t\t\tset = /* @__PURE__ */ new Set();\n\t\t\t\tcallbacks.set(name, set);\n\t\t\t}\n\t\t\tset.add(cb);\n\t\t\treturn () => set.delete(cb);\n\t\t},\n\t\tonCue(kind, cb) {\n\t\t\tlet set = cueCallbacks.get(kind);\n\t\t\tif (!set) {\n\t\t\t\tset = /* @__PURE__ */ new Set();\n\t\t\t\tcueCallbacks.set(kind, set);\n\t\t\t}\n\t\t\tset.add(cb);\n\t\t\treturn () => set.delete(cb);\n\t\t},\n\t\tdispose() {\n\t\t\tif (playing) settle(false);\n\t\t\tmachines.length = 0;\n\t\t\tif (driverRunning) driver.stop();\n\t\t\tdriverRunning = false;\n\t\t}\n\t};\n}\n//#endregion\n//#region src/reducedMotion.ts\nfunction planReducedMotion(mode, prefersReduced, doc, duration, autoplayRequested) {\n\tconst m = mode ?? \"respect\";\n\tif (m === \"ignore\" || !prefersReduced) return { autoplay: autoplayRequested };\n\tif (typeof m === \"function\") return {\n\t\tautoplay: autoplayRequested,\n\t\tswapTo: m(doc)\n\t};\n\treturn {\n\t\tautoplay: false,\n\t\tseekTo: doc.posterTime ?? duration\n\t};\n}\n/** Live `prefers-reduced-motion: reduce` reading; false off-DOM. */\nfunction mediaPrefersReducedMotion() {\n\treturn typeof matchMedia !== \"undefined\" && matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n}\n//#endregion\n//#region src/mount.ts\n/**\n* mount() \u2014 the vanilla embedding primitive (DESIGN.md \u00A74.3): wire a scene +\n* timeline + canvas into a rendering Player. Rendering is pulled: a playhead\n* invalidation schedules one rAF-coalesced render.\n*/\nfunction mount(initialScene, initialDoc, canvas, opts = {}) {\n\tlet scene = initialScene;\n\tlet doc = initialDoc;\n\tconst compiled = compileTimeline(doc);\n\tconst backend = new Canvas2DBackend(canvas);\n\tscene.setTextMeasurer(backend);\n\tconst playhead = scene.playhead;\n\tconst player = createPlayer({\n\t\tplayhead,\n\t\tduration: compiled.duration,\n\t\tmarkers: compiled.markers,\n\t\ttargets: compiled.tracks.keys()\n\t}, opts);\n\tconst renderNow = () => backend.render(evaluate(scene, doc, playhead.peek()));\n\tlet scheduled = false;\n\tconst schedule = () => {\n\t\tif (scheduled) return;\n\t\tscheduled = true;\n\t\trequestAnimationFrame(() => {\n\t\t\tscheduled = false;\n\t\t\trenderNow();\n\t\t});\n\t};\n\tconst unsubscribe = playhead.subscribe(schedule);\n\tconst loadFonts = (forDoc) => {\n\t\tif (typeof FontFace === \"undefined\") return;\n\t\tconst registry = buildFontRegistry(forDoc.assets);\n\t\tfor (const f of registry.faces()) {\n\t\t\tconst face = new FontFace(f.family, `url(${f.url})`, {\n\t\t\t\tweight: String(f.weight),\n\t\t\t\tstyle: f.style\n\t\t\t});\n\t\t\tdocument.fonts.add(face);\n\t\t\tface.load().then(() => renderNow(), () => void 0);\n\t\t}\n\t\tvalidateSceneFonts(scene, forDoc, async (url) => {\n\t\t\ttry {\n\t\t\t\tconst resp = await fetch(url);\n\t\t\t\treturn resp.ok ? await resp.arrayBuffer() : void 0;\n\t\t\t} catch {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}, {\n\t\t\tmode: opts.strictFonts ? \"strict\" : \"dev\",\n\t\t\t...opts.osFonts !== void 0 ? { osFamilies: opts.osFonts } : {}\n\t\t});\n\t};\n\tloadFonts(doc);\n\tconst prefersReduced = (opts.prefersReducedMotion ?? mediaPrefersReducedMotion)();\n\tconst plan = planReducedMotion(opts.reducedMotion, prefersReduced, doc, compiled.duration, !!opts.autoplay);\n\tif (plan.swapTo) {\n\t\tdoc = plan.swapTo;\n\t\tconst recompiled = compileTimeline(doc);\n\t\tplayer.swap({\n\t\t\tduration: recompiled.duration,\n\t\t\tmarkers: recompiled.markers,\n\t\t\ttargets: recompiled.tracks.keys()\n\t\t});\n\t\tloadFonts(doc);\n\t}\n\tif (plan.seekTo !== void 0) player.seek(plan.seekTo);\n\trenderNow();\n\tif (plan.autoplay) player.play();\n\treturn {\n\t\tplayer,\n\t\tbackend,\n\t\trender: renderNow,\n\t\tswap(next) {\n\t\t\tif (next.scene) {\n\t\t\t\tscene = next.scene;\n\t\t\t\tscene.setTextMeasurer(backend);\n\t\t\t}\n\t\t\tdoc = next.timeline;\n\t\t\tconst recompiled = compileTimeline(doc);\n\t\t\tplayer.swap({\n\t\t\t\tduration: recompiled.duration,\n\t\t\t\tmarkers: recompiled.markers,\n\t\t\t\ttargets: recompiled.tracks.keys()\n\t\t\t});\n\t\t\tloadFonts(doc);\n\t\t\trenderNow();\n\t\t},\n\t\tdispose() {\n\t\t\tunsubscribe();\n\t\t\tplayer.dispose();\n\t\t\tbackend.dispose();\n\t\t}\n\t};\n}\n//#endregion\n//#region src/hmr.ts\n/**\n* Vite HMR glue for a mounted embed (DESIGN.md \u00A74.3). When the scene module is\n* edited, the dev server hands us the re-evaluated module; we hot-swap the live\n* Mounted without losing the playhead (see Mounted.swap / Player.swap). The\n* consumer owns the dependency path (only they know it), so this returns the\n* accept callback rather than calling `import.meta.hot.accept` itself:\n*\n* import * as sceneMod from './hero.scene';\n* const mounted = mount(sceneMod.createScene(), sceneMod.timeline, canvas);\n* import.meta.hot?.accept(\n* './hero.scene',\n* swapOnHmr(mounted, sceneMod.timeline, (m) => ({ scene: m.createScene(), timeline: m.timeline })),\n* );\n*\n* It also warns when an edit removes a label the previous timeline declared \u2014\n* code that seeks to that label (`play({ range: [labels.x, \u2026] })`) would break.\n*/\n/**\n* Build the `import.meta.hot.accept` callback that hot-swaps `mounted` from a\n* re-evaluated scene module. `rerun` maps the updated module namespace to the\n* fresh `{ scene?, timeline }`.\n*/\nfunction swapOnHmr(mounted, initialTimeline, rerun) {\n\tlet prevLabels = Object.keys(compileTimeline(initialTimeline).labels);\n\treturn (mod) => {\n\t\tif (mod == null) return;\n\t\tconst next = rerun(mod);\n\t\tconst nextLabels = Object.keys(compileTimeline(next.timeline).labels);\n\t\tconst dropped = prevLabels.filter((l) => !nextLabels.includes(l));\n\t\tif (dropped.length > 0) console.warn(`[glissade] HMR: this edit removed label(s) ${dropped.map((l) => `'${l}'`).join(\", \")} \u2014 anything seeking to them will no longer resolve`);\n\t\tprevLabels = nextLabels;\n\t\tmounted.swap(next);\n\t};\n}\n//#endregion\nexport { TargetOverlapError, clockDriver, createPlayer, mediaPrefersReducedMotion, mount, planReducedMotion, scrollDriver, swapOnHmr };\n", "import \"@glissade/scene\";\nimport { mount } from \"@glissade/player\";\n//#region src/index.ts\nconst TEMPLATE = `\n<style>\n :host { display: inline-block; }\n canvas { display: block; width: 100%; height: auto; }\n .controls { display: flex; gap: 8px; align-items: center; padding: 6px 4px; font: 12px system-ui, sans-serif; }\n button { font: inherit; cursor: pointer; }\n input[type='range'] { flex: 1; }\n .time { font-variant-numeric: tabular-nums; opacity: 0.75; min-width: 9ch; text-align: right; }\n</style>\n<canvas part=\"canvas\"></canvas>\n`;\nvar GsPlayerElement = class extends HTMLElement {\n\tstatic observedAttributes = [\n\t\t\"loop\",\n\t\t\"pingpong\",\n\t\t\"yoyo\",\n\t\t\"autoplay\",\n\t\t\"controls\"\n\t];\n\t#mounted = null;\n\t#scene = null;\n\t#unsubscribe = null;\n\t#scrubbing = false;\n\t#playhead = null;\n\t#shadow;\n\t#canvas;\n\t#controls = null;\n\tconstructor() {\n\t\tsuper();\n\t\tconst root = this.attachShadow({ mode: \"open\" });\n\t\troot.innerHTML = TEMPLATE;\n\t\tthis.#shadow = root;\n\t\tthis.#canvas = root.querySelector(\"canvas\");\n\t}\n\t/** The scene module to play; assigning (re)mounts. */\n\tget scene() {\n\t\treturn this.#scene;\n\t}\n\tset scene(mod) {\n\t\tthis.#scene = mod;\n\t\tthis.#remount();\n\t}\n\t/** The underlying Player, once a scene is mounted. */\n\tget player() {\n\t\treturn this.#mounted?.player ?? null;\n\t}\n\tconnectedCallback() {\n\t\tthis.#syncControls();\n\t\tthis.#remount();\n\t}\n\tdisconnectedCallback() {\n\t\tthis.#teardown();\n\t}\n\tattributeChangedCallback(name) {\n\t\tif (name === \"controls\") {\n\t\t\tthis.#syncControls();\n\t\t\tthis.#syncControlsSubscription();\n\t\t\treturn;\n\t\t}\n\t\tif (this.isConnected && this.#scene) this.#remount();\n\t}\n\t/** Wire the scrubber/time playhead subscription when controls exist, unwire\n\t* when they don't \u2014 against the existing playhead, so toggling controls never\n\t* disturbs playback position. */\n\t#syncControlsSubscription() {\n\t\tif (this.#controls && !this.#unsubscribe && this.#playhead) {\n\t\t\tthis.#unsubscribe = this.#playhead.subscribe(() => {\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tif (!this.#controls) return;\n\t\t\t\t\tthis.#syncReadout();\n\t\t\t\t\tthis.#syncButton();\n\t\t\t\t});\n\t\t\t});\n\t\t\tthis.#syncReadout();\n\t\t\tthis.#syncButton();\n\t\t} else if (!this.#controls && this.#unsubscribe) {\n\t\t\tthis.#unsubscribe();\n\t\t\tthis.#unsubscribe = null;\n\t\t}\n\t}\n\t/** Build the controls subtree + listeners on demand; tear them down when gone. */\n\t#syncControls() {\n\t\tconst want = this.hasAttribute(\"controls\");\n\t\tif (want && !this.#controls) this.#buildControls();\n\t\telse if (!want && this.#controls) this.#destroyControls();\n\t}\n\t#buildControls() {\n\t\tconst div = document.createElement(\"div\");\n\t\tdiv.className = \"controls\";\n\t\tdiv.setAttribute(\"part\", \"controls\");\n\t\tconst button = document.createElement(\"button\");\n\t\tbutton.setAttribute(\"part\", \"button\");\n\t\tbutton.setAttribute(\"aria-label\", \"Play or pause\");\n\t\tbutton.textContent = \"Play\";\n\t\tconst scrubber = document.createElement(\"input\");\n\t\tscrubber.setAttribute(\"part\", \"scrubber\");\n\t\tscrubber.type = \"range\";\n\t\tscrubber.min = \"0\";\n\t\tscrubber.max = \"1\";\n\t\tscrubber.step = \"0.0001\";\n\t\tscrubber.value = \"0\";\n\t\tscrubber.setAttribute(\"aria-label\", \"Seek\");\n\t\tconst time = document.createElement(\"span\");\n\t\ttime.className = \"time\";\n\t\ttime.setAttribute(\"part\", \"time\");\n\t\tconst onClick = () => {\n\t\t\tconst player = this.#mounted?.player;\n\t\t\tif (!player) return;\n\t\t\tif (player.playing) player.pause();\n\t\t\telse player.play();\n\t\t\tthis.#syncButton();\n\t\t};\n\t\tconst onInput = () => {\n\t\t\tconst player = this.#mounted?.player;\n\t\t\tif (!player) return;\n\t\t\tthis.#scrubbing = true;\n\t\t\tplayer.pause();\n\t\t\tplayer.seek(parseFloat(scrubber.value) * player.duration);\n\t\t\tthis.#scrubbing = false;\n\t\t\tthis.#syncButton();\n\t\t};\n\t\tbutton.addEventListener(\"click\", onClick);\n\t\tscrubber.addEventListener(\"input\", onInput);\n\t\tdiv.append(button, scrubber, time);\n\t\tthis.#shadow.append(div);\n\t\tthis.#controls = {\n\t\t\troot: div,\n\t\t\tbutton,\n\t\t\tscrubber,\n\t\t\ttime,\n\t\t\tonClick,\n\t\t\tonInput\n\t\t};\n\t\tthis.#syncReadout();\n\t\tthis.#syncButton();\n\t}\n\t#destroyControls() {\n\t\tconst c = this.#controls;\n\t\tif (!c) return;\n\t\tc.button.removeEventListener(\"click\", c.onClick);\n\t\tc.scrubber.removeEventListener(\"input\", c.onInput);\n\t\tc.root.remove();\n\t\tthis.#controls = null;\n\t}\n\t#teardown() {\n\t\tthis.#unsubscribe?.();\n\t\tthis.#unsubscribe = null;\n\t\tthis.#mounted?.dispose();\n\t\tthis.#mounted = null;\n\t\tthis.#playhead = null;\n\t}\n\t#remount() {\n\t\tthis.#teardown();\n\t\tif (!this.#scene || !this.isConnected) return;\n\t\tconst scene = this.#scene.createScene();\n\t\tthis.#canvas.width = scene.size.w;\n\t\tthis.#canvas.height = scene.size.h;\n\t\tconst loop = this.hasAttribute(\"pingpong\") || this.hasAttribute(\"yoyo\") ? { mode: \"alternate\" } : this.hasAttribute(\"loop\");\n\t\tthis.#mounted = mount(scene, this.#scene.timeline, this.#canvas, {\n\t\t\tloop,\n\t\t\tautoplay: this.hasAttribute(\"autoplay\")\n\t\t});\n\t\tthis.#playhead = scene.playhead;\n\t\tthis.#syncControlsSubscription();\n\t}\n\t#syncReadout() {\n\t\tconst c = this.#controls;\n\t\tconst player = this.#mounted?.player;\n\t\tif (!c || !player) return;\n\t\tconst t = this.#playhead?.peek() ?? 0;\n\t\tc.time.textContent = `${t.toFixed(2)} / ${player.duration.toFixed(2)}s`;\n\t\tif (!this.#scrubbing && player.duration > 0) c.scrubber.value = String(t / player.duration);\n\t}\n\t#syncButton() {\n\t\tconst c = this.#controls;\n\t\tif (!c) return;\n\t\tconst playing = this.#mounted?.player.playing ?? false;\n\t\tc.button.textContent = playing ? \"Pause\" : \"Play\";\n\t}\n};\n/** Define <gs-player> (idempotent). Importing this module defines it. */\nfunction defineGsPlayer(tagName = \"gs-player\") {\n\tif (!customElements.get(tagName)) customElements.define(tagName, GsPlayerElement);\n}\ndefineGsPlayer();\n//#endregion\nexport { GsPlayerElement, defineGsPlayer };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["index_exports", "__export", "ALL_FILTER_KINDS", "BakeError", "BindTypeMismatchError", "Canvas2DBackend", "Circle", "CircularDependencyError", "ClipError", "ColdAssetError", "ColorParseError", "Custom", "DEFAULT_EASE", "DL_SNAPSHOT_VERSION", "DeterminismViolationError", "DlSnapshotError", "DuplicateNodeIdError", "EachError", "FilterValidationError", "FollowPath", "FontValidationError", "Group", "GsPlayerElement", "Highlight", "IDENTITY", "ImageNode", "LayoutEngineMissingError", "MEASURE_QUANTUM_PX", "MESH_DOWNSCALE", "MESH_SHEPARD_POWER", "MESH_SIGMA", "MorphError", "NODE_TAXONOMY", "Node", "Path", "PositionError", "PresenceError", "Raster2D", "Rect", "ReservedNodeIdError", "ShaderEffect", "SidecarVersionError", "SketchValidationError", "TARGET_PATH", "TargetOverlapError", "Text", "TextCursor", "TimelineValidationError", "TokenHighlight", "TokenMatchError", "TrackValidationError", "UnboundTargetError", "UnknownEasingError", "UnknownValueTypeError", "UnresolvableTargetError", "ValueTypeInferenceError", "Video", "WriteDuringEvaluationError", "applyToPoint", "arcLength", "assignKeyIds", "audioOffsetSamples", "auditCacheCold", "bake", "bakeCheckpointed", "batch", "beginReadPhase", "bindScene", "bindTimeline", "booleanType", "breakLines", "buildFontRegistry", "buildTimeline", "clip", "clipList", "clockDriver", "coercePathData", "collapseReplacer", "collectLocalizedTextUsages", "collectTextUsages", "colorType", "compileTimeline", "computed", "createDisplayListBuilder", "createPlayer", "createPlayhead", "createScene", "cubicBezier", "cubicBezierDerivative", "defineGsPlayer", "deleteSidecarTrack", "diffDisplayLists", "drawOn", "drawOnEach", "driftLoop", "each", "easingDerivatives", "easings", "emitDevWarning", "emptySidecar", "endReadPhase", "estimatingMeasurer", "evaluate", "evaluateAt", "filtersToCanvasFilter", "flatten", "followPath", "fontString", "formatColor", "formatDisplayDiff", "fromTRS", "getLayoutEngine", "getTimelineCallbacks", "getValueType", "glow", "hachureLines", "hashKeys", "highlight", "inReadPhase", "inferValueType", "invert", "isDurationEditable", "isEditableNodeId", "isExemptFamily", "key", "lerpColor", "matEquals", "matchTokenRun", "mediaPrefersReducedMotion", "mergeSidecar", "mergeSidecarDetailed", "meshRasterSize", "migrateSidecar", "morph", "motionPath", "mount", "multiply", "namedEasing", "normalizeEditedKeys", "numberType", "oklabToRgba", "paintType", "parseCmap", "parseColor", "parseDisplaySnapshot", "parseSvgPathData", "pathFromSegs", "pathFromSvg", "pathLength", "pathType", "planReducedMotion", "pointAtLength", "popIn", "presence", "pulse", "quantize", "random", "rasterizeMesh", "registerValueType", "reprOf", "requireLayoutEngine", "resolveAnchor", "resolveEase", "resolveEaseDerivative", "resolveSketch", "resolveTweenTarget", "revealSchedule", "rgbaToOklab", "roughen", "roundedRectSegs", "sampleTrack", "scrollDriver", "segmentGraphemes", "segmentWords", "serializeDisplayList", "setDefaultMeasurer", "setDevWarning", "setLayoutEngine", "setScheduler", "setShaderRunner", "setSidecarTrack", "signal", "sketchStrokes", "slideIn", "spring", "springEasing", "springEasingDerivative", "springPresets", "springTo", "stagger", "stringType", "swapOnHmr", "synchronousScheduler", "targetNodeId", "textCursor", "timeline", "tokenHighlight", "track", "transitionToClip", "typewriter", "untracked", "validateFilters", "validateFonts", "validateHachure", "validateSceneFonts", "validateSketch", "validateTrack", "vec2ArcType", "vec2Equals", "vec2Signal", "vec2Type", "velocityAt", "withDeterminismGuards", "c2", "c3", "c4", "c5", "bounceOut", "easings", "bounceOutD", "LN2", "easingDerivatives", "theta", "amp", "phi", "psi", "DEFAULT_EASE", "bezierKernel", "p1x", "p1y", "p2x", "p2y", "ax", "bx", "cx", "ay", "by", "cy", "sampleX", "u", "sampleY", "sampleDX", "x", "i", "err", "d", "lo", "hi", "cubicBezier", "k", "t", "cubicBezierDerivative", "dx", "UnknownEasingError", "name", "namedEasing", "fn", "DEFAULT_SETTLE_TOLERANCE", "params", "cfg", "_a", "mass", "rawDerivative", "w0", "zeta", "wd", "s", "r1", "r2", "rawValue", "duration", "opts", "tol", "mid", "value", "retarget", "x0", "v0", "value0", "velocity0", "envelope", "b", "tau", "c2v", "rp", "rm", "cp", "cm", "eps", "guard", "spring", "springPresets", "springEasing", "p", "springEasingDerivative", "scale", "devWarn", "msg", "setDevWarning", "emitDevWarning", "message", "HEX_RE", "RGB_RE", "ColorParseError", "input", "parseColor", "hex", "h", "c", "n", "rgb", "alphaRaw", "a", "formatColor", "clampByte", "v", "base", "srgbToLinear", "linearToSrgb", "rgbaToOklab", "r", "g", "l", "m", "oklabToRgba", "lerpColor", "from", "to", "mix", "y", "registry", "registerValueType", "vt", "UnknownValueTypeError", "id", "getValueType", "reprOf", "_b", "numberType", "vec2Equals", "vec2Type", "vec2ArcType", "ra", "rb", "angA", "dAng", "ang", "colorType", "discrete", "stringType", "booleanType", "lerpV", "pathTopologyMatches", "ca", "cb", "warnedPathTopology", "pathType", "j", "eq", "lerpN", "lerpPt", "transparentOf", "color", "__spreadProps", "__spreadValues", "safeLerpColor", "e", "liftColor", "shape", "stops", "interp", "warnedPaintShape", "paintSnap", "stopsEqual", "paintType", "_c", "_d", "points", "pa", "pb", "bg", "A", "B", "sa", "q", "ValueTypeInferenceError", "isContour", "isPaint", "inferValueType", "TrackValidationError", "target", "validateTrack", "track", "prev", "cur", "key", "easeOrOpts", "springTo", "endT", "stagger", "tracks", "delay", "at", "tr", "type", "keys", "resolveEase", "spec", "warnedNumericDerivative", "resolveEaseDerivative", "samplerStates", "state", "easeFor", "findSegment", "hint", "velocityAt", "zero", "arrival", "segDur", "eased", "sampleTrack", "easedT", "TARGET_PATH", "UnresolvableTargetError", "targetNodeId", "slash", "isEditableNodeId", "resolveTweenTarget", "path", "u16", "dv", "off", "u32", "encodingScore", "platform", "encoding", "parseFormat4", "base", "into", "segCountX2", "segCount", "endOff", "startOff", "deltaOff", "rangeOff", "i", "end", "start", "idDelta", "idRangeOffset", "c", "glyph", "g", "parseFormat12", "declared", "maxGroups", "nGroups", "startChar", "endChar", "startGlyph", "parseCmap", "bytes", "out", "sfntOff", "numTables", "cmapOff", "rec", "nSub", "bestOff", "bestScore", "subOff", "score", "format", "e", "timeline", "init", "_a", "doc", "TimelineValidationError", "message", "validateSpringKeys", "tr", "i", "k", "expected", "spring", "audioOffsetSamples", "at", "sampleRate", "rebaseKeys", "keys", "timeScale", "__spreadProps", "__spreadValues", "flatten", "unit", "out", "counter", "_b", "validateTrack", "child", "scale", "childUnit", "coalesce", "entries", "byTarget", "existing", "start", "end", "existingStart", "existingEnd", "kept", "emitDevWarning", "a", "b", "result", "target", "track", "isDurationEditable", "childExtent", "computeDuration", "max", "last", "m", "compileTimeline", "flat", "tracks", "labels", "markers", "audio", "visitChildren", "children", "_c", "_d", "_e", "base", "childScale", "name", "t", "clip", "MAIN", "SidecarVersionError", "version", "emptySidecar", "migrateSidecar", "main", "hashKeys", "s", "h", "assignKeyIds", "setSidecarTrack", "timelineId", "type", "codeBaselineKeys", "isEditableNodeId", "targetNodeId", "TrackValidationError", "tl", "entry", "deleteSidecarTrack", "_removed", "rest", "__objRest", "__restKey", "reresolveDerived", "mergeSidecarDetailed", "code", "sidecar", "overlay", "drift", "orphans", "merged", "codeLabels", "shadowed", "n", "mergeSidecar", "normalizeEditedKeys", "pass", "ease", "synchronousScheduler", "flush", "scheduler", "pending", "batchDepth", "flushing", "flushScheduled", "MAX_FLUSH_PASSES", "setScheduler", "next", "prev", "requestFlush", "enqueueNotification", "cb", "runFlush", "drain", "thrown", "passes", "batchCbs", "err", "beginNotify", "endNotify", "batch", "fn", "activeConsumer", "readPhaseDepth", "WriteDuringEvaluationError", "CircularDependencyError", "beginReadPhase", "endReadPhase", "inReadPhase", "SignalNode", "init", "__publicField", "_a", "_b", "dep", "level", "d", "wasClean", "i", "prevConsumer", "makeCallable", "node", "extra", "sig", "signal", "initial", "options", "v", "computed", "untracked", "vec2Signal", "ix", "iy", "x", "y", "compound", "a", "b", "baseX", "baseY", "c", "value", "facesOf", "family", "ref", "f", "nearestWeight", "faces", "weight", "best", "bestDist", "dist", "buildFontRegistry", "assets", "families", "out", "entry", "style", "styled", "FontValidationError", "report", "formatReport", "GENERIC_FAMILIES", "isExemptFamily", "osFamilies", "codePoints", "text", "ch", "cp", "parts", "m", "cps", "validateFonts", "usages", "registry", "cmaps", "mode", "unregistered", "missing", "usage", "exempt", "chain", "fam", "set", "emitDevWarning", "PositionError", "pos", "detail", "peekBase", "target", "timelineCallbacks", "getTimelineCallbacks", "doc", "buildTimeline", "build", "insertions", "labels", "__spreadValues", "children", "markers", "callbacks", "durationEditable", "prevStart", "prevEnd", "callCount", "resolvePosition", "at", "rel", "labelRel", "name", "offset", "builder", "opts", "ease", "isSpring", "duration", "spring", "TimelineValidationError", "start", "ins", "resolveTweenTarget", "from", "to", "targets", "spec", "n", "base", "rankOf", "maxDelay", "tweenOpts", "t", "child", "scale", "compileTimeline", "subs", "gap", "time", "sub", "data", "merged", "last", "nodeId", "targetNodeId", "isEditableNodeId", "byTarget", "list", "tracks", "keys", "editable", "prevValue", "first", "lastKey", "fromKey", "deduped", "k", "tr", "inferValueType", "timeline", "__spreadProps", "_c", "_pos", "__objRest", "arg", "createPlayhead", "UnboundTargetError", "BindTypeMismatchError", "got", "expected", "prop", "want", "hint", "bindTimeline", "compiled", "resolve", "playhead", "bound", "samplers", "expects", "gotRepr", "reprOf", "e", "sampleTrack", "velocityAt", "evaluateAt", "read", "random", "seed", "BakeError", "emit", "acc", "sampled", "path", "toTracks", "bake", "cfg", "rng", "dt", "frames", "world", "bakeCheckpointed", "totalFrames", "draws", "baseRng", "countingRng", "rngAt", "targetDraws", "r", "checkpoints", "simulatedTo", "ensureSimulatedTo", "frame", "fromFrame", "toFrame", "cpFrame", "w", "IDENTITY", "z", "v", "multiply", "m1", "m2", "a1", "b1", "c1", "d1", "e1", "f1", "a2", "b2", "c2", "d2", "e2", "f2", "fromTRS", "position", "rotationDeg", "scale", "r", "cos", "sin", "sx", "sy", "invert", "m", "a", "b", "c", "d", "e", "f", "det", "ia", "ib", "ic", "id", "applyToPoint", "p", "matEquals", "collapseReplacer", "_key", "value", "commandView", "cmd", "resources", "out", "k", "stable", "diffFields", "changes", "keys", "diffDisplayLists", "deltas", "n", "ca", "cb", "va", "vb", "sizeDiffers", "__spreadValues", "formatDisplayDiff", "diff", "_a", "_b", "_c", "_d", "lines", "op", "DL_SNAPSHOT_VERSION", "serializeDisplayList", "dl", "snapshot", "DlSnapshotError", "message", "parseDisplaySnapshot", "json", "doc", "FilterValidationError", "FILTER_KINDS", "validateFilters", "filters", "filtersToCanvasFilter", "glow", "color", "radius", "intensity", "layers", "i", "commandResourceIds", "fnv1a", "s", "h", "createDisplayListBuilder", "size", "commands", "interned", "res", "hit", "start", "end", "localIds", "usedResources", "remap", "local", "sliceCmds", "__spreadProps", "key", "MEASURE_QUANTUM_PX", "quantize", "defaultMeasurer", "setDefaultMeasurer", "fallbackMeasurer", "estimatingMeasurer", "text", "font", "wordSegmenter", "segmentWords", "raw", "glued", "seg", "w", "graphemeSegmenter", "segmentGraphemes", "breakLines", "maxWidth", "measurer", "paragraphs", "para", "words", "line", "word", "candidate", "ANCHOR_PRESETS", "resolveAnchor", "spec", "preset", "initScalar", "sig", "init", "initVec2", "_warnedAnchor", "Node", "props", "__publicField", "__privateAdd", "vec2Signal", "signal", "computed", "trs", "path", "expects", "TARGET_PATH", "ax", "ay", "__privateGet", "__privateSet", "emitDevWarning", "ctx", "opacity", "isIdentity", "shader", "group", "wantsKey", "pushIdx", "drawStart", "KINDS", "SketchValidationError", "validateSketch", "resolveSketch", "_e", "_f", "_g", "_h", "_i", "_j", "_k", "_l", "_m", "cubic", "p0", "p1", "t", "mt", "quad", "ellipse", "cx", "cy", "rx", "ry", "rot", "ang", "ex", "ey", "flatten", "segs", "steps", "polys", "cur", "px", "py", "ensure", "x", "y", "a0", "begin", "arcLength", "poly", "len", "validateHachure", "hachureLines", "rng", "minX", "minY", "maxX", "maxY", "sa", "toRot", "fromRot", "rMinX", "rMinY", "rMaxX", "rMaxY", "corners", "rough", "jit", "roughen", "style", "resolved", "strokes", "pass", "pts", "bx", "by", "dx", "dy", "bow", "mx", "my", "hashStr", "sketchStrokes", "seed", "random", "Custom", "roundedRectSegs", "HALF", "_structure", "Group", "child", "sorted", "node", "toPaint", "fill", "Shape", "initProp", "stroke", "width", "reveal", "emitDrawOnStroke", "ink", "clipPath", "hatch", "hp", "drawOn", "passSegs", "splitContours", "paint", "baseStroke", "contour", "coercePathData", "data", "pathFromSegs", "contours", "push", "inT", "outT", "last", "qx", "qy", "l", "Rect", "Circle", "Path", "coerced", "vx", "vy", "candidates", "ImageNode", "image", "Video", "mediaT", "Text", "widest", "firstLine", "ascent", "step", "boxes", "met", "lineW", "lineX", "prefix", "lead", "before", "after", "g", "total", "revealRaw", "shown", "remaining", "gs", "masked", "show", "revealSchedule", "src", "marks", "li", "need", "time", "LayoutEngineMissingError", "engine", "setLayoutEngine", "e", "getLayoutEngine", "requireLayoutEngine", "NODE_TAXONOMY", "Highlight", "Node", "props", "_a", "_b", "__publicField", "init$2", "signal", "out", "ctx", "progress", "px", "py", "boxes", "b", "total", "sum", "tm", "matEquals", "IDENTITY", "color", "remaining", "fill", "r", "path", "roundedRectSegs", "highlight", "text", "__spreadProps", "__spreadValues", "sig", "v", "TextCursor", "_c", "_d", "init$1", "head", "on", "typing", "period", "textCursor", "DEFAULT_PER_CHAR", "typewriter", "target", "edits", "opts", "start", "globalPer", "gap", "t", "shown", "keys", "key", "marks", "steps", "ei", "edit", "stepStart", "per", "segmentGraphemes", "value", "i", "removed", "track", "EachError", "message", "mix", "seed", "h", "JITTER_SALT", "placeAt", "layout", "_e", "_f", "_g", "_h", "_i", "_j", "_k", "_l", "align", "x0", "y0", "cols", "rows", "order", "col", "row", "gapX", "gapY", "spanX", "spanY", "radius", "cx", "cy", "theta", "distributeFn", "distribute", "mid", "staggerFn", "motion", "n", "s", "each", "factory", "baseSeed", "hashStr", "box", "ox", "oy", "children", "places", "seen", "id", "frac", "random", "child", "node", "Group", "tracks", "end", "m", "at", "rngI", "overrides", "applyOpts", "drawOn", "duration", "ease", "drawOnEach", "targets", "delay", "stagger", "DeterminismViolationError", "api", "bannedSlots", "g", "slots", "withDeterminismGuards", "mode", "fn", "saved", "warned", "args", "emitDevWarning", "DuplicateNodeIdError", "ReservedNodeIdError", "indexNodes", "root", "into", "measurerSource", "createScene", "init", "nodes", "playhead", "createPlayhead", "measurer", "fallbackMeasurer", "slash", "bindings", "bindScene", "scene", "doc", "perScene", "entry", "compiled", "compileTimeline", "bindTimeline", "evaluate", "fps", "evaluateAt", "createDisplayListBuilder", "hashDisplayList", "dl", "collapseReplacer", "auditCacheCold", "warm", "cold", "a", "frame", "ctxA", "ctxB", "groupFallback", "nodeA", "nodeB", "ea", "eb", "dlA", "dlB", "first", "diffDisplayLists", "ALL_FILTER_KINDS", "clamp01", "cubicPoint", "p0", "p1", "p2", "p3", "mt", "c", "d", "toCubics", "ct", "motionPath", "cubics", "pts", "cum", "prev", "acc", "cub", "k", "p", "locate", "span", "f", "tangentAt", "dx", "dy", "len", "pathLength", "pointAtLength", "FollowPath", "sOpts", "getPath", "Path", "cachedPath", "cachedSampler", "sampler", "pv", "offset", "followPath", "TokenMatchError", "stripWs", "matchTokenRun", "token", "occurrence", "want", "j", "TokenHighlight", "spec", "index", "run", "initVec", "vec2Signal", "runText", "from", "to", "pushedTransform", "opacity", "lineRects", "last", "cur", "grouped", "scale", "q", "fillW", "w", "x", "y", "rad", "tokenHighlight", "collectTextUsages", "visit", "Text", "nodeIdOf", "collectLocalizedTextUsages", "tr", "validateSceneFonts", "loadBytes", "options", "registry", "buildFontRegistry", "usages", "wanted", "u", "cmaps", "family", "face", "bytes", "parseCmap", "validateFonts", "ColdAssetError", "assetId", "detail", "mediaT", "ShaderEffect", "map", "name", "uniforms", "smoothstep", "GAUSS_K", "GAUSS_NORM", "gaussianEase", "densifyStops", "stops", "o0", "seg", "lerpColor", "MESH_DOWNSCALE", "MESH_SHEPARD_POWER", "MESH_SIGMA", "MESH_EPS", "MESH_MAX_DIM", "rasterizeMesh", "mesh", "rgbaToOklab", "parseColor", "bg", "gaussian", "twoSigmaSq", "wsum", "L", "A", "B", "alpha", "pinned", "du", "dv", "d2", "weight", "rgba", "oklabToRgba", "inv", "o", "meshRasterSize", "bw", "bh", "warnedMeshStroke", "meshRepresentativeColor", "paint", "resolveFill", "bounds", "fx", "fy", "tx", "ty", "fontString", "font", "RASTER_CACHE_CAP", "transformKey", "filterOutset", "filters", "growBounds", "accumulateRect", "layer", "x1", "y1", "segsBounds", "segs", "pt", "Raster2D", "host", "shaderCaps", "cacheEnabled", "image", "source", "res", "img", "e", "resources", "pooled", "canvas", "prior", "oldest", "evicted", "hit", "buf", "tile", "tileCtx", "parent", "parentLayer", "drawable", "unbounded", "shaderReplaced", "blend", "filter", "hasFilter", "outset", "clippable", "clip", "list", "base", "layers", "ctxOf", "top", "mat", "matStack", "commands", "ci", "cmd", "multiply", "sb", "width", "dw", "dh", "lruKey", "filtersToCanvasFilter", "depth", "layerCanvas", "layerCtx", "replaced", "shaderRunner", "setShaderRunner", "runner", "createLayerCanvas", "w", "h", "canvas", "MAX_TEXTURE", "Canvas2DBackend", "target", "opts", "__publicField", "_a", "Raster2D", "c", "layer", "shader", "ALL_FILTER_KINDS", "assetId", "image", "source", "text", "font", "ctx", "fontString", "m", "list", "ClipError", "message", "assertOverrideType", "target", "resolvedType", "value", "got", "inferValueType", "e", "stringFamily", "t", "channelDuration", "ch", "resolveChannelTarget", "channel", "path", "resolveTweenTarget", "override", "compileChannel", "startSec", "speed", "_a", "type", "lastIdx", "track", "k", "i", "overridden", "out", "ease", "clip", "spec", "names", "duration", "name", "apply", "opts", "overrides", "tracks", "end", "trackTarget", "clipList", "c", "targets", "delay", "at", "_b", "_stagger", "applyOpts", "__objRest", "r", "popIn", "d", "key", "slideIn", "edge", "_c", "dist", "from", "pulse", "peak", "driftLoop", "a", "MorphError", "assertFiniteBox", "label", "b", "v", "nodeTarget", "prop", "id", "TARGET_PATH", "morph", "to", "crossfade", "metric", "base", "fromScale", "toScale", "fromCenter", "toCenter", "channels", "targetMap", "PresenceError", "DEFAULT_FADE", "defaultEnter", "defaultExit", "isClip", "isVec2", "transitionToClip", "dir", "easeArg", "offsetEndpoints", "scaleEndpoints", "edgeVec", "offset", "displaced", "origin", "scale", "broadcast", "resolveTransition", "fallback", "effectiveDuration", "stableSortByT", "keys", "partitionOpacity", "opacityTarget", "rest", "opacityKeys", "tr", "presence", "nodeId", "_d", "show", "hide", "lastSlash", "nodeIdStr", "enter", "exit", "enterRes", "enterEnd", "exitDur", "exitStart", "exitRes", "enterOpacity", "enterRest", "exitOpacity", "exitRest", "bareGuard", "overlay", "__spreadProps", "__spreadValues", "sorted", "deduped", "last", "parseSvgPathData", "d", "_a", "tokens", "segs", "i", "cx", "cy", "sx", "sy", "prevCmd", "num", "isCmd", "t", "cmd", "rel", "x", "y", "x1", "y1", "x2", "y2", "pathFromSvg", "pathFromSegs", "clockDriver", "handle", "running", "write", "origin", "tick", "nowMs", "scrollDriver", "opts", "_a", "axis", "listener", "el", "ctx", "_b", "range", "progress", "max", "pos", "doc", "p", "TargetOverlapError", "overlaps", "createPlayer", "init", "_c", "_d", "_e", "_f", "_g", "playhead", "liveDuration", "markers", "driver", "loop", "background", "visibility", "callbacks", "cueCallbacks", "rate", "playing", "playingSig", "signal", "setPlaying", "v", "driverRunning", "ownTargets", "machines", "base", "elapsedOrigin", "lastElapsed", "loopsDone", "resolveFinished", "fireMarkers", "from", "to", "forward", "m", "cb", "kind", "settle", "completed", "resolve", "onElapsed", "elapsed", "prev", "t", "lo", "hi", "loopCfg", "maxLoops", "end", "ensureDriver", "r", "playOpts", "next", "machine", "i", "name", "set", "planReducedMotion", "mode", "prefersReduced", "duration", "autoplayRequested", "mediaPrefersReducedMotion", "mount", "initialScene", "initialDoc", "canvas", "scene", "compiled", "compileTimeline", "backend", "Canvas2DBackend", "player", "renderNow", "evaluate", "scheduled", "schedule", "unsubscribe", "loadFonts", "forDoc", "registry", "buildFontRegistry", "f", "face", "validateSceneFonts", "url", "resp", "e", "__spreadValues", "plan", "recompiled", "swapOnHmr", "mounted", "initialTimeline", "rerun", "prevLabels", "mod", "nextLabels", "dropped", "TEMPLATE", "_a", "_mounted", "_scene", "_unsubscribe", "_scrubbing", "_playhead", "_shadow", "_canvas", "_controls", "_GsPlayerElement_instances", "syncControlsSubscription_fn", "syncControls_fn", "buildControls_fn", "destroyControls_fn", "teardown_fn", "remount_fn", "syncReadout_fn", "syncButton_fn", "GsPlayerElement", "__privateAdd", "root", "__privateSet", "__privateGet", "mod", "__privateMethod", "_b", "name", "want", "div", "button", "scrubber", "time", "onClick", "player", "onInput", "c", "scene", "loop", "mount", "_c", "t", "playing", "__publicField", "defineGsPlayer", "tagName"]
|
|
7
7
|
}
|