@sebastianwessel/isostate 0.4.0 → 0.6.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/animation/animation-engine.d.ts +3 -0
- package/dist/animation/animation-engine.d.ts.map +1 -1
- package/dist/animation/controller.d.ts +36 -2
- package/dist/animation/controller.d.ts.map +1 -1
- package/dist/assets/software-architecture/IMAGEGEN-PROMPTS.md +66 -0
- package/dist/assets/software-architecture/LICENSE +21 -0
- package/dist/assets/software-architecture/NOTICE.md +17 -0
- package/dist/assets/software-architecture/README.md +105 -0
- package/dist/assets/software-architecture/agentic/AGENT-VISUAL-PROMPTS.md +42 -0
- package/dist/assets/software-architecture/agentic/HANDOFF-PROMPTS.md +19 -0
- package/dist/assets/software-architecture/agentic/PROCESS-VISUAL-PROMPTS.md +109 -0
- package/dist/assets/software-architecture/agentic/agents-sprites.png +0 -0
- package/dist/assets/software-architecture/agentic/ai-capabilities-sprites.png +0 -0
- package/dist/assets/software-architecture/agentic/ai-to-human-handoff.png +0 -0
- package/dist/assets/software-architecture/agentic/channels-sprites.png +0 -0
- package/dist/assets/software-architecture/agentic/human-to-ai-handoff.png +0 -0
- package/dist/assets/software-architecture/agentic/humans-sprites.png +0 -0
- package/dist/assets/software-architecture/agentic/infrastructure-sprites.png +0 -0
- package/dist/assets/software-architecture/agentic/lifecycle-sprites.png +0 -0
- package/dist/assets/software-architecture/agentic/orchestration-sprites.png +0 -0
- package/dist/assets/software-architecture/agentic/providers-sprites.png +0 -0
- package/dist/assets/software-architecture/agentic/servicenow-sprites.png +0 -0
- package/dist/assets/software-architecture/architecture/architecture-sprites.png +0 -0
- package/dist/assets/software-architecture/manifest.json +2095 -0
- package/dist/assets/software-architecture/workflow/workflow-process-sprites.png +0 -0
- package/dist/browser/isostate.runtime.js +4 -4
- package/dist/browser/isostate.runtime.js.map +12 -10
- package/dist/chunks/errors-2yA81Vfb.js +23 -0
- package/dist/chunks/{errors-DyqEkrm5.js.map → errors-2yA81Vfb.js.map} +1 -1
- package/dist/chunks/index-WmsNtuaZ.js +1685 -0
- package/dist/chunks/index-WmsNtuaZ.js.map +1 -0
- package/dist/chunks/rendering-engine-DLaM1XbU.js +1425 -0
- package/dist/chunks/rendering-engine-DLaM1XbU.js.map +1 -0
- package/dist/chunks/scene-parser-BNXXIAqj.js +3033 -0
- package/dist/chunks/scene-parser-BNXXIAqj.js.map +1 -0
- package/dist/chunks/sha256-BkgWUdh1.js +123 -0
- package/dist/chunks/sha256-BkgWUdh1.js.map +1 -0
- package/dist/dsl/browser.js +3 -3
- package/dist/dsl/index.js +3 -3
- package/dist/dsl/scene-parser.d.ts.map +1 -1
- package/dist/dsl/scene-validator.d.ts.map +1 -1
- package/dist/dsl/workflow-effects-validation.d.ts +8 -0
- package/dist/dsl/workflow-effects-validation.d.ts.map +1 -0
- package/dist/editor-support/adapter.d.ts.map +1 -1
- package/dist/editor-support/index.js +347 -394
- package/dist/editor-support/index.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +438 -40
- package/dist/index.js.map +1 -1
- package/dist/rendering/animation-css.d.ts.map +1 -1
- package/dist/rendering/rendering-engine.d.ts +11 -0
- package/dist/rendering/rendering-engine.d.ts.map +1 -1
- package/dist/rendering/scene-effects.d.ts +15 -0
- package/dist/rendering/scene-effects.d.ts.map +1 -0
- package/dist/rendering/theme.d.ts +4 -0
- package/dist/rendering/theme.d.ts.map +1 -1
- package/dist/runtime/diagnostics-overlay.d.ts +29 -0
- package/dist/runtime/diagnostics-overlay.d.ts.map +1 -0
- package/dist/runtime/export.d.ts +27 -0
- package/dist/runtime/export.d.ts.map +1 -0
- package/dist/runtime/index.d.ts +1 -0
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +4 -4
- package/dist/runtime/interactivity.d.ts +56 -0
- package/dist/runtime/interactivity.d.ts.map +1 -0
- package/dist/runtime/mount-scene.d.ts +11 -10
- package/dist/runtime/mount-scene.d.ts.map +1 -1
- package/dist/types/asset-registry.d.ts +1 -0
- package/dist/types/asset-registry.d.ts.map +1 -1
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/node.d.ts +54 -1
- package/dist/types/node.d.ts.map +1 -1
- package/dist/types/runtime-bundle.d.ts +35 -0
- package/dist/types/runtime-bundle.d.ts.map +1 -1
- package/dist/types/scene.d.ts +2 -0
- package/dist/types/scene.d.ts.map +1 -1
- package/package.json +9 -8
- package/dist/chunks/errors-DyqEkrm5.js +0 -29
- package/dist/chunks/index-C3qcXbPI.js +0 -1542
- package/dist/chunks/index-C3qcXbPI.js.map +0 -1
- package/dist/chunks/rendering-engine-BUUV3Qq-.js +0 -1124
- package/dist/chunks/rendering-engine-BUUV3Qq-.js.map +0 -1
- package/dist/chunks/scene-parser-B9SPDLYs.js +0 -2688
- package/dist/chunks/scene-parser-B9SPDLYs.js.map +0 -1
- package/dist/chunks/sha256-4JuurR-b.js +0 -69
- package/dist/chunks/sha256-4JuurR-b.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
class b{_bundle=null;_progress=0;_paused=!1;_prevFrameMap=new Map;_elementFrameMap=new Map;_prevConnectorFrameMap=new Map;_connectorFrameMap=new Map;get bundle(){return this._bundle}get progress(){return this._progress}getProgress(){return this._progress}get paused(){return this._paused}isPaused(){return this._paused}get elementsCount(){return this._elementFrameMap.size}get connectorsCount(){return this._connectorFrameMap.size}init($){this._bundle=$,this._progress=0,this._paused=!1,this._prevFrameMap.clear(),this._elementFrameMap.clear(),this._prevConnectorFrameMap.clear(),this._connectorFrameMap.clear();let k=A0($,0);this._elementFrameMap=k,this._prevFrameMap=F0(k);let J=M0($,0);this._connectorFrameMap=J,this._prevConnectorFrameMap=N0(J)}setProgress($){let k=Math.max(0,Math.min(1,$));if(this._paused)return;if(this._progress=k,!this._bundle)return;this._prevFrameMap=F0(this._elementFrameMap),this._elementFrameMap=A0(this._bundle,k),this._prevConnectorFrameMap=N0(this._connectorFrameMap),this._connectorFrameMap=M0(this._bundle,k)}getElementUpdate($){let k=typeof $==="string"?$:$.id,J=this._elementFrameMap.get(k);if(!J)return{id:k,asset:"",lifecycle:"removed",ambient:[],pos:[0,0],size:1,layer:""};return w0(J)}getFrameUpdates(){return[...this._elementFrameMap.values()].map(w0)}getConnectorUpdate($){let k=typeof $==="string"?$:$.id,J=this._connectorFrameMap.get(k);if(!J)return d(T0(k));return d(J)}getConnectorFrameUpdates(){return[...this._connectorFrameMap.values()].map(d)}getLifecycleTransition($){let k=this._prevFrameMap.get($),J=this._elementFrameMap.get($),K=k?.lifecycle??"removed",Z=J?.lifecycle??"removed";if(K===Z)return null;return{from:K,to:Z}}getConnectorLifecycleTransition($){let k=this._prevConnectorFrameMap.get($),J=this._connectorFrameMap.get($),K=k?.lifecycle??"removed",Z=J?.lifecycle??"removed";if(K===Z)return null;return{from:K,to:Z}}getCurrentState(){let $=this._bundle;if(!$)return null;return o($.scenes,this._progress)?.nextStop??$.scenes[0]??null}pause(){this._paused=!0}resume(){this._paused=!1}destroy(){this._bundle=null,this._progress=0,this._paused=!1,this._elementFrameMap.clear(),this._prevFrameMap.clear(),this._connectorFrameMap.clear(),this._prevConnectorFrameMap.clear()}}function A0($,k){let J=o($.scenes,k),K=new Map;if(!J)return K;let Z=new Set;for(let q of $.scenes)for(let Q of q.elements??[])Z.add(Q.id);for(let q of J.prevStop.elements??[])Z.add(q.id);for(let q of J.nextStop.elements??[])Z.add(q.id);for(let q of Z){let Q=Y1(j1(q,J.prevStop,J.nextStop,J.t),$.scenes,q,k);K.set(q,Q)}return K}function M0($,k){let J=o($.scenes,k),K=new Map;if(!J)return K;let Z=new Set;for(let q of $.scenes)for(let Q of q.connectors??[])Z.add(Q.id);for(let q of J.prevStop.connectors??[])Z.add(q.id);for(let q of J.nextStop.connectors??[])Z.add(q.id);for(let q of Z){let Q=O1(q,J.prevStop,J.nextStop,J.t);K.set(q,Q)}return K}function o($,k){if($.length===0)return null;let J=[...$].sort((Z,q)=>Z.progress-q.progress);if(J.length===1||k<=J[0].progress)return{prevStop:J[0],nextStop:J[0],t:0,nextIndex:0};let K=J.length-1;if(k>=J[K].progress)return{prevStop:J[K-1]??J[K],nextStop:J[K],t:1,nextIndex:K};for(let Z=1;Z<J.length;Z++){let q=J[Z];if(q.progress>=k){let Q=J[Z-1],H=q.progress-Q.progress,G=H>0?(k-Q.progress)/H:0;return{prevStop:Q,nextStop:q,t:G,nextIndex:Z}}}return null}function j1($,k,J,K){let Z=X0(k,$),q=X0(J,$),Q=q??Z;if(!Q)return M1($);if(!Z||Z.presence==="removed")return h0(Q,Q.presence==="removed"||K<1?"removed":Q.presence);if(!q||q.presence==="removed")return h0(Z,K<1?Z.presence:"removed");let H=K<1?Z.presence:q.presence;return{id:$,asset:q.asset,pos:R0(Z.pos,q.pos,K),size:Z.size+(q.size-Z.size)*K,lifecycle:H,ambient:R(q.ambient),layer:K<1?Z.layer:q.layer,entry:q.enter??Z.enter,exit:q.exit??Z.exit,text:f(q.text??Z.text),primitive:m(q.primitive??Z.primitive)}}function O1($,k,J,K){let Z=P0(k,$),q=P0(J,$),Q=q??Z;if(!Q)return T0($);if(!Z||Z.presence==="removed")return _0(Q,Q.presence==="removed"||K<1?"removed":Q.presence);if(!q||q.presence==="removed")return _0(Z,K<1?Z.presence:"removed");let H=K<1?Z.presence:q.presence;return{id:$,route:X1(Z.route,q.route,K),layer:K<1?Z.layer:q.layer,lifecycle:H,style:p(K<1?Z.style:q.style),start:q.start,end:q.end,direction:q.direction,ambient:R(q.ambient),entry:q.enter??Z.enter,exit:q.exit??Z.exit}}function X0($,k){return($.elements??[]).find((J)=>J.id===k)}function P0($,k){return($.connectors??[]).find((J)=>J.id===k)}function Y1($,k,J,K){if($.lifecycle!=="removed")return $;let Z=A1(k,J,K);if(!Z)return $;return{...$,asset:Z.asset,pos:[...Z.pos],size:Z.size,ambient:R(Z.ambient),layer:Z.layer,entry:Z.enter,exit:Z.exit,text:f(Z.text),primitive:m(Z.primitive)}}function A1($,k,J){let K=[...$].sort((q,Q)=>q.progress-Q.progress),Z=K.filter((q)=>q.progress>=J).flatMap((q)=>q.elements??[]).find((q)=>q.id===k&&q.presence!=="removed");if(Z)return Z;for(let q=K.length-1;q>=0;q-=1){if(K[q].progress>J)continue;let Q=(K[q].elements??[]).find((H)=>H.id===k&&H.presence!=="removed");if(Q)return Q}return}function h0($,k=$.presence){return{id:$.id,asset:$.asset,pos:[...$.pos],size:$.size,lifecycle:k,ambient:R($.ambient),layer:$.layer,entry:$.enter,exit:$.exit,text:f($.text),primitive:m($.primitive)}}function _0($,k=$.presence){return{id:$.id,route:E($.route),layer:$.layer,lifecycle:k,style:p($.style),start:$.start,end:$.end,direction:$.direction,ambient:R($.ambient),entry:$.enter,exit:$.exit}}function M1($){return{id:$,asset:"",pos:[0,0],size:1,lifecycle:"removed",ambient:[],layer:""}}function T0($){return{id:$,route:[],layer:"",lifecycle:"removed",style:{variant:"line",pattern:"solid",stroke:"#2563eb",strokeWidth:3,opacity:1,outlineWidth:0,lane:"none"},start:"none",end:"none",direction:"route",ambient:[]}}function R0($,k,J){return[$[0]+(k[0]-$[0])*J,$[1]+(k[1]-$[1])*J]}function X1($,k,J){if($.length!==k.length)return E(J<1?$:k);return $.map((K,Z)=>R0(K,k[Z],J))}function E($){return $.map((k)=>[k[0],k[1]])}function p($){return{...$,...$.dash?{dash:[...$.dash]}:{}}}function R($){return($??[]).map((k)=>({...k}))}function w0($){return{id:$.id,asset:$.asset,lifecycle:$.lifecycle,ambient:R($.ambient),pos:[...$.pos],size:$.size,layer:$.layer,entry:$.entry,exit:$.exit,text:f($.text),primitive:m($.primitive)}}function d($){return{id:$.id,route:E($.route),layer:$.layer,lifecycle:$.lifecycle,style:p($.style),start:$.start,end:$.end,direction:$.direction,ambient:R($.ambient),entry:$.entry,exit:$.exit}}function F0($){let k=new Map;for(let[J,K]of $)k.set(J,{...K,pos:[...K.pos],ambient:R(K.ambient),text:f(K.text),primitive:m(K.primitive)});return k}function f($){return $?{...$}:void 0}function m($){if(!$)return;return{...$.rectangle?{rectangle:{...$.rectangle,dash:c($.rectangle.dash)}}:{},...$.circle?{circle:{...$.circle,dash:c($.circle.dash)}}:{},...$.polygon?{polygon:{...$.polygon,dash:c($.polygon.dash),points:E($.polygon.points)}}:{},...$.line?{line:{...$.line,dash:c($.line.dash),points:E($.line.points)}}:{}}}function c($){return $?[$[0],$[1]]:void 0}function N0($){let k=new Map;for(let[J,K]of $)k.set(J,{...K,route:E(K.route),style:p(K.style),ambient:R(K.ambient)});return k}var P1={light:{"--color-top":"#e2e8f0","--color-front":"#94a3b8","--color-side":"#64748b","--color-back":"#475569","--color-leaf":"#15803d","--color-trunk":"#78350f","--color-accent":"#3b82f6"},dark:{"--color-top":"#334155","--color-front":"#1e293b","--color-side":"#0f172a","--color-back":"#020617","--color-leaf":"#166534","--color-trunk":"#451a03","--color-accent":"#60a5fa"},brand:{"--color-top":"#c7d2fe","--color-front":"#818cf8","--color-side":"#6366f1","--color-back":"#4338ca","--color-leaf":"#22c55e","--color-trunk":"#854d0e","--color-accent":"#f59e0b"}};function u($){return P1[$]}class t extends Error{code;details;constructor($,k,J){super(k);this.code=$;this.details=J;this.name=this.constructor.name}}class j extends t{}class O extends t{}function C($,k,J){return{rawX:J*($-k)*0.5,rawY:J*($+k)*0.25}}function I($,k,J,K=0,Z=0,q=0,Q=0){let{rawX:H,rawY:G}=C($,k,J);return{screenX:H-K+q,screenY:G-Z+Q}}function s($,k){return k*$}function S0(){return["@keyframes iso-anim-fade-in{from{opacity:0}to{opacity:1}}","@keyframes iso-anim-fade-in-grow{from{opacity:0;scale:.01}to{opacity:1;scale:1}}","@keyframes iso-anim-fall-in{from{opacity:0;translate:0 -40px}to{opacity:1;translate:0 0}}","@keyframes iso-anim-rise-from-ground{from{opacity:0;translate:0 40px}to{opacity:1;translate:0 0}}","@keyframes iso-anim-slide-in-left{from{opacity:0;translate:-60px 0}to{opacity:1;translate:0 0}}","@keyframes iso-anim-slide-in-right{from{opacity:0;translate:60px 0}to{opacity:1;translate:0 0}}","@keyframes iso-anim-flip-in{from{opacity:1;scale:0 1}to{opacity:1;scale:1 1}}","@keyframes iso-anim-fade-out{from{opacity:1}to{opacity:0}}","@keyframes iso-anim-fade-out-shrink{from{opacity:1;scale:1}to{opacity:0;scale:.01}}","@keyframes iso-anim-fall-through-ground{from{opacity:1;translate:0 0}to{opacity:0;translate:0 40px}}","@keyframes iso-anim-rise-away{from{opacity:1;translate:0 0}to{opacity:0;translate:0 -40px}}","@keyframes iso-anim-slide-out-left{from{opacity:1;translate:0 0}to{opacity:0;translate:-60px 0}}","@keyframes iso-anim-slide-out-right{from{opacity:1;translate:0 0}to{opacity:0;translate:60px 0}}","@keyframes iso-anim-flip-out{from{opacity:1;scale:1 1}to{opacity:0;scale:0 1}}","@keyframes iso-anim-pulse{0%,100%{opacity:.7}50%{opacity:1}}","@keyframes iso-anim-float{0%,100%{translate:0 0}50%{translate:0 -6px}}","@keyframes iso-anim-shake{0%,25%,75%,100%{translate:0 0}50%{translate:3px 0}}","@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))}}","@keyframes iso-anim-spin{from{rotate:0deg}to{rotate:360deg}}","@keyframes iso-anim-blink{0%,49%{opacity:1}50%,100%{opacity:0}}","@keyframes iso-connector-flow-route{from{stroke-dashoffset:0}to{stroke-dashoffset:calc(-1px * var(--iso-flow-distance,20))}}","@keyframes iso-connector-flow-reverse{from{stroke-dashoffset:0}to{stroke-dashoffset:calc(1px * var(--iso-flow-distance,20))}}",".iso-connector-pattern-dashed .iso-connector-shaft,.iso-connector-pattern-dotted .iso-connector-shaft{--iso-flow-distance:20}",".iso-connector-direction-route .iso-connector-shaft.iso-ambient-flow{animation:iso-connector-flow-route 900ms linear infinite}",".iso-connector-direction-reverse .iso-connector-shaft.iso-ambient-flow{animation:iso-connector-flow-reverse 900ms linear infinite}","@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}}"].join(`
|
|
2
|
-
`)}var
|
|
1
|
+
class W extends Error{code;details;constructor(e,t,n){super(t);this.code=e;this.details=n;this.name=this.constructor.name}}class d extends W{}class oe extends W{}class f extends W{}class F{_bundle=null;_progress=0;_paused=!1;_prevFrameMap=new Map;_elementFrameMap=new Map;_prevConnectorFrameMap=new Map;_connectorFrameMap=new Map;get bundle(){return this._bundle}get progress(){return this._progress}getProgress(){return this._progress}get paused(){return this._paused}isPaused(){return this._paused}get elementsCount(){return this._elementFrameMap.size}get connectorsCount(){return this._connectorFrameMap.size}init(e){this._bundle=e,this._progress=0,this._paused=!1,this._prevFrameMap.clear(),this._elementFrameMap.clear(),this._prevConnectorFrameMap.clear(),this._connectorFrameMap.clear();let t=Re(e,0);this._elementFrameMap=t,this._prevFrameMap=Le(t);let n=Te(e,0);this._connectorFrameMap=n,this._prevConnectorFrameMap=Be(n)}setProgress(e){if(!Number.isFinite(e))throw new oe("INVALID_PROGRESS","setProgress() requires a finite progress value");let t=Math.max(0,Math.min(1,e));if(this._paused)return;if(this._progress=t,!this._bundle)return;this._prevFrameMap=Le(this._elementFrameMap),this._elementFrameMap=Re(this._bundle,t),this._prevConnectorFrameMap=Be(this._connectorFrameMap),this._connectorFrameMap=Te(this._bundle,t)}getElementUpdate(e){let t=typeof e==="string"?e:e.id,n=this._elementFrameMap.get(t);if(!n)return{id:t,asset:"",lifecycle:"removed",ambient:[],pos:[0,0],size:1,layer:""};return Ge(n)}getFrameUpdates(){return[...this._elementFrameMap.values()].map(Ge)}getConnectorUpdate(e){let t=typeof e==="string"?e:e.id,n=this._connectorFrameMap.get(t);if(!n)return se(Ne(t));return se(n)}getConnectorFrameUpdates(){return[...this._connectorFrameMap.values()].map(se)}getLifecycleTransition(e){let t=this._prevFrameMap.get(e),n=this._elementFrameMap.get(e),i=t?.lifecycle??"removed",r=n?.lifecycle??"removed";if(i===r)return null;return{from:i,to:r}}getConnectorLifecycleTransition(e){let t=this._prevConnectorFrameMap.get(e),n=this._connectorFrameMap.get(e),i=t?.lifecycle??"removed",r=n?.lifecycle??"removed";if(i===r)return null;return{from:i,to:r}}getCurrentState(){let e=this._bundle;if(!e)return null;return ce(e.scenes,this._progress)?.nextStop??e.scenes[0]??null}pause(){this._paused=!0}resume(){this._paused=!1}destroy(){this._bundle=null,this._progress=0,this._paused=!1,this._elementFrameMap.clear(),this._prevFrameMap.clear(),this._connectorFrameMap.clear(),this._prevConnectorFrameMap.clear()}}function Re(e,t){let n=ce(e.scenes,t),i=new Map;if(!n)return i;let r=new Set;for(let o of e.scenes)for(let s of o.elements??[])r.add(s.id);for(let o of n.prevStop.elements??[])r.add(o.id);for(let o of n.nextStop.elements??[])r.add(o.id);for(let o of r){let s=Gt(Vt(o,n.prevStop,n.nextStop,n.t),e.scenes,o,t);i.set(o,s)}return i}function Te(e,t){let n=ce(e.scenes,t),i=new Map;if(!n)return i;let r=new Set;for(let o of e.scenes)for(let s of o.connectors??[])r.add(s.id);for(let o of n.prevStop.connectors??[])r.add(o.id);for(let o of n.nextStop.connectors??[])r.add(o.id);for(let o of r){let s=kt(o,n.prevStop,n.nextStop,n.t),a=s.lifecycle==="removed"?Ie(e.scenes,o,t,(l)=>l.connectors??[]):void 0;i.set(o,a?ae(a,"removed"):s)}return i}function ce(e,t){if(e.length===0)return null;let n=[...e].sort((r,o)=>r.progress-o.progress);if(n.length===1||t<=n[0].progress)return{prevStop:n[0],nextStop:n[0],t:0,nextIndex:0};let i=n.length-1;if(t>=n[i].progress)return{prevStop:n[i-1]??n[i],nextStop:n[i],t:1,nextIndex:i};for(let r=1;r<n.length;r++){let o=n[r];if(o.progress>=t){let s=n[r-1],a=o.progress-s.progress,l=a>0?(t-s.progress)/a:0;return{prevStop:s,nextStop:o,t:l,nextIndex:r}}}return null}function Vt(e,t,n,i){let r=Me(t,e),o=Me(n,e),s=o??r;if(!s)return Lt(e);if(!r||r.presence==="removed")return ke(s,s.presence==="removed"||i<1?"removed":s.presence);if(!o||o.presence==="removed")return ke(r,i<1?r.presence:"removed");let a=i<1?r.presence:o.presence;return{id:e,asset:i<1?r.asset:o.asset,pos:Pe(r.pos,o.pos,i),size:r.size+(o.size-r.size)*i,lifecycle:a,ambient:T(i<1?r.ambient:o.ambient),layer:i<1?r.layer:o.layer,entry:o.enter??r.enter,exit:o.exit??r.exit,text:z(o.text??r.text),primitive:U(o.primitive??r.primitive),activity:k(i<1?r.activity:o.activity)}}function kt(e,t,n,i){let r=Ve(t,e),o=Ve(n,e),s=o??r;if(!s)return Ne(e);if(!r||r.presence==="removed")return ae(s,s.presence==="removed"||i<1?"removed":s.presence);if(!o||o.presence==="removed")return ae(r,i<1?r.presence:"removed");let a=i<1?r.presence:o.presence;return{id:e,route:Bt(r.route,o.route,i),layer:i<1?r.layer:o.layer,lifecycle:a,style:Z(i<1?r.style:o.style),start:i<1?r.start:o.start,end:i<1?r.end:o.end,direction:i<1?r.direction:o.direction,message:k(i<1?r.message:o.message),ambient:T(i<1?r.ambient:o.ambient),entry:o.enter??r.enter,exit:o.exit??r.exit}}function Me(e,t){return(e.elements??[]).find((n)=>n.id===t)}function Ve(e,t){return(e.connectors??[]).find((n)=>n.id===t)}function Gt(e,t,n,i){if(e.lifecycle!=="removed")return e;let r=Ie(t,n,i,(o)=>o.elements??[]);if(!r)return e;return{...e,asset:r.asset,pos:[...r.pos],size:r.size,ambient:T(r.ambient),layer:r.layer,entry:r.enter,exit:r.exit,text:z(r.text),primitive:U(r.primitive),activity:k(r.activity)}}function Ie(e,t,n,i){let r=[...e].sort((s,a)=>s.progress-a.progress),o=r.filter((s)=>s.progress>=n).flatMap(i).find((s)=>s.id===t&&s.presence!=="removed");if(o)return o;for(let s=r.length-1;s>=0;s-=1){if(r[s].progress>n)continue;let a=i(r[s]).find((l)=>l.id===t&&l.presence!=="removed");if(a)return a}return}function ke(e,t=e.presence){return{id:e.id,asset:e.asset,pos:[...e.pos],size:e.size,lifecycle:t,ambient:T(e.ambient),layer:e.layer,entry:e.enter,exit:e.exit,text:z(e.text),primitive:U(e.primitive),activity:k(e.activity)}}function ae(e,t=e.presence){return{id:e.id,route:P(e.route),layer:e.layer,lifecycle:t,style:Z(e.style),start:e.start,end:e.end,direction:e.direction,message:k(e.message),ambient:T(e.ambient),entry:e.enter,exit:e.exit}}function Lt(e){return{id:e,asset:"",pos:[0,0],size:1,lifecycle:"removed",ambient:[],layer:""}}function Ne(e){return{id:e,route:[],layer:"",lifecycle:"removed",style:{variant:"line",pattern:"solid",stroke:"#2563eb",strokeWidth:3,opacity:1,outlineWidth:0,lane:"none"},start:"none",end:"none",direction:"route",ambient:[]}}function Pe(e,t,n){return[e[0]+(t[0]-e[0])*n,e[1]+(t[1]-e[1])*n]}function Bt(e,t,n){if(e.length!==t.length)return P(n<1?e:t);return e.map((i,r)=>Pe(i,t[r],n))}function P(e){return e.map((t)=>[t[0],t[1]])}function Z(e){return{...e,...e.dash?{dash:[...e.dash]}:{}}}function T(e){return(e??[]).map((t)=>({...t}))}function Ge(e){return{id:e.id,asset:e.asset,lifecycle:e.lifecycle,ambient:T(e.ambient),pos:[...e.pos],size:e.size,layer:e.layer,entry:e.entry,exit:e.exit,text:z(e.text),primitive:U(e.primitive),activity:k(e.activity)}}function se(e){return{id:e.id,route:P(e.route),layer:e.layer,lifecycle:e.lifecycle,style:Z(e.style),start:e.start,end:e.end,direction:e.direction,message:k(e.message),ambient:T(e.ambient),entry:e.entry,exit:e.exit}}function Le(e){let t=new Map;for(let[n,i]of e)t.set(n,{...i,pos:[...i.pos],ambient:T(i.ambient),text:z(i.text),primitive:U(i.primitive),activity:k(i.activity)});return t}function z(e){return e?{...e}:void 0}function U(e){if(!e)return;return{...e.rectangle?{rectangle:{...e.rectangle,dash:q(e.rectangle.dash)}}:{},...e.circle?{circle:{...e.circle,dash:q(e.circle.dash)}}:{},...e.polygon?{polygon:{...e.polygon,dash:q(e.polygon.dash),points:P(e.polygon.points)}}:{},...e.line?{line:{...e.line,dash:q(e.line.dash),points:P(e.line.points)}}:{}}}function q(e){return e?[e[0],e[1]]:void 0}function Be(e){let t=new Map;for(let[n,i]of e)t.set(n,{...i,route:P(i.route),style:Z(i.style),ambient:T(i.ambient)});return t}function k(e){return e?{...e}:void 0}var Fe={light:{"--color-top":"#e2e8f0","--color-front":"#94a3b8","--color-side":"#64748b","--color-back":"#475569","--color-leaf":"#15803d","--color-trunk":"#78350f","--color-accent":"#3b82f6"},dark:{"--color-top":"#334155","--color-front":"#1e293b","--color-side":"#0f172a","--color-back":"#020617","--color-leaf":"#166534","--color-trunk":"#451a03","--color-accent":"#60a5fa"},brand:{"--color-top":"#c7d2fe","--color-front":"#818cf8","--color-side":"#6366f1","--color-back":"#4338ca","--color-leaf":"#22c55e","--color-trunk":"#854d0e","--color-accent":"#f59e0b"}};function J(e){return Object.hasOwn(Fe,e)?Fe[e]:void 0}function G(e,t,n){return{rawX:n*(e-t)*0.5,rawY:n*(e+t)*0.25}}function M(e,t,n,i=0,r=0,o=0,s=0){let{rawX:a,rawY:l}=G(e,t,n);return{screenX:a-i+o,screenY:l-r+s}}function D(e,t){return t*e}function De(){return["@keyframes iso-anim-fade-in{from{opacity:0}to{opacity:1}}","@keyframes iso-anim-fade-in-grow{from{opacity:0;scale:.01}to{opacity:1;scale:1}}","@keyframes iso-anim-fall-in{from{opacity:0;translate:0 -40px}to{opacity:1;translate:0 0}}","@keyframes iso-anim-rise-from-ground{from{opacity:0;translate:0 40px}to{opacity:1;translate:0 0}}","@keyframes iso-anim-slide-in-left{from{opacity:0;translate:-60px 0}to{opacity:1;translate:0 0}}","@keyframes iso-anim-slide-in-right{from{opacity:0;translate:60px 0}to{opacity:1;translate:0 0}}","@keyframes iso-anim-flip-in{from{opacity:1;scale:0 1}to{opacity:1;scale:1 1}}","@keyframes iso-anim-fade-out{from{opacity:1}to{opacity:0}}","@keyframes iso-anim-fade-out-shrink{from{opacity:1;scale:1}to{opacity:0;scale:.01}}","@keyframes iso-anim-fall-through-ground{from{opacity:1;translate:0 0}to{opacity:0;translate:0 40px}}","@keyframes iso-anim-rise-away{from{opacity:1;translate:0 0}to{opacity:0;translate:0 -40px}}","@keyframes iso-anim-slide-out-left{from{opacity:1;translate:0 0}to{opacity:0;translate:-60px 0}}","@keyframes iso-anim-slide-out-right{from{opacity:1;translate:0 0}to{opacity:0;translate:60px 0}}","@keyframes iso-anim-flip-out{from{opacity:1;scale:1 1}to{opacity:0;scale:0 1}}","@keyframes iso-anim-pulse{0%,100%{opacity:.7}50%{opacity:1}}","@keyframes iso-anim-float{0%,100%{translate:0 0}50%{translate:0 -6px}}","@keyframes iso-anim-shake{0%,25%,75%,100%{translate:0 0}50%{translate:3px 0}}","@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))}}","@keyframes iso-anim-spin{from{rotate:0deg}to{rotate:360deg}}","@keyframes iso-anim-blink{0%,49%{opacity:1}50%,100%{opacity:0}}",".iso-ambient-pulse{animation:iso-anim-pulse 2s ease-in-out infinite}",".iso-ambient-float{animation:iso-anim-float 3s ease-in-out infinite}",".iso-ambient-shake{animation:iso-anim-shake 0.5s ease-in-out infinite}",".iso-ambient-glow{animation:iso-anim-glow 2s ease-in-out infinite}",".iso-ambient-spin{animation:iso-anim-spin 4s linear infinite}",".iso-ambient-blink{animation:iso-anim-blink 1.5s step-end infinite}","@keyframes iso-connector-flow-route{from{stroke-dashoffset:0}to{stroke-dashoffset:calc(-1px * var(--iso-flow-distance,20))}}","@keyframes iso-connector-flow-reverse{from{stroke-dashoffset:0}to{stroke-dashoffset:calc(1px * var(--iso-flow-distance,20))}}",".iso-connector-pattern-dashed .iso-connector-shaft,.iso-connector-pattern-dotted .iso-connector-shaft{--iso-flow-distance:20}",".iso-connector-direction-route .iso-connector-shaft.iso-ambient-flow{animation:iso-connector-flow-route 900ms linear infinite}",".iso-connector-direction-reverse .iso-connector-shaft.iso-ambient-flow{animation:iso-connector-flow-reverse 900ms linear infinite}","@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}}","@keyframes iso-message-travel{from{offset-distance:0%}to{offset-distance:100%}}",".iso-message{offset-anchor:0px 0px;offset-rotate:0deg;animation:iso-message-travel 1800ms linear infinite;pointer-events:none}","@keyframes iso-activity-breathe{0%,100%{opacity:.45}50%{opacity:1}}",".iso-activity-processing .iso-activity-ring{animation:iso-activity-breathe 1800ms ease-in-out infinite}",".iso-activity-waiting .iso-activity-badge{animation:iso-activity-breathe 2600ms ease-in-out infinite}",".iso-motion-paused *{animation-play-state:paused!important}.iso-motion-stopped *{animation:none!important}","@media (prefers-reduced-motion:reduce){.iso-message{animation:none!important;offset-distance:50%}.iso-activity *{animation:none!important}}",".iso-interactive g[data-id]{cursor:pointer}"].join(`
|
|
2
|
+
`)}var x="http://www.w3.org/2000/svg";function le(e){let t=new Map,n=e?.assets;if(n&&typeof n==="object"){for(let[i,r]of Object.entries(n))if(r&&typeof r==="object"&&typeof r.url==="string")t.set(i,{url:r.url,anchor:r.anchor,sprite:r.sprite})}return(i)=>t.get(i)}function Ye(e,t,n){if(e.sprite)return Xt(e.url,t,n,e.sprite,e.anchor);return Yt(e.url,t,n,e.anchor)}function ue(e,t,n){if(!e?.value)throw new d("TEXT_CONTENT_MISSING",`Text content is missing for built-in asset: ${t}`,{asset:t});let i=document.createElementNS(x,"g"),r=document.createElementNS(x,"text"),o=e.align??"middle",s=e.placement??"cell",a=e.fontSize??12,l=e.lineHeight??1.2,c=It(o,n),u=Nt(s,n);r.setAttribute("x",String(c)),r.setAttribute("y",String(u.y)),r.setAttribute("text-anchor",o),r.setAttribute("dominant-baseline",u.baseline),r.setAttribute("font-family","Arial, Helvetica, sans-serif"),r.setAttribute("font-size",String(a)),r.setAttribute("font-weight",String(e.fontWeight??700)),r.setAttribute("fill",e.fill??"currentColor");let h=Pt(e.value);for(let[S,_]of h.entries()){let y=document.createElementNS(x,"tspan");y.setAttribute("x",String(c)),y.setAttribute("dy",S===0?"0":String(a*l)),y.textContent=_,r.appendChild(y)}return i.appendChild(r),i}function me(e,t,n){let i=document.createElementNS(x,"g");switch(e){case"rectangle":return Oe(i,Ft(),t?.rectangle,n),i;case"polygon":return Oe(i,t?.polygon?.points,t?.polygon,n),i;case"line":return Dt(i,t?.line,t?.line,n),i;case"circle":return Ot(i,t?.circle,n),i;default:throw new d("PRIMITIVE_ASSET_UNKNOWN",`Unknown built-in primitive asset: ${e}`,{asset:e})}}function It(e,t){if(e==="start")return-t/2;if(e==="end")return t/2;return 0}function Nt(e,t){if(e==="caption")return{y:-t,baseline:"text-before-edge"};return{y:-t/2,baseline:"middle"}}function Pt(e){return e.replace(/\r\n?/g,`
|
|
3
3
|
`).replace(/\n$/,"").split(`
|
|
4
|
-
`)}function F1(){return[[0,0],[1,0],[1,1],[0,1]]}function C0($,k,J,K){if(!k)return;let Z=document.createElementNS(w,"polygon");Z.setAttribute("points",k.map((q)=>$0(q,K)).join(" ")),k0(Z,J,{fill:"currentColor",stroke:"none"}),$.appendChild(Z)}function N1($,k,J,K){if(!k?.points)return;let Z=document.createElementNS(w,"polyline");Z.setAttribute("points",k.points.map((q)=>$0(q,K)).join(" ")),Z.setAttribute("fill","none"),Z.setAttribute("stroke-linecap",k.lineCap??"round"),Z.setAttribute("stroke-linejoin",k.lineJoin??"round"),k0(Z,J,{fill:"none",stroke:"currentColor"}),$.appendChild(Z)}function T1($,k,J){let K=$0([0.5,0.5],J),Z=document.createElementNS(w,"circle"),[q,Q]=K.split(",").map(Number);Z.setAttribute("cx",String(q)),Z.setAttribute("cy",String(Q)),Z.setAttribute("r",String(J*0.2)),k0(Z,k,{fill:"currentColor",stroke:"none"}),$.appendChild(Z)}function $0($,k){let J=C($[0],$[1],k),K=C(1,1,k);return`${J.rawX-K.rawX},${J.rawY-K.rawY}`}function k0($,k,J){if($.setAttribute("fill",k?.fill??J.fill),$.setAttribute("stroke",k?.stroke??J.stroke),$.setAttribute("stroke-width",String(k?.strokeWidth??0)),$.setAttribute("opacity",String(k?.opacity??1)),k?.dash)$.setAttribute("stroke-dasharray",k.dash.join(" "))}function R1($,k,J,K){if(!x0($))throw new j("INVALID_ASSET_URL",`Asset URL is unsafe: ${k}`,{asset:k});let Z=document.createElementNS(w,"g"),q=document.createElementNS(w,"image"),Q=I0($),[H,G]=K??[0.5,1];return q.setAttribute("href",Q),q.setAttributeNS("http://www.w3.org/1999/xlink","href",Q),q.setAttribute("x",String(-J*H)),q.setAttribute("y",String(-J*G)),q.setAttribute("width",String(J)),q.setAttribute("height",String(J)),q.setAttribute("preserveAspectRatio","xMidYMax meet"),Z.appendChild(q),Z}function S1($,k,J,K,Z){if(!x0($))throw new j("INVALID_ASSET_URL",`Asset URL is unsafe: ${k}`,{asset:k});let q=document.createElementNS(w,"g"),Q=document.createElementNS(w,"svg"),H=document.createElementNS(w,"image"),G=I0($),[V,W]=Z??[0.5,1],[Y,P,h,M]=K.rect;return Q.setAttribute("x",String(-J*V)),Q.setAttribute("y",String(-J*W)),Q.setAttribute("width",String(J)),Q.setAttribute("height",String(J)),Q.setAttribute("viewBox",`${Y} ${P} ${h} ${M}`),Q.setAttribute("preserveAspectRatio","xMidYMax meet"),H.setAttribute("href",G),H.setAttributeNS("http://www.w3.org/1999/xlink","href",G),H.setAttribute("x","0"),H.setAttribute("y","0"),H.setAttribute("width",String(K.sheetSize[0])),H.setAttribute("height",String(K.sheetSize[1])),Q.appendChild(H),q.appendChild(Q),q}function I0($){try{let k=document.baseURI;return typeof k==="string"?new URL($,k).href:$}catch{return $}}function x0($){let k=$.trim().toLowerCase();return k.length>0&&!k.startsWith("javascript:")}var C1=/^--[a-zA-Z0-9-_]+$/;function B0($,k){for(let[J,K]of Object.entries(k)){if(!C1.test(J))throw new j("INVALID_THEME_VAR",`Invalid CSS custom property name: ${J}`);$.style.setProperty(J,K)}}var A="http://www.w3.org/2000/svg",m0="text",z1=new Set(["rectangle","circle","polygon","line"]),D1={dashed:[12,8],dotted:[0,8]},q0=0.14,K0=0.35,I1=0.28,v0=0.4;function c0($,k,J){let K=V0(k),Z=k.scenes[0],q=s1(k),Q=i1(k),H=new Map((Z?.elements??[]).map((U)=>[U.id,U])),G=new Map((Z?.connectors??[]).map((U)=>[U.id,U])),V=f1(K,J?.label,k.className),W=z0(k);V.appendChild(m1()),B0(V,{...u(k.theme)??{},...k.themeVars??{},...J?.themeVars??{}});let Y=p1(k.layers),P=c1(Y);if(k.floor.visible)V.appendChild(v1(k,K));let h=new Map;for(let U of Q){let B=G.get(U.id)??{...U,presence:"removed"},_=d1(B,K);if(B.presence==="removed")_.isHidden=!0,S(_.node);$1(_,B.ambient??[]),V.appendChild(_.node),h.set(U.id,_)}let M=document.createElementNS(A,"g");M.classList.add("iso-depth-layer"),M.setAttribute("data-layer","depth"),V.appendChild(M);let L=document.createElementNS(A,"g");L.classList.add("iso-layer","iso-layer-labels"),L.setAttribute("data-layer","labels"),V.appendChild(L);let F=new Map,g=u1(q);for(let U of g){if(!P.get(U.layer))throw new j("MISSING_LAYER",`Unknown layer for "${U.id}": ${U.layer}`);let _=H.get(U.id)??{...U,presence:"removed"},N=l1(_,K,W);if(N.anchor=l0(k,_),N.node.classList.add(`iso-layer-${U.layer}`),N.node.setAttribute("data-layer",U.layer),_.presence==="removed")N.isHidden=!0,S(N.node);e0(N,_.ambient??[]),(i(U.asset)?L:M).appendChild(N.node),F.set(U.id,N)}return V._layerMap=P,V._elementMap=F,V._connectorMap=h,$.appendChild(V),V}function p0($,k,J=[]){let K=$._layout;if(!K)return;let Z=$._elementMap;if(Z)for(let Q of k){let H=Z.get(Q.id);if(!H)continue;H.current=Q,a1(H.node,Q,K),n0(H.node,Q,K),e0(H,Q.ambient??[])}let q=$._connectorMap;if(!q)return;for(let Q of J){let H=q.get(Q.id);if(!H)continue;d0(H,Q,K)}}function u0($,k){return $._elementMap?.get(k)}function s0($,k){return $._connectorMap?.get(k)}function z($){return V0($).viewBox}function Q0($,k){let J=$._layout,K=$._elementMap?.get(k);if(!J||!K||K.current.presence==="removed")return;return a0(E1(K.current,J,K.anchor))}function H0($,k){let J=V0($),[K,Z]=k.at,[q,Q]=k.size,H=l();for(let G of[[K,Z],[K+q,Z],[K,Z+Q],[K+q,Z+Q]]){let V=I(G[0],G[1],J.cellSize,J.selectedBounds.minX,J.selectedBounds.minY,J.padding.x,J.padding.y);H=G0(H,V.screenX,V.screenY)}return a0(H)}function i0($,k){$.setAttribute("viewBox",`${k.minX} ${k.minY} ${k.width} ${k.height}`)}function S($){$.style.visibility="hidden",$.style.pointerEvents="none"}function v($){$.style.visibility="visible",$.style.pointerEvents="auto"}function V0($){let k=$.grid.cellSize,J=$.layout.padding,K=x1($,k),Z=y1($,k),q=g1($.layout.bounds,K,Z),Q=q.maxX-q.minX+J.x*2,H=q.maxY-q.minY+J.y*2,G={minX:0,minY:0,width:y(Q||k),height:y(H||k)};return{cellSize:k,padding:J,contentBounds:K,floorBounds:Z,selectedBounds:q,viewBox:G}}function x1($,k){let J=l();for(let K of $.scenes){for(let Z of K.elements??[]){if(Z.presence==="removed")continue;J=Z0(J,B1($,Z,k))}for(let Z of K.connectors??[]){if(Z.presence==="removed")continue;J=Z0(J,b1(Z,k))}}return r0(J,k)}function B1($,k,J){let{rawX:K,rawY:Z}=C(k.pos[0]+k.size,k.pos[1]+k.size,J),q=s(k.size,J),[Q,H]=l0($,k);return{minX:K-q*Q,minY:Z-q*H,maxX:K+q*(1-Q),maxY:Z+q*(1-H)}}function E1($,k,J){let K=I($.pos[0]+$.size,$.pos[1]+$.size,k.cellSize,k.selectedBounds.minX,k.selectedBounds.minY,k.padding.x,k.padding.y),Z=s($.size,k.cellSize);return{minX:K.screenX-Z*J[0],minY:K.screenY-Z*J[1],maxX:K.screenX+Z*(1-J[0]),maxY:K.screenY+Z*(1-J[1])}}function l0($,k){return $.assets?.[k.asset]?.anchor??[0.5,1]}function b1($,k){let J=l();for(let[Q,H]of $.route){let{rawX:G,rawY:V}=C(Q,H,k);J=G0(J,G,V)}let K=Math.max(K0,v0,q0*2)*k,Z=$.style.strokeWidth/2+($.style.outlineWidth??0),q=K+Z;return{minX:J.minX-q,minY:J.minY-q,maxX:J.maxX+q,maxY:J.maxY+q}}function y1($,k){let J=$.floor.origin,[K,Z]=$.floor.size,q=[J,[J[0]+K,J[1]],[J[0],J[1]+Z],[J[0]+K,J[1]+Z]],Q=l();for(let[H,G]of q){let{rawX:V,rawY:W}=C(H,G,k);Q=G0(Q,V,W)}return r0(Q,k)}function g1($,k,J){if($==="content")return k;if($==="floor")return J;return Z0(k,J)}function l(){return{minX:Number.POSITIVE_INFINITY,minY:Number.POSITIVE_INFINITY,maxX:Number.NEGATIVE_INFINITY,maxY:Number.NEGATIVE_INFINITY}}function r0($,k){if(Number.isFinite($.minX))return $;return{minX:0,minY:0,maxX:k,maxY:k}}function a0($){let k=($.minX+$.maxX)/2,J=($.minY+$.maxY)/2,K=Math.max(1,$.maxX-$.minX),Z=Math.max(1,$.maxY-$.minY);return{minX:y(k-K/2),minY:y(J-Z/2),width:y(K),height:y(Z)}}function G0($,k,J){return{minX:Math.min($.minX,k),minY:Math.min($.minY,J),maxX:Math.max($.maxX,k),maxY:Math.max($.maxY,J)}}function Z0($,k){return{minX:Math.min($.minX,k.minX),minY:Math.min($.minY,k.minY),maxX:Math.max($.maxX,k.maxX),maxY:Math.max($.maxY,k.maxY)}}function y($){return Math.round($*1000)/1000}function f1($,k,J){let K=document.createElementNS(A,"svg");K.classList.add("iso-scene");for(let Z of J?.trim().split(/\s+/)??[])if(Z)K.classList.add(Z);if(K.setAttribute("width","100%"),K.setAttribute("height","100%"),K.setAttribute("viewBox",`${$.viewBox.minX} ${$.viewBox.minY} ${$.viewBox.width} ${$.viewBox.height}`),K.setAttribute("preserveAspectRatio","xMidYMid meet"),K.style.width="100%",K.style.height="100%",K.style.display="block",k)K.setAttribute("role","img"),K.setAttribute("aria-label",k);else K.setAttribute("aria-hidden","true");return K._layout=$,K._viewBoxW=$.viewBox.width,K._viewBoxH=$.viewBox.height,K}function m1(){let $=document.createElementNS(A,"style");return $.textContent=S0(),$}function v1($,k){let J=document.createElementNS(A,"g");J.classList.add("iso-floor-grid",`iso-layer-${$.floor.layer}`),J.setAttribute("data-layer",$.floor.layer);let[K,Z]=$.floor.origin,[q,Q]=$.floor.size,H=[X(K,Z,k),X(K+q,Z,k),X(K+q,Z+Q,k),X(K,Z+Q,k)],G=document.createElementNS(A,"polygon");G.classList.add("iso-floor-slab"),G.setAttribute("points",H.map(L0).join(" ")),G.setAttribute("fill","#dbe6f4"),G.setAttribute("fill-opacity","0.22"),G.setAttribute("stroke","#b9c9df"),G.setAttribute("stroke-width","1"),J.appendChild(G);for(let V=0;V<=q;V++)J.appendChild(E0(X(K+V,Z,k),X(K+V,Z+Q,k)));for(let V=0;V<=Q;V++)J.appendChild(E0(X(K,Z+V,k),X(K+q,Z+V,k)));return J}function E0($,k){let J=document.createElementNS(A,"line");return J.setAttribute("x1",String($.x)),J.setAttribute("y1",String($.y)),J.setAttribute("x2",String(k.x)),J.setAttribute("y2",String(k.y)),J.setAttribute("stroke","#2563eb"),J.setAttribute("stroke-width","1"),J.setAttribute("stroke-dasharray","5 5"),J.setAttribute("stroke-opacity","0.2"),J}function X($,k,J){let K=I($,k,J.cellSize,J.selectedBounds.minX,J.selectedBounds.minY,J.padding.x,J.padding.y);return{x:K.screenX,y:K.screenY}}function L0($){return`${$.x},${$.y}`}function c1($){return new Map($.map((k)=>[k.name,k]))}function p1($){return[...$].map((k,J)=>({name:k.name,order:k.order??J})).sort((k,J)=>k.order-J.order||k.name.localeCompare(J.name))}function u1($){return $.slice().sort((k,J)=>{let K=b0(k)-b0(J);if(K!==0)return K;let Z=k.pos[0]+k.pos[1]-(J.pos[0]+J.pos[1]);if(Z!==0)return Z;return k.id.localeCompare(J.id)})}function b0($){if(W0($.asset))return 0;if(i($.asset))return 2;return 1}function s1($){let k=new Map;for(let J of $.scenes)for(let K of J.elements??[])if(!k.has(K.id)||k.get(K.id)?.presence==="removed")k.set(K.id,K);return[...k.values()]}function i1($){let k=new Map;for(let J of $.scenes)for(let K of J.connectors??[])if(!k.has(K.id)||k.get(K.id)?.presence==="removed")k.set(K.id,K);return[...k.values()]}function l1($,k,J){let K=$.asset===m0?n($.text,$.asset,k.cellSize):W0($.asset)?e($.asset,$.primitive,k.cellSize):r1($,J,k.cellSize);K.classList.add("iso-element",`iso-element-${$.id}`),K.setAttribute("data-id",$.id),K.setAttribute("data-asset",$.asset),K.style.overflow="visible",K.style.pointerEvents="auto",n0(K,$,k);let Z=$.enter;if(Z&&Z!=="none"&&$.presence!=="removed"){let q=`iso-anim-${Z}`;return x(K,q,"enter"),K.addEventListener("animationend",()=>{K.style.animation=""},{once:!0}),{node:K,current:$,anchor:[0.5,1],isHidden:!1,entryKey:Z,ambient:new Set}}return{node:K,current:$,anchor:[0.5,1],isHidden:!1,ambient:new Set}}function i($){return $===m0}function W0($){return z1.has($)}function r1($,k,J){let K=k($.asset);if(!K)throw new j("ASSET_NOT_FOUND",`Asset not found: ${$.asset}`,{asset:$.asset,elementId:$.id});return D0(K,$.asset,J)}function a1($,k,J){if(!i(k.asset)&&!W0(k.asset))return;let K=i(k.asset)?n(k.text,k.asset,J.cellSize):e(k.asset,k.primitive,J.cellSize);o0($);while(K.firstChild){let Z=K.firstChild;K.removeChild(Z),$.appendChild(Z)}}function d1($,k){let J=document.createElementNS(A,"g"),K=document.createElementNS(A,"path"),Z={node:J,shaft:K,isHidden:!1,ambient:new Set};d0(Z,$,k);let q=$.enter;if(q&&q!=="none"&&$.presence!=="removed")x(J,`iso-anim-${q}`,"enter"),J.addEventListener("animationend",()=>{J.style.animation=""},{once:!0});return Z}function d0($,k,J){o1($.node,k),o0($.node);let K=n1(k.route,J);if(t1(k)){let Z=document.createElementNS(A,"path");Z.classList.add("iso-connector-outline"),J0(Z,k,K,{stroke:k.style.outline??k.style.stroke,strokeWidth:k.style.strokeWidth+k.style.outlineWidth*2,includeDash:!1}),$.node.appendChild(Z)}if($.shaft=document.createElementNS(A,"path"),$.shaft.classList.add("iso-connector-shaft"),J0($.shaft,k,K,{stroke:k.style.stroke,strokeWidth:k.style.strokeWidth,includeDash:!0}),$.node.appendChild($.shaft),k.style.variant==="road"&&k.style.lane==="center-dashed"){let Z=document.createElementNS(A,"path");Z.classList.add("iso-connector-lane"),J0(Z,k,K,{stroke:"#ffffff",strokeWidth:Math.max(1,k.style.strokeWidth*0.12),includeDash:!1}),Z.setAttribute("stroke-dasharray","8 8"),$.node.appendChild(Z)}y0($.node,k,"start",J),y0($.node,k,"end",J),$1($,k.ambient??[])}function o0($){while($.firstChild)$.removeChild($.firstChild)}function o1($,k){$.setAttribute("class",["iso-connector",`iso-connector-${k.id}`,`iso-connector-variant-${k.style.variant}`,`iso-connector-pattern-${k.style.pattern}`,`iso-connector-direction-${k.direction}`,`iso-layer-${k.layer}`].join(" ")),$.setAttribute("data-id",k.id),$.setAttribute("data-layer",k.layer),$.style.overflow="visible",$.style.pointerEvents="auto"}function t1($){return Boolean($.style.outline&&$.style.outlineWidth>0)}function J0($,k,J,K){if($.setAttribute("d",J),$.setAttribute("fill","none"),$.setAttribute("stroke",K.stroke),$.setAttribute("stroke-width",String(K.strokeWidth)),$.setAttribute("stroke-linecap","round"),$.setAttribute("stroke-linejoin","round"),$.setAttribute("opacity",String(k.style.opacity)),K.includeDash&&k.style.pattern!=="solid"){let Z=k.style.dash??D1[k.style.pattern];$.setAttribute("stroke-dasharray",Z.join(" "))}}function n1($,k){return $.map((J,K)=>{let Z=X(J[0],J[1],k);return`${K===0?"M":"L"} ${Z.x} ${Z.y}`}).join(" ")}function y0($,k,J,K){let Z=k[J];if(Z==="none"||k.route.length<2)return;let q=e1(Z,k,J,K);q.classList.add(`iso-connector-${J}`),$.appendChild(q)}function e1($,k,J,K){switch($){case"arrow":return $5(k,J,K);case"dot":return g0(k,J,K,!0);case"circle":return g0(k,J,K,!1);case"diamond":return k5(k,J,K);case"bar":return J5(k,J,K);case"none":throw new j("CONNECTOR_ENDPOINT_NONE","Cannot create geometry for endpoint none")}}function $5($,k,J){let K=r($,k),Z=t0($,k),q=[-Z[1],Z[0]],Q=[K[0]-Z[0]*K0,K[1]-Z[1]*K0],H=I1/2,G=[K,[Q[0]+q[0]*H,Q[1]+q[1]*H],[Q[0]-q[0]*H,Q[1]-q[1]*H]].map((W)=>X(W[0],W[1],J)),V=document.createElementNS(A,"polygon");return V.setAttribute("points",G.map(L0).join(" ")),V.setAttribute("fill",$.style.stroke),V.setAttribute("opacity",String($.style.opacity)),V}function g0($,k,J,K){let Z=r($,k),q=X(Z[0],Z[1],J),Q=document.createElementNS(A,"circle");return Q.setAttribute("cx",String(q.x)),Q.setAttribute("cy",String(q.y)),Q.setAttribute("r",String(q0*J.cellSize)),Q.setAttribute("stroke",$.style.stroke),Q.setAttribute("stroke-width",String(Math.max(1,$.style.strokeWidth))),Q.setAttribute("opacity",String($.style.opacity)),Q.setAttribute("fill",K?$.style.stroke:"none"),Q}function k5($,k,J){let K=r($,k),Z=q0,q=[[K[0],K[1]-Z],[K[0]+Z,K[1]],[K[0],K[1]+Z],[K[0]-Z,K[1]]],Q=document.createElementNS(A,"polygon");return Q.setAttribute("points",q.map((H)=>X(H[0],H[1],J)).map(L0).join(" ")),Q.setAttribute("fill",$.style.stroke),Q.setAttribute("opacity",String($.style.opacity)),Q}function J5($,k,J){let K=r($,k),Z=t0($,k),q=[-Z[1],Z[0]],Q=v0/2,H=X(K[0]+q[0]*Q,K[1]+q[1]*Q,J),G=X(K[0]-q[0]*Q,K[1]-q[1]*Q,J),V=document.createElementNS(A,"line");return V.setAttribute("x1",String(H.x)),V.setAttribute("y1",String(H.y)),V.setAttribute("x2",String(G.x)),V.setAttribute("y2",String(G.y)),V.setAttribute("stroke",$.style.stroke),V.setAttribute("stroke-width",String(Math.max(1,$.style.strokeWidth))),V.setAttribute("stroke-linecap","round"),V.setAttribute("opacity",String($.style.opacity)),V}function r($,k){return k==="start"?$.route[0]:$.route[$.route.length-1]}function t0($,k){let J=k==="start"?f0($.route[0],$.route[1]):f0($.route[$.route.length-2],$.route[$.route.length-1]),K=$.direction==="reverse"?[-J[0],-J[1]]:J;return K5(K)}function f0($,k){return[k[0]-$[0],k[1]-$[1]]}function K5($){let k=Math.hypot($[0],$[1]);if(k===0)return[1,0];return[$[0]/k,$[1]/k]}function n0($,k,J){let K=I(k.pos[0]+k.size,k.pos[1]+k.size,J.cellSize,J.selectedBounds.minX,J.selectedBounds.minY,J.padding.x,J.padding.y),q=s(k.size,J.cellSize)/J.cellSize;$.setAttribute("transform",`translate(${K.screenX} ${K.screenY}) scale(${q})`)}function e0($,k){let J=new Set((k??[]).map((K)=>K.name));for(let K of $.ambient)if(!J.has(K))$.node.classList.remove(`iso-ambient-${K}`);for(let K of J)if(!$.ambient.has(K))$.node.classList.add(`iso-ambient-${K}`);$.ambient=J}function $1($,k){let J=new Set((k??[]).map((K)=>K.name));for(let K of $.ambient)if(!J.has(K))$.shaft.classList.remove(`iso-ambient-${K}`);for(let K of J)$.shaft.classList.add(`iso-ambient-${K}`);$.ambient=J}function x($,k,J="enter"){$.style.opacity="1",$.style.animation="none",$.getBoundingClientRect();let K=J==="exit"?"var(--iso-anim-duration-exit, 300ms)":"var(--iso-anim-duration-enter, 400ms)",Z=J==="exit"?"var(--iso-anim-easing-exit, ease-in)":"var(--iso-anim-easing-enter, ease-out)";$.style.animation=`${k} ${K} ${Z} forwards`}function Z5($){return $}function q5($){return $*$*$}function Q5($){return 1-(1-$)**3}function H5($){return $<0.5?4*$*$*$:1-(-2*$+2)**3/2}function U0($){switch($){case"linear":return Z5;case"easeInCubic":return q5;case"easeOutCubic":return Q5;case"easeInOutCubic":return H5}}var k1={scrollDirection:"vertical",scrollOffset:{},minProgress:0,maxProgress:1,keyboardControls:!1,touchControls:!1,scrollSensitivity:1,transitionDuration:600,transitionEasing:"ease-in-out"};class j0{_engine=new b;_bundle=null;_sceneIndex=0;_progress=0;_paused=!1;_config=k1;_container=null;_sceneElement=null;_ownsEngine=!0;_rafId=null;_pendingProgress=null;_destroyed=!1;_listeners=new Map;_cameraAnim=null;_cameraState=null;_minScroll=0;_maxScroll=0;_touchStartY=0;_touchStartX=0;_isDragging=!1;_transitionAnim=null;get engine(){return this._engine}get progress(){return this._progress}getProgress(){return this._assertNotDestroyed(),this._progress}get sceneIndex(){return this._sceneIndex}getSceneIndex(){return this._assertNotDestroyed(),this._sceneIndex}get scenes(){return this._bundle?.scenes??[]}get paused(){return this._paused}get currentScene(){return this.scenes[this._sceneIndex]}init($,k={},J={}){if(this._assertNotDestroyed(),!$.scenes||$.scenes.length===0)throw new O("CONTROLLER_NO_SCENES","init() requires at least one compiled scene stop");this._cancelFrame(),this._bundle=$,this._engine=J.engine??new b,this._ownsEngine=!J.engine,this._sceneIndex=0,this._progress=0,this._paused=!1,this._config={...k1,...k},this._sceneElement=J.sceneElement??k.sceneElement??null,this._cameraState={viewBox:z($),target:{type:"reset"},isZoomed:!1},this._engine.init($),this._bindScroll()}setProgress($){if(this._assertNotDestroyed(),!Number.isFinite($))throw new O("CONTROLLER_PROGRESS_OUT_OF_RANGE","setProgress() requires a finite progress value");let k=Math.max(0,Math.min(1,$));if(k===this._progress&&!this._paused&&this._rafId!==null)return;if(this._progress=k,this._cancelCameraAnimation(),this._paused)return;this._scheduleProgressForward(k)}nextScene(){if(this._assertNotDestroyed(),this.scenes.length<=1)return;let $=(this._sceneIndex+1)%this.scenes.length;this._transitionToScene($)}prevScene(){if(this._assertNotDestroyed(),this.scenes.length<=1)return;let $=(this._sceneIndex-1+this.scenes.length)%this.scenes.length;this._transitionToScene($)}setSceneIndex($){if(this._assertNotDestroyed(),$<0||$>=this.scenes.length)throw new O("CONTROLLER_SCENE_INDEX_OUT_OF_RANGE",`Scene index ${$} is out of bounds [0, ${this.scenes.length-1}]`);this._transitionToScene($)}pause(){if(this._assertNotDestroyed(),this._paused)return;this._paused=!0,this._cancelFrame(),this._engine.pause(),this._applyPauseState(!0),this._emit("paused")}resume(){if(this._assertNotDestroyed(),!this._paused)return;this._paused=!1,this._engine.resume(),this._applyPauseState(!1),this._scheduleProgressForward(this._progress),this._emit("resumed")}isPaused(){return this._assertNotDestroyed(),this._paused}zoomToElement($,k={}){this._assertNotDestroyed();let J=this._getSceneSvg();if(!this._bundle||!J)throw new O("CAMERA_NOT_INITIALIZED","zoomToElement() requires an initialized scene SVG");let K=Q0(J,$);if(!K)throw new O("CAMERA_TARGET_NOT_FOUND",`Camera target element "${$}" was not found`,{elementId:$});this._applyCameraDestination(a(K,this._resolveCameraPadding(k)),{type:"element",id:$},k)}zoomToArea($,k={}){if(this._assertNotDestroyed(),!this._bundle||!this._getSceneSvg())throw new O("CAMERA_NOT_INITIALIZED","zoomToArea() requires an initialized scene SVG");this._assertValidCameraArea($);let J=H0(this._bundle,$);this._applyCameraDestination(a(J,this._resolveCameraPadding(k)),{type:"area",at:[...$.at],size:[...$.size]},k)}resetZoom($={}){if(this._assertNotDestroyed(),!this._bundle||!this._getSceneSvg())throw new O("CAMERA_NOT_INITIALIZED","resetZoom() requires an initialized scene SVG");this._applyCameraDestination(z(this._bundle),{type:"reset"},$)}getCameraState(){if(this._assertNotDestroyed(),!this._cameraState)throw new O("CAMERA_NOT_INITIALIZED","Camera state is not initialized");return W5(this._cameraState)}destroy(){if(this._assertNotDestroyed(),this._unbindScroll(),this._cancelFrame(),this._cancelTransition(),this._cancelCameraAnimation(),this._ownsEngine)this._engine.destroy();this._listeners.clear(),this._bundle=null,this._container=null,this._pendingProgress=null,this._cameraState=null,this._destroyed=!0}on($,k){this._assertNotDestroyed();let J=this._listeners.get($)??new Set;J.add(k),this._listeners.set($,J)}off($,k){this._assertNotDestroyed();let J=this._listeners.get($);if(J)J.delete(k)}_emit($,...k){let J=this._listeners.get($);if(J)for(let K of J)try{K(...k)}catch(Z){queueMicrotask(()=>{throw Z})}}_scheduleProgressForward($){if(this._pendingProgress=$,this._rafId!==null)return;this._rafId=requestAnimationFrame(()=>{this._rafId=null;let k=this._pendingProgress;if(this._pendingProgress=null,k===null||this._paused||this._destroyed)return;this._engine.setProgress(k),this._applyFrameUpdate(),this._emit("progress-change",k)})}_cancelFrame(){if(this._rafId!==null)cancelAnimationFrame(this._rafId),this._rafId=null;this._pendingProgress=null}_applyFrameUpdate(){if(!this._bundle)return;let $=this._sceneElement??this._container?.querySelector("svg")??null;if(!$)return;let k=this._engine.getFrameUpdates().map((K)=>({id:K.id,asset:K.asset,pos:K.pos,size:K.size,layer:K.layer,presence:K.lifecycle,enter:K.entry,exit:K.exit,ambient:K.ambient,text:K.text,primitive:K.primitive})),J=this._engine.getConnectorFrameUpdates().map((K)=>({id:K.id,route:K.route,layer:K.layer,presence:K.lifecycle,style:K.style,start:K.start,end:K.end,direction:K.direction,enter:K.entry,exit:K.exit,ambient:K.ambient}));p0($,k,J),this._applyLifecycleChanges(k),this._applyConnectorLifecycleChanges(J),this._applyCameraForProgress(this._progress)}_applyCameraForProgress($){let k=this._getSceneSvg();if(!this._bundle||!k)return;let J=this.scenes;if(J.length===0)return;let{previous:K,next:Z}=V5(J,$),q=this._effectiveCameraAt(K.index),Q=this._effectiveCameraAt(Z.index),H=this._resolveCameraViewBox(q),G=this._resolveCameraViewBox(Q),V=Z.scene.progress-K.scene.progress,W=V<=0?0:($-K.scene.progress)/V,Y=G1(Q.easing)(Math.max(0,Math.min(1,W))),P=V1(H,G,Y),h=Y<1?q.target:Q.target;this._setCameraViewBox(k,P,h)}_effectiveCameraAt($){for(let k=$;k>=0;k--){let J=this.scenes[k]?.camera;if(J)return{target:J.target,padding:J.padding,duration:J.duration,easing:J.easing}}return{target:{type:"reset"}}}_resolveCameraViewBox($){if(!this._bundle)throw new O("CAMERA_NOT_INITIALIZED","Camera requires an initialized bundle");if($.target.type==="reset")return z(this._bundle);if($.target.type==="area")return a(H0(this._bundle,{at:$.target.at,size:$.target.size}),$.padding??32);let k=this._getSceneSvg();if(!k)throw new O("CAMERA_NOT_INITIALIZED","Camera requires an initialized scene SVG");let J=Q0(k,$.target.id);if(!J)throw new O("CAMERA_TARGET_NOT_FOUND",`Camera target element "${$.target.id}" was not found`,{elementId:$.target.id});return a(J,$.padding??32)}_applyCameraDestination($,k,J){let K=this._getSceneSvg();if(!K)throw new O("CAMERA_NOT_INITIALIZED","Camera requires an initialized scene SVG");this._cancelCameraAnimation();let Z=this._resolveCameraDuration(J);if(Z===0){this._setCameraViewBox(K,$,k);return}let q=L5(K)??this._cameraState?.viewBox??$,Q=G1(J.easing??this._config.transitionEasing),H=performance.now(),G=(V)=>{let W=Math.min((V-H)/Z,1);if(this._setCameraViewBox(K,V1(q,$,Q(W)),k),W<1)this._cameraAnim=requestAnimationFrame(G);else this._cameraAnim=null};this._cameraAnim=requestAnimationFrame(G)}_setCameraViewBox($,k,J){i0($,k);let K=this._bundle?z(this._bundle):k;this._cameraState={viewBox:k,target:J,isZoomed:!G5(k,K)},this._emit("camera-change",this.getCameraState())}_getSceneSvg(){return this._sceneElement??this._container?.querySelector("svg")??null}_resolveCameraPadding($){let k=$.padding??32;if(!Number.isFinite(k)||k<0||k>2048)throw new O("INVALID_CAMERA_OPTIONS","Camera padding must be between 0 and 2048");return k}_resolveCameraDuration($){let k=$.duration??this._config.transitionDuration;if(!Number.isInteger(k)||k<0||k>1e4)throw new O("INVALID_CAMERA_OPTIONS","Camera duration must be an integer from 0 to 10000");return k}_assertValidCameraArea($){if(!Array.isArray($.at)||$.at.length!==2||!$.at.every((k)=>Number.isFinite(k)&&k>=0)||!Array.isArray($.size)||$.size.length!==2||!$.size.every((k)=>Number.isFinite(k)&&k>0))throw new O("INVALID_CAMERA_OPTIONS","Camera area must use non-negative at and positive size")}_applyLifecycleChanges($){for(let k of $){let J=this._engine.getLifecycleTransition(k.id);if(!J)continue;let K=this._sceneElement??this._container?.querySelector("svg");if(!K)continue;let Z=u0(K,k.id);if(!Z)continue;if(J.to==="entering"||J.to==="present")Z.isHidden=!1,v(Z.node);if(J1(J))this._applyEntryAnimation(k,Z);if(Z1(J)){this._applyExitAnimation({...k,exit:Q1(k.enter??"fade-in")},Z);continue}if(K1(J))this._applyExitAnimation(k,Z);if(q1(J)){Z.isHidden=!1,v(Z.node),this._applyEntryAnimation({...k,enter:H1(k.exit??"fade-out")},Z);continue}if(J.to==="removed")Z.isHidden=!0,S(Z.node)}}_applyConnectorLifecycleChanges($){for(let k of $){let J=this._engine.getConnectorLifecycleTransition(k.id);if(!J)continue;let K=this._sceneElement??this._container?.querySelector("svg");if(!K)continue;let Z=s0(K,k.id);if(!Z)continue;if(J.to==="entering"||J.to==="present")Z.isHidden=!1,v(Z.node);if(J1(J))this._applyConnectorEntryAnimation(k,Z);if(Z1(J)){this._applyConnectorExitAnimation({...k,exit:Q1(k.enter??"fade-in")},Z);continue}if(K1(J))this._applyConnectorExitAnimation(k,Z);if(q1(J)){Z.isHidden=!1,v(Z.node),this._applyConnectorEntryAnimation({...k,enter:H1(k.exit??"fade-out")},Z);continue}if(J.to==="removed")Z.isHidden=!0,S(Z.node)}}_applyEntryAnimation($,k){let J=$.enter??"fade-in";if(J==="none")return;x(k.node,`iso-anim-${J}`,"enter");let K=k.node.style.animation;k.node.addEventListener("animationend",()=>{if(k.node.style.animation===K)k.node.style.animation=""},{once:!0})}_applyExitAnimation($,k){let J=$.exit??"fade-out";if(J==="none"){S(k.node);return}x(k.node,`iso-anim-${J}`,"exit");let K=k.node.style.animation;k.node.addEventListener("animationend",()=>{if(k.node.style.animation===K)S(k.node)},{once:!0})}_applyConnectorEntryAnimation($,k){let J=$.enter??"fade-in";if(J==="none")return;x(k.node,`iso-anim-${J}`,"enter");let K=k.node.style.animation;k.node.addEventListener("animationend",()=>{if(k.node.style.animation===K)k.node.style.animation=""},{once:!0})}_applyConnectorExitAnimation($,k){let J=$.exit??"fade-out";if(J==="none"){S(k.node);return}x(k.node,`iso-anim-${J}`,"exit");let K=k.node.style.animation;k.node.addEventListener("animationend",()=>{if(k.node.style.animation===K)S(k.node)},{once:!0})}_transitionToScene($){if(this._cancelTransition(),$===this._sceneIndex)return;this._sceneIndex=$,this._emit("scene-change",$);let k=this.scenes[$],J=this._progress,K=k.progress,Z=this._config.transitionDuration;if(Z>0&&J!==K){this._animateProgress(J,K,Z);return}this._progress=K,this._scheduleProgressForward(K)}_animateProgress($,k,J){let K=U0(this._config.transitionEasing==="ease-in-out"?"easeInOutCubic":this._config.transitionEasing==="ease-out"?"easeOutCubic":"linear"),Z=performance.now(),q=(Q)=>{let H=Q-Z,G=Math.min(H/J,1),V=K(G),W=$+(k-$)*V;if(this.setProgress(W),G<1)this._transitionAnim=requestAnimationFrame(q);else this._transitionAnim=null};this._transitionAnim=requestAnimationFrame(q)}_cancelTransition(){if(this._transitionAnim!==null)cancelAnimationFrame(this._transitionAnim),this._transitionAnim=null}_cancelCameraAnimation(){if(this._cameraAnim!==null)cancelAnimationFrame(this._cameraAnim),this._cameraAnim=null}_bindScroll(){let $=this._config.container;if(!$)return;if(this._container=$,this._calculateScrollBounds(),$.addEventListener("scroll",this._onScroll,{passive:!0}),window.addEventListener("resize",this._onResize,{passive:!0}),this._config.keyboardControls)document.addEventListener("keydown",this._onKeyDown);if(this._config.touchControls)$.addEventListener("touchstart",this._onTouchStart,{passive:!0}),$.addEventListener("touchmove",this._onTouchMove,{passive:!1}),$.addEventListener("touchend",this._onTouchEnd)}_unbindScroll(){let $=this._config.container;if(!$)return;$.removeEventListener("scroll",this._onScroll),window.removeEventListener("resize",this._onResize),document.removeEventListener("keydown",this._onKeyDown),$.removeEventListener("touchstart",this._onTouchStart),$.removeEventListener("touchmove",this._onTouchMove),$.removeEventListener("touchend",this._onTouchEnd)}_calculateScrollBounds(){let $=this._config.container;if(!$)return;let k=this._config.scrollOffset??{};if(this._config.scrollDirection==="horizontal"){this._minScroll=k.left??0,this._maxScroll=$.scrollWidth-$.clientWidth-(k.right??0);return}this._minScroll=k.top??0,this._maxScroll=$.scrollHeight-$.clientHeight-(k.bottom??0)}_onScroll=()=>{if(this._paused||this._destroyed)return;let $=this._config.container;if(!$)return;let k=this._config.scrollDirection==="horizontal"?$.scrollLeft:$.scrollTop,J=this._maxScroll-this._minScroll;if(J<=0)return;let K=(k-this._minScroll)/J,Z=Math.max(this._config.minProgress??0,Math.min(this._config.maxProgress??1,K)),q=this._config.scrollSensitivity??1;if(Z!==this._progress)this.setProgress(Z*q)};_onResize=()=>{if(this._destroyed)return;this._calculateScrollBounds()};_onKeyDown=($)=>{if(this._destroyed)return;if($.key==="ArrowRight"||$.key==="ArrowDown"||$.key===" ")$.preventDefault(),this.nextScene();else if($.key==="ArrowLeft"||$.key==="ArrowUp")$.preventDefault(),this.prevScene()};_onTouchStart=($)=>{if(this._destroyed)return;this._isDragging=!0;let k=$.touches[0];if(this._config.scrollDirection==="horizontal")this._touchStartX=k.clientX;else this._touchStartY=k.clientY};_onTouchMove=($)=>{if(this._destroyed)return;if(!this._isDragging)return;let k=$.touches[0],J=this._config.scrollDirection==="horizontal"?this._touchStartX-k.clientX:this._touchStartY-k.clientY,K=this._config.scrollSensitivity??1,Z=J/300*K,q=Math.max(0,Math.min(1,this._progress+Z));this.setProgress(q)};_onTouchEnd=()=>{if(this._destroyed)return;this._isDragging=!1};_applyPauseState($){let k=this._config.container;if(!k)return;let J=k.querySelector("svg");if(!J)return;let K=$?"paused":"running",Z=J.querySelectorAll('[class*="iso-ambient-"]');for(let q=0;q<Z.length;q++){let Q=Z[q];Q.style.animationPlayState=K}}_assertNotDestroyed(){if(!this._destroyed)return;throw new O("CONTROLLER_DESTROYED","AnimationController has been destroyed")}}function J1($){return $.from==="removed"&&$.to==="entering"}function K1($){return $.to==="exiting"}function Z1($){return $.to==="removed"&&$.from!=="exiting"}function q1($){return $.from==="exiting"&&$.to!=="removed"}function Q1($){switch($){case"fade-in":return"fade-out";case"fade-in-grow":return"fade-out-shrink";case"fall-in":return"rise-away";case"rise-from-ground":return"fall-through-ground";case"slide-in-left":return"slide-out-left";case"slide-in-right":return"slide-out-right";case"flip-in":return"flip-out";case"none":return"none"}}function H1($){switch($){case"fade-out":return"fade-in";case"fade-out-shrink":return"fade-in-grow";case"fall-through-ground":return"rise-from-ground";case"rise-away":return"fall-in";case"slide-out-left":return"slide-in-left";case"slide-out-right":return"slide-in-right";case"flip-out":return"flip-in";case"none":return"none"}}function V5($,k){let J=0,K=$.length-1;for(let Z=0;Z<$.length;Z++){if($[Z].progress<=k)J=Z;if($[Z].progress>=k){K=Z;break}}return{previous:{scene:$[J],index:J},next:{scene:$[K],index:K}}}function a($,k){return{minX:D($.minX-k),minY:D($.minY-k),width:D(Math.max(1,$.width+k*2)),height:D(Math.max(1,$.height+k*2))}}function V1($,k,J){return{minX:D($.minX+(k.minX-$.minX)*J),minY:D($.minY+(k.minY-$.minY)*J),width:D($.width+(k.width-$.width)*J),height:D($.height+(k.height-$.height)*J)}}function G5($,k){return $.minX===k.minX&&$.minY===k.minY&&$.width===k.width&&$.height===k.height}function L5($){let k=$.getAttribute("viewBox");if(!k)return;let J=k.trim().split(/\s+/).map(Number);if(J.length!==4||J.some((K)=>!Number.isFinite(K)))return;return{minX:J[0],minY:J[1],width:J[2],height:J[3]}}function G1($){return U0($==="ease-in-out"?"easeInOutCubic":$==="ease-out"?"easeOutCubic":"linear")}function W5($){return{viewBox:{...$.viewBox},target:$.target?.type==="area"?{type:"area",at:[...$.target.at],size:[...$.target.size]}:$.target?{...$.target}:void 0,isZoomed:$.isZoomed}}function D($){return Math.round($*1000)/1000}function L1($){let k=U5($),J=k.length*8;k.push(128);while(k.length%64!==56)k.push(0);for(let Q=7;Q>=0;Q--)k.push(Math.floor(J/2**(Q*8))&255);let K=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],Z=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],q=Array(64);for(let Q=0;Q<k.length;Q+=64){for(let L=0;L<16;L++){let F=Q+L*4;q[L]=(k[F]<<24|k[F+1]<<16|k[F+2]<<8|k[F+3])>>>0}for(let L=16;L<64;L++){let F=T(q[L-15],7)^T(q[L-15],18)^q[L-15]>>>3,g=T(q[L-2],17)^T(q[L-2],19)^q[L-2]>>>10;q[L]=q[L-16]+F+q[L-7]+g>>>0}let[H,G,V,W,Y,P,h,M]=K;for(let L=0;L<64;L++){let F=T(Y,6)^T(Y,11)^T(Y,25),g=Y&P^~Y&h,U=M+F+g+Z[L]+q[L]>>>0,B=T(H,2)^T(H,13)^T(H,22),_=H&G^H&V^G&V,N=B+_>>>0;M=h,h=P,P=Y,Y=W+U>>>0,W=V,V=G,G=H,H=U+N>>>0}K[0]=K[0]+H>>>0,K[1]=K[1]+G>>>0,K[2]=K[2]+V>>>0,K[3]=K[3]+W>>>0,K[4]=K[4]+Y>>>0,K[5]=K[5]+P>>>0,K[6]=K[6]+h>>>0,K[7]=K[7]+M>>>0}return K.map((Q)=>Q.toString(16).padStart(8,"0")).join("")}function U5($){return Array.from(new TextEncoder().encode($))}function T($,k){return $>>>k|$<<32-k}var W1="isostate-runtime-bundle",O0="0.4.0",j5=/^[a-f0-9]{64}$/;function O5($,k,J={}){Y5($),A5(k);let K=new b;K.init(k);let Z=c0($,k,{label:J.label,themeVars:J.themeVars}),q;if(J.controller!==void 0&&J.controller!==!1)q=new j0,q.init(k,{...J.controller,container:J.controller.container??$,sceneElement:Z},{engine:K,sceneElement:Z});let Q=!1;return{svg:Z,engine:K,controller:q,getResolvedConfig:()=>M5(k,J),destroy:()=>{if(Q)return;if(Q=!0,q?.destroy(),K.destroy(),Z.parentNode===$)$.removeChild(Z);else Z.parentNode?.removeChild(Z)}}}function Y5($){if(!$||typeof $.appendChild!=="function"||typeof $.removeChild!=="function")throw new j("INVALID_MOUNT_TARGET","mountScene() requires a DOM HTMLElement target")}function A5($){if(!$||typeof $!=="object")throw new j("BUNDLE_FORMAT_MISSING","Runtime bundle must be a plain object");if($._format!==W1)throw new j("BUNDLE_FORMAT_MISSING","Runtime bundle format is missing or unsupported",{expected:W1});if(!Array.isArray($.scenes)||$.scenes.length===0)throw new j("BUNDLE_FORMAT_MISSING","Runtime bundle must include compiled scenes[]");if(U1($._version)!==U1(O0))throw new j("BUNDLE_VERSION_MISMATCH",`Runtime bundle version ${$._version} is not compatible with runtime ${O0}`,{bundleVersion:$._version,runtimeVersion:O0});if(!$._digest)throw new j("BUNDLE_DIGEST_MISSING","Runtime bundle digest is missing");if(typeof $._digest!=="string"||!j5.test($._digest))throw new j("BUNDLE_DIGEST_MISMATCH","Runtime bundle digest is malformed");let{_digest:k,...J}=$,K=L1(P5(J));if(K!==k)throw new j("BUNDLE_DIGEST_MISMATCH","Runtime bundle digest does not match bundle content",{expected:k,actual:K})}function M5($,k={}){return{grid:{cellSize:$.grid.cellSize},floor:{...$.floor},layout:{...$.layout,padding:{...$.layout.padding},align:[...$.layout.align]},viewBox:z($),camera:{viewBox:z($),isZoomed:!1},theme:$.theme,themeVars:X5($,k.themeVars),scenes:$.scenes.map((J)=>({id:J.id,progress:J.progress})),layerOrder:$.layers.map((J)=>({name:J.name,order:J.order})).sort((J,K)=>J.order-K.order||J.name.localeCompare(K.name))}}function X5($,k={}){return{...u($.theme)??{},...$.themeVars??{},...k}}function U1($){let k=Number.parseInt(String($).split(".")[0]??"",10);return Number.isFinite(k)?k:Number.NaN}function P5($){return JSON.stringify(Y0($))}function Y0($){if(Array.isArray($))return $.map((J)=>J===void 0?null:Y0(J));if(!h5($))return $;let k={};for(let J of Object.keys($).sort()){let K=$[J];if(K!==void 0)k[J]=Y0(K)}return k}function h5($){return typeof $==="object"&&$!==null&&!Array.isArray($)}function k2($,k,J,K,Z,q,Q){return I($,k,J,K,Z,q,Q)}export{k2 as projectToScreen,O5 as mountScene};
|
|
4
|
+
`)}function Ft(){return[[0,0],[1,0],[1,1],[0,1]]}function Oe(e,t,n,i){if(!t)return;let r=document.createElementNS(x,"polygon");r.setAttribute("points",t.map((o)=>de(o,i)).join(" ")),pe(r,n,{fill:"currentColor",stroke:"none"}),e.appendChild(r)}function Dt(e,t,n,i){if(!t?.points)return;let r=document.createElementNS(x,"polyline");r.setAttribute("points",t.points.map((o)=>de(o,i)).join(" ")),r.setAttribute("fill","none"),r.setAttribute("stroke-linecap",t.lineCap??"round"),r.setAttribute("stroke-linejoin",t.lineJoin??"round"),pe(r,n,{fill:"none",stroke:"currentColor"}),e.appendChild(r)}function Ot(e,t,n){let i=de([0.5,0.5],n),r=document.createElementNS(x,"circle"),[o,s]=i.split(",").map(Number);r.setAttribute("cx",String(o)),r.setAttribute("cy",String(s)),r.setAttribute("r",String(n*0.2)),pe(r,t,{fill:"currentColor",stroke:"none"}),e.appendChild(r)}function de(e,t){let n=G(e[0],e[1],t),i=G(1,1,t);return`${n.rawX-i.rawX},${n.rawY-i.rawY}`}function pe(e,t,n){if(e.setAttribute("fill",t?.fill??n.fill),e.setAttribute("stroke",t?.stroke??n.stroke),e.setAttribute("stroke-width",String(t?.strokeWidth??0)),e.setAttribute("opacity",String(t?.opacity??1)),t?.dash)e.setAttribute("stroke-dasharray",t.dash.join(" "))}function Yt(e,t,n,i){if(!ze(e))throw new d("INVALID_ASSET_URL",`Asset URL is unsafe: ${t}`,{asset:t});let r=document.createElementNS(x,"g"),o=document.createElementNS(x,"image"),s=Xe(e),[a,l]=i??[0.5,1];return o.setAttribute("href",s),o.setAttributeNS("http://www.w3.org/1999/xlink","href",s),o.setAttribute("x",String(-n*a)),o.setAttribute("y",String(-n*l)),o.setAttribute("width",String(n)),o.setAttribute("height",String(n)),o.setAttribute("preserveAspectRatio","xMidYMax meet"),r.appendChild(o),r}function Xt(e,t,n,i,r){if(!ze(e))throw new d("INVALID_ASSET_URL",`Asset URL is unsafe: ${t}`,{asset:t});let o=document.createElementNS(x,"g"),s=document.createElementNS(x,"svg"),a=document.createElementNS(x,"image"),l=Xe(e),[c,u]=r??[0.5,1],[h,S,_,y]=i.rect;return s.setAttribute("x",String(-n*c)),s.setAttribute("y",String(-n*u)),s.setAttribute("width",String(n)),s.setAttribute("height",String(n)),s.setAttribute("viewBox",`${h} ${S} ${_} ${y}`),s.setAttribute("preserveAspectRatio","xMidYMax meet"),a.setAttribute("href",l),a.setAttributeNS("http://www.w3.org/1999/xlink","href",l),a.setAttribute("x","0"),a.setAttribute("y","0"),a.setAttribute("width",String(i.sheetSize[0])),a.setAttribute("height",String(i.sheetSize[1])),s.appendChild(a),o.appendChild(s),o}function Xe(e){try{let t=document.baseURI;return typeof t==="string"?new URL(e,t).href:e}catch{return e}}function ze(e){let t=e.trim().toLowerCase();return t.length>0&&!t.startsWith("javascript:")}function $e(e,t){if(!e.length)return"";let n=`M ${e[0].x} ${e[0].y}`;for(let i=1;i<e.length;i++){let r=e[i],o=e[i-1],s=e[i+1],a=Math.hypot(r.x-o.x,r.y-o.y),l=s?Math.hypot(s.x-r.x,s.y-r.y):0,c=Math.min(t,a/2,l/2);if(!s||!c){n+=` L ${r.x} ${r.y}`;continue}let u={x:r.x+(o.x-r.x)*c/a,y:r.y+(o.y-r.y)*c/a},h={x:r.x+(s.x-r.x)*c/l,y:r.y+(s.y-r.y)*c/l};n+=` L ${u.x} ${u.y} Q ${r.x} ${r.y} ${h.x} ${h.y}`}return n}function g(e,t){let n=document.createElementNS("http://www.w3.org/2000/svg",e);for(let[i,r]of Object.entries(t))n.setAttribute(i,String(r));return n}function Ue(e,t,n,i){for(let s of e.querySelectorAll(".iso-track-effect"))e.removeChild(s);let{style:r}=n;if(r.glow){let s=g("path",{d:i,fill:"none",stroke:r.glow,"stroke-width":r.strokeWidth+(r.glowWidth??8),opacity:r.opacity*0.16,"stroke-linecap":"round","stroke-linejoin":"round",class:"iso-track-effect iso-connector-glow"});e.insertBefore(s,e.firstChild)}if(r.variant!=="beam")return;let o=g("path",{d:i,fill:"none",stroke:"#efffff","stroke-width":Math.max(0.6,r.strokeWidth*0.23),opacity:r.opacity*0.7,"stroke-linecap":"round","stroke-linejoin":"round",class:"iso-track-effect iso-connector-highlight"});e.insertBefore(o,t.nextSibling)}function zt(e,t,n){let i=g("g",{transform:`scale(${t/16})`,fill:n});if(i.appendChild(g("ellipse",{cx:1,cy:5,rx:9,ry:3.5,fill:"#07131f",opacity:0.35})),e==="orb")i.appendChild(g("circle",{r:7,fill:"#173343"})),i.appendChild(g("circle",{cx:-1,cy:-1.5,r:5.6})),i.appendChild(g("ellipse",{cx:-2,cy:-3.5,rx:2.5,ry:1.6,fill:"#fff",opacity:0.85}));else if(e==="envelope")i.appendChild(g("path",{d:"M-8-5 8-2 8 6-8 3Z",fill:"#142e3c",stroke:n,"stroke-width":1})),i.appendChild(g("path",{d:"M-8-5 8-2 0 2Z"})),i.appendChild(g("path",{d:"M-7-4 0 1 7-1",fill:"none",stroke:"#f0ffff","stroke-width":0.8,opacity:0.8}));else i.appendChild(g("path",{d:"M-8-2 0-6 8-2 0 2Z"})),i.appendChild(g("path",{d:"M-8-2 0 2 0 7-8 3Z",fill:"#183544",stroke:n,"stroke-width":0.6})),i.appendChild(g("path",{d:"M0 2 8-2 8 3 0 7Z",opacity:0.65})),i.appendChild(g("path",{d:"M-6-2 0-5 6-2",fill:"none",stroke:"#fff","stroke-width":0.9,opacity:0.85}));return i}function je(e,t,n,i){if(i)for(let o of e.querySelectorAll(".iso-message"))e.removeChild(o);let r=t.message;if(!r||r.enabled===!1)return;if(i){let o=r.count??1,s=r.duration??1800;for(let a=0;a<o;a++){let l=g("g",{class:"iso-message","aria-hidden":"true","data-kind":r.kind??"packet"});l.style.animationDuration=`${s}ms`,l.style.animationDelay=`${-s*a/o}ms`,l.appendChild(zt(r.kind??"packet",r.size??10,r.color??t.style.stroke)),e.appendChild(l)}}for(let o of e.querySelectorAll(".iso-message"))o.style.offsetPath=`path("${n}")`,o.style.opacity=String(t.style.opacity),o.style.animationDirection=t.direction==="reverse"?"reverse":"normal",o.style.display=t.presence==="removed"?"none":""}function fe(e,t,n){for(let u of e.querySelectorAll(".iso-activity"))e.removeChild(u);if(e.setAttribute("data-activity",t?.state??"idle"),!t||t.state==="idle")return;let i=t.state,r=t.color??{processing:"#67e8f9",waiting:"#fbbf24",complete:"#6ee7b7",error:"#fb7185"}[i],o=g("g",{class:`iso-activity iso-activity-${i}`,color:r,"aria-label":i,"pointer-events":"none"}),s=n*0.36,a=g("ellipse",{cx:0,cy:-2,rx:s,ry:s*0.42,fill:r,"fill-opacity":0.08,stroke:r,"stroke-opacity":0.6,"stroke-width":1.3,class:"iso-activity-ring"});o.appendChild(a);let l=g("g",{transform:`translate(${n*0.29} ${-n*0.6})`,class:"iso-activity-badge"});l.appendChild(g("circle",{r:6,fill:"#102330",stroke:r,"stroke-width":1}));let c={processing:"M-2 0h4M0-2v4",waiting:"M-2-2v4M2-2v4",complete:"M-3 0-1 2 3-2",error:"M0-3v3M0 2v.5"}[i];l.appendChild(g("path",{d:c,fill:"none",stroke:r,"stroke-width":1.5,"stroke-linecap":"round","stroke-linejoin":"round"})),o.appendChild(l),e.appendChild(o)}var $t=/^--[a-zA-Z0-9-_]+$/;function Ke(e,t){for(let[n,i]of Object.entries(t)){if(!$t.test(n))throw new d("INVALID_THEME_VAR",`Invalid CSS custom property name: ${n}`);e.style.setProperty(n,i)}}var v="http://www.w3.org/2000/svg",et="text",Ut=new Set(["rectangle","circle","polygon","line"]),jt={dashed:[12,8],dotted:[0,8]},ye=0.14,ge=0.35,Kt=0.28,tt=0.4;function nt(e,t,n){let i=te(t),r=t.scenes[0],o=an(t),s=cn(t),a=new Map((r?.elements??[]).map((p)=>[p.id,p])),l=new Map((r?.connectors??[]).map((p)=>[p.id,p])),c=en(i,n?.label,t.className),u=le(t);c._assetResolver=u,c.appendChild(tn()),Ke(c,{...J(t.theme)??{},...t.themeVars??{},...n?.themeVars??{}});let h=on(t.layers),S=rn(h);if(t.floor.visible)c.appendChild(nn(t,i));let _=new Map;for(let p of s){let N=l.get(p.id)??{...p,presence:"removed"},E=mn(N,i);if(N.presence==="removed")E.isHidden=!0,V(E.node);yt(E,N.ambient??[]),c.appendChild(E.node),_.set(p.id,E)}let y=document.createElementNS(v,"g");y.classList.add("iso-depth-layer"),y.setAttribute("data-layer","depth"),c.appendChild(y);let m=document.createElementNS(v,"g");m.classList.add("iso-layer","iso-layer-labels"),m.setAttribute("data-layer","labels"),c.appendChild(m);let A=new Map,X=mt(o);for(let p of X){if(!S.get(p.layer))throw new d("MISSING_LAYER",`Unknown layer for "${p.id}": ${p.layer}`);let E=a.get(p.id)??{...p,presence:"removed"},w=ln(E,i,u);if(w.anchor=ct(t,E),w.node.classList.add(`iso-layer-${p.layer}`),w.node.setAttribute("data-layer",p.layer),E.presence==="removed")w.isHidden=!0,V(w.node);gt(w,E.ambient??[]),(K(p.asset)?m:y).appendChild(w.node),A.set(p.id,w)}return c._layerMap=S,c._elementMap=A,c._connectorMap=_,c._depthGroup=y,e.appendChild(c),c}function it(e,t,n=[]){let i=e._layout;if(!i)return;let r=e._elementMap;if(r){for(let s of t){let a=r.get(s.id);if(!a)continue;let l=a.current;if(a.current=s,!qe(l,s))un(a.node,s,i,e._assetResolver),a.anchor=e._assetResolver?.(s.asset)?.anchor??[0.5,1];if(!qe(l,s)||!Y(l.activity,s.activity))fe(a.node,s.activity,i.cellSize);ht(a.node,s,i),gt(a,s.ambient??[])}if(e._depthGroup)sn(e._depthGroup,r)}let o=e._connectorMap;if(!o)return;for(let s of n){let a=o.get(s.id);if(!a)continue;pt(a,s,i)}}function B(e,t){return e._elementMap?.get(t)}function rt(e,t){return e._connectorMap?.get(t)}function L(e){return te(e).viewBox}function ot(e){let t=te(e);return{cellSize:t.cellSize,padding:t.padding,selectedBounds:t.selectedBounds}}function ee(e,t){let n=e._layout,i=e._elementMap?.get(t);if(!n||!i||i.current.presence==="removed")return;return ut(qt(i.current,n,i.anchor))}function ve(e,t){let n=te(e),[i,r]=t.at,[o,s]=t.size,a=ne();for(let l of[[i,r],[i+o,r],[i,r+s],[i+o,r+s]]){let c=M(l[0],l[1],n.cellSize,n.selectedBounds.minX,n.selectedBounds.minY,n.padding.x,n.padding.y);a=be(a,c.screenX,c.screenY)}return ut(a)}function st(e,t){e.setAttribute("viewBox",`${t.minX} ${t.minY} ${t.width} ${t.height}`)}function V(e){e.classList.add("iso-motion-paused"),e.style.visibility="hidden",e.style.pointerEvents="none"}function H(e){e.classList.remove("iso-motion-paused"),e.style.visibility="visible",e.style.pointerEvents="auto"}function te(e){let t=e.grid.cellSize,n=e.layout.padding,i=Ht(e,t),r=Jt(e,t),o=Qt(e.layout.bounds,i,r),s=o.maxX-o.minX+n.x*2,a=o.maxY-o.minY+n.y*2,l={minX:0,minY:0,width:O(s||t),height:O(a||t)};return{cellSize:t,padding:n,contentBounds:i,floorBounds:r,selectedBounds:o,viewBox:l}}function Ht(e,t){let n=ne();for(let i of e.scenes){for(let r of i.elements??[]){if(r.presence==="removed")continue;n=Q(n,Wt(e,r,t))}for(let r of i.connectors??[]){if(r.presence==="removed")continue;n=Q(n,Zt(r,t))}}return lt(n,t)}function Wt(e,t,n){let{rawX:i,rawY:r}=G(t.pos[0]+t.size,t.pos[1]+t.size,n),o=D(t.size,n),[s,a]=ct(e,t);return at({minX:i-o*s,minY:r-o*a,maxX:i+o*(1-s),maxY:r+o*(1-a)},t,i,r,o)}function qt(e,t,n){let i=M(e.pos[0]+e.size,e.pos[1]+e.size,t.cellSize,t.selectedBounds.minX,t.selectedBounds.minY,t.padding.x,t.padding.y),r=D(e.size,t.cellSize);return at({minX:i.screenX-r*n[0],minY:i.screenY-r*n[1],maxX:i.screenX+r*(1-n[0]),maxY:i.screenY+r*(1-n[1])},e,i.screenX,i.screenY,r)}function at(e,t,n,i,r){if(!t.activity||t.activity.state==="idle")return e;return Q(e,{minX:n-r*0.4,maxX:n+r*0.4,minY:i-r*0.72,maxY:i+r*0.18})}function ct(e,t){return e.assets?.[t.asset]?.anchor??[0.5,1]}function Zt(e,t){let n=ne();for(let[s,a]of e.route){let{rawX:l,rawY:c}=G(s,a,t);n=be(n,l,c)}let i=Math.max(ge,tt,ye*2)*t,r=e.style.strokeWidth/2+(e.style.outlineWidth??0),o=i+r+(e.style.glow?(e.style.glowWidth??8)/2:0)+(e.message?.size??0)/2;return{minX:n.minX-o,minY:n.minY-o,maxX:n.maxX+o,maxY:n.maxY+o}}function Jt(e,t){let n=e.floor.origin,[i,r]=e.floor.size,o=[n,[n[0]+i,n[1]],[n[0],n[1]+r],[n[0]+i,n[1]+r]],s=ne();for(let[a,l]of o){let{rawX:c,rawY:u}=G(a,l,t);s=be(s,c,u)}return lt(s,t)}function Qt(e,t,n){if(e==="content")return t;if(e==="floor")return n;return Q(t,n)}function ne(){return{minX:Number.POSITIVE_INFINITY,minY:Number.POSITIVE_INFINITY,maxX:Number.NEGATIVE_INFINITY,maxY:Number.NEGATIVE_INFINITY}}function lt(e,t){if(Number.isFinite(e.minX))return e;return{minX:0,minY:0,maxX:t,maxY:t}}function ut(e){let t=(e.minX+e.maxX)/2,n=(e.minY+e.maxY)/2,i=Math.max(1,e.maxX-e.minX),r=Math.max(1,e.maxY-e.minY);return{minX:O(t-i/2),minY:O(n-r/2),width:O(i),height:O(r)}}function be(e,t,n){return{minX:Math.min(e.minX,t),minY:Math.min(e.minY,n),maxX:Math.max(e.maxX,t),maxY:Math.max(e.maxY,n)}}function Q(e,t){return{minX:Math.min(e.minX,t.minX),minY:Math.min(e.minY,t.minY),maxX:Math.max(e.maxX,t.maxX),maxY:Math.max(e.maxY,t.maxY)}}function O(e){return Math.round(e*1000)/1000}function en(e,t,n){let i=document.createElementNS(v,"svg");i.classList.add("iso-scene");for(let r of n?.trim().split(/\s+/)??[])if(r)i.classList.add(r);if(i.setAttribute("width","100%"),i.setAttribute("height","100%"),i.setAttribute("viewBox",`${e.viewBox.minX} ${e.viewBox.minY} ${e.viewBox.width} ${e.viewBox.height}`),i.setAttribute("preserveAspectRatio","xMidYMid meet"),i.style.width="100%",i.style.height="100%",i.style.display="block",t)i.setAttribute("role","img"),i.setAttribute("aria-label",t);else i.setAttribute("aria-hidden","true");return i._layout=e,i._viewBoxW=e.viewBox.width,i._viewBoxH=e.viewBox.height,i}function tn(){let e=document.createElementNS(v,"style");return e.textContent=De(),e}function nn(e,t){let n=document.createElementNS(v,"g");n.classList.add("iso-floor-grid",`iso-layer-${e.floor.layer}`),n.setAttribute("data-layer",e.floor.layer);let[i,r]=e.floor.origin,[o,s]=e.floor.size,a=[b(i,r,t),b(i+o,r,t),b(i+o,r+s,t),b(i,r+s,t)],l=document.createElementNS(v,"polygon");l.classList.add("iso-floor-slab"),l.setAttribute("points",a.map(Se).join(" ")),l.setAttribute("fill","#dbe6f4"),l.setAttribute("fill-opacity","0.22"),l.setAttribute("stroke","#b9c9df"),l.setAttribute("stroke-width","1"),n.appendChild(l);for(let c=0;c<=o;c++)n.appendChild(He(b(i+c,r,t),b(i+c,r+s,t)));for(let c=0;c<=s;c++)n.appendChild(He(b(i,r+c,t),b(i+o,r+c,t)));return n}function He(e,t){let n=document.createElementNS(v,"line");return n.setAttribute("x1",String(e.x)),n.setAttribute("y1",String(e.y)),n.setAttribute("x2",String(t.x)),n.setAttribute("y2",String(t.y)),n.setAttribute("stroke","#2563eb"),n.setAttribute("stroke-width","1"),n.setAttribute("stroke-dasharray","5 5"),n.setAttribute("stroke-opacity","0.2"),n}function b(e,t,n){let i=M(e,t,n.cellSize,n.selectedBounds.minX,n.selectedBounds.minY,n.padding.x,n.padding.y);return{x:i.screenX,y:i.screenY}}function Se(e){return`${e.x},${e.y}`}function rn(e){return new Map(e.map((t)=>[t.name,t]))}function on(e){return[...e].map((t,n)=>({name:t.name,order:t.order??n})).sort((t,n)=>t.order-n.order||t.name.localeCompare(n.name))}function mt(e){return e.slice().sort((t,n)=>{let i=We(t)-We(n);if(i!==0)return i;let r=t.pos[0]+t.pos[1]-(n.pos[0]+n.pos[1]);if(r!==0)return r;return t.id.localeCompare(n.id)})}function We(e){if(K(e.asset))return 1;return 0}function sn(e,t){let n=[];for(let s of t.values()){if(s.node.parentElement!==e)continue;n.push(s.current)}if(n.length<2)return;let i=mt(n),r=[...e.childNodes],o=r.length===i.length;if(o)for(let s=0;s<i.length;s++){let a=i[s]?.id;if(r[s]?.getAttribute("data-id")!==a){o=!1;break}}if(o)return;for(let s of i){let a=t.get(s.id);if(a)e.appendChild(a.node)}}function an(e){let t=new Map;for(let n of e.scenes)for(let i of n.elements??[])if(!t.has(i.id)||t.get(i.id)?.presence==="removed")t.set(i.id,i);return[...t.values()]}function cn(e){let t=new Map;for(let n of e.scenes)for(let i of n.connectors??[])if(!t.has(i.id)||t.get(i.id)?.presence==="removed")t.set(i.id,i);return[...t.values()]}function ln(e,t,n){let i=e.asset===et?ue(e.text,e.asset,t.cellSize):_e(e.asset)?me(e.asset,e.primitive,t.cellSize):dt(e,n,t.cellSize);i.classList.add("iso-element",`iso-element-${e.id}`),i.setAttribute("data-id",e.id),i.setAttribute("data-asset",e.asset),i.style.overflow="visible",i.style.pointerEvents="auto",ht(i,e,t),fe(i,e.activity,t.cellSize);let r=e.enter;if(r&&r!=="none"&&e.presence!=="removed"){let o=`iso-anim-${r}`;I(i,o,"enter");let s=i.style.animation;return i.addEventListener("animationend",()=>{if(i.style.animation===s)i.style.animation=""},{once:!0}),{node:i,current:e,anchor:[0.5,1],isHidden:!1,entryKey:r,ambient:new Set}}return{node:i,current:e,anchor:[0.5,1],isHidden:!1,ambient:new Set}}function K(e){return e===et}function _e(e){return Ut.has(e)}function dt(e,t,n){let i=t(e.asset);if(!i)throw new d("ASSET_NOT_FOUND",`Asset not found: ${e.asset}`,{asset:e.asset,elementId:e.id});return Ye(i,e.asset,n)}function un(e,t,n,i){let r=K(t.asset)?ue(t.text,t.asset,n.cellSize):_e(t.asset)?me(t.asset,t.primitive,n.cellSize):dt(t,i??le(),n.cellSize);e.setAttribute("data-asset",t.asset),dn(e);while(r.firstChild){let o=r.firstChild;r.removeChild(o),e.appendChild(o)}}function qe(e,t){if(!e)return!1;if(e.asset!==t.asset)return!1;if(!K(t.asset)&&!_e(t.asset))return!0;if(K(t.asset))return Y(e.text,t.text);return Y(e.primitive,t.primitive)}function Y(e,t){if(e===t)return!0;if(typeof e!==typeof t)return!1;if(e===null||t===null||typeof e!=="object"||typeof t!=="object")return!1;if(Array.isArray(e)||Array.isArray(t)){if(!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length)return!1;return e.every((r,o)=>Y(r,t[o]))}let n=Object.keys(e),i=Object.keys(t);if(n.length!==i.length)return!1;return n.every((r)=>Y(e[r],t[r]))}function mn(e,t){let n=document.createElementNS(v,"g"),i=document.createElementNS(v,"path");n.appendChild(i);let r={node:n,shaft:i,isHidden:!1,ambient:new Set};pt(r,e,t);let o=e.enter;if(o&&o!=="none"&&e.presence!=="removed"){I(n,`iso-anim-${o}`,"enter");let s=n.style.animation;n.addEventListener("animationend",()=>{if(n.style.animation===s)n.style.animation=""},{once:!0})}return r}function pt(e,t,n){let i=e.previous,r=!i||!pn(i.route,t.route),o=!i||!fn(i.style,t.style),s=!i||he(i)!==he(t)||i.style.variant!==t.style.variant||i.style.lane!==t.style.lane||i.start!==t.start||i.end!==t.end||i.route.length!==t.route.length;hn(e.node,t,i);let a=r||s||o,l=a?gn(t.route,n,t.style.cornerRadius??0):e.shaft.getAttribute("d")??"";if(s){if(e.outline)e.node.removeChild(e.outline);if(e.outline=void 0,he(t)){let c=document.createElementNS(v,"path");c.classList.add("iso-connector-outline"),j(c,t,l,{stroke:t.style.outline??t.style.stroke,strokeWidth:t.style.strokeWidth+t.style.outlineWidth*2,includeDash:!1}),e.node.insertBefore(c,e.shaft),e.outline=c}}else if(e.outline&&a)j(e.outline,t,l,{stroke:t.style.outline??t.style.stroke,strokeWidth:t.style.strokeWidth+t.style.outlineWidth*2,includeDash:!1});if(!e.shaft.parentNode)e.node.appendChild(e.shaft);if(e.shaft.classList.add("iso-connector-shaft"),a)j(e.shaft,t,l,{stroke:t.style.stroke,strokeWidth:t.style.strokeWidth,includeDash:!0});if(s){if(e.lane)e.node.removeChild(e.lane);if(e.lane=void 0,t.style.variant==="road"&&t.style.lane==="center-dashed"){let c=document.createElementNS(v,"path");c.classList.add("iso-connector-lane"),j(c,t,l,{stroke:"#ffffff",strokeWidth:Math.max(1,t.style.strokeWidth*0.12),includeDash:!1}),c.setAttribute("stroke-dasharray","8 8"),e.node.appendChild(c),e.lane=c}}else if(e.lane&&a)j(e.lane,t,l,{stroke:"#ffffff",strokeWidth:Math.max(1,t.style.strokeWidth*0.12),includeDash:!1}),e.lane.setAttribute("stroke-dasharray","8 8");if(a){if(e.startEndpoint)e.node.removeChild(e.startEndpoint);if(e.endEndpoint)e.node.removeChild(e.endEndpoint);e.startEndpoint=Ze(e.node,t,"start",n),e.endEndpoint=Ze(e.node,t,"end",n)}if(a)Ue(e.node,e.shaft,t,l);je(e.node,t,l,!i||!Y(i.message,t.message)||i.style.stroke!==t.style.stroke),yt(e,t.ambient??[]),e.previous=t}function dn(e){while(e.firstChild)e.removeChild(e.firstChild)}function pn(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;return e.every((n,i)=>{let r=t[i];return r!==void 0&&n[0]===r[0]&&n[1]===r[1]})}function fn(e,t){if(e===t)return!0;return e.variant===t.variant&&e.pattern===t.pattern&&e.stroke===t.stroke&&e.strokeWidth===t.strokeWidth&&e.opacity===t.opacity&&e.outline===t.outline&&e.outlineWidth===t.outlineWidth&&e.lane===t.lane&&e.cornerRadius===t.cornerRadius&&e.glow===t.glow&&e.glowWidth===t.glowWidth&&(e.dash??[]).join(",")===(t.dash??[]).join(",")}function hn(e,t,n){let i=["iso-connector",`iso-connector-${t.id}`,`iso-connector-variant-${t.style.variant}`,`iso-connector-pattern-${t.style.pattern}`,`iso-connector-direction-${t.direction}`,`iso-layer-${t.layer}`];if(!n)e.classList.add(...i);else{let r=["iso-connector",`iso-connector-${n.id}`,`iso-connector-variant-${n.style.variant}`,`iso-connector-pattern-${n.style.pattern}`,`iso-connector-direction-${n.direction}`,`iso-layer-${n.layer}`];for(let o of r)if(!i.includes(o))e.classList.remove(o);for(let o of i)if(!r.includes(o))e.classList.add(o)}e.setAttribute("data-id",t.id),e.setAttribute("data-layer",t.layer),e.style.overflow="visible",e.style.pointerEvents="auto"}function he(e){return Boolean(e.style.outline&&e.style.outlineWidth>0)}function j(e,t,n,i){if(e.setAttribute("d",n),e.setAttribute("fill","none"),e.setAttribute("stroke",i.stroke),e.setAttribute("stroke-width",String(i.strokeWidth)),e.setAttribute("stroke-linecap","round"),e.setAttribute("stroke-linejoin","round"),e.setAttribute("opacity",String(t.style.opacity)),i.includeDash&&t.style.pattern!=="solid"){let r=t.style.dash??jt[t.style.pattern];e.setAttribute("stroke-dasharray",r.join(" "))}else e.setAttribute("stroke-dasharray","none")}function gn(e,t,n){return $e(e.map(([i,r])=>b(i,r,t)),n)}function Ze(e,t,n,i){let r=t[n];if(r==="none"||t.route.length<2)return;let o=yn(r,t,n,i);return o.classList.add(`iso-connector-${n}`),e.appendChild(o),o}function yn(e,t,n,i){switch(e){case"arrow":return vn(t,n,i);case"dot":return Je(t,n,i,!0);case"circle":return Je(t,n,i,!1);case"diamond":return bn(t,n,i);case"bar":return Sn(t,n,i);case"none":throw new d("CONNECTOR_ENDPOINT_NONE","Cannot create geometry for endpoint none")}}function vn(e,t,n){let i=ie(e,t),r=ft(e,t),o=[-r[1],r[0]],s=[i[0]-r[0]*ge,i[1]-r[1]*ge],a=Kt/2,l=[i,[s[0]+o[0]*a,s[1]+o[1]*a],[s[0]-o[0]*a,s[1]-o[1]*a]].map((u)=>b(u[0],u[1],n)),c=document.createElementNS(v,"polygon");return c.setAttribute("points",l.map(Se).join(" ")),c.setAttribute("fill",e.style.stroke),c.setAttribute("opacity",String(e.style.opacity)),c}function Je(e,t,n,i){let r=ie(e,t),o=b(r[0],r[1],n),s=document.createElementNS(v,"circle");return s.setAttribute("cx",String(o.x)),s.setAttribute("cy",String(o.y)),s.setAttribute("r",String(ye*n.cellSize)),s.setAttribute("stroke",e.style.stroke),s.setAttribute("stroke-width",String(Math.max(1,e.style.strokeWidth))),s.setAttribute("opacity",String(e.style.opacity)),s.setAttribute("fill",i?e.style.stroke:"none"),s}function bn(e,t,n){let i=ie(e,t),r=ye,o=[[i[0],i[1]-r],[i[0]+r,i[1]],[i[0],i[1]+r],[i[0]-r,i[1]]],s=document.createElementNS(v,"polygon");return s.setAttribute("points",o.map((a)=>b(a[0],a[1],n)).map(Se).join(" ")),s.setAttribute("fill",e.style.stroke),s.setAttribute("opacity",String(e.style.opacity)),s}function Sn(e,t,n){let i=ie(e,t),r=ft(e,t),o=[-r[1],r[0]],s=tt/2,a=b(i[0]+o[0]*s,i[1]+o[1]*s,n),l=b(i[0]-o[0]*s,i[1]-o[1]*s,n),c=document.createElementNS(v,"line");return c.setAttribute("x1",String(a.x)),c.setAttribute("y1",String(a.y)),c.setAttribute("x2",String(l.x)),c.setAttribute("y2",String(l.y)),c.setAttribute("stroke",e.style.stroke),c.setAttribute("stroke-width",String(Math.max(1,e.style.strokeWidth))),c.setAttribute("stroke-linecap","round"),c.setAttribute("opacity",String(e.style.opacity)),c}function ie(e,t){return t==="start"?e.route[0]:e.route[e.route.length-1]}function ft(e,t){let n=t==="start"?Qe(e.route[0],e.route[1]):Qe(e.route[e.route.length-2],e.route[e.route.length-1]),i=e.direction==="reverse"?[-n[0],-n[1]]:n;return _n(i)}function Qe(e,t){return[t[0]-e[0],t[1]-e[1]]}function _n(e){let t=Math.hypot(e[0],e[1]);if(t===0)return[1,0];return[e[0]/t,e[1]/t]}function ht(e,t,n){let i=M(t.pos[0]+t.size,t.pos[1]+t.size,n.cellSize,n.selectedBounds.minX,n.selectedBounds.minY,n.padding.x,n.padding.y),o=D(t.size,n.cellSize)/n.cellSize;e.setAttribute("transform",`translate(${i.screenX} ${i.screenY}) scale(${o})`)}function gt(e,t){let n=new Set((t??[]).map((i)=>i.name));for(let i of e.ambient)if(!n.has(i))e.node.classList.remove(`iso-ambient-${i}`);for(let i of n)if(!e.ambient.has(i))e.node.classList.add(`iso-ambient-${i}`);e.ambient=n}function yt(e,t){let n=new Set((t??[]).map((i)=>i.name));for(let i of e.ambient)if(!n.has(i))e.shaft.classList.remove(`iso-ambient-${i}`);for(let i of n)e.shaft.classList.add(`iso-ambient-${i}`);e.ambient=n}function I(e,t,n="enter"){e.style.opacity="1",e.style.animation="none",e.getBoundingClientRect();let i=n==="exit"?"var(--iso-anim-duration-exit, 300ms)":"var(--iso-anim-duration-enter, 400ms)",r=n==="exit"?"var(--iso-anim-easing-exit, ease-in)":"var(--iso-anim-easing-enter, ease-out)";e.style.animation=`${t} ${i} ${r} forwards`}function En(e){return e}function xn(e){return e*e*e}function Cn(e){return 1-(1-e)**3}function An(e){return e<0.5?4*e*e*e:1-(-2*e+2)**3/2}function Ee(e){switch(e){case"linear":return En;case"easeInCubic":return xn;case"easeOutCubic":return Cn;case"easeInOutCubic":return An}}var vt={scrollDirection:"vertical",scrollOffset:{},minProgress:0,maxProgress:1,keyboardControls:!1,touchControls:!1,scrollSensitivity:1,transitionDuration:600,transitionEasing:"ease-in-out"};class xe{_engine=new F;_bundle=null;_sceneIndex=0;_progress=0;_paused=!1;_config=vt;_container=null;_sceneElement=null;_ownsEngine=!0;_rafId=null;_pendingProgress=null;_destroyed=!1;_listeners=new Map;_cameraAnim=null;_cameraState=null;_minScroll=0;_maxScroll=0;_lastTouchY=0;_lastTouchX=0;_isDragging=!1;_transitionAnim=null;_backward=!1;get engine(){return this._engine}get progress(){return this._progress}getProgress(){return this._assertNotDestroyed(),this._progress}get sceneIndex(){return this._sceneIndex}getSceneIndex(){return this._assertNotDestroyed(),this._sceneIndex}get scenes(){return this._bundle?.scenes??[]}get paused(){return this._paused}get currentScene(){return this.scenes[this._sceneIndex]}init(e,t={},n={}){if(this._assertNotDestroyed(),!e.scenes||e.scenes.length===0)throw new f("CONTROLLER_NO_SCENES","init() requires at least one compiled scene stop");this._cancelFrame(),this._bundle=e,this._engine=n.engine??new F,this._ownsEngine=!n.engine,this._sceneIndex=0,this._progress=0,this._paused=!1,this._config={...vt,...t},this._sceneElement=n.sceneElement??t.sceneElement??null,this._cameraState={viewBox:L(e),target:{type:"reset"},isZoomed:!1},this._engine.init(e),this._bindScroll()}setProgress(e){if(this._assertNotDestroyed(),!Number.isFinite(e))throw new f("CONTROLLER_PROGRESS_OUT_OF_RANGE","setProgress() requires a finite progress value");this._cancelTransition(),this._setProgress(e)}_setProgress(e){let t=Math.max(0,Math.min(1,e));if(t===this._progress&&!this._paused&&this._rafId!==null)return;if(this._progress=t,this._cancelCameraAnimation(),this._paused)return;this._scheduleProgressForward(t)}nextScene(){if(this._assertNotDestroyed(),this.scenes.length<=1)return;let e=(this._sceneIndex+1)%this.scenes.length;this._transitionToScene(e)}prevScene(){if(this._assertNotDestroyed(),this.scenes.length<=1)return;let e=(this._sceneIndex-1+this.scenes.length)%this.scenes.length;this._transitionToScene(e)}setSceneIndex(e){if(this._assertNotDestroyed(),e<0||e>=this.scenes.length)throw new f("CONTROLLER_SCENE_INDEX_OUT_OF_RANGE",`Scene index ${e} is out of bounds [0, ${this.scenes.length-1}]`);this._transitionToScene(e)}pause(){if(this._assertNotDestroyed(),this._paused)return;this._paused=!0,this._cancelFrame(),this._cancelTransition(),this._engine.pause(),this._applyPauseState(!0),this._emit("paused")}resume(){if(this._assertNotDestroyed(),!this._paused)return;this._paused=!1,this._engine.resume(),this._applyPauseState(!1),this._scheduleProgressForward(this._progress),this._emit("resumed")}isPaused(){return this._assertNotDestroyed(),this._paused}zoomToElement(e,t={}){this._assertNotDestroyed();let n=this._getSceneSvg();if(!this._bundle||!n)throw new f("CAMERA_NOT_INITIALIZED","zoomToElement() requires an initialized scene SVG");let i=ee(n,e);if(!i){if(B(n,e))throw new f("CAMERA_TARGET_NOT_VISIBLE",`Camera target element "${e}" is currently removed`,{elementId:e});throw new f("CAMERA_TARGET_NOT_FOUND",`Camera target element "${e}" was not found`,{elementId:e})}this._applyCameraDestination(re(i,this._resolveCameraPadding(t)),{type:"element",id:e},t)}zoomToArea(e,t={}){if(this._assertNotDestroyed(),!this._bundle||!this._getSceneSvg())throw new f("CAMERA_NOT_INITIALIZED","zoomToArea() requires an initialized scene SVG");this._assertValidCameraArea(e);let n=ve(this._bundle,e);this._applyCameraDestination(re(n,this._resolveCameraPadding(t)),{type:"area",at:[...e.at],size:[...e.size]},t)}resetZoom(e={}){if(this._assertNotDestroyed(),!this._bundle||!this._getSceneSvg())throw new f("CAMERA_NOT_INITIALIZED","resetZoom() requires an initialized scene SVG");this._applyCameraDestination(L(this._bundle),{type:"reset"},e)}getCameraState(){if(this._assertNotDestroyed(),!this._cameraState)throw new f("CAMERA_NOT_INITIALIZED","Camera state is not initialized");return Mn(this._cameraState)}destroy(){if(this._assertNotDestroyed(),this._unbindScroll(),this._cancelFrame(),this._cancelTransition(),this._cancelCameraAnimation(),this._getSceneSvg()?.classList.add("iso-motion-stopped"),this._ownsEngine)this._engine.destroy();this._listeners.clear(),this._bundle=null,this._container=null,this._pendingProgress=null,this._cameraState=null,this._destroyed=!0}on(e,t){this._assertNotDestroyed();let n=this._listeners.get(e)??new Set;n.add(t),this._listeners.set(e,n)}off(e,t){this._assertNotDestroyed();let n=this._listeners.get(e);if(n)n.delete(t)}_emit(e,...t){let n=this._listeners.get(e);if(n)for(let i of n)try{i(...t)}catch(r){queueMicrotask(()=>{throw r})}}_scheduleProgressForward(e){if(this._pendingProgress=e,this._rafId!==null)return;this._rafId=requestAnimationFrame(()=>{this._rafId=null;let t=this._pendingProgress;if(this._pendingProgress=null,t===null||this._paused||this._destroyed)return;this._backward=t<this._engine.getProgress(),this._engine.setProgress(t),this._applyFrameUpdate(),this._emit("progress-change",t)})}_cancelFrame(){if(this._rafId!==null)cancelAnimationFrame(this._rafId),this._rafId=null;this._pendingProgress=null}_applyFrameUpdate(){if(!this._bundle)return;let e=this._sceneElement??this._container?.querySelector("svg")??null;if(!e)return;let t=this._engine.getFrameUpdates().map((i)=>({id:i.id,asset:i.asset,pos:i.pos,size:i.size,layer:i.layer,presence:i.lifecycle,enter:i.entry,exit:i.exit,ambient:i.ambient,text:i.text,primitive:i.primitive,activity:i.activity})),n=this._engine.getConnectorFrameUpdates().map((i)=>({id:i.id,route:i.route,layer:i.layer,presence:i.lifecycle,style:i.style,start:i.start,end:i.end,direction:i.direction,message:i.message,enter:i.entry,exit:i.exit,ambient:i.ambient}));it(e,t,n),this._applyLifecycleChanges(t),this._applyConnectorLifecycleChanges(n),this._applyCameraForProgress(this._progress)}_applyCameraForProgress(e){let t=this._getSceneSvg();if(!this._bundle||!t)return;let n=this.scenes;if(n.length===0)return;let{previous:i,next:r}=wn(n,e),o=this._effectiveCameraAt(i.index),s=this._effectiveCameraAt(r.index),a=this._resolveCameraViewBox(o,{forInterpolation:!0}),l=this._resolveCameraViewBox(s,{forInterpolation:!0}),c=r.scene.progress-i.scene.progress,u=c<=0?0:(e-i.scene.progress)/c,h=wt(s.easing)(Math.max(0,Math.min(1,u))),S=At(a,l,h),_=h<1?o.target:s.target;this._setCameraViewBox(t,S,_)}_effectiveCameraAt(e){for(let t=e;t>=0;t--){let n=this.scenes[t]?.camera;if(n)return{target:n.target,padding:n.padding,duration:n.duration,easing:n.easing}}return{target:{type:"reset"}}}_resolveCameraViewBox(e,t={}){if(!this._bundle)throw new f("CAMERA_NOT_INITIALIZED","Camera requires an initialized bundle");if(e.target.type==="reset")return L(this._bundle);if(e.target.type==="area")return re(ve(this._bundle,{at:e.target.at,size:e.target.size}),e.padding??32);let n=this._getSceneSvg();if(!n)throw new f("CAMERA_NOT_INITIALIZED","Camera requires an initialized scene SVG");let i=t.forInterpolation?this._resolveElementBoundsForInterpolation(n,e.target.id):ee(n,e.target.id);if(!i)throw new f("CAMERA_TARGET_NOT_FOUND",`Camera target element "${e.target.id}" was not found`,{elementId:e.target.id});return re(i,e.padding??32)}_resolveElementBoundsForInterpolation(e,t){let n=ee(e,t);if(n)return n;let i=B(e,t);if(!i||!this._bundle)return;let r=ot(this._bundle),o=i.current,s=M(o.pos[0]+o.size,o.pos[1]+o.size,r.cellSize,r.selectedBounds.minX,r.selectedBounds.minY,r.padding.x,r.padding.y),a=D(o.size,r.cellSize),[l,c]=i.anchor;return{minX:C(s.screenX-a*l),minY:C(s.screenY-a*c),width:C(Math.max(1,a)),height:C(Math.max(1,a))}}_applyCameraDestination(e,t,n){let i=this._getSceneSvg();if(!i)throw new f("CAMERA_NOT_INITIALIZED","Camera requires an initialized scene SVG");this._cancelCameraAnimation();let r=this._resolveCameraDuration(n);if(r===0){this._setCameraViewBox(i,e,t);return}let o=Tn(i)??this._cameraState?.viewBox??e,s=wt(n.easing??this._config.transitionEasing),a=performance.now(),l=(c)=>{let u=Math.min((c-a)/r,1);if(this._setCameraViewBox(i,At(o,e,s(u)),t),u<1)this._cameraAnim=requestAnimationFrame(l);else this._cameraAnim=null};this._cameraAnim=requestAnimationFrame(l)}_setCameraViewBox(e,t,n){st(e,t);let i=this._bundle?L(this._bundle):t;this._cameraState={viewBox:t,target:n,isZoomed:!Rn(t,i)},this._emit("camera-change",this.getCameraState())}_getSceneSvg(){return this._sceneElement??this._container?.querySelector("svg")??null}_resolveCameraPadding(e){let t=e.padding??32;if(!Number.isFinite(t)||t<0||t>2048)throw new f("INVALID_CAMERA_OPTIONS","Camera padding must be between 0 and 2048");return t}_resolveCameraDuration(e){let t=e.duration??this._config.transitionDuration;if(!Number.isInteger(t)||t<0||t>1e4)throw new f("INVALID_CAMERA_OPTIONS","Camera duration must be an integer from 0 to 10000");return t}_assertValidCameraArea(e){if(!Array.isArray(e.at)||e.at.length!==2||!e.at.every((t)=>Number.isFinite(t)&&t>=0)||!Array.isArray(e.size)||e.size.length!==2||!e.size.every((t)=>Number.isFinite(t)&&t>0))throw new f("INVALID_CAMERA_OPTIONS","Camera area must use non-negative at and positive size")}_applyLifecycleChanges(e){for(let t of e){let n=this._engine.getLifecycleTransition(t.id);if(!n)continue;let i=this._sceneElement??this._container?.querySelector("svg");if(!i)continue;let r=B(i,t.id);if(!r)continue;if(n.to==="entering"||n.to==="present")r.isHidden=!1,H(r.node);if(bt(n,this._backward))this._applyEntryAnimation(t,r);if(_t(n,this._backward)){this._applyExitAnimation({...t,exit:xt(t.enter??"fade-in")},r);continue}if(St(n,this._backward)){this._applyExitAnimation(t,r);continue}if(Et(n,this._backward)){r.isHidden=!1,H(r.node),this._applyEntryAnimation({...t,enter:Ct(t.exit??"fade-out")},r);continue}if(n.to==="removed")r.isHidden=!0,V(r.node)}}_applyConnectorLifecycleChanges(e){for(let t of e){let n=this._engine.getConnectorLifecycleTransition(t.id);if(!n)continue;let i=this._sceneElement??this._container?.querySelector("svg");if(!i)continue;let r=rt(i,t.id);if(!r)continue;if(n.to==="entering"||n.to==="present")r.isHidden=!1,H(r.node);if(bt(n,this._backward))this._applyConnectorEntryAnimation(t,r);if(_t(n,this._backward)){this._applyConnectorExitAnimation({...t,exit:xt(t.enter??"fade-in")},r);continue}if(St(n,this._backward)){this._applyConnectorExitAnimation(t,r);continue}if(Et(n,this._backward)){r.isHidden=!1,H(r.node),this._applyConnectorEntryAnimation({...t,enter:Ct(t.exit??"fade-out")},r);continue}if(n.to==="removed")r.isHidden=!0,V(r.node)}}_applyEntryAnimation(e,t){let n=e.enter??"fade-in";if(n==="none")return;I(t.node,`iso-anim-${n}`,"enter");let i=t.node.style.animation;t.node.addEventListener("animationend",()=>{if(t.node.style.animation===i)t.node.style.animation=""},{once:!0})}_applyExitAnimation(e,t){let n=e.exit??"fade-out";if(n==="none"){V(t.node);return}I(t.node,`iso-anim-${n}`,"exit");let i=t.node.style.animation;t.node.addEventListener("animationend",()=>{if(t.node.style.animation===i)V(t.node)},{once:!0})}_applyConnectorEntryAnimation(e,t){let n=e.enter??"fade-in";if(n==="none")return;I(t.node,`iso-anim-${n}`,"enter");let i=t.node.style.animation;t.node.addEventListener("animationend",()=>{if(t.node.style.animation===i)t.node.style.animation=""},{once:!0})}_applyConnectorExitAnimation(e,t){let n=e.exit??"fade-out";if(n==="none"){V(t.node);return}I(t.node,`iso-anim-${n}`,"exit");let i=t.node.style.animation;t.node.addEventListener("animationend",()=>{if(t.node.style.animation===i)V(t.node)},{once:!0})}_transitionToScene(e){this._cancelTransition();let t=this.scenes[e],n=this._progress,i=t.progress;if(e===this._sceneIndex&&n===i)return;this._sceneIndex=e,this._emit("scene-change",e);let r=this._config.transitionDuration;if(r>0&&n!==i){this._animateProgress(n,i,r);return}this._progress=i,this._cancelCameraAnimation(),this._scheduleProgressForward(i)}_animateProgress(e,t,n){let i=Ee(this._config.transitionEasing==="ease-in-out"?"easeInOutCubic":this._config.transitionEasing==="ease-out"?"easeOutCubic":"linear"),r=performance.now(),o=(s)=>{let a=s-r,l=Math.min(a/n,1),c=i(l),u=e+(t-e)*c;if(this._setProgress(u),l<1)this._transitionAnim=requestAnimationFrame(o);else this._transitionAnim=null};this._transitionAnim=requestAnimationFrame(o)}_cancelTransition(){if(this._transitionAnim!==null)cancelAnimationFrame(this._transitionAnim),this._transitionAnim=null}_cancelCameraAnimation(){if(this._cameraAnim!==null)cancelAnimationFrame(this._cameraAnim),this._cameraAnim=null}_bindScroll(){if(this._config.keyboardControls)document.addEventListener("keydown",this._onKeyDown);let e=this._config.container;if(!e)return;if(this._container=e,this._calculateScrollBounds(),e.addEventListener("scroll",this._onScroll,{passive:!0}),window.addEventListener("resize",this._onResize,{passive:!0}),this._config.touchControls)e.addEventListener("touchstart",this._onTouchStart,{passive:!0}),e.addEventListener("touchmove",this._onTouchMove,{passive:!1}),e.addEventListener("touchend",this._onTouchEnd)}_unbindScroll(){document.removeEventListener("keydown",this._onKeyDown);let e=this._config.container;if(!e)return;e.removeEventListener("scroll",this._onScroll),window.removeEventListener("resize",this._onResize),e.removeEventListener("touchstart",this._onTouchStart),e.removeEventListener("touchmove",this._onTouchMove),e.removeEventListener("touchend",this._onTouchEnd)}_calculateScrollBounds(){let e=this._config.container;if(!e)return;let t=this._config.scrollOffset??{};if(this._config.scrollDirection==="horizontal"){this._minScroll=t.left??0,this._maxScroll=e.scrollWidth-e.clientWidth-(t.right??0);return}this._minScroll=t.top??0,this._maxScroll=e.scrollHeight-e.clientHeight-(t.bottom??0)}_onScroll=()=>{if(this._paused||this._destroyed)return;let e=this._config.container;if(!e)return;let t=this._config.scrollDirection==="horizontal"?e.scrollLeft:e.scrollTop,n=this._maxScroll-this._minScroll;if(n<=0)return;let i=(t-this._minScroll)/n,r=this._config.scrollSensitivity??1,o=i*r,s=Math.max(this._config.minProgress??0,Math.min(this._config.maxProgress??1,o));if(s!==this._progress)this.setProgress(s)};_onResize=()=>{if(this._destroyed)return;this._calculateScrollBounds()};_onKeyDown=(e)=>{if(this._destroyed)return;if(e.key==="ArrowRight"||e.key==="ArrowDown"||e.key===" ")e.preventDefault(),this.nextScene();else if(e.key==="ArrowLeft"||e.key==="ArrowUp")e.preventDefault(),this.prevScene()};_onTouchStart=(e)=>{if(this._destroyed)return;this._isDragging=!0;let t=e.touches[0];if(this._config.scrollDirection==="horizontal")this._lastTouchX=t.clientX;else this._lastTouchY=t.clientY};_onTouchMove=(e)=>{if(this._destroyed)return;if(!this._isDragging)return;let t=e.touches[0],n=this._config.scrollDirection==="horizontal",i=n?this._lastTouchX-t.clientX:this._lastTouchY-t.clientY;if(n)this._lastTouchX=t.clientX;else this._lastTouchY=t.clientY;let r=this._config.scrollSensitivity??1,o=i/300*r,s=Math.max(0,Math.min(1,this._progress+o));this.setProgress(s)};_onTouchEnd=()=>{if(this._destroyed)return;this._isDragging=!1};_applyPauseState(e){let t=this._getSceneSvg();if(!t)return;if(e)t.classList.add("iso-motion-paused");else t.classList.remove("iso-motion-paused");let n=e?"paused":"running",i=t.querySelectorAll('[class*="iso-ambient-"]');for(let r=0;r<i.length;r++){let o=i[r];o.style.animationPlayState=n}}_assertNotDestroyed(){if(!this._destroyed)return;throw new f("CONTROLLER_DESTROYED","AnimationController has been destroyed")}}function bt(e,t){return!t&&(e.from==="removed"||e.from==="exiting")&&(e.to==="entering"||e.to==="present")}function St(e,t){return!t&&(e.to==="exiting"||e.to==="removed"&&e.from!=="exiting")}function _t(e,t){return t&&(e.to==="removed"||e.to==="exiting")&&(e.from==="entering"||e.from==="present")}function Et(e,t){return t&&(e.from==="exiting"||e.from==="removed")&&(e.to==="present"||e.to==="entering")}function xt(e){switch(e){case"fade-in":return"fade-out";case"fade-in-grow":return"fade-out-shrink";case"fall-in":return"rise-away";case"rise-from-ground":return"fall-through-ground";case"slide-in-left":return"slide-out-left";case"slide-in-right":return"slide-out-right";case"flip-in":return"flip-out";case"none":return"none"}}function Ct(e){switch(e){case"fade-out":return"fade-in";case"fade-out-shrink":return"fade-in-grow";case"fall-through-ground":return"rise-from-ground";case"rise-away":return"fall-in";case"slide-out-left":return"slide-in-left";case"slide-out-right":return"slide-in-right";case"flip-out":return"flip-in";case"none":return"none"}}function wn(e,t){let n=0,i=e.length-1;for(let r=0;r<e.length;r++){if(e[r].progress<=t)n=r;if(e[r].progress>=t){i=r;break}}return{previous:{scene:e[n],index:n},next:{scene:e[i],index:i}}}function re(e,t){return{minX:C(e.minX-t),minY:C(e.minY-t),width:C(Math.max(1,e.width+t*2)),height:C(Math.max(1,e.height+t*2))}}function At(e,t,n){return{minX:C(e.minX+(t.minX-e.minX)*n),minY:C(e.minY+(t.minY-e.minY)*n),width:C(e.width+(t.width-e.width)*n),height:C(e.height+(t.height-e.height)*n)}}function Rn(e,t){return e.minX===t.minX&&e.minY===t.minY&&e.width===t.width&&e.height===t.height}function Tn(e){let t=e.getAttribute("viewBox");if(!t)return;let n=t.trim().split(/\s+/).map(Number);if(n.length!==4||n.some((i)=>!Number.isFinite(i)))return;return{minX:n[0],minY:n[1],width:n[2],height:n[3]}}function wt(e){return Ee(e==="ease-in-out"?"easeInOutCubic":e==="ease-out"?"easeOutCubic":"linear")}function Mn(e){return{viewBox:{...e.viewBox},target:e.target?.type==="area"?{type:"area",at:[...e.target.at],size:[...e.target.size]}:e.target?{...e.target}:void 0,isZoomed:e.isZoomed}}function C(e){return Math.round(e*1000)/1000}function Rt(e){let t=Vn(e),n=t.length*8;t.push(128);while(t.length%64!==56)t.push(0);for(let s=7;s>=0;s--)t.push(Math.floor(n/2**(s*8))&255);let i=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],r=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],o=Array(64);for(let s=0;s<t.length;s+=64){for(let m=0;m<16;m++){let A=s+m*4;o[m]=(t[A]<<24|t[A+1]<<16|t[A+2]<<8|t[A+3])>>>0}for(let m=16;m<64;m++){let A=R(o[m-15],7)^R(o[m-15],18)^o[m-15]>>>3,X=R(o[m-2],17)^R(o[m-2],19)^o[m-2]>>>10;o[m]=o[m-16]+A+o[m-7]+X>>>0}let[a,l,c,u,h,S,_,y]=i;for(let m=0;m<64;m++){let A=R(h,6)^R(h,11)^R(h,25),X=h&S^~h&_,p=y+A+X+r[m]+o[m]>>>0,N=R(a,2)^R(a,13)^R(a,22),E=a&l^a&c^l&c,w=N+E>>>0;y=_,_=S,S=h,h=u+p>>>0,u=c,c=l,l=a,a=p+w>>>0}i[0]=i[0]+a>>>0,i[1]=i[1]+l>>>0,i[2]=i[2]+c>>>0,i[3]=i[3]+u>>>0,i[4]=i[4]+h>>>0,i[5]=i[5]+S>>>0,i[6]=i[6]+_>>>0,i[7]=i[7]+y>>>0}return i.map((s)=>s.toString(16).padStart(8,"0")).join("")}function Vn(e){return Array.from(new TextEncoder().encode(e))}function R(e,t){return e>>>t|e<<32-t}var kn="iso-interactive",Gn="iso-hover";class Ce{svg;listeners=new Map;destroyed=!1;attached=!1;onClick=(e)=>this.handleClick(e);onPointerOver=(e)=>this.handlePointerOver(e);onPointerOut=(e)=>this.handlePointerOut(e);constructor(e,t){if(this.svg=e,t)e.classList.add(kn),e.addEventListener("click",this.onClick),e.addEventListener("pointerover",this.onPointerOver),e.addEventListener("pointerout",this.onPointerOut),this.attached=!0}on(e,t){if(this.destroyed)throw new d("MOUNT_DESTROYED","Cannot call on() after destroy()");let n=this.listeners.get(e)??new Set;return n.add(t),this.listeners.set(e,n),()=>{n.delete(t)}}destroy(){if(this.destroyed)return;if(this.destroyed=!0,this.attached)this.svg.removeEventListener("click",this.onClick),this.svg.removeEventListener("pointerover",this.onPointerOver),this.svg.removeEventListener("pointerout",this.onPointerOut),this.attached=!1;this.listeners.clear()}handleClick(e){let t=this.resolveVisibleElementId(e.target);if(!t)return;this.emit("element-click",{id:t,originalEvent:e})}handlePointerOver(e){let t=this.resolveVisibleElementId(e.target);if(!t)return;let n=this.resolveVisibleElementId(e.relatedTarget);if(t===n)return;this.toggleHoverClass(t,!0),this.emit("element-enter",{id:t,originalEvent:e})}handlePointerOut(e){let t=this.resolveVisibleElementId(e.target);if(!t)return;let n=this.resolveVisibleElementId(e.relatedTarget);if(t===n)return;this.toggleHoverClass(t,!1),this.emit("element-leave",{id:t,originalEvent:e})}toggleHoverClass(e,t){let n=B(this.svg,e);if(!n)return;n.node.classList.toggle(Gn,t)}resolveVisibleElementId(e){let t=e;while(t&&t!==this.svg){let n=t.getAttribute?.("data-id");if(n){let i=B(this.svg,n);if(i&&i.current.presence!=="removed")return n;return}t=t.parentNode}return}emit(e,t){let n=this.listeners.get(e);if(!n)return;for(let i of n)try{i(t)}catch(r){queueMicrotask(()=>{throw r})}}}var Tt="isostate-runtime-bundle",Ae="0.6.0",Ln=/^[a-f0-9]{64}$/;function Bn(e,t,n={}){Nn(e),Pn(t);let i=new F;i.init(t);let r=nt(e,t,{label:n.label,themeVars:n.themeVars}),o;if(n.controller!==void 0&&n.controller!==!1)o=new xe,o.init(t,{...n.controller,container:n.controller.container??e,sceneElement:r},{engine:i,sceneElement:r});let s=new Ce(r,n.interactive===!0),a=!1;return{svg:r,engine:i,controller:o,getResolvedConfig:()=>Fn(t,n,o),on:(l,c)=>s.on(l,c),destroy:()=>{if(a)return;if(a=!0,s.destroy(),In(o),i.destroy(),r.parentNode===e)e.removeChild(r);else r.parentNode?.removeChild(r)}}}function In(e){if(!e)return;try{e.destroy()}catch(t){if(t instanceof f&&t.code==="CONTROLLER_DESTROYED")return;throw t}}function Nn(e){if(!e||typeof e.appendChild!=="function"||typeof e.removeChild!=="function")throw new d("INVALID_MOUNT_TARGET","mountScene() requires a DOM HTMLElement target")}function Pn(e){if(!e||typeof e!=="object")throw new d("BUNDLE_FORMAT_MISSING","Runtime bundle must be a plain object");if(e._format!==Tt)throw new d("BUNDLE_FORMAT_MISSING","Runtime bundle format is missing or unsupported",{expected:Tt});if(!Array.isArray(e.scenes)||e.scenes.length===0)throw new d("BUNDLE_FORMAT_MISSING","Runtime bundle must include compiled scenes[]");if(Mt(e._version)!==Mt(Ae))throw new d("BUNDLE_VERSION_MISMATCH",`Runtime bundle version ${e._version} is not compatible with runtime ${Ae}`,{bundleVersion:e._version,runtimeVersion:Ae});if(!e._digest)throw new d("BUNDLE_DIGEST_MISSING","Runtime bundle digest is missing");if(typeof e._digest!=="string"||!Ln.test(e._digest))throw new d("BUNDLE_DIGEST_MISMATCH","Runtime bundle digest is malformed");let{_digest:t,...n}=e,i=Rt(Xn(n));if(i!==t)throw new d("BUNDLE_DIGEST_MISMATCH","Runtime bundle digest does not match bundle content",{expected:t,actual:i})}function Fn(e,t={},n){return{grid:{cellSize:e.grid.cellSize},floor:{...e.floor,size:[...e.floor.size],origin:[...e.floor.origin]},layout:{...e.layout,padding:{...e.layout.padding},align:[...e.layout.align]},viewBox:L(e),camera:Dn(e,n),theme:e.theme,themeVars:Yn(e,t.themeVars),scenes:e.scenes.map((i)=>({id:i.id,progress:i.progress})),layerOrder:e.layers.map((i)=>({name:i.name,order:i.order})).sort((i,r)=>i.order-r.order||On(i.name,r.name))}}function Dn(e,t){if(t)try{return t.getCameraState()}catch(n){if(!(n instanceof f))throw n}return{viewBox:L(e),isZoomed:!1}}function On(e,t){return e<t?-1:e>t?1:0}function Yn(e,t={}){return{...J(e.theme)??{},...e.themeVars??{},...t}}function Mt(e){let t=Number.parseInt(String(e).split(".")[0]??"",10);return Number.isFinite(t)?t:Number.NaN}function Xn(e){return JSON.stringify(we(e))}function we(e){if(Array.isArray(e))return e.map((n)=>n===void 0?null:we(n));if(!zn(e))return e;let t={};for(let n of Object.keys(e).sort()){let i=e[n];if(i!==void 0)t[n]=we(i)}return t}function zn(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function Gi(e,t,n,i,r,o,s){return M(e,t,n,i,r,o,s)}export{Bn as mountScene,Gi as projectToScreen};
|
|
5
5
|
|
|
6
|
-
//# debugId=
|
|
6
|
+
//# debugId=EA5D2F157257CB7564756E2164756E21
|