@sebastianwessel/isostate 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/isostate.runtime.js +4 -4
- package/dist/browser/isostate.runtime.js.map +4 -4
- package/dist/chunks/{index-B6HlPnov.js → index-C3qcXbPI.js} +3 -3
- package/dist/chunks/{index-B6HlPnov.js.map → index-C3qcXbPI.js.map} +1 -1
- package/dist/chunks/{rendering-engine-BgHel7yX.js → rendering-engine-BUUV3Qq-.js} +10 -3
- package/dist/chunks/rendering-engine-BUUV3Qq-.js.map +1 -0
- package/dist/chunks/{scene-parser-xgVJh2FU.js → scene-parser-B9SPDLYs.js} +15 -3
- package/dist/chunks/scene-parser-B9SPDLYs.js.map +1 -0
- package/dist/dsl/browser.js +1 -1
- package/dist/dsl/index.js +1 -1
- package/dist/dsl/scene-parser.d.ts.map +1 -1
- package/dist/dsl/scene-validator.d.ts.map +1 -1
- package/dist/editor-support/adapter.d.ts +1 -0
- package/dist/editor-support/adapter.d.ts.map +1 -1
- package/dist/editor-support/index.js +6 -3
- package/dist/editor-support/index.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/rendering/asset-node.d.ts.map +1 -1
- package/dist/runtime/index.js +2 -2
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/node.d.ts +4 -0
- package/dist/types/node.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/rendering-engine-BgHel7yX.js.map +0 -1
- package/dist/chunks/scene-parser-xgVJh2FU.js.map +0 -1
|
@@ -7,16 +7,16 @@
|
|
|
7
7
|
"/** Base class for all structured errors */\nclass IsostateError extends Error {\n\tconstructor(\n\t\tpublic readonly code: string,\n\t\tmessage: string,\n\t\tpublic readonly details?: Record<string, unknown>,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = this.constructor.name;\n\t}\n}\n\n/** DSL parsing error */\nexport class ParseError extends IsostateError {}\n\n/** DSL validation error */\nexport class ValidationErrorClass extends IsostateError {}\n\n/** Rendering engine error */\nexport class RenderError extends IsostateError {}\n\n/** Animation engine error */\nexport class AnimationError extends IsostateError {}\n\n/** Animation controller error */\nexport class ControllerError extends IsostateError {}\n",
|
|
8
8
|
"/** 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",
|
|
9
9
|
"/** 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",
|
|
10
|
-
"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 fontSize = textContent.fontSize ?? 12;\n\tconst lineHeight = textContent.lineHeight ?? 1.2;\n\tconst anchorX = textAnchorX(align, cellSize);\n\n\ttext.setAttribute(\"x\", String(anchorX));\n\ttext.setAttribute(\"y\", String(-cellSize));\n\ttext.setAttribute(\"text-anchor\", align);\n\ttext.setAttribute(\"dominant-baseline\", \"text-before-edge\");\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 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",
|
|
10
|
+
"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",
|
|
11
11
|
"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",
|
|
12
12
|
"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",
|
|
13
13
|
"/** Easing function type */\nexport type EasingFn = (t: number) => number;\n\n/** Easing configuration type */\nexport type EasingType = \"linear\" | \"easeInCubic\" | \"easeInOutCubic\" | \"easeOutCubic\";\n\n/**\n * Linear easing (no interpolation).\n */\nexport function linear(t: number): number {\n\treturn t;\n}\n\n/**\n * Cubic ease-in: starts slowly, accelerates.\n */\nexport function easeInCubic(t: number): number {\n\treturn t * t * t;\n}\n\n/**\n * Cubic ease-out: starts fast, decelerates.\n */\nexport function easeOutCubic(t: number): number {\n\treturn 1 - (1 - t) ** 3;\n}\n\n/**\n * Cubic ease-in-out: slow start, fast middle, slow end.\n */\nexport function easeInOutCubic(t: number): number {\n\treturn t < 0.5 ? 4 * t * t * t : 1 - (-2 * t + 2) ** 3 / 2;\n}\n\n/**\n * Resolve an easing type string to a function.\n */\nexport function resolveEasing(type: EasingType): EasingFn {\n\tswitch (type) {\n\t\tcase \"linear\":\n\t\t\treturn linear;\n\t\tcase \"easeInCubic\":\n\t\t\treturn easeInCubic;\n\t\tcase \"easeOutCubic\":\n\t\t\treturn easeOutCubic;\n\t\tcase \"easeInOutCubic\":\n\t\t\treturn easeInOutCubic;\n\t}\n}\n",
|
|
14
14
|
"import {\n\tanimateElement,\n\tapplySceneViewBox,\n\tgetConnectorState,\n\tgetCurrentElementBounds,\n\tgetElementState,\n\tgetGridAreaBounds,\n\tgetResolvedViewBox,\n\thideElementAfterExit,\n\tunhideElementOnReadd,\n\tupdateElementTransforms,\n\ttype ViewBoxRect,\n} from \"../rendering/rendering-engine.ts\";\nimport { ControllerError } from \"../types/errors.ts\";\nimport type {\n\tCameraGridArea,\n\tCameraZoomOptions,\n\tEntryAnimation,\n\tExitAnimation,\n\tRuntimeCameraTarget,\n\tRuntimeConnectorState,\n\tRuntimeElementState,\n} from \"../types/node.ts\";\nimport type { RuntimeBundle } from \"../types/runtime-bundle.ts\";\nimport { type EasingType, resolveEasing } from \"../utils/easing.ts\";\nimport { AnimationEngine } from \"./animation-engine.ts\";\n\n// ── Event types ────────────────────────────────────────────────────────────\n\nexport interface ControllerEvents {\n\t\"progress-change\": (progress: number) => void;\n\t\"scene-change\": (index: number) => void;\n\t\"camera-change\": (state: CameraState) => void;\n\tpaused: () => void;\n\tresumed: () => void;\n}\n\ntype EventKey = keyof ControllerEvents;\ntype AnyEventListener = (...args: unknown[]) => void;\ntype LifecycleTransition = {\n\tfrom: RuntimeElementState[\"presence\"];\n\tto: RuntimeElementState[\"presence\"];\n};\ntype RequiredCameraFocus = {\n\ttarget: RuntimeCameraTarget;\n\tpadding?: number;\n\tduration?: number;\n\teasing?: \"linear\" | \"ease-in-out\" | \"ease-out\";\n};\n\n// ── Controller config ──────────────────────────────────────────────────────\n\nexport interface ControllerConfig {\n\t/** Scroll container used to derive progress. Defaults to the mount target in `mountScene()`. */\n\tcontainer?: HTMLElement;\n\t/** SVG scene updated by this controller. Defaults to the first SVG in `container` for direct controller usage. */\n\tsceneElement?: SVGSVGElement;\n\tscrollDirection?: \"vertical\" | \"horizontal\";\n\tscrollOffset?: {\n\t\ttop?: number;\n\t\tbottom?: number;\n\t\tleft?: number;\n\t\tright?: number;\n\t};\n\tminProgress?: number;\n\tmaxProgress?: number;\n\tkeyboardControls?: boolean;\n\ttouchControls?: boolean;\n\tscrollSensitivity?: number;\n\ttransitionDuration?: number;\n\ttransitionEasing?: \"linear\" | \"ease-in-out\" | \"ease-out\";\n}\n\nexport type { CameraGridArea, CameraZoomOptions };\n\nexport interface CameraState {\n\tviewBox: ViewBoxRect;\n\ttarget?: RuntimeCameraTarget;\n\tisZoomed: boolean;\n}\n\ntype ResolvedControllerConfig = Required<Omit<ControllerConfig, \"container\" | \"sceneElement\">> & {\n\tcontainer?: HTMLElement;\n\tsceneElement?: SVGSVGElement;\n};\n\nconst DEFAULT_CONFIG: Required<Omit<ControllerConfig, \"container\" | \"sceneElement\">> = {\n\tscrollDirection: \"vertical\",\n\tscrollOffset: {},\n\tminProgress: 0,\n\tmaxProgress: 1,\n\tkeyboardControls: false,\n\ttouchControls: false,\n\tscrollSensitivity: 1.0,\n\ttransitionDuration: 600,\n\ttransitionEasing: \"ease-in-out\",\n};\n\ninterface ControllerRuntime {\n\tengine?: AnimationEngine;\n\tsceneElement?: SVGSVGElement;\n}\n\n// ── Controller implementation ──────────────────────────────────────────────\n\n/**\n * Animation controller — manages scroll progress, scene navigation,\n * and delegates to the animation engine for frame updates.\n */\nexport class AnimationController {\n\tprivate _engine = new AnimationEngine();\n\tprivate _bundle: RuntimeBundle | null = null;\n\tprivate _sceneIndex = 0;\n\tprivate _progress = 0;\n\tprivate _paused = false;\n\tprivate _config: ResolvedControllerConfig = DEFAULT_CONFIG;\n\tprivate _container: HTMLElement | null = null;\n\tprivate _sceneElement: SVGSVGElement | null = null;\n\tprivate _ownsEngine = true;\n\tprivate _rafId: number | null = null;\n\tprivate _pendingProgress: number | null = null;\n\tprivate _destroyed = false;\n\tprivate _listeners: Map<EventKey, Set<AnyEventListener>> = new Map();\n\tprivate _cameraAnim: ReturnType<typeof requestAnimationFrame> | null = null;\n\tprivate _cameraState: CameraState | null = null;\n\n\t// Scroll tracking state\n\tprivate _minScroll = 0;\n\tprivate _maxScroll = 0;\n\tprivate _touchStartY = 0;\n\tprivate _touchStartX = 0;\n\tprivate _isDragging = false;\n\n\t// Transition animation state\n\tprivate _transitionAnim: ReturnType<typeof requestAnimationFrame> | null = null;\n\n\tget engine(): AnimationEngine {\n\t\treturn this._engine;\n\t}\n\n\tget progress(): number {\n\t\treturn this._progress;\n\t}\n\n\tgetProgress(): number {\n\t\tthis._assertNotDestroyed();\n\t\treturn this._progress;\n\t}\n\n\tget sceneIndex(): number {\n\t\treturn this._sceneIndex;\n\t}\n\n\tgetSceneIndex(): number {\n\t\tthis._assertNotDestroyed();\n\t\treturn this._sceneIndex;\n\t}\n\n\tget scenes(): RuntimeBundle[\"scenes\"] {\n\t\treturn this._bundle?.scenes ?? [];\n\t}\n\n\tget paused(): boolean {\n\t\treturn this._paused;\n\t}\n\n\tget currentScene(): RuntimeBundle[\"scenes\"][number] | undefined {\n\t\treturn this.scenes[this._sceneIndex];\n\t}\n\n\t/**\n\t * Initialize the controller with a compiled bundle and optional runtime resources.\n\t */\n\tinit(bundle: RuntimeBundle, config: ControllerConfig = {}, runtime: ControllerRuntime = {}): void {\n\t\tthis._assertNotDestroyed();\n\t\tif (!bundle.scenes || bundle.scenes.length === 0) {\n\t\t\tthrow new ControllerError(\"CONTROLLER_NO_SCENES\", \"init() requires at least one compiled scene stop\");\n\t\t}\n\n\t\tthis._cancelFrame();\n\t\tthis._bundle = bundle;\n\t\tthis._engine = runtime.engine ?? new AnimationEngine();\n\t\tthis._ownsEngine = !runtime.engine;\n\t\tthis._sceneIndex = 0;\n\t\tthis._progress = 0;\n\t\tthis._paused = false;\n\t\tthis._config = { ...DEFAULT_CONFIG, ...config };\n\t\tthis._sceneElement = runtime.sceneElement ?? config.sceneElement ?? null;\n\t\tthis._cameraState = {\n\t\t\tviewBox: getResolvedViewBox(bundle),\n\t\t\ttarget: { type: \"reset\" },\n\t\t\tisZoomed: false,\n\t\t};\n\n\t\tthis._engine.init(bundle);\n\t\tthis._bindScroll();\n\t}\n\n\t/**\n\t * Set scroll progress (0–1, clamped) and trigger frame update.\n\t */\n\tsetProgress(progress: number): void {\n\t\tthis._assertNotDestroyed();\n\t\tif (!Number.isFinite(progress)) {\n\t\t\tthrow new ControllerError(\"CONTROLLER_PROGRESS_OUT_OF_RANGE\", \"setProgress() requires a finite progress value\");\n\t\t}\n\n\t\tconst clamped = Math.max(0, Math.min(1, progress));\n\t\tif (clamped === this._progress && !this._paused && this._rafId !== null) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._progress = clamped;\n\t\tthis._cancelCameraAnimation();\n\t\tif (this._paused) return;\n\t\tthis._scheduleProgressForward(clamped);\n\t}\n\n\t/**\n\t * Navigate to next scene (wraps to 0 if at end).\n\t */\n\tnextScene(): void {\n\t\tthis._assertNotDestroyed();\n\t\tif (this.scenes.length <= 1) return;\n\n\t\tconst nextIndex = (this._sceneIndex + 1) % this.scenes.length;\n\t\tthis._transitionToScene(nextIndex);\n\t}\n\n\t/**\n\t * Navigate to previous scene (wraps to last if at beginning).\n\t */\n\tprevScene(): void {\n\t\tthis._assertNotDestroyed();\n\t\tif (this.scenes.length <= 1) return;\n\n\t\tconst prevIndex = (this._sceneIndex - 1 + this.scenes.length) % this.scenes.length;\n\t\tthis._transitionToScene(prevIndex);\n\t}\n\n\t/**\n\t * Set scene index directly.\n\t */\n\tsetSceneIndex(index: number): void {\n\t\tthis._assertNotDestroyed();\n\t\tif (index < 0 || index >= this.scenes.length) {\n\t\t\tthrow new ControllerError(\n\t\t\t\t\"CONTROLLER_SCENE_INDEX_OUT_OF_RANGE\",\n\t\t\t\t`Scene index ${index} is out of bounds [0, ${this.scenes.length - 1}]`,\n\t\t\t);\n\t\t}\n\t\tthis._transitionToScene(index);\n\t}\n\n\t/**\n\t * Pause all animations.\n\t */\n\tpause(): void {\n\t\tthis._assertNotDestroyed();\n\t\tif (this._paused) return;\n\t\tthis._paused = true;\n\t\tthis._cancelFrame();\n\t\tthis._engine.pause();\n\t\tthis._applyPauseState(true);\n\t\tthis._emit(\"paused\");\n\t}\n\n\t/**\n\t * Resume from paused state.\n\t */\n\tresume(): void {\n\t\tthis._assertNotDestroyed();\n\t\tif (!this._paused) return;\n\t\tthis._paused = false;\n\t\tthis._engine.resume();\n\t\tthis._applyPauseState(false);\n\t\tthis._scheduleProgressForward(this._progress);\n\t\tthis._emit(\"resumed\");\n\t}\n\n\t/**\n\t * Check if controller is paused.\n\t */\n\tisPaused(): boolean {\n\t\tthis._assertNotDestroyed();\n\t\treturn this._paused;\n\t}\n\n\tzoomToElement(id: string, options: CameraZoomOptions = {}): void {\n\t\tthis._assertNotDestroyed();\n\t\tconst svg = this._getSceneSvg();\n\t\tif (!this._bundle || !svg) {\n\t\t\tthrow new ControllerError(\"CAMERA_NOT_INITIALIZED\", \"zoomToElement() requires an initialized scene SVG\");\n\t\t}\n\t\tconst elementBounds = getCurrentElementBounds(svg, id);\n\t\tif (!elementBounds) {\n\t\t\tthrow new ControllerError(\"CAMERA_TARGET_NOT_FOUND\", `Camera target element \"${id}\" was not found`, {\n\t\t\t\telementId: id,\n\t\t\t});\n\t\t}\n\t\tthis._applyCameraDestination(\n\t\t\texpandViewBox(elementBounds, this._resolveCameraPadding(options)),\n\t\t\t{ type: \"element\", id },\n\t\t\toptions,\n\t\t);\n\t}\n\n\tzoomToArea(area: CameraGridArea, options: CameraZoomOptions = {}): void {\n\t\tthis._assertNotDestroyed();\n\t\tif (!this._bundle || !this._getSceneSvg()) {\n\t\t\tthrow new ControllerError(\"CAMERA_NOT_INITIALIZED\", \"zoomToArea() requires an initialized scene SVG\");\n\t\t}\n\t\tthis._assertValidCameraArea(area);\n\t\tconst bounds = getGridAreaBounds(this._bundle, area);\n\t\tthis._applyCameraDestination(\n\t\t\texpandViewBox(bounds, this._resolveCameraPadding(options)),\n\t\t\t{\n\t\t\t\ttype: \"area\",\n\t\t\t\tat: [...area.at],\n\t\t\t\tsize: [...area.size],\n\t\t\t},\n\t\t\toptions,\n\t\t);\n\t}\n\n\tresetZoom(options: CameraZoomOptions = {}): void {\n\t\tthis._assertNotDestroyed();\n\t\tif (!this._bundle || !this._getSceneSvg()) {\n\t\t\tthrow new ControllerError(\"CAMERA_NOT_INITIALIZED\", \"resetZoom() requires an initialized scene SVG\");\n\t\t}\n\t\tthis._applyCameraDestination(getResolvedViewBox(this._bundle), { type: \"reset\" }, options);\n\t}\n\n\tgetCameraState(): CameraState {\n\t\tthis._assertNotDestroyed();\n\t\tif (!this._cameraState) {\n\t\t\tthrow new ControllerError(\"CAMERA_NOT_INITIALIZED\", \"Camera state is not initialized\");\n\t\t}\n\t\treturn copyCameraState(this._cameraState);\n\t}\n\n\t/**\n\t * Destroy controller and clean up all listeners and resources.\n\t */\n\tdestroy(): void {\n\t\tthis._assertNotDestroyed();\n\t\tthis._unbindScroll();\n\t\tthis._cancelFrame();\n\t\tthis._cancelTransition();\n\t\tthis._cancelCameraAnimation();\n\t\tif (this._ownsEngine) this._engine.destroy();\n\t\tthis._listeners.clear();\n\t\tthis._bundle = null;\n\t\tthis._container = null;\n\t\tthis._pendingProgress = null;\n\t\tthis._cameraState = null;\n\t\tthis._destroyed = true;\n\t}\n\n\t// ── Event system ───────────────────────────────────────────────────────\n\n\ton<K extends EventKey>(event: K, listener: ControllerEvents[K]): void {\n\t\tthis._assertNotDestroyed();\n\t\tconst set = this._listeners.get(event) ?? new Set();\n\t\tset.add(listener as AnyEventListener);\n\t\tthis._listeners.set(event, set);\n\t}\n\n\toff<K extends EventKey>(event: K, listener: ControllerEvents[K]): void {\n\t\tthis._assertNotDestroyed();\n\t\tconst set = this._listeners.get(event);\n\t\tif (set) {\n\t\t\tset.delete(listener as AnyEventListener);\n\t\t}\n\t}\n\n\tprivate _emit<K extends EventKey>(event: K, ...args: Parameters<ControllerEvents[K]>): void {\n\t\tconst set = this._listeners.get(event);\n\t\tif (set) {\n\t\t\tfor (const listener of set) {\n\t\t\t\ttry {\n\t\t\t\t\t(listener as AnyEventListener)(...args);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tqueueMicrotask(() => {\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// ── Frame update ───────────────────────────────────────────────────────\n\n\tprivate _scheduleProgressForward(progress: number): void {\n\t\tthis._pendingProgress = progress;\n\t\tif (this._rafId !== null) return;\n\n\t\tthis._rafId = requestAnimationFrame(() => {\n\t\t\tthis._rafId = null;\n\t\t\tconst pending = this._pendingProgress;\n\t\t\tthis._pendingProgress = null;\n\t\t\tif (pending === null || this._paused || this._destroyed) return;\n\t\t\tthis._engine.setProgress(pending);\n\t\t\tthis._applyFrameUpdate();\n\t\t\tthis._emit(\"progress-change\", pending);\n\t\t});\n\t}\n\n\tprivate _cancelFrame(): void {\n\t\tif (this._rafId !== null) {\n\t\t\tcancelAnimationFrame(this._rafId);\n\t\t\tthis._rafId = null;\n\t\t}\n\t\tthis._pendingProgress = null;\n\t}\n\n\tprivate _applyFrameUpdate(): void {\n\t\tif (!this._bundle) return;\n\n\t\tconst svg = (this._sceneElement ?? this._container?.querySelector(\"svg\") ?? null) as SVGSVGElement & {\n\t\t\t_elementMap?: Map<string, unknown>;\n\t\t\t_connectorMap?: Map<string, unknown>;\n\t\t};\n\t\tif (!svg) return;\n\n\t\tconst updates = this._engine.getFrameUpdates().map((update) => ({\n\t\t\tid: update.id,\n\t\t\tasset: update.asset,\n\t\t\tpos: update.pos,\n\t\t\tsize: update.size,\n\t\t\tlayer: update.layer,\n\t\t\tpresence: update.lifecycle,\n\t\t\tenter: update.entry as RuntimeElementState[\"enter\"],\n\t\t\texit: update.exit as RuntimeElementState[\"exit\"],\n\t\t\tambient: update.ambient,\n\t\t\ttext: update.text,\n\t\t\tprimitive: update.primitive,\n\t\t}));\n\t\tconst connectors = this._engine.getConnectorFrameUpdates().map((update) => ({\n\t\t\tid: update.id,\n\t\t\troute: update.route,\n\t\t\tlayer: update.layer,\n\t\t\tpresence: update.lifecycle,\n\t\t\tstyle: update.style,\n\t\t\tstart: update.start,\n\t\t\tend: update.end,\n\t\t\tdirection: update.direction,\n\t\t\tenter: update.entry as RuntimeConnectorState[\"enter\"],\n\t\t\texit: update.exit as RuntimeConnectorState[\"exit\"],\n\t\t\tambient: update.ambient,\n\t\t}));\n\n\t\tupdateElementTransforms(svg, updates, connectors);\n\t\tthis._applyLifecycleChanges(updates);\n\t\tthis._applyConnectorLifecycleChanges(connectors);\n\t\tthis._applyCameraForProgress(this._progress);\n\t}\n\n\tprivate _applyCameraForProgress(progress: number): void {\n\t\tconst svg = this._getSceneSvg();\n\t\tif (!this._bundle || !svg) return;\n\t\tconst sceneStops = this.scenes;\n\t\tif (sceneStops.length === 0) return;\n\t\tconst { previous, next } = surroundingStops(sceneStops, progress);\n\t\tconst previousCamera = this._effectiveCameraAt(previous.index);\n\t\tconst nextCamera = this._effectiveCameraAt(next.index);\n\t\tconst previousViewBox = this._resolveCameraViewBox(previousCamera);\n\t\tconst nextViewBox = this._resolveCameraViewBox(nextCamera);\n\t\tconst range = next.scene.progress - previous.scene.progress;\n\t\tconst rawT = range <= 0 ? 0 : (progress - previous.scene.progress) / range;\n\t\tconst t = resolveCameraEasing(nextCamera.easing)(Math.max(0, Math.min(1, rawT)));\n\t\tconst viewBox = lerpViewBox(previousViewBox, nextViewBox, t);\n\t\tconst target = t < 1 ? previousCamera.target : nextCamera.target;\n\t\tthis._setCameraViewBox(svg, viewBox, target);\n\t}\n\n\tprivate _effectiveCameraAt(index: number): RequiredCameraFocus {\n\t\tfor (let i = index; i >= 0; i--) {\n\t\t\tconst camera = this.scenes[i]?.camera;\n\t\t\tif (camera) {\n\t\t\t\treturn {\n\t\t\t\t\ttarget: camera.target,\n\t\t\t\t\tpadding: camera.padding,\n\t\t\t\t\tduration: camera.duration,\n\t\t\t\t\teasing: camera.easing,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn { target: { type: \"reset\" } };\n\t}\n\n\tprivate _resolveCameraViewBox(camera: RequiredCameraFocus): ViewBoxRect {\n\t\tif (!this._bundle) throw new ControllerError(\"CAMERA_NOT_INITIALIZED\", \"Camera requires an initialized bundle\");\n\t\tif (camera.target.type === \"reset\") return getResolvedViewBox(this._bundle);\n\t\tif (camera.target.type === \"area\") {\n\t\t\treturn expandViewBox(\n\t\t\t\tgetGridAreaBounds(this._bundle, { at: camera.target.at, size: camera.target.size }),\n\t\t\t\tcamera.padding ?? 32,\n\t\t\t);\n\t\t}\n\t\tconst svg = this._getSceneSvg();\n\t\tif (!svg) throw new ControllerError(\"CAMERA_NOT_INITIALIZED\", \"Camera requires an initialized scene SVG\");\n\t\tconst bounds = getCurrentElementBounds(svg, camera.target.id);\n\t\tif (!bounds) {\n\t\t\tthrow new ControllerError(\n\t\t\t\t\"CAMERA_TARGET_NOT_FOUND\",\n\t\t\t\t`Camera target element \"${camera.target.id}\" was not found`,\n\t\t\t\t{\n\t\t\t\t\telementId: camera.target.id,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t\treturn expandViewBox(bounds, camera.padding ?? 32);\n\t}\n\n\tprivate _applyCameraDestination(viewBox: ViewBoxRect, target: RuntimeCameraTarget, options: CameraZoomOptions): void {\n\t\tconst svg = this._getSceneSvg();\n\t\tif (!svg) throw new ControllerError(\"CAMERA_NOT_INITIALIZED\", \"Camera requires an initialized scene SVG\");\n\t\tthis._cancelCameraAnimation();\n\t\tconst duration = this._resolveCameraDuration(options);\n\t\tif (duration === 0) {\n\t\t\tthis._setCameraViewBox(svg, viewBox, target);\n\t\t\treturn;\n\t\t}\n\t\tconst from = currentSvgViewBox(svg) ?? this._cameraState?.viewBox ?? viewBox;\n\t\tconst easing = resolveCameraEasing(options.easing ?? this._config.transitionEasing);\n\t\tconst start = performance.now();\n\t\tconst step = (now: number) => {\n\t\t\tconst t = Math.min((now - start) / duration, 1);\n\t\t\tthis._setCameraViewBox(svg, lerpViewBox(from, viewBox, easing(t)), target);\n\t\t\tif (t < 1) {\n\t\t\t\tthis._cameraAnim = requestAnimationFrame(step);\n\t\t\t} else {\n\t\t\t\tthis._cameraAnim = null;\n\t\t\t}\n\t\t};\n\t\tthis._cameraAnim = requestAnimationFrame(step);\n\t}\n\n\tprivate _setCameraViewBox(svg: SVGSVGElement, viewBox: ViewBoxRect, target?: RuntimeCameraTarget): void {\n\t\tapplySceneViewBox(svg, viewBox);\n\t\tconst full = this._bundle ? getResolvedViewBox(this._bundle) : viewBox;\n\t\tthis._cameraState = {\n\t\t\tviewBox,\n\t\t\ttarget,\n\t\t\tisZoomed: !sameViewBox(viewBox, full),\n\t\t};\n\t\tthis._emit(\"camera-change\", this.getCameraState());\n\t}\n\n\tprivate _getSceneSvg(): SVGSVGElement | null {\n\t\treturn (this._sceneElement ?? this._container?.querySelector(\"svg\") ?? null) as SVGSVGElement | null;\n\t}\n\n\tprivate _resolveCameraPadding(options: CameraZoomOptions): number {\n\t\tconst padding = options.padding ?? 32;\n\t\tif (!Number.isFinite(padding) || padding < 0 || padding > 2048) {\n\t\t\tthrow new ControllerError(\"INVALID_CAMERA_OPTIONS\", \"Camera padding must be between 0 and 2048\");\n\t\t}\n\t\treturn padding;\n\t}\n\n\tprivate _resolveCameraDuration(options: CameraZoomOptions): number {\n\t\tconst duration = options.duration ?? this._config.transitionDuration;\n\t\tif (!Number.isInteger(duration) || duration < 0 || duration > 10000) {\n\t\t\tthrow new ControllerError(\"INVALID_CAMERA_OPTIONS\", \"Camera duration must be an integer from 0 to 10000\");\n\t\t}\n\t\treturn duration;\n\t}\n\n\tprivate _assertValidCameraArea(area: CameraGridArea): void {\n\t\tif (\n\t\t\t!Array.isArray(area.at) ||\n\t\t\tarea.at.length !== 2 ||\n\t\t\t!area.at.every((value) => Number.isFinite(value) && value >= 0) ||\n\t\t\t!Array.isArray(area.size) ||\n\t\t\tarea.size.length !== 2 ||\n\t\t\t!area.size.every((value) => Number.isFinite(value) && value > 0)\n\t\t) {\n\t\t\tthrow new ControllerError(\"INVALID_CAMERA_OPTIONS\", \"Camera area must use non-negative at and positive size\");\n\t\t}\n\t}\n\n\tprivate _applyLifecycleChanges(elements: RuntimeElementState[]): void {\n\t\tfor (const elDef of elements) {\n\t\t\tconst transition = this._engine.getLifecycleTransition(elDef.id);\n\t\t\tif (!transition) continue;\n\n\t\t\tconst svgForState = (this._sceneElement ?? this._container?.querySelector(\"svg\")) as SVGSVGElement | null;\n\t\t\tif (!svgForState) continue;\n\t\t\tconst state = getElementState(svgForState, elDef.id);\n\t\t\tif (!state) continue;\n\n\t\t\tif (transition.to === \"entering\" || transition.to === \"present\") {\n\t\t\t\tstate.isHidden = false;\n\t\t\t\tunhideElementOnReadd(state.node);\n\t\t\t}\n\n\t\t\tif (isForwardEntryTransition(transition)) {\n\t\t\t\tthis._applyEntryAnimation(elDef, state);\n\t\t\t}\n\n\t\t\tif (isReverseExitTransition(transition)) {\n\t\t\t\tthis._applyExitAnimation({ ...elDef, exit: oppositeExitAnimation(elDef.enter ?? \"fade-in\") }, state);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (isForwardExitTransition(transition)) {\n\t\t\t\tthis._applyExitAnimation(elDef, state);\n\t\t\t}\n\n\t\t\tif (isReverseEntryTransition(transition)) {\n\t\t\t\tstate.isHidden = false;\n\t\t\t\tunhideElementOnReadd(state.node);\n\t\t\t\tthis._applyEntryAnimation({ ...elDef, enter: oppositeEntryAnimation(elDef.exit ?? \"fade-out\") }, state);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (transition.to === \"removed\") {\n\t\t\t\tstate.isHidden = true;\n\t\t\t\thideElementAfterExit(state.node);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _applyConnectorLifecycleChanges(connectors: RuntimeConnectorState[]): void {\n\t\tfor (const connectorDef of connectors) {\n\t\t\tconst transition = this._engine.getConnectorLifecycleTransition(connectorDef.id);\n\t\t\tif (!transition) continue;\n\n\t\t\tconst svgForState = (this._sceneElement ?? this._container?.querySelector(\"svg\")) as SVGSVGElement | null;\n\t\t\tif (!svgForState) continue;\n\t\t\tconst state = getConnectorState(svgForState, connectorDef.id);\n\t\t\tif (!state) continue;\n\n\t\t\tif (transition.to === \"entering\" || transition.to === \"present\") {\n\t\t\t\tstate.isHidden = false;\n\t\t\t\tunhideElementOnReadd(state.node);\n\t\t\t}\n\n\t\t\tif (isForwardEntryTransition(transition)) {\n\t\t\t\tthis._applyConnectorEntryAnimation(connectorDef, state);\n\t\t\t}\n\n\t\t\tif (isReverseExitTransition(transition)) {\n\t\t\t\tthis._applyConnectorExitAnimation(\n\t\t\t\t\t{\n\t\t\t\t\t\t...connectorDef,\n\t\t\t\t\t\texit: oppositeExitAnimation(connectorDef.enter ?? \"fade-in\"),\n\t\t\t\t\t},\n\t\t\t\t\tstate,\n\t\t\t\t);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (isForwardExitTransition(transition)) {\n\t\t\t\tthis._applyConnectorExitAnimation(connectorDef, state);\n\t\t\t}\n\n\t\t\tif (isReverseEntryTransition(transition)) {\n\t\t\t\tstate.isHidden = false;\n\t\t\t\tunhideElementOnReadd(state.node);\n\t\t\t\tthis._applyConnectorEntryAnimation(\n\t\t\t\t\t{\n\t\t\t\t\t\t...connectorDef,\n\t\t\t\t\t\tenter: oppositeEntryAnimation(connectorDef.exit ?? \"fade-out\"),\n\t\t\t\t\t},\n\t\t\t\t\tstate,\n\t\t\t\t);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (transition.to === \"removed\") {\n\t\t\t\tstate.isHidden = true;\n\t\t\t\thideElementAfterExit(state.node);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _applyEntryAnimation(elDef: RuntimeElementState, state: { node: SVGElement; isHidden: boolean }): void {\n\t\tconst entryAnim = elDef.enter ?? \"fade-in\";\n\t\tif (entryAnim === \"none\") return;\n\n\t\tanimateElement(state.node, `iso-anim-${entryAnim}`, \"enter\");\n\t\tconst expectedAnimation = state.node.style.animation;\n\n\t\tstate.node.addEventListener(\n\t\t\t\"animationend\",\n\t\t\t() => {\n\t\t\t\tif (state.node.style.animation === expectedAnimation) {\n\t\t\t\t\tstate.node.style.animation = \"\";\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ once: true },\n\t\t);\n\t}\n\n\tprivate _applyExitAnimation(elDef: RuntimeElementState, state: { node: SVGElement; isHidden: boolean }): void {\n\t\tconst exitAnim = elDef.exit ?? \"fade-out\";\n\t\tif (exitAnim === \"none\") {\n\t\t\thideElementAfterExit(state.node);\n\t\t\treturn;\n\t\t}\n\n\t\tanimateElement(state.node, `iso-anim-${exitAnim}`, \"exit\");\n\t\tconst expectedAnimation = state.node.style.animation;\n\n\t\tstate.node.addEventListener(\n\t\t\t\"animationend\",\n\t\t\t() => {\n\t\t\t\tif (state.node.style.animation === expectedAnimation) {\n\t\t\t\t\thideElementAfterExit(state.node);\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ once: true },\n\t\t);\n\t}\n\n\tprivate _applyConnectorEntryAnimation(\n\t\tconnectorDef: RuntimeConnectorState,\n\t\tstate: { node: SVGElement; isHidden: boolean },\n\t): void {\n\t\tconst entryAnim = connectorDef.enter ?? \"fade-in\";\n\t\tif (entryAnim === \"none\") return;\n\n\t\tanimateElement(state.node, `iso-anim-${entryAnim}`, \"enter\");\n\t\tconst expectedAnimation = state.node.style.animation;\n\n\t\tstate.node.addEventListener(\n\t\t\t\"animationend\",\n\t\t\t() => {\n\t\t\t\tif (state.node.style.animation === expectedAnimation) {\n\t\t\t\t\tstate.node.style.animation = \"\";\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ once: true },\n\t\t);\n\t}\n\n\tprivate _applyConnectorExitAnimation(\n\t\tconnectorDef: RuntimeConnectorState,\n\t\tstate: { node: SVGElement; isHidden: boolean },\n\t): void {\n\t\tconst exitAnim = connectorDef.exit ?? \"fade-out\";\n\t\tif (exitAnim === \"none\") {\n\t\t\thideElementAfterExit(state.node);\n\t\t\treturn;\n\t\t}\n\n\t\tanimateElement(state.node, `iso-anim-${exitAnim}`, \"exit\");\n\t\tconst expectedAnimation = state.node.style.animation;\n\n\t\tstate.node.addEventListener(\n\t\t\t\"animationend\",\n\t\t\t() => {\n\t\t\t\tif (state.node.style.animation === expectedAnimation) {\n\t\t\t\t\thideElementAfterExit(state.node);\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ once: true },\n\t\t);\n\t}\n\n\t// ── Scene transitions ──────────────────────────────────────────────────\n\n\tprivate _transitionToScene(index: number): void {\n\t\tthis._cancelTransition();\n\n\t\tif (index === this._sceneIndex) return;\n\n\t\tthis._sceneIndex = index;\n\t\tthis._emit(\"scene-change\", index);\n\n\t\tconst stop = this.scenes[index];\n\t\tconst from = this._progress;\n\t\tconst to = stop.progress;\n\t\tconst duration = this._config.transitionDuration;\n\t\tif (duration > 0 && from !== to) {\n\t\t\tthis._animateProgress(from, to, duration);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._progress = to;\n\t\tthis._scheduleProgressForward(to);\n\t}\n\n\tprivate _animateProgress(from: number, to: number, duration: number): void {\n\t\tconst easing = resolveEasing(\n\t\t\t(this._config.transitionEasing === \"ease-in-out\"\n\t\t\t\t? \"easeInOutCubic\"\n\t\t\t\t: this._config.transitionEasing === \"ease-out\"\n\t\t\t\t\t? \"easeOutCubic\"\n\t\t\t\t\t: \"linear\") as EasingType,\n\t\t);\n\t\tconst start = performance.now();\n\n\t\tconst step = (now: number) => {\n\t\t\tconst elapsed = now - start;\n\t\t\tconst t = Math.min(elapsed / duration, 1);\n\t\t\tconst easedT = easing(t);\n\t\t\tconst currentProgress = from + (to - from) * easedT;\n\n\t\t\tthis.setProgress(currentProgress);\n\n\t\t\tif (t < 1) {\n\t\t\t\tthis._transitionAnim = requestAnimationFrame(step);\n\t\t\t} else {\n\t\t\t\tthis._transitionAnim = null;\n\t\t\t}\n\t\t};\n\n\t\tthis._transitionAnim = requestAnimationFrame(step);\n\t}\n\n\tprivate _cancelTransition(): void {\n\t\tif (this._transitionAnim !== null) {\n\t\t\tcancelAnimationFrame(this._transitionAnim);\n\t\t\tthis._transitionAnim = null;\n\t\t}\n\t}\n\n\tprivate _cancelCameraAnimation(): void {\n\t\tif (this._cameraAnim !== null) {\n\t\t\tcancelAnimationFrame(this._cameraAnim);\n\t\t\tthis._cameraAnim = null;\n\t\t}\n\t}\n\n\t// ── Scroll binding ─────────────────────────────────────────────────────\n\n\tprivate _bindScroll(): void {\n\t\tconst container = this._config.container;\n\t\tif (!container) return;\n\n\t\tthis._container = container;\n\t\tthis._calculateScrollBounds();\n\n\t\tcontainer.addEventListener(\"scroll\", this._onScroll, { passive: true });\n\t\twindow.addEventListener(\"resize\", this._onResize, { passive: true });\n\n\t\tif (this._config.keyboardControls) {\n\t\t\tdocument.addEventListener(\"keydown\", this._onKeyDown);\n\t\t}\n\n\t\tif (this._config.touchControls) {\n\t\t\tcontainer.addEventListener(\"touchstart\", this._onTouchStart, {\n\t\t\t\tpassive: true,\n\t\t\t});\n\t\t\tcontainer.addEventListener(\"touchmove\", this._onTouchMove, {\n\t\t\t\tpassive: false,\n\t\t\t});\n\t\t\tcontainer.addEventListener(\"touchend\", this._onTouchEnd);\n\t\t}\n\t}\n\n\tprivate _unbindScroll(): void {\n\t\tconst container = this._config.container;\n\t\tif (!container) return;\n\n\t\tcontainer.removeEventListener(\"scroll\", this._onScroll);\n\t\twindow.removeEventListener(\"resize\", this._onResize);\n\t\tdocument.removeEventListener(\"keydown\", this._onKeyDown);\n\t\tcontainer.removeEventListener(\"touchstart\", this._onTouchStart);\n\t\tcontainer.removeEventListener(\"touchmove\", this._onTouchMove);\n\t\tcontainer.removeEventListener(\"touchend\", this._onTouchEnd);\n\t}\n\n\tprivate _calculateScrollBounds(): void {\n\t\tconst container = this._config.container;\n\t\tif (!container) return;\n\n\t\tconst offset = this._config.scrollOffset ?? {};\n\t\tif (this._config.scrollDirection === \"horizontal\") {\n\t\t\tthis._minScroll = offset.left ?? 0;\n\t\t\tthis._maxScroll = container.scrollWidth - container.clientWidth - (offset.right ?? 0);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._minScroll = offset.top ?? 0;\n\t\tthis._maxScroll = container.scrollHeight - container.clientHeight - (offset.bottom ?? 0);\n\t}\n\n\tprivate _onScroll = (): void => {\n\t\tif (this._paused || this._destroyed) return;\n\n\t\tconst container = this._config.container;\n\t\tif (!container) return;\n\n\t\tconst currentScroll = this._config.scrollDirection === \"horizontal\" ? container.scrollLeft : container.scrollTop;\n\n\t\tconst range = this._maxScroll - this._minScroll;\n\t\tif (range <= 0) return;\n\n\t\tconst rawProgress = (currentScroll - this._minScroll) / range;\n\t\tconst clampedProgress = Math.max(\n\t\t\tthis._config.minProgress ?? 0,\n\t\t\tMath.min(this._config.maxProgress ?? 1, rawProgress),\n\t\t);\n\n\t\tconst sensitivity = this._config.scrollSensitivity ?? 1;\n\t\tif (clampedProgress !== this._progress) {\n\t\t\tthis.setProgress(clampedProgress * sensitivity);\n\t\t}\n\t};\n\n\tprivate _onResize = (): void => {\n\t\tif (this._destroyed) return;\n\t\tthis._calculateScrollBounds();\n\t};\n\n\tprivate _onKeyDown = (e: KeyboardEvent): void => {\n\t\tif (this._destroyed) return;\n\t\tif (e.key === \"ArrowRight\" || e.key === \"ArrowDown\" || e.key === \" \") {\n\t\t\te.preventDefault();\n\t\t\tthis.nextScene();\n\t\t} else if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n\t\t\te.preventDefault();\n\t\t\tthis.prevScene();\n\t\t}\n\t};\n\n\tprivate _onTouchStart = (e: TouchEvent): void => {\n\t\tif (this._destroyed) return;\n\t\tthis._isDragging = true;\n\t\tconst touch = e.touches[0];\n\t\tif (this._config.scrollDirection === \"horizontal\") {\n\t\t\tthis._touchStartX = touch.clientX;\n\t\t} else {\n\t\t\tthis._touchStartY = touch.clientY;\n\t\t}\n\t};\n\n\tprivate _onTouchMove = (e: TouchEvent): void => {\n\t\tif (this._destroyed) return;\n\t\tif (!this._isDragging) return;\n\n\t\tconst touch = e.touches[0];\n\t\tconst delta =\n\t\t\tthis._config.scrollDirection === \"horizontal\"\n\t\t\t\t? this._touchStartX - touch.clientX\n\t\t\t\t: this._touchStartY - touch.clientY;\n\n\t\tconst sensitivity = this._config.scrollSensitivity ?? 1.0;\n\t\tconst progressDelta = (delta / 300) * sensitivity;\n\t\tconst newProgress = Math.max(0, Math.min(1, this._progress + progressDelta));\n\n\t\tthis.setProgress(newProgress);\n\t};\n\n\tprivate _onTouchEnd = (): void => {\n\t\tif (this._destroyed) return;\n\t\tthis._isDragging = false;\n\t};\n\n\t// ── Pause state ────────────────────────────────────────────────────────\n\n\tprivate _applyPauseState(pause: boolean): void {\n\t\tconst container = this._config.container;\n\t\tif (!container) return;\n\n\t\tconst svg = container.querySelector(\"svg\");\n\t\tif (!svg) return;\n\n\t\tconst playState = pause ? \"paused\" : \"running\";\n\t\tconst ambientElements = svg.querySelectorAll('[class*=\"iso-ambient-\"]');\n\t\tfor (let i = 0; i < ambientElements.length; i++) {\n\t\t\tconst el = ambientElements[i] as HTMLElement;\n\t\t\tel.style.animationPlayState = playState;\n\t\t}\n\t}\n\n\tprivate _assertNotDestroyed(): void {\n\t\tif (!this._destroyed) return;\n\t\tthrow new ControllerError(\"CONTROLLER_DESTROYED\", \"AnimationController has been destroyed\");\n\t}\n}\n\nfunction isForwardEntryTransition(transition: LifecycleTransition): boolean {\n\treturn transition.from === \"removed\" && transition.to === \"entering\";\n}\n\nfunction isForwardExitTransition(transition: LifecycleTransition): boolean {\n\treturn transition.to === \"exiting\";\n}\n\nfunction isReverseExitTransition(transition: LifecycleTransition): boolean {\n\treturn transition.to === \"removed\" && transition.from !== \"exiting\";\n}\n\nfunction isReverseEntryTransition(transition: LifecycleTransition): boolean {\n\treturn transition.from === \"exiting\" && transition.to !== \"removed\";\n}\n\nfunction oppositeExitAnimation(entry: EntryAnimation): ExitAnimation {\n\tswitch (entry) {\n\t\tcase \"fade-in\":\n\t\t\treturn \"fade-out\";\n\t\tcase \"fade-in-grow\":\n\t\t\treturn \"fade-out-shrink\";\n\t\tcase \"fall-in\":\n\t\t\treturn \"rise-away\";\n\t\tcase \"rise-from-ground\":\n\t\t\treturn \"fall-through-ground\";\n\t\tcase \"slide-in-left\":\n\t\t\treturn \"slide-out-left\";\n\t\tcase \"slide-in-right\":\n\t\t\treturn \"slide-out-right\";\n\t\tcase \"flip-in\":\n\t\t\treturn \"flip-out\";\n\t\tcase \"none\":\n\t\t\treturn \"none\";\n\t}\n}\n\nfunction oppositeEntryAnimation(exit: ExitAnimation): EntryAnimation {\n\tswitch (exit) {\n\t\tcase \"fade-out\":\n\t\t\treturn \"fade-in\";\n\t\tcase \"fade-out-shrink\":\n\t\t\treturn \"fade-in-grow\";\n\t\tcase \"fall-through-ground\":\n\t\t\treturn \"rise-from-ground\";\n\t\tcase \"rise-away\":\n\t\t\treturn \"fall-in\";\n\t\tcase \"slide-out-left\":\n\t\t\treturn \"slide-in-left\";\n\t\tcase \"slide-out-right\":\n\t\t\treturn \"slide-in-right\";\n\t\tcase \"flip-out\":\n\t\t\treturn \"flip-in\";\n\t\tcase \"none\":\n\t\t\treturn \"none\";\n\t}\n}\n\nfunction surroundingStops(\n\tscenes: RuntimeBundle[\"scenes\"],\n\tprogress: number,\n): {\n\tprevious: { scene: RuntimeBundle[\"scenes\"][number]; index: number };\n\tnext: { scene: RuntimeBundle[\"scenes\"][number]; index: number };\n} {\n\tlet previousIndex = 0;\n\tlet nextIndex = scenes.length - 1;\n\tfor (let i = 0; i < scenes.length; i++) {\n\t\tif (scenes[i].progress <= progress) previousIndex = i;\n\t\tif (scenes[i].progress >= progress) {\n\t\t\tnextIndex = i;\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn {\n\t\tprevious: { scene: scenes[previousIndex], index: previousIndex },\n\t\tnext: { scene: scenes[nextIndex], index: nextIndex },\n\t};\n}\n\nfunction expandViewBox(viewBox: ViewBoxRect, padding: number): ViewBoxRect {\n\treturn {\n\t\tminX: roundCameraNumber(viewBox.minX - padding),\n\t\tminY: roundCameraNumber(viewBox.minY - padding),\n\t\twidth: roundCameraNumber(Math.max(1, viewBox.width + padding * 2)),\n\t\theight: roundCameraNumber(Math.max(1, viewBox.height + padding * 2)),\n\t};\n}\n\nfunction lerpViewBox(from: ViewBoxRect, to: ViewBoxRect, t: number): ViewBoxRect {\n\treturn {\n\t\tminX: roundCameraNumber(from.minX + (to.minX - from.minX) * t),\n\t\tminY: roundCameraNumber(from.minY + (to.minY - from.minY) * t),\n\t\twidth: roundCameraNumber(from.width + (to.width - from.width) * t),\n\t\theight: roundCameraNumber(from.height + (to.height - from.height) * t),\n\t};\n}\n\nfunction sameViewBox(a: ViewBoxRect, b: ViewBoxRect): boolean {\n\treturn a.minX === b.minX && a.minY === b.minY && a.width === b.width && a.height === b.height;\n}\n\nfunction currentSvgViewBox(svg: SVGSVGElement): ViewBoxRect | undefined {\n\tconst raw = svg.getAttribute(\"viewBox\");\n\tif (!raw) return undefined;\n\tconst parts = raw.trim().split(/\\s+/).map(Number);\n\tif (parts.length !== 4 || parts.some((part) => !Number.isFinite(part))) return undefined;\n\treturn { minX: parts[0], minY: parts[1], width: parts[2], height: parts[3] };\n}\n\nfunction resolveCameraEasing(easing: \"linear\" | \"ease-in-out\" | \"ease-out\" | undefined): (t: number) => number {\n\treturn resolveEasing(easing === \"ease-in-out\" ? \"easeInOutCubic\" : easing === \"ease-out\" ? \"easeOutCubic\" : \"linear\");\n}\n\nfunction copyCameraState(state: CameraState): CameraState {\n\treturn {\n\t\tviewBox: { ...state.viewBox },\n\t\ttarget:\n\t\t\tstate.target?.type === \"area\"\n\t\t\t\t? { type: \"area\", at: [...state.target.at], size: [...state.target.size] }\n\t\t\t\t: state.target\n\t\t\t\t\t? { ...state.target }\n\t\t\t\t\t: undefined,\n\t\tisZoomed: state.isZoomed,\n\t};\n}\n\nfunction roundCameraNumber(value: number): number {\n\treturn Math.round(value * 1000) / 1000;\n}\n",
|
|
15
15
|
"/** Pure-JS SHA-256 digest (no Node crypto). */\nexport function sha256(input: string): string {\n\tconst bytes = utf8Bytes(input);\n\tconst bitLength = bytes.length * 8;\n\tbytes.push(0x80);\n\twhile (bytes.length % 64 !== 56) bytes.push(0);\n\tfor (let i = 7; i >= 0; i--) {\n\t\tbytes.push(Math.floor(bitLength / 2 ** (i * 8)) & 0xff);\n\t}\n\n\tconst h = [0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19];\n\tconst k = [\n\t\t0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98,\n\t\t0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786,\n\t\t0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8,\n\t\t0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n\t\t0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n\t\t0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a,\n\t\t0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7,\n\t\t0xc67178f2,\n\t];\n\n\tconst w = new Array<number>(64);\n\tfor (let offset = 0; offset < bytes.length; offset += 64) {\n\t\tfor (let i = 0; i < 16; i++) {\n\t\t\tconst j = offset + i * 4;\n\t\t\tw[i] = ((bytes[j] << 24) | (bytes[j + 1] << 16) | (bytes[j + 2] << 8) | bytes[j + 3]) >>> 0;\n\t\t}\n\t\tfor (let i = 16; i < 64; i++) {\n\t\t\tconst s0 = rotr(w[i - 15], 7) ^ rotr(w[i - 15], 18) ^ (w[i - 15] >>> 3);\n\t\t\tconst s1 = rotr(w[i - 2], 17) ^ rotr(w[i - 2], 19) ^ (w[i - 2] >>> 10);\n\t\t\tw[i] = (w[i - 16] + s0 + w[i - 7] + s1) >>> 0;\n\t\t}\n\n\t\tlet [a, b, c, d, e, f, g, hh] = h;\n\t\tfor (let i = 0; i < 64; i++) {\n\t\t\tconst s1 = rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25);\n\t\t\tconst ch = (e & f) ^ (~e & g);\n\t\t\tconst temp1 = (hh + s1 + ch + k[i] + w[i]) >>> 0;\n\t\t\tconst s0 = rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22);\n\t\t\tconst maj = (a & b) ^ (a & c) ^ (b & c);\n\t\t\tconst temp2 = (s0 + maj) >>> 0;\n\t\t\thh = g;\n\t\t\tg = f;\n\t\t\tf = e;\n\t\t\te = (d + temp1) >>> 0;\n\t\t\td = c;\n\t\t\tc = b;\n\t\t\tb = a;\n\t\t\ta = (temp1 + temp2) >>> 0;\n\t\t}\n\n\t\th[0] = (h[0] + a) >>> 0;\n\t\th[1] = (h[1] + b) >>> 0;\n\t\th[2] = (h[2] + c) >>> 0;\n\t\th[3] = (h[3] + d) >>> 0;\n\t\th[4] = (h[4] + e) >>> 0;\n\t\th[5] = (h[5] + f) >>> 0;\n\t\th[6] = (h[6] + g) >>> 0;\n\t\th[7] = (h[7] + hh) >>> 0;\n\t}\n\n\treturn h.map((value) => value.toString(16).padStart(8, \"0\")).join(\"\");\n}\n\nfunction utf8Bytes(input: string): number[] {\n\treturn Array.from(new TextEncoder().encode(input));\n}\n\nfunction rotr(value: number, bits: number): number {\n\treturn (value >>> bits) | (value << (32 - bits));\n}\n",
|
|
16
|
-
"import { AnimationEngine } from \"../animation/animation-engine.ts\";\nimport type { ControllerConfig } from \"../animation/controller.ts\";\nimport { AnimationController } from \"../animation/controller.ts\";\nimport { buildSceneDOM, getResolvedViewBox } from \"../rendering/rendering-engine.ts\";\nimport { resolveTheme } from \"../types/asset-registry.ts\";\nimport { RenderError } from \"../types/errors.ts\";\nimport type { CompiledFloor, CompiledLayout, RuntimeBundle } from \"../types/runtime-bundle.ts\";\nimport { sha256 } from \"../utils/sha256.ts\";\n\nconst RUNTIME_BUNDLE_FORMAT = \"isostate-runtime-bundle\";\nconst RUNTIME_VERSION = \"0.
|
|
16
|
+
"import { AnimationEngine } from \"../animation/animation-engine.ts\";\nimport type { ControllerConfig } from \"../animation/controller.ts\";\nimport { AnimationController } from \"../animation/controller.ts\";\nimport { buildSceneDOM, getResolvedViewBox } from \"../rendering/rendering-engine.ts\";\nimport { resolveTheme } from \"../types/asset-registry.ts\";\nimport { RenderError } from \"../types/errors.ts\";\nimport type { CompiledFloor, CompiledLayout, RuntimeBundle } from \"../types/runtime-bundle.ts\";\nimport { sha256 } from \"../utils/sha256.ts\";\n\nconst RUNTIME_BUNDLE_FORMAT = \"isostate-runtime-bundle\";\nconst RUNTIME_VERSION = \"0.4.0\";\nconst HEX_DIGEST_PATTERN = /^[a-f0-9]{64}$/;\n\nexport interface MountSceneOptions {\n\t/** Controller options, `false` to disable, or omitted to leave controller uninitialized. */\n\tcontroller?: ControllerConfig | false;\n\t/** Accessible label for the mounted SVG root. */\n\tlabel?: string;\n\t/** CSS custom properties applied on top of the bundle theme. */\n\tthemeVars?: Record<string, string>;\n}\n\n/** Runtime configuration resolved from a mounted scene bundle. */\nexport interface ResolvedRuntimeConfig {\n\tgrid: { cellSize: number };\n\tfloor: CompiledFloor;\n\tlayout: CompiledLayout;\n\tviewBox: { minX: number; minY: number; width: number; height: number };\n\tcamera: { viewBox: { minX: number; minY: number; width: number; height: number }; isZoomed: boolean };\n\ttheme: string;\n\tthemeVars: Record<string, string>;\n\tscenes: Array<{ id: string; progress: number }>;\n\tlayerOrder: Array<{ name: string; order: number }>;\n}\n\n/** Handles returned by `mountScene()` for controlling and disposing a scene. */\nexport interface MountedScene {\n\t/** Root SVG element appended to the mount target. */\n\tsvg: SVGSVGElement;\n\t/** Animation engine used by the mounted scene and controller. */\n\tengine: AnimationEngine;\n\t/** Optional controller created when `options.controller` is provided. */\n\tcontroller?: AnimationController;\n\t/** Inspect effective runtime settings after defaults and bundle metadata are applied. */\n\tgetResolvedConfig(): ResolvedRuntimeConfig;\n\t/** Remove DOM and event listeners owned by this mount. Safe to call more than once. */\n\tdestroy(): void;\n}\n\n/** Mount a compiled runtime bundle into an HTML element. */\nexport function mountScene(target: HTMLElement, bundle: RuntimeBundle, options: MountSceneOptions = {}): MountedScene {\n\tassertMountTarget(target);\n\tvalidateRuntimeBundle(bundle);\n\n\tconst engine = new AnimationEngine();\n\tengine.init(bundle);\n\n\tconst svg = buildSceneDOM(target, bundle, {\n\t\tlabel: options.label,\n\t\tthemeVars: options.themeVars,\n\t});\n\n\tlet controller: AnimationController | undefined;\n\tif (options.controller !== undefined && options.controller !== false) {\n\t\tcontroller = new AnimationController();\n\t\tcontroller.init(\n\t\t\tbundle,\n\t\t\t{\n\t\t\t\t...options.controller,\n\t\t\t\tcontainer: options.controller.container ?? target,\n\t\t\t\tsceneElement: svg,\n\t\t\t},\n\t\t\t{\n\t\t\t\tengine,\n\t\t\t\tsceneElement: svg,\n\t\t\t},\n\t\t);\n\t}\n\n\tlet destroyed = false;\n\n\treturn {\n\t\tsvg,\n\t\tengine,\n\t\tcontroller,\n\t\tgetResolvedConfig: () => getResolvedConfig(bundle, options),\n\t\tdestroy: () => {\n\t\t\tif (destroyed) return;\n\t\t\tdestroyed = true;\n\t\t\tcontroller?.destroy();\n\t\t\tengine.destroy();\n\t\t\tif (svg.parentNode === target) {\n\t\t\t\ttarget.removeChild(svg);\n\t\t\t} else {\n\t\t\t\tsvg.parentNode?.removeChild(svg);\n\t\t\t}\n\t\t},\n\t};\n}\n\nfunction assertMountTarget(target: HTMLElement): void {\n\tif (!target || typeof target.appendChild !== \"function\" || typeof target.removeChild !== \"function\") {\n\t\tthrow new RenderError(\"INVALID_MOUNT_TARGET\", \"mountScene() requires a DOM HTMLElement target\");\n\t}\n}\n\nfunction validateRuntimeBundle(bundle: RuntimeBundle): void {\n\tif (!bundle || typeof bundle !== \"object\") {\n\t\tthrow new RenderError(\"BUNDLE_FORMAT_MISSING\", \"Runtime bundle must be a plain object\");\n\t}\n\n\tif (bundle._format !== RUNTIME_BUNDLE_FORMAT) {\n\t\tthrow new RenderError(\"BUNDLE_FORMAT_MISSING\", \"Runtime bundle format is missing or unsupported\", {\n\t\t\texpected: RUNTIME_BUNDLE_FORMAT,\n\t\t});\n\t}\n\n\tif (!Array.isArray(bundle.scenes) || bundle.scenes.length === 0) {\n\t\tthrow new RenderError(\"BUNDLE_FORMAT_MISSING\", \"Runtime bundle must include compiled scenes[]\");\n\t}\n\n\tif (majorVersion(bundle._version) !== majorVersion(RUNTIME_VERSION)) {\n\t\tthrow new RenderError(\n\t\t\t\"BUNDLE_VERSION_MISMATCH\",\n\t\t\t`Runtime bundle version ${bundle._version} is not compatible with runtime ${RUNTIME_VERSION}`,\n\t\t\t{ bundleVersion: bundle._version, runtimeVersion: RUNTIME_VERSION },\n\t\t);\n\t}\n\n\tif (!bundle._digest) {\n\t\tthrow new RenderError(\"BUNDLE_DIGEST_MISSING\", \"Runtime bundle digest is missing\");\n\t}\n\n\tif (typeof bundle._digest !== \"string\" || !HEX_DIGEST_PATTERN.test(bundle._digest)) {\n\t\tthrow new RenderError(\"BUNDLE_DIGEST_MISMATCH\", \"Runtime bundle digest is malformed\");\n\t}\n\n\tconst { _digest, ...bundleWithoutDigest } = bundle;\n\tconst actualDigest = sha256(canonicalStringify(bundleWithoutDigest));\n\tif (actualDigest !== _digest) {\n\t\tthrow new RenderError(\"BUNDLE_DIGEST_MISMATCH\", \"Runtime bundle digest does not match bundle content\", {\n\t\t\texpected: _digest,\n\t\t\tactual: actualDigest,\n\t\t});\n\t}\n}\n\nfunction getResolvedConfig(bundle: RuntimeBundle, options: MountSceneOptions = {}): ResolvedRuntimeConfig {\n\treturn {\n\t\tgrid: { cellSize: bundle.grid.cellSize },\n\t\tfloor: { ...bundle.floor },\n\t\tlayout: {\n\t\t\t...bundle.layout,\n\t\t\tpadding: { ...bundle.layout.padding },\n\t\t\talign: [...bundle.layout.align],\n\t\t},\n\t\tviewBox: getResolvedViewBox(bundle),\n\t\tcamera: {\n\t\t\tviewBox: getResolvedViewBox(bundle),\n\t\t\tisZoomed: false,\n\t\t},\n\t\ttheme: bundle.theme,\n\t\tthemeVars: getResolvedThemeVars(bundle, options.themeVars),\n\t\tscenes: bundle.scenes.map((scene) => ({\n\t\t\tid: scene.id,\n\t\t\tprogress: scene.progress,\n\t\t})),\n\t\tlayerOrder: bundle.layers\n\t\t\t.map((layer) => ({ name: layer.name, order: layer.order }))\n\t\t\t.sort((a, b) => a.order - b.order || a.name.localeCompare(b.name)),\n\t};\n}\n\nfunction getResolvedThemeVars(bundle: RuntimeBundle, overrides: Record<string, string> = {}): Record<string, string> {\n\treturn {\n\t\t...(resolveTheme(bundle.theme) ?? {}),\n\t\t...(bundle.themeVars ?? {}),\n\t\t...overrides,\n\t};\n}\n\nfunction majorVersion(version: string): number {\n\tconst major = Number.parseInt(String(version).split(\".\")[0] ?? \"\", 10);\n\treturn Number.isFinite(major) ? major : Number.NaN;\n}\n\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonValue[] | { [key: string]: JsonValue };\n\nfunction canonicalStringify(value: unknown): string {\n\treturn JSON.stringify(normalizeValue(value));\n}\n\nfunction normalizeValue<T>(value: T): T {\n\tif (Array.isArray(value)) {\n\t\treturn value.map((item) => (item === undefined ? null : normalizeValue(item))) as T;\n\t}\n\n\tif (!isPlainObject(value)) return value;\n\n\tconst normalized: Record<string, JsonValue> = {};\n\tfor (const key of Object.keys(value).sort()) {\n\t\tconst child = (value as Record<string, unknown>)[key];\n\t\tif (child !== undefined) {\n\t\t\tnormalized[key] = normalizeValue(child) as JsonValue;\n\t\t}\n\t}\n\n\treturn normalized as T;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n",
|
|
17
17
|
"import { mountScene } from \"./runtime/mount-scene.ts\";\nimport { projectToScreen as projectGridToScreen } from \"./utils/projection.ts\";\n\nexport { mountScene };\n\nexport function projectToScreen(\n\tx: number,\n\ty: number,\n\tcellSize: number,\n\toffsetX?: number,\n\toffsetY?: number,\n\tpaddingX?: number,\n\tpaddingY?: number,\n): ReturnType<typeof projectGridToScreen> {\n\treturn projectGridToScreen(x, y, cellSize, offsetX, offsetY, paddingX, paddingY);\n}\n"
|
|
18
18
|
],
|
|
19
|
-
"mappings": "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",
|
|
20
|
-
"debugId": "
|
|
19
|
+
"mappings": "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",
|
|
20
|
+
"debugId": "F087FC990F58969B64756E2164756E21",
|
|
21
21
|
"names": []
|
|
22
22
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { o as getResolvedViewBox, k as getCurrentElementBounds, m as getGridAreaBounds, t as updateElementTransforms, b as applySceneViewBox, l as getElementState, u as unhideElementOnReadd, p as hideElementAfterExit, j as getConnectorState, a as animateElement, d as buildSceneDOM, s as resolveTheme } from './rendering-engine-
|
|
1
|
+
import { o as getResolvedViewBox, k as getCurrentElementBounds, m as getGridAreaBounds, t as updateElementTransforms, b as applySceneViewBox, l as getElementState, u as unhideElementOnReadd, p as hideElementAfterExit, j as getConnectorState, a as animateElement, d as buildSceneDOM, s as resolveTheme } from './rendering-engine-BUUV3Qq-.js';
|
|
2
2
|
import { C as ControllerError, R as RenderError } from './errors-DyqEkrm5.js';
|
|
3
3
|
import { s as sha256 } from './sha256-4JuurR-b.js';
|
|
4
4
|
|
|
@@ -1400,7 +1400,7 @@ function roundCameraNumber(value) {
|
|
|
1400
1400
|
}
|
|
1401
1401
|
|
|
1402
1402
|
const RUNTIME_BUNDLE_FORMAT = "isostate-runtime-bundle";
|
|
1403
|
-
const RUNTIME_VERSION = "0.
|
|
1403
|
+
const RUNTIME_VERSION = "0.4.0";
|
|
1404
1404
|
const HEX_DIGEST_PATTERN = /^[a-f0-9]{64}$/;
|
|
1405
1405
|
/** Mount a compiled runtime bundle into an HTML element. */
|
|
1406
1406
|
function mountScene(target, bundle, options = {}) {
|
|
@@ -1539,4 +1539,4 @@ function isPlainObject(value) {
|
|
|
1539
1539
|
}
|
|
1540
1540
|
|
|
1541
1541
|
export { AnimationController as A, AnimationEngine as a, easeInOutCubic as b, easeOutCubic as c, easeInCubic as e, linear as l, mountScene as m, resolveEasing as r };
|
|
1542
|
-
//# sourceMappingURL=index-
|
|
1542
|
+
//# sourceMappingURL=index-C3qcXbPI.js.map
|