@sebastianwessel/isostate 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/animation/animation-engine.d.ts +1 -0
  2. package/dist/animation/animation-engine.d.ts.map +1 -1
  3. package/dist/animation/controller.d.ts +34 -2
  4. package/dist/animation/controller.d.ts.map +1 -1
  5. package/dist/browser/isostate.runtime.js +4 -4
  6. package/dist/browser/isostate.runtime.js.map +11 -10
  7. package/dist/chunks/{index-C3qcXbPI.js → index-CB6XEsbY.js} +257 -43
  8. package/dist/chunks/index-CB6XEsbY.js.map +1 -0
  9. package/dist/chunks/{rendering-engine-BUUV3Qq-.js → rendering-engine-nkqYx0qc.js} +215 -36
  10. package/dist/chunks/rendering-engine-nkqYx0qc.js.map +1 -0
  11. package/dist/chunks/{scene-parser-B9SPDLYs.js → scene-parser-F69XGE0l.js} +87 -32
  12. package/dist/chunks/scene-parser-F69XGE0l.js.map +1 -0
  13. package/dist/dsl/browser.js +1 -1
  14. package/dist/dsl/index.js +1 -1
  15. package/dist/dsl/scene-parser.d.ts.map +1 -1
  16. package/dist/dsl/scene-validator.d.ts.map +1 -1
  17. package/dist/editor-support/index.js +1 -1
  18. package/dist/index.d.ts +4 -1
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +470 -4
  21. package/dist/index.js.map +1 -1
  22. package/dist/rendering/animation-css.d.ts.map +1 -1
  23. package/dist/rendering/rendering-engine.d.ts +9 -0
  24. package/dist/rendering/rendering-engine.d.ts.map +1 -1
  25. package/dist/rendering/theme.d.ts +4 -0
  26. package/dist/rendering/theme.d.ts.map +1 -1
  27. package/dist/runtime/diagnostics-overlay.d.ts +29 -0
  28. package/dist/runtime/diagnostics-overlay.d.ts.map +1 -0
  29. package/dist/runtime/export.d.ts +27 -0
  30. package/dist/runtime/export.d.ts.map +1 -0
  31. package/dist/runtime/index.d.ts +1 -0
  32. package/dist/runtime/index.d.ts.map +1 -1
  33. package/dist/runtime/index.js +2 -2
  34. package/dist/runtime/interactivity.d.ts +56 -0
  35. package/dist/runtime/interactivity.d.ts.map +1 -0
  36. package/dist/runtime/mount-scene.d.ts +11 -10
  37. package/dist/runtime/mount-scene.d.ts.map +1 -1
  38. package/dist/types/asset-registry.d.ts +1 -0
  39. package/dist/types/asset-registry.d.ts.map +1 -1
  40. package/dist/types/node.d.ts +14 -0
  41. package/dist/types/node.d.ts.map +1 -1
  42. package/dist/types/runtime-bundle.d.ts +35 -0
  43. package/dist/types/runtime-bundle.d.ts.map +1 -1
  44. package/dist/types/scene.d.ts +2 -0
  45. package/dist/types/scene.d.ts.map +1 -1
  46. package/package.json +1 -1
  47. package/dist/chunks/index-C3qcXbPI.js.map +0 -1
  48. package/dist/chunks/rendering-engine-BUUV3Qq-.js.map +0 -1
  49. package/dist/chunks/scene-parser-B9SPDLYs.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"rendering-engine-BUUV3Qq-.js","sources":["../../src/types/asset-registry.ts","../../src/utils/projection.ts","../../src/rendering/animation-css.ts","../../src/rendering/asset-node.ts","../../src/rendering/theme.ts","../../src/rendering/rendering-engine.ts"],"sourcesContent":["import type { AssetCategory, AssetDefinition, AssetRegistry, Theme } from \"./assets.ts\";\n\n// ── Built-in themes ────────────────────────────────────────────────────────\n\nconst BUILTIN_THEMES: Record<string, Record<string, string>> = {\n\tlight: {\n\t\t\"--color-top\": \"#e2e8f0\",\n\t\t\"--color-front\": \"#94a3b8\",\n\t\t\"--color-side\": \"#64748b\",\n\t\t\"--color-back\": \"#475569\",\n\t\t\"--color-leaf\": \"#15803d\",\n\t\t\"--color-trunk\": \"#78350f\",\n\t\t\"--color-accent\": \"#3b82f6\",\n\t},\n\tdark: {\n\t\t\"--color-top\": \"#334155\",\n\t\t\"--color-front\": \"#1e293b\",\n\t\t\"--color-side\": \"#0f172a\",\n\t\t\"--color-back\": \"#020617\",\n\t\t\"--color-leaf\": \"#166534\",\n\t\t\"--color-trunk\": \"#451a03\",\n\t\t\"--color-accent\": \"#60a5fa\",\n\t},\n\tbrand: {\n\t\t\"--color-top\": \"#c7d2fe\",\n\t\t\"--color-front\": \"#818cf8\",\n\t\t\"--color-side\": \"#6366f1\",\n\t\t\"--color-back\": \"#4338ca\",\n\t\t\"--color-leaf\": \"#22c55e\",\n\t\t\"--color-trunk\": \"#854d0e\",\n\t\t\"--color-accent\": \"#f59e0b\",\n\t},\n};\n\n/**\n * Resolve a theme name to its CSS variable map.\n * Returns undefined if the theme is not found.\n */\nexport function resolveTheme(name: string): Record<string, string> | undefined {\n\treturn BUILTIN_THEMES[name];\n}\n\n/**\n * Compose a new theme by extending an existing one with overrides.\n */\nexport function composeTheme(baseName: string, overrides: Record<string, string>): Theme {\n\tconst base = BUILTIN_THEMES[baseName];\n\tif (!base) {\n\t\treturn { name: baseName, vars: { ...overrides } };\n\t}\n\treturn { name: baseName, vars: { ...base, ...overrides } };\n}\n\n// ── Asset registry implementation ──────────────────────────────────────────\n\n/**\n * Default asset registry implementation.\n * Maps asset ids to definitions and supports category filtering.\n */\nexport class AssetRegistryImpl implements AssetRegistry {\n\tprivate _assets = new Map<string, AssetDefinition>();\n\n\tregister(asset: AssetDefinition): void {\n\t\tthis._assets.set(asset.id, asset);\n\t}\n\n\tget(id: string): AssetDefinition | undefined {\n\t\treturn this._assets.get(id);\n\t}\n\n\tgetAll(category?: AssetCategory): AssetDefinition[] {\n\t\tif (category) {\n\t\t\treturn [...this._assets.values()].filter((a) => a.category === category);\n\t\t}\n\t\treturn [...this._assets.values()];\n\t}\n\n\thas(id: string): boolean {\n\t\treturn this._assets.has(id);\n\t}\n\n\tremove(id: string): void {\n\t\tthis._assets.delete(id);\n\t}\n}\n\nexport function createAssetRegistry(assets: AssetDefinition[] = []): AssetRegistryImpl {\n\tconst registry = new AssetRegistryImpl();\n\tfor (const asset of assets) {\n\t\tregistry.register(asset);\n\t}\n\treturn registry;\n}\n\n/** Create a fresh registry populated with the built-in demo assets. */\nexport function createDefaultRegistry(): AssetRegistryImpl {\n\treturn createAssetRegistry([\n\t\t{\n\t\t\tid: \"iso-platform\",\n\t\t\tcategory: \"infrastructure\",\n\t\t},\n\t\t{\n\t\t\tid: \"iso-server\",\n\t\t\tcategory: \"equipment\",\n\t\t},\n\t\t{\n\t\t\tid: \"iso-database\",\n\t\t\tcategory: \"equipment\",\n\t\t},\n\t\t{\n\t\t\tid: \"iso-connector\",\n\t\t\tcategory: \"decoration\",\n\t\t},\n\t\t{\n\t\t\tid: \"iso-cloud\",\n\t\t\tcategory: \"decoration\",\n\t\t},\n\t]);\n}\n","/** Default cell size in pixels */\nexport const DEFAULT_CELL_SIZE = 64;\n\n/**\n * Calculate raw scene-space coordinates from isometric grid position.\n * Layout is applied separately by subtracting resolved bounds and adding padding.\n */\nexport function projectToRaw(gridX: number, gridY: number, cellSize: number): { rawX: number; rawY: number } {\n\treturn {\n\t\trawX: cellSize * (gridX - gridY) * 0.5,\n\t\trawY: cellSize * (gridX + gridY) * 0.25,\n\t};\n}\n\n/**\n * Calculate screen coordinates from raw isometric projection and resolved bounds.\n */\nexport function projectToScreen(\n\tgridX: number,\n\tgridY: number,\n\tcellSize: number,\n\tboundsMinX = 0,\n\tboundsMinY = 0,\n\tpaddingX = 0,\n\tpaddingY = 0,\n): { screenX: number; screenY: number } {\n\tconst { rawX, rawY } = projectToRaw(gridX, gridY, cellSize);\n\treturn {\n\t\tscreenX: rawX - boundsMinX + paddingX,\n\t\tscreenY: rawY - boundsMinY + paddingY,\n\t};\n}\n\n/** Calculate the screen size for an element based on its grid size. */\nexport function calculateVisualSize(gridSize: number, cellSize: number): number {\n\treturn cellSize * gridSize;\n}\n\n/** Calculate the element transform string for positioning and scaling. */\nexport function calculateTransform(screenX: number, screenY: number, visualSize: number, cellSize: number): string {\n\tconst scale = visualSize / cellSize;\n\treturn `translate(${screenX}px, ${screenY}px) scale(${scale})`;\n}\n","/** Build built-in entry, exit, ambient, and reduced-motion CSS keyframes. */\nexport function buildKeyframeCSS(): string {\n\treturn [\n\t\t\"@keyframes iso-anim-fade-in{from{opacity:0}to{opacity:1}}\",\n\t\t\"@keyframes iso-anim-fade-in-grow{from{opacity:0;scale:.01}to{opacity:1;scale:1}}\",\n\t\t\"@keyframes iso-anim-fall-in{from{opacity:0;translate:0 -40px}to{opacity:1;translate:0 0}}\",\n\t\t\"@keyframes iso-anim-rise-from-ground{from{opacity:0;translate:0 40px}to{opacity:1;translate:0 0}}\",\n\t\t\"@keyframes iso-anim-slide-in-left{from{opacity:0;translate:-60px 0}to{opacity:1;translate:0 0}}\",\n\t\t\"@keyframes iso-anim-slide-in-right{from{opacity:0;translate:60px 0}to{opacity:1;translate:0 0}}\",\n\t\t\"@keyframes iso-anim-flip-in{from{opacity:1;scale:0 1}to{opacity:1;scale:1 1}}\",\n\t\t\"@keyframes iso-anim-fade-out{from{opacity:1}to{opacity:0}}\",\n\t\t\"@keyframes iso-anim-fade-out-shrink{from{opacity:1;scale:1}to{opacity:0;scale:.01}}\",\n\t\t\"@keyframes iso-anim-fall-through-ground{from{opacity:1;translate:0 0}to{opacity:0;translate:0 40px}}\",\n\t\t\"@keyframes iso-anim-rise-away{from{opacity:1;translate:0 0}to{opacity:0;translate:0 -40px}}\",\n\t\t\"@keyframes iso-anim-slide-out-left{from{opacity:1;translate:0 0}to{opacity:0;translate:-60px 0}}\",\n\t\t\"@keyframes iso-anim-slide-out-right{from{opacity:1;translate:0 0}to{opacity:0;translate:60px 0}}\",\n\t\t\"@keyframes iso-anim-flip-out{from{opacity:1;scale:1 1}to{opacity:0;scale:0 1}}\",\n\t\t\"@keyframes iso-anim-pulse{0%,100%{opacity:.7}50%{opacity:1}}\",\n\t\t\"@keyframes iso-anim-float{0%,100%{translate:0 0}50%{translate:0 -6px}}\",\n\t\t\"@keyframes iso-anim-shake{0%,25%,75%,100%{translate:0 0}50%{translate:3px 0}}\",\n\t\t\"@keyframes iso-anim-glow{0%,100%{filter:drop-shadow(0 0 2px rgba(255,255,255,.5))}50%{filter:drop-shadow(0 0 8px rgba(255,255,255,.9))}}\",\n\t\t\"@keyframes iso-anim-spin{from{rotate:0deg}to{rotate:360deg}}\",\n\t\t\"@keyframes iso-anim-blink{0%,49%{opacity:1}50%,100%{opacity:0}}\",\n\t\t\"@keyframes iso-connector-flow-route{from{stroke-dashoffset:0}to{stroke-dashoffset:calc(-1px * var(--iso-flow-distance,20))}}\",\n\t\t\"@keyframes iso-connector-flow-reverse{from{stroke-dashoffset:0}to{stroke-dashoffset:calc(1px * var(--iso-flow-distance,20))}}\",\n\t\t\".iso-connector-pattern-dashed .iso-connector-shaft,.iso-connector-pattern-dotted .iso-connector-shaft{--iso-flow-distance:20}\",\n\t\t\".iso-connector-direction-route .iso-connector-shaft.iso-ambient-flow{animation:iso-connector-flow-route 900ms linear infinite}\",\n\t\t\".iso-connector-direction-reverse .iso-connector-shaft.iso-ambient-flow{animation:iso-connector-flow-reverse 900ms linear infinite}\",\n\t\t\"@media (prefers-reduced-motion: reduce){.iso-element,.iso-connector{animation-duration:1ms!important}.iso-ambient-pulse,.iso-ambient-float,.iso-ambient-shake,.iso-ambient-glow,.iso-ambient-spin,.iso-ambient-blink,.iso-ambient-flow{animation:none!important}}\",\n\t].join(\"\\n\");\n}\n","import { RenderError } from \"../types/errors.ts\";\nimport type { LinePrimitive, PrimitiveContent, PrimitiveStyle, TextAlign, TextContent } from \"../types/node.ts\";\nimport type { CompiledSprite, RuntimeBundle } from \"../types/runtime-bundle.ts\";\nimport { projectToRaw } from \"../utils/projection.ts\";\n\nconst NS = \"http://www.w3.org/2000/svg\";\n\ntype ResolvedAsset = { url: string; anchor?: [number, number]; sprite?: CompiledSprite };\n\nexport type AssetResolver = (name: string) => ResolvedAsset | undefined;\n\nexport function createAssetResolver(bundle?: RuntimeBundle): AssetResolver {\n\tconst embedded = new Map<string, ResolvedAsset>();\n\tconst bundleAssets = bundle?.assets;\n\n\tif (bundleAssets && typeof bundleAssets === \"object\") {\n\t\tfor (const [name, asset] of Object.entries(bundleAssets)) {\n\t\t\tif (asset && typeof asset === \"object\" && typeof asset.url === \"string\") {\n\t\t\t\tembedded.set(name, { url: asset.url, anchor: asset.anchor, sprite: asset.sprite });\n\t\t\t}\n\t\t}\n\t}\n\n\treturn (name: string) => embedded.get(name);\n}\n\nexport function createAssetNode(asset: ResolvedAsset, assetName: string, cellSize: number): SVGGElement {\n\tif (asset.sprite) {\n\t\treturn createSpriteAssetNode(asset.url, assetName, cellSize, asset.sprite, asset.anchor);\n\t}\n\treturn createUrlAssetNode(asset.url, assetName, cellSize, asset.anchor);\n}\n\nexport function createTextAssetNode(\n\ttextContent: TextContent | undefined,\n\tassetName: string,\n\tcellSize: number,\n): SVGGElement {\n\tif (!textContent?.value) {\n\t\tthrow new RenderError(\"TEXT_CONTENT_MISSING\", `Text content is missing for built-in asset: ${assetName}`, {\n\t\t\tasset: assetName,\n\t\t});\n\t}\n\n\tconst group = document.createElementNS(NS, \"g\") as SVGGElement;\n\tconst text = document.createElementNS(NS, \"text\") as SVGTextElement;\n\tconst align = textContent.align ?? \"middle\";\n\tconst placement = textContent.placement ?? \"cell\";\n\tconst fontSize = textContent.fontSize ?? 12;\n\tconst lineHeight = textContent.lineHeight ?? 1.2;\n\tconst anchorX = textAnchorX(align, cellSize);\n\tconst vertical = textVerticalAnchor(placement, cellSize);\n\n\ttext.setAttribute(\"x\", String(anchorX));\n\ttext.setAttribute(\"y\", String(vertical.y));\n\ttext.setAttribute(\"text-anchor\", align);\n\ttext.setAttribute(\"dominant-baseline\", vertical.baseline);\n\ttext.setAttribute(\"font-family\", \"Arial, Helvetica, sans-serif\");\n\ttext.setAttribute(\"font-size\", String(fontSize));\n\ttext.setAttribute(\"font-weight\", String(textContent.fontWeight ?? 700));\n\ttext.setAttribute(\"fill\", textContent.fill ?? \"currentColor\");\n\n\tconst lines = normalizeTextLines(textContent.value);\n\tfor (const [index, line] of lines.entries()) {\n\t\tconst tspan = document.createElementNS(NS, \"tspan\") as SVGTSpanElement;\n\t\ttspan.setAttribute(\"x\", String(anchorX));\n\t\ttspan.setAttribute(\"dy\", index === 0 ? \"0\" : String(fontSize * lineHeight));\n\t\ttspan.textContent = line;\n\t\ttext.appendChild(tspan);\n\t}\n\n\tgroup.appendChild(text);\n\treturn group;\n}\n\nexport function createPrimitiveAssetNode(\n\tassetName: string,\n\tprimitive: PrimitiveContent | undefined,\n\tcellSize: number,\n): SVGGElement {\n\tconst group = document.createElementNS(NS, \"g\") as SVGGElement;\n\tswitch (assetName) {\n\t\tcase \"rectangle\":\n\t\t\tappendProjectedPolygon(group, rectanglePoints(), primitive?.rectangle, cellSize);\n\t\t\treturn group;\n\t\tcase \"polygon\":\n\t\t\tappendProjectedPolygon(group, primitive?.polygon?.points, primitive?.polygon, cellSize);\n\t\t\treturn group;\n\t\tcase \"line\":\n\t\t\tappendProjectedPolyline(group, primitive?.line, primitive?.line, cellSize);\n\t\t\treturn group;\n\t\tcase \"circle\":\n\t\t\tappendCircle(group, primitive?.circle, cellSize);\n\t\t\treturn group;\n\t\tdefault:\n\t\t\tthrow new RenderError(\"PRIMITIVE_ASSET_UNKNOWN\", `Unknown built-in primitive asset: ${assetName}`, {\n\t\t\t\tasset: assetName,\n\t\t\t});\n\t}\n}\n\nfunction textAnchorX(align: TextAlign, cellSize: number): number {\n\tif (align === \"start\") return -cellSize / 2;\n\tif (align === \"end\") return cellSize / 2;\n\treturn 0;\n}\n\nfunction textVerticalAnchor(placement: TextContent[\"placement\"], cellSize: number): { y: number; baseline: string } {\n\tif (placement === \"caption\") return { y: -cellSize, baseline: \"text-before-edge\" };\n\treturn { y: -cellSize / 2, baseline: \"middle\" };\n}\n\nfunction normalizeTextLines(value: string): string[] {\n\tconst normalized = value.replace(/\\r\\n?/g, \"\\n\").replace(/\\n$/, \"\");\n\treturn normalized.split(\"\\n\");\n}\n\nfunction rectanglePoints(): [number, number][] {\n\treturn [\n\t\t[0, 0],\n\t\t[1, 0],\n\t\t[1, 1],\n\t\t[0, 1],\n\t];\n}\n\nfunction appendProjectedPolygon(\n\tgroup: SVGGElement,\n\tpoints: [number, number][] | undefined,\n\tstyle: PrimitiveStyle | undefined,\n\tcellSize: number,\n): void {\n\tif (!points) return;\n\tconst polygon = document.createElementNS(NS, \"polygon\") as SVGPolygonElement;\n\tpolygon.setAttribute(\"points\", points.map((point) => projectLocalPoint(point, cellSize)).join(\" \"));\n\tapplyPrimitiveStyle(polygon, style, { fill: \"currentColor\", stroke: \"none\" });\n\tgroup.appendChild(polygon);\n}\n\nfunction appendProjectedPolyline(\n\tgroup: SVGGElement,\n\tline: LinePrimitive | undefined,\n\tstyle: PrimitiveStyle | undefined,\n\tcellSize: number,\n): void {\n\tif (!line?.points) return;\n\tconst polyline = document.createElementNS(NS, \"polyline\") as SVGPolylineElement;\n\tpolyline.setAttribute(\"points\", line.points.map((point) => projectLocalPoint(point, cellSize)).join(\" \"));\n\tpolyline.setAttribute(\"fill\", \"none\");\n\tpolyline.setAttribute(\"stroke-linecap\", line.lineCap ?? \"round\");\n\tpolyline.setAttribute(\"stroke-linejoin\", line.lineJoin ?? \"round\");\n\tapplyPrimitiveStyle(polyline, style, {\n\t\tfill: \"none\",\n\t\tstroke: \"currentColor\",\n\t});\n\tgroup.appendChild(polyline);\n}\n\nfunction appendCircle(group: SVGGElement, style: PrimitiveStyle | undefined, cellSize: number): void {\n\tconst center = projectLocalPoint([0.5, 0.5], cellSize);\n\tconst circle = document.createElementNS(NS, \"circle\") as SVGCircleElement;\n\tconst [cx, cy] = center.split(\",\").map(Number);\n\tcircle.setAttribute(\"cx\", String(cx));\n\tcircle.setAttribute(\"cy\", String(cy));\n\tcircle.setAttribute(\"r\", String(cellSize * 0.2));\n\tapplyPrimitiveStyle(circle, style, {\n\t\tfill: \"currentColor\",\n\t\tstroke: \"none\",\n\t});\n\tgroup.appendChild(circle);\n}\n\nfunction projectLocalPoint(point: [number, number], cellSize: number): string {\n\tconst projected = projectToRaw(point[0], point[1], cellSize);\n\tconst anchor = projectToRaw(1, 1, cellSize);\n\treturn `${projected.rawX - anchor.rawX},${projected.rawY - anchor.rawY}`;\n}\n\nfunction applyPrimitiveStyle(\n\tnode: SVGElement,\n\tstyle: PrimitiveStyle | undefined,\n\tdefaults: { fill: string; stroke: string },\n): void {\n\tnode.setAttribute(\"fill\", style?.fill ?? defaults.fill);\n\tnode.setAttribute(\"stroke\", style?.stroke ?? defaults.stroke);\n\tnode.setAttribute(\"stroke-width\", String(style?.strokeWidth ?? 0));\n\tnode.setAttribute(\"opacity\", String(style?.opacity ?? 1));\n\tif (style?.dash) node.setAttribute(\"stroke-dasharray\", style.dash.join(\" \"));\n}\n\nfunction createUrlAssetNode(url: string, assetName: string, cellSize: number, anchor?: [number, number]): SVGGElement {\n\tif (!isSafeAssetUrl(url)) {\n\t\tthrow new RenderError(\"INVALID_ASSET_URL\", `Asset URL is unsafe: ${assetName}`, { asset: assetName });\n\t}\n\tconst group = document.createElementNS(NS, \"g\") as SVGGElement;\n\tconst image = document.createElementNS(NS, \"image\") as SVGImageElement;\n\tconst resolvedUrl = resolveBrowserAssetUrl(url);\n\tconst [anchorX, anchorY] = anchor ?? [0.5, 1];\n\timage.setAttribute(\"href\", resolvedUrl);\n\timage.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"href\", resolvedUrl);\n\timage.setAttribute(\"x\", String(-cellSize * anchorX));\n\timage.setAttribute(\"y\", String(-cellSize * anchorY));\n\timage.setAttribute(\"width\", String(cellSize));\n\timage.setAttribute(\"height\", String(cellSize));\n\timage.setAttribute(\"preserveAspectRatio\", \"xMidYMax meet\");\n\tgroup.appendChild(image);\n\treturn group;\n}\n\nfunction createSpriteAssetNode(\n\turl: string,\n\tassetName: string,\n\tcellSize: number,\n\tsprite: CompiledSprite,\n\tanchor?: [number, number],\n): SVGGElement {\n\tif (!isSafeAssetUrl(url)) {\n\t\tthrow new RenderError(\"INVALID_ASSET_URL\", `Asset URL is unsafe: ${assetName}`, { asset: assetName });\n\t}\n\tconst group = document.createElementNS(NS, \"g\") as SVGGElement;\n\tconst viewport = document.createElementNS(NS, \"svg\") as SVGSVGElement;\n\tconst image = document.createElementNS(NS, \"image\") as SVGImageElement;\n\tconst resolvedUrl = resolveBrowserAssetUrl(url);\n\tconst [anchorX, anchorY] = anchor ?? [0.5, 1];\n\tconst [rectX, rectY, rectWidth, rectHeight] = sprite.rect;\n\n\tviewport.setAttribute(\"x\", String(-cellSize * anchorX));\n\tviewport.setAttribute(\"y\", String(-cellSize * anchorY));\n\tviewport.setAttribute(\"width\", String(cellSize));\n\tviewport.setAttribute(\"height\", String(cellSize));\n\tviewport.setAttribute(\"viewBox\", `${rectX} ${rectY} ${rectWidth} ${rectHeight}`);\n\tviewport.setAttribute(\"preserveAspectRatio\", \"xMidYMax meet\");\n\n\timage.setAttribute(\"href\", resolvedUrl);\n\timage.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"href\", resolvedUrl);\n\timage.setAttribute(\"x\", \"0\");\n\timage.setAttribute(\"y\", \"0\");\n\timage.setAttribute(\"width\", String(sprite.sheetSize[0]));\n\timage.setAttribute(\"height\", String(sprite.sheetSize[1]));\n\tviewport.appendChild(image);\n\tgroup.appendChild(viewport);\n\treturn group;\n}\n\nfunction resolveBrowserAssetUrl(url: string): string {\n\ttry {\n\t\tconst baseURI = document.baseURI;\n\t\treturn typeof baseURI === \"string\" ? new URL(url, baseURI).href : url;\n\t} catch {\n\t\treturn url;\n\t}\n}\n\nfunction isSafeAssetUrl(url: string): boolean {\n\tconst normalized = url.trim().toLowerCase();\n\treturn normalized.length > 0 && !normalized.startsWith(\"javascript:\");\n}\n","import { RenderError } from \"../types/errors.ts\";\n\nconst CSS_CUSTOM_PROPERTY_PATTERN = /^--[a-zA-Z0-9-_]+$/;\n\nexport function applyThemeToElement(element: SVGElement | HTMLElement, themeVars: Record<string, string>): void {\n\tfor (const [name, value] of Object.entries(themeVars)) {\n\t\tif (!CSS_CUSTOM_PROPERTY_PATTERN.test(name)) {\n\t\t\tthrow new RenderError(\"INVALID_THEME_VAR\", `Invalid CSS custom property name: ${name}`);\n\t\t}\n\t\telement.style.setProperty(name, value);\n\t}\n}\n","import { resolveTheme } from \"../types/asset-registry.ts\";\nimport { RenderError } from \"../types/errors.ts\";\nimport type { CameraGridArea, ConnectorEndpoint, RuntimeConnectorState, RuntimeElementState } from \"../types/node.ts\";\nimport type { RuntimeBundle } from \"../types/runtime-bundle.ts\";\nimport type { LayerDefinition } from \"../types/scene.ts\";\nimport { calculateVisualSize, projectToRaw, projectToScreen } from \"../utils/projection.ts\";\nimport { buildKeyframeCSS } from \"./animation-css.ts\";\nimport type { AssetResolver } from \"./asset-node.ts\";\nimport { createAssetNode, createAssetResolver, createPrimitiveAssetNode, createTextAssetNode } from \"./asset-node.ts\";\nimport { applyThemeToElement } from \"./theme.ts\";\n\nconst NS = \"http://www.w3.org/2000/svg\";\nconst BUILT_IN_TEXT_ASSET_ID = \"text\";\nconst BUILT_IN_PRIMITIVE_ASSET_IDS = new Set([\"rectangle\", \"circle\", \"polygon\", \"line\"]);\nconst DEFAULT_CONNECTOR_DASH: Record<\"dashed\" | \"dotted\", [number, number]> = {\n\tdashed: [12, 8],\n\tdotted: [0, 8],\n};\nconst ENDPOINT_RADIUS_GRID = 0.14;\nconst ARROW_LENGTH_GRID = 0.35;\nconst ARROW_WIDTH_GRID = 0.28;\nconst BAR_WIDTH_GRID = 0.4;\n\ninterface Bounds {\n\tminX: number;\n\tminY: number;\n\tmaxX: number;\n\tmaxY: number;\n}\n\ninterface ResolvedLayoutState {\n\tcellSize: number;\n\tpadding: { x: number; y: number };\n\tcontentBounds: Bounds;\n\tfloorBounds: Bounds;\n\tselectedBounds: Bounds;\n\tviewBox: { minX: number; minY: number; width: number; height: number };\n}\n\n/** Internal state tracked per element node. */\ninterface ElementState {\n\tnode: SVGGElement;\n\tcurrent: RuntimeElementState;\n\tanchor: [number, number];\n\tisHidden: boolean;\n\tentryKey?: string;\n\texitKey?: string;\n\tambient: Set<string>;\n}\n\nexport interface ViewBoxRect {\n\tminX: number;\n\tminY: number;\n\twidth: number;\n\theight: number;\n}\n\n/** Internal state tracked per connector node. */\ninterface ConnectorState {\n\tnode: SVGGElement;\n\tshaft: SVGPathElement;\n\tisHidden: boolean;\n\tambient: Set<string>;\n}\n\n/** Extended SVG with engine internals stored on it. */\ninterface SceneSVG extends SVGSVGElement {\n\t_layerMap: Map<string, Required<LayerDefinition>>;\n\t_elementMap: Map<string, ElementState>;\n\t_connectorMap: Map<string, ConnectorState>;\n\t_layout: ResolvedLayoutState;\n\t_viewBoxW: number;\n\t_viewBoxH: number;\n}\n\nexport interface RenderConfig {\n\tlabel?: string;\n\tthemeVars?: Record<string, string>;\n}\n\n// ── Public API ────────────────────────────────────────────────────────────\n\n/** Build the SVG DOM for a compiled runtime bundle and mount it into a container. */\nexport function buildSceneDOM(container: HTMLElement, bundle: RuntimeBundle, config?: RenderConfig): SVGSVGElement {\n\tconst layout = resolveSceneLayout(bundle);\n\tconst initialStop = bundle.scenes[0];\n\tconst allElements = collectElementDefinitions(bundle);\n\tconst allConnectors = collectConnectorDefinitions(bundle);\n\tconst initialById = new Map((initialStop?.elements ?? []).map((element) => [element.id, element]));\n\tconst initialConnectorsById = new Map((initialStop?.connectors ?? []).map((connector) => [connector.id, connector]));\n\n\tconst svg = createRootSvg(layout, config?.label, bundle.className);\n\tconst assetResolver = createAssetResolver(bundle);\n\n\tsvg.appendChild(createCssDefs());\n\n\tapplyThemeToElement(svg, {\n\t\t...(resolveTheme(bundle.theme) ?? {}),\n\t\t...(bundle.themeVars ?? {}),\n\t\t...(config?.themeVars ?? {}),\n\t});\n\n\tconst sortedLayers = sortLayers(bundle.layers);\n\tconst layerMap = createLayerMap(sortedLayers);\n\tif (bundle.floor.visible) {\n\t\tsvg.appendChild(createFloorGrid(bundle, layout));\n\t}\n\n\tconst connectorMap = new Map<string, ConnectorState>();\n\tfor (const def of allConnectors) {\n\t\tconst initial = initialConnectorsById.get(def.id) ?? {\n\t\t\t...def,\n\t\t\tpresence: \"removed\",\n\t\t};\n\t\tconst state = createConnectorInstance(initial, layout);\n\t\tif (initial.presence === \"removed\") {\n\t\t\tstate.isHidden = true;\n\t\t\thideElementAfterExit(state.node);\n\t\t}\n\t\tapplyConnectorAmbientClasses(state, initial.ambient ?? []);\n\t\tsvg.appendChild(state.node);\n\t\tconnectorMap.set(def.id, state);\n\t}\n\n\tconst depthGroup = document.createElementNS(NS, \"g\") as SVGGElement;\n\tdepthGroup.classList.add(\"iso-depth-layer\");\n\tdepthGroup.setAttribute(\"data-layer\", \"depth\");\n\tsvg.appendChild(depthGroup);\n\n\tconst labelGroup = document.createElementNS(NS, \"g\") as SVGGElement;\n\tlabelGroup.classList.add(\"iso-layer\", \"iso-layer-labels\");\n\tlabelGroup.setAttribute(\"data-layer\", \"labels\");\n\tsvg.appendChild(labelGroup);\n\n\tconst elementMap = new Map<string, ElementState>();\n\tconst sortedElements = sortElementsForPerspective(allElements);\n\tfor (const def of sortedElements) {\n\t\tconst declaredLayer = layerMap.get(def.layer);\n\t\tif (!declaredLayer) {\n\t\t\tthrow new RenderError(\"MISSING_LAYER\", `Unknown layer for \"${def.id}\": ${def.layer}`);\n\t\t}\n\n\t\tconst initial = initialById.get(def.id) ?? {\n\t\t\t...def,\n\t\t\tpresence: \"removed\",\n\t\t};\n\t\tconst instance = createElementInstance(initial, layout, assetResolver);\n\t\tinstance.anchor = assetAnchorForBounds(bundle, initial);\n\t\tinstance.node.classList.add(`iso-layer-${def.layer}`);\n\t\tinstance.node.setAttribute(\"data-layer\", def.layer);\n\t\tif (initial.presence === \"removed\") {\n\t\t\tinstance.isHidden = true;\n\t\t\thideElementAfterExit(instance.node);\n\t\t}\n\t\tapplyAmbientClasses(instance, initial.ambient ?? []);\n\t\tconst parent = isTextAsset(def.asset) ? labelGroup : depthGroup;\n\t\tparent.appendChild(instance.node);\n\t\telementMap.set(def.id, instance);\n\t}\n\n\tsvg._layerMap = layerMap;\n\tsvg._elementMap = elementMap;\n\tsvg._connectorMap = connectorMap;\n\tcontainer.appendChild(svg);\n\treturn svg;\n}\n\n/** Update transforms and ambient classes for a live set of interpolated runtime values. */\nexport function updateElementTransforms(\n\tsvg: SVGSVGElement & {\n\t\t_elementMap?: Map<string, ElementState | unknown>;\n\t\t_connectorMap?: Map<string, ConnectorState | unknown>;\n\t\t_layout?: ResolvedLayoutState;\n\t},\n\telements: RuntimeElementState[],\n\tconnectors: RuntimeConnectorState[] = [],\n): void {\n\tconst layout = svg._layout;\n\tif (!layout) return;\n\n\tconst map = svg._elementMap;\n\tif (map) {\n\t\tfor (const def of elements) {\n\t\t\tconst state = map.get(def.id) as ElementState | undefined;\n\t\t\tif (!state) continue;\n\t\t\tstate.current = def;\n\t\t\tupdateGeneratedElementContent(state.node, def, layout);\n\t\t\tapplyElementTransform(state.node, def, layout);\n\t\t\tapplyAmbientClasses(state, def.ambient ?? []);\n\t\t}\n\t}\n\n\tconst connectorMap = svg._connectorMap;\n\tif (!connectorMap) return;\n\tfor (const def of connectors) {\n\t\tconst state = connectorMap.get(def.id) as ConnectorState | undefined;\n\t\tif (!state) continue;\n\t\tapplyConnectorState(state, def, layout);\n\t}\n}\n\n/** Read the internal ElementState for an element by its id. */\nexport function getElementState(\n\tsvg: SVGSVGElement & { _elementMap?: Map<string, ElementState | unknown> },\n\tid: string,\n): ElementState | undefined {\n\treturn svg._elementMap?.get(id) as ElementState | undefined;\n}\n\n/** Read the internal ConnectorState for a connector by its id. */\nexport function getConnectorState(\n\tsvg: SVGSVGElement & {\n\t\t_connectorMap?: Map<string, ConnectorState | unknown>;\n\t},\n\tid: string,\n): ConnectorState | undefined {\n\treturn svg._connectorMap?.get(id) as ConnectorState | undefined;\n}\n\nexport function getResolvedViewBox(bundle: RuntimeBundle): {\n\tminX: number;\n\tminY: number;\n\twidth: number;\n\theight: number;\n} {\n\treturn resolveSceneLayout(bundle).viewBox;\n}\n\nexport function getResolvedProjectionLayout(bundle: RuntimeBundle): {\n\tcellSize: number;\n\tpadding: { x: number; y: number };\n\tselectedBounds: { minX: number; minY: number; maxX: number; maxY: number };\n} {\n\tconst layout = resolveSceneLayout(bundle);\n\treturn {\n\t\tcellSize: layout.cellSize,\n\t\tpadding: layout.padding,\n\t\tselectedBounds: layout.selectedBounds,\n\t};\n}\n\nexport function getCurrentElementBounds(\n\tsvg: SVGSVGElement & { _elementMap?: Map<string, ElementState | unknown>; _layout?: ResolvedLayoutState },\n\tid: string,\n): ViewBoxRect | undefined {\n\tconst layout = svg._layout;\n\tconst state = svg._elementMap?.get(id) as ElementState | undefined;\n\tif (!layout || !state || state.current.presence === \"removed\") return undefined;\n\treturn boundsToViewBox(calculateElementBounds(state.current, layout, state.anchor));\n}\n\nexport function getGridAreaBounds(bundle: RuntimeBundle, area: CameraGridArea): ViewBoxRect {\n\tconst layout = resolveSceneLayout(bundle);\n\tconst [x, y] = area.at;\n\tconst [width, height] = area.size;\n\tlet bounds = emptyBounds();\n\tfor (const point of [\n\t\t[x, y],\n\t\t[x + width, y],\n\t\t[x, y + height],\n\t\t[x + width, y + height],\n\t] as Array<[number, number]>) {\n\t\tconst screen = projectToScreen(\n\t\t\tpoint[0],\n\t\t\tpoint[1],\n\t\t\tlayout.cellSize,\n\t\t\tlayout.selectedBounds.minX,\n\t\t\tlayout.selectedBounds.minY,\n\t\t\tlayout.padding.x,\n\t\t\tlayout.padding.y,\n\t\t);\n\t\tbounds = includePoint(bounds, screen.screenX, screen.screenY);\n\t}\n\treturn boundsToViewBox(bounds);\n}\n\nexport function applySceneViewBox(svg: SVGSVGElement, viewBox: ViewBoxRect): void {\n\tsvg.setAttribute(\"viewBox\", `${viewBox.minX} ${viewBox.minY} ${viewBox.width} ${viewBox.height}`);\n}\n\n// ── Lifecycle helpers ─────────────────────────────────────────────────────\n\n/** Hide an element after its exit animation completes. */\nexport function hideElementAfterExit(node: SVGElement): void {\n\tnode.style.visibility = \"hidden\";\n\tnode.style.pointerEvents = \"none\";\n}\n\n/** Show an element on re-addition. */\nexport function unhideElementOnReadd(node: SVGElement): void {\n\tnode.style.visibility = \"visible\";\n\tnode.style.pointerEvents = \"auto\";\n}\n\n/** Create a new element SVG instance for lifecycle re-instantiation. */\nexport function createNewElementInstance(def: RuntimeElementState, parent?: SVGGElement | null): SVGGElement {\n\tconst layout: ResolvedLayoutState = {\n\t\tcellSize: 64,\n\t\tpadding: { x: 0, y: 0 },\n\t\tcontentBounds: emptyBounds(),\n\t\tfloorBounds: emptyBounds(),\n\t\tselectedBounds: { minX: 0, minY: 0, maxX: 64, maxY: 64 },\n\t\tviewBox: { minX: 0, minY: 0, width: 64, height: 64 },\n\t};\n\tconst instance = createElementInstance(def, layout, createAssetResolver());\n\tparent?.appendChild(instance.node);\n\treturn instance.node;\n}\n\n/** Remove an element node from the DOM. */\nexport function removeElementNode(node: SVGElement): void {\n\tnode.parentElement?.removeChild(node);\n}\n\n// ── Layout helpers ────────────────────────────────────────────────────────\n\nfunction resolveSceneLayout(bundle: RuntimeBundle): ResolvedLayoutState {\n\tconst cellSize = bundle.grid.cellSize;\n\tconst padding = bundle.layout.padding;\n\tconst contentBounds = calculateContentBounds(bundle, cellSize);\n\tconst floorBounds = calculateFloorBounds(bundle, cellSize);\n\tconst selectedBounds = selectBounds(bundle.layout.bounds, contentBounds, floorBounds);\n\tconst width = selectedBounds.maxX - selectedBounds.minX + padding.x * 2;\n\tconst height = selectedBounds.maxY - selectedBounds.minY + padding.y * 2;\n\tconst viewBox = {\n\t\tminX: 0,\n\t\tminY: 0,\n\t\twidth: roundDimension(width || cellSize),\n\t\theight: roundDimension(height || cellSize),\n\t};\n\n\treturn {\n\t\tcellSize,\n\t\tpadding,\n\t\tcontentBounds,\n\t\tfloorBounds,\n\t\tselectedBounds,\n\t\tviewBox,\n\t};\n}\n\nfunction calculateContentBounds(bundle: RuntimeBundle, cellSize: number): Bounds {\n\tlet bounds = emptyBounds();\n\tfor (const stop of bundle.scenes) {\n\t\tfor (const element of stop.elements ?? []) {\n\t\t\tif (element.presence === \"removed\") continue;\n\t\t\tbounds = includeBounds(bounds, calculateRawElementBounds(bundle, element, cellSize));\n\t\t}\n\t\tfor (const connector of stop.connectors ?? []) {\n\t\t\tif (connector.presence === \"removed\") continue;\n\t\t\tbounds = includeBounds(bounds, calculateConnectorBounds(connector, cellSize));\n\t\t}\n\t}\n\treturn normalizeBounds(bounds, cellSize);\n}\n\nfunction calculateRawElementBounds(bundle: RuntimeBundle, element: RuntimeElementState, cellSize: number): Bounds {\n\tconst { rawX, rawY } = projectToRaw(element.pos[0] + element.size, element.pos[1] + element.size, cellSize);\n\tconst visualSize = calculateVisualSize(element.size, cellSize);\n\tconst [anchorX, anchorY] = assetAnchorForBounds(bundle, element);\n\treturn {\n\t\tminX: rawX - visualSize * anchorX,\n\t\tminY: rawY - visualSize * anchorY,\n\t\tmaxX: rawX + visualSize * (1 - anchorX),\n\t\tmaxY: rawY + visualSize * (1 - anchorY),\n\t};\n}\n\nfunction calculateElementBounds(\n\telement: RuntimeElementState,\n\tlayout: ResolvedLayoutState,\n\tanchor: [number, number],\n): Bounds {\n\tconst screen = projectToScreen(\n\t\telement.pos[0] + element.size,\n\t\telement.pos[1] + element.size,\n\t\tlayout.cellSize,\n\t\tlayout.selectedBounds.minX,\n\t\tlayout.selectedBounds.minY,\n\t\tlayout.padding.x,\n\t\tlayout.padding.y,\n\t);\n\tconst visualSize = calculateVisualSize(element.size, layout.cellSize);\n\treturn {\n\t\tminX: screen.screenX - visualSize * anchor[0],\n\t\tminY: screen.screenY - visualSize * anchor[1],\n\t\tmaxX: screen.screenX + visualSize * (1 - anchor[0]),\n\t\tmaxY: screen.screenY + visualSize * (1 - anchor[1]),\n\t};\n}\n\nfunction assetAnchorForBounds(bundle: RuntimeBundle, element: RuntimeElementState): [number, number] {\n\treturn bundle.assets?.[element.asset]?.anchor ?? [0.5, 1];\n}\n\nfunction calculateConnectorBounds(connector: RuntimeConnectorState, cellSize: number): Bounds {\n\tlet bounds = emptyBounds();\n\tfor (const [x, y] of connector.route) {\n\t\tconst { rawX, rawY } = projectToRaw(x, y, cellSize);\n\t\tbounds = includePoint(bounds, rawX, rawY);\n\t}\n\tconst endpointPadding = Math.max(ARROW_LENGTH_GRID, BAR_WIDTH_GRID, ENDPOINT_RADIUS_GRID * 2) * cellSize;\n\tconst strokePadding = connector.style.strokeWidth / 2 + (connector.style.outlineWidth ?? 0);\n\tconst padding = endpointPadding + strokePadding;\n\treturn {\n\t\tminX: bounds.minX - padding,\n\t\tminY: bounds.minY - padding,\n\t\tmaxX: bounds.maxX + padding,\n\t\tmaxY: bounds.maxY + padding,\n\t};\n}\n\nfunction calculateFloorBounds(bundle: RuntimeBundle, cellSize: number): Bounds {\n\tconst origin = bundle.floor.origin;\n\tconst [width, height] = bundle.floor.size;\n\tconst points: Array<[number, number]> = [\n\t\torigin,\n\t\t[origin[0] + width, origin[1]],\n\t\t[origin[0], origin[1] + height],\n\t\t[origin[0] + width, origin[1] + height],\n\t];\n\tlet bounds = emptyBounds();\n\tfor (const [x, y] of points) {\n\t\tconst { rawX, rawY } = projectToRaw(x, y, cellSize);\n\t\tbounds = includePoint(bounds, rawX, rawY);\n\t}\n\treturn normalizeBounds(bounds, cellSize);\n}\n\nfunction selectBounds(mode: RuntimeBundle[\"layout\"][\"bounds\"], content: Bounds, floor: Bounds): Bounds {\n\tif (mode === \"content\") return content;\n\tif (mode === \"floor\") return floor;\n\treturn includeBounds(content, floor);\n}\n\nfunction emptyBounds(): Bounds {\n\treturn {\n\t\tminX: Number.POSITIVE_INFINITY,\n\t\tminY: Number.POSITIVE_INFINITY,\n\t\tmaxX: Number.NEGATIVE_INFINITY,\n\t\tmaxY: Number.NEGATIVE_INFINITY,\n\t};\n}\n\nfunction normalizeBounds(bounds: Bounds, cellSize: number): Bounds {\n\tif (Number.isFinite(bounds.minX)) return bounds;\n\treturn { minX: 0, minY: 0, maxX: cellSize, maxY: cellSize };\n}\n\nfunction boundsToViewBox(bounds: Bounds): ViewBoxRect {\n\tconst centerX = (bounds.minX + bounds.maxX) / 2;\n\tconst centerY = (bounds.minY + bounds.maxY) / 2;\n\tconst width = Math.max(1, bounds.maxX - bounds.minX);\n\tconst height = Math.max(1, bounds.maxY - bounds.minY);\n\treturn {\n\t\tminX: roundDimension(centerX - width / 2),\n\t\tminY: roundDimension(centerY - height / 2),\n\t\twidth: roundDimension(width),\n\t\theight: roundDimension(height),\n\t};\n}\n\nfunction includePoint(bounds: Bounds, x: number, y: number): Bounds {\n\treturn {\n\t\tminX: Math.min(bounds.minX, x),\n\t\tminY: Math.min(bounds.minY, y),\n\t\tmaxX: Math.max(bounds.maxX, x),\n\t\tmaxY: Math.max(bounds.maxY, y),\n\t};\n}\n\nfunction includeBounds(bounds: Bounds, next: Bounds): Bounds {\n\treturn {\n\t\tminX: Math.min(bounds.minX, next.minX),\n\t\tminY: Math.min(bounds.minY, next.minY),\n\t\tmaxX: Math.max(bounds.maxX, next.maxX),\n\t\tmaxY: Math.max(bounds.maxY, next.maxY),\n\t};\n}\n\nfunction roundDimension(value: number): number {\n\treturn Math.round(value * 1000) / 1000;\n}\n\n// ── Private helpers ───────────────────────────────────────────────────────\n\nfunction createRootSvg(layout: ResolvedLayoutState, label?: string, className?: string): SceneSVG {\n\tconst svg = document.createElementNS(NS, \"svg\") as SceneSVG;\n\tsvg.classList.add(\"iso-scene\");\n\tfor (const token of className?.trim().split(/\\s+/) ?? []) {\n\t\tif (token) svg.classList.add(token);\n\t}\n\tsvg.setAttribute(\"width\", \"100%\");\n\tsvg.setAttribute(\"height\", \"100%\");\n\tsvg.setAttribute(\n\t\t\"viewBox\",\n\t\t`${layout.viewBox.minX} ${layout.viewBox.minY} ${layout.viewBox.width} ${layout.viewBox.height}`,\n\t);\n\tsvg.setAttribute(\"preserveAspectRatio\", \"xMidYMid meet\");\n\tsvg.style.width = \"100%\";\n\tsvg.style.height = \"100%\";\n\tsvg.style.display = \"block\";\n\tif (label) {\n\t\tsvg.setAttribute(\"role\", \"img\");\n\t\tsvg.setAttribute(\"aria-label\", label);\n\t} else {\n\t\tsvg.setAttribute(\"aria-hidden\", \"true\");\n\t}\n\tsvg._layout = layout;\n\tsvg._viewBoxW = layout.viewBox.width;\n\tsvg._viewBoxH = layout.viewBox.height;\n\treturn svg;\n}\n\nfunction createCssDefs(): SVGStyleElement {\n\tconst styleEl = document.createElementNS(NS, \"style\") as SVGStyleElement;\n\tstyleEl.textContent = buildKeyframeCSS();\n\treturn styleEl;\n}\n\nfunction createFloorGrid(bundle: RuntimeBundle, layout: ResolvedLayoutState): SVGGElement {\n\tconst group = document.createElementNS(NS, \"g\") as SVGGElement;\n\tgroup.classList.add(\"iso-floor-grid\", `iso-layer-${bundle.floor.layer}`);\n\tgroup.setAttribute(\"data-layer\", bundle.floor.layer);\n\n\tconst [originX, originY] = bundle.floor.origin;\n\tconst [columns, rows] = bundle.floor.size;\n\tconst corners = [\n\t\tprojectGridPoint(originX, originY, layout),\n\t\tprojectGridPoint(originX + columns, originY, layout),\n\t\tprojectGridPoint(originX + columns, originY + rows, layout),\n\t\tprojectGridPoint(originX, originY + rows, layout),\n\t];\n\n\tconst slab = document.createElementNS(NS, \"polygon\");\n\tslab.classList.add(\"iso-floor-slab\");\n\tslab.setAttribute(\"points\", corners.map(pointToString).join(\" \"));\n\tslab.setAttribute(\"fill\", \"#dbe6f4\");\n\tslab.setAttribute(\"fill-opacity\", \"0.22\");\n\tslab.setAttribute(\"stroke\", \"#b9c9df\");\n\tslab.setAttribute(\"stroke-width\", \"1\");\n\tgroup.appendChild(slab);\n\n\tfor (let x = 0; x <= columns; x++) {\n\t\tgroup.appendChild(\n\t\t\tcreateFloorLine(\n\t\t\t\tprojectGridPoint(originX + x, originY, layout),\n\t\t\t\tprojectGridPoint(originX + x, originY + rows, layout),\n\t\t\t),\n\t\t);\n\t}\n\n\tfor (let y = 0; y <= rows; y++) {\n\t\tgroup.appendChild(\n\t\t\tcreateFloorLine(\n\t\t\t\tprojectGridPoint(originX, originY + y, layout),\n\t\t\t\tprojectGridPoint(originX + columns, originY + y, layout),\n\t\t\t),\n\t\t);\n\t}\n\n\treturn group;\n}\n\nfunction createFloorLine(start: { x: number; y: number }, end: { x: number; y: number }): SVGLineElement {\n\tconst line = document.createElementNS(NS, \"line\") as SVGLineElement;\n\tline.setAttribute(\"x1\", String(start.x));\n\tline.setAttribute(\"y1\", String(start.y));\n\tline.setAttribute(\"x2\", String(end.x));\n\tline.setAttribute(\"y2\", String(end.y));\n\tline.setAttribute(\"stroke\", \"#2563eb\");\n\tline.setAttribute(\"stroke-width\", \"1\");\n\tline.setAttribute(\"stroke-dasharray\", \"5 5\");\n\tline.setAttribute(\"stroke-opacity\", \"0.2\");\n\treturn line;\n}\n\nfunction projectGridPoint(x: number, y: number, layout: ResolvedLayoutState): { x: number; y: number } {\n\tconst screen = projectToScreen(\n\t\tx,\n\t\ty,\n\t\tlayout.cellSize,\n\t\tlayout.selectedBounds.minX,\n\t\tlayout.selectedBounds.minY,\n\t\tlayout.padding.x,\n\t\tlayout.padding.y,\n\t);\n\treturn { x: screen.screenX, y: screen.screenY };\n}\n\nfunction pointToString(point: { x: number; y: number }): string {\n\treturn `${point.x},${point.y}`;\n}\n\nfunction createLayerMap(layers: Required<LayerDefinition>[]): Map<string, Required<LayerDefinition>> {\n\treturn new Map(layers.map((layer) => [layer.name, layer]));\n}\n\nfunction sortLayers(layers: LayerDefinition[]): Required<LayerDefinition>[] {\n\treturn [...layers]\n\t\t.map((layer, index) => ({ name: layer.name, order: layer.order ?? index }))\n\t\t.sort((a, b) => a.order - b.order || a.name.localeCompare(b.name));\n}\n\nfunction sortElementsForPerspective(elements: RuntimeElementState[]): RuntimeElementState[] {\n\treturn elements.slice().sort((a, b) => {\n\t\tconst bucket = renderBucket(a) - renderBucket(b);\n\t\tif (bucket !== 0) return bucket;\n\t\tconst depth = a.pos[0] + a.pos[1] - (b.pos[0] + b.pos[1]);\n\t\tif (depth !== 0) return depth;\n\t\treturn a.id.localeCompare(b.id);\n\t});\n}\n\nfunction renderBucket(element: RuntimeElementState): number {\n\tif (isPrimitiveAsset(element.asset)) return 0;\n\tif (isTextAsset(element.asset)) return 2;\n\treturn 1;\n}\n\nfunction collectElementDefinitions(bundle: RuntimeBundle): RuntimeElementState[] {\n\tconst byId = new Map<string, RuntimeElementState>();\n\tfor (const stop of bundle.scenes) {\n\t\tfor (const element of stop.elements ?? []) {\n\t\t\tif (!byId.has(element.id) || byId.get(element.id)?.presence === \"removed\") {\n\t\t\t\tbyId.set(element.id, element);\n\t\t\t}\n\t\t}\n\t}\n\treturn [...byId.values()];\n}\n\nfunction collectConnectorDefinitions(bundle: RuntimeBundle): RuntimeConnectorState[] {\n\tconst byId = new Map<string, RuntimeConnectorState>();\n\tfor (const stop of bundle.scenes) {\n\t\tfor (const connector of stop.connectors ?? []) {\n\t\t\tif (!byId.has(connector.id) || byId.get(connector.id)?.presence === \"removed\") {\n\t\t\t\tbyId.set(connector.id, connector);\n\t\t\t}\n\t\t}\n\t}\n\treturn [...byId.values()];\n}\n\n/** Create a single element SVG instance applying entry animation. */\nfunction createElementInstance(\n\tdef: RuntimeElementState,\n\tlayout: ResolvedLayoutState,\n\tresolveAsset: AssetResolver,\n): ElementState {\n\tconst node =\n\t\tdef.asset === BUILT_IN_TEXT_ASSET_ID\n\t\t\t? createTextAssetNode(def.text, def.asset, layout.cellSize)\n\t\t\t: isPrimitiveAsset(def.asset)\n\t\t\t\t? createPrimitiveAssetNode(def.asset, def.primitive, layout.cellSize)\n\t\t\t\t: createResolvedAssetNode(def, resolveAsset, layout.cellSize);\n\tnode.classList.add(\"iso-element\", `iso-element-${def.id}`);\n\tnode.setAttribute(\"data-id\", def.id);\n\tnode.setAttribute(\"data-asset\", def.asset);\n\tnode.style.overflow = \"visible\";\n\tnode.style.pointerEvents = \"auto\";\n\tapplyElementTransform(node, def, layout);\n\n\tconst entryAnim = def.enter;\n\tif (entryAnim && entryAnim !== \"none\" && def.presence !== \"removed\") {\n\t\tconst keyName = `iso-anim-${entryAnim}`;\n\t\tanimateElement(node, keyName, \"enter\");\n\t\tnode.addEventListener(\n\t\t\t\"animationend\",\n\t\t\t() => {\n\t\t\t\tnode.style.animation = \"\";\n\t\t\t},\n\t\t\t{ once: true },\n\t\t);\n\t\treturn { node, current: def, anchor: [0.5, 1], isHidden: false, entryKey: entryAnim, ambient: new Set() };\n\t}\n\n\treturn { node, current: def, anchor: [0.5, 1], isHidden: false, ambient: new Set() };\n}\n\nfunction isTextAsset(assetId: string): boolean {\n\treturn assetId === BUILT_IN_TEXT_ASSET_ID;\n}\n\nfunction isPrimitiveAsset(assetId: string): boolean {\n\treturn BUILT_IN_PRIMITIVE_ASSET_IDS.has(assetId);\n}\n\nfunction createResolvedAssetNode(def: RuntimeElementState, resolveAsset: AssetResolver, cellSize: number): SVGGElement {\n\tconst asset = resolveAsset(def.asset);\n\tif (!asset) {\n\t\tthrow new RenderError(\"ASSET_NOT_FOUND\", `Asset not found: ${def.asset}`, {\n\t\t\tasset: def.asset,\n\t\t\telementId: def.id,\n\t\t});\n\t}\n\treturn createAssetNode(asset, def.asset, cellSize);\n}\n\nfunction updateGeneratedElementContent(node: SVGGElement, def: RuntimeElementState, layout: ResolvedLayoutState): void {\n\tif (!isTextAsset(def.asset) && !isPrimitiveAsset(def.asset)) return;\n\tconst replacement = isTextAsset(def.asset)\n\t\t? createTextAssetNode(def.text, def.asset, layout.cellSize)\n\t\t: createPrimitiveAssetNode(def.asset, def.primitive, layout.cellSize);\n\tclearChildren(node);\n\twhile (replacement.firstChild) {\n\t\tconst child = replacement.firstChild;\n\t\treplacement.removeChild(child);\n\t\tnode.appendChild(child);\n\t}\n}\n\nfunction createConnectorInstance(def: RuntimeConnectorState, layout: ResolvedLayoutState): ConnectorState {\n\tconst node = document.createElementNS(NS, \"g\") as SVGGElement;\n\tconst shaft = document.createElementNS(NS, \"path\") as SVGPathElement;\n\tconst state = { node, shaft, isHidden: false, ambient: new Set<string>() };\n\tapplyConnectorState(state, def, layout);\n\n\tconst entryAnim = def.enter;\n\tif (entryAnim && entryAnim !== \"none\" && def.presence !== \"removed\") {\n\t\tanimateElement(node, `iso-anim-${entryAnim}`, \"enter\");\n\t\tnode.addEventListener(\n\t\t\t\"animationend\",\n\t\t\t() => {\n\t\t\t\tnode.style.animation = \"\";\n\t\t\t},\n\t\t\t{ once: true },\n\t\t);\n\t}\n\n\treturn state;\n}\n\nfunction applyConnectorState(state: ConnectorState, def: RuntimeConnectorState, layout: ResolvedLayoutState): void {\n\tapplyConnectorGroupAttrs(state.node, def);\n\tclearChildren(state.node);\n\n\tconst d = routePath(def.route, layout);\n\tif (shouldRenderOutline(def)) {\n\t\tconst outline = document.createElementNS(NS, \"path\") as SVGPathElement;\n\t\toutline.classList.add(\"iso-connector-outline\");\n\t\tapplyConnectorPathAttrs(outline, def, d, {\n\t\t\tstroke: def.style.outline ?? def.style.stroke,\n\t\t\tstrokeWidth: def.style.strokeWidth + def.style.outlineWidth * 2,\n\t\t\tincludeDash: false,\n\t\t});\n\t\tstate.node.appendChild(outline);\n\t}\n\n\tstate.shaft = document.createElementNS(NS, \"path\") as SVGPathElement;\n\tstate.shaft.classList.add(\"iso-connector-shaft\");\n\tapplyConnectorPathAttrs(state.shaft, def, d, {\n\t\tstroke: def.style.stroke,\n\t\tstrokeWidth: def.style.strokeWidth,\n\t\tincludeDash: true,\n\t});\n\tstate.node.appendChild(state.shaft);\n\n\tif (def.style.variant === \"road\" && def.style.lane === \"center-dashed\") {\n\t\tconst lane = document.createElementNS(NS, \"path\") as SVGPathElement;\n\t\tlane.classList.add(\"iso-connector-lane\");\n\t\tapplyConnectorPathAttrs(lane, def, d, {\n\t\t\tstroke: \"#ffffff\",\n\t\t\tstrokeWidth: Math.max(1, def.style.strokeWidth * 0.12),\n\t\t\tincludeDash: false,\n\t\t});\n\t\tlane.setAttribute(\"stroke-dasharray\", \"8 8\");\n\t\tstate.node.appendChild(lane);\n\t}\n\n\tappendEndpoint(state.node, def, \"start\", layout);\n\tappendEndpoint(state.node, def, \"end\", layout);\n\tapplyConnectorAmbientClasses(state, def.ambient ?? []);\n}\n\nfunction clearChildren(node: SVGElement): void {\n\twhile (node.firstChild) node.removeChild(node.firstChild);\n}\n\nfunction applyConnectorGroupAttrs(node: SVGGElement, def: RuntimeConnectorState): void {\n\tnode.setAttribute(\n\t\t\"class\",\n\t\t[\n\t\t\t\"iso-connector\",\n\t\t\t`iso-connector-${def.id}`,\n\t\t\t`iso-connector-variant-${def.style.variant}`,\n\t\t\t`iso-connector-pattern-${def.style.pattern}`,\n\t\t\t`iso-connector-direction-${def.direction}`,\n\t\t\t`iso-layer-${def.layer}`,\n\t\t].join(\" \"),\n\t);\n\tnode.setAttribute(\"data-id\", def.id);\n\tnode.setAttribute(\"data-layer\", def.layer);\n\tnode.style.overflow = \"visible\";\n\tnode.style.pointerEvents = \"auto\";\n}\n\nfunction shouldRenderOutline(def: RuntimeConnectorState): boolean {\n\treturn Boolean(def.style.outline && def.style.outlineWidth > 0);\n}\n\nfunction applyConnectorPathAttrs(\n\tpath: SVGPathElement,\n\tdef: RuntimeConnectorState,\n\td: string,\n\toptions: { stroke: string; strokeWidth: number; includeDash: boolean },\n): void {\n\tpath.setAttribute(\"d\", d);\n\tpath.setAttribute(\"fill\", \"none\");\n\tpath.setAttribute(\"stroke\", options.stroke);\n\tpath.setAttribute(\"stroke-width\", String(options.strokeWidth));\n\tpath.setAttribute(\"stroke-linecap\", \"round\");\n\tpath.setAttribute(\"stroke-linejoin\", \"round\");\n\tpath.setAttribute(\"opacity\", String(def.style.opacity));\n\tif (options.includeDash && def.style.pattern !== \"solid\") {\n\t\tconst dash = def.style.dash ?? DEFAULT_CONNECTOR_DASH[def.style.pattern];\n\t\tpath.setAttribute(\"stroke-dasharray\", dash.join(\" \"));\n\t}\n}\n\nfunction routePath(route: [number, number][], layout: ResolvedLayoutState): string {\n\treturn route\n\t\t.map((point, index) => {\n\t\t\tconst projected = projectGridPoint(point[0], point[1], layout);\n\t\t\treturn `${index === 0 ? \"M\" : \"L\"} ${projected.x} ${projected.y}`;\n\t\t})\n\t\t.join(\" \");\n}\n\nfunction appendEndpoint(\n\tgroup: SVGGElement,\n\tdef: RuntimeConnectorState,\n\tkind: \"start\" | \"end\",\n\tlayout: ResolvedLayoutState,\n): void {\n\tconst endpoint = def[kind];\n\tif (endpoint === \"none\" || def.route.length < 2) return;\n\n\tconst node = createEndpointNode(endpoint, def, kind, layout);\n\tnode.classList.add(`iso-connector-${kind}`);\n\tgroup.appendChild(node);\n}\n\nfunction createEndpointNode(\n\tendpoint: ConnectorEndpoint,\n\tdef: RuntimeConnectorState,\n\tkind: \"start\" | \"end\",\n\tlayout: ResolvedLayoutState,\n): SVGElement {\n\tswitch (endpoint) {\n\t\tcase \"arrow\":\n\t\t\treturn createArrowEndpoint(def, kind, layout);\n\t\tcase \"dot\":\n\t\t\treturn createCircleEndpoint(def, kind, layout, true);\n\t\tcase \"circle\":\n\t\t\treturn createCircleEndpoint(def, kind, layout, false);\n\t\tcase \"diamond\":\n\t\t\treturn createDiamondEndpoint(def, kind, layout);\n\t\tcase \"bar\":\n\t\t\treturn createBarEndpoint(def, kind, layout);\n\t\tcase \"none\":\n\t\t\tthrow new RenderError(\"CONNECTOR_ENDPOINT_NONE\", \"Cannot create geometry for endpoint none\");\n\t}\n}\n\nfunction createArrowEndpoint(\n\tdef: RuntimeConnectorState,\n\tkind: \"start\" | \"end\",\n\tlayout: ResolvedLayoutState,\n): SVGPolygonElement {\n\tconst tip = endpointPoint(def, kind);\n\tconst direction = endpointDirection(def, kind);\n\tconst perpendicular: [number, number] = [-direction[1], direction[0]];\n\tconst base: [number, number] = [tip[0] - direction[0] * ARROW_LENGTH_GRID, tip[1] - direction[1] * ARROW_LENGTH_GRID];\n\tconst halfWidth = ARROW_WIDTH_GRID / 2;\n\tconst points = [\n\t\ttip,\n\t\t[base[0] + perpendicular[0] * halfWidth, base[1] + perpendicular[1] * halfWidth] as [number, number],\n\t\t[base[0] - perpendicular[0] * halfWidth, base[1] - perpendicular[1] * halfWidth] as [number, number],\n\t].map((point) => projectGridPoint(point[0], point[1], layout));\n\n\tconst polygon = document.createElementNS(NS, \"polygon\") as SVGPolygonElement;\n\tpolygon.setAttribute(\"points\", points.map(pointToString).join(\" \"));\n\tpolygon.setAttribute(\"fill\", def.style.stroke);\n\tpolygon.setAttribute(\"opacity\", String(def.style.opacity));\n\treturn polygon;\n}\n\nfunction createCircleEndpoint(\n\tdef: RuntimeConnectorState,\n\tkind: \"start\" | \"end\",\n\tlayout: ResolvedLayoutState,\n\tfilled: boolean,\n): SVGCircleElement {\n\tconst point = endpointPoint(def, kind);\n\tconst projected = projectGridPoint(point[0], point[1], layout);\n\tconst circle = document.createElementNS(NS, \"circle\") as SVGCircleElement;\n\tcircle.setAttribute(\"cx\", String(projected.x));\n\tcircle.setAttribute(\"cy\", String(projected.y));\n\tcircle.setAttribute(\"r\", String(ENDPOINT_RADIUS_GRID * layout.cellSize));\n\tcircle.setAttribute(\"stroke\", def.style.stroke);\n\tcircle.setAttribute(\"stroke-width\", String(Math.max(1, def.style.strokeWidth)));\n\tcircle.setAttribute(\"opacity\", String(def.style.opacity));\n\tcircle.setAttribute(\"fill\", filled ? def.style.stroke : \"none\");\n\treturn circle;\n}\n\nfunction createDiamondEndpoint(\n\tdef: RuntimeConnectorState,\n\tkind: \"start\" | \"end\",\n\tlayout: ResolvedLayoutState,\n): SVGPolygonElement {\n\tconst center = endpointPoint(def, kind);\n\tconst radius = ENDPOINT_RADIUS_GRID;\n\tconst points: [number, number][] = [\n\t\t[center[0], center[1] - radius],\n\t\t[center[0] + radius, center[1]],\n\t\t[center[0], center[1] + radius],\n\t\t[center[0] - radius, center[1]],\n\t];\n\tconst polygon = document.createElementNS(NS, \"polygon\") as SVGPolygonElement;\n\tpolygon.setAttribute(\n\t\t\"points\",\n\t\tpoints\n\t\t\t.map((point) => projectGridPoint(point[0], point[1], layout))\n\t\t\t.map(pointToString)\n\t\t\t.join(\" \"),\n\t);\n\tpolygon.setAttribute(\"fill\", def.style.stroke);\n\tpolygon.setAttribute(\"opacity\", String(def.style.opacity));\n\treturn polygon;\n}\n\nfunction createBarEndpoint(\n\tdef: RuntimeConnectorState,\n\tkind: \"start\" | \"end\",\n\tlayout: ResolvedLayoutState,\n): SVGLineElement {\n\tconst center = endpointPoint(def, kind);\n\tconst direction = endpointDirection(def, kind);\n\tconst perpendicular: [number, number] = [-direction[1], direction[0]];\n\tconst half = BAR_WIDTH_GRID / 2;\n\tconst a = projectGridPoint(center[0] + perpendicular[0] * half, center[1] + perpendicular[1] * half, layout);\n\tconst b = projectGridPoint(center[0] - perpendicular[0] * half, center[1] - perpendicular[1] * half, layout);\n\tconst line = document.createElementNS(NS, \"line\") as SVGLineElement;\n\tline.setAttribute(\"x1\", String(a.x));\n\tline.setAttribute(\"y1\", String(a.y));\n\tline.setAttribute(\"x2\", String(b.x));\n\tline.setAttribute(\"y2\", String(b.y));\n\tline.setAttribute(\"stroke\", def.style.stroke);\n\tline.setAttribute(\"stroke-width\", String(Math.max(1, def.style.strokeWidth)));\n\tline.setAttribute(\"stroke-linecap\", \"round\");\n\tline.setAttribute(\"opacity\", String(def.style.opacity));\n\treturn line;\n}\n\nfunction endpointPoint(def: RuntimeConnectorState, kind: \"start\" | \"end\"): [number, number] {\n\treturn kind === \"start\" ? def.route[0] : def.route[def.route.length - 1];\n}\n\nfunction endpointDirection(def: RuntimeConnectorState, kind: \"start\" | \"end\"): [number, number] {\n\tconst point =\n\t\tkind === \"start\"\n\t\t\t? vectorBetween(def.route[0], def.route[1])\n\t\t\t: vectorBetween(def.route[def.route.length - 2], def.route[def.route.length - 1]);\n\tconst effective = def.direction === \"reverse\" ? ([-point[0], -point[1]] as [number, number]) : point;\n\treturn normalizeVector(effective);\n}\n\nfunction vectorBetween(start: [number, number], end: [number, number]): [number, number] {\n\treturn [end[0] - start[0], end[1] - start[1]];\n}\n\nfunction normalizeVector(vector: [number, number]): [number, number] {\n\tconst length = Math.hypot(vector[0], vector[1]);\n\tif (length === 0) return [1, 0];\n\treturn [vector[0] / length, vector[1] / length];\n}\n\nfunction applyElementTransform(node: SVGGElement, def: RuntimeElementState, layout: ResolvedLayoutState): void {\n\tconst screen = projectToScreen(\n\t\tdef.pos[0] + def.size,\n\t\tdef.pos[1] + def.size,\n\t\tlayout.cellSize,\n\t\tlayout.selectedBounds.minX,\n\t\tlayout.selectedBounds.minY,\n\t\tlayout.padding.x,\n\t\tlayout.padding.y,\n\t);\n\tconst visualSize = calculateVisualSize(def.size, layout.cellSize);\n\tconst scale = visualSize / layout.cellSize;\n\tnode.setAttribute(\"transform\", `translate(${screen.screenX} ${screen.screenY}) scale(${scale})`);\n}\n\nfunction applyAmbientClasses(state: ElementState, ambient: RuntimeElementState[\"ambient\"]): void {\n\tconst next = new Set((ambient ?? []).map((item) => item.name));\n\tfor (const name of state.ambient) {\n\t\tif (!next.has(name)) state.node.classList.remove(`iso-ambient-${name}`);\n\t}\n\tfor (const name of next) {\n\t\tif (!state.ambient.has(name)) state.node.classList.add(`iso-ambient-${name}`);\n\t}\n\tstate.ambient = next;\n}\n\nfunction applyConnectorAmbientClasses(state: ConnectorState, ambient: RuntimeConnectorState[\"ambient\"]): void {\n\tconst next = new Set((ambient ?? []).map((item) => item.name));\n\tfor (const name of state.ambient) {\n\t\tif (!next.has(name)) state.shaft.classList.remove(`iso-ambient-${name}`);\n\t}\n\tfor (const name of next) {\n\t\tstate.shaft.classList.add(`iso-ambient-${name}`);\n\t}\n\tstate.ambient = next;\n}\n\n/** Apply a CSS keyframe animation to an element. */\nexport function animateElement(node: SVGElement, keyframeName: string, type: \"enter\" | \"exit\" = \"enter\"): void {\n\tnode.style.opacity = \"1\";\n\tnode.style.animation = \"none\";\n\tnode.getBoundingClientRect();\n\tconst duration = type === \"exit\" ? \"var(--iso-anim-duration-exit, 300ms)\" : \"var(--iso-anim-duration-enter, 400ms)\";\n\tconst easing = type === \"exit\" ? \"var(--iso-anim-easing-exit, ease-in)\" : \"var(--iso-anim-easing-enter, ease-out)\";\n\tnode.style.animation = `${keyframeName} ${duration} ${easing} forwards`;\n}\n"],"names":["NS"],"mappings":"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"}