@field/cascade 0.3.0 → 0.3.1
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/CHANGELOG.md +18 -0
- package/dist/assets/{CodeEditor-BADFbTJS.js → CodeEditor-D22fVi-4.js} +4 -4
- package/dist/assets/{CodePanel-faK6PRfz.js → CodePanel-DPNEYfcR.js} +2 -2
- package/dist/assets/{CustomNodeDialog-DhlKuviy.js → CustomNodeDialog-DeHCAvgb.js} +1 -1
- package/dist/assets/{ProjectSettings-D6a6kjqR.js → ProjectSettings-DWpVtWEx.js} +1 -1
- package/dist/assets/{SettingsDialog-DJZdIvLC.js → SettingsDialog-za00IS3L.js} +1 -1
- package/dist/assets/{VersionHistoryDialog-C1X3HOhc.js → VersionHistoryDialog-DTMGhI0_.js} +1 -1
- package/dist/assets/{core-CiuiuWZi.js → core-JsyKMO1k.js} +1 -1
- package/dist/assets/{cssMode-D-NwZSMJ.js → cssMode-emdRheFK.js} +1 -1
- package/dist/assets/{editor.api-DT3WEvBd.js → editor.api-xHX-fMSo.js} +1 -1
- package/dist/assets/{freemarker2-eKNYQaiz.js → freemarker2-C3M8_Gs3.js} +1 -1
- package/dist/assets/geo-BAR6lQp5.js +1 -0
- package/dist/assets/{handlebars-C2w1ggK2.js → handlebars-CBMurtFk.js} +1 -1
- package/dist/assets/{html-DQb41jyo.js → html-xbLQwknw.js} +1 -1
- package/dist/assets/{htmlMode-IhNlh6Lv.js → htmlMode-2wKdDTon.js} +1 -1
- package/dist/assets/{image-DMCXBY-_.js → image-i1j6nWKe.js} +1 -1
- package/dist/assets/{index-HTCN44kj.js → index-CMcH8AgP.js} +35 -35
- package/dist/assets/{javascript-BIT6jMLC.js → javascript-DJaOo_2I.js} +1 -1
- package/dist/assets/{jsonMode-CNfyB1ro.js → jsonMode-Bheas8_0.js} +1 -1
- package/dist/assets/{liquid-CmSmJmOG.js → liquid-BCj_BGbM.js} +1 -1
- package/dist/assets/{lspLanguageFeatures-BqMm3uMP.js → lspLanguageFeatures-BfIsx_xz.js} +1 -1
- package/dist/assets/{mdx-6r6YgOFw.js → mdx-DwiQDiVO.js} +1 -1
- package/dist/assets/{python-x1H0TQuI.js → python-BjrB5nqj.js} +1 -1
- package/dist/assets/{razor-Dzl1vZFm.js → razor-CfoBmGDs.js} +1 -1
- package/dist/assets/{tsMode-n6DMMe3a.js → tsMode-BcEoMSxp.js} +1 -1
- package/dist/assets/{typescript-ziEz65xN.js → typescript-DIg7TEmQ.js} +1 -1
- package/dist/assets/{workers-D-qUdp-r.js → workers-vXYuwtPw.js} +1 -1
- package/dist/assets/{xml-DMZjt5lE.js → xml-DexLQIQy.js} +1 -1
- package/dist/assets/{yaml-DFe5qZSO.js → yaml-DUnD_1dE.js} +1 -1
- package/dist/cli/index.js +317 -49
- package/dist/cli/runtime/gpu.ts +76 -0
- package/dist/contracts/capabilities.d.ts +69 -6
- package/dist/contracts/definition.d.ts +21 -1
- package/dist/contracts/schema.js +8 -5
- package/dist/contracts/validate.js +11 -2
- package/dist/gpu.d.ts +71 -0
- package/dist/gpu.js +53 -0
- package/dist/index.html +1 -1
- package/dist/runtime/runtime.d.ts +23 -3
- package/dist/runtime/runtime.js +118 -24
- package/dist/runtime/types.d.ts +3 -3
- package/package.json +5 -1
- package/dist/assets/geo-DUvVbLnx.js +0 -1
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/CodePanel-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/CodePanel-DPNEYfcR.js","assets/legacy-CAj2_7QE.js","assets/CodePanel-IT1secyI.css","assets/CustomNodeDialog-DeHCAvgb.js","assets/CustomNodeDialog-JGYnWY6m.css","assets/VersionHistoryDialog-DTMGhI0_.js","assets/VersionHistoryDialog-CWNmHQ-P.css","assets/ExportDialog-BJu2Bpvv.js","assets/ExportDialog-DOq0flMV.css","assets/SettingsDialog-za00IS3L.js","assets/SettingsDialog-CeK7ytpY.css","assets/ProjectSettings-DWpVtWEx.js","assets/projectSettingsApi-C1WvIwfP.js","assets/ProjectSettings-DdO9xoQz.css","assets/core-JsyKMO1k.js","assets/nodeTypeUtils-BBA1JqHx.js","assets/image-i1j6nWKe.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
import{$ as e,A as t,B as n,C as r,Ct as i,D as a,Dt as o,E as s,Et as c,F as l,G as u,H as d,I as f,J as p,K as m,L as h,M as g,N as _,O as v,Ot as y,P as b,Q as x,R as S,S as C,St as w,T,Tt as ee,U as E,V as D,W as te,X as O,Y as k,Z as A,_t as ne,a as j,at as M,b as re,bt as N,c as ie,ct as P,d as ae,dt as oe,et as F,f as I,ft as L,g as R,gt as z,h as se,ht as B,i as V,it as ce,j as le,k as H,kt as U,l as ue,lt as de,m as fe,mt as pe,n as me,nt as he,o as W,ot as G,p as ge,pt as _e,q as ve,r as ye,rt as K,s as be,st as q,t as xe,tt as J,u as Se,ut as Y,v as Ce,vt as we,w as Te,wt as Ee,x as X,xt as De,y as Oe,yt as ke,z as Z}from"./legacy-CAj2_7QE.js";import"./index-client-BoJgsN9M.js";import{c as Ae,d as je,i as Me,l as Ne,n as Pe,o as Fe,r as Ie,s as Le,t as Re}from"./nodeTypeUtils-BBA1JqHx.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var ze,Be=class{constructor(){}},Ve=class extends Be{constructor(e,t,n,r){super(),this.viewId=e,this.groupId=t,this.panelId=n,this.tabGroupId=r}},He=class e{constructor(){}static getInstance(){return e.INSTANCE}hasData(e){return e&&e===this.proto}clearData(e){this.hasData(e)&&(this.proto=void 0,this.data=void 0)}getData(e){if(this.hasData(e))return this.data}setData(e,t){t&&(this.data=e,this.proto=t)}};ze=He,He.INSTANCE=new ze;function Ue(){let e=He.getInstance();if(e.hasData(Ve.prototype))return e.getData(Ve.prototype)[0]}var We;(function(e){e.NONE={dispose:()=>{}};function t(e){return{dispose:()=>{e()}}}e.from=t})(We||={});var Q=class{get isDisposed(){return this._isDisposed}constructor(...e){this._isDisposed=!1,this._disposables=new Set(e)}addDisposables(...e){e.forEach(e=>this._disposables.add(e))}removeDisposable(e){this._disposables.delete(e)}dispose(){this._isDisposed||(this._isDisposed=!0,this._disposables.forEach(e=>e.dispose()),this._disposables.clear())}},Ge=class{constructor(){this._disposable=We.NONE}get value(){return this._disposable===We.NONE?void 0:this._disposable}set value(e){this._disposable&&this._disposable.dispose(),this._disposable=e}dispose(){this._disposable&&=(this._disposable.dispose(),We.NONE)}},Ke;(function(e){e.any=(...e)=>t=>{let n=e.map(e=>e(t));return{dispose:()=>{n.forEach(e=>{e.dispose()})}}}})(Ke||={});var qe=class{constructor(){this._defaultPrevented=!1}get defaultPrevented(){return this._defaultPrevented}preventDefault(){this._defaultPrevented=!0}},Je=class{constructor(){this._isAccepted=!1}get isAccepted(){return this._isAccepted}accept(){this._isAccepted=!0}},Ye=class{constructor(){this.events=new Map}get size(){return this.events.size}add(e,t){this.events.set(e,t)}delete(e){this.events.delete(e)}clear(){this.events.clear()}},Xe=class e{static create(){return new e(Error(`listener stacktrace`).stack??``)}constructor(e){this.value=e}print(){console.warn(`dockview: stacktrace`,this.value)}},Ze=class{constructor(e,t){this.callback=e,this.stacktrace=t}},$=class e{static setLeakageMonitorEnabled(t){t!==e.ENABLE_TRACKING&&e.MEMORY_LEAK_WATCHER.clear(),e.ENABLE_TRACKING=t}get value(){return this._last}constructor(e){this.options=e,this._listeners=[],this._disposed=!1}get event(){return this._event||(this._event=t=>{this.options?.replay&&this._last!==void 0&&t(this._last);let n=new Ze(t,e.ENABLE_TRACKING?Xe.create():void 0);return this._listeners.push(n),{dispose:()=>{let t=this._listeners.indexOf(n);t>-1?this._listeners.splice(t,1):e.ENABLE_TRACKING}}},e.ENABLE_TRACKING&&e.MEMORY_LEAK_WATCHER.add(this._event,Xe.create())),this._event}fire(e){if(this._pauseTokens!==void 0&&this._pauseTokens.size>0)return;this.options?.replay&&(this._last=e);let t=this._listeners,n=t.length;if(n!==0){if(n===1){t[0].callback(e);return}for(let n of t.slice())n.callback(e)}}pause(){let e={};return this._pauseTokens??=new Set,this._pauseTokens.add(e),We.from(()=>this._pauseTokens?.delete(e))}dispose(){this._disposed||(this._disposed=!0,this._listeners.length>0&&(e.ENABLE_TRACKING?queueMicrotask(()=>{for(let e of this._listeners)console.warn(`dockview: stacktrace`,e.stacktrace?.print());this._listeners=[]}):this._listeners=[]),e.ENABLE_TRACKING&&this._event&&e.MEMORY_LEAK_WATCHER.delete(this._event))}};$.ENABLE_TRACKING=!1,$.MEMORY_LEAK_WATCHER=new Ye;function Qe(e,t,n,r){return e.addEventListener(t,n,r),{dispose:()=>{e.removeEventListener(t,n,r)}}}var $e=class{constructor(){this._onFired=new $,this._currentFireCount=0,this._queued=!1,this.onEvent=e=>{let t=this._currentFireCount;return this._onFired.event(()=>{this._currentFireCount>t&&e()})}}fire(){this._currentFireCount++,!this._queued&&(this._queued=!0,queueMicrotask(()=>{this._queued=!1,this._onFired.fire()}))}dispose(){this._onFired.dispose()}},et=class extends Q{constructor(e){super(),this._onDidChange=new $,this.onDidChange=this._onDidChange.event,this._value=null,this.addDisposables(this._onDidChange,tt(e,e=>{let t=e.target.scrollWidth>e.target.clientWidth,n=e.target.scrollHeight>e.target.clientHeight;this._value={hasScrollX:t,hasScrollY:n},this._onDidChange.fire(this._value)}))}};function tt(e,t){let n=new ResizeObserver(e=>{requestAnimationFrame(()=>{let n=e[0];t(n)})});return n.observe(e),{dispose:()=>{n.unobserve(e),n.disconnect()}}}var nt=(e,...t)=>{for(let n of t)e.classList.contains(n)&&e.classList.remove(n)},rt=(e,...t)=>{for(let n of t)e.classList.contains(n)||e.classList.add(n)},it=(e,t,n)=>{let r=e.classList.contains(t);n&&!r&&e.classList.add(t),!n&&r&&e.classList.remove(t)};function at(e,t){for(;e;){if(e===t)return!0;e=e.parentNode}return!1}function ot(e){return new st(e)}var st=class extends Q{constructor(e){super(),this._onDidFocus=new $,this.onDidFocus=this._onDidFocus.event,this._onDidBlur=new $,this.onDidBlur=this._onDidBlur.event,this.addDisposables(this._onDidFocus,this._onDidBlur);let t=at(document.activeElement,e),n=!1,r=()=>{n=!1,t||(t=!0,this._onDidFocus.fire())},i=()=>{t&&(n=!0,globalThis.setTimeout(()=>{n&&(n=!1,t=!1,this._onDidBlur.fire())},0))};this._refreshStateHandler=()=>{at(document.activeElement,e)!==t&&(t?i():r())},this.addDisposables(Qe(e,`focus`,r,!0)),this.addDisposables(Qe(e,`blur`,i,!0))}refreshState(){this._refreshStateHandler()}},ct=`dv-quasiPreventDefault`;function lt(e){e[ct]=!0}function ut(e){return e[ct]}function dt(e,t,n={}){let r=Array.from(t),{nonce:i}=n,a=typeof i==`function`?i(e):i;for(let t of r){if(t.href){let n=e.createElement(`link`);n.href=t.href,n.type=t.type,n.rel=`stylesheet`,e.head.appendChild(n);continue}let n=[];try{t.cssRules&&(n=Array.from(t.cssRules).map(e=>e.cssText))}catch(e){console.warn(`dockview: failed to access stylesheet rules due to security restrictions`,e)}let r=e.createDocumentFragment();for(let t of n){let n=e.createElement(`style`);a&&n.setAttribute(`nonce`,a),n.appendChild(e.createTextNode(t)),r.appendChild(n)}e.head.appendChild(r)}}function ft(e){let{left:t,top:n,width:r,height:i}=e.getBoundingClientRect();return{left:t+window.scrollX,top:n+window.scrollY,width:r,height:i}}function pt(e){let t=e;for(;t?.parentNode;)if(t.parentNode===document)return!0;else t=t.parentNode instanceof DocumentFragment?t.parentNode.host:t.parentNode;return!1}function mt(e,t){e.dataset.testid=t}function ht(e,t){let n=[];function r(t){if(t.nodeType===Node.ELEMENT_NODE){e.includes(t.tagName)&&n.push(t),t.shadowRoot&&r(t.shadowRoot);for(let e of t.children)r(e)}}return r(t instanceof Document?t.documentElement:t),n}function gt(e=document){let t=ht([`IFRAME`,`WEBVIEW`],e),n=new WeakMap;for(let e of t)n.set(e,e.style.pointerEvents),e.style.pointerEvents=`none`;return{release:()=>{for(let e of t)e.style.pointerEvents=n.get(e)??`auto`;t.splice(0,t.length)}}}function _t(e){function t(e){let t=[];for(let n=0;n<e.classList.length;n++)t.push(e.classList.item(n));return t}let n,r=e;for(;r!==null&&(n=t(r).find(e=>e.startsWith(`dockview-theme-`)),typeof n!=`string`);)r=r.parentElement;return n}var vt=class{constructor(e){this.element=e,this._classNames=[]}setClassNames(e){for(let e of this._classNames)it(this.element,e,!1);this._classNames=e.split(` `).filter(e=>e.trim().length>0);for(let e of this._classNames)it(this.element,e,!0)}},yt=100;function bt(e,t){let n=ft(e),r=ft(t);return!(n.left<r.left||n.left+n.width>r.left+r.width||n.top<r.top||n.top+n.height>r.top+r.height)}function xt(e){let t=new $,n=e.screenX,r=e.screenY,i,a=0,o=!1,s=()=>{if(o||e.closed)return;let c=e.screenX,l=e.screenY;(c!==n||l!==r)&&(clearTimeout(i),i=setTimeout(()=>{t.fire()},yt),n=c,r=l),a=requestAnimationFrame(s)};s();let c=t.dispose.bind(t);return t.dispose=()=>{o||(o=!0,cancelAnimationFrame(a),clearTimeout(i)),c()},t}function St(e,t){let n;return new Q(Qe(e,`resize`,()=>{clearTimeout(n),n=setTimeout(()=>{t()},yt)}))}function Ct(e,t,n){let r=n?.buffer??10,i=e.getBoundingClientRect(),a=t.getBoundingClientRect(),o=0,s=0,c=i.left-a.left,l=i.top-a.top,u=i.bottom-a.bottom,d=i.right-a.right;c<r?o=r-c:d>r&&(o=-r-d),l<r?s=r-l:u>r&&(s=-u-r),(o!==0||s!==0)&&(e.style.transform=`translate(${o}px, ${s}px)`)}function wt(e){let t=e;for(;t&&(t.style.zIndex===`auto`||t.style.zIndex===``);)t=t.parentElement;return t}function Tt(e){if(e.length===0)throw Error(`Invalid tail call`);return[e.slice(0,e.length-1),e[e.length-1]]}function Et(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function Dt(e,t){let n=e.indexOf(t);n>-1&&(e.splice(n,1),e.unshift(t))}function Ot(e,t){let n=e.indexOf(t);n>-1&&(e.splice(n,1),e.push(t))}function kt(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(t(r))return n}return-1}function At(e,t){let n=e.indexOf(t);return n>-1&&(e.splice(n,1),!0)}var jt=(e,t,n)=>t>n?t:Math.min(n,Math.max(e,t)),Mt=()=>{let e=1;return{next:()=>(e++).toString()}},Nt=(e,t)=>{let n=[];if(typeof t!=`number`&&(t=e,e=0),e<=t)for(let r=e;r<t;r++)n.push(r);else for(let r=e;r>t;r--)n.push(r);return n},Pt=class{set size(e){this._size=e}setContainerGeometry(e,t){this._appliedStyles[e]!==t&&(this._appliedStyles[e]=t,this.container.style[e]=t)}get size(){return this._size}get cachedVisibleSize(){return this._cachedVisibleSize}get visible(){return this._cachedVisibleSize===void 0}get minimumSize(){return this.visible?this.view.minimumSize:0}get viewMinimumSize(){return this.view.minimumSize}get maximumSize(){return this.visible?this.view.maximumSize:0}get viewMaximumSize(){return this.view.maximumSize}get priority(){return this.view.priority}get snap(){return!!this.view.snap}set enabled(e){this.container.style.pointerEvents=e?``:`none`}constructor(e,t,n,r){this.container=e,this.view=t,this.disposable=r,this._cachedVisibleSize=void 0,this._appliedStyles={},typeof n==`number`?(this._size=n,this._cachedVisibleSize=void 0,e.classList.add(`visible`)):(this._size=0,this._cachedVisibleSize=n.cachedVisibleSize)}setVisible(e,t){e!==this.visible&&(e?(this.size=jt(this._cachedVisibleSize??0,this.viewMinimumSize,this.viewMaximumSize),this._cachedVisibleSize=void 0):(this._cachedVisibleSize=typeof t==`number`?t:this.size,this.size=0),this.container.classList.toggle(`visible`,e),this.view.setVisible&&this.view.setVisible(e))}dispose(){return this.disposable.dispose(),this.view}},Ft=function(e){return e.HORIZONTAL=`HORIZONTAL`,e.VERTICAL=`VERTICAL`,e}({});function It(e,t,n){e.appliedLeft!==t&&(e.appliedLeft=t,e.container.style.left=t),e.appliedTop!==n&&(e.appliedTop=n,e.container.style.top=n)}var Lt;(function(e){e.Distribute={type:`distribute`};function t(e){return{type:`split`,index:e}}e.Split=t;function n(e){return{type:`invisible`,cachedVisibleSize:e}}e.Invisible=n})(Lt||={});var Rt=class{get contentSize(){return this._contentSize}get size(){return this._size}set size(e){this._size=e}get orthogonalSize(){return this._orthogonalSize}set orthogonalSize(e){this._orthogonalSize=e}get length(){return this.viewItems.length}get proportions(){return this._proportions?[...this._proportions]:void 0}get orientation(){return this._orientation}set orientation(e){this._orientation=e;let t=this.size;this.size=this.orthogonalSize,this.orthogonalSize=t,nt(this.element,`dv-horizontal`,`dv-vertical`),this.element.classList.add(this.orientation==`HORIZONTAL`?`dv-horizontal`:`dv-vertical`)}get minimumSize(){return this.viewItems.reduce((e,t)=>e+t.minimumSize,0)}get maximumSize(){return this.length===0?1/0:this.viewItems.reduce((e,t)=>e+t.maximumSize,0)}get startSnappingEnabled(){return this._startSnappingEnabled}set startSnappingEnabled(e){this._startSnappingEnabled!==e&&(this._startSnappingEnabled=e,this.updateSashEnablement())}get endSnappingEnabled(){return this._endSnappingEnabled}set endSnappingEnabled(e){this._endSnappingEnabled!==e&&(this._endSnappingEnabled=e,this.updateSashEnablement())}get disabled(){return this._disabled}set disabled(e){this._disabled=e,it(this.element,`dv-splitview-disabled`,e)}get margin(){return this._margin}set margin(e){this._margin=e,it(this.element,`dv-splitview-has-margin`,e!==0)}constructor(e,t){this.container=e,this.viewItems=[],this.sashes=[],this._size=0,this._orthogonalSize=0,this._contentSize=0,this._proportions=void 0,this._startSnappingEnabled=!0,this._endSnappingEnabled=!0,this._disabled=!1,this._margin=0,this._onDidSashEnd=new $,this.onDidSashEnd=this._onDidSashEnd.event,this._onDidAddView=new $,this.onDidAddView=this._onDidAddView.event,this._onDidRemoveView=new $,this.onDidRemoveView=this._onDidRemoveView.event,this.resize=(e,t,n=this.viewItems.map(e=>e.size),r,i,a=-1/0,o=1/0,s,c)=>{if(e<0||e>this.viewItems.length)return 0;let l=Nt(e,-1),u=Nt(e+1,this.viewItems.length);if(i)for(let e of i)Dt(l,e),Dt(u,e);if(r)for(let e of r)Ot(l,e),Ot(u,e);let d=l.reduce((e,t)=>e+this.viewItems[t].minimumSize-n[t],0),f=l.reduce((e,t)=>e+this.viewItems[t].maximumSize-n[t],0),p=u.length===0?1/0:u.reduce((e,t)=>e+n[t]-this.viewItems[t].minimumSize,0),m=u.length===0?-1/0:u.reduce((e,t)=>e+n[t]-this.viewItems[t].maximumSize,0),h=Math.max(d,m),g=Math.min(p,f),_=!1;if(s){let e=this.viewItems[s.index],n=t>=s.limitDelta;_=n!==e.visible,e.setVisible(n,s.size)}if(!_&&c){let e=this.viewItems[c.index],n=t<c.limitDelta;_=n!==e.visible,e.setVisible(n,c.size)}if(_)return this.resize(e,t,n,r,i,a,o);let v=jt(t,h,g),y=0,b=v;for(let e of l){let t=this.viewItems[e],r=n[e],i=jt(r+b,t.minimumSize,t.maximumSize),a=i-r;y+=a,b-=a,t.size=i}let x=y;for(let e of u){let t=this.viewItems[e],r=n[e],i=jt(r-x,t.minimumSize,t.maximumSize),a=i-r;x+=a,t.size=i}return t},this._orientation=t.orientation??`VERTICAL`,this.element=this.createContainer(),this.margin=t.margin??0,this.proportionalLayout=t.proportionalLayout===void 0||!!t.proportionalLayout,this.viewContainer=this.createViewContainer(),this.sashContainer=this.createSashContainer(),this.element.appendChild(this.sashContainer),this.element.appendChild(this.viewContainer),this.container.appendChild(this.element),this.style(t.styles),t.descriptor&&(this._size=t.descriptor.size,t.descriptor.views.forEach((e,t)=>{let n=e.visible===void 0||e.visible?e.size:{type:`invisible`,cachedVisibleSize:e.size},r=e.view;this.addView(r,n,t,!0)}),this._contentSize=this.viewItems.reduce((e,t)=>e+t.size,0),this.saveProportions())}style(e){e?.separatorBorder===`transparent`?(nt(this.element,`dv-separator-border`),this.element.style.removeProperty(`--dv-separator-border`)):(rt(this.element,`dv-separator-border`),e?.separatorBorder&&this.element.style.setProperty(`--dv-separator-border`,e.separatorBorder))}isViewVisible(e){if(e<0||e>=this.viewItems.length)throw Error(`Index out of bounds`);return this.viewItems[e].visible}setViewVisible(e,t){if(e<0||e>=this.viewItems.length)throw Error(`Index out of bounds`);let n=this.viewItems[e];n.setVisible(t,n.size),this.distributeEmptySpace(e),this.layoutViews(),this.saveProportions()}getViewSize(e){return e<0||e>=this.viewItems.length?-1:this.viewItems[e].size}resizeView(e,t){if(e<0||e>=this.viewItems.length)return;let n=Nt(this.viewItems.length).filter(t=>t!==e),r=[...n.filter(e=>this.viewItems[e].priority===`low`),e],i=n.filter(e=>this.viewItems[e].priority===`high`),a=this.viewItems[e];t=Math.round(t),t=jt(t,a.minimumSize,Math.min(a.maximumSize,this._size)),a.size=t,this.relayout(r,i)}getViews(){return this.viewItems.map(e=>e.view)}onDidChange(e,t){let n=this.viewItems.indexOf(e);if(n<0||n>=this.viewItems.length)return;t=typeof t==`number`?t:e.size,t=jt(t,e.minimumSize,e.maximumSize),e.size=t;let r=Nt(this.viewItems.length).filter(e=>e!==n),i=[...r.filter(e=>this.viewItems[e].priority===`low`),n],a=r.filter(e=>this.viewItems[e].priority===`high`);this.relayout([...i,n],a)}addView(e,t=Lt.Distribute,n=this.viewItems.length,r){let i=document.createElement(`div`);i.className=`dv-view`,i.appendChild(e.element);let a;a=typeof t==`number`?t:t.type===`split`?this.getViewSize(t.index)/2:t.type===`invisible`?{cachedVisibleSize:t.cachedVisibleSize}:e.minimumSize;let o=e.onDidChange(e=>this.onDidChange(s,e.size)),s=new Pt(i,e,a,{dispose:()=>{o.dispose(),i.remove()}});if(n===this.viewItems.length?this.viewContainer.appendChild(i):this.viewContainer.insertBefore(i,this.viewContainer.children.item(n)),this.viewItems.splice(n,0,s),this.viewItems.length>1){let e=document.createElement(`div`);e.className=`dv-sash`;let t=t=>{for(let e of this.viewItems)e.enabled=!1;let n=e.ownerDocument??document,r=gt(n),i=this._orientation===`HORIZONTAL`?t.clientX:t.clientY,a=kt(this.sashes,t=>t.container===e),o=this.viewItems.map(e=>e.size),s,c,l=Nt(a,-1),u=Nt(a+1,this.viewItems.length),d=l.reduce((e,t)=>e+(this.viewItems[t].minimumSize-o[t]),0),f=l.reduce((e,t)=>e+(this.viewItems[t].viewMaximumSize-o[t]),0),p=u.length===0?1/0:u.reduce((e,t)=>e+(o[t]-this.viewItems[t].minimumSize),0),m=u.length===0?-1/0:u.reduce((e,t)=>e+(o[t]-this.viewItems[t].viewMaximumSize),0),h=Math.max(d,m),g=Math.min(p,f),_=this.findFirstSnapIndex(l),v=this.findFirstSnapIndex(u);if(typeof _==`number`){let e=this.viewItems[_],t=Math.floor(e.viewMinimumSize/2);s={index:_,limitDelta:e.visible?h-t:h+t,size:e.size}}if(typeof v==`number`){let e=this.viewItems[v],t=Math.floor(e.viewMinimumSize/2);c={index:v,limitDelta:e.visible?g+t:g-t,size:e.size}}let y=e=>{let t=(this._orientation===`HORIZONTAL`?e.clientX:e.clientY)-i;this.resize(a,t,o,void 0,void 0,h,g,s,c),this.distributeEmptySpace(),this.layoutViews()},b=()=>{for(let e of this.viewItems)e.enabled=!0;r.release(),this.saveProportions(),n.removeEventListener(`pointermove`,y),n.removeEventListener(`pointerup`,b),n.removeEventListener(`pointercancel`,b),n.removeEventListener(`contextmenu`,b),this._onDidSashEnd.fire(void 0)};n.addEventListener(`pointermove`,y),n.addEventListener(`pointerup`,b),n.addEventListener(`pointercancel`,b),n.addEventListener(`contextmenu`,b)};e.addEventListener(`pointerdown`,t);let n={container:e,disposable:()=>{e.removeEventListener(`pointerdown`,t),e.remove()}};this.sashContainer.appendChild(e),this.sashes.push(n)}r||this.relayout([n]),!r&&typeof t!=`number`&&t.type===`distribute`&&this.distributeViewSizes(),this._onDidAddView.fire(e)}distributeViewSizes(){let e=[],t=0;for(let n of this.viewItems)n.maximumSize-n.minimumSize>0&&(e.push(n),t+=n.size);let n=Math.floor(t/e.length);for(let t of e)t.size=jt(n,t.minimumSize,t.maximumSize);let r=Nt(this.viewItems.length),i=r.filter(e=>this.viewItems[e].priority===`low`),a=r.filter(e=>this.viewItems[e].priority===`high`);this.relayout(i,a)}removeView(e,t,n=!1){let r=this.viewItems.splice(e,1)[0];if(r.dispose(),this.viewItems.length>=1){let t=Math.max(e-1,0);this.sashes.splice(t,1)[0].disposable()}return n||this.relayout(),t?.type===`distribute`&&this.distributeViewSizes(),this._onDidRemoveView.fire(r.view),r.view}getViewCachedVisibleSize(e){if(e<0||e>=this.viewItems.length)throw Error(`Index out of bounds`);return this.viewItems[e].cachedVisibleSize}moveView(e,t){let n=this.getViewCachedVisibleSize(e),r=n===void 0?this.getViewSize(e):Lt.Invisible(n),i=this.removeView(e,void 0,!0);this.addView(i,r,t)}layout(e,t){let n=Math.max(this.size,this._contentSize);if(this.size=e,this.orthogonalSize=t,this.proportions){let t=0;for(let n=0;n<this.viewItems.length;n++){let r=this.viewItems[n],i=this.proportions[n];typeof i==`number`?t+=i:e-=r.size}for(let n=0;n<this.viewItems.length;n++){let r=this.viewItems[n],i=this.proportions[n];typeof i==`number`&&t>0&&(r.size=jt(Math.round(i*e/t),r.minimumSize,r.maximumSize))}}else{let t=Nt(this.viewItems.length),r=t.filter(e=>this.viewItems[e].priority===`low`),i=t.filter(e=>this.viewItems[e].priority===`high`);this.resize(this.viewItems.length-1,e-n,void 0,r,i)}this.distributeEmptySpace(),this.layoutViews()}relayout(e,t){let n=this.viewItems.reduce((e,t)=>e+t.size,0);this.resize(this.viewItems.length-1,this._size-n,void 0,e,t),this.distributeEmptySpace(),this.layoutViews(),this.saveProportions()}distributeEmptySpace(e){let t=0;for(let e of this.viewItems)t+=e.size;let n=this.size-t;if(n===0)return;let r=Nt(this.viewItems.length-1,-1),i=!1;for(let e of this.viewItems)if(e.priority===`low`||e.priority===`high`){i=!0;break}if(i){let e=r.filter(e=>this.viewItems[e].priority===`low`),t=r.filter(e=>this.viewItems[e].priority===`high`);for(let e of t)Dt(r,e);for(let t of e)Ot(r,t)}typeof e==`number`&&Ot(r,e);for(let e=0;n!==0&&e<r.length;e++){let t=this.viewItems[r[e]],i=jt(t.size+n,t.minimumSize,t.maximumSize),a=i-t.size;n-=a,t.size=i}}saveProportions(){this.proportionalLayout&&this._contentSize>0&&(this._proportions=this.viewItems.map(e=>e.visible?e.size/this._contentSize:void 0))}layoutViews(){let e=0,t=0;for(let n of this.viewItems)e+=n.size,n.visible&&t++;if(this._contentSize=e,this.updateSashEnablement(),this.viewItems.length===0)return;let n=Math.max(0,t-1),r=this.margin*n/Math.max(1,t),i=0,a=[],o=0;this.viewItems.forEach((e,t)=>{i+=this.viewItems[t].size,a.push(i),o+=+!!e.visible;let s=e.visible?e.size-r:0,c=Math.max(0,o-1),l=t===0||c===0?0:a[t-1]+c/n*r;if(t<this.viewItems.length-1){let n=e.visible?l+s-2+this.margin/2:l,r=this.sashes[t];this._orientation===`HORIZONTAL`&&It(r,`${n}px`,`0px`),this._orientation===`VERTICAL`&&It(r,`0px`,`${n}px`)}this._orientation===`HORIZONTAL`&&(e.setContainerGeometry(`width`,`${s}px`),e.setContainerGeometry(`left`,`${l}px`),e.setContainerGeometry(`top`,``),e.setContainerGeometry(`height`,``)),this._orientation===`VERTICAL`&&(e.setContainerGeometry(`height`,`${s}px`),e.setContainerGeometry(`top`,`${l}px`),e.setContainerGeometry(`width`,``),e.setContainerGeometry(`left`,``)),e.view.layout(e.size-r,this._orthogonalSize)})}findFirstSnapIndex(e){for(let t of e){let e=this.viewItems[t];if(e.visible&&e.snap)return t}for(let t of e){let e=this.viewItems[t];if(e.visible&&e.maximumSize-e.minimumSize>0)return;if(!e.visible&&e.snap)return t}}updateSashEnablement(){if(this.sashes.length===0)return;let e=!1,t=this.viewItems.map(t=>e=t.size-t.minimumSize>0||e);e=!1;let n=this.viewItems.map(t=>e=t.maximumSize-t.size>0||e),r=[...this.viewItems].reverse();e=!1;let i=r.map(t=>e=t.size-t.minimumSize>0||e).reverse();e=!1;let a=r.map(t=>e=t.maximumSize-t.size>0||e).reverse(),o=0;for(let e=0;e<this.sashes.length;e++){let r=this.sashes[e],s=this.viewItems[e];o+=s.size;let c=!(t[e]&&a[e+1]),l=!(n[e]&&i[e+1]);if(c&&l){let n=Nt(e,-1),a=Nt(e+1,this.viewItems.length),s=this.findFirstSnapIndex(n),c=this.findFirstSnapIndex(a),l=typeof s==`number`&&!this.viewItems[s].visible,u=typeof c==`number`&&!this.viewItems[c].visible;l&&i[e]&&(o>0||this.startSnappingEnabled)?this.updateSash(r,1):u&&t[e]&&(o<this._contentSize||this.endSnappingEnabled)?this.updateSash(r,0):this.updateSash(r,2)}else c&&!l?this.updateSash(r,1):!c&&l?this.updateSash(r,0):this.updateSash(r,3)}}updateSash(e,t){it(e.container,`dv-disabled`,t===2),it(e.container,`dv-enabled`,t===3),it(e.container,`dv-maximum`,t===0),it(e.container,`dv-minimum`,t===1)}createViewContainer(){let e=document.createElement(`div`);return e.className=`dv-view-container`,e}createSashContainer(){let e=document.createElement(`div`);return e.className=`dv-sash-container`,e}createContainer(){let e=document.createElement(`div`);return e.className=`dv-split-view-container ${this._orientation===`HORIZONTAL`?`dv-horizontal`:`dv-vertical`}`,e}dispose(){this._onDidSashEnd.dispose(),this._onDidAddView.dispose(),this._onDidRemoveView.dispose();for(let e=0;e<this.element.children.length;e++)if(this.element.children.item(e)===this.element){this.element.remove();break}for(let e of this.viewItems)e.dispose();this.element.remove()}},zt=class{get minimumWidth(){return this.view.minimumWidth}get maximumWidth(){return this.view.maximumWidth}get minimumHeight(){return this.view.minimumHeight}get maximumHeight(){return this.view.maximumHeight}get priority(){return this.view.priority}get snap(){return this.view.snap}get minimumSize(){return this.orientation===`HORIZONTAL`?this.minimumHeight:this.minimumWidth}get maximumSize(){return this.orientation===`HORIZONTAL`?this.maximumHeight:this.maximumWidth}get minimumOrthogonalSize(){return this.orientation===`HORIZONTAL`?this.minimumWidth:this.minimumHeight}get maximumOrthogonalSize(){return this.orientation===`HORIZONTAL`?this.maximumWidth:this.maximumHeight}get orthogonalSize(){return this._orthogonalSize}get size(){return this._size}get element(){return this.view.element}get width(){return this.orientation===`HORIZONTAL`?this.orthogonalSize:this.size}get height(){return this.orientation===`HORIZONTAL`?this.size:this.orthogonalSize}constructor(e,t,n,r=0){this.view=e,this.orientation=t,this._onDidChange=new $,this.onDidChange=this._onDidChange.event,this._orthogonalSize=n,this._size=r,this._disposable=this.view.onDidChange(e=>{e?this._onDidChange.fire({size:this.orientation===`VERTICAL`?e.width:e.height,orthogonalSize:this.orientation===`VERTICAL`?e.height:e.width}):this._onDidChange.fire({})})}setVisible(e){this.view.setVisible&&this.view.setVisible(e)}layout(e,t){this._size=e,this._orthogonalSize=t,this.view.layout(this.width,this.height)}dispose(){this._onDidChange.dispose(),this._disposable.dispose()}},Bt=class e extends Q{get width(){return this.orientation===`HORIZONTAL`?this.size:this.orthogonalSize}get height(){return this.orientation===`HORIZONTAL`?this.orthogonalSize:this.size}get minimumSize(){if(this._cachedMinimumSize===void 0){let e=0;for(let t=0;t<this.children.length;t++)this.splitview.isViewVisible(t)&&(e=Math.max(e,this.children[t].minimumOrthogonalSize));this._cachedMinimumSize=e}return this._cachedMinimumSize}get maximumSize(){if(this._cachedMaximumSize===void 0){let e=1/0;for(let t=0;t<this.children.length;t++)this.splitview.isViewVisible(t)&&(e=Math.min(e,this.children[t].maximumOrthogonalSize));this._cachedMaximumSize=e}return this._cachedMaximumSize}get minimumOrthogonalSize(){return this.splitview.minimumSize}get maximumOrthogonalSize(){return this.splitview.maximumSize}get orthogonalSize(){return this._orthogonalSize}get size(){return this._size}get minimumWidth(){return this.orientation===`HORIZONTAL`?this.minimumOrthogonalSize:this.minimumSize}get minimumHeight(){return this.orientation===`HORIZONTAL`?this.minimumSize:this.minimumOrthogonalSize}get maximumWidth(){return this.orientation===`HORIZONTAL`?this.maximumOrthogonalSize:this.maximumSize}get maximumHeight(){return this.orientation===`HORIZONTAL`?this.maximumSize:this.maximumOrthogonalSize}get priority(){return this._cachedPriority??=this.computePriority(),this._cachedPriority}computePriority(){if(this.children.length===0)return`normal`;let e=!1,t=!1;for(let n of this.children){let r=n.priority??`normal`;r===`high`?e=!0:r===`low`&&(t=!0)}return e?`high`:t?`low`:`normal`}invalidateCachedSizes(){this._cachedMinimumSize=void 0,this._cachedMaximumSize=void 0,this._cachedPriority=void 0}get disabled(){return this.splitview.disabled}set disabled(e){this.splitview.disabled=e}get margin(){return this.splitview.margin}set margin(t){this.splitview.margin=t,this.children.forEach(n=>{n instanceof e&&(n.margin=t)})}constructor(e,t,n,r,i,a,o,s){if(super(),this.orientation=e,this.proportionalLayout=t,this.styles=n,this._childrenDisposable=We.NONE,this.children=[],this._onDidChange=new $,this.onDidChange=this._onDidChange.event,this._onDidVisibilityChange=new $,this.onDidVisibilityChange=this._onDidVisibilityChange.event,this._orthogonalSize=i,this._size=r,this.element=document.createElement(`div`),this.element.className=`dv-branch-node`,s){let e={views:s.map(e=>({view:e.node,size:e.node.size,visible:e.visible??!0})),size:this.orthogonalSize};this.children=s.map(e=>e.node),this.splitview=new Rt(this.element,{orientation:this.orientation,descriptor:e,proportionalLayout:t,styles:n,margin:o})}else this.splitview=new Rt(this.element,{orientation:this.orientation,proportionalLayout:t,styles:n,margin:o}),this.splitview.layout(this.size,this.orthogonalSize);this.disabled=a,this.addDisposables(this._onDidChange,this._onDidVisibilityChange,this.splitview.onDidSashEnd(()=>{this._onDidChange.fire({})})),this.setupChildrenEvents()}setVisible(e){}isChildVisible(e){if(e<0||e>=this.children.length)throw Error(`Invalid index`);return this.splitview.isViewVisible(e)}setChildVisible(e,t){if(e<0||e>=this.children.length)throw Error(`Invalid index`);if(this.splitview.isViewVisible(e)===t)return;let n=this.splitview.contentSize===0;this.splitview.setViewVisible(e,t),this.invalidateCachedSizes();let r=this.splitview.contentSize===0;(t&&n||!t&&r)&&this._onDidVisibilityChange.fire({visible:t})}moveChild(e,t){if(e===t)return;if(e<0||e>=this.children.length)throw Error(`Invalid from index`);e<t&&t--,this.splitview.moveView(e,t);let n=this._removeChild(e);this._addChild(n,t)}getChildSize(e){if(e<0||e>=this.children.length)throw Error(`Invalid index`);return this.splitview.getViewSize(e)}resizeChild(e,t){if(e<0||e>=this.children.length)throw Error(`Invalid index`);this.splitview.resizeView(e,t)}layout(e,t){this._size=t,this._orthogonalSize=e,this.splitview.layout(t,e)}addChild(e,t,n,r){if(n<0||n>this.children.length)throw Error(`Invalid index`);this.splitview.addView(e,t,n,r),this._addChild(e,n)}getChildCachedVisibleSize(e){if(e<0||e>=this.children.length)throw Error(`Invalid index`);return this.splitview.getViewCachedVisibleSize(e)}removeChild(e,t){if(e<0||e>=this.children.length)throw Error(`Invalid index`);return this.splitview.removeView(e,t),this._removeChild(e)}_addChild(e,t){this.children.splice(t,0,e),this.setupChildrenEvents()}_removeChild(e){let[t]=this.children.splice(e,1);return this.setupChildrenEvents(),t}setupChildrenEvents(){this.invalidateCachedSizes(),this._childrenDisposable.dispose(),this._childrenDisposable=new Q(Ke.any(...this.children.map(e=>e.onDidChange))(e=>{this.invalidateCachedSizes(),this._onDidChange.fire({size:e.orthogonalSize})}),...this.children.map((t,n)=>t instanceof e?t.onDidVisibilityChange(({visible:e})=>{this.setChildVisible(n,e)}):We.NONE))}dispose(){this._childrenDisposable.dispose(),this.splitview.dispose(),this.children.forEach(e=>e.dispose()),super.dispose()}};function Vt(e,t){if(e instanceof zt)return e;if(e instanceof Bt)return Vt(e.children[t?e.children.length-1:0],t);throw Error(`invalid node`)}function Ht(e,t,n){if(e instanceof Bt){let r=new Bt(e.orientation,e.proportionalLayout,e.styles,t,n,e.disabled,e.margin);for(let t=e.children.length-1;t>=0;t--){let n=e.children[t];r.addChild(Ht(n,n.size,n.orthogonalSize),n.size,0,!0)}return r}return new zt(e.view,e.orientation,n)}function Ut(e,t,n){if(e instanceof Bt){let r=new Bt(Yt(e.orientation),e.proportionalLayout,e.styles,t,n,e.disabled,e.margin),i=0;for(let a=e.children.length-1;a>=0;a--){let o=e.children[a],s=o instanceof Bt?o.orthogonalSize:o.size,c=e.size===0?0:Math.round(t*s/e.size);i+=c,a===0&&(c+=t-i),r.addChild(Ut(o,n,c),c,0,!0)}return r}return new zt(e.view,Yt(e.orientation),n)}function Wt(e){let t=e.parentElement;if(!t)throw Error(`Invalid grid element`);let n=t.firstElementChild,r=0;for(;n!==e&&n!==t.lastElementChild&&n;)n=n.nextElementSibling,r++;return r}function Gt(e){let t=e.parentElement;if(!t)throw Error(`Invalid grid element`);if(/\bdv-grid-view\b/.test(t.className))return[];let n=Wt(t),r=t.parentElement.parentElement.parentElement;return[...Gt(r),n]}function Kt(e,t,n){if(Jt(e,t)===qt(n)){let[e,r]=Tt(t),i=r;return(n===`right`||n===`bottom`)&&(i+=1),[...e,i]}{let e=+(n===`right`||n===`bottom`);return[...t,e]}}function qt(e){return e===`top`||e===`bottom`?`VERTICAL`:`HORIZONTAL`}function Jt(e,t){return t.length%2==0?Yt(e):e}var Yt=e=>e===`HORIZONTAL`?`VERTICAL`:`HORIZONTAL`;function Xt(e){return!!e.children}var Zt=(e,t)=>{let n=t===`VERTICAL`?e.box.width:e.box.height;if(!Xt(e))return typeof e.cachedVisibleSize==`number`?{type:`leaf`,data:e.view.toJSON(),size:e.cachedVisibleSize,visible:!1}:{type:`leaf`,data:e.view.toJSON(),size:n};let r=e.children.map(e=>Zt(e,Yt(t)));return typeof e.cachedVisibleSize==`number`?{type:`branch`,data:r,size:e.cachedVisibleSize,visible:!1}:{type:`branch`,data:r,size:n}},Qt=class{get length(){return this._root?this._root.children.length:0}get orientation(){return this.root.orientation}set orientation(e){if(this.root.orientation===e)return;let{size:t,orthogonalSize:n}=this.root;this.root=Ut(this.root,n,t),this.root.layout(t,n)}get width(){return this.root.width}get height(){return this.root.height}get minimumWidth(){return this.root.minimumWidth}get minimumHeight(){return this.root.minimumHeight}get maximumWidth(){return this.root.maximumWidth}get maximumHeight(){return this.root.maximumHeight}get locked(){return this._locked}set locked(e){this._locked=e;let t=[this.root];for(;t.length>0;){let n=t.pop();n instanceof Bt&&(n.disabled=e,t.push(...n.children))}}get margin(){return this._margin}set margin(e){this._margin=e,this.root.margin=e}maximizedView(){return this._maximizedNode?.leaf.view}hasMaximizedView(){return this._maximizedNode!==void 0}maximizeView(e){let t=Gt(e.element),[n,r]=this.getNode(t);if(!(r instanceof zt)||this._maximizedNode?.leaf===r)return;this.hasMaximizedView()&&this.exitMaximizedView(),Zt(this.getView(),this.orientation);let i=[];function a(e,t){for(let n=0;n<e.children.length;n++){let r=e.children[n];r instanceof zt?r!==t&&(e.isChildVisible(n)?e.setChildVisible(n,!1):i.push(r)):a(r,t)}}a(this.root,r),this._maximizedNode={leaf:r,hiddenOnMaximize:i},this._onDidMaximizedNodeChange.fire({view:r.view,isMaximized:!0})}exitMaximizedView(){if(!this._maximizedNode)return;let e=this._maximizedNode.hiddenOnMaximize;function t(n){for(let r=n.children.length-1;r>=0;r--){let i=n.children[r];i instanceof zt?e.includes(i)||n.setChildVisible(r,!0):t(i)}}t(this.root);let n=this._maximizedNode.leaf;this._maximizedNode=void 0,this._onDidMaximizedNodeChange.fire({view:n.view,isMaximized:!1})}serialize(){let e=this.maximizedView(),t;e&&(t=Gt(e.element));let n=this._onDidMaximizedNodeChange.pause();try{this.hasMaximizedView()&&this.exitMaximizedView();let n={root:Zt(this.getView(),this.orientation),width:this.width,height:this.height,orientation:this.orientation};return t&&(n.maximizedNode={location:t}),e&&this.maximizeView(e),n}finally{n.dispose()}}dispose(){this.disposable.dispose(),this._onDidChange.dispose(),this._onDidMaximizedNodeChange.dispose(),this._onDidViewVisibilityChange.dispose(),this.root.dispose(),this._maximizedNode=void 0,this.element.remove()}clear(){let e=this.root.orientation;this.root=new Bt(e,this.proportionalLayout,this.styles,this.root.size,this.root.orthogonalSize,this.locked,this.margin)}deserialize(e,t){let n=e.orientation,r=n===`VERTICAL`?e.height:e.width;if(this._deserialize(e.root,n,t,r),this.layout(e.width,e.height),e.maximizedNode){let t=e.maximizedNode.location,[n,r]=this.getNode(t);if(!(r instanceof zt))return;this.maximizeView(r.view)}}_deserialize(e,t,n,r){this.root=this._deserializeNode(e,t,n,r)}_deserializeNode(e,t,n,r){let i;if(e.type===`branch`){let a=e.data.map(r=>({node:this._deserializeNode(r,Yt(t),n,e.size),visible:r.visible}));i=new Bt(t,this.proportionalLayout,this.styles,e.size,r,this.locked,this.margin,a)}else{let o=n.fromJSON(e);if(typeof e.visible==`boolean`){var a;(a=o.setVisible)==null||a.call(o,e.visible)}i=new zt(o,t,r,e.size)}return i}get root(){return this._root}set root(e){let t=this._root;t&&(t.dispose(),this._maximizedNode=void 0,t.element.remove()),this._root=e,this.element.appendChild(this._root.element),this.disposable.value=this._root.onDidChange(e=>{this._onDidChange.fire(e)})}normalize(){if(!this._root||this._root.children.length!==1)return;let e=this.root,t=e.children[0];if(t instanceof zt)return;e.element.remove();let n=e.removeChild(0);e.dispose(),n.dispose(),this._root=Ht(t,t.size,t.orthogonalSize),this.element.appendChild(this._root.element),this.disposable.value=this._root.onDidChange(e=>{this._onDidChange.fire(e)})}insertOrthogonalSplitviewAtRoot(){if(!this._root)return;let e=this.root;if(e.element.remove(),this._root=new Bt(Yt(e.orientation),this.proportionalLayout,this.styles,this.root.orthogonalSize,this.root.size,this.locked,this.margin),e.children.length!==0){if(e.children.length===1){let t=e.children[0];e.removeChild(0).dispose(),e.dispose(),this._root.addChild(Ut(t,t.orthogonalSize,t.size),Lt.Distribute,0)}else this._root.addChild(e,Lt.Distribute,0)}this.element.appendChild(this._root.element),this.disposable.value=this._root.onDidChange(e=>{this._onDidChange.fire(e)})}next(e){return this.progmaticSelect(e)}previous(e){return this.progmaticSelect(e,!0)}getView(e){let t=e?this.getNode(e)[1]:this.root;return this._getViews(t,this.orientation)}_getViews(e,t,n){let r={height:e.height,width:e.width};if(e instanceof zt)return{box:r,view:e.view,cachedVisibleSize:n};let i=[];for(let n=0;n<e.children.length;n++){let r=e.children[n],a=e.getChildCachedVisibleSize(n);i.push(this._getViews(r,Yt(t),a))}return{box:r,children:i,cachedVisibleSize:n}}progmaticSelect(e,t=!1){let[n,r]=this.getNode(e);if(!(r instanceof zt))throw TypeError(`invalid location`);for(let r=n.length-1;r>-1;r--){let i=n[r],a=e[r]||0;if(t?a-1>-1:a+1<i.children.length)return Vt(i.children[t?a-1:a+1],t)}return Vt(this.root,t)}constructor(e,t,n,r,i){this.proportionalLayout=e,this.styles=t,this._locked=!1,this._margin=0,this._maximizedNode=void 0,this.disposable=new Ge,this._onDidChange=new $,this.onDidChange=this._onDidChange.event,this._onDidViewVisibilityChange=new $,this.onDidViewVisibilityChange=this._onDidViewVisibilityChange.event,this._onDidMaximizedNodeChange=new $,this.onDidMaximizedNodeChange=this._onDidMaximizedNodeChange.event,this.element=document.createElement(`div`),this.element.className=`dv-grid-view`,this._locked=r??!1,this._margin=i??0,this.root=new Bt(n,e,t,0,0,this.locked,this.margin)}isViewVisible(e){let[t,n]=Tt(e),[,r]=this.getNode(t);if(!(r instanceof Bt))throw TypeError(`Invalid from location`);return r.isChildVisible(n)}setViewVisible(e,t){this.hasMaximizedView()&&this.exitMaximizedView();let[n,r]=Tt(e),[,i]=this.getNode(n);if(!(i instanceof Bt))throw TypeError(`Invalid from location`);this._onDidViewVisibilityChange.fire(),i.setChildVisible(r,t)}moveView(e,t,n){this.hasMaximizedView()&&this.exitMaximizedView();let[,r]=this.getNode(e);if(!(r instanceof Bt))throw TypeError(`Invalid location`);r.moveChild(t,n)}addView(e,t,n){this.hasMaximizedView()&&this.exitMaximizedView();let[r,i]=Tt(n),[a,o]=this.getNode(r);if(o instanceof Bt){let n=new zt(e,Yt(o.orientation),o.orthogonalSize);o.addChild(n,t,i)}else{let[n,...s]=[...a].reverse(),[c,...l]=[...r].reverse(),u=0,d=n.getChildCachedVisibleSize(c);typeof d==`number`&&(u=Lt.Invisible(d)),n.removeChild(c).dispose();let f=new Bt(o.orientation,this.proportionalLayout,this.styles,o.size,o.orthogonalSize,this.locked,this.margin);n.addChild(f,o.size,c);let p=new zt(o.view,n.orientation,o.size);f.addChild(p,u,0),typeof t!=`number`&&t.type===`split`&&(t={type:`split`,index:0});let m=new zt(e,n.orientation,o.size);f.addChild(m,t,i)}}remove(e,t){let n=Gt(e.element);return this.removeView(n,t)}removeView(e,t){this.hasMaximizedView()&&this.exitMaximizedView();let[n,r]=Tt(e),[i,a]=this.getNode(n);if(!(a instanceof Bt))throw TypeError(`Invalid location`);let o=a.children[r];if(!(o instanceof zt))throw TypeError(`Invalid location`);if(a.removeChild(r,t),o.dispose(),a.children.length!==1)return o.view;let s=a.children[0];if(i.length===0)return s instanceof zt?o.view:(a.removeChild(0,t),this.root=s,o.view);let[c,...l]=[...i].reverse(),[u,...d]=[...n].reverse(),f=a.isChildVisible(0);a.removeChild(0,t);let p=c.children.map((e,t)=>c.getChildSize(t));if(c.removeChild(u,t).dispose(),s instanceof Bt){p.splice(u,1,...s.children.map(e=>e.size));for(let e=0;e<s.children.length;e++){let t=s.children[e];c.addChild(t,t.size,u+e)}for(;s.children.length>0;)s.removeChild(0)}else{let e=new zt(s.view,Yt(s.orientation),s.size),t=f?s.orthogonalSize:Lt.Invisible(s.orthogonalSize);c.addChild(e,t,u)}s.dispose();for(let e=0;e<p.length;e++)c.resizeChild(e,p[e]);return o.view}layout(e,t){let[n,r]=this.root.orientation===`HORIZONTAL`?[t,e]:[e,t];this.root.layout(n,r)}getNode(e,t=this.root,n=[]){if(e.length===0)return[n,t];if(!(t instanceof Bt))throw TypeError(`Invalid location`);let[r,...i]=e;if(r<0||r>=t.children.length)throw Error(`Invalid location`);let a=t.children[r];return n.push(t),this.getNode(i,a,n)}},$t=class extends Q{get element(){return this._element}get disableResizing(){return this._disableResizing}set disableResizing(e){this._disableResizing=e}constructor(e,t=!1){super(),this._lastWidth=-1,this._lastHeight=-1,this._disableResizing=t,this._element=e,this.addDisposables(tt(this._element,e=>{if(this.isDisposed||this.disableResizing||!this._element.offsetParent||!pt(this._element))return;let t=Math.round(e.contentRect.width),n=Math.round(e.contentRect.height);(t!==this._lastWidth||n!==this._lastHeight)&&(this._lastWidth=t,this._lastHeight=n,this.layout(t,n))}))}},en=Mt();function tn(e){switch(e){case`left`:return`left`;case`right`:return`right`;case`above`:return`top`;case`below`:return`bottom`;default:return`center`}}var nn=class extends $t{get id(){return this._id}get size(){return this._groups.size}get groups(){return Array.from(this._groups.values()).map(e=>e.value)}get width(){return this.gridview.width}get height(){return this.gridview.height}get minimumHeight(){return this.gridview.minimumHeight}get maximumHeight(){return this.gridview.maximumHeight}get minimumWidth(){return this.gridview.minimumWidth}get maximumWidth(){return this.gridview.maximumWidth}get activeGroup(){return this._activeGroup}get locked(){return this.gridview.locked}set locked(e){this.gridview.locked=e}constructor(e,t){super(document.createElement(`div`),t.disableAutoResizing),this._id=en.next(),this._groups=new Map,this._onDidRemove=new $,this.onDidRemove=this._onDidRemove.event,this._onDidAdd=new $,this.onDidAdd=this._onDidAdd.event,this._onDidMaximizedChange=new $,this.onDidMaximizedChange=this._onDidMaximizedChange.event,this._onDidActiveChange=new $,this.onDidActiveChange=this._onDidActiveChange.event,this._bufferOnDidLayoutChange=new $e,this.onDidLayoutChange=this._bufferOnDidLayoutChange.onEvent,this._onDidViewVisibilityChangeMicroTaskQueue=new $e,this.onDidViewVisibilityChangeMicroTaskQueue=this._onDidViewVisibilityChangeMicroTaskQueue.onEvent,this.element.style.height=`100%`,this.element.style.width=`100%`,this._classNames=new vt(this.element),this._classNames.setClassNames(t.className??``),e.appendChild(this.element),this.gridview=new Qt(!!t.proportionalLayout,t.styles,t.orientation,t.locked,t.margin),this.gridview.locked=!!t.locked,this.element.appendChild(this.gridview.element),this.layout(0,0,!0),this.addDisposables(this.gridview.onDidMaximizedNodeChange(e=>{this._onDidMaximizedChange.fire({panel:e.view,isMaximized:e.isMaximized})}),this.gridview.onDidViewVisibilityChange(()=>this._onDidViewVisibilityChangeMicroTaskQueue.fire()),this.onDidViewVisibilityChangeMicroTaskQueue(()=>{this.forceRelayout()}),We.from(()=>{this.element.remove()}),this.gridview.onDidChange(()=>{this._bufferOnDidLayoutChange.fire()}),Ke.any(this.onDidAdd,this.onDidRemove,this.onDidActiveChange)(()=>{this._bufferOnDidLayoutChange.fire()}),this._onDidMaximizedChange,this._onDidViewVisibilityChangeMicroTaskQueue,this._bufferOnDidLayoutChange)}setVisible(e,t){this.gridview.setViewVisible(Gt(e.element),t),this._bufferOnDidLayoutChange.fire()}isVisible(e){return this.gridview.isViewVisible(Gt(e.element))}updateOptions(e){e.proportionalLayout,e.orientation&&(this.gridview.orientation=e.orientation),`styles`in e,`disableAutoResizing`in e&&(this.disableResizing=e.disableAutoResizing??!1),`locked`in e&&(this.locked=e.locked??!1),`margin`in e&&(this.gridview.margin=e.margin??0),`className`in e&&this._classNames.setClassNames(e.className??``)}maximizeGroup(e){this.gridview.maximizeView(e),this.doSetGroupActive(e)}isMaximizedGroup(e){return this.gridview.maximizedView()===e}exitMaximizedGroup(){this.gridview.exitMaximizedView()}hasMaximizedGroup(){return this.gridview.hasMaximizedView()}doAddGroup(e,t=[0],n,r=this.gridview){r.addView(e,n??Lt.Distribute,t),this._onDidAdd.fire(e)}doRemoveGroup(e,t){if(!this._groups.has(e.id))throw Error(`invalid operation`);let n=this._groups.get(e.id),r=this.gridview.remove(e,Lt.Distribute);if(n&&!t?.skipDispose&&(n.disposable.dispose(),n.value.dispose(),this._groups.delete(e.id),this._onDidRemove.fire(e)),!t?.skipActive&&this._activeGroup===e){let e=Array.from(this._groups.values());this.doSetGroupActive(e.length>0?e[0].value:void 0)}return r}getPanel(e){return this._groups.get(e)?.value}doSetGroupActive(e){this._activeGroup!==e&&(this._activeGroup&&this._activeGroup.setActive(!1),e&&e.setActive(!0),this._activeGroup=e,this._onDidActiveChange.fire(e))}removeGroup(e){this.doRemoveGroup(e)}activateNext(e){if(e??={},!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}let t=Gt(e.group.element),n=this.gridview.next(t)?.view;this.doSetGroupActive(n)}activatePrevious(e){if(e??={},!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}let t=Gt(e.group.element),n=this.gridview.previous(t)?.view;this.doSetGroupActive(n)}forceRelayout(){this.layout(this.width,this.height,!0)}layout(e,t,n){(n||e!==this.width||t!==this.height)&&(this.gridview.element.style.height=`${t}px`,this.gridview.element.style.width=`${e}px`,this.gridview.layout(e,t))}dispose(){this._onDidActiveChange.dispose(),this._onDidAdd.dispose(),this._onDidRemove.dispose();for(let e of this.groups)e.dispose();this.gridview.dispose(),super.dispose()}};function rn(e){"@babel/helpers - typeof";return rn=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},rn(e)}function an(e,t){if(rn(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(rn(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function on(e){var t=an(e,`string`);return rn(t)==`symbol`?t:t+``}function sn(e,t,n){return(t=on(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function cn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function ln(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?cn(Object(n),!0).forEach(function(t){sn(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):cn(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function un(e,t){return e===`center`?`Tab into ${t}`:`Split ${e} of ${t}`}function dn(e,t){return e===`center`?`docked into ${t}`:`split ${e} of ${t}`}var fn={panelOpened:e=>`${e} opened`,panelClosed:e=>`${e} closed`,groupMaximized:e=>`${e} maximized`,groupRestored:e=>`${e} restored`,groupFloated:e=>`${e} floated`,groupDocked:e=>`${e} docked`,groupPoppedOut:e=>`${e} opened in a new window`,closeTab:e=>`Close ${e}`,closeTabPlain:()=>`Close`,movePickTarget:(e,t,n,r)=>`Moving ${e}. Target ${t}, ${n} of ${r}. Enter to choose where, Escape to cancel.`,movePickEdge:(e,t)=>`${un(e,t)}. Arrows to change, Enter to confirm, Escape to go back.`,moveCommitted:(e,t,n)=>`${e} ${dn(n,t)}.`,moveCancelled:()=>`Move cancelled.`,moveNotAllowed:()=>`That move is not allowed.`,moveFloated:e=>`${e} floated.`};function pn(e){return e?ln(ln({},fn),e):fn}var mn=class{get id(){return this.component.id}get width(){return this.component.width}get height(){return this.component.height}get minimumHeight(){return this.component.minimumHeight}get maximumHeight(){return this.component.maximumHeight}get minimumWidth(){return this.component.minimumWidth}get maximumWidth(){return this.component.maximumWidth}get size(){return this.component.size}get tabGroupColors(){return this.component.tabGroupColorPalette.entries()}get totalPanels(){return this.component.totalPanels}get onDidActiveGroupChange(){return this.component.onDidActiveGroupChange}get onDidAddGroup(){return this.component.onDidAddGroup}get onDidRemoveGroup(){return this.component.onDidRemoveGroup}get onDidActivePanelChange(){return this.component.onDidActivePanelChange}get onDidPanelPinnedChange(){return this.component.onDidPanelPinnedChange}get onDidAddPanel(){return this.component.onDidAddPanel}get onDidRemovePanel(){return this.component.onDidRemovePanel}get onDidMovePanel(){return this.component.onDidMovePanel}get onDidLayoutFromJSON(){return this.component.onDidLayoutFromJSON}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidDrop(){return this.component.onDidDrop}get onWillDrop(){return this.component.onWillDrop}get onWillMutateLayout(){return this.component.onWillMutateLayout}get onDidMutateLayout(){return this.component.onDidMutateLayout}get onWillShowOverlay(){return this.component.onWillShowOverlay}get onWillDragGroup(){return this.component.onWillDragGroup}get onWillDragPanel(){return this.component.onWillDragPanel}get onUnhandledDragOver(){return this.component.onUnhandledDragOver}get onDidPopoutGroupSizeChange(){return this.component.onDidPopoutGroupSizeChange}get onDidPopoutGroupPositionChange(){return this.component.onDidPopoutGroupPositionChange}get onDidAddPopoutGroup(){return this.component.onDidAddPopoutGroup}get onDidRemovePopoutGroup(){return this.component.onDidRemovePopoutGroup}get onDidOpenPopoutWindowFail(){return this.component.onDidOpenPopoutWindowFail}getPopouts(){return this.component.getPopouts()}get onDidCreateTabGroup(){return this.component.onDidCreateTabGroup}get onDidDestroyTabGroup(){return this.component.onDidDestroyTabGroup}get onDidAddPanelToTabGroup(){return this.component.onDidAddPanelToTabGroup}get onDidRemovePanelFromTabGroup(){return this.component.onDidRemovePanelFromTabGroup}get onDidTabGroupChange(){return this.component.onDidTabGroupChange}get onDidTabGroupCollapsedChange(){return this.component.onDidTabGroupCollapsedChange}get panels(){return this.component.panels}get groups(){return this.component.groups}adjacentGroupInDirection(e,t){return this.component.adjacentGroupInDirection(e,t)}get activePanel(){return this.component.activePanel}get activeGroup(){return this.component.activeGroup}get messages(){return pn(this.component.options.messages)}constructor(e){this.component=e}focus(){this.component.focus()}getPanel(e){return this.component.getGroupPanel(e)}layout(e,t,n=!1){this.component.layout(e,t,n)}addPanel(e){return this.component.withOrigin(`api`,()=>this.component.addPanel(e))}removePanel(e){this.component.withOrigin(`api`,()=>this.component.removePanel(e))}addGroup(e){return this.component.withOrigin(`api`,()=>this.component.addGroup(e))}closeAllGroups(){return this.component.withOrigin(`api`,()=>this.component.closeAllGroups())}removeGroup(e){this.component.withOrigin(`api`,()=>this.component.removeGroup(e))}getGroup(e){return this.component.getPanel(e)}addFloatingGroup(e,t){return this.component.withOrigin(`api`,()=>this.component.addFloatingGroup(e,t))}fromJSON(e,t){this.component.withOrigin(`api`,()=>this.component.fromJSON(e,t))}toJSON(){return this.component.toJSON()}clear(){this.component.withOrigin(`api`,()=>this.component.clear())}undo(){this.component.undo()}redo(){this.component.redo()}get canUndo(){return this.component.canUndo}get canRedo(){return this.component.canRedo}clearHistory(){this.component.clearHistory()}get onDidChangeHistory(){return this.component.onDidChangeHistory}get smartGuidesEnabled(){return this.component.smartGuidesEnabled}setSmartGuidesEnabled(e){this.component.setSmartGuidesEnabled(e)}updateSmartGuidesOptions(e){this.component.updateSmartGuidesOptions(e)}get onDidSnapFloat(){return this.component.onDidSnapFloat}get onDidSnapTogether(){return this.component.onDidSnapTogether}get popoutRestorationPromise(){return this.component.popoutRestorationPromise}activateNext(e){this.component.activateNext(e)}activatePrevious(e){this.component.activatePrevious(e)}moveToNext(e){this.activateNext(e)}moveToPrevious(e){this.activatePrevious(e)}maximizeGroup(e){this.component.withOrigin(`api`,()=>this.component.maximizeGroup(e.group))}hasMaximizedGroup(){return this.component.hasMaximizedGroup()}exitMaximizedGroup(){this.component.withOrigin(`api`,()=>this.component.exitMaximizedGroup())}get onDidMaximizedGroupChange(){return this.component.onDidMaximizedGroupChange}addPopoutGroup(e,t){return this.component.withOrigin(`api`,()=>this.component.addPopoutGroup(e,t))}addEdgeGroup(e,t){return this.component.addEdgeGroup(e,t)}revealEdgeGroupWithData(e,t,n){this.component.revealEdgeGroupWithData(e,t,n)}getEdgeGroup(e){return this.component.getEdgeGroup(e)}setEdgeGroupVisible(e,t){this.component.setEdgeGroupVisible(e,t)}isEdgeGroupVisible(e){return this.component.isEdgeGroupVisible(e)}removeEdgeGroup(e){this.component.removeEdgeGroup(e)}pinEdgeGroup(e){this.component.pinEdgeGroup(e)}autoHideEdgeGroup(e){this.component.autoHideEdgeGroup(e)}peekEdgeGroup(e,t){this.component.peekEdgeGroup(e,t)}updateOptions(e){this.component.updateOptions(e)}_getGroupModel(e){let t=this.component.getPanel(e);if(!t)throw Error(`dockview: group '${e}' not found`);return t.model}createTabGroup(e){let t=this._getGroupModel(e.groupId);return this.component.withOrigin(`api`,()=>t.createTabGroup({label:e.label,color:e.color,componentParams:e.componentParams}))}dissolveTabGroup(e){let t=this._getGroupModel(e.groupId);this.component.withOrigin(`api`,()=>t.dissolveTabGroup(e.tabGroupId))}addPanelToTabGroup(e){let t=this._getGroupModel(e.groupId);this.component.withOrigin(`api`,()=>t.addPanelToTabGroup(e.tabGroupId,e.panelId,e.index))}removePanelFromTabGroup(e){let t=this._getGroupModel(e.groupId);this.component.withOrigin(`api`,()=>t.removePanelFromTabGroup(e.panelId))}getTabGroups(e){return this._getGroupModel(e.groupId).getTabGroups()}getTabGroupForPanel(e){return this._getGroupModel(e.groupId).getTabGroupForPanel(e.panelId)}moveTabGroup(e){this._getGroupModel(e.groupId).moveTabGroup(e.tabGroupId,e.index)}dispose(){this.component.dispose()}},hn=class extends Q{constructor(e,t){super(),this.element=e,this.callbacks=t,this.target=null,this.registerListeners()}onDragEnter(e){this.target=e.target,this.callbacks.onDragEnter(e)}onDragOver(e){e.preventDefault(),this.callbacks.onDragOver&&this.callbacks.onDragOver(e)}onDragLeave(e){this.target===e.target&&(this.target=null,this.callbacks.onDragLeave(e))}onDragEnd(e){this.target=null,this.callbacks.onDragEnd(e)}onDrop(e){this.callbacks.onDrop(e)}registerListeners(){this.addDisposables(Qe(this.element,`dragenter`,e=>{this.onDragEnter(e)},!0)),this.addDisposables(Qe(this.element,`dragover`,e=>{this.onDragOver(e)},!0)),this.addDisposables(Qe(this.element,`dragleave`,e=>{this.onDragLeave(e)})),this.addDisposables(Qe(this.element,`dragend`,e=>{this.onDragEnd(e)})),this.addDisposables(Qe(this.element,`drop`,e=>{this.onDrop(e)}))}},gn={value:50,type:`percentage`},_n=100,vn=100;function yn(){let e=document.createElement(`div`);e.className=`dv-drop-target-dropzone`;let t=document.createElement(`div`);return t.className=`dv-drop-target-selection`,e.appendChild(t),{dropzone:e,selection:t}}function bn(e,t,n,r){let i=r?.smallWidthBoundary??_n,a=r?.smallHeightBoundary??vn,o=t<i,s=n<a,c=e===`left`,l=e===`right`,u=e===`top`,d=e===`bottom`,f=!o&&l,p=!o&&c,m=!s&&u,h=!s&&d,g=1,_=r?.size??gn;return _.type===`percentage`?g=jt(_.value,0,100)/100:((f||p)&&(g=jt(0,_.value,t)/t),(m||h)&&(g=jt(0,_.value,n)/n)),{isSmallX:o,isSmallY:s,isLeft:c,isRight:l,isTop:u,isBottom:d,rightClass:f,leftClass:p,topClass:m,bottomClass:h,size:g}}function xn(e,t,n,r,i){let a=bn(t,n,r,i),{rightClass:o,leftClass:s,topClass:c,bottomClass:l,size:u}=a,d={top:`0px`,left:`0px`,width:`100%`,height:`100%`};o?(d.left=`${100*(1-u)}%`,d.width=`${100*u}%`):s?d.width=`${100*u}%`:c?d.height=`${100*u}%`:l&&(d.top=`${100*(1-u)}%`,d.height=`${100*u}%`),a.isSmallX&&a.isLeft&&(d.width=`4px`),a.isSmallX&&a.isRight&&(d.left=`${n-4}px`,d.width=`4px`),a.isSmallY&&a.isTop&&(d.height=`4px`),a.isSmallY&&a.isBottom&&(d.top=`${r-4}px`,d.height=`4px`),e.style.top=d.top,e.style.left=d.left,e.style.width=d.width,e.style.height=d.height,e.style.visibility=`visible`,(!e.style.transform||e.style.transform===``)&&(e.style.transform=`translate3d(0, 0, 0)`);let f=a.isSmallX&&(a.isLeft||a.isRight)||a.isSmallY&&(a.isTop||a.isBottom);it(e,`dv-drop-target-small-vertical`,a.isSmallY),it(e,`dv-drop-target-small-horizontal`,a.isSmallX),it(e,`dv-drop-target-selection-line`,f),it(e,`dv-drop-target-left`,a.isLeft),it(e,`dv-drop-target-right`,a.isRight),it(e,`dv-drop-target-top`,a.isTop),it(e,`dv-drop-target-bottom`,a.isBottom),it(e,`dv-drop-target-center`,t===`center`)}function Sn(e,t){let n=`${Math.round(t.top)}px`,r=`${Math.round(t.left)}px`,i=`${Math.round(t.width)}px`,a=`${Math.round(t.height)}px`;return e.style.top!==n||e.style.left!==r||e.style.width!==i||e.style.height!==a}function Cn(e,t){e.style.top=`${Math.round(t.top)}px`,e.style.left=`${Math.round(t.left)}px`,e.style.width=`${Math.round(t.width)}px`,e.style.height=`${Math.round(t.height)}px`,e.style.visibility=`visible`,(!e.style.transform||e.style.transform===``)&&(e.style.transform=`translate3d(0, 0, 0)`)}function wn(e){let t=bn(e.quadrant,e.width,e.height,e.overlayModel),{rightClass:n,leftClass:r,topClass:i,bottomClass:a,size:o}=t,s=e.outlineElement.getBoundingClientRect(),c=e.targetModel.getElements(void 0,e.outlineElement),l=c.root,u=c.overlay,d=l.getBoundingClientRect(),f=s.top-d.top,p=s.left-d.left,m={top:f,left:p,width:e.width,height:e.height};return n?(m.left=p+e.width*(1-o),m.width=e.width*o):r?m.width=e.width*o:i?m.height=e.height*o:a&&(m.top=f+e.height*(1-o),m.height=e.height*o),t.isSmallX&&t.isLeft&&(m.width=4),t.isSmallX&&t.isRight&&(m.left=p+e.width-4,m.width=4),t.isSmallY&&t.isTop&&(m.height=4),t.isSmallY&&t.isBottom&&(m.top=f+e.height-4,m.height=4),Sn(u,m)?(Cn(u,m),u.className=`dv-drop-target-anchor${e.className?` ${e.className}`:``}`,it(u,`dv-drop-target-left`,t.isLeft),it(u,`dv-drop-target-right`,t.isRight),it(u,`dv-drop-target-top`,t.isTop),it(u,`dv-drop-target-bottom`,t.isBottom),it(u,`dv-drop-target-anchor-line`,t.isSmallX&&(t.isLeft||t.isRight)||t.isSmallY&&(t.isTop||t.isBottom)),it(u,`dv-drop-target-center`,e.quadrant===`center`),c.changed&&(it(u,`dv-drop-target-anchor-container-changed`,!0),setTimeout(()=>{it(u,`dv-drop-target-anchor-container-changed`,!1)},10)),{boundsChanged:!0,targetChanged:c.changed}):{boundsChanged:!1,targetChanged:c.changed}}var Tn=class extends qe{get nativeEvent(){return this.options.nativeEvent}get position(){return this.options.position}get edge(){return!!this.options.edge}get edgeGroup(){return!!this.options.edgeGroup}constructor(e){super(),this.options=e}};function En(e){switch(e){case`above`:return`top`;case`below`:return`bottom`;case`left`:return`left`;case`right`:return`right`;case`within`:return`center`;default:throw Error(`invalid direction '${e}'`)}}function Dn(e){switch(e){case`top`:return`above`;case`bottom`:return`below`;case`left`:return`left`;case`right`:return`right`;case`center`:return`within`;default:throw Error(`invalid position '${e}'`)}}var On={value:20,type:`percentage`},kn=class e extends Q{get disabled(){return this._disabled}set disabled(e){this._disabled=e}get state(){return this._state}constructor(t,n){super(),this.element=t,this.options=n,this._edge=!1,this._onDrop=new $,this.onDrop=this._onDrop.event,this._onWillShowOverlay=new $,this.onWillShowOverlay=this._onWillShowOverlay.event,this._disabled=!1,this._acceptedTargetZonesSet=new Set(this.options.acceptedTargetZones),this.dnd=new hn(this.element,{onDragEnter:()=>{var e,t;(e=(t=this.options).getOverrideTarget)==null||(e=e.call(t))==null||e.getElements()},onDragOver:t=>{var n,r;if(this._disabled){this.clearOwnOverlay();return}e.ACTUAL_TARGET=this;let i=(n=this.options).getOverrideTarget?.call(n);if(this._acceptedTargetZonesSet.size===0){this.clearOwnOverlay();return}let a=(r=this.options).getOverlayOutline?.call(r)??this.element,o=a.offsetWidth,s=a.offsetHeight;if(o===0||s===0)return;let c=a.getBoundingClientRect(),l=(t.clientX??0)-c.left,u=(t.clientY??0)-c.top,d=this.resolvePosition(l,u,o,s,t);if(this.isAlreadyUsed(t)){this.removeDropTarget();return}if(d===null){this.clearOwnOverlay();return}let f=d.position;if(!this.options.canDisplayOverlay(t,f)){this.clearOwnOverlay();return}let p=new Tn({nativeEvent:t,position:f,edge:d.edge,edgeGroup:d.edgeGroup});if(this._onWillShowOverlay.fire(p),p.defaultPrevented){this.clearOwnOverlay();return}if(this.markAsUsed(t),d.edge){this.clearOwnOverlay(),this._state=f,this._edge=!0;return}if(this._edge=!1,!i&&!this.targetElement){let e=yn();this.targetElement=e.dropzone,this.overlayElement=e.selection,this._state=`center`,a.classList.add(`dv-drop-target`),a.append(this.targetElement)}this.toggleClasses(f,o,s),this._state=f},onDragLeave:()=>{var e;let t=(e=this.options).getOverrideTarget?.call(e);if(t){var n;this._state=void 0,this._edge=!1,(n=t.scheduleClear)==null||n.call(t);return}this.removeDropTarget()},onDragEnd:t=>{var n;let r=(n=this.options).getOverrideTarget?.call(n);r&&e.ACTUAL_TARGET===this&&this._state&&(t.stopPropagation(),this._onDrop.fire({position:this._state,nativeEvent:t,edge:this._edge})),this.removeDropTarget(),r?.clear()},onDrop:e=>{var t,n;e.preventDefault();let r=this._state,i=this._edge;this.removeDropTarget(),(t=(n=this.options).getOverrideTarget)==null||(t=t.call(n))==null||t.clear(),r&&(e.stopPropagation(),this._onDrop.fire({position:r,nativeEvent:e,edge:i}))}}),this.addDisposables(this._onDrop,this._onWillShowOverlay,this.dnd)}setTargetZones(e){this._acceptedTargetZonesSet=new Set(e)}setOverlayModel(e){this.options.overlayModel=e}dispose(){this.removeDropTarget(),super.dispose()}markAsUsed(t){t[e.USED_EVENT_ID]=!0}isAlreadyUsed(t){let n=t[e.USED_EVENT_ID];return typeof n==`boolean`&&n}toggleClasses(e,t,n){var r;let i=(r=this.options).getOverrideTarget?.call(r);if(i){var a;wn({outlineElement:(a=this.options).getOverlayOutline?.call(a)??this.element,targetModel:i,quadrant:e,width:t,height:n,overlayModel:this.options.overlayModel,className:this.options.className});return}this.overlayElement&&xn(this.overlayElement,e,t,n,this.options.overlayModel)}resolvePosition(e,t,n,r,i){var a;let o=(a=this.options).getPositionResolver?.call(a);if(o){let a=o.resolve({x:e,y:t,width:n,height:r,zones:this._acceptedTargetZonesSet,event:i});return a?{position:a.position,edge:!!a.edge,edgeGroup:!!a.edgeGroup}:null}let s=this.calculateQuadrant(this._acceptedTargetZonesSet,e,t,n,r);return s?{position:s,edge:!1,edgeGroup:!1}:null}calculateQuadrant(e,t,n,r,i){let a=this.options.overlayModel?.activationSize??On;return a.type===`percentage`?An(e,t,n,r,i,a.value):jn(e,t,n,r,i,a.value)}clearOwnOverlay(){let e=this._state!==void 0;if(this.removeDropTarget(),e){var t,n;(t=(n=this.options).getOverrideTarget)==null||(t=t.call(n))==null||t.clear()}}removeDropTarget(){if(this._state=void 0,this._edge=!1,this.targetElement){var e;(e=this.targetElement.parentElement)==null||e.classList.remove(`dv-drop-target`),this.targetElement.remove(),this.targetElement=void 0,this.overlayElement=void 0}}showOverlay(e){var t,n;let r=(t=this.options).getOverrideTarget?.call(t),i=(n=this.options).getOverlayOutline?.call(n)??this.element,a=i.offsetWidth,o=i.offsetHeight;if(!r&&!this.targetElement){let e=yn();this.targetElement=e.dropzone,this.overlayElement=e.selection,i.classList.add(`dv-drop-target`),i.append(this.targetElement)}this.toggleClasses(e,a,o),this._state=e}clearOverlay(){var e,t;this.removeDropTarget(),(e=(t=this.options).getOverrideTarget)==null||(e=e.call(t))==null||e.clear(),this._state=void 0}};kn.USED_EVENT_ID=`__dockview_droptarget_event_is_used__`;function An(e,t,n,r,i,a){let o=100*t/r,s=100*n/i;return e.has(`left`)&&o<a?`left`:e.has(`right`)&&o>100-a?`right`:e.has(`top`)&&s<a?`top`:e.has(`bottom`)&&s>100-a?`bottom`:e.has(`center`)?`center`:null}function jn(e,t,n,r,i,a){return e.has(`left`)&&t<a?`left`:e.has(`right`)&&t>r-a?`right`:e.has(`top`)&&n<a?`top`:e.has(`bottom`)&&n>i-a?`bottom`:e.has(`center`)?`center`:null}function Mn(e,t,n){rt(t,`dv-dragged`),t.style.top=`-9999px`,(n?.ownerDocument??document).body.appendChild(t),e.setDragImage(t,n?.x??0,n?.y??0),setTimeout(()=>{nt(t,`dv-dragged`),t.remove()},0)}var Nn=class e extends Q{static getInstance(){return e._instance??=new e,e._instance}constructor(){super(),this._targets=new Set,this._targetByElement=new Map,this._onDragStart=new $,this.onDragStart=this._onDragStart.event,this._onDragMove=new $,this.onDragMove=this._onDragMove.event,this._onDragEnd=new $,this.onDragEnd=this._onDragEnd.event,this.addDisposables(this._onDragStart,this._onDragMove,this._onDragEnd)}get active(){return this._active}registerTarget(e){return this._targets.add(e),this._targetByElement.set(e.element,e),{dispose:()=>{this._targets.delete(e),this._targetByElement.get(e.element)===e&&this._targetByElement.delete(e.element),this._currentTarget===e&&(this._currentTarget=void 0)}}}beginDrag(e){this._active&&this.cancel();let{pointerEvent:t,source:n}=e,r=e.getData();this._active={pointerId:t.pointerId,startX:t.clientX,startY:t.clientY,source:n},this._lastPointerEvent=t,this._onDragMoveCallback=e.onDragMove,this._onDragEndCallback=e.onDragEnd,this._dataDisposable=r,this._ghost=e.ghost,this._iframeShield=gt(n.ownerDocument??document);let i={clientX:t.clientX,clientY:t.clientY,pointerEvent:t};this._onDragStart.fire(i);let a=n.ownerDocument?.defaultView??globalThis.window;this._moveListener=Qe(a,`pointermove`,e=>{e.pointerId===this._active?.pointerId&&this._handleMove(e)}),this._upListener=Qe(a,`pointerup`,e=>{e.pointerId===this._active?.pointerId&&this._handleEnd(e,!0)}),this._cancelListener=Qe(a,`pointercancel`,e=>{e.pointerId===this._active?.pointerId&&this._handleEnd(e,!1)})}cancel(){var e,t;if(!this._active)return;let n=this._onDragEndCallback,r=this._lastPointerEvent;if((e=this._currentTarget)==null||e.handleDragLeave(),this._teardown(),(t=this._dataDisposable)==null||t.dispose(),this._dataDisposable=void 0,r){let e={clientX:r.clientX,clientY:r.clientY,pointerEvent:r};n?.(e,!1),this._onDragEnd.fire(e)}}_findTargetUnder(e,t){let n=(this._active?.source.ownerDocument??document).elementsFromPoint(e,t);for(let e of n){let t=e;for(;t;){let e=this._targetByElement.get(t);if(e)return e;t=t.parentElement}}}_handleMove(e){var t,n;this._lastPointerEvent=e,(t=this._ghost)==null||t.update(e.clientX,e.clientY);let r={clientX:e.clientX,clientY:e.clientY,pointerEvent:e},i=this._findTargetUnder(e.clientX,e.clientY);if(i!==this._currentTarget){var a;(a=this._currentTarget)==null||a.handleDragLeave(),this._currentTarget=i}i&&i.handleDragOver(r),(n=this._onDragMoveCallback)==null||n.call(this,r),this._onDragMove.fire(r)}_handleEnd(e,t){let n={clientX:e.clientX,clientY:e.clientY,pointerEvent:e};if(t&&this._currentTarget)this._currentTarget.handleDrop(n);else{var r;(r=this._currentTarget)==null||r.handleDragLeave()}let i=this._onDragEndCallback,a=this._dataDisposable;this._teardown(),this._dataDisposable=void 0,setTimeout(()=>a?.dispose(),0),i?.(n,t),this._onDragEnd.fire(n)}_teardown(){var e,t,n,r,i;this._currentTarget=void 0,this._active=void 0,this._lastPointerEvent=void 0,this._onDragMoveCallback=void 0,this._onDragEndCallback=void 0,(e=this._ghost)==null||e.dispose(),this._ghost=void 0,(t=this._iframeShield)==null||t.release(),this._iframeShield=void 0,(n=this._moveListener)==null||n.dispose(),(r=this._upListener)==null||r.dispose(),(i=this._cancelListener)==null||i.dispose(),this._moveListener=void 0,this._upListener=void 0,this._cancelListener=void 0}},Pn={value:20,type:`percentage`},Fn=class extends Q{get disabled(){return this._disabled}set disabled(e){this._disabled=e,e&&this._removeOverlay()}get state(){return this._state}constructor(e,t){super(),this.element=e,this.options=t,this._edge=!1,this._onDrop=new $,this.onDrop=this._onDrop.event,this._onWillShowOverlay=new $,this.onWillShowOverlay=this._onWillShowOverlay.event,this._disabled=!1,this._acceptedTargetZonesSet=new Set(t.acceptedTargetZones);let n={element:this.element,handleDragOver:e=>this._onDragOver(e),handleDragLeave:()=>this._onDragLeave(),handleDrop:e=>this._onDropEvent(e)};this.addDisposables(this._onDrop,this._onWillShowOverlay,Nn.getInstance().registerTarget(n))}setTargetZones(e){this._acceptedTargetZonesSet=new Set(e)}setOverlayModel(e){this.options.overlayModel=e}dispose(){this._removeOverlay(),super.dispose()}_onDragOver(e){var t,n;if(this._disabled){this._clearOwnOverlay();return}let r=(t=this.options).getOverrideTarget?.call(t);if(this._acceptedTargetZonesSet.size===0){this._clearOwnOverlay();return}let i=(n=this.options).getOverlayOutline?.call(n)??this.element,a=i.offsetWidth,o=i.offsetHeight;if(a===0||o===0)return;let s=i.getBoundingClientRect(),c=e.clientX-s.left,l=e.clientY-s.top,u=this._resolvePosition(c,l,a,o,e.pointerEvent);if(u===null){this._clearOwnOverlay();return}let d=u.position;if(!this.options.canDisplayOverlay(e.pointerEvent,d)){this._clearOwnOverlay();return}let f=new Tn({nativeEvent:e.pointerEvent,position:d,edge:u.edge});if(this._onWillShowOverlay.fire(f),f.defaultPrevented){this._clearOwnOverlay();return}if(u.edge){this._clearOwnOverlay(),this._state=d,this._edge=!0;return}if(this._edge=!1,r){wn({outlineElement:i,targetModel:r,quadrant:d,width:a,height:o,overlayModel:this.options.overlayModel,className:this.options.className}),this._state=d;return}if(!this._targetElement){let e=yn();this._targetElement=e.dropzone,this._overlayElement=e.selection,this._state=`center`,this.element.classList.add(`dv-drop-target`),this.element.append(this._targetElement)}this._overlayElement&&xn(this._overlayElement,d,a,o,this.options.overlayModel),this._state=d}_onDragLeave(){var e;let t=(e=this.options).getOverrideTarget?.call(e);if(t){this._state=void 0,t.clear();return}this._removeOverlay()}_onDropEvent(e){var t;let n=this._state,r=this._edge,i=(t=this.options).getOverrideTarget?.call(t);this._removeOverlay(),i?.clear(),n&&this._onDrop.fire({position:n,nativeEvent:e.pointerEvent,edge:r})}_resolvePosition(e,t,n,r,i){var a;let o=(a=this.options).getPositionResolver?.call(a);if(o){let a=o.resolve({x:e,y:t,width:n,height:r,zones:this._acceptedTargetZonesSet,event:i});return a?{position:a.position,edge:!!a.edge}:null}let s=this._calculateQuadrant(e,t,n,r);return s?{position:s,edge:!1}:null}_calculateQuadrant(e,t,n,r){let i=this.options.overlayModel?.activationSize??Pn;return i.type===`percentage`?An(this._acceptedTargetZonesSet,e,t,n,r,i.value):jn(this._acceptedTargetZonesSet,e,t,n,r,i.value)}_clearOwnOverlay(){let e=this._state!==void 0;if(this._removeOverlay(),e){var t,n;(t=(n=this.options).getOverrideTarget)==null||(t=t.call(n))==null||t.clear()}}_removeOverlay(){if(this._edge=!1,this._targetElement){var e;this._state=void 0,(e=this._targetElement.parentElement)==null||e.classList.remove(`dv-drop-target`),this._targetElement.remove(),this._targetElement=void 0,this._overlayElement=void 0}else this._state=void 0}},In=5,Ln=250,Rn=8,zn=class extends Q{constructor(e,t){super(),this.element=e,this.options=t,this._disabled=!1,this._armed=!1,this._startX=0,this._startY=0,this._touchOnly=t.touchOnly??!0,this.addDisposables(Qe(this.element,`pointerdown`,e=>{this._onPointerDown(e)}))}setDisabled(e){this._disabled=e,e&&this._cancelPending()}setTouchOnly(e){this._touchOnly!==e&&(this._touchOnly=e,e&&this._cancelPending())}_shouldHandle(e){var t;return!(this._disabled||this._touchOnly&&e.pointerType!==`touch`&&e.pointerType!==`pen`||(t=this.options).isCancelled?.call(t,e))}_onPointerDown(e){if(!this._shouldHandle(e))return;this._cancelPending(),this._pendingPointerId=e.pointerId,this._startX=e.clientX,this._startY=e.clientY,this._startEvent=e;let t=e.pointerType===`touch`||e.pointerType===`pen`,n=this.options.touchInitiationDelay,r=(typeof n==`function`?n():n)??Ln;this._armed=!t||r<=0,t&&r>0&&Number.isFinite(r)&&(this._armTimer=setTimeout(()=>{this._armTimer=void 0,this._armed=!0},r));let i=this.options.threshold??In,a=this.options.pressTolerance,o=(typeof a==`function`?a():a)??Rn,s=this.element.ownerDocument?.defaultView??globalThis.window;this._pendingMoveListener=Qe(s,`pointermove`,e=>{if(e.pointerId!==this._pendingPointerId)return;let t=e.clientX-this._startX,n=e.clientY-this._startY,r=Math.hypot(t,n);if(this._armed){r>=i&&this._beginDrag(e);return}r>o&&this._beginDrag(e)}),this._pendingUpListener=Qe(s,`pointerup`,e=>{e.pointerId===this._pendingPointerId&&this._cancelPending()}),this._pendingCancelListener=Qe(s,`pointercancel`,e=>{e.pointerId===this._pendingPointerId&&this._cancelPending()})}cancelPending(){this._cancelPending()}_cancelPending(){var e,t,n;this._pendingPointerId=void 0,this._armTimer!==void 0&&(clearTimeout(this._armTimer),this._armTimer=void 0),this._armed=!1,(e=this._pendingMoveListener)==null||e.dispose(),(t=this._pendingUpListener)==null||t.dispose(),(n=this._pendingCancelListener)==null||n.dispose(),this._pendingMoveListener=void 0,this._pendingUpListener=void 0,this._pendingCancelListener=void 0,this._startEvent=void 0}_beginDrag(e){var t,n,r;let i=this._startEvent??e;this._cancelPending(),(t=(n=this.options).onDragStart)==null||t.call(n,i);let a=(r=this.options).createGhost?.call(r,i);Nn.getInstance().beginDrag({pointerEvent:e,source:this.element,getData:()=>this.options.getData(i),ghost:a,onDragMove:this.options.onDragMove,onDragEnd:this.options.onDragEnd})}dispose(){this._cancelPending(),super.dispose()}},Bn=class{constructor(e){this._disposed=!1,this.element=e.element,this.offsetX=e.offsetX??0,this.offsetY=e.offsetY??0,this.element.style.position=`fixed`,this.element.style.left=`0px`,this.element.style.top=`0px`,this.element.style.pointerEvents=`none`,this.element.style.zIndex=`99999`,this.element.style.opacity=String(e.opacity??.8),this.element.style.willChange=`transform`,this.element.style.transform=`translate3d(${e.initialX-this.offsetX}px, ${e.initialY-this.offsetY}px, 0)`,(e.owner?.ownerDocument??document).body.appendChild(this.element)}update(e,t){this._disposed||(this.element.style.transform=`translate3d(${e-this.offsetX}px, ${t-this.offsetY}px, 0)`)}dispose(){this._disposed||(this._disposed=!0,this.element.remove())}},Vn=class extends Q{constructor(e,t){super(),this.el=e,this.opts=t,this._dataDisposable=new Ge,this._pointerEventsDisposable=new Ge,this._disabled=!!t.disabled,this.addDisposables(this._dataDisposable,this._pointerEventsDisposable,Qe(this.el,`dragstart`,e=>{var t,n,r,i;if(e.defaultPrevented||this._disabled||(t=this.opts).isCancelled?.call(t,e)){e.preventDefault();return}let a=gt(this.el.ownerDocument??document);this._pointerEventsDisposable.value={dispose:()=>a.release()},this.el.classList.add(`dv-dragged`),setTimeout(()=>this.el.classList.remove(`dv-dragged`),0),this._dataDisposable.value=this.opts.getData(e);let o=(n=this.opts).createGhost?.call(n,e);if(o&&e.dataTransfer&&(Mn(e.dataTransfer,o.element,{x:o.offsetX??0,y:o.offsetY??0,ownerDocument:this.el.ownerDocument??void 0}),o.dispose)){let e=o.dispose;setTimeout(()=>e(),0)}e.dataTransfer&&(e.dataTransfer.effectAllowed=`move`,e.dataTransfer.items.length===0&&e.dataTransfer.setData(`text/plain`,``)),(r=(i=this.opts).onDragStart)==null||r.call(i,e)}),Qe(this.el,`dragend`,e=>{var t,n;this._pointerEventsDisposable.dispose(),setTimeout(()=>this._dataDisposable.dispose(),0),(t=(n=this.opts).onDragEnd)==null||t.call(n,e)}))}setDisabled(e){this._disabled=e}setTouchOnly(e){}cancelPending(){}},Hn=class{constructor(){this.kind=`html5`}createDropTarget(e,t){return new kn(e,t)}createDragSource(e,t){return new Vn(e,t)}},Un=class{constructor(){this.kind=`pointer`}createDropTarget(e,t){return new Fn(e,t)}createDragSource(e,t){let n=t.createGhost?n=>{let r=t.createGhost(n);if(!r)return;let i=new Bn({element:r.element,initialX:n.clientX,initialY:n.clientY,offsetX:r.offsetX,offsetY:r.offsetY,owner:e});if(r.dispose){let e=i.dispose.bind(i),t=r.dispose;i.dispose=()=>{e(),t()}}return i}:void 0,r=new zn(e,{getData:t.getData,isCancelled:t.isCancelled,onDragStart:t.onDragStart,onDragEnd:t.onDragEnd?e=>t.onDragEnd(e.pointerEvent):void 0,createGhost:n,touchOnly:t.touchOnly,touchInitiationDelay:t.touchInitiationDelay,pressTolerance:t.pressTolerance,threshold:t.threshold});return t.disabled&&r.setDisabled(!0),r}},Wn=new Hn,Gn=new Un,Kn=class extends qe{constructor(){super()}},qn=class extends Q{get isFocused(){return this._isFocused}get isActive(){return this._isActive}get isVisible(){return this._isVisible}get width(){return this._width}get height(){return this._height}constructor(e,t){super(),this.id=e,this.component=t,this._isFocused=!1,this._isActive=!1,this._isVisible=!0,this._width=0,this._height=0,this._parameters={},this.panelUpdatesDisposable=new Ge,this._onDidDimensionChange=new $,this.onDidDimensionsChange=this._onDidDimensionChange.event,this._onDidChangeFocus=new $,this.onDidFocusChange=this._onDidChangeFocus.event,this._onWillFocus=new $,this.onWillFocus=this._onWillFocus.event,this._onDidVisibilityChange=new $,this.onDidVisibilityChange=this._onDidVisibilityChange.event,this._onWillVisibilityChange=new $,this.onWillVisibilityChange=this._onWillVisibilityChange.event,this._onDidActiveChange=new $,this.onDidActiveChange=this._onDidActiveChange.event,this._onActiveChange=new $,this.onActiveChange=this._onActiveChange.event,this._onDidParametersChange=new $,this.onDidParametersChange=this._onDidParametersChange.event,this.addDisposables(this.onDidFocusChange(e=>{this._isFocused=e.isFocused}),this.onDidActiveChange(e=>{this._isActive=e.isActive}),this.onDidVisibilityChange(e=>{this._isVisible=e.isVisible}),this.onDidDimensionsChange(e=>{this._width=e.width,this._height=e.height}),this.panelUpdatesDisposable,this._onDidDimensionChange,this._onDidChangeFocus,this._onDidVisibilityChange,this._onDidActiveChange,this._onWillFocus,this._onActiveChange,this._onWillFocus,this._onWillVisibilityChange,this._onDidParametersChange)}getParameters(){return this._parameters}initialize(e){this.panelUpdatesDisposable.value=this._onDidParametersChange.event(t=>{this._parameters=t,e.update({params:t})})}setVisible(e){this._onWillVisibilityChange.fire({isVisible:e})}setActive(){this._onActiveChange.fire()}updateParameters(e){this._onDidParametersChange.fire(e)}},Jn=class extends Q{get element(){return this._element}get width(){return this._width}get height(){return this._height}get params(){return this._params?.params}constructor(e,t,n){super(),this.id=e,this.component=t,this.api=n,this._height=0,this._width=0,this._element=document.createElement(`div`),this._element.tabIndex=-1,this._element.style.outline=`none`,this._element.style.height=`100%`,this._element.style.width=`100%`,this._element.style.overflow=`hidden`;let r=ot(this._element);this.addDisposables(this.api,r.onDidFocus(()=>{this.api._onDidChangeFocus.fire({isFocused:!0})}),r.onDidBlur(()=>{this.api._onDidChangeFocus.fire({isFocused:!1})}),r)}focus(){let e=new Kn;this.api._onWillFocus.fire(e),!e.defaultPrevented&&this._element.focus()}layout(e,t){this._width=e,this._height=t,this.api._onDidDimensionChange.fire({width:e,height:t}),this.part&&this._params&&this.part.update(this._params.params)}init(e){this._params=e,this.part=this.getComponent()}update(e){var t;this._params=ln(ln({},this._params),{},{params:ln(ln({},this._params?.params),e.params)});for(let t of Object.keys(e.params))e.params[t]===void 0&&delete this._params.params[t];(t=this.part)==null||t.update({params:this._params.params})}toJSON(){let e=this._params?.params??{};return{id:this.id,component:this.component,params:Object.keys(e).length>0?e:void 0}}dispose(){var e;this.api.dispose(),(e=this.part)==null||e.dispose(),super.dispose()}},Yn=0,Xn=()=>`dv-tabpanel-${Yn++}`,Zn=class extends Q{get element(){return this._element}constructor(e,t){var n,r,i;super(),this.accessor=e,this.group=t,this.disposable=new Ge,this._onDidFocus=new $,this.onDidFocus=this._onDidFocus.event,this._onDidBlur=new $,this.onDidBlur=this._onDidBlur.event,this._element=document.createElement(`div`),this._element.className=`dv-content-container`,this._element.tabIndex=-1,this._element.id=Xn(),this._element.setAttribute(`role`,`tabpanel`),this.addDisposables(this._onDidFocus,this._onDidBlur);let a=()=>t.dropTargetContainer?.model,o=(e,t)=>this.group.canDisplayContentOverlay(e,t);this.dropTarget=new kn(this.element,{getOverlayOutline:()=>e.options.theme?.dndPanelOverlay===`group`?this.element.parentElement:null,className:`dv-drop-target-content`,acceptedTargetZones:[`top`,`bottom`,`left`,`right`,`center`],canDisplayOverlay:o,getOverrideTarget:a,overlayModel:(n=this.accessor).resolveDropOverlayModel?.call(n,`content`),getPositionResolver:()=>e.getDropPositionResolver?.call(e)}),this.pointerDropTarget=Gn.createDropTarget(this.element,{acceptedTargetZones:[`top`,`bottom`,`left`,`right`,`center`],canDisplayOverlay:o,getOverlayOutline:()=>e.options.theme?.dndPanelOverlay===`group`?this.element.parentElement:null,className:`dv-drop-target-content`,getOverrideTarget:a,overlayModel:(r=this.accessor).resolveDropOverlayModel?.call(r,`content`),getPositionResolver:()=>e.getDropPositionResolver?.call(e)}),this.addDisposables(this.dropTarget,this.pointerDropTarget,(i=this.accessor).onDidOptionsChange?.call(i,()=>{var e;let t=(e=this.accessor).resolveDropOverlayModel?.call(e,`content`)??{};this.dropTarget.setOverlayModel(t),this.pointerDropTarget.setOverlayModel(t)})??We.NONE)}show(){this.element.style.display=``}hide(){this.element.style.display=`none`}setLabelledBy(e){e?this._element.setAttribute(`aria-labelledby`,e):this._element.removeAttribute(`aria-labelledby`)}renderPanel(e,t){let n=(t?.asActive??!0)||this.panel&&this.group.isPanelActive(this.panel);if(this.panel?.view.content.element.parentElement===this._element){var r,i;this.panel.view.content.element.remove(),(r=(i=this.panel.view.content).onHide)==null||r.call(i)}this.panel=e;let a;switch(e.api.renderer){case`onlyWhenVisible`:if(this.group.renderContainer.detatch(e),this.panel&&n){var o,s;this._element.appendChild(this.panel.view.content.element),(o=(s=this.panel.view.content).onShow)==null||o.call(s)}a=this._element;break;case`always`:e.view.content.element.parentElement===this._element&&e.view.content.element.remove(),a=this.group.renderContainer.attach({panel:e,referenceContainer:this});break;default:throw Error(`dockview: invalid renderer type '${e.api.renderer}'`)}if(n){let e=ot(a);this.focusTracker=e;let t=new Q;t.addDisposables(e,e.onDidFocus(()=>this._onDidFocus.fire()),e.onDidBlur(()=>this._onDidBlur.fire())),this.disposable.value=t}}openPanel(e){this.panel!==e&&this.renderPanel(e)}layout(e,t){}closePanel(){if(this.panel&&this.panel.api.renderer===`onlyWhenVisible`){var e,t;this.panel.view.content.element.remove(),(e=(t=this.panel.view.content).onHide)==null||e.call(t)}this.panel=void 0}dispose(){this.disposable.dispose(),super.dispose()}refreshFocusState(){this.focusTracker?.refreshState&&this.focusTracker.refreshState()}},Qn=e=>{let t=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);t.setAttributeNS(null,`height`,e.height),t.setAttributeNS(null,`width`,e.width),t.setAttributeNS(null,`viewBox`,e.viewbox),t.setAttributeNS(null,`aria-hidden`,`false`),t.setAttributeNS(null,`focusable`,`false`),t.classList.add(`dv-svg`);let n=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);return n.setAttributeNS(null,`d`,e.path),t.appendChild(n),t},$n=()=>Qn({width:`11`,height:`11`,viewbox:`0 0 28 28`,path:`M2.1 27.3L0 25.2L11.55 13.65L0 2.1L2.1 0L13.65 11.55L25.2 0L27.3 2.1L15.75 13.65L27.3 25.2L25.2 27.3L13.65 15.75L2.1 27.3Z`}),er=()=>Qn({width:`11`,height:`11`,viewbox:`0 0 24 24`,path:`M16 9V4h1c.55 0 1-.45 1-1s-.45-1-1-1H6c-.55 0-1 .45-1 1s.45 1 1 1h1v5c0 1.66-1.34 3-3 3v2h5.97v7l1 1 1-1v-7H19v-2c-1.66 0-3-1.34-3-3z`}),tr=()=>Qn({width:`11`,height:`11`,viewbox:`0 0 15 25`,path:`M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z`}),nr=500,rr=8,ir=class extends Q{constructor(e,t){super(),this.element=e,this.options=t,this._startX=0,this._startY=0,this.addDisposables(Qe(this.element,`pointerdown`,e=>{this._onPointerDown(e)}))}_onPointerDown(e){if((this.options.touchOnly??!0)&&e.pointerType!==`touch`&&e.pointerType!==`pen`)return;this._cancelPending(),this._pointerId=e.pointerId,this._startX=e.clientX,this._startY=e.clientY;let t=this.options.delay??nr,n=this.options.tolerance??rr,r=this.element.ownerDocument?.defaultView??globalThis.window;this._timer=setTimeout(()=>{this._timer=void 0,this._cancelPending(),this._installContextMenuGuard(r),this._installClickGuard(r),this.options.onLongPress(e)},t),this._moveListener=Qe(r,`pointermove`,e=>{if(e.pointerId!==this._pointerId)return;let t=e.clientX-this._startX,r=e.clientY-this._startY;Math.hypot(t,r)>n&&this._cancelPending()}),this._upListener=Qe(r,`pointerup`,e=>{e.pointerId===this._pointerId&&this._cancelPending()}),this._cancelListener=Qe(r,`pointercancel`,e=>{e.pointerId===this._pointerId&&this._cancelPending()})}_installContextMenuGuard(e){let t,n=setTimeout(()=>t?.dispose(),500);t=Qe(e,`contextmenu`,e=>{e.preventDefault(),clearTimeout(n),t?.dispose()},{capture:!0})}_installClickGuard(e){let t,n=setTimeout(()=>t?.dispose(),500);t=Qe(e,`click`,e=>{let r=e.target;r&&this.element.contains(r)&&(e.preventDefault(),e.stopPropagation()),clearTimeout(n),t?.dispose()},{capture:!0})}_cancelPending(){var e,t,n;this._timer!==void 0&&(clearTimeout(this._timer),this._timer=void 0),this._pointerId=void 0,(e=this._moveListener)==null||e.dispose(),(t=this._upListener)==null||t.dispose(),(n=this._cancelListener)==null||n.dispose(),this._moveListener=void 0,this._upListener=void 0,this._cancelListener=void 0}dispose(){this._cancelPending(),super.dispose()}};function ar(e){if(e.disableDnd)return{html5:!1,pointer:!1,pointerHandlesMouse:!1};switch(e.dndStrategy){case`pointer`:return{html5:!1,pointer:!0,pointerHandlesMouse:!0};case`html5`:return{html5:!0,pointer:!1,pointerHandlesMouse:!1};case`auto`:case void 0:default:return or()?{html5:!1,pointer:!0,pointerHandlesMouse:!0}:{html5:!0,pointer:!0,pointerHandlesMouse:!1}}}function or(){if(globalThis.window===void 0||!globalThis.matchMedia)return!1;let e=globalThis.matchMedia(`(pointer: coarse)`).matches,t=globalThis.matchMedia(`(pointer: fine)`).matches;return e&&!t}var sr=0,cr=()=>`dv-tab-${sr++}`,lr=class extends Q{get element(){return this._element}constructor(e,t,n){var r,i,a,o,s;super(),this.panel=e,this.accessor=t,this.group=n,this.content=void 0,this.panelTransfer=He.getInstance(),this._direction=`horizontal`,this._pinIndicator=void 0,this._onPointDown=new $,this.onPointerDown=this._onPointDown.event,this._onTabClick=new $,this.onTabClick=this._onTabClick.event,this._onDropped=new $,this.onDrop=this._onDropped.event,this._onDragStart=new $,this.onDragStart=this._onDragStart.event,this._onDragEnd=new $,this.onDragEnd=this._onDragEnd.event;let c=ar(this.accessor.options);this._element=document.createElement(`div`),this._element.className=`dv-tab`,this._element.tabIndex=-1,this._element.draggable=c.html5,this._element.id=cr(),this._element.setAttribute(`role`,`tab`),this._element.setAttribute(`aria-selected`,`false`),this._element.setAttribute(`aria-label`,this.panel.title??this.panel.id),this._element.dataset.tabPanelId=this.panel.id;let l=(r=this.group)==null||(r=r.model)==null?void 0:r.contentContainerId;l&&this._element.setAttribute(`aria-controls`,l),it(this.element,`dv-inactive-tab`,!0),this._updatePinnedClasses();let u=(e,t)=>{if(this.group.locked)return!1;let n=Ue();return this.accessor.id===n?.viewId?this.accessor.options.theme?.tabAnimation!==`smooth`:this.group.model.canDisplayOverlay(e,t,`tab`)};this.dropTarget=Wn.createDropTarget(this._element,{acceptedTargetZones:[`left`,`right`],overlayModel:this._buildOverlayModel(),canDisplayOverlay:u,getOverrideTarget:()=>n.model.dropTargetContainer?.model}),this.pointerDropTarget=Gn.createDropTarget(this._element,{acceptedTargetZones:[`left`,`right`],overlayModel:this._buildOverlayModel(),canDisplayOverlay:u,getOverrideTarget:()=>n.model.dropTargetContainer?.model});let d={getData:()=>(this.panelTransfer.setData([new Ve(this.accessor.id,this.group.id,this.panel.id)],Ve.prototype),{dispose:()=>{this.panelTransfer.clearData(Ve.prototype)}}),createGhost:()=>({element:this._buildGhostElement(),offsetX:30,offsetY:-10}),onDragStart:e=>{this._onDragStart.fire(e),!(e instanceof PointerEvent)&&this.accessor.options.theme?.tabAnimation===`smooth`&&requestAnimationFrame(()=>{it(this.element,`dv-tab--dragging`,!0)})},onDragEnd:e=>{this._onDragEnd.fire(e)}};this.html5DragSource=Wn.createDragSource(this._element,ln(ln({},d),{},{disabled:!c.html5})),this.pointerDragSource=Gn.createDragSource(this._element,ln(ln({},d),{},{disabled:!c.pointer,touchOnly:!c.pointerHandlesMouse,isCancelled:()=>!ar(this.accessor.options).pointer})),this.onWillShowOverlay=Ke.any(this.dropTarget.onWillShowOverlay,this.pointerDropTarget.onWillShowOverlay),this.addDisposables(this._onPointDown,this._onTabClick,this._onDropped,this._onDragStart,this._onDragEnd,this.accessor.onDidOptionsChange(()=>{let e=this._buildOverlayModel();this.dropTarget.setOverlayModel(e),this.pointerDropTarget.setOverlayModel(e),this._updatePinnedClasses()}),((i=this.panel.api)==null||(a=i.onDidChangePinned)==null?void 0:a.call(i,()=>{this._updatePinnedClasses()}))??{dispose:()=>{}},((o=this.panel.api)==null||(s=o.onDidTitleChange)==null?void 0:s.call(o,e=>{this._element.setAttribute(`aria-label`,e.title??this.panel.id)}))??{dispose:()=>{}},Qe(this._element,`dragend`,()=>{it(this.element,`dv-tab--dragging`,!1)}),this.html5DragSource,Qe(this._element,`pointerdown`,e=>{this._onPointDown.fire(e)}),Qe(this._element,`click`,e=>{this._onTabClick.fire(e)}),Qe(this._element,`contextmenu`,e=>{var t;(t=this.accessor.contextMenuService)==null||t.show(this.panel,this.group,e)}),new ir(this._element,{onLongPress:e=>{var t;this.pointerDragSource.cancelPending(),(t=this.accessor.contextMenuService)==null||t.show(this.panel,this.group,e)}}),this.dropTarget.onDrop(e=>{this._onDropped.fire(e)}),this.pointerDropTarget.onDrop(e=>{this._onDropped.fire(e)}),this.dropTarget,this.pointerDropTarget,this.pointerDragSource)}_updatePinnedClasses(){let e=this.panel.api?.isPinned??!1,t=e&&this.accessor.options.pinnedTabs?.compact===!0;it(this.element,`dv-tab--pinned`,e),it(this.element,`dv-tab--pinned-compact`,t);let n=e&&!this.panel.api?.tabComponent;if(n&&!this._pinIndicator){let e=document.createElement(`div`);e.className=`dv-tab-pin`,e.appendChild(er()),this._element.insertBefore(e,this._element.firstChild),this._pinIndicator=e}else!n&&this._pinIndicator&&(this._pinIndicator.remove(),this._pinIndicator=void 0)}setActive(e){it(this.element,`dv-active-tab`,e),it(this.element,`dv-inactive-tab`,!e),this._element.setAttribute(`aria-selected`,e?`true`:`false`),this._element.tabIndex=e?0:-1}setContent(e){this.content&&this.content.element.remove(),this.content=e,this._element.appendChild(this.content.element)}_buildOverlayModel(){var e;let t=(e=this.accessor).resolveDropOverlayModel?.call(e,`tab`,this.group);if(t)return t;let n=this.accessor.options.theme?.dndTabIndicator===`line`?1/0:0;return{activationSize:{value:50,type:`percentage`},smallWidthBoundary:n,smallHeightBoundary:n}}setDirection(e){this._direction=e;let t=e===`vertical`?[`top`,`bottom`]:[`left`,`right`];this.dropTarget.setTargetZones(t),this.pointerDropTarget.setTargetZones(t)}updateDragAndDropState(){let e=ar(this.accessor.options);this._element.draggable=e.html5,this.html5DragSource.setDisabled(!e.html5),this.pointerDragSource.setDisabled(!e.pointer),this.pointerDragSource.setTouchOnly(!e.pointerHandlesMouse)}_buildGhostElement(){let e=getComputedStyle(this.element),t=this.element.cloneNode(!0),n=this._direction===`vertical`,r=new Set([`writing-mode`,`inline-size`,`block-size`,`min-inline-size`,`min-block-size`,`max-inline-size`,`max-block-size`,`margin-inline`,`margin-inline-start`,`margin-inline-end`,`margin-block`,`margin-block-start`,`margin-block-end`,`padding-inline`,`padding-inline-start`,`padding-inline-end`,`padding-block`,`padding-block-start`,`padding-block-end`]);return Array.from(e).forEach(i=>{n&&r.has(i)||t.style.setProperty(i,e.getPropertyValue(i),e.getPropertyPriority(i))}),n&&(t.style.setProperty(`writing-mode`,`horizontal-tb`),t.style.setProperty(`width`,e.height),t.style.setProperty(`height`,e.width)),t.style.position=`absolute`,t.classList.add(`dv-tab-ghost-drag`),t}},ur=class{get kind(){return this.options.kind}get nativeEvent(){return this.event.nativeEvent}get position(){return this.event.position}get edge(){return this.event.edge}get edgeGroup(){return this.event.edgeGroup}get defaultPrevented(){return this.event.defaultPrevented}get panel(){return this.options.panel}get api(){return this.options.api}get group(){return this.options.group}preventDefault(){this.event.preventDefault()}getData(){return this.options.getData()}constructor(e,t){this.event=e,this.options=t}},dr=class extends Q{get group(){return this.groupAccessor()}constructor(e){var t;super(),this.panelTransfer=He.getInstance(),this._onDragStart=new $,this.onDragStart=this._onDragStart.event,this._element=e.element,this.accessor=e.accessor;let n=e.group;this.groupAccessor=typeof n==`function`?n:()=>n,this.isFloatingMoveHandle=e.isFloatingMoveHandle??(()=>!0);let r=ar(this.accessor.options);this._element.draggable=r.html5,it(this._element,`dv-draggable`,r.html5||r.pointer),this.addDisposables(this._onDragStart);let i=()=>{let e=document.createElement(`div`),t=globalThis.getComputedStyle(this._element),n=t.getPropertyValue(`--dv-activegroup-visiblepanel-tab-background-color`),r=t.getPropertyValue(`--dv-activegroup-visiblepanel-tab-color`);return e.style.backgroundColor=n,e.style.color=r,e.style.padding=`2px 8px`,e.style.height=`24px`,e.style.fontSize=`11px`,e.style.lineHeight=`20px`,e.style.borderRadius=`12px`,e.style.whiteSpace=`nowrap`,e.style.boxSizing=`border-box`,e.style.display=`inline-block`,e.textContent=`Multiple Panels (${this.group.size})`,e},a={getData:()=>(this.panelTransfer.setData([new Ve(this.accessor.id,this.group.id,null)],Ve.prototype),{dispose:()=>{this.panelTransfer.clearData(Ve.prototype)}}),createGhost:()=>{var e;return(e=this.accessor).buildGroupDragGhost?.call(e,this.group)||{element:i(),offsetX:30,offsetY:-10}},onDragStart:e=>{this._onDragStart.fire(e)}};this.html5DragSource=Wn.createDragSource(this._element,ln(ln({},a),{},{disabled:!r.html5,isCancelled:e=>!!(this.group.api.location.type===`floating`&&this.isFloatingMoveHandle()&&!e.shiftKey||this.group.api.location.type===`edge`&&this.group.size===0)}));let o=()=>{var e;return((e=this.group)==null||(e=e.api)==null||(e=e.location)==null?void 0:e.type)===`floating`&&this.isFloatingMoveHandle()};this.pointerDragSource=Gn.createDragSource(this._element,ln(ln({},a),{},{disabled:!r.pointer,touchOnly:!r.pointerHandlesMouse,touchInitiationDelay:()=>o()?500:250,pressTolerance:()=>o()?1/0:8,isCancelled:()=>!ar(this.accessor.options).pointer||this.group.api.location.type===`edge`&&this.group.size===0,onDragStart:e=>{var t;(t=this.getFloatingOverlay())==null||t.cancelPendingDrag(),this._onDragStart.fire(e)}}));let s=new Ge,c=()=>{let e=this.getFloatingOverlay();s.value=e?e.onDidStartMoving(()=>{this.pointerDragSource.cancelPending()}):We.NONE};c(),this.addDisposables(s);let l=(t=this.group)==null||(t=t.api)==null?void 0:t.onDidLocationChange;l&&this.addDisposables(l(c)),this.addDisposables(this.html5DragSource,this.pointerDragSource)}updateDragAndDropState(){let e=ar(this.accessor.options);this._element.draggable=e.html5,it(this._element,`dv-draggable`,e.html5||e.pointer),this.html5DragSource.setDisabled(!e.html5),this.pointerDragSource.setDisabled(!e.pointer),this.pointerDragSource.setTouchOnly(!e.pointerHandlesMouse)}getFloatingOverlay(){var e;if(this.group)return(e=this.accessor.floatingGroups)==null||(e=e.find(e=>e.group===this.group))==null?void 0:e.overlay}},fr=class extends Q{get element(){return this._element}constructor(e,t){var n,r,i;super(),this.accessor=e,this.group=t,this._onDrop=new $,this.onDrop=this._onDrop.event,this._onDragStart=new $,this.onDragStart=this._onDragStart.event,this._element=document.createElement(`div`),this._element.className=`dv-void-container`,this.addDisposables(this._onDrop,this._onDragStart,Qe(this._element,`pointerdown`,()=>{this.accessor.doSetGroupActive(this.group)}),Qe(this._element,`pointerdown`,e=>{e.shiftKey&<(e)},!0)),this.dragSource=new dr({element:this._element,accessor:this.accessor,group:this.group,isFloatingMoveHandle:()=>!this._element.closest(`.dv-resize-container-with-titlebar`)});let a=(e,n)=>{if(this.group.api.locked)return!1;let r=Ue();return this.accessor.id===r?.viewId||t.model.canDisplayOverlay(e,n,`header_space`)};this.dropTarget=Wn.createDropTarget(this._element,{acceptedTargetZones:[`center`],canDisplayOverlay:a,getOverrideTarget:()=>t.model.dropTargetContainer?.model,overlayModel:(n=this.accessor).resolveDropOverlayModel?.call(n,`header_space`,this.group)}),this.pointerDropTarget=Gn.createDropTarget(this._element,{acceptedTargetZones:[`center`],canDisplayOverlay:a,getOverrideTarget:()=>t.model.dropTargetContainer?.model,overlayModel:(r=this.accessor).resolveDropOverlayModel?.call(r,`header_space`,this.group)}),this.onWillShowOverlay=Ke.any(this.dropTarget.onWillShowOverlay,this.pointerDropTarget.onWillShowOverlay),this.addDisposables(this.dragSource,this.dragSource.onDragStart(e=>{this._onDragStart.fire(e)}),this.dropTarget.onDrop(e=>{this._onDrop.fire(e)}),this.pointerDropTarget.onDrop(e=>{this._onDrop.fire(e)}),this.dropTarget,this.pointerDropTarget,(i=this.accessor).onDidOptionsChange?.call(i,()=>{var e;let t=(e=this.accessor).resolveDropOverlayModel?.call(e,`header_space`,this.group)??{};this.dropTarget.setOverlayModel(t),this.pointerDropTarget.setOverlayModel(t)})??We.NONE)}updateDragAndDropState(){this.dragSource.updateDragAndDropState()}},pr=class e extends Q{get element(){return this._element}get orientation(){return this._orientation}set orientation(e){this._orientation!==e&&(this._scrollOffset=0,this._orientation=e,nt(this._scrollbar,`dv-scrollbar-vertical`,`dv-scrollbar-horizontal`),e===`vertical`?rt(this._scrollbar,`dv-scrollbar-vertical`):rt(this._scrollbar,`dv-scrollbar-horizontal`))}constructor(t){super(),this.scrollableElement=t,this._scrollOffset=0,this._orientation=`horizontal`,this._element=document.createElement(`div`),this._element.className=`dv-scrollable`,this._scrollbar=document.createElement(`div`),this._scrollbar.className=`dv-scrollbar dv-scrollbar-horizontal`,this.element.appendChild(t),this.element.appendChild(this._scrollbar),this.addDisposables(Qe(this.element,`wheel`,t=>{this._scrollOffset+=t.deltaY*e.MouseWheelSpeed,this.scheduleStyleUpdate()}),Qe(this._scrollbar,`pointerdown`,e=>{e.preventDefault();let t=this._scrollbar.ownerDocument??document;it(this.element,`dv-scrollable-scrolling`,!0);let n=this._orientation===`horizontal`?e.clientX:e.clientY,r=this._scrollOffset,i=e=>{let t=this._orientation===`horizontal`?e.clientX-n:e.clientY-n,i=(this._orientation===`horizontal`?this.element.clientWidth:this.element.clientHeight)/(this._orientation===`horizontal`?this.scrollableElement.scrollWidth:this.scrollableElement.scrollHeight);this._scrollOffset=r+t/i,this.scheduleStyleUpdate()},a=()=>{it(this.element,`dv-scrollable-scrolling`,!1),t.removeEventListener(`pointermove`,i),t.removeEventListener(`pointerup`,a),t.removeEventListener(`pointercancel`,a)};t.addEventListener(`pointermove`,i),t.addEventListener(`pointerup`,a),t.addEventListener(`pointercancel`,a)}),Qe(this.element,`scroll`,()=>{this.scheduleStyleUpdate()}),Qe(this.scrollableElement,`scroll`,()=>{this._scrollOffset=this._orientation===`horizontal`?this.scrollableElement.scrollLeft:this.scrollableElement.scrollTop,this.scheduleStyleUpdate()}),tt(this.element,()=>{it(this.element,`dv-scrollable-resizing`,!0),this._animationTimer&&clearTimeout(this._animationTimer),this._animationTimer=setTimeout(()=>{clearTimeout(this._animationTimer),it(this.element,`dv-scrollable-resizing`,!1)},500),this.scheduleStyleUpdate()}),We.from(()=>{this._pendingStyleFrame!==void 0&&(cancelAnimationFrame(this._pendingStyleFrame),this._pendingStyleFrame=void 0)}))}scheduleStyleUpdate(){this._pendingStyleFrame===void 0&&(this._pendingStyleFrame=requestAnimationFrame(()=>{this._pendingStyleFrame=void 0,this.calculateScrollbarStyles()}))}calculateScrollbarStyles(){let e=this._orientation===`horizontal`?this.element.clientWidth:this.element.clientHeight,t=this._orientation===`horizontal`?this.scrollableElement.scrollWidth:this.scrollableElement.scrollHeight;if(t>e){let n=e/t*e;this._orientation===`horizontal`?(this._scrollbar.style.width=`${n}px`,this._scrollbar.style.height=``):(this._scrollbar.style.height=`${n}px`,this._scrollbar.style.width=``),this._scrollOffset=jt(this._scrollOffset,0,t-e),this._orientation===`horizontal`?this.scrollableElement.scrollLeft=this._scrollOffset:this.scrollableElement.scrollTop=this._scrollOffset;let r=this._scrollOffset/(t-e);this._orientation===`horizontal`?(this._scrollbar.style.left=`${(e-n)*r}px`,this._scrollbar.style.top=``):(this._scrollbar.style.top=`${(e-n)*r}px`,this._scrollbar.style.left=``)}else this._orientation===`horizontal`?(this._scrollbar.style.width=`0px`,this._scrollbar.style.left=`0px`):(this._scrollbar.style.height=`0px`,this._scrollbar.style.top=`0px`),this._scrollOffset=0}};pr.MouseWheelSpeed=1;var mr=`dv-tabs-container--wrap`;function hr(e,t){return typeof e==`boolean`?e:!!e?.[t]}function gr(e){return typeof e==`boolean`?e:e?Object.values(e).some(Boolean):!1}var _r=class extends Je{constructor(e,t,n,r,i){super(),this.nativeEvent=e,this.target=t,this.position=n,this.getData=r,this.group=i}};function vr(e){return!!e.referencePanel}function yr(e){return!!e.referenceGroup}function br(e){return!!e.referencePanel}function xr(e){return!!e.referenceGroup}var Sr=[{id:`grey`,value:`var(--dv-tab-group-color-grey)`,label:`Grey`},{id:`blue`,value:`var(--dv-tab-group-color-blue)`,label:`Blue`},{id:`red`,value:`var(--dv-tab-group-color-red)`,label:`Red`},{id:`yellow`,value:`var(--dv-tab-group-color-yellow)`,label:`Yellow`},{id:`green`,value:`var(--dv-tab-group-color-green)`,label:`Green`},{id:`pink`,value:`var(--dv-tab-group-color-pink)`,label:`Pink`},{id:`purple`,value:`var(--dv-tab-group-color-purple)`,label:`Purple`},{id:`cyan`,value:`var(--dv-tab-group-color-cyan)`,label:`Cyan`},{id:`orange`,value:`var(--dv-tab-group-color-orange)`,label:`Orange`}],Cr=class{constructor(e,t=!0){this._entries=e.slice(),this._byId=new Map(e.map(e=>[e.id,e])),this._enabled=t}get enabled(){return this._enabled}set enabled(e){this._enabled=e}setEntries(e){this._entries=e.slice(),this._byId=new Map(e.map(e=>[e.id,e]))}entries(){return this._entries}has(e){return this._byId.has(e)}get(e){return this._byId.get(e)}defaultId(){return this._entries[0]?.id}resolveValue(e){if(!this._enabled||!e)return;let t=this._byId.get(e);return t?t.value:e}},wr;function Tr(){return wr??=new Cr(Sr,!0),wr}function Er(e,t,n){let r=(n??Tr()).resolveValue(t);r===void 0?e.style.removeProperty(`--dv-tab-group-color`):e.style.setProperty(`--dv-tab-group-color`,r)}function Dr(e,t){return(t??Tr()).resolveValue(e)}var Or=class extends Q{get element(){return this._element}constructor(e){super(),this._palette=e,this._onClick=new $,this.onClick=this._onClick.event,this._onContextMenu=new $,this.onContextMenu=this._onContextMenu.event,this._element=document.createElement(`div`),this._element.className=`dv-tab-group-chip`,this._element.tabIndex=0,this._label=document.createElement(`span`),this._label.className=`dv-tab-group-chip-label`,this._element.appendChild(this._label),this.addDisposables(this._onClick,this._onContextMenu,new ir(this._element,{onLongPress:e=>{this._onContextMenu.fire(e)}}),Qe(this._element,`click`,e=>{this._onClick.fire(e)}),Qe(this._element,`contextmenu`,e=>{this._onContextMenu.fire(e)}))}init(e){this._tabGroup=e.tabGroup,this.updateColor(e.tabGroup.color),this.updateLabel(e.tabGroup.label),this.updateCollapsed(e.tabGroup.collapsed),this.addDisposables(e.tabGroup.onDidChange(()=>{this._tabGroup&&(this.updateColor(this._tabGroup.color),this.updateLabel(this._tabGroup.label))}),e.tabGroup.onDidCollapseChange(e=>{this.updateCollapsed(e)}),this._onClick.event(()=>{var e;(e=this._tabGroup)==null||e.toggle()}))}update(e){this._tabGroup=e.tabGroup,this.updateColor(e.tabGroup.color),this.updateLabel(e.tabGroup.label),this.updateCollapsed(e.tabGroup.collapsed)}updateColor(e){Er(this._element,e,this._palette),it(this._element,`dv-tab-group-chip--accent-off`,this._palette?.enabled===!1)}updateLabel(e){this._label.textContent=e,it(this._label,`dv-tab-group-chip-label--empty`,!e)}updateCollapsed(e){it(this._element,`dv-tab-group-chip--collapsed`,e)}},kr=`dv-tab-group-chip-continuation`,Ar=8,jr=class{get underlines(){return this._underlines}constructor(e){this._ctx=e,this._underlines=new Map,this._continuationMarkers=new Map,this._rafId=null}positionUnderlines(){requestAnimationFrame(()=>{this._positionUnderlinesSync()})}trackUnderlines(){this._rafId!==null&&cancelAnimationFrame(this._rafId);let e=performance.now(),t=()=>{this._positionUnderlinesSync(),this._rafId=performance.now()-e<250?requestAnimationFrame(t):null};this._rafId=requestAnimationFrame(t)}syncUnderlineElements(e){for(let t of e)if(!this._underlines.has(t)){let e=document.createElement(`div`);e.className=`dv-tab-group-underline`,this._ctx.tabsList.appendChild(e),this._underlines.set(t,e)}for(let[t,n]of this._underlines)e.has(t)||(n.remove(),this._underlines.delete(t),this._clearContinuationMarkers(t))}getUnderline(e){return this._underlines.get(e)}dispose(){this._rafId!==null&&(cancelAnimationFrame(this._rafId),this._rafId=null);for(let[,e]of this._underlines)e.remove();this._underlines.clear(),this._clearContinuationMarkers()}_syncContinuationMarkers(e,t){let n=this._continuationMarkers.get(e);for(n||(n=[],this._continuationMarkers.set(e,n));n.length<t;){let e=document.createElement(`div`);e.className=kr,this._ctx.tabsList.appendChild(e),n.push(e)}for(;n.length>t;)n.pop()?.remove();return n}_clearContinuationMarkers(e){if(e===void 0){for(let[,e]of this._continuationMarkers)for(let t of e)t.remove();this._continuationMarkers.clear();return}let t=this._continuationMarkers.get(e);if(t){for(let e of t)e.remove();this._continuationMarkers.delete(e)}}_positionUnderlinesSync(){let e=this._ctx.tabsList.getBoundingClientRect(),t=this._ctx.getTabGroups(),n=this._ctx.getDirection()===`vertical`,r=this._ctx.tabsList.classList.contains(mr);r||this._clearContinuationMarkers();let i=n?e.width:e.height,a=this._ctx.getActivePanelId(),o=this._ctx.getTabMap();for(let s of t){let t=this._underlines.get(s.id);if(!t)continue;let c=s.panelIds;if(c.length===0){t.style.display=`none`;continue}if(t.style.display=``,r){this._positionWrappedUnderline(t,s,e,o,n);continue}let l=this._ctx.getChipElement(s.id),u;if(l){let t=l.getBoundingClientRect(),r=getComputedStyle(l),i=n?Number.parseFloat(r.marginTop)||0:Number.parseFloat(r.marginLeft)||0;u=n?t.top-e.top-i:t.left-e.left-i}else{let t=c[0],r=o.get(t);if(r){let t=r.value.element.getBoundingClientRect();u=n?t.top-e.top:t.left-e.left}else u=0}let d=c[c.length-1],f=o.get(d);if(!f){n?(t.style.top=`${u}px`,t.style.height=`0px`,t.style.left=``,t.style.width=``):(t.style.left=`${u}px`,t.style.width=`0px`,t.style.top=``,t.style.height=``);continue}let p=f.value.element.getBoundingClientRect(),m=n?p.bottom-e.top:p.right-e.left,h=m-u;if((s.collapsed||s.panelIds.some(e=>o.get(e)?.value.element.classList.contains(`dv-tab--group-expanding`)))&&l){let t=l.getBoundingClientRect(),r=n?t.top+t.height/2-e.top:t.left+t.width/2-e.left,i=0,a=0;for(let e of s.panelIds){let t=o.get(e);if(!t)continue;let r=t.value.element;n?(i+=r.getBoundingClientRect().height,a+=r.scrollHeight):(i+=r.getBoundingClientRect().width,a+=r.scrollWidth)}let c=a>0?Math.min(1,i/a):0;u=r+(u-r)*c,m=r+(m-r)*c,h=Math.max(0,m-u)}n?(t.style.top=`${u}px`,t.style.height=`${Math.max(0,h)}px`,t.style.left=``,t.style.width=``,t.style.bottom=``):(t.style.left=`${u}px`,t.style.width=`${Math.max(0,h)}px`,t.style.top=``,t.style.height=``,t.style.bottom=``),this.applyShape(t,s,u,h,i,a,e,n)}}_positionWrappedUnderline(e,t,n,r,i){let a=Dr(t.color,this._ctx.getColorPalette());if(a===void 0){e.style.display=`none`,this._clearContinuationMarkers(t.id);return}let{runs:o,firstRun:s}=this._computeWrappedRuns(t,n,r,i);if(o.length===0){e.style.display=`none`,this._clearContinuationMarkers(t.id);return}this._positionContinuationMarkers(t.id,o,s,a,i);let c=Math.min(...o.map(e=>e.left)),l=Math.max(...o.map(e=>e.right)),u=Math.min(...o.map(e=>e.top)),d=Math.max(...o.map(e=>e.bottom)),f=i?Math.max(0,l-c):n.width,p=i?n.height:Math.max(0,d-u);e.style.left=i?`${c}px`:`0px`,e.style.top=i?`0px`:`${u}px`,e.style.bottom=`auto`,e.style.width=`${f}px`,e.style.height=`${p}px`,e.style.backgroundColor=``;let{svg:m,path:h}=this.ensureSvgPath(e);m.setAttribute(`width`,String(f)),m.setAttribute(`height`,String(p)),h.setAttribute(`stroke`,a),h.setAttribute(`stroke-width`,`2`);let g=this._ctx.getHeaderPosition(),_=i?g===`right`:g===`bottom`;h.setAttribute(`d`,this._wrappedPathData(o,i,_,c,u,2))}_computeWrappedRuns(e,t,n,r){let i=[],a;for(let o of e.panelIds){let e=n.get(o);if(!e)continue;let s=e.value.element.getBoundingClientRect();if(s.width===0&&s.height===0)continue;let c=s.top-t.top,l=s.bottom-t.top,u=s.left-t.left,d=s.right-t.left,f=r?u:c,p=i.find(e=>Math.abs((r?e.left:e.top)-f)<=2);p?(p.top=Math.min(p.top,c),p.bottom=Math.max(p.bottom,l),p.left=Math.min(p.left,u),p.right=Math.max(p.right,d)):(p={top:c,bottom:l,left:u,right:d},i.push(p)),a??=p}return{runs:i,firstRun:a}}_wrappedPathData(e,t,n,r,i,a){let o=``;for(let s of e)if(t){let e=n?s.right-r-a/2:s.left-r+a/2;o+=`M ${e},${s.top} L ${e},${s.bottom} `}else{let e=n?s.top-i+a/2:s.bottom-i-a/2;o+=`M ${s.left},${e} L ${s.right},${e} `}return o.trim()}_positionContinuationMarkers(e,t,n,r,i){let a=t.filter(e=>e!==n),o=this._syncContinuationMarkers(e,a.length);a.forEach((e,t)=>{let n=o[t];if(n.style.backgroundColor=r,i){let t=(e.left+e.right)/2;n.style.left=`${t-Ar/2}px`,n.style.top=`${e.top}px`}else{let t=(e.top+e.bottom)/2;n.style.left=`${e.left}px`,n.style.top=`${t-Ar/2}px`}})}ensureSvgPath(e){let t=e.firstElementChild;if(t?.tagName===`svg`)return{svg:t,path:t.firstElementChild};e.replaceChildren();let n=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);n.style.display=`block`;let r=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);return r.setAttribute(`fill`,`none`),n.appendChild(r),e.appendChild(n),{svg:n,path:r}}},Mr=class extends jr{_applyStraightLine(e,t,n,r,i,a,o){let s=o?i:r,c=o?r:i;e.setAttribute(`width`,String(s)),e.setAttribute(`height`,String(c)),n.style.width=`${s}px`,n.style.height=`${c}px`,t.setAttribute(`d`,o?`M ${a},0 L ${a},${r}`:`M 0,${a} L ${r},${a}`)}applyShape(e,t,n,r,i,a,o,s){let c=i,l=r,u=Dr(t.color,this._ctx.getColorPalette());if(l<=0||c<=0||u===void 0){e.style.display=`none`;return}e.style.display=``;let d;a&&t.panelIds.includes(a)&&(d=this._ctx.getTabMap().get(a));let{svg:f,path:p}=this.ensureSvgPath(e);p.setAttribute(`stroke`,u),p.setAttribute(`stroke-width`,`2`);let m=this._ctx.getHeaderPosition(),h=!s&&m===`bottom`,g=s&&m===`right`,_,v;if(s?(_=g?c-2:2,v=g?2:c-2):(_=h?2:c-2,v=h?c-2:2),!d){this._applyStraightLine(f,p,e,l,c,_,s);return}let y=d.value.element.getBoundingClientRect(),b,x;if(s?(b=Math.max(0,y.top-o.top-n),x=Math.min(l,y.bottom-o.top-n)):(b=Math.max(0,y.left-o.left-n),x=Math.min(l,y.right-o.left-n)),x<=b){this._applyStraightLine(f,p,e,l,c,_,s);return}let S=v>_?1:-1;if(s){let t=c,n=l;f.setAttribute(`width`,String(t)),f.setAttribute(`height`,String(n)),e.style.width=`${t}px`,e.style.height=`${n}px`;let r=[`M ${_},0`,`L ${_},${b-6}`,`Q ${_},${b} ${_+S*6},${b}`,`L ${v-S*6},${b}`,`Q ${v},${b} ${v},${b+6}`,`L ${v},${x-6}`,`Q ${v},${x} ${v-S*6},${x}`,`L ${_+S*6},${x}`,`Q ${_},${x} ${_},${x+6}`,`L ${_},${n}`].join(` `);p.setAttribute(`d`,r)}else{let t=l,n=c;f.setAttribute(`width`,String(t)),f.setAttribute(`height`,String(n)),e.style.width=`${t}px`,e.style.height=`${n}px`;let r=[`M 0,${_}`,`L ${b-6},${_}`,`Q ${b},${_} ${b},${_+S*6}`,`L ${b},${v-S*6}`,`Q ${b},${v} ${b+6},${v}`,`L ${x-6},${v}`,`Q ${x},${v} ${x},${v-S*6}`,`L ${x},${_+S*6}`,`Q ${x},${_} ${x+6},${_}`,`L ${t},${_}`].join(` `);p.setAttribute(`d`,r)}}},Nr=class extends jr{applyShape(e,t,n,r,i,a,o,s){let c=Dr(t.color,this._ctx.getColorPalette());if(r<=0||c===void 0){e.style.display=`none`;return}e.style.display=``,e.firstElementChild&&e.replaceChildren(),e.style.backgroundColor=c,s?(e.style.width=`2px`,e.style.height=`${r}px`):(e.style.width=`${r}px`,e.style.height=`2px`)}},Pr=new Map,Fr=class{get chipRenderers(){return this._chipRenderers}get groupUnderlines(){return this._indicator?.underlines??Pr}get skipNextCollapseAnimation(){return this._skipNextCollapseAnimation}set skipNextCollapseAnimation(e){this._skipNextCollapseAnimation=e}constructor(e,t){this._ctx=e,this._callbacks=t,this._chipRenderers=new Map,this._indicator=null,this._skipNextCollapseAnimation=!1,this._pendingTransitionCleanups=new Map}update(){let e=this._ctx.group.model.getTabGroups(),t=new Set;for(let n of e)t.add(n.id),this._ensureChipForGroup(n),this._positionChipForGroup(n);for(let[e,r]of this._chipRenderers)if(!t.has(e)){var n;r.chip.element.remove(),r.chip.dispose(),(n=r.dragSourcesDisposable)==null||n.dispose(),r.disposable.dispose(),this._chipRenderers.delete(e)}this._updateTabGroupClasses()}refreshAccents(){for(let n of this._ctx.group.model.getTabGroups()){var e,t;let r=this._chipRenderers.get(n.id);r==null||(t=(e=r.chip).update)==null||t.call(e,{tabGroup:n})}this._updateTabGroupClasses()}positionAllChips(){if(this._chipRenderers.size!==0)for(let e of this._ctx.group.model.getTabGroups())this._positionChipForGroup(e)}updateDirection(){let e=this._ctx.getDirection()===`vertical`;for(let[,t]of this._chipRenderers)t.dropTarget.setTargetZones(e?[`top`]:[`left`])}snapshotChipWidths(){let e=new Map;for(let[t,n]of this._chipRenderers)e.set(t,n.chip.element.getBoundingClientRect().width);return e}positionUnderlines(){var e;(e=this._indicator)==null||e.positionUnderlines()}trackUnderlines(){var e;(e=this._indicator)==null||e.trackUnderlines()}setGroupDragImage(e,t,n){if(!e.dataTransfer)return;let r=this._ctx.getDirection()===`vertical`,i=this._ctx.tabsList.cloneNode(!0);r?(i.classList.remove(`dv-tabs-container-vertical`,`dv-vertical`),i.classList.add(`dv-horizontal`),i.style.writingMode=`horizontal-tb`,i.style.height=`${this._ctx.tabsList.offsetWidth}px`):i.style.height=`${this._ctx.tabsList.offsetHeight}px`,i.style.width=`auto`,i.style.overflow=`visible`,i.style.pointerEvents=`none`;let a=Array.from(i.children),o=Array.from(this._ctx.tabsList.children);for(let e=a.length-1;e>=0;e--)o[e]!==n&&a[e].remove();let s=document.createElement(`div`);s.className=`dv-groupview dv-active-group`,s.style.position=`fixed`,s.style.top=`-10000px`,s.style.left=`0px`,s.style.height=`auto`,s.style.width=`auto`,s.style.pointerEvents=`none`;let c=document.createElement(`div`);c.className=`dv-tabs-and-actions-container`,c.style.height=`auto`,c.style.width=`auto`,s.appendChild(c),c.appendChild(i),this._ctx.accessor.element.appendChild(s);let l=i.querySelector(`.dv-tab-group-chip`),u=n.getBoundingClientRect(),d=e.clientX-u.left,f=e.clientY-u.top;if(l){let t=l.getBoundingClientRect(),n=s.getBoundingClientRect(),r=t.left-n.left+d,i=t.top-n.top+f;e.dataTransfer.setDragImage(s,r,i)}else e.dataTransfer.setDragImage(s,d,f);requestAnimationFrame(()=>{s.remove()})}cleanupTransition(e){var t;(t=this._pendingTransitionCleanups.get(e))==null||t(),this._pendingTransitionCleanups.delete(e)}updateDragAndDropState(){let e=ar(this._ctx.accessor.options);for(let i of this._chipRenderers.values()){var t,n,r;i.chip.element.draggable=e.html5,(t=i.html5DragSource)==null||t.setDisabled(!e.html5),(n=i.pointerDragSource)==null||n.setDisabled(!e.pointer),(r=i.pointerDragSource)==null||r.setTouchOnly(!e.pointerHandlesMouse)}}disposeChipDrag(e){var t;let n=this._chipRenderers.get(e);n&&((t=n.dragSourcesDisposable)==null||t.dispose(),n.html5DragSource=void 0,n.pointerDragSource=void 0,n.dragSourcesDisposable=void 0)}_buildChipGhostElement(e){let t=getComputedStyle(e),n=e.cloneNode(!0);return Array.from(t).forEach(e=>{n.style.setProperty(e,t.getPropertyValue(e),t.getPropertyPriority(e))}),n.style.position=`absolute`,n}disposeAll(){var e;(e=this._indicator)==null||e.dispose(),this._indicator=null;for(let[,e]of this._pendingTransitionCleanups)e();this._pendingTransitionCleanups.clear();for(let[,e]of this._chipRenderers){var t;e.chip.element.remove(),e.chip.dispose(),(t=e.dragSourcesDisposable)==null||t.dispose(),e.disposable.dispose()}this._chipRenderers.clear()}_ensureIndicator(){let e=(this._ctx.accessor.options.theme?.tabGroupIndicator??`wrap`)===`none`?Nr:Mr;this._indicator&&!(this._indicator instanceof e)&&(this._indicator.dispose(),this._indicator=null),this._indicator??=new e({tabsList:this._ctx.tabsList,getTabGroups:()=>this._ctx.group.model.getTabGroups(),getActivePanelId:()=>this._ctx.group.activePanel?.id,getTabMap:()=>this._ctx.getTabMap(),getChipElement:e=>this._chipRenderers.get(e)?.chip.element,getDirection:()=>this._ctx.getDirection(),getHeaderPosition:()=>this._ctx.group.model.headerPosition,getColorPalette:()=>this._ctx.accessor.tabGroupColorPalette})}_createChipDragSources(e,t){let n=ar(this._ctx.accessor.options);e.element.draggable=n.html5;let r=He.getInstance(),i=()=>(r.setData([new Ve(this._ctx.accessor.id,this._ctx.group.id,null,t.id)],Ve.prototype),{dispose:()=>{r.clearData(Ve.prototype)}}),a=Wn.createDragSource(e.element,{getData:i,disabled:!n.html5,isCancelled:()=>!ar(this._ctx.accessor.options).html5,onDragStart:n=>{`dataTransfer`in n&&n.dataTransfer&&this.setGroupDragImage(n,t,e.element),this._callbacks.onChipDragStart(t,e,n)},onDragEnd:n=>{var r,i;(r=(i=this._callbacks).onChipDragEnd)==null||r.call(i,t,e,n)}}),o=()=>{r.clearData(Ve.prototype)};e.element.addEventListener(`dragend`,o,{once:!0});let s=Gn.createDragSource(e.element,{getData:i,disabled:!n.pointer,touchOnly:!n.pointerHandlesMouse,isCancelled:()=>!ar(this._ctx.accessor.options).pointer,createGhost:()=>({element:this._buildChipGhostElement(e.element),offsetX:8,offsetY:8}),onDragStart:n=>{this._callbacks.onChipDragStart(t,e,n)}});return{html5DragSource:a,pointerDragSource:s,disposable:{dispose:()=>{a.dispose(),s.dispose(),e.element.removeEventListener(`dragend`,o)}}}}_ensureChipForGroup(e){let t=this._chipRenderers.get(e.id);if(t){if(!t.html5DragSource){let n=this._createChipDragSources(t.chip,e);t.html5DragSource=n.html5DragSource,t.pointerDragSource=n.pointerDragSource,t.dragSourcesDisposable=n.disposable}return}let n=this._ctx.accessor.options.createTabGroupChipComponent,r=n?n(e):new Or(this._ctx.accessor.tabGroupColorPalette);r.init({tabGroup:e,api:this._ctx.accessor.api});let i=this._createChipDragSources(r,e),a=[e.onDidChange(()=>{var t;(t=r.update)==null||t.call(r,{tabGroup:e}),this._updateTabGroupClasses()}),e.onDidPanelChange(()=>{this._positionChipForGroup(e),this._updateTabGroupClasses()}),e.onDidCollapseChange(()=>{this._updateTabGroupClasses()})],o=t=>{var n;(n=this._chipRenderers.get(e.id))==null||(n=n.pointerDragSource)==null||n.cancelPending(),this._callbacks.onChipContextMenu(e,t)};r instanceof Or?a.push(r.onContextMenu(o)):a.push(new ir(r.element,{onLongPress:o}),Qe(r.element,`contextmenu`,o));let s=this._ctx.getDirection()===`vertical`,c=new kn(r.element,{acceptedTargetZones:s?[`top`]:[`left`],overlayModel:{activationSize:{value:100,type:`percentage`}},canDisplayOverlay:(e,t)=>{if(this._ctx.group.locked||this._ctx.accessor.options.disableDnd)return!1;let n=Ue();return this._ctx.accessor.id===n?.viewId?this._ctx.accessor.options.theme?.tabAnimation!==`smooth`:this._ctx.group.model.canDisplayOverlay(e,t,`tab`)}});a.push(c,c.onDrop(t=>{this._callbacks.onChipDrop(e,t)}));let l=new Q(...a);this._chipRenderers.set(e.id,{chip:r,html5DragSource:i.html5DragSource,pointerDragSource:i.pointerDragSource,dragSourcesDisposable:i.disposable,disposable:l,dropTarget:c}),e.collapsed&&(this._skipNextCollapseAnimation=!0)}_positionChipForGroup(e){let t=this._chipRenderers.get(e.id);if(!t)return;let n=t.chip.element,r=e.panelIds;if(r.length===0){n.remove();return}let i=r[0],a=this._ctx.getTabMap().get(i);if(!a){n.remove();return}let o=a.value.element;n.nextSibling!==o&&this._ctx.tabsList.insertBefore(n,o)}_updateTabGroupClasses(){let e=this._ctx.group.model.getTabGroups(),t=this._ctx.getTabs(),n=this._ctx.getTabMap(),r=!1,i=new Map;for(let t of e)for(let e of t.panelIds)i.set(e,t);for(let e of t){let t=e.value,n=t.panel.id,o=i.get(n),s=!!o;if(it(t.element,`dv-tab--grouped`,s),o){let e=o.panelIds,i=e[0]===n,s=e[e.length-1]===n;it(t.element,`dv-tab--group-first`,i),it(t.element,`dv-tab--group-last`,s),Er(t.element,o.color,this._ctx.accessor.tabGroupColorPalette);let c=t.element.classList.contains(`dv-tab--group-collapsed`);if(!o.collapsed&&c){var a;r=!0,t.element.classList.remove(`dv-tab--group-collapsed`),t.element.classList.add(`dv-tab--group-expanding`),(a=this._pendingTransitionCleanups.get(n))==null||a();let e=()=>{t.element.classList.remove(`dv-tab--group-expanding`),t.element.style.removeProperty(`width`),t.element.removeEventListener(`transitionend`,e),clearTimeout(i),this._pendingTransitionCleanups.delete(n)},i=setTimeout(e,300);this._pendingTransitionCleanups.set(n,e),t.element.addEventListener(`transitionend`,e)}}else it(t.element,`dv-tab--group-first`,!1),it(t.element,`dv-tab--group-last`,!1),t.element.classList.remove(`dv-tab--group-collapsed`,`dv-tab--group-expanding`),t.element.style.removeProperty(`width`),t.element.style.removeProperty(`--dv-tab-group-color`)}let o=new Set;for(let t of e)if(o.add(t.id),t.collapsed&&t.panelIds.some(e=>{let t=n.get(e);return t&&!t.value.element.classList.contains(`dv-tab--group-collapsed`)})){if(this._skipNextCollapseAnimation){let e=[];for(let r of t.panelIds){let t=n.get(r);t&&(t.value.element.style.transition=`none`,t.value.element.classList.add(`dv-tab--group-collapsed`),e.push(t.value.element))}if(e.length>0){e[0].offsetHeight;for(let t of e)t.style.removeProperty(`transition`)}}else{r=!0;let e=this._ctx.getDirection()===`vertical`;for(let r of t.panelIds){let t=n.get(r);if(t&&!t.value.element.classList.contains(`dv-tab--group-collapsed`)){let n=t.value.element.getBoundingClientRect();e?t.value.element.style.height=`${n.height}px`:t.value.element.style.width=`${n.width}px`,t.value.element.offsetHeight,t.value.element.classList.add(`dv-tab--group-collapsed`)}}}}this._skipNextCollapseAnimation=!1,this._ensureIndicator(),this._indicator&&(this._indicator.syncUnderlineElements(o),r?this._indicator.trackUnderlines():this._indicator.positionUnderlines())}},Ir=class extends Q{get _tabs(){return this.host.tabItems}get _tabMap(){return this.host.tabMap}get _tabsList(){return this.host.tabsList}get _direction(){return this.host.direction}get group(){return this.host.groupPanel}get accessor(){return this.host.component}get _tabGroupManager(){return this.host.tabGroupManager}get _wrapMode(){return this._tabsList.classList.contains(mr)}get animState(){return this._animState}set animState(e){this._animState=e}get pendingCollapse(){return this._pendingCollapse}set pendingCollapse(e){this._pendingCollapse=e}set voidContainerElement(e){this._voidContainer=e}constructor(e){super(),this.host=e,this._animState=null,this._pendingMarginCleanups=new Map,this._pendingCollapse=!1,this._flipTransitionCleanup=null,this._voidContainer=null,this._extendedDropZone=null,this._pointerInsideTabsList=!1,this._wrapIndicatorEl=null,this.addDisposables({dispose:()=>{var e;(e=this._flipTransitionCleanup)==null||e.call(this)}})}setExtendedDropZone(e){this._extendedDropZone=e}setExternalInsertionIndex(e){this._animState&&e!==this._animState.currentInsertionIndex&&(this._animState.currentInsertionIndex=e,this.applyDragOverTransforms())}clearExternalAnimState(){this._animState&&(this.resetTabTransforms(),this._animState.sourceIndex===-1?this._animState=null:this._animState.currentInsertionIndex=null)}snapshotTabPositions(){let e=new Map;for(let t of this._tabs)e.set(t.value.panel.id,t.value.element.getBoundingClientRect());return e}getAverageTabWidth(){if(this._tabs.length===0)return 0;let e=this._direction===`vertical`,t=0;for(let n of this._tabs){let r=n.value.element.getBoundingClientRect();t+=e?r.height:r.width}return t/this._tabs.length}handlePointerDragMove(e,t){let n=(this._tabsList.ownerDocument??document).elementFromPoint(e,t);if(!(n&&(this._tabsList.contains(n)||this._extendedDropZone&&this._extendedDropZone.contains(n)))){this._pointerInsideTabsList&&(this._pointerInsideTabsList=!1,this.processDragLeave(n));return}this._pointerInsideTabsList=!0,this.processDragOver(e,t)}handlePointerDragEnd(e){e&&this._animState&&this._animState.sourceIndex!==-1&&!this._animState.sourceTabGroupId&&this._animState.currentInsertionIndex!==null&&this.isPointInsideTabsList(e.clientX,e.clientY)&&this.commitPointerReorder(e.pointerEvent),this._pointerInsideTabsList=!1,this.resetDragAnimation()}isPointInsideTabsList(e,t){let n=(this._tabsList.ownerDocument??document).elementFromPoint(e,t);return!!n&&this._tabsList.contains(n)}commitPointerReorder(e){let t=this._animState;if(t?.currentInsertionIndex==null)return;let n=t.currentInsertionIndex,r=t.sourceIndex,i=n-+(r!==-1&&r<n);this._animState=null,this.clearWrapDropIndicator(),this.uncollapseSourceTab(t.sourceTabId),i!==r&&this.host.fireDrop({event:e,index:i,targetTabGroupId:null})}processDragOver(e,t){if(this.accessor.options.disableDnd||(this._dropStaleAnimState(),!this._animState&&!this._initAnimStateForExternalDrag()))return!1;if(this._animState.sourceIndex!==-1){var n;(n=this.group.model.dropTargetContainer)==null||(n=n.model)==null||n.clear()}return this.handleDragOver({clientX:e,clientY:t}),!0}_dropStaleAnimState(){if(!this._animState)return;let e=Ue();e?.tabGroupId&&e.groupId!==this.group.id&&this._animState.sourceTabGroupId!==e.tabGroupId&&(this._animState=null)}_initAnimStateForExternalDrag(){let e=Ue();if(this.accessor.options.theme?.tabAnimation==="default"&&!e?.tabGroupId||!e||!(e.panelId||e.tabGroupId)||e.groupId===this.group.id)return!1;let t=this.getAverageTabWidth();return this._animState=e.tabGroupId?this._makeGroupDragAnimState(e,t):this._makeTabDragAnimState(e,t),!0}_makeGroupDragAnimState(e,t){let n=this.accessor.getPanel(e.groupId)?.model.getTabGroups().find(t=>t.id===e.tabGroupId),r=t*(n?.panelIds.length??1)+t;return{sourceTabId:``,sourceIndex:-1,tabPositions:this.snapshotTabPositions(),chipPositions:this._tabGroupManager.snapshotChipWidths(),currentInsertionIndex:null,targetTabGroupId:null,sourceTabGroupId:e.tabGroupId,sourceGroupPanelIds:n?new Set(n.panelIds):new Set,sourceChipWidth:t,cursorOffsetFromDragLeft:r/2,sourceGapWidth:r,containerLeft:this._tabsList.getBoundingClientRect().left}}_makeTabDragAnimState(e,t){return{sourceTabId:e.panelId,sourceIndex:-1,tabPositions:this.snapshotTabPositions(),chipPositions:this._tabGroupManager.snapshotChipWidths(),currentInsertionIndex:null,targetTabGroupId:null,sourceTabGroupId:null,sourceGroupPanelIds:null,sourceChipWidth:0,cursorOffsetFromDragLeft:t/2,sourceGapWidth:t,containerLeft:this._tabsList.getBoundingClientRect().left}}processDragLeave(e){if(this._animState&&!(e&&this._tabsList.contains(e))){if(e&&this._extendedDropZone?.contains(e)){this.resetTabTransforms(),this._animState.currentInsertionIndex=null;return}if(!(this._voidContainer&&e&&(e===this._voidContainer||this._voidContainer.contains(e)))){if(this.resetTabTransforms(),this._animState.sourceIndex===-1){var t;(t=this.group.model.dropTargetContainer)==null||(t=t.model)==null||t.clear(),this._animState=null}else this._animState.currentInsertionIndex=null}}}handleDragOver(e){if(!this._animState)return;if(this._wrapMode&&!this._animState.sourceTabGroupId){this.handleWrappedDragOver(e.clientX,e.clientY??0);return}let t=e.clientX,n=this._buildFirstPanelToGroupMap(),r=this._computeDragOverInsertionIndex(t,n),i=null;if(r!==null&&this._tabGroupManager.chipRenderers.size>0){let e=this._resolveInsertionAgainstTabGroups(t,r,n);r=e.insertionIndex,i=e.targetTabGroupId}(r!==this._animState.currentInsertionIndex||i!==this._animState.targetTabGroupId)&&(this._animState.currentInsertionIndex=r,this._animState.targetTabGroupId=i,this.accessor.options.theme?.tabAnimation===`smooth`&&this.applyDragOverTransforms())}_buildFirstPanelToGroupMap(){let e=new Map;if(this._tabGroupManager.chipRenderers.size===0)return e;for(let t of this.group.model.getTabGroups())t.id!==this._animState.sourceTabGroupId&&t.panelIds.length>0&&e.set(t.panelIds[0],t.id);return e}_computeDragOverInsertionIndex(e,t){let n=this._animState,r=n.sourceGroupPanelIds,i=e-n.cursorOffsetFromDragLeft-n.containerLeft,a=0,o=null;for(let e=0;e<this._tabs.length;e++){let s=this._tabs[e].value;if(s.panel.id===n.sourceTabId||r?.has(s.panel.id))continue;let c=t.get(s.panel.id);if(c){let t=n.chipPositions.get(c)??0;if(a+t>i){o??=e;break}a+=t}let l=n.tabPositions.get(s.panel.id),u=l?l.width:s.element.getBoundingClientRect().width;if(a+u/2<=i)a+=u,o=e+1;else{o??=e;break}}return o}_accumulatedWidthUpTo(e,t){let n=this._animState,r=n.sourceGroupPanelIds,i=0;for(let a=0;a<this._tabs.length;a++){let o=this._tabs[a].value;if(o.panel.id===n.sourceTabId||r?.has(o.panel.id))continue;if(a>=e)break;let s=t.get(o.panel.id);s&&(i+=n.chipPositions.get(s)??0);let c=n.tabPositions.get(o.panel.id);i+=c?c.width:o.element.getBoundingClientRect().width}return i}_resolveInsertionAgainstTabGroups(e,t,n){let r=!!this._animState.sourceTabGroupId,i=this._accumulatedWidthUpTo(t,n);for(let n of this.group.model.getTabGroups()){let a=this._evaluateTabGroupForInsertion(n,e,t,i,r);if(a)return a}return{insertionIndex:t,targetTabGroupId:null}}_evaluateTabGroupForInsertion(e,t,n,r,i){let a=this._resolveGroupRange(e);if(!a)return null;let{firstIdx:o,lastIdx:s}=a,c=n>=o&&n<=s,l=!c&&n===o-1;return!c&&!l?null:i?this._resolveGroupDragTarget(n,o,s,c):this._resolveTabDragTarget(e,t,n,r,o,l)}_resolveGroupRange(e){let t=this._animState,n=t.sourceGroupPanelIds,r=e.panelIds.filter(e=>e!==t.sourceTabId&&!n?.has(e));if(r.length===0)return null;let i=this._tabs.findIndex(e=>e.value.panel.id===r[0]),a=this._tabs.findIndex(e=>e.value.panel.id===r[r.length-1]);return i===-1||a===-1?null:{firstIdx:i,lastIdx:a}}_resolveGroupDragTarget(e,t,n,r){return r?{insertionIndex:e<(t+n+1)/2?t:n+1,targetTabGroupId:null}:{insertionIndex:e,targetTabGroupId:null}}_resolveTabDragTarget(e,t,n,r,i,a){let o=this._animState,s=o.chipPositions.get(e.id)??0;if(a)return this._onlySourceBetween(n,i)?t>=(e.collapsed?o.containerLeft+r+s/2:o.containerLeft+r+s)?{insertionIndex:i,targetTabGroupId:e.id}:{insertionIndex:n,targetTabGroupId:null}:null;let c=o.containerLeft+r+s;return n===i?{insertionIndex:n,targetTabGroupId:t>=c?e.id:null}:{insertionIndex:n,targetTabGroupId:e.id}}_onlySourceBetween(e,t){let n=this._animState;for(let r=e;r<t;r++){let e=this._tabs[r].value.panel.id;if(e!==n.sourceTabId&&!n.sourceGroupPanelIds?.has(e))return!1}return!0}handleWrappedDragOver(e,t){if(!this._animState)return;let n=this.computeWrappedInsertionIndex(e,t);(n!==this._animState.currentInsertionIndex||this._animState.targetTabGroupId!==null)&&(this._animState.currentInsertionIndex=n,this._animState.targetTabGroupId=null,this.updateWrapDropIndicator(n))}computeWrappedInsertionIndex(e,t){let n=this._direction===`vertical`,r=this._wrappedDragEntries();if(r.length===0)return this._tabs.length;let i=n?e:t,a=n?t:e,o=e=>n?e.left:e.top,s=e=>n?e.right:e.bottom,c=e=>n?e.top:e.left,l=e=>n?e.height:e.width,u=this._bucketWrappedLines(r,o,s),d=[...(u.find(e=>i>=e.start&&i<=e.end)??this._nearestWrappedLine(u,i)).items].sort((e,t)=>c(e.rect)-c(t.rect));for(let e of d)if(a<c(e.rect)+l(e.rect)/2)return e.index;return d[d.length-1].index+1}_wrappedDragEntries(){let e=this._animState?.sourceTabId,t=this._animState?.sourceGroupPanelIds,n=[];for(let r=0;r<this._tabs.length;r++){let i=this._tabs[r].value;i.panel.id!==e&&(t?.has(i.panel.id)||n.push({index:r,rect:i.element.getBoundingClientRect()}))}return n}_bucketWrappedLines(e,t,n){let r=[];for(let i of e){let e=t(i.rect),a=r.find(t=>Math.abs(t.start-e)<=2);a?(a.items.push(i),a.end=Math.max(a.end,n(i.rect))):r.push({start:e,end:n(i.rect),items:[i]})}return r.sort((e,t)=>e.start-t.start),r}_nearestWrappedLine(e,t){let n=e=>t<e.start?e.start-t:t-e.end;return e.reduce((e,t)=>n(t)<n(e)?t:e,e[0])}updateWrapDropIndicator(e){this.clearWrapDropIndicator();let t=this._tabs.length;if(t===0)return;let n=this._animState?.sourceTabId;if(e<t){let t=this._tabs[e].value.element;if(this._tabs[e].value.panel.id===n)return;t.classList.add(`dv-tab--reorder-before`),this._wrapIndicatorEl=t}else{let e=this._tabs[t-1].value.element;e.classList.add(`dv-tab--reorder-after`),this._wrapIndicatorEl=e}}clearWrapDropIndicator(){var e;(e=this._wrapIndicatorEl)==null||e.classList.remove(`dv-tab--reorder-before`,`dv-tab--reorder-after`),this._wrapIndicatorEl=null}_removeClassInstantlyBatch(e,t){let n=[];for(let r of e)r.classList.contains(t)&&(r.style.transition=`none`,it(r,t,!1),n.push(r));if(n.length>0){n[0].getBoundingClientRect();for(let e of n)e.style.removeProperty(`transition`)}}uncollapseSourceTab(e){let t=this._tabMap.get(e);t&&this._removeClassInstantlyBatch([t.value.element],`dv-tab--dragging`)}applyDragOverTransforms(e=!1){if(this._wrapMode)return;if(this._animState?.currentInsertionIndex==null){this.resetTabTransforms();return}if(this._pendingCollapse)return;let t=this._animState.currentInsertionIndex,n=this._computeGapWidth(),r=this._computeChipToShift(t);this._applyGapMargins(t,n,r,e)}_computeGapWidth(){let e=this._animState;if(e.sourceTabGroupId&&e.sourceGroupPanelIds)return e.sourceGapWidth;let t=e.tabPositions.get(e.sourceTabId);return t?t.width:this.getAverageTabWidth()}_computeChipToShift(e){if(this._tabGroupManager.chipRenderers.size===0)return null;for(let t of this.group.model.getTabGroups()){let n=this._chipToShiftForGroup(t,e);if(n!==void 0)return n}return null}_chipToShiftForGroup(e,t){let n=this._animState;if(e.id===n.sourceTabGroupId||e.panelIds.includes(n.sourceTabId))return;let r=e.panelIds.filter(e=>e!==n.sourceTabId&&!n.sourceGroupPanelIds?.has(e));if(r.length===0)return;let i=this._tabs.findIndex(e=>e.value.panel.id===r[0]);if((!n.targetTabGroupId||n.targetTabGroupId===e.id&&e.collapsed)&&!(i<t)){if(this._onlySourceBetween(t,i)){let t=this._tabGroupManager.chipRenderers.get(e.id);if(t)return t.chip.element}return null}}_applyGapMargins(e,t,n,r){let i=this._animState,a=i.sourceGroupPanelIds,o=!1;for(let[e,t]of this._tabGroupManager.chipRenderers)e!==i.sourceTabGroupId&&this._clearMargin(t.chip.element,r);n&&(this._setMargin(n,`${t}px`,r),o=!0);for(let n=0;n<this._tabs.length;n++){let s=this._tabs[n].value;s.panel.id!==i.sourceTabId&&(a?.has(s.panel.id)||(!o&&n>=e?(this._setMargin(s.element,`${t}px`,r),o=!0):this._clearMargin(s.element,r)))}this._tabGroupManager.trackUnderlines()}_shiftingClass(e){return e.classList.contains(`dv-tab-group-chip`)?`dv-tab-group-chip--shifting`:`dv-tab--shifting`}_setMargin(e,t,n){n?(e.style.transition=`none`,e.style.marginLeft=t,e.getBoundingClientRect(),e.style.removeProperty(`transition`)):e.style.marginLeft=t,it(e,this._shiftingClass(e),!0)}_clearMargin(e,t){let n=this._shiftingClass(e),r=this._pendingMarginCleanups.get(e);if(r&&r(),t||!e.style.marginLeft)e.style.removeProperty(`margin-left`),it(e,n,!1);else{e.style.marginLeft=`0px`,it(e,n,!0);let t=()=>{e.style.removeProperty(`margin-left`),it(e,n,!1),e.removeEventListener(`transitionend`,t),clearTimeout(r),this._pendingMarginCleanups.delete(e)},r=setTimeout(t,300);this._pendingMarginCleanups.set(e,t),e.addEventListener(`transitionend`,t)}}resetTabTransforms(){this.clearWrapDropIndicator();for(let[,e]of this._pendingMarginCleanups)e();this._pendingMarginCleanups.clear();for(let e of this._tabs)e.value.element.style.removeProperty(`margin-left`),e.value.element.style.removeProperty(`margin-right`),e.value.element.style.removeProperty(`margin-top`),e.value.element.style.removeProperty(`margin-bottom`),e.value.element.style.removeProperty(`transform`),it(e.value.element,`dv-tab--shifting`,!1);for(let[,e]of this._tabGroupManager.chipRenderers)e.chip.element.style.removeProperty(`margin-left`),it(e.chip.element,`dv-tab-group-chip--shifting`,!1);this._tabGroupManager.positionUnderlines()}commitGroupMove(e,t){let n=Ue();if(this._tabGroupManager.disposeChipDrag(e),this.group.model.getTabGroups().some(t=>t.id===e)){if(this.accessor.options.theme?.tabAnimation===`smooth`){this._clearGroupDragClasses(e);let n=this.snapshotTabPositions();this.resetTabTransforms(),this.group.model.moveTabGroup(e,t),this.runFlipAnimation(n,``,!1)}else this._tabGroupManager.skipNextCollapseAnimation=!0,this.group.model.moveTabGroup(e,t)}else n&&(this.resetTabTransforms(),this.accessor.moveGroupOrPanel({from:{groupId:n.groupId,tabGroupId:n.tabGroupId??e},to:{group:this.group,position:`center`,index:t}}))}_clearGroupDragClasses(e){let t=this._tabGroupManager.chipRenderers.get(e);t&&this._removeClassInstantlyBatch([t.chip.element],`dv-tab-group-chip--dragging`),this._removeClassInstantlyBatch(this._tabs.map(e=>e.value.element),`dv-tab--dragging`);let n=this._tabGroupManager.groupUnderlines.get(e);n&&n.style.removeProperty(`display`),this._tabGroupManager.skipNextCollapseAnimation=!0}resetDragAnimation(){if(this._pendingCollapse=!1,this._animState){this.resetTabTransforms(),this._animState.sourceTabGroupId?this._clearGroupDragClasses(this._animState.sourceTabGroupId):this._removeClassInstantlyBatch(this._tabs.map(e=>e.value.element),`dv-tab--dragging`),this._animState=null;for(let[,e]of this._tabGroupManager.groupUnderlines)e.style.removeProperty(`display`)}}runFlipAnimation(e,t,n=!1,r){if(this._wrapMode)return;let i=!1;for(let a=0;a<this._tabs.length;a++)this._applyFlipTransform(this._tabs[a],a,t,n,e,r)&&(i=!0);i&&this._scheduleFlipReset()}_applyFlipTransform(e,t,n,r,i,a){let o=this._direction===`vertical`,s=e.value.panel.id;if(s===n){if(!r)return!1;let t=e.value.element.getBoundingClientRect();return e.value.element.style.transform=o?`translateY(${t.height}px)`:`translateX(${t.width}px)`,it(e.value.element,`dv-tab--shifting`,!0),!0}if(a!==void 0&&(t<a.from||t>a.to))return!1;let c=i.get(s);if(!c)return!1;let l=e.value.element.getBoundingClientRect(),u=o?c.top-l.top:c.left-l.left;return Math.abs(u)<1?!1:(e.value.element.style.transform=o?`translateY(${u}px)`:`translateX(${u}px)`,it(e.value.element,`dv-tab--shifting`,!0),!0)}_scheduleFlipReset(){requestAnimationFrame(()=>{var e;for(let e of this._tabs)e.value.element.style.transform&&(e.value.element.style.transform=``);this._tabGroupManager.trackUnderlines(),(e=this._flipTransitionCleanup)==null||e.call(this);let t=e=>{if(e.propertyName===`transform`){n();for(let e of this._tabs)it(e.value.element,`dv-tab--shifting`,!1);this._tabGroupManager.positionUnderlines()}},n=()=>{this._tabsList.removeEventListener(`transitionend`,t),this._flipTransitionCleanup=null};this._flipTransitionCleanup=n,this._tabsList.addEventListener(`transitionend`,t)})}},Lr=class extends Q{get _animState(){return this._reorder.animState}set _animState(e){this._reorder.animState=e}get _pendingCollapse(){return this._reorder.pendingCollapse}set _pendingCollapse(e){this._reorder.pendingCollapse=e}get tabItems(){return this._tabs}get tabMap(){return this._tabMap}get tabsList(){return this._tabsList}get groupPanel(){return this.group}get component(){return this.accessor}get tabGroupManager(){return this._tabGroupManager}fireDrop(e){this._onDrop.fire(e)}setOverflowExclude(e){this._overflowExclude=e,this.refreshOverflow()}setForcedOverflow(e){this._forcedOverflow=e,this.refreshOverflow()}refreshOverflow(){this._showTabsOverflowControl&&this.toggleDropdown({reset:!1}),this._applyPinnedSticky()}setPinnedSticky(e){this._pinnedSticky!==e&&(this._pinnedSticky=e,this._applyPinnedSticky())}_applyPinnedSticky(){let e=this._pinnedSticky?this._tabs.filter(e=>this._overflowExclude(e.value.panel.id)):[];if(e.length===0&&!this._hasPinnedStickyStyling)return;for(let e of this._tabs){let t=e.value.element;t.classList.contains(`dv-tab--pinned-sticky`)&&(t.classList.remove(`dv-tab--pinned-sticky`),t.style.removeProperty(`--dv-pinned-sticky-left`))}if(e.length===0){this._hasPinnedStickyStyling=!1;return}let t=e.map(e=>e.value.element.offsetLeft);e.forEach((e,n)=>{let r=e.value.element;r.classList.add(`dv-tab--pinned-sticky`),r.style.setProperty(`--dv-pinned-sticky-left`,`${t[n]}px`)}),this._hasPinnedStickyStyling=!0}get showTabsOverflowControl(){return this._showTabsOverflowControl}set showTabsOverflowControl(e){if(this._showTabsOverflowControl!=e){if(this._showTabsOverflowControl=e,e){let e=new et(this._tabsList);this._observerDisposable.value=new Q(e,e.onDidChange(e=>{let t=e.hasScrollX||e.hasScrollY;this.toggleDropdown({reset:!t}),this._applyPinnedSticky(),this._tabGroupManager.groupUnderlines.size>0&&this._tabGroupManager.positionUnderlines()}),Qe(this._tabsList,`scroll`,()=>{this.toggleDropdown({reset:!1}),this._applyPinnedSticky(),this._tabGroupManager.groupUnderlines.size>0&&this._tabGroupManager.positionUnderlines()}))}else this._observerDisposable.value=We.NONE}}get element(){return this._element}get tabsListElement(){return this._tabsList}set voidContainer(e){var t;(t=this._voidContainerListeners)==null||t.dispose(),this._voidContainerListeners=null,this._reorder.voidContainerElement=e,e&&(this._voidContainerListeners=new Q(Qe(e,`dragover`,e=>{this._animState&&e.preventDefault()}),Qe(e,`drop`,e=>{this._animState?.sourceTabGroupId&&this._animState.currentInsertionIndex!==null&&(e.preventDefault(),e.stopPropagation(),this.handleVoidDrop())})))}handleVoidDrop(){if(!this._animState?.sourceTabGroupId)return!1;let e=this._animState.sourceTabGroupId,t=this._animState.currentInsertionIndex??this._tabs.length;return this._animState=null,this._commitGroupMove(e,t),!0}get panels(){return this._tabs.map(e=>e.value.panel.id)}get size(){return this._tabs.length}get tabs(){return this._tabs.map(e=>e.value)}get direction(){return this._direction}set direction(e){if(this._direction!==e){this._direction=e,this._tabsList.setAttribute(`aria-orientation`,e===`vertical`?`vertical`:`horizontal`),this._scrollbar&&(this._scrollbar.orientation=e),nt(this._tabsList,`dv-horizontal`,`dv-vertical`),e===`vertical`?rt(this._tabsList,`dv-tabs-container-vertical`,`dv-vertical`):(nt(this._tabsList,`dv-tabs-container-vertical`),rt(this._tabsList,`dv-horizontal`));for(let t of this._tabs)t.value.setDirection(e);this._tabGroupManager.updateDirection()}}constructor(e,t,n){super(),this.group=e,this.accessor=t,this._observerDisposable=new Ge,this._pointerActivation=new Ge,this._scrollbar=null,this._tabs=[],this._tabMap=new Map,this.selectedIndex=-1,this._showTabsOverflowControl=!1,this._overflowExclude=()=>!1,this._forcedOverflow=()=>!1,this._pinnedSticky=!1,this._hasPinnedStickyStyling=!1,this._direction=`horizontal`,this._voidContainerListeners=null,this._onTabDragStart=new $,this.onTabDragStart=this._onTabDragStart.event,this._onDrop=new $,this.onDrop=this._onDrop.event,this._onWillShowOverlay=new $,this.onWillShowOverlay=this._onWillShowOverlay.event,this._onOverflowTabsChange=new $,this.onOverflowTabsChange=this._onOverflowTabsChange.event,this._tabsList=document.createElement(`div`),this._tabsList.className=`dv-tabs-container`,this._tabsList.setAttribute(`role`,`tablist`),this._tabsList.setAttribute(`aria-orientation`,this._direction===`vertical`?`vertical`:`horizontal`),this.showTabsOverflowControl=n.showTabsOverflowControl,t.options.scrollbars===`native`?this._element=this._tabsList:(this._scrollbar=new pr(this._tabsList),this._scrollbar.orientation=this.direction,this._element=this._scrollbar.element,this.addDisposables(this._scrollbar)),this._tabGroupManager=new Fr({group:this.group,accessor:this.accessor,tabsList:this._tabsList,getTabs:()=>this._tabs,getTabMap:()=>this._tabMap,getDirection:()=>this._direction},{onChipContextMenu:(e,t)=>{var n;(n=this.accessor.contextMenuService)==null||n.showForChip(e,this.group,t)},onChipDragStart:(e,t,n)=>{this._handleChipDragStart(e,t,n)},onChipDragEnd:()=>{this._reorder.resetDragAnimation()},onChipDrop:(e,t)=>{this._handleChipDrop(e,t)}}),this._reorder=new Ir(this),this.addDisposables(this._onOverflowTabsChange,this._observerDisposable,this._pointerActivation,this._onWillShowOverlay,this._onDrop,this._onTabDragStart,this._reorder,Nn.getInstance().onDragEnd(e=>{this._reorder.handlePointerDragEnd(e)}),Nn.getInstance().onDragMove(e=>{this._reorder.handlePointerDragMove(e.clientX,e.clientY)}),Qe(this.element,`pointerdown`,e=>{e.defaultPrevented||e.button===0&&this.accessor.doSetGroupActive(this.group)}),Qe(this._tabsList,`wheel`,e=>{let t=this._direction===`vertical`,n=t?e.deltaY||e.deltaX:e.deltaX||e.deltaY;if(n===0)return;let r=t?this._tabsList.scrollHeight-this._tabsList.clientHeight:this._tabsList.scrollWidth-this._tabsList.clientWidth;if(r<=0)return;let i=t?this._tabsList.scrollTop:this._tabsList.scrollLeft;n<0&&i<=0||n>0&&i>=r||(e.preventDefault(),e.stopPropagation(),t?this._tabsList.scrollTop=i+n:this._tabsList.scrollLeft=i+n)},{passive:!1}),Qe(this._tabsList,`keydown`,e=>{this._onKeyDown(e)}),Qe(this._tabsList,`dragover`,e=>{this._reorder.processDragOver(e.clientX,e.clientY)&&e.preventDefault()},!0),Qe(this._tabsList,`dragleave`,e=>{this._reorder.processDragLeave(e.relatedTarget)},!0),Qe(this._tabsList,`dragend`,()=>{this._reorder.resetDragAnimation()}),Qe(this._tabsList,`drop`,e=>{var t;if(this._animState?.currentInsertionIndex==null||this.accessor.options.theme?.tabAnimation!==`smooth`&&!this._animState.sourceTabGroupId)return;e.stopPropagation(),e.preventDefault(),(t=this.group.model.dropTargetContainer)==null||(t=t.model)==null||t.clear();let n=this._animState;if(this._animState=null,this._pendingCollapse=!1,n.sourceTabGroupId){this._commitGroupMove(n.sourceTabGroupId,n.currentInsertionIndex);return}let r=n.currentInsertionIndex,i=n.sourceIndex,a=r-+(i!==-1&&i<r),o=this.group.model.getTabGroupForPanel(n.sourceTabId);if(a===i&&!n.targetTabGroupId&&!o){this._reorder.uncollapseSourceTab(n.sourceTabId),this.resetTabTransforms();return}this._reorder.uncollapseSourceTab(n.sourceTabId);let s=this.snapshotTabPositions();this.resetTabTransforms(),this._onDrop.fire({event:e,index:a,targetTabGroupId:n.targetTabGroupId}),this.runFlipAnimation(s,n.sourceTabId,n.sourceIndex===-1,{from:Math.min(i,a),to:Math.max(i,a)})},!0),We.from(()=>{var e;(e=this._voidContainerListeners)==null||e.dispose(),this._reorder.resetDragAnimation(),this._tabGroupManager.disposeAll();for(let{value:e,disposable:t}of this._tabs)t.dispose(),e.dispose();this._tabs=[],this._tabMap.clear()}))}indexOf(e){return this._tabs.findIndex(t=>t.value.panel.id===e)}getTabId(e){return this._tabMap.get(e)?.value.element.id}getPanelForTab(e){for(let{value:t}of this._tabs)if(t.element===e||t.element.contains(e))return t.panel}isActive(e){return this.selectedIndex>-1&&this._tabs[this.selectedIndex].value===e}_onKeyDown(e){let t=this._tabs.findIndex(t=>t.value.element===e.target);if(t===-1)return;let n=this._direction===`vertical`,r=n?`ArrowDown`:`ArrowRight`,i=n?`ArrowUp`:`ArrowLeft`,a=this._tabs.length-1;switch(e.key){case r:e.preventDefault(),this._focusTab(Math.min(t+1,a));break;case i:e.preventDefault(),this._focusTab(Math.max(t-1,0));break;case`Home`:e.preventDefault(),this._focusTab(0);break;case`End`:e.preventDefault(),this._focusTab(a);break;case`Enter`:case` `:e.preventDefault(),this.accessor.withOrigin(`user`,()=>this._tabs[t].value.panel.api.setActive());break;case`Delete`:case`Backspace`:e.preventDefault(),this._closeTab(t)}}_closeTab(e){let t=this._tabs[e]?.value;if(!t)return;let n=(this._tabs[e+1]?.value??this._tabs[e-1]?.value)?.panel.id;if(t.panel.api.close(),n!==void 0){let e=this._tabs.findIndex(e=>e.value.panel.id===n);e>-1&&this._focusTab(e)}}_focusTab(e){for(let t=0;t<this._tabs.length;t++)this._tabs[t].value.element.tabIndex=t===e?0:-1;this._tabs[e].value.element.focus()}focusActiveTab(){if(this._tabs.length===0)return;let e=this.group.activePanel?.id,t=e?this._tabs.findIndex(t=>t.value.panel.id===e):-1;this._focusTab(t>-1?t:0)}setActivePanel(e){let t=this._direction===`vertical`;for(let n of this._tabs){let r=e.id===n.value.panel.id;n.value.setActive(r),r&&this._scrollTabIntoView(n.value.element,t)}this._tabGroupManager.groupUnderlines.size>0&&this._tabGroupManager.positionUnderlines()}_scrollTabIntoView(e,t){let n=e.parentElement;if(!n)return;let r=t?e.offsetTop:e.offsetLeft,i=t?e.offsetHeight:e.offsetWidth,a=t?n.scrollTop:n.scrollLeft,o=t?n.clientHeight:n.clientWidth;(r<a||r+i>a+o)&&(t?n.scrollTop=r:n.scrollLeft=r)}_activateOnPointerDown(e){if(!ar(this.accessor.options).html5){this.group.model.openPanel(e);return}let t=requestAnimationFrame(()=>{this._tabMap.has(e.id)&&this.group.model.openPanel(e)});this._pointerActivation.value={dispose:()=>cancelAnimationFrame(t)}}openPanel(e,t=this._tabs.length){if(this._tabMap.has(e.id))return;let n=new lr(e,this.accessor,this.group);n.setContent(e.view.tab),this._direction!==`horizontal`&&n.setDirection(this._direction);let r={value:n,disposable:new Q(n.onDragStart(t=>{if(this._onTabDragStart.fire({nativeEvent:t,panel:e}),this.accessor.options.theme?.tabAnimation===`smooth`){let t=n.element.getBoundingClientRect().width,r=this._tabs.findIndex(e=>e.value===n);this._animState={sourceTabId:e.id,sourceIndex:r,tabPositions:this.snapshotTabPositions(),chipPositions:this._tabGroupManager.snapshotChipWidths(),currentInsertionIndex:null,targetTabGroupId:null,sourceTabGroupId:null,sourceGroupPanelIds:null,sourceChipWidth:0,cursorOffsetFromDragLeft:t/2,sourceGapWidth:t,containerLeft:this._tabsList.getBoundingClientRect().left},this._pendingCollapse=!0,requestAnimationFrame(()=>{var e;this._pendingCollapse=!1,this._animState&&(this._tabsList.classList.contains(`dv-tabs-container--wrap`)||(n.element.style.transition=`none`,it(n.element,`dv-tab--dragging`,!0),n.element.offsetHeight),(e=this._animState).currentInsertionIndex??(e.currentInsertionIndex=r),this.applyDragOverTransforms(!0),n.element.style.removeProperty(`transition`))})}}),n.onTabClick(t=>{t.defaultPrevented||this.group.api.location.type===`edge`&&(this.group.activePanel===e?this.group.api.isCollapsed()?this.group.api.expand():this.group.api.collapse():(this.group.model.openPanel(e),this.group.api.isCollapsed()&&this.group.api.expand()))}),n.onPointerDown(t=>{if(t.defaultPrevented)return;let r=!this.accessor.options.disableFloatingGroups,i=this.group.api.location.type===`floating`&&this.size===1;if(r&&!i&&t.shiftKey){t.preventDefault();let e=this.accessor.getGroupPanel(n.panel.id),{top:r,left:i}=n.element.getBoundingClientRect(),{top:a,left:o}=this.accessor.element.getBoundingClientRect();this.accessor.addFloatingGroup(e,{x:i-o,y:r-a,inDragMode:!0});return}t.button===0&&this.group.api.location.type!==`edge`&&this.group.activePanel!==e&&this._activateOnPointerDown(e)}),n.onDrop(e=>{let t=this._animState;this._animState=null,this._pendingCollapse=!1;let r=this._tabs.findIndex(e=>e.value===n);if(t){let n=e.position===`right`?r+1:r;if(t.sourceTabGroupId){this._commitGroupMove(t.sourceTabGroupId,t.currentInsertionIndex??n);return}this._reorder.uncollapseSourceTab(t.sourceTabId);let i=this.snapshotTabPositions();this.resetTabTransforms(),this._onDrop.fire({event:e.nativeEvent,index:n,targetTabGroupId:t.targetTabGroupId}),this.accessor.options.theme?.tabAnimation===`smooth`&&this.runFlipAnimation(i,t.sourceTabId,t.sourceIndex===-1,t.sourceIndex===-1?void 0:{from:Math.min(t.sourceIndex,n),to:Math.max(t.sourceIndex,n)})}else{let t=this._direction===`vertical`?`bottom`:`right`,i=e.position===t?r+1:r,a=Ue(),o=a?this._tabs.findIndex(e=>e.value.panel.id===a.panelId):-1,s=i-+(o!==-1&&o<i),c=this.group.model.getTabGroupForPanel(n.panel.id)?.id??null;this._onDrop.fire({event:e.nativeEvent,index:s,targetTabGroupId:c})}}),n.onWillShowOverlay(e=>{this._onWillShowOverlay.fire(new ur(e,{kind:`tab`,panel:this.group.activePanel,api:this.accessor.api,group:this.group,getData:Ue}))}))};this.addTab(r,t),this._tabGroupManager.positionAllChips(),this._animState&&(this._animState.tabPositions=this.snapshotTabPositions(),this._animState.chipPositions=this._tabGroupManager.snapshotChipWidths(),this.applyDragOverTransforms())}delete(e){this._animState?.sourceTabId===e&&(this.resetTabTransforms(),this._animState=null),this._tabGroupManager.cleanupTransition(e);let t=this.indexOf(e),n=this._tabs.splice(t,1)[0];if(this._tabMap.delete(e),n){let{value:e,disposable:t}=n;t.dispose(),e.dispose(),e.element.remove()}this._animState&&(this._animState.tabPositions=this.snapshotTabPositions(),this._animState.chipPositions=this._tabGroupManager.snapshotChipWidths(),this.applyDragOverTransforms())}addTab(e,t=this._tabs.length){if(t<0||t>this._tabs.length)throw Error(`invalid location`);let n=t<this._tabs.length?this._tabs[t].value.element:null;this._tabsList.insertBefore(e.value.element,n),this._tabs=[...this._tabs.slice(0,t),e,...this._tabs.slice(t)],this._tabMap.set(e.value.panel.id,e),this.selectedIndex<0&&(this.selectedIndex=t)}toggleDropdown(e){let t=this._tabs.some(e=>!this._overflowExclude(e.value.panel.id)&&this._forcedOverflow(e.value.panel.id));if(e.reset&&!t){this._onOverflowTabsChange.fire({tabs:[],tabGroups:[],pinnedTabs:[],reset:!0});return}let n=this._tabs.filter(t=>!this._overflowExclude(t.value.panel.id)&&(this._forcedOverflow(t.value.panel.id)||!e.reset&&!bt(t.value.element,this._tabsList))).map(e=>e.value.panel.id),r=e.reset?[]:this._tabs.filter(e=>this._overflowExclude(e.value.panel.id)&&e.value.element.getBoundingClientRect().width>0&&!bt(e.value.element,this._tabsList)).map(e=>e.value.panel.id),i=new Set(n),a=[];for(let e of this.group.model.getTabGroups()){let t=this._tabGroupManager.chipRenderers.get(e.id),r=t&&!bt(t.chip.element,this._tabsList),o=e.panelIds.length>0&&e.panelIds.every(e=>i.has(e));if((r||o)&&(a.push(e.id),e.collapsed))for(let t of e.panelIds)i.has(t)||(i.add(t),n.push(t))}this._onOverflowTabsChange.fire({tabs:n,tabGroups:a,pinnedTabs:r,reset:!1})}updateDragAndDropState(){for(let e of this._tabs)e.value.updateDragAndDropState();this._tabGroupManager.updateDragAndDropState()}updateTabGroups(){this._tabGroupManager.update()}refreshTabGroupAccent(){this._tabGroupManager.refreshAccents()}_handleChipDragStart(e,t,n){let r=e.panelIds[0],i=r?this._tabs.findIndex(e=>e.value.panel.id===r):-1,a=t.element.getBoundingClientRect(),o=a.width;for(let t of e.panelIds){let e=this._tabMap.get(t);e&&(o+=e.value.element.getBoundingClientRect().width)}if(this._animState={sourceTabId:``,sourceIndex:i,tabPositions:this.snapshotTabPositions(),chipPositions:this._tabGroupManager.snapshotChipWidths(),currentInsertionIndex:null,targetTabGroupId:null,sourceTabGroupId:e.id,sourceGroupPanelIds:new Set(e.panelIds),sourceChipWidth:a.width,cursorOffsetFromDragLeft:n.clientX-a.left,sourceGapWidth:o,containerLeft:this._tabsList.getBoundingClientRect().left},this.accessor.options.theme?.tabAnimation!==`smooth`)return;let s=new Set(e.panelIds);this._pendingCollapse=!0,requestAnimationFrame(()=>{var t;if(this._pendingCollapse=!1,!this._animState)return;for(let e of this._tabs)s.has(e.value.panel.id)&&(e.value.element.style.transition=`none`,it(e.value.element,`dv-tab--dragging`,!0));let n=this._tabGroupManager.chipRenderers.get(e.id);n&&(n.chip.element.style.transition=`none`,it(n.chip.element,`dv-tab-group-chip--dragging`,!0)),this._tabsList.offsetHeight;let r=this._tabGroupManager.groupUnderlines.get(e.id);r&&(r.style.display=`none`),(t=this._animState).currentInsertionIndex??(t.currentInsertionIndex=i),this.applyDragOverTransforms(!0);for(let e of this._tabs)s.has(e.value.panel.id)&&e.value.element.style.removeProperty(`transition`);n&&n.chip.element.style.removeProperty(`transition`)})}_handleChipDrop(e,t){let n=e.panelIds[0];if(!n)return;let r=this._tabs.findIndex(e=>e.value.panel.id===n);if(r===-1)return;let i=Ue(),a=i?.groupId===this.group.id&&i?.panelId?this._tabs.findIndex(e=>e.value.panel.id===i.panelId):-1,o=r-+(a!==-1&&a<r);this._onDrop.fire({event:t.nativeEvent,index:o,targetTabGroupId:null})}setExtendedDropZone(e){this._reorder.setExtendedDropZone(e)}setExternalInsertionIndex(e){this._reorder.setExternalInsertionIndex(e)}clearExternalAnimState(){this._reorder.clearExternalAnimState()}snapshotTabPositions(){return this._reorder.snapshotTabPositions()}handleDragOver(e){this._reorder.handleDragOver(e)}applyDragOverTransforms(e=!1){this._reorder.applyDragOverTransforms(e)}resetTabTransforms(){this._reorder.resetTabTransforms()}_commitGroupMove(e,t){this._reorder.commitGroupMove(e,t)}runFlipAnimation(e,t,n=!1,r){this._reorder.runFlipAnimation(e,t,n,r)}};function Rr(){let e=document.createElement(`div`);e.className=`dv-tabs-overflow-dropdown-default`;let t=document.createElement(`span`);t.textContent=``;let n=tr();return e.appendChild(n),e.appendChild(t),{element:e,update:e=>{t.textContent=`${e.tabs}`}}}var zr=class extends Q{get onTabDragStart(){return this.tabs.onTabDragStart}get panels(){return this.tabs.panels}get size(){return this.tabs.size}get hidden(){return this._hidden}set hidden(e){this._hidden=e,this.element.style.display=e?`none`:``}get direction(){return this._direction}set direction(e){this._direction=e,e===`vertical`?(rt(this._element,`dv-groupview-header-vertical`),rt(this.rightActionsContainer,`dv-right-actions-container-vertical`),this.tabs.direction=e):(nt(this._element,`dv-groupview-header-vertical`),nt(this.rightActionsContainer,`dv-right-actions-container-vertical`),this.tabs.direction=e)}get element(){return this._element}get tabsListElement(){return this.tabs.tabsListElement}constructor(e,t){super(),this.accessor=e,this.group=t,this._hidden=!1,this._direction=`horizontal`,this._dropIndexResolver=(e,t)=>t,this._pinnedRow=void 0,this.dropdownPart=null,this._overflowTabs=[],this._overflowTabGroups=[],this._overflowPinnedTabs=[],this._dropdownDisposable=new Ge,this._onDrop=new $,this.onDrop=this._onDrop.event,this._onGroupDragStart=new $,this.onGroupDragStart=this._onGroupDragStart.event,this._onWillShowOverlay=new $,this.onWillShowOverlay=this._onWillShowOverlay.event,this._element=document.createElement(`div`),this._element.className=`dv-tabs-and-actions-container`,it(this._element,`dv-full-width-single-tab`,this.accessor.options.singleTabMode===`fullwidth`),this.rightActionsContainer=document.createElement(`div`),this.rightActionsContainer.className=`dv-right-actions-container`,this.leftActionsContainer=document.createElement(`div`),this.leftActionsContainer.className=`dv-left-actions-container`,this.preActionsContainer=document.createElement(`div`),this.preActionsContainer.className=`dv-pre-actions-container`,this.tabs=new Lr(t,e,{showTabsOverflowControl:!e.options.disableTabsOverflowList}),this.voidContainer=new fr(this.accessor,this.group),this.tabs.voidContainer=this.voidContainer.element,this._element.appendChild(this.preActionsContainer),this._element.appendChild(this.tabs.element),this._element.appendChild(this.leftActionsContainer),this._element.appendChild(this.voidContainer.element),this._element.appendChild(this.rightActionsContainer),this.tabs.setExtendedDropZone(this._element),this.addDisposables(this.tabs.onDrop(e=>this._onDrop.fire(e)),this.tabs.onWillShowOverlay(e=>this._onWillShowOverlay.fire(e)),e.onDidOptionsChange(()=>{this.tabs.showTabsOverflowControl=!e.options.disableTabsOverflowList}),this.tabs.onOverflowTabsChange(e=>{this.toggleDropdown(e)}),this.tabs,this._onWillShowOverlay,this._onDrop,this._onGroupDragStart,this.voidContainer,this.voidContainer.onDragStart(e=>{this._onGroupDragStart.fire({nativeEvent:e,group:this.group})}),this.voidContainer.onDrop(e=>{this.tabs.handleVoidDrop()||this._onDrop.fire({event:e.nativeEvent,index:this.tabs.size})}),this.voidContainer.onWillShowOverlay(e=>{this._onWillShowOverlay.fire(new ur(e,{kind:`header_space`,panel:this.group.activePanel,api:this.accessor.api,group:this.group,getData:Ue}))}),Qe(this.leftActionsContainer,`dragleave`,e=>{let t=e.relatedTarget;!this.leftActionsContainer.contains(t)&&!this._element.contains(t)&&this.tabs.clearExternalAnimState()}),Qe(this.voidContainer.element,`dragleave`,e=>{let t=e.relatedTarget;this.voidContainer.element.contains(t)||(this._element.contains(t)?this.tabs.setExternalInsertionIndex(null):this.tabs.clearExternalAnimState())}),Qe(this.voidContainer.element,`pointerdown`,e=>{if(!e.defaultPrevented&&!this.accessor.options.disableFloatingGroups&&e.shiftKey&&this.group.api.location.type!==`floating`&&this.group.api.location.type!==`edge`){e.preventDefault();let{top:t,left:n}=this.element.getBoundingClientRect(),{top:r,left:i}=this.accessor.element.getBoundingClientRect();this.accessor.addFloatingGroup(this.group,{x:n-i+20,y:t-r+20,inDragMode:!0})}}))}show(){this.hidden||(this.element.style.display=``)}hide(){this._element.style.display=`none`}setRightActionsElement(e){this.rightActions!==e&&(this.rightActions&&=(this.rightActions.remove(),void 0),e&&(this.rightActionsContainer.appendChild(e),this.rightActions=e))}setLeftActionsElement(e){this.leftActions!==e&&(this.leftActions&&=(this.leftActions.remove(),void 0),e&&(this.leftActionsContainer.appendChild(e),this.leftActions=e))}setPrefixActionsElement(e){this.preActions!==e&&(this.preActions&&=(this.preActions.remove(),void 0),e&&(this.preActionsContainer.appendChild(e),this.preActions=e))}isActive(e){return this.tabs.isActive(e)}indexOf(e){return this.tabs.indexOf(e)}getTabId(e){return this.tabs.getTabId(e)}getPanelForTab(e){return this.tabs.getPanelForTab(e)}setActive(e){}delete(e){this.tabs.delete(e),this.updateClassnames()}setActivePanel(e){this.tabs.setActivePanel(e)}focusActiveTab(){this.tabs.focusActiveTab()}openPanel(e,t=this.tabs.size){this.tabs.openPanel(e,t),this.updateClassnames()}closePanel(e){this.delete(e.id)}setOverflowExclude(e){this.tabs.setOverflowExclude(e)}setForcedOverflow(e){this.tabs.setForcedOverflow(e)}setPinnedSticky(e){this.tabs.setPinnedSticky(e)}refreshOverflow(){this.tabs.refreshOverflow()}setPinnedRow(e){this._pinnedRow!==e&&(this._pinnedRow&&this._pinnedRow.remove(),this._pinnedRow=e,e&&(e.classList.add(`dv-pinned-row`),this._element.insertBefore(e,this._element.firstChild)),it(this._element,`dv-tabs-and-actions-container--pinned-row`,!!e))}setDropIndexResolver(e){this._dropIndexResolver=e}resolveDropIndex(e,t){return this._dropIndexResolver(e,t)}updateClassnames(){it(this._element,`dv-single-tab`,this.size===1)}toggleDropdown(e){let t=e.reset?[]:e.tabs,n=e.reset?[]:e.tabGroups,r=e.reset?[]:e.pinnedTabs;this._overflowTabs=t,this._overflowTabGroups=n,this._overflowPinnedTabs=r;let i=this._overflowTabs.length+this._overflowPinnedTabs.length;if(i>0&&this.dropdownPart){this.dropdownPart.update({tabs:i});return}if(i===0){this._dropdownDisposable.dispose();return}let a=document.createElement(`div`);a.className=`dv-tabs-overflow-dropdown-root`;let o=Rr();o.update({tabs:i}),this.dropdownPart=o,a.appendChild(o.element),this.rightActionsContainer.prepend(a),this._dropdownDisposable.value=new Q(We.from(()=>{var e,t;a.remove(),(e=this.dropdownPart)==null||(t=e.dispose)==null||t.call(e),this.dropdownPart=null}),Qe(a,`pointerdown`,e=>{e.preventDefault()},{capture:!0}),Qe(a,`click`,e=>{let t=wt(a),n={x:e.clientX,y:e.clientY,zIndex:t?.style.zIndex?`calc(${t.style.zIndex} * 2)`:void 0},r=this.createOverflowRenderContext(a,n),i=this.accessor.advancedOverflowService;i?i.renderOverflow({group:this.group,overflowTabs:[...this._overflowTabs],overflowTabGroups:[...this._overflowTabGroups],pinnedOverflowTabs:[...this._overflowPinnedTabs],context:r}):r.open(this.renderFreeOverflowList(r))}))}createOverflowRenderContext(e,t){let n=new Set(this._overflowTabGroups),r=this.group.model.getTabGroups(),i=new Map,a=new Map;for(let e of r)if(a.set(e.id,e),n.has(e.id))for(let t of e.panelIds)i.set(t,e);let o=()=>this.accessor.getPopupServiceForGroup(this.group),s=e=>{let t=document.createElement(`div`);t.className=`dv-tabs-overflow-group-header`;let n=document.createElement(`span`);n.className=`dv-tabs-overflow-group-color`,Er(n,e.color,this.accessor.tabGroupColorPalette),t.appendChild(n);let r=document.createElement(`span`);if(r.className=`dv-tabs-overflow-group-label`,r.textContent=e.label||e.id,t.appendChild(r),e.collapsed){let n=document.createElement(`span`);n.className=`dv-tabs-overflow-group-collapsed-badge`,n.textContent=`${e.panelIds.length}`,t.appendChild(n)}return t.addEventListener(`click`,()=>{o().close(),e.collapsed&&e.expand();let t=e.panelIds[0];if(t){let e=this.group.panels.find(e=>e.id===t);this.accessor.withOrigin(`user`,()=>e?.api.setActive())}}),t};return{overflowGroupIdForPanel:e=>i.get(e)?.id,buildGroupHeader:e=>{let t=a.get(e);if(!(!t||!n.has(t.id)))return s(t)},buildPinnedHeader:()=>{let e=document.createElement(`div`);e.className=`dv-tabs-overflow-group-header dv-tabs-overflow-pinned-header`;let t=er();t.classList.add(`dv-tabs-overflow-pinned-icon`),e.appendChild(t);let n=document.createElement(`span`);return n.className=`dv-tabs-overflow-group-label`,n.textContent=`Pinned`,e.appendChild(n),e},buildRow:e=>{let t=this.group.panels.find(t=>t.id===e);if(!t)return;let n=this.tabs.tabs.find(t=>t.panel.id===e),r=i.get(e),a=t.view.createTabRenderer(`headerOverflow`).element,s=document.createElement(`div`);it(s,`dv-tab`,!0),it(s,`dv-active-tab`,t.api.isActive),it(s,`dv-inactive-tab`,!t.api.isActive),r&&it(s,`dv-tab--grouped`,!0);let c=()=>{r?.collapsed&&r.expand(),n?.element.scrollIntoView({block:`nearest`,inline:`nearest`}),this.accessor.withOrigin(`user`,()=>t.api.setActive())};return s.addEventListener(`click`,e=>{o().close(),!e.defaultPrevented&&c()}),s.appendChild(a),{element:s,panel:t,activate:()=>{o().close(),c()}}},open:e=>{o().openPopover(e,t)},close:()=>o().close(),focusTrigger:()=>{e.tabIndex=-1,e.focus()}}}renderFreeOverflowList(e){let t=document.createElement(`div`);t.style.overflow=`auto`,t.className=`dv-tabs-overflow-container`;let n=this._overflowPinnedTabs.map(t=>e.buildRow(t)).filter(e=>e!=null);if(n.length>0){t.appendChild(e.buildPinnedHeader());for(let e of n)t.appendChild(e.element)}let r=new Set;for(let n of this.tabs.tabs.filter(e=>this._overflowTabs.includes(e.panel.id))){let i=e.overflowGroupIdForPanel(n.panel.id);if(i&&!r.has(i)){r.add(i);let n=e.buildGroupHeader(i);n&&t.appendChild(n)}let a=e.buildRow(n.panel.id);a&&t.appendChild(a.element)}return t}updateDragAndDropState(){this.tabs.updateDragAndDropState(),this.voidContainer.updateDragAndDropState()}updateTabGroups(){this.tabs.updateTabGroups()}refreshTabGroupAccent(){this.tabs.refreshTabGroupAccent()}},Br=class extends Q{get label(){return this._label}get color(){return this._color}get componentParams(){return this._componentParams}setLabel(e){this.isDisposed||this._label===e||(this._label=e,this._onDidChange.fire())}setColor(e){if(this.isDisposed)return;let t=e===``?void 0:e;this._color!==t&&(this._color=t,this._onDidChange.fire())}setComponentParams(e){this.isDisposed||(this._componentParams=e,this._onDidChange.fire())}get collapsed(){return this._collapsed}get panelIds(){return this._panelIds}get size(){return this._panelIds.length}get isEmpty(){return this._panelIds.length===0}constructor(e,t){super(),this.id=e,this._collapsed=!1,this._panelIds=[],this._onDidChange=new $,this.onDidChange=this._onDidChange.event,this._onDidPanelChange=new $,this.onDidPanelChange=this._onDidPanelChange.event,this._onDidCollapseChange=new $,this.onDidCollapseChange=this._onDidCollapseChange.event,this._onDidDestroy=new $,this.onDidDestroy=this._onDidDestroy.event,this._label=t?.label??``,this._color=t?.color===``?void 0:t?.color,this._collapsed=t?.collapsed??!1,this._componentParams=t?.componentParams,this.addDisposables(this._onDidChange,this._onDidPanelChange,this._onDidCollapseChange,this._onDidDestroy)}addPanel(e,t){if(this.isDisposed||this._panelIds.includes(e))return;let n=t===void 0?this._panelIds.length:Math.max(0,Math.min(t,this._panelIds.length));this._panelIds.splice(n,0,e),this._onDidPanelChange.fire({panelId:e,type:`add`})}removePanel(e){if(this.isDisposed)return!1;let t=this._panelIds.indexOf(e);return t!==-1&&(this._panelIds.splice(t,1),this._onDidPanelChange.fire({panelId:e,type:`remove`}),!0)}indexOfPanel(e){return this._panelIds.indexOf(e)}containsPanel(e){return this._panelIds.includes(e)}collapse(){this.isDisposed||this._collapsed||(this._collapsed=!0,this._onDidCollapseChange.fire(!0))}expand(){this.isDisposed||!this._collapsed||(this._collapsed=!1,this._onDidCollapseChange.fire(!1))}toggle(){this._collapsed?this.expand():this.collapse()}toJSON(){let e={id:this.id,collapsed:this._collapsed,panelIds:[...this._panelIds]};return this._label&&(e.label=this._label),this._color!==void 0&&(e.color=this._color),this._componentParams!==void 0&&(e.componentParams=this._componentParams),e}dispose(){this._onDidDestroy.fire(),super.dispose()}},Vr=class extends qe{get nativeEvent(){return this.options.nativeEvent}get position(){return this.options.position}get panel(){return this.options.panel}get group(){return this.options.group}get api(){return this.options.api}constructor(e){super(),this.options=e}getData(){return this.options.getData()}},Hr=class extends Vr{get kind(){return this._kind}constructor(e){super(e),this._kind=e.kind}},Ur=class extends Q{get tabGroups(){return this._tabGroups}get element(){throw Error(`dockview: not supported`)}get activePanel(){return this._activePanel}get contentContainerId(){return this.contentContainer.element.id}get contentDropTarget(){return this.contentContainer.dropTarget}get locked(){return this._locked}set locked(e){this._locked=e,it(this.container,`dv-locked-groupview`,e===`no-drop-target`||e)}get isActive(){return this._isGroupActive}get panels(){return this._panels}get size(){return this._panels.length}get isEmpty(){return this._panels.length===0}get hasWatermark(){return!!(this.watermark&&this.container.contains(this.watermark.element))}get header(){return this.tabsContainer}get tabsListElement(){return this.tabsContainer.tabsListElement}getPanelForTab(e){return this.tabsContainer.getPanelForTab(e)}get isContentFocused(){return document.activeElement?at(document.activeElement,this.contentContainer.element):!1}get headerPosition(){return this._headerPosition??`top`}set headerPosition(e){this._headerPosition=e,this.invalidateHeaderSize(),nt(this.container,`dv-groupview-header-top`,`dv-groupview-header-bottom`,`dv-groupview-header-left`,`dv-groupview-header-right`),rt(this.container,`dv-groupview-header-${e}`);let t=e===`top`||e===`bottom`?`horizontal`:`vertical`,n=this._headerDirection;if(this._headerDirection=t,this.tabsContainer.direction=t,this.header.direction=t,this._activePanel?.layout){let{width:e,height:t}=this.contentDimensions();this._activePanel.layout(e,t)}if(this.updateHeaderActions(),n!==void 0&&n!==t){var r;(r=this.groupPanel)==null||r.api._onDidHeaderDirectionChange.fire({direction:t,position:e})}}get location(){return this._location}set location(e){this._location=e,it(this.container,`dv-groupview-floating`,!1),it(this.container,`dv-groupview-popout`,!1),it(this.container,`dv-groupview-edge`,!1);let t=e=>{this.contentContainer.dropTarget.setTargetZones(e),this.contentContainer.pointerDropTarget.setTargetZones(e)};switch(e.type){case`grid`:t([`top`,`bottom`,`left`,`right`,`center`]);break;case`floating`:t([`top`,`bottom`,`left`,`right`,`center`]),it(this.container,`dv-groupview-floating`,!0);break;case`popout`:t([`top`,`bottom`,`left`,`right`,`center`]),it(this.container,`dv-groupview-popout`,!0);break;case`edge`:t([`center`]),it(this.container,`dv-groupview-edge`,!0)}this.groupPanel.api._onDidLocationChange.fire({location:this.location})}constructor(e,t,n,r,i){super(),this.container=e,this.accessor=t,this.id=n,this.options=r,this.groupPanel=i,this._isGroupActive=!1,this._locked=!1,this._location={type:`grid`},this.mostRecentlyUsed=[],this._overwriteRenderContainer=null,this._overwriteDropTargetContainer=null,this._onDidChange=new $,this.onDidChange=this._onDidChange.event,this._width=0,this._height=0,this._panels=[],this._panelDisposables=new Map,this._tabGroupDisposables=new Map,this._pendingMicrotaskDisposables=new Set,this._onMove=new $,this.onMove=this._onMove.event,this._onDidDrop=new $,this.onDidDrop=this._onDidDrop.event,this._onWillDrop=new $,this.onWillDrop=this._onWillDrop.event,this._onWillShowOverlay=new $,this.onWillShowOverlay=this._onWillShowOverlay.event,this._onTabDragStart=new $,this.onTabDragStart=this._onTabDragStart.event,this._onGroupDragStart=new $,this.onGroupDragStart=this._onGroupDragStart.event,this._onDidAddPanel=new $,this.onDidAddPanel=this._onDidAddPanel.event,this._onDidPanelTitleChange=new $,this.onDidPanelTitleChange=this._onDidPanelTitleChange.event,this._onDidPanelParametersChange=new $,this.onDidPanelParametersChange=this._onDidPanelParametersChange.event,this._onDidRemovePanel=new $,this.onDidRemovePanel=this._onDidRemovePanel.event,this._onDidActivePanelChange=new $,this.onDidActivePanelChange=this._onDidActivePanelChange.event,this._onUnhandledDragOver=new $,this.onUnhandledDragOver=this._onUnhandledDragOver.event,this._tabGroups=[],this._tabGroupMap=new Map,this._panelToTabGroup=new Map,this._tabGroupIdCounter=0,this._pendingTabGroupUpdate=!1,this._onDidCreateTabGroup=new $,this.onDidCreateTabGroup=this._onDidCreateTabGroup.event,this._onDidDestroyTabGroup=new $,this.onDidDestroyTabGroup=this._onDidDestroyTabGroup.event,this._onDidAddPanelToTabGroup=new $,this.onDidAddPanelToTabGroup=this._onDidAddPanelToTabGroup.event,this._onDidRemovePanelFromTabGroup=new $,this.onDidRemovePanelFromTabGroup=this._onDidRemovePanelFromTabGroup.event,this._onDidTabGroupChange=new $,this.onDidTabGroupChange=this._onDidTabGroupChange.event,this._onDidTabGroupCollapsedChange=new $,this.onDidTabGroupCollapsedChange=this._onDidTabGroupCollapsedChange.event,it(this.container,`dv-groupview`,!0),this.container.setAttribute(`role`,`region`),this._api=new mn(this.accessor),this.tabsContainer=new zr(this.accessor,this.groupPanel),this.contentContainer=new Zn(this.accessor,this),e.append(this.tabsContainer.element,this.contentContainer.element),this.header.hidden=!!r.hideHeader,this.locked=r.locked??!1,this.headerPosition=r.headerPosition??t.defaultHeaderPosition,this.addDisposables(tt(this.tabsContainer.element,()=>{if(this.isDisposed)return;let e=this.measureHeaderSize();e!==this._cachedHeaderSize&&(this._cachedHeaderSize=e,this.layout(this._width,this._height))}),this._onDidPanelTitleChange.event(()=>this.updateAccessibleLabel()),this._onTabDragStart,this._onGroupDragStart,this._onWillShowOverlay,this.tabsContainer.onTabDragStart(e=>{this._onTabDragStart.fire(e)}),this.tabsContainer.onGroupDragStart(e=>{this._onGroupDragStart.fire(e)}),this.tabsContainer.onDrop(e=>{let t=Ue()?.panelId??null,n=t?this.tabsContainer.resolveDropIndex(t,e.index):e.index;if(this.handleDropEvent(`header`,e.event,`center`,n),t&&e.targetTabGroupId){let n=this._tabGroupMap.get(e.targetTabGroupId),r;if(n){let e=this._panels.findIndex(e=>e.id===t);if(e!==-1){r=0;for(let t of n.panelIds)this._panels.findIndex(e=>e.id===t)<e&&r++}}this.addPanelToTabGroup(e.targetTabGroupId,t,r)}else t&&e.targetTabGroupId===null&&this.removePanelFromTabGroup(t)}),this.contentContainer.onDidFocus(()=>{this.accessor.doSetGroupActive(this.groupPanel)}),this.contentContainer.onDidBlur(()=>{}),this.contentContainer.dropTarget.onDrop(e=>{this.handleDropEvent(`content`,e.nativeEvent,e.position,void 0,e.edge)}),this.contentContainer.pointerDropTarget.onDrop(e=>{this.handleDropEvent(`content`,e.nativeEvent,e.position,void 0,e.edge)}),this.tabsContainer.onWillShowOverlay(e=>{this._onWillShowOverlay.fire(e)}),this.contentContainer.dropTarget.onWillShowOverlay(e=>{this._onWillShowOverlay.fire(new ur(e,{kind:`content`,panel:this.activePanel,api:this._api,group:this.groupPanel,getData:Ue}))}),this.contentContainer.pointerDropTarget.onWillShowOverlay(e=>{this._onWillShowOverlay.fire(new ur(e,{kind:`content`,panel:this.activePanel,api:this._api,group:this.groupPanel,getData:Ue}))}),this._onMove,this._onDidChange,this._onDidDrop,this._onWillDrop,this._onDidAddPanel,this._onDidRemovePanel,this._onDidActivePanelChange,this._onUnhandledDragOver,this._onDidPanelTitleChange,this._onDidPanelParametersChange,this._onDidCreateTabGroup,this._onDidDestroyTabGroup,this._onDidAddPanelToTabGroup,this._onDidRemovePanelFromTabGroup,this._onDidTabGroupChange,this._onDidTabGroupCollapsedChange,this._onDidCreateTabGroup.event(()=>{this._scheduleTabGroupUpdate()}),this._onDidDestroyTabGroup.event(()=>{this._scheduleTabGroupUpdate()}),this._onDidAddPanelToTabGroup.event(()=>{this._scheduleTabGroupUpdate()}),this._onDidRemovePanelFromTabGroup.event(()=>{this._scheduleTabGroupUpdate()}),this._onDidTabGroupChange.event(()=>{this._scheduleTabGroupUpdate()}),this._onDidTabGroupCollapsedChange.event(()=>{this._scheduleTabGroupUpdate()}))}_scheduleTabGroupUpdate(){this._pendingTabGroupUpdate||(this._pendingTabGroupUpdate=!0,queueMicrotask(()=>{this._pendingTabGroupUpdate=!1,this.isDisposed||this.tabsContainer.updateTabGroups()}))}_bracketTabGroupMutation(e){return this.accessor.mutation?this.accessor.mutation(`tab-group`,e):e()}createTabGroup(e){return this._bracketTabGroupMutation(()=>this._doCreateTabGroup(e))}_doCreateTabGroup(e){let t=e?.id??`tg-${this.id}-${this._tabGroupIdCounter++}`,n=new Br(t,{label:e?.label,color:e?.color,collapsed:e?.collapsed,componentParams:e?.componentParams});return this._tabGroups.push(n),this._tabGroupMap.set(t,n),this._tabGroupDisposables.set(t,new Q(n.onDidChange(()=>{this._onDidTabGroupChange.fire({tabGroup:n})}),n.onDidCollapseChange(e=>{e?this._handleGroupCollapse(n):this._handleGroupExpand(n),this._onDidTabGroupCollapsedChange.fire({tabGroup:n})}),n.onDidDestroy(()=>{this._removeTabGroupInternal(n)}))),this._onDidCreateTabGroup.fire({tabGroup:n}),n}dissolveTabGroup(e){let t=this._tabGroupMap.get(e);t&&this._bracketTabGroupMutation(()=>{let e=[...t.panelIds];for(let n of e)t.removePanel(n),this._panelToTabGroup.delete(n),this._onDidRemovePanelFromTabGroup.fire({tabGroup:t,panelId:n});t.dispose()})}addPanelToTabGroup(e,t,n){let r=this._tabGroupMap.get(e);if(!r||!this._panels.some(e=>e.id===t))return;let i=this.getTabGroupForPanel(t);i?.id!==e&&this._bracketTabGroupMutation(()=>{i&&this.removePanelFromTabGroup(t),r.addPanel(t,n),this._panelToTabGroup.set(t,r),this._enforceContiguity(r,t),this._onDidAddPanelToTabGroup.fire({tabGroup:r,panelId:t})})}movePanelWithinGroup(e,t,n){let r=this._tabGroupMap.get(e);r?.containsPanel(t)&&(r.removePanel(t),r.addPanel(t,n),this._enforceContiguity(r,t),this.tabsContainer.updateTabGroups())}movePanelBetweenGroups(e,t,n){let r=this._findTabGroupForPanel(e),i=this._tabGroupMap.get(t);i&&(r&&(r.removePanel(e),this._panelToTabGroup.delete(e),this._onDidRemovePanelFromTabGroup.fire({tabGroup:r,panelId:e}),r.isEmpty&&r.dispose()),i.addPanel(e,n),this._panelToTabGroup.set(e,i),this._enforceContiguity(i,e),this._onDidAddPanelToTabGroup.fire({tabGroup:i,panelId:e}))}moveTabGroup(e,t){let n=this._tabGroupMap.get(e);if(!n||n.panelIds.length===0)return;let r=new Set(n.panelIds),i=n.panelIds.map(e=>this._panels.find(t=>t.id===e)).filter(e=>e!==void 0);if(i.length===0)return;let a=0;for(let e=0;e<Math.min(t,this._panels.length);e++)r.has(this._panels[e].id)&&a++;for(let e of i){let t=this._panels.indexOf(e);t!==-1&&this._panels.splice(t,1)}let o=t-a,s=Math.max(0,Math.min(o,this._panels.length));this._panels.splice(s,0,...i);for(let e of this._panels)this.tabsContainer.delete(e.id);for(let e=0;e<this._panels.length;e++)this.tabsContainer.openPanel(this._panels[e],e);this.tabsContainer.updateTabGroups()}_enforceContiguity(e,t){let n=this._panels.find(e=>e.id===t);if(!n)return;let r=e.indexOfPanel(t),i=this._computeGlobalIndex(e,r),a=this._panels.indexOf(n);if(a===i)return;this._panels.splice(a,1);let o=i>a?i-1:i;this._panels.splice(o,0,n),this.tabsContainer.delete(t),this.tabsContainer.openPanel(n,o)}_computeGlobalIndex(e,t){let n=e.panelIds;if(n.length<=1){let e=this._panels.find(e=>e.id===n[0]);return e?this._panels.indexOf(e):this._panels.length}for(let e=0;e<n.length;e++){if(e===t)continue;let r=this._panels.find(t=>t.id===n[e]);if(r){let n=this._panels.indexOf(r);return Math.max(0,n+(t-e))}}return this._panels.length}removePanelFromTabGroup(e){let t=this._findTabGroupForPanel(e);t&&this._bracketTabGroupMutation(()=>{t.removePanel(e),this._panelToTabGroup.delete(e),this._onDidRemovePanelFromTabGroup.fire({tabGroup:t,panelId:e}),t.isEmpty&&t.dispose()})}getTabGroups(){return this._tabGroups}updateTabGroups(){this.tabsContainer.updateTabGroups()}refreshTabGroupAccent(){this.tabsContainer.refreshTabGroupAccent()}refreshWatermark(){if(this.watermark){var e,t;this.watermark.element.remove(),(e=(t=this.watermark).dispose)==null||e.call(t),this.watermark=void 0}this.updateContainer()}getTabGroupForPanel(e){return this._findTabGroupForPanel(e)}_findTabGroupForPanel(e){return this._panelToTabGroup.get(e)}_removeTabGroupInternal(e){let t=this._tabGroups.indexOf(e);if(t!==-1){this._tabGroups.splice(t,1),this._tabGroupMap.delete(e.id);for(let t of e.panelIds)this._panelToTabGroup.delete(t);this._onDidDestroyTabGroup.fire({tabGroup:e});let n=this._tabGroupDisposables.get(e.id);this._tabGroupDisposables.delete(e.id),n&&(this._pendingMicrotaskDisposables.add(n),queueMicrotask(()=>{this._pendingMicrotaskDisposables.delete(n),n.dispose()}))}}_handleGroupCollapse(e){if(!this._activePanel||!e.containsPanel(this._activePanel.id))return;let t=this._panels.indexOf(this._activePanel);for(let e=t+1;e<this._panels.length;e++){let t=this._panels[e];if(!this._findTabGroupForPanel(t.id)?.collapsed){this.doSetActivePanel(t),this.updateContainer();return}}for(let e=t-1;e>=0;e--){let t=this._panels[e];if(!this._findTabGroupForPanel(t.id)?.collapsed){this.doSetActivePanel(t),this.updateContainer();return}}this.contentContainer.closePanel(),this.doSetActivePanel(void 0),this.updateContainer()}_handleGroupExpand(e){if(this._activePanel)return;let t=e.panelIds[0];if(t){let e=this._panels.find(e=>e.id===t);e&&(this.doSetActivePanel(e),this.updateContainer())}}restoreTabGroups(e){for(let t of e){let e=/-(\d+)$/.exec(t.id);if(e){let t=Number.parseInt(e[1],10)+1;t>this._tabGroupIdCounter&&(this._tabGroupIdCounter=t)}}for(let t of e){let e=this.createTabGroup({id:t.id,label:t.label,color:t.color,componentParams:t.componentParams}),n=this._tabGroupMap.get(e.id);for(let r of t.panelIds)this._panels.some(e=>e.id===r)&&(e.addPanel(r),this._panelToTabGroup.set(r,n),this._enforceContiguity(n,r));t.collapsed&&e.collapse(),e.isEmpty&&e.dispose()}}focusContent(){this.contentContainer.element.focus()}focusActiveTab(){this.tabsContainer.focusActiveTab()}set renderContainer(e){if(this.panels.forEach(e=>{this.renderContainer.detatch(e)}),this._overwriteRenderContainer=e,this.panels.forEach(e=>{this.rerender(e)}),this._activePanel){this.contentContainer.renderPanel(this._activePanel,{asActive:!0});let{width:e,height:t}=this.contentDimensions();this._activePanel.layout(e,t)}}get renderContainer(){return this._overwriteRenderContainer??this.accessor.overlayRenderContainer}set dropTargetContainer(e){this._overwriteDropTargetContainer=e}get dropTargetContainer(){return this._location.type===`floating`&&this.accessor.rootDropTargetContainer.disabled?this.accessor.floatingDropTargetContainer:this._overwriteDropTargetContainer??this.accessor.rootDropTargetContainer}initialize(){this.options.panels&&this.options.panels.forEach(e=>{this.doAddPanel(e)}),this.options.activePanel&&this.openPanel(this.options.activePanel),this.setActive(this.isActive,!0),this.updateContainer(),this.updateHeaderActions()}updateHeaderActions(){var e;(e=this.accessor.headerActionsService)==null||e.refresh(this.groupPanel)}attachHeaderAction(e,t){switch(e){case`left`:this.tabsContainer.setLeftActionsElement(t);break;case`right`:this.tabsContainer.setRightActionsElement(t);break;case`prefix`:this.tabsContainer.setPrefixActionsElement(t)}}rerender(e){this.contentContainer.renderPanel(e,{asActive:!1})}indexOf(e){return this.tabsContainer.indexOf(e.id)}toJSON(){let e={views:this.tabsContainer.panels,activeView:this._activePanel?.id,id:this.id};return this.locked!==!1&&(e.locked=this.locked),this.header.hidden&&(e.hideHeader=!0),this.headerPosition!==`top`&&(e.headerPosition=this.headerPosition),this._tabGroups.length>0&&(e.tabGroups=this._tabGroups.map(e=>e.toJSON())),e}moveToNext(e){var t;e??={},(t=e).panel??(t.panel=this.activePanel);let n=e.panel?this.panels.indexOf(e.panel):-1,r;if(n<this.panels.length-1)r=n+1;else if(e.suppressRoll)return;else r=0;this.openPanel(this.panels[r])}moveToPrevious(e){var t;if(e??={},(t=e).panel??(t.panel=this.activePanel),!e.panel)return;let n=this.panels.indexOf(e.panel),r;if(n>0)r=n-1;else if(e.suppressRoll)return;else r=this.panels.length-1;this.openPanel(this.panels[r])}containsPanel(e){return this.panels.includes(e)}init(e){}update(e){}focus(){var e;(e=this._activePanel)==null||e.focus()}openPanel(e,t={}){(typeof t.index!=`number`||t.index>this.panels.length)&&(t.index=this.panels.length);let n=!!t.skipSetActive;if(e.updateParentGroup(this.groupPanel,{skipSetActive:t.skipSetActive}),this.doAddPanel(e,t.index,{skipSetActive:n}),this.invalidateHeaderSize(),this._activePanel===e){this.contentContainer.renderPanel(e,{asActive:!0});return}n||this.doSetActivePanel(e),t.skipSetGroupActive||this.accessor.doSetGroupActive(this.groupPanel),t.skipSetActive||this.updateContainer()}removePanel(e,t){let n=typeof e==`string`?e:e.id,r=this._panels.find(e=>e.id===n);if(!r)throw Error(`invalid operation`);return this._removePanel(r,t)}closeAllPanels(){if(this.panels.length>0){let e=[...this.panels];for(let t of e)this.doClose(t)}else this.accessor.removeGroup(this.groupPanel)}closePanel(e){this.doClose(e)}doClose(e){let t=this.panels.length===1&&this.accessor.groups.length===1;this.accessor.removePanel(e,t&&this.accessor.options.noPanelsOverlay===`emptyGroup`?{removeEmptyGroup:!1}:void 0)}isPanelActive(e){return this._activePanel===e}updateActions(e){this.tabsContainer.setRightActionsElement(e)}setActive(e,t=!1){if(!(!t&&this.isActive===e)){if(this._isGroupActive=e,it(this.container,`dv-active-group`,e),it(this.container,`dv-inactive-group`,!e),this.tabsContainer.setActive(this.isActive),!this._activePanel&&this.panels.length>0){let e=this._panels.find(e=>!this._findTabGroupForPanel(e.id)?.collapsed);e&&this.doSetActivePanel(e)}this.updateContainer()}}layout(e,t){this._width=e,this._height=t;let{width:n,height:r}=this.contentDimensions();this.contentContainer.layout(n,r),this._activePanel?.layout&&this._activePanel.layout(n,r)}relayout(){this.invalidateHeaderSize(),this.layout(this._width,this._height)}measureHeaderSize(){let e=this.tabsContainer.element;return this.headerPosition===`top`||this.headerPosition===`bottom`?e.offsetHeight:e.offsetWidth}invalidateHeaderSize(){this._cachedHeaderSize=void 0}contentDimensions(){let e=this.headerPosition===`top`||this.headerPosition===`bottom`,t=this._cachedHeaderSize??=this.measureHeaderSize();return{width:e?this._width:Math.max(0,this._width-t),height:e?Math.max(0,this._height-t):this._height}}_removePanel(e,t){let n=this._activePanel===e;if(this.doRemovePanel(e),this.invalidateHeaderSize(),n&&this.panels.length>0){let e=this.mostRecentlyUsed[0];this.openPanel(e,{skipSetActive:t?.skipSetActive,skipSetGroupActive:t?.skipSetActiveGroup})}return this._activePanel&&this.panels.length===0&&this.doSetActivePanel(void 0),t?.skipSetActive||this.updateContainer(),e}doRemovePanel(e){let t=this.panels.indexOf(e);if(this._activePanel===e&&this.contentContainer.closePanel(),this.tabsContainer.delete(e.id),this._panels.splice(t,1),this.mostRecentlyUsed.includes(e)){let t=this.mostRecentlyUsed.indexOf(e);this.mostRecentlyUsed.splice(t,1)}let n=this._panelDisposables.get(e.id);n&&(n.dispose(),this._panelDisposables.delete(e.id)),this.removePanelFromTabGroup(e.id),this._onDidRemovePanel.fire({panel:e})}doAddPanel(e,t=this.panels.length,n){let r=this._panels.indexOf(e)>-1;this.tabsContainer.show(),this.contentContainer.show(),this.tabsContainer.openPanel(e,t),n?.skipSetActive?e.api.renderer===`always`&&this.contentContainer.renderPanel(e,{asActive:!1}):this.contentContainer.openPanel(e),!r&&(this.updateMru(e),this.panels.splice(t,0,e),this._panelDisposables.set(e.id,new Q(e.api.onDidTitleChange(e=>this._onDidPanelTitleChange.fire(e)),e.api.onDidParametersChange(e=>this._onDidPanelParametersChange.fire(e)))),this._onDidAddPanel.fire({panel:e}))}doSetActivePanel(e){if(this._activePanel!==e){if(this._activePanel=e,e){var t;this.tabsContainer.setActivePanel(e),this.contentContainer.setLabelledBy(this.tabsContainer.getTabId(e.id)),this.contentContainer.openPanel(e);let{width:n,height:r}=this.contentDimensions();e.layout(n,r),this.updateMru(e),this.contentContainer.refreshFocusState(),this._onDidActivePanelChange.fire({panel:e,origin:(t=this.accessor).currentOrigin?.call(t)??`user`})}this.updateAccessibleLabel()}}updateAccessibleLabel(){let e=this._activePanel?.title;e?this.container.setAttribute(`aria-label`,e):this.container.removeAttribute(`aria-label`)}updateMru(e){this.mostRecentlyUsed.includes(e)&&this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(e),1),this.mostRecentlyUsed=[e,...this.mostRecentlyUsed]}updateContainer(){this.panels.forEach(e=>e.runEvents());let e=this.isEmpty||!this._activePanel;if(e&&!this.watermark){let e=this.accessor.createWatermarkComponent();e.init({containerApi:this._api,group:this.groupPanel}),this.watermark=e,Qe(this.watermark.element,`pointerdown`,()=>{this.isActive||this.accessor.doSetGroupActive(this.groupPanel)}),this.contentContainer.element.appendChild(this.watermark.element)}if(!e&&this.watermark){var t,n;this.watermark.element.remove(),(t=(n=this.watermark).dispose)==null||t.call(n),this.watermark=void 0}}canDisplayOverlay(e,t,n){let r=new _r(e,n,t,Ue,this.accessor.getPanel(this.id));return this._onUnhandledDragOver.fire(r),r.isAccepted}canDisplayContentOverlay(e,t){if(this.locked===`no-drop-target`||this.locked&&t===`center`)return!1;let n=Ue();return!n&&e.shiftKey&&this.location.type!==`floating`?!1:n?.viewId===this.accessor.id||this.canDisplayOverlay(e,t,`content`)}handleDropEvent(e,t,n,r,i){if(this.locked===`no-drop-target`)return;if(e===`content`&&i){this.accessor.dockToLayoutEdge(t,n);return}function a(){switch(e){case`header`:return typeof r==`number`?`tab`:`header_space`;case`content`:return`content`}}let o=typeof r==`number`?this.panels[r]:void 0,s=new Hr({nativeEvent:t,position:n,panel:o,getData:()=>Ue(),kind:a(),group:this.groupPanel,api:this._api});if(this._onWillDrop.fire(s),s.defaultPrevented)return;let c=Ue();if(c?.viewId===this.accessor.id){if(e===`content`&&c.groupId===this.id&&(n===`center`||c.panelId===null&&!c.tabGroupId)||e===`header`&&c.groupId===this.id&&c.panelId===null&&!c.tabGroupId)return;if(c.panelId===null){let{groupId:e}=c;this._onMove.fire({target:n,groupId:e,index:r,tabGroupId:c.tabGroupId});return}if(this.tabsContainer.indexOf(c.panelId)!==-1&&this.tabsContainer.size===1)return;let{groupId:t,panelId:i}=c;if(this.id===t&&!n&&this.tabsContainer.indexOf(i)===r)return;this._onMove.fire({target:n,groupId:c.groupId,itemId:c.panelId,index:r})}else this._onDidDrop.fire(new Vr({nativeEvent:t,position:n,panel:o,getData:()=>Ue(),group:this.groupPanel,api:this._api}))}updateDragAndDropState(){this.tabsContainer.updateDragAndDropState()}dispose(){var e,t,n;super.dispose(),(e=this.watermark)==null||e.element.remove(),(t=this.watermark)==null||(n=t.dispose)==null||n.call(t),this.watermark=void 0;for(let e of[...this._tabGroups])e.dispose();for(let e of this._tabGroupDisposables.values())e.dispose();this._tabGroupDisposables.clear();for(let e of this._pendingMicrotaskDisposables)e.dispose();this._pendingMicrotaskDisposables.clear();for(let e of this.panels)e.dispose();this.tabsContainer.dispose(),this.contentContainer.dispose()}},Wr=class extends qn{constructor(e,t,n){super(e,t),this._onDidConstraintsChangeInternal=new $,this.onDidConstraintsChangeInternal=this._onDidConstraintsChangeInternal.event,this._onDidConstraintsChange=new $,this.onDidConstraintsChange=this._onDidConstraintsChange.event,this._onDidSizeChange=new $,this.onDidSizeChange=this._onDidSizeChange.event,this.addDisposables(this._onDidConstraintsChangeInternal,this._onDidConstraintsChange,this._onDidSizeChange),n&&this.initialize(n)}setConstraints(e){this._onDidConstraintsChangeInternal.fire(e)}setSize(e){this._onDidSizeChange.fire(e)}},Gr=class extends Jn{get priority(){return this._priority}get snap(){return this._snap}get minimumWidth(){return this.__minimumWidth()}get minimumHeight(){return this.__minimumHeight()}get maximumHeight(){return this.__maximumHeight()}get maximumWidth(){return this.__maximumWidth()}__minimumWidth(){let e=typeof this._minimumWidth==`function`?this._minimumWidth():this._minimumWidth;return e!==this._evaluatedMinimumWidth&&(this._evaluatedMinimumWidth=e,this.updateConstraints()),e}__maximumWidth(){let e=typeof this._maximumWidth==`function`?this._maximumWidth():this._maximumWidth;return e!==this._evaluatedMaximumWidth&&(this._evaluatedMaximumWidth=e,this.updateConstraints()),e}__minimumHeight(){let e=typeof this._minimumHeight==`function`?this._minimumHeight():this._minimumHeight;return e!==this._evaluatedMinimumHeight&&(this._evaluatedMinimumHeight=e,this.updateConstraints()),e}__maximumHeight(){let e=typeof this._maximumHeight==`function`?this._maximumHeight():this._maximumHeight;return e!==this._evaluatedMaximumHeight&&(this._evaluatedMaximumHeight=e,this.updateConstraints()),e}get isActive(){return this.api.isActive}get isVisible(){return this.api.isVisible}constructor(e,t,n,r){super(e,t,r??new Wr(e,t)),this._evaluatedMinimumWidth=0,this._evaluatedMaximumWidth=2**53-1,this._evaluatedMinimumHeight=0,this._evaluatedMaximumHeight=2**53-1,this._minimumWidth=0,this._minimumHeight=0,this._maximumWidth=2**53-1,this._maximumHeight=2**53-1,this._snap=!1,this._onDidChange=new $,this.onDidChange=this._onDidChange.event,typeof n?.minimumWidth==`number`&&(this._minimumWidth=n.minimumWidth),typeof n?.maximumWidth==`number`&&(this._maximumWidth=n.maximumWidth),typeof n?.minimumHeight==`number`&&(this._minimumHeight=n.minimumHeight),typeof n?.maximumHeight==`number`&&(this._maximumHeight=n.maximumHeight),this.api.initialize(this),this.addDisposables(this.api.onWillVisibilityChange(e=>{let{isVisible:t}=e,{accessor:n}=this._params;n.setVisible(this,t)}),this.api.onActiveChange(()=>{let{accessor:e}=this._params;e.doSetGroupActive(this)}),this.api.onDidConstraintsChangeInternal(e=>{(typeof e.minimumWidth==`number`||typeof e.minimumWidth==`function`)&&(this._minimumWidth=e.minimumWidth),(typeof e.minimumHeight==`number`||typeof e.minimumHeight==`function`)&&(this._minimumHeight=e.minimumHeight),(typeof e.maximumWidth==`number`||typeof e.maximumWidth==`function`)&&(this._maximumWidth=e.maximumWidth),(typeof e.maximumHeight==`number`||typeof e.maximumHeight==`function`)&&(this._maximumHeight=e.maximumHeight),this._onDidChange.fire(void 0)}),this.api.onDidSizeChange(e=>{this._onDidChange.fire({height:e.height,width:e.width})}),this._onDidChange)}setVisible(e){this.api._onDidVisibilityChange.fire({isVisible:e})}setActive(e){this.api._onDidActiveChange.fire({isActive:e})}init(e){e.maximumHeight&&(this._maximumHeight=e.maximumHeight),e.minimumHeight&&(this._minimumHeight=e.minimumHeight),e.maximumWidth&&(this._maximumWidth=e.maximumWidth),e.minimumWidth&&(this._minimumWidth=e.minimumWidth),this._priority=e.priority,this._snap=!!e.snap,super.init(e),typeof e.isVisible==`boolean`&&this.setVisible(e.isVisible)}updateConstraints(){this.api._onDidConstraintsChange.fire({minimumWidth:this._evaluatedMinimumWidth,maximumWidth:this._evaluatedMaximumWidth,minimumHeight:this._evaluatedMinimumHeight,maximumHeight:this._evaluatedMaximumHeight})}toJSON(){let e=super.toJSON(),t=e=>e===2**53-1?void 0:e,n=e=>e<=0?void 0:e;return ln(ln({},e),{},{minimumHeight:n(this.minimumHeight),maximumHeight:t(this.maximumHeight),minimumWidth:n(this.minimumWidth),maximumWidth:t(this.maximumWidth),snap:this.snap,priority:this.priority})}},Kr=`dockview: DockviewGroupPanelApiImpl not initialized`,qr=class extends Wr{get location(){if(!this._group)throw Error(Kr);return this._group.model.location}get boundingBox(){if(!this._group||this._group.model.location.type===`popout`)return;let e=this.accessor.element.getBoundingClientRect(),t=this._group.element.getBoundingClientRect();return{left:t.left-e.left,top:t.top-e.top,width:t.width,height:t.height}}get locked(){if(!this._group)throw Error(Kr);return this._group.locked}set locked(e){if(!this._group)throw Error(Kr);this._group.locked=e}constructor(e,t){super(e,`__dockviewgroup__`),this.accessor=t,this._onDidLocationChange=new $,this.onDidLocationChange=this._onDidLocationChange.event,this._onDidActivePanelChange=new $,this.onDidActivePanelChange=this._onDidActivePanelChange.event,this._onDidCollapsedChange=new $,this.onDidCollapsedChange=this._onDidCollapsedChange.event,this._onDidPeekChange=new $,this.onDidPeekChange=this._onDidPeekChange.event,this._onDidHeaderDirectionChange=new $,this.onDidHeaderDirectionChange=this._onDidHeaderDirectionChange.event,this.addDisposables(this._onDidLocationChange,this._onDidActivePanelChange,this._onDidCollapsedChange,this._onDidPeekChange,this._onDidHeaderDirectionChange,this._onDidVisibilityChange.event(e=>{e.isVisible&&this._pendingSize&&(super.setSize(this._pendingSize),this._pendingSize=void 0)}))}setSize(e){this._pendingSize=ln({},e),super.setSize(e)}close(){if(this._group)return this.accessor.removeGroup(this._group)}getWindow(){return this.location.type===`popout`?this.location.getWindow():globalThis.window}setHeaderPosition(e){if(!this._group)throw Error(Kr);this._group.model.headerPosition=e}getHeaderPosition(){if(!this._group)throw Error(Kr);return this._group.model.headerPosition}moveTo(e){if(!this._group)throw Error(Kr);this.accessor.withOrigin(`api`,()=>{let t=e.group??this.accessor.addGroup({direction:Dn(e.position??`right`),skipSetActive:e.skipSetActive??!1});this.accessor.moveGroupOrPanel({from:{groupId:this._group.id},to:{group:t,position:e.group?e.position??`center`:`center`,index:e.index},skipSetActive:e.skipSetActive})})}maximize(){if(!this._group)throw Error(Kr);this.location.type===`grid`&&this.accessor.maximizeGroup(this._group)}isMaximized(){if(!this._group)throw Error(Kr);return this.accessor.isMaximizedGroup(this._group)}exitMaximized(){if(!this._group)throw Error(Kr);this.isMaximized()&&this.accessor.exitMaximizedGroup()}collapse(){this._group&&this.accessor.setEdgeGroupCollapsed(this._group,!0)}expand(){this._group&&this.accessor.setEdgeGroupCollapsed(this._group,!1)}isCollapsed(){return this._group?this.accessor.isEdgeGroupCollapsed(this._group):!1}isPeeking(){return this._group?this.accessor.isEdgeGroupPeeking(this._group):!1}setAutoHide(e){this._group&&this.accessor.setEdgeGroupAutoHide(this._group,e)}isAutoHide(){return this._group?this.accessor.isEdgeGroupAutoHide(this._group):!1}initialize(e){this._group=e}},Jr=100,Yr=100,Xr=class extends Gr{get minimumWidth(){if(typeof this._explicitConstraints.minimumWidth==`number`)return this._explicitConstraints.minimumWidth;let e=this.activePanel?.minimumWidth;return typeof e==`number`?e:super.__minimumWidth()}get minimumHeight(){if(typeof this._explicitConstraints.minimumHeight==`number`)return this._explicitConstraints.minimumHeight;let e=this.activePanel?.minimumHeight;return typeof e==`number`?e:super.__minimumHeight()}get maximumWidth(){if(typeof this._explicitConstraints.maximumWidth==`number`)return this._explicitConstraints.maximumWidth;let e=this.activePanel?.maximumWidth;return typeof e==`number`?e:super.__maximumWidth()}get maximumHeight(){if(typeof this._explicitConstraints.maximumHeight==`number`)return this._explicitConstraints.maximumHeight;let e=this.activePanel?.maximumHeight;return typeof e==`number`?e:super.__maximumHeight()}get panels(){return this._model.panels}get activePanel(){return this._model.activePanel}get size(){return this._model.size}get model(){return this._model}get locked(){return this._model.locked}set locked(e){this._model.locked=e}get header(){return this._model.header}constructor(e,t,n){super(t,`groupview_default`,{minimumHeight:n.constraints?.minimumHeight??Yr,minimumWidth:n.constraints?.minimumWidth??Jr,maximumHeight:n.constraints?.maximumHeight,maximumWidth:n.constraints?.maximumWidth},new qr(t,e)),this._explicitConstraints={},this.api.initialize(this),this._model=new Ur(this.element,e,t,n,this),this.addDisposables(this.model.onDidActivePanelChange(e=>{this.api._onDidActivePanelChange.fire(e)}),this.api.onDidConstraintsChangeInternal(e=>{e.minimumWidth!==void 0&&(this._explicitConstraints.minimumWidth=typeof e.minimumWidth==`function`?e.minimumWidth():e.minimumWidth),e.minimumHeight!==void 0&&(this._explicitConstraints.minimumHeight=typeof e.minimumHeight==`function`?e.minimumHeight():e.minimumHeight),e.maximumWidth!==void 0&&(this._explicitConstraints.maximumWidth=typeof e.maximumWidth==`function`?e.maximumWidth():e.maximumWidth),e.maximumHeight!==void 0&&(this._explicitConstraints.maximumHeight=typeof e.maximumHeight==`function`?e.maximumHeight():e.maximumHeight)}))}focus(){this.api.isActive||this.api.setActive(),super.focus()}initialize(){this._model.initialize()}setActive(e){super.setActive(e),this.model.setActive(e)}layout(e,t){super.layout(e,t),this.model.layout(e,t)}relayout(){this.model.relayout()}getComponent(){return this._model}toJSON(){return this.model.toJSON()}},Zr={name:`abyss`,className:`dockview-theme-abyss`,colorScheme:`dark`,tabGroupIndicator:`none`},Qr=class extends Wr{get location(){return this.group.api.location}get title(){return this.panel.title}get isPinned(){return this.panel.isPinned}get isGroupActive(){return this.group.isActive}get renderer(){return this.panel.renderer}set group(e){let t=this._group;this._group!==e&&(this._group=e,this._onDidGroupChange.fire({}),this.setupGroupEventListeners(t),this.fireLocationChange())}get group(){return this._group}get tabComponent(){return this._tabComponent}constructor(e,t,n,r,i){super(e.id,r),this.panel=e,this.accessor=n,this._onDidTitleChange=new $,this.onDidTitleChange=this._onDidTitleChange.event,this._onDidChangePinned=new $,this.onDidChangePinned=this._onDidChangePinned.event,this._onDidActiveGroupChange=new $,this.onDidActiveGroupChange=this._onDidActiveGroupChange.event,this._onDidGroupChange=new $,this.onDidGroupChange=this._onDidGroupChange.event,this._onDidRendererChange=new $,this.onDidRendererChange=this._onDidRendererChange.event,this._onDidLocationChange=new $,this.onDidLocationChange=this._onDidLocationChange.event,this.groupEventsDisposable=new Ge,this._tabComponent=i,this.initialize(e),this._group=t,this.setupGroupEventListeners(),this.addDisposables(this.groupEventsDisposable,this._onDidRendererChange,this._onDidTitleChange,this._onDidChangePinned,this._onDidGroupChange,this._onDidActiveGroupChange,this._onDidLocationChange)}getWindow(){return this.group.api.getWindow()}setActive(){this.accessor.withOrigin(`api`,()=>super.setActive())}moveTo(e){this.accessor.withOrigin(`api`,()=>this.accessor.moveGroupOrPanel({from:{groupId:this._group.id,panelId:this.panel.id},to:{group:e.group??this._group,position:e.group?e.position??`center`:`center`,index:e.index},skipSetActive:e.skipSetActive}))}setTitle(e){this.panel.setTitle(e)}setPinned(e){this.accessor.setPanelPinned(this.panel,e)}setRenderer(e){this.panel.setRenderer(e)}close(){this.group.model.closePanel(this.panel)}maximize(){this.group.api.maximize()}isMaximized(){return this.group.api.isMaximized()}exitMaximized(){this.group.api.exitMaximized()}fireLocationChange(){this.accessor.deferLocationChange(this,()=>{this.isDisposed||this._onDidLocationChange.fire({location:this.location})})}setupGroupEventListeners(e){let t=e?.isActive??!1;this.groupEventsDisposable.value=new Q(this.group.api.onDidVisibilityChange(e=>{let t=!e.isVisible&&this.isVisible,n=e.isVisible&&!this.isVisible,r=this.group.model.isPanelActive(this.panel);(t||n&&r)&&this._onDidVisibilityChange.fire(e)}),this.group.api.onDidLocationChange(()=>{this.group===this.panel.group&&this.fireLocationChange()}),this.group.api.onDidActiveChange(()=>{this.group===this.panel.group&&t!==this.isGroupActive&&(t=this.isGroupActive,this._onDidActiveGroupChange.fire({isActive:this.isGroupActive}))}))}},$r=class extends Q{get params(){return this._params}get title(){return this._title}get isPinned(){return this._pinned}get group(){return this._group}get renderer(){return this._renderer??this.accessor.renderer}get minimumWidth(){return this._minimumWidth}get minimumHeight(){return this._minimumHeight}get maximumWidth(){return this._maximumWidth}get maximumHeight(){return this._maximumHeight}constructor(e,t,n,r,i,a,o,s){super(),this.id=e,this.accessor=r,this.containerApi=i,this.view=o,this._pinned=!1,this._renderer=s.renderer,this._group=a,this._minimumWidth=s.minimumWidth,this._minimumHeight=s.minimumHeight,this._maximumWidth=s.maximumWidth,this._maximumHeight=s.maximumHeight,this.api=new Qr(this,this._group,r,t,n),this.addDisposables(this.api.onActiveChange(()=>{r.setActivePanel(this)}),this.api.onDidSizeChange(e=>{this.group.api.setSize(e)}),this.api.onDidRendererChange(()=>{this.group.model.rerender(this)}))}init(e){this._params=e.params,this.view.init(ln(ln({},e),{},{api:this.api,containerApi:this.containerApi})),this.setTitle(e.title)}focus(){let e=new Kn;this.api._onWillFocus.fire(e),!e.defaultPrevented&&(this.api.isActive||this.api.setActive())}toJSON(){return{id:this.id,contentComponent:this.view.contentComponent,tabComponent:this.view.tabComponent,params:Object.keys(this._params||{}).length>0?this._params:void 0,title:this.title,renderer:this._renderer,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,minimumWidth:this._minimumWidth,maximumWidth:this._maximumWidth,pinned:this._pinned?!0:void 0}}setTitle(e){e!==this.title&&(this._title=e,this.view.setTitle(e),this.api._onDidTitleChange.fire({title:e}))}setPinned(e){this._pinned!==e&&(this._pinned=e,this.api._onDidChangePinned.fire({isPinned:e}))}setRenderer(e){e!==this.renderer&&(this._renderer=e,this.api._onDidRendererChange.fire({renderer:e}))}update(e){this._params=ln(ln({},this._params),e.params);for(let t of Object.keys(e.params))e.params[t]===void 0&&delete this._params[t];this.view.update({params:this._params})}updateFromStateModel(e){this._maximumHeight=e.maximumHeight,this._minimumHeight=e.minimumHeight,this._maximumWidth=e.maximumWidth,this._minimumWidth=e.minimumWidth,this._params=e.params??{},this.view.update({params:this._params}),this.setTitle(e.title??this.id),this.setRenderer(e.renderer??this.accessor.renderer),this.setPinned((e.pinned??!1)&&!!this.accessor.options.pinnedTabs?.enabled)}updateParentGroup(e,t){this._group=e,this.api.group=this._group;let n=this._group.model.isPanelActive(this),r=this.group.api.isActive&&n;t?.skipSetActive||this.api.isActive!==r&&this.api._onDidActiveChange.fire({isActive:this.group.api.isActive&&n}),this.api.isVisible!==n&&this.api._onDidVisibilityChange.fire({isVisible:n})}runEvents(){let e=this._group.model.isPanelActive(this),t=this.group.api.isActive&&e;this.api.isActive!==t&&this.api._onDidActiveChange.fire({isActive:this.group.api.isActive&&e}),this.api.isVisible!==e&&this.api._onDidVisibilityChange.fire({isVisible:e})}layout(e,t){this.api._onDidDimensionChange.fire({width:e,height:t}),this.view.layout(e,t)}dispose(){this.api.dispose(),this.view.dispose()}},ei=class extends Q{get element(){return this._element}constructor(){super(),this._messages=fn,this._element=document.createElement(`div`),this._element.className=`dv-default-tab`,this._content=document.createElement(`div`),this._content.className=`dv-default-tab-content`,this.action=document.createElement(`div`),this.action.className=`dv-default-tab-action`,this.action.setAttribute(`role`,`button`),this.action.setAttribute(`tabindex`,`-1`);let e=$n();e.setAttribute(`aria-hidden`,`true`),this.action.appendChild(e),this._element.appendChild(this._content),this._element.appendChild(this.action),this.render()}init(e){this._title=e.title,this._messages=e.containerApi.messages??fn,this.addDisposables(e.api.onDidTitleChange(e=>{this._title=e.title,this.render()}),Qe(this.action,`pointerdown`,e=>{e.preventDefault()}),Qe(this.action,`click`,t=>{t.defaultPrevented||(t.preventDefault(),e.api.close())})),this.render()}render(){this._content.textContent!==this._title&&(this._content.textContent=this._title??``),this.action.setAttribute(`aria-label`,this._title?this._messages.closeTab(this._title):this._messages.closeTabPlain())}},ti=class{get content(){return this._content}get tab(){return this._tab}constructor(e,t,n,r){this.accessor=e,this.id=t,this.contentComponent=n,this.tabComponent=r,this._content=this.createContentComponent(this.id,n),this._tab=this.createTabComponent(this.id,r)}createTabRenderer(e){let t=this.createTabComponent(this.id,this.tabComponent);if(this._params&&t.init(ln(ln({},this._params),{},{tabLocation:e})),this._updateEvent){var n;(n=t.update)==null||n.call(t,this._updateEvent)}return t}init(e){this._params=e,this.content.init(e),this.tab.init(ln(ln({},e),{},{tabLocation:`header`}))}setTitle(e){this._params&&(this._params.title=e)}layout(e,t){var n,r;(n=(r=this.content).layout)==null||n.call(r,e,t)}update(e){var t,n,r,i;this._updateEvent=e,(t=(n=this.content).update)==null||t.call(n,e),(r=(i=this.tab).update)==null||r.call(i,e)}dispose(){var e,t,n,r;(e=(t=this.content).dispose)==null||e.call(t),(n=(r=this.tab).dispose)==null||n.call(r)}createContentComponent(e,t){return this.accessor.options.createComponent({id:e,name:t})}createTabComponent(e,t){let n=t??this.accessor.options.defaultTabComponent;if(n){if(this.accessor.options.createTabComponent)return this.accessor.options.createTabComponent({id:e,name:n})||new ei;console.warn(`dockview: tabComponent '${t}' was not found. falling back to the default tab.`)}return new ei}},ni=class{constructor(e){this.accessor=e}fromJSON(e,t){let n=e.id,r=e.params,i=e.title,a=e.view,o=a?a.content.id:e.contentComponent??`unknown`,s=a?a.tab?.id:e.tabComponent,c=new ti(this.accessor,n,o,s),l=new $r(n,o,s,this.accessor,new mn(this.accessor),t,c,{renderer:e.renderer,minimumWidth:e.minimumWidth,minimumHeight:e.minimumHeight,maximumWidth:e.maximumWidth,maximumHeight:e.maximumHeight});return l.init({title:i??n,params:r??{}}),e.pinned&&this.accessor.options.pinnedTabs?.enabled&&l.setPinned(!0),l}},ri=class extends Q{get element(){return this._element}constructor(){super(),this._element=document.createElement(`div`),this._element.className=`dv-watermark`}init(e){}},ii=new class{constructor(){this._orderedList=[]}push(e){this._orderedList=[...this._orderedList.filter(t=>t!==e),e],this.update()}destroy(e){this._orderedList=this._orderedList.filter(t=>t!==e),this.update()}update(){for(let e=0;e<this._orderedList.length;e++)this._orderedList[e].setAttribute(`aria-level`,`${e}`),this._orderedList[e].style.zIndex=`calc(var(--dv-overlay-z-index, 999) + ${e*2})`}},ai=class e extends Q{set minimumInViewportWidth(e){this.options.minimumInViewportWidth=e}set minimumInViewportHeight(e){this.options.minimumInViewportHeight=e}get element(){return this._element}get isVisible(){return this._isVisible}get headerHeight(){return this.options.header?.offsetHeight??0}constructor(e){super(),this.options=e,this._element=document.createElement(`div`),this._onDidChange=new $,this.onDidChange=this._onDidChange.event,this._onDidChangeEnd=new $,this.onDidChangeEnd=this._onDidChangeEnd.event,this._onDidStartMoving=new $,this.onDidStartMoving=this._onDidStartMoving.event,this._dragMove=new Ge,this._dragCancelled=!1,this.addDisposables(this._onDidChange,this._onDidChangeEnd,this._onDidStartMoving,this._dragMove),this._element.className=`dv-resize-container`,this._element.setAttribute(`role`,`dialog`),this._element.setAttribute(`aria-modal`,`false`),this._isVisible=!0,this.setupResize(`top`),this.setupResize(`bottom`),this.setupResize(`left`),this.setupResize(`right`),this.setupResize(`topleft`),this.setupResize(`topright`),this.setupResize(`bottomleft`),this.setupResize(`bottomright`),this.options.header&&(it(this._element,`dv-resize-container-with-titlebar`,!0),this._element.appendChild(this.options.header)),this._element.appendChild(this.options.content),this.options.container.appendChild(this._element),this.setBounds(ln(ln(ln(ln({height:this.options.height,width:this.options.width},`top`in this.options&&{top:this.options.top}),`bottom`in this.options&&{bottom:this.options.bottom}),`left`in this.options&&{left:this.options.left}),`right`in this.options&&{right:this.options.right})),ii.push(this._element)}setVisible(e){e!==this.isVisible&&(this._isVisible=e,it(this.element,`dv-hidden`,!this.isVisible))}bringToFront(){ii.push(this._element)}setBounds(e={}){typeof e.height==`number`&&(this._element.style.height=`${e.height}px`),typeof e.width==`number`&&(this._element.style.width=`${e.width}px`),`top`in e&&typeof e.top==`number`&&(this._element.style.top=`${e.top}px`,this._element.style.bottom=`auto`,this.verticalAlignment=`top`),`bottom`in e&&typeof e.bottom==`number`&&(this._element.style.bottom=`${e.bottom}px`,this._element.style.top=`auto`,this.verticalAlignment=`bottom`),`left`in e&&typeof e.left==`number`&&(this._element.style.left=`${e.left}px`,this._element.style.right=`auto`,this.horiziontalAlignment=`left`),`right`in e&&typeof e.right==`number`&&(this._element.style.right=`${e.right}px`,this._element.style.left=`auto`,this.horiziontalAlignment=`right`);let t=this.options.container.getBoundingClientRect(),n=this._element.getBoundingClientRect(),r=Math.max(0,this.getMinimumWidth(n.width)),i=Math.max(0,this.getMinimumHeight(n.height));if(this.verticalAlignment===`top`){let e=jt(n.top-t.top,-i,Math.max(0,t.height-n.height+i));this._element.style.top=`${e}px`,this._element.style.bottom=`auto`}if(this.verticalAlignment===`bottom`){let e=jt(t.bottom-n.bottom,-i,Math.max(0,t.height-n.height+i));this._element.style.bottom=`${e}px`,this._element.style.top=`auto`}if(this.horiziontalAlignment===`left`){let e=jt(n.left-t.left,-r,Math.max(0,t.width-n.width+r));this._element.style.left=`${e}px`,this._element.style.right=`auto`}if(this.horiziontalAlignment===`right`){let e=jt(t.right-n.right,-r,Math.max(0,t.width-n.width+r));this._element.style.right=`${e}px`,this._element.style.left=`auto`}this._onDidChange.fire()}toJSON(){let e=this.options.container.getBoundingClientRect(),t=this._element.getBoundingClientRect(),n={};return this.verticalAlignment===`top`?n.top=Number.parseFloat(this._element.style.top):this.verticalAlignment===`bottom`?n.bottom=Number.parseFloat(this._element.style.bottom):n.top=t.top-e.top,this.horiziontalAlignment===`left`?n.left=Number.parseFloat(this._element.style.left):this.horiziontalAlignment===`right`?n.right=Number.parseFloat(this._element.style.right):n.left=t.left-e.left,n.width=t.width,n.height=t.height,n}cancelPendingDrag(){this._dragMove.value&&(this._dragCancelled=!0,it(this._element,`dv-resize-container-dragging`,!1),this._dragMove.value=We.NONE)}setupDrag(e,t){let n=(e,t)=>{var n;let r=null,i=!1;this._dragCancelled=!1;let a=this.options.transformDragPosition?(n=this.options).getSiblingBoxes?.call(n)??[]:[],o=gt();if(e&&typeof t==`number`&&typeof e.setPointerCapture==`function`)try{e.setPointerCapture(t)}catch{}let s=()=>{it(this._element,`dv-resize-container-dragging`,!1),this._dragMove.value=We.NONE,this._onDidChangeEnd.fire()};this._dragMove.value=new Q({dispose:()=>{if(o.release(),e&&typeof t==`number`&&typeof e.releasePointerCapture==`function`)try{e.releasePointerCapture(t)}catch{}}},Qe(globalThis.window,`pointermove`,e=>{if(this._dragCancelled)return;let t=this.options.container.getBoundingClientRect(),n=e.clientX-t.left,o=e.clientY-t.top;it(this._element,`dv-resize-container-dragging`,!0);let s=this._element.getBoundingClientRect();r??={x:e.clientX-s.left,y:e.clientY-s.top};let c=Math.max(0,this.getMinimumWidth(s.width)),l=Math.max(0,this.getMinimumHeight(s.height)),u=o-r.y,d=n-r.x;if(this.options.transformDragPosition){let n=this.options.transformDragPosition({proposed:{top:u,left:d,width:s.width,height:s.height},container:{width:t.width,height:t.height},others:a,modifiers:{altKey:e.altKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey,shiftKey:e.shiftKey}});n&&(u=n.top,d=n.left)}let f=Math.max(0,t.height-s.height+l),p=Math.max(0,t.width-s.width+c),m=jt(u,-l,f),h=jt(t.height-s.height-u,-l,f),g=jt(d,-c,p),_=jt(t.width-s.width-d,-c,p),v={};m<=h?v.top=m:v.bottom=h,g<=_?v.left=g:v.right=_,this.setBounds(v),i||(i=!0,this._onDidStartMoving.fire())}),Qe(globalThis.window,`pointerup`,s),Qe(globalThis.window,`pointercancel`,s))};this.addDisposables(Qe(e,`pointerdown`,t=>{if(t.defaultPrevented){t.preventDefault();return}ut(t)||n(e,t.pointerId)}),Qe(this.options.content,`pointerdown`,e=>{e.defaultPrevented||ut(e)||e.shiftKey&&n(this.options.content,e.pointerId)}),Qe(this.options.content,`pointerdown`,()=>{ii.push(this._element)},!0)),t?.inDragMode&&n()}setupResize(t){let n=document.createElement(`div`);n.className=`dv-resize-handle-${t}`,this._element.appendChild(n);let r=new Ge;this.addDisposables(r,Qe(n,`pointerdown`,i=>{i.preventDefault();let a=null,o=gt(),s=i.pointerId;if(typeof n.setPointerCapture==`function`)try{n.setPointerCapture(s)}catch{}let c=()=>{r.dispose(),this._onDidChangeEnd.fire()};r.value=new Q(Qe(globalThis.window,`pointermove`,n=>{let r=this.options.container.getBoundingClientRect(),i=this._element.getBoundingClientRect(),o=n.clientY-r.top,s=n.clientX-r.left;a??={originalY:o,originalHeight:i.height,originalX:s,originalWidth:i.width};let c,l,u,d,f,p,m=()=>{let t=a.originalY+a.originalHeight>r.height?Math.max(0,r.height-e.MINIMUM_HEIGHT):Math.max(0,a.originalY+a.originalHeight-e.MINIMUM_HEIGHT);c=jt(o,0,t),u=a.originalY+a.originalHeight-c,l=r.height-c-u},h=()=>{c=a.originalY-a.originalHeight;let t=c<0&&typeof this.options.minimumInViewportHeight==`number`?-c+this.options.minimumInViewportHeight:e.MINIMUM_HEIGHT,n=r.height-Math.max(0,c);u=jt(o-c,t,n),l=r.height-c-u},g=()=>{let t=a.originalX+a.originalWidth>r.width?Math.max(0,r.width-e.MINIMUM_WIDTH):Math.max(0,a.originalX+a.originalWidth-e.MINIMUM_WIDTH);d=jt(s,0,t),p=a.originalX+a.originalWidth-d,f=r.width-d-p},_=()=>{d=a.originalX-a.originalWidth;let t=d<0&&typeof this.options.minimumInViewportWidth==`number`?-d+this.options.minimumInViewportWidth:e.MINIMUM_WIDTH,n=r.width-Math.max(0,d);p=jt(s-d,t,n),f=r.width-d-p};switch(t){case`top`:m();break;case`bottom`:h();break;case`left`:g();break;case`right`:_();break;case`topleft`:m(),g();break;case`topright`:m(),_();break;case`bottomleft`:h(),g();break;case`bottomright`:h(),_()}let v={};c<=l?v.top=c:v.bottom=l,d<=f?v.left=d:v.right=f,v.height=u,v.width=p,this.setBounds(v)}),{dispose:()=>{if(o.release(),typeof n.releasePointerCapture==`function`)try{n.releasePointerCapture(s)}catch{}}},Qe(globalThis.window,`pointerup`,c),Qe(globalThis.window,`pointercancel`,c))}))}getMinimumWidth(e){return typeof this.options.minimumInViewportWidth==`number`?e-this.options.minimumInViewportWidth:0}getMinimumHeight(e){return typeof this.options.minimumInViewportHeight==`number`?e-this.options.minimumInViewportHeight:0}dispose(){ii.destroy(this._element),this._element.remove(),super.dispose()}};ai.MINIMUM_HEIGHT=20,ai.MINIMUM_WIDTH=20;var oi=class extends Q{get element(){return this._element}get group(){return this._group}setGroup(e){this._group=e}constructor(e,t){super(),this.accessor=e,this._onDragStart=new $,this.onDragStart=this._onDragStart.event,this._group=t,this._element=document.createElement(`div`),this._element.className=`dv-floating-titlebar`,this.addDisposables(this._onDragStart,Qe(this._element,`pointerdown`,()=>{this.accessor.doSetGroupActive(this._group)}),Qe(this._element,`pointerdown`,e=>{e.shiftKey&<(e)},!0)),this.dragSource=new dr({element:this._element,accessor:this.accessor,group:()=>this._group}),this.addDisposables(this.dragSource,this.dragSource.onDragStart(e=>{this._onDragStart.fire(e)}))}updateDragAndDropState(){this.dragSource.updateDragAndDropState()}};function si(e){return{moduleName:e.name,options:e.options,services:{[e.serviceKey]:e.create},init:e.init?(t,n)=>e.init(t,n[e.serviceKey]):void 0,dependsOn:e.dependsOn}}var ci=new Set([`AdvancedOverflow`,`AutoEdgeGroup`,`AutoHideEdgeGroup`,`ContextMenu`,`DndCompass`,`KeyboardDocking`,`KeyboardNavigation`,`LayoutHistory`,`License`,`MultiRowTabs`,`PinnedTabs`,`SmartGuides`]),li=new Set;function ui(e,t){let n=t===void 0?[]:[].concat(t),r=n.map(e=>`\`${e}\``).join(`, `),i=n.length>1?`require`:`requires`,a=n.length?`${r} ${i} the "${e}" module`:`The "${e}" module is required`;return ci.has(e)?`dockview: ${a}, which ships in dockview-enterprise.\n\n npm install dockview-enterprise\n import 'dockview-enterprise'; // self-registers every enterprise module\n`:`dockview: ${a}, but it is not registered.`}function di(e,t){let n=`${e}|${(t===void 0?[]:[].concat(t)).join(`|`)}`;li.has(n)||(li.add(n),console.error(ui(e,t)))}function fi(e,t,n){if(e!==void 0)return e;di(t,n)}var pi=class{constructor(){this._modules=new Map,this._services={},this._initDisposables=[]}get services(){return this._services}register(e){if(!this._modules.has(e.moduleName)){if(e.dependsOn)for(let t of e.dependsOn)this.register(t);this._modules.set(e.moduleName,e)}}initialize(e){for(let t of this._modules.values())if(t.services)for(let[n,r]of Object.entries(t.services))this._services[n]=r(e)}postConstruct(e){for(let t of this._modules.values())t.init&&this._initDisposables.push(t.init(e,this._services))}has(e){return this._modules.has(e)}dispose(){for(let e of this._initDisposables)e.dispose();this._initDisposables.length=0;for(let e of Object.values(this._services))e!==void 0&&typeof e.dispose==`function`&&e.dispose()}},mi=[];function hi(){return[...mi]}var gi=[{optionKey:`smartGuides`,reason:`smartGuides`,moduleName:`SmartGuides`,when:e=>!!e.smartGuides&&e.smartGuides.enabled!==!1},{optionKey:`layoutHistory`,reason:`layoutHistory.enabled: true`,moduleName:`LayoutHistory`,when:e=>e.layoutHistory?.enabled===!0},{optionKey:`pinnedTabs`,reason:`pinnedTabs.enabled: true`,moduleName:`PinnedTabs`,when:e=>e.pinnedTabs?.enabled===!0},{optionKey:`overflow`,reason:`overflow.mode: 'wrap'`,moduleName:`MultiRowTabs`,when:e=>e.overflow?.mode===`wrap`},{optionKey:`overflow`,reason:`overflow.maxRows`,moduleName:`MultiRowTabs`,when:e=>e.overflow?.maxRows!=null},{optionKey:`overflow`,reason:`overflow.search`,moduleName:`AdvancedOverflow`,when:e=>!!e.overflow?.search},{optionKey:`overflow`,reason:`overflow.mru`,moduleName:`AdvancedOverflow`,when:e=>!!e.overflow?.mru},{optionKey:`autoHideEdgeGroups`,reason:`autoHideEdgeGroups`,moduleName:`AutoHideEdgeGroup`,when:e=>gr(e.autoHideEdgeGroups)},{optionKey:`dockToEdgeGroups`,reason:`dockToEdgeGroups`,moduleName:`AutoEdgeGroup`,when:e=>gr(e.dockToEdgeGroups)},{optionKey:`getTabContextMenuItems`,reason:`getTabContextMenuItems`,moduleName:`ContextMenu`,when:e=>e.getTabContextMenuItems!=null},{optionKey:`getTabGroupChipContextMenuItems`,reason:`getTabGroupChipContextMenuItems`,moduleName:`ContextMenu`,when:e=>e.getTabGroupChipContextMenuItems!=null},{optionKey:`dndCompass`,reason:`dndCompass`,moduleName:`DndCompass`,when:e=>!!e.dndCompass},{optionKey:`keyboardNavigation`,reason:`keyboardNavigation`,moduleName:`KeyboardNavigation`,when:e=>!!e.keyboardNavigation}];function _i(e,t){let n=new Map;for(let r of gi){if(!r.when(e)||t(r.moduleName))continue;let i=n.get(r.moduleName);i?i.push(r.reason):n.set(r.moduleName,[r.reason])}for(let[e,t]of n)di(e,t)}var vi={left:100,top:100,width:300,height:300},yi=class extends Q{get group(){return this._group}setTitleBar(e){this._titleBar=e}setAnchorGroup(e){var t;this._group=e,(t=this._titleBar)==null||t.setGroup(e)}constructor(e,t,n){super(),this.overlay=t,this.gridview=n,this._group=e,this.addDisposables(t,{dispose:()=>this.gridview.dispose()})}position(e){this.overlay.setBounds(e)}},bi=class{get floatingGroups(){return this._floatingGroups}constructor(e){this._floatingGroups=[],this._host=e}add(e,t,n){let r=new yi(e,t,n),i=new Q(e.api.onDidActiveChange(e=>{e.isActive&&t.bringToFront()}),(()=>{let e=-1,t=-1;return tt(n.element,r=>{let i=Math.round(r.contentRect.width),a=Math.round(r.contentRect.height);(i!==e||a!==t)&&(e=i,t=a,n.layout(i,a))})})()),a=()=>{let n=e.activePanel?.title;n?t.element.setAttribute(`aria-label`,n):t.element.removeAttribute(`aria-label`)};return a(),r.addDisposables(e.api.onDidActivePanelChange(()=>a()),t.onDidChange(()=>{n.layout(n.width,n.height)}),t.onDidChangeEnd(()=>{this._host.fireLayoutChange()}),e.onDidChange(e=>{t.setBounds({height:typeof e?.height==`number`?e.height+t.headerHeight:e?.height,width:e?.width})}),{dispose:()=>{i.dispose(),At(this._floatingGroups,r),e.model.location={type:`grid`}}}),this._floatingGroups.push(r),r}findByGroup(e){return this._floatingGroups.find(t=>t.group===e||t.gridview.element.contains(e.element))}serialize(){return this._floatingGroups.map(e=>{let t=e.gridview.serialize(),n=e.overlay.toJSON(),r=t.root;return r.type===`branch`&&r.data.length===1&&r.data[0].type===`leaf`?{data:r.data[0].data,position:n}:{grid:t,position:n}})}constrainBounds(){for(let e of this._floatingGroups)e.overlay.setBounds()}updateBounds(e){if(`floatingGroupBounds`in e)for(let t of this._floatingGroups){switch(e.floatingGroupBounds){case`boundedWithinViewport`:t.overlay.minimumInViewportHeight=void 0,t.overlay.minimumInViewportWidth=void 0;break;case void 0:t.overlay.minimumInViewportHeight=100,t.overlay.minimumInViewportWidth=100;break;default:t.overlay.minimumInViewportHeight=e.floatingGroupBounds?.minimumHeightWithinViewport,t.overlay.minimumInViewportWidth=e.floatingGroupBounds?.minimumWidthWithinViewport}t.overlay.setBounds()}}disposeAll(){for(let e of[...this._floatingGroups])e.dispose()}dispose(){this.disposeAll()}},xi=si({name:`FloatingGroup`,serviceKey:`floatingGroupService`,create:e=>new bi(e)}),Si=class{constructor(e){this._entries=[],this._restorationCleanups=new Set,this._restorationPromise=Promise.resolve(),this._onDidRemove=new $,this.onDidRemove=this._onDidRemove.event,this._host=e}get entries(){return this._entries}get restorationPromise(){return this._restorationPromise}add(e){this._entries.push(e)}remove(e){At(this._entries,e)&&!this._host.isDisposed&&this._onDidRemove.fire(e)}findByGroup(e){return this._entries.find(t=>t.popoutGroup===e||t.gridview.element.contains(e.element))}findReferenceGroupId(e){return this._entries.find(t=>t.popoutGroup===e)?.referenceGroup}observeGridviewSize(e,t,n){let r=e.window?.ResizeObserver;if(!r)return;let i=-1,a=-1,o=()=>{let r=e.window;if(this._host.isDisposed||!r||r.closed)return;let o=Math.round(t.element.clientWidth),s=Math.round(t.element.clientHeight);(o!==i||s!==a)&&(i=o,a=s,o>0&&s>0&&t.layout(o,s),n.updateAllPositions())},s=new r(()=>{let t=e.window?.requestAnimationFrame;t?t.call(e.window,o):o()});return s.observe(t.element),{dispose:()=>s.disconnect()}}scheduleRestoration(e,t,n){return new Promise(r=>{let i=()=>{this._restorationCleanups.delete(i),clearTimeout(a),n?.(),r()},a=setTimeout(()=>{if(this._restorationCleanups.delete(i),this._host.isDisposed){r();return}t(),r()},e);this._restorationCleanups.add(i)})}finishRestoration(e){this._restorationPromise=Promise.all(e).then(()=>void 0)}cancelPendingRestorations(){for(let e of[...this._restorationCleanups])e();this._restorationCleanups.clear()}serialize(){return this._entries.map(e=>{let t=e.gridview.serialize(),n=t.root,r=e.popoutGroup.api.location.type===`popout`?e.popoutGroup.api.location.popoutUrl:void 0,i={gridReferenceGroup:e.referenceGroup,position:e.window.dimensions(),url:r};return n.type===`branch`&&n.data.length===1&&n.data[0].type===`leaf`?ln(ln({},i),{},{data:n.data[0].data}):ln(ln({},i),{},{grid:t})})}disposeAll(){for(let e of[...this._entries])e.disposable.dispose()}dispose(){this.cancelPendingRestorations(),this.disposeAll(),this._onDidRemove.dispose()}},Ci=si({name:`PopoutWindow`,serviceKey:`popoutWindowService`,create:e=>new Si(e)}),wi=class{constructor(e){this._watermark=null,this._host=e}update(){if(this._host.hasVisibleGridGroup()){this._unmount();return}if(this._watermark)return;this._watermark=this._host.createWatermarkComponent(),this._watermark.init({containerApi:this._host.api});let e=document.createElement(`div`);e.className=`dv-watermark-container`,mt(e,`watermark-component`),e.appendChild(this._watermark.element),this._host.mountElement.appendChild(e)}refresh(){this._unmount(),this.update()}_unmount(){var e,t;this._watermark&&=(this._watermark.element.parentElement.remove(),(e=(t=this._watermark).dispose)==null||e.call(t),null)}dispose(){this._unmount()}},Ti=si({name:`Watermark`,serviceKey:`watermarkService`,create:e=>new wi(e),init:(e,t)=>(t.update(),new Q(Ke.any(e.onDidAdd,e.onDidRemove)(()=>{t.update()}),e.onDidViewVisibilityChangeMicroTaskQueue(()=>{t.update()})))}),Ei=class{constructor(){this._edgeGroups=new Map,this._edgeGroupDisposables=new Map,this._autoHide=new WeakMap,this._autoReveal=new WeakMap}add(e,t,n){this._edgeGroups.set(e,t),this._edgeGroupDisposables.set(e,n)}remove(e){var t;(t=this._edgeGroupDisposables.get(e))==null||t.dispose(),this._edgeGroupDisposables.delete(e),this._edgeGroups.delete(e)}get(e){return this._edgeGroups.get(e)}has(e){return this._edgeGroups.has(e)}hasAny(){return this._edgeGroups.size>0}entries(){return this._edgeGroups.entries()}includes(e){for(let t of this._edgeGroups.values())if(t===e)return!0;return!1}findPositionOf(e){for(let[t,n]of this._edgeGroups)if(n===e)return t}setAutoHide(e,t){t===void 0?this._autoHide.delete(e):this._autoHide.set(e,t)}isAutoHide(e){return this._autoHide.get(e)}setAutoReveal(e,t){this._autoReveal.set(e,t)}isAutoReveal(e){return this._autoReveal.get(e)??!1}disposeAll(){for(let e of this._edgeGroupDisposables.values())e.dispose();this._edgeGroupDisposables.clear(),this._edgeGroups.clear()}dispose(){this.disposeAll()}},Di=si({name:`EdgeGroup`,serviceKey:`edgeGroupService`,create:()=>new Ei}),Oi={activationSize:{type:`pixels`,value:10},size:{type:`pixels`,value:20}},ki={activationSize:{type:`pixels`,value:32},size:{type:`pixels`,value:20}};function Ai(e,t){return typeof e.dndEdges==`object`&&e.dndEdges!==null?e.dndEdges:t&&gr(e.dockToEdgeGroups)?ki:Oi}var ji=class{constructor(e){this._host=e;let t=(t,n)=>{let r=Ue();return r?r.viewId===e.id?n!==`center`||e.isGridEmpty():!1:n===`center`&&!e.isGridEmpty()?!1:e.dispatchUnhandledDragOver(t,n)},n=Ai(e.options,!1);this._html5Target=Wn.createDropTarget(e.element,{className:`dv-drop-target-edge`,canDisplayOverlay:t,acceptedTargetZones:[`top`,`bottom`,`left`,`right`,`center`],overlayModel:n,getOverrideTarget:()=>e.rootDropTargetOverrideTarget(),getPositionResolver:()=>e.options.dropPositionResolver}),this._pointerTarget=Gn.createDropTarget(e.element,{className:`dv-drop-target-edge`,canDisplayOverlay:t,acceptedTargetZones:[`top`,`bottom`,`left`,`right`,`center`],overlayModel:n,getOverrideTarget:()=>e.rootDropTargetOverrideTarget(),getPositionResolver:()=>e.options.dropPositionResolver}),this.onWillShowOverlay=Ke.any(this._html5Target.onWillShowOverlay,this._pointerTarget.onWillShowOverlay),this.onDrop=Ke.any(this._html5Target.onDrop,this._pointerTarget.onDrop),this.setOptions(e.options)}setOptions(e){if(`dndEdges`in e){let t=typeof e.dndEdges==`boolean`&&e.dndEdges===!1;this._html5Target.disabled=t,this._pointerTarget.disabled=t}if(`dndEdges`in e||`dockToEdgeGroups`in e){let t=Ai({dndEdges:`dndEdges`in e?e.dndEdges:this._host.options.dndEdges,dockToEdgeGroups:`dockToEdgeGroups`in e?e.dockToEdgeGroups:this._host.options.dockToEdgeGroups},this._host.hasEdgeDragReveal);this._html5Target.setOverlayModel(t),this._pointerTarget.setOverlayModel(t)}}dispose(){this._html5Target.dispose(),this._pointerTarget.dispose()}},Mi=si({name:`RootDropTarget`,serviceKey:`rootDropTargetService`,create:e=>new ji(e),init:(e,t)=>(t.setOptions(e.options),We.NONE)}),Ni={left:`createLeftHeaderActionComponent`,right:`createRightHeaderActionComponent`,prefix:`createPrefixHeaderActionComponent`},Pi=class{constructor(e){this._perGroup=new Map,this._host=e}refresh(e){if(!e?.model)return;let t=this._ensureState(e);this._refreshSlot(`left`,e,t.left),this._refreshSlot(`right`,e,t.right),this._refreshSlot(`prefix`,e,t.prefix)}refreshAll(){for(let e of this._host.groups)this.refresh(e)}disposeGroup(e){let t=this._perGroup.get(e);t&&(t.left.dispose(),t.right.dispose(),t.prefix.dispose(),this._perGroup.delete(e))}dispose(){for(let e of[...this._perGroup.keys()])this.disposeGroup(e)}_ensureState(e){let t=this._perGroup.get(e);return t||(t={left:new Ge,right:new Ge,prefix:new Ge},this._perGroup.set(e,t)),t}_refreshSlot(e,t,n){let r=this._host.options[Ni[e]];if(r){let i=r(t);n.value=i,i.init({containerApi:this._host.api,api:t.api,group:t}),t.model.attachHeaderAction(e,i.element)}else n.dispose(),t.model.attachHeaderAction(e,void 0)}},Fi=si({name:`HeaderActions`,serviceKey:`headerActionsService`,create:e=>new Pi(e),init:(e,t)=>new Q(e.onDidRemoveGroup(e=>{t.disposeGroup(e)}))}),Ii=e=>e===`load`||e===`clear`;function Li(e,t){let n=e.createElement(`div`);return n.className=t===`assertive`?`dv-live-region-assertive`:`dv-live-region`,n.setAttribute(`role`,t===`assertive`?`alert`:`status`),n.setAttribute(`aria-live`,t),n.setAttribute(`aria-atomic`,`true`),Object.assign(n.style,{position:`absolute`,width:`1px`,height:`1px`,margin:`-1px`,padding:`0`,overflow:`hidden`,clip:`rect(0 0 0 0)`,clipPath:`inset(50%)`,whiteSpace:`nowrap`,border:`0`}),n}var Ri=class extends Q{constructor(e){super(),this._regions=new Map,this._suppressDepth=0,this._locationSubs=new Map,this._host=e;let t=e.element.ownerDocument;this._mainWindow=t.defaultView??window;let n={polite:Li(t,`polite`),assertive:Li(t,`assertive`)};e.element.appendChild(n.polite),e.element.appendChild(n.assertive),this._regions.set(this._mainWindow,n),this._syncPopoutRegions(),this.addDisposables({dispose:()=>this._disposeRegions()},e.onDidChangePopouts(()=>this._syncPopoutRegions()),e.onDidAddPanel(e=>this._announce(e,`open`)),e.onDidRemovePanel(e=>this._announce(e,`close`)),e.onWillMutateLayout(e=>{Ii(e.kind)&&this._suppressDepth++}),e.onDidMutateLayout(e=>{Ii(e.kind)&&(this._suppressDepth=Math.max(0,this._suppressDepth-1))}),e.onDidMaximizedGroupChange(e=>{let t=e.group.activePanel;t&&this._announce(t,e.isMaximized?`maximize`:`restore`)}),e.onDidAddGroup(e=>this._trackLocation(e)),e.onDidRemoveGroup(e=>{var t;(t=this._locationSubs.get(e.id))==null||t.dispose(),this._locationSubs.delete(e.id)}),{dispose:()=>{this._locationSubs.forEach(e=>e.dispose()),this._locationSubs.clear()}})}_syncPopoutRegions(){let e=this._host.element.ownerDocument,t=new Set([this._mainWindow]);for(let n of this._host.getPopoutWindows()){if(n.document===e||(t.add(n),this._regions.has(n)))continue;let r=n.document,i=r.body??r.documentElement,a={polite:Li(r,`polite`),assertive:Li(r,`assertive`)};i.appendChild(a.polite),i.appendChild(a.assertive),this._regions.set(n,a)}for(let[e,n]of this._regions)t.has(e)||(n.polite.remove(),n.assertive.remove(),this._regions.delete(e))}_disposeRegions(){for(let e of this._regions.values())e.polite.remove(),e.assertive.remove();this._regions.clear()}_focusedRegions(){for(let[e,t]of this._regions)if(e!==this._mainWindow)try{if(e.document.hasFocus())return t}catch{}return this._regions.get(this._mainWindow)}_trackLocation(e){let t=e.api.location.type,n=e.api.onDidLocationChange(n=>{let r=n.location.type;if(r===t)return;t=r;let i=e.activePanel;if(!i)return;let a;switch(r){case`floating`:a=`float`;break;case`popout`:a=`popout`;break;default:a=`dock`}this._announce(i,a)});this._locationSubs.set(e.id,n)}announce(e,t=`polite`){if(this._host.options.announcements===!1||this._suppressDepth>0||!e)return;let n=this._host.options.announcer;if(n){n({message:e,politeness:t});return}let r=this._focusedRegions(),i=t===`assertive`?r.assertive:r.polite;i.textContent=``,i.textContent=e}_announce(e,t){var n;let r=(n=this._host.options).getAnnouncement?.call(n,{kind:t,panel:e});r!==null&&r!==``&&this.announce(r??this._defaultMessage(e,t))}_defaultMessage(e,t){let n=pn(this._host.options.messages),r=e.title??e.id;switch(t){case`open`:return n.panelOpened(r);case`close`:return n.panelClosed(r);case`maximize`:return n.groupMaximized(r);case`restore`:return n.groupRestored(r);case`float`:return n.groupFloated(r);case`dock`:return n.groupDocked(r);case`popout`:return n.groupPoppedOut(r)}}},zi=si({name:`LiveRegion`,serviceKey:`liveRegionService`,create:e=>new Ri(e)}),Bi=30,Vi=-10,Hi=class{constructor(e){this.host=e}dispatchWillDragPanel(e){this.host.fireWillDragPanel(e)}dispatchWillDragGroup(e){this.host.fireWillDragGroup(e)}dispatchWillDrop(e){this.host.fireWillDrop(e)}dispatchWillShowOverlay(e){this.host.fireWillShowOverlay(e)}buildGroupDragGhost(e){let t=this.host.options.createGroupDragGhostComponent;if(!t)return;let n=t(e);return n.init({group:e,api:this.host.api}),{element:n.element,offsetX:Bi,offsetY:Vi,dispose:n.dispose?()=>n.dispose?.call(n):void 0}}resolveOverlayModel(e,t){var n;return(n=this.host.options).dropOverlayModel?.call(n,{location:e,group:t})}showPreviewOverlay(e,t){let n=e.model.contentDropTarget;return n.showOverlay(t),We.from(()=>n.clearOverlay())}dispose(){}},Ui=si({name:`AdvancedDnD`,serviceKey:`advancedDnDService`,create:e=>new Hi(e)}),Wi=class{constructor(e){this._host=e}attachToGroup(e){return new Q(e.model.onDidCreateTabGroup(e=>{this._host.fireDidCreateTabGroup(e)}),e.model.onDidDestroyTabGroup(e=>{this._host.fireDidDestroyTabGroup(e)}),e.model.onDidAddPanelToTabGroup(e=>{this._host.fireDidAddPanelToTabGroup(e)}),e.model.onDidRemovePanelFromTabGroup(e=>{this._host.fireDidRemovePanelFromTabGroup(e)}),e.model.onDidTabGroupChange(e=>{this._host.fireDidTabGroupChange(e)}),e.model.onDidTabGroupCollapsedChange(e=>{this._host.fireDidTabGroupCollapsedChange(e)}))}dispose(){}},Gi=[xi,Ci,Ti,Di,Mi,Fi,zi,Ui,si({name:`TabGroupChips`,serviceKey:`tabGroupChipsService`,create:e=>new Wi(e),init:(e,t)=>{let n=new Map;return new Q(e.onDidAddGroup(e=>{n.set(e,t.attachToGroup(e))}),e.onDidRemoveGroup(e=>{var t;(t=n.get(e))==null||t.dispose(),n.delete(e)}),{dispose:()=>{for(let e of n.values())e.dispose();n.clear()}})}})],Ki=class{constructor(){this.cache=new WeakMap,this.currentFrameId=0,this.rafId=null}getPosition(e){let t=this.cache.get(e);if(t?.frameId===this.currentFrameId)return t.rect;this.scheduleFrameUpdate();let n=ft(e);return this.cache.set(e,{rect:n,frameId:this.currentFrameId}),n}invalidate(){this.currentFrameId++}scheduleFrameUpdate(){this.rafId||=requestAnimationFrame(()=>{this.currentFrameId++,this.rafId=null})}},qi=-1;function Ji(){let e=document.createElement(`div`);return e.tabIndex=-1,e}var Yi=class extends Q{constructor(e,t){super(),this.element=e,this.accessor=t,this.map={},this._disposed=!1,this._generation=0,this.positionCache=new Ki,this.addDisposables(We.from(()=>{for(let e of Object.values(this.map))e.disposable.dispose(),e.destroy.dispose(),this.cancelPendingUpdate(e);this._disposed=!0}))}updateAllPositions(){if(!this._disposed){this.positionCache.invalidate();for(let e of Object.values(this.map))e.panel.api.isVisible&&e.resize&&e.resize()}}repositionPanelOverlay(e,t=!1,n){var r;if(this._disposed)return;let i=this.map[e];i&&(i.forceVisible=t,i.clip=n,this.positionCache.invalidate(),(r=i.resize)==null||r.call(i))}cancelPendingUpdate(e){e.pendingUpdate!==void 0&&(cancelAnimationFrame(e.pendingUpdate),e.pendingUpdate=void 0)}detatch(e){if(this.map[e.api.id]){let t=this.map[e.api.id];return t.disposable.dispose(),t.destroy.dispose(),this.cancelPendingUpdate(t),delete this.map[e.api.id],!0}return!1}attach(e){let{panel:t,referenceContainer:n}=e;if(!this.map[t.api.id]){let e=Ji();e.className=`dv-render-overlay`,e.style.visibility=`hidden`,this.map[t.api.id]={panel:t,disposable:We.NONE,destroy:We.NONE,element:e,retainPreviousGeometry:!1,positioned:!1,generation:++this._generation}}let r=this.map[t.api.id];r.referenceContainer!==n&&(r.generation=++this._generation,this.cancelPendingUpdate(r),r.referenceContainer=n,r.retainPreviousGeometry=r.positioned);let i=r.generation,a=r.element,o=t.view.content.element;o.parentElement!==a&&a.appendChild(o),a.parentElement!==this.element&&this.element.appendChild(a);let s=()=>{let e=t.api.id,r=this.map[e];if(r?.generation!==i||r.pendingUpdate!==void 0)return;r.pendingUpdate=qi;let o=requestAnimationFrame(()=>{let r=this.map[e];if(r&&(r.pendingUpdate=void 0),this.isDisposed||r?.generation!==i)return;let o=r.forceVisible??!1,s=r.clip,c=this.positionCache.getPosition(n.element),l=this.positionCache.getPosition(this.element),u=c.left-l.left,d=c.top-l.top,f=c.width,p=c.height;if(r.retainPreviousGeometry&&(f===0||p===0)){!t.api.isVisible&&!o&&(a.style.visibility=`hidden`,a.style.pointerEvents=`none`);return}if(r.retainPreviousGeometry=!1,r.positioned=!0,a.style.left=`${u}px`,a.style.top=`${d}px`,a.style.width=`${f}px`,a.style.height=`${p}px`,t.api.isVisible||o?(a.style.visibility=``,a.style.pointerEvents=``):(a.style.visibility=`hidden`,a.style.pointerEvents=`none`),o?a.style.zIndex=`1000`:t.api.location.type!==`floating`&&(a.style.zIndex=``),s){let e=this.element.ownerDocument.defaultView,t=e?.scrollX??0,n=e?.scrollY??0,r=s.top+n,i=s.left+t,o=Math.max(0,r-c.top),l=Math.max(0,i-c.left),u=Math.max(0,c.left+f-(s.right+t)),d=Math.max(0,c.top+p-(s.bottom+n));a.style.clipPath=`inset(${o}px ${u}px ${d}px ${l}px)`}else a.style.clipPath=``;it(a,`dv-render-overlay-float`,t.group.api.location.type===`floating`)});r.pendingUpdate===qi&&(r.pendingUpdate=o)},c=()=>{t.api.isVisible?(this.positionCache.invalidate(),s(),this.map[t.api.id]?.retainPreviousGeometry&&(a.style.visibility=``),a.style.pointerEvents=``):(a.style.visibility=`hidden`,a.style.pointerEvents=`none`)},l=new Ge,u=()=>{t.api.location.type===`floating`?queueMicrotask(()=>{let e=this.accessor.getFloatingWindowForGroup(t.api.group);if(!e)return;let n=e.overlay.element,r=()=>{let e=Number(n.getAttribute(`aria-level`));a.style.zIndex=`calc(var(--dv-overlay-z-index, 999) + ${e*2+1})`},i=new MutationObserver(()=>{r()});l.value=We.from(()=>i.disconnect()),i.observe(n,{attributeFilter:[`aria-level`],attributes:!0}),r()}):a.style.zIndex=``},d=new Q(l,new hn(a,{onDragEnd:e=>{n.dropTarget.dnd.onDragEnd(e)},onDragEnter:e=>{n.dropTarget.dnd.onDragEnter(e)},onDragLeave:e=>{n.dropTarget.dnd.onDragLeave(e)},onDrop:e=>{n.dropTarget.dnd.onDrop(e)},onDragOver:e=>{n.dropTarget.dnd.onDragOver(e)}}),t.api.onDidVisibilityChange(()=>{c()}),t.api.onDidDimensionsChange(()=>{t.api.isVisible&&s()}),t.api.onDidLocationChange(()=>{u()}));return this.map[t.api.id].destroy=We.from(()=>{o.parentElement===a&&o.remove(),a.remove()}),u(),queueMicrotask(()=>{this.isDisposed||c()}),this.map[t.api.id].disposable.dispose(),this.map[t.api.id].disposable=d,this.map[t.api.id].resize=s,a}};function Xi(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){n(e);return}s.done?t(c):Promise.resolve(c).then(r,i)}function Zi(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var a=e.apply(t,n);function o(e){Xi(a,r,i,o,s,`next`,e)}function s(e){Xi(a,r,i,o,s,`throw`,e)}o(void 0)})}}function Qi(e){let t;try{t=new URL(e,globalThis.location.href)}catch{throw Error(`dockview: invalid popout URL: ${e}`)}if(t.protocol!==`http:`&&t.protocol!==`https:`||t.origin!==globalThis.location.origin)throw Error(`dockview: popout URL must be same-origin http(s); got: ${e}`)}var $i=class extends Q{get window(){return this._window?.value??null}constructor(e,t,n){super(),this.target=e,this.className=t,this.options=n,this._onWillClose=new $,this.onWillClose=this._onWillClose.event,this._onDidClose=new $,this.onDidClose=this._onDidClose.event,this._window=null,this.addDisposables(this._onWillClose,this._onDidClose,{dispose:()=>{this.close()}})}dimensions(){if(!this._window)return null;let e=this._window.value.screenX;return{top:this._window.value.screenY,left:e,width:this._window.value.innerWidth,height:this._window.value.innerHeight}}close(){if(this._window){var e,t;this._onWillClose.fire(),(e=(t=this.options).onWillClose)==null||e.call(t,{id:this.target,window:this._window.value}),this._window.disposable.dispose(),this._window=null,this._onDidClose.fire()}}open(){var e=this;return Zi(function*(){var t,n;if(e._window)throw Error(`instance of popout window is already open`);let r=`${e.options.url}`;Qi(r);let i=Object.entries({top:e.options.top,left:e.options.left,width:e.options.width,height:e.options.height}).map(([e,t])=>`${e}=${t}`).join(`,`),a=window.open(r,e.target,i);if(!a)return null;let o=new Q;e._window={value:a,disposable:o},o.addDisposables(We.from(()=>{a.close()}),Qe(globalThis.window,`beforeunload`,()=>{e.close()}));let s=e.createPopoutWindowContainer();return e.className&&s.classList.add(e.className),(t=(n=e.options).onDidOpen)==null||t.call(n,{id:e.target,window:a}),new Promise((t,n)=>{a.addEventListener(`unload`,()=>{}),o.addDisposables(e.onWillClose(()=>t(null))),a.addEventListener(`load`,()=>{try{let n=a.document;n.title=document.title,n.body.appendChild(s),dt(n,globalThis.document.styleSheets,{nonce:e.options.nonce}),Qe(a,`beforeunload`,()=>{e.close()}),t(s)}catch(e){n(e)}})})})()}createPopoutWindowContainer(){let e=document.createElement(`div`);return e.classList.add(`dv-popout-window`),e.id=`dv-popout-window`,e.style.position=`absolute`,e.style.width=`100%`,e.style.height=`100%`,e.style.top=`0px`,e.style.left=`0px`,e}},ea=class extends Q{constructor(e){super(),this.accessor=e,this.init()}init(){let e=new Set,t=new Set;this.addDisposables(this.accessor.onDidAddPanel(t=>{if(e.has(t.api.id))throw Error(`dockview: Invalid event sequence. [onDidAddPanel] called for panel ${t.api.id} but panel already exists`);e.add(t.api.id)}),this.accessor.onDidRemovePanel(t=>{if(e.has(t.api.id))e.delete(t.api.id);else throw Error(`dockview: Invalid event sequence. [onDidRemovePanel] called for panel ${t.api.id} but panel does not exists`)}),this.accessor.onDidAddGroup(e=>{if(t.has(e.api.id))throw Error(`dockview: Invalid event sequence. [onDidAddGroup] called for group ${e.api.id} but group already exists`);t.add(e.api.id)}),this.accessor.onDidRemoveGroup(e=>{if(t.has(e.api.id))t.delete(e.api.id);else throw Error(`dockview: Invalid event sequence. [onDidRemoveGroup] called for group ${e.api.id} but group does not exists`)}))}};function ta(e){if(!e.matchMedia)return!1;let t=e.matchMedia(`(pointer: coarse)`).matches,n=e.matchMedia(`(pointer: fine)`).matches;return t&&!n}function na(e){let t=e.window??window,n=e.capture??!1,r=e.escape??!0,i=e.keys??[],a=e.outsidePointerDown??!0,o=e.pointerDownGraceMs??0,s=e.now??Date.now,c=s(),l=new Q,u=t=>{if(e.isInside)return e.isInside(t);let n=t.target;return n instanceof Node&&(e.elements?.call(e)??[]).some(e=>e.contains(n))};if((r||i.length>0)&&l.addDisposables(Qe(t,`keydown`,t=>{(r&&t.key===`Escape`||i.includes(t.key))&&e.onDismiss()},n)),(a||e.onInsidePointerDown)&&l.addDisposables(Qe(t,`pointerdown`,t=>{if(u(t)){var n;(n=e.onInsidePointerDown)==null||n.call(e,t);return}!a||s()-c<o||e.onDismiss()},n)),e.resize&&l.addDisposables(Qe(t,`resize`,()=>{ta(t)||e.onDismiss()})),e.focusOut){let r=t=>e.isFocusInside?e.isFocusInside(t):(e.elements?.call(e)??[]).some(e=>e.contains(t)),i=t=>{let n=t.target;n instanceof Element&&!r(n)&&e.onDismiss()};t.addEventListener(`focusin`,i,n),l.addDisposables({dispose:()=>t.removeEventListener(`focusin`,i,n)})}return l}var ra=class extends Q{constructor(e,t=globalThis.window){super(),this._active=null,this._activeDisposable=new Ge,this._root=e,this._window=t,this._element=t.document.createElement(`div`),this._element.className=`dv-popover-anchor`,this._element.style.position=`relative`,this._root.prepend(this._element),this.addDisposables(We.from(()=>{this.close()}),this._activeDisposable)}updateRoot(e){e.prepend(this._element),this._root=e}openPopover(e,t){this.close();let n=this._window.document.createElement(`div`);n.style.position=`absolute`,n.style.zIndex=t.zIndex??`var(--dv-overlay-z-index)`,n.appendChild(e);let r=this._element.getBoundingClientRect(),i=r.left,a=r.top;n.style.top=`${t.y-a}px`,n.style.left=`${t.x-i}px`,this._element.appendChild(n),this._active=n,this._activeDisposable.value=na({window:this._window,onDismiss:()=>this.close(),elements:()=>this._active?[this._active]:[],keys:[`Enter`],pointerDownGraceMs:200,resize:!0}),this._window.requestAnimationFrame(()=>{Ct(n,this._root)})}close(){this._active&&=(this._active.remove(),this._activeDisposable.dispose(),null)}},ia=class extends Q{get disabled(){return this._disabled}set disabled(e){this.disabled!==e&&(this._disabled=e,e&&this._clearNow())}_cancelPendingClear(){this._pendingClear!==void 0&&(clearTimeout(this._pendingClear),this._pendingClear=void 0)}_clearNow(){this._cancelPendingClear(),this._model&&this._model.root.remove(),this._model=void 0}get model(){if(!this.disabled)return{clear:()=>{this._clearNow()},scheduleClear:()=>{this._pendingClear!==void 0||!this._model||(this._pendingClear=setTimeout(()=>{this._pendingClear=void 0,this._clearNow()},0))},exists:()=>!!this._model,getElements:(e,t)=>{this._cancelPendingClear();let n=this._outline!==t;if(this._outline=t,this._model)return this._model.changed=n,this._model;let r=this.createContainer(),i=this.createAnchor();if(this._model={root:r,overlay:i,changed:n},r.appendChild(i),this.element.appendChild(r),e?.target instanceof HTMLElement){let t=e.target.getBoundingClientRect(),n=this.element.getBoundingClientRect();i.style.left=`${t.left-n.left}px`,i.style.top=`${t.top-n.top}px`}return this._model}}}constructor(e,t){super(),this.element=e,this._disabled=!1,this._disabled=t.disabled,this.addDisposables(We.from(()=>{var e;(e=this.model)==null||e.clear()}))}createContainer(){let e=document.createElement(`div`);return e.className=`dv-drop-target-container`,e}createAnchor(){let e=document.createElement(`div`);return e.className=`dv-drop-target-anchor`,e.style.visibility=`hidden`,e}},aa=class{get _effectiveBaseCollapsed(){return this._measuredTabSize??this._baseCollapsedSize}get minimumSize(){return this._isCollapsed?this.collapsedSize:this._baseMinimumSize===void 0?this._effectiveBaseCollapsed+50+this._gapAdd:this._baseMinimumSize+this._gapAdd}get maximumSize(){return this._isCollapsed?this.collapsedSize:this._expandedMaximumSize}get element(){return this._group.element}get isCollapsed(){return this._isCollapsed}get lastExpandedSize(){return this._lastExpandedSize}get collapsedSize(){return this._effectiveBaseCollapsed+this._gapAdd}get configuredMinimumSize(){return this._baseMinimumSize}get configuredMaximumSize(){return this._expandedMaximumSize}get configuredCollapsedSize(){return this._baseCollapsedSize}constructor(e,t,n,r=0){this._onDidChange=new $,this.onDidChange=this._onDidChange.event,this.snap=!1,this.priority=`low`,this._isCollapsed=!1,this._tabSizeDisposables=new Q,this._group=t,this._orientation=n,t.element.classList.add(`dv-edge-group`),t.element.dataset.testid=`dv-edge-group-${e.id}`,this._baseCollapsedSize=e.collapsedSize??35,this._baseMinimumSize=e.minimumSize,this._gapAdd=r,this._expandedMaximumSize=e.maximumSize??1/0,this._lastExpandedSize=e.initialSize??200,e.collapsed&&(this._isCollapsed=!0,t.element.classList.add(`dv-edge-collapsed`)),this._observeTabStrip()}_observeTabStrip(){let e=this._group.element.querySelector(`.dv-tabs-and-actions-container`);e&&this._tabSizeDisposables.addDisposables(tt(e,()=>{this._applyMeasuredTabSize(this._orientation===`vertical`?e.offsetHeight:e.offsetWidth)}))}_applyMeasuredTabSize(e){e<=0||e===this._measuredTabSize||(this._measuredTabSize=e,this._isCollapsed&&this._onDidChange.fire({size:this.collapsedSize}))}layout(e,t){this._isCollapsed||(this._lastExpandedSize=e),this._orientation===`horizontal`?this._group.layout(e,t):this._group.layout(t,e)}setCollapsed(e){this._isCollapsed!==e&&(this._isCollapsed=e,this._group.element.classList.toggle(`dv-edge-collapsed`,e))}setVisible(e){}restoreExpandedSize(e){this._lastExpandedSize=e}updateSizing(e,t,n){this._baseCollapsedSize=e,this._baseMinimumSize=t,this._gapAdd=n}dispose(){this._tabSizeDisposables.dispose(),this._onDidChange.dispose()}},oa=class{get element(){return this._dockviewElement}constructor(e,t){this._dockviewElement=e,this._layoutDockview=t,this.priority=`high`,this.minimumSize=100,this.maximumSize=1/0,this._onDidChange=new $,this.onDidChange=this._onDidChange.event}layout(e,t){this._layoutDockview(t,e)}setVisible(e){}dispose(){this._onDidChange.dispose()}},sa=class{get element(){return this._element}constructor(e,t=0){this._onDidChange=new $,this.onDidChange=this._onDidChange.event,this.minimumSize=100,this.maximumSize=1/0,this.priority=`high`,this._element=document.createElement(`div`),this._element.className=`dv-shell-middle-column`,this._element.style.height=`100%`,this._element.style.width=`100%`,this._splitview=new Rt(this._element,{orientation:`VERTICAL`,proportionalLayout:!1,margin:t}),this._centerIndex=0,this._splitview.addView(e,{type:`distribute`},0)}addTopView(e,t){this._splitview.addView(e,t,0),this._topIndex=0,this._centerIndex+=1,this._bottomIndex!==void 0&&(this._bottomIndex+=1)}addBottomView(e,t){let n=this._splitview.length;this._splitview.addView(e,t,n),this._bottomIndex=n}removeView(e){let t=e===`top`?this._topIndex:this._bottomIndex;t!==void 0&&(this._splitview.removeView(t),e===`top`?(this._topIndex=void 0,--this._centerIndex,this._bottomIndex!==void 0&&--this._bottomIndex):this._bottomIndex=void 0)}layout(e,t){this._splitview.layout(t,e)}setVisible(e){}setViewVisible(e,t){let n=e===`top`?this._topIndex:this._bottomIndex;n!==void 0&&this._splitview.setViewVisible(n,t)}isViewVisible(e){let t=e===`top`?this._topIndex:this._bottomIndex;return t!==void 0&&this._splitview.isViewVisible(t)}getViewSize(e){let t=e===`top`?this._topIndex:this._bottomIndex;return t===void 0?0:this._splitview.getViewSize(t)}getViewCachedVisibleSize(e){let t=e===`top`?this._topIndex:this._bottomIndex;if(t!==void 0)return this._splitview.getViewCachedVisibleSize(t)}resizeView(e,t){let n=e===`top`?this._topIndex:this._bottomIndex;n!==void 0&&this._splitview.resizeView(n,t)}updateMargin(e){this._splitview.margin=e}dispose(){this._onDidChange.dispose(),this._splitview.dispose()}},ca=class{constructor(e,t,n,r=0,i=35){this._disposables=new Q,this._viewConfigs=new Map,this._currentWidth=0,this._currentHeight=0,this._gap=r,this._defaultCollapsedSize=i,this._shellElement=document.createElement(`div`),this._shellElement.className=`dv-shell`,this._shellElement.style.height=`100%`,this._shellElement.style.width=`100%`,this._shellElement.style.position=`relative`,e.appendChild(this._shellElement);let a=new oa(t,n);this._middleColumn=new sa(a,r),this._outerSplitview=new Rt(this._shellElement,{orientation:`HORIZONTAL`,proportionalLayout:!1,margin:r}),this._middleIndex=0,this._outerSplitview.addView(this._middleColumn,{type:`distribute`},0),this._disposables.addDisposables(tt(this._shellElement,e=>{if(!this._shellElement.offsetParent||!pt(this._shellElement))return;let t=Math.round(e.contentRect.width),n=Math.round(e.contentRect.height);(t!==this._currentWidth||n!==this._currentHeight)&&(this._currentWidth=t,this._currentHeight=n,this.layout(t,n))}),this._outerSplitview,this._middleColumn,a)}get element(){return this._shellElement}addEdgeView(e,t,n){if(this.hasEdgeGroup(e))throw Error(`dockview: edge group already registered at position '${e}'`);this._viewConfigs.set(e,t);let r=1+ +!!this._viewConfigs.has(`left`)+ +!!this._viewConfigs.has(`right`),i=1+ +!!this._viewConfigs.has(`top`)+ +!!this._viewConfigs.has(`bottom`),a=r>1?this._gap*(r-1)/r:0,o=i>1?this._gap*(i-1)/i:0,s=e===`left`||e===`right`,c=s?a:o,l=s?`horizontal`:`vertical`,u=new aa(ln({collapsedSize:this._defaultCollapsedSize},t),n,l,c),d=u.isCollapsed?u.collapsedSize:u.lastExpandedSize;switch(e){case`left`:this._outerSplitview.addView(u,d,0),this._leftIndex=0,this._middleIndex+=1,this._rightIndex!==void 0&&(this._rightIndex+=1),this._leftView=u;break;case`right`:{let e=this._outerSplitview.length;this._outerSplitview.addView(u,d,e),this._rightIndex=e,this._rightView=u}break;case`top`:this._middleColumn.addTopView(u,d),this._topView=u;break;case`bottom`:this._middleColumn.addBottomView(u,d),this._bottomView=u}return this._disposables.addDisposables(u),this.updateTheme(this._gap,this._defaultCollapsedSize),u}layout(e,t){this._outerSplitview.layout(e,t)}updateTheme(e,t){this._gap=e,this._defaultCollapsedSize=t;let n=1+ +!!this._viewConfigs.has(`left`)+ +!!this._viewConfigs.has(`right`),r=1+ +!!this._viewConfigs.has(`top`)+ +!!this._viewConfigs.has(`bottom`),i=n>1?e*(n-1)/n:0,a=r>1?e*(r-1)/r:0;this._outerSplitview.margin=e,this._middleColumn.updateMargin(e);let o=(e,n,r)=>{let i=n.collapsedSize??t;e.updateSizing(i,n.minimumSize,r)},s=this._viewConfigs.get(`top`);this._topView&&s&&o(this._topView,s,a);let c=this._viewConfigs.get(`bottom`);this._bottomView&&c&&o(this._bottomView,c,a);let l=this._viewConfigs.get(`left`);this._leftView&&l&&o(this._leftView,l,i);let u=this._viewConfigs.get(`right`);this._rightView&&u&&o(this._rightView,u,i),this._leftView?.isCollapsed&&this._leftIndex!==void 0&&this._outerSplitview.resizeView(this._leftIndex,this._leftView.collapsedSize),this._rightView?.isCollapsed&&this._rightIndex!==void 0&&this._outerSplitview.resizeView(this._rightIndex,this._rightView.collapsedSize),this._topView?.isCollapsed&&this._middleColumn.resizeView(`top`,this._topView.collapsedSize),this._bottomView?.isCollapsed&&this._middleColumn.resizeView(`bottom`,this._bottomView.collapsedSize),this._currentWidth>0&&this._currentHeight>0&&this.layout(this._currentWidth,this._currentHeight)}removeEdgeView(e){let t=this._getView(e);if(t){switch(e){case`left`:this._outerSplitview.removeView(this._leftIndex),this._leftIndex=void 0,this._leftView=void 0,--this._middleIndex,this._rightIndex!==void 0&&--this._rightIndex;break;case`right`:this._outerSplitview.removeView(this._rightIndex),this._rightIndex=void 0,this._rightView=void 0;break;case`top`:this._middleColumn.removeView(`top`),this._topView=void 0;break;case`bottom`:this._middleColumn.removeView(`bottom`),this._bottomView=void 0}this._disposables.removeDisposable(t),t.dispose(),this._viewConfigs.delete(e),this.updateTheme(this._gap,this._defaultCollapsedSize)}}hasEdgeGroup(e){switch(e){case`top`:return this._topView!==void 0;case`bottom`:return this._bottomView!==void 0;case`left`:return this._leftView!==void 0;case`right`:return this._rightView!==void 0}}setEdgeGroupVisible(e,t){switch(e){case`left`:this._leftIndex!==void 0&&this._outerSplitview.setViewVisible(this._leftIndex,t);break;case`right`:this._rightIndex!==void 0&&this._outerSplitview.setViewVisible(this._rightIndex,t);break;case`top`:case`bottom`:this._middleColumn.setViewVisible(e,t)}}isEdgeGroupVisible(e){switch(e){case`left`:return this._leftIndex!==void 0&&this._outerSplitview.isViewVisible(this._leftIndex);case`right`:return this._rightIndex!==void 0&&this._outerSplitview.isViewVisible(this._rightIndex);case`top`:case`bottom`:return this._middleColumn.isViewVisible(e)}}setEdgeGroupCollapsed(e,t){let n=this._getView(e);if(!n)return;n.setCollapsed(t);let r=t?n.collapsedSize:n.lastExpandedSize;switch(e){case`left`:this._leftIndex!==void 0&&this._outerSplitview.resizeView(this._leftIndex,r);break;case`right`:this._rightIndex!==void 0&&this._outerSplitview.resizeView(this._rightIndex,r);break;case`top`:case`bottom`:this._middleColumn.resizeView(e,r)}}isEdgeGroupCollapsed(e){return this._getView(e)?.isCollapsed??!1}getEdgeGroupExpandedSize(e){return this._getView(e)?.lastExpandedSize??0}_getView(e){switch(e){case`top`:return this._topView;case`bottom`:return this._bottomView;case`left`:return this._leftView;case`right`:return this._rightView}}toJSON(){let e={},t=e=>({minimumSize:e.configuredMinimumSize,maximumSize:Number.isFinite(e.configuredMaximumSize)?e.configuredMaximumSize:void 0,collapsedSize:e.configuredCollapsedSize}),n=(e,t,n,r)=>e.isCollapsed?e.lastExpandedSize:t?n:r??e.lastExpandedSize;if(this._leftView&&this._leftIndex!==void 0){let r=this._outerSplitview.isViewVisible(this._leftIndex);e.left=ln({size:n(this._leftView,r,this._outerSplitview.getViewSize(this._leftIndex),this._outerSplitview.getViewCachedVisibleSize(this._leftIndex)),visible:r,collapsed:this._leftView.isCollapsed||void 0},t(this._leftView))}if(this._rightView&&this._rightIndex!==void 0){let r=this._outerSplitview.isViewVisible(this._rightIndex);e.right=ln({size:n(this._rightView,r,this._outerSplitview.getViewSize(this._rightIndex),this._outerSplitview.getViewCachedVisibleSize(this._rightIndex)),visible:r,collapsed:this._rightView.isCollapsed||void 0},t(this._rightView))}if(this._topView){let r=this._middleColumn.isViewVisible(`top`);e.top=ln({size:n(this._topView,r,this._middleColumn.getViewSize(`top`),this._middleColumn.getViewCachedVisibleSize(`top`)),visible:r,collapsed:this._topView.isCollapsed||void 0},t(this._topView))}if(this._bottomView){let r=this._middleColumn.isViewVisible(`bottom`);e.bottom=ln({size:n(this._bottomView,r,this._middleColumn.getViewSize(`bottom`),this._middleColumn.getViewCachedVisibleSize(`bottom`)),visible:r,collapsed:this._bottomView.isCollapsed||void 0},t(this._bottomView))}return e}fromJSON(e){if(e.left&&this._leftIndex!==void 0){var t,n;(t=this._leftView)==null||t.restoreExpandedSize(e.left.size),(n=this._leftView)==null||n.setCollapsed(e.left.collapsed??!1),this._outerSplitview.resizeView(this._leftIndex,e.left.collapsed?this._leftView?.collapsedSize??e.left.size:e.left.size),e.left.visible||this._outerSplitview.setViewVisible(this._leftIndex,!1)}if(e.right&&this._rightIndex!==void 0){var r,i;(r=this._rightView)==null||r.restoreExpandedSize(e.right.size),(i=this._rightView)==null||i.setCollapsed(e.right.collapsed??!1),this._outerSplitview.resizeView(this._rightIndex,e.right.collapsed?this._rightView?.collapsedSize??e.right.size:e.right.size),e.right.visible||this._outerSplitview.setViewVisible(this._rightIndex,!1)}if(e.top){var a,o;(a=this._topView)==null||a.restoreExpandedSize(e.top.size),(o=this._topView)==null||o.setCollapsed(e.top.collapsed??!1),this._middleColumn.resizeView(`top`,e.top.collapsed?this._topView?.collapsedSize??e.top.size:e.top.size),e.top.visible||this._middleColumn.setViewVisible(`top`,!1)}if(e.bottom){var s,c;(s=this._bottomView)==null||s.restoreExpandedSize(e.bottom.size),(c=this._bottomView)==null||c.setCollapsed(e.bottom.collapsed??!1),this._middleColumn.resizeView(`bottom`,e.bottom.collapsed?this._bottomView?.collapsedSize??e.bottom.size:e.bottom.size),e.bottom.visible||this._middleColumn.setViewVisible(`bottom`,!1)}}dispose(){this._disposables.dispose(),this._shellElement.remove()}};function la(e){return new Cr(e.tabGroupColors??Sr,e.tabGroupAccent!==`off`)}function ua(e){let t=e.from.activePanel;[...e.from.panels].map(t=>{let n=e.from.model.removePanel(t);return e.from.model.renderContainer.detatch(t),n}).forEach(n=>{e.to.model.openPanel(n,{skipSetActive:t!==n,skipSetGroupActive:!0})})}var da=()=>({dispose:()=>{}}),fa=da,pa=class extends nn{fireDidCreateTabGroup(e){this._onDidCreateTabGroup.fire(e)}fireDidDestroyTabGroup(e){this._onDidDestroyTabGroup.fire(e)}fireDidAddPanelToTabGroup(e){this._onDidAddPanelToTabGroup.fire(e)}fireDidRemovePanelFromTabGroup(e){this._onDidRemovePanelFromTabGroup.fire(e)}fireDidTabGroupChange(e){this._onDidTabGroupChange.fire(e)}fireDidTabGroupCollapsedChange(e){this._onDidTabGroupCollapsedChange.fire(e)}get orientation(){return this.gridview.orientation}get totalPanels(){return this.panels.length}get panels(){return this.groups.flatMap(e=>e.panels)}get options(){return this._options}get tabGroupColorPalette(){return this._tabGroupColorPalette}get activePanel(){let e=this.activeGroup;if(e)return e.activePanel}get renderer(){return this.options.defaultRenderer??`onlyWhenVisible`}get defaultHeaderPosition(){return this.options.defaultHeaderPosition??`top`}get api(){return this._api}get floatingGroups(){var e;return((e=this._moduleRegistry)==null||(e=e.services.floatingGroupService)==null?void 0:e.floatingGroups)??[]}getFloatingWindowForGroup(e){return this._floatingGroupService?.findByGroup(e)}_gatherFloatingGroupBoxes(e){return this.getFloatingGroupSnapshots(e).map(e=>e.box)}getFloatingContainer(){return this._floatingOverlayHost??this.gridview.element}getFloatingGroupSnapshots(e){let t=this.getFloatingContainer().getBoundingClientRect();return this.floatingGroups.filter(t=>t.group!==e).map(e=>{let n=e.overlay.element.getBoundingClientRect();return{group:e.group,box:{left:n.left-t.left,top:n.top-t.top,width:n.width,height:n.height}}})}mergeFloatInto(e,t,n){e===t||!this.getPanel(t.id)||this.moveGroupOrPanel({from:{groupId:e.id},to:{group:t,position:n}})}getGridSplitterRects(){let e=this.getFloatingContainer().getBoundingClientRect(),t=[];return this.gridview.element.querySelectorAll(`.dv-sash`).forEach(n=>{let r=n.getBoundingClientRect();t.push({left:r.left-e.left,top:r.top-e.top,width:r.width,height:r.height})}),t}get _smartGuidesService(){return this._moduleRegistry.services.smartGuidesService}get smartGuidesEnabled(){return this._smartGuidesService?.enabled??!1}setSmartGuidesEnabled(e){var t;(t=fi(this._smartGuidesService,`SmartGuides`,`api.setSmartGuidesEnabled`))==null||t.setEnabled(e)}updateSmartGuidesOptions(e){var t;(t=fi(this._smartGuidesService,`SmartGuides`,`api.updateSmartGuidesOptions`))==null||t.updateOptions(e)}get onDidSnapFloat(){return this._smartGuidesService?.onDidSnapFloat??da}get onDidSnapTogether(){return this._smartGuidesService?.onDidSnapTogether??da}_buildFloatingDragTransform(e,t){let n=this.options.transformFloatingGroupDrag,r=!t;if(!(!n&&!(r&&this._smartGuidesService)))return t=>{let i=n?.({group:e,proposed:t.proposed,container:t.container,others:t.others,modifiers:t.modifiers}),a=i?ln(ln({},t.proposed),i):t.proposed;return(r?this._smartGuidesService?.transformFloatingGroupDrag({group:e,proposed:a,container:t.container,others:t.others,modifiers:t.modifiers}):void 0)??i??void 0}}get _floatingGroupService(){return this._moduleRegistry.services.floatingGroupService}get _popoutWindowService(){return this._moduleRegistry.services.popoutWindowService}get _watermarkService(){return this._moduleRegistry.services.watermarkService}get _edgeGroupService(){return this._moduleRegistry.services.edgeGroupService}get _rootDropTargetService(){return this._moduleRegistry.services.rootDropTargetService}get _advancedDnDService(){return this._moduleRegistry.services.advancedDnDService}get _dndCompassService(){return this._moduleRegistry.services.dndCompassService}canDropOnGroup(e,t,n){return e.model.canDisplayContentOverlay(n,t)}getDropOverlayElement(e){let t=e.element.querySelector(`.dv-content-container`);if(t)return this.options.theme?.dndPanelOverlay===`group`?t.parentElement??t:t}getTabsListElement(e){return e.model.header.hidden?void 0:e.model.tabsListElement}relayoutGroup(e){e.relayout()}setForcedOverflow(e,t){e.model.header.setForcedOverflow(t)}getLayoutElement(){return this.gridview.element}getDropPositionResolver(){if(this.options.dropPositionResolver)return this.options.dropPositionResolver;let e=this._dndCompassService?.resolver,t=this._moduleRegistry.services.autoEdgeGroupService;return e&&t?{resolve:n=>t.resolveEdge(n)??e.resolve(n)}:e??t?.resolver}dockToLayoutEdge(e,t){let n=new Hr({nativeEvent:e,position:t,panel:void 0,api:this._api,group:void 0,getData:Ue,kind:`edge`});if(this._onWillDrop.fire(n),n.defaultPrevented)return;let r=Ue();r?this.moveGroupOrPanel({from:{groupId:r.groupId,panelId:r.panelId??void 0},to:{group:this.orthogonalize(t),position:`center`}}):this._onDidDrop.fire(new Vr({nativeEvent:e,position:t,panel:void 0,api:this._api,group:void 0,getData:Ue}))}get headerActionsService(){return this._moduleRegistry.services.headerActionsService}get _layoutHistoryService(){return this._moduleRegistry.services.layoutHistoryService}undo(){var e;(e=fi(this._layoutHistoryService,`LayoutHistory`,`api.undo`))==null||e.undo()}redo(){var e;(e=fi(this._layoutHistoryService,`LayoutHistory`,`api.redo`))==null||e.redo()}get canUndo(){return this._layoutHistoryService?.canUndo??!1}get canRedo(){return this._layoutHistoryService?.canRedo??!1}clearHistory(){var e;(e=this._layoutHistoryService)==null||e.clear()}get onDidChangeHistory(){return this._layoutHistoryService?.onDidChangeHistory??fa}get hasEdgeDragReveal(){return!!this._moduleRegistry.services.autoEdgeGroupService}isGridEmpty(){return this.gridview.length===0}rootDropTargetOverrideTarget(){return this.rootDropTargetContainer?.model}dispatchUnhandledDragOver(e,t){let n=new _r(e,`edge`,t,Ue);return this._onUnhandledDragOver.fire(n),n.isAccepted}fireWillDragPanel(e){this._onWillDragPanel.fire(e)}fireWillDragGroup(e){this._onWillDragGroup.fire(e)}fireWillDrop(e){this._onWillDrop.fire(e)}fireWillShowOverlay(e){this._onWillShowOverlay.fire(e)}buildGroupDragGhost(e){return this._advancedDnDService?.buildGroupDragGhost(e)}resolveDropOverlayModel(e,t){return this._advancedDnDService?.resolveOverlayModel(e,t)}get rootElement(){return this._shellManager?.element??this.element}ownsElement(e){if(this.rootElement.contains(e))return!0;let t=this.rootElement.ownerDocument,n=e.ownerDocument;return!n||n===t?!1:this.getPopoutWindows().some(e=>e.document===n)}adjacentGroup(e,t){if(e.api.location.type!==`grid`)return;let n=Gt(e.element);return(t?this.gridview.previous(n):this.gridview.next(n))?.view}adjacentGroupInDirection(e,t){if(e.api.location.type!==`grid`)return;let n=e.element.getBoundingClientRect(),r=n.left+n.width/2,i=n.top+n.height/2,a,o=1/0;for(let n of this.groups){if(n===e||n.api.location.type!==`grid`)continue;let s=n.element.getBoundingClientRect(),c=s.left+s.width/2-r,l=s.top+s.height/2-i,u;switch(t){case`left`:u=c<0&&Math.abs(c)>=Math.abs(l);break;case`right`:u=c>0&&Math.abs(c)>=Math.abs(l);break;case`up`:u=l<0&&Math.abs(l)>=Math.abs(c);break;default:u=l>0&&Math.abs(l)>=Math.abs(c)}if(!u)continue;let d=c*c+l*l;d<o&&(o=d,a=n)}return a}showDropPreview(e,t){return this._advancedDnDService?.showPreviewOverlay(e,t)??We.NONE}announce(e){var t;(t=this._moduleRegistry.services.liveRegionService)==null||t.announce(e)}dockPanel(e,t,n){this.moveGroupOrPanel({from:{groupId:e.group.id,panelId:e.id},to:{group:t,position:n}})}floatPanel(e){this.addFloatingGroup(e)}get contextMenuService(){return this._moduleRegistry.services.contextMenuService}get pinnedTabsService(){return this._moduleRegistry.services.pinnedTabsService}get advancedOverflowService(){return this._moduleRegistry.services.advancedOverflowService}setPanelPinned(e,t){e.isPinned!==t&&this.options.pinnedTabs?.enabled&&this.pinnedTabsService&&(e.setPinned(t),this._onDidPanelPinnedChange.fire({panel:e,isPinned:t}))}get mountElement(){return this.gridview.element}hasVisibleGridGroup(){return this.groups.some(e=>e.api.location.type===`grid`&&e.api.isVisible)}fireLayoutChange(){this._bufferOnDidLayoutChange.fire()}get popoutRestorationPromise(){return this._popoutWindowService?.restorationPromise??Promise.resolve()}constructor(e,t){super(e,{proportionalLayout:!0,orientation:`HORIZONTAL`,styles:t.hideBorders?{separatorBorder:`transparent`}:void 0,disableAutoResizing:t.disableAutoResizing,locked:t.locked,margin:t.theme?.gap??0,className:t.className}),this.nextGroupId=Mt(),this._deserializer=new ni(this),this._moduleRegistry=new pi,this._onWillDragPanel=new $,this.onWillDragPanel=this._onWillDragPanel.event,this._onWillDragGroup=new $,this.onWillDragGroup=this._onWillDragGroup.event,this._onDidDrop=new $,this.onDidDrop=this._onDidDrop.event,this._onWillDrop=new $,this.onWillDrop=this._onWillDrop.event,this._mutationDepth=0,this._pendingLocationChanges=new Map,this._origin=`user`,this._originDepth=0,this._onWillMutateLayout=new $,this.onWillMutateLayout=this._onWillMutateLayout.event,this._onDidMutateLayout=new $,this.onDidMutateLayout=this._onDidMutateLayout.event,this._onWillShowOverlay=new $,this.onWillShowOverlay=this._onWillShowOverlay.event,this._onUnhandledDragOver=new $,this.onUnhandledDragOver=this._onUnhandledDragOver.event,this._onDidRemovePanel=new $,this.onDidRemovePanel=this._onDidRemovePanel.event,this._onDidAddPanel=new $,this.onDidAddPanel=this._onDidAddPanel.event,this._onDidPopoutGroupSizeChange=new $,this.onDidPopoutGroupSizeChange=this._onDidPopoutGroupSizeChange.event,this._onDidPopoutGroupPositionChange=new $,this.onDidPopoutGroupPositionChange=this._onDidPopoutGroupPositionChange.event,this._onDidAddPopoutGroup=new $,this.onDidAddPopoutGroup=this._onDidAddPopoutGroup.event,this._onDidRemovePopoutGroup=new $,this.onDidRemovePopoutGroup=this._onDidRemovePopoutGroup.event,this._onDidChangePopouts=new $,this.onDidChangePopouts=this._onDidChangePopouts.event,this._onDidOpenPopoutWindowFail=new $,this.onDidOpenPopoutWindowFail=this._onDidOpenPopoutWindowFail.event,this._onDidStartFloatingGroupDrag=new $,this.onDidStartFloatingGroupDrag=this._onDidStartFloatingGroupDrag.event,this._onDidEndFloatingGroupDrag=new $,this.onDidEndFloatingGroupDrag=this._onDidEndFloatingGroupDrag.event,this._onDidLayoutFromJSON=new $,this.onDidLayoutFromJSON=this._onDidLayoutFromJSON.event,this._onDidActivePanelChange=new $({replay:!0}),this.onDidActivePanelChange=this._onDidActivePanelChange.event,this._onDidPanelPinnedChange=new $,this.onDidPanelPinnedChange=this._onDidPanelPinnedChange.event,this._onDidMovePanel=new $,this.onDidMovePanel=this._onDidMovePanel.event,this._onDidCreateTabGroup=new $,this.onDidCreateTabGroup=this._onDidCreateTabGroup.event,this._onDidDestroyTabGroup=new $,this.onDidDestroyTabGroup=this._onDidDestroyTabGroup.event,this._onDidAddPanelToTabGroup=new $,this.onDidAddPanelToTabGroup=this._onDidAddPanelToTabGroup.event,this._onDidRemovePanelFromTabGroup=new $,this.onDidRemovePanelFromTabGroup=this._onDidRemovePanelFromTabGroup.event,this._onDidTabGroupChange=new $,this.onDidTabGroupChange=this._onDidTabGroupChange.event,this._onDidTabGroupCollapsedChange=new $,this.onDidTabGroupCollapsedChange=this._onDidTabGroupCollapsedChange.event,this._onDidMaximizedGroupChange=new $,this.onDidMaximizedGroupChange=this._onDidMaximizedGroupChange.event,this._inShellLayout=!1,this._onDidRemoveGroup=new $,this.onDidRemoveGroup=this._onDidRemoveGroup.event,this._onDidEdgeGroupAutoHideChange=new $,this.onDidEdgeGroupAutoHideChange=this._onDidEdgeGroupAutoHideChange.event,this._onDidAddGroup=new $,this.onDidAddGroup=this._onDidAddGroup.event,this._onDidOptionsChange=new $,this.onDidOptionsChange=this._onDidOptionsChange.event,this._onDidActiveGroupChange=new $,this.onDidActiveGroupChange=this._onDidActiveGroupChange.event,this._peekingGroups=new Set,this._moving=!1,this._options=t,this._tabGroupColorPalette=la(t);let n=t.modules??[...Gi,...hi()];for(let e of n)this._moduleRegistry.register(e);this._moduleRegistry.initialize(this),this.reportMissingOptionModules(t);let r=this._popoutWindowService;r&&this.addDisposables(r.onDidRemove(e=>{this._onDidRemovePopoutGroup.fire({id:e.popoutGroup.id,group:e.popoutGroup,window:e.getWindow()})})),this.popupService=new ra(this.element),this._api=new mn(this),this.disableResizing=!0,this.element.remove(),this._shellManager=new ca(e,this.element,(e,t)=>this._layoutFromShell(e,t),t.theme?.gap??0,t.theme?.edgeGroupCollapsedSize),this.popupService.updateRoot(this._shellManager.element),this._shellThemeClassnames=new vt(this._shellManager.element),this.rootDropTargetContainer=new ia(this._shellManager.element,{disabled:!0}),this.floatingDropTargetContainer=new ia(this._shellManager.element,{disabled:!1}),this.overlayRenderContainer=new Yi(this._shellManager.element,this),this._floatingOverlayHost=document.createElement(`div`),this._floatingOverlayHost.className=`dv-floating-overlay-host`,this._shellManager.element.appendChild(this._floatingOverlayHost),it(this.gridview.element,`dv-dockview`,!0),it(this.element,`dv-debug`,!!t.debug),this.updateTheme(),t.debug&&this.addDisposables(new ea(this)),this.addDisposables(We.from(()=>this._pendingLocationChanges.clear()),this.rootDropTargetContainer,this.floatingDropTargetContainer,Qe(this._shellManager.element,`dragend`,()=>{var e,t;(e=this.rootDropTargetContainer.model)==null||e.clear(),(t=this.floatingDropTargetContainer.model)==null||t.clear()},!0),this.overlayRenderContainer,this._onWillDragPanel,this._onWillDragGroup,this._onWillShowOverlay,this._onDidActivePanelChange,this._onDidPanelPinnedChange,this._onDidAddPanel,this._onDidRemovePanel,this._onDidLayoutFromJSON,this._onDidDrop,this._onWillDrop,this._onWillMutateLayout,this._onDidMutateLayout,this._onDidMovePanel,this._onDidMovePanel.event(()=>{this.debouncedUpdateAllPositions()}),this._onDidAddGroup,this._onDidRemoveGroup,this._onDidEdgeGroupAutoHideChange,this._onDidActiveGroupChange,this._onUnhandledDragOver,this._onDidMaximizedGroupChange,this._onDidPopoutGroupSizeChange,this._onDidPopoutGroupPositionChange,this._onDidAddPopoutGroup,this._onDidRemovePopoutGroup,this._onDidChangePopouts,this._onDidAddPopoutGroup.event(()=>this._onDidChangePopouts.fire()),this._onDidRemovePopoutGroup.event(()=>this._onDidChangePopouts.fire()),this._onDidOpenPopoutWindowFail,this._onDidStartFloatingGroupDrag,this._onDidEndFloatingGroupDrag,this._onDidCreateTabGroup,this._onDidDestroyTabGroup,this._onDidAddPanelToTabGroup,this._onDidRemovePanelFromTabGroup,this._onDidTabGroupChange,this._onDidTabGroupCollapsedChange,Ke.any(this.onDidPopoutGroupSizeChange,this.onDidPopoutGroupPositionChange,this.onDidCreateTabGroup,this.onDidDestroyTabGroup,this.onDidAddPanelToTabGroup,this.onDidRemovePanelFromTabGroup,this.onDidTabGroupChange,this.onDidTabGroupCollapsedChange)(()=>{this.fireLayoutChange()}),this._onDidOptionsChange,this.onDidAdd(e=>{this._moving||this._onDidAddGroup.fire(e)}),this.onDidRemove(e=>{this._moving||this._onDidRemoveGroup.fire(e)}),this.onDidActiveChange(e=>{this._moving||this._onDidActiveGroupChange.fire(e)}),this.onDidMaximizedChange(e=>{this._onDidMaximizedGroupChange.fire({group:e.panel,isMaximized:e.isMaximized})}),Ke.any(this.onDidAddPanel,this.onDidRemovePanel,this.onDidAddGroup,this.onDidRemove,this.onDidRemoveGroup,this.onDidMovePanel,this.onDidActivePanelChange)(()=>{this._bufferOnDidLayoutChange.fire()}),We.from(()=>{var e;this._moduleRegistry.dispose(),(e=this._shellManager)==null||e.dispose()}));let i=this._rootDropTargetService;i&&this.addDisposables(i.onWillShowOverlay(e=>{this.gridview.length>0&&e.position===`center`||this._onWillShowOverlay.fire(new ur(e,{kind:`edge`,panel:void 0,api:this._api,group:void 0,getData:Ue}))}),i.onDrop(e=>this.dockToLayoutEdge(e.nativeEvent,e.position))),this._moduleRegistry.postConstruct(this)}setVisible(e,t){switch(e.api.location.type){case`grid`:super.setVisible(e,t);break;case`floating`:{let n=this.floatingGroups.find(t=>t.group===e);n&&(n.overlay.setVisible(t),e.api._onDidVisibilityChange.fire({isVisible:t}));break}case`popout`:console.warn(`dockview: You cannot hide a group that is in a popout window`)}}getPopupServiceForGroup(e){var t;return((t=this._popoutWindowService)==null||(t=t.findByGroup(e))==null?void 0:t.popupService)??this.popupService}addPopoutGroup(e,t){return this.mutationAsync(`popout`,()=>this._doAddPopoutGroup(e,t))}getPopouts(){return this._popoutWindowService?.entries.map(e=>({id:e.popoutGroup.id,group:e.popoutGroup,window:e.getWindow()}))??[]}getPopoutWindows(){return this.getPopouts().map(e=>e.window)}_doAddPopoutGroup(e,t){var n;let r=fi(this._popoutWindowService,`PopoutWindow`,`api.addPopoutGroup`);if(!r||e instanceof Xr&&e.model.location.type===`edge`)return Promise.resolve(!1);if(e instanceof $r&&e.group.size===1)return this.addPopoutGroup(e.group,t);let i=_t(this.gridview.element),a=this.element;function o(){if(t?.position)return t.position;let n=(e instanceof Xr?e.element:e.group?.element??a).getBoundingClientRect();return{left:window.screenX+n.left,top:window.screenY+n.top,width:n.width,height:n.height}}let s=o(),c=(t==null||(n=t.overridePopoutGroup)==null?void 0:n.id)??this.getNextGroupId(),l=t?.popoutUrl??this.options?.popoutUrl,u=new $i(`${this.id}-${c}`,i??``,{url:l??`/popout.html`,left:s.left,top:s.top,width:s.width,height:s.height,onDidOpen:t?.onDidOpen,onWillClose:t?.onWillClose,nonce:this.options?.nonce}),d=new Q(u,u.onDidClose(()=>{d.dispose()}));return u.open().then(n=>{if(u.isDisposed)return!1;let i=t?.referenceGroup??(e instanceof $r?e.group:e),a=e.api.location.type,o=i.element.parentElement!==null,s;if(t?.overridePopoutGridview?s=t.overridePopoutGroup??i:o?t?.overridePopoutGroup?s=t.overridePopoutGroup:(s=this.createGroup({id:c}),n&&this._onDidAddGroup.fire(s)):s=i,n===null)return this.handleBlockedPopout({group:s,referenceGroup:i,options:t,popoutWindowDisposable:d}),!1;let f=document.createElement(`div`);f.className=`dv-overlay-render-container`;let p=new Yi(f,this);s.model.renderContainer=p;let m=t?.overridePopoutGridview??this.createNestedGridview();t?.overridePopoutGridview||m.addView(s,Lt.Distribute,[0]),m.element.style.width=`100%`,m.element.style.height=`100%`,m.layout(u.window.innerWidth,u.window.innerHeight);let h=!1,g=()=>{h||(h=!0,m.dispose())},_,v=[];if(!t?.overridePopoutGroup&&!t?.overridePopoutGridview&&o){if(e instanceof $r){let t=e.group;this.movingLock(()=>{let t=i.model.removePanel(e);s.model.openPanel(t)}),v=[{panel:e,from:t}]}else switch(this.movingLock(()=>ua({from:i,to:s})),v=s.panels.map(e=>({panel:e,from:i})),a){case`grid`:i.api.setVisible(!1);break;case`floating`:case`popout`:_=this.floatingGroups.find(t=>t.group.api.id===e.api.id)?.overlay.toJSON(),this.removeGroup(i)}}n.classList.add(`dv-dockview`),n.style.overflow=`hidden`,n.appendChild(f),n.appendChild(m.element);let y=document.createElement(`div`),b=new ia(y,{disabled:this.rootDropTargetContainer.disabled});n.appendChild(y),s.model.dropTargetContainer=b;let x=new ra(n,u.window);if(d.addDisposables(x),s.model.location={type:`popout`,getWindow:()=>u.window,popoutUrl:l},t?.overridePopoutGridview){let e=this.groups.filter(e=>m.element.contains(e.element));for(let t of e)t.model.renderContainer=p,t.model.dropTargetContainer=b,t.model.location={type:`popout`,getWindow:()=>u.window,popoutUrl:l}}o&&e.api.location.type===`grid`&&e.api.setVisible(!1),this.doSetGroupAndPanelActive(s);let S=r.observeGridviewSize(u,m,p);S&&d.addDisposables(S);let C=new Ge;d.addDisposables(C);let w=e=>{C.value=new Q(e.api.onDidActiveChange(e=>{if(e.isActive){var t;(t=u.window)==null||t.focus()}}),e.api.onWillFocus(()=>{var e;(e=u.window)==null||e.focus()}))};w(s);let T={},ee=o&&i&&this.getPanel(i.id),E={window:u,popoutGroup:s,gridview:m,overlayRenderContainer:p,dropTargetContainer:b,getWindow:()=>u.window,popoutUrl:l,referenceGroup:ee?i.id:void 0,popupService:x,setAnchorGroup:e=>{E.popoutGroup=e,w(e)},disposable:{dispose:()=>(d.dispose(),T.returnedGroup)}},D=xt(u.window);d.addDisposables(D,St(u.window,()=>{this._onDidPopoutGroupSizeChange.fire({width:u.window.innerWidth,height:u.window.innerHeight,group:E.popoutGroup})}),D.event(()=>{this._onDidPopoutGroupPositionChange.fire({screenX:u.window.screenX,screenY:u.window.screenY,group:E.popoutGroup})}),Qe(u.window,`resize`,()=>{m.layout(u.window.innerWidth,u.window.innerHeight)}),p,We.from(()=>this.disposePopoutWindow({group:s,referenceGroup:i,popoutGridview:m,isGroupAddedToDom:o,floatingBox:_,disposePopoutGridview:g,closeResult:T}))),r.add(E),this._onDidAddPopoutGroup.fire({id:E.popoutGroup.id,group:E.popoutGroup,window:E.getWindow()});for(let{panel:e,from:t}of v)this.fireDidMovePanel(e,t);return!0}).catch(e=>(console.error(`dockview: failed to create popout.`,e),!1))}handleBlockedPopout(e){let{group:t,referenceGroup:n,options:r,popoutWindowDisposable:i}=e;if(console.error(`dockview: failed to create popout. perhaps you need to allow pop-ups for this website`),i.dispose(),this._onDidOpenPopoutWindowFail.fire(),r?.overridePopoutGridview){let e=r.overridePopoutGridview,t=this.groups.filter(t=>e.element.contains(t.element));for(let n of t)this.movingLock(()=>{e.remove(n),this.redockGroupToMainGrid(n)});e.dispose(),n&&!n.api.isVisible&&n.api.setVisible(!0);return}t===n?this.gridview.element.contains(t.element)||(this.movingLock(()=>this.doAddGroup(t,[0])),t.model.location={type:`grid`}):(this.movingLock(()=>ua({from:t,to:n})),t.model.size===0&&this._groups.has(t.id)&&(t.dispose(),this._groups.delete(t.id),this._onDidRemoveGroup.fire(t))),n.api.isVisible||n.api.setVisible(!0)}redockGroupToMainGrid(e){e.model.renderContainer=this.overlayRenderContainer,e.model.dropTargetContainer=this.rootDropTargetContainer,e.model.location={type:`grid`},this.doAddGroup(e,[0])}disposePopoutWindow(e){let{group:t,referenceGroup:n,popoutGridview:r,isGroupAddedToDom:i,floatingBox:a,disposePopoutGridview:o,closeResult:s}=e;if(this.isDisposed){o();return}let c=!!this._popoutWindowService?.entries.find(e=>e.gridview===r),l=this.groups.filter(e=>r.element.contains(e.element)),u=l.includes(t),d=u&&l.length===1,f=[];if(c){for(let e of l)if(e!==t){this.movingLock(()=>{this.doRemoveGroup(e,{skipDispose:!0,skipActive:!0,skipPopoutReturn:!0}),this.redockGroupToMainGrid(e)});for(let t of e.panels)f.push({panel:t,from:e})}}if(u&&i&&this.getPanel(n.id)){let e=[...t.panels];this.movingLock(()=>ua({from:t,to:n}));for(let n of e)f.push({panel:n,from:t});n.api.isVisible||n.api.setVisible(!0),this.getPanel(t.id)&&this.doRemoveGroup(t,{skipPopoutAssociated:!0})}else if(u&&this.getPanel(t.id)){if(t.model.renderContainer=this.overlayRenderContainer,t.model.dropTargetContainer=this.rootDropTargetContainer,s.returnedGroup=t,!c){o();return}if(a&&d)this.addFloatingGroup(t,{height:a.height,width:a.width,position:a});else{this.doRemoveGroup(t,{skipDispose:!0,skipActive:!0,skipPopoutReturn:!0}),t.model.location={type:`grid`},this.movingLock(()=>{this.doAddGroup(t,[0])});for(let e of t.panels)f.push({panel:e,from:t})}this.doSetGroupAndPanelActive(t)}o();for(let{panel:e,from:t}of f)this.fireDidMovePanel(e,t)}addFloatingGroup(e,t){this.mutation(`float`,()=>this._doAddFloatingGroup(e,t))}_doAddFloatingGroup(e,t){if(!fi(this._floatingGroupService,`FloatingGroup`,`api.addFloatingGroup`)||e instanceof Xr&&e.model.location.type===`edge`)return;let n,r=[];if(e instanceof $r){let t=e.group;n=this.createGroup(),this._onDidAddGroup.fire(n),this.movingLock(()=>this.removePanel(e,{removeEmptyGroup:!0,skipDispose:!0,skipSetActiveGroup:!0})),this.movingLock(()=>n.model.openPanel(e,{skipSetGroupActive:!0})),r=[{panel:e,from:t}]}else{n=e;let i=this._popoutWindowService?.findReferenceGroupId(n),a=i?this.getPanel(i):void 0;typeof t?.skipRemoveGroup==`boolean`&&t.skipRemoveGroup||(a?(this.movingLock(()=>ua({from:e,to:a})),this.doRemoveGroup(e,{skipPopoutReturn:!0,skipPopoutAssociated:!0}),this.doRemoveGroup(a,{skipDispose:!0}),n=a,r=n.panels.map(t=>({panel:t,from:e}))):(this.doRemoveGroup(e,{skipDispose:!0,skipPopoutReturn:!0,skipPopoutAssociated:!1}),r=n.panels.map(e=>({panel:e,from:n}))))}function i(){if(t?.position){let e={};return`left`in t.position?e.left=Math.max(t.position.left,0):`right`in t.position?e.right=Math.max(t.position.right,0):e.left=vi.left,`top`in t.position?e.top=Math.max(t.position.top,0):`bottom`in t.position?e.bottom=Math.max(t.position.bottom,0):e.top=vi.top,e.width=typeof t.width==`number`?Math.max(t.width,0):vi.width,e.height=typeof t.height==`number`?Math.max(t.height,0):vi.height,e}return{left:typeof t?.x==`number`?Math.max(t.x,0):vi.left,top:typeof t?.y==`number`?Math.max(t.y,0):vi.top,width:typeof t?.width==`number`?Math.max(t.width,0):vi.width,height:typeof t?.height==`number`?Math.max(t.height,0):vi.height}}let a=i(),o=this.createNestedGridview();o.addView(n,Lt.Distribute,[0]),this.mountFloatingWindow(o,n,[n],a,{dragHandle:t?.dragHandle,inDragMode:t?.inDragMode,skipActiveGroup:t?.skipActiveGroup,disableSmartGuides:t?.disableSmartGuides});for(let{panel:e,from:t}of r)this.fireDidMovePanel(e,t)}createNestedGridview(e=`HORIZONTAL`){return new Qt(!0,this.options.hideBorders?{separatorBorder:`transparent`}:void 0,e,!1,this.options.theme?.gap??0)}mountFloatingWindow(e,t,n,r,i){let a=fi(this._floatingGroupService,`FloatingGroup`,`api.addFloatingGroup`);if(!a)return;let o=(i?.dragHandle??this.options.floatingGroupDragHandle??`titlebar`)===`titlebar`?new oi(this,t):void 0,s=new ai(ln(ln({container:this._floatingOverlayHost??this.gridview.element,content:e.element,header:o?.element},r),{},{minimumInViewportWidth:this.options.floatingGroupBounds===`boundedWithinViewport`?void 0:this.options.floatingGroupBounds?.minimumWidthWithinViewport??100,minimumInViewportHeight:this.options.floatingGroupBounds===`boundedWithinViewport`?void 0:this.options.floatingGroupBounds?.minimumHeightWithinViewport??100,transformDragPosition:this._buildFloatingDragTransform(t,i?.disableSmartGuides??!1),getSiblingBoxes:()=>this._gatherFloatingGroupBoxes(t)})),c=o?.element??t.element.querySelector(`.dv-void-container`);if(!c)throw Error(`dockview: failed to find drag handle`);s.setupDrag(c,{inDragMode:typeof i?.inDragMode==`boolean`&&i.inDragMode});let l=a.add(t,s,e);l.addDisposables(s.onDidStartMoving(()=>this._onDidStartFloatingGroupDrag.fire(t)),s.onDidChangeEnd(()=>this._onDidEndFloatingGroupDrag.fire(t))),o&&(l.setTitleBar(o),l.addDisposables(o,We.from(()=>l.setTitleBar(void 0)),o.onDragStart(e=>{this._onWillDragGroup.fire({nativeEvent:e,group:l.group})})));for(let e of n)e.model.location={type:`floating`};i?.skipActiveGroup||this.doSetGroupAndPanelActive(t)}orthogonalize(e,t){switch(this.gridview.normalize(),e){case`top`:case`bottom`:this.gridview.orientation===`HORIZONTAL`&&this.gridview.insertOrthogonalSplitviewAtRoot();break;case`left`:case`right`:this.gridview.orientation===`VERTICAL`&&this.gridview.insertOrthogonalSplitviewAtRoot()}switch(e){case`top`:case`left`:case`center`:return this.createGroupAtLocation([0],void 0,t);case`bottom`:case`right`:return this.createGroupAtLocation([this.gridview.length],void 0,t);default:throw Error(`dockview: unsupported position ${e}`)}}updateOptions(e){var t,n;super.updateOptions(e),this.reportMissingOptionModules(e),(t=this._floatingGroupService)==null||t.updateBounds(e),(n=this._rootDropTargetService)==null||n.setOptions(e);let r=this.options.disableDnd,i=this.options.dndStrategy;this._options=ln(ln({},this.options),e);let a=this.options.disableDnd,o=this.options.dndStrategy;if((r!==a||i!==o)&&this.updateDragAndDropState(),`theme`in e&&this.updateTheme(),`createRightHeaderActionComponent`in e||`createLeftHeaderActionComponent`in e||`createPrefixHeaderActionComponent`in e){var s;(s=this.headerActionsService)==null||s.refreshAll()}if(`createWatermarkComponent`in e){var c;(c=this._watermarkService)==null||c.refresh();for(let e of this.groups)e.model.refreshWatermark()}if(`tabGroupColors`in e||`tabGroupAccent`in e){this._tabGroupColorPalette.setEntries(this._options.tabGroupColors??Sr),this._tabGroupColorPalette.enabled=this._options.tabGroupAccent!==`off`;for(let e of this.groups)e.model.refreshTabGroupAccent()}this._onDidOptionsChange.fire(),this._layoutFromShell(this.gridview.width,this.gridview.height)}reportMissingOptionModules(e){_i(e,e=>this._moduleRegistry.has(e))}layout(e,t,n){var r;this._shellManager&&!this._inShellLayout?this._shellManager.layout(e,t):super.layout(e,t,n),this._syncFloatingOverlayHost(),(r=this._moduleRegistry)==null||(r=r.services.floatingGroupService)==null||r.constrainBounds()}_syncFloatingOverlayHost(){if(!this._floatingOverlayHost||!this._shellManager)return;let e=this._shellManager.element.getBoundingClientRect(),t=this.element.getBoundingClientRect(),n=this._floatingOverlayHost;n.style.left=`${t.left-e.left}px`,n.style.top=`${t.top-e.top}px`,n.style.width=`${t.width}px`,n.style.height=`${t.height}px`}_layoutFromShell(e,t){this._inShellLayout=!0,this.layout(e,t,!0),this._inShellLayout=!1}forceRelayout(){this._shellManager?this._layoutFromShell(this.width,this.height):super.forceRelayout()}addEdgeGroup(e,t){let n=this._edgeGroupService;if(!n)throw Error(ui(`EdgeGroup`,`api.addEdgeGroup`));if(n.has(e))throw Error(`dockview: edge group already exists at position '${e}'`);return this.mutation(`add`,()=>{let r=this.createGroup({id:t.id});r.model.location={type:`edge`,position:e},r.model.headerPosition=e;let i=r.model.onDidRemovePanel(()=>{r.model.isEmpty&&(n.isAutoReveal(r)?queueMicrotask(()=>{r.model.isEmpty&&this._edgeGroupService?.includes(r)&&this.removeEdgeGroup(e)}):this.setEdgeGroupCollapsed(r,!0))});return n.add(e,r,i),t.autoHide!==void 0&&n.setAutoHide(r,t.autoHide),t.autoReveal!==void 0&&n.setAutoReveal(r,t.autoReveal),this._onDidAddGroup.fire(r),this._shellManager.addEdgeView(e,t,r),r.api})}revealEdgeGroupWithData(e,t,n){let r=this._edgeGroupService;r&&this.mutation(`add`,()=>{let i=r.get(e);i||=(this.addEdgeGroup(e,{id:this.getNextGroupId(),autoReveal:!0,autoHide:n?.autoHide,collapsed:!0}),r.get(e)),i&&this.moveGroupOrPanel({from:{groupId:t.groupId,panelId:t.panelId??void 0},to:{group:i,position:`center`}})})}getEdgeGroup(e){var t;return(t=this._edgeGroupService)==null||(t=t.get(e))==null?void 0:t.api}getEdgeGroupPanel(e){return this._edgeGroupService?.get(e)}pinEdgeGroup(e){var t;(t=fi(this._moduleRegistry.services.autoHideEdgeGroupService,`AutoHideEdgeGroup`,`api.pinEdgeGroup`))==null||t.pin(e)}autoHideEdgeGroup(e){var t;(t=fi(this._moduleRegistry.services.autoHideEdgeGroupService,`AutoHideEdgeGroup`,`api.autoHideEdgeGroup`))==null||t.autoHide(e)}peekEdgeGroup(e,t){var n;(n=fi(this._moduleRegistry.services.autoHideEdgeGroupService,`AutoHideEdgeGroup`,`api.peekEdgeGroup`))==null||n.peek(e,t)}get overlayRoot(){return this.rootElement}getDropZoneRect(){return this.element.getBoundingClientRect()}getEdgeGroupExpandedSize(e){return this._shellManager?.getEdgeGroupExpandedSize(e)??0}repositionPanelOverlay(e,t,n){this.overlayRenderContainer.repositionPanelOverlay(e.api.id,t,n)}setEdgeGroupVisible(e,t){this._shellManager.setEdgeGroupVisible(e,t)}isEdgeGroupVisible(e){return this._shellManager.isEdgeGroupVisible(e)}removeEdgeGroup(e){let t=fi(this._edgeGroupService,`EdgeGroup`,`api.removeEdgeGroup`);if(!t)return;let n=t.get(e);if(!n)throw Error(`dockview: no edge group exists at position '${e}'`);this.mutation(`remove`,()=>{for(let e of[...n.panels])this.removePanel(e,{removeEmptyGroup:!1,skipDispose:!1});this._shellManager.removeEdgeView(e),t.remove(e),n.dispose(),this._groups.delete(n.id),this._onDidRemoveGroup.fire(n)})}setEdgeGroupCollapsed(e,t){let n=this._edgeGroupService?.findPositionOf(e);n&&this._shellManager.isEdgeGroupCollapsed(n)!==t&&(this._shellManager.setEdgeGroupCollapsed(n,t),e.api._onDidCollapsedChange.fire({isCollapsed:t}))}isEdgeGroupCollapsed(e){let t=this._edgeGroupService?.findPositionOf(e);return t?this._shellManager.isEdgeGroupCollapsed(t):!1}isEdgeGroupPeeking(e){return this._peekingGroups.has(e)}setEdgeGroupPeeking(e,t){this._peekingGroups.has(e)!==t&&(t?this._peekingGroups.add(e):this._peekingGroups.delete(e),e.api._onDidPeekChange.fire({isPeeking:t}))}isEdgeGroupAutoHide(e){let t=this._edgeGroupService?.isAutoHide(e);if(t!==void 0)return t;let n=this._edgeGroupService?.findPositionOf(e);return n!==void 0&&hr(this.options.autoHideEdgeGroups,n)}setEdgeGroupAutoHide(e,t){let n=this._edgeGroupService;n?.includes(e)&&(n.setAutoHide(e,t),this._onDidEdgeGroupAutoHideChange.fire(e))}updateDragAndDropState(){for(let e of this.groups)e.model.updateDragAndDropState()}focus(){var e;(e=this.activeGroup)==null||e.focus()}getGroupPanel(e){return this.panels.find(t=>t.id===e)}setActivePanel(e){e.group.model.openPanel(e),this.doSetGroupAndPanelActive(e.group)}activateNext(e={}){if(!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}if(e.includePanel&&e.group&&e.group.activePanel!==e.group.panels[e.group.panels.length-1]){e.group.model.moveToNext({suppressRoll:!0});return}let t=Gt(e.group.element),n=this.gridview.next(t)?.view;this.doSetGroupAndPanelActive(n)}activatePrevious(e={}){if(!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}if(e.includePanel&&e.group&&e.group.activePanel!==e.group.panels[0]){e.group.model.moveToPrevious({suppressRoll:!0});return}let t=Gt(e.group.element),n=this.gridview.previous(t)?.view;n&&this.doSetGroupAndPanelActive(n)}toJSON(){let e=this.gridview.serialize(),t=this.panels.reduce((e,t)=>(e[t.id]=t.toJSON(),e),{}),n=this._floatingGroupService?.serialize()??[],r=this._popoutWindowService?.serialize()??[],i={grid:e,panels:t,activeGroup:this.activeGroup?.id};n.length>0&&(i.floatingGroups=n),r.length>0&&(i.popoutGroups=r);let a=this._serializeEdgeGroups();return a&&(i.edgeGroups=a),i}_serializeEdgeGroups(){if(!this._edgeGroupService?.hasAny())return;let e=this._shellManager.toJSON();for(let[t,n]of this._edgeGroupService.entries()){let r=e[t];if(!r)continue;if(this._edgeGroupService.isAutoReveal(n)&&n.model.isEmpty){delete e[t];continue}r.group=n.toJSON(),this._edgeGroupService.isAutoReveal(n)&&(r.autoReveal=!0);let i=this._edgeGroupService.isAutoHide(n);i!==void 0&&(r.autoHide=i)}return e}fromJSON(e,t){this.mutation(`load`,()=>this._doFromJSON(e,t))}_doFromJSON(e,t){var n;if((n=this._popoutWindowService)==null||n.cancelPendingRestorations(),typeof e!=`object`||!e)throw Error(`dockview: serialized layout must be a non-null object`);if(!e.grid||e.grid.root?.type!==`branch`||!Array.isArray(e.grid.root.data))throw Error(`dockview: root must be of type branch`);let r=new Map,i=new Map,a=[],o=[],s=()=>{for(let e of o)try{e.dispose()}catch(e){console.error(`dockview: failed to dispose a temporary group created for reuseExistingPanels`,e)}o.length=0};if(t?.reuseExistingPanels){let t=Object.keys(e.panels),n,c=()=>{let e=this.createGroup(),t=this._groups.get(e.api.id);return this._groups.delete(e.api.id),o.push(We.from(()=>{this.movingLock(()=>{for(let t of e.panels.slice())e.model.removePanel(t)}),t?.disposable.dispose(),e.dispose()})),e};try{for(let e of this.panels)if(t.includes(e.api.id)){r.set(e.api.id,e);let t;e.api.renderer===`always`&&e.api.isVisible?t=c():(n??=c(),t=n),i.set(e.api.id,t),a.push({panel:e,temporaryGroup:t})}this.movingLock(()=>{a.forEach(({panel:e,temporaryGroup:t})=>{this.moveGroupOrPanel({from:{groupId:e.api.group.api.id,panelId:e.api.id},to:{group:t,position:`center`},keepEmptyGroups:!0})})}),this.clear()}catch(e){throw s(),e}}else this.clear();let{grid:c,panels:l,activeGroup:u}=e;try{var d,f,p;let t=this.width,n=this.height,a=e=>{let{id:t,locked:n,hideHeader:a,headerPosition:o,views:s,activeView:c}=e;if(typeof t!=`string`)throw TypeError(`dockview: group id must be of type string`);let u=this.createGroup({id:t,locked:!!n,hideHeader:!!a,headerPosition:o});this._onDidAddGroup.fire(u);let d=[],f=s.filter(e=>l[e]);for(let e of f){let t=r.get(e),n=i.get(e);if(n&&t)this.movingLock(()=>{n.model.removePanel(t)}),d.push(t),t.updateFromStateModel(l[e]);else{let t=this._deserializer.fromJSON(l[e],u);d.push(t)}}for(let e of d){let t=typeof c==`string`&&c===e.id;r.has(e.api.id)?this.movingLock(()=>{u.model.openPanel(e,{skipSetActive:!t,skipSetGroupActive:!0})}):u.model.openPanel(e,{skipSetActive:!t,skipSetGroupActive:!0})}return e.tabGroups&&e.tabGroups.length>0&&u.model.restoreTabGroups(e.tabGroups),!u.activePanel&&u.panels.length>0&&u.model.openPanel(u.panels[u.panels.length-1],{skipSetGroupActive:!0}),u};this.gridview.deserialize(c,{fromJSON:e=>a(e.data)}),this._layoutFromShell(t,n),e.edgeGroups&&this.deserializeEdgeGroups(e.edgeGroups,l,r,i),this.deserializeFloatingWindows(e.floatingGroups??[],a);let o=this.deserializePopoutWindows(e.popoutGroups??[],a);if((d=this._popoutWindowService)==null||d.finishRestoration(o),(f=this._floatingGroupService)==null||f.constrainBounds(),typeof u==`string`){let e=this.getPanel(u);e&&this.doSetGroupAndPanelActive(e)}(p=this._watermarkService)==null||p.update()}catch(e){var m;console.error(`dockview: failed to deserialize layout. Reverting changes`,e);for(let e of this.groups)for(let t of e.panels)this.removePanel(t,{removeEmptyGroup:!1,skipDispose:!1});for(let e of this.groups)e.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e);throw(m=this._floatingGroupService)==null||m.disposeAll(),this.clear(),e}finally{s()}this.debouncedUpdateAllPositions(),this._onDidLayoutFromJSON.fire()}deserializeNestedGridview(e,t){let n=this.createNestedGridview(e.orientation),r=[];return n.deserialize(e,{fromJSON:e=>{let n=t(e.data);return r.push(n),n}}),{gridview:n,members:r}}deserializeEdgeGroups(e,t,n,r){let i=fi(this._edgeGroupService,`EdgeGroup`,`fromJSON edge restoration`);if(i){for(let t of[`top`,`bottom`,`left`,`right`]){let n=e[t];if(n&&!i.has(t)){let e=n.group?.id??`${t}-group`;this.addEdgeGroup(t,{id:e,autoReveal:n.autoReveal,autoHide:n.autoHide,minimumSize:n.minimumSize,maximumSize:n.maximumSize,collapsedSize:n.collapsedSize})}}for(let[a,o]of i.entries()){let i=e[a]?.group;if(i){let{views:e,activeView:a}=i,s=[];for(let i of e){if(!t[i])continue;let e=n.get(i),a=r.get(i);if(a&&e)this.movingLock(()=>{a.model.removePanel(e)}),s.push(e),e.updateFromStateModel(t[i]);else{let e=this._deserializer.fromJSON(t[i],o);s.push(e)}}for(let e of s){let t=a===e.id;n.has(e.api.id)?this.movingLock(()=>{o.model.openPanel(e,{skipSetActive:!t,skipSetGroupActive:!0})}):o.model.openPanel(e,{skipSetActive:!t,skipSetGroupActive:!0})}i.tabGroups&&i.tabGroups.length>0&&o.model.restoreTabGroups(i.tabGroups),!o.activePanel&&o.panels.length>0&&o.model.openPanel(o.panels[o.panels.length-1],{skipSetGroupActive:!0})}}this._shellManager.fromJSON(e)}}deserializeFloatingWindows(e,t){for(let n of e){let{data:e,grid:r,position:i}=n;if(r){let{gridview:e,members:n}=this.deserializeNestedGridview(r,t);if(n.length===0)continue;this.mountFloatingWindow(e,n[0],n,i,{inDragMode:!1})}else if(e){let n=t(e);this.addFloatingGroup(n,{position:i,width:i.width,height:i.height,skipRemoveGroup:!0,inDragMode:!1})}}}deserializePopoutWindows(e,t){let n=e.length>0?fi(this._popoutWindowService,`PopoutWindow`,`fromJSON popout restoration`):this._popoutWindowService;return n?e.flatMap((e,r)=>{let{data:i,grid:a,position:o,gridReferenceGroup:s,url:c}=e,l,u=[];if(a){let e=this.deserializeNestedGridview(a,t);if(l=e.gridview,u=e.members,u.length===0)return l.dispose(),[]}let d=a?u[0]:t(i);return n.scheduleRestoration(r*100,()=>{this.addPopoutGroup(d,{position:o??void 0,overridePopoutGroup:s?d:void 0,overridePopoutGridview:l,referenceGroup:s?this.getPanel(s):void 0,popoutUrl:c})},()=>{for(let e of u.length>0?u:[d])if(!this.isDisposed&&this._groups.has(e.id)&&e.element.parentElement===null){for(let t of[...e.panels])this.removePanel(t,{removeEmptyGroup:!1});e.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e)}})}):[]}clear(){this.mutation(`clear`,()=>this._doClear())}_doClear(){let e=Array.from(this._groups.values()).map(e=>e.value),t=!!this.activeGroup;for(let t of e){if(this._edgeGroupService?.includes(t)){let e=[...t.panels];for(let t of e)this.removePanel(t,{removeEmptyGroup:!1});continue}this.removeGroup(t,{skipActive:!0})}t&&this.doSetGroupAndPanelActive(void 0),this.gridview.clear()}closeAllGroups(){this.mutation(`remove`,()=>{for(let e of this._groups.entries()){let[t,n]=e;n.value.model.closeAllPanels()}})}addPanel(e){return this.mutation(`add`,()=>this._doAddPanel(e))}_doAddPanel(e){if(this.panels.some(t=>t.id===e.id))throw Error(`dockview: panel with id ${e.id} already exists`);let t;if(e.position&&e.floating)throw Error(`dockview: you can only provide one of: position, floating as arguments to .addPanel(...)`);let n={width:e.initialWidth,height:e.initialHeight},r,i=t=>!!e.inactive&&t.model.size>0;if(e.position){if(vr(e.position)){let n=typeof e.position.referencePanel==`string`?this.getGroupPanel(e.position.referencePanel):e.position.referencePanel;if(r=e.position.index,!n){let t=typeof e.position.referencePanel==`string`?e.position.referencePanel:e.position.referencePanel?.id;throw Error(`dockview: referencePanel '${t}' does not exist`)}t=this.findGroup(n)}else if(yr(e.position)){if(t=typeof e.position.referenceGroup==`string`?this._groups.get(e.position.referenceGroup)?.value:e.position.referenceGroup,r=e.position.index,!t){let t=typeof e.position.referenceGroup==`string`?e.position.referenceGroup:e.position.referenceGroup?.id;throw Error(`dockview: referenceGroup '${t}' does not exist`)}}else{let t=this.orthogonalize(En(e.position.direction)),a=this.createPanel(e,t);return t.model.openPanel(a,{skipSetActive:i(t),skipSetGroupActive:e.inactive,index:r}),e.inactive||this.doSetGroupAndPanelActive(t),t.api.setSize({height:n?.height,width:n?.width}),a}}else t=this.activeGroup;let a;if(t){let o=tn(e.position?.direction||`within`);if(e.floating){let t=this.createGroup();this._onDidAddGroup.fire(t);let n=typeof e.floating==`object`&&e.floating!==null?e.floating:{};this.addFloatingGroup(t,ln(ln({},n),{},{inDragMode:!1,skipRemoveGroup:!0,skipActiveGroup:!0})),a=this.createPanel(e,t),t.model.openPanel(a,{skipSetActive:i(t),skipSetGroupActive:e.inactive,index:r})}else if(t.api.location.type===`floating`||t.api.location.type===`edge`||o===`center`)a=this.createPanel(e,t),t.model.openPanel(a,{skipSetActive:i(t),skipSetGroupActive:e.inactive,index:r}),t.api.setSize({width:n?.width,height:n?.height}),e.inactive||this.doSetGroupAndPanelActive(t);else{let s=Gt(t.element),c=Kt(this.gridview.orientation,s,o),l=this.createGroupAtLocation(c,this.orientationAtLocation(c)===`VERTICAL`?n?.height:n?.width);a=this.createPanel(e,l),l.model.openPanel(a,{skipSetActive:i(l),skipSetGroupActive:e.inactive,index:r}),e.inactive||this.doSetGroupAndPanelActive(l)}}else if(e.floating){let t=this.createGroup();this._onDidAddGroup.fire(t);let n=typeof e.floating==`object`&&e.floating!==null?e.floating:{};this.addFloatingGroup(t,ln(ln({},n),{},{inDragMode:!1,skipRemoveGroup:!0,skipActiveGroup:!0})),a=this.createPanel(e,t),t.model.openPanel(a,{skipSetActive:i(t),skipSetGroupActive:e.inactive,index:r})}else{let t=this.createGroupAtLocation([0],this.gridview.orientation===`VERTICAL`?n?.height:n?.width);a=this.createPanel(e,t),t.model.openPanel(a,{skipSetActive:i(t),skipSetGroupActive:e.inactive,index:r}),e.inactive||this.doSetGroupAndPanelActive(t)}return a}removePanel(e,t){this.mutation(`remove`,()=>this._doRemovePanel(e,{removeEmptyGroup:t?.removeEmptyGroup??!0,skipDispose:t?.skipDispose,skipSetActiveGroup:t?.skipSetActiveGroup}))}_doRemovePanel(e,t){let n=e.group;if(!n)throw Error(`dockview: cannot remove panel ${e.id}. it's missing a group.`);n.model.removePanel(e,{skipSetActiveGroup:t.skipSetActiveGroup}),t.skipDispose||(e.group.model.renderContainer.detatch(e),e.dispose()),n.size===0&&t.removeEmptyGroup&&this.removeGroup(n,{skipActive:t.skipSetActiveGroup})}createWatermarkComponent(){return this.options.createWatermarkComponent?this.options.createWatermarkComponent():new ri}addGroup(e){return this.mutation(`add`,()=>this._doAddGroup(e))}_doAddGroup(e){if(e){let t;if(br(e)){let n=typeof e.referencePanel==`string`?this.panels.find(t=>t.id===e.referencePanel):e.referencePanel,r=typeof e.referencePanel==`string`?e.referencePanel:e.referencePanel?.id;if(!n)throw Error(`dockview: reference panel ${r} does not exist`);if(t=this.findGroup(n),!t)throw Error(`dockview: reference group for reference panel ${r} does not exist`)}else if(xr(e)){if(t=typeof e.referenceGroup==`string`?this._groups.get(e.referenceGroup)?.value:e.referenceGroup,!t){let t=typeof e.referenceGroup==`string`?e.referenceGroup:e.referenceGroup?.id;throw Error(`dockview: reference group ${t} does not exist`)}}else{let t=this.orthogonalize(En(e.direction),e);return e.skipSetActive||this.doSetGroupAndPanelActive(t),t}let n=tn(e.direction||`within`),r=Gt(t.element),i=Kt(this.gridview.orientation,r,n),a=this.createGroup(e),o=this.getLocationOrientation(i)===`VERTICAL`?e.initialHeight:e.initialWidth;return this.doAddGroup(a,i,o),e.skipSetActive||this.doSetGroupAndPanelActive(a),a}{let t=this.createGroup(e);return this.doAddGroup(t),this.doSetGroupAndPanelActive(t),t}}getLocationOrientation(e){return e.length%2==0&&this.gridview.orientation===`HORIZONTAL`?`HORIZONTAL`:`VERTICAL`}removeGroup(e,t){this.mutation(`remove`,()=>this.doRemoveGroup(e,t))}detachFromNestedWindow(e){let t=this._floatingGroupService?.findByGroup(e);if(t){let n=this.nestedWindowMembers(e);return n.length<=1?!1:(t.gridview.remove(e),t.group===e&&t.setAnchorGroup(n.find(t=>t!==e)),!0)}let n=this._popoutWindowService?.findByGroup(e);if(n){let t=this.nestedWindowMembers(e);return t.length<=1?!1:(n.gridview.remove(e),n.popoutGroup===e&&n.setAnchorGroup(t.find(t=>t!==e)),!0)}return!1}disposeGroupRecord(e){e.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e)}activateFallbackGroupIfRemoved(e,t){if(!t&&this._activeGroup===e){let e=Array.from(this._groups.values());this.doSetGroupAndPanelActive(e.length>0?e[0].value:void 0)}}doRemoveGroup(e,t){if(this._edgeGroupService?.includes(e))return e;let n=[...e.panels];if(!t?.skipDispose)for(let e of n)this.removePanel(e,{removeEmptyGroup:!1,skipDispose:t?.skipDispose??!1});let r=this.activePanel;if(e.api.location.type===`floating`){let n=this._floatingGroupService?.findByGroup(e);if(!n)throw Error(`dockview: failed to find floating group`);return this.detachFromNestedWindow(e)?(t?.skipDispose?e.model.location={type:`grid`}:this.disposeGroupRecord(e),this.activateFallbackGroupIfRemoved(e,t?.skipActive),e):(t?.skipDispose||this.disposeGroupRecord(e),n.dispose(),this.activateFallbackGroupIfRemoved(e,t?.skipActive),e)}if(e.api.location.type===`popout`){var i;let n=this._popoutWindowService?.findByGroup(e);if(!n)throw Error(`dockview: failed to find popout group`);if(this.detachFromNestedWindow(e))return t?.skipDispose?e.model.location={type:`grid`}:this.disposeGroupRecord(e),this.activateFallbackGroupIfRemoved(e,t?.skipActive),e;if(!t?.skipDispose){if(!t?.skipPopoutAssociated){let e=n.referenceGroup?this.getPanel(n.referenceGroup):void 0;e?.panels.length===0&&this.removeGroup(e)}n.popoutGroup.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e)}(i=this._popoutWindowService)==null||i.remove(n);let r=n.disposable.dispose();return!t?.skipPopoutReturn&&r&&(this.doAddGroup(r,[0]),this.doSetGroupAndPanelActive(r)),this.activateFallbackGroupIfRemoved(e,t?.skipActive),n.popoutGroup}if(!this.gridview.element.contains(e.element))return t?.skipDispose||(this._groups.get(e.id)?.disposable.dispose(),this.disposeGroupRecord(e)),this.activateFallbackGroupIfRemoved(e,t?.skipActive),e;let a=super.doRemoveGroup(e,t);return t?.skipActive||this.activePanel!==r&&this.fireActivePanelChange(this.activePanel),a}debouncedUpdateAllPositions(){this._updatePositionsFrameId!==void 0&&cancelAnimationFrame(this._updatePositionsFrameId),this._updatePositionsFrameId=requestAnimationFrame(()=>{this._updatePositionsFrameId=void 0,this.overlayRenderContainer.updateAllPositions();for(let e of this._popoutWindowService?.entries??[])e.overlayRenderContainer.updateAllPositions()})}movingLock(e){let t=this._moving;try{return this._moving=!0,e()}finally{this._moving=t}}mutation(e,t){let n=this.openMutation(e);try{return t()}finally{n()}}mutationAsync(e,t){var n=this;return Zi(function*(){let r=n.openMutation(e);try{return yield t()}finally{r()}})()}openMutation(e){let t=this._origin;return this._mutationDepth===0&&this._onWillMutateLayout.fire({kind:e,origin:t}),this._mutationDepth++,()=>{this._mutationDepth--,this._mutationDepth===0&&(this.flushLocationChanges(),this._onDidMutateLayout.fire({kind:e,origin:t}))}}deferLocationChange(e,t){if(this._mutationDepth===0){t();return}this._pendingLocationChanges.set(e,t)}flushLocationChanges(){if(this._pendingLocationChanges.size===0)return;let e=Array.from(this._pendingLocationChanges.values());this._pendingLocationChanges.clear();for(let t of e)t()}currentOrigin(){return this._origin}withOrigin(e,t){if(this._originDepth>0||this._mutationDepth>0)return t();let n=this._origin;this._origin=e,this._originDepth++;try{return t()}finally{this._originDepth--,this._origin=n}}fireActivePanelChange(e){this._onDidActivePanelChange.fire({panel:e,origin:this._origin})}fireDidMovePanel(e,t){this._onDidMovePanel.fire({panel:e,from:t,to:e.group})}moveGroupOrPanel(e){this.mutation(`move`,()=>this._doMoveGroupOrPanel(e))}_doMoveGroupOrPanel(e){let t=e.to.group,n=e.from.groupId,r=e.from.panelId,i=e.to.position,a=e.to.index,o=n?this._groups.get(n)?.value:void 0;if(!o)throw Error(`dockview: Failed to find group id ${n}`);if(r===void 0){e.from.tabGroupId?this.moveTabGroupToGroup({sourceGroup:o,tabGroupId:e.from.tabGroupId,destinationGroup:t,destinationTarget:i,destinationIndex:a,skipSetActive:e.skipSetActive,keepEmptyGroups:e.keepEmptyGroups}):this.moveGroup({from:{group:o},to:{group:t,position:i},skipSetActive:e.skipSetActive});return}if(!i||i===`center`){let n=this.movingLock(()=>o.model.removePanel(r,{skipSetActive:!1,skipSetActiveGroup:!0}));if(!n)throw Error(`dockview: No panel with id ${r}`);!e.keepEmptyGroups&&o.model.size===0&&this.doRemoveGroup(o,{skipActive:!0});let i=t.model.size===0;this.movingLock(()=>t.model.openPanel(n,{index:a,skipSetActive:(e.skipSetActive??!1)&&!i,skipSetGroupActive:!0})),e.skipSetActive||this.doSetGroupAndPanelActive(t),this.fireDidMovePanel(n,o)}else{let e=this.getGridviewForGroup(t),n=Gt(t.element),a=Kt(e.orientation,n,i);if(o.size<2){let[n,s]=Tt(a);if(o.api.location.type===`grid`&&e===this.gridview){let[e,t]=Tt(Gt(o.element));if(Et(e,n)){this.gridview.moveView(e,t,s),this.fireDidMovePanel(this.getGroupPanel(r),o);return}}if(o.api.location.type===`popout`&&this.nestedWindowMembers(o).length<=1){let n=this._popoutWindowService?.findByGroup(o);if(!n)return;let a=this.movingLock(()=>n.popoutGroup.model.removePanel(n.popoutGroup.panels[0],{skipSetActive:!0,skipSetActiveGroup:!0}));this.doRemoveGroup(o,{skipActive:!0});let s=Kt(e.orientation,Gt(t.element),i),c=this.createGroupAtLocation(s,void 0,void 0,e);this.movingLock(()=>c.model.openPanel(a,{skipSetActive:!0})),this.doSetGroupAndPanelActive(c),this.fireDidMovePanel(this.getGroupPanel(r),o);return}if(o.api.location.type===`edge`){let t=this.movingLock(()=>o.model.removePanel(r,{skipSetActive:!1,skipSetActiveGroup:!0}));if(!t)throw Error(`dockview: No panel with id ${r}`);let n=this.createGroupAtLocation(a,void 0,void 0,e);this.movingLock(()=>n.model.openPanel(t,{skipSetGroupActive:!0})),this.doSetGroupAndPanelActive(n),this.fireDidMovePanel(t,o);return}let c=this.movingLock(()=>this.doRemoveGroup(o,{skipActive:!0,skipDispose:!0})),l=Gt(t.element),u=Kt(e.orientation,l,i);this.movingLock(()=>this.doAddGroup(c,u,void 0,e)),this.setGroupLocationForRoot(c,e),this.doSetGroupAndPanelActive(c),this.fireDidMovePanel(this.getGroupPanel(r),o)}else{let t=this.movingLock(()=>o.model.removePanel(r,{skipSetActive:!1,skipSetActiveGroup:!0}));if(!t)throw Error(`dockview: No panel with id ${r}`);let a=Kt(e.orientation,n,i),s=this.createGroupAtLocation(a,void 0,void 0,e);this.movingLock(()=>s.model.openPanel(t,{skipSetGroupActive:!0})),this.doSetGroupAndPanelActive(s),this.fireDidMovePanel(t,o)}}}moveTabGroupToGroup(e){let{sourceGroup:t,tabGroupId:n,destinationGroup:r,destinationTarget:i,destinationIndex:a}=e,o=t.model.getTabGroups().find(e=>e.id===n);if(!o||o.panelIds.length===0)return;let s=o.label,c=o.color,l=o.collapsed,u=o.componentParams,d=[...o.panelIds],f=i&&i!==`center`?Gt(r.element):void 0,p=this.movingLock(()=>d.map(e=>t.model.removePanel(e,{skipSetActive:!1,skipSetActiveGroup:!0})).filter(e=>e!==void 0));if(p.length===0)return;let m=n=>{this.movingLock(()=>{for(let e of p)n.model.openPanel(e,{index:a,skipSetActive:!0,skipSetGroupActive:!0})});let r=n.model.createTabGroup({label:s,color:c,collapsed:l,componentParams:u});for(let e of p)n.model.addPanelToTabGroup(r.id,e.id);e.skipSetActive||this.doSetGroupAndPanelActive(n);for(let e of p)this.fireDidMovePanel(e,t)},h;if(!i||i===`center`||!f)h=r;else{let e=Kt(this.gridview.orientation,f,i);h=this.createGroupAtLocation(e)}!e.keepEmptyGroups&&t.model.size===0&&t!==h&&this.doRemoveGroup(t,{skipActive:!0}),m(h)}moveGroup(e){this.mutation(`move`,()=>this._doMoveGroup(e))}maximizeGroup(e){this.mutation(`maximize`,()=>super.maximizeGroup(e))}exitMaximizedGroup(){this.mutation(`maximize`,()=>super.exitMaximizedGroup())}_doMoveGroup(e){let t=e.from.group,n=e.to.group,r=e.to.position,i=t,a;if(r===`center`){let r=t.activePanel,i=t.model.getTabGroups().map(e=>({label:e.label,color:e.color,collapsed:e.collapsed,componentParams:e.componentParams,panelIds:[...e.panelIds]})),o=this.movingLock(()=>[...t.panels].map(e=>t.model.removePanel(e.id,{skipSetActive:!0})));t?.model.size===0&&this.doRemoveGroup(t,{skipActive:!0}),this.movingLock(()=>{for(let e of o)n.model.openPanel(e,{skipSetActive:e!==r,skipSetGroupActive:!0})}),a=o;for(let e of i){let t=n.model.createTabGroup({label:e.label,color:e.color,collapsed:e.collapsed,componentParams:e.componentParams});for(let r of e.panelIds)n.model.addPanelToTabGroup(t.id,r)}e.skipSetActive===!0&&this.activePanel||this.doSetGroupAndPanelActive(n)}else{if(t.api.location.type===`edge`){let e=t.activePanel,n=t.model.getTabGroups().map(e=>({label:e.label,color:e.color,collapsed:e.collapsed,componentParams:e.componentParams,panelIds:[...e.panelIds]})),r=this.movingLock(()=>[...t.panels].map(e=>t.model.removePanel(e.id,{skipSetActive:!0})));i=this.createGroup(),this._onDidAddGroup.fire(i),this.movingLock(()=>{for(let t of r)i.model.openPanel(t,{skipSetActive:t!==e,skipSetGroupActive:!0})});for(let e of n){let t=i.model.createTabGroup({label:e.label,color:e.color,collapsed:e.collapsed,componentParams:e.componentParams});for(let n of e.panelIds)i.model.addPanelToTabGroup(t.id,n)}}else switch(t.api.location.type){case`grid`:this.gridview.removeView(Gt(t.element));break;case`floating`:{let e=this._floatingGroupService?.findByGroup(t);if(!e)throw Error(`dockview: failed to find floating group`);this.detachFromNestedWindow(t)||e.dispose();break}case`popout`:{var o;let e=this._popoutWindowService?.findByGroup(t);if(!e)throw Error(`dockview: failed to find popout group`);if(this.detachFromNestedWindow(t))break;if((o=this._popoutWindowService)==null||o.remove(e),e.referenceGroup){let t=this.getPanel(e.referenceGroup);t&&!t.api.isVisible&&this.doRemoveGroup(t,{skipActive:!0})}e.window.dispose();break}}if(n.api.location.type===`grid`||n.api.location.type===`floating`||n.api.location.type===`popout`){let e=this.getGridviewForGroup(n),a=Gt(n.element),o=Kt(e.orientation,a,r),s;switch(e.orientation){case`VERTICAL`:s=a.length%2==0?t.api.width:t.api.height;break;case`HORIZONTAL`:s=a.length%2==0?t.api.height:t.api.width}e.addView(i,s,o),this.setGroupLocationForRoot(i,e)}}if((a??i.panels).forEach(e=>{this.fireDidMovePanel(e,t)}),this.debouncedUpdateAllPositions(),e.skipSetActive===!1){let e=n??t;this.doSetGroupAndPanelActive(e)}else i!==t&&e.skipSetActive!==!0&&this.doSetGroupAndPanelActive(i)}doSetGroupActive(e){super.doSetGroupActive(e);let t=this.activePanel;!this._moving&&t!==this._onDidActivePanelChange.value?.panel&&this.fireActivePanelChange(t)}doSetGroupAndPanelActive(e){super.doSetGroupActive(e);let t=this.activePanel;e&&this.hasMaximizedGroup()&&!this.isMaximizedGroup(e)&&this.exitMaximizedGroup(),!this._moving&&t!==this._onDidActivePanelChange.value?.panel&&this.fireActivePanelChange(t)}getNextGroupId(){let e=this.nextGroupId.next();for(;this._groups.has(e);)e=this.nextGroupId.next();return e}createGroup(e){e??={};let t=e?.id;if(t&&this._groups.has(e.id)&&(console.warn(`dockview: Duplicate group id ${e?.id}. reassigning group id to avoid errors`),t=void 0),!t)for(t=this.nextGroupId.next();this._groups.has(t);)t=this.nextGroupId.next();let n=new Xr(this,t,e);if(n.init({params:{},accessor:this}),!this._groups.has(n.id)){let e=new Q(n.model.onTabDragStart(e=>{var t;(t=this._advancedDnDService)==null||t.dispatchWillDragPanel(e)}),n.model.onGroupDragStart(e=>{var t;(t=this._advancedDnDService)==null||t.dispatchWillDragGroup(e)}),n.model.onMove(e=>{let{groupId:t,itemId:r,target:i,index:a,tabGroupId:o}=e;this.moveGroupOrPanel({from:{groupId:t,panelId:r,tabGroupId:o},to:{group:n,position:i,index:a}})}),n.model.onDidDrop(e=>{this._onDidDrop.fire(e)}),n.model.onWillDrop(e=>{var t;(t=this._advancedDnDService)==null||t.dispatchWillDrop(e)}),n.model.onWillShowOverlay(e=>{var t;if(this.options.disableDnd){e.preventDefault();return}(t=this._advancedDnDService)==null||t.dispatchWillShowOverlay(e)}),n.model.onUnhandledDragOver(e=>{this._onUnhandledDragOver.fire(e)}),n.model.onDidAddPanel(e=>{this._moving||this._onDidAddPanel.fire(e.panel)}),n.model.onDidRemovePanel(e=>{this._moving||this._onDidRemovePanel.fire(e.panel)}),n.model.onDidActivePanelChange(e=>{this._moving||e.panel===this.activePanel&&this._onDidActivePanelChange.value?.panel!==e.panel&&this.fireActivePanelChange(e.panel)}),Ke.any(n.model.onDidPanelTitleChange,n.model.onDidPanelParametersChange)(()=>{this._bufferOnDidLayoutChange.fire()}));this._groups.set(n.id,{value:n,disposable:e})}return n.initialize(),n}createPanel(e,t){let n=e.component,r=e.tabComponent??this.options.defaultTabComponent,i=new ti(this,e.id,n,r),a=new $r(e.id,n,r,this,this._api,t,i,{renderer:e.renderer,minimumWidth:e.minimumWidth,minimumHeight:e.minimumHeight,maximumWidth:e.maximumWidth,maximumHeight:e.maximumHeight});return a.init({title:e.title??e.id,params:e?.params??{}}),a}createGroupAtLocation(e,t,n,r=this.gridview){let i=this.createGroup(n);return this.doAddGroup(i,e,t,r),this.setGroupLocationForRoot(i,r),i}setGroupLocationForRoot(e,t){let n=this._popoutWindowService?.entries.find(e=>e.gridview===t);if(n){e.model.renderContainer!==n.overlayRenderContainer&&(e.model.renderContainer=n.overlayRenderContainer),e.model.dropTargetContainer=n.dropTargetContainer,e.model.location={type:`popout`,getWindow:n.getWindow,popoutUrl:n.popoutUrl};return}e.model.renderContainer!==this.overlayRenderContainer&&(e.model.renderContainer=this.overlayRenderContainer),e.model.dropTargetContainer=this.rootDropTargetContainer,e.model.location=t===this.gridview?{type:`grid`}:{type:`floating`}}getGridviewForGroup(e){let t=this._floatingGroupService?.findByGroup(e);if(t)return t.gridview;let n=this._popoutWindowService?.findByGroup(e);return n?n.gridview:this.gridview}nestedWindowMembers(e){let t=this.getGridviewForGroup(e);return t===this.gridview?[]:this.groups.filter(e=>t.element.contains(e.element))}findGroup(e){return Array.from(this._groups.values()).find(t=>t.value.model.containsPanel(e))?.value}orientationAtLocation(e){let t=this.gridview.orientation;return e.length%2==1?t:Yt(t)}updateTheme(){var e,t;let n=this._options.theme??Zr;(e=this._shellThemeClassnames)==null||e.setClassNames(n.className);let r=n.gap??0;this.gridview.margin=r;for(let e of this.floatingGroups)e.gridview.margin=r;for(let e of this._popoutWindowService?.entries??[])e.gridview.margin=r;if((t=this._shellManager)==null||t.updateTheme(r,n.edgeGroupCollapsedSize??35),n.dndOverlayBorder===void 0){var i;this.element.style.removeProperty(`--dv-drag-over-border`),(i=this._shellManager)==null||i.element.style.removeProperty(`--dv-drag-over-border`)}else{var a;this.element.style.setProperty(`--dv-drag-over-border`,n.dndOverlayBorder),(a=this._shellManager)==null||a.element.style.setProperty(`--dv-drag-over-border`,n.dndOverlayBorder)}switch(n.dndOverlayMounting){case`absolute`:this.rootDropTargetContainer.disabled=!1;break;default:this.rootDropTargetContainer.disabled=!0}let o=(n.tabGroupIndicator??`wrap`)===`none`;it(this.element,`dv-tab-group-indicator-none`,o),this._shellManager&&it(this._shellManager.element,`dv-tab-group-indicator-none`,o);for(let e of this.groups)e.model.updateTabGroups()}};function ma(e,t){return new pa(e,t).api}var ha=new Map,ga=w(null),_a=w(new Map);function va(e){let t=N(ga);_a.update(n=>{let r=new Map(n);return r.get(e)?.isLocked?r.delete(e):(t?.selectedNode||t?.selectedAnnotation)&&r.set(e,{isLocked:!0,lockedNode:t.selectedNode,lockedAnnotationId:t.selectedAnnotation}),r})}function ya(e){ga.set(e)}function ba(){let e=null;return ga.subscribe(t=>e=t)(),e}function xa(e,t,n){ha.set(e,{lazy:!1,component:t,defaultTitle:n})}function Sa(e,t,n){ha.set(e,{lazy:!0,loader:t,defaultTitle:n})}function Ca(e,t){let n=t.params;return{...e,...n,id:t.api.id,type:n?.type??e.type,title:n?.title??t.api.title??e.title}}function wa(e){let t=e,r=null,i=null,a=!1;function o(e){let n=ba();return{panelId:t.id,panelParams:t,panelApi:e.api,containerApi:e.containerApi,graph:n?.graph,selectedNode:n?.selectedNode,selectedAnnotation:n?.selectedAnnotation,activeTool:n?.activeTool||`select`,presentationMode:n?.presentationMode||!1,onRecordHistory:n?.onRecordHistory,onNodeSelect:n?.onNodeSelect,onAnnotationSelect:n?.onAnnotationSelect,onToolChange:n?.onToolChange,onOpenNodePanel:n?.onOpenNodePanel,onPanelAction:n?.onPanelAction}}return{element:document.createElement(`div`),init(e){if(t=Ca(t,e),i=this.element,i.style.height=`100%`,i.style.width=`100%`,i.style.overflow=`hidden`,i.classList.add(`dockview-panel-content`),!t||!t.type){console.error(`Panel params missing or invalid:`,t),i.innerHTML=`<div style="padding: 16px; color: var(--status-error);">Invalid panel configuration</div>`;return}let s=ha.get(t.type);if(!s){console.error(`Unknown panel type: ${t.type}`),i.innerHTML=`<div style="padding: 16px; color: var(--status-error);">Unknown panel type: ${t.type}</div>`;return}if(!s.lazy){r=n(s.component,{target:i,props:o(e)});return}i.innerHTML=`<div style="padding: 16px; color: var(--text-subtle);">Loading ${s.defaultTitle}…</div>`,s.loader().then(t=>{a||!i||(i.innerHTML=``,r=n(t.default,{target:i,props:o(e)}))}).catch(e=>{console.error(`Failed to load panel component for type ${t.type}:`,e),!(a||!i)&&(i.innerHTML=`<div style="padding: 16px; color: var(--status-error);">Failed to load ${s.defaultTitle}: ${String(e)}</div>`)})},update(e){},dispose(){a=!0,r&&i&&(d(r),r=null)}}}var Ta={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`},Ea=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},Da=Symbol(`lucide-context`),Oa=()=>i(Da),ka=new Set([`$$slots`,`$$events`,`$$legacy`,`name`,`color`,`size`,`strokeWidth`,`absoluteStrokeWidth`,`iconNode`,`children`]),Aa=m(`<svg><!><!></svg>`);function ja(e,t){ee(t,!0);let n=Oa()??{},r=V(t,`color`,19,()=>n.color??`currentColor`),i=V(t,`size`,19,()=>n.size??24),a=V(t,`strokeWidth`,19,()=>n.strokeWidth??2),s=V(t,`absoluteStrokeWidth`,19,()=>n.absoluteStrokeWidth??!1),c=V(t,`iconNode`,19,()=>[]),l=j(t,ka),u=B(()=>s()?Number(a())*24/Number(i()):a());var d=Aa();Oe(d,e=>({...Ta,...e,...l,width:i(),height:i(),stroke:r(),"stroke-width":x(u),class:[`lucide-icon lucide`,n.class,t.name&&`lucide-${t.name}`,t.class]}),[()=>!t.children&&!Ea(l)&&{"aria-hidden":`true`}]);var p=M(d);f(p,17,c,h,(e,t)=>{var n=B(()=>U(x(t),2));let r=()=>x(n)[0],i=()=>x(n)[1];var a=te(),o=G(a);le(o,r,!0,(e,t)=>{Oe(e,()=>({...i()}))}),E(e,a)});var m=P(p);_(m,()=>t.children??y),o(d),E(e,d),Ee()}var Ma=new Set([`$$slots`,`$$events`,`$$legacy`]);function Na(e,t){let n=j(t,Ma),r=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`m14.31 8 5.74 9.94`}],[`path`,{d:`M9.69 8h11.48`}],[`path`,{d:`m7.38 12 5.74-9.94`}],[`path`,{d:`M9.69 16 3.95 6.06`}],[`path`,{d:`M14.31 16H2.83`}],[`path`,{d:`m16.62 12-5.74 9.94`}]];ja(e,W({name:`aperture`},()=>n,{get iconNode(){return r}}))}var Pa=new Set([`$$slots`,`$$events`,`$$legacy`]);function Fa(e,t){let n=j(t,Pa),r=[[`path`,{d:`m16 3 4 4-4 4`}],[`path`,{d:`M20 7H4`}],[`path`,{d:`m8 21-4-4 4-4`}],[`path`,{d:`M4 17h16`}]];ja(e,W({name:`arrow-right-left`},()=>n,{get iconNode(){return r}}))}var Ia=new Set([`$$slots`,`$$events`,`$$legacy`]);function La(e,t){let n=j(t,Ia),r=[[`path`,{d:`m5 12 7-7 7 7`}],[`path`,{d:`M12 19V5`}]];ja(e,W({name:`arrow-up`},()=>n,{get iconNode(){return r}}))}var Ra=new Set([`$$slots`,`$$events`,`$$legacy`]);function za(e,t){let n=j(t,Ra),r=[[`rect`,{x:`14`,y:`14`,width:`4`,height:`6`,rx:`2`}],[`rect`,{x:`6`,y:`4`,width:`4`,height:`6`,rx:`2`}],[`path`,{d:`M6 20h4`}],[`path`,{d:`M14 10h4`}],[`path`,{d:`M6 14h2v6`}],[`path`,{d:`M14 4h2v6`}]];ja(e,W({name:`binary`},()=>n,{get iconNode(){return r}}))}var Ba=new Set([`$$slots`,`$$events`,`$$legacy`]);function Va(e,t){let n=j(t,Ba),r=[[`circle`,{cx:`15`,cy:`9`,r:`7`}],[`circle`,{cx:`9`,cy:`15`,r:`7`}]];ja(e,W({name:`blend`},()=>n,{get iconNode(){return r}}))}var Ha=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ua(e,t){let n=j(t,Ha),r=[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`}],[`path`,{d:`M12 22V12`}]];ja(e,W({name:`box`},()=>n,{get iconNode(){return r}}))}var Wa=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ga(e,t){let n=j(t,Wa),r=[[`path`,{d:`M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z`}],[`circle`,{cx:`12`,cy:`13`,r:`3`}]];ja(e,W({name:`camera`},()=>n,{get iconNode(){return r}}))}var Ka=new Set([`$$slots`,`$$events`,`$$legacy`]);function qa(e,t){let n=j(t,Ka),r=[[`path`,{d:`M20 6 9 17l-5-5`}]];ja(e,W({name:`check`},()=>n,{get iconNode(){return r}}))}var Ja=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ya(e,t){let n=j(t,Ja),r=[[`path`,{d:`m6 9 6 6 6-6`}]];ja(e,W({name:`chevron-down`},()=>n,{get iconNode(){return r}}))}var Xa=new Set([`$$slots`,`$$events`,`$$legacy`]);function Za(e,t){let n=j(t,Xa),r=[[`path`,{d:`m9 18 6-6-6-6`}]];ja(e,W({name:`chevron-right`},()=>n,{get iconNode(){return r}}))}var Qa=new Set([`$$slots`,`$$events`,`$$legacy`]);function $a(e,t){let n=j(t,Qa),r=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`}]];ja(e,W({name:`circle-alert`},()=>n,{get iconNode(){return r}}))}var eo=new Set([`$$slots`,`$$events`,`$$legacy`]);function to(e,t){let n=j(t,eo),r=[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`}],[`path`,{d:`m9 11 3 3L22 4`}]];ja(e,W({name:`circle-check-big`},()=>n,{get iconNode(){return r}}))}var no=new Set([`$$slots`,`$$events`,`$$legacy`]);function ro(e,t){let n=j(t,no),r=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`m15 9-6 6`}],[`path`,{d:`m9 9 6 6`}]];ja(e,W({name:`circle-x`},()=>n,{get iconNode(){return r}}))}var io=new Set([`$$slots`,`$$events`,`$$legacy`]);function ao(e,t){let n=j(t,io),r=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 6v6l4 2`}]];ja(e,W({name:`clock`},()=>n,{get iconNode(){return r}}))}var oo=new Set([`$$slots`,`$$events`,`$$legacy`]);function so(e,t){let n=j(t,oo),r=[[`path`,{d:`M12 2v2`}],[`path`,{d:`m4.93 4.93 1.41 1.41`}],[`path`,{d:`M20 12h2`}],[`path`,{d:`m19.07 4.93-1.41 1.41`}],[`path`,{d:`M15.947 12.65a4 4 0 0 0-5.925-4.128`}],[`path`,{d:`M13 22H7a5 5 0 1 1 4.9-6H13a3 3 0 0 1 0 6Z`}]];ja(e,W({name:`cloud-sun`},()=>n,{get iconNode(){return r}}))}var co=new Set([`$$slots`,`$$events`,`$$legacy`]);function lo(e,t){let n=j(t,co),r=[[`path`,{d:`M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z`}]];ja(e,W({name:`cloud`},()=>n,{get iconNode(){return r}}))}var uo=new Set([`$$slots`,`$$events`,`$$legacy`]);function fo(e,t){let n=j(t,uo),r=[[`path`,{d:`M14 3a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1`}],[`path`,{d:`M19 3a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1`}],[`path`,{d:`m7 15 3 3`}],[`path`,{d:`m7 21 3-3H5a2 2 0 0 1-2-2v-2`}],[`rect`,{x:`14`,y:`14`,width:`7`,height:`7`,rx:`1`}],[`rect`,{x:`3`,y:`3`,width:`7`,height:`7`,rx:`1`}]];ja(e,W({name:`combine`},()=>n,{get iconNode(){return r}}))}var po=new Set([`$$slots`,`$$events`,`$$legacy`]);function mo(e,t){let n=j(t,po),r=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 18a6 6 0 0 0 0-12v12z`}]];ja(e,W({name:`contrast`},()=>n,{get iconNode(){return r}}))}var ho=new Set([`$$slots`,`$$events`,`$$legacy`]);function go(e,t){let n=j(t,ho),r=[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`}]];ja(e,W({name:`copy`},()=>n,{get iconNode(){return r}}))}var _o=new Set([`$$slots`,`$$events`,`$$legacy`]);function vo(e,t){let n=j(t,_o),r=[[`path`,{d:`M6 2v14a2 2 0 0 0 2 2h14`}],[`path`,{d:`M18 22V8a2 2 0 0 0-2-2H2`}]];ja(e,W({name:`crop`},()=>n,{get iconNode(){return r}}))}var yo=new Set([`$$slots`,`$$events`,`$$legacy`]);function bo(e,t){let n=j(t,yo),r=[[`path`,{d:`M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41l-7.59-7.59a2.41 2.41 0 0 0-3.41 0Z`}]];ja(e,W({name:`diamond`},()=>n,{get iconNode(){return r}}))}var xo=new Set([`$$slots`,`$$events`,`$$legacy`]);function So(e,t){let n=j(t,xo),r=[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`}],[`path`,{d:`M16 8h.01`}],[`path`,{d:`M8 8h.01`}],[`path`,{d:`M8 16h.01`}],[`path`,{d:`M16 16h.01`}],[`path`,{d:`M12 12h.01`}]];ja(e,W({name:`dice-5`},()=>n,{get iconNode(){return r}}))}var Co=new Set([`$$slots`,`$$events`,`$$legacy`]);function wo(e,t){let n=j(t,Co),r=[[`circle`,{cx:`12`,cy:`12`,r:`1`}]];ja(e,W({name:`dot`},()=>n,{get iconNode(){return r}}))}var To=new Set([`$$slots`,`$$events`,`$$legacy`]);function Eo(e,t){let n=j(t,To),r=[[`path`,{d:`M7 16.3c2.2 0 4-1.83 4-4.05 0-1.16-.57-2.26-1.71-3.19S7.29 6.75 7 5.3c-.29 1.45-1.14 2.84-2.29 3.76S3 11.1 3 12.25c0 2.22 1.8 4.05 4 4.05z`}],[`path`,{d:`M12.56 6.6A10.97 10.97 0 0 0 14 3.02c.5 2.5 2 4.9 4 6.5s3 3.5 3 5.5a6.98 6.98 0 0 1-11.91 4.97`}]];ja(e,W({name:`droplets`},()=>n,{get iconNode(){return r}}))}var Do=new Set([`$$slots`,`$$events`,`$$legacy`]);function Oo(e,t){let n=j(t,Do),r=[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`}]];ja(e,W({name:`eye`},()=>n,{get iconNode(){return r}}))}var ko=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ao(e,t){let n=j(t,ko),r=[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`}],[`circle`,{cx:`10`,cy:`12`,r:`2`}],[`path`,{d:`m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22`}]];ja(e,W({name:`file-image`},()=>n,{get iconNode(){return r}}))}var jo=new Set([`$$slots`,`$$events`,`$$legacy`]);function Mo(e,t){let n=j(t,jo),r=[[`path`,{d:`M4.226 20.925A2 2 0 0 0 6 22h12a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v3.127`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`}],[`path`,{d:`m5 11-3 3`}],[`path`,{d:`m5 17-3-3h10`}]];ja(e,W({name:`file-output`},()=>n,{get iconNode(){return r}}))}var No=new Set([`$$slots`,`$$events`,`$$legacy`]);function Po(e,t){let n=j(t,No),r=[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`}],[`path`,{d:`M10 9H8`}],[`path`,{d:`M16 13H8`}],[`path`,{d:`M16 17H8`}]];ja(e,W({name:`file-text`},()=>n,{get iconNode(){return r}}))}var Fo=new Set([`$$slots`,`$$events`,`$$legacy`]);function Io(e,t){let n=j(t,Fo),r=[[`path`,{d:`m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2`}]];ja(e,W({name:`folder-open`},()=>n,{get iconNode(){return r}}))}var Lo=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ro(e,t){let n=j(t,Lo),r=[[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`}]];ja(e,W({name:`folder`},()=>n,{get iconNode(){return r}}))}var zo=new Set([`$$slots`,`$$events`,`$$legacy`]);function Bo(e,t){let n=j(t,zo),r=[[`path`,{d:`m12 14 4-4`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`}]];ja(e,W({name:`gauge`},()=>n,{get iconNode(){return r}}))}var Vo=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ho(e,t){let n=j(t,Vo),r=[[`path`,{d:`M15 6a9 9 0 0 0-9 9V3`}],[`circle`,{cx:`18`,cy:`6`,r:`3`}],[`circle`,{cx:`6`,cy:`18`,r:`3`}]];ja(e,W({name:`git-branch`},()=>n,{get iconNode(){return r}}))}var Uo=new Set([`$$slots`,`$$events`,`$$legacy`]);function Wo(e,t){let n=j(t,Uo),r=[[`circle`,{cx:`18`,cy:`18`,r:`3`}],[`circle`,{cx:`6`,cy:`6`,r:`3`}],[`path`,{d:`M6 21V9a9 9 0 0 0 9 9`}]];ja(e,W({name:`git-merge`},()=>n,{get iconNode(){return r}}))}var Go=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ko(e,t){let n=j(t,Go),r=[[`path`,{d:`M12 3v18`}],[`path`,{d:`M3 12h18`}],[`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`}]];ja(e,W({name:`grid-2x2`},()=>n,{get iconNode(){return r}}))}var qo=new Set([`$$slots`,`$$events`,`$$legacy`]);function Jo(e,t){let n=j(t,qo),r=[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`}],[`path`,{d:`M3 9h18`}],[`path`,{d:`M3 15h18`}],[`path`,{d:`M9 3v18`}],[`path`,{d:`M15 3v18`}]];ja(e,W({name:`grid-3x3`},()=>n,{get iconNode(){return r}}))}var Yo=new Set([`$$slots`,`$$events`,`$$legacy`]);function Xo(e,t){let n=j(t,Yo),r=[[`path`,{d:`M3 7V5c0-1.1.9-2 2-2h2`}],[`path`,{d:`M17 3h2c1.1 0 2 .9 2 2v2`}],[`path`,{d:`M21 17v2c0 1.1-.9 2-2 2h-2`}],[`path`,{d:`M7 21H5c-1.1 0-2-.9-2-2v-2`}],[`rect`,{width:`7`,height:`5`,x:`7`,y:`7`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`10`,y:`12`,rx:`1`}]];ja(e,W({name:`group`},()=>n,{get iconNode(){return r}}))}var Zo=new Set([`$$slots`,`$$events`,`$$legacy`]);function Qo(e,t){let n=j(t,Zo),r=[[`path`,{d:`M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2`}],[`path`,{d:`M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2`}],[`path`,{d:`M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8`}],[`path`,{d:`M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15`}]];ja(e,W({name:`hand`},()=>n,{get iconNode(){return r}}))}var $o=new Set([`$$slots`,`$$events`,`$$legacy`]);function es(e,t){let n=j(t,$o),r=[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`}],[`circle`,{cx:`9`,cy:`9`,r:`2`}],[`path`,{d:`m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21`}]];ja(e,W({name:`image`},()=>n,{get iconNode(){return r}}))}var ts=new Set([`$$slots`,`$$events`,`$$legacy`]);function ns(e,t){let n=j(t,ts),r=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 16v-4`}],[`path`,{d:`M12 8h.01`}]];ja(e,W({name:`info`},()=>n,{get iconNode(){return r}}))}var rs=new Set([`$$slots`,`$$events`,`$$legacy`]);function is(e,t){let n=j(t,rs),r=[[`path`,{d:`M10 8h.01`}],[`path`,{d:`M12 12h.01`}],[`path`,{d:`M14 8h.01`}],[`path`,{d:`M16 12h.01`}],[`path`,{d:`M18 8h.01`}],[`path`,{d:`M6 8h.01`}],[`path`,{d:`M7 16h10`}],[`path`,{d:`M8 12h.01`}],[`rect`,{width:`20`,height:`16`,x:`2`,y:`4`,rx:`2`}]];ja(e,W({name:`keyboard`},()=>n,{get iconNode(){return r}}))}var as=new Set([`$$slots`,`$$events`,`$$legacy`]);function os(e,t){let n=j(t,as),r=[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`}]];ja(e,W({name:`layers`},()=>n,{get iconNode(){return r}}))}var ss=new Set([`$$slots`,`$$events`,`$$legacy`]);function cs(e,t){let n=j(t,ss),r=[[`path`,{d:`M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5`}],[`path`,{d:`M9 18h6`}],[`path`,{d:`M10 22h4`}]];ja(e,W({name:`lightbulb`},()=>n,{get iconNode(){return r}}))}var ls=new Set([`$$slots`,`$$events`,`$$legacy`]);function us(e,t){let n=j(t,ls),r=[[`path`,{d:`M2 5h20`}],[`path`,{d:`M6 12h12`}],[`path`,{d:`M9 19h6`}]];ja(e,W({name:`list-filter`},()=>n,{get iconNode(){return r}}))}var ds=new Set([`$$slots`,`$$events`,`$$legacy`]);function fs(e,t){let n=j(t,ds),r=[[`path`,{d:`m10 17 5-5-5-5`}],[`path`,{d:`M15 12H3`}],[`path`,{d:`M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4`}]];ja(e,W({name:`log-in`},()=>n,{get iconNode(){return r}}))}var ps=new Set([`$$slots`,`$$events`,`$$legacy`]);function ms(e,t){let n=j(t,ps),r=[[`path`,{d:`m16 17 5-5-5-5`}],[`path`,{d:`M21 12H9`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`}]];ja(e,W({name:`log-out`},()=>n,{get iconNode(){return r}}))}var hs=new Set([`$$slots`,`$$events`,`$$legacy`]);function gs(e,t){let n=j(t,hs),r=[[`path`,{d:`M15 3h6v6`}],[`path`,{d:`m21 3-7 7`}],[`path`,{d:`m3 21 7-7`}],[`path`,{d:`M9 21H3v-6`}]];ja(e,W({name:`maximize-2`},()=>n,{get iconNode(){return r}}))}var _s=new Set([`$$slots`,`$$events`,`$$legacy`]);function vs(e,t){let n=j(t,_s),r=[[`path`,{d:`M5 12h14`}]];ja(e,W({name:`minus`},()=>n,{get iconNode(){return r}}))}var ys=new Set([`$$slots`,`$$events`,`$$legacy`]);function bs(e,t){let n=j(t,ys),r=[[`path`,{d:`m8 3 4 8 5-5 5 15H2L8 3z`}]];ja(e,W({name:`mountain`},()=>n,{get iconNode(){return r}}))}var xs=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ss(e,t){let n=j(t,xs),r=[[`path`,{d:`M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z`}]];ja(e,W({name:`mouse-pointer-2`},()=>n,{get iconNode(){return r}}))}var Cs=new Set([`$$slots`,`$$events`,`$$legacy`]);function ws(e,t){let n=j(t,Cs),r=[[`path`,{d:`M5 11V5H11`}],[`path`,{d:`M5 5L19 19`}]];ja(e,W({name:`move-up-left`},()=>n,{get iconNode(){return r}}))}var Ts=new Set([`$$slots`,`$$events`,`$$legacy`]);function Es(e,t){let n=j(t,Ts),r=[[`path`,{d:`M12 2v20`}],[`path`,{d:`m15 19-3 3-3-3`}],[`path`,{d:`m19 9 3 3-3 3`}],[`path`,{d:`M2 12h20`}],[`path`,{d:`m5 9-3 3 3 3`}],[`path`,{d:`m9 5 3-3 3 3`}]];ja(e,W({name:`move`},()=>n,{get iconNode(){return r}}))}var Ds=new Set([`$$slots`,`$$events`,`$$legacy`]);function Os(e,t){let n=j(t,Ds),r=[[`rect`,{x:`16`,y:`16`,width:`6`,height:`6`,rx:`1`}],[`rect`,{x:`2`,y:`16`,width:`6`,height:`6`,rx:`1`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`6`,rx:`1`}],[`path`,{d:`M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3`}],[`path`,{d:`M12 12V8`}]];ja(e,W({name:`network`},()=>n,{get iconNode(){return r}}))}var ks=new Set([`$$slots`,`$$events`,`$$legacy`]);function As(e,t){let n=j(t,ks),r=[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`}],[`path`,{d:`M12 22V12`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`}],[`path`,{d:`m7.5 4.27 9 5.15`}]];ja(e,W({name:`package`},()=>n,{get iconNode(){return r}}))}var js=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ms(e,t){let n=j(t,js),r=[[`path`,{d:`M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z`}],[`circle`,{cx:`13.5`,cy:`6.5`,r:`.5`,fill:`currentColor`}],[`circle`,{cx:`17.5`,cy:`10.5`,r:`.5`,fill:`currentColor`}],[`circle`,{cx:`6.5`,cy:`12.5`,r:`.5`,fill:`currentColor`}],[`circle`,{cx:`8.5`,cy:`7.5`,r:`.5`,fill:`currentColor`}]];ja(e,W({name:`palette`},()=>n,{get iconNode(){return r}}))}var Ns=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ps(e,t){let n=j(t,Ns),r=[[`path`,{d:`M15.707 21.293a1 1 0 0 1-1.414 0l-1.586-1.586a1 1 0 0 1 0-1.414l5.586-5.586a1 1 0 0 1 1.414 0l1.586 1.586a1 1 0 0 1 0 1.414z`}],[`path`,{d:`m18 13-1.375-6.874a1 1 0 0 0-.746-.776L3.235 2.028a1 1 0 0 0-1.207 1.207L5.35 15.879a1 1 0 0 0 .776.746L13 18`}],[`path`,{d:`m2.3 2.3 7.286 7.286`}],[`circle`,{cx:`11`,cy:`11`,r:`2`}]];ja(e,W({name:`pen-tool`},()=>n,{get iconNode(){return r}}))}var Fs=new Set([`$$slots`,`$$events`,`$$legacy`]);function Is(e,t){let n=j(t,Fs),r=[[`path`,{d:`M5 12h14`}],[`path`,{d:`M12 5v14`}]];ja(e,W({name:`plus`},()=>n,{get iconNode(){return r}}))}var Ls=new Set([`$$slots`,`$$events`,`$$legacy`]);function Rs(e,t){let n=j(t,Ls),r=[[`path`,{d:`M19.07 4.93A10 10 0 0 0 6.99 3.34`}],[`path`,{d:`M4 6h.01`}],[`path`,{d:`M2.29 9.62A10 10 0 1 0 21.31 8.35`}],[`path`,{d:`M16.24 7.76A6 6 0 1 0 8.23 16.67`}],[`path`,{d:`M12 18h.01`}],[`path`,{d:`M17.99 11.66A6 6 0 0 1 15.77 16.67`}],[`circle`,{cx:`12`,cy:`12`,r:`2`}],[`path`,{d:`m13.41 10.59 5.66-5.66`}]];ja(e,W({name:`radar`},()=>n,{get iconNode(){return r}}))}var zs=new Set([`$$slots`,`$$events`,`$$legacy`]);function Bs(e,t){let n=j(t,zs),r=[[`path`,{d:`M22 17a10 10 0 0 0-20 0`}],[`path`,{d:`M6 17a6 6 0 0 1 12 0`}],[`path`,{d:`M10 17a2 2 0 0 1 4 0`}]];ja(e,W({name:`rainbow`},()=>n,{get iconNode(){return r}}))}var Vs=new Set([`$$slots`,`$$events`,`$$legacy`]);function Hs(e,t){let n=j(t,Vs),r=[[`path`,{d:`M21.3 15.3a2.4 2.4 0 0 1 0 3.4l-2.6 2.6a2.4 2.4 0 0 1-3.4 0L2.7 8.7a2.41 2.41 0 0 1 0-3.4l2.6-2.6a2.41 2.41 0 0 1 3.4 0Z`}],[`path`,{d:`m14.5 12.5 2-2`}],[`path`,{d:`m11.5 9.5 2-2`}],[`path`,{d:`m8.5 6.5 2-2`}],[`path`,{d:`m17.5 15.5 2-2`}]];ja(e,W({name:`ruler`},()=>n,{get iconNode(){return r}}))}var Us=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ws(e,t){let n=j(t,Us),r=[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`}]];ja(e,W({name:`save`},()=>n,{get iconNode(){return r}}))}var Gs=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ks(e,t){let n=j(t,Gs),r=[[`path`,{d:`M3 7V5a2 2 0 0 1 2-2h2`}],[`path`,{d:`M17 3h2a2 2 0 0 1 2 2v2`}],[`path`,{d:`M21 17v2a2 2 0 0 1-2 2h-2`}],[`path`,{d:`M7 21H5a2 2 0 0 1-2-2v-2`}]];ja(e,W({name:`scan`},()=>n,{get iconNode(){return r}}))}var qs=new Set([`$$slots`,`$$events`,`$$legacy`]);function Js(e,t){let n=j(t,qs),r=[[`path`,{d:`M15 12h-5`}],[`path`,{d:`M15 8h-5`}],[`path`,{d:`M19 17V5a2 2 0 0 0-2-2H4`}],[`path`,{d:`M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3`}]];ja(e,W({name:`scroll-text`},()=>n,{get iconNode(){return r}}))}var Ys=new Set([`$$slots`,`$$events`,`$$legacy`]);function Xs(e,t){let n=j(t,Ys),r=[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`}],[`circle`,{cx:`12`,cy:`12`,r:`3`}]];ja(e,W({name:`settings`},()=>n,{get iconNode(){return r}}))}var Zs=new Set([`$$slots`,`$$events`,`$$legacy`]);function Qs(e,t){let n=j(t,Zs),r=[[`path`,{d:`M18 7V5a1 1 0 0 0-1-1H6.5a.5.5 0 0 0-.4.8l4.5 6a2 2 0 0 1 0 2.4l-4.5 6a.5.5 0 0 0 .4.8H17a1 1 0 0 0 1-1v-2`}]];ja(e,W({name:`sigma`},()=>n,{get iconNode(){return r}}))}var $s=new Set([`$$slots`,`$$events`,`$$legacy`]);function ec(e,t){let n=j(t,$s),r=[[`path`,{d:`M10 5H3`}],[`path`,{d:`M12 19H3`}],[`path`,{d:`M14 3v4`}],[`path`,{d:`M16 17v4`}],[`path`,{d:`M21 12h-9`}],[`path`,{d:`M21 19h-5`}],[`path`,{d:`M21 5h-7`}],[`path`,{d:`M8 10v4`}],[`path`,{d:`M8 12H3`}]];ja(e,W({name:`sliders-horizontal`},()=>n,{get iconNode(){return r}}))}var tc=new Set([`$$slots`,`$$events`,`$$legacy`]);function nc(e,t){let n=j(t,tc),r=[[`path`,{d:`M10 8h4`}],[`path`,{d:`M12 21v-9`}],[`path`,{d:`M12 8V3`}],[`path`,{d:`M17 16h4`}],[`path`,{d:`M19 12V3`}],[`path`,{d:`M19 21v-5`}],[`path`,{d:`M3 14h4`}],[`path`,{d:`M5 10V3`}],[`path`,{d:`M5 21v-7`}]];ja(e,W({name:`sliders-vertical`},()=>n,{get iconNode(){return r}}))}var rc=new Set([`$$slots`,`$$events`,`$$legacy`]);function ic(e,t){let n=j(t,rc),r=[[`path`,{d:`m10 20-1.25-2.5L6 18`}],[`path`,{d:`M10 4 8.75 6.5 6 6`}],[`path`,{d:`m14 20 1.25-2.5L18 18`}],[`path`,{d:`m14 4 1.25 2.5L18 6`}],[`path`,{d:`m17 21-3-6h-4`}],[`path`,{d:`m17 3-3 6 1.5 3`}],[`path`,{d:`M2 12h6.5L10 9`}],[`path`,{d:`m20 10-1.5 2 1.5 2`}],[`path`,{d:`M22 12h-6.5L14 15`}],[`path`,{d:`m4 10 1.5 2L4 14`}],[`path`,{d:`m7 21 3-6-1.5-3`}],[`path`,{d:`m7 3 3 6h4`}]];ja(e,W({name:`snowflake`},()=>n,{get iconNode(){return r}}))}var ac=new Set([`$$slots`,`$$events`,`$$legacy`]);function oc(e,t){let n=j(t,ac),r=[[`path`,{d:`M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z`}],[`path`,{d:`M20 2v4`}],[`path`,{d:`M22 4h-4`}],[`circle`,{cx:`4`,cy:`20`,r:`2`}]];ja(e,W({name:`sparkles`},()=>n,{get iconNode(){return r}}))}var sc=new Set([`$$slots`,`$$events`,`$$legacy`]);function cc(e,t){let n=j(t,sc),r=[[`circle`,{cx:`19`,cy:`5`,r:`2`}],[`circle`,{cx:`5`,cy:`19`,r:`2`}],[`path`,{d:`M5 17A12 12 0 0 1 17 5`}]];ja(e,W({name:`spline`},()=>n,{get iconNode(){return r}}))}var lc=new Set([`$$slots`,`$$events`,`$$legacy`]);function uc(e,t){let n=j(t,lc),r=[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`}]];ja(e,W({name:`square`},()=>n,{get iconNode(){return r}}))}var dc=new Set([`$$slots`,`$$events`,`$$legacy`]);function fc(e,t){let n=j(t,dc),r=[[`path`,{d:`M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z`}],[`path`,{d:`M15 3v5a1 1 0 0 0 1 1h5`}]];ja(e,W({name:`sticky-note`},()=>n,{get iconNode(){return r}}))}var pc=new Set([`$$slots`,`$$events`,`$$legacy`]);function mc(e,t){let n=j(t,pc),r=[[`circle`,{cx:`12`,cy:`12`,r:`4`}],[`path`,{d:`M12 2v2`}],[`path`,{d:`M12 20v2`}],[`path`,{d:`m4.93 4.93 1.41 1.41`}],[`path`,{d:`m17.66 17.66 1.41 1.41`}],[`path`,{d:`M2 12h2`}],[`path`,{d:`M20 12h2`}],[`path`,{d:`m6.34 17.66-1.41 1.41`}],[`path`,{d:`m19.07 4.93-1.41 1.41`}]];ja(e,W({name:`sun`},()=>n,{get iconNode(){return r}}))}var hc=new Set([`$$slots`,`$$events`,`$$legacy`]);function gc(e,t){let n=j(t,hc),r=[[`path`,{d:`M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z`}],[`circle`,{cx:`7.5`,cy:`7.5`,r:`.5`,fill:`currentColor`}]];ja(e,W({name:`tag`},()=>n,{get iconNode(){return r}}))}var _c=new Set([`$$slots`,`$$events`,`$$legacy`]);function vc(e,t){let n=j(t,_c),r=[[`path`,{d:`m10.065 12.493-6.18 1.318a.934.934 0 0 1-1.108-.702l-.537-2.15a1.07 1.07 0 0 1 .691-1.265l13.504-4.44`}],[`path`,{d:`m13.56 11.747 4.332-.924`}],[`path`,{d:`m16 21-3.105-6.21`}],[`path`,{d:`M16.485 5.94a2 2 0 0 1 1.455-2.425l1.09-.272a1 1 0 0 1 1.212.727l1.515 6.06a1 1 0 0 1-.727 1.213l-1.09.272a2 2 0 0 1-2.425-1.455z`}],[`path`,{d:`m6.158 8.633 1.114 4.456`}],[`path`,{d:`m8 21 3.105-6.21`}],[`circle`,{cx:`12`,cy:`13`,r:`2`}]];ja(e,W({name:`telescope`},()=>n,{get iconNode(){return r}}))}var yc=new Set([`$$slots`,`$$events`,`$$legacy`]);function bc(e,t){let n=j(t,yc),r=[[`path`,{d:`M12 19h8`}],[`path`,{d:`m4 17 6-6-6-6`}]];ja(e,W({name:`terminal`},()=>n,{get iconNode(){return r}}))}var xc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Sc(e,t){let n=j(t,xc),r=[[`line`,{x1:`10`,x2:`14`,y1:`2`,y2:`2`}],[`line`,{x1:`12`,x2:`15`,y1:`14`,y2:`11`}],[`circle`,{cx:`12`,cy:`14`,r:`8`}]];ja(e,W({name:`timer`},()=>n,{get iconNode(){return r}}))}var Cc=new Set([`$$slots`,`$$events`,`$$legacy`]);function wc(e,t){let n=j(t,Cc),r=[[`path`,{d:`M13.73 4a2 2 0 0 0-3.46 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z`}]];ja(e,W({name:`triangle`},()=>n,{get iconNode(){return r}}))}var Tc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ec(e,t){let n=j(t,Tc),r=[[`path`,{d:`M12 4v16`}],[`path`,{d:`M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2`}],[`path`,{d:`M9 20h6`}]];ja(e,W({name:`type`},()=>n,{get iconNode(){return r}}))}var Dc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Oc(e,t){let n=j(t,Dc),r=[[`path`,{d:`M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z`}],[`path`,{d:`M16 9a5 5 0 0 1 0 6`}],[`path`,{d:`M19.364 18.364a9 9 0 0 0 0-12.728`}]];ja(e,W({name:`volume-2`},()=>n,{get iconNode(){return r}}))}var kc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ac(e,t){let n=j(t,kc),r=[[`path`,{d:`M2 12q2.5 2 5 0t5 0 5 0 5 0`}],[`path`,{d:`M2 19q2.5 2 5 0t5 0 5 0 5 0`}],[`path`,{d:`M2 5q2.5 2 5 0t5 0 5 0 5 0`}]];ja(e,W({name:`waves-horizontal`},()=>n,{get iconNode(){return r}}))}var jc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Mc(e,t){let n=j(t,jc),r=[[`path`,{d:`M12.8 19.6A2 2 0 1 0 14 16H2`}],[`path`,{d:`M17.5 8a2.5 2.5 0 1 1 2 4H2`}],[`path`,{d:`M9.8 4.4A2 2 0 1 1 11 8H2`}]];ja(e,W({name:`wind`},()=>n,{get iconNode(){return r}}))}var Nc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Pc(e,t){let n=j(t,Nc),r=[[`rect`,{width:`8`,height:`8`,x:`3`,y:`3`,rx:`2`}],[`path`,{d:`M7 11v4a2 2 0 0 0 2 2h4`}],[`rect`,{width:`8`,height:`8`,x:`13`,y:`13`,rx:`2`}]];ja(e,W({name:`workflow`},()=>n,{get iconNode(){return r}}))}var Fc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ic(e,t){let n=j(t,Fc),r=[[`path`,{d:`M18 6 6 18`}],[`path`,{d:`m6 6 12 12`}]];ja(e,W({name:`x`},()=>n,{get iconNode(){return r}}))}var Lc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Rc(e,t){let n=j(t,Lc),r=[[`path`,{d:`M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z`}]];ja(e,W({name:`zap`},()=>n,{get iconNode(){return r}}))}function zc(e,t){ee(t,!1);let n=Y(),r=V(t,`name`,8),i=V(t,`size`,8,16),a=V(t,`color`,8,void 0),o=V(t,`strokeWidth`,8,2),s=V(t,`class`,8,``),c={Settings:Xs,Plus:Is,X:Ic,Triangle:wc,Ruler:Hs,Timer:Sc,MousePointer2:Ss,Keyboard:is,Eye:Oo,Save:Ws,Palette:Ms,Droplets:Eo,Sun:mc,Sliders:nc,Camera:Ga,Volume2:Oc,Zap:Rc,FileText:Po,FolderOpen:Io,Copy:go,Package:As,Info:ns,Clock:ao,Check:qa,CheckCircle:to,XCircle:ro,MoveUpLeft:ws,Hand:Qo,Waves:Ac,ChevronDown:Ya,ChevronRight:Za,SlidersHorizontal:ec,Network:Os,Workflow:Pc,ScrollText:Js,Type:Ec,Image:es,Folder:Ro,Minus:vs,PenTool:Ps,StickyNote:fc,FileImage:Ao,Square:uc,Box:Ua,Move:Es,Maximize2:gs,Layers:os,GitMerge:Wo,Dice5:So,ListFilter:us,Snowflake:ic,LogIn:fs,LogOut:ms,ArrowUp:La,CloudSun:so,Telescope:vc,Rainbow:Bs,Mountain:bs,Crop:vo,Contrast:mo,Scan:Ks,Spline:cc,Dot:wo,Grid2x2:Ko,Tag:gc,Aperture:Na,Gauge:Bo,Wind:Mc,Combine:fo,Group:Xo,FileOutput:Mo,Sparkles:oc,Binary:za,Radar:Rs,ArrowRightLeft:Fa,Cloud:lo,Blend:Va,Lightbulb:cs,Grid3x3:Jo,Terminal:bc,View:Oo,GitGraph:Ho,Logs:bc,Grid:Jo,Gradient:Va,GitBranch:Ho};J(()=>(A(r()),Xs),()=>{L(n,c[r()]||Xs)}),he();var l=te(),u=G(l);g(u,()=>x(n),(e,t)=>{t(e,{get size(){return i()},get color(){return a()},get strokeWidth(){return o()},get class(){return s()}})}),E(e,l),Ee()}var Bc=u(`<span aria-hidden="true"><!></span>`);function Vc(e,t){ee(t,!1);let n=Y(),r=V(t,`icon`,8),i=V(t,`size`,8,14),a=V(t,`class`,8,``);J(()=>A(r()),()=>{L(n,/^[A-Z][A-Za-z0-9]+$/.test(r()))}),he(),ue();var s=Bc(),c=M(s),l=e=>{zc(e,{get name(){return r()},get size(){return i()}})},u=e=>{var t=ve();K(()=>D(t,r())),E(e,t)};Z(c,e=>{x(n)?e(l):e(u,-1)}),o(s),K(()=>v(s,1,H(a()),`svelte-4q1po5`)),E(e,s),Ee()}var Hc=[`width`,`height`];function Uc(e,t=200){let n=typeof e==`number`&&Number.isFinite(e)?e:NaN;return Number.isFinite(n)?n<=16?Math.max(t,80):Math.round(n):t}function Wc(e){return Math.max(0,Math.round(typeof e==`number`&&Number.isFinite(e)?e:0))}function Gc(e,t,n){if(e.has(t))return e;let r=new Map(e);return r.set(t,{size:Uc(n.size),minimum:Wc(n.minimum),axis:n.axis}),r}function Kc(e,t){let n=e.get(t);if(!n)return{map:e,restore:null};let r=new Map(e);return r.delete(t),{map:r,restore:n}}function qc(e,t){if(!e.has(t))return e;let n=new Map(e);return n.delete(t),n}function Jc(e){return Object.fromEntries(e)}function Yc(e){let t=new Map;if(!e||typeof e!=`object`||Array.isArray(e))return t;for(let[n,r]of Object.entries(e)){if(!n||!r||typeof r!=`object`)continue;let e=r;Hc.includes(e.axis)&&(typeof e.size!=`number`||!Number.isFinite(e.size)||t.set(n,{size:Uc(e.size),minimum:Wc(e.minimum),axis:e.axis}))}return t}function Xc(e){let t=[],n=(e,n)=>{let r=e?.data?.id;typeof r==`string`&&t.push({id:r,size:Number(e.size)||0,axis:n})},r=(e,t)=>{if(e?.type!==`branch`||!Array.isArray(e.data))return;let i=t===`width`?`height`:`width`;for(let a of e.data)a?.type===`leaf`?n(a,t):r(a,i)},i=e?.orientation===Ft.HORIZONTAL?`width`:`height`;return e?.root?.type===`leaf`?n(e.root,i):r(e?.root,i),t}function Zc(e,t){return Xc(e).find(e=>e.id===t)?.axis??null}function Qc(e,t){let n=t;for(let t of Xc(e))t.size>16||n.has(t.id)||(n=Gc(n,t.id,{size:void 0,minimum:0,axis:t.axis}));return n}var $c=`cascade-dockview-layout`,el=`cascade-dockview-folds`;function tl(e){return e.panel?.id??null}var nl=[{type:`graph`,label:`Graph`,icon:`⬡`},{type:`viewer`,label:`Viewer`,icon:`👁`},{type:`inspector`,label:`Parameters`,icon:`⚙`},{type:`definition`,label:`Definition`,icon:`❖`},{type:`info`,label:`Node Info`,icon:`ℹ`},{type:`log`,label:`Log`,icon:`📋`},{type:`timeline`,label:`Timeline`,icon:`⏱`},{type:`agent`,label:`Agent`,icon:`✦`}],rl=w([...nl]);function il(e){rl.set([...nl,...e.map(e=>({type:`project:${e.name}`,label:e.title,icon:e.icon??`▣`}))])}var al=w(new Map);function ol(e){return N(al).has(e)}function sl(e,t){let r=N(rl).find(e=>e.type===t)?.icon;if(!r)return;let i=n(Vc,{target:e,props:{icon:r,size:12}});return()=>{d(i)}}var cl=new class{#e;get _api(){return x(this.#e)}set _api(e){L(this.#e,e,!0)}#t;get _activePanel(){return x(this.#t)}set _activePanel(e){L(this.#t,e,!0)}#n;get _panels(){return x(this.#n)}set _panels(e){L(this.#n,e,!0)}#r;get _isReady(){return x(this.#r)}set _isReady(e){L(this.#r,e,!0)}constructor(){this.#e=_e(null),this.#t=_e(null),this.#n=_e(de(new Map)),this.#r=_e(!1),this._groupChrome=new Map,this.onAddPanelClick=null}get api(){return this._api}get activePanel(){return this._activePanel}get panels(){return this._panels}get isReady(){return this._isReady}get minimizedGroups(){return N(al)}initialize(e){let t=this,n=ma(e,{createComponent:e=>wa({id:e.id,type:e.name,title:e.name.charAt(0).toUpperCase()+e.name.slice(1)}),createRightHeaderActionComponent:e=>{let n=document.createElement(`div`);n.className=`cascade-header-actions`;let r=document.createElement(`button`);r.className=`cascade-fold-btn`;let i=e=>{r.classList.toggle(`folded`,e),r.title=e?`Unfold panel`:`Fold panel to a strip`,r.setAttribute(`aria-label`,r.title),r.setAttribute(`aria-expanded`,e?`false`:`true`),r.innerHTML=e?`<svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 15 12 9 18 15"/></svg>`:`<svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"/></svg>`};i(!1),r.onclick=n=>{n.stopPropagation(),t.toggleMinimizeGroup(e.id)},n.appendChild(r);let a=document.createElement(`button`);a.className=`cascade-add-panel-btn`,a.innerHTML=`+`,a.title=`Add panel`,a.onclick=n=>{n.stopPropagation();let r=a.getBoundingClientRect(),i=e.id;t.onAddPanelClick&&t.onAddPanelClick(i,{x:r.left,y:r.bottom})},n.appendChild(a);let o=null;return{element:n,init:()=>{t.registerGroupChrome(e.id,n),o=al.subscribe(t=>i(t.has(e.id)))},dispose:()=>{o?.(),t.unregisterGroupChrome(e.id)}}},createTabComponent:e=>{let n=document.createElement(`div`);n.className=`cascade-tab`;let r=document.createElement(`button`);r.className=`cascade-tab-lock`,r.innerHTML=`<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg>`,r.title=`Lock to current node`,r.style.display=`none`,n.appendChild(r);let i=document.createElement(`span`);i.className=`cascade-tab-title`;let a=document.createElement(`span`);a.className=`cascade-tab-icon`,n.appendChild(a),n.appendChild(i);let o=document.createElement(`button`);o.className=`cascade-tab-close`,o.innerHTML=`×`,o.title=`Close`,n.appendChild(o);let s=null,c=``,l=``,u=null,d=null,f,p=()=>{let e=N(_a).get(c),t=N(ga),n=!!(t?.selectedNode||t?.selectedAnnotation);e?.isLocked?(r.classList.add(`locked`),r.innerHTML=`<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg>`,r.title=`Unlock (follow selection)`,r.disabled=!1):(r.classList.remove(`locked`),r.innerHTML=`<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 5-5 5 5 0 0 1 5 5v4"/><line x1="17" y1="7" x2="21" y2="3"/></svg>`,r.title=n?`Lock to current node`:`Lock to empty view`,r.disabled=!1)};return{element:n,init:e=>{s=e.api,c=e.api.id,l=e.params?.type||``,f=sl(a,l),f||a.remove(),(l===`viewer`||l===`inspector`)&&(r.style.display=`flex`,u=_a.subscribe(()=>{p()}),d=ga.subscribe(()=>{p()}),r.onclick=e=>{e.stopPropagation(),va(c)},p()),i.textContent=s.title||`Untitled`,s.onDidTitleChange(()=>{i.textContent=s.title||`Untitled`}),i.ondblclick=e=>{e.stopPropagation();let n=s?.group;n?.id&&t.toggleMinimizeGroup(n.id)},o.onclick=e=>{e.stopPropagation(),s.close()}},dispose:()=>{s=null,u&&u(),d&&d(),f?.()}}},disableFloatingGroups:!0,defaultTabComponent:`cascadeTab`});this._api=n,n.onDidActivePanelChange(e=>{this._activePanel=tl(e)}),n.onDidAddPanel(e=>{let t=e.params;t&&(this._panels=new Map(this._panels).set(e.id,t))}),n.onDidRemovePanel(e=>{let t=new Map(this._panels);t.delete(e.id),this._panels=t}),this.loadLayout(),this._isReady=!0}addPanel(e){if(!this._api)return;let t={id:e.id,type:e.type,title:e.title,...e.params},n={id:e.id,component:e.type,title:e.title,params:t};if(e.referencePanel&&e.position){let t=this._api.getPanel(e.referencePanel);t&&(n.position={referencePanel:t,direction:e.position===`within`?void 0:e.position})}this._api.addPanel(n)}removePanel(e){if(!this._api)return;let t=this._api.getPanel(e);t&&t.api.close()}focusPanel(e){if(!this._api)return;let t=this._api.getPanel(e);t&&(this.unfoldGroupContainingPanel(e),t.api.setActive())}focusOrOpenPanel(e,t,n,r,i=`within`){if(!this._api)return;if(this._api.getPanel(e)){this.focusPanel(e);return}let a=r&&this._api.getPanel(r)?r:void 0;this.addPanel({id:e,type:t,title:n,position:a?i:void 0,referencePanel:a}),this.focusPanel(e)}hasPanel(e){return this._panels.has(e)}addPanelToGroup(e,t){if(!this._api)return;let n=e.startsWith(`project:`)?e.slice(8):void 0,r=n?e:`${e}-${Date.now()}`;if(n&&this._panels.has(r)){this.focusPanel(r);return}let i=N(rl).find(t=>t.type===e)?.label??e.charAt(0).toUpperCase()+e.slice(1),a=this._api.getGroup(t);if(!a)return;let o=a.panels,s=o.length>0?o[0]:null;this.addPanel({id:r,type:e,title:i,position:`within`,referencePanel:s?.id,params:n?{projectPanelName:n}:void 0})}openProjectPanel(e,t){let n=`project:${e}`,r=t?`${n}:${t}`:n;if(this._panels.has(r)){this.focusPanel(r);return}let i=this._activePanel||[...this._panels.keys()][0];this.addPanel({id:r,type:n,title:N(rl).find(e=>e.type===n)?.label??e,position:i?`within`:void 0,referencePanel:i,params:{projectPanelName:e,sourceNodeId:t}})}isActivePanelMaximized(){return this._api?this._api.hasMaximizedGroup?.()??!1:!1}toggleMaximizeActivePanel(){if(this._api){if(this._api.hasMaximizedGroup())this._api.exitMaximizedGroup();else{let e=this._api.getPanel(this._activePanel||``);e&&this._api.maximizeGroup(e)}}}groupElement(e){return this._groupChrome.get(e)?.closest(`.dv-groupview`)??null}registerGroupChrome(e,t){this._groupChrome.set(e,t);let n=()=>this.applyFoldClass(e,ol(e));n(),this.groupElement(e)||queueMicrotask(n)}unregisterGroupChrome(e){this._groupChrome.delete(e)}applyFoldClass(e,t){this.groupElement(e)?.classList.toggle(`cascade-group-folded`,t)}foldGroup(e){if(!this._api||ol(e))return;let t=this._api.getGroup(e);if(!t)return;let n=Zc(this._api.toJSON().grid,e);n&&(al.update(r=>Gc(r,e,{size:t[n],minimum:n===`width`?t.minimumWidth:t.minimumHeight,axis:n})),t.api.setConstraints(n===`width`?{minimumWidth:8}:{minimumHeight:8}),t.api.setSize({[n]:8}),this.applyFoldClass(e,!0),this.saveFolds(),this.saveLayout())}unfoldGroup(e){if(!this._api)return;let t=null;if(al.update(n=>{let r=Kc(n,e);return t=r.restore,r.map}),!t)return;let n=t,r=this._api.getGroup(e);this.applyFoldClass(e,!1),r&&(r.api.setConstraints(n.axis===`width`?{minimumWidth:n.minimum}:{minimumHeight:n.minimum}),r.api.setSize({[n.axis]:n.size})),this.saveFolds(),this.saveLayout()}toggleMinimizeGroup(e){ol(e)?this.unfoldGroup(e):this.foldGroup(e)}unfoldGroupContainingPanel(e){let t=this._api?.getPanel(e)?.group?.id;t&&ol(t)&&this.unfoldGroup(t)}unfoldAllGroups(){for(let e of[...N(al).keys()])this.unfoldGroup(e)}saveFolds(){try{let e=N(al);e.size===0?localStorage.removeItem(el):localStorage.setItem(el,JSON.stringify(Jc(e)))}catch(e){console.warn(`Failed to save folded groups:`,e)}}restoreFolds(e){if(!this._api)return;let t=new Map;try{let e=localStorage.getItem(el);e&&(t=Yc(JSON.parse(e)))}catch(e){console.warn(`Failed to parse folded groups:`,e)}t=Qc(e.grid,t);let n=new Set(this._api.groups.map(e=>e.id));for(let e of[...t.keys()])n.has(e)||(t=qc(t,e));al.set(t);for(let[e,n]of t){let t=this._api.getGroup(e);t&&(t.api.setConstraints(n.axis===`width`?{minimumWidth:8}:{minimumHeight:8}),t.api.setSize({[n.axis]:8}),this.applyFoldClass(e,!0))}this.saveFolds()}openCodeEditor(e,t){let n=`code-${e}`;if(this._panels.has(n)){this.focusPanel(n);return}this.addPanel({id:n,type:`code`,title:`Code: ${t}`,position:`within`,referencePanel:`graph-main`,params:{nodeId:e}})}filterCodePanelsFromLayout(e){let t=new Set(N(rl).map(e=>e.type));if(e.panels){let n={};for(let[r,i]of Object.entries(e.panels)){let e=i?.contentComponent;!r.startsWith(`code-`)&&(!String(e).startsWith(`project:`)||t.has(e))&&(n[r]=i)}e.panels=n}e.grid?.root&&this.filterCodePanelsFromGridNode(e.grid.root,new Set(Object.keys(e.panels??{})))}filterCodePanelsFromGridNode(e,t){if(e){if(e.type===`leaf`&&e.data?.views)e.data.views=e.data.views.filter(e=>!e.startsWith(`code-`)&&(!t||t.has(e))),e.data.activeView?.startsWith(`code-`)&&(e.data.activeView=e.data.views[0]||null);else if(e.type===`branch`&&e.data)for(let n of e.data)this.filterCodePanelsFromGridNode(n,t)}}saveLayout(){if(this._api)try{let e=this._api.toJSON();localStorage.setItem($c,JSON.stringify(e))}catch(e){console.warn(`Failed to save layout:`,e)}}loadLayout(e){if(!this._api)return;let t=e,n=!1;if(!t)try{let e=localStorage.getItem($c);e&&(t=JSON.parse(e),n=!0,t&&this.filterCodePanelsFromLayout(t))}catch(e){console.warn(`Failed to parse saved layout:`,e),localStorage.removeItem($c)}t||=this.getDefaultLayout();try{this._api.fromJSON(t),this.restoreFolds(t)}catch(e){if(console.warn(`Failed to load layout:`,e),n){localStorage.removeItem($c);try{this._api.fromJSON(this.getDefaultLayout())}catch(e){console.error(`Failed to load default layout:`,e),this.createDefaultPanels()}}else console.error(`Default layout failed, creating panels manually`),this.createDefaultPanels()}}createDefaultPanels(){if(this._api)try{this._api.addPanel({id:`graph-main`,component:`graph`,title:`Graph`,params:{id:`graph-main`,type:`graph`,title:`Graph`}}),this._api.addPanel({id:`timeline-main`,component:`timeline`,title:`Timeline`,position:{referencePanel:`graph-main`,direction:`below`},params:{id:`timeline-main`,type:`timeline`,title:`Timeline`}}),this._api.addPanel({id:`viewer-main`,component:`viewer`,title:`Viewer`,position:{referencePanel:`graph-main`,direction:`right`},params:{id:`viewer-main`,type:`viewer`,title:`Viewer`}}),this._api.addPanel({id:`log-main`,component:`log`,title:`Log`,position:{referencePanel:`viewer-main`,direction:`below`},params:{id:`log-main`,type:`log`,title:`Log`}}),this._api.addPanel({id:`agent-main`,component:`agent`,title:`Agent`,position:{referencePanel:`log-main`,direction:`within`},params:{id:`agent-main`,type:`agent`,title:`Agent`}}),this._api.addPanel({id:`inspector-main`,component:`inspector`,title:`Parameters`,position:{referencePanel:`viewer-main`,direction:`right`},params:{id:`inspector-main`,type:`inspector`,title:`Parameters`}}),this._api.addPanel({id:`definition-main`,component:`definition`,title:`Definition`,position:{referencePanel:`inspector-main`,direction:`within`},params:{id:`definition-main`,type:`definition`,title:`Definition`}})}catch(e){console.error(`Failed to create default panels:`,e)}}resetLayout(){this._api&&(al.set(new Map),this.saveFolds(),this._api.clear(),this._api.fromJSON(this.getDefaultLayout()),this.saveLayout())}getDefaultLayout(){return{grid:{root:{type:`branch`,data:[{type:`branch`,data:[{type:`leaf`,data:{views:[`graph-main`],activeView:`graph-main`,id:`group-graph`},size:620},{type:`leaf`,data:{views:[`timeline-main`],activeView:`timeline-main`,id:`group-timeline`},size:180}],size:500},{type:`branch`,data:[{type:`leaf`,data:{views:[`viewer-main`],activeView:`viewer-main`,id:`group-viewer`},size:600},{type:`leaf`,data:{views:[`log-main`,`agent-main`],activeView:`log-main`,id:`group-log`},size:200}],size:250},{type:`leaf`,data:{views:[`inspector-main`,`definition-main`],activeView:`inspector-main`,id:`group-inspector`},size:250}]},width:1e3,height:800,orientation:Ft.HORIZONTAL},panels:{"graph-main":{id:`graph-main`,contentComponent:`graph`,title:`Graph`,params:{id:`graph-main`,type:`graph`,title:`Graph`}},"viewer-main":{id:`viewer-main`,contentComponent:`viewer`,title:`Viewer`,params:{id:`viewer-main`,type:`viewer`,title:`Viewer`}},"inspector-main":{id:`inspector-main`,contentComponent:`inspector`,title:`Parameters`,params:{id:`inspector-main`,type:`inspector`,title:`Parameters`}},"definition-main":{id:`definition-main`,contentComponent:`definition`,title:`Definition`,params:{id:`definition-main`,type:`definition`,title:`Definition`}},"timeline-main":{id:`timeline-main`,contentComponent:`timeline`,title:`Timeline`,params:{id:`timeline-main`,type:`timeline`,title:`Timeline`}},"log-main":{id:`log-main`,contentComponent:`log`,title:`Log`,params:{id:`log-main`,type:`log`,title:`Log`}},"agent-main":{id:`agent-main`,contentComponent:`agent`,title:`Agent`,params:{id:`agent-main`,type:`agent`,title:`Agent`}}},activeGroup:`group-graph`}}exportLayout(){return this._api?.toJSON()??null}dispose(){this.saveLayout(),this._api?.dispose(),this._api=null,this._activePanel=null,this._isReady=!1,this._panels=new Map,this._groupChrome.clear()}};function ll(e){if(typeof e==`object`&&!Array.isArray(e)&&`r`in e&&`g`in e&&`b`in e){let t=e,n=t.r<=1&&t.g<=1&&t.b<=1;return{r:n?t.r:t.r/255,g:n?t.g:t.g/255,b:n?t.b:t.b/255,a:t.a===void 0?1:n?t.a:t.a/255}}if(Array.isArray(e)){let t=e.every(e=>e<=1);return{r:t?e[0]:e[0]/255,g:t?e[1]:e[1]/255,b:t?e[2]:e[2]/255,a:e[3]===void 0?1:t?e[3]:e[3]/255}}if(typeof e==`string`){let t=e.match(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/);if(t)return{r:parseInt(t[1],10)/255,g:parseInt(t[2],10)/255,b:parseInt(t[3],10)/255,a:1};let n=e.replace(`#`,``);if(n.length===3||n.length===6){let e=n.length===3?n.split(``).map(e=>e+e).join(``):n,t=/^([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);if(t)return{r:parseInt(t[1],16)/255,g:parseInt(t[2],16)/255,b:parseInt(t[3],16)/255,a:1}}}return{r:0,g:0,b:0,a:1}}function ul(e){let t=Math.round(e.r*255),n=Math.round(e.g*255),r=Math.round(e.b*255),i=e.a===void 0?1:e.a;return i<1?`rgba(${t},${n},${r},${i})`:`rgb(${t},${n},${r})`}function dl(e){return`#${Math.round(e.r*255).toString(16).padStart(2,`0`)}${Math.round(e.g*255).toString(16).padStart(2,`0`)}${Math.round(e.b*255).toString(16).padStart(2,`0`)}`.toUpperCase()}function fl(e){if(typeof e==`string`)return e.startsWith(`#`)||e.startsWith(`rgb(`);if(typeof e==`object`&&e){if(`r`in e&&`g`in e&&`b`in e)return!0;if(Array.isArray(e)&&(e.length===3||e.length===4))return e.every(e=>typeof e==`number`)}return!1}var pl=/^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/;function ml(e){return Number.isFinite(e)?e<0?0:e>1?1:e:0}function hl(e){return Math.round(ml(e)*255)}function gl(e){return hl(e).toString(16).padStart(2,`0`)}function _l(e){return String(Number(ml(e).toFixed(4)))}function vl(e){return(e.length<=4?[...e].map(e=>`${e}${e}`):e.match(/../g)??[]).map(e=>Number.parseInt(e,16)/255)}var yl=Object.freeze({fromHex(e){if(!pl.test(e))throw TypeError(`color/invalid-hex: ${e} is not #rgb, #rgba, #rrggbb or #rrggbbaa`);let t=vl(e.slice(1));return[t[0],t[1],t[2],t[3]??1]},isHex(e){return typeof e==`string`&&pl.test(e)},toHex(e,t=!1){return`#${gl(e[0])}${gl(e[1])}${gl(e[2])}${t?gl(e[3]):``}`},toString(e){let t=`${hl(e[0])}, ${hl(e[1])}, ${hl(e[2])}`;return ml(e[3])>=1?`rgb(${t})`:`rgba(${t}, ${_l(e[3])})`},alpha(e){return ml(e[3])},opaque(e){return[ml(e[0]),ml(e[1]),ml(e[2]),1]},fromComponents(e,t=0,n=4){let r=r=>r<n?ml(e[t+r]??0):0;return[r(0),r(1),r(2),n<4?1:r(3)]}}),bl=[`poly`,`bezier`,`mesh`,`packed`],xl=new Set([`f32`,`f64`,`i32`,`u8`]),Sl=/^[A-Za-z_][A-Za-z0-9_]*$/,Cl=new Set([`__proto__`,`prototype`,`constructor`]);function wl(e,t){throw TypeError(`geometry/${e}: ${t}`)}function Tl(){return{vertexPoints:new Int32Array,offsets:Int32Array.of(0),kinds:new Uint8Array,closed:new Uint8Array}}function El(e){return e===`f64`?Float64Array:e===`f32`?Float32Array:e===`i32`?Int32Array:Uint8Array}function Dl(e,t){return Number.isFinite(t)?e===`f64`||e===`f32`?!0:Number.isInteger(t)?e===`u8`?t>=0&&t<=255:t>=-2147483648&&t<=2147483647:!1:!1}function Ol(e,t){return(!Number.isSafeInteger(t)||t<0)&&wl(`attribute-length`,`attribute array length must be a non-negative safe integer`),e===`f64`?new Float64Array(t):e===`f32`?new Float32Array(t):e===`i32`?new Int32Array(t):new Uint8Array(t)}function kl(e,t){let n=Ol(e,t.length);for(let r=0;r<t.length;r+=1){let i=t[r];Dl(e,i)||wl(`attribute-value`,`${String(i)} cannot be represented as ${e}`),n[r]=i,Number.isFinite(n[r])||wl(`attribute-value`,`${String(i)} overflows ${e}`)}return n}function Al(e){return e.storage===`string`}function jl(e,t){return t===`point`?e.pointCount:t===`vertex`?e.vertexCount:t===`primitive`?e.primitiveCount:1}function Ml(e,t){(!Sl.test(e)||Cl.has(e))&&wl(`invalid-name`,`${t}.${e} is not a valid attribute name`)}function Nl(e,t,n){for(let[r,i]of Object.entries(e)){if(Ml(r,n),Al(i)){i.data instanceof Int32Array||wl(`attribute-storage`,`${n}.${r} string indices must be Int32Array`),i.size!==1&&wl(`string-size`,`${n}.${r} string attributes have size 1`),i.data.length!==t&&wl(`attribute-length`,`${n}.${r} has ${i.data.length} entries for ${t} elements`);for(let e of i.data)(e<-1||e>=i.table.length)&&wl(`string-index`,`${n}.${r} references table entry ${e}`);(!Array.isArray(i.table)||i.table.some(e=>typeof e!=`string`))&&wl(`string-table`,`${n}.${r} needs a string table`);continue}(!Number.isInteger(i.size)||i.size<1)&&wl(`attribute-size`,`${n}.${r} needs a size of at least 1`),xl.has(i.storage)||wl(`attribute-storage`,`${n}.${r} has an unknown storage ${String(i.storage)}`),i.data instanceof El(i.storage)||wl(`attribute-storage`,`${n}.${r} declares ${i.storage} but uses ${i.data?.constructor?.name??`unknown storage`}`),i.data.length!==i.size*t&&wl(`attribute-length`,`${n}.${r} has ${i.data.length} values for ${t} elements of size ${i.size}`);for(let e of i.data)Number.isFinite(e)||wl(`non-finite`,`${n}.${r} contains ${String(e)}`)}}function Pl(e,t,n){for(let[r,i]of Object.entries(e)){Ml(r,n),i.length!==t&&wl(`group-length`,`${n}.${r} covers ${i.length} of ${t} elements`);for(let e of i)e!==0&&e!==1&&wl(`group-mask`,`${n}.${r} contains ${e}; masks contain only 0 or 1`)}}function Fl(e){let t=e.pointCount;(!Number.isSafeInteger(t)||t<0)&&wl(`point-count`,`pointCount must be a non-negative safe integer`);let n=e.topology??Tl();(!(n.vertexPoints instanceof Int32Array)||!(n.offsets instanceof Int32Array)||!(n.kinds instanceof Uint8Array)||!(n.closed instanceof Uint8Array))&&wl(`topology-storage`,`topology uses Int32Array indices and Uint8Array flags`);let r=n.offsets.length-1;r<0&&wl(`offsets`,`topology.offsets needs primitiveCount + 1 entries`),n.offsets[0]!==0&&wl(`offsets`,`topology.offsets starts at 0`);for(let e=1;e<=r;e+=1)n.offsets[e]<n.offsets[e-1]&&wl(`offsets`,`topology.offsets must not decrease`);let i=n.offsets[r];i!==n.vertexPoints.length&&wl(`offsets`,`topology.offsets ends at ${i} for ${n.vertexPoints.length} vertices`),(n.kinds.length!==r||n.closed.length!==r)&&wl(`topology-length`,`topology.kinds and topology.closed need ${r} entries`);for(let e of n.vertexPoints)(e<0||e>=t)&&wl(`vertex-point`,`vertex references point ${e}`);for(let e of n.kinds)e>=bl.length&&wl(`primitive-kind`,`unknown primitive kind ${e}`);for(let e of n.closed)e!==0&&e!==1&&wl(`closed-mask`,`topology.closed contains ${e}; flags contain only 0 or 1`);let a=bl.indexOf(`bezier`);for(let e=0;e<r;e+=1){if(n.kinds[e]!==a)continue;let t=n.offsets[e+1]-n.offsets[e],r=n.closed[e]===1;(t<(r?3:4)||(t-+!r)%3!=0)&&wl(`bezier-arity`,`primitive ${e} has ${t} vertices, and a ${r?`closed`:`open`} bezier needs ${r?`3n`:`3n + 1`}`)}let o=e.point,s=o.P;s===void 0&&wl(`missing-position`,`point.P is required on every geometry`),Al(s)&&wl(`position-storage`,`point.P must be a numeric attribute`),s.size!==2&&s.size!==3&&wl(`position-size`,`point.P must have a size of 2 or 3`),Nl(o,t,`point`);let c=e.vertex??{};Nl(c,i,`vertex`);let l=e.primitive??{};Nl(l,r,`primitive`);let u=e.pointGroups??{};Pl(u,t,`pointGroups`);let d=e.primitiveGroups??{};Pl(d,r,`primitiveGroups`);let f=e.detail??{};for(let[e,t]of Object.entries(f))Ml(e,`detail`),typeof t==`number`?Number.isFinite(t)||wl(`non-finite`,`detail.${e} contains ${String(t)}`):typeof t!=`string`&&(!Array.isArray(t)||t.some(e=>!Number.isFinite(e)))&&wl(`detail-value`,`detail.${e} must be a finite number, string, or finite number array`);return Il({kind:`geometry`,pointCount:t,vertexCount:i,primitiveCount:r,topology:n,point:o,vertex:c,primitive:l,detail:f,pointGroups:u,primitiveGroups:d})}function Il(e){for(let t of[`point`,`vertex`,`primitive`]){let n=e[t];for(let e of Object.values(n))Al(e)&&Object.freeze(e.table),Object.freeze(e);Object.freeze(n)}Object.freeze(e.topology);for(let t of Object.values(e.detail))Array.isArray(t)&&Object.freeze(t);return Object.freeze(e.detail),Object.freeze(e.pointGroups),Object.freeze(e.primitiveGroups),Object.freeze(e)}function Ll(e=2){return Fl({pointCount:0,point:{P:{storage:`f64`,size:e,data:new Float64Array}}})}var Rl=`float.int.bool.string.vec2.vec3.vec4.vec2i.vec3i.vec4i.mat2.mat3.mat4.image.texture.geometry.points.lines.polyline.mesh.rects.color.asset.array.object.any`.split(`.`),zl={number:`float`,boolean:`bool`,curves:`polyline`},Bl={int:[`float`,`string`],float:[`string`],bool:[`int`,`float`,`string`],vec2i:[`vec2`],vec3i:[`vec3`],vec4i:[`vec4`],vec4:[`color`],color:[`vec4`]};function Vl(e){return e?zl[e]??e:`any`}function Hl(e,t){let n=Vl(e),r=Vl(t);return n===r||n===`any`||r===`any`||(Bl[n]?.includes(r)??!1)}var Ul=Rl,Wl=new Set(Ul);function Gl(e){return Wl.has(e)}function Kl(e){let t=e.indexOf(`.`);return t>0?e.slice(0,t):null}var ql={vec2:2,vec3:3,vec4:4,vec2i:2,vec3i:3,vec4i:4,mat2:4,mat3:9,mat4:16,color:4};function Jl(e){return e===`int`||e.endsWith(`i`)}var Yl=Vl;function Xl(e,t){return Hl(e,t)}var Zl={float:`var(--type-number)`,int:`var(--type-number)`,bool:`var(--type-bool)`,string:`var(--type-string)`,vec2:`var(--type-vector)`,vec3:`var(--type-vector)`,vec4:`var(--type-vector)`,vec2i:`var(--type-vector)`,vec3i:`var(--type-vector)`,vec4i:`var(--type-vector)`,mat2:`var(--type-matrix)`,mat3:`var(--type-matrix)`,mat4:`var(--type-matrix)`,image:`var(--type-image)`,texture:`var(--type-texture)`,asset:`var(--type-image)`,points:`var(--type-geometry)`,lines:`var(--type-geometry)`,polyline:`var(--type-geometry)`,mesh:`var(--type-mesh)`,rects:`var(--type-geometry)`,curves:`var(--type-geometry)`,color:`var(--type-color)`,array:`var(--type-array)`,object:`var(--type-object)`,any:`var(--type-any)`};function Ql(e){if(!e)return Zl.any;if(Zl[e])return Zl[e];let t=Kl(e);if(!t)return Zl.any;let n=0;for(let e=0;e<t.length;e++)n=n*31+t.charCodeAt(e)>>>0;return`hsl(${n%360}, var(--type-derived-saturation), var(--type-derived-lightness))`}function $l(e){return!!(e&&typeof e==`object`&&typeof e.path==`string`&&Array.isArray(e.size))}function eu(e){if($l(e))return e;if(typeof e!=`string`||!e)return null;let t=e.endsWith(`.npy`);return{path:e,size:[0,0],channels:t?`a`:`rgb`,depth:t?`f32`:`u8`,space:t?`linear`:`srgb`}}function tu(e,t,n,r,i){return n===t?r:r+(e-t)/(n-t)*(i-r)}function nu(e,t,n){return t+e*(n-t)}function ru(e,t,n){return Math.max(t,Math.min(n,e))}function iu(e,t,n){return e+(t-e)*n}function au(e,t,n){if(e<=t)return 0;if(e>=n)return 1;let r=(e-t)/(n-t);return r*r*(3-2*r)}function ou(...e){if(e.length===0)return 0;let t=0,n=[1,2.3,4.7,8.1],r=[1,.5,.25,.125];for(let i=0;i<n.length;i++){let a=0;for(let t=0;t<e.length;t++)a+=Math.sin(e[t]*n[i]*(t+1)*1.7+t*3.14159);t+=a*r[i]}return Math.sin(t*.5)}function su(e){let t=Math.sin(e*12.9898)*43758.5453;return t-Math.floor(t)}function cu(e,t){return String(Math.floor(t)).padStart(e,`0`)}function lu(e){return e*Math.PI/180}function uu(e){return e*180/Math.PI}function du(e){return Math.sin(lu(e))}function fu(e){return Math.cos(lu(e))}function pu(e){return Math.tan(lu(e))}var mu={sin:Math.sin,cos:Math.cos,tan:Math.tan,asin:Math.asin,acos:Math.acos,atan:Math.atan,atan2:Math.atan2,sinh:Math.sinh,cosh:Math.cosh,tanh:Math.tanh,sind:du,cosd:fu,tand:pu,radians:lu,degrees:uu,sqrt:Math.sqrt,cbrt:Math.cbrt,pow:Math.pow,exp:Math.exp,log:Math.log,log2:Math.log2,log10:Math.log10,hypot:Math.hypot,abs:Math.abs,sign:Math.sign,floor:Math.floor,ceil:Math.ceil,round:Math.round,trunc:Math.trunc,min:Math.min,max:Math.max,PI:Math.PI,TAU:Math.PI*2,E:Math.E},hu=/\$(FPS|FF|F|T)\b/g,gu=/\b(?:time|frame|fframe|fps)\b/,_u={FPS:`fps`,FF:`fframe`,F:`frame`,T:`time`};function vu(e){let t=[],n=0,r=0;for(;r<e.length;){let i=e[r];if(i===`"`||i===`'`||i==="`"){t.push({start:n,end:r});let a=i;for(r+=1;r<e.length;){if(e[r]===`\\`){r+=2;continue}if(e[r]===a){r+=1;break}r+=1}n=r;continue}r+=1}return t.push({start:n,end:e.length}),t}function yu(e){if(!e.includes(`$`))return e;let t=``,n=0;for(let r of vu(e))r.start>n&&(t+=e.slice(n,r.start)),t+=e.slice(r.start,r.end).replace(hu,(e,t)=>_u[t]),n=r.end;return n<e.length&&(t+=e.slice(n)),t}function bu(e){return gu.test(e)?!0:(hu.lastIndex=0,hu.test(e))}var xu=class{_frame=1;_fps=30;setFrame(e){Number.isFinite(e)&&(this._frame=Math.max(1,e))}setTime(e){Number.isFinite(e)&&this.setFrame(e*this._fps+1)}setFps(e){Number.isFinite(e)&&(this._fps=Math.max(1,e))}get frame(){return Math.floor(this._frame)}get frameFraction(){return this._frame}get time(){return(this._frame-1)/this._fps}get fps(){return this._fps}snapshot(){return{frame:this.frame,frameFraction:this.frameFraction,time:this.time,fps:this.fps}}},Su=/\b(?:ch|chs|chv)\s*\(\s*['"]([^'"]+)['"]\s*\)/g,Cu=class{timeState=new xu;compiledCache=new Map;scope;constructor(e=null){this.scope=e}setScope(e){this.scope=e}getScope(){return this.scope}setFrame(e){this.timeState.setFrame(e)}setTime(e){this.timeState.setTime(e)}setFps(e){this.timeState.setFps(e)}get time(){return this.timeState.time}get frame(){return this.timeState.frame}get fframe(){return this.timeState.frameFraction}get fps(){return this.timeState.fps}compile(e){let t=this.compiledCache.get(e);if(t)return t;let n=this.extractDependencies(e),r=bu(e),i=yu(e);try{let t=`
|
|
3
3
|
with (context) {
|
|
4
4
|
return (${i});
|
|
5
5
|
}
|
|
6
|
-
`,a={source:e,compiledSource:i,evaluate:Function(`context`,t),dependencies:n,isTimeDependent:r};return this.compiledCache.set(e,a),a}catch(t){return{source:e,compiledSource:i,evaluate:()=>void 0,dependencies:n,isTimeDependent:r,error:t instanceof Error?t.message:String(t)}}}evaluate(e,t){let n=this.compile(e);if(n.error)return{value:void 0,error:n.error};try{return{value:n.evaluate(this.createContext(t))}}catch(e){return{value:void 0,error:e instanceof Error?e.message:String(e)}}}createContext(e){return{time:this.timeState.time,frame:this.timeState.frame,fframe:this.timeState.frameFraction,fps:this.timeState.fps,self:e,ch:t=>this.ch(e,t),chs:t=>this.chs(e,t),chv:t=>this.chv(e,t),opexist:t=>+!!this.scope?.nodeExists(e,t),opinput:t=>this.scope?.inputNode(e,t)??null,fit:tu,fit01:nu,clamp:ru,lerp:iu,smooth:au,noise:ou,random:su,padzero:cu,...mu,Math}}ch(e,t){let n=this.resolveParam(e,t);if(!n)return 0;let r=n.value;return typeof r==`number`?r:typeof r==`string`?parseFloat(r)||0:typeof r==`boolean`?+!!r:0}chs(e,t){let n=this.resolveParam(e,t);return n?String(n.value??``):``}chv(e,t){let n=this.resolveParam(e,t);if(!n)return[];let r=n.value;return Array.isArray(r)?r.map(e=>typeof e==`number`?e:parseFloat(String(e))||0):typeof r==`number`?[r]:[]}resolveParam(e,t){return this.scope?.resolveParam(e,t)??null}validatePath(e,t){return this.resolveParam(e,t)!==null}extractDependencies(e){let t=[];Su.lastIndex=0;let n;for(;(n=Su.exec(e))!==null;)t.push(n[1]);return t}hasTimeReference(e){return bu(e)}clearCache(){this.compiledCache.clear()}},wu=class extends Cu{constructor(){super(),this.graph=null,this.setScope({resolveParam:(e,t)=>this.resolveNodePath(e,t),nodeExists:(e,t)=>e.node(t)!==null,inputNode:(e,t)=>this.resolveInput(e,t)})}setGraph(e){this.graph=e}resolveNodePath(e,t){let n=t.lastIndexOf(`/`);if(n===-1||t.startsWith(`./`)){let n=t.replace(`./`,``),r=e.props[n];return r?{value:r.value}:null}let r=t.substring(0,n)||`.`,i=t.substring(n+1),a=e.node(r);if(!a)return null;let o=a.props[i];return o?{value:o.value}:null}resolveInput(e,t){if(!this.graph)return null;let n=e.inputs[t];if(!n||n.connections.length===0)return null;let r=n.connections[0];return this.graph.getNode(r.from.nodeId)}validateAllPaths(){if(!this.graph)return[];let e=[];for(let t of this.graph.nodes)for(let[n,r]of Object.entries(t.props)){if(!r.expression)continue;let i=this.extractDependencies(r.expression);for(let a of i)this.validatePath(t,a)||e.push({nodeId:t.id,nodePath:t.path(),propName:n,expression:r.expression,brokenPath:a})}return e}},Tu=new wu,Eu=`smooth`,Du=[`constant`,`linear`,`smooth`];function Ou(e){return typeof e==`string`&&Du.includes(e)}var ku=Object.freeze({keys:Object.freeze([])});function Au(e=[]){let t=new Map;for(let n of e){if(!n)continue;let e=Number(n.frame),r=Number(n.value);!Number.isFinite(e)||!Number.isFinite(r)||t.set(e,{frame:e,value:r,interpolation:Ou(n.interpolation)?n.interpolation:Eu})}return{keys:[...t.values()].sort((e,t)=>e.frame-t.frame)}}function ju(e){return!e||e.keys.length===0}function Mu(e,t){return e.keys.find(e=>e.frame===t)}function Nu(e,t,n,r){let i=e??ku;if(!Number.isFinite(t)||!Number.isFinite(n))return Au(i.keys);let a=Mu(i,t),o=r??a?.interpolation??`smooth`;return Au([...i.keys.filter(e=>e.frame!==t),{frame:t,value:n,interpolation:o}])}function Pu(e,t){return Au((e??ku).keys.filter(e=>e.frame!==t))}function Fu(e,t){if(!e||e.keys.length===0)return;let n=e.keys;if(!Number.isFinite(t)||n.length===1||t<=n[0].frame)return n[0].value;if(t>=n[n.length-1].frame)return n[n.length-1].value;let r=Iu(n,t),i=n[r],a=n[r+1],o=a.frame-i.frame;if(o<=0)return a.value;let s=(t-i.frame)/o;switch(i.interpolation){case`constant`:return i.value;case`linear`:return i.value+(a.value-i.value)*s;default:return Lu(n,r,s,o)}}function Iu(e,t){let n=0,r=e.length-1;for(;n<r;){let i=n+r+1>>1;e[i].frame<=t?n=i:r=i-1}return Math.min(n,e.length-2)}function Lu(e,t,n,r){let i=e[t],a=e[t+1],o=Ru(e,t,`out`),s=Ru(e,t+1,`in`),c=n*n,l=c*n,u=2*l-3*c+1,d=l-2*c+n,f=-2*l+3*c,p=l-c;return u*i.value+d*r*o+f*a.value+p*r*s}function Ru(e,t,n){let r=e[t-1],i=e[t+1];if(!r||!i||n===`out`&&r.interpolation===`constant`||n===`in`&&e[t].interpolation===`constant`)return 0;let a=i.frame-r.frame;return a<=0?0:(i.value-r.value)/a}function zu(e){if(!ju(e))return{keys:e.keys.map(e=>e.interpolation===`smooth`?{frame:e.frame,value:e.value}:{frame:e.frame,value:e.value,interpolation:e.interpolation})}}function Bu(e){if(!e||typeof e!=`object`)return ku;let t=e.keys;return Array.isArray(t)?Au(t):ku}function Vu(e,t){if(!ju(e.channel)){let n=Fu(e.channel,t.frame);if(n!==void 0)return{value:n,source:`channel`}}if(e.expression&&t.evaluateExpression){let n=t.evaluateExpression(e.expression);if(n?.error)return{value:e.value,source:`value`,error:n.error};if(n)return{value:n.value,source:`expression`}}return{value:e.value,source:`value`}}function Hu(e){if(typeof e==`number`)return Number.isInteger(e)?`int`:`float`;if(typeof e==`boolean`)return`bool`;if(typeof e==`string`)return`string`;if(Array.isArray(e)&&e.every(e=>typeof e==`number`)){if(e.length===2)return`vec2`;if(e.length===3)return`vec3`;if(e.length===4)return`vec4`}return`any`}function Uu(e){switch(Yl(e??`any`)){case`int`:return`int`;case`float`:return`number`;case`bool`:return`boolean`;case`string`:return`text`;case`color`:return`color`;case`vec2`:return`vec2`;case`vec3`:return`vec3`;case`vec4`:return`vec4`;default:return}}var Wu={number:`float`,slider:`float`,range:`float`,float:`float`,int:`int`,text:`string`,textarea:`string`,string:`string`,select:`string`,boolean:`bool`,bool:`bool`,vector:`vec3`};function Gu(e){return e?Yl(Wu[e]??e):`any`}var Ku=new Set([`int`,`float`]);function qu(e,t){return e===`any`||t===`any`||Ku.has(e)&&Ku.has(t)?!0:e===t}var Ju=class e{constructor(t,n,r){this.inputs=[],this.outputs=[],this.props={},this.propWatchers=new Map,this.actions={},this.parameters=[],this.parametersUsedDuringSetup=new Set,this.propsDeclaredByCode=new Set,this.carryOver=null,this.lastCarryOverReport=null,this.variadic=!1,this.variadicDefault=null,this.variadicOptions={},this.preview=null,this.comment=``,this.error=null,this.warning=null,this.code=``,this.bypass=!1,this.cook=!1,this.parent=null,this._children=[],this.hasExecuted=!1,this.lastInputHash=``,this.cookState=`stale`,this.cookGeneration=0,this.stagedOutputs=null,this.executionTimeout=3e4,this.cookInfo={lastCookTime:0,totalCookTime:0,cookCount:0,averageCookTime:0,lastCookTimestamp:0,peakMemory:0},this.isTimeDependent=!1,this.portsUsedDuringSetup=new Set,this._portMap=new Map,this.id=t,this.type=n,this.graph=r,this.position={x:0,y:0},this.constructor!==e&&(this.setup(),queueMicrotask(()=>{if(this.onReady)try{this.onReady()}catch(e){console.error(`Error in onReady for node ${this.id}:`,e)}}))}in(e,t,n={}){let r=e===`trigger`?`trigger`:`param`,i=this.inputs.find(t=>t.name===e);if(i)return this.portsUsedDuringSetup.add(`input_${e}`),n.type&&(i.dataType=n.type),t!==void 0&&i.defaultValue!==t&&(i.defaultValue=t,(i.value===void 0||i.value===i.defaultValue)&&(i.value=t)),i.options=Object.assign(i.options??{},n),i;let a=this.inputs.length,o={id:`${this.id}_in_${a}`,name:e,portType:r,dataType:n.type||`any`,value:t,defaultValue:t,options:n,connections:[]};return this.inputs.push(o),this._portMap.set(o.id,o),this.portsUsedDuringSetup.add(`input_${e}`),o}out(e,t=`param`,n={}){let r=this.outputs.find(t=>t.name===e);if(r)return this.portsUsedDuringSetup.add(`output_${e}`),r.portType!==t&&(r.portType=t),n.type&&(r.dataType=n.type),r.options={...r.options??{},...n},r;let i=this.outputs.length,a={id:`${this.id}_out_${i}`,name:e,portType:t,dataType:n.type||`any`,value:void 0,connections:[],options:n,setValue:e=>this.setOutputValue(a,e),trigger:e=>{a.connections.forEach(t=>{let n=this.graph.getNode(t.to.nodeId);if(n){let r=n.getInputPortById(t.to.portId);r&&r.onTrigger&&r.onTrigger(e)}})}};return this.outputs.push(a),this._portMap.set(a.id,a),this.portsUsedDuringSetup.add(`output_${e}`),a}getInputPort(e){return e>=0&&e<this.inputs.length?this.inputs[e]:null}getOutputPort(e){return e>=0&&e<this.outputs.length?this.outputs[e]:null}renameId(e){let t=this.id,n=new Map;this.id=e,this._portMap.clear();for(let r of[...this.inputs,...this.outputs]){let i=r.id;r.id=i.startsWith(`${t}_`)?`${e}${i.slice(t.length)}`:i,n.set(i,r.id),this._portMap.set(r.id,r)}return n}getPort(e){return this._portMap.get(e)||null}getInputPortById(e){let t=this._portMap.get(e);return t&&`defaultValue`in t?t:null}setOutputValue(e,t){if(this.stagedOutputs){this.stagedOutputs.set(e,t);return}this.commitOutputValue(e,t)}commitOutputValue(e,t){e.value=t;for(let n of e.connections){let e=this.graph.getNode(n.to.nodeId)?.getInputPortById(n.to.portId);e&&(e.value=t,e.onChange?.(t))}}addParm(e,t){this.props[e]=t,this.propsDeclaredByCode.add(e),this.reconcileProp(e),this.cookState!==`cooking`&&this.markDirty()}defineProp(e,t){this.addParm(e,t)}addAction(e,t){this.actions[e]=t}async executeAction(e){let t=this.actions[e];t&&(t.condition&&!t.condition()||await t.callback())}updateProp(t,n){if(!this.props[t])return;let r=Array.isArray(n)?[...n]:n;if(this.props[t]={...this.props[t],value:r},this.props[t].onChange)try{this.props[t].onChange(this.props[t],this)}catch(e){console.error(`Error in prop onChange for ${t}:`,e)}let i=this.propWatchers.get(t);i&&i.forEach(e=>{try{e(r,this.props[t])}catch(e){console.error(`Error in prop watcher for ${t}:`,e)}}),this.props={...this.props},this.markDirty(),e.onPropParamsChanged?.(this.id)}updatePropParams(t,n){this.props[t]&&(this.props[t]={...this.props[t],params:{...this.props[t].params,...n}},this.props={...this.props},e.onPropParamsChanged?.(this.id))}watchProp(e,t){this.propWatchers.has(e)||this.propWatchers.set(e,[]),this.propWatchers.get(e).push(t)}parm(e){let t=this.props[e];if(!t)return null;let n=this,r=()=>n.props[e]??t;return{name:()=>e,path:()=>`${n.path()}/${e}`,node:()=>n,eval:()=>r().value,evalAsFloat:()=>parseFloat(r().value)||0,evalAsInt:()=>parseInt(r().value,10)||0,evalAsString:()=>String(r().value??``),rawValue:()=>r().value,set:t=>n.updateProp(e,t),parmType:()=>r().type||`any`,expression:()=>r().expression??null,setExpression:t=>{n.props[e]={...n.props[e],expression:t},n.updateTimeDependent(),n.markDirty()},deleteExpression:()=>{let{expression:t,expressionError:r,...i}=n.props[e];n.props[e]=i,n.updateTimeDependent(),n.markDirty()},hasExpression:()=>!!r().expression,expressionError:()=>r().expressionError??null,channel:()=>n.props[e]?.channel??null,hasChannel:()=>!ju(n.props[e]?.channel),keys:()=>n.props[e]?.channel?.keys??[],setKey:(t,r,i)=>{let a=t??n.currentFrame(),o=r??Number(n.evalParm(e));Number.isFinite(o)&&n.setPropChannel(e,Nu(n.props[e]?.channel,a,o,i))},deleteKey:t=>{let r=n.props[e]?.channel;r&&n.setPropChannel(e,Pu(r,t))},clearChannel:()=>n.setPropChannel(e,null)}}currentFrame(){return Tu.fframe}setPropChannel(t,n){let r=this.props[t];if(r){if(!n||ju(n)){let{channel:e,...n}=this.props[t];this.props[t]=n}else this.props[t]={...r,channel:n};this.props={...this.props},this.updateTimeDependent(),this.markDirty(),e.onPropParamsChanged?.(this.id)}}serializePropValue(e,t){let n=this.props[e];if(!n)return t;let r=zu(n.channel);return!n.expression&&!r?t:{value:t,...n.expression?{expression:n.expression}:{},...r?{channel:r}:{}}}restorePropChannel(e,t){if(!this.props[e])return;let n=Bu(t);this.setPropChannel(e,ju(n)?null:n)}serializePropChannel(e){return zu(this.props[e]?.channel)}evalParm(e){let t=this.props[e];if(t)return Vu(t,{frame:this.currentFrame(),evaluateExpression:()=>({value:this.evaluateExpression(e)})}).value}setParm(e,t){this.updateProp(e,t)}evaluateExpression(e){let t=this.props[e];if(!t?.expression)return t?.value;Tu.setGraph(this.graph);let n=Tu.evaluate(t.expression,this);if(n.error)return this.props[e]={...this.props[e],expressionError:n.error},t.value;if(t.expressionError){let{expressionError:t,...n}=this.props[e];this.props[e]=n}return n.value}evaluateAllExpressions(){for(let[e,t]of Object.entries(this.props))if(t.expression&&!t.fromParameter&&this.propsDeclaredByCode.has(e)){let t=this.evaluateExpression(e);t!==void 0&&(this.props[e]={...this.props[e],value:t})}this.updateTimeDependent()}param(e,t,n={}){let r=this.parameters.find(t=>t.name===e);if(r?(n.type&&(r.dataType=n.type),r.defaultValue=t,Object.assign(r.options,n)):(r={name:e,value:t,defaultValue:t,dataType:n.type||Hu(t),promoted:!1,options:n},this.parameters.push(r)),this.parametersUsedDuringSetup.add(e),this.reconcileParameter(r,t,n),this.bindParameterProp(r,e,n),r.promoted){let t=this.in(e,r.value,{...r.options,type:r.dataType,promoted:!0});if(t.fromParameter=e,t.connections.length>0&&t.value!==void 0&&t.value!==null)return{...r,value:t.value}}return r}bindParameterProp(e,t,n){let r=Object.getOwnPropertyDescriptor(e,`value`),i=r&&!r.get?r.value:void 0,a=this.props[t];a||(a={value:i===void 0?e.defaultValue:i},this.props[t]=a,this.props={...this.props}),a.fromParameter=t,a.hidden=!0;let o=Uu(e.dataType);o&&(a.type=o);let s={...a.params??{}};n.min!==void 0&&(s.min=n.min),n.max!==void 0&&(s.max=n.max),n.step!==void 0&&(s.step=n.step),Yl(e.dataType??`any`)===`int`&&(s.integer=!0),a.params=s,!r?.get&&Object.defineProperty(e,"value",{get:()=>this.evalParm(t),set:e=>this.writeParameterValue(t,e),enumerable:!0,configurable:!0})}writeParameterValue(e,t){let n=this.props[e];n&&(this.props[e]={...n,value:Array.isArray(t)?[...t]:t},this.props={...this.props})}rawParameterValue(e){return this.props[e]?this.props[e].value:this.parameters.find(t=>t.name===e)?.value}setParameterPromoted(e,t){let n=this.parameters.find(t=>t.name===e);if(!(!n||n.promoted===t)){if(n.promoted=t,t){let t=this.in(e,n.value,{...n.options,type:n.dataType,promoted:!0});t.fromParameter=e}else{let t=this.inputs.findIndex(t=>t.name===e);t>=0&&([...this.inputs[t].connections].forEach(e=>this.graph?.disconnect(e.id)),this.inputs.splice(t,1))}this.markDirty()}}setParameter(e,t){let n=this.parameters.find(t=>t.name===e);n&&(n.value=t,this.markDirty())}beginParameterCarryOver(){let e=new Map;for(let t of this.parameters)e.set(`parameter:${t.name}`,{name:t.name,kind:`parameter`,type:Gu(t.dataType),value:this.rawParameterValue(t.name),expression:this.props[t.name]?.expression,channel:this.props[t.name]?.channel});for(let[t,n]of Object.entries(this.props))e.has(`parameter:${t}`)||e.set(`prop:${t}`,{name:t,kind:`prop`,type:Gu(n.type),value:n.value,expression:n.expression,channel:n.channel});this.carryOver={carried:e,resolved:new Set,report:{kept:[],defaulted:[],dropped:[],retyped:[]}},this.parametersUsedDuringSetup.clear()}abandonParameterCarryOver(){this.carryOver=null}hasPendingParameterCarryOver(){return this.carryOver!==null}applyParameterDeclarations(e){if(!this.carryOver)return null;for(let t of e)t?.name&&(t.kind===`prop`?this.addParm(t.name,{value:t.defaultValue,type:t.type}):this.param(t.name,t.defaultValue,{...t.type?{type:t.type}:{}}));return this.finishParameterCarryOver()}finishParameterCarryOver(){let t=this.carryOver;if(!t)return null;for(let e of t.carried.values()){t.report.dropped.push({name:e.name,value:e.value,...e.expression?{expression:e.expression}:{}});let n=this.parameters.findIndex(t=>t.name===e.name);if(n>=0){this.parameters[n].promoted&&this.setParameterPromoted(e.name,!1);let t=this.parameters.findIndex(t=>t.name===e.name);t>=0&&this.parameters.splice(t,1)}t.resolved.has(`prop:${e.name}`)||delete this.props[e.name]}return this.carryOver=null,this.lastCarryOverReport=t.report,t.report.dropped.length>0&&(this.props={...this.props},this.updateTimeDependent(),e.onPropParamsChanged?.(this.id)),t.report}reconcileParameter(e,t,n){let r=this.carryOver;if(!r)return;let i=`parameter:${e.name}`;if(r.resolved.has(i))return;r.resolved.add(i);let a=n.type??Hu(t);e.dataType=a;let o=Gu(a),s=`prop:${e.name}`,c=r.carried.get(i)??r.carried.get(s);if(!c){e.value=t,r.report.defaulted.push(e.name);return}r.carried.delete(i),r.carried.delete(s),qu(c.type,o)?(e.value=c.value,(c.expression||c.channel)&&(this.props[e.name]={...this.props[e.name]??{},value:c.value,...c.expression?{expression:c.expression}:{},...c.channel?{channel:c.channel}:{}},r.resolved.add(s),this.updateTimeDependent()),r.report.kept.push(e.name)):(e.value=t,r.report.retyped.push({name:e.name,from:c.type,to:o}))}reconcileProp(e){let t=this.carryOver;if(!t)return;let n=`prop:${e}`;if(t.resolved.has(n))return;t.resolved.add(n);let r=this.props[e],i=Gu(r?.type),a=`parameter:${e}`,o=t.carried.get(n)??t.carried.get(a);if(!o){t.report.defaulted.push(e);return}t.carried.delete(n),t.carried.delete(a),qu(o.type,i)?(this.props[e]={...r,value:o.value,...o.expression?{expression:o.expression}:{},...o.channel?{channel:o.channel}:{}},(o.expression||o.channel)&&this.updateTimeDependent(),t.report.kept.push(e)):t.report.retyped.push({name:e,from:o.type,to:i})}setVariadic(e=null,t={}){this.variadic=!0,this.variadicDefault=e,this.variadicOptions=t,this.syncVariadicPorts()}getVariadicInputs(){return this.inputs.filter(e=>e.variadic&&!e.options.hidden)}syncVariadicPorts(){if(!this.variadic)return;let e=this.inputs.filter(e=>e.variadic),t=e.filter(e=>e.connections.length>0||e.value!==null&&e.value!==this.variadicDefault).length;for(let e=0;e<t+1;e++){let t=this.in(`input_${e}`,this.variadicDefault,{...this.variadicOptions,hidden:!1});t.variadic=!0,t.onChange||=()=>this.onUpdate?.()}for(let n=t+1;n<e.length;n++)e[n]&&(e[n].options.hidden=!0)}path(){let e=[this.id],t=this.parent;for(;t;)e.unshift(t.id),t=t.parent;return`/`+e.join(`/`)}children(){return this._children}isNetwork(){return!1}node(e){if(!e)return null;if(e.startsWith(`/`))return this.graph.nodeByPath(e);let t=e.split(`/`).filter(e=>e.length>0),n=this;for(let e of t){if(!n)return null;if(e!==`.`){if(e===`..`){n=n.parent;continue}if(n.isNetwork()){let t=n.children().find(t=>t.id===e);if(t){n=t;continue}}return null}}return n}relativePathTo(e){let t=this.path().split(`/`).filter(e=>e),n=e.path().split(`/`).filter(e=>e),r=0;for(;r<t.length&&r<n.length&&t[r]===n[r];)r++;let i=t.length-r,a=n.slice(r),o=[];for(let e=0;e<i;e++)o.push(`..`);return o.push(...a),o.join(`/`)||`.`}inputNodes(){let e=[];for(let t of this.inputs)for(let n of t.connections){let t=this.graph.getNode(n.from.nodeId);t&&!e.includes(t)&&e.push(t)}return e}outputNodes(){let e=[];for(let t of this.outputs)for(let n of t.connections){let t=this.graph.getNode(n.to.nodeId);t&&!e.includes(t)&&e.push(t)}return e}globToRegex(e){let t=``,n=0;for(;n<e.length;){let r=e[n];switch(r){case`*`:t+=`.*`;break;case`?`:t+=`.`;break;case`[`:let i=n+1,a=``;for(e[i]===`!`&&(a=`^`,i++);i<e.length&&e[i]!==`]`;)a+=e[i],i++;t+=`[`+a+`]`,n=i;break;case`.`:case`+`:case`^`:case`$`:case`(`:case`)`:case`{`:case`}`:case`|`:case`\\`:t+=`\\`+r;break;default:t+=r}n++}return RegExp(`^`+t+`$`)}glob(e){let t=this.children();if(!e||e===`*`)return[...t];let n=e.split(/\s+/),r=[],i=[];for(let e of n)e.startsWith(`^`)?i.push(this.globToRegex(e.slice(1))):r.push(this.globToRegex(e));return t.filter(e=>{let t=r.length===0||r.some(t=>t.test(e.id)),n=i.some(t=>t.test(e.id));return t&&!n})}recursiveGlob(e){let t=[],n=e.startsWith(`**/`),r=n?e.slice(3):e,i=(e,a)=>{let o=e.children();for(let e of o)n?this.globToRegex(r).test(e.id)&&t.push(e):a===0&&this.globToRegex(r).test(e.id)&&t.push(e),e.isNetwork()&&i(e,n?a:a-1)};if(e===`**`){let e=n=>{for(let r of n.children())t.push(r),r.isNetwork()&&e(r)};return e(this),t}let a=n?0:e.split(`/`).length-1;return i(this,a),t}setBypass(e){this.bypass=e,this.markDirty()}setCook(e){e&&this.parent&&this.parent.children().filter(e=>e!==this&&e.cook).forEach(e=>e.setCook(!1)),this.cook=e,e?this.graph.cookingNodes.add(this):this.graph.cookingNodes.delete(this),this.markDirty()}setTimeDependent(e){this.isTimeDependent=e}updateTimeDependent(){let e=Object.values(this.props).some(e=>e.expression&&Tu.hasTimeReference(e.expression)||!ju(e.channel));this.setTimeDependent(e)}shouldExecute(){return this.bypass?!1:this.graph.cookingNodes.size>0?this.cook||this.graph.isDownstreamOfCooking(this):!0}executeBypass(){this.inputs.forEach(e=>{if(e.portType===`param`){let t=this.outputs.find(t=>t.name===e.name||this.outputs.length===1);t&&t.setValue(e.value)}})}markDirty(){this.graph.scheduler.markStale(this)}invalidateCook(){this.cookGeneration++,this.setCookState(`stale`)}setCookState(e){this.cookState!==e&&(this.cookState=e,this.graph.scheduler.notifyNodeStateChange())}getValueFingerprint(e){if(e==null)return`null`;if(typeof e!=`object`)return String(e);if(ArrayBuffer.isView(e)){let t=e,n=t.length;return n===0?`empty`:`f32[${n}]:${t[0]?.toFixed(4)},${t[Math.floor(n/2)]?.toFixed(4)},${t[n-1]?.toFixed(4)}`}if(e.width!==void 0&&e.height!==void 0){let t=e.channelCount||e.channels?.length||0;return`img:${e.width}x${e.height}x${t}`}if(typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement||typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement)return`el:${e.width}x${e.height}`;try{let t=JSON.stringify(e);return t.length<500?t:`obj:${t.length}:${t.slice(0,100)}`}catch{return`obj:${typeof e}`}}calculateInputHash(){return this.inputs.map(e=>this.getValueFingerprint(e.value)).join(`|`)}get isDirty(){return!this.hasExecuted||this.cookState!==`clean`||this.calculateInputHash()!==this.lastInputHash}markDownstreamDirty(){this.graph.scheduler.markDownstreamStale(this)}async requestOutput(){this.isDirty&&(this.cookState===`clean`&&this.markDirty(),await this.graph.scheduler.flush())}setup(){}setFunction(e){this.nodeFunction=e,this.hasExecuted=!1,this.markDirty()}async execute(){if(!(this.nodeFunction||this.onCook!==e.prototype.onCook)){this.hasExecuted=!0,this.setCookState(`clean`);return}let t=!this.hasExecuted;if(!this.shouldExecute()&&!t&&!this.isDirty){this.executeBypass(),this.setCookState(`clean`);return}if(!t&&!this.isDirty)return;this.evaluateAllExpressions();let n=performance.now(),r=performance.memory?.usedJSHeapSize??0,i=this.cookGeneration;this.stagedOutputs=new Map,this.setCookState(`cooking`);let a;try{if(await Promise.race([Promise.resolve(this.onCook()),new Promise((e,t)=>{a=setTimeout(()=>t(Error(`Node execution timeout after ${this.executionTimeout}ms`)),this.executionTimeout)})]),i===this.cookGeneration){await this.callLifecycleHooks(t);for(let[e,t]of this.stagedOutputs)this.commitOutputValue(e,t);this.error=null,this.hasExecuted=!0,this.lastInputHash=this.calculateInputHash();let n=this.finishParameterCarryOver();n&&e.onParametersRetargeted?.(this.id,n),this.setCookState(`clean`)}else this.setCookState(`stale`);this.updateCookInfo(n,r)}catch(e){i===this.cookGeneration?(this.error=e,this.setCookState(`error`)):this.setCookState(`stale`),this.updateCookInfo(n,r),e.message?.includes(`timeout`)||console.error(`Error executing node ${this.id}:`,e)}finally{a!==void 0&&clearTimeout(a),this.stagedOutputs=null}}onCook(){if(this.nodeFunction)return this.nodeFunction(this,this.graph)}updateCookInfo(e,t=0){let n=performance.now()-e;this.cookInfo.lastCookTime=n,this.cookInfo.totalCookTime+=n,this.cookInfo.cookCount++,this.cookInfo.averageCookTime=this.cookInfo.totalCookTime/this.cookInfo.cookCount,this.cookInfo.lastCookTimestamp=Date.now();let r=performance.memory?.usedJSHeapSize??0;if(t&&r){let e=r-t;e>this.cookInfo.peakMemory&&(this.cookInfo.peakMemory=e)}}startCook(){return performance.now()}endCook(e){this.updateCookInfo(e,0)}resetCookInfo(){this.cookInfo={lastCookTime:0,totalCookTime:0,cookCount:0,averageCookTime:0,lastCookTimestamp:0,peakMemory:0}}async callLifecycleHooks(e){let t=e=>{let t=e?.message||String(e);return t.includes(`document is not defined`)||t.includes(`window is not defined`)||t.includes(`HTMLCanvasElement`)||t.includes(`HTMLImageElement`)};if(e&&this.onSetup)try{await this.onSetup()}catch(e){t(e)||console.error(`Error in onSetup for ${this.id}:`,e)}if(this.onUpdate)try{await this.onUpdate()}catch(e){t(e)||console.error(`Error in onUpdate for ${this.id}:`,e)}if(this.onRender)try{await this.onRender()}catch(e){t(e)||console.error(`Error in onRender for ${this.id}:`,e)}if(e&&this.onReady)try{this.onReady()}catch(e){t(e)||console.error(`Error in onReady for ${this.id}:`,e)}}rename(e){if(!e?.trim())return this.id;let t=e.trim().replace(/\s+/g,``);if(!t)return this.id;let n=this.graph.generateUniqueNodeId(t,this.id);return this.graph.renameElement(this.id,n)&&this.markDirty(),this.id}isPreviewValue(e){return typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement||typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement}async require(e,t){if(!this.graph.packageManager)throw Error(`PackageManager not initialized`);return this.graph.packageManager.load(e,t)}get assets(){return this.graph.assetManager}log(...e){console.log(`[${this.id}]`,...e)}resetPortTracking(){this.portsUsedDuringSetup.clear()}preserveState(){return{inputs:this.inputs.map(e=>({id:e.id,name:e.name,value:e.value,connections:e.connections.map(e=>e.id)})),outputs:this.outputs.map(e=>({id:e.id,name:e.name,value:e.value,connections:e.connections.map(e=>e.id)})),props:Object.fromEntries(Object.entries(this.props).map(([e,t])=>[e,t.value])),bypass:this.bypass,cook:this.cook}}restoreState(e){e.inputs?.forEach(e=>{let t=this.inputs.find(t=>t.id===e.id||t.name===e.name);t&&(t.value=e.value)}),e.outputs?.forEach(e=>{let t=this.outputs.find(t=>t.id===e.id||t.name===e.name);t&&(t.value=e.value)}),e.props&&Object.entries(e.props).forEach(([e,t])=>{this.props[e]&&(this.props[e].value=t)}),e.bypass!==void 0&&this.setBypass(e.bypass),e.cook!==void 0&&this.setCook(e.cook)}cleanupUnusedPorts(){let e=this.portsUsedDuringSetup;this.inputs=this.inputs.filter(t=>e.has(`input_${t.name}`)?!0:(t.connections.forEach(e=>this.graph.disconnect(e.id)),this._portMap.delete(t.id),!1)),this.outputs=this.outputs.filter(t=>e.has(`output_${t.name}`)?!0:(t.connections.forEach(e=>this.graph.disconnect(e.id)),this._portMap.delete(t.id),!1)),this.portsUsedDuringSetup.clear()}toJSON(){let e=je(this.type),t={id:this.id,type:e,position:[this.position.x,this.position.y]};!Fe(e)&&this.code&&(t.code=this.code),this.comment?.trim()&&(t.comment=this.comment);let n=Object.fromEntries(Object.entries(this.props).map(([e,t])=>{let n=t.value;if(t.type===`color`&&fl(n)){let e=ll(n);n=[e.r,e.g,e.b,e.a??1]}return t.expression?[e,{value:n,expression:t.expression}]:[e,n]}));return Object.keys(n).length>0&&(t.props=n),this.bypass&&(t.bypass=!0),this.cook&&(t.cook=!0),t}},Yu=class extends Ju{constructor(e,t,n){super(e,t,n),this.isAnnotation=!0}getOutput(){return this.getOutputPort(0)}async execute(){}},Xu=class extends Yu{constructor(e,t){super(e,`Image`,t)}},Zu=class extends Yu{constructor(e,t){super(e,`Text`,t)}},Qu=class extends Yu{constructor(e,t){super(e,`Group`,t)}},$u=class extends Yu{constructor(e,t){super(e,`Line`,t)}},ed=class extends Yu{constructor(e,t){super(e,`Polyline`,t)}},td=class{async loadImage(e){return new Promise((t,n)=>{if(typeof Image>`u`){n(Error(`Image API not available (not in browser environment)`));return}let r=new Image;r.onload=()=>t(r),r.onerror=()=>n(Error(`Failed to load image: ${e}`)),r.src=e})}async loadJSON(e){if(typeof fetch>`u`)throw Error(`fetch API not available (not in browser environment)`);let t=await fetch(e);if(!t.ok)throw Error(`Failed to load JSON: ${e} - ${t.statusText}`);return t.json()}async loadText(e){if(typeof fetch>`u`)throw Error(`fetch API not available (not in browser environment)`);let t=await fetch(e);if(!t.ok)throw Error(`Failed to load text: ${e} - ${t.statusText}`);return t.text()}async loadBinary(e){if(typeof fetch>`u`)throw Error(`fetch API not available (not in browser environment)`);let t=await fetch(e);if(!t.ok)throw Error(`Failed to load binary: ${e} - ${t.statusText}`);return t.arrayBuffer()}},nd=class{constructor(e=``,t){this.cache=new Map,this.projectRoot=e,this.loader=t??new td}async load(e){if(this.cache.has(e))return this.cache.get(e);let t=this.resolve(e),n=this.getAssetType(e),r;switch(n){case`image`:r=await this.loader.loadImage(t);break;case`json`:r=await this.loader.loadJSON(t);break;case`text`:r=await this.loader.loadText(t);break;default:throw Error(`Unsupported asset type: ${n}`)}let i={id:this.generateId(e),path:e,type:n,data:r,size:0,metadata:{}};return this.cache.set(e,i),i}resolve(e){return e.startsWith(`http://`)||e.startsWith(`https://`)||e.startsWith(`/`)?e:`${this.projectRoot}${e}`}getAssetType(e){let t=e.split(`.`).pop()?.toLowerCase();return[`jpg`,`jpeg`,`png`,`gif`,`webp`,`svg`].includes(t||``)?`image`:[`mp3`,`wav`,`ogg`,`m4a`].includes(t||``)?`audio`:[`mp4`,`webm`,`mov`].includes(t||``)?`video`:t===`json`?`json`:[`txt`,`md`,`csv`].includes(t||``)?`text`:`binary`}generateId(e){return e.replace(/[^a-zA-Z0-9]/g,`_`)}getAsset(e){return this.cache.get(e)}clearCache(){this.cache.clear()}removeAsset(e){this.cache.delete(e)}async reloadAsset(e){return this.cache.delete(e),this.load(e)}async reloadAll(){let e=Array.from(this.cache.keys());this.cache.clear(),await Promise.all(e.map(e=>this.load(e).catch(t=>{console.warn(`Failed to reload asset ${e}:`,t)})))}list(){return Array.from(this.cache.values())}},rd=`modulepreload`,id=function(e){return`/`+e},ad={},od=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=id(t,n),t=s(t),t in ad)return;ad[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:rd,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},sd=class{constructor(){this.cache=new Map,this.loadingPromises=new Map,this.cdnBaseUrl=`https://esm.sh`}async load(e,t=`latest`){let n=`${e}@${t}`;if(this.cache.has(n))return this.cache.get(n);if(this.loadingPromises.has(n))return this.loadingPromises.get(n);let r=this.loadPackage(n,e,t);this.loadingPromises.set(n,r);try{let e=await r;return this.cache.set(n,e),e}catch(e){throw this.loadingPromises.delete(n),e}}async loadPackage(e,t,n){let r=n===`latest`?``:`@${n}`,i=`${this.cdnBaseUrl}/${t}${r}`;try{let e=await od(()=>import(i),[]);return e.default&&typeof e.default==`object`||e.default!==void 0?e.default:e}catch(t){throw Error(`Failed to load package ${e}: ${t.message||`Unknown error`}\nURL: ${i}`)}}async search(e,t=20){try{let n=`https://registry.npmjs.org/-/v1/search?text=${encodeURIComponent(e)}&size=${t}`,r=await fetch(n,{method:`GET`,headers:{Accept:`application/json`}});if(!r.ok){if(r.status===0||r.status===403||r.status===404)return console.warn(`NPM registry search may be blocked by CORS. Using fallback.`),[];throw Error(`Search failed: ${r.statusText}`)}return(await r.json()).objects?.map(e=>({name:e.package.name,version:e.package.version,description:e.package.description,keywords:e.package.keywords||[],author:e.package.author,homepage:e.package.links?.homepage,repository:e.package.links?.repository?{url:e.package.links.repository}:void 0}))||[]}catch(e){if(e.message?.includes(`CORS`)||e.message?.includes(`Failed to fetch`))return console.warn(`NPM registry search unavailable:`,e.message),[];throw Error(`Failed to search packages: ${e.message||`Unknown error`}`)}}async getPackageInfo(e){try{let t=`https://registry.npmjs.org/${encodeURIComponent(e)}`,n=await fetch(t);if(!n.ok){if(n.status===404)return null;throw Error(`Failed to fetch package info: ${n.statusText}`)}let r=await n.json(),i=r[`dist-tags`]?.latest||Object.keys(r.versions).pop(),a=r.versions[i];return{name:r.name,version:i,description:a.description,keywords:a.keywords||[],author:a.author,homepage:r.homepage||a.homepage,repository:a.repository}}catch(e){throw Error(`Failed to get package info: ${e.message||`Unknown error`}`)}}clearCache(){this.cache.clear(),this.loadingPromises.clear()}removeFromCache(e,t){if(t){let n=`${e}@${t}`;this.cache.delete(n),this.loadingPromises.delete(n)}else for(let t of this.cache.keys())t.startsWith(`${e}@`)&&(this.cache.delete(t),this.loadingPromises.delete(t))}getCachedPackages(){return Array.from(this.cache.keys())}},cd=class{constructor(e){this.config=e}setFileSystemFunctions(e,t){this.fileReadFn=e,this.fileExistsFn=t}async resolve(e){if(e.startsWith(`cascade.`))return this.resolveStdlib(e);if(e.startsWith(`local.`))return this.resolveEmbedded(e);for(let t of this.config.projectPackages)if(e.startsWith(`${t.alias}.`))return this.resolveProject(e,t);return this.config.embeddedModules.has(e)?this.resolveEmbedded(e):null}resolveStdlib(e){return Pe(e)?{source:{type:`stdlib`,module:e},code:``,displayPath:`<cascade>/${e.split(`.`).slice(1).join(`/`)}.ts`,editable:!1}:null}resolveEmbedded(e){let t=this.config.embeddedModules.get(e);return t?{source:{type:`embedded`,module:e,code:t.code,history:t.history||[]},code:t.code,displayPath:`<embedded>`,editable:!0}:null}async resolveProject(e,t){let n=e.replace(`${t.alias}.`,``).split(`.`),r=`${t.path}/${n.join(`/`)}.ts`,i=this.config.externalModules.get(e),a=null,o=`synced`;if(this.fileReadFn&&this.fileExistsFn){let e=this.resolvePath(r);await this.fileExistsFn(e)?(a=await this.fileReadFn(e),a!==null&&i&&i.cachedCode!==a&&(o=`modified-external`)):(o=`missing`,a=i?.cachedCode||null)}else i&&(a=i.cachedCode);return a===null?null:{source:{type:`project`,module:e,file:r,cachedCode:a,lastSync:new Date().toISOString(),status:o},code:a,displayPath:r,editable:!0}}resolvePath(e){return this.config.basePath?e.startsWith(`./`)?`${this.config.basePath}/${e.slice(2)}`:e.startsWith(`/`)?e:`${this.config.basePath}/${e}`:e}getSourceType(e){if(e.startsWith(`cascade.`))return`stdlib`;if(e.startsWith(`local.`))return`embedded`;for(let t of this.config.projectPackages)if(e.startsWith(`${t.alias}.`))return`project`;return this.config.embeddedModules.has(e)?`embedded`:null}createEmbeddedModule(e,t,n=`user`){let r=new Date().toISOString(),i={code:t,history:[{code:t,timestamp:r,author:n}],created:r,modified:r};return this.config.embeddedModules.set(e,i),{modulePath:e,module:i}}duplicateToEmbedded(e,t){let n=this.resolveStdlib(e);if(!n)return null;let r=e.split(`.`).pop()||`Custom`,i=t||r,a=`local.${i}`,o=1;for(;this.config.embeddedModules.has(a);)a=`local.${i}${o}`,o++;let s=new Date().toISOString(),c={code:n.code,timestamp:s,author:`user`},l={code:n.code,history:[c],created:s,modified:s};return this.config.embeddedModules.set(a,l),{modulePath:a,module:l}}async extractToProject(e,t,n){let r=this.config.embeddedModules.get(e);if(!r)return null;let i=`${t.path}/${n}.ts`,a=`${t.alias}.${n.replace(/\//g,`.`)}`,o={file:i,cachedCode:r.code,lastSync:new Date().toISOString()};return this.config.externalModules.set(a,o),{modulePath:a,filePath:i}}updateEmbeddedCode(e,t,n=`user`,r){let i=this.config.embeddedModules.get(e);if(!i)return!1;let a=new Date().toISOString(),o={code:t,timestamp:a,author:n,prompt:r};return i.history.push(o),i.code=t,i.modified=a,!0}restoreVersion(e,t){let n=this.config.embeddedModules.get(e);if(!n||t<0||t>=n.history.length)return!1;let r=n.history[t];return n.code=r.code,n.modified=new Date().toISOString(),n.history.push({code:r.code,timestamp:n.modified,author:`user`}),!0}getProjectPackages(){return[...this.config.projectPackages]}addProjectPackage(e){let t=this.config.projectPackages.find(t=>t.alias===e.alias);t?t.path=e.path:this.config.projectPackages.push(e)}removeProjectPackage(e){let t=this.config.projectPackages.findIndex(t=>t.alias===e);return t>=0&&(this.config.projectPackages.splice(t,1),!0)}async syncExternalModule(e){let t=this.config.externalModules.get(e);if(!t||!this.fileReadFn||!this.fileExistsFn)return`missing`;let n=this.resolvePath(t.file);if(!await this.fileExistsFn(n))return`missing`;let r=await this.fileReadFn(n);return r===null?`missing`:(t.cachedCode=r,t.lastSync=new Date().toISOString(),`synced`)}exportConfig(){return{projectPackages:[...this.config.projectPackages],embeddedModules:Object.fromEntries(this.config.embeddedModules),externalModules:Object.fromEntries(this.config.externalModules)}}importConfig(e){e.projectPackages&&(this.config.projectPackages=[...e.projectPackages]),e.embeddedModules&&(this.config.embeddedModules=new Map(Object.entries(e.embeddedModules))),e.externalModules&&(this.config.externalModules=new Map(Object.entries(e.externalModules)))}};function ld(e){return new cd({projectPackages:[],embeddedModules:new Map,externalModules:new Map,basePath:e})}var ud=class{static detectCycles(e){let t=[],n=new Set,r=new Set,i=[],a=o=>{if(r.has(o)){let e=i.indexOf(o);return e!==-1&&t.push([...i.slice(e),o]),!0}if(n.has(o))return!1;n.add(o),r.add(o),i.push(o);let s=e.getNode(o);if(s)for(let e of s.outputs)for(let t of e.connections)a(t.to.nodeId);return r.delete(o),i.pop(),!1},o=e.nodes;for(let e of o)n.has(e.id)||a(e.id);return t}static wouldCreateCycle(e,t,n){if(t===n)return!0;let r=new Set,i=(t,n)=>{if(t===n)return!0;if(r.has(t))return!1;r.add(t);let a=e.getNode(t);if(!a)return!1;for(let e of a.outputs)for(let t of e.connections)if(i(t.to.nodeId,n))return!0;return!1};return i(n,t)}static topologicalSort(e){let t=this.detectCycles(e);if(t.length>0)throw Error(`Graph contains cycles: ${t.map(e=>e.join(` -> `)).join(`, `)}`);let n=[],r=new Set,i=new Set,a=t=>{if(i.has(t))throw Error(`Cycle detected involving node ${t}`);if(r.has(t))return;i.add(t);let o=e.getNode(t);if(o)for(let e of o.inputs)for(let t of e.connections)a(t.from.nodeId);i.delete(t),r.add(t),n.push(t)},o=e.nodes;for(let e of o)r.has(e.id)||a(e.id);return n}static validateConnection(e,t,n,r,i){let a=e.getNode(t),o=e.getNode(n);if(!a||!o)return{type:`invalid_connection`,message:`Invalid connection: node not found`,nodeIds:[t,n]};let s=a.outputs.find(e=>e.id===r),c=o.inputs.find(e=>e.id===i);return!s||!c?{type:`invalid_connection`,message:`Invalid connection: port not found`,nodeIds:[t,n]}:s.portType===c.portType?this.wouldCreateCycle(e,t,n)?{type:`cycle`,message:`Connection would create a cycle: ${t} -> ${n}`,nodeIds:[t,n]}:null:{type:`invalid_connection`,message:`Port type mismatch: cannot connect ${s.portType} to ${c.portType}`,nodeIds:[t,n]}}static validateGraph(e){let t=[],n=[],r=this.detectCycles(e);r.length>0&&r.forEach(e=>{t.push({type:`cycle`,message:`Cycle detected: ${e.join(` -> `)}`,nodeIds:e})});for(let n of e.connections){let r=e.getNode(n.from.nodeId),i=e.getNode(n.to.nodeId);if(!r||!i){t.push({type:`invalid_connection`,message:`Connection references non-existent node`,connectionId:n.id,nodeIds:[n.from.nodeId,n.to.nodeId]});continue}let a=r.outputs.find(e=>e.id===n.from.portId),o=i.inputs.find(e=>e.id===n.to.portId);if(!a||!o){t.push({type:`invalid_connection`,message:`Connection references non-existent port`,connectionId:n.id,nodeIds:[n.from.nodeId,n.to.nodeId]});continue}a.portType!==o.portType&&t.push({type:`invalid_connection`,message:`Port type mismatch in connection`,connectionId:n.id,nodeIds:[n.from.nodeId,n.to.nodeId]})}let i=new Set;for(let t of e.connections)i.add(t.from.nodeId),i.add(t.to.nodeId);let a=e.nodes,o=a.filter(e=>{let t=!i.has(e.id),n=e.inputs.every(e=>e.connections.length===0);return t&&!n});return o.length>0&&n.push({type:`orphaned_node`,message:`Found ${o.length} orphaned node(s) with no connections`,nodeIds:o.map(e=>e.id)}),a.filter(e=>e.inputs.every(e=>e.connections.length===0)).length===0&&a.length>0&&n.push({type:`invalid_entry_point`,message:`No entry points found (all nodes have input connections)`}),{valid:t.length===0,errors:t,warnings:n}}},dd=new Map;async function fd(e){let t=typeof document<`u`?URL.createObjectURL(new Blob([e],{type:`text/javascript`})):`data:text/javascript;base64,${Buffer.from(e,`utf-8`).toString(`base64`)}`;try{let e=await od(()=>import(t),[]);if(typeof e.execute!=`function`)throw Error(`node module has no execute export`);return{execute:e.execute,...e.definition===void 0?{}:{definition:e.definition}}}finally{t.startsWith(`blob:`)&&URL.revokeObjectURL(t)}}function pd(e){let t=e.replace(/^project\./,``),n=`project:${t}`,r=dd.get(n);return r||(r=fetch(`/api/nodes/${encodeURIComponent(t)}/compiled`).then(async e=>{if(!e.ok)throw Error(await e.text());return fd(await e.text())}),dd.set(n,r)),r}function md(e){let t=`embedded:${gd(e)}`,n=dd.get(t);return n||(n=fetch(`/api/nodes/compile-embedded`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({code:e})}).then(async e=>{if(!e.ok)throw Error(await e.text());return fd(await e.text())}),dd.set(t,n)),n}function hd(e){dd.delete(`project:${e}`)}function gd(e){let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)|0;return t.toString(36)}var _d=[`poly`,`bezier`,`mesh`,`packed`],vd=new Set([`f32`,`f64`,`i32`,`u8`]),yd=/^[A-Za-z_][A-Za-z0-9_]*$/,bd=new Set([`__proto__`,`prototype`,`constructor`]);function xd(e,t){throw TypeError(`geometry/${e}: ${t}`)}function Sd(){return{vertexPoints:new Int32Array,offsets:Int32Array.of(0),kinds:new Uint8Array,closed:new Uint8Array}}function Cd(e){return e===`f64`?Float64Array:e===`f32`?Float32Array:e===`i32`?Int32Array:Uint8Array}function wd(e,t){return Number.isFinite(t)?e===`f64`||e===`f32`?!0:Number.isInteger(t)?e===`u8`?t>=0&&t<=255:t>=-2147483648&&t<=2147483647:!1:!1}function Td(e,t){return(!Number.isSafeInteger(t)||t<0)&&xd(`attribute-length`,`attribute array length must be a non-negative safe integer`),e===`f64`?new Float64Array(t):e===`f32`?new Float32Array(t):e===`i32`?new Int32Array(t):new Uint8Array(t)}function Ed(e,t){let n=Td(e,t.length);for(let r=0;r<t.length;r+=1){let i=t[r];wd(e,i)||xd(`attribute-value`,`${String(i)} cannot be represented as ${e}`),n[r]=i,Number.isFinite(n[r])||xd(`attribute-value`,`${String(i)} overflows ${e}`)}return n}function Dd(e){return e.storage===`string`}function Od(e,t){(!yd.test(e)||bd.has(e))&&xd(`invalid-name`,`${t}.${e} is not a valid attribute name`)}function kd(e,t,n){for(let[r,i]of Object.entries(e)){if(Od(r,n),Dd(i)){i.data instanceof Int32Array||xd(`attribute-storage`,`${n}.${r} string indices must be Int32Array`),i.size!==1&&xd(`string-size`,`${n}.${r} string attributes have size 1`),i.data.length!==t&&xd(`attribute-length`,`${n}.${r} has ${i.data.length} entries for ${t} elements`);for(let e of i.data)(e<-1||e>=i.table.length)&&xd(`string-index`,`${n}.${r} references table entry ${e}`);(!Array.isArray(i.table)||i.table.some(e=>typeof e!=`string`))&&xd(`string-table`,`${n}.${r} needs a string table`);continue}(!Number.isInteger(i.size)||i.size<1)&&xd(`attribute-size`,`${n}.${r} needs a size of at least 1`),vd.has(i.storage)||xd(`attribute-storage`,`${n}.${r} has an unknown storage ${String(i.storage)}`),i.data instanceof Cd(i.storage)||xd(`attribute-storage`,`${n}.${r} declares ${i.storage} but uses ${i.data?.constructor?.name??`unknown storage`}`),i.data.length!==i.size*t&&xd(`attribute-length`,`${n}.${r} has ${i.data.length} values for ${t} elements of size ${i.size}`);for(let e of i.data)Number.isFinite(e)||xd(`non-finite`,`${n}.${r} contains ${String(e)}`)}}function Ad(e,t,n){for(let[r,i]of Object.entries(e)){Od(r,n),i.length!==t&&xd(`group-length`,`${n}.${r} covers ${i.length} of ${t} elements`);for(let e of i)e!==0&&e!==1&&xd(`group-mask`,`${n}.${r} contains ${e}; masks contain only 0 or 1`)}}function jd(e){let t=e.pointCount;(!Number.isSafeInteger(t)||t<0)&&xd(`point-count`,`pointCount must be a non-negative safe integer`);let n=e.topology??Sd();(!(n.vertexPoints instanceof Int32Array)||!(n.offsets instanceof Int32Array)||!(n.kinds instanceof Uint8Array)||!(n.closed instanceof Uint8Array))&&xd(`topology-storage`,`topology uses Int32Array indices and Uint8Array flags`);let r=n.offsets.length-1;r<0&&xd(`offsets`,`topology.offsets needs primitiveCount + 1 entries`),n.offsets[0]!==0&&xd(`offsets`,`topology.offsets starts at 0`);for(let e=1;e<=r;e+=1)n.offsets[e]<n.offsets[e-1]&&xd(`offsets`,`topology.offsets must not decrease`);let i=n.offsets[r];i!==n.vertexPoints.length&&xd(`offsets`,`topology.offsets ends at ${i} for ${n.vertexPoints.length} vertices`),(n.kinds.length!==r||n.closed.length!==r)&&xd(`topology-length`,`topology.kinds and topology.closed need ${r} entries`);for(let e of n.vertexPoints)(e<0||e>=t)&&xd(`vertex-point`,`vertex references point ${e}`);for(let e of n.kinds)e>=_d.length&&xd(`primitive-kind`,`unknown primitive kind ${e}`);for(let e of n.closed)e!==0&&e!==1&&xd(`closed-mask`,`topology.closed contains ${e}; flags contain only 0 or 1`);let a=_d.indexOf(`bezier`);for(let e=0;e<r;e+=1){if(n.kinds[e]!==a)continue;let t=n.offsets[e+1]-n.offsets[e],r=n.closed[e]===1;(t<(r?3:4)||(t-+!r)%3!=0)&&xd(`bezier-arity`,`primitive ${e} has ${t} vertices, and a ${r?`closed`:`open`} bezier needs ${r?`3n`:`3n + 1`}`)}let o=e.point,s=o.P;s===void 0&&xd(`missing-position`,`point.P is required on every geometry`),Dd(s)&&xd(`position-storage`,`point.P must be a numeric attribute`),s.size!==2&&s.size!==3&&xd(`position-size`,`point.P must have a size of 2 or 3`),kd(o,t,`point`);let c=e.vertex??{};kd(c,i,`vertex`);let l=e.primitive??{};kd(l,r,`primitive`);let u=e.pointGroups??{};Ad(u,t,`pointGroups`);let d=e.primitiveGroups??{};Ad(d,r,`primitiveGroups`);let f=e.detail??{};for(let[e,t]of Object.entries(f))Od(e,`detail`),typeof t==`number`?Number.isFinite(t)||xd(`non-finite`,`detail.${e} contains ${String(t)}`):typeof t!=`string`&&(!Array.isArray(t)||t.some(e=>!Number.isFinite(e)))&&xd(`detail-value`,`detail.${e} must be a finite number, string, or finite number array`);return Md({kind:`geometry`,pointCount:t,vertexCount:i,primitiveCount:r,topology:n,point:o,vertex:c,primitive:l,detail:f,pointGroups:u,primitiveGroups:d})}function Md(e){for(let t of[`point`,`vertex`,`primitive`]){let n=e[t];for(let e of Object.values(n))Dd(e)&&Object.freeze(e.table),Object.freeze(e);Object.freeze(n)}Object.freeze(e.topology);for(let t of Object.values(e.detail))Array.isArray(t)&&Object.freeze(t);return Object.freeze(e.detail),Object.freeze(e.pointGroups),Object.freeze(e.primitiveGroups),Object.freeze(e)}function Nd(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Pd(e){return Array.isArray(e)&&e.every(e=>typeof e==`number`&&Number.isFinite(e))}function Fd(e,t){if(e===void 0)return{};let n={};for(let[r,i]of Object.entries(e)){if(Nd(i)||xd(`attribute-shape`,`${t}.${r} must be an object`),i.storage===`string`){let e=i.table;(!Array.isArray(e)||e.some(e=>typeof e!=`string`))&&xd(`string-table`,`${t}.${r} needs a string table`),Hd(i.data)||xd(`attribute-data`,`${t}.${r} needs 32-bit integer indices`),n[r]={storage:`string`,size:1,table:[...e],data:Int32Array.from(i.data)};continue}(typeof i.storage!=`string`||!vd.has(i.storage))&&xd(`attribute-storage`,`${t}.${r} has an unknown storage ${String(i.storage)}`),Pd(i.data)||xd(`attribute-data`,`${t}.${r} needs finite numeric data`);let e=i.size;(typeof e!=`number`||!Number.isInteger(e)||e<1)&&xd(`attribute-size`,`${t}.${r} needs a size of at least 1`),n[r]={storage:i.storage,size:e,data:Ed(i.storage,i.data)}}return n}function Id(e,t,n){if(e===void 0)return{};let r={};for(let[i,a]of Object.entries(e)){Pd(a)||xd(`group-indices`,`${n}.${i} must be a list of indices`);let e=new Uint8Array(t);for(let r of a)(!Number.isInteger(r)||r<0||r>=t)&&xd(`group-indices`,`${n}.${i} references element ${r}`),e[r]=1;r[i]=e}return r}function Ld(e){(!Nd(e)||e.kind!==`geometry`)&&xd(`not-geometry`,`a geometry literal needs kind: 'geometry'`);let t=e.pointCount;(!Number.isSafeInteger(t)||t<0)&&xd(`point-count`,`pointCount must be a non-negative safe integer`);let n=e.topology,r=Sd();if(n!==void 0){Nd(n)||xd(`topology-shape`,`topology must be an object`),(!Hd(n.vertexPoints)||!Hd(n.offsets))&&xd(`topology-shape`,`topology needs vertexPoints and offsets`);let e=n.offsets.length-1;e<0&&xd(`offsets`,`topology.offsets needs primitiveCount + 1 entries`);let t=n.kinds,i=n.closed;t!==void 0&&!Ud(t)&&xd(`topology-shape`,`topology.kinds must be numeric`),i!==void 0&&(!Ud(i)||i.some(e=>e!==0&&e!==1))&&xd(`topology-shape`,`topology.closed must be numeric`),r={vertexPoints:Int32Array.from(n.vertexPoints),offsets:Int32Array.from(n.offsets),kinds:t===void 0?new Uint8Array(e):Uint8Array.from(t),closed:i===void 0?new Uint8Array(e):Uint8Array.from(i)}}let i={};for(let[t,n]of Object.entries(e.detail??{}))typeof n==`number`||typeof n==`string`?i[t]=n:Pd(n)?i[t]=[...n]:xd(`detail-value`,`detail.${t} must be a number, string, or number array`);return jd({pointCount:t,point:Fd(e.point,`point`),vertex:Fd(e.vertex,`vertex`),primitive:Fd(e.primitive,`primitive`),detail:i,topology:r,pointGroups:Id(e.pointGroups,t,`pointGroups`),primitiveGroups:Id(e.primitiveGroups,r.offsets.length-1,`primitiveGroups`)})}function Rd(e){try{return Ld(e),!0}catch{return!1}}function zd(e){if(!Nd(e)||e.kind!==`geometry-file`||typeof e.path!=`string`||e.path.length===0||e.format!==`npy`&&e.format!==`json`||e.format===`npy`&&e.attribute===void 0)return!1;if(e.attribute!==void 0){let t=e.attribute;if(!Nd(t)||t.level!==`point`&&t.level!==`vertex`&&t.level!==`primitive`||typeof t.name!=`string`||!yd.test(t.name)||bd.has(t.name)||typeof t.size!=`number`||!Number.isInteger(t.size)||t.size<1||typeof t.storage!=`string`||!vd.has(t.storage))return!1}for(let t of[`pointCount`,`primitiveCount`]){let n=e[t];if(n!==void 0&&(typeof n!=`number`||!Number.isSafeInteger(n)||n<0))return!1}return!0}function Bd(e){return Rd(e)||zd(e)}function Vd(e){return Pd(e)&&e.every(Number.isSafeInteger)}function Hd(e){return Vd(e)&&e.every(e=>e>=-2147483648&&e<=2147483647)}function Ud(e){return Vd(e)&&e.every(e=>e>=0&&e<=255)}var Wd=`float.int.bool.string.vec2.vec3.vec4.vec2i.vec3i.vec4i.mat2.mat3.mat4.image.texture.geometry.points.lines.polyline.mesh.rects.color.asset.array.object.any`.split(`.`),Gd=/^[A-Za-z][A-Za-z0-9_]*$/,Kd=/^[a-z][a-z0-9-]*(?:\.[A-Za-z][A-Za-z0-9_]*)+$/,qd=new Set([`__proto__`,`prototype`,`constructor`]),Jd=new Set(Wd),Yd=new Set([`number`,`slider`,`range`,`int`,`boolean`,`text`,`textarea`,`select`,`vector`,`matrix`,`color`,`image`,`asset`]),Xd={portable:[`assets`,`media`],browser:[`assets`,`media`,`webgl`],server:[`files`,`assets`,`media`,`python`,`shell`]},Zd=e=>new Set(e.split(` `)),Qd=Zd(`apiVersion runsOn container capabilities label description icon inputs outputs props`),$d=Zd(`kind type default description variadic min max step accept control options`),ef=Zd(`kind type description`),tf=Zd(`type default label description min max step accept control options`);function nf(e,t,n){return{phase:`definition`,code:`definition/${e}`,message:t,path:n}}function rf(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function af(e){return typeof e==`string`&&(Jd.has(e)||Kd.test(e))}function of(e){return e===null||typeof e==`string`||typeof e==`boolean`?!0:typeof e==`number`?Number.isFinite(e):Array.isArray(e)?e.every(of):rf(e)&&Object.values(e).every(of)}function sf(e,t,n){return Object.keys(e).filter(e=>!t.has(e)).map(e=>nf(`unknown-field`,`${n}.${e} is not allowed`,`${n}.${e}`))}function cf(e,t){if(!of(t))return!1;if(e===`geometry`)return Bd(t);if(e===`float`||e===`int`)return typeof t==`number`;if(e===`bool`)return typeof t==`boolean`;if(e===`string`)return typeof t==`string`;let n={vec2:2,vec3:3,vec4:4,vec2i:2,vec3i:3,vec4i:4,mat2:4,mat3:9,mat4:16,color:4}[e];return n===void 0||Array.isArray(t)&&t.length===n&&t.every(t=>e.endsWith(`i`)?Number.isInteger(t):typeof t==`number`)}function lf(e){if(!rf(e))return[nf(`not-object`,`Definition must be an object`)];let t=sf(e,Qd,`definition`),n=(e,n,r)=>t.push(nf(e,n,r)),r=e.runsOn;e.apiVersion!==1&&n(`api-version`,`apiVersion must be 1`,`apiVersion`),Object.prototype.hasOwnProperty.call(Xd,String(r))||n(`environment`,`runsOn must be portable, browser, or server`,`runsOn`),e.container!==void 0&&e.container!==`subnet`&&n(`invalid-container`,`container must be subnet`,`container`);let i=Xd[r]??[];e.capabilities!==void 0&&!Array.isArray(e.capabilities)&&n(`invalid-capabilities`,`capabilities must be an array`,`capabilities`);let a=new Set;for(let[t,o]of(Array.isArray(e.capabilities)?e.capabilities:[]).entries()){let e=`capabilities.${t}`;!a.has(o)&&!i.includes(o)&&n(`capability-not-allowed`,`${String(o)} is not available on ${String(r)}`,e),a.has(o)&&n(`duplicate-capability`,`${String(o)} is duplicated`,e),a.add(o)}let o=new Map,s=new Map;for(let i of[`inputs`,`outputs`,`props`]){let a=e[i];if(a!==void 0){if(!rf(a)){n(`invalid-section`,`${i} must be an object`,i);continue}for(let[e,c]of Object.entries(a)){let a=`${i}.${e}`;Gd.test(e)||n(`invalid-name`,`${e} is not a valid identifier`,a),qd.has(e)&&n(`reserved-name`,`${e} is reserved`,a);let l=i===`outputs`?s:o,u=l.get(e);if(u?n(`name-collision`,`${e} is declared in ${u} and ${i}`,a):l.set(e,i),!rf(c)){n(`invalid-entry`,`${a} must be an object`,a);continue}let d=i===`props`?tf:i===`outputs`?ef:$d;if(i!==`props`&&c.kind!==`data`&&c.kind!==`trigger`){n(`invalid-kind`,`${a}.kind must be data or trigger`,`${a}.kind`),t.push(...sf(c,d,a));continue}if(i!==`props`&&c.kind===`trigger`){Object.keys(c).some(e=>e!==`kind`&&e!==`description`)&&n(`trigger-extra`,`Trigger ports allow only kind and description`,a);continue}t.push(...sf(c,d,a)),`control`in c&&(typeof c.control!=`string`||!Yd.has(c.control))&&n(`invalid-control`,`${String(c.control)} is not a Cascade control`,`${a}.control`),`options`in c&&c.control!==`select`&&n(`options-without-select`,`options require the select control`,`${a}.options`);let f=c.type;if(!af(f)){n(`invalid-type`,`${String(f)} is not a Cascade type`,`${a}.type`);continue}f===`texture`&&r!==`browser`&&n(`texture-not-portable`,`texture is browser-only`,`${a}.type`),f===`texture`&&`default`in c&&n(`texture-default`,`texture cannot have a default`,`${a}.default`),i===`props`&&!(`default`in c)&&n(`missing-default`,`Props require defaults`,`${a}.default`),`default`in c&&!of(c.default)?n(`invalid-default`,`Default must be finite JSON`,`${a}.default`):`default`in c&&!cf(f,c.default)&&n(`default-type`,`Default does not match ${f}`,`${a}.default`),f===`int`&&`default`in c&&(!Number.isFinite(c.default)||!Number.isInteger(c.default))&&n(`non-integer`,`Integer defaults must be finite integers`,`${a}.default`),`step`in c&&(typeof c.step!=`number`||!Number.isFinite(c.step)||c.step<=0)&&n(`invalid-step`,`step must be greater than zero`,`${a}.step`),typeof c.min==`number`&&typeof c.max==`number`&&c.min>c.max&&n(`invalid-range`,`min must not exceed max`,a)}}}return t}var uf={report:()=>{}};function df(e){return{...e.label?{label:e.label}:{},...e.min===void 0?{}:{min:e.min},...e.max===void 0?{}:{max:e.max},...e.step===void 0?{}:{step:e.step},...e.options?{choices:e.options.map(e=>({value:e,label:String(e)}))}:{},promotable:!1}}function ff(e,t,n){let r=t.definition,i=new Map,a=0;for(let[t,n]of Object.entries(r.inputs??{})){if(n.kind===`trigger`){let r=e.in(t,void 0,{type:`any`,...n.description?{description:n.description}:{}});r.portType=`trigger`,r.onTrigger=async n=>{let r=a++;i.set(t,{id:`${e.id}:${r}`,runId:`studio:${e.id}:${r}`,sequence:r,...n===void 0?{}:{payload:n},source:{kind:`external`}}),e.markDirty(),await e.execute()};continue}if(n.variadic){e.setVariadic(void 0,{type:n.type});continue}e.in(t,n.default,{type:n.type,...n.min===void 0?{}:{min:n.min},...n.max===void 0?{}:{max:n.max},...n.step===void 0?{}:{step:n.step},...n.options?{choices:n.options.map(e=>({value:e,label:String(e)}))}:{},...n.description?{description:n.description}:{}})}for(let[t,n]of Object.entries(r.outputs??{}))e.out(t,n.kind===`trigger`?`trigger`:`param`,n.kind===`data`?{type:n.type,description:n.description}:{description:n.description});for(let[t,n]of Object.entries(r.props??{})){let r=e.param(t,n.default,{type:n.type,...df(n)});r.documentField=`props`}let o=Object.values(r.inputs??{}).some(e=>e.kind===`trigger`),s;return async()=>{if(o&&i.size===0)return;for(let e of r.capabilities??[])if(!n[e])throw Error(`${t.moduleId} requires the Studio ${e} capability`);let a=await(s??=t.loadExecute(`browser`)),c={};for(let[t,n]of Object.entries(r.inputs??{}))c[t]=n.kind===`trigger`?i.get(t):n.variadic?e.getVariadicInputs().map(e=>e.value??void 0):e.inputs.find(e=>e.name===t)?.value;i.clear();let l=Object.fromEntries(Object.entries(r.outputs??{}).map(([n,r])=>{let i=e.outputs.find(e=>e.name===n);if(!i)throw Error(`Missing output ${t.moduleId}.${n}`);return[n,r.kind===`trigger`?{trigger:e=>i.trigger(e)}:{set:e=>i.setValue(e)}]}));await a({nodeId:e.id,inputs:c,outputs:l,props:Object.fromEntries(e.parameters.map(e=>[e.name,e.value])),capabilities:n,signal:new AbortController().signal,progress:uf})}}function pf(e,t,n){e.setFunction(ff(e,t,n))}function mf(e,t={}){let n=new Map;for(let r of e){let e=r.moduleId.split(`.`);if(e.length!==3||e[0]!==`cascade`)throw Error(`Studio built-ins require cascade.<library>.<node>: ${r.moduleId}`);let i=e[1],a=Le(r.moduleId),o=n.get(i)??{};o[a]=class extends Ju{constructor(e,t){super(e,a,t)}setup(){pf(this,r,t)}},n.set(i,o),Ne({type:r.moduleId,name:r.definition.label??a,icon:r.definition.icon,description:r.definition.description,category:i})}for(let[e,t]of n)Ae(e,t)}function hf(e){return`/api/assets/${e.replace(/^\.\//,``).replace(/^assets\//,``).split(`/`).map(encodeURIComponent).join(`/`)}`}var gf={async read(e,{signal:t}){let n=await fetch(hf(e.path),{signal:t});if(!n.ok)throw Error(`Could not read asset ${e.path} (${n.status})`);return new Uint8Array(await n.arrayBuffer())},async write(e,t,{signal:n}){let r=t.suggestedName?.trim()||`asset.bin`,i=new FormData;i.append(`file`,new Blob([new Uint8Array(e)],{type:t.mediaType}),r);let a=await fetch(`/api/assets`,{method:`POST`,body:i,signal:n});if(!a.ok)throw Error(`Could not write asset ${r} (${a.status})`);let o=await a.json();if(!o.path)throw Error(`Asset upload returned no path for ${r}`);return{path:o.path,...t.mediaType?{mediaType:t.mediaType}:{}}},async resolveUrl(e){return{value:hf(e.path),release:()=>{}}}},_f={assets:gf};function vf(e){return typeof e==`object`&&!!e&&e.apiVersion===1}function yf(e){let t=lf(e);return t.length?t.map(e=>`${e.code}: ${e.message}`).join(`
|
|
7
|
-
`):null}function bf(e,t=_f){let n=e?.capabilities;return Array.isArray(n)?n.filter(e=>typeof e==`string`).filter(e=>!t[e]):[]}function xf(e,t,n,r=_f){let i=n.then(n=>Sf(e,t,n,r));return i.catch(()=>{}),(e,t)=>i.then(n=>n(e,t))}function Sf(e,t,n,r=_f){if(!vf(n.definition))return(e,t)=>n.execute(e,t);let i=yf(n.definition);if(i)throw Error(`${t} exports an invalid definition-v1 literal:\n${i}`);return ff(e,{kind:`definition-v1`,moduleId:t,definition:n.definition,loadExecute:async()=>n.execute},r)}var Cf=class{constructor(e,t=50){this.graph=e,this.debounceMs=t,this.timer=null,this.activeRun=null,this.rerunRequested=!1,this.listeners=new Set,this.idleResolvers=new Set,this._status={phase:`idle`,total:0,completed:0,currentNode:null,startedAt:null,elapsed:0}}get status(){return this._status}get isRunning(){return this.activeRun!==null}subscribe(e){return this.listeners.add(e),e(this._status),()=>this.listeners.delete(e)}notifyNodeStateChange(){this.emit()}markStale(e){let t=new Set,n=e=>{if(!t.has(e.id)){t.add(e.id),e.cookState!==`stale`&&e.invalidateCook();for(let t of e.outputs)for(let e of t.connections){let t=this.graph.getNode(e.to.nodeId);t&&n(t)}}};n(e),this.graph.getNode(e.id)===e&&this.schedule()}markDownstreamStale(e){for(let t of e.outputs)for(let e of t.connections){let t=this.graph.getNode(e.to.nodeId);t&&this.markStale(t)}}schedule(){if(this.activeRun){this.rerunRequested=!0;return}this.timer&&clearTimeout(this.timer);let e=this.graph.nodes.filter(e=>e.cookState===`stale`||e.cookState===`queued`).length;this.setStatus({phase:`scheduled`,total:e,completed:0,currentNode:null,startedAt:null,elapsed:0}),this.timer=setTimeout(()=>{this.timer=null,this.flushScheduled()},this.debounceMs)}async flush(e){await this.flushInternal(e,!0)}async flushScheduled(){await this.flushInternal(void 0,!1)}async flushInternal(e,t){if(this.timer&&=(clearTimeout(this.timer),null),t&&this.prepareErrorRetry(e),this.activeRun){this.rerunRequested=!0,await this.activeRun;return}this.activeRun=this.run(e).finally(()=>{this.activeRun=null}),await this.activeRun}prepareErrorRetry(e){let t=e?this.collectDownstream(e):null;for(let e of this.graph.nodes)e.cookState===`error`&&(!t||t.has(e.id))&&e.invalidateCook()}async whenIdle(){!this.activeRun&&!this.timer||await new Promise(e=>this.idleResolvers.add(e))}dispose(){this.timer&&clearTimeout(this.timer),this.timer=null,this.listeners.clear();for(let e of this.idleResolvers)e();this.idleResolvers.clear()}async run(e){let t=e?this.collectDownstream(e):null;do{this.rerunRequested=!1;let e=this.graph.nodes.filter(e=>(e.cookState===`stale`||e.cookState===`queued`)&&(!t||t.has(e.id)));if(t=null,e.length===0)break;let n=new Set(e.map(e=>e.id)),r=this.graph.getTopologicalOrder().map(e=>this.graph.getNode(e)).filter(e=>!!e&&n.has(e.id)),i=new Set(r.map(e=>e.id));for(let t of e)i.has(t.id)||r.push(t);for(let e of r)e.setCookState(`queued`);let a=performance.now();this.setStatus({phase:`cooking`,total:r.length,completed:0,currentNode:null,startedAt:a,elapsed:0});let o=new Set,s=!1;for(let e of r){if(e.inputs.some(e=>e.connections.some(e=>n.has(e.from.nodeId)&&(o.has(e.from.nodeId)||this.graph.getNode(e.from.nodeId)?.cookState===`error`)))){e.setCookState(`stale`),o.add(e.id),this.setStatus({...this._status,completed:this._status.completed+1,currentNode:null,elapsed:performance.now()-a});continue}e.setCookState(`cooking`),this.setStatus({...this._status,currentNode:e,elapsed:performance.now()-a}),await e.execute(),e.cookState===`error`&&o.add(e.id),e.cookState===`stale`&&(o.add(e.id),s=!0),this.setStatus({...this._status,completed:this._status.completed+1,currentNode:null,elapsed:performance.now()-a})}s&&(this.rerunRequested=!0)}while(this.rerunRequested);this.setStatus({phase:`idle`,total:0,completed:0,currentNode:null,startedAt:null,elapsed:0});for(let e of this.idleResolvers)e();this.idleResolvers.clear()}collectDownstream(e){let t=new Set,n=e=>{if(!t.has(e.id)){t.add(e.id);for(let t of e.outputs)for(let e of t.connections){let t=this.graph.getNode(e.to.nodeId);t&&n(t)}}};return n(e),t}setStatus(e){this._status=Object.freeze(e),this.emit()}emit(){for(let e of this.listeners)e(this._status)}};function wf(e){let t=e.split(`_`);if(t.length<3)throw Error(`Invalid port ID format: ${e}`);let n=t[t.length-2],r=parseInt(t[t.length-1],10);if(isNaN(r))throw Error(`Invalid port index in port ID: ${e}`);return{elementId:t.slice(0,-2).join(`_`),portType:n,index:r}}function Tf(e,t,n){return`${e}_${t}_${n}`}var Ef=class e{get created(){return this.createdAt}get elements(){return this._elements}set elements(e){this._elements=e,this._elementMap.clear();for(let t of e)this._elementMap.set(t.id,t)}constructor(e,t,n){this._elements=[],this._elementMap=new Map,this.connections=[],this._connectionMap=new Map,this.connectionIdCounter=0,this.project={packages:[]},this.createdAt=new Date().toISOString(),this.cookingNodes=new Set,this.executionState=`idle`,this.cachedTopologicalOrder=null,this.assetManager=e||new nd,this.packageManager=t||new sd,this.moduleResolver=n||ld(),this.scheduler=new Cf(this)}isAnnotation(e){return e.isAnnotation===!0}get nodes(){return this._elements.filter(e=>!this.isAnnotation(e))}set nodes(e){this._elements=[...this._elements.filter(e=>this.isAnnotation(e)),...e]}get annotations(){return this._elements.filter(e=>this.isAnnotation(e))}set annotations(e){this._elements=[...this._elements.filter(e=>!this.isAnnotation(e)),...e]}generateUniqueNodeId(e,t){let n=e.replace(/\s+/g,``),r=n.match(/^(.+?)(\d+)?$/),i=r?r[1]:n,a=1,o=`${i}${a}`;for(;this._elements.some(e=>e.id===o&&(!t||e.id!==t));)a++,o=`${i}${a}`;return o}getElement(e){return this._elementMap.get(e)||null}getNode(e){let t=this.getElement(e);return t&&!this.isAnnotation(t)?t:null}getAnnotation(e){let t=this.getElement(e);return t&&this.isAnnotation(t)?t:null}nodeByPath(e){if(!e.startsWith(`/`))return null;let t=e.slice(1).split(`/`).filter(e=>e.length>0);if(t.length===0)return null;let n=this.nodes.find(e=>!e.parent&&e.id===t[0])??null;for(let e=1;n&&e<t.length;e++){if(!n.isNetwork())return null;n=n.children().find(n=>n.id===t[e])??null}return n}addElement(e){this._elements.push(e),this._elementMap.set(e.id,e),this.invalidateTopologicalOrder()}reparentElement(e,t){if(t){if(!t.isNetwork()||t===e)return!1;for(let n=t;n;n=n.parent)if(n===e)return!1}if(e.parent===t)return!0;let n=e.parent;if(n){let t=n.removeChild;typeof t==`function`?t.call(n,e):(n._children=n.children().filter(t=>t!==e),e.parent=null)}if(t){let n=t.addChild;typeof n==`function`?n.call(t,e):(e.parent=t,t._children.push(e))}return this.invalidateTopologicalOrder(),!0}removeElement(e){let t=this._elementMap.get(e);if(!t)return;let n=[],r=new Set,i=e=>{r.has(e)||(r.add(e),e.children().forEach(i),n.push(e))};i(t);let a=new Set(n.map(e=>e.id));this.connections.filter(e=>a.has(e.from.nodeId)||a.has(e.to.nodeId)).forEach(e=>this.disconnect(e.id));let o=this._connectionsToRestore;Array.isArray(o)&&(this._connectionsToRestore=o.filter(e=>{let t=Array.isArray(e?.[0])?e[0][0]:void 0,n=Array.isArray(e?.[1])?e[1][0]:void 0;return!a.has(t)&&!a.has(n)})),this._elements=this._elements.filter(e=>!a.has(e.id));for(let e of n)this._elementMap.delete(e.id),this.cookingNodes.delete(e);for(let e of n){let t=e.parent;if(t){let n=t.removeChild;typeof n==`function`?n.call(t,e):e.parent=null}}this.invalidateTopologicalOrder();for(let e of n)e.onDestroy?.()}renameElement(e,t){let n=this._elementMap.get(e);if(!n||!t||e!==t&&this._elementMap.has(t))return!1;if(e===t)return!0;let r=n.renameId(t);this._elementMap.delete(e),this._elementMap.set(t,n);for(let n of this.connections)n.from.nodeId===e&&(n.from.nodeId=t),n.to.nodeId===e&&(n.to.nodeId=t),n.from.portId=r.get(n.from.portId)??n.from.portId,n.to.portId=r.get(n.to.portId)??n.to.portId;let i=this._connectionsToRestore;if(Array.isArray(i))for(let n of i)for(let r of Array.isArray(n)?n:[])Array.isArray(r)&&r[0]===e&&(r[0]=t);for(let n of this.annotations)Array.isArray(n.containedElements)&&(n.containedElements=n.containedElements.map(n=>n===e?t:n));return this.invalidateTopologicalOrder(),!0}addNode(e,t){let n=Ie(e).toLowerCase().replace(/\s+/g,`_`),r=this.generateUniqueNodeId(n),i=Pe(e),a;if(a=i?new i(r,this):new Ju(r,Le(e),this),a.modulePath=e,Fe(e))a.sourceType=`stdlib`;else if(e.startsWith(`local.`))a.sourceType=`embedded`;else{let t=this.moduleResolver.getSourceType(e);a.sourceType=t||`embedded`}return a.position=t,this.addElement(a),a}retargetModule(e,t,n,r){return this.retargetDefinition(e,t,n,r,{preserveParameters:!1}).ok}retargetDefinition(e,t,n,r,i={}){let a=()=>({kept:[],defaulted:[],dropped:[],retyped:[]}),o=this.getNode(e);if(!o)return{ok:!1,deferred:!1,...a(),error:`no node with id ${e}`};let s=i.preserveParameters!==!1;s&&o.beginParameterCarryOver(),o.modulePath=t,o.sourceType=n,n===`embedded`&&r!==void 0&&(o.code=r);let c=n===`project`?pd(t):md(r??o.code);return o.setFunction(xf(o,t,c)),c.catch(e=>{o.abandonParameterCarryOver(),console.warn(`Failed to compile `+t+`:`,e)}),o.markDirty(),s&&i.parameters?{ok:!0,deferred:!1,...o.applyParameterDeclarations(i.parameters)??a()}:{ok:!0,deferred:s,...a()}}getRetargetReport(e){return this.getNode(e)?.lastCarryOverReport??null}removeNode(e){this.removeElement(e)}validateConnection(e,t){let n,r;try{let i=wf(e.id),a=wf(t.id);n=i.elementId,r=a.elementId}catch(e){return{valid:!1,error:`Invalid port ID format: ${e}`}}let i=this.getElement(n),a=this.getElement(r);if(!i||!a)return{valid:!1,error:`Element not found`};if(!this.isAnnotation(i)&&!this.isAnnotation(a)){let i=ud.validateConnection(this,n,r,e.id,t.id);if(i)return{valid:!1,error:i.message}}return{valid:!0}}checkDataTypeCompatibility(e,t){let n=Yl(e.dataType),r=Yl(t.dataType);return Xl(n,r)||{number:[`number[]`,`string`],float:[`number[]`],int:[`number[]`],string:[`number`,`float`,`int`]}[n]?.includes(r)?null:`Type mismatch: connecting ${n} to ${r}`}updateTypeMismatchWarnings(e){let t=this.getNode(e);if(!t)return;let n=[];for(let e of t.inputs)for(let t of e.connections){let r=this.getNode(t.from.nodeId);if(!r)continue;let i=r.outputs.find(e=>e.id===t.from.portId);if(!i)continue;let a=this.checkDataTypeCompatibility(i,e);a&&n.push(a)}n.length>0?t.warning=n.join(`; `):t.warning?.startsWith(`Type mismatch`)&&(t.warning=null)}connect(e,t){let n=this.validateConnection(e,t);if(!n.valid)throw Error(`Invalid connection: ${n.error}`);if(!t.variadic&&t.connections&&t.connections.length>0){let e=[...t.connections];for(let t of e)this.disconnect(t.id)}let r=wf(e.id),i=wf(t.id),a={id:`conn_${Date.now()}_${++this.connectionIdCounter}`,from:{nodeId:r.elementId,portId:e.id},to:{nodeId:i.elementId,portId:t.id},type:e.portType},o=e.connections.find(e=>e.to.nodeId===a.to.nodeId&&e.to.portId===a.to.portId);if(o)return o;if(this.connections.push(a),this._connectionMap.set(a.id,a),e.connections.push(a),t.connections.push(a),this.invalidateTopologicalOrder(),e.value!==void 0&&e.value!==null&&(t.value=e.value,t.onChange))try{t.onChange(e.value)}catch(e){console.error(`Error in onChange callback for port ${t.name}:`,e)}return this.syncVariadicPortsOnNode(i.elementId),this.updateTypeMismatchWarnings(i.elementId),this.getNode(i.elementId)?.markDirty(),a}disconnect(e){let t=this._connectionMap.get(e);if(!t)return;let n=this.getElement(t.from.nodeId),r=this.getElement(t.to.nodeId);if(n){let r=n.getPort(t.from.portId);r&&(r.connections=r.connections.filter(t=>t.id!==e))}if(r){let n=r.getPort(t.to.portId);if(n&&(n.connections=n.connections.filter(t=>t.id!==e),n.connections.length===0)){n.value=n.defaultValue;try{n.onChange?.(n.defaultValue)}catch(e){console.error(`Error in onChange callback for port ${n.name}:`,e)}}}let i=this.connections.findIndex(t=>t.id===e);i>=0&&this.connections.splice(i,1),this._connectionMap.delete(e),this.invalidateTopologicalOrder(),this.syncVariadicPortsOnNode(t.to.nodeId),this.updateTypeMismatchWarnings(t.to.nodeId),this.getNode(t.to.nodeId)?.markDirty()}syncVariadicPortsOnNode(e){let t=this.getNode(e);t&&t.syncVariadicPorts()}validate(){return ud.validateGraph(this)}async execute(e){this.executionState=`running`;try{await this.scheduler.flush(e)}finally{this.executionState=`idle`}}getTopologicalOrder(){return this.cachedTopologicalOrder||=ud.topologicalSort(this),this.cachedTopologicalOrder}invalidateTopologicalOrder(){this.cachedTopologicalOrder=null}stop(){this.executionState=`stopped`}reset(){this.nodes.forEach(e=>{e.error=null,e.warning=null,e.markDirty()}),this.cookingNodes.clear(),this.executionState=`idle`}clearCookingNodes(e){e?this.cookingNodes.forEach(t=>{t!==e&&t.setCook(!1)}):this.cookingNodes.forEach(e=>{e.setCook(!1)})}isDownstreamOfCooking(e){let t=new Set,n=e=>{if(t.has(e.id))return!1;if(t.add(e.id),this.cookingNodes.has(e))return!0;for(let t of e.inputs)for(let e of t.connections){let t=this.getNode(e.from.nodeId);if(t&&n(t))return!0}return!1};return n(e)}addAnnotation(e){let t;if(this.isAnnotation(e))t=e;else{let n=e;switch(n.type.charAt(0).toUpperCase()+n.type.slice(1).toLowerCase()){case`Image`:t=new Xu(n.id,this),t.src=n.src;break;case`Text`:t=new Zu(n.id,this),t.content=n.content;break;case`Group`:t=new Qu(n.id,this),t.content=n.content;break;case`Line`:t=new $u(n.id,this),n.endPosition&&(t.endPosition=n.endPosition);break;case`Polyline`:t=new ed(n.id,this),n.points&&(t.points=n.points);break;default:t=new Yu(n.id,n.type,this),n.content!==void 0&&(t.content=n.content),n.src!==void 0&&(t.src=n.src),n.endPosition&&(t.endPosition=n.endPosition),n.points&&(t.points=n.points)}t.position=n.position||{x:0,y:0},n.size&&(t.size=n.size),n.style&&(t.style={...n.style}),n.caption!==void 0&&(t.caption=n.caption),n.containedElements&&(t.containedElements=n.containedElements)}this.addElement(t),this.initializeAnnotationPorts(t).catch(e=>{console.error(`Failed to initialize ports for annotation ${t.id}:`,e)})}removeAnnotation(e){this.removeElement(e)}async initializeAnnotationPorts(e){if(e.outputs=[],e.type===`Image`){let t=e,n={id:Tf(e.id,`output`,0),name:`image`,portType:`param`,dataType:`asset`,value:null,connections:[],setValue:e=>{n.value=e,n.connections.forEach(t=>{let n=wf(t.to.portId),r=this.getElement(n.elementId);if(r&&!this.isAnnotation(r)){let t=r.getInputPort(n.index);t&&(t.value=e,t.onChange?.(e))}})},trigger:e=>{n.connections.forEach(t=>{let n=wf(t.to.portId),r=this.getElement(n.elementId);r&&!this.isAnnotation(r)&&r.getInputPort(n.index)?.onTrigger?.(e)})}};e.outputs.push(n);let r=t.src;if(r)try{let e=new Image;e.crossOrigin=`anonymous`,await new Promise((t,i)=>{e.onload=()=>{n.setValue(e),t()},e.onerror=i,e.src=r.startsWith(`/`)||r.startsWith(`http`)||r.startsWith(`data:`)?r:`/${r}`})}catch(t){console.error(`Failed to load image for annotation ${e.id}:`,t)}}else if(e.type===`Text`){let t=e;if(t.content!==void 0){let n={id:Tf(e.id,`output`,0),name:`text`,portType:`param`,dataType:`string`,value:t.content,connections:[],setValue:e=>{n.value=e,n.connections.forEach(t=>{let n=wf(t.to.portId),r=this.getElement(n.elementId);if(r&&!this.isAnnotation(r)){let t=r.getInputPort(n.index);t&&(t.value=e,t.onChange?.(e))}})},trigger:e=>{n.connections.forEach(t=>{let n=wf(t.to.portId),r=this.getElement(n.elementId);r&&!this.isAnnotation(r)&&r.getInputPort(n.index)?.onTrigger?.(e)})}};e.outputs.push(n)}}}validateExpressionPaths(){let e=[],t=/\b(?:ch|chs|chv)\s*\(\s*['"]([^'"]+)['"]\s*\)/g;for(let n of this.nodes)for(let[r,i]of Object.entries(n.props)){if(!i.expression)continue;let a=`${n.path()}/${r}`,o=i.expression.matchAll(t);for(let t of o){let r=t[1],o=this.resolvePathFromNode(n,r);o.node?o.parmName&&!o.node.props[o.parmName]&&e.push({location:a,expression:i.expression,brokenPath:r,suggestion:`Parameter "${o.parmName}" not found on node "${o.node.id}"`}):e.push({location:a,expression:i.expression,brokenPath:r,suggestion:this.suggestPathFix(n,r)})}}return{valid:e.length===0,warnings:e}}resolvePathFromNode(e,t){let n=t.lastIndexOf(`/`);if(n>0){let r=t.substring(n+1),i=t.substring(0,n),a=e.node(t);if(a)return{node:a};let o=e.node(i);if(o)return{node:o,parmName:r}}return{node:e.node(t)}}suggestPathFix(e,t){let n=t.replace(/^\.?\.?\//,``).split(`/`),r=n[n.length-1],i=this.nodes.filter(e=>e.id.toLowerCase().includes(r.toLowerCase())||r.toLowerCase().includes(e.id.toLowerCase()));if(i.length>0)return`Did you mean "${i[0].path()}"?`}toJSON(){let e={version:`0.2`,metadata:{name:this.project.name||`Cascade Graph`,created:this.createdAt,modified:new Date().toISOString(),...this.project.description?{description:this.project.description}:{},...this.project.author?{author:this.project.author}:{}}};this.project.packages.length>0&&(e.project={packages:this.project.packages.map(e=>({path:e.path,alias:e.alias}))});let t=this.moduleResolver.exportConfig();Object.keys(t.embeddedModules).length>0&&(e.embeddedModules=t.embeddedModules),Object.keys(t.externalModules).length>0&&(e.externalModules=t.externalModules);let n=this.packageManager.getCachedPackages().map(e=>{let[t,n]=e.split(`@`);return{name:t,version:n||`latest`}});n.length>0&&(e.packages=n);let r=this.assetManager.list().map(e=>({id:e.id,path:e.path,type:e.type,size:e.size}));r.length>0&&(e.assets={manifest:r});let i=this.annotations,a=this.nodes;i.length>0&&(e.annotations=i.map(e=>{let t={id:e.id,type:e.type,position:[e.position.x,e.position.y]},n=e;return n.content!==void 0&&(t.content=n.content),n.src!==void 0&&(t.src=n.src),e.size&&(t.size=e.size),n.points&&(t.points=n.points.map(e=>[e.x,e.y])),n.endPosition&&(t.endPosition=[n.endPosition.x,n.endPosition.y]),e.style&&(t.style=e.style),e.caption!==void 0&&(t.caption=e.caption),e.containedElements&&(t.containedElements=e.containedElements),e.parent&&(t.parent=e.parent.id),t})),e.nodes=a.map(e=>this.nodeToJSON(e));let o=this.connections.map(e=>{try{let t=wf(e.from.portId),n=wf(e.to.portId),r=this.getElement(t.elementId),i=this.getElement(n.elementId);if(!r||!i)return null;let a=r.outputs?.[t.index],o=i.inputs?.[n.index];return!a||!o?null:[[t.elementId,t.index,a.name],[n.elementId,n.index,o.name]]}catch(e){return console.warn(`Failed to parse port ID in connection: ${e}`),null}}).filter(e=>e!==null);return o.length>0&&(e.connections=o),e}nodeToJSON(e){let t=e,n=t.modulePath||(e.type.includes(`.`)?e.type:`cascade.image.${e.type}`),r=t.sourceType;r||=Fe(n)?`stdlib`:n.startsWith(`local.`)?`embedded`:this.moduleResolver.getSourceType(n)||`embedded`;let i={id:e.id,module:n,position:[e.position.x,e.position.y],source:r};if(r===`project`){let e=this.moduleResolver.exportConfig().externalModules[n];e&&(i.file=e.file)}i.source===`embedded`&&e.code&&(i.code=e.code),e.comment&&e.comment.trim()&&(i.comment=e.comment),e.color&&(i.color=e.color),e.parent&&(i.parent=e.parent.id);let a=t=>e.rawParameterValue(t.name),o=(e.parameters??[]).filter(e=>e.promoted||JSON.stringify(a(e))!==JSON.stringify(e.defaultValue)),s=o.filter(e=>e.documentField!==`props`).map(e=>e.promoted?{name:e.name,value:a(e),promoted:!0}:{name:e.name,value:a(e)});s.length>0&&(i.params=s);let c=e.inputs.filter(e=>(e.connections?.length??0)===0).filter(e=>e.value!==void 0&&e.value!==null).filter(e=>typeof e.value!=`function`).map(e=>({name:e.name,defaultValue:e.value,dataType:e.dataType})).filter(e=>e.defaultValue!==``||e.dataType===`string`);c.length>0&&(i.inputs=c);let l=Object.entries(e.props).reduce((t,[n,r])=>{let i=(r.channel?.keys?.length??0)>0;if(r.fromParameter&&!r.expression&&!i)return t;let a=r.value;if(r.type===`color`&&fl(a)){let e=ll(a);a=[e.r,e.g,e.b,e.a??1]}return t[n]=e.serializePropValue(n,a),t},{});for(let t of o)t.documentField===`props`&&(l[t.name]=e.serializePropValue(t.name,e.rawParameterValue(t.name)));if(Object.keys(l).length>0&&(i.props=l),e.bypass&&(i.bypass=!0),e.cook&&(i.cook=!0),typeof e.serialize==`function`){let t=e.serialize();t&&Object.keys(t).length>0&&(i.state=t)}return i}static fromJSON(t,n,r){let i=new e(n,r);t.version,typeof t.metadata?.created==`string`&&(i.createdAt=t.metadata.created),i.project={...i.project,...typeof t.metadata?.name==`string`?{name:t.metadata.name}:{},...typeof t.metadata?.description==`string`?{description:t.metadata.description}:{},...typeof t.metadata?.author==`string`?{author:t.metadata.author}:{}},t.project&&(i.project={...i.project,name:t.metadata?.name??i.project.name,description:t.metadata?.description??i.project.description,author:t.metadata?.author??i.project.author,packages:t.project.packages||[]},t.project.packages?.forEach(e=>{i.moduleResolver.addProjectPackage(e)})),t.embeddedModules&&i.moduleResolver.importConfig({embeddedModules:t.embeddedModules}),t.externalModules&&i.moduleResolver.importConfig({externalModules:t.externalModules}),t.packages&&Array.isArray(t.packages),t.nodes.forEach(e=>{let n=e.id;if(n){let e=1,t=n;for(;i.elements.some(e=>e.id===t);)e++,t=`${n}${e}`;n=t}else{let t=e.name||e.type||e.module;n=i.generateUniqueNodeId(t)}let r=e.module||e.type;if(!r||!r.includes(`.`)){console.warn(`Invalid node type format: ${r}. Expected package path (e.g., "cascade.image.Color"). Skipping node.`);return}let a=Le(r),o=e.source||(Fe(r)?`stdlib`:`embedded`),s=``;o===`embedded`?s=t.embeddedModules?.[r]?.code||e.code||``:o===`project`&&(s=t.externalModules?.[r]?.cachedCode||e.code||``);let c=Pe(r),l;if(c)l=new c(n,i);else if(r.startsWith(`cascade.`))throw Error(`Unknown Cascade node type: ${r}`);else l=new Ju(n,a,i);l.modulePath=r,l.sourceType=o,Array.isArray(e.position)?l.position={x:e.position[0]||0,y:e.position[1]||0}:e.position&&typeof e.position==`object`?l.position={x:e.position.x||0,y:e.position.y||0}:l.position={x:0,y:0},l.code=s,l.comment=e.comment||``,e.color&&(l.color=e.color),Array.isArray(e.params)&&e.params.forEach(e=>{if(!e?.name)return;let t=l.parameters.find(t=>t.name===e.name);if(t?(t.value=e.value,t.promoted=!!e.promoted):l.parameters.push({name:e.name,value:e.value,defaultValue:e.value,dataType:`any`,promoted:!!e.promoted,options:{}}),e.promoted){let t=l.in(e.name,e.value);t.fromParameter=e.name}}),i.addElement(l);let u=(e,t,n,r={})=>{if(!e)return;let i=l.inputs.find(t=>t.name===e),a=i??l.in(e,n?t:void 0,r.dataType?{type:r.dataType}:{});i&&n&&(i.value=t),r.id&&a.id!==r.id&&(a.id=r.id)};if(Array.isArray(e.inputs)?e.inputs.forEach(e=>{if(!e||typeof e!=`object`)return;let t=Object.prototype.hasOwnProperty.call(e,`defaultValue`),n=Object.prototype.hasOwnProperty.call(e,`value`);u(e.name,t?e.defaultValue:e.value,t||n,e)}):e.inputs&&typeof e.inputs==`object`&&Object.entries(e.inputs).forEach(([e,t])=>{u(e,t,!0)}),e.outputs&&Array.isArray(e.outputs)&&e.outputs.forEach(e=>{let t=l.out(e.name,e.portType||`param`);e.id&&t.id!==e.id&&(t.id=e.id)}),e.props&&Object.entries(e.props).forEach(([e,t])=>{let n,r;t&&typeof t==`object`&&`value`in t?(n=t.value,r=t.expression):n=t;let i=n;if(fl(n)){let e=ll(n);i=e.a!==void 0&&e.a!==1?{r:e.r,g:e.g,b:e.b,a:e.a}:{r:e.r,g:e.g,b:e.b}}let a=l.parameters.find(t=>t.name===e&&t.documentField===`props`);a?a.value=n:l.props[e]?l.props[e].value=i:l.props[e]={value:i},r&&l.props[e]&&(l.props[e].expression=r),t?.channel&&l.props[e]&&l.restorePropChannel(e,t.channel)}),e.bypass!==void 0&&l.setBypass(e.bypass),e.cook!==void 0&&l.setCook(e.cook),!c&&(o===`project`||l.code)){let e=o===`project`?pd(r):md(l.code);l.setFunction(xf(l,r,e)),e.catch(e=>{console.warn(`Failed to compile node `+l.id+`:`,e)})}if(e.state&&typeof l.deserialize==`function`)try{l.deserialize(e.state)}catch(e){console.warn(`Failed to deserialize state for node `+l.id+`:`,e)}});let a=t.connections||[];if(t.annotations&&Array.isArray(t.annotations)){let e=t.annotations.map(e=>{let t,n=Array.isArray(e.position)?{x:e.position[0]||0,y:e.position[1]||0}:{x:e.position?.x||0,y:e.position?.y||0};switch(e.type.charAt(0).toUpperCase()+e.type.slice(1).toLowerCase()){case`Image`:t=new Xu(e.id,i),t.src=e.src;break;case`Text`:t=new Zu(e.id,i),t.content=e.content;break;case`Group`:t=new Qu(e.id,i),t.content=e.content;break;case`Line`:t=new $u(e.id,i),e.endPosition&&(t.endPosition=Array.isArray(e.endPosition)?{x:e.endPosition[0]||0,y:e.endPosition[1]||0}:{x:e.endPosition.x||0,y:e.endPosition.y||0});break;case`Polyline`:t=new ed(e.id,i),e.points&&(t.points=e.points.map(e=>Array.isArray(e)?{x:e[0]||0,y:e[1]||0}:{x:e.x||0,y:e.y||0}));break;default:t=new Yu(e.id,e.type,i)}return t.position=n,e.size&&(t.size={width:e.size.width,height:e.size.height}),e.style&&(t.style={...e.style}),e.caption!==void 0&&(t.caption=e.caption),e.containedElements&&(t.containedElements=e.containedElements),t});e.forEach(e=>i.addElement(e)),i._annotationPortsInitialized=Promise.all(e.map(e=>i.initializeAnnotationPorts(e))).catch(e=>{console.error(`Failed to initialize some annotation ports:`,e)})}else i._annotationPortsInitialized=Promise.resolve();let o=[...Array.isArray(t.nodes)?t.nodes:[],...Array.isArray(t.annotations)?t.annotations:[]];for(let e of o){if(typeof e?.parent!=`string`)continue;let t=i.getElement(e.id),n=i.getElement(e.parent),r=t=>console.warn(`Parent link for "${e.id}" to "${e.parent}" ignored: ${t}; element loaded at root.`);if(!t)continue;if(!n){r(`parent does not exist`);continue}if(t===n){r(`self-parenting is invalid`);continue}if(!n.isNetwork()){r(`parent is not a network`);continue}let a=n,o=!1,s=new Set;for(;a&&!s.has(a);){if(a===t){o=!0;break}s.add(a),a=a.parent}if(o){r(`parent cycle detected`);continue}i.reparentElement(t,n)}let s=e=>{let t=0,n=e.parent,r=new Set;for(;n&&!r.has(n);)r.add(n),t++,n=n.parent;return t};return i.nodes.filter(e=>e.isNetwork()).sort((e,t)=>s(t)-s(e)).forEach(e=>e.syncPorts?.()),i._connectionsToRestore=a,a.forEach(e=>{i.tryRestoreConnection(e,!1)}),i}async waitForAnnotationPorts(){let e=this._annotationPortsInitialized;e&&await e}tryRestoreConnection(e,t=!1){if(!Array.isArray(e)||!Array.isArray(e[0])||!Array.isArray(e[1]))return!1;let[n,r,i]=e[0],[a,o,s]=e[1];if(typeof r!=`number`||typeof o!=`number`)return!1;let c=this.getElement(n),l=this.getElement(a);if(!c||!l)return!1;let u=(e,t)=>typeof t==`string`?e?.find(e=>e.name===t):void 0,d=(e,t,n)=>typeof t==`string`?u(e,t):e?.[n],f=d(c.outputs,i,r),p=d(l.inputs,s,o);if(!f||!p)return!1;if(t&&this.connections.some(e=>e.from.nodeId===n&&e.from.portId===f.id&&e.to.nodeId===a&&e.to.portId===p.id))return!0;try{return this.connect(f,p),!0}catch(e){return console.warn(`[connect] ${n}[${r}] -> ${a}[${o}] rejected:`,e),!1}}restoreConnections(){let e=this._connectionsToRestore||[];if(e.length===0)return;let t=e.filter(e=>!this.tryRestoreConnection(e,!0));t.length>0?this._connectionsToRestore=t:delete this._connectionsToRestore}};function Df(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function Of(e){if(Array.isArray(e))return e}function kf(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t!==0)for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}function Af(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
8
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function jf(e,t){return Of(e)||kf(e,t)||Mf(e,t)||Af()}function Mf(e,t){if(e){if(typeof e==`string`)return Df(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Df(e,t):void 0}}var Nf=Object.entries,Pf=Object.setPrototypeOf,Ff=Object.isFrozen,If=Object.getPrototypeOf,Lf=Object.getOwnPropertyDescriptor,Rf=Object.freeze,zf=Object.seal,Bf=Object.create,Vf=typeof Reflect<`u`&&Reflect,Hf=Vf.apply,Uf=Vf.construct;Rf||=function(e){return e},zf||=function(e){return e},Hf||=function(e,t){var n=[...arguments].slice(2);return e.apply(t,n)},Uf||=function(e){return new e(...[...arguments].slice(1))};var Wf=up(Array.prototype.forEach),Gf=up(Array.prototype.lastIndexOf),Kf=up(Array.prototype.pop),qf=up(Array.prototype.push),Jf=up(Array.prototype.splice),Yf=Array.isArray,Xf=up(String.prototype.toLowerCase),Zf=up(String.prototype.toString),Qf=up(String.prototype.match),$f=up(String.prototype.replace),ep=up(String.prototype.indexOf),tp=up(String.prototype.trim),np=up(Number.prototype.toString),rp=up(Boolean.prototype.toString),ip=typeof BigInt>`u`?null:up(BigInt.prototype.toString),ap=typeof Symbol>`u`?null:up(Symbol.prototype.toString),op=up(Object.prototype.hasOwnProperty),sp=up(Object.prototype.toString),cp=up(RegExp.prototype.test),lp=dp(TypeError);function up(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);var n=[...arguments].slice(1);return Hf(e,t,n)}}function dp(e){return function(){return Uf(e,[...arguments])}}function fp(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Xf;if(Pf&&Pf(e,null),!Yf(t))return e;let r=t.length;for(;r--;){let i=t[r];if(typeof i==`string`){let e=n(i);e!==i&&(Ff(t)||(t[r]=e),i=e)}e[i]=!0}return e}function pp(e){for(let t=0;t<e.length;t++)op(e,t)||(e[t]=null);return e}function mp(e){let t=Bf(null);for(let r of Nf(e)){var n=jf(r,2);let i=n[0],a=n[1];op(e,i)&&(t[i]=Yf(a)?pp(a):a&&typeof a==`object`&&a.constructor===Object?mp(a):a)}return t}function hp(e){switch(typeof e){case`string`:return e;case`number`:return np(e);case`boolean`:return rp(e);case`bigint`:return ip?ip(e):`0`;case`symbol`:return ap?ap(e):`Symbol()`;case`undefined`:return sp(e);case`function`:case`object`:{if(e===null)return sp(e);let t=e,n=gp(t,`toString`);if(typeof n==`function`){let e=n(t);return typeof e==`string`?e:sp(e)}return sp(e)}default:return sp(e)}}function gp(e,t){for(;e!==null;){let n=Lf(e,t);if(n){if(n.get)return up(n.get);if(typeof n.value==`function`)return up(n.value)}e=If(e)}function n(){return null}return n}function _p(e){try{return cp(e,``),!0}catch{return!1}}var vp=Rf(`a.abbr.acronym.address.area.article.aside.audio.b.bdi.bdo.big.blink.blockquote.body.br.button.canvas.caption.center.cite.code.col.colgroup.content.data.datalist.dd.decorator.del.details.dfn.dialog.dir.div.dl.dt.element.em.fieldset.figcaption.figure.font.footer.form.h1.h2.h3.h4.h5.h6.head.header.hgroup.hr.html.i.img.input.ins.kbd.label.legend.li.main.map.mark.marquee.menu.menuitem.meter.nav.nobr.ol.optgroup.option.output.p.picture.pre.progress.q.rp.rt.ruby.s.samp.search.section.select.shadow.slot.small.source.spacer.span.strike.strong.style.sub.summary.sup.table.tbody.td.template.textarea.tfoot.th.thead.time.tr.track.tt.u.ul.var.video.wbr`.split(`.`)),yp=Rf(`svg.a.altglyph.altglyphdef.altglyphitem.animatecolor.animatemotion.animatetransform.circle.clippath.defs.desc.ellipse.enterkeyhint.exportparts.filter.font.g.glyph.glyphref.hkern.image.inputmode.line.lineargradient.marker.mask.metadata.mpath.part.path.pattern.polygon.polyline.radialgradient.rect.stop.style.switch.symbol.text.textpath.title.tref.tspan.view.vkern`.split(`.`)),bp=Rf([`feBlend`,`feColorMatrix`,`feComponentTransfer`,`feComposite`,`feConvolveMatrix`,`feDiffuseLighting`,`feDisplacementMap`,`feDistantLight`,`feDropShadow`,`feFlood`,`feFuncA`,`feFuncB`,`feFuncG`,`feFuncR`,`feGaussianBlur`,`feImage`,`feMerge`,`feMergeNode`,`feMorphology`,`feOffset`,`fePointLight`,`feSpecularLighting`,`feSpotLight`,`feTile`,`feTurbulence`]),xp=Rf([`animate`,`color-profile`,`cursor`,`discard`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`foreignobject`,`hatch`,`hatchpath`,`mesh`,`meshgradient`,`meshpatch`,`meshrow`,`missing-glyph`,`script`,`set`,`solidcolor`,`unknown`,`use`]),Sp=Rf(`math.menclose.merror.mfenced.mfrac.mglyph.mi.mlabeledtr.mmultiscripts.mn.mo.mover.mpadded.mphantom.mroot.mrow.ms.mspace.msqrt.mstyle.msub.msup.msubsup.mtable.mtd.mtext.mtr.munder.munderover.mprescripts`.split(`.`)),Cp=Rf([`maction`,`maligngroup`,`malignmark`,`mlongdiv`,`mscarries`,`mscarry`,`msgroup`,`mstack`,`msline`,`msrow`,`semantics`,`annotation`,`annotation-xml`,`mprescripts`,`none`]),wp=Rf([`#text`]),Tp=Rf(`accept.action.align.alt.autocapitalize.autocomplete.autopictureinpicture.autoplay.background.bgcolor.border.capture.cellpadding.cellspacing.checked.cite.class.clear.color.cols.colspan.command.commandfor.controls.controlslist.coords.crossorigin.datetime.decoding.default.dir.disabled.disablepictureinpicture.disableremoteplayback.download.draggable.enctype.enterkeyhint.exportparts.face.for.headers.height.hidden.high.href.hreflang.id.inert.inputmode.integrity.ismap.kind.label.lang.list.loading.loop.low.max.maxlength.media.method.min.minlength.multiple.muted.name.nonce.noshade.novalidate.nowrap.open.optimum.part.pattern.placeholder.playsinline.popover.popovertarget.popovertargetaction.poster.preload.pubdate.radiogroup.readonly.rel.required.rev.reversed.role.rows.rowspan.spellcheck.scope.selected.shape.size.sizes.slot.span.srclang.start.src.srcset.step.style.summary.tabindex.title.translate.type.usemap.valign.value.width.wrap.xmlns`.split(`.`)),Ep=Rf(`accent-height.accumulate.additive.alignment-baseline.amplitude.ascent.attributename.attributetype.azimuth.basefrequency.baseline-shift.begin.bias.by.class.clip.clippathunits.clip-path.clip-rule.color.color-interpolation.color-interpolation-filters.color-profile.color-rendering.cx.cy.d.dx.dy.diffuseconstant.direction.display.divisor.dominant-baseline.dur.edgemode.elevation.end.exponent.fill.fill-opacity.fill-rule.filter.filterunits.flood-color.flood-opacity.font-family.font-size.font-size-adjust.font-stretch.font-style.font-variant.font-weight.fx.fy.g1.g2.glyph-name.glyphref.gradientunits.gradienttransform.height.href.id.image-rendering.in.in2.intercept.k.k1.k2.k3.k4.kerning.keypoints.keysplines.keytimes.lang.lengthadjust.letter-spacing.kernelmatrix.kernelunitlength.lighting-color.local.marker-end.marker-mid.marker-start.markerheight.markerunits.markerwidth.maskcontentunits.maskunits.max.mask.mask-type.media.method.mode.min.name.numoctaves.offset.operator.opacity.order.orient.orientation.origin.overflow.paint-order.path.pathlength.patterncontentunits.patterntransform.patternunits.pointer-events.points.preservealpha.preserveaspectratio.primitiveunits.r.rx.ry.radius.refx.refy.repeatcount.repeatdur.restart.result.rotate.scale.seed.shape-rendering.slope.specularconstant.specularexponent.spreadmethod.startoffset.stddeviation.stitchtiles.stop-color.stop-opacity.stroke-dasharray.stroke-dashoffset.stroke-linecap.stroke-linejoin.stroke-miterlimit.stroke-opacity.stroke.stroke-width.style.surfacescale.systemlanguage.tabindex.tablevalues.targetx.targety.transform.transform-origin.text-anchor.text-decoration.text-orientation.text-rendering.textlength.type.u1.u2.unicode.values.vector-effect.viewbox.visibility.version.vert-adv-y.vert-origin-x.vert-origin-y.width.word-spacing.wrap.writing-mode.xchannelselector.ychannelselector.x.x1.x2.xmlns.y.y1.y2.z.zoomandpan`.split(`.`)),Dp=Rf(`accent.accentunder.align.bevelled.close.columnalign.columnlines.columnspacing.columnspan.denomalign.depth.dir.display.displaystyle.encoding.fence.frame.height.href.id.largeop.length.linethickness.lquote.lspace.mathbackground.mathcolor.mathsize.mathvariant.maxsize.minsize.movablelimits.notation.numalign.open.rowalign.rowlines.rowspacing.rowspan.rspace.rquote.scriptlevel.scriptminsize.scriptsizemultiplier.selection.separator.separators.stretchy.subscriptshift.supscriptshift.symmetric.voffset.width.xmlns`.split(`.`)),Op=Rf([`xlink:href`,`xml:id`,`xlink:title`,`xml:space`,`xmlns:xlink`]),kp=zf(/{{[\w\W]*|^[\w\W]*}}/g),Ap=zf(/<%[\w\W]*|^[\w\W]*%>/g),jp=zf(/\${[\w\W]*/g),Mp=zf(/^data-[\-\w.\u00B7-\uFFFF]+$/),Np=zf(/^aria-[\-\w]+$/),Pp=zf(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Fp=zf(/^(?:\w+script|data):/i),Ip=zf(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Lp=zf(/^html$/i),Rp=zf(/^[a-z][.\w]*(-[.\w]+)+$/i),zp=zf(/<[/\w!]/g),Bp=zf(/<[/\w]/g),Vp=zf(/<\/no(script|embed|frames)/i),Hp=zf(/\/>/i),Up={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},Wp=[`style`,`script`,`xmp`,`iframe`,`noembed`,`noframes`,`plaintext`,`noscript`],Gp=Rf(fp({},Wp)),Kp=function(){let e={};return Wf(Wp,t=>{e[t]=zf(RegExp(`</`+t+`(?=[\\t\\n\\f\\r />])`,`i`))}),Rf(e)}(),qp=function(){return typeof window>`u`?null:window},Jp=function(e,t){if(typeof e!=`object`||typeof e.createPolicy!=`function`)return null;let n=null,r=`data-tt-policy-suffix`;t&&t.hasAttribute(r)&&(n=t.getAttribute(r));let i=`dompurify`+(n?`#`+n:``);try{return e.createPolicy(i,{createHTML(e){return e},createScriptURL(e){return e}})}catch{return console.warn(`TrustedTypes policy `+i+` could not be created.`),null}},Yp=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},Xp=function(e,t,n,r){return op(e,t)&&Yf(e[t])?fp(r.base?mp(r.base):{},e[t],r.transform):n},Zp=function(e,t,n){let r=op(e,t)?e[t]:void 0;return r&&typeof r==`object`?mp(r):n()};function Qp(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:qp(),t=e=>Qp(e);if(t.version=`3.4.14`,t.removed=[],!e||!e.document||e.document.nodeType!==Up.document||!e.Element)return t.isSupported=!1,t;let n=e.document,r=n,i=r.currentScript;e.DocumentFragment;let a=e.HTMLTemplateElement,o=e.Node,s=e.Element,c=e.NodeFilter;e.NamedNodeMap===void 0&&(e.NamedNodeMap||e.MozNamedAttrMap),e.HTMLFormElement;let l=e.DOMParser,u=e.trustedTypes,d=s.prototype,f=gp(d,`cloneNode`),p=gp(d,`remove`),m=gp(d,`nextSibling`),h=gp(d,`childNodes`),g=gp(d,`parentNode`),_=gp(d,`shadowRoot`),v=gp(d,`attributes`),y=o&&o.prototype?gp(o.prototype,`nodeType`):null,b=o&&o.prototype?gp(o.prototype,`nodeName`):null,x=o&&o.prototype?gp(o.prototype,`ownerDocument`):null,S=function(e){return y?y(e):e.nodeType},C=function(e){return b?b(e):e.nodeName};if(typeof a==`function`){let e=n.createElement(`template`);e.content&&e.content.ownerDocument&&(n=e.content.ownerDocument)}let w,T=``,ee,E=!1,D=0,te=function(){if(D>0)throw lp(`A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.`)},O=function(e){te(),D++;try{return w.createHTML(e)}finally{D--}},k=function(e){te(),D++;try{return w.createScriptURL(e)}finally{D--}},A=function(){return E||=(ee=Jp(u,i),!0),ee},ne=n,j=ne.implementation,M=ne.createNodeIterator,re=ne.createDocumentFragment,N=ne.getElementsByTagName,ie=r.importNode,P=Yp();t.isSupported=typeof Nf==`function`&&typeof g==`function`&&j&&j.createHTMLDocument!==void 0;let ae=kp,oe=Ap,F=jp,I=Mp,L=Np,R=Fp,z=Ip,se=Rp,B=Pp,V=null,ce=fp({},[...vp,...yp,...bp,...Sp,...wp]),le=null,H=fp({},[...Tp,...Ep,...Dp,...Op]),U=Object.seal(Bf(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),ue=null,de=null,fe=Object.seal(Bf(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),pe=!0,me=!0,he=!1,W=!0,G=!1,ge=!0,_e=!1,ve=!1,ye=null,K=null,be=!1,q=!1,xe=!1,J=!1,Se=!0,Y=!1,Ce=`user-content-`,we=!0,Te=!1,Ee={},X=null,De=fp({},`annotation-xml.audio.colgroup.desc.foreignobject.head.iframe.math.mi.mn.mo.ms.mtext.noembed.noframes.noscript.plaintext.script.selectedcontent.style.svg.template.thead.title.video.xmp`.split(`.`)),Oe=null,ke=fp({},[`audio`,`video`,`img`,`source`,`image`,`track`]),Z=null,Ae=fp({},[`alt`,`class`,`for`,`id`,`label`,`name`,`pattern`,`placeholder`,`role`,`summary`,`title`,`value`,`style`,`xmlns`]),je=`http://www.w3.org/1998/Math/MathML`,Me=`http://www.w3.org/2000/svg`,Ne=`http://www.w3.org/1999/xhtml`,Pe=Ne,Fe=!1,Ie=null,Le=fp({},[je,Me,Ne],Zf),Re=Rf([`mi`,`mo`,`mn`,`ms`,`mtext`]),ze=fp({},Re),Be=Rf([`annotation-xml`]),Ve=fp({},Be),He=fp({},[`title`,`style`,`font`,`a`,`script`]),Ue=null,We=[`application/xhtml+xml`,`text/html`],Q=null,Ge=null,Ke=n.createElement(`form`),qe=function(e){return e instanceof RegExp||e instanceof Function},Je=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(Ge&&Ge===e)return;(!e||typeof e!=`object`)&&(e={}),e=mp(e),Ue=We.indexOf(e.PARSER_MEDIA_TYPE)===-1?`text/html`:e.PARSER_MEDIA_TYPE,Q=Ue===`application/xhtml+xml`?Zf:Xf,V=Xp(e,`ALLOWED_TAGS`,ce,{transform:Q}),le=Xp(e,`ALLOWED_ATTR`,H,{transform:Q}),Ie=Xp(e,`ALLOWED_NAMESPACES`,Le,{transform:Zf}),Z=Xp(e,`ADD_URI_SAFE_ATTR`,Ae,{transform:Q,base:Ae}),Oe=Xp(e,`ADD_DATA_URI_TAGS`,ke,{transform:Q,base:ke}),X=Xp(e,`FORBID_CONTENTS`,De,{transform:Q}),ue=Xp(e,`FORBID_TAGS`,mp({}),{transform:Q}),de=Xp(e,`FORBID_ATTR`,mp({}),{transform:Q}),Ee=op(e,`USE_PROFILES`)?e.USE_PROFILES&&typeof e.USE_PROFILES==`object`?mp(e.USE_PROFILES):e.USE_PROFILES:!1,pe=e.ALLOW_ARIA_ATTR!==!1,me=e.ALLOW_DATA_ATTR!==!1,he=e.ALLOW_UNKNOWN_PROTOCOLS||!1,W=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,G=e.SAFE_FOR_TEMPLATES||!1,ge=e.SAFE_FOR_XML!==!1,_e=e.WHOLE_DOCUMENT||!1,q=e.RETURN_DOM||!1,xe=e.RETURN_DOM_FRAGMENT||!1,J=e.RETURN_TRUSTED_TYPE||!1,be=e.FORCE_BODY||!1,Se=e.SANITIZE_DOM!==!1,Y=e.SANITIZE_NAMED_PROPS||!1,we=e.KEEP_CONTENT!==!1,Te=e.IN_PLACE||!1,B=_p(e.ALLOWED_URI_REGEXP)?e.ALLOWED_URI_REGEXP:Pp,Pe=typeof e.NAMESPACE==`string`?e.NAMESPACE:Ne,ze=Zp(e,`MATHML_TEXT_INTEGRATION_POINTS`,()=>fp({},Re)),Ve=Zp(e,`HTML_INTEGRATION_POINTS`,()=>fp({},Be));let t=Zp(e,`CUSTOM_ELEMENT_HANDLING`,()=>Bf(null));if(U=Bf(null),op(t,`tagNameCheck`)&&qe(t.tagNameCheck)&&(U.tagNameCheck=t.tagNameCheck),op(t,`attributeNameCheck`)&&qe(t.attributeNameCheck)&&(U.attributeNameCheck=t.attributeNameCheck),op(t,`allowCustomizedBuiltInElements`)&&typeof t.allowCustomizedBuiltInElements==`boolean`&&(U.allowCustomizedBuiltInElements=t.allowCustomizedBuiltInElements),zf(U),G&&(me=!1),xe&&(q=!0),Ee&&(V=fp({},wp),le=Bf(null),Ee.html===!0&&(fp(V,vp),fp(le,Tp)),Ee.svg===!0&&(fp(V,yp),fp(le,Ep),fp(le,Op)),Ee.svgFilters===!0&&(fp(V,bp),fp(le,Ep),fp(le,Op)),Ee.mathMl===!0&&(fp(V,Sp),fp(le,Dp),fp(le,Op))),fe.tagCheck=null,fe.attributeCheck=null,op(e,`ADD_TAGS`)&&(typeof e.ADD_TAGS==`function`?fe.tagCheck=e.ADD_TAGS:Yf(e.ADD_TAGS)&&(V===ce&&(V=mp(V)),fp(V,e.ADD_TAGS,Q))),op(e,`ADD_ATTR`)&&(typeof e.ADD_ATTR==`function`?fe.attributeCheck=e.ADD_ATTR:Yf(e.ADD_ATTR)&&(le===H&&(le=mp(le)),fp(le,e.ADD_ATTR,Q))),op(e,`ADD_FORBID_CONTENTS`)&&Yf(e.ADD_FORBID_CONTENTS)&&(X===De&&(X=mp(X)),fp(X,e.ADD_FORBID_CONTENTS,Q)),we&&(V[`#text`]=!0),_e&&fp(V,[`html`,`head`,`body`]),V.table&&(fp(V,[`tbody`]),delete ue.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!=`function`)throw lp(`TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.`);if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!=`function`)throw lp(`TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.`);let t=w;w=e.TRUSTED_TYPES_POLICY;try{T=O(``)}catch(e){throw w=t,e}}else e.TRUSTED_TYPES_POLICY===null?(w=void 0,T=``):(w===void 0&&(w=A()),w&&typeof T==`string`&&(T=O(``)));Rf&&Rf(e),Ge=e},Ye=fp({},[...yp,...bp,...xp]),Xe=fp({},[...Sp,...Cp]),Ze=function(e,t,n){return t.namespaceURI===Ne?e===`svg`:t.namespaceURI===je?e===`svg`&&(n===`annotation-xml`||ze[n]):!!Ye[e]},$=function(e,t,n){return t.namespaceURI===Ne?e===`math`:t.namespaceURI===Me?e===`math`&&Ve[n]:!!Xe[e]},Qe=function(e,t,n){return t.namespaceURI===Me&&!Ve[n]||t.namespaceURI===je&&!ze[n]?!1:!Xe[e]&&(He[e]||!Ye[e])},$e=function(e){let t=g(e);(!t||!t.tagName)&&(t={namespaceURI:Pe,tagName:`template`});let n=Xf(e.tagName),r=Xf(t.tagName);return Ie[e.namespaceURI]?e.namespaceURI===Me?Ze(n,t,r):e.namespaceURI===je?$(n,t,r):e.namespaceURI===Ne?Qe(n,t,r):!!(Ue===`application/xhtml+xml`&&Ie[e.namespaceURI]):!1},et=function(e){qf(t.removed,{element:e});try{g(e).removeChild(e)}catch{if(p(e),!g(e))throw lp(`a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place`)}},tt=function(e,t,n){try{e.removeAttributeNode(t)}catch{try{e.removeAttribute(n)}catch{}}},nt=function(e){at(e);let t=h(e);if(t){let e=[];Wf(t,t=>{qf(e,t)}),Wf(e,e=>{try{p(e)}catch{}})}let n=v(e);if(n)for(let t=n.length-1;t>=0;--t){let r=n[t],i=r&&r.name;typeof i==`string`&&tt(e,r,i)}},rt=function(e,n,r){if(!r)try{r=n.getAttributeNode(e)}catch{r=null}qf(t.removed,{attribute:r||null,from:n});try{r?n.removeAttributeNode(r):n.removeAttribute(e)}catch{try{n.removeAttribute(e)}catch{}}if(e===`is`){if(q||xe)try{et(n)}catch{}else try{n.setAttribute(e,``)}catch{}}},it=function(e){let t=v(e);if(t)for(let n=t.length-1;n>=0;--n){let r=t[n],i=r&&r.name;typeof i!=`string`||le[Q(i)]||tt(e,r,i)}},at=function(e){let t=[e];for(;t.length>0;){let e=t.pop();S(e)===Up.element&&it(e);let n=h(e);if(n)for(let e=n.length-1;e>=0;--e)t.push(n[e])}},ot=function(e,t){return ge?e===`patchsrc`||e===`for`&&t!==`label`&&t!==`output`:!1},st=function(e){if(!ge)return;let t=[e];for(;t.length>0;){let e=t.pop(),n=S(e);if(n===Up.processingInstruction||n===Up.comment&&cp(Bp,e.data)){try{p(e)}catch{}continue}if(n===Up.element){let t=e,n=Q(C(e));try{t.hasAttribute&&t.hasAttribute(`patchsrc`)&&t.removeAttribute(`patchsrc`),t.hasAttribute&&t.hasAttribute(`for`)&&ot(`for`,n)&&t.removeAttribute(`for`)}catch{}}let r=h(e);if(r)for(let e=r.length-1;e>=0;--e)t.push(r[e])}},ct=function(e){let t=null,r=null;if(be)e=`<remove></remove>`+e;else{let t=Qf(e,/^[\r\n\t ]+/);r=t&&t[0]}Ue===`application/xhtml+xml`&&Pe===Ne&&(e=`<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>`+e+`</body></html>`);let i=w?O(e):e;if(Pe===Ne)try{t=new l().parseFromString(i,Ue)}catch{}if(!t||!t.documentElement){t=j.createDocument(Pe,`template`,null);try{t.documentElement.innerHTML=Fe?T:i}catch{}}let a=t.body||t.documentElement;return e&&r&&a.insertBefore(n.createTextNode(r),a.childNodes[0]||null),Pe===Ne?N.call(t,_e?`html`:`body`)[0]:_e?t.documentElement:a},lt=function(e){let t=x?x(e):e.ownerDocument;return M.call(t||e,e,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},ut=function(e){return e=$f(e,ae,` `),e=$f(e,oe,` `),e=$f(e,F,` `),e},dt=function(e){e.normalize();let t=x?x(e):e.ownerDocument,n=M.call(t||e,e,c.SHOW_TEXT|c.SHOW_COMMENT|c.SHOW_CDATA_SECTION|c.SHOW_PROCESSING_INSTRUCTION,null),r=n.nextNode();for(;r;)r.data=ut(r.data),r=n.nextNode();let i=e.querySelectorAll?.call(e,`template`);i&&Wf(i,e=>{pt(e.content)&&dt(e.content)})},ft=function(e){let t=b?b(e):null;return typeof t!=`string`||Q(t)!==`form`?!1:typeof e.nodeName!=`string`||typeof e.textContent!=`string`||typeof e.removeChild!=`function`||e.attributes!==v(e)||typeof e.removeAttribute!=`function`||typeof e.setAttribute!=`function`||typeof e.namespaceURI!=`string`||typeof e.insertBefore!=`function`||typeof e.hasChildNodes!=`function`||e.nodeType!==y(e)||e.childNodes!==h(e)},pt=function(e){if(!y||typeof e!=`object`||!e)return!1;try{return y(e)===Up.documentFragment}catch{return!1}},mt=function(e){if(!y||typeof e!=`object`||!e)return!1;try{return typeof y(e)==`number`}catch{return!1}};function ht(e,n,r){e.length!==0&&Wf(e,e=>{e.call(t,n,r,Ge)})}let gt=function(e,t){return!!(ge&&e.hasChildNodes()&&!mt(e.firstElementChild)&&cp(zp,e.textContent)&&cp(zp,e.innerHTML)||ge&&e.namespaceURI===Ne&&Gp[t]&&(mt(e.firstElementChild)||typeof e.textContent==`string`&&cp(Kp[t],e.textContent))||e.nodeType===Up.processingInstruction||ge&&e.nodeType===Up.comment&&cp(Bp,e.data))},_t=function(e,t){return e instanceof RegExp?cp(e,t):e instanceof Function&&!!e(t,...[...arguments].slice(2))},vt=function(e,t,n){if(!ue[t]&&wt(t)&&_t(U.tagNameCheck,t))return!1;if(we&&!X[t]){let t=g(e),r=h(e);if(r&&t){let i=r.length;for(let a=i-1;a>=0;--a){let i=e===n?f(r[a],!0):r[a];t.insertBefore(i,m(e))}}}return et(e),!0},yt=function(e,t,n,r){return e.length===0?t:t===n||t===r?mp(t):t},bt=function(e,t){return e===t||g(e)!==null?!1:(Te&&at(e),!0)},xt=function(e,n){if(ht(P.beforeSanitizeElements,e,null),bt(e,n))return!0;if(ft(e))return et(e),!0;let r=Q(C(e));if(V=yt(P.uponSanitizeElement,V,ce,ye),ht(P.uponSanitizeElement,e,{tagName:r,allowedTags:V}),bt(e,n))return!0;if(gt(e,r))return et(e),!0;if(ue[r]||!(fe.tagCheck instanceof Function&&fe.tagCheck(r))&&!V[r]){let t=vt(e,r,n);return t===!1&&ht(P.afterSanitizeElements,e,null),t}if(S(e)===Up.element&&!$e(e)||(r===`noscript`||r===`noembed`||r===`noframes`)&&cp(Vp,e.innerHTML))return et(e),!0;if(G&&e.nodeType===Up.text){let n=ut(e.textContent);e.textContent!==n&&(qf(t.removed,{element:e.cloneNode()}),e.textContent=n)}return ht(P.afterSanitizeElements,e,null),!1},St=function(e,t,r){if(de[t]||ot(t,e)||Se&&(t===`id`||t===`name`)&&(r in n||r in Ke))return!1;let i=le[t]||fe.attributeCheck instanceof Function&&fe.attributeCheck(t,e);return me&&cp(I,t)||pe&&cp(L,t)?!0:i?Z[t]||cp(B,$f(r,z,``))||(t===`src`||t===`xlink:href`||t===`href`)&&e!==`script`&&ep(r,`data:`)===0&&Oe[e]||he&&!cp(R,$f(r,z,``))?!0:!r:wt(e)&&_t(U.tagNameCheck,e)&&_t(U.attributeNameCheck,t,e)||t===`is`&&U.allowCustomizedBuiltInElements&&_t(U.tagNameCheck,r)},Ct=fp({},[`annotation-xml`,`color-profile`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`missing-glyph`]),wt=function(e){return!Ct[Xf(e)]&&cp(se,e)},Tt=function(e,t,n,r){if(w&&typeof u==`object`&&typeof u.getAttributeType==`function`&&!n)switch(u.getAttributeType(e,t)){case`TrustedHTML`:return O(r);case`TrustedScriptURL`:return k(r)}return r},Et=function(e,n,r,i){try{r?e.setAttributeNS(r,n,i):e.setAttribute(n,i),ft(e)?et(e):Kf(t.removed)}catch{rt(n,e)}},Dt=function(e){ht(P.beforeSanitizeAttributes,e,null);let t=e.attributes;if(!t||ft(e))return;le=yt(P.uponSanitizeAttribute,le,H,K);let n={attrName:``,attrValue:``,keepAttr:!0,allowedAttributes:le,forceKeepAttr:void 0},r=t.length,i=Q(e.nodeName);for(;r--;){let a=t[r],o=a.name,s=a.namespaceURI,c=a.value,l=Q(o),u=c,d=o===`value`?u:tp(u);if(n.attrName=l,n.attrValue=d,n.keepAttr=!0,n.forceKeepAttr=void 0,ht(P.uponSanitizeAttribute,e,n),d=n.attrValue,Y&&(l===`id`||l===`name`)&&ep(d,Ce)!==0&&(rt(o,e,a),d=Ce+d),ge&&cp(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,d)){rt(o,e,a);continue}if(l===`attributename`&&Qf(d,`href`)){rt(o,e,a);continue}if(!n.forceKeepAttr){if(!n.keepAttr){rt(o,e,a);continue}if(!W&&cp(Hp,d)){rt(o,e,a);continue}if(G&&(d=ut(d)),!St(i,l,d)){rt(o,e,a);continue}d=Tt(i,l,s,d),d!==u&&Et(e,o,s,d)}}ht(P.afterSanitizeAttributes,e,null)},Ot=function(e){let t=null,n=lt(e);for(ht(P.beforeSanitizeShadowDOM,e,null);t=n.nextNode();)if(ht(P.uponSanitizeShadowNode,t,null),xt(t,e),Dt(t),pt(t.content)&&Ot(t.content),S(t)===Up.element){let e=_(t);pt(e)&&(kt(e),Ot(e))}ht(P.afterSanitizeShadowDOM,e,null)},kt=function(e){let t=[{node:e,shadow:null}];for(;t.length>0;){let e=t.pop();if(e.shadow){Ot(e.shadow);continue}let n=e.node,r=S(n)===Up.element,i=h(n);if(i)for(let e=i.length-1;e>=0;--e)t.push({node:i[e],shadow:null});if(r){let e=b?b(n):null;if(typeof e==`string`&&Q(e)===`template`){let e=n.content;pt(e)&&t.push({node:e,shadow:null})}}if(r){let e=_(n);pt(e)&&t.push({node:null,shadow:e},{node:e,shadow:null})}}};return t.sanitize=function(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=null,a=null,o=null,s=null;if(Fe=!e,Fe&&(e=`<!-->`),typeof e!=`string`&&!mt(e)&&(e=hp(e),typeof e!=`string`))throw lp(`dirty is not a string, aborting`);if(!t.isSupported)return e;ve?(V=ye,le=K):Je(n),(P.uponSanitizeElement.length>0||P.uponSanitizeAttribute.length>0)&&(V=mp(V)),P.uponSanitizeAttribute.length>0&&(le=mp(le)),t.removed=[];let c=Te&&typeof e!=`string`&&mt(e);if(c){st(e);let t=C(e);if(typeof t==`string`){let n=Q(t);if(!V[n]||ue[n])throw nt(e),lp(`root node is forbidden and cannot be sanitized in-place`)}if(ft(e))throw nt(e),lp(`root node is clobbered and cannot be sanitized in-place`);try{kt(e)}catch(t){throw nt(e),t}}else if(mt(e))i=ct(`<!---->`),a=i.ownerDocument.importNode(e,!0),a.nodeType===Up.element&&a.nodeName===`BODY`||a.nodeName===`HTML`?i=a:i.appendChild(a),kt(a);else{if(!q&&!G&&!_e&&e.indexOf(`<`)===-1)return w&&J?O(e):e;if(i=ct(e),!i)return q?null:J?T:``}i&&be&&et(i.firstChild);let l=c?e:i;try{let e=lt(l);for(;o=e.nextNode();)xt(o,l),Dt(o),pt(o.content)&&Ot(o.content)}catch(n){throw c&&(nt(e),Wf(t.removed,e=>{e.element&&at(e.element)})),n}if(c)return Wf(t.removed,e=>{e.element&&at(e.element)}),G&&dt(e),e;if(q){if(G&&dt(i),xe)for(s=re.call(i.ownerDocument);i.firstChild;)s.appendChild(i.firstChild);else s=i;return(le.shadowroot||le.shadowrootmode)&&(s=ie.call(r,s,!0)),s}let u=_e?i.outerHTML:i.innerHTML;return _e&&V[`!doctype`]&&i.ownerDocument&&i.ownerDocument.doctype&&i.ownerDocument.doctype.name&&cp(Lp,i.ownerDocument.doctype.name)&&(u=`<!DOCTYPE `+i.ownerDocument.doctype.name+`>
|
|
9
|
-
`+u),G&&(u=ut(u)),w&&J?O(u):u},t.setConfig=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Je(e),ve=!0,ye=V,K=le},t.clearConfig=function(){Ge=null,ve=!1,ye=null,K=null,w=ee,T=``},t.isValidAttribute=function(e,t,n){Ge||Je({});let r=Q(e),i=Q(t);return St(r,i,n)},t.addHook=function(e,t){typeof t==`function`&&
|
|
10
|
-
]`).replace(`lheading`,
|
|
11
|
-
`),n=t.length-1;for(;n>=0&&
|
|
12
|
-
`)}function
|
|
6
|
+
`,a={source:e,compiledSource:i,evaluate:Function(`context`,t),dependencies:n,isTimeDependent:r};return this.compiledCache.set(e,a),a}catch(t){return{source:e,compiledSource:i,evaluate:()=>void 0,dependencies:n,isTimeDependent:r,error:t instanceof Error?t.message:String(t)}}}evaluate(e,t){let n=this.compile(e);if(n.error)return{value:void 0,error:n.error};try{return{value:n.evaluate(this.createContext(t))}}catch(e){return{value:void 0,error:e instanceof Error?e.message:String(e)}}}createContext(e){return{time:this.timeState.time,frame:this.timeState.frame,fframe:this.timeState.frameFraction,fps:this.timeState.fps,self:e,ch:t=>this.ch(e,t),chs:t=>this.chs(e,t),chv:t=>this.chv(e,t),opexist:t=>+!!this.scope?.nodeExists(e,t),opinput:t=>this.scope?.inputNode(e,t)??null,fit:tu,fit01:nu,clamp:ru,lerp:iu,smooth:au,noise:ou,random:su,padzero:cu,...mu,Math}}ch(e,t){let n=this.resolveParam(e,t);if(!n)return 0;let r=n.value;return typeof r==`number`?r:typeof r==`string`?parseFloat(r)||0:typeof r==`boolean`?+!!r:0}chs(e,t){let n=this.resolveParam(e,t);return n?String(n.value??``):``}chv(e,t){let n=this.resolveParam(e,t);if(!n)return[];let r=n.value;return Array.isArray(r)?r.map(e=>typeof e==`number`?e:parseFloat(String(e))||0):typeof r==`number`?[r]:[]}resolveParam(e,t){return this.scope?.resolveParam(e,t)??null}validatePath(e,t){return this.resolveParam(e,t)!==null}extractDependencies(e){let t=[];Su.lastIndex=0;let n;for(;(n=Su.exec(e))!==null;)t.push(n[1]);return t}hasTimeReference(e){return bu(e)}clearCache(){this.compiledCache.clear()}},wu=class extends Cu{constructor(){super(),this.graph=null,this.setScope({resolveParam:(e,t)=>this.resolveNodePath(e,t),nodeExists:(e,t)=>e.node(t)!==null,inputNode:(e,t)=>this.resolveInput(e,t)})}setGraph(e){this.graph=e}resolveNodePath(e,t){let n=t.lastIndexOf(`/`);if(n===-1||t.startsWith(`./`)){let n=t.replace(`./`,``),r=e.props[n];return r?{value:r.value}:null}let r=t.substring(0,n)||`.`,i=t.substring(n+1),a=e.node(r);if(!a)return null;let o=a.props[i];return o?{value:o.value}:null}resolveInput(e,t){if(!this.graph)return null;let n=e.inputs[t];if(!n||n.connections.length===0)return null;let r=n.connections[0];return this.graph.getNode(r.from.nodeId)}validateAllPaths(){if(!this.graph)return[];let e=[];for(let t of this.graph.nodes)for(let[n,r]of Object.entries(t.props)){if(!r.expression)continue;let i=this.extractDependencies(r.expression);for(let a of i)this.validatePath(t,a)||e.push({nodeId:t.id,nodePath:t.path(),propName:n,expression:r.expression,brokenPath:a})}return e}},Tu=new wu,Eu=`smooth`,Du=[`constant`,`linear`,`smooth`];function Ou(e){return typeof e==`string`&&Du.includes(e)}var ku=Object.freeze({keys:Object.freeze([])});function Au(e=[]){let t=new Map;for(let n of e){if(!n)continue;let e=Number(n.frame),r=Number(n.value);!Number.isFinite(e)||!Number.isFinite(r)||t.set(e,{frame:e,value:r,interpolation:Ou(n.interpolation)?n.interpolation:Eu})}return{keys:[...t.values()].sort((e,t)=>e.frame-t.frame)}}function ju(e){return!e||e.keys.length===0}function Mu(e,t){return e.keys.find(e=>e.frame===t)}function Nu(e,t,n,r){let i=e??ku;if(!Number.isFinite(t)||!Number.isFinite(n))return Au(i.keys);let a=Mu(i,t),o=r??a?.interpolation??`smooth`;return Au([...i.keys.filter(e=>e.frame!==t),{frame:t,value:n,interpolation:o}])}function Pu(e,t){return Au((e??ku).keys.filter(e=>e.frame!==t))}function Fu(e,t){if(!e||e.keys.length===0)return;let n=e.keys;if(!Number.isFinite(t)||n.length===1||t<=n[0].frame)return n[0].value;if(t>=n[n.length-1].frame)return n[n.length-1].value;let r=Iu(n,t),i=n[r],a=n[r+1],o=a.frame-i.frame;if(o<=0)return a.value;let s=(t-i.frame)/o;switch(i.interpolation){case`constant`:return i.value;case`linear`:return i.value+(a.value-i.value)*s;default:return Lu(n,r,s,o)}}function Iu(e,t){let n=0,r=e.length-1;for(;n<r;){let i=n+r+1>>1;e[i].frame<=t?n=i:r=i-1}return Math.min(n,e.length-2)}function Lu(e,t,n,r){let i=e[t],a=e[t+1],o=Ru(e,t,`out`),s=Ru(e,t+1,`in`),c=n*n,l=c*n,u=2*l-3*c+1,d=l-2*c+n,f=-2*l+3*c,p=l-c;return u*i.value+d*r*o+f*a.value+p*r*s}function Ru(e,t,n){let r=e[t-1],i=e[t+1];if(!r||!i||n===`out`&&r.interpolation===`constant`||n===`in`&&e[t].interpolation===`constant`)return 0;let a=i.frame-r.frame;return a<=0?0:(i.value-r.value)/a}function zu(e){if(!ju(e))return{keys:e.keys.map(e=>e.interpolation===`smooth`?{frame:e.frame,value:e.value}:{frame:e.frame,value:e.value,interpolation:e.interpolation})}}function Bu(e){if(!e||typeof e!=`object`)return ku;let t=e.keys;return Array.isArray(t)?Au(t):ku}function Vu(e,t){if(!ju(e.channel)){let n=Fu(e.channel,t.frame);if(n!==void 0)return{value:n,source:`channel`}}if(e.expression&&t.evaluateExpression){let n=t.evaluateExpression(e.expression);if(n?.error)return{value:e.value,source:`value`,error:n.error};if(n)return{value:n.value,source:`expression`}}return{value:e.value,source:`value`}}function Hu(e){if(typeof e==`number`)return Number.isInteger(e)?`int`:`float`;if(typeof e==`boolean`)return`bool`;if(typeof e==`string`)return`string`;if(Array.isArray(e)&&e.every(e=>typeof e==`number`)){if(e.length===2)return`vec2`;if(e.length===3)return`vec3`;if(e.length===4)return`vec4`}return`any`}function Uu(e){switch(Yl(e??`any`)){case`int`:return`int`;case`float`:return`number`;case`bool`:return`boolean`;case`string`:return`text`;case`color`:return`color`;case`vec2`:return`vec2`;case`vec3`:return`vec3`;case`vec4`:return`vec4`;default:return}}var Wu={number:`float`,slider:`float`,range:`float`,float:`float`,int:`int`,text:`string`,textarea:`string`,string:`string`,select:`string`,boolean:`bool`,bool:`bool`,vector:`vec3`};function Gu(e){return e?Yl(Wu[e]??e):`any`}var Ku=new Set([`int`,`float`]);function qu(e,t){return e===`any`||t===`any`||Ku.has(e)&&Ku.has(t)?!0:e===t}var Ju=class e{constructor(t,n,r){this.inputs=[],this.outputs=[],this.props={},this.propWatchers=new Map,this.actions={},this.parameters=[],this.parametersUsedDuringSetup=new Set,this.propsDeclaredByCode=new Set,this.carryOver=null,this.lastCarryOverReport=null,this.variadic=!1,this.variadicDefault=null,this.variadicOptions={},this.preview=null,this.comment=``,this.error=null,this.warning=null,this.code=``,this.bypass=!1,this.cook=!1,this.parent=null,this._children=[],this.hasExecuted=!1,this.lastInputHash=``,this.cookState=`stale`,this.cookGeneration=0,this.stagedOutputs=null,this.executionTimeout=3e4,this.cookInfo={lastCookTime:0,totalCookTime:0,cookCount:0,averageCookTime:0,lastCookTimestamp:0,peakMemory:0},this.isTimeDependent=!1,this.portsUsedDuringSetup=new Set,this._portMap=new Map,this.defaultExpressionsApplied=new Set,this.plainPropOverrides=new Set,this.id=t,this.type=n,this.graph=r,this.position={x:0,y:0},this.constructor!==e&&(this.setup(),queueMicrotask(()=>{if(this.onReady)try{this.onReady()}catch(e){console.error(`Error in onReady for node ${this.id}:`,e)}}))}in(e,t,n={}){let r=e===`trigger`?`trigger`:`param`,i=this.inputs.find(t=>t.name===e);if(i)return this.portsUsedDuringSetup.add(`input_${e}`),n.type&&(i.dataType=n.type),t!==void 0&&i.defaultValue!==t&&(i.defaultValue=t,(i.value===void 0||i.value===i.defaultValue)&&(i.value=t)),i.options=Object.assign(i.options??{},n),i;let a=this.inputs.length,o={id:`${this.id}_in_${a}`,name:e,portType:r,dataType:n.type||`any`,value:t,defaultValue:t,options:n,connections:[]};return this.inputs.push(o),this._portMap.set(o.id,o),this.portsUsedDuringSetup.add(`input_${e}`),o}out(e,t=`param`,n={}){let r=this.outputs.find(t=>t.name===e);if(r)return this.portsUsedDuringSetup.add(`output_${e}`),r.portType!==t&&(r.portType=t),n.type&&(r.dataType=n.type),r.options={...r.options??{},...n},r;let i=this.outputs.length,a={id:`${this.id}_out_${i}`,name:e,portType:t,dataType:n.type||`any`,value:void 0,connections:[],options:n,setValue:e=>this.setOutputValue(a,e),trigger:e=>{a.connections.forEach(t=>{let n=this.graph.getNode(t.to.nodeId);if(n){let r=n.getInputPortById(t.to.portId);r&&r.onTrigger&&r.onTrigger(e)}})}};return this.outputs.push(a),this._portMap.set(a.id,a),this.portsUsedDuringSetup.add(`output_${e}`),a}getInputPort(e){return e>=0&&e<this.inputs.length?this.inputs[e]:null}getOutputPort(e){return e>=0&&e<this.outputs.length?this.outputs[e]:null}renameId(e){let t=this.id,n=new Map;this.id=e,this._portMap.clear();for(let r of[...this.inputs,...this.outputs]){let i=r.id;r.id=i.startsWith(`${t}_`)?`${e}${i.slice(t.length)}`:i,n.set(i,r.id),this._portMap.set(r.id,r)}return n}getPort(e){return this._portMap.get(e)||null}getInputPortById(e){let t=this._portMap.get(e);return t&&`defaultValue`in t?t:null}setOutputValue(e,t){if(this.stagedOutputs){this.stagedOutputs.set(e,t);return}this.commitOutputValue(e,t)}commitOutputValue(e,t){e.value=t;for(let n of e.connections){let e=this.graph.getNode(n.to.nodeId)?.getInputPortById(n.to.portId);e&&(e.value=t,e.onChange?.(t))}}addParm(e,t){this.props[e]=t,this.propsDeclaredByCode.add(e),this.reconcileProp(e),this.cookState!==`cooking`&&this.markDirty()}defineProp(e,t){this.addParm(e,t)}addAction(e,t){this.actions[e]=t}async executeAction(e){let t=this.actions[e];t&&(t.condition&&!t.condition()||await t.callback())}updateProp(t,n){if(!this.props[t])return;let r=Array.isArray(n)?[...n]:n;if(this.props[t]={...this.props[t],value:r},this.props[t].onChange)try{this.props[t].onChange(this.props[t],this)}catch(e){console.error(`Error in prop onChange for ${t}:`,e)}let i=this.propWatchers.get(t);i&&i.forEach(e=>{try{e(r,this.props[t])}catch(e){console.error(`Error in prop watcher for ${t}:`,e)}}),this.props={...this.props},this.markDirty(),e.onPropParamsChanged?.(this.id)}updatePropParams(t,n){this.props[t]&&(this.props[t]={...this.props[t],params:{...this.props[t].params,...n}},this.props={...this.props},e.onPropParamsChanged?.(this.id))}watchProp(e,t){this.propWatchers.has(e)||this.propWatchers.set(e,[]),this.propWatchers.get(e).push(t)}parm(e){let t=this.props[e];if(!t)return null;let n=this,r=()=>n.props[e]??t;return{name:()=>e,path:()=>`${n.path()}/${e}`,node:()=>n,eval:()=>r().value,evalAsFloat:()=>parseFloat(r().value)||0,evalAsInt:()=>parseInt(r().value,10)||0,evalAsString:()=>String(r().value??``),rawValue:()=>r().value,set:t=>n.updateProp(e,t),parmType:()=>r().type||`any`,expression:()=>r().expression??null,setExpression:t=>{n.props[e]={...n.props[e],expression:t},n.updateTimeDependent(),n.markDirty()},deleteExpression:()=>{let{expression:t,expressionError:r,...i}=n.props[e];n.props[e]=i,n.defaultExpressionsApplied.has(e)&&n.plainPropOverrides.add(e),n.updateTimeDependent(),n.markDirty()},hasExpression:()=>!!r().expression,expressionError:()=>r().expressionError??null,channel:()=>n.props[e]?.channel??null,hasChannel:()=>!ju(n.props[e]?.channel),keys:()=>n.props[e]?.channel?.keys??[],setKey:(t,r,i)=>{let a=t??n.currentFrame(),o=r??Number(n.evalParm(e));Number.isFinite(o)&&n.setPropChannel(e,Nu(n.props[e]?.channel,a,o,i))},deleteKey:t=>{let r=n.props[e]?.channel;r&&n.setPropChannel(e,Pu(r,t))},clearChannel:()=>n.setPropChannel(e,null)}}currentFrame(){return Tu.fframe}setPropChannel(t,n){let r=this.props[t];if(r){if(!n||ju(n)){let{channel:e,...n}=this.props[t];this.props[t]=n}else this.props[t]={...r,channel:n};this.props={...this.props},this.updateTimeDependent(),this.markDirty(),e.onPropParamsChanged?.(this.id)}}serializePropValue(e,t){let n=this.props[e];if(!n)return t;let r=zu(n.channel);return!n.expression&&!r?t:{value:t,...n.expression?{expression:n.expression}:{},...r?{channel:r}:{}}}preservePlainProp(e){this.plainPropOverrides.add(e)}preservesPlainProp(e){return this.plainPropOverrides.has(e)&&this.defaultExpressionsApplied.has(e)}restorePropChannel(e,t){if(!this.props[e])return;let n=Bu(t);this.setPropChannel(e,ju(n)?null:n)}serializePropChannel(e){return zu(this.props[e]?.channel)}evalParm(e){let t=this.props[e];if(t)return Vu(t,{frame:this.currentFrame(),evaluateExpression:()=>({value:this.evaluateExpression(e)})}).value}setParm(e,t){this.updateProp(e,t)}evaluateExpression(e){let t=this.props[e];if(!t?.expression)return t?.value;Tu.setGraph(this.graph);let n=Tu.evaluate(t.expression,this);if(n.error)return this.props[e]={...this.props[e],expressionError:n.error},t.value;if(t.expressionError){let{expressionError:t,...n}=this.props[e];this.props[e]=n}return n.value}evaluateAllExpressions(){for(let[e,t]of Object.entries(this.props))if(t.expression&&!t.fromParameter&&this.propsDeclaredByCode.has(e)){let t=this.evaluateExpression(e);t!==void 0&&(this.props[e]={...this.props[e],value:t})}this.updateTimeDependent()}param(e,t,n={}){let r=this.parameters.find(t=>t.name===e);if(r?(n.type&&(r.dataType=n.type),r.defaultValue=t,Object.assign(r.options,n)):(r={name:e,value:t,defaultValue:t,dataType:n.type||Hu(t),promoted:!1,options:n},this.parameters.push(r)),this.parametersUsedDuringSetup.add(e),this.reconcileParameter(r,t,n),this.bindParameterProp(r,e,n),r.promoted){let t=this.in(e,r.value,{...r.options,type:r.dataType,promoted:!0});if(t.fromParameter=e,t.connections.length>0&&t.value!==void 0&&t.value!==null)return{...r,value:t.value}}return r}bindParameterProp(e,t,n){let r=Object.getOwnPropertyDescriptor(e,`value`),i=r&&!r.get?r.value:void 0,a=this.props[t];a||(a={value:i===void 0?e.defaultValue:i},this.props[t]=a,this.props={...this.props}),n.defaultExpression&&!this.defaultExpressionsApplied.has(t)&&(this.defaultExpressionsApplied.add(t),!this.plainPropOverrides.has(t)&&!a.expression&&(a.expression=n.defaultExpression,this.props={...this.props},this.updateTimeDependent())),a.fromParameter=t,a.hidden=!0;let o=Uu(e.dataType);o&&(a.type=o);let s={...a.params??{}};n.min!==void 0&&(s.min=n.min),n.max!==void 0&&(s.max=n.max),n.step!==void 0&&(s.step=n.step),Yl(e.dataType??`any`)===`int`&&(s.integer=!0),a.params=s,!r?.get&&Object.defineProperty(e,"value",{get:()=>this.evalParm(t),set:e=>this.writeParameterValue(t,e),enumerable:!0,configurable:!0})}writeParameterValue(e,t){let n=this.props[e];n&&(this.props[e]={...n,value:Array.isArray(t)?[...t]:t},this.props={...this.props})}rawParameterValue(e){return this.props[e]?this.props[e].value:this.parameters.find(t=>t.name===e)?.value}setParameterPromoted(e,t){let n=this.parameters.find(t=>t.name===e);if(!(!n||n.promoted===t)){if(n.promoted=t,t){let t=this.in(e,n.value,{...n.options,type:n.dataType,promoted:!0});t.fromParameter=e}else{let t=this.inputs.findIndex(t=>t.name===e);t>=0&&([...this.inputs[t].connections].forEach(e=>this.graph?.disconnect(e.id)),this.inputs.splice(t,1))}this.markDirty()}}setParameter(e,t){let n=this.parameters.find(t=>t.name===e);n&&(n.value=t,this.markDirty())}beginParameterCarryOver(){let e=new Map;for(let t of this.parameters)e.set(`parameter:${t.name}`,{name:t.name,kind:`parameter`,type:Gu(t.dataType),value:this.rawParameterValue(t.name),expression:this.props[t.name]?.expression,channel:this.props[t.name]?.channel});for(let[t,n]of Object.entries(this.props))e.has(`parameter:${t}`)||e.set(`prop:${t}`,{name:t,kind:`prop`,type:Gu(n.type),value:n.value,expression:n.expression,channel:n.channel});this.carryOver={carried:e,resolved:new Set,report:{kept:[],defaulted:[],dropped:[],retyped:[]}},this.parametersUsedDuringSetup.clear()}abandonParameterCarryOver(){this.carryOver=null}hasPendingParameterCarryOver(){return this.carryOver!==null}applyParameterDeclarations(e){if(!this.carryOver)return null;for(let t of e)t?.name&&(t.kind===`prop`?this.addParm(t.name,{value:t.defaultValue,type:t.type}):this.param(t.name,t.defaultValue,{...t.type?{type:t.type}:{}}));return this.finishParameterCarryOver()}finishParameterCarryOver(){let t=this.carryOver;if(!t)return null;for(let e of t.carried.values()){t.report.dropped.push({name:e.name,value:e.value,...e.expression?{expression:e.expression}:{}});let n=this.parameters.findIndex(t=>t.name===e.name);if(n>=0){this.parameters[n].promoted&&this.setParameterPromoted(e.name,!1);let t=this.parameters.findIndex(t=>t.name===e.name);t>=0&&this.parameters.splice(t,1)}t.resolved.has(`prop:${e.name}`)||delete this.props[e.name]}return this.carryOver=null,this.lastCarryOverReport=t.report,t.report.dropped.length>0&&(this.props={...this.props},this.updateTimeDependent(),e.onPropParamsChanged?.(this.id)),t.report}reconcileParameter(e,t,n){let r=this.carryOver;if(!r)return;let i=`parameter:${e.name}`;if(r.resolved.has(i))return;r.resolved.add(i);let a=n.type??Hu(t);e.dataType=a;let o=Gu(a),s=`prop:${e.name}`,c=r.carried.get(i)??r.carried.get(s);if(!c){e.value=t,r.report.defaulted.push(e.name);return}r.carried.delete(i),r.carried.delete(s),qu(c.type,o)?(e.value=c.value,(c.expression||c.channel)&&(this.props[e.name]={...this.props[e.name]??{},value:c.value,...c.expression?{expression:c.expression}:{},...c.channel?{channel:c.channel}:{}},r.resolved.add(s),this.updateTimeDependent()),r.report.kept.push(e.name)):(e.value=t,r.report.retyped.push({name:e.name,from:c.type,to:o}))}reconcileProp(e){let t=this.carryOver;if(!t)return;let n=`prop:${e}`;if(t.resolved.has(n))return;t.resolved.add(n);let r=this.props[e],i=Gu(r?.type),a=`parameter:${e}`,o=t.carried.get(n)??t.carried.get(a);if(!o){t.report.defaulted.push(e);return}t.carried.delete(n),t.carried.delete(a),qu(o.type,i)?(this.props[e]={...r,value:o.value,...o.expression?{expression:o.expression}:{},...o.channel?{channel:o.channel}:{}},(o.expression||o.channel)&&this.updateTimeDependent(),t.report.kept.push(e)):t.report.retyped.push({name:e,from:o.type,to:i})}setVariadic(e=null,t={}){this.variadic=!0,this.variadicDefault=e,this.variadicOptions=t,this.syncVariadicPorts()}getVariadicInputs(){return this.inputs.filter(e=>e.variadic&&!e.options.hidden)}syncVariadicPorts(){if(!this.variadic)return;let e=this.inputs.filter(e=>e.variadic),t=e.filter(e=>e.connections.length>0||e.value!==null&&e.value!==this.variadicDefault).length;for(let e=0;e<t+1;e++){let t=this.in(`input_${e}`,this.variadicDefault,{...this.variadicOptions,hidden:!1});t.variadic=!0,t.onChange||=()=>this.onUpdate?.()}for(let n=t+1;n<e.length;n++)e[n]&&(e[n].options.hidden=!0)}path(){let e=[this.id],t=this.parent;for(;t;)e.unshift(t.id),t=t.parent;return`/`+e.join(`/`)}children(){return this._children}isNetwork(){return!1}node(e){if(!e)return null;if(e.startsWith(`/`))return this.graph.nodeByPath(e);let t=e.split(`/`).filter(e=>e.length>0),n=this;for(let e of t){if(!n)return null;if(e!==`.`){if(e===`..`){n=n.parent;continue}if(n.isNetwork()){let t=n.children().find(t=>t.id===e);if(t){n=t;continue}}return null}}return n}relativePathTo(e){let t=this.path().split(`/`).filter(e=>e),n=e.path().split(`/`).filter(e=>e),r=0;for(;r<t.length&&r<n.length&&t[r]===n[r];)r++;let i=t.length-r,a=n.slice(r),o=[];for(let e=0;e<i;e++)o.push(`..`);return o.push(...a),o.join(`/`)||`.`}inputNodes(){let e=[];for(let t of this.inputs)for(let n of t.connections){let t=this.graph.getNode(n.from.nodeId);t&&!e.includes(t)&&e.push(t)}return e}outputNodes(){let e=[];for(let t of this.outputs)for(let n of t.connections){let t=this.graph.getNode(n.to.nodeId);t&&!e.includes(t)&&e.push(t)}return e}globToRegex(e){let t=``,n=0;for(;n<e.length;){let r=e[n];switch(r){case`*`:t+=`.*`;break;case`?`:t+=`.`;break;case`[`:let i=n+1,a=``;for(e[i]===`!`&&(a=`^`,i++);i<e.length&&e[i]!==`]`;)a+=e[i],i++;t+=`[`+a+`]`,n=i;break;case`.`:case`+`:case`^`:case`$`:case`(`:case`)`:case`{`:case`}`:case`|`:case`\\`:t+=`\\`+r;break;default:t+=r}n++}return RegExp(`^`+t+`$`)}glob(e){let t=this.children();if(!e||e===`*`)return[...t];let n=e.split(/\s+/),r=[],i=[];for(let e of n)e.startsWith(`^`)?i.push(this.globToRegex(e.slice(1))):r.push(this.globToRegex(e));return t.filter(e=>{let t=r.length===0||r.some(t=>t.test(e.id)),n=i.some(t=>t.test(e.id));return t&&!n})}recursiveGlob(e){let t=[],n=e.startsWith(`**/`),r=n?e.slice(3):e,i=(e,a)=>{let o=e.children();for(let e of o)n?this.globToRegex(r).test(e.id)&&t.push(e):a===0&&this.globToRegex(r).test(e.id)&&t.push(e),e.isNetwork()&&i(e,n?a:a-1)};if(e===`**`){let e=n=>{for(let r of n.children())t.push(r),r.isNetwork()&&e(r)};return e(this),t}let a=n?0:e.split(`/`).length-1;return i(this,a),t}setBypass(e){this.bypass=e,this.markDirty()}setCook(e){e&&this.parent&&this.parent.children().filter(e=>e!==this&&e.cook).forEach(e=>e.setCook(!1)),this.cook=e,e?this.graph.cookingNodes.add(this):this.graph.cookingNodes.delete(this),this.markDirty()}setTimeDependent(e){this.isTimeDependent=e}updateTimeDependent(){let e=Object.values(this.props).some(e=>e.expression&&Tu.hasTimeReference(e.expression)||!ju(e.channel));this.setTimeDependent(e)}shouldExecute(){return this.bypass?!1:this.graph.cookingNodes.size>0?this.cook||this.graph.isDownstreamOfCooking(this):!0}executeBypass(){this.inputs.forEach(e=>{if(e.portType===`param`){let t=this.outputs.find(t=>t.name===e.name||this.outputs.length===1);t&&t.setValue(e.value)}})}markDirty(){this.graph.scheduler.markStale(this)}invalidateCook(){this.cookGeneration++,this.setCookState(`stale`)}setCookState(e){this.cookState!==e&&(this.cookState=e,this.graph.scheduler.notifyNodeStateChange())}getValueFingerprint(e){if(e==null)return`null`;if(typeof e!=`object`)return String(e);if(ArrayBuffer.isView(e)){let t=e,n=t.length;return n===0?`empty`:`f32[${n}]:${t[0]?.toFixed(4)},${t[Math.floor(n/2)]?.toFixed(4)},${t[n-1]?.toFixed(4)}`}if(e.width!==void 0&&e.height!==void 0){let t=e.channelCount||e.channels?.length||0;return`img:${e.width}x${e.height}x${t}`}if(typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement||typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement)return`el:${e.width}x${e.height}`;try{let t=JSON.stringify(e);return t.length<500?t:`obj:${t.length}:${t.slice(0,100)}`}catch{return`obj:${typeof e}`}}calculateInputHash(){return this.inputs.map(e=>this.getValueFingerprint(e.value)).join(`|`)}get isDirty(){return!this.hasExecuted||this.cookState!==`clean`||this.calculateInputHash()!==this.lastInputHash}markDownstreamDirty(){this.graph.scheduler.markDownstreamStale(this)}async requestOutput(){this.isDirty&&(this.cookState===`clean`&&this.markDirty(),await this.graph.scheduler.flush())}setup(){}setFunction(e){this.nodeFunction=e,this.hasExecuted=!1,this.markDirty()}async execute(){if(!(this.nodeFunction||this.onCook!==e.prototype.onCook)){this.hasExecuted=!0,this.setCookState(`clean`);return}let t=!this.hasExecuted;if(!this.shouldExecute()&&!t&&!this.isDirty){this.executeBypass(),this.setCookState(`clean`);return}if(!t&&!this.isDirty)return;this.evaluateAllExpressions();let n=performance.now(),r=performance.memory?.usedJSHeapSize??0,i=this.cookGeneration;this.stagedOutputs=new Map,this.setCookState(`cooking`);let a;try{if(await Promise.race([Promise.resolve(this.onCook()),new Promise((e,t)=>{a=setTimeout(()=>t(Error(`Node execution timeout after ${this.executionTimeout}ms`)),this.executionTimeout)})]),i===this.cookGeneration){await this.callLifecycleHooks(t);for(let[e,t]of this.stagedOutputs)this.commitOutputValue(e,t);this.error=null,this.hasExecuted=!0,this.lastInputHash=this.calculateInputHash();let n=this.finishParameterCarryOver();n&&e.onParametersRetargeted?.(this.id,n),this.setCookState(`clean`)}else this.setCookState(`stale`);this.updateCookInfo(n,r)}catch(e){i===this.cookGeneration?(this.error=e,this.setCookState(`error`)):this.setCookState(`stale`),this.updateCookInfo(n,r),e.message?.includes(`timeout`)||console.error(`Error executing node ${this.id}:`,e)}finally{a!==void 0&&clearTimeout(a),this.stagedOutputs=null}}onCook(){if(this.nodeFunction)return this.nodeFunction(this,this.graph)}updateCookInfo(e,t=0){let n=performance.now()-e;this.cookInfo.lastCookTime=n,this.cookInfo.totalCookTime+=n,this.cookInfo.cookCount++,this.cookInfo.averageCookTime=this.cookInfo.totalCookTime/this.cookInfo.cookCount,this.cookInfo.lastCookTimestamp=Date.now();let r=performance.memory?.usedJSHeapSize??0;if(t&&r){let e=r-t;e>this.cookInfo.peakMemory&&(this.cookInfo.peakMemory=e)}}startCook(){return performance.now()}endCook(e){this.updateCookInfo(e,0)}resetCookInfo(){this.cookInfo={lastCookTime:0,totalCookTime:0,cookCount:0,averageCookTime:0,lastCookTimestamp:0,peakMemory:0}}async callLifecycleHooks(e){let t=e=>{let t=e?.message||String(e);return t.includes(`document is not defined`)||t.includes(`window is not defined`)||t.includes(`HTMLCanvasElement`)||t.includes(`HTMLImageElement`)};if(e&&this.onSetup)try{await this.onSetup()}catch(e){t(e)||console.error(`Error in onSetup for ${this.id}:`,e)}if(this.onUpdate)try{await this.onUpdate()}catch(e){t(e)||console.error(`Error in onUpdate for ${this.id}:`,e)}if(this.onRender)try{await this.onRender()}catch(e){t(e)||console.error(`Error in onRender for ${this.id}:`,e)}if(e&&this.onReady)try{this.onReady()}catch(e){t(e)||console.error(`Error in onReady for ${this.id}:`,e)}}rename(e){if(!e?.trim())return this.id;let t=e.trim().replace(/\s+/g,``);if(!t)return this.id;let n=this.graph.generateUniqueNodeId(t,this.id);return this.graph.renameElement(this.id,n)&&this.markDirty(),this.id}isPreviewValue(e){return typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement||typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement}async require(e,t){if(!this.graph.packageManager)throw Error(`PackageManager not initialized`);return this.graph.packageManager.load(e,t)}get assets(){return this.graph.assetManager}log(...e){console.log(`[${this.id}]`,...e)}resetPortTracking(){this.portsUsedDuringSetup.clear()}preserveState(){return{inputs:this.inputs.map(e=>({id:e.id,name:e.name,value:e.value,connections:e.connections.map(e=>e.id)})),outputs:this.outputs.map(e=>({id:e.id,name:e.name,value:e.value,connections:e.connections.map(e=>e.id)})),props:Object.fromEntries(Object.entries(this.props).map(([e,t])=>[e,t.value])),bypass:this.bypass,cook:this.cook}}restoreState(e){e.inputs?.forEach(e=>{let t=this.inputs.find(t=>t.id===e.id||t.name===e.name);t&&(t.value=e.value)}),e.outputs?.forEach(e=>{let t=this.outputs.find(t=>t.id===e.id||t.name===e.name);t&&(t.value=e.value)}),e.props&&Object.entries(e.props).forEach(([e,t])=>{this.props[e]&&(this.props[e].value=t)}),e.bypass!==void 0&&this.setBypass(e.bypass),e.cook!==void 0&&this.setCook(e.cook)}cleanupUnusedPorts(){let e=this.portsUsedDuringSetup;this.inputs=this.inputs.filter(t=>e.has(`input_${t.name}`)?!0:(t.connections.forEach(e=>this.graph.disconnect(e.id)),this._portMap.delete(t.id),!1)),this.outputs=this.outputs.filter(t=>e.has(`output_${t.name}`)?!0:(t.connections.forEach(e=>this.graph.disconnect(e.id)),this._portMap.delete(t.id),!1)),this.portsUsedDuringSetup.clear()}toJSON(){let e=je(this.type),t={id:this.id,type:e,position:[this.position.x,this.position.y]};!Fe(e)&&this.code&&(t.code=this.code),this.comment?.trim()&&(t.comment=this.comment);let n=Object.fromEntries(Object.entries(this.props).map(([e,t])=>{let n=t.value;if(t.type===`color`&&fl(n)){let e=ll(n);n=[e.r,e.g,e.b,e.a??1]}return t.expression?[e,{value:n,expression:t.expression}]:[e,n]}));return Object.keys(n).length>0&&(t.props=n),this.bypass&&(t.bypass=!0),this.cook&&(t.cook=!0),t}},Yu=class extends Ju{constructor(e,t,n){super(e,t,n),this.isAnnotation=!0}getOutput(){return this.getOutputPort(0)}async execute(){}},Xu=class extends Yu{constructor(e,t){super(e,`Image`,t)}},Zu=class extends Yu{constructor(e,t){super(e,`Text`,t)}},Qu=class extends Yu{constructor(e,t){super(e,`Group`,t)}},$u=class extends Yu{constructor(e,t){super(e,`Line`,t)}},ed=class extends Yu{constructor(e,t){super(e,`Polyline`,t)}},td=class{async loadImage(e){return new Promise((t,n)=>{if(typeof Image>`u`){n(Error(`Image API not available (not in browser environment)`));return}let r=new Image;r.onload=()=>t(r),r.onerror=()=>n(Error(`Failed to load image: ${e}`)),r.src=e})}async loadJSON(e){if(typeof fetch>`u`)throw Error(`fetch API not available (not in browser environment)`);let t=await fetch(e);if(!t.ok)throw Error(`Failed to load JSON: ${e} - ${t.statusText}`);return t.json()}async loadText(e){if(typeof fetch>`u`)throw Error(`fetch API not available (not in browser environment)`);let t=await fetch(e);if(!t.ok)throw Error(`Failed to load text: ${e} - ${t.statusText}`);return t.text()}async loadBinary(e){if(typeof fetch>`u`)throw Error(`fetch API not available (not in browser environment)`);let t=await fetch(e);if(!t.ok)throw Error(`Failed to load binary: ${e} - ${t.statusText}`);return t.arrayBuffer()}},nd=class{constructor(e=``,t){this.cache=new Map,this.projectRoot=e,this.loader=t??new td}async load(e){if(this.cache.has(e))return this.cache.get(e);let t=this.resolve(e),n=this.getAssetType(e),r;switch(n){case`image`:r=await this.loader.loadImage(t);break;case`json`:r=await this.loader.loadJSON(t);break;case`text`:r=await this.loader.loadText(t);break;default:throw Error(`Unsupported asset type: ${n}`)}let i={id:this.generateId(e),path:e,type:n,data:r,size:0,metadata:{}};return this.cache.set(e,i),i}resolve(e){return e.startsWith(`http://`)||e.startsWith(`https://`)||e.startsWith(`/`)?e:`${this.projectRoot}${e}`}getAssetType(e){let t=e.split(`.`).pop()?.toLowerCase();return[`jpg`,`jpeg`,`png`,`gif`,`webp`,`svg`].includes(t||``)?`image`:[`mp3`,`wav`,`ogg`,`m4a`].includes(t||``)?`audio`:[`mp4`,`webm`,`mov`].includes(t||``)?`video`:t===`json`?`json`:[`txt`,`md`,`csv`].includes(t||``)?`text`:`binary`}generateId(e){return e.replace(/[^a-zA-Z0-9]/g,`_`)}getAsset(e){return this.cache.get(e)}clearCache(){this.cache.clear()}removeAsset(e){this.cache.delete(e)}async reloadAsset(e){return this.cache.delete(e),this.load(e)}async reloadAll(){let e=Array.from(this.cache.keys());this.cache.clear(),await Promise.all(e.map(e=>this.load(e).catch(t=>{console.warn(`Failed to reload asset ${e}:`,t)})))}list(){return Array.from(this.cache.values())}},rd=`modulepreload`,id=function(e){return`/`+e},ad={},od=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=id(t,n),t=s(t),t in ad)return;ad[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:rd,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},sd=class{constructor(){this.cache=new Map,this.loadingPromises=new Map,this.cdnBaseUrl=`https://esm.sh`}async load(e,t=`latest`){let n=`${e}@${t}`;if(this.cache.has(n))return this.cache.get(n);if(this.loadingPromises.has(n))return this.loadingPromises.get(n);let r=this.loadPackage(n,e,t);this.loadingPromises.set(n,r);try{let e=await r;return this.cache.set(n,e),e}catch(e){throw this.loadingPromises.delete(n),e}}async loadPackage(e,t,n){let r=n===`latest`?``:`@${n}`,i=`${this.cdnBaseUrl}/${t}${r}`;try{let e=await od(()=>import(i),[]);return e.default&&typeof e.default==`object`||e.default!==void 0?e.default:e}catch(t){throw Error(`Failed to load package ${e}: ${t.message||`Unknown error`}\nURL: ${i}`)}}async search(e,t=20){try{let n=`https://registry.npmjs.org/-/v1/search?text=${encodeURIComponent(e)}&size=${t}`,r=await fetch(n,{method:`GET`,headers:{Accept:`application/json`}});if(!r.ok){if(r.status===0||r.status===403||r.status===404)return console.warn(`NPM registry search may be blocked by CORS. Using fallback.`),[];throw Error(`Search failed: ${r.statusText}`)}return(await r.json()).objects?.map(e=>({name:e.package.name,version:e.package.version,description:e.package.description,keywords:e.package.keywords||[],author:e.package.author,homepage:e.package.links?.homepage,repository:e.package.links?.repository?{url:e.package.links.repository}:void 0}))||[]}catch(e){if(e.message?.includes(`CORS`)||e.message?.includes(`Failed to fetch`))return console.warn(`NPM registry search unavailable:`,e.message),[];throw Error(`Failed to search packages: ${e.message||`Unknown error`}`)}}async getPackageInfo(e){try{let t=`https://registry.npmjs.org/${encodeURIComponent(e)}`,n=await fetch(t);if(!n.ok){if(n.status===404)return null;throw Error(`Failed to fetch package info: ${n.statusText}`)}let r=await n.json(),i=r[`dist-tags`]?.latest||Object.keys(r.versions).pop(),a=r.versions[i];return{name:r.name,version:i,description:a.description,keywords:a.keywords||[],author:a.author,homepage:r.homepage||a.homepage,repository:a.repository}}catch(e){throw Error(`Failed to get package info: ${e.message||`Unknown error`}`)}}clearCache(){this.cache.clear(),this.loadingPromises.clear()}removeFromCache(e,t){if(t){let n=`${e}@${t}`;this.cache.delete(n),this.loadingPromises.delete(n)}else for(let t of this.cache.keys())t.startsWith(`${e}@`)&&(this.cache.delete(t),this.loadingPromises.delete(t))}getCachedPackages(){return Array.from(this.cache.keys())}},cd=class{constructor(e){this.config=e}setFileSystemFunctions(e,t){this.fileReadFn=e,this.fileExistsFn=t}async resolve(e){if(e.startsWith(`cascade.`))return this.resolveStdlib(e);if(e.startsWith(`local.`))return this.resolveEmbedded(e);for(let t of this.config.projectPackages)if(e.startsWith(`${t.alias}.`))return this.resolveProject(e,t);return this.config.embeddedModules.has(e)?this.resolveEmbedded(e):null}resolveStdlib(e){return Pe(e)?{source:{type:`stdlib`,module:e},code:``,displayPath:`<cascade>/${e.split(`.`).slice(1).join(`/`)}.ts`,editable:!1}:null}resolveEmbedded(e){let t=this.config.embeddedModules.get(e);return t?{source:{type:`embedded`,module:e,code:t.code,history:t.history||[]},code:t.code,displayPath:`<embedded>`,editable:!0}:null}async resolveProject(e,t){let n=e.replace(`${t.alias}.`,``).split(`.`),r=`${t.path}/${n.join(`/`)}.ts`,i=this.config.externalModules.get(e),a=null,o=`synced`;if(this.fileReadFn&&this.fileExistsFn){let e=this.resolvePath(r);await this.fileExistsFn(e)?(a=await this.fileReadFn(e),a!==null&&i&&i.cachedCode!==a&&(o=`modified-external`)):(o=`missing`,a=i?.cachedCode||null)}else i&&(a=i.cachedCode);return a===null?null:{source:{type:`project`,module:e,file:r,cachedCode:a,lastSync:new Date().toISOString(),status:o},code:a,displayPath:r,editable:!0}}resolvePath(e){return this.config.basePath?e.startsWith(`./`)?`${this.config.basePath}/${e.slice(2)}`:e.startsWith(`/`)?e:`${this.config.basePath}/${e}`:e}getSourceType(e){if(e.startsWith(`cascade.`))return`stdlib`;if(e.startsWith(`local.`))return`embedded`;for(let t of this.config.projectPackages)if(e.startsWith(`${t.alias}.`))return`project`;return this.config.embeddedModules.has(e)?`embedded`:null}createEmbeddedModule(e,t,n=`user`){let r=new Date().toISOString(),i={code:t,history:[{code:t,timestamp:r,author:n}],created:r,modified:r};return this.config.embeddedModules.set(e,i),{modulePath:e,module:i}}duplicateToEmbedded(e,t){let n=this.resolveStdlib(e);if(!n)return null;let r=e.split(`.`).pop()||`Custom`,i=t||r,a=`local.${i}`,o=1;for(;this.config.embeddedModules.has(a);)a=`local.${i}${o}`,o++;let s=new Date().toISOString(),c={code:n.code,timestamp:s,author:`user`},l={code:n.code,history:[c],created:s,modified:s};return this.config.embeddedModules.set(a,l),{modulePath:a,module:l}}async extractToProject(e,t,n){let r=this.config.embeddedModules.get(e);if(!r)return null;let i=`${t.path}/${n}.ts`,a=`${t.alias}.${n.replace(/\//g,`.`)}`,o={file:i,cachedCode:r.code,lastSync:new Date().toISOString()};return this.config.externalModules.set(a,o),{modulePath:a,filePath:i}}updateEmbeddedCode(e,t,n=`user`,r){let i=this.config.embeddedModules.get(e);if(!i)return!1;let a=new Date().toISOString(),o={code:t,timestamp:a,author:n,prompt:r};return i.history.push(o),i.code=t,i.modified=a,!0}restoreVersion(e,t){let n=this.config.embeddedModules.get(e);if(!n||t<0||t>=n.history.length)return!1;let r=n.history[t];return n.code=r.code,n.modified=new Date().toISOString(),n.history.push({code:r.code,timestamp:n.modified,author:`user`}),!0}getProjectPackages(){return[...this.config.projectPackages]}addProjectPackage(e){let t=this.config.projectPackages.find(t=>t.alias===e.alias);t?t.path=e.path:this.config.projectPackages.push(e)}removeProjectPackage(e){let t=this.config.projectPackages.findIndex(t=>t.alias===e);return t>=0&&(this.config.projectPackages.splice(t,1),!0)}async syncExternalModule(e){let t=this.config.externalModules.get(e);if(!t||!this.fileReadFn||!this.fileExistsFn)return`missing`;let n=this.resolvePath(t.file);if(!await this.fileExistsFn(n))return`missing`;let r=await this.fileReadFn(n);return r===null?`missing`:(t.cachedCode=r,t.lastSync=new Date().toISOString(),`synced`)}exportConfig(){return{projectPackages:[...this.config.projectPackages],embeddedModules:Object.fromEntries(this.config.embeddedModules),externalModules:Object.fromEntries(this.config.externalModules)}}importConfig(e){e.projectPackages&&(this.config.projectPackages=[...e.projectPackages]),e.embeddedModules&&(this.config.embeddedModules=new Map(Object.entries(e.embeddedModules))),e.externalModules&&(this.config.externalModules=new Map(Object.entries(e.externalModules)))}};function ld(e){return new cd({projectPackages:[],embeddedModules:new Map,externalModules:new Map,basePath:e})}var ud=class{static detectCycles(e){let t=[],n=new Set,r=new Set,i=[],a=o=>{if(r.has(o)){let e=i.indexOf(o);return e!==-1&&t.push([...i.slice(e),o]),!0}if(n.has(o))return!1;n.add(o),r.add(o),i.push(o);let s=e.getNode(o);if(s)for(let e of s.outputs)for(let t of e.connections)a(t.to.nodeId);return r.delete(o),i.pop(),!1},o=e.nodes;for(let e of o)n.has(e.id)||a(e.id);return t}static wouldCreateCycle(e,t,n){if(t===n)return!0;let r=new Set,i=(t,n)=>{if(t===n)return!0;if(r.has(t))return!1;r.add(t);let a=e.getNode(t);if(!a)return!1;for(let e of a.outputs)for(let t of e.connections)if(i(t.to.nodeId,n))return!0;return!1};return i(n,t)}static topologicalSort(e){let t=this.detectCycles(e);if(t.length>0)throw Error(`Graph contains cycles: ${t.map(e=>e.join(` -> `)).join(`, `)}`);let n=[],r=new Set,i=new Set,a=t=>{if(i.has(t))throw Error(`Cycle detected involving node ${t}`);if(r.has(t))return;i.add(t);let o=e.getNode(t);if(o)for(let e of o.inputs)for(let t of e.connections)a(t.from.nodeId);i.delete(t),r.add(t),n.push(t)},o=e.nodes;for(let e of o)r.has(e.id)||a(e.id);return n}static validateConnection(e,t,n,r,i){let a=e.getNode(t),o=e.getNode(n);if(!a||!o)return{type:`invalid_connection`,message:`Invalid connection: node not found`,nodeIds:[t,n]};let s=a.outputs.find(e=>e.id===r),c=o.inputs.find(e=>e.id===i);return!s||!c?{type:`invalid_connection`,message:`Invalid connection: port not found`,nodeIds:[t,n]}:s.portType===c.portType?this.wouldCreateCycle(e,t,n)?{type:`cycle`,message:`Connection would create a cycle: ${t} -> ${n}`,nodeIds:[t,n]}:null:{type:`invalid_connection`,message:`Port type mismatch: cannot connect ${s.portType} to ${c.portType}`,nodeIds:[t,n]}}static validateGraph(e){let t=[],n=[],r=this.detectCycles(e);r.length>0&&r.forEach(e=>{t.push({type:`cycle`,message:`Cycle detected: ${e.join(` -> `)}`,nodeIds:e})});for(let n of e.connections){let r=e.getNode(n.from.nodeId),i=e.getNode(n.to.nodeId);if(!r||!i){t.push({type:`invalid_connection`,message:`Connection references non-existent node`,connectionId:n.id,nodeIds:[n.from.nodeId,n.to.nodeId]});continue}let a=r.outputs.find(e=>e.id===n.from.portId),o=i.inputs.find(e=>e.id===n.to.portId);if(!a||!o){t.push({type:`invalid_connection`,message:`Connection references non-existent port`,connectionId:n.id,nodeIds:[n.from.nodeId,n.to.nodeId]});continue}a.portType!==o.portType&&t.push({type:`invalid_connection`,message:`Port type mismatch in connection`,connectionId:n.id,nodeIds:[n.from.nodeId,n.to.nodeId]})}let i=new Set;for(let t of e.connections)i.add(t.from.nodeId),i.add(t.to.nodeId);let a=e.nodes,o=a.filter(e=>{let t=!i.has(e.id),n=e.inputs.every(e=>e.connections.length===0);return t&&!n});return o.length>0&&n.push({type:`orphaned_node`,message:`Found ${o.length} orphaned node(s) with no connections`,nodeIds:o.map(e=>e.id)}),a.filter(e=>e.inputs.every(e=>e.connections.length===0)).length===0&&a.length>0&&n.push({type:`invalid_entry_point`,message:`No entry points found (all nodes have input connections)`}),{valid:t.length===0,errors:t,warnings:n}}},dd=new Map;async function fd(e){let t=typeof document<`u`?URL.createObjectURL(new Blob([e],{type:`text/javascript`})):`data:text/javascript;base64,${Buffer.from(e,`utf-8`).toString(`base64`)}`;try{let e=await od(()=>import(t),[]);if(typeof e.execute!=`function`)throw Error(`node module has no execute export`);return{execute:e.execute,...e.definition===void 0?{}:{definition:e.definition}}}finally{t.startsWith(`blob:`)&&URL.revokeObjectURL(t)}}function pd(e){let t=e.replace(/^project\./,``),n=`project:${t}`,r=dd.get(n);return r||(r=fetch(`/api/nodes/${encodeURIComponent(t)}/compiled`).then(async e=>{if(!e.ok)throw Error(await e.text());return fd(await e.text())}),dd.set(n,r)),r}function md(e){let t=`embedded:${gd(e)}`,n=dd.get(t);return n||(n=fetch(`/api/nodes/compile-embedded`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({code:e})}).then(async e=>{if(!e.ok)throw Error(await e.text());return fd(await e.text())}),dd.set(t,n)),n}function hd(e){dd.delete(`project:${e}`)}function gd(e){let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)|0;return t.toString(36)}var _d=[`poly`,`bezier`,`mesh`,`packed`],vd=new Set([`f32`,`f64`,`i32`,`u8`]),yd=/^[A-Za-z_][A-Za-z0-9_]*$/,bd=new Set([`__proto__`,`prototype`,`constructor`]);function xd(e,t){throw TypeError(`geometry/${e}: ${t}`)}function Sd(){return{vertexPoints:new Int32Array,offsets:Int32Array.of(0),kinds:new Uint8Array,closed:new Uint8Array}}function Cd(e){return e===`f64`?Float64Array:e===`f32`?Float32Array:e===`i32`?Int32Array:Uint8Array}function wd(e,t){return Number.isFinite(t)?e===`f64`||e===`f32`?!0:Number.isInteger(t)?e===`u8`?t>=0&&t<=255:t>=-2147483648&&t<=2147483647:!1:!1}function Td(e,t){return(!Number.isSafeInteger(t)||t<0)&&xd(`attribute-length`,`attribute array length must be a non-negative safe integer`),e===`f64`?new Float64Array(t):e===`f32`?new Float32Array(t):e===`i32`?new Int32Array(t):new Uint8Array(t)}function Ed(e,t){let n=Td(e,t.length);for(let r=0;r<t.length;r+=1){let i=t[r];wd(e,i)||xd(`attribute-value`,`${String(i)} cannot be represented as ${e}`),n[r]=i,Number.isFinite(n[r])||xd(`attribute-value`,`${String(i)} overflows ${e}`)}return n}function Dd(e){return e.storage===`string`}function Od(e,t){(!yd.test(e)||bd.has(e))&&xd(`invalid-name`,`${t}.${e} is not a valid attribute name`)}function kd(e,t,n){for(let[r,i]of Object.entries(e)){if(Od(r,n),Dd(i)){i.data instanceof Int32Array||xd(`attribute-storage`,`${n}.${r} string indices must be Int32Array`),i.size!==1&&xd(`string-size`,`${n}.${r} string attributes have size 1`),i.data.length!==t&&xd(`attribute-length`,`${n}.${r} has ${i.data.length} entries for ${t} elements`);for(let e of i.data)(e<-1||e>=i.table.length)&&xd(`string-index`,`${n}.${r} references table entry ${e}`);(!Array.isArray(i.table)||i.table.some(e=>typeof e!=`string`))&&xd(`string-table`,`${n}.${r} needs a string table`);continue}(!Number.isInteger(i.size)||i.size<1)&&xd(`attribute-size`,`${n}.${r} needs a size of at least 1`),vd.has(i.storage)||xd(`attribute-storage`,`${n}.${r} has an unknown storage ${String(i.storage)}`),i.data instanceof Cd(i.storage)||xd(`attribute-storage`,`${n}.${r} declares ${i.storage} but uses ${i.data?.constructor?.name??`unknown storage`}`),i.data.length!==i.size*t&&xd(`attribute-length`,`${n}.${r} has ${i.data.length} values for ${t} elements of size ${i.size}`);for(let e of i.data)Number.isFinite(e)||xd(`non-finite`,`${n}.${r} contains ${String(e)}`)}}function Ad(e,t,n){for(let[r,i]of Object.entries(e)){Od(r,n),i.length!==t&&xd(`group-length`,`${n}.${r} covers ${i.length} of ${t} elements`);for(let e of i)e!==0&&e!==1&&xd(`group-mask`,`${n}.${r} contains ${e}; masks contain only 0 or 1`)}}function jd(e){let t=e.pointCount;(!Number.isSafeInteger(t)||t<0)&&xd(`point-count`,`pointCount must be a non-negative safe integer`);let n=e.topology??Sd();(!(n.vertexPoints instanceof Int32Array)||!(n.offsets instanceof Int32Array)||!(n.kinds instanceof Uint8Array)||!(n.closed instanceof Uint8Array))&&xd(`topology-storage`,`topology uses Int32Array indices and Uint8Array flags`);let r=n.offsets.length-1;r<0&&xd(`offsets`,`topology.offsets needs primitiveCount + 1 entries`),n.offsets[0]!==0&&xd(`offsets`,`topology.offsets starts at 0`);for(let e=1;e<=r;e+=1)n.offsets[e]<n.offsets[e-1]&&xd(`offsets`,`topology.offsets must not decrease`);let i=n.offsets[r];i!==n.vertexPoints.length&&xd(`offsets`,`topology.offsets ends at ${i} for ${n.vertexPoints.length} vertices`),(n.kinds.length!==r||n.closed.length!==r)&&xd(`topology-length`,`topology.kinds and topology.closed need ${r} entries`);for(let e of n.vertexPoints)(e<0||e>=t)&&xd(`vertex-point`,`vertex references point ${e}`);for(let e of n.kinds)e>=_d.length&&xd(`primitive-kind`,`unknown primitive kind ${e}`);for(let e of n.closed)e!==0&&e!==1&&xd(`closed-mask`,`topology.closed contains ${e}; flags contain only 0 or 1`);let a=_d.indexOf(`bezier`);for(let e=0;e<r;e+=1){if(n.kinds[e]!==a)continue;let t=n.offsets[e+1]-n.offsets[e],r=n.closed[e]===1;(t<(r?3:4)||(t-+!r)%3!=0)&&xd(`bezier-arity`,`primitive ${e} has ${t} vertices, and a ${r?`closed`:`open`} bezier needs ${r?`3n`:`3n + 1`}`)}let o=e.point,s=o.P;s===void 0&&xd(`missing-position`,`point.P is required on every geometry`),Dd(s)&&xd(`position-storage`,`point.P must be a numeric attribute`),s.size!==2&&s.size!==3&&xd(`position-size`,`point.P must have a size of 2 or 3`),kd(o,t,`point`);let c=e.vertex??{};kd(c,i,`vertex`);let l=e.primitive??{};kd(l,r,`primitive`);let u=e.pointGroups??{};Ad(u,t,`pointGroups`);let d=e.primitiveGroups??{};Ad(d,r,`primitiveGroups`);let f=e.detail??{};for(let[e,t]of Object.entries(f))Od(e,`detail`),typeof t==`number`?Number.isFinite(t)||xd(`non-finite`,`detail.${e} contains ${String(t)}`):typeof t!=`string`&&(!Array.isArray(t)||t.some(e=>!Number.isFinite(e)))&&xd(`detail-value`,`detail.${e} must be a finite number, string, or finite number array`);return Md({kind:`geometry`,pointCount:t,vertexCount:i,primitiveCount:r,topology:n,point:o,vertex:c,primitive:l,detail:f,pointGroups:u,primitiveGroups:d})}function Md(e){for(let t of[`point`,`vertex`,`primitive`]){let n=e[t];for(let e of Object.values(n))Dd(e)&&Object.freeze(e.table),Object.freeze(e);Object.freeze(n)}Object.freeze(e.topology);for(let t of Object.values(e.detail))Array.isArray(t)&&Object.freeze(t);return Object.freeze(e.detail),Object.freeze(e.pointGroups),Object.freeze(e.primitiveGroups),Object.freeze(e)}function Nd(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Pd(e){return Array.isArray(e)&&e.every(e=>typeof e==`number`&&Number.isFinite(e))}function Fd(e,t){if(e===void 0)return{};let n={};for(let[r,i]of Object.entries(e)){if(Nd(i)||xd(`attribute-shape`,`${t}.${r} must be an object`),i.storage===`string`){let e=i.table;(!Array.isArray(e)||e.some(e=>typeof e!=`string`))&&xd(`string-table`,`${t}.${r} needs a string table`),Hd(i.data)||xd(`attribute-data`,`${t}.${r} needs 32-bit integer indices`),n[r]={storage:`string`,size:1,table:[...e],data:Int32Array.from(i.data)};continue}(typeof i.storage!=`string`||!vd.has(i.storage))&&xd(`attribute-storage`,`${t}.${r} has an unknown storage ${String(i.storage)}`),Pd(i.data)||xd(`attribute-data`,`${t}.${r} needs finite numeric data`);let e=i.size;(typeof e!=`number`||!Number.isInteger(e)||e<1)&&xd(`attribute-size`,`${t}.${r} needs a size of at least 1`),n[r]={storage:i.storage,size:e,data:Ed(i.storage,i.data)}}return n}function Id(e,t,n){if(e===void 0)return{};let r={};for(let[i,a]of Object.entries(e)){Pd(a)||xd(`group-indices`,`${n}.${i} must be a list of indices`);let e=new Uint8Array(t);for(let r of a)(!Number.isInteger(r)||r<0||r>=t)&&xd(`group-indices`,`${n}.${i} references element ${r}`),e[r]=1;r[i]=e}return r}function Ld(e){(!Nd(e)||e.kind!==`geometry`)&&xd(`not-geometry`,`a geometry literal needs kind: 'geometry'`);let t=e.pointCount;(!Number.isSafeInteger(t)||t<0)&&xd(`point-count`,`pointCount must be a non-negative safe integer`);let n=e.topology,r=Sd();if(n!==void 0){Nd(n)||xd(`topology-shape`,`topology must be an object`),(!Hd(n.vertexPoints)||!Hd(n.offsets))&&xd(`topology-shape`,`topology needs vertexPoints and offsets`);let e=n.offsets.length-1;e<0&&xd(`offsets`,`topology.offsets needs primitiveCount + 1 entries`);let t=n.kinds,i=n.closed;t!==void 0&&!Ud(t)&&xd(`topology-shape`,`topology.kinds must be numeric`),i!==void 0&&(!Ud(i)||i.some(e=>e!==0&&e!==1))&&xd(`topology-shape`,`topology.closed must be numeric`),r={vertexPoints:Int32Array.from(n.vertexPoints),offsets:Int32Array.from(n.offsets),kinds:t===void 0?new Uint8Array(e):Uint8Array.from(t),closed:i===void 0?new Uint8Array(e):Uint8Array.from(i)}}let i={};for(let[t,n]of Object.entries(e.detail??{}))typeof n==`number`||typeof n==`string`?i[t]=n:Pd(n)?i[t]=[...n]:xd(`detail-value`,`detail.${t} must be a number, string, or number array`);return jd({pointCount:t,point:Fd(e.point,`point`),vertex:Fd(e.vertex,`vertex`),primitive:Fd(e.primitive,`primitive`),detail:i,topology:r,pointGroups:Id(e.pointGroups,t,`pointGroups`),primitiveGroups:Id(e.primitiveGroups,r.offsets.length-1,`primitiveGroups`)})}function Rd(e){try{return Ld(e),!0}catch{return!1}}function zd(e){if(!Nd(e)||e.kind!==`geometry-file`||typeof e.path!=`string`||e.path.length===0||e.format!==`npy`&&e.format!==`json`||e.format===`npy`&&e.attribute===void 0)return!1;if(e.attribute!==void 0){let t=e.attribute;if(!Nd(t)||t.level!==`point`&&t.level!==`vertex`&&t.level!==`primitive`||typeof t.name!=`string`||!yd.test(t.name)||bd.has(t.name)||typeof t.size!=`number`||!Number.isInteger(t.size)||t.size<1||typeof t.storage!=`string`||!vd.has(t.storage))return!1}for(let t of[`pointCount`,`primitiveCount`]){let n=e[t];if(n!==void 0&&(typeof n!=`number`||!Number.isSafeInteger(n)||n<0))return!1}return!0}function Bd(e){return Rd(e)||zd(e)}function Vd(e){return Pd(e)&&e.every(Number.isSafeInteger)}function Hd(e){return Vd(e)&&e.every(e=>e>=-2147483648&&e<=2147483647)}function Ud(e){return Vd(e)&&e.every(e=>e>=0&&e<=255)}var Wd=`float.int.bool.string.vec2.vec3.vec4.vec2i.vec3i.vec4i.mat2.mat3.mat4.image.texture.geometry.points.lines.polyline.mesh.rects.color.asset.array.object.any`.split(`.`),Gd=/^[A-Za-z][A-Za-z0-9_]*$/,Kd=/^[a-z][a-z0-9-]*(?:\.[A-Za-z][A-Za-z0-9_]*)+$/,qd=new Set([`__proto__`,`prototype`,`constructor`]),Jd=new Set(Wd),Yd=new Set([`number`,`slider`,`range`,`int`,`boolean`,`text`,`textarea`,`select`,`vector`,`matrix`,`color`,`image`,`asset`]),Xd={portable:[`assets`,`media`],browser:[`assets`,`media`,`gpu`],server:[`files`,`assets`,`media`,`python`,`shell`]},Zd=e=>new Set(e.split(` `)),Qd=Zd(`apiVersion runsOn container capabilities label description icon inputs outputs props`),$d=Zd(`kind type default description variadic min max step accept control options`),ef=Zd(`kind type description`),tf=Zd(`type default label description min max step accept control options expression`);function nf(e,t,n){return{phase:`definition`,code:`definition/${e}`,message:t,path:n}}function rf(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function af(e){return typeof e==`string`&&(Jd.has(e)||Kd.test(e))}function of(e){return e===null||typeof e==`string`||typeof e==`boolean`?!0:typeof e==`number`?Number.isFinite(e):Array.isArray(e)?e.every(of):rf(e)&&Object.values(e).every(of)}function sf(e,t,n){return Object.keys(e).filter(e=>!t.has(e)).map(e=>nf(`unknown-field`,`${n}.${e} is not allowed`,`${n}.${e}`))}function cf(e,t){if(!of(t))return!1;if(e===`geometry`)return Bd(t);if(e===`float`||e===`int`)return typeof t==`number`;if(e===`bool`)return typeof t==`boolean`;if(e===`string`)return typeof t==`string`;let n={vec2:2,vec3:3,vec4:4,vec2i:2,vec3i:3,vec4i:4,mat2:4,mat3:9,mat4:16,color:4}[e];return n===void 0||Array.isArray(t)&&t.length===n&&t.every(t=>e.endsWith(`i`)?Number.isInteger(t):typeof t==`number`)}function lf(e){if(!rf(e))return[nf(`not-object`,`Definition must be an object`)];let t=sf(e,Qd,`definition`),n=(e,n,r)=>t.push(nf(e,n,r)),r=e.runsOn;e.apiVersion!==1&&n(`api-version`,`apiVersion must be 1`,`apiVersion`),Object.prototype.hasOwnProperty.call(Xd,String(r))||n(`environment`,`runsOn must be portable, browser, or server`,`runsOn`),e.container!==void 0&&e.container!==`subnet`&&n(`invalid-container`,`container must be subnet`,`container`);let i=Xd[r]??[];e.capabilities!==void 0&&!Array.isArray(e.capabilities)&&n(`invalid-capabilities`,`capabilities must be an array`,`capabilities`);let a=new Set;for(let[t,o]of(Array.isArray(e.capabilities)?e.capabilities:[]).entries()){let e=`capabilities.${t}`;!a.has(o)&&!i.includes(o)&&n(`capability-not-allowed`,`${String(o)} is not available on ${String(r)}`,e),a.has(o)&&n(`duplicate-capability`,`${String(o)} is duplicated`,e),a.add(o)}let o=new Map,s=new Map;for(let i of[`inputs`,`outputs`,`props`]){let a=e[i];if(a!==void 0){if(!rf(a)){n(`invalid-section`,`${i} must be an object`,i);continue}for(let[e,c]of Object.entries(a)){let a=`${i}.${e}`;Gd.test(e)||n(`invalid-name`,`${e} is not a valid identifier`,a),qd.has(e)&&n(`reserved-name`,`${e} is reserved`,a);let l=i===`outputs`?s:o,u=l.get(e);if(u?n(`name-collision`,`${e} is declared in ${u} and ${i}`,a):l.set(e,i),!rf(c)){n(`invalid-entry`,`${a} must be an object`,a);continue}let d=i===`props`?tf:i===`outputs`?ef:$d;if(i!==`props`&&c.kind!==`data`&&c.kind!==`trigger`){n(`invalid-kind`,`${a}.kind must be data or trigger`,`${a}.kind`),t.push(...sf(c,d,a));continue}if(i!==`props`&&c.kind===`trigger`){Object.keys(c).some(e=>e!==`kind`&&e!==`description`)&&n(`trigger-extra`,`Trigger ports allow only kind and description`,a);continue}t.push(...sf(c,d,a)),`control`in c&&(typeof c.control!=`string`||!Yd.has(c.control))&&n(`invalid-control`,`${String(c.control)} is not a Cascade control`,`${a}.control`),`options`in c&&c.control!==`select`&&n(`options-without-select`,`options require the select control`,`${a}.options`);let f=c.type;if(!af(f)){n(`invalid-type`,`${String(f)} is not a Cascade type`,`${a}.type`);continue}f===`texture`&&r!==`browser`&&n(`texture-not-portable`,`texture is browser-only`,`${a}.type`),f===`texture`&&`default`in c&&n(`texture-default`,`texture cannot have a default`,`${a}.default`),i===`props`&&!(`default`in c)&&n(`missing-default`,`Props require defaults`,`${a}.default`),`default`in c&&!of(c.default)?n(`invalid-default`,`Default must be finite JSON`,`${a}.default`):`default`in c&&!cf(f,c.default)&&n(`default-type`,`Default does not match ${f}`,`${a}.default`),f===`int`&&`default`in c&&(!Number.isFinite(c.default)||!Number.isInteger(c.default))&&n(`non-integer`,`Integer defaults must be finite integers`,`${a}.default`),`step`in c&&(typeof c.step!=`number`||!Number.isFinite(c.step)||c.step<=0)&&n(`invalid-step`,`step must be greater than zero`,`${a}.step`),i===`props`&&`expression`in c&&(typeof c.expression!=`string`||c.expression.length===0)&&n(`invalid-expression`,`expression must be a non-empty string`,`${a}.expression`);for(let e of[`min`,`max`])e in c&&(typeof c[e]!=`number`||!Number.isFinite(c[e]))&&n(`invalid-${e}`,`${e} must be a finite number`,`${a}.${e}`);typeof c.min==`number`&&typeof c.max==`number`&&c.min>c.max&&n(`invalid-range`,`min must not exceed max`,a)}}}return t}var uf={report:()=>{}};function df(e){return{...e.label?{label:e.label}:{},...e.expression?{defaultExpression:e.expression}:{},...e.min===void 0?{}:{min:e.min},...e.max===void 0?{}:{max:e.max},...e.step===void 0?{}:{step:e.step},...e.options?{choices:e.options.map(e=>({value:e,label:String(e)}))}:{},promotable:!1}}function ff(e){return e&&typeof e.ensure==`function`&&typeof e.forNode==`function`?e:null}function pf(e,t,n){let r=t.definition,i=new Map,a=0;for(let[t,n]of Object.entries(r.inputs??{})){if(n.kind===`trigger`){let r=e.in(t,void 0,{type:`any`,...n.description?{description:n.description}:{}});r.portType=`trigger`,r.onTrigger=async n=>{let r=a++;i.set(t,{id:`${e.id}:${r}`,runId:`studio:${e.id}:${r}`,sequence:r,...n===void 0?{}:{payload:n},source:{kind:`external`}}),e.markDirty(),await e.execute()};continue}if(n.variadic){e.setVariadic(void 0,{type:n.type});continue}e.in(t,n.default,{type:n.type,...n.min===void 0?{}:{min:n.min},...n.max===void 0?{}:{max:n.max},...n.step===void 0?{}:{step:n.step},...n.options?{choices:n.options.map(e=>({value:e,label:String(e)}))}:{},...n.description?{description:n.description}:{}})}for(let[t,n]of Object.entries(r.outputs??{}))e.out(t,n.kind===`trigger`?`trigger`:`param`,n.kind===`data`?{type:n.type,description:n.description}:{description:n.description});for(let[t,n]of Object.entries(r.props??{})){let r=e.param(t,n.default,{type:n.type,...df(n)});r.documentField=`props`}let o=Object.values(r.inputs??{}).some(e=>e.kind===`trigger`),s;return async()=>{if(o&&i.size===0)return;for(let e of r.capabilities??[])if(!n[e])throw Error(`${t.moduleId} requires the Studio ${e} capability`);let a=await(s??=t.loadExecute(`browser`)),c={};for(let[t,n]of Object.entries(r.inputs??{}))c[t]=n.kind===`trigger`?i.get(t):n.variadic?e.getVariadicInputs().map(e=>e.value??void 0):e.inputs.find(e=>e.name===t)?.value;i.clear();let l=Object.fromEntries(Object.entries(r.outputs??{}).map(([n,r])=>{let i=e.outputs.find(e=>e.name===n);if(!i)throw Error(`Missing output ${t.moduleId}.${n}`);return[n,r.kind===`trigger`?{trigger:e=>i.trigger(e)}:{set:e=>i.setValue(e)}]})),u=n,d=(r.capabilities??[]).includes(`gpu`)?ff(n.gpu):null;d&&(await d.ensure(),u={...n,gpu:d.forNode(e.id)}),await a({nodeId:e.id,inputs:c,outputs:l,props:Object.fromEntries(e.parameters.map(e=>[e.name,e.value])),capabilities:u,signal:new AbortController().signal,progress:uf})}}function mf(e,t,n){e.setFunction(pf(e,t,n))}function hf(e,t={}){let n=new Map;for(let r of e){let e=r.moduleId.split(`.`);if(e.length!==3||e[0]!==`cascade`)throw Error(`Studio built-ins require cascade.<library>.<node>: ${r.moduleId}`);let i=e[1],a=Le(r.moduleId),o=n.get(i)??{};o[a]=class extends Ju{constructor(e,t){super(e,a,t)}setup(){mf(this,r,t)}},n.set(i,o),Ne({type:r.moduleId,name:r.definition.label??a,icon:r.definition.icon,description:r.definition.description,category:i})}for(let[e,t]of n)Ae(e,t)}function gf(e){return`/api/assets/${e.replace(/^\.\//,``).replace(/^assets\//,``).split(`/`).map(encodeURIComponent).join(`/`)}`}var _f={async read(e,{signal:t}){let n=await fetch(gf(e.path),{signal:t});if(!n.ok)throw Error(`Could not read asset ${e.path} (${n.status})`);return new Uint8Array(await n.arrayBuffer())},async write(e,t,{signal:n}){let r=t.suggestedName?.trim()||`asset.bin`,i=new FormData;i.append(`file`,new Blob([new Uint8Array(e)],{type:t.mediaType}),r);let a=await fetch(`/api/assets`,{method:`POST`,body:i,signal:n});if(!a.ok)throw Error(`Could not write asset ${r} (${a.status})`);let o=await a.json();if(!o.path)throw Error(`Asset upload returned no path for ${r}`);return{path:o.path,...t.mediaType?{mediaType:t.mediaType}:{}}},async resolveUrl(e){return{value:gf(e.path),release:()=>{}}}},vf=`\0page`,yf=`The gpu capability was used before its device was ready — the host must await ensure() before a cook.`;function bf(){let e=globalThis.navigator?.gpu;if(!e)return;let t=null,n=null,r={},i=null,a=!1,o=new Map;function s(){for(let e of o.values())for(let t of e.values())t.destroy?.(t.value);o.clear()}async function c(){let o=await e.requestAdapter();if(!o)throw Error(`No WebGPU adapter is available — the browser reports WebGPU but the system offers no GPU to render on.`);let c=await o.requestDevice(),l=o.info;t=c,n={vendor:l?.vendor??``,architecture:l?.architecture??``,device:l?.device??``,description:l?.description??``},r=xf(c.limits??o.limits),c.lost.then(e=>{a||e?.reason===`destroyed`||(t=null,i=null,s(),console.warn(`The GPU device was lost (${e?.reason??`unknown`}) — ${e?.message||`no message given`}. A fresh device will be requested on the next cook.`))})}let l={get device(){if(!t)throw Error(yf);return t},get adapterInfo(){if(!n)throw Error(yf);return n},get limits(){return r},cache(e,t,n){return l.forNode(vf).cache(e,t,n)},async ensure(){if(a)throw Error(`The gpu capability has been disposed.`);t||(i??=c().catch(e=>{throw i=null,e}),await i)},forNode(e){return{get device(){if(!t)throw Error(yf);return t},get adapterInfo(){if(!n)throw Error(yf);return n},get limits(){return r},cache(n,r,i){if(!t)throw Error(yf);let a=o.get(e);a||(a=new Map,o.set(e,a));let s=a.get(n);if(s)return s.value;let c=r(t);return a.set(n,{value:c,destroy:i}),c}}},async dispose(){a=!0,s(),t?.destroy(),t=null,i=null}};return l}function xf(e){if(!e||typeof e!=`object`)return{};let t={};for(let n of Sf(e)){let r=e[n];typeof r==`number`&&(t[n]=r)}return t}function Sf(e){let t=new Set(Object.keys(e));for(let n=Object.getPrototypeOf(e);n&&n!==Object.prototype;n=Object.getPrototypeOf(n))for(let e of Object.getOwnPropertyNames(n))e!==`constructor`&&t.add(e);return[...t]}var Cf={assets:_f,...wf()};function wf(){let e=bf();return e?{gpu:e}:{}}function Tf(e){return typeof e==`object`&&!!e&&e.apiVersion===1}function Ef(e){let t=lf(e);return t.length?t.map(e=>`${e.code}: ${e.message}`).join(`
|
|
7
|
+
`):null}function Df(e,t=Cf){let n=e?.capabilities;return Array.isArray(n)?n.filter(e=>typeof e==`string`).filter(e=>!t[e]):[]}function Of(e,t,n,r=Cf){let i=n.then(n=>kf(e,t,n,r));return i.catch(()=>{}),(e,t)=>i.then(n=>n(e,t))}function kf(e,t,n,r=Cf){if(!Tf(n.definition))return(e,t)=>n.execute(e,t);let i=Ef(n.definition);if(i)throw Error(`${t} exports an invalid definition-v1 literal:\n${i}`);return pf(e,{kind:`definition-v1`,moduleId:t,definition:n.definition,loadExecute:async()=>n.execute},r)}var Af=class{constructor(e,t=50){this.graph=e,this.debounceMs=t,this.timer=null,this.activeRun=null,this.rerunRequested=!1,this.listeners=new Set,this.idleResolvers=new Set,this._status={phase:`idle`,total:0,completed:0,currentNode:null,startedAt:null,elapsed:0}}get status(){return this._status}get isRunning(){return this.activeRun!==null}subscribe(e){return this.listeners.add(e),e(this._status),()=>this.listeners.delete(e)}notifyNodeStateChange(){this.emit()}markStale(e){let t=new Set,n=e=>{if(!t.has(e.id)){t.add(e.id),e.cookState!==`stale`&&e.invalidateCook();for(let t of e.outputs)for(let e of t.connections){let t=this.graph.getNode(e.to.nodeId);t&&n(t)}}};n(e),this.graph.getNode(e.id)===e&&this.schedule()}markDownstreamStale(e){for(let t of e.outputs)for(let e of t.connections){let t=this.graph.getNode(e.to.nodeId);t&&this.markStale(t)}}schedule(){if(this.activeRun){this.rerunRequested=!0;return}this.timer&&clearTimeout(this.timer);let e=this.graph.nodes.filter(e=>e.cookState===`stale`||e.cookState===`queued`).length;this.setStatus({phase:`scheduled`,total:e,completed:0,currentNode:null,startedAt:null,elapsed:0}),this.timer=setTimeout(()=>{this.timer=null,this.flushScheduled()},this.debounceMs)}async flush(e){await this.flushInternal(e,!0)}async flushScheduled(){await this.flushInternal(void 0,!1)}async flushInternal(e,t){if(this.timer&&=(clearTimeout(this.timer),null),t&&this.prepareErrorRetry(e),this.activeRun){this.rerunRequested=!0,await this.activeRun;return}this.activeRun=this.run(e).finally(()=>{this.activeRun=null}),await this.activeRun}prepareErrorRetry(e){let t=e?this.collectDownstream(e):null;for(let e of this.graph.nodes)e.cookState===`error`&&(!t||t.has(e.id))&&e.invalidateCook()}async whenIdle(){!this.activeRun&&!this.timer||await new Promise(e=>this.idleResolvers.add(e))}dispose(){this.timer&&clearTimeout(this.timer),this.timer=null,this.listeners.clear();for(let e of this.idleResolvers)e();this.idleResolvers.clear()}async run(e){let t=e?this.collectDownstream(e):null;do{this.rerunRequested=!1;let e=this.graph.nodes.filter(e=>(e.cookState===`stale`||e.cookState===`queued`)&&(!t||t.has(e.id)));if(t=null,e.length===0)break;let n=new Set(e.map(e=>e.id)),r=this.graph.getTopologicalOrder().map(e=>this.graph.getNode(e)).filter(e=>!!e&&n.has(e.id)),i=new Set(r.map(e=>e.id));for(let t of e)i.has(t.id)||r.push(t);for(let e of r)e.setCookState(`queued`);let a=performance.now();this.setStatus({phase:`cooking`,total:r.length,completed:0,currentNode:null,startedAt:a,elapsed:0});let o=new Set,s=!1;for(let e of r){if(e.inputs.some(e=>e.connections.some(e=>n.has(e.from.nodeId)&&(o.has(e.from.nodeId)||this.graph.getNode(e.from.nodeId)?.cookState===`error`)))){e.setCookState(`stale`),o.add(e.id),this.setStatus({...this._status,completed:this._status.completed+1,currentNode:null,elapsed:performance.now()-a});continue}e.setCookState(`cooking`),this.setStatus({...this._status,currentNode:e,elapsed:performance.now()-a}),await e.execute(),e.cookState===`error`&&o.add(e.id),e.cookState===`stale`&&(o.add(e.id),s=!0),this.setStatus({...this._status,completed:this._status.completed+1,currentNode:null,elapsed:performance.now()-a})}s&&(this.rerunRequested=!0)}while(this.rerunRequested);this.setStatus({phase:`idle`,total:0,completed:0,currentNode:null,startedAt:null,elapsed:0});for(let e of this.idleResolvers)e();this.idleResolvers.clear()}collectDownstream(e){let t=new Set,n=e=>{if(!t.has(e.id)){t.add(e.id);for(let t of e.outputs)for(let e of t.connections){let t=this.graph.getNode(e.to.nodeId);t&&n(t)}}};return n(e),t}setStatus(e){this._status=Object.freeze(e),this.emit()}emit(){for(let e of this.listeners)e(this._status)}};function jf(e){let t=e.split(`_`);if(t.length<3)throw Error(`Invalid port ID format: ${e}`);let n=t[t.length-2],r=parseInt(t[t.length-1],10);if(isNaN(r))throw Error(`Invalid port index in port ID: ${e}`);return{elementId:t.slice(0,-2).join(`_`),portType:n,index:r}}function Mf(e,t,n){return`${e}_${t}_${n}`}var Nf=class e{get created(){return this.createdAt}get elements(){return this._elements}set elements(e){this._elements=e,this._elementMap.clear();for(let t of e)this._elementMap.set(t.id,t)}constructor(e,t,n){this._elements=[],this._elementMap=new Map,this.connections=[],this._connectionMap=new Map,this.connectionIdCounter=0,this.project={packages:[]},this.createdAt=new Date().toISOString(),this.cookingNodes=new Set,this.executionState=`idle`,this.cachedTopologicalOrder=null,this.assetManager=e||new nd,this.packageManager=t||new sd,this.moduleResolver=n||ld(),this.scheduler=new Af(this)}isAnnotation(e){return e.isAnnotation===!0}get nodes(){return this._elements.filter(e=>!this.isAnnotation(e))}set nodes(e){this._elements=[...this._elements.filter(e=>this.isAnnotation(e)),...e]}get annotations(){return this._elements.filter(e=>this.isAnnotation(e))}set annotations(e){this._elements=[...this._elements.filter(e=>!this.isAnnotation(e)),...e]}generateUniqueNodeId(e,t){let n=e.replace(/\s+/g,``),r=n.match(/^(.+?)(\d+)?$/),i=r?r[1]:n,a=1,o=`${i}${a}`;for(;this._elements.some(e=>e.id===o&&(!t||e.id!==t));)a++,o=`${i}${a}`;return o}getElement(e){return this._elementMap.get(e)||null}getNode(e){let t=this.getElement(e);return t&&!this.isAnnotation(t)?t:null}getAnnotation(e){let t=this.getElement(e);return t&&this.isAnnotation(t)?t:null}nodeByPath(e){if(!e.startsWith(`/`))return null;let t=e.slice(1).split(`/`).filter(e=>e.length>0);if(t.length===0)return null;let n=this.nodes.find(e=>!e.parent&&e.id===t[0])??null;for(let e=1;n&&e<t.length;e++){if(!n.isNetwork())return null;n=n.children().find(n=>n.id===t[e])??null}return n}addElement(e){this._elements.push(e),this._elementMap.set(e.id,e),this.invalidateTopologicalOrder()}reparentElement(e,t){if(t){if(!t.isNetwork()||t===e)return!1;for(let n=t;n;n=n.parent)if(n===e)return!1}if(e.parent===t)return!0;let n=e.parent;if(n){let t=n.removeChild;typeof t==`function`?t.call(n,e):(n._children=n.children().filter(t=>t!==e),e.parent=null)}if(t){let n=t.addChild;typeof n==`function`?n.call(t,e):(e.parent=t,t._children.push(e))}return this.invalidateTopologicalOrder(),!0}removeElement(e){let t=this._elementMap.get(e);if(!t)return;let n=[],r=new Set,i=e=>{r.has(e)||(r.add(e),e.children().forEach(i),n.push(e))};i(t);let a=new Set(n.map(e=>e.id));this.connections.filter(e=>a.has(e.from.nodeId)||a.has(e.to.nodeId)).forEach(e=>this.disconnect(e.id));let o=this._connectionsToRestore;Array.isArray(o)&&(this._connectionsToRestore=o.filter(e=>{let t=Array.isArray(e?.[0])?e[0][0]:void 0,n=Array.isArray(e?.[1])?e[1][0]:void 0;return!a.has(t)&&!a.has(n)})),this._elements=this._elements.filter(e=>!a.has(e.id));for(let e of n)this._elementMap.delete(e.id),this.cookingNodes.delete(e);for(let e of n){let t=e.parent;if(t){let n=t.removeChild;typeof n==`function`?n.call(t,e):e.parent=null}}this.invalidateTopologicalOrder();for(let e of n)e.onDestroy?.()}renameElement(e,t){let n=this._elementMap.get(e);if(!n||!t||e!==t&&this._elementMap.has(t))return!1;if(e===t)return!0;let r=n.renameId(t);this._elementMap.delete(e),this._elementMap.set(t,n);for(let n of this.connections)n.from.nodeId===e&&(n.from.nodeId=t),n.to.nodeId===e&&(n.to.nodeId=t),n.from.portId=r.get(n.from.portId)??n.from.portId,n.to.portId=r.get(n.to.portId)??n.to.portId;let i=this._connectionsToRestore;if(Array.isArray(i))for(let n of i)for(let r of Array.isArray(n)?n:[])Array.isArray(r)&&r[0]===e&&(r[0]=t);for(let n of this.annotations)Array.isArray(n.containedElements)&&(n.containedElements=n.containedElements.map(n=>n===e?t:n));return this.invalidateTopologicalOrder(),!0}addNode(e,t){let n=Ie(e).toLowerCase().replace(/\s+/g,`_`),r=this.generateUniqueNodeId(n),i=Pe(e),a;if(a=i?new i(r,this):new Ju(r,Le(e),this),a.modulePath=e,Fe(e))a.sourceType=`stdlib`;else if(e.startsWith(`local.`))a.sourceType=`embedded`;else{let t=this.moduleResolver.getSourceType(e);a.sourceType=t||`embedded`}return a.position=t,this.addElement(a),a}retargetModule(e,t,n,r){return this.retargetDefinition(e,t,n,r,{preserveParameters:!1}).ok}retargetDefinition(e,t,n,r,i={}){let a=()=>({kept:[],defaulted:[],dropped:[],retyped:[]}),o=this.getNode(e);if(!o)return{ok:!1,deferred:!1,...a(),error:`no node with id ${e}`};let s=i.preserveParameters!==!1;s&&o.beginParameterCarryOver(),o.modulePath=t,o.sourceType=n,n===`embedded`&&r!==void 0&&(o.code=r);let c=n===`project`?pd(t):md(r??o.code);return o.setFunction(Of(o,t,c)),c.catch(e=>{o.abandonParameterCarryOver(),console.warn(`Failed to compile `+t+`:`,e)}),o.markDirty(),s&&i.parameters?{ok:!0,deferred:!1,...o.applyParameterDeclarations(i.parameters)??a()}:{ok:!0,deferred:s,...a()}}getRetargetReport(e){return this.getNode(e)?.lastCarryOverReport??null}removeNode(e){this.removeElement(e)}validateConnection(e,t){let n,r;try{let i=jf(e.id),a=jf(t.id);n=i.elementId,r=a.elementId}catch(e){return{valid:!1,error:`Invalid port ID format: ${e}`}}let i=this.getElement(n),a=this.getElement(r);if(!i||!a)return{valid:!1,error:`Element not found`};if(!this.isAnnotation(i)&&!this.isAnnotation(a)){let i=ud.validateConnection(this,n,r,e.id,t.id);if(i)return{valid:!1,error:i.message}}return{valid:!0}}checkDataTypeCompatibility(e,t){let n=Yl(e.dataType),r=Yl(t.dataType);return Xl(n,r)||{number:[`number[]`,`string`],float:[`number[]`],int:[`number[]`],string:[`number`,`float`,`int`]}[n]?.includes(r)?null:`Type mismatch: connecting ${n} to ${r}`}updateTypeMismatchWarnings(e){let t=this.getNode(e);if(!t)return;let n=[];for(let e of t.inputs)for(let t of e.connections){let r=this.getNode(t.from.nodeId);if(!r)continue;let i=r.outputs.find(e=>e.id===t.from.portId);if(!i)continue;let a=this.checkDataTypeCompatibility(i,e);a&&n.push(a)}n.length>0?t.warning=n.join(`; `):t.warning?.startsWith(`Type mismatch`)&&(t.warning=null)}connect(e,t){let n=this.validateConnection(e,t);if(!n.valid)throw Error(`Invalid connection: ${n.error}`);if(!t.variadic&&t.connections&&t.connections.length>0){let e=[...t.connections];for(let t of e)this.disconnect(t.id)}let r=jf(e.id),i=jf(t.id),a={id:`conn_${Date.now()}_${++this.connectionIdCounter}`,from:{nodeId:r.elementId,portId:e.id},to:{nodeId:i.elementId,portId:t.id},type:e.portType},o=e.connections.find(e=>e.to.nodeId===a.to.nodeId&&e.to.portId===a.to.portId);if(o)return o;if(this.connections.push(a),this._connectionMap.set(a.id,a),e.connections.push(a),t.connections.push(a),this.invalidateTopologicalOrder(),e.value!==void 0&&e.value!==null&&(t.value=e.value,t.onChange))try{t.onChange(e.value)}catch(e){console.error(`Error in onChange callback for port ${t.name}:`,e)}return this.syncVariadicPortsOnNode(i.elementId),this.updateTypeMismatchWarnings(i.elementId),this.getNode(i.elementId)?.markDirty(),a}disconnect(e){let t=this._connectionMap.get(e);if(!t)return;let n=this.getElement(t.from.nodeId),r=this.getElement(t.to.nodeId);if(n){let r=n.getPort(t.from.portId);r&&(r.connections=r.connections.filter(t=>t.id!==e))}if(r){let n=r.getPort(t.to.portId);if(n&&(n.connections=n.connections.filter(t=>t.id!==e),n.connections.length===0)){n.value=n.defaultValue;try{n.onChange?.(n.defaultValue)}catch(e){console.error(`Error in onChange callback for port ${n.name}:`,e)}}}let i=this.connections.findIndex(t=>t.id===e);i>=0&&this.connections.splice(i,1),this._connectionMap.delete(e),this.invalidateTopologicalOrder(),this.syncVariadicPortsOnNode(t.to.nodeId),this.updateTypeMismatchWarnings(t.to.nodeId),this.getNode(t.to.nodeId)?.markDirty()}syncVariadicPortsOnNode(e){let t=this.getNode(e);t&&t.syncVariadicPorts()}validate(){return ud.validateGraph(this)}async execute(e){this.executionState=`running`;try{await this.scheduler.flush(e)}finally{this.executionState=`idle`}}getTopologicalOrder(){return this.cachedTopologicalOrder||=ud.topologicalSort(this),this.cachedTopologicalOrder}invalidateTopologicalOrder(){this.cachedTopologicalOrder=null}stop(){this.executionState=`stopped`}reset(){this.nodes.forEach(e=>{e.error=null,e.warning=null,e.markDirty()}),this.cookingNodes.clear(),this.executionState=`idle`}clearCookingNodes(e){e?this.cookingNodes.forEach(t=>{t!==e&&t.setCook(!1)}):this.cookingNodes.forEach(e=>{e.setCook(!1)})}isDownstreamOfCooking(e){let t=new Set,n=e=>{if(t.has(e.id))return!1;if(t.add(e.id),this.cookingNodes.has(e))return!0;for(let t of e.inputs)for(let e of t.connections){let t=this.getNode(e.from.nodeId);if(t&&n(t))return!0}return!1};return n(e)}addAnnotation(e){let t;if(this.isAnnotation(e))t=e;else{let n=e;switch(n.type.charAt(0).toUpperCase()+n.type.slice(1).toLowerCase()){case`Image`:t=new Xu(n.id,this),t.src=n.src;break;case`Text`:t=new Zu(n.id,this),t.content=n.content;break;case`Group`:t=new Qu(n.id,this),t.content=n.content;break;case`Line`:t=new $u(n.id,this),n.endPosition&&(t.endPosition=n.endPosition);break;case`Polyline`:t=new ed(n.id,this),n.points&&(t.points=n.points);break;default:t=new Yu(n.id,n.type,this),n.content!==void 0&&(t.content=n.content),n.src!==void 0&&(t.src=n.src),n.endPosition&&(t.endPosition=n.endPosition),n.points&&(t.points=n.points)}t.position=n.position||{x:0,y:0},n.size&&(t.size=n.size),n.style&&(t.style={...n.style}),n.caption!==void 0&&(t.caption=n.caption),n.containedElements&&(t.containedElements=n.containedElements)}this.addElement(t),this.initializeAnnotationPorts(t).catch(e=>{console.error(`Failed to initialize ports for annotation ${t.id}:`,e)})}removeAnnotation(e){this.removeElement(e)}async initializeAnnotationPorts(e){if(e.outputs=[],e.type===`Image`){let t=e,n={id:Mf(e.id,`output`,0),name:`image`,portType:`param`,dataType:`asset`,value:null,connections:[],setValue:e=>{n.value=e,n.connections.forEach(t=>{let n=jf(t.to.portId),r=this.getElement(n.elementId);if(r&&!this.isAnnotation(r)){let t=r.getInputPort(n.index);t&&(t.value=e,t.onChange?.(e))}})},trigger:e=>{n.connections.forEach(t=>{let n=jf(t.to.portId),r=this.getElement(n.elementId);r&&!this.isAnnotation(r)&&r.getInputPort(n.index)?.onTrigger?.(e)})}};e.outputs.push(n);let r=t.src;if(r)try{let e=new Image;e.crossOrigin=`anonymous`,await new Promise((t,i)=>{e.onload=()=>{n.setValue(e),t()},e.onerror=i,e.src=r.startsWith(`/`)||r.startsWith(`http`)||r.startsWith(`data:`)?r:`/${r}`})}catch(t){console.error(`Failed to load image for annotation ${e.id}:`,t)}}else if(e.type===`Text`){let t=e;if(t.content!==void 0){let n={id:Mf(e.id,`output`,0),name:`text`,portType:`param`,dataType:`string`,value:t.content,connections:[],setValue:e=>{n.value=e,n.connections.forEach(t=>{let n=jf(t.to.portId),r=this.getElement(n.elementId);if(r&&!this.isAnnotation(r)){let t=r.getInputPort(n.index);t&&(t.value=e,t.onChange?.(e))}})},trigger:e=>{n.connections.forEach(t=>{let n=jf(t.to.portId),r=this.getElement(n.elementId);r&&!this.isAnnotation(r)&&r.getInputPort(n.index)?.onTrigger?.(e)})}};e.outputs.push(n)}}}validateExpressionPaths(){let e=[],t=/\b(?:ch|chs|chv)\s*\(\s*['"]([^'"]+)['"]\s*\)/g;for(let n of this.nodes)for(let[r,i]of Object.entries(n.props)){if(!i.expression)continue;let a=`${n.path()}/${r}`,o=i.expression.matchAll(t);for(let t of o){let r=t[1],o=this.resolvePathFromNode(n,r);o.node?o.parmName&&!o.node.props[o.parmName]&&e.push({location:a,expression:i.expression,brokenPath:r,suggestion:`Parameter "${o.parmName}" not found on node "${o.node.id}"`}):e.push({location:a,expression:i.expression,brokenPath:r,suggestion:this.suggestPathFix(n,r)})}}return{valid:e.length===0,warnings:e}}resolvePathFromNode(e,t){let n=t.lastIndexOf(`/`);if(n>0){let r=t.substring(n+1),i=t.substring(0,n),a=e.node(t);if(a)return{node:a};let o=e.node(i);if(o)return{node:o,parmName:r}}return{node:e.node(t)}}suggestPathFix(e,t){let n=t.replace(/^\.?\.?\//,``).split(`/`),r=n[n.length-1],i=this.nodes.filter(e=>e.id.toLowerCase().includes(r.toLowerCase())||r.toLowerCase().includes(e.id.toLowerCase()));if(i.length>0)return`Did you mean "${i[0].path()}"?`}toJSON(){let e={version:`0.2`,metadata:{name:this.project.name||`Cascade Graph`,created:this.createdAt,modified:new Date().toISOString(),...this.project.description?{description:this.project.description}:{},...this.project.author?{author:this.project.author}:{}}};this.project.packages.length>0&&(e.project={packages:this.project.packages.map(e=>({path:e.path,alias:e.alias}))});let t=this.moduleResolver.exportConfig();Object.keys(t.embeddedModules).length>0&&(e.embeddedModules=t.embeddedModules),Object.keys(t.externalModules).length>0&&(e.externalModules=t.externalModules);let n=this.packageManager.getCachedPackages().map(e=>{let[t,n]=e.split(`@`);return{name:t,version:n||`latest`}});n.length>0&&(e.packages=n);let r=this.assetManager.list().map(e=>({id:e.id,path:e.path,type:e.type,size:e.size}));r.length>0&&(e.assets={manifest:r});let i=this.annotations,a=this.nodes;i.length>0&&(e.annotations=i.map(e=>{let t={id:e.id,type:e.type,position:[e.position.x,e.position.y]},n=e;return n.content!==void 0&&(t.content=n.content),n.src!==void 0&&(t.src=n.src),e.size&&(t.size=e.size),n.points&&(t.points=n.points.map(e=>[e.x,e.y])),n.endPosition&&(t.endPosition=[n.endPosition.x,n.endPosition.y]),e.style&&(t.style=e.style),e.caption!==void 0&&(t.caption=e.caption),e.containedElements&&(t.containedElements=e.containedElements),e.parent&&(t.parent=e.parent.id),t})),e.nodes=a.map(e=>this.nodeToJSON(e));let o=this.connections.map(e=>{try{let t=jf(e.from.portId),n=jf(e.to.portId),r=this.getElement(t.elementId),i=this.getElement(n.elementId);if(!r||!i)return null;let a=r.outputs?.[t.index],o=i.inputs?.[n.index];return!a||!o?null:[[t.elementId,t.index,a.name],[n.elementId,n.index,o.name]]}catch(e){return console.warn(`Failed to parse port ID in connection: ${e}`),null}}).filter(e=>e!==null);return o.length>0&&(e.connections=o),e}nodeToJSON(e){let t=e,n=t.modulePath||(e.type.includes(`.`)?e.type:`cascade.image.${e.type}`),r=t.sourceType;r||=Fe(n)?`stdlib`:n.startsWith(`local.`)?`embedded`:this.moduleResolver.getSourceType(n)||`embedded`;let i={id:e.id,module:n,position:[e.position.x,e.position.y],source:r};if(r===`project`){let e=this.moduleResolver.exportConfig().externalModules[n];e&&(i.file=e.file)}i.source===`embedded`&&e.code&&(i.code=e.code),e.comment&&e.comment.trim()&&(i.comment=e.comment),e.color&&(i.color=e.color),e.parent&&(i.parent=e.parent.id);let a=t=>e.rawParameterValue(t.name),o=(e.parameters??[]).filter(t=>t.promoted||e.preservesPlainProp(t.name)||JSON.stringify(a(t))!==JSON.stringify(t.defaultValue)),s=o.filter(e=>e.documentField!==`props`).map(e=>e.promoted?{name:e.name,value:a(e),promoted:!0}:{name:e.name,value:a(e)});s.length>0&&(i.params=s);let c=e.inputs.filter(e=>(e.connections?.length??0)===0).filter(e=>e.value!==void 0&&e.value!==null).filter(e=>typeof e.value!=`function`).map(e=>({name:e.name,defaultValue:e.value,dataType:e.dataType})).filter(e=>e.defaultValue!==``||e.dataType===`string`);c.length>0&&(i.inputs=c);let l=Object.entries(e.props).reduce((t,[n,r])=>{let i=(r.channel?.keys?.length??0)>0;if(r.fromParameter&&!r.expression&&!i)return t;let a=r.value;if(r.type===`color`&&fl(a)){let e=ll(a);a=[e.r,e.g,e.b,e.a??1]}return t[n]=e.serializePropValue(n,a),t},{});for(let t of o)t.documentField===`props`&&(l[t.name]=e.serializePropValue(t.name,e.rawParameterValue(t.name)));if(Object.keys(l).length>0&&(i.props=l),e.bypass&&(i.bypass=!0),e.cook&&(i.cook=!0),typeof e.serialize==`function`){let t=e.serialize();t&&Object.keys(t).length>0&&(i.state=t)}return i}static fromJSON(t,n,r){let i=new e(n,r);t.version,typeof t.metadata?.created==`string`&&(i.createdAt=t.metadata.created),i.project={...i.project,...typeof t.metadata?.name==`string`?{name:t.metadata.name}:{},...typeof t.metadata?.description==`string`?{description:t.metadata.description}:{},...typeof t.metadata?.author==`string`?{author:t.metadata.author}:{}},t.project&&(i.project={...i.project,name:t.metadata?.name??i.project.name,description:t.metadata?.description??i.project.description,author:t.metadata?.author??i.project.author,packages:t.project.packages||[]},t.project.packages?.forEach(e=>{i.moduleResolver.addProjectPackage(e)})),t.embeddedModules&&i.moduleResolver.importConfig({embeddedModules:t.embeddedModules}),t.externalModules&&i.moduleResolver.importConfig({externalModules:t.externalModules}),t.packages&&Array.isArray(t.packages),t.nodes.forEach(e=>{let n=e.id;if(n){let e=1,t=n;for(;i.elements.some(e=>e.id===t);)e++,t=`${n}${e}`;n=t}else{let t=e.name||e.type||e.module;n=i.generateUniqueNodeId(t)}let r=e.module||e.type;if(!r||!r.includes(`.`)){console.warn(`Invalid node type format: ${r}. Expected package path (e.g., "cascade.image.Color"). Skipping node.`);return}let a=Le(r),o=e.source||(Fe(r)?`stdlib`:`embedded`),s=``;o===`embedded`?s=t.embeddedModules?.[r]?.code||e.code||``:o===`project`&&(s=t.externalModules?.[r]?.cachedCode||e.code||``);let c=Pe(r),l;if(c)l=new c(n,i);else if(r.startsWith(`cascade.`))throw Error(`Unknown Cascade node type: ${r}`);else l=new Ju(n,a,i);l.modulePath=r,l.sourceType=o,Array.isArray(e.position)?l.position={x:e.position[0]||0,y:e.position[1]||0}:e.position&&typeof e.position==`object`?l.position={x:e.position.x||0,y:e.position.y||0}:l.position={x:0,y:0},l.code=s,l.comment=e.comment||``,e.color&&(l.color=e.color),Array.isArray(e.params)&&e.params.forEach(e=>{if(!e?.name)return;let t=l.parameters.find(t=>t.name===e.name);if(t?(t.value=e.value,t.promoted=!!e.promoted):l.parameters.push({name:e.name,value:e.value,defaultValue:e.value,dataType:`any`,promoted:!!e.promoted,options:{}}),e.promoted){let t=l.in(e.name,e.value);t.fromParameter=e.name}}),i.addElement(l);let u=(e,t,n,r={})=>{if(!e)return;let i=l.inputs.find(t=>t.name===e),a=i??l.in(e,n?t:void 0,r.dataType?{type:r.dataType}:{});i&&n&&(i.value=t),r.id&&a.id!==r.id&&(a.id=r.id)};if(Array.isArray(e.inputs)?e.inputs.forEach(e=>{if(!e||typeof e!=`object`)return;let t=Object.prototype.hasOwnProperty.call(e,`defaultValue`),n=Object.prototype.hasOwnProperty.call(e,`value`);u(e.name,t?e.defaultValue:e.value,t||n,e)}):e.inputs&&typeof e.inputs==`object`&&Object.entries(e.inputs).forEach(([e,t])=>{u(e,t,!0)}),e.outputs&&Array.isArray(e.outputs)&&e.outputs.forEach(e=>{let t=l.out(e.name,e.portType||`param`);e.id&&t.id!==e.id&&(t.id=e.id)}),e.props&&Object.entries(e.props).forEach(([e,t])=>{let n,r;t&&typeof t==`object`&&`value`in t?(n=t.value,r=t.expression):n=t;let i=n;if(fl(n)){let e=ll(n);i=e.a!==void 0&&e.a!==1?{r:e.r,g:e.g,b:e.b,a:e.a}:{r:e.r,g:e.g,b:e.b}}let a=l.parameters.find(t=>t.name===e&&t.documentField===`props`);a?a.value=n:l.props[e]?l.props[e].value=i:l.props[e]={value:i},r&&l.props[e]?l.props[e].expression=r:l.preservePlainProp(e),!r&&l.props[e]?.expression&&(delete l.props[e].expression,l.props[e]={...l.props[e]}),t?.channel&&l.props[e]&&l.restorePropChannel(e,t.channel)}),e.bypass!==void 0&&l.setBypass(e.bypass),e.cook!==void 0&&l.setCook(e.cook),!c&&(o===`project`||l.code)){let e=o===`project`?pd(r):md(l.code);l.setFunction(Of(l,r,e)),e.catch(e=>{console.warn(`Failed to compile node `+l.id+`:`,e)})}if(e.state&&typeof l.deserialize==`function`)try{l.deserialize(e.state)}catch(e){console.warn(`Failed to deserialize state for node `+l.id+`:`,e)}});let a=t.connections||[];if(t.annotations&&Array.isArray(t.annotations)){let e=t.annotations.map(e=>{let t,n=Array.isArray(e.position)?{x:e.position[0]||0,y:e.position[1]||0}:{x:e.position?.x||0,y:e.position?.y||0};switch(e.type.charAt(0).toUpperCase()+e.type.slice(1).toLowerCase()){case`Image`:t=new Xu(e.id,i),t.src=e.src;break;case`Text`:t=new Zu(e.id,i),t.content=e.content;break;case`Group`:t=new Qu(e.id,i),t.content=e.content;break;case`Line`:t=new $u(e.id,i),e.endPosition&&(t.endPosition=Array.isArray(e.endPosition)?{x:e.endPosition[0]||0,y:e.endPosition[1]||0}:{x:e.endPosition.x||0,y:e.endPosition.y||0});break;case`Polyline`:t=new ed(e.id,i),e.points&&(t.points=e.points.map(e=>Array.isArray(e)?{x:e[0]||0,y:e[1]||0}:{x:e.x||0,y:e.y||0}));break;default:t=new Yu(e.id,e.type,i)}return t.position=n,e.size&&(t.size={width:e.size.width,height:e.size.height}),e.style&&(t.style={...e.style}),e.caption!==void 0&&(t.caption=e.caption),e.containedElements&&(t.containedElements=e.containedElements),t});e.forEach(e=>i.addElement(e)),i._annotationPortsInitialized=Promise.all(e.map(e=>i.initializeAnnotationPorts(e))).catch(e=>{console.error(`Failed to initialize some annotation ports:`,e)})}else i._annotationPortsInitialized=Promise.resolve();let o=[...Array.isArray(t.nodes)?t.nodes:[],...Array.isArray(t.annotations)?t.annotations:[]];for(let e of o){if(typeof e?.parent!=`string`)continue;let t=i.getElement(e.id),n=i.getElement(e.parent),r=t=>console.warn(`Parent link for "${e.id}" to "${e.parent}" ignored: ${t}; element loaded at root.`);if(!t)continue;if(!n){r(`parent does not exist`);continue}if(t===n){r(`self-parenting is invalid`);continue}if(!n.isNetwork()){r(`parent is not a network`);continue}let a=n,o=!1,s=new Set;for(;a&&!s.has(a);){if(a===t){o=!0;break}s.add(a),a=a.parent}if(o){r(`parent cycle detected`);continue}i.reparentElement(t,n)}let s=e=>{let t=0,n=e.parent,r=new Set;for(;n&&!r.has(n);)r.add(n),t++,n=n.parent;return t};return i.nodes.filter(e=>e.isNetwork()).sort((e,t)=>s(t)-s(e)).forEach(e=>e.syncPorts?.()),i._connectionsToRestore=a,a.forEach(e=>{i.tryRestoreConnection(e,!1)}),i}async waitForAnnotationPorts(){let e=this._annotationPortsInitialized;e&&await e}tryRestoreConnection(e,t=!1){if(!Array.isArray(e)||!Array.isArray(e[0])||!Array.isArray(e[1]))return!1;let[n,r,i]=e[0],[a,o,s]=e[1];if(typeof r!=`number`||typeof o!=`number`)return!1;let c=this.getElement(n),l=this.getElement(a);if(!c||!l)return!1;let u=(e,t)=>typeof t==`string`?e?.find(e=>e.name===t):void 0,d=(e,t,n)=>typeof t==`string`?u(e,t):e?.[n],f=d(c.outputs,i,r),p=d(l.inputs,s,o);if(!f||!p)return!1;if(t&&this.connections.some(e=>e.from.nodeId===n&&e.from.portId===f.id&&e.to.nodeId===a&&e.to.portId===p.id))return!0;try{return this.connect(f,p),!0}catch(e){return console.warn(`[connect] ${n}[${r}] -> ${a}[${o}] rejected:`,e),!1}}restoreConnections(){let e=this._connectionsToRestore||[];if(e.length===0)return;let t=e.filter(e=>!this.tryRestoreConnection(e,!0));t.length>0?this._connectionsToRestore=t:delete this._connectionsToRestore}};function Pf(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function Ff(e){if(Array.isArray(e))return e}function If(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t!==0)for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}function Lf(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
8
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Rf(e,t){return Ff(e)||If(e,t)||zf(e,t)||Lf()}function zf(e,t){if(e){if(typeof e==`string`)return Pf(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Pf(e,t):void 0}}var Bf=Object.entries,Vf=Object.setPrototypeOf,Hf=Object.isFrozen,Uf=Object.getPrototypeOf,Wf=Object.getOwnPropertyDescriptor,Gf=Object.freeze,Kf=Object.seal,qf=Object.create,Jf=typeof Reflect<`u`&&Reflect,Yf=Jf.apply,Xf=Jf.construct;Gf||=function(e){return e},Kf||=function(e){return e},Yf||=function(e,t){var n=[...arguments].slice(2);return e.apply(t,n)},Xf||=function(e){return new e(...[...arguments].slice(1))};var Zf=_p(Array.prototype.forEach),Qf=_p(Array.prototype.lastIndexOf),$f=_p(Array.prototype.pop),ep=_p(Array.prototype.push),tp=_p(Array.prototype.splice),np=Array.isArray,rp=_p(String.prototype.toLowerCase),ip=_p(String.prototype.toString),ap=_p(String.prototype.match),op=_p(String.prototype.replace),sp=_p(String.prototype.indexOf),cp=_p(String.prototype.trim),lp=_p(Number.prototype.toString),up=_p(Boolean.prototype.toString),dp=typeof BigInt>`u`?null:_p(BigInt.prototype.toString),fp=typeof Symbol>`u`?null:_p(Symbol.prototype.toString),pp=_p(Object.prototype.hasOwnProperty),mp=_p(Object.prototype.toString),hp=_p(RegExp.prototype.test),gp=vp(TypeError);function _p(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);var n=[...arguments].slice(1);return Yf(e,t,n)}}function vp(e){return function(){return Xf(e,[...arguments])}}function yp(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:rp;if(Vf&&Vf(e,null),!np(t))return e;let r=t.length;for(;r--;){let i=t[r];if(typeof i==`string`){let e=n(i);e!==i&&(Hf(t)||(t[r]=e),i=e)}e[i]=!0}return e}function bp(e){for(let t=0;t<e.length;t++)pp(e,t)||(e[t]=null);return e}function xp(e){let t=qf(null);for(let r of Bf(e)){var n=Rf(r,2);let i=n[0],a=n[1];pp(e,i)&&(t[i]=np(a)?bp(a):a&&typeof a==`object`&&a.constructor===Object?xp(a):a)}return t}function Sp(e){switch(typeof e){case`string`:return e;case`number`:return lp(e);case`boolean`:return up(e);case`bigint`:return dp?dp(e):`0`;case`symbol`:return fp?fp(e):`Symbol()`;case`undefined`:return mp(e);case`function`:case`object`:{if(e===null)return mp(e);let t=e,n=Cp(t,`toString`);if(typeof n==`function`){let e=n(t);return typeof e==`string`?e:mp(e)}return mp(e)}default:return mp(e)}}function Cp(e,t){for(;e!==null;){let n=Wf(e,t);if(n){if(n.get)return _p(n.get);if(typeof n.value==`function`)return _p(n.value)}e=Uf(e)}function n(){return null}return n}function wp(e){try{return hp(e,``),!0}catch{return!1}}var Tp=Gf(`a.abbr.acronym.address.area.article.aside.audio.b.bdi.bdo.big.blink.blockquote.body.br.button.canvas.caption.center.cite.code.col.colgroup.content.data.datalist.dd.decorator.del.details.dfn.dialog.dir.div.dl.dt.element.em.fieldset.figcaption.figure.font.footer.form.h1.h2.h3.h4.h5.h6.head.header.hgroup.hr.html.i.img.input.ins.kbd.label.legend.li.main.map.mark.marquee.menu.menuitem.meter.nav.nobr.ol.optgroup.option.output.p.picture.pre.progress.q.rp.rt.ruby.s.samp.search.section.select.shadow.slot.small.source.spacer.span.strike.strong.style.sub.summary.sup.table.tbody.td.template.textarea.tfoot.th.thead.time.tr.track.tt.u.ul.var.video.wbr`.split(`.`)),Ep=Gf(`svg.a.altglyph.altglyphdef.altglyphitem.animatecolor.animatemotion.animatetransform.circle.clippath.defs.desc.ellipse.enterkeyhint.exportparts.filter.font.g.glyph.glyphref.hkern.image.inputmode.line.lineargradient.marker.mask.metadata.mpath.part.path.pattern.polygon.polyline.radialgradient.rect.stop.style.switch.symbol.text.textpath.title.tref.tspan.view.vkern`.split(`.`)),Dp=Gf([`feBlend`,`feColorMatrix`,`feComponentTransfer`,`feComposite`,`feConvolveMatrix`,`feDiffuseLighting`,`feDisplacementMap`,`feDistantLight`,`feDropShadow`,`feFlood`,`feFuncA`,`feFuncB`,`feFuncG`,`feFuncR`,`feGaussianBlur`,`feImage`,`feMerge`,`feMergeNode`,`feMorphology`,`feOffset`,`fePointLight`,`feSpecularLighting`,`feSpotLight`,`feTile`,`feTurbulence`]),Op=Gf([`animate`,`color-profile`,`cursor`,`discard`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`foreignobject`,`hatch`,`hatchpath`,`mesh`,`meshgradient`,`meshpatch`,`meshrow`,`missing-glyph`,`script`,`set`,`solidcolor`,`unknown`,`use`]),kp=Gf(`math.menclose.merror.mfenced.mfrac.mglyph.mi.mlabeledtr.mmultiscripts.mn.mo.mover.mpadded.mphantom.mroot.mrow.ms.mspace.msqrt.mstyle.msub.msup.msubsup.mtable.mtd.mtext.mtr.munder.munderover.mprescripts`.split(`.`)),Ap=Gf([`maction`,`maligngroup`,`malignmark`,`mlongdiv`,`mscarries`,`mscarry`,`msgroup`,`mstack`,`msline`,`msrow`,`semantics`,`annotation`,`annotation-xml`,`mprescripts`,`none`]),jp=Gf([`#text`]),Mp=Gf(`accept.action.align.alt.autocapitalize.autocomplete.autopictureinpicture.autoplay.background.bgcolor.border.capture.cellpadding.cellspacing.checked.cite.class.clear.color.cols.colspan.command.commandfor.controls.controlslist.coords.crossorigin.datetime.decoding.default.dir.disabled.disablepictureinpicture.disableremoteplayback.download.draggable.enctype.enterkeyhint.exportparts.face.for.headers.height.hidden.high.href.hreflang.id.inert.inputmode.integrity.ismap.kind.label.lang.list.loading.loop.low.max.maxlength.media.method.min.minlength.multiple.muted.name.nonce.noshade.novalidate.nowrap.open.optimum.part.pattern.placeholder.playsinline.popover.popovertarget.popovertargetaction.poster.preload.pubdate.radiogroup.readonly.rel.required.rev.reversed.role.rows.rowspan.spellcheck.scope.selected.shape.size.sizes.slot.span.srclang.start.src.srcset.step.style.summary.tabindex.title.translate.type.usemap.valign.value.width.wrap.xmlns`.split(`.`)),Np=Gf(`accent-height.accumulate.additive.alignment-baseline.amplitude.ascent.attributename.attributetype.azimuth.basefrequency.baseline-shift.begin.bias.by.class.clip.clippathunits.clip-path.clip-rule.color.color-interpolation.color-interpolation-filters.color-profile.color-rendering.cx.cy.d.dx.dy.diffuseconstant.direction.display.divisor.dominant-baseline.dur.edgemode.elevation.end.exponent.fill.fill-opacity.fill-rule.filter.filterunits.flood-color.flood-opacity.font-family.font-size.font-size-adjust.font-stretch.font-style.font-variant.font-weight.fx.fy.g1.g2.glyph-name.glyphref.gradientunits.gradienttransform.height.href.id.image-rendering.in.in2.intercept.k.k1.k2.k3.k4.kerning.keypoints.keysplines.keytimes.lang.lengthadjust.letter-spacing.kernelmatrix.kernelunitlength.lighting-color.local.marker-end.marker-mid.marker-start.markerheight.markerunits.markerwidth.maskcontentunits.maskunits.max.mask.mask-type.media.method.mode.min.name.numoctaves.offset.operator.opacity.order.orient.orientation.origin.overflow.paint-order.path.pathlength.patterncontentunits.patterntransform.patternunits.pointer-events.points.preservealpha.preserveaspectratio.primitiveunits.r.rx.ry.radius.refx.refy.repeatcount.repeatdur.restart.result.rotate.scale.seed.shape-rendering.slope.specularconstant.specularexponent.spreadmethod.startoffset.stddeviation.stitchtiles.stop-color.stop-opacity.stroke-dasharray.stroke-dashoffset.stroke-linecap.stroke-linejoin.stroke-miterlimit.stroke-opacity.stroke.stroke-width.style.surfacescale.systemlanguage.tabindex.tablevalues.targetx.targety.transform.transform-origin.text-anchor.text-decoration.text-orientation.text-rendering.textlength.type.u1.u2.unicode.values.vector-effect.viewbox.visibility.version.vert-adv-y.vert-origin-x.vert-origin-y.width.word-spacing.wrap.writing-mode.xchannelselector.ychannelselector.x.x1.x2.xmlns.y.y1.y2.z.zoomandpan`.split(`.`)),Pp=Gf(`accent.accentunder.align.bevelled.close.columnalign.columnlines.columnspacing.columnspan.denomalign.depth.dir.display.displaystyle.encoding.fence.frame.height.href.id.largeop.length.linethickness.lquote.lspace.mathbackground.mathcolor.mathsize.mathvariant.maxsize.minsize.movablelimits.notation.numalign.open.rowalign.rowlines.rowspacing.rowspan.rspace.rquote.scriptlevel.scriptminsize.scriptsizemultiplier.selection.separator.separators.stretchy.subscriptshift.supscriptshift.symmetric.voffset.width.xmlns`.split(`.`)),Fp=Gf([`xlink:href`,`xml:id`,`xlink:title`,`xml:space`,`xmlns:xlink`]),Ip=Kf(/{{[\w\W]*|^[\w\W]*}}/g),Lp=Kf(/<%[\w\W]*|^[\w\W]*%>/g),Rp=Kf(/\${[\w\W]*/g),zp=Kf(/^data-[\-\w.\u00B7-\uFFFF]+$/),Bp=Kf(/^aria-[\-\w]+$/),Vp=Kf(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Hp=Kf(/^(?:\w+script|data):/i),Up=Kf(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Wp=Kf(/^html$/i),Gp=Kf(/^[a-z][.\w]*(-[.\w]+)+$/i),Kp=Kf(/<[/\w!]/g),qp=Kf(/<[/\w]/g),Jp=Kf(/<\/no(script|embed|frames)/i),Yp=Kf(/\/>/i),Xp={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},Zp=[`style`,`script`,`xmp`,`iframe`,`noembed`,`noframes`,`plaintext`,`noscript`],Qp=Gf(yp({},Zp)),$p=function(){let e={};return Zf(Zp,t=>{e[t]=Kf(RegExp(`</`+t+`(?=[\\t\\n\\f\\r />])`,`i`))}),Gf(e)}(),em=function(){return typeof window>`u`?null:window},tm=function(e,t){if(typeof e!=`object`||typeof e.createPolicy!=`function`)return null;let n=null,r=`data-tt-policy-suffix`;t&&t.hasAttribute(r)&&(n=t.getAttribute(r));let i=`dompurify`+(n?`#`+n:``);try{return e.createPolicy(i,{createHTML(e){return e},createScriptURL(e){return e}})}catch{return console.warn(`TrustedTypes policy `+i+` could not be created.`),null}},nm=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},rm=function(e,t,n,r){return pp(e,t)&&np(e[t])?yp(r.base?xp(r.base):{},e[t],r.transform):n},im=function(e,t,n){let r=pp(e,t)?e[t]:void 0;return r&&typeof r==`object`?xp(r):n()};function am(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:em(),t=e=>am(e);if(t.version=`3.4.14`,t.removed=[],!e||!e.document||e.document.nodeType!==Xp.document||!e.Element)return t.isSupported=!1,t;let n=e.document,r=n,i=r.currentScript;e.DocumentFragment;let a=e.HTMLTemplateElement,o=e.Node,s=e.Element,c=e.NodeFilter;e.NamedNodeMap===void 0&&(e.NamedNodeMap||e.MozNamedAttrMap),e.HTMLFormElement;let l=e.DOMParser,u=e.trustedTypes,d=s.prototype,f=Cp(d,`cloneNode`),p=Cp(d,`remove`),m=Cp(d,`nextSibling`),h=Cp(d,`childNodes`),g=Cp(d,`parentNode`),_=Cp(d,`shadowRoot`),v=Cp(d,`attributes`),y=o&&o.prototype?Cp(o.prototype,`nodeType`):null,b=o&&o.prototype?Cp(o.prototype,`nodeName`):null,x=o&&o.prototype?Cp(o.prototype,`ownerDocument`):null,S=function(e){return y?y(e):e.nodeType},C=function(e){return b?b(e):e.nodeName};if(typeof a==`function`){let e=n.createElement(`template`);e.content&&e.content.ownerDocument&&(n=e.content.ownerDocument)}let w,T=``,ee,E=!1,D=0,te=function(){if(D>0)throw gp(`A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.`)},O=function(e){te(),D++;try{return w.createHTML(e)}finally{D--}},k=function(e){te(),D++;try{return w.createScriptURL(e)}finally{D--}},A=function(){return E||=(ee=tm(u,i),!0),ee},ne=n,j=ne.implementation,M=ne.createNodeIterator,re=ne.createDocumentFragment,N=ne.getElementsByTagName,ie=r.importNode,P=nm();t.isSupported=typeof Bf==`function`&&typeof g==`function`&&j&&j.createHTMLDocument!==void 0;let ae=Ip,oe=Lp,F=Rp,I=zp,L=Bp,R=Hp,z=Up,se=Gp,B=Vp,V=null,ce=yp({},[...Tp,...Ep,...Dp,...kp,...jp]),le=null,H=yp({},[...Mp,...Np,...Pp,...Fp]),U=Object.seal(qf(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),ue=null,de=null,fe=Object.seal(qf(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),pe=!0,me=!0,he=!1,W=!0,G=!1,ge=!0,_e=!1,ve=!1,ye=null,K=null,be=!1,q=!1,xe=!1,J=!1,Se=!0,Y=!1,Ce=`user-content-`,we=!0,Te=!1,Ee={},X=null,De=yp({},`annotation-xml.audio.colgroup.desc.foreignobject.head.iframe.math.mi.mn.mo.ms.mtext.noembed.noframes.noscript.plaintext.script.selectedcontent.style.svg.template.thead.title.video.xmp`.split(`.`)),Oe=null,ke=yp({},[`audio`,`video`,`img`,`source`,`image`,`track`]),Z=null,Ae=yp({},[`alt`,`class`,`for`,`id`,`label`,`name`,`pattern`,`placeholder`,`role`,`summary`,`title`,`value`,`style`,`xmlns`]),je=`http://www.w3.org/1998/Math/MathML`,Me=`http://www.w3.org/2000/svg`,Ne=`http://www.w3.org/1999/xhtml`,Pe=Ne,Fe=!1,Ie=null,Le=yp({},[je,Me,Ne],ip),Re=Gf([`mi`,`mo`,`mn`,`ms`,`mtext`]),ze=yp({},Re),Be=Gf([`annotation-xml`]),Ve=yp({},Be),He=yp({},[`title`,`style`,`font`,`a`,`script`]),Ue=null,We=[`application/xhtml+xml`,`text/html`],Q=null,Ge=null,Ke=n.createElement(`form`),qe=function(e){return e instanceof RegExp||e instanceof Function},Je=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(Ge&&Ge===e)return;(!e||typeof e!=`object`)&&(e={}),e=xp(e),Ue=We.indexOf(e.PARSER_MEDIA_TYPE)===-1?`text/html`:e.PARSER_MEDIA_TYPE,Q=Ue===`application/xhtml+xml`?ip:rp,V=rm(e,`ALLOWED_TAGS`,ce,{transform:Q}),le=rm(e,`ALLOWED_ATTR`,H,{transform:Q}),Ie=rm(e,`ALLOWED_NAMESPACES`,Le,{transform:ip}),Z=rm(e,`ADD_URI_SAFE_ATTR`,Ae,{transform:Q,base:Ae}),Oe=rm(e,`ADD_DATA_URI_TAGS`,ke,{transform:Q,base:ke}),X=rm(e,`FORBID_CONTENTS`,De,{transform:Q}),ue=rm(e,`FORBID_TAGS`,xp({}),{transform:Q}),de=rm(e,`FORBID_ATTR`,xp({}),{transform:Q}),Ee=pp(e,`USE_PROFILES`)?e.USE_PROFILES&&typeof e.USE_PROFILES==`object`?xp(e.USE_PROFILES):e.USE_PROFILES:!1,pe=e.ALLOW_ARIA_ATTR!==!1,me=e.ALLOW_DATA_ATTR!==!1,he=e.ALLOW_UNKNOWN_PROTOCOLS||!1,W=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,G=e.SAFE_FOR_TEMPLATES||!1,ge=e.SAFE_FOR_XML!==!1,_e=e.WHOLE_DOCUMENT||!1,q=e.RETURN_DOM||!1,xe=e.RETURN_DOM_FRAGMENT||!1,J=e.RETURN_TRUSTED_TYPE||!1,be=e.FORCE_BODY||!1,Se=e.SANITIZE_DOM!==!1,Y=e.SANITIZE_NAMED_PROPS||!1,we=e.KEEP_CONTENT!==!1,Te=e.IN_PLACE||!1,B=wp(e.ALLOWED_URI_REGEXP)?e.ALLOWED_URI_REGEXP:Vp,Pe=typeof e.NAMESPACE==`string`?e.NAMESPACE:Ne,ze=im(e,`MATHML_TEXT_INTEGRATION_POINTS`,()=>yp({},Re)),Ve=im(e,`HTML_INTEGRATION_POINTS`,()=>yp({},Be));let t=im(e,`CUSTOM_ELEMENT_HANDLING`,()=>qf(null));if(U=qf(null),pp(t,`tagNameCheck`)&&qe(t.tagNameCheck)&&(U.tagNameCheck=t.tagNameCheck),pp(t,`attributeNameCheck`)&&qe(t.attributeNameCheck)&&(U.attributeNameCheck=t.attributeNameCheck),pp(t,`allowCustomizedBuiltInElements`)&&typeof t.allowCustomizedBuiltInElements==`boolean`&&(U.allowCustomizedBuiltInElements=t.allowCustomizedBuiltInElements),Kf(U),G&&(me=!1),xe&&(q=!0),Ee&&(V=yp({},jp),le=qf(null),Ee.html===!0&&(yp(V,Tp),yp(le,Mp)),Ee.svg===!0&&(yp(V,Ep),yp(le,Np),yp(le,Fp)),Ee.svgFilters===!0&&(yp(V,Dp),yp(le,Np),yp(le,Fp)),Ee.mathMl===!0&&(yp(V,kp),yp(le,Pp),yp(le,Fp))),fe.tagCheck=null,fe.attributeCheck=null,pp(e,`ADD_TAGS`)&&(typeof e.ADD_TAGS==`function`?fe.tagCheck=e.ADD_TAGS:np(e.ADD_TAGS)&&(V===ce&&(V=xp(V)),yp(V,e.ADD_TAGS,Q))),pp(e,`ADD_ATTR`)&&(typeof e.ADD_ATTR==`function`?fe.attributeCheck=e.ADD_ATTR:np(e.ADD_ATTR)&&(le===H&&(le=xp(le)),yp(le,e.ADD_ATTR,Q))),pp(e,`ADD_FORBID_CONTENTS`)&&np(e.ADD_FORBID_CONTENTS)&&(X===De&&(X=xp(X)),yp(X,e.ADD_FORBID_CONTENTS,Q)),we&&(V[`#text`]=!0),_e&&yp(V,[`html`,`head`,`body`]),V.table&&(yp(V,[`tbody`]),delete ue.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!=`function`)throw gp(`TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.`);if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!=`function`)throw gp(`TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.`);let t=w;w=e.TRUSTED_TYPES_POLICY;try{T=O(``)}catch(e){throw w=t,e}}else e.TRUSTED_TYPES_POLICY===null?(w=void 0,T=``):(w===void 0&&(w=A()),w&&typeof T==`string`&&(T=O(``)));Gf&&Gf(e),Ge=e},Ye=yp({},[...Ep,...Dp,...Op]),Xe=yp({},[...kp,...Ap]),Ze=function(e,t,n){return t.namespaceURI===Ne?e===`svg`:t.namespaceURI===je?e===`svg`&&(n===`annotation-xml`||ze[n]):!!Ye[e]},$=function(e,t,n){return t.namespaceURI===Ne?e===`math`:t.namespaceURI===Me?e===`math`&&Ve[n]:!!Xe[e]},Qe=function(e,t,n){return t.namespaceURI===Me&&!Ve[n]||t.namespaceURI===je&&!ze[n]?!1:!Xe[e]&&(He[e]||!Ye[e])},$e=function(e){let t=g(e);(!t||!t.tagName)&&(t={namespaceURI:Pe,tagName:`template`});let n=rp(e.tagName),r=rp(t.tagName);return Ie[e.namespaceURI]?e.namespaceURI===Me?Ze(n,t,r):e.namespaceURI===je?$(n,t,r):e.namespaceURI===Ne?Qe(n,t,r):!!(Ue===`application/xhtml+xml`&&Ie[e.namespaceURI]):!1},et=function(e){ep(t.removed,{element:e});try{g(e).removeChild(e)}catch{if(p(e),!g(e))throw gp(`a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place`)}},tt=function(e,t,n){try{e.removeAttributeNode(t)}catch{try{e.removeAttribute(n)}catch{}}},nt=function(e){at(e);let t=h(e);if(t){let e=[];Zf(t,t=>{ep(e,t)}),Zf(e,e=>{try{p(e)}catch{}})}let n=v(e);if(n)for(let t=n.length-1;t>=0;--t){let r=n[t],i=r&&r.name;typeof i==`string`&&tt(e,r,i)}},rt=function(e,n,r){if(!r)try{r=n.getAttributeNode(e)}catch{r=null}ep(t.removed,{attribute:r||null,from:n});try{r?n.removeAttributeNode(r):n.removeAttribute(e)}catch{try{n.removeAttribute(e)}catch{}}if(e===`is`){if(q||xe)try{et(n)}catch{}else try{n.setAttribute(e,``)}catch{}}},it=function(e){let t=v(e);if(t)for(let n=t.length-1;n>=0;--n){let r=t[n],i=r&&r.name;typeof i!=`string`||le[Q(i)]||tt(e,r,i)}},at=function(e){let t=[e];for(;t.length>0;){let e=t.pop();S(e)===Xp.element&&it(e);let n=h(e);if(n)for(let e=n.length-1;e>=0;--e)t.push(n[e])}},ot=function(e,t){return ge?e===`patchsrc`||e===`for`&&t!==`label`&&t!==`output`:!1},st=function(e){if(!ge)return;let t=[e];for(;t.length>0;){let e=t.pop(),n=S(e);if(n===Xp.processingInstruction||n===Xp.comment&&hp(qp,e.data)){try{p(e)}catch{}continue}if(n===Xp.element){let t=e,n=Q(C(e));try{t.hasAttribute&&t.hasAttribute(`patchsrc`)&&t.removeAttribute(`patchsrc`),t.hasAttribute&&t.hasAttribute(`for`)&&ot(`for`,n)&&t.removeAttribute(`for`)}catch{}}let r=h(e);if(r)for(let e=r.length-1;e>=0;--e)t.push(r[e])}},ct=function(e){let t=null,r=null;if(be)e=`<remove></remove>`+e;else{let t=ap(e,/^[\r\n\t ]+/);r=t&&t[0]}Ue===`application/xhtml+xml`&&Pe===Ne&&(e=`<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>`+e+`</body></html>`);let i=w?O(e):e;if(Pe===Ne)try{t=new l().parseFromString(i,Ue)}catch{}if(!t||!t.documentElement){t=j.createDocument(Pe,`template`,null);try{t.documentElement.innerHTML=Fe?T:i}catch{}}let a=t.body||t.documentElement;return e&&r&&a.insertBefore(n.createTextNode(r),a.childNodes[0]||null),Pe===Ne?N.call(t,_e?`html`:`body`)[0]:_e?t.documentElement:a},lt=function(e){let t=x?x(e):e.ownerDocument;return M.call(t||e,e,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},ut=function(e){return e=op(e,ae,` `),e=op(e,oe,` `),e=op(e,F,` `),e},dt=function(e){e.normalize();let t=x?x(e):e.ownerDocument,n=M.call(t||e,e,c.SHOW_TEXT|c.SHOW_COMMENT|c.SHOW_CDATA_SECTION|c.SHOW_PROCESSING_INSTRUCTION,null),r=n.nextNode();for(;r;)r.data=ut(r.data),r=n.nextNode();let i=e.querySelectorAll?.call(e,`template`);i&&Zf(i,e=>{pt(e.content)&&dt(e.content)})},ft=function(e){let t=b?b(e):null;return typeof t!=`string`||Q(t)!==`form`?!1:typeof e.nodeName!=`string`||typeof e.textContent!=`string`||typeof e.removeChild!=`function`||e.attributes!==v(e)||typeof e.removeAttribute!=`function`||typeof e.setAttribute!=`function`||typeof e.namespaceURI!=`string`||typeof e.insertBefore!=`function`||typeof e.hasChildNodes!=`function`||e.nodeType!==y(e)||e.childNodes!==h(e)},pt=function(e){if(!y||typeof e!=`object`||!e)return!1;try{return y(e)===Xp.documentFragment}catch{return!1}},mt=function(e){if(!y||typeof e!=`object`||!e)return!1;try{return typeof y(e)==`number`}catch{return!1}};function ht(e,n,r){e.length!==0&&Zf(e,e=>{e.call(t,n,r,Ge)})}let gt=function(e,t){return!!(ge&&e.hasChildNodes()&&!mt(e.firstElementChild)&&hp(Kp,e.textContent)&&hp(Kp,e.innerHTML)||ge&&e.namespaceURI===Ne&&Qp[t]&&(mt(e.firstElementChild)||typeof e.textContent==`string`&&hp($p[t],e.textContent))||e.nodeType===Xp.processingInstruction||ge&&e.nodeType===Xp.comment&&hp(qp,e.data))},_t=function(e,t){return e instanceof RegExp?hp(e,t):e instanceof Function&&!!e(t,...[...arguments].slice(2))},vt=function(e,t,n){if(!ue[t]&&wt(t)&&_t(U.tagNameCheck,t))return!1;if(we&&!X[t]){let t=g(e),r=h(e);if(r&&t){let i=r.length;for(let a=i-1;a>=0;--a){let i=e===n?f(r[a],!0):r[a];t.insertBefore(i,m(e))}}}return et(e),!0},yt=function(e,t,n,r){return e.length===0?t:t===n||t===r?xp(t):t},bt=function(e,t){return e===t||g(e)!==null?!1:(Te&&at(e),!0)},xt=function(e,n){if(ht(P.beforeSanitizeElements,e,null),bt(e,n))return!0;if(ft(e))return et(e),!0;let r=Q(C(e));if(V=yt(P.uponSanitizeElement,V,ce,ye),ht(P.uponSanitizeElement,e,{tagName:r,allowedTags:V}),bt(e,n))return!0;if(gt(e,r))return et(e),!0;if(ue[r]||!(fe.tagCheck instanceof Function&&fe.tagCheck(r))&&!V[r]){let t=vt(e,r,n);return t===!1&&ht(P.afterSanitizeElements,e,null),t}if(S(e)===Xp.element&&!$e(e)||(r===`noscript`||r===`noembed`||r===`noframes`)&&hp(Jp,e.innerHTML))return et(e),!0;if(G&&e.nodeType===Xp.text){let n=ut(e.textContent);e.textContent!==n&&(ep(t.removed,{element:e.cloneNode()}),e.textContent=n)}return ht(P.afterSanitizeElements,e,null),!1},St=function(e,t,r){if(de[t]||ot(t,e)||Se&&(t===`id`||t===`name`)&&(r in n||r in Ke))return!1;let i=le[t]||fe.attributeCheck instanceof Function&&fe.attributeCheck(t,e);return me&&hp(I,t)||pe&&hp(L,t)?!0:i?Z[t]||hp(B,op(r,z,``))||(t===`src`||t===`xlink:href`||t===`href`)&&e!==`script`&&sp(r,`data:`)===0&&Oe[e]||he&&!hp(R,op(r,z,``))?!0:!r:wt(e)&&_t(U.tagNameCheck,e)&&_t(U.attributeNameCheck,t,e)||t===`is`&&U.allowCustomizedBuiltInElements&&_t(U.tagNameCheck,r)},Ct=yp({},[`annotation-xml`,`color-profile`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`missing-glyph`]),wt=function(e){return!Ct[rp(e)]&&hp(se,e)},Tt=function(e,t,n,r){if(w&&typeof u==`object`&&typeof u.getAttributeType==`function`&&!n)switch(u.getAttributeType(e,t)){case`TrustedHTML`:return O(r);case`TrustedScriptURL`:return k(r)}return r},Et=function(e,n,r,i){try{r?e.setAttributeNS(r,n,i):e.setAttribute(n,i),ft(e)?et(e):$f(t.removed)}catch{rt(n,e)}},Dt=function(e){ht(P.beforeSanitizeAttributes,e,null);let t=e.attributes;if(!t||ft(e))return;le=yt(P.uponSanitizeAttribute,le,H,K);let n={attrName:``,attrValue:``,keepAttr:!0,allowedAttributes:le,forceKeepAttr:void 0},r=t.length,i=Q(e.nodeName);for(;r--;){let a=t[r],o=a.name,s=a.namespaceURI,c=a.value,l=Q(o),u=c,d=o===`value`?u:cp(u);if(n.attrName=l,n.attrValue=d,n.keepAttr=!0,n.forceKeepAttr=void 0,ht(P.uponSanitizeAttribute,e,n),d=n.attrValue,Y&&(l===`id`||l===`name`)&&sp(d,Ce)!==0&&(rt(o,e,a),d=Ce+d),ge&&hp(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,d)){rt(o,e,a);continue}if(l===`attributename`&&ap(d,`href`)){rt(o,e,a);continue}if(!n.forceKeepAttr){if(!n.keepAttr){rt(o,e,a);continue}if(!W&&hp(Yp,d)){rt(o,e,a);continue}if(G&&(d=ut(d)),!St(i,l,d)){rt(o,e,a);continue}d=Tt(i,l,s,d),d!==u&&Et(e,o,s,d)}}ht(P.afterSanitizeAttributes,e,null)},Ot=function(e){let t=null,n=lt(e);for(ht(P.beforeSanitizeShadowDOM,e,null);t=n.nextNode();)if(ht(P.uponSanitizeShadowNode,t,null),xt(t,e),Dt(t),pt(t.content)&&Ot(t.content),S(t)===Xp.element){let e=_(t);pt(e)&&(kt(e),Ot(e))}ht(P.afterSanitizeShadowDOM,e,null)},kt=function(e){let t=[{node:e,shadow:null}];for(;t.length>0;){let e=t.pop();if(e.shadow){Ot(e.shadow);continue}let n=e.node,r=S(n)===Xp.element,i=h(n);if(i)for(let e=i.length-1;e>=0;--e)t.push({node:i[e],shadow:null});if(r){let e=b?b(n):null;if(typeof e==`string`&&Q(e)===`template`){let e=n.content;pt(e)&&t.push({node:e,shadow:null})}}if(r){let e=_(n);pt(e)&&t.push({node:null,shadow:e},{node:e,shadow:null})}}};return t.sanitize=function(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=null,a=null,o=null,s=null;if(Fe=!e,Fe&&(e=`<!-->`),typeof e!=`string`&&!mt(e)&&(e=Sp(e),typeof e!=`string`))throw gp(`dirty is not a string, aborting`);if(!t.isSupported)return e;ve?(V=ye,le=K):Je(n),(P.uponSanitizeElement.length>0||P.uponSanitizeAttribute.length>0)&&(V=xp(V)),P.uponSanitizeAttribute.length>0&&(le=xp(le)),t.removed=[];let c=Te&&typeof e!=`string`&&mt(e);if(c){st(e);let t=C(e);if(typeof t==`string`){let n=Q(t);if(!V[n]||ue[n])throw nt(e),gp(`root node is forbidden and cannot be sanitized in-place`)}if(ft(e))throw nt(e),gp(`root node is clobbered and cannot be sanitized in-place`);try{kt(e)}catch(t){throw nt(e),t}}else if(mt(e))i=ct(`<!---->`),a=i.ownerDocument.importNode(e,!0),a.nodeType===Xp.element&&a.nodeName===`BODY`||a.nodeName===`HTML`?i=a:i.appendChild(a),kt(a);else{if(!q&&!G&&!_e&&e.indexOf(`<`)===-1)return w&&J?O(e):e;if(i=ct(e),!i)return q?null:J?T:``}i&&be&&et(i.firstChild);let l=c?e:i;try{let e=lt(l);for(;o=e.nextNode();)xt(o,l),Dt(o),pt(o.content)&&Ot(o.content)}catch(n){throw c&&(nt(e),Zf(t.removed,e=>{e.element&&at(e.element)})),n}if(c)return Zf(t.removed,e=>{e.element&&at(e.element)}),G&&dt(e),e;if(q){if(G&&dt(i),xe)for(s=re.call(i.ownerDocument);i.firstChild;)s.appendChild(i.firstChild);else s=i;return(le.shadowroot||le.shadowrootmode)&&(s=ie.call(r,s,!0)),s}let u=_e?i.outerHTML:i.innerHTML;return _e&&V[`!doctype`]&&i.ownerDocument&&i.ownerDocument.doctype&&i.ownerDocument.doctype.name&&hp(Wp,i.ownerDocument.doctype.name)&&(u=`<!DOCTYPE `+i.ownerDocument.doctype.name+`>
|
|
9
|
+
`+u),G&&(u=ut(u)),w&&J?O(u):u},t.setConfig=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Je(e),ve=!0,ye=V,K=le},t.clearConfig=function(){Ge=null,ve=!1,ye=null,K=null,w=ee,T=``},t.isValidAttribute=function(e,t,n){Ge||Je({});let r=Q(e),i=Q(t);return St(r,i,n)},t.addHook=function(e,t){typeof t==`function`&&pp(P,e)&&ep(P[e],t)},t.removeHook=function(e,t){if(pp(P,e)){if(t!==void 0){let n=Qf(P[e],t);return n===-1?void 0:tp(P[e],n,1)[0]}return $f(P[e])}},t.removeHooks=function(e){pp(P,e)&&(P[e]=[])},t.removeAllHooks=function(){P=nm()},t}var om=am();function sm(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var cm=sm();function lm(e){cm=e}var um={exec:()=>null};function dm(e){let t=[];return n=>{let r=Math.max(0,Math.min(3,n-1)),i=t[r];return i||(i=e(r),t[r]=i),i}}function fm(e,t=``){let n=typeof e==`string`?e:e.source,r={replace:(e,t)=>{let i=typeof t==`string`?t:t.source;return i=i.replace(mm.caret,`$1`),n=n.replace(e,i),r},getRegex:()=>new RegExp(n,t)};return r}var pm=((e=``)=>{try{return!!RegExp(`(?<=1)(?<!1)`+e)}catch{return!1}})(),mm={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:dm(e=>RegExp(`^ {0,${e}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:dm(e=>RegExp(`^ {0,${e}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`)),fencesBeginRegex:dm(e=>RegExp(`^ {0,${e}}(?:\`\`\`|~~~)`)),headingBeginRegex:dm(e=>RegExp(`^ {0,${e}}#`)),htmlBeginRegex:dm(e=>RegExp(`^ {0,${e}}<(?:[a-z].*>|!--)`,`i`)),blockquoteBeginRegex:dm(e=>RegExp(`^ {0,${e}}>`))},hm=/^(?:[ \t]*(?:\n|$))+/,gm=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,_m=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,vm=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,ym=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,bm=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,xm=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Sm=fm(xm).replace(/bull/g,bm).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,``).getRegex(),Cm=fm(xm).replace(/bull/g,bm).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),wm=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,Tm=/^[^\n]+/,Em=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Dm=fm(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace(`label`,Em).replace(`title`,/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Om=fm(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,bm).getRegex(),km=`address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul`,Am=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,jm=fm(`^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|<![A-Z][\\s\\S]*?(?:>[^\\n]*\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>[^\\n]*\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))`,`i`).replace(`comment`,Am).replace(`tag`,km).replace(`attribute`,/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Mm=e=>fm(wm).replace(`hr`,vm).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace(`list`,e).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,km).getRegex(),Nm=Mm(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),Pm=Mm(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),Fm={blockquote:fm(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace(`paragraph`,Pm).getRegex(),code:gm,def:Dm,fences:_m,heading:ym,hr:vm,html:jm,lheading:Sm,list:Om,newline:hm,paragraph:Nm,table:um,text:Tm},Im=fm(`^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)`).replace(`hr`,vm).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`blockquote`,` {0,3}>`).replace(`code`,`(?: {4}| {0,3} )[^\\n]`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,km).getRegex(),Lm={...Fm,lheading:Cm,table:Im,paragraph:fm(wm).replace(`hr`,vm).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`table`,Im).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,km).getRegex()},Rm={...Fm,html:fm(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace(`comment`,Am).replace(/tag/g,`(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b`).getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:um,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:fm(wm).replace(`hr`,vm).replace(`heading`,` *#{1,6} *[^
|
|
10
|
+
]`).replace(`lheading`,Sm).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`|fences`,``).replace(`|list`,``).replace(`|html`,``).replace(`|tag`,``).getRegex()},zm=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Bm=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,Vm=/^( {2,}|\\)\n(?!\s*$)/,Hm=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,Um=/[\p{P}\p{S}]/u,Wm=/[\s\p{P}\p{S}]/u,Gm=/[^\s\p{P}\p{S}]/u,Km=fm(/^((?![*_])punctSpace)/,`u`).replace(/punctSpace/g,Wm).getRegex(),qm=/[\p{Pi}\p{Ps}"']/u,Jm=/(?!~)[\p{P}\p{S}]/u,Ym=/(?!~)[\s\p{P}\p{S}]/u,Xm=/(?:[^\s\p{P}\p{S}]|~)/u,Zm=fm(/link|precode-code|html/,`g`).replace(`link`,/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace(`precode-`,pm?"(?<!`)()":"(^^|[^`])").replace(`code`,/(?<b>`+)[^`]+\k<b>(?!`)/).replace(`html`,/<(?! )[^<>]*?>/).getRegex(),Qm=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,$m=fm(Qm,`u`).replace(/punct/g,Um).getRegex(),eh=fm(Qm,`u`).replace(/punct/g,Jm).getRegex(),th=fm(/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,`u`).replace(/openQuote/g,qm).replace(/punct/g,Um).getRegex(),nh=`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)`,rh=fm(nh,`gu`).replace(/notPunctSpace/g,Gm).replace(/punctSpace/g,Wm).replace(/punct/g,Um).getRegex(),ih=fm(nh,`gu`).replace(/notPunctSpace/g,Xm).replace(/punctSpace/g,Ym).replace(/punct/g,Jm).getRegex(),ah=fm(`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,Gm).replace(/punctSpace/g,Wm).replace(/punct/g,Um).getRegex(),oh=fm(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)`,`gu`).replace(/notPunctSpace/g,Gm).replace(/punctSpace/g,Wm).replace(/punct/g,Um).getRegex(),sh=fm(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,Gm).replace(/punctSpace/g,Wm).replace(/punct/g,Um).getRegex(),ch=fm(/^~~?(?:((?!~)punct)|[^\s~])/,`u`).replace(/punct/g,Um).getRegex(),lh=fm(`^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,Gm).replace(/punctSpace/g,Wm).replace(/punct/g,Um).getRegex(),uh=fm(/\\(punct)/,`gu`).replace(/punct/g,Um).getRegex(),dh=fm(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace(`scheme`,/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(`email`,/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),fh=fm(Am).replace(`(?:-->|$)`,`-->`).getRegex(),ph=fm(`^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>`).replace(`comment`,fh).replace(`attribute`,/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),mh=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,hh=fm(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace(`label`,mh).replace(`href`,/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace(`title`,/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),gh=fm(/^!?\[(label)\]\[(ref)\]/).replace(`label`,mh).replace(`ref`,Em).getRegex(),_h=fm(/^!?\[(ref)\](?:\[\])?/).replace(`ref`,Em).getRegex(),vh=fm(`reflink|nolink(?!\\()`,`g`).replace(`reflink`,gh).replace(`nolink`,_h).getRegex(),yh=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,bh={_backpedal:um,anyPunctuation:uh,autolink:dh,blockSkip:Zm,br:Vm,code:Bm,del:um,delLDelim:um,delRDelim:um,emStrongLDelim:$m,emStrongRDelimAst:rh,emStrongRDelimUnd:oh,escape:zm,link:hh,nolink:_h,punctuation:Km,reflink:gh,reflinkSearch:vh,tag:ph,text:Hm,url:um},xh={...bh,emStrongLDelim:th,emStrongRDelimAst:ah,emStrongRDelimUnd:sh,link:fm(/^!?\[(label)\]\((.*?)\)/).replace(`label`,mh).getRegex(),reflink:fm(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace(`label`,mh).getRegex()},Sh={...bh,emStrongRDelimAst:ih,emStrongLDelim:eh,delLDelim:ch,delRDelim:lh,url:fm(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace(`protocol`,yh).replace(`email`,/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:fm(/^(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace(`protocol`,yh).getRegex()},Ch={...Sh,br:fm(Vm).replace(`{2,}`,`*`).getRegex(),text:fm(Sh.text).replace(`\\b_`,`\\b_| {2,}\\n`).replace(/\{2,\}/g,`*`).getRegex()},wh={normal:Fm,gfm:Lm,pedantic:Rm},Th={normal:bh,gfm:Sh,breaks:Ch,pedantic:xh},Eh={"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`},Dh=e=>Eh[e];function Oh(e,t){if(t){if(mm.escapeTest.test(e))return e.replace(mm.escapeReplace,Dh)}else if(mm.escapeTestNoEncode.test(e))return e.replace(mm.escapeReplaceNoEncode,Dh);return e}function kh(e){try{e=encodeURI(e).replace(mm.percentDecode,`%`)}catch{return null}return e}function Ah(e,t){let n=e.replace(mm.findPipe,(e,t,n)=>{let r=!1,i=t;for(;--i>=0&&n[i]===`\\`;)r=!r;return r?`|`:` |`}).split(mm.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t){if(n.length>t)n.splice(t);else for(;n.length<t;)n.push(``)}for(;r<n.length;r++)n[r]=n[r].trim().replace(mm.slashPipe,`|`);return n}function jh(e,t,n){let r=e.length;if(r===0)return``;let i=0;for(;i<r;){let a=e.charAt(r-i-1);if(a===t&&!n)i++;else if(a!==t&&n)i++;else break}return e.slice(0,r-i)}function Mh(e){let t=e.split(`
|
|
11
|
+
`),n=t.length-1;for(;n>=0&&mm.blankLine.test(t[n]);)n--;return t.length-n<=2?e:t.slice(0,n+1).join(`
|
|
12
|
+
`)}function Nh(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let r=0;r<e.length;r++)if(e[r]===`\\`)r++;else if(e[r]===t[0])n++;else if(e[r]===t[1]&&(n--,n<0))return r;return n>0?-2:-1}function Ph(e,t=0){let n=t,r=``;for(let t of e)if(t===` `){let e=4-n%4;r+=` `.repeat(e),n+=e}else r+=t,n++;return r}function Fh(e,t,n,r,i){let a=t.href,o=t.title||null,s=e[1].replace(i.other.outputLinkReplace,`$1`),c=e[0].charAt(0)===`!`;r.state.inLink=!0;let l=r.state.linkEmitted,u=r.state.inRawBlock;r.state.linkEmitted=!1;let d=r.inlineTokens(s),f=r.state.linkEmitted;if(r.state.linkEmitted=l,r.state.inLink=!1,!c){if(f){r.state.inRawBlock=u;return}r.state.linkEmitted=!0}return{type:c?`image`:`link`,raw:n,href:a,title:o,text:s,tokens:d}}function Ih(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(r===null)return t;let i=r[1];return t.split(`
|
|
13
13
|
`).map(e=>{let t=e.match(n.other.beginningSpace);if(t===null)return e;let[r]=t;return r.length>=i.length?e.slice(i.length):e}).join(`
|
|
14
|
-
`)}var
|
|
15
|
-
`),depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:`hr`,raw:
|
|
16
|
-
`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let e=
|
|
14
|
+
`)}var Lh=class{options;rules;lexer;constructor(e){this.options=e||cm}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:`space`,raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let e=this.options.pedantic?t[0]:Mh(t[0]);return{type:`code`,raw:e,codeBlockStyle:`indented`,text:e.replace(this.rules.other.codeRemoveIndent,``)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let e=t[0],n=Ih(e,t[3]||``,this.rules);return{type:`code`,raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,`$1`):t[2],text:n}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(this.rules.other.endingHash.test(e)){let t=jh(e,`#`);(this.options.pedantic||!t||this.rules.other.endingSpaceChar.test(t))&&(e=t.trim())}return{type:`heading`,raw:jh(t[0],`
|
|
15
|
+
`),depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:`hr`,raw:jh(t[0],`
|
|
16
|
+
`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let e=jh(t[0],`
|
|
17
17
|
`).split(`
|
|
18
18
|
`),n=``,r=``,i=[];for(;e.length>0;){let t=!1,a=[],o;for(o=0;o<e.length;o++)if(this.rules.other.blockquoteStart.test(e[o]))a.push(e[o]),t=!0;else if(!t)a.push(e[o]);else break;e=e.slice(o);let s=a.join(`
|
|
19
19
|
`),c=s.replace(this.rules.other.blockquoteSetextReplace,`
|
|
@@ -25,20 +25,20 @@ ${c}`:c;let l=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTo
|
|
|
25
25
|
${a}`,r=r.substring(0,r.length-t.text.length)+s.text;break}if(u?.type===`list`){let t=u,a=t.raw+`
|
|
26
26
|
`+e.join(`
|
|
27
27
|
`),o=this.list(a);i[i.length-1]=o,n=n.substring(0,n.length-u.raw.length)+o.raw,r=r.substring(0,r.length-t.raw.length)+o.raw,e=a.substring(i.at(-1).raw.length).split(`
|
|
28
|
-
`);continue}}return{type:`blockquote`,raw:n,tokens:i,text:r}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,i={type:`list`,raw:``,ordered:r,start:r?+n.slice(0,-1):``,loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:`[*+-]`);let a=this.rules.other.listItemRegex(n),o=!1;for(;e;){let n=!1,r=``,s=``;if(!(t=a.exec(e))||this.rules.block.hr.test(e))break;r=t[0],e=e.substring(r.length);let c=
|
|
28
|
+
`);continue}}return{type:`blockquote`,raw:n,tokens:i,text:r}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,i={type:`list`,raw:``,ordered:r,start:r?+n.slice(0,-1):``,loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:`[*+-]`);let a=this.rules.other.listItemRegex(n),o=!1;for(;e;){let n=!1,r=``,s=``;if(!(t=a.exec(e))||this.rules.block.hr.test(e))break;r=t[0],e=e.substring(r.length);let c=Ph(t[2].split(`
|
|
29
29
|
`,1)[0],t[1].length),l=e.split(`
|
|
30
30
|
`,1)[0],u=!c.trim(),d=0;if(this.options.pedantic?(d=2,s=c.trimStart()):u?d=t[1].length+1:(d=c.search(this.rules.other.nonSpaceChar),d=d>4?1:d,s=c.slice(d),d+=t[1].length),u&&this.rules.other.blankLine.test(l)&&(r+=l+`
|
|
31
31
|
`,e=e.substring(l.length+1),n=!0),!n){let t=this.rules.other.nextBulletRegex(d),n=this.rules.other.hrRegex(d),i=this.rules.other.fencesBeginRegex(d),a=this.rules.other.headingBeginRegex(d),o=this.rules.other.htmlBeginRegex(d),f=this.rules.other.blockquoteBeginRegex(d);for(;e;){let p=e.split(`
|
|
32
32
|
`,1)[0],m;if(l=p,this.options.pedantic?(l=l.replace(this.rules.other.listReplaceNesting,` `),m=l):m=l.replace(this.rules.other.tabCharGlobal,` `),i.test(l)||a.test(l)||o.test(l)||f.test(l)||t.test(l)||n.test(l))break;if(m.search(this.rules.other.nonSpaceChar)>=d||!l.trim())s+=`
|
|
33
33
|
`+m.slice(d);else{if(u||c.replace(this.rules.other.tabCharGlobal,` `).search(this.rules.other.nonSpaceChar)>=4||i.test(c)||a.test(c)||n.test(c))break;s+=`
|
|
34
34
|
`+l}u=!l.trim(),r+=p+`
|
|
35
|
-
`,e=e.substring(p.length+1),c=m.slice(d)}}i.loose||(o?i.loose=!0:this.rules.other.doubleBlankLine.test(r)&&(o=!0)),i.items.push({type:`list_item`,raw:r,task:!!this.options.gfm&&this.rules.other.listIsTask.test(s),loose:!1,text:s,tokens:[]}),i.raw+=r}let s=i.items.at(-1);if(s)s.raw=s.raw.trimEnd(),s.text=s.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let e of i.items)if(this.lexer.state.top=!1,e.tokens=this.lexer.blockTokens(e.text,[]),!i.loose){let t=e.tokens.filter(e=>e.type===`space`);i.loose=t.length>0&&t.some(e=>this.rules.other.anyLine.test(e.raw))}for(let e of i.items){let t=e.tokens[0];if(e.task&&(t?.type===`text`||t?.type===`paragraph`)){e.text=e.text.replace(this.rules.other.listReplaceTask,``),t.raw=t.raw.replace(this.rules.other.listReplaceTask,``),t.text=t.text.replace(this.rules.other.listReplaceTask,``);for(let e=this.lexer.inlineQueue.length-1;e>=0;e--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[e].src)){this.lexer.inlineQueue[e].src=this.lexer.inlineQueue[e].src.replace(this.rules.other.listReplaceTask,``);break}let n=this.rules.other.listTaskCheckbox.exec(e.raw);if(n){let t={type:`checkbox`,raw:n[0]+` `,checked:n[0]!==`[ ]`};e.checked=t.checked,i.loose?e.tokens[0]&&[`paragraph`,`text`].includes(e.tokens[0].type)&&`tokens`in e.tokens[0]&&e.tokens[0].tokens?(e.tokens[0].raw=t.raw+e.tokens[0].raw,e.tokens[0].text=t.raw+e.tokens[0].text,e.tokens[0].tokens.unshift(t)):e.tokens.unshift({type:`paragraph`,raw:t.raw,text:t.raw,tokens:[t]}):e.tokens.unshift(t)}}else e.task&&=!1}if(i.loose)for(let e of i.items){e.loose=!0;for(let t of e.tokens)t.type===`text`&&(t.type=`paragraph`)}return i}}html(e){let t=this.rules.block.html.exec(e);if(t){let e=
|
|
36
|
-
`),href:n,title:r}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=
|
|
37
|
-
`):[],a={type:`table`,raw:
|
|
38
|
-
`),header:[],align:[],rows:[]};if(n.length===r.length){for(let e of r)this.rules.other.tableAlignRight.test(e)?a.align.push(`right`):this.rules.other.tableAlignCenter.test(e)?a.align.push(`center`):this.rules.other.tableAlignLeft.test(e)?a.align.push(`left`):a.align.push(null);for(let e=0;e<n.length;e++)a.header.push({text:n[e],tokens:this.lexer.inline(n[e]),header:!0,align:a.align[e]});for(let e of i)a.rows.push(
|
|
35
|
+
`,e=e.substring(p.length+1),c=m.slice(d)}}i.loose||(o?i.loose=!0:this.rules.other.doubleBlankLine.test(r)&&(o=!0)),i.items.push({type:`list_item`,raw:r,task:!!this.options.gfm&&this.rules.other.listIsTask.test(s),loose:!1,text:s,tokens:[]}),i.raw+=r}let s=i.items.at(-1);if(s)s.raw=s.raw.trimEnd(),s.text=s.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let e of i.items)if(this.lexer.state.top=!1,e.tokens=this.lexer.blockTokens(e.text,[]),!i.loose){let t=e.tokens.filter(e=>e.type===`space`);i.loose=t.length>0&&t.some(e=>this.rules.other.anyLine.test(e.raw))}for(let e of i.items){let t=e.tokens[0];if(e.task&&(t?.type===`text`||t?.type===`paragraph`)){e.text=e.text.replace(this.rules.other.listReplaceTask,``),t.raw=t.raw.replace(this.rules.other.listReplaceTask,``),t.text=t.text.replace(this.rules.other.listReplaceTask,``);for(let e=this.lexer.inlineQueue.length-1;e>=0;e--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[e].src)){this.lexer.inlineQueue[e].src=this.lexer.inlineQueue[e].src.replace(this.rules.other.listReplaceTask,``);break}let n=this.rules.other.listTaskCheckbox.exec(e.raw);if(n){let t={type:`checkbox`,raw:n[0]+` `,checked:n[0]!==`[ ]`};e.checked=t.checked,i.loose?e.tokens[0]&&[`paragraph`,`text`].includes(e.tokens[0].type)&&`tokens`in e.tokens[0]&&e.tokens[0].tokens?(e.tokens[0].raw=t.raw+e.tokens[0].raw,e.tokens[0].text=t.raw+e.tokens[0].text,e.tokens[0].tokens.unshift(t)):e.tokens.unshift({type:`paragraph`,raw:t.raw,text:t.raw,tokens:[t]}):e.tokens.unshift(t)}}else e.task&&=!1}if(i.loose)for(let e of i.items){e.loose=!0;for(let t of e.tokens)t.type===`text`&&(t.type=`paragraph`)}return i}}html(e){let t=this.rules.block.html.exec(e);if(t){let e=Mh(t[0]);return{type:`html`,block:!0,raw:e,pre:t[1]===`pre`||t[1]===`script`||t[1]===`style`,text:e}}}def(e){let t=this.rules.block.def.exec(e);if(t){let e=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal,` `),n=t[2]?t[2].replace(this.rules.other.hrefBrackets,`$1`).replace(this.rules.inline.anyPunctuation,`$1`):``,r=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,`$1`):t[3];return{type:`def`,tag:e,raw:jh(t[0],`
|
|
36
|
+
`),href:n,title:r}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=Ah(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,``).split(`|`),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,``).split(`
|
|
37
|
+
`):[],a={type:`table`,raw:jh(t[0],`
|
|
38
|
+
`),header:[],align:[],rows:[]};if(n.length===r.length){for(let e of r)this.rules.other.tableAlignRight.test(e)?a.align.push(`right`):this.rules.other.tableAlignCenter.test(e)?a.align.push(`center`):this.rules.other.tableAlignLeft.test(e)?a.align.push(`left`):a.align.push(null);for(let e=0;e<n.length;e++)a.header.push({text:n[e],tokens:this.lexer.inline(n[e]),header:!0,align:a.align[e]});for(let e of i)a.rows.push(Ah(e,a.header.length).map((e,t)=>({text:e,tokens:this.lexer.inline(e),header:!1,align:a.align[t]})));return a}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let e=t[1].trim();return{type:`heading`,raw:jh(t[0],`
|
|
39
39
|
`),depth:t[2].charAt(0)===`=`?1:2,text:e,tokens:this.lexer.inline(e)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let e=t[1].charAt(t[1].length-1)===`
|
|
40
|
-
`?t[1].slice(0,-1):t[1];return{type:`paragraph`,raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:`text`,raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:`escape`,raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:`html`,raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let e=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(e)){if(!this.rules.other.endAngleBracket.test(e))return;let t=
|
|
41
|
-
`),this.blockTokens(e,this.tokens);for(let e=0;e<this.inlineQueue.length;e++){let t=this.inlineQueue[e];this.inlineTokens(t.src,t.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(
|
|
40
|
+
`?t[1].slice(0,-1):t[1];return{type:`paragraph`,raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:`text`,raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:`escape`,raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:`html`,raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let e=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(e)){if(!this.rules.other.endAngleBracket.test(e))return;let t=jh(e.slice(0,-1),`\\`);if((e.length-t.length)%2==0)return}else{let e=Nh(t[2],`()`);if(e===-2)return;if(e>-1){let n=(t[0].indexOf(`!`)===0?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=``}}let n=t[2],r=``;if(this.options.pedantic){let e=this.rules.other.pedanticHrefTitle.exec(n);e&&(n=e[1],r=e[3])}else r=t[3]?t[3].slice(1,-1):``;return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(n=this.options.pedantic&&!this.rules.other.endAngleBracket.test(e)?n.slice(1):n.slice(1,-1)),Fh(t,{href:n&&n.replace(this.rules.inline.anyPunctuation,`$1`),title:r&&r.replace(this.rules.inline.anyPunctuation,`$1`)},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let e=t[(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,` `).toLowerCase()];if(!e){let e=n[0].charAt(0);return{type:`text`,raw:e,text:e}}return Fh(n,e,n[0],this.lexer,this.rules)}}emStrong(e,t,n=``){let r=this.rules.inline.emStrongLDelim.exec(e);if(!(!r||!r[1]&&!r[2]&&!r[3]&&!r[4]||r[4]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(r[1]||r[3])||!n||this.rules.inline.punctuation.exec(n))){let i=[...r[0]].length-1,a,o,s=i,c=0,l=r[0][0],u=n===l,d=l===`*`?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(d.lastIndex=0,t=t.slice(-1*e.length+i);(r=d.exec(t))!==null;){if(a=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!a)continue;if(o=[...a].length,r[3]||r[4]){s+=o;continue}if(r[5]||r[6]){if(i%3&&!((i+o)%3)){c+=o;continue}if(u)break}if(s-=o,s>0)continue;o=Math.min(o,o+s+c);let t=[...r[0]][0].length,n=e.slice(0,i+r.index+t+o);if(Math.min(i,o)%2){let e=n.slice(1,-1);return{type:`em`,raw:n,text:e,tokens:this.lexer.inlineTokens(e)}}let l=n.slice(2,-2);return{type:`strong`,raw:n,text:l,tokens:this.lexer.inlineTokens(l)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(this.rules.other.newLineCharGlobal,` `),n=this.rules.other.nonSpaceChar.test(e),r=this.rules.other.startingSpaceChar.test(e)&&this.rules.other.endingSpaceChar.test(e);return n&&r&&(e=e.substring(1,e.length-1)),{type:`codespan`,raw:t[0],text:e}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:`br`,raw:t[0]}}del(e,t,n=``){let r=this.rules.inline.delLDelim.exec(e);if(r&&(!r[1]||!n||this.rules.inline.punctuation.exec(n))){let n=[...r[0]].length-1,i,a,o=n,s=this.rules.inline.delRDelim;for(s.lastIndex=0,t=t.slice(-1*e.length+n);(r=s.exec(t))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i||(a=[...i].length,a!==n))continue;if(r[3]||r[4]){o+=a;continue}if(o-=a,o>0)continue;a=Math.min(a,a+o);let t=[...r[0]][0].length,s=e.slice(0,n+r.index+t+a),c=s.slice(n,-n);return{type:`del`,raw:s,text:c,tokens:this.lexer.inlineTokens(c)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let e,n;return t[2]===`@`?(e=t[1],n=`mailto:`+e):(e=t[1],n=e),{type:`link`,raw:t[0],text:e,href:n,tokens:[{type:`text`,raw:e,text:e}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let e,n;if(t[2]===`@`)e=t[0],n=`mailto:`+e;else{let r;do r=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??``;while(r!==t[0]);e=t[0],n=t[1]===`www.`?`http://`+t[0]:t[0]}return{type:`link`,raw:t[0],text:e,href:n,tokens:[{type:`text`,raw:e,text:e}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let e=this.lexer.state.inRawBlock;return{type:`text`,raw:t[0],text:t[0],escaped:e}}}},Rh=class e{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||cm,this.options.tokenizer=this.options.tokenizer||new Lh,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,top:!0};let t={other:mm,block:wh.normal,inline:Th.normal};this.options.pedantic?(t.block=wh.pedantic,t.inline=Th.pedantic):this.options.gfm&&(t.block=wh.gfm,t.inline=this.options.breaks?Th.breaks:Th.gfm),this.tokenizer.rules=t}static get rules(){return{block:wh,inline:Th}}static lex(t,n){return new e(n).lex(t)}static lexInline(t,n){return new e(n).inlineTokens(t)}lex(e){e=e.replace(mm.carriageReturn,`
|
|
41
|
+
`),this.blockTokens(e,this.tokens);for(let e=0;e<this.inlineQueue.length;e++){let t=this.inlineQueue[e];this.inlineTokens(t.src,t.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(mm.tabCharGlobal,` `).replace(mm.spaceLine,``));let r=1/0;for(;e;){if(e.length<r)r=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}let i;if(this.options.extensions?.block?.some(n=>(i=n.call({lexer:this},e,t))?(e=e.substring(i.raw.length),t.push(i),!0):!1))continue;if(i=this.tokenizer.space(e)){e=e.substring(i.raw.length);let n=t.at(-1);i.raw.length===1&&n!==void 0?n.raw+=`
|
|
42
42
|
`:t.push(i);continue}if(i=this.tokenizer.code(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`paragraph`||n?.type===`text`?(n.raw+=(n.raw.endsWith(`
|
|
43
43
|
`)?``:`
|
|
44
44
|
`)+i.raw,n.text+=`
|
|
@@ -51,9 +51,9 @@ ${a}`,r=r.substring(0,r.length-t.text.length)+s.text;break}if(u?.type===`list`){
|
|
|
51
51
|
`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=r.text):t.push(i),n=a.length!==e.length,e=e.substring(i.raw.length);continue}if(i=this.tokenizer.text(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`text`?(n.raw+=(n.raw.endsWith(`
|
|
52
52
|
`)?``:`
|
|
53
53
|
`)+i.raw,n.text+=`
|
|
54
|
-
`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=n.text):t.push(i);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}linkInText(e){if(!e.includes(`[`))return!1;let t=this.tokenizer.rules.inline.link;for(let n of e.matchAll(this.tokenizer.rules.inline.blockSkip))if(t.test(n[0])&&e.charAt(n.index-1)!==`!`)return!0;for(let t of e.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let e=t[0],n=e.lastIndexOf(`[`);if(!(e.charAt(0)===`!`||!Object.hasOwn(this.tokens.links,e.slice(n+1,-1)))&&!(n>1&&this.linkInText(e.slice(1,n-1))))return!0}return!1}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let n=e;if(this.tokens.links&&e.includes(`[`)){let e=this.tokenizer.rules.inline.reflinkSearch,t=n=>{let r=n.lastIndexOf(`[`);if(!Object.hasOwn(this.tokens.links,n.slice(r+1,-1)))return n;if(r>1&&n.charAt(0)!==`!`){let i=n.slice(1,r-1);if(this.linkInText(i))return`[`+i.replace(e,t)+`][`+`a`.repeat(n.length-r-2)+`]`}return`[`+`a`.repeat(n.length-2)+`]`};n=n.replace(e,t)}n=n.replace(this.tokenizer.rules.inline.anyPunctuation,e=>`+`.repeat(e.length)),n=n.replace(this.tokenizer.rules.inline.blockSkip,(e,t,n)=>{let r=n?n.length:0;return e.slice(0,r)+`[`+`a`.repeat(e.length-r-2)+`]`}),n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let r=!1,i=``,a=1/0;for(;e;){if(e.length<a)a=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}r||(i=``),r=!1;let o;if(this.options.extensions?.inline?.some(n=>(o=n.call({lexer:this},e,t))?(e=e.substring(o.raw.length),t.push(o),!0):!1))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let n=t.at(-1);o.type===`text`&&n?.type===`text`?(n.raw+=o.raw,n.text+=o.text):t.push(o);continue}if(o=this.tokenizer.emStrong(e,n,i)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.del(e,n,i)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),t.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),t.push(o);continue}let s=e;if(this.options.extensions?.startInline){let t=1/0,n=e.slice(1),r;this.options.extensions.startInline.forEach(e=>{r=e.call({lexer:this},n),typeof r==`number`&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(s=e.substring(0,t+1))}if(o=this.tokenizer.inlineText(s)){e=e.substring(o.raw.length),o.raw.slice(-1)!==`_`&&(i=o.raw.slice(-1)),r=!0;let n=t.at(-1);n?.type===`text`?(n.raw+=o.raw,n.text+=o.text):t.push(o);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t=`Infinite loop on byte: `+e;if(this.options.silent)console.error(t);else throw Error(t)}},
|
|
55
|
-
`;return r?`<pre><code class="language-`+
|
|
56
|
-
`:`<pre><code>`+(n?i:
|
|
54
|
+
`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=n.text):t.push(i);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}linkInText(e){if(!e.includes(`[`))return!1;let t=this.tokenizer.rules.inline.link;for(let n of e.matchAll(this.tokenizer.rules.inline.blockSkip))if(t.test(n[0])&&e.charAt(n.index-1)!==`!`)return!0;for(let t of e.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let e=t[0],n=e.lastIndexOf(`[`);if(!(e.charAt(0)===`!`||!Object.hasOwn(this.tokens.links,e.slice(n+1,-1)))&&!(n>1&&this.linkInText(e.slice(1,n-1))))return!0}return!1}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let n=e;if(this.tokens.links&&e.includes(`[`)){let e=this.tokenizer.rules.inline.reflinkSearch,t=n=>{let r=n.lastIndexOf(`[`);if(!Object.hasOwn(this.tokens.links,n.slice(r+1,-1)))return n;if(r>1&&n.charAt(0)!==`!`){let i=n.slice(1,r-1);if(this.linkInText(i))return`[`+i.replace(e,t)+`][`+`a`.repeat(n.length-r-2)+`]`}return`[`+`a`.repeat(n.length-2)+`]`};n=n.replace(e,t)}n=n.replace(this.tokenizer.rules.inline.anyPunctuation,e=>`+`.repeat(e.length)),n=n.replace(this.tokenizer.rules.inline.blockSkip,(e,t,n)=>{let r=n?n.length:0;return e.slice(0,r)+`[`+`a`.repeat(e.length-r-2)+`]`}),n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let r=!1,i=``,a=1/0;for(;e;){if(e.length<a)a=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}r||(i=``),r=!1;let o;if(this.options.extensions?.inline?.some(n=>(o=n.call({lexer:this},e,t))?(e=e.substring(o.raw.length),t.push(o),!0):!1))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let n=t.at(-1);o.type===`text`&&n?.type===`text`?(n.raw+=o.raw,n.text+=o.text):t.push(o);continue}if(o=this.tokenizer.emStrong(e,n,i)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.del(e,n,i)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),t.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),t.push(o);continue}let s=e;if(this.options.extensions?.startInline){let t=1/0,n=e.slice(1),r;this.options.extensions.startInline.forEach(e=>{r=e.call({lexer:this},n),typeof r==`number`&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(s=e.substring(0,t+1))}if(o=this.tokenizer.inlineText(s)){e=e.substring(o.raw.length),o.raw.slice(-1)!==`_`&&(i=o.raw.slice(-1)),r=!0;let n=t.at(-1);n?.type===`text`?(n.raw+=o.raw,n.text+=o.text):t.push(o);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t=`Infinite loop on byte: `+e;if(this.options.silent)console.error(t);else throw Error(t)}},zh=class{options;parser;constructor(e){this.options=e||cm}space(e){return``}code({text:e,lang:t,escaped:n}){let r=(t||``).match(mm.notSpaceStart)?.[0],i=e.replace(mm.endingNewline,``)+`
|
|
55
|
+
`;return r?`<pre><code class="language-`+Oh(r)+`">`+(n?i:Oh(i,!0))+`</code></pre>
|
|
56
|
+
`:`<pre><code>`+(n?i:Oh(i,!0))+`</code></pre>
|
|
57
57
|
`}blockquote({tokens:e}){return`<blockquote>
|
|
58
58
|
${this.parser.parse(e)}</blockquote>
|
|
59
59
|
`}html({text:e}){return e}def(e){return``}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>
|
|
@@ -69,8 +69,8 @@ ${this.parser.parse(e)}</blockquote>
|
|
|
69
69
|
`}tablerow({text:e}){return`<tr>
|
|
70
70
|
${e}</tr>
|
|
71
71
|
`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?`th`:`td`;return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
|
|
72
|
-
`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${
|
|
73
|
-
Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error occurred:</p><pre>`+xh(n.message+``,!0)+`</pre>`;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}},Lh=new Ih;function Rh(e,t){return Lh.parse(e,t)}Rh.options=Rh.setOptions=function(e){return Lh.setOptions(e),Rh.defaults=Lh.defaults,nm(Rh.defaults),Rh},Rh.getDefaults=em,Rh.defaults=tm;function zh(...e){return Lh.use(...e),Rh.defaults=Lh.defaults,nm(Rh.defaults),Rh}Rh.use=zh,Rh.walkTokens=function(e,t){return Lh.walkTokens(e,t)},Rh.parseInline=Lh.parseInline,Rh.Parser=Ph,Rh.parser=Ph.parse,Rh.Renderer=Mh,Rh.TextRenderer=Nh,Rh.Lexer=jh,Rh.lexer=jh.lex,Rh.Tokenizer=Ah,Rh.Hooks=Fh,Rh.parse=Rh,Rh.options,Rh.setOptions,Rh.walkTokens,Rh.parseInline,Ph.parse,jh.lex;var Bh=new Ih({breaks:!0,gfm:!0}),Vh=`p.br.hr.h1.h2.h3.h4.h5.h6.strong.em.del.s.b.i.ul.ol.li.blockquote.pre.code.a.img.table.thead.tbody.tr.th.td.input`.split(`.`),Hh=[`href`,`title`,`src`,`alt`,`align`,`start`,`type`,`checked`,`disabled`,`target`,`rel`];$p.addHook(`afterSanitizeAttributes`,e=>{e.nodeName===`A`&&e.hasAttribute(`href`)&&(e.setAttribute(`target`,`_blank`),e.setAttribute(`rel`,`noopener noreferrer`))});function Uh(e){if(!e)return``;let t=Bh.parse(e,{async:!1});return $p.sanitize(t,{ALLOWED_TAGS:Vh,ALLOWED_ATTR:Hh,KEEP_CONTENT:!0})}var Wh=()=>globalThis,Gh=class extends Error{constructor(e){super(`Cascade has no ${e} in this environment. Install the optional '@napi-rs/canvas' renderer before cooking a graph that draws.`),this.name=`MissingRenderSurfaceError`}};function Kh(){let e=Wh();return typeof e.document?.createElement==`function`?eg:typeof e.OffscreenCanvas==`function`?tg:null}function qh(){return Kh()!==null}function Jh(e,t){let n=Kh();if(!n)throw new Gh(`drawing surface`);return n.createSurface(e,t)}function Yh(e){let t=Kh();if(!t)throw new Gh(`image decoder`);return t.decodeImage(e)}function Xh(e){return e instanceof Uint8Array?e:new Uint8Array(e)}async function Zh(e){let t=Wh();if(typeof t.createImageBitmap!=`function`||typeof e==`string`)return null;let n=e instanceof Uint8Array||e instanceof ArrayBuffer?typeof t.Blob==`function`?new t.Blob([Xh(e)]):Xh(e):e;return t.createImageBitmap(n)}async function Qh(e){let t=Wh();if(typeof t.Image!=`function`)throw new Gh(`image decoder`);let n=new t.Image;if(typeof e==`string`?(/^(data:|blob:)/.test(e)||(n.crossOrigin=`anonymous`),n.src=e):n.src=e instanceof Uint8Array||e instanceof ArrayBuffer?Xh(e):new Uint8Array(await e.arrayBuffer()),await n.decode(),!n.width||!n.height)throw Error(`cascade: could not decode image data`);return n}async function $h(e){if(typeof e!=`string`){let t=await Zh(e);if(t)return t}return Qh(e)}var eg={name:`DOM canvas`,createSurface(e,t){let n=Wh().document.createElement(`canvas`);return n.width=e,n.height=t,n},decodeImage:$h},tg={name:`OffscreenCanvas`,createSurface(e,t){let n=Wh().OffscreenCanvas;return new n(e,t)},decodeImage:$h};function ng(e){return typeof e==`object`&&!!e&&typeof e.getContext==`function`}function rg(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.width!=`number`||typeof t.height!=`number`?!1:typeof t.getContext==`function`||`src`in t||typeof t.close==`function`}function ig(e){let t=e;return{width:t.naturalWidth||e.width,height:t.naturalHeight||e.height}}function ag(e,t){let n=e*t;if(!Number.isSafeInteger(e)||!Number.isSafeInteger(t)||e<1||t<1||!Number.isSafeInteger(n))throw RangeError(`Image dimensions must be positive safe integers; received ${e}×${t}`);return n}var og=class e{constructor(e,t,n,r=`srgb`){this._canvas=null,this._imageData=null,this._dirty=!0,ag(e,t),this.width=e,this.height=t,this.channels=n,this.colorSpace=r,this._memoryBytes=n.reduce((e,t)=>e+t.byteLength,0)}get memoryBytes(){return this._memoryBytes}get memorySizeStr(){let e=this._memoryBytes;return e<1024?`${e}B`:e<1048576?`${(e/1024).toFixed(1)}KB`:`${(e/1048576).toFixed(2)}MB`}static grayscale(t,n){let r=ag(t,n);return new e(t,n,[new Float32Array(r)])}static rgb(t,n){let r=ag(t,n);return new e(t,n,[new Float32Array(r),new Float32Array(r),new Float32Array(r)])}static rgba(t,n){let r=ag(t,n);return new e(t,n,[new Float32Array(r),new Float32Array(r),new Float32Array(r),new Float32Array(r)])}static fromCanvas(t){if(ng(t)){let n=t.getContext(`2d`);if(!n)throw Error(`cascade: canvas has no 2D context`);return e.fromImageData(n.getImageData(0,0,t.width,t.height))}let{width:n,height:r}=ig(t),i=Jh(n,r).getContext(`2d`);if(!i)throw Error(`cascade: canvas has no 2D context`);return i.drawImage(t,0,0),e.fromImageData(i.getImageData(0,0,n,r))}static fromImageData(t){let{width:n,height:r,data:i}=t,a=n*r,o=new Float32Array(a),s=new Float32Array(a),c=new Float32Array(a),l=new Float32Array(a),u=1/255;for(let e=0;e<a;e++){let t=e*4;o[e]=i[t]*u,s[e]=i[t+1]*u,c[e]=i[t+2]*u,l[e]=i[t+3]*u}return new e(n,r,[o,s,c,l])}static solid(t,n,r){let i=e.rgba(t,n);return i.fill(0,r.r),i.fill(1,r.g),i.fill(2,r.b),i.fill(3,r.a??1),i}get channelCount(){return this.channels.length}get layout(){switch(this.channels.length){case 1:return`gray`;case 3:return`rgb`;default:return`rgba`}}get pixelCount(){return this.width*this.height}getChannel(e){if(e<0||e>=this.channels.length)throw Error(`Channel index ${e} out of bounds (0-${this.channels.length-1})`);return this.channels[e]}r(){return this.channels[0]}g(){return this.channels[Math.min(1,this.channels.length-1)]}b(){return this.channels[Math.min(2,this.channels.length-1)]}a(){return this.channels.length>=4?this.channels[3]:this.createOpaqueAlpha()}createOpaqueAlpha(){let e=new Float32Array(this.pixelCount);return e.fill(1),e}index(e,t){return t*this.width+e}getPixel(e,t){let n=this.index(e,t);return this.channels.map(e=>e[n])}setPixel(e,t,n){let r=this.index(e,t);for(let e=0;e<Math.min(n.length,this.channels.length);e++)this.channels[e][r]=n[e];this._dirty=!0}getValue(e,t,n=0){return this.channels[n][this.index(e,t)]}setValue(e,t,n,r){this.channels[n][this.index(e,t)]=r,this._dirty=!0}fill(e,t){this.channels[e].fill(t),this._dirty=!0}fillAll(e){for(let t=0;t<this.channels.length;t++)this.channels[t].fill(e[t]??0);this._dirty=!0}clone(){let t=this.channels.map(e=>new Float32Array(e));return new e(this.width,this.height,t,this.colorSpace)}emptyClone(){return new e(this.width,this.height,this.channels.map(()=>new Float32Array(this.pixelCount)),this.colorSpace)}markDirty(){this._dirty=!0}toGrayscale(){if(this.channels.length===1)return this.clone();let t=e.grayscale(this.width,this.height),n=t.channels[0],r=this.channels[0],i=this.channels[1],a=this.channels[2];for(let e=0;e<this.pixelCount;e++)n[e]=.2126*r[e]+.7152*i[e]+.0722*a[e];return t}toRGBA(){if(this.channels.length>=4)return this.clone();let t=e.rgba(this.width,this.height);if(this.channels.length===1){let e=this.channels[0];t.channels[0].set(e),t.channels[1].set(e),t.channels[2].set(e),t.channels[3].fill(1)}else this.channels.length===3&&(t.channels[0].set(this.channels[0]),t.channels[1].set(this.channels[1]),t.channels[2].set(this.channels[2]),t.channels[3].fill(1));return t}toImageData(){if(this._imageData&&!this._dirty)return this._imageData;let e=new ImageData(this.width,this.height),t=e.data,n=this.pixelCount,r=this.channels[0],i=this.channels.length>1?this.channels[1]:r,a=this.channels.length>2?this.channels[2]:r,o=this.channels.length>3,s=o?this.channels[3]:null;for(let e=0;e<n;e++){let n=e<<2,c;c=r[e]*255+.5|0,t[n]=c<0?0:c>255?255:c,c=i[e]*255+.5|0,t[n+1]=c<0?0:c>255?255:c,c=a[e]*255+.5|0,t[n+2]=c<0?0:c>255?255:c,o?(c=s[e]*255+.5|0,t[n+3]=c<0?0:c>255?255:c):t[n+3]=255}return this._imageData=e,e}toSurface(){if(this._canvas&&!this._dirty)return this._canvas;this._canvas||=Jh(this.width,this.height);let e=this._canvas.getContext(`2d`);if(!e)throw Error(`cascade: canvas has no 2D context`);return e.putImageData(this.toImageData(),0,0),this._dirty=!1,this._canvas}toCanvas(){return this.toSurface()}inBounds(e,t){return e>=0&&e<this.width&&t>=0&&t<this.height}wrapCoord(e,t,n){return n?(e%t+t)%t:Math.max(0,Math.min(t-1,e))}sample(e,t,n=0,r=!1){let i=Math.floor(e),a=Math.floor(t),o=i+1,s=a+1,c=e-i,l=t-a,u=this.channels[n],d=this.width,f=this.height,p=this.wrapCoord(i,d,r),m=this.wrapCoord(o,d,r),h=this.wrapCoord(a,f,r),g=this.wrapCoord(s,f,r),_=u[h*d+p],v=u[h*d+m],y=u[g*d+p],b=u[g*d+m],x=_*(1-c)+v*c,S=y*(1-c)+b*c;return x*(1-l)+S*l}samplePixel(e,t,n=!1){return this.channels.map((r,i)=>this.sample(e,t,i,n))}},sg={number:Zl.float,image:Zl.image,asset:Zl.asset,geometry:Zl.points,array:Zl.array,object:Zl.object,string:Zl.string,boolean:Zl.bool,color:Zl.color,any:Zl.any,trigger:`var(--type-trigger)`,inactive:`var(--wire-inactive)`};function cg(e){return e.portType===`trigger`?sg.trigger:e.value instanceof og||e.value instanceof HTMLCanvasElement||e.value instanceof HTMLImageElement||e.value instanceof OffscreenCanvas?sg.image:e.dataType&&e.dataType!==`any`?Ql(e.dataType):$l(e.value)?Zl.image:typeof e.value==`number`?sg.number:typeof e.value==`string`?sg.string:typeof e.value==`boolean`?sg.boolean:Array.isArray(e.value)?sg.array:e.value!==null&&typeof e.value==`object`?sg.object:sg.any}var lg=u(`<textarea class="annotation-input svelte-hiih8o" placeholder="Enter text..."></textarea>`),ug=u(`<div class="annotation-content svelte-hiih8o"><!></div>`),dg=u(`<div class="port annotation-port svelte-hiih8o" data-port-type="output" role="button" tabindex="0"><div class="port-dot svelte-hiih8o"></div></div>`),fg=u(`<div role="textbox" aria-label="Text annotation" tabindex="0"><!> <!></div>`);function pg(e,t){ee(t,!1);let n=Y(),i=Y(),s=Y(),c=Y(),u=V(t,`annotation`,8),d=V(t,`isSelected`,8,!1),p=V(t,`isEditing`,8,!1),m=V(t,`isDragging`,8,!1),h=xe(),g=Y();function _(){x(g)?.focus()}function y(){return x(g)}J(()=>A(u()),()=>{L(n,u().style||{})}),J(()=>A(u()),()=>{L(i,u().size?.width||540)}),J(()=>A(u()),()=>{L(s,u().size?.height||`auto`)}),J(()=>(x(n),x(i),x(s)),()=>{L(c,[`font-size: ${x(n).fontSize||14}px`,`font-weight: ${x(n).fontWeight||`normal`}`,`font-style: ${x(n).fontStyle||`normal`}`,`text-align: ${x(n).textAlign||`left`}`,`color: ${x(n).color||`var(--text-default)`}`,x(n).backgroundColor?`background-color: ${x(n).backgroundColor}`:``,`padding: ${x(n).padding||0}px`,`border-radius: ${x(n).borderRadius||0}px`,x(n).borderLeft?`border-left: ${x(n).borderLeft}`:``,`width: ${x(i)}px`,typeof x(s)==`number`?`min-height: ${x(s)}px`:``].filter(Boolean).join(`; `))}),he();var b={focusInput:_,getInputElement:y};ue();var S=fg();let C;var w=M(S),T=e=>{var t=lg();z(t),ge(t,e=>L(g,e),()=>x(g)),K(()=>{r(t,(A(u()),F(()=>u().content||``))),a(t,`width: ${x(i),x(n),F(()=>x(i)-(x(n).padding||8)*2)??``}px; min-height: ${x(s),x(n),F(()=>typeof x(s)==`number`?x(s)-(x(n).padding||8)*2:60)??``}px`)}),O(`blur`,t,()=>h(`finishEdit`)),O(`keydown`,t,e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)||e.key===`Escape`?h(`finishEdit`):e.key===`Delete`&&(e.metaKey||e.ctrlKey)&&h(`delete`,{id:u().id})}),O(`input`,t,e=>h(`input`,{id:u().id,event:e})),E(e,t)},D=e=>{var t=ug(),n=M(t),r=e=>{var t=te(),n=G(t);l(n,()=>(A(Uh),A(u()),F(()=>Uh(u().content)))),E(e,t)};Z(n,e=>{A(u()),F(()=>u().content)&&e(r)}),o(t),E(e,t)};Z(w,e=>{p()?e(T):e(D,-1)});var k=P(w,2),ne=e=>{var t=te(),n=G(t);f(n,1,()=>(A(u()),F(()=>u().outputs)),e=>e.id,(e,t)=>{let n=pe(()=>(A(u()),F(()=>u().size?.width||540))),r=pe(()=>(A(u()),F(()=>typeof u().size?.height==`number`?u().size.height:60))),i=pe(()=>(A(cg),x(t),F(()=>cg(x(t)))));var o=dg(),s=q(o);K(()=>{X(o,`data-node-id`,(A(u()),F(()=>u().id))),X(o,`data-port-id`,(x(t),F(()=>x(t).id))),a(o,`position: absolute; left: ${x(n)/2}px; top: ${x(r)??``}px; transform: translate(-50%, -50%);`),X(o,`aria-label`,`Output port ${x(t),F(()=>x(t).name)??``}`),a(s,`background-color: ${x(i)??``};`)}),O(`mousedown`,o,e=>h(`portMouseDown`,{nodeId:u().id,portId:x(t).id,portType:`output`,event:e})),E(e,o)}),E(e,t)};return Z(k,e=>{A(u()),F(()=>u().outputs&&u().outputs.length>0)&&e(ne)}),o(S),K(()=>{C=v(S,1,`annotation annotation-text svelte-hiih8o`,null,C,{selected:d(),editing:p(),dragging:m()}),X(S,`data-annotation-id`,(A(u()),F(()=>u().id))),a(S,`left: ${A(u()),F(()=>u().position.x)??``}px; top: ${A(u()),F(()=>u().position.y)??``}px; ${x(c)??``}`)}),O(`click`,S,e=>h(`click`,{id:u().id,event:e})),O(`dblclick`,S,e=>h(`dblclick`,{id:u().id,event:e})),O(`mousedown`,S,e=>h(`mousedown`,{id:u().id,event:e,width:x(i),height:typeof x(s)==`number`?x(s):60})),O(`mousemove`,S,e=>h(`mousemove`,{id:u().id,event:e,width:x(i),height:typeof x(s)==`number`?x(s):60})),O(`keydown`,S,e=>h(`keydown`,{id:u().id,event:e})),E(e,S),se(t,`focusInput`,_),se(t,`getInputElement`,y),Ee(b)}var mg=u(`<div class="annotation-caption svelte-3d90za"> </div>`),hg=u(`<div class="port annotation-port svelte-3d90za" data-port-type="output" role="button" tabindex="0"><div class="port-dot svelte-3d90za"></div></div>`),gg=u(`<div role="button" aria-label="Image annotation" tabindex="0"><img draggable="false" class="svelte-3d90za"/> <!> <!></div>`);function _g(e,t){ee(t,!1);let n=Y(),r=Y(),i=Y(),s=Y(),c=V(t,`annotation`,8),l=V(t,`isSelected`,8,!1),u=V(t,`isDragging`,8,!1),d=xe();J(()=>A(c()),()=>{L(n,c().size?.width||200)}),J(()=>A(c()),()=>{L(r,c().size?.height||150)}),J(()=>A(c()),()=>{L(i,c().src||``)}),J(()=>A(c()),()=>{L(s,c().caption||``)}),he(),ue();var p=gg();let m;var h=M(p),g=P(h,2),_=e=>{var t=mg(),n=q(t,!0);K(()=>D(n,x(s))),E(e,t)};Z(g,e=>{x(s)&&e(_)});var y=P(g,2),b=e=>{var t=te(),i=G(t);f(i,1,()=>(A(c()),F(()=>c().outputs)),e=>e.id,(e,t)=>{let i=pe(()=>(A(cg),x(t),F(()=>cg(x(t)))));var o=hg(),s=q(o);K(()=>{X(o,`data-node-id`,(A(c()),F(()=>c().id))),X(o,`data-port-id`,(x(t),F(()=>x(t).id))),a(o,`position: absolute; left: ${x(n)/2}px; top: ${x(r)??``}px; transform: translate(-50%, -50%);`),X(o,`aria-label`,`Output port ${x(t),F(()=>x(t).name)??``}`),a(s,`background-color: ${x(i)??``};`)}),O(`mousedown`,o,e=>d(`portMouseDown`,{nodeId:c().id,portId:x(t).id,portType:`output`,event:e})),E(e,o)}),E(e,t)};Z(y,e=>{A(c()),F(()=>c().outputs&&c().outputs.length>0)&&e(b)}),o(p),K(()=>{m=v(p,1,`annotation annotation-image svelte-3d90za`,null,m,{selected:l(),dragging:u()}),X(p,`data-annotation-id`,(A(c()),F(()=>c().id))),a(p,`left: ${A(c()),F(()=>c().position.x)??``}px; top: ${A(c()),F(()=>c().position.y)??``}px; width: ${x(n)??``}px; height: ${x(r)??``}px`),X(h,`src`,x(i)),X(h,`alt`,x(s))}),O(`dragstart`,h,e=>e.preventDefault()),O(`click`,p,e=>d(`click`,{id:c().id,event:e})),O(`dblclick`,p,e=>d(`dblclick`,{id:c().id,event:e})),O(`mousedown`,p,e=>{e.button===0&&(e.preventDefault(),d(`mousedown`,{id:c().id,event:e}))}),O(`dragstart`,p,e=>e.preventDefault()),O(`keydown`,p,e=>d(`keydown`,{id:c().id,event:e})),E(e,p),Ee()}var vg=u(`<input type="text" class="annotation-input svelte-xr9cig" placeholder="Group name..."/>`),yg=u(`<div class="group-header svelte-xr9cig"> </div>`),bg=u(`<div class="resize-handle resize-se svelte-xr9cig" role="button" aria-label="Resize southeast" tabindex="0"></div> <div class="resize-handle resize-sw svelte-xr9cig" role="button" aria-label="Resize southwest" tabindex="0"></div> <div class="resize-handle resize-ne svelte-xr9cig" role="button" aria-label="Resize northeast" tabindex="0"></div> <div class="resize-handle resize-nw svelte-xr9cig" role="button" aria-label="Resize northwest" tabindex="0"></div>`,1),xg=u(`<div role="button" aria-label="Group annotation" tabindex="0"><!> <!></div>`);function Sg(e,t){ee(t,!1);let n=Y(),i=Y(),s=Y(),c=V(t,`annotation`,8),l=V(t,`isSelected`,8,!1),u=V(t,`isEditing`,8,!1),d=V(t,`isDragging`,8,!1),f=xe(),p=Y();function m(){x(p)?.focus(),x(p)?.select()}function h(){return x(p)}J(()=>A(c()),()=>{L(n,c().size?.width||300)}),J(()=>A(c()),()=>{L(i,c().size?.height||200)}),J(()=>A(c()),()=>{L(s,c().content||`Group`)}),he();var g={focusInput:m,getInputElement:h};ue();var _=xg();let y;var b=M(_),S=e=>{var t=vg();re(t),ge(t,e=>L(p,e),()=>x(p)),K(()=>r(t,x(s))),O(`blur`,t,()=>f(`finishEdit`)),O(`keydown`,t,e=>{e.key===`Enter`||e.key===`Escape`?f(`finishEdit`):e.key===`Delete`&&(e.metaKey||e.ctrlKey)&&f(`delete`,{id:c().id})}),O(`input`,t,e=>f(`input`,{id:c().id,event:e})),E(e,t)},C=e=>{var t=yg(),n=q(t,!0);K(()=>D(n,x(s))),E(e,t)};Z(b,e=>{u()?e(S):e(C,-1)});var w=P(b,2),T=e=>{var t=bg(),n=G(t),r=P(n,2),i=P(r,2),a=P(i,2);O(`mousedown`,n,e=>f(`resizeStart`,{id:c().id,handle:`se`,event:e})),O(`mousedown`,r,e=>f(`resizeStart`,{id:c().id,handle:`sw`,event:e})),O(`mousedown`,i,e=>f(`resizeStart`,{id:c().id,handle:`ne`,event:e})),O(`mousedown`,a,e=>f(`resizeStart`,{id:c().id,handle:`nw`,event:e})),E(e,t)};return Z(w,e=>{l()&&!u()&&e(T)}),o(_),K(()=>{y=v(_,1,`annotation annotation-group svelte-xr9cig`,null,y,{selected:l(),editing:u(),dragging:d()}),X(_,`data-annotation-id`,(A(c()),F(()=>c().id))),a(_,`left: ${A(c()),F(()=>c().position.x)??``}px; top: ${A(c()),F(()=>c().position.y)??``}px; width: ${x(n)??``}px; height: ${x(i)??``}px`)}),O(`click`,_,e=>f(`click`,{id:c().id,event:e})),O(`dblclick`,_,e=>f(`dblclick`,{id:c().id,event:e})),O(`mousedown`,_,e=>{e.button===0&&f(`mousedown`,{id:c().id,event:e})}),O(`keydown`,_,e=>f(`keydown`,{id:c().id,event:e})),E(e,_),se(t,`focusInput`,m),se(t,`getInputElement`,h),Ee(g)}var Cg=m(`<svg role="button" aria-label="Line annotation" tabindex="0" style="position: absolute; left: 0; top: 0; pointer-events: none;"><line pointer-events="stroke" style="cursor: pointer;" class="svelte-os8h5j"></line></svg>`);function wg(e,t){ee(t,!1);let n=Y(),r=Y(),i=Y(),a=Y(),o=Y(),s=Y(),c=Y(),l=V(t,`annotation`,8),u=V(t,`isSelected`,8,!1),d=xe();J(()=>A(l()),()=>{L(n,l().style||{})}),J(()=>A(l()),()=>{L(r,l().position.x)}),J(()=>A(l()),()=>{L(i,l().position.y)}),J(()=>A(l()),()=>{L(a,l().endPosition?.x||l().position.x)}),J(()=>A(l()),()=>{L(o,l().endPosition?.y||l().position.y)}),J(()=>x(n),()=>{L(s,x(n).strokeWidth||2)}),J(()=>x(n),()=>{L(c,x(n).strokeColor||`var(--text-default)`)}),he(),ue();var f=Cg();let p;var m=q(f);K(()=>{p=v(f,0,`annotation annotation-line svelte-os8h5j`,null,p,{selected:u()}),X(f,`data-annotation-id`,(A(l()),F(()=>l().id))),X(m,`x1`,x(r)),X(m,`y1`,x(i)),X(m,`x2`,x(a)),X(m,`y2`,x(o)),X(m,`stroke`,x(c)),X(m,`stroke-width`,x(s))}),O(`click`,f,e=>d(`click`,{id:l().id,event:e})),O(`mousedown`,f,e=>d(`mousedown`,{id:l().id,event:e})),O(`keydown`,f,e=>d(`keydown`,{id:l().id,event:e})),E(e,f),Ee()}var Tg=m(`<svg role="button" aria-label="Polyline annotation" tabindex="0" style="position: absolute; left: 0; top: 0; pointer-events: none;"><path fill="none" pointer-events="stroke" style="cursor: pointer;" class="svelte-3cc9ql"></path></svg>`);function Eg(e,t){ee(t,!1);let n=Y(),r=Y(),i=Y(),a=Y(),o=Y(),s=V(t,`annotation`,8),c=V(t,`isSelected`,8,!1),l=xe();J(()=>A(s()),()=>{L(n,s().style||{})}),J(()=>A(s()),()=>{L(r,s().points||[])}),J(()=>x(n),()=>{L(i,x(n).strokeWidth||2)}),J(()=>x(n),()=>{L(a,x(n).strokeColor||`var(--text-default)`)}),J(()=>x(r),()=>{L(o,x(r).map((e,t)=>`${t===0?`M`:`L`} ${e.x} ${e.y}`).join(` `))}),he(),ue();var u=te(),d=G(u),f=e=>{var t=Tg();let n;var r=q(t);K(()=>{n=v(t,0,`annotation annotation-polyline svelte-3cc9ql`,null,n,{selected:c()}),X(t,`data-annotation-id`,(A(s()),F(()=>s().id))),X(r,`d`,x(o)),X(r,`stroke`,x(a)),X(r,`stroke-width`,x(i))}),O(`click`,t,e=>l(`click`,{id:s().id,event:e})),O(`mousedown`,t,e=>l(`mousedown`,{id:s().id,event:e})),O(`keydown`,t,e=>l(`keydown`,{id:s().id,event:e})),E(e,t)};Z(d,e=>{x(r),F(()=>x(r).length>0)&&e(f)}),E(e,u),Ee()}var Dg=new Map([[`Text`,pg],[`text`,pg],[`Image`,_g],[`image`,_g],[`Group`,Sg],[`group`,Sg],[`Line`,wg],[`line`,wg],[`Polyline`,Eg],[`polyline`,Eg]]),Og={id:`image`,label:`Image`,icon:`Palette`,categories:[{id:`create`,label:`Create`,nodes:[{name:`File`,icon:`FileImage`,description:`Load images from files`,type:`Image`},{name:`Color`,icon:`Square`,description:`Create a solid color canvas`,type:`Color`},{name:`Checkers`,icon:`Grid`,description:`Generate a checkerboard pattern`,type:`Checkers`},{name:`Noise`,icon:`Cloud`,description:`Generate procedural noise patterns`,type:`Noise`},{name:`Ramp`,icon:`Gradient`,description:`Generate color ramps`,type:`Ramp`},{name:`Text`,icon:`Type`,description:`Render text with customizable font and style`,type:`Text`}]},{id:`filter`,label:`Filter`,nodes:[{name:`Blur`,icon:`Droplets`,description:`Gaussian blur`,type:`Blur`},{name:`Normal Map`,icon:`Box`,description:`Compute normal map from height map`,type:`NormalMap`}]},{id:`transform`,label:`Transform`,nodes:[{name:`Transform`,icon:`Move`,description:`2D rotation, translation, and scaling`,type:`Transform`},{name:`Resize`,icon:`Maximize2`,description:`Scale or resize an image`,type:`Resize`}]},{id:`composite`,label:`Composite`,nodes:[{name:`Composite`,icon:`Layers`,description:`Blend two images together`,type:`Composite`}]}]},kg={id:`core`,label:`Core`,icon:`Workflow`,categories:[{id:`routing`,label:`Routing`,nodes:[{name:`Switch`,icon:`GitBranch`,description:`Switch between multiple inputs by index`,type:`Switch`},{name:`Merge`,icon:`GitMerge`,description:`Combine multiple inputs into an array`,type:`Merge`},{name:`Null`,icon:`Circle`,description:`Pass an input through unchanged`,type:`Null`}]},{id:`utility`,label:`Utility`,nodes:[{name:`Random`,icon:`Dice5`,description:`Generate a deterministic value from a seed`,type:`Random`},{name:`Remap`,icon:`ArrowRightLeft`,description:`Map a number from one range into another`,type:`Remap`},{name:`Select`,icon:`ListFilter`,description:`Pick an item from an array by index`,type:`Select`},{name:`Freeze`,icon:`Snowflake`,description:`Capture and lock a value`,type:`Freeze`}]},{id:`network`,label:`Network`,nodes:[{name:`Subnet`,icon:`Folder`,description:`Network container for organizing nodes`,type:`Subnet`},{name:`Input`,icon:`LogIn`,description:`External input to a subnet`,type:`Input`},{name:`Output`,icon:`LogOut`,description:`Defines subnet output`,type:`Output`}]}]},Ag={apiVersion:1,label:`Rectangle`,description:`A closed four-point polygon, counter-clockwise from bottom-left.`,icon:`Square`,runsOn:`portable`,inputs:{size:{kind:`data`,type:`vec2`,default:[1,1]},center:{kind:`data`,type:`vec2`,default:[0,0]}},outputs:{geometry:{kind:`data`,type:`geometry`}}},jg={apiVersion:1,label:`Circle`,description:`A closed circle, as one cubic Bezier chain or as a polygon of divisions segments.`,icon:`Circle`,runsOn:`portable`,inputs:{center:{kind:`data`,type:`vec2`,default:[0,0]},radius:{kind:`data`,type:`vec2`,default:[1,1]},divisions:{kind:`data`,type:`int`,default:32,min:3,step:1,description:`Segments of the polygonal form. Ignored by the Bezier form.`}},outputs:{geometry:{kind:`data`,type:`geometry`}},props:{type:{type:`string`,default:`bezier`,label:`Primitive Type`,control:`select`,options:[`bezier`,`poly`],description:`A Bezier circle is a circle; a polygon of any division count is visibly a polygon in print.`}}},Mg={apiVersion:1,label:`Transform`,description:`Translate, rotate and scale geometry about a pivot.`,icon:`Move`,runsOn:`portable`,inputs:{geometry:{kind:`data`,type:`geometry`},translate:{kind:`data`,type:`vec2`,default:[0,0]},rotate:{kind:`data`,type:`float`,default:0,description:`Degrees, counter-clockwise.`},scale:{kind:`data`,type:`vec2`,default:[1,1]},pivot:{kind:`data`,type:`vec2`,default:[0,0]}},outputs:{geometry:{kind:`data`,type:`geometry`}}},Ng={apiVersion:1,label:`Merge`,description:`Concatenate geometries, taking the union of their attributes.`,icon:`GitMerge`,runsOn:`portable`,inputs:{inputs:{kind:`data`,type:`geometry`,variadic:!0}},outputs:{geometry:{kind:`data`,type:`geometry`}}},Pg={apiVersion:1,label:`Copy to Points`,description:`Instance one geometry onto every point of another.`,icon:`Copy`,runsOn:`portable`,inputs:{source:{kind:`data`,type:`geometry`},target:{kind:`data`,type:`geometry`}},outputs:{geometry:{kind:`data`,type:`geometry`}},props:{targetGroup:{type:`string`,default:``,label:`Target Group`,description:`Copy onto this point group only; empty means every point.`},useTargetOrientations:{type:`bool`,default:!0,label:`Transform Using Target Point Orientations`,description:`Read pscale and N from the target points.`}}},Fg={apiVersion:1,label:`SVG Export`,description:`Write geometry as an SVG document, one group element per group.`,icon:`FileDown`,runsOn:`portable`,capabilities:[`assets`],inputs:{geometry:{kind:`data`,type:`geometry`}},outputs:{svg:{kind:`data`,type:`string`},asset:{kind:`data`,type:`asset`}},props:{filename:{type:`string`,default:`geometry.svg`,label:`Filename`},width:{type:`float`,default:0,min:0,label:`Width`,description:`0 derives the width from the geometry bounds.`},height:{type:`float`,default:0,min:0,label:`Height`},margin:{type:`float`,default:0,label:`Margin`},stroke:{type:`color`,default:[0,0,0,1],label:`Stroke`,description:`Fallback for a primitive with no Cd attribute.`},strokeWidth:{type:`float`,default:1,min:0,label:`Stroke Width`,description:`Fallback for a primitive with no width attribute.`},opacity:{type:`float`,default:1,min:0,max:1,label:`Opacity`,description:`Fallback for a primitive with no opacity attribute.`},fillMode:{type:`string`,default:`none`,label:`Fill Mode`,control:`select`,options:[`none`,`solid`],description:`none leaves primitives unfilled, which is what plotter work wants.`},fill:{type:`color`,default:[1,1,1,1],label:`Fill`,description:`Fill colour, used only when Fill Mode is solid.`},pointRadius:{type:`float`,default:.5,min:0,label:`Point Radius`,description:`Fallback radius for a loose point with no pscale.`},precision:{type:`int`,default:3,min:0,max:15,step:1,label:`Precision`,description:`Decimal places on emitted coordinates.`}}},Ig={id:`geo`,label:`Geometry`,icon:`Shapes`,categories:[{id:`geometry`,label:`Geometry`,nodes:Object.freeze([[`cascade.geo.Rectangle`,Ag],[`cascade.geo.Circle`,jg],[`cascade.geo.Transform`,Mg],[`cascade.geo.Merge`,Ng],[`cascade.geo.CopyToPoints`,Pg],[`cascade.geo.SvgExport`,Fg]]).map(([e,t])=>({name:t.label??e.split(`.`).pop(),icon:t.icon??`Shapes`,description:t.description??``,type:e}))}]},Lg=[{id:`annotations`,label:`Annotations`,icon:`StickyNote`,categories:[{id:`annotations`,label:`Annotations`,nodes:[{name:`Text`,icon:`Type`,description:`Add text annotation`,type:`annotation:text`},{name:`Image`,icon:`Image`,description:`Add image annotation`,type:`annotation:image`},{name:`Group`,icon:`Folder`,description:`Group elements together`,type:`annotation:group`},{name:`Line`,icon:`Minus`,description:`Draw a line`,type:`annotation:line`},{name:`Draw`,icon:`PenTool`,description:`Freehand drawing`,type:`annotation:polyline`}]}]},kg,Ig,Og];function Rg(e,t={}){return{id:`project`,label:`Project`,icon:`Package`,categories:[{id:`nodes`,label:`Nodes`,nodes:e.map(e=>({name:e.split(/[-_]/).filter(Boolean).map(e=>e[0]?.toUpperCase()+e.slice(1)).join(` `),icon:t[e]??`Settings`,description:`Project node · ${e}`,type:`project.${e}`}))}]}}var zg={name:`Custom`,icon:`Zap`,description:`Create custom node with your own code`,type:`Custom`},Bg={node:e=>`// ${e} - Custom Node
|
|
72
|
+
`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${Oh(e,!0)}</code>`}br(e){return`<br>`}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=kh(e);if(i===null)return r;e=i;let a=`<a href="`+e+`"`;return t&&(a+=` title="`+Oh(t)+`"`),a+=`>`+r+`</a>`,a}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=kh(e);if(i===null)return Oh(n);e=i;let a=`<img src="${e}" alt="${Oh(n)}"`;return t&&(a+=` title="${Oh(t)}"`),a+=`>`,a}text(e){return`tokens`in e&&e.tokens?this.parser.parseInline(e.tokens):`escaped`in e&&e.escaped?e.text:Oh(e.text)}},Bh=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return``+e}image({text:e}){return``+e}br(){return``}checkbox({raw:e}){return e}},Vh=class e{options;renderer;textRenderer;constructor(e){this.options=e||cm,this.options.renderer=this.options.renderer||new zh,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Bh}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(e){this.renderer.parser=this;let t=``;for(let n=0;n<e.length;n++){let r=e[n];if(this.options.extensions?.renderers?.[r.type]){let e=r,n=this.options.extensions.renderers[e.type].call({parser:this},e);if(n!==!1||![`space`,`hr`,`heading`,`code`,`table`,`blockquote`,`list`,`checkbox`,`html`,`def`,`paragraph`,`text`].includes(e.type)){t+=n||``;continue}}let i=r;switch(i.type){case`space`:t+=this.renderer.space(i);break;case`hr`:t+=this.renderer.hr(i);break;case`heading`:t+=this.renderer.heading(i);break;case`code`:t+=this.renderer.code(i);break;case`table`:t+=this.renderer.table(i);break;case`blockquote`:t+=this.renderer.blockquote(i);break;case`list`:t+=this.renderer.list(i);break;case`checkbox`:t+=this.renderer.checkbox(i);break;case`html`:t+=this.renderer.html(i);break;case`def`:t+=this.renderer.def(i);break;case`paragraph`:t+=this.renderer.paragraph(i);break;case`text`:t+=this.renderer.text(i);break;default:{let e=`Token with "`+i.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return t}parseInline(e,t=this.renderer){this.renderer.parser=this;let n=``;for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let e=this.options.extensions.renderers[i.type].call({parser:this},i);if(e!==!1||![`escape`,`html`,`link`,`image`,`checkbox`,`strong`,`em`,`codespan`,`br`,`del`,`text`].includes(i.type)){n+=e||``;continue}}let a=i;switch(a.type){case`escape`:n+=t.text(a);break;case`html`:n+=t.html(a);break;case`link`:n+=t.link(a);break;case`image`:n+=t.image(a);break;case`checkbox`:n+=t.checkbox(a);break;case`strong`:n+=t.strong(a);break;case`em`:n+=t.em(a);break;case`codespan`:n+=t.codespan(a);break;case`br`:n+=t.br(a);break;case`del`:n+=t.del(a);break;case`text`:n+=t.text(a);break;default:{let e=`Token with "`+a.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return n}},Hh=class{options;block;constructor(e){this.options=e||cm}static passThroughHooks=new Set([`preprocess`,`postprocess`,`processAllTokens`,`emStrongMask`]);static passThroughHooksRespectAsync=new Set([`preprocess`,`postprocess`,`processAllTokens`]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?Rh.lex:Rh.lexInline}provideParser(e=this.block){return e?Vh.parse:Vh.parseInline}},Uh=class{defaults=sm();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=Vh;Renderer=zh;TextRenderer=Bh;Lexer=Rh;Tokenizer=Lh;Hooks=Hh;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case`table`:{let e=r;for(let r of e.header)n=n.concat(this.walkTokens(r.tokens,t));for(let r of e.rows)for(let e of r)n=n.concat(this.walkTokens(e.tokens,t));break}case`list`:{let e=r;n=n.concat(this.walkTokens(e.items,t));break}default:{let e=r;this.defaults.extensions?.childTokens?.[e.type]?this.defaults.extensions.childTokens[e.type].forEach(r=>{let i=e[r].flat(1/0);n=n.concat(this.walkTokens(i,t))}):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach(e=>{if(!e.name)throw Error(`extension name required`);if(`renderer`in e){let n=t.renderers[e.name];n?t.renderers[e.name]=function(...t){let r=e.renderer.apply(this,t);return r===!1&&(r=n.apply(this,t)),r}:t.renderers[e.name]=e.renderer}if(`tokenizer`in e){if(!e.level||e.level!==`block`&&e.level!==`inline`)throw Error(`extension level must be 'block' or 'inline'`);let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&(e.level===`block`?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:e.level===`inline`&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}`childTokens`in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)}),n.extensions=t),e.renderer){let t=this.defaults.renderer||new zh(this.defaults);for(let n in e.renderer){if(!(n in t))throw Error(`renderer '${n}' does not exist`);if([`options`,`parser`].includes(n))continue;let r=n,i=e.renderer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n||``}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new Lh(this.defaults);for(let n in e.tokenizer){if(!(n in t))throw Error(`tokenizer '${n}' does not exist`);if([`options`,`rules`,`lexer`].includes(n))continue;let r=n,i=e.tokenizer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new Hh;for(let n in e.hooks){if(!(n in t))throw Error(`hook '${n}' does not exist`);if([`options`,`block`].includes(n))continue;let r=n,i=e.hooks[r],a=t[r];t[r]=Hh.passThroughHooks.has(n)?e=>{if(this.defaults.async&&Hh.passThroughHooksRespectAsync.has(n))return(async()=>{let n=await i.call(t,e);return a.call(t,n)})();let r=i.call(t,e);return a.call(t,r)}:(...e)=>{if(this.defaults.async)return(async()=>{let n=await i.apply(t,e);return n===!1&&(n=await a.apply(t,e)),n})();let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return Rh.lex(e,t??this.defaults)}parser(e,t){return Vh.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},i={...this.defaults,...r},a=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&r.async===!1)return a(Error(`marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.`));if(typeof t>`u`||t===null)return a(Error(`marked(): input parameter is undefined or null`));if(typeof t!=`string`)return a(Error(`marked(): input parameter is of type `+Object.prototype.toString.call(t)+`, string expected`));if(i.hooks&&(i.hooks.options=i,i.hooks.block=e),i.async)return(async()=>{let n=i.hooks?await i.hooks.preprocess(t):t,r=await(i.hooks?await i.hooks.provideLexer(e):e?Rh.lex:Rh.lexInline)(n,i),a=i.hooks?await i.hooks.processAllTokens(r):r;i.walkTokens&&await Promise.all(this.walkTokens(a,i.walkTokens));let o=await(i.hooks?await i.hooks.provideParser(e):e?Vh.parse:Vh.parseInline)(a,i);return i.hooks?await i.hooks.postprocess(o):o})().catch(a);try{i.hooks&&(t=i.hooks.preprocess(t));let n=(i.hooks?i.hooks.provideLexer(e):e?Rh.lex:Rh.lexInline)(t,i);i.hooks&&(n=i.hooks.processAllTokens(n)),i.walkTokens&&this.walkTokens(n,i.walkTokens);let r=(i.hooks?i.hooks.provideParser(e):e?Vh.parse:Vh.parseInline)(n,i);return i.hooks&&(r=i.hooks.postprocess(r)),r}catch(e){return a(e)}}}onError(e,t){return n=>{if(n.message+=`
|
|
73
|
+
Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error occurred:</p><pre>`+Oh(n.message+``,!0)+`</pre>`;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}},Wh=new Uh;function Gh(e,t){return Wh.parse(e,t)}Gh.options=Gh.setOptions=function(e){return Wh.setOptions(e),Gh.defaults=Wh.defaults,lm(Gh.defaults),Gh},Gh.getDefaults=sm,Gh.defaults=cm;function Kh(...e){return Wh.use(...e),Gh.defaults=Wh.defaults,lm(Gh.defaults),Gh}Gh.use=Kh,Gh.walkTokens=function(e,t){return Wh.walkTokens(e,t)},Gh.parseInline=Wh.parseInline,Gh.Parser=Vh,Gh.parser=Vh.parse,Gh.Renderer=zh,Gh.TextRenderer=Bh,Gh.Lexer=Rh,Gh.lexer=Rh.lex,Gh.Tokenizer=Lh,Gh.Hooks=Hh,Gh.parse=Gh,Gh.options,Gh.setOptions,Gh.walkTokens,Gh.parseInline,Vh.parse,Rh.lex;var qh=new Uh({breaks:!0,gfm:!0}),Jh=`p.br.hr.h1.h2.h3.h4.h5.h6.strong.em.del.s.b.i.ul.ol.li.blockquote.pre.code.a.img.table.thead.tbody.tr.th.td.input`.split(`.`),Yh=[`href`,`title`,`src`,`alt`,`align`,`start`,`type`,`checked`,`disabled`,`target`,`rel`];om.addHook(`afterSanitizeAttributes`,e=>{e.nodeName===`A`&&e.hasAttribute(`href`)&&(e.setAttribute(`target`,`_blank`),e.setAttribute(`rel`,`noopener noreferrer`))});function Xh(e){if(!e)return``;let t=qh.parse(e,{async:!1});return om.sanitize(t,{ALLOWED_TAGS:Jh,ALLOWED_ATTR:Yh,KEEP_CONTENT:!0})}var Zh=()=>globalThis,Qh=class extends Error{constructor(e){super(`Cascade has no ${e} in this environment. Install the optional '@napi-rs/canvas' renderer before cooking a graph that draws.`),this.name=`MissingRenderSurfaceError`}};function $h(){let e=Zh();return typeof e.document?.createElement==`function`?sg:typeof e.OffscreenCanvas==`function`?cg:null}function eg(){return $h()!==null}function tg(e,t){let n=$h();if(!n)throw new Qh(`drawing surface`);return n.createSurface(e,t)}function ng(e){let t=$h();if(!t)throw new Qh(`image decoder`);return t.decodeImage(e)}function rg(e){return e instanceof Uint8Array?e:new Uint8Array(e)}async function ig(e){let t=Zh();if(typeof t.createImageBitmap!=`function`||typeof e==`string`)return null;let n=e instanceof Uint8Array||e instanceof ArrayBuffer?typeof t.Blob==`function`?new t.Blob([rg(e)]):rg(e):e;return t.createImageBitmap(n)}async function ag(e){let t=Zh();if(typeof t.Image!=`function`)throw new Qh(`image decoder`);let n=new t.Image;if(typeof e==`string`?(/^(data:|blob:)/.test(e)||(n.crossOrigin=`anonymous`),n.src=e):n.src=e instanceof Uint8Array||e instanceof ArrayBuffer?rg(e):new Uint8Array(await e.arrayBuffer()),await n.decode(),!n.width||!n.height)throw Error(`cascade: could not decode image data`);return n}async function og(e){if(typeof e!=`string`){let t=await ig(e);if(t)return t}return ag(e)}var sg={name:`DOM canvas`,createSurface(e,t){let n=Zh().document.createElement(`canvas`);return n.width=e,n.height=t,n},decodeImage:og},cg={name:`OffscreenCanvas`,createSurface(e,t){let n=Zh().OffscreenCanvas;return new n(e,t)},decodeImage:og};function lg(e){return typeof e==`object`&&!!e&&typeof e.getContext==`function`}function ug(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.width!=`number`||typeof t.height!=`number`?!1:typeof t.getContext==`function`||`src`in t||typeof t.close==`function`}function dg(e){let t=e;return{width:t.naturalWidth||e.width,height:t.naturalHeight||e.height}}function fg(e,t){let n=e*t;if(!Number.isSafeInteger(e)||!Number.isSafeInteger(t)||e<1||t<1||!Number.isSafeInteger(n))throw RangeError(`Image dimensions must be positive safe integers; received ${e}×${t}`);return n}var pg=class e{constructor(e,t,n,r=`srgb`){this._canvas=null,this._imageData=null,this._dirty=!0,fg(e,t),this.width=e,this.height=t,this.channels=n,this.colorSpace=r,this._memoryBytes=n.reduce((e,t)=>e+t.byteLength,0)}get memoryBytes(){return this._memoryBytes}get memorySizeStr(){let e=this._memoryBytes;return e<1024?`${e}B`:e<1048576?`${(e/1024).toFixed(1)}KB`:`${(e/1048576).toFixed(2)}MB`}static grayscale(t,n){let r=fg(t,n);return new e(t,n,[new Float32Array(r)])}static rgb(t,n){let r=fg(t,n);return new e(t,n,[new Float32Array(r),new Float32Array(r),new Float32Array(r)])}static rgba(t,n){let r=fg(t,n);return new e(t,n,[new Float32Array(r),new Float32Array(r),new Float32Array(r),new Float32Array(r)])}static fromCanvas(t){if(lg(t)){let n=t.getContext(`2d`);if(!n)throw Error(`cascade: canvas has no 2D context`);return e.fromImageData(n.getImageData(0,0,t.width,t.height))}let{width:n,height:r}=dg(t),i=tg(n,r).getContext(`2d`);if(!i)throw Error(`cascade: canvas has no 2D context`);return i.drawImage(t,0,0),e.fromImageData(i.getImageData(0,0,n,r))}static fromImageData(t){let{width:n,height:r,data:i}=t,a=n*r,o=new Float32Array(a),s=new Float32Array(a),c=new Float32Array(a),l=new Float32Array(a),u=1/255;for(let e=0;e<a;e++){let t=e*4;o[e]=i[t]*u,s[e]=i[t+1]*u,c[e]=i[t+2]*u,l[e]=i[t+3]*u}return new e(n,r,[o,s,c,l])}static solid(t,n,r){let i=e.rgba(t,n);return i.fill(0,r.r),i.fill(1,r.g),i.fill(2,r.b),i.fill(3,r.a??1),i}get channelCount(){return this.channels.length}get layout(){switch(this.channels.length){case 1:return`gray`;case 3:return`rgb`;default:return`rgba`}}get pixelCount(){return this.width*this.height}getChannel(e){if(e<0||e>=this.channels.length)throw Error(`Channel index ${e} out of bounds (0-${this.channels.length-1})`);return this.channels[e]}r(){return this.channels[0]}g(){return this.channels[Math.min(1,this.channels.length-1)]}b(){return this.channels[Math.min(2,this.channels.length-1)]}a(){return this.channels.length>=4?this.channels[3]:this.createOpaqueAlpha()}createOpaqueAlpha(){let e=new Float32Array(this.pixelCount);return e.fill(1),e}index(e,t){return t*this.width+e}getPixel(e,t){let n=this.index(e,t);return this.channels.map(e=>e[n])}setPixel(e,t,n){let r=this.index(e,t);for(let e=0;e<Math.min(n.length,this.channels.length);e++)this.channels[e][r]=n[e];this._dirty=!0}getValue(e,t,n=0){return this.channels[n][this.index(e,t)]}setValue(e,t,n,r){this.channels[n][this.index(e,t)]=r,this._dirty=!0}fill(e,t){this.channels[e].fill(t),this._dirty=!0}fillAll(e){for(let t=0;t<this.channels.length;t++)this.channels[t].fill(e[t]??0);this._dirty=!0}clone(){let t=this.channels.map(e=>new Float32Array(e));return new e(this.width,this.height,t,this.colorSpace)}emptyClone(){return new e(this.width,this.height,this.channels.map(()=>new Float32Array(this.pixelCount)),this.colorSpace)}markDirty(){this._dirty=!0}toGrayscale(){if(this.channels.length===1)return this.clone();let t=e.grayscale(this.width,this.height),n=t.channels[0],r=this.channels[0],i=this.channels[1],a=this.channels[2];for(let e=0;e<this.pixelCount;e++)n[e]=.2126*r[e]+.7152*i[e]+.0722*a[e];return t}toRGBA(){if(this.channels.length>=4)return this.clone();let t=e.rgba(this.width,this.height);if(this.channels.length===1){let e=this.channels[0];t.channels[0].set(e),t.channels[1].set(e),t.channels[2].set(e),t.channels[3].fill(1)}else this.channels.length===3&&(t.channels[0].set(this.channels[0]),t.channels[1].set(this.channels[1]),t.channels[2].set(this.channels[2]),t.channels[3].fill(1));return t}toImageData(){if(this._imageData&&!this._dirty)return this._imageData;let e=new ImageData(this.width,this.height),t=e.data,n=this.pixelCount,r=this.channels[0],i=this.channels.length>1?this.channels[1]:r,a=this.channels.length>2?this.channels[2]:r,o=this.channels.length>3,s=o?this.channels[3]:null;for(let e=0;e<n;e++){let n=e<<2,c;c=r[e]*255+.5|0,t[n]=c<0?0:c>255?255:c,c=i[e]*255+.5|0,t[n+1]=c<0?0:c>255?255:c,c=a[e]*255+.5|0,t[n+2]=c<0?0:c>255?255:c,o?(c=s[e]*255+.5|0,t[n+3]=c<0?0:c>255?255:c):t[n+3]=255}return this._imageData=e,e}toSurface(){if(this._canvas&&!this._dirty)return this._canvas;this._canvas||=tg(this.width,this.height);let e=this._canvas.getContext(`2d`);if(!e)throw Error(`cascade: canvas has no 2D context`);return e.putImageData(this.toImageData(),0,0),this._dirty=!1,this._canvas}toCanvas(){return this.toSurface()}inBounds(e,t){return e>=0&&e<this.width&&t>=0&&t<this.height}wrapCoord(e,t,n){return n?(e%t+t)%t:Math.max(0,Math.min(t-1,e))}sample(e,t,n=0,r=!1){let i=Math.floor(e),a=Math.floor(t),o=i+1,s=a+1,c=e-i,l=t-a,u=this.channels[n],d=this.width,f=this.height,p=this.wrapCoord(i,d,r),m=this.wrapCoord(o,d,r),h=this.wrapCoord(a,f,r),g=this.wrapCoord(s,f,r),_=u[h*d+p],v=u[h*d+m],y=u[g*d+p],b=u[g*d+m],x=_*(1-c)+v*c,S=y*(1-c)+b*c;return x*(1-l)+S*l}samplePixel(e,t,n=!1){return this.channels.map((r,i)=>this.sample(e,t,i,n))}},mg={number:Zl.float,image:Zl.image,asset:Zl.asset,geometry:Zl.points,array:Zl.array,object:Zl.object,string:Zl.string,boolean:Zl.bool,color:Zl.color,any:Zl.any,trigger:`var(--type-trigger)`,inactive:`var(--wire-inactive)`};function hg(e){return e.portType===`trigger`?mg.trigger:e.value instanceof pg||e.value instanceof HTMLCanvasElement||e.value instanceof HTMLImageElement||e.value instanceof OffscreenCanvas?mg.image:e.dataType&&e.dataType!==`any`?Ql(e.dataType):$l(e.value)?Zl.image:typeof e.value==`number`?mg.number:typeof e.value==`string`?mg.string:typeof e.value==`boolean`?mg.boolean:Array.isArray(e.value)?mg.array:e.value!==null&&typeof e.value==`object`?mg.object:mg.any}var gg=u(`<textarea class="annotation-input svelte-hiih8o" placeholder="Enter text..."></textarea>`),_g=u(`<div class="annotation-content svelte-hiih8o"><!></div>`),vg=u(`<div class="port annotation-port svelte-hiih8o" data-port-type="output" role="button" tabindex="0"><div class="port-dot svelte-hiih8o"></div></div>`),yg=u(`<div role="textbox" aria-label="Text annotation" tabindex="0"><!> <!></div>`);function bg(e,t){ee(t,!1);let n=Y(),i=Y(),s=Y(),c=Y(),u=V(t,`annotation`,8),d=V(t,`isSelected`,8,!1),p=V(t,`isEditing`,8,!1),m=V(t,`isDragging`,8,!1),h=xe(),g=Y();function _(){x(g)?.focus()}function y(){return x(g)}J(()=>A(u()),()=>{L(n,u().style||{})}),J(()=>A(u()),()=>{L(i,u().size?.width||540)}),J(()=>A(u()),()=>{L(s,u().size?.height||`auto`)}),J(()=>(x(n),x(i),x(s)),()=>{L(c,[`font-size: ${x(n).fontSize||14}px`,`font-weight: ${x(n).fontWeight||`normal`}`,`font-style: ${x(n).fontStyle||`normal`}`,`text-align: ${x(n).textAlign||`left`}`,`color: ${x(n).color||`var(--text-default)`}`,x(n).backgroundColor?`background-color: ${x(n).backgroundColor}`:``,`padding: ${x(n).padding||0}px`,`border-radius: ${x(n).borderRadius||0}px`,x(n).borderLeft?`border-left: ${x(n).borderLeft}`:``,`width: ${x(i)}px`,typeof x(s)==`number`?`min-height: ${x(s)}px`:``].filter(Boolean).join(`; `))}),he();var b={focusInput:_,getInputElement:y};ue();var S=yg();let C;var w=M(S),T=e=>{var t=gg();z(t),ge(t,e=>L(g,e),()=>x(g)),K(()=>{r(t,(A(u()),F(()=>u().content||``))),a(t,`width: ${x(i),x(n),F(()=>x(i)-(x(n).padding||8)*2)??``}px; min-height: ${x(s),x(n),F(()=>typeof x(s)==`number`?x(s)-(x(n).padding||8)*2:60)??``}px`)}),O(`blur`,t,()=>h(`finishEdit`)),O(`keydown`,t,e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)||e.key===`Escape`?h(`finishEdit`):e.key===`Delete`&&(e.metaKey||e.ctrlKey)&&h(`delete`,{id:u().id})}),O(`input`,t,e=>h(`input`,{id:u().id,event:e})),E(e,t)},D=e=>{var t=_g(),n=M(t),r=e=>{var t=te(),n=G(t);l(n,()=>(A(Xh),A(u()),F(()=>Xh(u().content)))),E(e,t)};Z(n,e=>{A(u()),F(()=>u().content)&&e(r)}),o(t),E(e,t)};Z(w,e=>{p()?e(T):e(D,-1)});var k=P(w,2),ne=e=>{var t=te(),n=G(t);f(n,1,()=>(A(u()),F(()=>u().outputs)),e=>e.id,(e,t)=>{let n=pe(()=>(A(u()),F(()=>u().size?.width||540))),r=pe(()=>(A(u()),F(()=>typeof u().size?.height==`number`?u().size.height:60))),i=pe(()=>(A(hg),x(t),F(()=>hg(x(t)))));var o=vg(),s=q(o);K(()=>{X(o,`data-node-id`,(A(u()),F(()=>u().id))),X(o,`data-port-id`,(x(t),F(()=>x(t).id))),a(o,`position: absolute; left: ${x(n)/2}px; top: ${x(r)??``}px; transform: translate(-50%, -50%);`),X(o,`aria-label`,`Output port ${x(t),F(()=>x(t).name)??``}`),a(s,`background-color: ${x(i)??``};`)}),O(`mousedown`,o,e=>h(`portMouseDown`,{nodeId:u().id,portId:x(t).id,portType:`output`,event:e})),E(e,o)}),E(e,t)};return Z(k,e=>{A(u()),F(()=>u().outputs&&u().outputs.length>0)&&e(ne)}),o(S),K(()=>{C=v(S,1,`annotation annotation-text svelte-hiih8o`,null,C,{selected:d(),editing:p(),dragging:m()}),X(S,`data-annotation-id`,(A(u()),F(()=>u().id))),a(S,`left: ${A(u()),F(()=>u().position.x)??``}px; top: ${A(u()),F(()=>u().position.y)??``}px; ${x(c)??``}`)}),O(`click`,S,e=>h(`click`,{id:u().id,event:e})),O(`dblclick`,S,e=>h(`dblclick`,{id:u().id,event:e})),O(`mousedown`,S,e=>h(`mousedown`,{id:u().id,event:e,width:x(i),height:typeof x(s)==`number`?x(s):60})),O(`mousemove`,S,e=>h(`mousemove`,{id:u().id,event:e,width:x(i),height:typeof x(s)==`number`?x(s):60})),O(`keydown`,S,e=>h(`keydown`,{id:u().id,event:e})),E(e,S),se(t,`focusInput`,_),se(t,`getInputElement`,y),Ee(b)}var xg=u(`<div class="annotation-caption svelte-3d90za"> </div>`),Sg=u(`<div class="port annotation-port svelte-3d90za" data-port-type="output" role="button" tabindex="0"><div class="port-dot svelte-3d90za"></div></div>`),Cg=u(`<div role="button" aria-label="Image annotation" tabindex="0"><img draggable="false" class="svelte-3d90za"/> <!> <!></div>`);function wg(e,t){ee(t,!1);let n=Y(),r=Y(),i=Y(),s=Y(),c=V(t,`annotation`,8),l=V(t,`isSelected`,8,!1),u=V(t,`isDragging`,8,!1),d=xe();J(()=>A(c()),()=>{L(n,c().size?.width||200)}),J(()=>A(c()),()=>{L(r,c().size?.height||150)}),J(()=>A(c()),()=>{L(i,c().src||``)}),J(()=>A(c()),()=>{L(s,c().caption||``)}),he(),ue();var p=Cg();let m;var h=M(p),g=P(h,2),_=e=>{var t=xg(),n=q(t,!0);K(()=>D(n,x(s))),E(e,t)};Z(g,e=>{x(s)&&e(_)});var y=P(g,2),b=e=>{var t=te(),i=G(t);f(i,1,()=>(A(c()),F(()=>c().outputs)),e=>e.id,(e,t)=>{let i=pe(()=>(A(hg),x(t),F(()=>hg(x(t)))));var o=Sg(),s=q(o);K(()=>{X(o,`data-node-id`,(A(c()),F(()=>c().id))),X(o,`data-port-id`,(x(t),F(()=>x(t).id))),a(o,`position: absolute; left: ${x(n)/2}px; top: ${x(r)??``}px; transform: translate(-50%, -50%);`),X(o,`aria-label`,`Output port ${x(t),F(()=>x(t).name)??``}`),a(s,`background-color: ${x(i)??``};`)}),O(`mousedown`,o,e=>d(`portMouseDown`,{nodeId:c().id,portId:x(t).id,portType:`output`,event:e})),E(e,o)}),E(e,t)};Z(y,e=>{A(c()),F(()=>c().outputs&&c().outputs.length>0)&&e(b)}),o(p),K(()=>{m=v(p,1,`annotation annotation-image svelte-3d90za`,null,m,{selected:l(),dragging:u()}),X(p,`data-annotation-id`,(A(c()),F(()=>c().id))),a(p,`left: ${A(c()),F(()=>c().position.x)??``}px; top: ${A(c()),F(()=>c().position.y)??``}px; width: ${x(n)??``}px; height: ${x(r)??``}px`),X(h,`src`,x(i)),X(h,`alt`,x(s))}),O(`dragstart`,h,e=>e.preventDefault()),O(`click`,p,e=>d(`click`,{id:c().id,event:e})),O(`dblclick`,p,e=>d(`dblclick`,{id:c().id,event:e})),O(`mousedown`,p,e=>{e.button===0&&(e.preventDefault(),d(`mousedown`,{id:c().id,event:e}))}),O(`dragstart`,p,e=>e.preventDefault()),O(`keydown`,p,e=>d(`keydown`,{id:c().id,event:e})),E(e,p),Ee()}var Tg=u(`<input type="text" class="annotation-input svelte-xr9cig" placeholder="Group name..."/>`),Eg=u(`<div class="group-header svelte-xr9cig"> </div>`),Dg=u(`<div class="resize-handle resize-se svelte-xr9cig" role="button" aria-label="Resize southeast" tabindex="0"></div> <div class="resize-handle resize-sw svelte-xr9cig" role="button" aria-label="Resize southwest" tabindex="0"></div> <div class="resize-handle resize-ne svelte-xr9cig" role="button" aria-label="Resize northeast" tabindex="0"></div> <div class="resize-handle resize-nw svelte-xr9cig" role="button" aria-label="Resize northwest" tabindex="0"></div>`,1),Og=u(`<div role="button" aria-label="Group annotation" tabindex="0"><!> <!></div>`);function kg(e,t){ee(t,!1);let n=Y(),i=Y(),s=Y(),c=V(t,`annotation`,8),l=V(t,`isSelected`,8,!1),u=V(t,`isEditing`,8,!1),d=V(t,`isDragging`,8,!1),f=xe(),p=Y();function m(){x(p)?.focus(),x(p)?.select()}function h(){return x(p)}J(()=>A(c()),()=>{L(n,c().size?.width||300)}),J(()=>A(c()),()=>{L(i,c().size?.height||200)}),J(()=>A(c()),()=>{L(s,c().content||`Group`)}),he();var g={focusInput:m,getInputElement:h};ue();var _=Og();let y;var b=M(_),S=e=>{var t=Tg();re(t),ge(t,e=>L(p,e),()=>x(p)),K(()=>r(t,x(s))),O(`blur`,t,()=>f(`finishEdit`)),O(`keydown`,t,e=>{e.key===`Enter`||e.key===`Escape`?f(`finishEdit`):e.key===`Delete`&&(e.metaKey||e.ctrlKey)&&f(`delete`,{id:c().id})}),O(`input`,t,e=>f(`input`,{id:c().id,event:e})),E(e,t)},C=e=>{var t=Eg(),n=q(t,!0);K(()=>D(n,x(s))),E(e,t)};Z(b,e=>{u()?e(S):e(C,-1)});var w=P(b,2),T=e=>{var t=Dg(),n=G(t),r=P(n,2),i=P(r,2),a=P(i,2);O(`mousedown`,n,e=>f(`resizeStart`,{id:c().id,handle:`se`,event:e})),O(`mousedown`,r,e=>f(`resizeStart`,{id:c().id,handle:`sw`,event:e})),O(`mousedown`,i,e=>f(`resizeStart`,{id:c().id,handle:`ne`,event:e})),O(`mousedown`,a,e=>f(`resizeStart`,{id:c().id,handle:`nw`,event:e})),E(e,t)};return Z(w,e=>{l()&&!u()&&e(T)}),o(_),K(()=>{y=v(_,1,`annotation annotation-group svelte-xr9cig`,null,y,{selected:l(),editing:u(),dragging:d()}),X(_,`data-annotation-id`,(A(c()),F(()=>c().id))),a(_,`left: ${A(c()),F(()=>c().position.x)??``}px; top: ${A(c()),F(()=>c().position.y)??``}px; width: ${x(n)??``}px; height: ${x(i)??``}px`)}),O(`click`,_,e=>f(`click`,{id:c().id,event:e})),O(`dblclick`,_,e=>f(`dblclick`,{id:c().id,event:e})),O(`mousedown`,_,e=>{e.button===0&&f(`mousedown`,{id:c().id,event:e})}),O(`keydown`,_,e=>f(`keydown`,{id:c().id,event:e})),E(e,_),se(t,`focusInput`,m),se(t,`getInputElement`,h),Ee(g)}var Ag=m(`<svg role="button" aria-label="Line annotation" tabindex="0" style="position: absolute; left: 0; top: 0; pointer-events: none;"><line pointer-events="stroke" style="cursor: pointer;" class="svelte-os8h5j"></line></svg>`);function jg(e,t){ee(t,!1);let n=Y(),r=Y(),i=Y(),a=Y(),o=Y(),s=Y(),c=Y(),l=V(t,`annotation`,8),u=V(t,`isSelected`,8,!1),d=xe();J(()=>A(l()),()=>{L(n,l().style||{})}),J(()=>A(l()),()=>{L(r,l().position.x)}),J(()=>A(l()),()=>{L(i,l().position.y)}),J(()=>A(l()),()=>{L(a,l().endPosition?.x||l().position.x)}),J(()=>A(l()),()=>{L(o,l().endPosition?.y||l().position.y)}),J(()=>x(n),()=>{L(s,x(n).strokeWidth||2)}),J(()=>x(n),()=>{L(c,x(n).strokeColor||`var(--text-default)`)}),he(),ue();var f=Ag();let p;var m=q(f);K(()=>{p=v(f,0,`annotation annotation-line svelte-os8h5j`,null,p,{selected:u()}),X(f,`data-annotation-id`,(A(l()),F(()=>l().id))),X(m,`x1`,x(r)),X(m,`y1`,x(i)),X(m,`x2`,x(a)),X(m,`y2`,x(o)),X(m,`stroke`,x(c)),X(m,`stroke-width`,x(s))}),O(`click`,f,e=>d(`click`,{id:l().id,event:e})),O(`mousedown`,f,e=>d(`mousedown`,{id:l().id,event:e})),O(`keydown`,f,e=>d(`keydown`,{id:l().id,event:e})),E(e,f),Ee()}var Mg=m(`<svg role="button" aria-label="Polyline annotation" tabindex="0" style="position: absolute; left: 0; top: 0; pointer-events: none;"><path fill="none" pointer-events="stroke" style="cursor: pointer;" class="svelte-3cc9ql"></path></svg>`);function Ng(e,t){ee(t,!1);let n=Y(),r=Y(),i=Y(),a=Y(),o=Y(),s=V(t,`annotation`,8),c=V(t,`isSelected`,8,!1),l=xe();J(()=>A(s()),()=>{L(n,s().style||{})}),J(()=>A(s()),()=>{L(r,s().points||[])}),J(()=>x(n),()=>{L(i,x(n).strokeWidth||2)}),J(()=>x(n),()=>{L(a,x(n).strokeColor||`var(--text-default)`)}),J(()=>x(r),()=>{L(o,x(r).map((e,t)=>`${t===0?`M`:`L`} ${e.x} ${e.y}`).join(` `))}),he(),ue();var u=te(),d=G(u),f=e=>{var t=Mg();let n;var r=q(t);K(()=>{n=v(t,0,`annotation annotation-polyline svelte-3cc9ql`,null,n,{selected:c()}),X(t,`data-annotation-id`,(A(s()),F(()=>s().id))),X(r,`d`,x(o)),X(r,`stroke`,x(a)),X(r,`stroke-width`,x(i))}),O(`click`,t,e=>l(`click`,{id:s().id,event:e})),O(`mousedown`,t,e=>l(`mousedown`,{id:s().id,event:e})),O(`keydown`,t,e=>l(`keydown`,{id:s().id,event:e})),E(e,t)};Z(d,e=>{x(r),F(()=>x(r).length>0)&&e(f)}),E(e,u),Ee()}var Pg=new Map([[`Text`,bg],[`text`,bg],[`Image`,wg],[`image`,wg],[`Group`,kg],[`group`,kg],[`Line`,jg],[`line`,jg],[`Polyline`,Ng],[`polyline`,Ng]]),Fg={id:`image`,label:`Image`,icon:`Palette`,categories:[{id:`create`,label:`Create`,nodes:[{name:`File`,icon:`FileImage`,description:`Load images from files`,type:`Image`},{name:`Color`,icon:`Square`,description:`Create a solid color canvas`,type:`Color`},{name:`Checkers`,icon:`Grid`,description:`Generate a checkerboard pattern`,type:`Checkers`},{name:`Noise`,icon:`Cloud`,description:`Generate procedural noise patterns`,type:`Noise`},{name:`Ramp`,icon:`Gradient`,description:`Generate color ramps`,type:`Ramp`},{name:`Text`,icon:`Type`,description:`Render text with customizable font and style`,type:`Text`}]},{id:`filter`,label:`Filter`,nodes:[{name:`Blur`,icon:`Droplets`,description:`Gaussian blur`,type:`Blur`},{name:`Normal Map`,icon:`Box`,description:`Compute normal map from height map`,type:`NormalMap`}]},{id:`transform`,label:`Transform`,nodes:[{name:`Transform`,icon:`Move`,description:`2D rotation, translation, and scaling`,type:`Transform`},{name:`Resize`,icon:`Maximize2`,description:`Scale or resize an image`,type:`Resize`}]},{id:`composite`,label:`Composite`,nodes:[{name:`Composite`,icon:`Layers`,description:`Blend two images together`,type:`Composite`}]}]},Ig={id:`core`,label:`Core`,icon:`Workflow`,categories:[{id:`routing`,label:`Routing`,nodes:[{name:`Switch`,icon:`GitBranch`,description:`Switch between multiple inputs by index`,type:`Switch`},{name:`Merge`,icon:`GitMerge`,description:`Combine multiple inputs into an array`,type:`Merge`},{name:`Null`,icon:`Circle`,description:`Pass an input through unchanged`,type:`Null`}]},{id:`utility`,label:`Utility`,nodes:[{name:`Random`,icon:`Dice5`,description:`Generate a deterministic value from a seed`,type:`Random`},{name:`Remap`,icon:`ArrowRightLeft`,description:`Map a number from one range into another`,type:`Remap`},{name:`Select`,icon:`ListFilter`,description:`Pick an item from an array by index`,type:`Select`},{name:`Freeze`,icon:`Snowflake`,description:`Capture and lock a value`,type:`Freeze`}]},{id:`network`,label:`Network`,nodes:[{name:`Subnet`,icon:`Folder`,description:`Network container for organizing nodes`,type:`Subnet`},{name:`Input`,icon:`LogIn`,description:`External input to a subnet`,type:`Input`},{name:`Output`,icon:`LogOut`,description:`Defines subnet output`,type:`Output`}]}]},Lg={apiVersion:1,label:`Rectangle`,description:`A closed four-point polygon, counter-clockwise from bottom-left.`,icon:`Square`,runsOn:`portable`,inputs:{size:{kind:`data`,type:`vec2`,default:[1,1]},center:{kind:`data`,type:`vec2`,default:[0,0]}},outputs:{geometry:{kind:`data`,type:`geometry`}}},Rg={apiVersion:1,label:`Circle`,description:`A closed circle, as one cubic Bezier chain or as a polygon of divisions segments.`,icon:`Circle`,runsOn:`portable`,inputs:{center:{kind:`data`,type:`vec2`,default:[0,0]},radius:{kind:`data`,type:`vec2`,default:[1,1]},divisions:{kind:`data`,type:`int`,default:32,min:3,step:1,description:`Segments of the polygonal form. Ignored by the Bezier form.`}},outputs:{geometry:{kind:`data`,type:`geometry`}},props:{type:{type:`string`,default:`bezier`,label:`Primitive Type`,control:`select`,options:[`bezier`,`poly`],description:`A Bezier circle is a circle; a polygon of any division count is visibly a polygon in print.`}}},zg={apiVersion:1,label:`Transform`,description:`Translate, rotate and scale geometry about a pivot.`,icon:`Move`,runsOn:`portable`,inputs:{geometry:{kind:`data`,type:`geometry`},translate:{kind:`data`,type:`vec2`,default:[0,0]},rotate:{kind:`data`,type:`float`,default:0,description:`Degrees, counter-clockwise.`},scale:{kind:`data`,type:`vec2`,default:[1,1]},pivot:{kind:`data`,type:`vec2`,default:[0,0]}},outputs:{geometry:{kind:`data`,type:`geometry`}}},Bg={apiVersion:1,label:`Merge`,description:`Concatenate geometries, taking the union of their attributes.`,icon:`GitMerge`,runsOn:`portable`,inputs:{inputs:{kind:`data`,type:`geometry`,variadic:!0}},outputs:{geometry:{kind:`data`,type:`geometry`}}},Vg={apiVersion:1,label:`Copy to Points`,description:`Instance one geometry onto every point of another.`,icon:`Copy`,runsOn:`portable`,inputs:{source:{kind:`data`,type:`geometry`},target:{kind:`data`,type:`geometry`}},outputs:{geometry:{kind:`data`,type:`geometry`}},props:{targetGroup:{type:`string`,default:``,label:`Target Group`,description:`Copy onto this point group only; empty means every point.`},useTargetOrientations:{type:`bool`,default:!0,label:`Transform Using Target Point Orientations`,description:`Read pscale and N from the target points.`}}},Hg={apiVersion:1,label:`SVG Export`,description:`Write geometry as an SVG document, one group element per group.`,icon:`FileDown`,runsOn:`portable`,capabilities:[`assets`],inputs:{geometry:{kind:`data`,type:`geometry`}},outputs:{svg:{kind:`data`,type:`string`},asset:{kind:`data`,type:`asset`}},props:{filename:{type:`string`,default:`geometry.svg`,label:`Filename`},width:{type:`float`,default:0,min:0,label:`Width`,description:`0 derives the width from the geometry bounds.`},height:{type:`float`,default:0,min:0,label:`Height`},margin:{type:`float`,default:0,label:`Margin`},stroke:{type:`color`,default:[0,0,0,1],label:`Stroke`,description:`Fallback for a primitive with no Cd attribute.`},strokeWidth:{type:`float`,default:1,min:0,label:`Stroke Width`,description:`Fallback for a primitive with no width attribute.`},opacity:{type:`float`,default:1,min:0,max:1,label:`Opacity`,description:`Fallback for a primitive with no opacity attribute.`},fillMode:{type:`string`,default:`none`,label:`Fill Mode`,control:`select`,options:[`none`,`solid`],description:`none leaves primitives unfilled, which is what plotter work wants.`},fill:{type:`color`,default:[1,1,1,1],label:`Fill`,description:`Fill colour, used only when Fill Mode is solid.`},pointRadius:{type:`float`,default:.5,min:0,label:`Point Radius`,description:`Fallback radius for a loose point with no pscale.`},precision:{type:`int`,default:3,min:0,max:15,step:1,label:`Precision`,description:`Decimal places on emitted coordinates.`}}},Ug={id:`geo`,label:`Geometry`,icon:`Shapes`,categories:[{id:`geometry`,label:`Geometry`,nodes:Object.freeze([[`cascade.geo.Rectangle`,Lg],[`cascade.geo.Circle`,Rg],[`cascade.geo.Transform`,zg],[`cascade.geo.Merge`,Bg],[`cascade.geo.CopyToPoints`,Vg],[`cascade.geo.SvgExport`,Hg]]).map(([e,t])=>({name:t.label??e.split(`.`).pop(),icon:t.icon??`Shapes`,description:t.description??``,type:e}))}]},Wg=[{id:`annotations`,label:`Annotations`,icon:`StickyNote`,categories:[{id:`annotations`,label:`Annotations`,nodes:[{name:`Text`,icon:`Type`,description:`Add text annotation`,type:`annotation:text`},{name:`Image`,icon:`Image`,description:`Add image annotation`,type:`annotation:image`},{name:`Group`,icon:`Folder`,description:`Group elements together`,type:`annotation:group`},{name:`Line`,icon:`Minus`,description:`Draw a line`,type:`annotation:line`},{name:`Draw`,icon:`PenTool`,description:`Freehand drawing`,type:`annotation:polyline`}]}]},Ig,Ug,Fg];function Gg(e,t={}){return{id:`project`,label:`Project`,icon:`Package`,categories:[{id:`nodes`,label:`Nodes`,nodes:e.map(e=>({name:e.split(/[-_]/).filter(Boolean).map(e=>e[0]?.toUpperCase()+e.slice(1)).join(` `),icon:t[e]??`Settings`,description:`Project node · ${e}`,type:`project.${e}`}))}]}}var Kg={name:`Custom`,icon:`Zap`,description:`Create custom node with your own code`,type:`Custom`},qg={node:e=>`// ${e} - Custom Node
|
|
74
74
|
//
|
|
75
75
|
// Define inputs
|
|
76
76
|
const input = node.in('input', null);
|
|
@@ -185,7 +185,7 @@ node.watchProp('width', () => process());
|
|
|
185
185
|
node.watchProp('height', () => process());
|
|
186
186
|
|
|
187
187
|
node.onReady = () => process();
|
|
188
|
-
`};function Vg(e){for(let t of Lg)for(let n of t.categories){let t=n.nodes.find(t=>t.type===e);if(t)return t.icon}return`Settings`}function Hg(e,t,n){if(e.startsWith(`annotation:`))return`cascade.annotations.${e.split(`:`)[1]}`;if(e.startsWith(`project.`)||e.startsWith(`cascade.`))return e;for(let t of Lg)for(let n of t.categories){let r=n.nodes.find(t=>t.type===e);if(r)return t.id===`core`?`cascade.core.${r.name}`:`cascade.${t.id}.${n.id}.${r.name}`}return t&&n?t===`core`?`cascade.core.${e}`:`cascade.${t}.${n}.${e}`:`custom.${e}`}function Ug(e){let t=Hg(e);return t.startsWith(`cascade.`)?t.substring(8):t}var Wg=w(new Map);function Gg(e){Wg.update(t=>{let n=new Map(t);return n.set(e,(n.get(e)||0)+1),n})}var Kg=w({}),qg=w({}),Jg=w([]),Yg=null;function Xg(e=!1){return Yg&&!e||(Yg=(async()=>{try{let e=await fetch(`/api/nodes`);if(!e.ok)return;let t=await e.json();Array.isArray(t?.modules)&&Jg.set(t.modules),t?.runsOn&&Kg.set(t.runsOn),t?.icons&&qg.set(t.icons)}catch{}})()),Yg}function Zg(e){if(!e)return null;let t=e.split(`.`);return t.length>1?t.slice(1).join(`.`):e}var Qg=w(0);function $g(){Qg.update(e=>e+1)}var e_=u(`<div role="button" tabindex="0" data-port-type="input"><span class="port-dot svelte-qglm8b"></span></div>`),t_=u(`<div role="button" tabindex="0" data-port-type="input"><span class="port-pill svelte-qglm8b"></span></div>`),n_=u(`<div class="variadic-item svelte-qglm8b"><span class="variadic-source svelte-qglm8b"> </span> <button class="variadic-remove svelte-qglm8b" title="Disconnect">×</button></div>`),r_=u(`<div class="variadic-list svelte-qglm8b" role="list"></div>`),i_=u(`<span> </span>`),a_=u(`<div role="button" tabindex="0" data-port-type="output"><span class="port-dot svelte-qglm8b"></span></div>`),o_=u(`<input type="text" class="node-name-input svelte-qglm8b"/>`),s_=u(`<span class="node-name svelte-qglm8b" role="button" tabindex="0" draggable="true" title="Click to rename · drag into the agent console for its path"> </span>`),c_=u(`<div class="comment svelte-qglm8b"> </div>`),l_=u(`<div class="error-message svelte-qglm8b"> </div>`),u_=u(`<div role="tooltip"><span class="tooltip-name svelte-qglm8b"> </span> <span class="tooltip-type svelte-qglm8b"> </span></div>`),d_=u(`<div role="application" tabindex="-1"><div class="node-container svelte-qglm8b"><div class="node-content svelte-qglm8b"><div class="port-row inputs svelte-qglm8b"></div> <!> <div><button aria-label="Bypass node" title="Bypass (B)"></button> <span class="node-icon svelte-qglm8b"><!></span> <!> <button aria-label="Cook node" title="Cook (C)"></button></div> <div class="port-row outputs svelte-qglm8b"></div></div> <div class="label svelte-qglm8b"><!></div></div> <!> <!></div> <!>`,1);function f_(e,t){ee(t,!1);let n=()=>we(Kg,`$runsOnByModule`,c),r=()=>we(Wg,`$propUpdateCounters`,c),i=()=>we(qg,`$iconByModule`,c),s=()=>we(Qg,`$graphStructure`,c),[c,l]=ne(),u=Y(),d=Y(),p=Y(),m=Y(),g=Y(),_=Y(),y=Y(),b=Y(),S=Y(),C=Y(),w=Y(),T=Y(),k=Y(),j=Y(),N=V(t,`node`,8),ie=V(t,`selected`,8,!1),ae=V(t,`canvasTransform`,24,()=>({x:0,y:0,zoom:1})),oe=xe(),R=Y(0);function z(e,t){return t}function se(e,t){t.stopPropagation(),t.preventDefault(),oe(`disconnect`,{connectionId:e})}let B=Y(!1),ce=Y(null),le=Y(!1),H=Y(),U=Y(N().id);function de(e,t,n,r,i){let a=e.currentTarget.getBoundingClientRect(),o=a.left+a.width/2,s=i===`input`?a.bottom:a.top,c=(o-ae().x)/ae().zoom,l=(s-ae().y)/ae().zoom;L(ce,{name:t,dataType:n,color:r,x:c,y:i===`input`?l+2:l-2,type:i})}function fe(){L(ce,null)}function me(e,t,n){oe(`portClick`,{nodeId:N().id,portId:e,portType:t,event:n})}function W(e,t,n){n.button===0&&(n.stopPropagation(),oe(`portMouseDown`,{nodeId:N().id,portId:e,portType:t,event:n}))}function _e(e){e.target.closest(`.port`)||e.target.closest(`.node-name-input`)||e.target.closest(`.node-name`)||(e.preventDefault(),L(B,!0),oe(`nodeMouseDown`,{nodeId:N().id,event:e}))}function ve(){L(B,!1)}function ye(e){e.target.closest(`.port`)||(e.stopPropagation(),N().isNetwork()?oe(`diveInto`,{node:N()}):oe(`edit`,{node:N()}))}function Se(e,t,n){n.key===`Enter`&&(n.preventDefault(),me(e,t,new MouseEvent(`click`,{bubbles:!0,cancelable:!0})))}function Te(e){e.stopPropagation(),e.preventDefault(),oe(`bypassToggle`,{nodeId:N().id,event:e})}function De(e){e.stopPropagation(),e.preventDefault(),oe(`cookToggle`,{nodeId:N().id,event:e})}function Oe(e){e.stopPropagation(),e.dataTransfer&&(e.dataTransfer.setData(`text/plain`,N().id),e.dataTransfer.effectAllowed=`copy`)}function ke(e){e.stopPropagation(),e.preventDefault(),L(le,!0),L(U,N().id),setTimeout(()=>{x(H)?.focus(),x(H)?.select()},0)}function Ae(){if(x(U).trim()){let e=x(U).trim().replace(/\s+/g,``);if(e){let t=N().rename(e);L(U,t)}else L(U,N().id)}else L(U,N().id);L(le,!1)}function je(){L(U,N().id),L(le,!1)}function Me(e){e.key===`Enter`?(e.preventDefault(),e.stopPropagation(),Ae()):e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),je())}function Ne(e){(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),e.stopPropagation(),ke(e))}J(()=>(A(N()),n()),()=>{L(u,(()=>{let e=Zg(N().modulePath);return e?n()[e]??null:null})())}),J(()=>(r(),A(N())),()=>{let e=r();L(R,N()&&e.get(N().id)||0)}),J(()=>A(N()),()=>{L(d,N().cookState)}),J(()=>(x(d),A(N())),()=>{L(p,x(d)===`error`||N().error!==null)}),J(()=>(A(N()),i(),Vg),()=>{L(m,(()=>{let e=Zg(N().modulePath);return e&&i()[e]||Vg(N().type)})())}),J(()=>A(N()),()=>{L(g,N().color||null)}),J(()=>A(N()),()=>{L(_,N().bypass)}),J(()=>A(N()),()=>{L(y,N().cook)}),J(()=>x(d),()=>{L(b,x(d)===`cooking`)}),J(()=>(s(),A(N())),()=>{L(S,z(s(),N().inputs))}),J(()=>(s(),A(N())),()=>{L(C,z(s(),N().outputs))}),J(()=>(s(),A(N())),()=>{L(w,z(s(),N().position))}),J(()=>x(S),()=>{L(T,x(S).some(e=>e.variadic))}),J(()=>x(S),()=>{L(k,(()=>{let e=[],t=new Set;for(let n of x(S))if(n.variadic){let r=n.name.match(/^(.+)_\d+$/),i=r?r[1]:n.name;if(!t.has(i)){t.add(i);let n=x(S).filter(e=>e.variadic&&e.name.startsWith(`${i}_`));e.push({type:`variadic`,baseName:i,ports:n,firstPort:n[0]})}}else e.push({type:`single`,port:n});return e})())}),J(()=>(x(T),x(S)),()=>{L(j,(()=>{if(!x(T))return[];let e=[];for(let t of x(S))if(t.variadic&&t.connections.length>0)for(let n of t.connections)e.push({portId:t.id,portName:t.name,connectionId:n.id,sourceNodeId:n.from.nodeId});return e})())}),J(()=>(A(N()),x(le)),()=>{N().id&&!x(le)&&L(U,N().id)}),he(),ue();var Pe=d_(),Fe=G(Pe);let Ie;var Le=M(Fe),Re=M(Le),ze=M(Re);f(ze,5,()=>x(k),h,(e,t)=>{var n=te(),r=G(n),i=e=>{let n=pe(()=>(x(t),F(()=>x(t).port))),r=pe(()=>(A(cg),A(x(n)),F(()=>cg(x(n)))));var i=e_(),o=q(i);K(()=>{v(i,1,`port port-${A(x(n)),F(()=>x(n).portType)??``}`,`svelte-qglm8b`),X(i,`data-node-id`,(A(N()),F(()=>N().id))),X(i,`data-port-id`,(A(x(n)),F(()=>x(n).id))),a(o,`background-color: ${x(r)??``};`)}),O(`click`,i,e=>me(x(n).id,`input`,e)),O(`mousedown`,i,e=>W(x(n).id,`input`,e)),O(`keydown`,i,e=>Se(x(n).id,`input`,e)),O(`mouseenter`,i,e=>de(e,x(n).name,x(n).dataType||`any`,x(r),`input`)),O(`mouseleave`,i,fe),E(e,i)},o=e=>{let n=pe(()=>(A(cg),x(t),F(()=>cg(x(t).firstPort))));pe(()=>(x(t),F(()=>x(t).ports.filter(e=>e.connections.length>0).length)));var r=te(),i=G(r),o=e=>{var r=t_(),i=q(r);K(e=>{v(r,1,`port port-${x(t),F(()=>x(t).firstPort.portType)??``} variadic`,`svelte-qglm8b`),X(r,`data-node-id`,(A(N()),F(()=>N().id))),X(r,`data-port-id`,(x(t),F(()=>x(t).firstPort.id))),X(r,`data-variadic-base`,(x(t),F(()=>x(t).baseName))),X(r,`data-variadic-ports`,e),a(i,`background-color: ${x(n)??``};`)},[()=>(x(t),F(()=>x(t).ports.map(e=>e.id).join(`,`)))]),O(`click`,r,e=>me(x(t).firstPort.id,`input`,e)),O(`mousedown`,r,e=>W(x(t).firstPort.id,`input`,e)),O(`keydown`,r,e=>Se(x(t).firstPort.id,`input`,e)),O(`mouseenter`,r,e=>de(e,x(t).baseName,x(t).firstPort.dataType||`any`,x(n),`input`)),O(`mouseleave`,r,fe),E(e,r)};Z(i,e=>{x(T)&&e(o)}),E(e,r)};Z(r,e=>{x(t),F(()=>x(t).type===`single`)?e(i):e(o,-1)}),E(e,n)}),o(ze);var Be=P(ze,2),Ve=e=>{var n=r_();f(n,5,()=>x(j),h,(e,n)=>{var r=n_(),i=M(r),a=q(i,!0),s=P(i,2);o(r),K(()=>D(a,(x(n),F(()=>x(n).sourceNodeId)))),O(`click`,s,e=>se(x(n).connectionId,e)),O(`mousedown`,s,I(function(e){be.call(this,t,e)})),E(e,r)}),o(n),O(`mousedown`,n,I(function(e){be.call(this,t,e)})),E(e,n)};Z(Be,e=>{x(T),x(j),F(()=>x(T)&&x(j).length>0)&&e(Ve)});var He=P(Be,2);let Ue;var We=M(He);let Q;var Ge=P(We,2);zc(M(Ge),{get name(){return x(m)},size:12,strokeWidth:2}),o(Ge);var Ke=P(Ge,2),qe=e=>{let t=pe(()=>x(u)===`server`?`S`:`B`),n=pe(()=>x(u)===`server`?`Runs on the server`:`Runs in the browser`);var r=i_(),i=q(r,!0);K(()=>{v(r,1,`locus-badge locus-${x(u)??``}`,`svelte-qglm8b`),X(r,`title`,x(n)),D(i,x(t))}),E(e,r)};Z(Ke,e=>{(x(u)===`server`||x(u)===`browser`)&&e(qe)});var Je=P(Ke,2);let Ye;o(He);var Xe=P(He,2);f(Xe,5,()=>x(C),h,(e,t)=>{let n=pe(()=>(A(cg),x(t),F(()=>cg(x(t)))));var r=a_(),i=q(r);K(()=>{v(r,1,`port port-${x(t),F(()=>x(t).portType)??``}`,`svelte-qglm8b`),X(r,`data-node-id`,(A(N()),F(()=>N().id))),X(r,`data-port-id`,(x(t),F(()=>x(t).id))),a(i,`background-color: ${x(n)??``};`)}),O(`click`,r,e=>me(x(t).id,`output`,e)),O(`mousedown`,r,e=>W(x(t).id,`output`,e)),O(`keydown`,r,e=>Se(x(t).id,`output`,e)),O(`mouseenter`,r,e=>de(e,x(t).name,x(t).dataType||`any`,x(n),`output`)),O(`mouseleave`,r,fe),E(e,r)}),o(Xe),o(Re);var Ze=P(Re,2),$=M(Ze),Qe=e=>{var n=o_();re(n),ge(n,e=>L(H,e),()=>x(H)),Ce(n,()=>x(U),e=>L(U,e)),O(`blur`,n,Ae),O(`keydown`,n,Me),O(`click`,n,I(function(e){be.call(this,t,e)})),O(`mousedown`,n,I(function(e){be.call(this,t,e)})),E(e,n)},$e=e=>{var t=s_(),n=q(t,!0);K(()=>D(n,(A(N()),F(()=>N().id)))),O(`dragstart`,t,Oe),O(`click`,t,ke),O(`keydown`,t,Ne),E(e,t)};Z($,e=>{x(le)?e(Qe):e($e,-1)}),o(Ze),o(Le);var et=P(Le,2),tt=e=>{var t=c_(),n=q(t,!0);K(()=>D(n,(A(N()),F(()=>N().comment)))),E(e,t)};Z(et,e=>{A(N()),F(()=>N().comment)&&e(tt)});var nt=P(et,2),rt=e=>{var t=l_(),n=q(t,!0);K(()=>D(n,(A(N()),F(()=>N().error?.message)))),E(e,t)};Z(nt,e=>{x(p)&&e(rt)}),o(Fe);var it=P(Fe,2),at=e=>{var t=u_(),n=M(t),r=q(n,!0),i=P(n,2),s=q(i,!0);o(t),K(()=>{v(t,1,`port-tooltip port-tooltip-${x(ce),F(()=>x(ce).type)??``}`,`svelte-qglm8b`),a(t,`left: ${x(ce),F(()=>x(ce).x)??``}px; top: ${x(ce),F(()=>x(ce).y)??``}px; border-color: ${x(ce),F(()=>x(ce).color)??``};`),D(r,(x(ce),F(()=>x(ce).name))),a(i,`color: ${x(ce),F(()=>x(ce).color)??``};`),D(s,(x(ce),F(()=>x(ce).dataType)))}),E(e,t)};Z(it,e=>{x(ce)&&e(at)}),K(()=>{Ie=v(Fe,1,`node svelte-qglm8b`,null,Ie,{selected:ie(),error:x(p),dragging:x(B),bypassed:x(_),stale:x(d)===`stale`,queued:x(d)===`queued`,cooking:x(b)}),X(Fe,`aria-label`,`Node: ${A(N()),F(()=>N().id)??``}`),X(Fe,`data-cook-state`,x(d)),a(Fe,`left: ${x(w),F(()=>x(w).x)??``}px; top: ${x(w),F(()=>x(w).y)??``}px; opacity: ${A(N()),F(()=>N().bypass?.5:1)??``}`),X(Fe,`data-node-id`,(A(N()),F(()=>N().id))),Ue=v(He,1,`body svelte-qglm8b`,null,Ue,{tinted:!!x(g)}),a(He,x(g)?`--node-fill:${x(g)}`:``),Q=v(We,1,`node-button bypass-button svelte-qglm8b`,null,Q,{active:x(_)}),Ye=v(Je,1,`node-button cook-button svelte-qglm8b`,null,Ye,{active:x(y)})}),O(`click`,We,Te),O(`mousedown`,We,e=>e.stopPropagation()),O(`click`,Je,De),O(`mousedown`,Je,e=>e.stopPropagation()),O(`click`,Fe,e=>{e.stopPropagation(),oe(`nodeClick`,{event:e})}),O(`mousedown`,Fe,_e),O(`mouseup`,Fe,ve),O(`mouseleave`,Fe,ve),O(`dblclick`,Fe,ye),E(e,Pe),Ee(),l()}var p_={connections:!0},m_={connections:!0,elements:!0,nodes:!0},h_=class{constructor(e,t=$g){this.resolveGraph=e,this.invalidate=t}restoreConnections(){let e=this.resolveGraph();return e?(e.restoreConnections(),this.publish(e,{connections:!0,elements:!0}),!0):!1}connect(e,t){let n=this.requireGraph(),r=n.connect(e,t);return this.publish(n,p_),r}disconnect(e){let t=this.resolveGraph();return t?(t.disconnect(e),this.publish(t,p_),!0):!1}disconnectMany(e){let t=this.resolveGraph();if(!t)return!1;for(let n of e)t.disconnect(n);return this.publish(t,p_),!0}renameElement(e,t){let n=this.resolveGraph();return!n||!n.renameElement(e,t)?!1:(this.publish(n,m_),!0)}removeElement(e){let t=this.resolveGraph();return!t||!t.getElement(e)?!1:(t.removeElement(e),this.publish(t,m_),!0)}reparentElement(e,t){let n=this.resolveGraph(),r=n?.getElement(e),i=t?n?.getNode(t)??null:null;return!n||!r||t&&!i||!n.reparentElement(r,i)?!1:(this.publish(n,{elements:!0,nodes:!0}),!0)}refresh(e=m_){let t=this.resolveGraph();return t?(this.publish(t,e),!0):!1}requireGraph(){let e=this.resolveGraph();if(!e)throw Error(`No graph is loaded`);return e}publish(e,t){t.connections&&(e.connections=[...e.connections]),t.elements&&(e.elements=[...e.elements]),t.nodes&&(e.nodes=[...e.nodes]),this.invalidate()}};function g_(e){let t=0,n=e;for(;n=n.parentElement;)t+=1;return t}function __(e=document){let t=Array.from(e.querySelectorAll(`[data-panel-scope]`));if(t.length===0)return null;let n=t.filter(e=>e.matches(`:hover`));if(n.length>0)return n.reduce((e,t)=>g_(t)>g_(e)?t:e);let r=e.activeElement;if(r instanceof HTMLElement){let e=r.closest(`[data-panel-scope]`);if(e)return e}return null}function v_(e=document){return __(e)?.dataset.panelScope??null}function y_(e,t=document){let n=v_(t);return n===null||n===e}function b_(e){let t=e.dataTransfer?.types;return t?Array.from(t).includes(`Files`):!1}var x_=50,S_=w({past:[],future:[]}),C_=ke(S_,e=>e.past.length>0),w_=ke(S_,e=>e.future.length>0),T_=0,E_=null,D_=300;function O_(e,t,n,r={}){let{debounce:i=!1,immediate:a=!1}=r;E_&&=(clearTimeout(E_),null);let o=()=>{let r={json:e.toJSON(),selectedNodeId:t,selectedAnnotationId:n,timestamp:Date.now()};S_.update(e=>{let t=[...e.past,r];return t.length>x_&&t.shift(),{past:t,future:[]}}),T_=Date.now()};a?o():i&&Date.now()-T_<D_?E_=setTimeout(o,D_):o()}function k_(e,t,n){O_(e,t,n,{immediate:!0})}function A_(e,t,n){let r=N(S_);if(r.past.length===0)return null;let i={json:e.toJSON(),selectedNodeId:t,selectedAnnotationId:n,timestamp:Date.now()},a=r.past[r.past.length-1];return S_.update(e=>({past:e.past.slice(0,-1),future:[i,...e.future]})),a}function j_(e,t,n){let r=N(S_);if(r.future.length===0)return null;let i={json:e.toJSON(),selectedNodeId:t,selectedAnnotationId:n,timestamp:Date.now()},a=r.future[0];return S_.update(e=>({past:[...e.past,i],future:e.future.slice(1)})),a}function M_(){E_&&=(clearTimeout(E_),null),S_.set({past:[],future:[]}),T_=0}var N_=w([]);function P_(e){N_.update(t=>t.length===e.length&&t.every((t,n)=>t===e[n])?t:[...e])}function F_(e,t,n){if(!e)return n?[n]:[];let r=new Set(t);if(r.size>0){let t=e.nodes.filter(e=>r.has(e.id));if(t.length>0)return t}let i=e.nodes.filter(e=>e.selected||e.id===n?.id);return i.length>0?i:n?[n]:[]}var I_=``;async function L_(e){I_=e;let t=globalThis.navigator?.clipboard;if(t?.writeText)try{return await t.writeText(e),!0}catch{}if(typeof document>`u`||typeof document.execCommand!=`function`)return!1;let n=document.createElement(`textarea`);n.value=e,n.style.position=`fixed`,n.style.opacity=`0`,document.body.appendChild(n),n.select();try{return document.execCommand(`copy`)}catch{return!1}finally{n.remove()}}async function R_(){let e=globalThis.navigator?.clipboard;if(e?.readText)try{let t=await e.readText();if(t)return t}catch{}return I_}function z_(e,t,n,r=8){return{x:Math.max(r,Math.min(e.x,n.width-t.width-r)),y:Math.max(r,Math.min(e.y,n.height-t.height-r))}}var B_=u(`<div class="separator svelte-1e26x91" role="separator"></div>`),V_=u(`<!> <button type="button" role="menuitem" tabindex="-1"> </button>`,1),H_=u(`<div class="node-context-menu svelte-1e26x91" role="menu" tabindex="-1" aria-label="Node actions"></div>`);function U_(t,n){ee(n,!1);let r=V(n,`x`,8),i=V(n,`y`,8),s=V(n,`items`,24,()=>[]),c=xe(),l=Y(),u=Y(`left: ${r()}px; top: ${i()}px; visibility: hidden`),d=()=>s().map((e,t)=>e.disabled?-1:t).filter(e=>e>=0);ye(async()=>{if(await e(),x(l)){let{width:e,height:t}=x(l).getBoundingClientRect(),n=z_({x:r(),y:i()},{width:e,height:t},{width:window.innerWidth,height:window.innerHeight});L(u,`left: ${n.x}px; top: ${n.y}px`)}h(d()[0]??-1)});function p(){c(`close`)}function m(e){e.disabled||(p(),e.run())}function h(e){e<0||!x(l)||x(l).querySelectorAll(`button.item`)[e]?.focus()}function g(){return x(l)?Array.from(x(l).querySelectorAll(`button.item`)).findIndex(e=>e===document.activeElement):-1}function _(e){let t=d();if(t.length===0)return;let n=t.indexOf(g());h(t[n===-1?e>0?0:t.length-1:(n+e+t.length)%t.length])}function y(e){switch(e.key){case`Escape`:e.preventDefault(),e.stopPropagation(),p();return;case`ArrowDown`:e.preventDefault(),_(1);return;case`ArrowUp`:e.preventDefault(),_(-1);return;case`Home`:e.preventDefault(),h(d()[0]??-1);return;case`End`:{e.preventDefault();let t=d();h(t[t.length-1]??-1);return}}}function b(e){x(l)&&e.target instanceof globalThis.Node&&x(l).contains(e.target)||p()}ue();var S=H_();O(`keydown`,ce,y),O(`pointerdown`,ce,b),O(`wheel`,ce,p),O(`resize`,ce,p),O(`blur`,ce,p),f(S,5,s,e=>e.id,(e,t)=>{var n=V_(),r=G(n),i=e=>{var t=B_();E(e,t)};Z(r,e=>{x(t),F(()=>x(t).separatorBefore)&&e(i)});var a=P(r,2);let o;var s=q(a,!0);K(()=>{o=v(a,1,`item svelte-1e26x91`,null,o,{danger:x(t).danger}),a.disabled=(x(t),F(()=>x(t).disabled)),X(a,`data-item-id`,(x(t),F(()=>x(t).id))),D(s,(x(t),F(()=>x(t).label)))}),O(`click`,a,I(()=>m(x(t)))),E(e,n)}),o(S),ge(S,e=>L(l,e),()=>x(l)),K(()=>a(S,x(u))),O(`contextmenu`,S,Se(I(function(e){be.call(this,n,e)}))),E(t,S),Ee()}function W_(e,t){return e===1?`1 ${t}`:`${e} ${t}s`}var G_=u(`<input type="text" class="path-input svelte-p2f6pl" placeholder="Enter path (e.g., /subnet1/node1)"/>`),K_=u(`<span class="path-separator svelte-p2f6pl">›</span>`),q_=u(`<!> <button> </button>`,1),J_=u(`<!> <button class="path-edit-btn svelte-p2f6pl" title="Press / to navigate by path">/</button>`,1),Y_=u(`<div class="selection-rectangle svelte-p2f6pl"></div>`),X_=m(`<path fill="none" stroke="transparent" stroke-width="12" class="connection-hit-area"></path><path fill="none" stroke-width="2"></path>`,1),Z_=m(`<g><circle class="endpoint-marker svelte-p2f6pl" cx="0" cy="0" r="12" stroke-width="1" opacity="0.9"></circle><path class="endpoint-icon svelte-p2f6pl" d="M -6,-4 L -6,4 M 6,-4 L 6,4 M -4,-6 L 4,6 M -4,6 L 4,-6" stroke-width="1.5" stroke-linecap="round" fill="none"></path></g>`),Q_=m(`<path fill="none" stroke-width="2" class="connection-preview svelte-p2f6pl"></path>`),$_=u(`<div class="annotation-debug"> </div>`),ev=u(`<div data-panel-scope="graph" role="application" aria-label="Graph canvas" tabindex="0"><div class="network-path-bar svelte-p2f6pl"><!></div> <!> <svg class="grid svelte-p2f6pl"><defs><pattern id="dots" width="20" height="20" patternUnits="userSpaceOnUse"><circle class="grid-dot svelte-p2f6pl" cx="10" cy="10" r="0.5"></circle></pattern></defs><rect class="grid-ground svelte-p2f6pl" width="100%" height="100%"></rect><rect width="100%" height="100%" fill="url(#dots)"></rect></svg> <svg class="connections-layer svelte-p2f6pl"><!><!><!></svg> <div class="annotations-container svelte-p2f6pl"></div> <div class="nodes-container svelte-p2f6pl"></div></div> <!>`,1);function tv(t,n){ee(n,!1);let r=()=>we(Qg,`$graphStructure`,i),[i,s]=ne(),c=Y(),l=Y(),u=Y(),d=Y(),p=Y(),m=Y(),_=Y(),y=Y(),b=xe(),S=V(n,`activeTool`,12,`select`),C=V(n,`selectedNode`,12,null),w=V(n,`graph`,28,()=>new Ef),T=V(n,`selectedAnnotation`,12,null),k=V(n,`transform`,8,void 0);V(n,`onRecordHistory`,8,void 0);let j=new h_(()=>w()),N=Y(),ie=Y(),ae=Y(0);me(()=>x(ie)?.());function I(){k_(w(),C()?.id||null,T())}let R=Y(),z=Y(k()?{...k()}:{x:0,y:0,zoom:1}),B=Y(k()?{...k()}:null),ce=Y({...x(z)}),le=!1,H=Y([]),U=Y([]);function de(e,t){if(t){let n=new Set(e);for(let e of t.nodes)e.selected=n.has(e.id)}P_(e)}let fe=Y(null);function W(e){let t=[{id:`root`,label:`/`,node:null}];if(!e)return t;let n=[],r=e;for(;r;)n.unshift(r),r=r.parent;for(let e of n)t.push({id:e.id,label:e.id,node:e});return t}function _e(e){e.isNetwork()&&(L(fe,e),L(H,[]),C(null),b(`nodeSelect`,{node:null}))}function ve(){if(x(fe)){let e=x(fe);L(fe,x(fe).parent),L(H,[e.id]),C(e),b(`nodeSelect`,{node:e})}}function be(e){L(fe,e),L(H,[]),C(null),b(`nodeSelect`,{node:null})}let Se=Y(!1),Te=Y(``),De=Y(null);function Oe(){L(Te,x(fe)?x(fe).path():`/`),L(Se,!0),setTimeout(()=>{x(De)?.focus(),x(De)?.select()},10)}function ke(){L(Se,!1),L(Te,``)}function Ae(e){if(!e||e===`/`)L(fe,null);else{let t=null,n=e.replace(/^\//,``).split(`/`).filter(e=>e),r=null;for(let e of n){let t=(r?r.children():w().nodes.filter(e=>!e.parent)).find(t=>t.id===e);if(t)r=t;else{console.warn(`Path segment not found: ${e}`);return}}if(t=r,t&&t.isNetwork())L(fe,t);else if(t){L(fe,t.parent),L(H,[t.id]),C(t),b(`nodeSelect`,{node:t}),ke();return}}L(H,[]),C(null),b(`nodeSelect`,{node:null}),ke()}function je(e){e.key===`Enter`?(e.preventDefault(),Ae(x(Te))):e.key===`Escape`&&(e.preventDefault(),ke())}function Me(e,t){return t?e.filter(e=>e.parent===t):e.filter(e=>!e.parent)}let Ne=null,Fe=Y(!1);function Ie(){return x(Fe)||(Ne=Kt(),L(Fe,!0)),Ne}function Re(e,t){w().reparentElement(t,e)}function ze(){if(x(H).length===0)return;I();let e=x(H).map(e=>w().getNode(e)).filter(Boolean);if(e.length===0)return;let t=new Set(e.map(e=>e.id)),n={minX:Math.min(...e.map(e=>e.position.x)),minY:Math.min(...e.map(e=>e.position.y)),maxX:Math.max(...e.map(e=>e.position.x)),maxY:Math.max(...e.map(e=>e.position.y))},r=[],i=[];w().connections.forEach(e=>{let n=t.has(e.from.nodeId),a=t.has(e.to.nodeId);if(!n&&a){let t=w().getNode(e.to.nodeId),n=t?.inputs.find(t=>t.id===e.to.portId);t&&n&&r.push({conn:e,targetNode:t,targetPort:n})}else if(n&&!a){let t=w().getNode(e.from.nodeId),n=t?.outputs.find(t=>t.id===e.from.portId),r=w().getNode(e.to.nodeId),a=r?.inputs.find(t=>t.id===e.to.portId);t&&n&&r&&a&&i.push({conn:e,sourceNode:t,sourcePort:n,targetNode:r,targetPort:a})}});let a=w().addNode(`Subnet`,{x:(n.minX+n.maxX)/2,y:(n.minY+n.maxY)/2});x(fe)&&Re(x(fe),a),e.forEach(e=>{e.position={x:e.position.x-a.position.x,y:e.position.y-a.position.y},Re(a,e)});let o=new Map;if(r.forEach((e,t)=>{let r=w().addNode(`Input`,{x:n.minX-a.position.x-150,y:n.minY-a.position.y+t*80});Re(a,r),r.props.inputIndex&&r.updateProp(`inputIndex`,t),w().disconnect(e.conn.id);let i=r.outputs[0];i&&e.targetPort&&w().connect(i,e.targetPort),o.set(e.conn.from.portId,r)}),r.length>0){let e=r[0],t=w().getNode(e.conn.from.nodeId)?.outputs.find(t=>t.id===e.conn.from.portId);t&&a.inputs[0]&&w().connect(t,a.inputs[0])}let s=null;if(i.length>0)s=i[0].sourceNode,s.setCook(!0);else if(e.length>0){let t=e[e.length-1];t.setCook(!0),s=t}i.forEach(e=>{w().disconnect(e.conn.id);let t=a.outputs[0];t&&e.targetPort&&w().connect(t,e.targetPort)}),j.refresh({nodes:!0,connections:!0}),L(H,[a.id]),C(a),b(`nodeSelect`,{node:a})}function Be(){if(x(H).length!==1)return;let e=w().getNode(x(H)[0]);if(!e||!e.isNetwork()||e.children().length===0)return;I();let t=[...e.children()],n=e.parent,r=t.filter(e=>e.type===`Input`),i=t.filter(e=>e.type===`Output`),a=t.filter(e=>e.type!==`Input`&&e.type!==`Output`);if(a.length===0)return;let o=[];w().connections.forEach(t=>{if(t.to.nodeId===e.id){let n=e.inputs.findIndex(e=>e.id===t.to.portId);n!==-1&&o.push({conn:t,inputIndex:n})}});let s=[];w().connections.forEach(t=>{if(t.from.nodeId===e.id){let n=e.outputs.findIndex(e=>e.id===t.from.portId);n!==-1&&s.push({conn:t,outputIndex:n})}});let c=new Map;r.forEach(e=>{let t=e.evalParm(`inputIndex`)??0,n=[];w().connections.forEach(t=>{if(t.from.nodeId===e.id){let e=w().getNode(t.to.nodeId),r=e?.inputs.find(e=>e.id===t.to.portId);e&&r&&n.push({node:e,port:r})}}),c.has(t)||c.set(t,[]),c.get(t).push(...n)});let l=null,u=e.children().find(e=>e.cook),d=i[0];d?w().connections.forEach(e=>{if(e.to.nodeId===d.id){let t=w().getNode(e.from.nodeId),n=t?.outputs.find(t=>t.id===e.from.portId);t&&n&&(l=n)}}):u&&(l=u.outputs[0]),a.forEach(t=>{t.position={x:t.position.x+e.position.x,y:t.position.y+e.position.y},w().reparentElement(t,n)}),[...r,...i].forEach(e=>{w().connections.filter(t=>t.from.nodeId===e.id||t.to.nodeId===e.id).forEach(e=>w().disconnect(e.id)),w().removeNode(e.id)}),o.forEach(({conn:e,inputIndex:t})=>{let n=c.get(t)||[],r=w().getNode(e.from.nodeId)?.outputs.find(t=>t.id===e.from.portId);w().disconnect(e.id),r&&n.forEach(({port:e})=>{w().connect(r,e)})}),s.forEach(({conn:e})=>{let t=w().getNode(e.to.nodeId)?.inputs.find(t=>t.id===e.to.portId);w().disconnect(e.id),l&&t&&w().connect(l,t)}),w().connections.filter(t=>t.from.nodeId===e.id||t.to.nodeId===e.id).forEach(e=>w().disconnect(e.id)),w().removeNode(e.id),j.refresh({nodes:!0,connections:!0}),L(H,a.map(e=>e.id)),C(a[0]??null),b(`nodeSelect`,{node:C()})}let Ve=!1,He=Y(!1),Ue=Y(null),We=Y(null),Q=Y(null),Ge=!1,Ke=Y(null),qe=Y(null),Je=Y({x:0,y:0}),Ye=null,Xe=Y(null),Ze=Y(!1),$=null,Qe=null,$e=null,et=null;function tt(e,t){return t.filter(e=>e&&e.position).map(e=>({id:e.id,x:e.position.x,y:e.position.y}))}let nt=Y([]);function rt(e,t,n){return e.id===n?!0:t.length===0?!1:t.includes(e.from.nodeId)||t.includes(e.to.nodeId)}function it(e){let t=w().getNode(e.to.nodeId);return t?.cookState===`queued`||t?.cookState===`cooking`}function at(e){if(x(R)){if(e.button===0&&(e.ctrlKey||e.metaKey)&&!e.target.closest(`.node, .annotation`)){let t=x(R).getBoundingClientRect(),n=st((e.clientX-t.left-x(z).x)/x(z).zoom,(e.clientY-t.top-x(z).y)/x(z).zoom);if(n){e.preventDefault(),e.stopPropagation(),I(),j.disconnect(n.id),L(Xe,null);return}}if(e.button===1)le=!0,e.preventDefault();else if(e.button===0&&(Ve||S()===`hand`))le=!0;else if(e.button===0&&S()===`select`&&!$){if(!e.target.closest(`.node, .annotation`)){let t=x(R).getBoundingClientRect();L(Ue,{x:(e.clientX-t.left-x(z).x)/x(z).zoom,y:(e.clientY-t.top-x(z).y)/x(z).zoom}),L(We,{x:e.clientX-t.left,y:e.clientY-t.top}),L(Je,{...x(Ue)}),L(Q,{...x(We)}),L(He,!0),Ge=!1,e.shiftKey||(L(H,[]),L(U,[]),C(null),T(null),b(`nodeSelect`,{node:null}),b(`annotationSelect`,{annotationId:null}))}}else if(e.button===0&&S()===`line`){if(e.target.closest(`.annotation, .node`))return;let t=x(R).getBoundingClientRect(),n=(e.clientX-t.left-x(z).x)/x(z).zoom,r=(e.clientY-t.top-x(z).y)/x(z).zoom,i=`line_${Date.now().toString(36)}`,a={id:i,type:`Line`,position:{x:n,y:r},endPosition:{x:n,y:r},style:{strokeWidth:2,strokeColor:`#ffffff`}};if(I(),w().addAnnotation(a),x(fe)){let e=w().getAnnotation(i);e&&Re(x(fe),e)}w(w().annotations=[...w().annotations],!0),yt={annotationId:i,startPos:{x:n,y:r}},e.stopPropagation()}else if(e.button===0&&S()===`polyline`){if(e.target.closest(`.annotation, .node`))return;let t=x(R).getBoundingClientRect(),n=(e.clientX-t.left-x(z).x)/x(z).zoom,r=(e.clientY-t.top-x(z).y)/x(z).zoom,i=`polyline_${Date.now().toString(36)}`,a={id:i,type:`Polyline`,position:{x:n,y:r},points:[{x:n,y:r}],style:{strokeWidth:2,strokeColor:`#ffffff`}};if(I(),w().addAnnotation(a),x(fe)){let e=w().getAnnotation(i);e&&Re(x(fe),e)}w(w().annotations=[...w().annotations],!0),bt={annotationId:i,points:[{x:n,y:r}]},e.stopPropagation()}}}function ot(e){if(le&&(oe(z,x(z).x+=e.movementX),oe(z,x(z).y+=e.movementY),L(z,{...x(z)})),x(He)&&x(Ue)){let t=x(R).getBoundingClientRect(),n=(e.clientX-t.left-x(z).x)/x(z).zoom,r=(e.clientY-t.top-x(z).y)/x(z).zoom;L(Je,{x:n,y:r}),L(Q,{x:e.clientX-t.left,y:e.clientY-t.top})}if($){let t=w().getNode($.nodeId);if(t){let n=x(R).getBoundingClientRect(),r=(e.clientX-n.left-x(z).x)/x(z).zoom-$.offset.x,i=(e.clientY-n.top-x(z).y)/x(z).zoom-$.offset.y;if((x(H).length>1||x(U).length>0)&&Qe&&$){let e=Qe.nodes.find(e=>e.nodeId===$.nodeId);if(!e){t.position={x:r,y:i},w(w().nodes=[...w().nodes],!0);return}let n=r-e.startPos.x,a=i-e.startPos.y;Qe.nodes.forEach(({nodeId:e,startPos:t})=>{let r=w().getNode(e);r&&(r.position={x:t.x+n,y:t.y+a})}),w(w().annotations=w().annotations.map(e=>{let t=Qe?.annotations.find(t=>t.annotationId===e.id);if(!t)return e;let r=t.startPos.x+n,i=t.startPos.y+a;return{...e,position:{x:r,y:i},style:e.style?{...e.style}:void 0,outputs:e.outputs?e.outputs.map(e=>({...e})):void 0}}),!0)}else t.position={x:r,y:i};w(w().nodes=[...w().nodes],!0),w(w().annotations=[...w().annotations],!0)}}if(x(_t)&&!vt){let t=w().getAnnotation(x(_t).annotationId);if(t){let n=x(R).getBoundingClientRect(),r=(e.clientX-n.left-x(z).x)/x(z).zoom-x(_t).offset.x,i=(e.clientY-n.top-x(z).y)/x(z).zoom-x(_t).offset.y;if((x(U).length>1||x(H).length>0)&&Qe&&x(_t)){let e=Qe.annotations.find(e=>e.annotationId===x(_t).annotationId);if(!e){w(w().annotations=w().annotations.map(e=>{if(e.id!==t.id)return e;let n=e.position.x,a=e.position.y,o=r-n,s=i-a;return e.type===`Line`?{...e,position:{x:r,y:i},endPosition:e.endPosition?{x:e.endPosition.x+o,y:e.endPosition.y+s}:void 0}:e.type===`Polyline`?{...e,position:{x:r,y:i},points:e.points?e.points.map(e=>({x:e.x+o,y:e.y+s})):void 0}:{...e,position:{x:r,y:i}}}),!0);return}let n=r-e.startPos.x,a=i-e.startPos.y;Qe.nodes.forEach(({nodeId:e,startPos:t})=>{let r=w().getNode(e);r&&(r.position={x:t.x+n,y:t.y+a})}),w(w().annotations=w().annotations.map(e=>{let t=Qe?.annotations.find(t=>t.annotationId===e.id);if(!t)return e;let r=t.startPos.x+n,i=t.startPos.y+a,o=e.position.x,s=e.position.y,c=r-o,l=i-s;return e.type===`Line`?{...e,position:{x:r,y:i},endPosition:e.endPosition?{x:e.endPosition.x+c,y:e.endPosition.y+l}:void 0}:e.type===`Polyline`?{...e,position:{x:r,y:i},points:e.points?e.points.map(e=>({x:e.x+c,y:e.y+l})):void 0}:{...e,position:{x:r,y:i}}}),!0),w(w().nodes=[...w().nodes],!0);return}w(w().annotations=w().annotations.map(e=>{if(e.id!==t.id)return e;let n=e.position.x,a=e.position.y,o=r-n,s=i-a;return e.type===`Line`?{...e,position:{x:r,y:i},endPosition:e.endPosition?{x:e.endPosition.x+o,y:e.endPosition.y+s}:void 0,style:e.style?{...e.style}:void 0,outputs:e.outputs?e.outputs.map(e=>({...e})):void 0}:e.type===`Polyline`?{...e,position:{x:r,y:i},points:e.points?e.points.map(e=>({x:e.x+o,y:e.y+s})):void 0,style:e.style?{...e.style}:void 0,outputs:e.outputs?e.outputs.map(e=>({...e})):void 0}:{...e,position:{x:r,y:i},style:e.style?{...e.style}:void 0,outputs:e.outputs?e.outputs.map(e=>({...e})):void 0}}),!0),w(w().nodes=[...w().nodes],!0)}}if(vt){let t=vt;if(w().getAnnotation(t.annotationId)){let n=x(R).getBoundingClientRect(),r=(e.clientX-n.left-x(z).x)/x(z).zoom,i=(e.clientY-n.top-x(z).y)/x(z).zoom,a=r-t.startPos.x,o=i-t.startPos.y,s=t.startSize.width,c=t.startSize.height,l=t.startPosition.x,u=t.startPosition.y,d=t.handle;d.includes(`e`)?s=Math.max(100,t.startSize.width+a):d.includes(`w`)&&(s=Math.max(100,t.startSize.width-a),l=t.startPosition.x+(t.startSize.width-s)),d.includes(`s`)?c=Math.max(40,t.startSize.height+o):d.includes(`n`)&&(c=Math.max(40,t.startSize.height-o),u=t.startPosition.y+(t.startSize.height-c)),w(w().annotations=w().annotations.map(e=>e.id===t.annotationId?{...e,position:{x:l,y:u},size:{width:s,height:c},style:e.style?{...e.style}:void 0,outputs:e.outputs?e.outputs.map(e=>({...e})):e.outputs,points:e.points?e.points.map(e=>({...e})):void 0,endPosition:e.endPosition?{...e.endPosition}:void 0}:e),!0)}}if(yt){let t=yt;if(w().getAnnotation(t.annotationId)){let n=x(R).getBoundingClientRect(),r=(e.clientX-n.left-x(z).x)/x(z).zoom,i=(e.clientY-n.top-x(z).y)/x(z).zoom;w(w().annotations=w().annotations.map(e=>e.id===t.annotationId?{...e,endPosition:{x:r,y:i}}:e),!0)}}if(bt){let t=bt;if(w().getAnnotation(t.annotationId)){let n=x(R).getBoundingClientRect(),r=(e.clientX-n.left-x(z).x)/x(z).zoom,i=(e.clientY-n.top-x(z).y)/x(z).zoom,a=t.points[t.points.length-1];Math.sqrt((r-a.x)**2+(i-a.y)**2)>3&&(t.points.push({x:r,y:i}),w(w().annotations=w().annotations.map(e=>e.id===t.annotationId?{...e,points:[...t.points]}:e),!0))}}if(x(Ke)){let t=x(R).getBoundingClientRect();L(Je,{x:(e.clientX-t.left-x(z).x)/x(z).zoom,y:(e.clientY-t.top-x(z).y)/x(z).zoom})}if(!x(Ke)&&!$&&!x(_t)&&!x(He)){let t=x(R).getBoundingClientRect(),n=(e.clientX-t.left-x(z).x)/x(z).zoom,r=(e.clientY-t.top-x(z).y)/x(z).zoom,i=e.ctrlKey||e.metaKey,a=st(n,r);a&&i?L(Xe,{connectionId:a.id,position:{x:n,y:r}}):L(Xe,null)}else L(Xe,null)}function st(e,t){let n=8/x(z).zoom;for(let r of x(nt)){let i=on(r.from.nodeId,r.from.portId,`output`),a=on(r.to.nodeId,r.to.portId,`input`);if(!i||!a)continue;let o=Math.abs(a.y-i.y)*.5;for(let s=0;s<=1;s+=.05){let c=i.x,l=i.y,u=i.x,d=i.y+o,f=a.x,p=a.y-o,m=a.x,h=a.y,g=1-s,_=g*g*g*c+3*g*g*s*u+3*g*s*s*f+s*s*s*m,v=g*g*g*l+3*g*g*s*d+3*g*s*s*p+s*s*s*h;if(Math.sqrt((e-_)**2+(t-v)**2)<n)return r}}return null}function ct(e){if(e.button===1?(le=!1,e.preventDefault()):le=!1,x(Ke)&&e.button===0){let t=e.target.closest(`.port`);if(t){let e=t.getAttribute(`data-node-id`),n=t.getAttribute(`data-port-id`),r=t.getAttribute(`data-port-type`),i=t.getAttribute(`data-variadic-base`);if(e&&n&&r){let t=x(Ke);if(t.portType===`output`&&r===`input`&&t.nodeId!==e){let r=w().getElement(t.nodeId),a=w().getElement(e);if(r&&a){let e=r.outputs.find(e=>e.id===t.portId),o;if(i?(o=a.inputs.filter(e=>e.variadic&&e.name.startsWith(`${i}_`)&&!e.options?.hidden).find(e=>e.connections.length===0),!o&&a.syncVariadicPorts&&(a.syncVariadicPorts(),o=a.inputs.filter(e=>e.variadic&&e.name.startsWith(`${i}_`)&&!e.options?.hidden).find(e=>e.connections.length===0)),o||=a.inputs.find(e=>e.id===n)):o=a.inputs.find(e=>e.id===n),e&&o)try{I();let n=o.variadic===!0,i=[];if(n){let e=a.id;x(H).forEach(n=>{if(n!==t.nodeId&&n!==e){let e=w().getNode(n);e&&e.outputs.length>0&&i.push({element:e,output:e.outputs[0]})}}),x(U).forEach(n=>{if(n!==t.nodeId&&n!==e){let e=w().getAnnotation(n);e&&e.outputs&&e.outputs.length>0&&i.push({element:e,output:e.outputs[0]})}})}if(a.isNetwork&&a.isNetwork()){let t=w().addNode(`Input`,{x:-200,y:(a.children().length-a.children().filter(e=>e.type===`Input`).length)*80});t.id=w().generateUniqueNodeId(`input`),Re(a,t);let n=a.children().filter(e=>e.type===`Input`).length-1;t.props.inputIndex&&t.updateProp(`inputIndex`,n),w().connect(e,o),w(w().nodes=[...w().nodes],!0)}else r.isNetwork&&r.isNetwork(),w().connect(e,o);if(n&&i.length>0){let e=o.name.match(/^(.+)_(\d+)$/);if(e&&a.syncVariadicPorts){let t=e[1],n=parseInt(e[2],10)+1;for(let{output:e}of i){a.syncVariadicPorts();let r=`${t}_${n}`,i=a.inputs.find(e=>e.name===r&&!e.options?.hidden);if(i||=(a.syncVariadicPorts(),a.inputs.find(e=>e.name===r&&!e.options?.hidden)),i)try{w().connect(e,i),n++}catch(e){console.warn(`Failed to connect additional element:`,e)}}}}j.refresh({connections:!0})}catch(e){console.error(`Failed to connect:`,e)}}}}L(Ke,null),L(qe,null),Ye=null}else Ye&&=(I(),j.disconnectMany(Ye.connectionIds),null),L(Ke,null),L(qe,null)}if($=null,L(_t,null),Qe=null,vt=null,yt&&(yt=null,S(`select`),b(`toolChange`,`select`)),bt&&(bt=null,S(`select`),b(`toolChange`,`select`)),x(He)&&x(Ue)){let t=x(R).getBoundingClientRect(),n=(e.clientX-t.left-x(z).x)/x(z).zoom,r=(e.clientY-t.top-x(z).y)/x(z).zoom,i=Math.min(x(Ue).x,n),a=Math.max(x(Ue).x,n),o=Math.min(x(Ue).y,r),s=Math.max(x(Ue).y,r),c=[];w().nodes.forEach(e=>{let t=e.position.x,n=e.position.x+120,r=e.position.y,l=e.position.y+80;n>=i&&t<=a&&l>=o&&r<=s&&c.push(e.id)});let l=[];w().annotations.forEach(e=>{let t,n,r,c;if(e.type===`Line`){let i=e.position.x,a=e.position.y,o=e.endPosition?.x??e.position.x,s=e.endPosition?.y??e.position.y;t=Math.min(i,o),n=Math.max(i,o),r=Math.min(a,s),c=Math.max(a,s);let l=(e.style?.strokeWidth||2)+5;t-=l,n+=l,r-=l,c+=l}else if(e.type===`Polyline`){if(e.points&&e.points.length>0){let i=e.points.map(e=>e.x),a=e.points.map(e=>e.y);t=Math.min(...i),n=Math.max(...i),r=Math.min(...a),c=Math.max(...a);let o=(e.style?.strokeWidth||2)+5;t-=o,n+=o,r-=o,c+=o}else return}else{let i=e.size?.width||(e.type===`Text`?540:e.type===`Image`?200:300),a=e.size?.height||(e.type===`Text`?60:e.type===`Image`?150:200);t=e.position.x,n=e.position.x+i,r=e.position.y,c=e.position.y+a}n>=i&&t<=a&&c>=o&&r<=s&&l.push(e.id)}),e.shiftKey?(L(H,[...x(H),...c.filter(e=>!x(H).includes(e))]),l.forEach(e=>{x(U).includes(e)||x(U).push(e)}),l.length>0&&(T(l[0]),b(`annotationSelect`,{annotationId:T()}))):(L(H,c),L(U,l),l.length>0?(T(l[0]),b(`annotationSelect`,{annotationId:T()})):(T(null),b(`annotationSelect`,{annotationId:null}))),x(H).length>0?(C(w().getNode(x(H)[0])),C()&&b(`nodeSelect`,{node:C()})):(C(null),b(`nodeSelect`,{node:null})),L(He,!1),Ge=!0,L(Ue,null),L(We,null),L(Q,null),setTimeout(()=>{Ge=!1},100)}}function lt(e,t,n){n.stopPropagation();let r=w().getAnnotation(e);if(r){let i=x(R).getBoundingClientRect(),a=(n.clientX-i.left-x(z).x)/x(z).zoom,o=(n.clientY-i.top-x(z).y)/x(z).zoom,s=r.size||{width:200,height:150},c=r.position;vt={annotationId:e,handle:t,startPos:{x:a,y:o},startSize:{width:s.width,height:s.height},startPosition:{x:c.x,y:c.y}}}}async function ut(e,t){if(t.target.closest(`.port`)||t.button===1||t.button===2)return;let n=w().getNode(e);if(!n)return;I();let r=x(R).getBoundingClientRect(),i=(t.clientX-r.left-x(z).x)/x(z).zoom,a=(t.clientY-r.top-x(z).y)/x(z).zoom;if(t.altKey){let n=[...x(H)],r=[...x(U)];n.includes(e)||(n=[e],r=[]);let o=new Map,s=[],c=[];for(let e of n){let t=w().getNode(e);if(!t)continue;let n=t.modulePath||t.type,r=w().addNode(n,{...t.position}),i=r.id,a=w().generateUniqueNodeId(t.id,i);if(o.set(e,a),j.renameElement(i,a),r.code=t.code||``,r.comment=t.comment||``,r.bypass=t.bypass||!1,x(fe)&&w().reparentElement(r,x(fe)),s.push(a),r.code)try{await w().execute(r)}catch(e){console.warn(`Failed to execute duplicated node:`,e)}}for(let e=0;e<n.length;e++){let t=n[e],r=s[e],i=w().getNode(t),a=w().getNode(r);i&&a&&Object.keys(i.props).length>0&&Object.entries(i.props).forEach(([e,t])=>{if(a.props[e]&&(a.props[e].value=t.value,t.expression)){let n=t.expression;o.forEach((e,t)=>{[RegExp(`(ch[sv]?\\s*\\(\\s*['"][^'"]*/)${t}(/[^'"]*['"]\\s*\\))`,`g`),RegExp(`(ch[sv]?\\s*\\(\\s*['"]\\.\\./)${t}(['"]\\s*\\))`,`g`)].forEach(t=>{n=n.replace(t,`$1${e}$2`)})}),a.props[e].expression=n}})}for(let e of n){let t=w().getNode(e);if(t)for(let n of t.outputs)for(let r of n.connections){let i=r.to.nodeId,a=r.to.portId,s=o.get(e),c=o.get(i);if(s&&c){let e=w().getNode(s),r=w().getNode(c),o=w().getNode(i);if(e&&r&&o){let i=t.outputs.indexOf(n),s=o.getInputPortById(a),c=s?o.inputs.indexOf(s):-1;if(i>=0&&c>=0){let t=e.outputs[i],n=r.inputs[c];if(t&&n)try{w().connect(t,n)}catch{}}}}}}for(let e of r){let t=w().getAnnotation(e);if(!t)continue;let n=`${t.type}_${Date.now().toString(36)}_${Math.random().toString(36).substr(2,5)}`,r={...t,id:n,position:{...t.position}};x(fe)&&w().reparentElement(r,x(fe)),w().addAnnotation(r),c.push(n)}w(w().nodes=[...w().nodes],!0),w(w().annotations=[...w().annotations],!0),L(H,s),L(U,c);let l=o.get(e);if(l){let e=w().getNode(l);if(e){C(e),b(`nodeSelect`,{node:e});let t={x:i-e.position.x,y:a-e.position.y};$={nodeId:l,offset:t},(s.length>1||c.length>0)&&(Qe={nodes:s.map(e=>{let t=w().getNode(e);return{nodeId:e,startPos:t?{...t.position}:{x:0,y:0}}}),annotations:c.map(e=>{let t=w().getAnnotation(e);return{annotationId:e,startPos:t?{...t.position}:{x:0,y:0}}}),offset:t})}}t.stopPropagation();return}let o={x:i-n.position.x,y:a-n.position.y};$={nodeId:e,offset:o},(x(H).length>1||x(U).length>0)&&(Qe={nodes:x(H).map(e=>{let t=w().getNode(e);return{nodeId:e,startPos:t?{...t.position}:{x:0,y:0}}}),annotations:x(U).map(e=>{let t=w().getAnnotation(e);return{annotationId:e,startPos:t?{...t.position}:{x:0,y:0}}}),offset:o}),t.stopPropagation()}function dt(e){b(`nodeEdit`,{node:e.detail.node})}function ft(e,t){let n=t.event;if(S()===`select`){n.stopPropagation();let t=w().getNode(e);t&&(n.shiftKey?x(H).includes(e)?L(H,x(H).filter(t=>t!==e)):L(H,[...x(H),e]):L(H,[e]),C(t),b(`nodeSelect`,{node:t}))}}function pt(e,t){let n=w().getNode(e);n&&(n.setBypass(!n.bypass),w(w().nodes=[...w().nodes],!0))}function mt(e,t){let n=w().getNode(e);if(n){if(t.shiftKey){n.setCook(!0);let e=t=>{t.outputs.forEach(t=>{t.connections.forEach(t=>{let n=w().getNode(t.to.nodeId);n&&(n.setCook(!0),e(n))})})};e(n)}else n.cook?n.setCook(!1):(w().clearCookingNodes(),n.setCook(!0));w(w().nodes=[...w().nodes],!0)}}function ht(e){I(),j.disconnect(e)}let gt=Y(null),_t=Y(null),vt=null,yt=null,bt=null;function xt(e){e.key!==`Enter`&&e.key}function St(e){}function Ct(e){if((e.ctrlKey||e.metaKey)&&e.target&&!e.target.closest(`.node, .annotation`)){let t=x(R).getBoundingClientRect(),n=st((e.clientX-t.left-x(z).x)/x(z).zoom,(e.clientY-t.top-x(z).y)/x(z).zoom);if(n){e.preventDefault(),e.stopPropagation(),I(),j.disconnect(n.id),L(Xe,null);return}}if(!(e.target&&e.target.closest(`.annotation`))){if(S()===`select`&&e.target&&!e.target.closest(`.node`)&&!Ge)L(H,[]),L(U,[]),C(null),T(null),L(gt,null),b(`nodeSelect`,{node:null});else if([`text`,`image`,`group`].includes(S())){let t=x(R).getBoundingClientRect(),n=(e.clientX-t.left-x(z).x)/x(z).zoom,r=(e.clientY-t.top-x(z).y)/x(z).zoom;wt(S(),n,r),S(`select`),b(`toolChange`,`select`)}}}function wt(e,t,n){let r=`${e}_${Date.now().toString(36)}`;I();let i=e=>{if(x(fe)){let t=w().getAnnotation(e);t&&Re(x(fe),t)}};if(e===`image`){let e=document.createElement(`input`);e.type=`file`,e.accept=`image/*`,e.onchange=async e=>{let a=e.target.files?.[0];if(a){let e=new FileReader;e.onload=e=>{let a=e.target?.result,o={id:r,type:`Image`,src:a,position:{x:t,y:n},size:{width:200,height:150}};w().addAnnotation(o),i(r),w(w().annotations=[...w().annotations],!0)},e.readAsDataURL(a)}},e.click()}else if(e===`group`){let e={id:r,type:`Group`,content:`Group`,position:{x:t,y:n},containedElements:[]};w().addAnnotation(e),i(r),w(w().annotations=[...w().annotations],!0),L(gt,r),setTimeout(()=>{if(!x(R))return;let e=x(R).querySelector(`[data-annotation-id="${r}"]`);if(e){let t=e.querySelector(`input, textarea`);t&&(t.focus(),t.select())}},10)}else if(e===`text`){let e={id:r,type:`Text`,content:``,position:{x:t,y:n},size:{width:540,height:60},style:{fontSize:14,fontWeight:`normal`,fontStyle:`normal`,textAlign:`left`,color:`#ffffff`,padding:0,borderRadius:0}};w().addAnnotation(e),i(r),w(w().annotations=[...w().annotations],!0),L(gt,r),setTimeout(()=>{if(!x(R))return;let e=x(R).querySelector(`[data-annotation-id="${r}"]`);if(e){let t=e.querySelector(`input, textarea`);t&&t.focus()}},10)}}function Tt(e,t){t.stopPropagation(),S()===`select`&&!x(gt)&&(t.shiftKey?x(U).includes(e)?L(U,x(U).filter(t=>t!==e)):L(U,[...x(U),e]):(L(U,[e]),L(H,[]),C(null)),T(e),b(`annotationSelect`,{annotationId:e}))}function Et(e,t){if(t.stopPropagation(),S()===`select`&&!x(gt)&&t.button===0){if(t.target.closest(`input, textarea, button, .resize-handle`))return;I();let n=w().getAnnotation(e);if(n){x(U).includes(e)||(t.shiftKey?L(U,[...x(U),e]):(L(U,[e]),L(H,[]),C(null))),T(e),b(`annotationSelect`,{annotationId:e});let r=x(R).getBoundingClientRect(),i=(t.clientX-r.left-x(z).x)/x(z).zoom,a=(t.clientY-r.top-x(z).y)/x(z).zoom,o={x:i-n.position.x,y:a-n.position.y};L(_t,{annotationId:e,offset:o}),(x(H).length>0||x(U).length>1)&&(Qe={nodes:x(H).map(e=>{let t=w().getNode(e);return{nodeId:e,startPos:t?{...t.position}:{x:0,y:0}}}),annotations:x(U).map(e=>{let t=w().getAnnotation(e);return{annotationId:e,startPos:t?{...t.position}:{x:0,y:0}}}),offset:o})}}}function Dt(e,t,n,r){t.target.closest(`input, textarea, button`)||Et(e,t),vt||At(e,t,n,r)}function Ot(e,t){(t.key===`Enter`||t.key===` `)&&Tt(e,new MouseEvent(`click`,{bubbles:!0,cancelable:!0}))}function kt(e,t,n,r){if(!T()||T()!==e||x(gt)===e)return;let i=w().getAnnotation(e);if(!i)return;let a=x(R).getBoundingClientRect(),o=(t.clientX-a.left-x(z).x)/x(z).zoom-i.position.x,s=(t.clientY-a.top-x(z).y)/x(z).zoom-i.position.y,c=o<8,l=o>n-8,u=s<8,d=s>r-8,f=`default`;c&&u||l&&d?f=`nwse-resize`:c&&d||l&&u?f=`nesw-resize`:c||l?f=`ew-resize`:(u||d)&&(f=`ns-resize`),t.currentTarget.style.cursor=f}function At(e,t,n,r){if(!T()||T()!==e||x(gt)===e)return;let i=x(R).getBoundingClientRect(),a=(t.clientX-i.left-x(z).x)/x(z).zoom,o=(t.clientY-i.top-x(z).y)/x(z).zoom,s=w().getAnnotation(e);if(!s)return;let c=a-s.position.x,l=o-s.position.y,u=c<8,d=c>n-8,f=l<8,p=l>r-8;if(u||d||f||p){t.stopPropagation(),I();let i=`se`;u&&f?i=`nw`:u&&p?i=`sw`:d&&f?i=`ne`:d&&p?i=`se`:u?i=`w`:d?i=`e`:f?i=`n`:p&&(i=`s`),vt={annotationId:e,handle:i,startPos:{x:a,y:o},startSize:s.size||{width:n,height:r},startPosition:{...s.position}}}}function jt(e,t){t.stopPropagation(),L(gt,e)}function Mt(e,t=!1){t||I(),w().removeAnnotation(e),w(w().annotations=[...w().annotations],!0),T()===e&&T(null),L(U,x(U).filter(t=>t!==e)),x(gt)===e&&L(gt,null)}async function Nt(){let e=document.activeElement;if(e&&(e.tagName===`INPUT`||e.tagName===`TEXTAREA`))return;let t=[],n=[];if(x(H).length>0&&x(H).forEach(e=>{let n=w().getNode(e);n&&t.push(n)}),x(U).length>0)x(U).forEach(e=>{let t=w().getAnnotation(e);t&&n.push(t)});else if(T()){let e=w().getAnnotation(T());e&&n.push(e)}if(t.length===0&&n.length===0)return;I();let r=t.map(e=>e.toJSON()),i=new Set(t.map(e=>e.id)),a={type:`cascade/cut`,nodes:r,connections:w().connections.filter(e=>i.has(e.from.nodeId)&&i.has(e.to.nodeId)),annotations:n};try{await L_(JSON.stringify(a)),t.forEach(e=>{w().removeNode(e.id)}),n.forEach(e=>{w().removeAnnotation(e.id)}),w(w().nodes=[...w().nodes],!0),w(w().annotations=[...w().annotations],!0),L(H,[]),L(U,[]),C(null),T(null),b(`nodeSelect`,{node:null}),b(`annotationSelect`,{annotationId:null})}catch(e){console.error(`Failed to cut to clipboard:`,e)}}async function Pt(){let e=document.activeElement;if(e&&(e.tagName===`INPUT`||e.tagName===`TEXTAREA`))return;let t=[],n=[];if(x(H).length>0&&x(H).forEach(e=>{let n=w().getNode(e);n&&t.push(n)}),x(U).length>0)x(U).forEach(e=>{let t=w().getAnnotation(e);t&&n.push(t)});else if(T()){let e=w().getAnnotation(T());e&&n.push(e)}if(t.length===0&&n.length===0)return;let r=t.map(e=>e.toJSON()),i=new Set(t.map(e=>e.id)),a={type:`cascade/copy`,nodes:r,connections:w().connections.filter(e=>i.has(e.from.nodeId)&&i.has(e.to.nodeId)),annotations:n};try{await L_(JSON.stringify(a))}catch(e){console.error(`Failed to copy to clipboard:`,e)}}async function Ft(){let e=document.activeElement;if(!(e&&(e.tagName===`INPUT`||e.tagName===`TEXTAREA`)))try{let e=await R_(),t=JSON.parse(e);if(!t.type||!t.type.startsWith(`cascade/`))return;I();let n=new Map,r=[];if(t.nodes&&t.nodes.length>0){for(let e of t.nodes){let t=Array.isArray(e.position)?e.position[0]:e.position.x,i=Array.isArray(e.position)?e.position[1]:e.position.y,a=w().addNode(e.type,{x:t+50,y:i+50}),o=a.id,s=w().generateUniqueNodeId(e.id,o);if(n.set(e.id,s),j.renameElement(o,s),a.code=e.code||``,a.comment=e.comment||``,a.bypass=e.bypass||!1,x(fe)&&w().reparentElement(a,x(fe)),r.push(a),a.code)try{await w().execute(a)}catch(e){console.warn(`Failed to execute pasted node:`,e)}}for(let e=0;e<t.nodes.length;e++){let i=t.nodes[e],a=r[e];i.props&&Object.entries(i.props).forEach(([e,t])=>{if(a.props[e]){if(t&&typeof t==`object`&&`expression`in t){let r=t.expression;n.forEach((e,t)=>{[RegExp(`(ch[sv]?\\s*\\(\\s*['"][^'"]*/)${t}(/[^'"]*['"]\\s*\\))`,`g`),RegExp(`(ch[sv]?\\s*\\(\\s*['"]\\.\\./)${t}(['"]\\s*\\))`,`g`)].forEach(t=>{r=r.replace(t,`$1${e}$2`)})}),a.props[e]={...a.props[e],value:t.value,expression:r}}else a.updateProp(e,t)}})}}if(t.connections&&t.connections.length>0)for(let e of t.connections){let t=n.get(e.from.nodeId),r=n.get(e.to.nodeId);if(t&&r){let n=w().getNode(t),i=w().getNode(r);if(n&&i){let t=n.outputs.find(t=>t.id===e.from.portId),r=i.inputs.find(t=>t.id===e.to.portId);t&&r&&w().connect(t,r)}}}if(t.annotations&&t.annotations.length>0)for(let e of t.annotations){let t=`${e.type}_${Date.now().toString(36)}_${Math.random().toString(36).substr(2,5)}`,n={...e,id:t,position:{x:e.position.x+50,y:e.position.y+50}};x(fe)&&w().reparentElement(n,x(fe)),w().addAnnotation(n)}w(w().nodes=[...w().nodes],!0),w(w().annotations=[...w().annotations],!0),r.length>0&&(L(H,r.map(e=>e.id)),C(r[0]),b(`nodeSelect`,{node:r[0]}))}catch(e){console.debug(`Paste failed or not Cascade data:`,e)}}function It(e,t){let n=w().getAnnotation(e);n&&(n.content=t,w(w().annotations=[...w().annotations],!0))}function Lt(e,t){let n=t.target;It(e,n.value)}function Rt(e,t){let n=t.target;It(e,n.value)}function zt(){L(gt,null)}function Bt(e){b_(e)&&(e.preventDefault(),e.stopPropagation())}function Vt(e){if(!b_(e)||(e.preventDefault(),e.stopPropagation(),x(_t)))return;let t=Array.from(e.dataTransfer?.files||[]);if(t.length===0)return;let n=x(R).getBoundingClientRect(),r=(e.clientX-n.left-x(z).x)/x(z).zoom,i=(e.clientY-n.top-x(z).y)/x(z).zoom;t.forEach(async(e,t)=>{let n=r+t*30,a=i+t*30;if(e.type.startsWith(`image/`)){let t=new FileReader;t.onload=t=>{let r=t.target?.result,i=`${e.name.replace(/\.[^/.]+$/,``).replace(/[^a-zA-Z0-9_-]/g,`_`)}_${Date.now().toString(36)}`,o={id:i,type:`Image`,src:r,position:{x:n,y:a},size:{width:200,height:150},caption:e.name};if(w().addAnnotation(o),x(fe)){let e=w().getAnnotation(i);e&&Re(x(fe),e)}w(w().annotations=[...w().annotations],!0),w().assetManager.cache.set(e.name,{id:e.name,path:r,type:`image`,data:r,size:e.size,metadata:{name:e.name}})},t.readAsDataURL(e)}else try{let t=await e.text();w().assetManager.cache.set(e.name,{id:e.name,path:e.name,type:e.type.includes(`json`)?`json`:`text`,data:e.type.includes(`json`)?JSON.parse(t):t,size:e.size,metadata:{name:e.name}})}catch(e){console.warn(`Failed to load file as asset:`,e)}})}function Ht(e){e.target.closest(`.node`)||(e.preventDefault(),b(`openNodePanel`,{x:e.clientX,y:e.clientY}))}function Ut(e,t){if(!w())return;let n=e.map(e=>e.outputs.find(e=>e.name===`output`)||e.outputs[0]).filter(Boolean);if(n.length!==0){if(t.variadic)n.forEach((e,n)=>{t.syncVariadicPorts();let r=t.getVariadicInputs()[n];if(r&&e)try{w().connect(e,r)}catch{}});else{let e=t.inputs.filter(e=>e.connections.length===0&&!e.options?.hidden);n.forEach((t,n)=>{let r=e[n];if(r&&t)try{w().connect(t,r)}catch{}})}}}async function Wt(t){I();let n=[...x(H)],r=[...x(U)],i=t.type,a=t.customConfig,o=x(R).getBoundingClientRect(),s=o.width/2,c=o.height/2,l=(s-x(z).x)/x(z).zoom,u=(c-x(z).y)/x(z).zoom;if(i.startsWith(`annotation:`)){let e=i.replace(`annotation:`,``);if(e===`line`||e===`polyline`){S(e),b(`toolChange`,e);return}wt(e,l,u);return}let d=n.length===1?w().getNode(n[0]):null;d&&(l=d.position.x,u=d.position.y+90);let f=0;for(;f<64&&w().nodes.some(e=>{let t=Math.abs(e.position.x-l),n=Math.abs(e.position.y-u);return t<50&&n<50});)u+=90,f+=1;let p=w().addNode(i,{x:l,y:u});x(fe)&&x(fe).isNetwork()&&Re(x(fe),p);let m=Pe(i)!==null;if(!m&&i.startsWith(`project.`)){p.modulePath=i,p.sourceType=`project`,p.code=``;try{p.resetPortTracking();let e=await pd(i);p.setFunction(Sf(p,i,e)),p.markDirty()}catch(e){console.error(`Failed to load project module ${i}:`,e)}return I(),p}if(!m){let e=a?.code||Gt(i);p.code=e,i.startsWith(`local.`)&&w().moduleResolver.createEmbeddedModule(i,e,`user`);try{p.resetPortTracking();let t=await md(e);p.setFunction(Sf(p,i,t));let n=p.bypass,r=p.cook;n&&p.setBypass(!1),r||p.setCook(!0),console.log(`Executing node ${i}, props before:`,Object.keys(p.props).length),await w().execute(p),console.log(`Node ${i} executed, props after:`,Object.keys(p.props).length,Object.keys(p.props)),p.error&&console.error(`Node ${i} execution error:`,p.error),n&&p.setBypass(!0),r||p.setCook(!1),p.cleanupUnusedPorts(),p.inputs=[...p.inputs],p.outputs=[...p.outputs];let a={...p.props};p.props=a,p.markDirty(),console.log(`Node ${i} initialized with ${Object.keys(a).length} props:`,Object.keys(a)),Object.keys(a).length===0&&(console.warn(`Warning: Node ${i} has no props after execution.`),console.warn(`Code snippet:`,e.substring(0,300)),p.error&&console.error(`Node execution error:`,p.error))}catch(e){console.error(`Failed to initialize node:`,e),p.error=e}}let h=n.map(e=>w().getNode(e)).filter(e=>e!==null),g=r.map(e=>w().getAnnotation(e)).filter(e=>e!==null),_=[...h,...g];_.length>0&&Ut(_,p),j.refresh({nodes:!0,connections:!0});let v=l*x(z).zoom+x(z).x,y=u*x(z).zoom+x(z).y,T=s-v,ee=c-y;oe(z,x(z).x+=T),oe(z,x(z).y+=ee),L(z,{...x(z)}),await e(),L(H,[p.id]),C(p),b(`nodeSelect`,{node:p})}function Gt(e){return`// ${Le(e)} - Custom Node
|
|
188
|
+
`};function Jg(e){for(let t of Wg)for(let n of t.categories){let t=n.nodes.find(t=>t.type===e);if(t)return t.icon}return`Settings`}function Yg(e,t,n){if(e.startsWith(`annotation:`))return`cascade.annotations.${e.split(`:`)[1]}`;if(e.startsWith(`project.`)||e.startsWith(`cascade.`))return e;for(let t of Wg)for(let n of t.categories){let r=n.nodes.find(t=>t.type===e);if(r)return t.id===`core`?`cascade.core.${r.name}`:`cascade.${t.id}.${n.id}.${r.name}`}return t&&n?t===`core`?`cascade.core.${e}`:`cascade.${t}.${n}.${e}`:`custom.${e}`}function Xg(e){let t=Yg(e);return t.startsWith(`cascade.`)?t.substring(8):t}var Zg=w(new Map);function Qg(e){Zg.update(t=>{let n=new Map(t);return n.set(e,(n.get(e)||0)+1),n})}var $g=w({}),e_=w({}),t_=w([]),n_=null;function r_(e=!1){return n_&&!e||(n_=(async()=>{try{let e=await fetch(`/api/nodes`);if(!e.ok)return;let t=await e.json();Array.isArray(t?.modules)&&t_.set(t.modules),t?.runsOn&&$g.set(t.runsOn),t?.icons&&e_.set(t.icons)}catch{}})()),n_}function i_(e){if(!e)return null;let t=e.split(`.`);return t.length>1?t.slice(1).join(`.`):e}var a_=w(0);function o_(){a_.update(e=>e+1)}var s_=u(`<div role="button" tabindex="0" data-port-type="input"><span class="port-dot svelte-qglm8b"></span></div>`),c_=u(`<div role="button" tabindex="0" data-port-type="input"><span class="port-pill svelte-qglm8b"></span></div>`),l_=u(`<div class="variadic-item svelte-qglm8b"><span class="variadic-source svelte-qglm8b"> </span> <button class="variadic-remove svelte-qglm8b" title="Disconnect">×</button></div>`),u_=u(`<div class="variadic-list svelte-qglm8b" role="list"></div>`),d_=u(`<span> </span>`),f_=u(`<div role="button" tabindex="0" data-port-type="output"><span class="port-dot svelte-qglm8b"></span></div>`),p_=u(`<input type="text" class="node-name-input svelte-qglm8b"/>`),m_=u(`<span class="node-name svelte-qglm8b" role="button" tabindex="0" draggable="true" title="Click to rename · drag into the agent console for its path"> </span>`),h_=u(`<div class="comment svelte-qglm8b"> </div>`),g_=u(`<div class="error-message svelte-qglm8b"> </div>`),__=u(`<div role="tooltip"><span class="tooltip-name svelte-qglm8b"> </span> <span class="tooltip-type svelte-qglm8b"> </span></div>`),v_=u(`<div role="application" tabindex="-1"><div class="node-container svelte-qglm8b"><div class="node-content svelte-qglm8b"><div class="port-row inputs svelte-qglm8b"></div> <!> <div><button aria-label="Bypass node" title="Bypass (B)"></button> <span class="node-icon svelte-qglm8b"><!></span> <!> <button aria-label="Cook node" title="Cook (C)"></button></div> <div class="port-row outputs svelte-qglm8b"></div></div> <div class="label svelte-qglm8b"><!></div></div> <!> <!></div> <!>`,1);function y_(e,t){ee(t,!1);let n=()=>we($g,`$runsOnByModule`,c),r=()=>we(Zg,`$propUpdateCounters`,c),i=()=>we(e_,`$iconByModule`,c),s=()=>we(a_,`$graphStructure`,c),[c,l]=ne(),u=Y(),d=Y(),p=Y(),m=Y(),g=Y(),_=Y(),y=Y(),b=Y(),S=Y(),C=Y(),w=Y(),T=Y(),k=Y(),j=Y(),N=V(t,`node`,8),ie=V(t,`selected`,8,!1),ae=V(t,`canvasTransform`,24,()=>({x:0,y:0,zoom:1})),oe=xe(),R=Y(0);function z(e,t){return t}function se(e,t){t.stopPropagation(),t.preventDefault(),oe(`disconnect`,{connectionId:e})}let B=Y(!1),ce=Y(null),le=Y(!1),H=Y(),U=Y(N().id);function de(e,t,n,r,i){let a=e.currentTarget.getBoundingClientRect(),o=a.left+a.width/2,s=i===`input`?a.bottom:a.top,c=(o-ae().x)/ae().zoom,l=(s-ae().y)/ae().zoom;L(ce,{name:t,dataType:n,color:r,x:c,y:i===`input`?l+2:l-2,type:i})}function fe(){L(ce,null)}function me(e,t,n){oe(`portClick`,{nodeId:N().id,portId:e,portType:t,event:n})}function W(e,t,n){n.button===0&&(n.stopPropagation(),oe(`portMouseDown`,{nodeId:N().id,portId:e,portType:t,event:n}))}function _e(e){e.target.closest(`.port`)||e.target.closest(`.node-name-input`)||e.target.closest(`.node-name`)||(e.preventDefault(),L(B,!0),oe(`nodeMouseDown`,{nodeId:N().id,event:e}))}function ve(){L(B,!1)}function ye(e){e.target.closest(`.port`)||(e.stopPropagation(),N().isNetwork()?oe(`diveInto`,{node:N()}):oe(`edit`,{node:N()}))}function Se(e,t,n){n.key===`Enter`&&(n.preventDefault(),me(e,t,new MouseEvent(`click`,{bubbles:!0,cancelable:!0})))}function Te(e){e.stopPropagation(),e.preventDefault(),oe(`bypassToggle`,{nodeId:N().id,event:e})}function De(e){e.stopPropagation(),e.preventDefault(),oe(`cookToggle`,{nodeId:N().id,event:e})}function Oe(e){e.stopPropagation(),e.dataTransfer&&(e.dataTransfer.setData(`text/plain`,N().id),e.dataTransfer.effectAllowed=`copy`)}function ke(e){e.stopPropagation(),e.preventDefault(),L(le,!0),L(U,N().id),setTimeout(()=>{x(H)?.focus(),x(H)?.select()},0)}function Ae(){if(x(U).trim()){let e=x(U).trim().replace(/\s+/g,``);if(e){let t=N().rename(e);L(U,t)}else L(U,N().id)}else L(U,N().id);L(le,!1)}function je(){L(U,N().id),L(le,!1)}function Me(e){e.key===`Enter`?(e.preventDefault(),e.stopPropagation(),Ae()):e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),je())}function Ne(e){(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),e.stopPropagation(),ke(e))}J(()=>(A(N()),n()),()=>{L(u,(()=>{let e=i_(N().modulePath);return e?n()[e]??null:null})())}),J(()=>(r(),A(N())),()=>{let e=r();L(R,N()&&e.get(N().id)||0)}),J(()=>A(N()),()=>{L(d,N().cookState)}),J(()=>(x(d),A(N())),()=>{L(p,x(d)===`error`||N().error!==null)}),J(()=>(A(N()),i(),Jg),()=>{L(m,(()=>{let e=i_(N().modulePath);return e&&i()[e]||Jg(N().type)})())}),J(()=>A(N()),()=>{L(g,N().color||null)}),J(()=>A(N()),()=>{L(_,N().bypass)}),J(()=>A(N()),()=>{L(y,N().cook)}),J(()=>x(d),()=>{L(b,x(d)===`cooking`)}),J(()=>(s(),A(N())),()=>{L(S,z(s(),N().inputs))}),J(()=>(s(),A(N())),()=>{L(C,z(s(),N().outputs))}),J(()=>(s(),A(N())),()=>{L(w,z(s(),N().position))}),J(()=>x(S),()=>{L(T,x(S).some(e=>e.variadic))}),J(()=>x(S),()=>{L(k,(()=>{let e=[],t=new Set;for(let n of x(S))if(n.variadic){let r=n.name.match(/^(.+)_\d+$/),i=r?r[1]:n.name;if(!t.has(i)){t.add(i);let n=x(S).filter(e=>e.variadic&&e.name.startsWith(`${i}_`));e.push({type:`variadic`,baseName:i,ports:n,firstPort:n[0]})}}else e.push({type:`single`,port:n});return e})())}),J(()=>(x(T),x(S)),()=>{L(j,(()=>{if(!x(T))return[];let e=[];for(let t of x(S))if(t.variadic&&t.connections.length>0)for(let n of t.connections)e.push({portId:t.id,portName:t.name,connectionId:n.id,sourceNodeId:n.from.nodeId});return e})())}),J(()=>(A(N()),x(le)),()=>{N().id&&!x(le)&&L(U,N().id)}),he(),ue();var Pe=v_(),Fe=G(Pe);let Ie;var Le=M(Fe),Re=M(Le),ze=M(Re);f(ze,5,()=>x(k),h,(e,t)=>{var n=te(),r=G(n),i=e=>{let n=pe(()=>(x(t),F(()=>x(t).port))),r=pe(()=>(A(hg),A(x(n)),F(()=>hg(x(n)))));var i=s_(),o=q(i);K(()=>{v(i,1,`port port-${A(x(n)),F(()=>x(n).portType)??``}`,`svelte-qglm8b`),X(i,`data-node-id`,(A(N()),F(()=>N().id))),X(i,`data-port-id`,(A(x(n)),F(()=>x(n).id))),a(o,`background-color: ${x(r)??``};`)}),O(`click`,i,e=>me(x(n).id,`input`,e)),O(`mousedown`,i,e=>W(x(n).id,`input`,e)),O(`keydown`,i,e=>Se(x(n).id,`input`,e)),O(`mouseenter`,i,e=>de(e,x(n).name,x(n).dataType||`any`,x(r),`input`)),O(`mouseleave`,i,fe),E(e,i)},o=e=>{let n=pe(()=>(A(hg),x(t),F(()=>hg(x(t).firstPort))));pe(()=>(x(t),F(()=>x(t).ports.filter(e=>e.connections.length>0).length)));var r=te(),i=G(r),o=e=>{var r=c_(),i=q(r);K(e=>{v(r,1,`port port-${x(t),F(()=>x(t).firstPort.portType)??``} variadic`,`svelte-qglm8b`),X(r,`data-node-id`,(A(N()),F(()=>N().id))),X(r,`data-port-id`,(x(t),F(()=>x(t).firstPort.id))),X(r,`data-variadic-base`,(x(t),F(()=>x(t).baseName))),X(r,`data-variadic-ports`,e),a(i,`background-color: ${x(n)??``};`)},[()=>(x(t),F(()=>x(t).ports.map(e=>e.id).join(`,`)))]),O(`click`,r,e=>me(x(t).firstPort.id,`input`,e)),O(`mousedown`,r,e=>W(x(t).firstPort.id,`input`,e)),O(`keydown`,r,e=>Se(x(t).firstPort.id,`input`,e)),O(`mouseenter`,r,e=>de(e,x(t).baseName,x(t).firstPort.dataType||`any`,x(n),`input`)),O(`mouseleave`,r,fe),E(e,r)};Z(i,e=>{x(T)&&e(o)}),E(e,r)};Z(r,e=>{x(t),F(()=>x(t).type===`single`)?e(i):e(o,-1)}),E(e,n)}),o(ze);var Be=P(ze,2),Ve=e=>{var n=u_();f(n,5,()=>x(j),h,(e,n)=>{var r=l_(),i=M(r),a=q(i,!0),s=P(i,2);o(r),K(()=>D(a,(x(n),F(()=>x(n).sourceNodeId)))),O(`click`,s,e=>se(x(n).connectionId,e)),O(`mousedown`,s,I(function(e){be.call(this,t,e)})),E(e,r)}),o(n),O(`mousedown`,n,I(function(e){be.call(this,t,e)})),E(e,n)};Z(Be,e=>{x(T),x(j),F(()=>x(T)&&x(j).length>0)&&e(Ve)});var He=P(Be,2);let Ue;var We=M(He);let Q;var Ge=P(We,2);zc(M(Ge),{get name(){return x(m)},size:12,strokeWidth:2}),o(Ge);var Ke=P(Ge,2),qe=e=>{let t=pe(()=>x(u)===`server`?`S`:`B`),n=pe(()=>x(u)===`server`?`Runs on the server`:`Runs in the browser`);var r=d_(),i=q(r,!0);K(()=>{v(r,1,`locus-badge locus-${x(u)??``}`,`svelte-qglm8b`),X(r,`title`,x(n)),D(i,x(t))}),E(e,r)};Z(Ke,e=>{(x(u)===`server`||x(u)===`browser`)&&e(qe)});var Je=P(Ke,2);let Ye;o(He);var Xe=P(He,2);f(Xe,5,()=>x(C),h,(e,t)=>{let n=pe(()=>(A(hg),x(t),F(()=>hg(x(t)))));var r=f_(),i=q(r);K(()=>{v(r,1,`port port-${x(t),F(()=>x(t).portType)??``}`,`svelte-qglm8b`),X(r,`data-node-id`,(A(N()),F(()=>N().id))),X(r,`data-port-id`,(x(t),F(()=>x(t).id))),a(i,`background-color: ${x(n)??``};`)}),O(`click`,r,e=>me(x(t).id,`output`,e)),O(`mousedown`,r,e=>W(x(t).id,`output`,e)),O(`keydown`,r,e=>Se(x(t).id,`output`,e)),O(`mouseenter`,r,e=>de(e,x(t).name,x(t).dataType||`any`,x(n),`output`)),O(`mouseleave`,r,fe),E(e,r)}),o(Xe),o(Re);var Ze=P(Re,2),$=M(Ze),Qe=e=>{var n=p_();re(n),ge(n,e=>L(H,e),()=>x(H)),Ce(n,()=>x(U),e=>L(U,e)),O(`blur`,n,Ae),O(`keydown`,n,Me),O(`click`,n,I(function(e){be.call(this,t,e)})),O(`mousedown`,n,I(function(e){be.call(this,t,e)})),E(e,n)},$e=e=>{var t=m_(),n=q(t,!0);K(()=>D(n,(A(N()),F(()=>N().id)))),O(`dragstart`,t,Oe),O(`click`,t,ke),O(`keydown`,t,Ne),E(e,t)};Z($,e=>{x(le)?e(Qe):e($e,-1)}),o(Ze),o(Le);var et=P(Le,2),tt=e=>{var t=h_(),n=q(t,!0);K(()=>D(n,(A(N()),F(()=>N().comment)))),E(e,t)};Z(et,e=>{A(N()),F(()=>N().comment)&&e(tt)});var nt=P(et,2),rt=e=>{var t=g_(),n=q(t,!0);K(()=>D(n,(A(N()),F(()=>N().error?.message)))),E(e,t)};Z(nt,e=>{x(p)&&e(rt)}),o(Fe);var it=P(Fe,2),at=e=>{var t=__(),n=M(t),r=q(n,!0),i=P(n,2),s=q(i,!0);o(t),K(()=>{v(t,1,`port-tooltip port-tooltip-${x(ce),F(()=>x(ce).type)??``}`,`svelte-qglm8b`),a(t,`left: ${x(ce),F(()=>x(ce).x)??``}px; top: ${x(ce),F(()=>x(ce).y)??``}px; border-color: ${x(ce),F(()=>x(ce).color)??``};`),D(r,(x(ce),F(()=>x(ce).name))),a(i,`color: ${x(ce),F(()=>x(ce).color)??``};`),D(s,(x(ce),F(()=>x(ce).dataType)))}),E(e,t)};Z(it,e=>{x(ce)&&e(at)}),K(()=>{Ie=v(Fe,1,`node svelte-qglm8b`,null,Ie,{selected:ie(),error:x(p),dragging:x(B),bypassed:x(_),stale:x(d)===`stale`,queued:x(d)===`queued`,cooking:x(b)}),X(Fe,`aria-label`,`Node: ${A(N()),F(()=>N().id)??``}`),X(Fe,`data-cook-state`,x(d)),a(Fe,`left: ${x(w),F(()=>x(w).x)??``}px; top: ${x(w),F(()=>x(w).y)??``}px; opacity: ${A(N()),F(()=>N().bypass?.5:1)??``}`),X(Fe,`data-node-id`,(A(N()),F(()=>N().id))),Ue=v(He,1,`body svelte-qglm8b`,null,Ue,{tinted:!!x(g)}),a(He,x(g)?`--node-fill:${x(g)}`:``),Q=v(We,1,`node-button bypass-button svelte-qglm8b`,null,Q,{active:x(_)}),Ye=v(Je,1,`node-button cook-button svelte-qglm8b`,null,Ye,{active:x(y)})}),O(`click`,We,Te),O(`mousedown`,We,e=>e.stopPropagation()),O(`click`,Je,De),O(`mousedown`,Je,e=>e.stopPropagation()),O(`click`,Fe,e=>{e.stopPropagation(),oe(`nodeClick`,{event:e})}),O(`mousedown`,Fe,_e),O(`mouseup`,Fe,ve),O(`mouseleave`,Fe,ve),O(`dblclick`,Fe,ye),E(e,Pe),Ee(),l()}var b_={connections:!0},x_={connections:!0,elements:!0,nodes:!0},S_=class{constructor(e,t=o_){this.resolveGraph=e,this.invalidate=t}restoreConnections(){let e=this.resolveGraph();return e?(e.restoreConnections(),this.publish(e,{connections:!0,elements:!0}),!0):!1}connect(e,t){let n=this.requireGraph(),r=n.connect(e,t);return this.publish(n,b_),r}disconnect(e){let t=this.resolveGraph();return t?(t.disconnect(e),this.publish(t,b_),!0):!1}disconnectMany(e){let t=this.resolveGraph();if(!t)return!1;for(let n of e)t.disconnect(n);return this.publish(t,b_),!0}renameElement(e,t){let n=this.resolveGraph();return!n||!n.renameElement(e,t)?!1:(this.publish(n,x_),!0)}removeElement(e){let t=this.resolveGraph();return!t||!t.getElement(e)?!1:(t.removeElement(e),this.publish(t,x_),!0)}reparentElement(e,t){let n=this.resolveGraph(),r=n?.getElement(e),i=t?n?.getNode(t)??null:null;return!n||!r||t&&!i||!n.reparentElement(r,i)?!1:(this.publish(n,{elements:!0,nodes:!0}),!0)}refresh(e=x_){let t=this.resolveGraph();return t?(this.publish(t,e),!0):!1}requireGraph(){let e=this.resolveGraph();if(!e)throw Error(`No graph is loaded`);return e}publish(e,t){t.connections&&(e.connections=[...e.connections]),t.elements&&(e.elements=[...e.elements]),t.nodes&&(e.nodes=[...e.nodes]),this.invalidate()}};function C_(e){let t=0,n=e;for(;n=n.parentElement;)t+=1;return t}function w_(e=document){let t=Array.from(e.querySelectorAll(`[data-panel-scope]`));if(t.length===0)return null;let n=t.filter(e=>e.matches(`:hover`));if(n.length>0)return n.reduce((e,t)=>C_(t)>C_(e)?t:e);let r=e.activeElement;if(r instanceof HTMLElement){let e=r.closest(`[data-panel-scope]`);if(e)return e}return null}function T_(e=document){return w_(e)?.dataset.panelScope??null}function E_(e,t=document){let n=T_(t);return n===null||n===e}function D_(e){let t=e.dataTransfer?.types;return t?Array.from(t).includes(`Files`):!1}var O_=50,k_=w({past:[],future:[]}),A_=ke(k_,e=>e.past.length>0),j_=ke(k_,e=>e.future.length>0),M_=0,N_=null,P_=300;function F_(e,t,n,r={}){let{debounce:i=!1,immediate:a=!1}=r;N_&&=(clearTimeout(N_),null);let o=()=>{let r={json:e.toJSON(),selectedNodeId:t,selectedAnnotationId:n,timestamp:Date.now()};k_.update(e=>{let t=[...e.past,r];return t.length>O_&&t.shift(),{past:t,future:[]}}),M_=Date.now()};a?o():i&&Date.now()-M_<P_?N_=setTimeout(o,P_):o()}function I_(e,t,n){F_(e,t,n,{immediate:!0})}function L_(e,t,n){let r=N(k_);if(r.past.length===0)return null;let i={json:e.toJSON(),selectedNodeId:t,selectedAnnotationId:n,timestamp:Date.now()},a=r.past[r.past.length-1];return k_.update(e=>({past:e.past.slice(0,-1),future:[i,...e.future]})),a}function R_(e,t,n){let r=N(k_);if(r.future.length===0)return null;let i={json:e.toJSON(),selectedNodeId:t,selectedAnnotationId:n,timestamp:Date.now()},a=r.future[0];return k_.update(e=>({past:[...e.past,i],future:e.future.slice(1)})),a}function z_(){N_&&=(clearTimeout(N_),null),k_.set({past:[],future:[]}),M_=0}var B_=w([]);function V_(e){B_.update(t=>t.length===e.length&&t.every((t,n)=>t===e[n])?t:[...e])}function H_(e,t,n){if(!e)return n?[n]:[];let r=new Set(t);if(r.size>0){let t=e.nodes.filter(e=>r.has(e.id));if(t.length>0)return t}let i=e.nodes.filter(e=>e.selected||e.id===n?.id);return i.length>0?i:n?[n]:[]}var U_=``;async function W_(e){U_=e;let t=globalThis.navigator?.clipboard;if(t?.writeText)try{return await t.writeText(e),!0}catch{}if(typeof document>`u`||typeof document.execCommand!=`function`)return!1;let n=document.createElement(`textarea`);n.value=e,n.style.position=`fixed`,n.style.opacity=`0`,document.body.appendChild(n),n.select();try{return document.execCommand(`copy`)}catch{return!1}finally{n.remove()}}async function G_(){let e=globalThis.navigator?.clipboard;if(e?.readText)try{let t=await e.readText();if(t)return t}catch{}return U_}function K_(e,t,n,r=8){return{x:Math.max(r,Math.min(e.x,n.width-t.width-r)),y:Math.max(r,Math.min(e.y,n.height-t.height-r))}}var q_=u(`<div class="separator svelte-1e26x91" role="separator"></div>`),J_=u(`<!> <button type="button" role="menuitem" tabindex="-1"> </button>`,1),Y_=u(`<div class="node-context-menu svelte-1e26x91" role="menu" tabindex="-1" aria-label="Node actions"></div>`);function X_(t,n){ee(n,!1);let r=V(n,`x`,8),i=V(n,`y`,8),s=V(n,`items`,24,()=>[]),c=xe(),l=Y(),u=Y(`left: ${r()}px; top: ${i()}px; visibility: hidden`),d=()=>s().map((e,t)=>e.disabled?-1:t).filter(e=>e>=0);ye(async()=>{if(await e(),x(l)){let{width:e,height:t}=x(l).getBoundingClientRect(),n=K_({x:r(),y:i()},{width:e,height:t},{width:window.innerWidth,height:window.innerHeight});L(u,`left: ${n.x}px; top: ${n.y}px`)}h(d()[0]??-1)});function p(){c(`close`)}function m(e){e.disabled||(p(),e.run())}function h(e){e<0||!x(l)||x(l).querySelectorAll(`button.item`)[e]?.focus()}function g(){return x(l)?Array.from(x(l).querySelectorAll(`button.item`)).findIndex(e=>e===document.activeElement):-1}function _(e){let t=d();if(t.length===0)return;let n=t.indexOf(g());h(t[n===-1?e>0?0:t.length-1:(n+e+t.length)%t.length])}function y(e){switch(e.key){case`Escape`:e.preventDefault(),e.stopPropagation(),p();return;case`ArrowDown`:e.preventDefault(),_(1);return;case`ArrowUp`:e.preventDefault(),_(-1);return;case`Home`:e.preventDefault(),h(d()[0]??-1);return;case`End`:{e.preventDefault();let t=d();h(t[t.length-1]??-1);return}}}function b(e){x(l)&&e.target instanceof globalThis.Node&&x(l).contains(e.target)||p()}ue();var S=Y_();O(`keydown`,ce,y),O(`pointerdown`,ce,b),O(`wheel`,ce,p),O(`resize`,ce,p),O(`blur`,ce,p),f(S,5,s,e=>e.id,(e,t)=>{var n=J_(),r=G(n),i=e=>{var t=q_();E(e,t)};Z(r,e=>{x(t),F(()=>x(t).separatorBefore)&&e(i)});var a=P(r,2);let o;var s=q(a,!0);K(()=>{o=v(a,1,`item svelte-1e26x91`,null,o,{danger:x(t).danger}),a.disabled=(x(t),F(()=>x(t).disabled)),X(a,`data-item-id`,(x(t),F(()=>x(t).id))),D(s,(x(t),F(()=>x(t).label)))}),O(`click`,a,I(()=>m(x(t)))),E(e,n)}),o(S),ge(S,e=>L(l,e),()=>x(l)),K(()=>a(S,x(u))),O(`contextmenu`,S,Se(I(function(e){be.call(this,n,e)}))),E(t,S),Ee()}function Z_(e,t){return e===1?`1 ${t}`:`${e} ${t}s`}var Q_=u(`<input type="text" class="path-input svelte-p2f6pl" placeholder="Enter path (e.g., /subnet1/node1)"/>`),$_=u(`<span class="path-separator svelte-p2f6pl">›</span>`),ev=u(`<!> <button> </button>`,1),tv=u(`<!> <button class="path-edit-btn svelte-p2f6pl" title="Press / to navigate by path">/</button>`,1),nv=u(`<div class="selection-rectangle svelte-p2f6pl"></div>`),rv=m(`<path fill="none" stroke="transparent" stroke-width="12" class="connection-hit-area"></path><path fill="none" stroke-width="2"></path>`,1),iv=m(`<g><circle class="endpoint-marker svelte-p2f6pl" cx="0" cy="0" r="12" stroke-width="1" opacity="0.9"></circle><path class="endpoint-icon svelte-p2f6pl" d="M -6,-4 L -6,4 M 6,-4 L 6,4 M -4,-6 L 4,6 M -4,6 L 4,-6" stroke-width="1.5" stroke-linecap="round" fill="none"></path></g>`),av=m(`<path fill="none" stroke-width="2" class="connection-preview svelte-p2f6pl"></path>`),ov=u(`<div class="annotation-debug"> </div>`),sv=u(`<div data-panel-scope="graph" role="application" aria-label="Graph canvas" tabindex="0"><div class="network-path-bar svelte-p2f6pl"><!></div> <!> <svg class="grid svelte-p2f6pl"><defs><pattern id="dots" width="20" height="20" patternUnits="userSpaceOnUse"><circle class="grid-dot svelte-p2f6pl" cx="10" cy="10" r="0.5"></circle></pattern></defs><rect class="grid-ground svelte-p2f6pl" width="100%" height="100%"></rect><rect width="100%" height="100%" fill="url(#dots)"></rect></svg> <svg class="connections-layer svelte-p2f6pl"><!><!><!></svg> <div class="annotations-container svelte-p2f6pl"></div> <div class="nodes-container svelte-p2f6pl"></div></div> <!>`,1);function cv(t,n){ee(n,!1);let r=()=>we(a_,`$graphStructure`,i),[i,s]=ne(),c=Y(),l=Y(),u=Y(),d=Y(),p=Y(),m=Y(),_=Y(),y=Y(),b=xe(),S=V(n,`activeTool`,12,`select`),C=V(n,`selectedNode`,12,null),w=V(n,`graph`,28,()=>new Nf),T=V(n,`selectedAnnotation`,12,null),k=V(n,`transform`,8,void 0);V(n,`onRecordHistory`,8,void 0);let j=new S_(()=>w()),N=Y(),ie=Y(),ae=Y(0);me(()=>x(ie)?.());function I(){I_(w(),C()?.id||null,T())}let R=Y(),z=Y(k()?{...k()}:{x:0,y:0,zoom:1}),B=Y(k()?{...k()}:null),ce=Y({...x(z)}),le=!1,H=Y([]),U=Y([]);function de(e,t){if(t){let n=new Set(e);for(let e of t.nodes)e.selected=n.has(e.id)}V_(e)}let fe=Y(null);function W(e){let t=[{id:`root`,label:`/`,node:null}];if(!e)return t;let n=[],r=e;for(;r;)n.unshift(r),r=r.parent;for(let e of n)t.push({id:e.id,label:e.id,node:e});return t}function _e(e){e.isNetwork()&&(L(fe,e),L(H,[]),C(null),b(`nodeSelect`,{node:null}))}function ve(){if(x(fe)){let e=x(fe);L(fe,x(fe).parent),L(H,[e.id]),C(e),b(`nodeSelect`,{node:e})}}function be(e){L(fe,e),L(H,[]),C(null),b(`nodeSelect`,{node:null})}let Se=Y(!1),Te=Y(``),De=Y(null);function Oe(){L(Te,x(fe)?x(fe).path():`/`),L(Se,!0),setTimeout(()=>{x(De)?.focus(),x(De)?.select()},10)}function ke(){L(Se,!1),L(Te,``)}function Ae(e){if(!e||e===`/`)L(fe,null);else{let t=null,n=e.replace(/^\//,``).split(`/`).filter(e=>e),r=null;for(let e of n){let t=(r?r.children():w().nodes.filter(e=>!e.parent)).find(t=>t.id===e);if(t)r=t;else{console.warn(`Path segment not found: ${e}`);return}}if(t=r,t&&t.isNetwork())L(fe,t);else if(t){L(fe,t.parent),L(H,[t.id]),C(t),b(`nodeSelect`,{node:t}),ke();return}}L(H,[]),C(null),b(`nodeSelect`,{node:null}),ke()}function je(e){e.key===`Enter`?(e.preventDefault(),Ae(x(Te))):e.key===`Escape`&&(e.preventDefault(),ke())}function Me(e,t){return t?e.filter(e=>e.parent===t):e.filter(e=>!e.parent)}let Ne=null,Fe=Y(!1);function Ie(){return x(Fe)||(Ne=Kt(),L(Fe,!0)),Ne}function Re(e,t){w().reparentElement(t,e)}function ze(){if(x(H).length===0)return;I();let e=x(H).map(e=>w().getNode(e)).filter(Boolean);if(e.length===0)return;let t=new Set(e.map(e=>e.id)),n={minX:Math.min(...e.map(e=>e.position.x)),minY:Math.min(...e.map(e=>e.position.y)),maxX:Math.max(...e.map(e=>e.position.x)),maxY:Math.max(...e.map(e=>e.position.y))},r=[],i=[];w().connections.forEach(e=>{let n=t.has(e.from.nodeId),a=t.has(e.to.nodeId);if(!n&&a){let t=w().getNode(e.to.nodeId),n=t?.inputs.find(t=>t.id===e.to.portId);t&&n&&r.push({conn:e,targetNode:t,targetPort:n})}else if(n&&!a){let t=w().getNode(e.from.nodeId),n=t?.outputs.find(t=>t.id===e.from.portId),r=w().getNode(e.to.nodeId),a=r?.inputs.find(t=>t.id===e.to.portId);t&&n&&r&&a&&i.push({conn:e,sourceNode:t,sourcePort:n,targetNode:r,targetPort:a})}});let a=w().addNode(`Subnet`,{x:(n.minX+n.maxX)/2,y:(n.minY+n.maxY)/2});x(fe)&&Re(x(fe),a),e.forEach(e=>{e.position={x:e.position.x-a.position.x,y:e.position.y-a.position.y},Re(a,e)});let o=new Map;if(r.forEach((e,t)=>{let r=w().addNode(`Input`,{x:n.minX-a.position.x-150,y:n.minY-a.position.y+t*80});Re(a,r),r.props.inputIndex&&r.updateProp(`inputIndex`,t),w().disconnect(e.conn.id);let i=r.outputs[0];i&&e.targetPort&&w().connect(i,e.targetPort),o.set(e.conn.from.portId,r)}),r.length>0){let e=r[0],t=w().getNode(e.conn.from.nodeId)?.outputs.find(t=>t.id===e.conn.from.portId);t&&a.inputs[0]&&w().connect(t,a.inputs[0])}let s=null;if(i.length>0)s=i[0].sourceNode,s.setCook(!0);else if(e.length>0){let t=e[e.length-1];t.setCook(!0),s=t}i.forEach(e=>{w().disconnect(e.conn.id);let t=a.outputs[0];t&&e.targetPort&&w().connect(t,e.targetPort)}),j.refresh({nodes:!0,connections:!0}),L(H,[a.id]),C(a),b(`nodeSelect`,{node:a})}function Be(){if(x(H).length!==1)return;let e=w().getNode(x(H)[0]);if(!e||!e.isNetwork()||e.children().length===0)return;I();let t=[...e.children()],n=e.parent,r=t.filter(e=>e.type===`Input`),i=t.filter(e=>e.type===`Output`),a=t.filter(e=>e.type!==`Input`&&e.type!==`Output`);if(a.length===0)return;let o=[];w().connections.forEach(t=>{if(t.to.nodeId===e.id){let n=e.inputs.findIndex(e=>e.id===t.to.portId);n!==-1&&o.push({conn:t,inputIndex:n})}});let s=[];w().connections.forEach(t=>{if(t.from.nodeId===e.id){let n=e.outputs.findIndex(e=>e.id===t.from.portId);n!==-1&&s.push({conn:t,outputIndex:n})}});let c=new Map;r.forEach(e=>{let t=e.evalParm(`inputIndex`)??0,n=[];w().connections.forEach(t=>{if(t.from.nodeId===e.id){let e=w().getNode(t.to.nodeId),r=e?.inputs.find(e=>e.id===t.to.portId);e&&r&&n.push({node:e,port:r})}}),c.has(t)||c.set(t,[]),c.get(t).push(...n)});let l=null,u=e.children().find(e=>e.cook),d=i[0];d?w().connections.forEach(e=>{if(e.to.nodeId===d.id){let t=w().getNode(e.from.nodeId),n=t?.outputs.find(t=>t.id===e.from.portId);t&&n&&(l=n)}}):u&&(l=u.outputs[0]),a.forEach(t=>{t.position={x:t.position.x+e.position.x,y:t.position.y+e.position.y},w().reparentElement(t,n)}),[...r,...i].forEach(e=>{w().connections.filter(t=>t.from.nodeId===e.id||t.to.nodeId===e.id).forEach(e=>w().disconnect(e.id)),w().removeNode(e.id)}),o.forEach(({conn:e,inputIndex:t})=>{let n=c.get(t)||[],r=w().getNode(e.from.nodeId)?.outputs.find(t=>t.id===e.from.portId);w().disconnect(e.id),r&&n.forEach(({port:e})=>{w().connect(r,e)})}),s.forEach(({conn:e})=>{let t=w().getNode(e.to.nodeId)?.inputs.find(t=>t.id===e.to.portId);w().disconnect(e.id),l&&t&&w().connect(l,t)}),w().connections.filter(t=>t.from.nodeId===e.id||t.to.nodeId===e.id).forEach(e=>w().disconnect(e.id)),w().removeNode(e.id),j.refresh({nodes:!0,connections:!0}),L(H,a.map(e=>e.id)),C(a[0]??null),b(`nodeSelect`,{node:C()})}let Ve=!1,He=Y(!1),Ue=Y(null),We=Y(null),Q=Y(null),Ge=!1,Ke=Y(null),qe=Y(null),Je=Y({x:0,y:0}),Ye=null,Xe=Y(null),Ze=Y(!1),$=null,Qe=null,$e=null,et=null;function tt(e,t){return t.filter(e=>e&&e.position).map(e=>({id:e.id,x:e.position.x,y:e.position.y}))}let nt=Y([]);function rt(e,t,n){return e.id===n?!0:t.length===0?!1:t.includes(e.from.nodeId)||t.includes(e.to.nodeId)}function it(e){let t=w().getNode(e.to.nodeId);return t?.cookState===`queued`||t?.cookState===`cooking`}function at(e){if(x(R)){if(e.button===0&&(e.ctrlKey||e.metaKey)&&!e.target.closest(`.node, .annotation`)){let t=x(R).getBoundingClientRect(),n=st((e.clientX-t.left-x(z).x)/x(z).zoom,(e.clientY-t.top-x(z).y)/x(z).zoom);if(n){e.preventDefault(),e.stopPropagation(),I(),j.disconnect(n.id),L(Xe,null);return}}if(e.button===1)le=!0,e.preventDefault();else if(e.button===0&&(Ve||S()===`hand`))le=!0;else if(e.button===0&&S()===`select`&&!$){if(!e.target.closest(`.node, .annotation`)){let t=x(R).getBoundingClientRect();L(Ue,{x:(e.clientX-t.left-x(z).x)/x(z).zoom,y:(e.clientY-t.top-x(z).y)/x(z).zoom}),L(We,{x:e.clientX-t.left,y:e.clientY-t.top}),L(Je,{...x(Ue)}),L(Q,{...x(We)}),L(He,!0),Ge=!1,e.shiftKey||(L(H,[]),L(U,[]),C(null),T(null),b(`nodeSelect`,{node:null}),b(`annotationSelect`,{annotationId:null}))}}else if(e.button===0&&S()===`line`){if(e.target.closest(`.annotation, .node`))return;let t=x(R).getBoundingClientRect(),n=(e.clientX-t.left-x(z).x)/x(z).zoom,r=(e.clientY-t.top-x(z).y)/x(z).zoom,i=`line_${Date.now().toString(36)}`,a={id:i,type:`Line`,position:{x:n,y:r},endPosition:{x:n,y:r},style:{strokeWidth:2,strokeColor:`#ffffff`}};if(I(),w().addAnnotation(a),x(fe)){let e=w().getAnnotation(i);e&&Re(x(fe),e)}w(w().annotations=[...w().annotations],!0),yt={annotationId:i,startPos:{x:n,y:r}},e.stopPropagation()}else if(e.button===0&&S()===`polyline`){if(e.target.closest(`.annotation, .node`))return;let t=x(R).getBoundingClientRect(),n=(e.clientX-t.left-x(z).x)/x(z).zoom,r=(e.clientY-t.top-x(z).y)/x(z).zoom,i=`polyline_${Date.now().toString(36)}`,a={id:i,type:`Polyline`,position:{x:n,y:r},points:[{x:n,y:r}],style:{strokeWidth:2,strokeColor:`#ffffff`}};if(I(),w().addAnnotation(a),x(fe)){let e=w().getAnnotation(i);e&&Re(x(fe),e)}w(w().annotations=[...w().annotations],!0),bt={annotationId:i,points:[{x:n,y:r}]},e.stopPropagation()}}}function ot(e){if(le&&(oe(z,x(z).x+=e.movementX),oe(z,x(z).y+=e.movementY),L(z,{...x(z)})),x(He)&&x(Ue)){let t=x(R).getBoundingClientRect(),n=(e.clientX-t.left-x(z).x)/x(z).zoom,r=(e.clientY-t.top-x(z).y)/x(z).zoom;L(Je,{x:n,y:r}),L(Q,{x:e.clientX-t.left,y:e.clientY-t.top})}if($){let t=w().getNode($.nodeId);if(t){let n=x(R).getBoundingClientRect(),r=(e.clientX-n.left-x(z).x)/x(z).zoom-$.offset.x,i=(e.clientY-n.top-x(z).y)/x(z).zoom-$.offset.y;if((x(H).length>1||x(U).length>0)&&Qe&&$){let e=Qe.nodes.find(e=>e.nodeId===$.nodeId);if(!e){t.position={x:r,y:i},w(w().nodes=[...w().nodes],!0);return}let n=r-e.startPos.x,a=i-e.startPos.y;Qe.nodes.forEach(({nodeId:e,startPos:t})=>{let r=w().getNode(e);r&&(r.position={x:t.x+n,y:t.y+a})}),w(w().annotations=w().annotations.map(e=>{let t=Qe?.annotations.find(t=>t.annotationId===e.id);if(!t)return e;let r=t.startPos.x+n,i=t.startPos.y+a;return{...e,position:{x:r,y:i},style:e.style?{...e.style}:void 0,outputs:e.outputs?e.outputs.map(e=>({...e})):void 0}}),!0)}else t.position={x:r,y:i};w(w().nodes=[...w().nodes],!0),w(w().annotations=[...w().annotations],!0)}}if(x(_t)&&!vt){let t=w().getAnnotation(x(_t).annotationId);if(t){let n=x(R).getBoundingClientRect(),r=(e.clientX-n.left-x(z).x)/x(z).zoom-x(_t).offset.x,i=(e.clientY-n.top-x(z).y)/x(z).zoom-x(_t).offset.y;if((x(U).length>1||x(H).length>0)&&Qe&&x(_t)){let e=Qe.annotations.find(e=>e.annotationId===x(_t).annotationId);if(!e){w(w().annotations=w().annotations.map(e=>{if(e.id!==t.id)return e;let n=e.position.x,a=e.position.y,o=r-n,s=i-a;return e.type===`Line`?{...e,position:{x:r,y:i},endPosition:e.endPosition?{x:e.endPosition.x+o,y:e.endPosition.y+s}:void 0}:e.type===`Polyline`?{...e,position:{x:r,y:i},points:e.points?e.points.map(e=>({x:e.x+o,y:e.y+s})):void 0}:{...e,position:{x:r,y:i}}}),!0);return}let n=r-e.startPos.x,a=i-e.startPos.y;Qe.nodes.forEach(({nodeId:e,startPos:t})=>{let r=w().getNode(e);r&&(r.position={x:t.x+n,y:t.y+a})}),w(w().annotations=w().annotations.map(e=>{let t=Qe?.annotations.find(t=>t.annotationId===e.id);if(!t)return e;let r=t.startPos.x+n,i=t.startPos.y+a,o=e.position.x,s=e.position.y,c=r-o,l=i-s;return e.type===`Line`?{...e,position:{x:r,y:i},endPosition:e.endPosition?{x:e.endPosition.x+c,y:e.endPosition.y+l}:void 0}:e.type===`Polyline`?{...e,position:{x:r,y:i},points:e.points?e.points.map(e=>({x:e.x+c,y:e.y+l})):void 0}:{...e,position:{x:r,y:i}}}),!0),w(w().nodes=[...w().nodes],!0);return}w(w().annotations=w().annotations.map(e=>{if(e.id!==t.id)return e;let n=e.position.x,a=e.position.y,o=r-n,s=i-a;return e.type===`Line`?{...e,position:{x:r,y:i},endPosition:e.endPosition?{x:e.endPosition.x+o,y:e.endPosition.y+s}:void 0,style:e.style?{...e.style}:void 0,outputs:e.outputs?e.outputs.map(e=>({...e})):void 0}:e.type===`Polyline`?{...e,position:{x:r,y:i},points:e.points?e.points.map(e=>({x:e.x+o,y:e.y+s})):void 0,style:e.style?{...e.style}:void 0,outputs:e.outputs?e.outputs.map(e=>({...e})):void 0}:{...e,position:{x:r,y:i},style:e.style?{...e.style}:void 0,outputs:e.outputs?e.outputs.map(e=>({...e})):void 0}}),!0),w(w().nodes=[...w().nodes],!0)}}if(vt){let t=vt;if(w().getAnnotation(t.annotationId)){let n=x(R).getBoundingClientRect(),r=(e.clientX-n.left-x(z).x)/x(z).zoom,i=(e.clientY-n.top-x(z).y)/x(z).zoom,a=r-t.startPos.x,o=i-t.startPos.y,s=t.startSize.width,c=t.startSize.height,l=t.startPosition.x,u=t.startPosition.y,d=t.handle;d.includes(`e`)?s=Math.max(100,t.startSize.width+a):d.includes(`w`)&&(s=Math.max(100,t.startSize.width-a),l=t.startPosition.x+(t.startSize.width-s)),d.includes(`s`)?c=Math.max(40,t.startSize.height+o):d.includes(`n`)&&(c=Math.max(40,t.startSize.height-o),u=t.startPosition.y+(t.startSize.height-c)),w(w().annotations=w().annotations.map(e=>e.id===t.annotationId?{...e,position:{x:l,y:u},size:{width:s,height:c},style:e.style?{...e.style}:void 0,outputs:e.outputs?e.outputs.map(e=>({...e})):e.outputs,points:e.points?e.points.map(e=>({...e})):void 0,endPosition:e.endPosition?{...e.endPosition}:void 0}:e),!0)}}if(yt){let t=yt;if(w().getAnnotation(t.annotationId)){let n=x(R).getBoundingClientRect(),r=(e.clientX-n.left-x(z).x)/x(z).zoom,i=(e.clientY-n.top-x(z).y)/x(z).zoom;w(w().annotations=w().annotations.map(e=>e.id===t.annotationId?{...e,endPosition:{x:r,y:i}}:e),!0)}}if(bt){let t=bt;if(w().getAnnotation(t.annotationId)){let n=x(R).getBoundingClientRect(),r=(e.clientX-n.left-x(z).x)/x(z).zoom,i=(e.clientY-n.top-x(z).y)/x(z).zoom,a=t.points[t.points.length-1];Math.sqrt((r-a.x)**2+(i-a.y)**2)>3&&(t.points.push({x:r,y:i}),w(w().annotations=w().annotations.map(e=>e.id===t.annotationId?{...e,points:[...t.points]}:e),!0))}}if(x(Ke)){let t=x(R).getBoundingClientRect();L(Je,{x:(e.clientX-t.left-x(z).x)/x(z).zoom,y:(e.clientY-t.top-x(z).y)/x(z).zoom})}if(!x(Ke)&&!$&&!x(_t)&&!x(He)){let t=x(R).getBoundingClientRect(),n=(e.clientX-t.left-x(z).x)/x(z).zoom,r=(e.clientY-t.top-x(z).y)/x(z).zoom,i=e.ctrlKey||e.metaKey,a=st(n,r);a&&i?L(Xe,{connectionId:a.id,position:{x:n,y:r}}):L(Xe,null)}else L(Xe,null)}function st(e,t){let n=8/x(z).zoom;for(let r of x(nt)){let i=on(r.from.nodeId,r.from.portId,`output`),a=on(r.to.nodeId,r.to.portId,`input`);if(!i||!a)continue;let o=Math.abs(a.y-i.y)*.5;for(let s=0;s<=1;s+=.05){let c=i.x,l=i.y,u=i.x,d=i.y+o,f=a.x,p=a.y-o,m=a.x,h=a.y,g=1-s,_=g*g*g*c+3*g*g*s*u+3*g*s*s*f+s*s*s*m,v=g*g*g*l+3*g*g*s*d+3*g*s*s*p+s*s*s*h;if(Math.sqrt((e-_)**2+(t-v)**2)<n)return r}}return null}function ct(e){if(e.button===1?(le=!1,e.preventDefault()):le=!1,x(Ke)&&e.button===0){let t=e.target.closest(`.port`);if(t){let e=t.getAttribute(`data-node-id`),n=t.getAttribute(`data-port-id`),r=t.getAttribute(`data-port-type`),i=t.getAttribute(`data-variadic-base`);if(e&&n&&r){let t=x(Ke);if(t.portType===`output`&&r===`input`&&t.nodeId!==e){let r=w().getElement(t.nodeId),a=w().getElement(e);if(r&&a){let e=r.outputs.find(e=>e.id===t.portId),o;if(i?(o=a.inputs.filter(e=>e.variadic&&e.name.startsWith(`${i}_`)&&!e.options?.hidden).find(e=>e.connections.length===0),!o&&a.syncVariadicPorts&&(a.syncVariadicPorts(),o=a.inputs.filter(e=>e.variadic&&e.name.startsWith(`${i}_`)&&!e.options?.hidden).find(e=>e.connections.length===0)),o||=a.inputs.find(e=>e.id===n)):o=a.inputs.find(e=>e.id===n),e&&o)try{I();let n=o.variadic===!0,i=[];if(n){let e=a.id;x(H).forEach(n=>{if(n!==t.nodeId&&n!==e){let e=w().getNode(n);e&&e.outputs.length>0&&i.push({element:e,output:e.outputs[0]})}}),x(U).forEach(n=>{if(n!==t.nodeId&&n!==e){let e=w().getAnnotation(n);e&&e.outputs&&e.outputs.length>0&&i.push({element:e,output:e.outputs[0]})}})}if(a.isNetwork&&a.isNetwork()){let t=w().addNode(`Input`,{x:-200,y:(a.children().length-a.children().filter(e=>e.type===`Input`).length)*80});t.id=w().generateUniqueNodeId(`input`),Re(a,t);let n=a.children().filter(e=>e.type===`Input`).length-1;t.props.inputIndex&&t.updateProp(`inputIndex`,n),w().connect(e,o),w(w().nodes=[...w().nodes],!0)}else r.isNetwork&&r.isNetwork(),w().connect(e,o);if(n&&i.length>0){let e=o.name.match(/^(.+)_(\d+)$/);if(e&&a.syncVariadicPorts){let t=e[1],n=parseInt(e[2],10)+1;for(let{output:e}of i){a.syncVariadicPorts();let r=`${t}_${n}`,i=a.inputs.find(e=>e.name===r&&!e.options?.hidden);if(i||=(a.syncVariadicPorts(),a.inputs.find(e=>e.name===r&&!e.options?.hidden)),i)try{w().connect(e,i),n++}catch(e){console.warn(`Failed to connect additional element:`,e)}}}}j.refresh({connections:!0})}catch(e){console.error(`Failed to connect:`,e)}}}}L(Ke,null),L(qe,null),Ye=null}else Ye&&=(I(),j.disconnectMany(Ye.connectionIds),null),L(Ke,null),L(qe,null)}if($=null,L(_t,null),Qe=null,vt=null,yt&&(yt=null,S(`select`),b(`toolChange`,`select`)),bt&&(bt=null,S(`select`),b(`toolChange`,`select`)),x(He)&&x(Ue)){let t=x(R).getBoundingClientRect(),n=(e.clientX-t.left-x(z).x)/x(z).zoom,r=(e.clientY-t.top-x(z).y)/x(z).zoom,i=Math.min(x(Ue).x,n),a=Math.max(x(Ue).x,n),o=Math.min(x(Ue).y,r),s=Math.max(x(Ue).y,r),c=[];w().nodes.forEach(e=>{let t=e.position.x,n=e.position.x+120,r=e.position.y,l=e.position.y+80;n>=i&&t<=a&&l>=o&&r<=s&&c.push(e.id)});let l=[];w().annotations.forEach(e=>{let t,n,r,c;if(e.type===`Line`){let i=e.position.x,a=e.position.y,o=e.endPosition?.x??e.position.x,s=e.endPosition?.y??e.position.y;t=Math.min(i,o),n=Math.max(i,o),r=Math.min(a,s),c=Math.max(a,s);let l=(e.style?.strokeWidth||2)+5;t-=l,n+=l,r-=l,c+=l}else if(e.type===`Polyline`){if(e.points&&e.points.length>0){let i=e.points.map(e=>e.x),a=e.points.map(e=>e.y);t=Math.min(...i),n=Math.max(...i),r=Math.min(...a),c=Math.max(...a);let o=(e.style?.strokeWidth||2)+5;t-=o,n+=o,r-=o,c+=o}else return}else{let i=e.size?.width||(e.type===`Text`?540:e.type===`Image`?200:300),a=e.size?.height||(e.type===`Text`?60:e.type===`Image`?150:200);t=e.position.x,n=e.position.x+i,r=e.position.y,c=e.position.y+a}n>=i&&t<=a&&c>=o&&r<=s&&l.push(e.id)}),e.shiftKey?(L(H,[...x(H),...c.filter(e=>!x(H).includes(e))]),l.forEach(e=>{x(U).includes(e)||x(U).push(e)}),l.length>0&&(T(l[0]),b(`annotationSelect`,{annotationId:T()}))):(L(H,c),L(U,l),l.length>0?(T(l[0]),b(`annotationSelect`,{annotationId:T()})):(T(null),b(`annotationSelect`,{annotationId:null}))),x(H).length>0?(C(w().getNode(x(H)[0])),C()&&b(`nodeSelect`,{node:C()})):(C(null),b(`nodeSelect`,{node:null})),L(He,!1),Ge=!0,L(Ue,null),L(We,null),L(Q,null),setTimeout(()=>{Ge=!1},100)}}function lt(e,t,n){n.stopPropagation();let r=w().getAnnotation(e);if(r){let i=x(R).getBoundingClientRect(),a=(n.clientX-i.left-x(z).x)/x(z).zoom,o=(n.clientY-i.top-x(z).y)/x(z).zoom,s=r.size||{width:200,height:150},c=r.position;vt={annotationId:e,handle:t,startPos:{x:a,y:o},startSize:{width:s.width,height:s.height},startPosition:{x:c.x,y:c.y}}}}async function ut(e,t){if(t.target.closest(`.port`)||t.button===1||t.button===2)return;let n=w().getNode(e);if(!n)return;I();let r=x(R).getBoundingClientRect(),i=(t.clientX-r.left-x(z).x)/x(z).zoom,a=(t.clientY-r.top-x(z).y)/x(z).zoom;if(t.altKey){let n=[...x(H)],r=[...x(U)];n.includes(e)||(n=[e],r=[]);let o=new Map,s=[],c=[];for(let e of n){let t=w().getNode(e);if(!t)continue;let n=t.modulePath||t.type,r=w().addNode(n,{...t.position}),i=r.id,a=w().generateUniqueNodeId(t.id,i);if(o.set(e,a),j.renameElement(i,a),r.code=t.code||``,r.comment=t.comment||``,r.bypass=t.bypass||!1,x(fe)&&w().reparentElement(r,x(fe)),s.push(a),r.code)try{await w().execute(r)}catch(e){console.warn(`Failed to execute duplicated node:`,e)}}for(let e=0;e<n.length;e++){let t=n[e],r=s[e],i=w().getNode(t),a=w().getNode(r);i&&a&&Object.keys(i.props).length>0&&Object.entries(i.props).forEach(([e,t])=>{if(a.props[e]&&(a.props[e].value=t.value,t.expression)){let n=t.expression;o.forEach((e,t)=>{[RegExp(`(ch[sv]?\\s*\\(\\s*['"][^'"]*/)${t}(/[^'"]*['"]\\s*\\))`,`g`),RegExp(`(ch[sv]?\\s*\\(\\s*['"]\\.\\./)${t}(['"]\\s*\\))`,`g`)].forEach(t=>{n=n.replace(t,`$1${e}$2`)})}),a.props[e].expression=n}})}for(let e of n){let t=w().getNode(e);if(t)for(let n of t.outputs)for(let r of n.connections){let i=r.to.nodeId,a=r.to.portId,s=o.get(e),c=o.get(i);if(s&&c){let e=w().getNode(s),r=w().getNode(c),o=w().getNode(i);if(e&&r&&o){let i=t.outputs.indexOf(n),s=o.getInputPortById(a),c=s?o.inputs.indexOf(s):-1;if(i>=0&&c>=0){let t=e.outputs[i],n=r.inputs[c];if(t&&n)try{w().connect(t,n)}catch{}}}}}}for(let e of r){let t=w().getAnnotation(e);if(!t)continue;let n=`${t.type}_${Date.now().toString(36)}_${Math.random().toString(36).substr(2,5)}`,r={...t,id:n,position:{...t.position}};x(fe)&&w().reparentElement(r,x(fe)),w().addAnnotation(r),c.push(n)}w(w().nodes=[...w().nodes],!0),w(w().annotations=[...w().annotations],!0),L(H,s),L(U,c);let l=o.get(e);if(l){let e=w().getNode(l);if(e){C(e),b(`nodeSelect`,{node:e});let t={x:i-e.position.x,y:a-e.position.y};$={nodeId:l,offset:t},(s.length>1||c.length>0)&&(Qe={nodes:s.map(e=>{let t=w().getNode(e);return{nodeId:e,startPos:t?{...t.position}:{x:0,y:0}}}),annotations:c.map(e=>{let t=w().getAnnotation(e);return{annotationId:e,startPos:t?{...t.position}:{x:0,y:0}}}),offset:t})}}t.stopPropagation();return}let o={x:i-n.position.x,y:a-n.position.y};$={nodeId:e,offset:o},(x(H).length>1||x(U).length>0)&&(Qe={nodes:x(H).map(e=>{let t=w().getNode(e);return{nodeId:e,startPos:t?{...t.position}:{x:0,y:0}}}),annotations:x(U).map(e=>{let t=w().getAnnotation(e);return{annotationId:e,startPos:t?{...t.position}:{x:0,y:0}}}),offset:o}),t.stopPropagation()}function dt(e){b(`nodeEdit`,{node:e.detail.node})}function ft(e,t){let n=t.event;if(S()===`select`){n.stopPropagation();let t=w().getNode(e);t&&(n.shiftKey?x(H).includes(e)?L(H,x(H).filter(t=>t!==e)):L(H,[...x(H),e]):L(H,[e]),C(t),b(`nodeSelect`,{node:t}))}}function pt(e,t){let n=w().getNode(e);n&&(n.setBypass(!n.bypass),w(w().nodes=[...w().nodes],!0))}function mt(e,t){let n=w().getNode(e);if(n){if(t.shiftKey){n.setCook(!0);let e=t=>{t.outputs.forEach(t=>{t.connections.forEach(t=>{let n=w().getNode(t.to.nodeId);n&&(n.setCook(!0),e(n))})})};e(n)}else n.cook?n.setCook(!1):(w().clearCookingNodes(),n.setCook(!0));w(w().nodes=[...w().nodes],!0)}}function ht(e){I(),j.disconnect(e)}let gt=Y(null),_t=Y(null),vt=null,yt=null,bt=null;function xt(e){e.key!==`Enter`&&e.key}function St(e){}function Ct(e){if((e.ctrlKey||e.metaKey)&&e.target&&!e.target.closest(`.node, .annotation`)){let t=x(R).getBoundingClientRect(),n=st((e.clientX-t.left-x(z).x)/x(z).zoom,(e.clientY-t.top-x(z).y)/x(z).zoom);if(n){e.preventDefault(),e.stopPropagation(),I(),j.disconnect(n.id),L(Xe,null);return}}if(!(e.target&&e.target.closest(`.annotation`))){if(S()===`select`&&e.target&&!e.target.closest(`.node`)&&!Ge)L(H,[]),L(U,[]),C(null),T(null),L(gt,null),b(`nodeSelect`,{node:null});else if([`text`,`image`,`group`].includes(S())){let t=x(R).getBoundingClientRect(),n=(e.clientX-t.left-x(z).x)/x(z).zoom,r=(e.clientY-t.top-x(z).y)/x(z).zoom;wt(S(),n,r),S(`select`),b(`toolChange`,`select`)}}}function wt(e,t,n){let r=`${e}_${Date.now().toString(36)}`;I();let i=e=>{if(x(fe)){let t=w().getAnnotation(e);t&&Re(x(fe),t)}};if(e===`image`){let e=document.createElement(`input`);e.type=`file`,e.accept=`image/*`,e.onchange=async e=>{let a=e.target.files?.[0];if(a){let e=new FileReader;e.onload=e=>{let a=e.target?.result,o={id:r,type:`Image`,src:a,position:{x:t,y:n},size:{width:200,height:150}};w().addAnnotation(o),i(r),w(w().annotations=[...w().annotations],!0)},e.readAsDataURL(a)}},e.click()}else if(e===`group`){let e={id:r,type:`Group`,content:`Group`,position:{x:t,y:n},containedElements:[]};w().addAnnotation(e),i(r),w(w().annotations=[...w().annotations],!0),L(gt,r),setTimeout(()=>{if(!x(R))return;let e=x(R).querySelector(`[data-annotation-id="${r}"]`);if(e){let t=e.querySelector(`input, textarea`);t&&(t.focus(),t.select())}},10)}else if(e===`text`){let e={id:r,type:`Text`,content:``,position:{x:t,y:n},size:{width:540,height:60},style:{fontSize:14,fontWeight:`normal`,fontStyle:`normal`,textAlign:`left`,color:`#ffffff`,padding:0,borderRadius:0}};w().addAnnotation(e),i(r),w(w().annotations=[...w().annotations],!0),L(gt,r),setTimeout(()=>{if(!x(R))return;let e=x(R).querySelector(`[data-annotation-id="${r}"]`);if(e){let t=e.querySelector(`input, textarea`);t&&t.focus()}},10)}}function Tt(e,t){t.stopPropagation(),S()===`select`&&!x(gt)&&(t.shiftKey?x(U).includes(e)?L(U,x(U).filter(t=>t!==e)):L(U,[...x(U),e]):(L(U,[e]),L(H,[]),C(null)),T(e),b(`annotationSelect`,{annotationId:e}))}function Et(e,t){if(t.stopPropagation(),S()===`select`&&!x(gt)&&t.button===0){if(t.target.closest(`input, textarea, button, .resize-handle`))return;I();let n=w().getAnnotation(e);if(n){x(U).includes(e)||(t.shiftKey?L(U,[...x(U),e]):(L(U,[e]),L(H,[]),C(null))),T(e),b(`annotationSelect`,{annotationId:e});let r=x(R).getBoundingClientRect(),i=(t.clientX-r.left-x(z).x)/x(z).zoom,a=(t.clientY-r.top-x(z).y)/x(z).zoom,o={x:i-n.position.x,y:a-n.position.y};L(_t,{annotationId:e,offset:o}),(x(H).length>0||x(U).length>1)&&(Qe={nodes:x(H).map(e=>{let t=w().getNode(e);return{nodeId:e,startPos:t?{...t.position}:{x:0,y:0}}}),annotations:x(U).map(e=>{let t=w().getAnnotation(e);return{annotationId:e,startPos:t?{...t.position}:{x:0,y:0}}}),offset:o})}}}function Dt(e,t,n,r){t.target.closest(`input, textarea, button`)||Et(e,t),vt||At(e,t,n,r)}function Ot(e,t){(t.key===`Enter`||t.key===` `)&&Tt(e,new MouseEvent(`click`,{bubbles:!0,cancelable:!0}))}function kt(e,t,n,r){if(!T()||T()!==e||x(gt)===e)return;let i=w().getAnnotation(e);if(!i)return;let a=x(R).getBoundingClientRect(),o=(t.clientX-a.left-x(z).x)/x(z).zoom-i.position.x,s=(t.clientY-a.top-x(z).y)/x(z).zoom-i.position.y,c=o<8,l=o>n-8,u=s<8,d=s>r-8,f=`default`;c&&u||l&&d?f=`nwse-resize`:c&&d||l&&u?f=`nesw-resize`:c||l?f=`ew-resize`:(u||d)&&(f=`ns-resize`),t.currentTarget.style.cursor=f}function At(e,t,n,r){if(!T()||T()!==e||x(gt)===e)return;let i=x(R).getBoundingClientRect(),a=(t.clientX-i.left-x(z).x)/x(z).zoom,o=(t.clientY-i.top-x(z).y)/x(z).zoom,s=w().getAnnotation(e);if(!s)return;let c=a-s.position.x,l=o-s.position.y,u=c<8,d=c>n-8,f=l<8,p=l>r-8;if(u||d||f||p){t.stopPropagation(),I();let i=`se`;u&&f?i=`nw`:u&&p?i=`sw`:d&&f?i=`ne`:d&&p?i=`se`:u?i=`w`:d?i=`e`:f?i=`n`:p&&(i=`s`),vt={annotationId:e,handle:i,startPos:{x:a,y:o},startSize:s.size||{width:n,height:r},startPosition:{...s.position}}}}function jt(e,t){t.stopPropagation(),L(gt,e)}function Mt(e,t=!1){t||I(),w().removeAnnotation(e),w(w().annotations=[...w().annotations],!0),T()===e&&T(null),L(U,x(U).filter(t=>t!==e)),x(gt)===e&&L(gt,null)}async function Nt(){let e=document.activeElement;if(e&&(e.tagName===`INPUT`||e.tagName===`TEXTAREA`))return;let t=[],n=[];if(x(H).length>0&&x(H).forEach(e=>{let n=w().getNode(e);n&&t.push(n)}),x(U).length>0)x(U).forEach(e=>{let t=w().getAnnotation(e);t&&n.push(t)});else if(T()){let e=w().getAnnotation(T());e&&n.push(e)}if(t.length===0&&n.length===0)return;I();let r=t.map(e=>e.toJSON()),i=new Set(t.map(e=>e.id)),a={type:`cascade/cut`,nodes:r,connections:w().connections.filter(e=>i.has(e.from.nodeId)&&i.has(e.to.nodeId)),annotations:n};try{await W_(JSON.stringify(a)),t.forEach(e=>{w().removeNode(e.id)}),n.forEach(e=>{w().removeAnnotation(e.id)}),w(w().nodes=[...w().nodes],!0),w(w().annotations=[...w().annotations],!0),L(H,[]),L(U,[]),C(null),T(null),b(`nodeSelect`,{node:null}),b(`annotationSelect`,{annotationId:null})}catch(e){console.error(`Failed to cut to clipboard:`,e)}}async function Pt(){let e=document.activeElement;if(e&&(e.tagName===`INPUT`||e.tagName===`TEXTAREA`))return;let t=[],n=[];if(x(H).length>0&&x(H).forEach(e=>{let n=w().getNode(e);n&&t.push(n)}),x(U).length>0)x(U).forEach(e=>{let t=w().getAnnotation(e);t&&n.push(t)});else if(T()){let e=w().getAnnotation(T());e&&n.push(e)}if(t.length===0&&n.length===0)return;let r=t.map(e=>e.toJSON()),i=new Set(t.map(e=>e.id)),a={type:`cascade/copy`,nodes:r,connections:w().connections.filter(e=>i.has(e.from.nodeId)&&i.has(e.to.nodeId)),annotations:n};try{await W_(JSON.stringify(a))}catch(e){console.error(`Failed to copy to clipboard:`,e)}}async function Ft(){let e=document.activeElement;if(!(e&&(e.tagName===`INPUT`||e.tagName===`TEXTAREA`)))try{let e=await G_(),t=JSON.parse(e);if(!t.type||!t.type.startsWith(`cascade/`))return;I();let n=new Map,r=[];if(t.nodes&&t.nodes.length>0){for(let e of t.nodes){let t=Array.isArray(e.position)?e.position[0]:e.position.x,i=Array.isArray(e.position)?e.position[1]:e.position.y,a=w().addNode(e.type,{x:t+50,y:i+50}),o=a.id,s=w().generateUniqueNodeId(e.id,o);if(n.set(e.id,s),j.renameElement(o,s),a.code=e.code||``,a.comment=e.comment||``,a.bypass=e.bypass||!1,x(fe)&&w().reparentElement(a,x(fe)),r.push(a),a.code)try{await w().execute(a)}catch(e){console.warn(`Failed to execute pasted node:`,e)}}for(let e=0;e<t.nodes.length;e++){let i=t.nodes[e],a=r[e];i.props&&Object.entries(i.props).forEach(([e,t])=>{if(a.props[e]){if(t&&typeof t==`object`&&`expression`in t){let r=t.expression;n.forEach((e,t)=>{[RegExp(`(ch[sv]?\\s*\\(\\s*['"][^'"]*/)${t}(/[^'"]*['"]\\s*\\))`,`g`),RegExp(`(ch[sv]?\\s*\\(\\s*['"]\\.\\./)${t}(['"]\\s*\\))`,`g`)].forEach(t=>{r=r.replace(t,`$1${e}$2`)})}),a.props[e]={...a.props[e],value:t.value,expression:r}}else a.updateProp(e,t)}})}}if(t.connections&&t.connections.length>0)for(let e of t.connections){let t=n.get(e.from.nodeId),r=n.get(e.to.nodeId);if(t&&r){let n=w().getNode(t),i=w().getNode(r);if(n&&i){let t=n.outputs.find(t=>t.id===e.from.portId),r=i.inputs.find(t=>t.id===e.to.portId);t&&r&&w().connect(t,r)}}}if(t.annotations&&t.annotations.length>0)for(let e of t.annotations){let t=`${e.type}_${Date.now().toString(36)}_${Math.random().toString(36).substr(2,5)}`,n={...e,id:t,position:{x:e.position.x+50,y:e.position.y+50}};x(fe)&&w().reparentElement(n,x(fe)),w().addAnnotation(n)}w(w().nodes=[...w().nodes],!0),w(w().annotations=[...w().annotations],!0),r.length>0&&(L(H,r.map(e=>e.id)),C(r[0]),b(`nodeSelect`,{node:r[0]}))}catch(e){console.debug(`Paste failed or not Cascade data:`,e)}}function It(e,t){let n=w().getAnnotation(e);n&&(n.content=t,w(w().annotations=[...w().annotations],!0))}function Lt(e,t){let n=t.target;It(e,n.value)}function Rt(e,t){let n=t.target;It(e,n.value)}function zt(){L(gt,null)}function Bt(e){D_(e)&&(e.preventDefault(),e.stopPropagation())}function Vt(e){if(!D_(e)||(e.preventDefault(),e.stopPropagation(),x(_t)))return;let t=Array.from(e.dataTransfer?.files||[]);if(t.length===0)return;let n=x(R).getBoundingClientRect(),r=(e.clientX-n.left-x(z).x)/x(z).zoom,i=(e.clientY-n.top-x(z).y)/x(z).zoom;t.forEach(async(e,t)=>{let n=r+t*30,a=i+t*30;if(e.type.startsWith(`image/`)){let t=new FileReader;t.onload=t=>{let r=t.target?.result,i=`${e.name.replace(/\.[^/.]+$/,``).replace(/[^a-zA-Z0-9_-]/g,`_`)}_${Date.now().toString(36)}`,o={id:i,type:`Image`,src:r,position:{x:n,y:a},size:{width:200,height:150},caption:e.name};if(w().addAnnotation(o),x(fe)){let e=w().getAnnotation(i);e&&Re(x(fe),e)}w(w().annotations=[...w().annotations],!0),w().assetManager.cache.set(e.name,{id:e.name,path:r,type:`image`,data:r,size:e.size,metadata:{name:e.name}})},t.readAsDataURL(e)}else try{let t=await e.text();w().assetManager.cache.set(e.name,{id:e.name,path:e.name,type:e.type.includes(`json`)?`json`:`text`,data:e.type.includes(`json`)?JSON.parse(t):t,size:e.size,metadata:{name:e.name}})}catch(e){console.warn(`Failed to load file as asset:`,e)}})}function Ht(e){e.target.closest(`.node`)||(e.preventDefault(),b(`openNodePanel`,{x:e.clientX,y:e.clientY}))}function Ut(e,t){if(!w())return;let n=e.map(e=>e.outputs.find(e=>e.name===`output`)||e.outputs[0]).filter(Boolean);if(n.length!==0){if(t.variadic)n.forEach((e,n)=>{t.syncVariadicPorts();let r=t.getVariadicInputs()[n];if(r&&e)try{w().connect(e,r)}catch{}});else{let e=t.inputs.filter(e=>e.connections.length===0&&!e.options?.hidden);n.forEach((t,n)=>{let r=e[n];if(r&&t)try{w().connect(t,r)}catch{}})}}}async function Wt(t){I();let n=[...x(H)],r=[...x(U)],i=t.type,a=t.customConfig,o=x(R).getBoundingClientRect(),s=o.width/2,c=o.height/2,l=(s-x(z).x)/x(z).zoom,u=(c-x(z).y)/x(z).zoom;if(i.startsWith(`annotation:`)){let e=i.replace(`annotation:`,``);if(e===`line`||e===`polyline`){S(e),b(`toolChange`,e);return}wt(e,l,u);return}let d=n.length===1?w().getNode(n[0]):null;d&&(l=d.position.x,u=d.position.y+90);let f=0;for(;f<64&&w().nodes.some(e=>{let t=Math.abs(e.position.x-l),n=Math.abs(e.position.y-u);return t<50&&n<50});)u+=90,f+=1;let p=w().addNode(i,{x:l,y:u});x(fe)&&x(fe).isNetwork()&&Re(x(fe),p);let m=Pe(i)!==null;if(!m&&i.startsWith(`project.`)){p.modulePath=i,p.sourceType=`project`,p.code=``;try{p.resetPortTracking();let e=await pd(i);p.setFunction(kf(p,i,e)),p.markDirty()}catch(e){console.error(`Failed to load project module ${i}:`,e)}return I(),p}if(!m){let e=a?.code||Gt(i);p.code=e,i.startsWith(`local.`)&&w().moduleResolver.createEmbeddedModule(i,e,`user`);try{p.resetPortTracking();let t=await md(e);p.setFunction(kf(p,i,t));let n=p.bypass,r=p.cook;n&&p.setBypass(!1),r||p.setCook(!0),await w().execute(p),n&&p.setBypass(!0),r||p.setCook(!1),p.cleanupUnusedPorts(),p.inputs=[...p.inputs],p.outputs=[...p.outputs],p.props={...p.props},p.markDirty()}catch(e){console.error(`Failed to initialize node:`,e),p.error=e}}let h=n.map(e=>w().getNode(e)).filter(e=>e!==null),g=r.map(e=>w().getAnnotation(e)).filter(e=>e!==null),_=[...h,...g];_.length>0&&Ut(_,p),j.refresh({nodes:!0,connections:!0});let v=l*x(z).zoom+x(z).x,y=u*x(z).zoom+x(z).y,T=s-v,ee=c-y;oe(z,x(z).x+=T),oe(z,x(z).y+=ee),L(z,{...x(z)}),await e(),L(H,[p.id]),C(p),b(`nodeSelect`,{node:p})}function Gt(e){return`// ${Le(e)} - Custom Node
|
|
189
189
|
//
|
|
190
190
|
// Ports and parameters are declared inside execute(); it runs once to discover
|
|
191
191
|
// them and again whenever the node cooks.
|
|
@@ -197,16 +197,16 @@ export function execute(node, graph) {
|
|
|
197
197
|
const output = node.out('output');
|
|
198
198
|
output.setValue(input ?? value);
|
|
199
199
|
}
|
|
200
|
-
`}function Kt(){let e=1/0,t=1/0,n=-1/0,r=-1/0;return x(l).forEach(i=>{e=Math.min(e,i.position.x),t=Math.min(t,i.position.y),n=Math.max(n,i.position.x+120),r=Math.max(r,i.position.y+80)}),x(_).forEach(i=>{if(i.type===`Line`){let a=i.position.x,o=i.position.y,s=i.endPosition?.x??i.position.x,c=i.endPosition?.y??i.position.y;e=Math.min(e,a,s),t=Math.min(t,o,c),n=Math.max(n,a,s),r=Math.max(r,o,c)}else if(i.type===`Polyline`)i.points&&i.points.length>0?i.points.forEach(i=>{e=Math.min(e,i.x),t=Math.min(t,i.y),n=Math.max(n,i.x),r=Math.max(r,i.y)}):(e=Math.min(e,i.position.x),t=Math.min(t,i.position.y),n=Math.max(n,i.position.x),r=Math.max(r,i.position.y));else{let a=i.size?.width||(i.type===`Text`?540:i.type===`Image`?200:300),o=i.size?.height||(i.type===`Text`?60:i.type===`Image`?150:200);e=Math.min(e,i.position.x),t=Math.min(t,i.position.y),n=Math.max(n,i.position.x+a),r=Math.max(r,i.position.y+o)}}),e===1/0?null:{x:(e+n)/2,y:(t+r)/2}}function qt(){if(!x(R))return;let e=Kt();if(!e)return;let t=e.x,n=e.y,r=x(R).getBoundingClientRect(),i=r.width,a=r.height,o=1/0,s=1/0,c=-1/0,u=-1/0;x(l).forEach(e=>{o=Math.min(o,e.position.x),s=Math.min(s,e.position.y),c=Math.max(c,e.position.x+120),u=Math.max(u,e.position.y+80)}),x(_).forEach(e=>{if(e.type===`Line`){let t=e.position.x,n=e.position.y,r=e.endPosition?.x??e.position.x,i=e.endPosition?.y??e.position.y;o=Math.min(o,t,r),s=Math.min(s,n,i),c=Math.max(c,t,r),u=Math.max(u,n,i)}else if(e.type===`Polyline`)e.points&&e.points.length>0?e.points.forEach(e=>{o=Math.min(o,e.x),s=Math.min(s,e.y),c=Math.max(c,e.x),u=Math.max(u,e.y)}):(o=Math.min(o,e.position.x),s=Math.min(s,e.position.y),c=Math.max(c,e.position.x),u=Math.max(u,e.position.y));else{let t=e.size?.width||(e.type===`Text`?540:e.type===`Image`?200:300),n=e.size?.height||(e.type===`Text`?60:e.type===`Image`?150:200);o=Math.min(o,e.position.x),s=Math.min(s,e.position.y),c=Math.max(c,e.position.x+t),u=Math.max(u,e.position.y+n)}});let d=c-o,f=u-s,p=d*1.4,m=f*1.4,h=i/p,g=a/m,v=Math.min(h,g,1);oe(z,x(z).zoom=v);let y=i/2,b=a/2,S=t*v,C=n*v;oe(z,x(z).x=y-S),oe(z,x(z).y=b-C),L(z,{...x(z)})}function Jt(){let e=w().nodes.length>0&&w().nodes.every(e=>x(H).includes(e.id)),t=w().annotations.length===0||w().annotations.every(e=>x(U).includes(e.id));e&&t&&x(H).length>0?Yt():(L(H,w().nodes.map(e=>e.id)),L(U,w().annotations.map(e=>e.id)),w().nodes.length>0&&(C(w().nodes[0]),b(`nodeSelect`,{node:w().nodes[0]})))}function Yt(){L(H,[]),L(U,[]),C(null),b(`nodeSelect`,{node:null}),b(`annotationSelect`,{annotationId:null})}function Xt(){let e=x(H).length>0,t=x(U).length>0||T();!e&&!t||(I(),e&&(x(H).forEach(e=>{w().removeNode(e)}),L(H,[]),C(null),w(w().nodes=[...w().nodes],!0),b(`nodeSelect`,{node:null})),x(U).length>0?(x(U).forEach(e=>{Mt(e,!0)}),b(`annotationSelect`,{annotationId:null})):T()&&(Mt(T()),b(`annotationSelect`,{annotationId:null})))}function Zt(){if(x(H).length===0)return;I();let e=x(H).map(e=>w().getNode(e)).filter(Boolean),t=[];e.forEach(e=>{let n=w().addNode(e.type,{x:e.position.x+50,y:e.position.y+50});n.code=e.code,n.id=w().generateUniqueNodeId(e.id),n.comment=e.comment,n.bypass=e.bypass,x(fe)&&w().reparentElement(n,x(fe)),t.push(n)}),w(w().nodes=[...w().nodes],!0),t.length>0&&(L(H,t.map(e=>e.id)),C(t[0]),b(`nodeSelect`,{node:t[0]}))}let Qt=Y(null);function $t(){L(Qt,null)}let en=Y(``);function tn(e){b(`viewsource`,{nodeId:e.id,node:e},{cancelable:!0})&&cl.openCodeEditor(e.id,e.type||e.id)}function nn(e,t){x(H).includes(t.id)||(L(H,[t.id]),L(U,[]),C(t),b(`nodeSelect`,{node:t}));let n=W_(x(H).length,`node`);L(en,x(y)),L(Qt,{x:e.clientX,y:e.clientY,items:[{id:`view-source`,label:`View source`,run:()=>tn(t)},{id:`copy`,label:`Copy ${n}`,run:()=>{Pt()}},{id:`duplicate`,label:`Duplicate ${n}`,run:Zt},{id:`delete`,label:`Delete ${n}`,separatorBefore:!0,danger:!0,run:Xt}]})}function rn(e){if(e.preventDefault(),e.ctrlKey||e.metaKey)return;let t=e.target.closest(`.node`);if(t){let n=t.dataset.nodeId,r=n?w().getNode(n):null;r&&nn(e,r);return}e.target.closest(`.annotation`)||b(`openNodePanel`,{x:e.clientX,y:e.clientY})}function an(e,t){if(!x(R))return null;let n=x(R).querySelector(`[data-node-id="${e}"][data-port-id="${t}"]`);if(n)return n;let r=x(R).querySelectorAll(`[data-node-id="${e}"][data-variadic-ports]`);for(let e of r){let n=e.getAttribute(`data-variadic-ports`);if(n&&n.split(`,`).includes(t))return e}return null}function on(e,t,n){let r=w().getElement(e);if(r?.isAnnotation===!0){let n=an(e,t);if(n&&x(R)){let e=n.getBoundingClientRect(),t=x(R).getBoundingClientRect(),r=n.querySelector(`.port-dot, .port-pill`);if(r){let e=r.getBoundingClientRect();return{x:(e.left+e.width/2-t.left-x(z).x)/x(z).zoom,y:(e.top+e.height/2-t.top-x(z).y)/x(z).zoom}}return{x:(e.left+e.width/2-t.left-x(z).x)/x(z).zoom,y:(e.top+e.height/2-t.top-x(z).y)/x(z).zoom}}let i=r;if(!i||!i.outputs||!i.outputs.find(e=>e.id===t))return null;let a=i.size?.width??(i.type===`Text`?540:i.type===`Image`?200:300),o=i.size?.height??(i.type===`Text`?60:i.type===`Image`?150:200);return{x:i.position.x+a/2,y:i.position.y+o}}let i=an(e,t);if(!i){let r=w().getNode(e);if(!r)return null;let i=n===`output`?r.outputs.findIndex(e=>e.id===t):r.inputs.findIndex(e=>e.id===t);if(i===-1)return null;i*16;let a=r.position.x+40,o=r.position.y+6,s=r.position.y+12+36+6;return{x:a-(n===`input`?r.inputs.length:r.outputs.length)*16/2+8+i*16,y:n===`input`?o:s}}let a=i.getBoundingClientRect(),o=x(R).getBoundingClientRect(),s=i.querySelector(`.port-dot, .port-pill`);if(s){let e=s.getBoundingClientRect();return{x:(e.left+e.width/2-o.left-x(z).x)/x(z).zoom,y:(e.top+e.height/2-o.top-x(z).y)/x(z).zoom}}return{x:(a.left+a.width/2-o.left-x(z).x)/x(z).zoom,y:(a.top+a.height/2-o.top-x(z).y)/x(z).zoom}}function sn(e,t,n,r){r.stopPropagation();let i=w().getElement(e);if(i?.isAnnotation===!0){let a=i;if(!a||!a.outputs)return;let o=a.outputs.find(e=>e.id===t);if(!o)return;if(o.connections.length>0&&(Ye={nodeId:e,portId:t,portType:n,connectionIds:o.connections.map(e=>e.id)}),n===`output`&&!x(Ke)){let i=on(e,t,n);if(i){L(Ke,{nodeId:e,portId:t,portType:n}),L(qe,i);let a=x(R).getBoundingClientRect();L(Je,{x:(r.clientX-a.left-x(z).x)/x(z).zoom,y:(r.clientY-a.top-x(z).y)/x(z).zoom})}}return}let a=w().getNode(e);if(!a)return;let o=n===`output`?a.outputs.find(e=>e.id===t):a.inputs.find(e=>e.id===t);if(o){if(o.connections.length>0&&(Ye={nodeId:e,portId:t,portType:n,connectionIds:o.connections.map(e=>e.id)}),n===`output`&&!x(Ke)){let i=on(e,t,n);if(i){L(Ke,{nodeId:e,portId:t,portType:n}),L(qe,i);let a=x(R).getBoundingClientRect();L(Je,{x:(r.clientX-a.left-x(z).x)/x(z).zoom,y:(r.clientY-a.top-x(z).y)/x(z).zoom})}}if(n===`input`&&o.connections.length>0&&!x(Ke)){let i=on(e,t,n);if(i){L(Ke,{nodeId:e,portId:t,portType:n}),L(qe,i);let a=x(R).getBoundingClientRect();L(Je,{x:(r.clientX-a.left-x(z).x)/x(z).zoom,y:(r.clientY-a.top-x(z).y)/x(z).zoom})}}}}function cn(e,t,n,r){r.stopPropagation();let i=w().getNode(e);if(!i)return;let a=n===`output`?i.outputs.find(e=>e.id===t):i.inputs.find(e=>e.id===t);if(a){if(x(Ke)){let t=x(Ke);if(t.nodeId!==e&&t.portType!==n){let r=w().getElement(t.nodeId),o=t.portType===`output`?r?.outputs.find(e=>e.id===t.portId):r?.inputs.find(e=>e.id===t.portId);if(o&&a&&t.portType===`output`&&n===`input`){I();let n=`variadic`in a&&a.variadic===!0,r=[];if(n){let n=e;x(H).forEach(e=>{if(e!==t.nodeId&&e!==n){let t=w().getNode(e);t&&t.outputs.length>0&&r.push({element:t,output:t.outputs[0]})}}),x(U).forEach(e=>{if(e!==t.nodeId&&e!==n){let t=w().getAnnotation(e);t&&t.outputs&&t.outputs.length>0&&r.push({element:t,output:t.outputs[0]})}})}if(w().connect(o,a),n&&r.length>0){let e=a.name.match(/^(.+)_(\d+)$/);if(e&&i.syncVariadicPorts){let t=e[1],n=parseInt(e[2],10)+1;for(let{output:e}of r){i.syncVariadicPorts();let r=`${t}_${n}`,a=i.inputs.find(e=>e.name===r&&!e.options?.hidden);if(a||=(i.syncVariadicPorts(),i.inputs.find(e=>e.name===r&&!e.options?.hidden)),a)try{w().connect(e,a),n++}catch(e){console.warn(`Failed to connect additional element:`,e)}}}}j.refresh({connections:!0})}}L(Ke,null),L(qe,null),Ye=null}else if(n===`output`){let i=on(e,t,n);if(i){L(Ke,{nodeId:e,portId:t,portType:n}),L(qe,i);let a=x(R).getBoundingClientRect();L(Je,{x:(r.clientX-a.left-x(z).x)/x(z).zoom,y:(r.clientY-a.top-x(z).y)/x(z).zoom})}}}}function ln(e){e.preventDefault();let t=(e.deltaY===0?e.deltaX:e.deltaY)*-.005,n=x(z).zoom,r=Math.max(.1,Math.min(2,n+t)),i=Ie();i&&(oe(z,x(z).x=x(z).x+i.x*(n-r)),oe(z,x(z).y=x(z).y+i.y*(n-r))),oe(z,x(z).zoom=r),L(z,{...x(z)})}function un(e){if(e.touches.length===2){let t=e.touches[0],n=e.touches[1];$e={x:(t.clientX+n.clientX)/2,y:(t.clientY+n.clientY)/2,touches:e.touches},e.preventDefault()}}function dn(e){if(e.touches.length===2&&$e){let t=e.touches[0],n=e.touches[1],r=(t.clientX+n.clientX)/2,i=(t.clientY+n.clientY)/2,a=r-$e.x,o=i-$e.y;oe(z,x(z).x+=a),oe(z,x(z).y+=o),L(z,{...x(z)}),$e.x=r,$e.y=i,e.preventDefault()}}function fn(e){e.touches.length<2&&($e=null)}function pn(e){if(et||={x:e.clientX,y:e.clientY,pointers:new Map},et.pointers.set(e.pointerId,{x:e.clientX,y:e.clientY}),et.pointers.size===2){let t=Array.from(et.pointers.values());et.x=(t[0].x+t[1].x)/2,et.y=(t[0].y+t[1].y)/2,e.preventDefault()}}function mn(e){if(et&&et.pointers.has(e.pointerId)&&(et.pointers.set(e.pointerId,{x:e.clientX,y:e.clientY}),et.pointers.size===2)){let t=Array.from(et.pointers.values()),n=(t[0].x+t[1].x)/2,r=(t[0].y+t[1].y)/2,i=n-et.x,a=r-et.y;oe(z,x(z).x+=i),oe(z,x(z).y+=a),L(z,{...x(z)}),et.x=n,et.y=r,e.preventDefault()}}function hn(e){et&&(et.pointers.delete(e.pointerId),et.pointers.size===0&&(et=null))}function gn(e){let t=document.activeElement,n=t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement||t?.getAttribute(`contenteditable`)===`true`;e.code===`Space`&&!n&&(Ve=!0,e.preventDefault()),(e.key===`Control`||e.key===`Meta`||e.ctrlKey||e.metaKey)&&L(Ze,!0);let r=y_(`graph`);if(r&&!n&&(e.key===`+`||e.key===`=`||e.code===`NumpadAdd`)){e.preventDefault();let t=x(z).zoom,n=Math.min(2,t+.1),r=Ie();r&&(oe(z,x(z).x=x(z).x+r.x*(t-n)),oe(z,x(z).y=x(z).y+r.y*(t-n))),oe(z,x(z).zoom=n),L(z,{...x(z)})}if(r&&!n&&(e.key===`-`||e.key===`_`||e.code===`NumpadSubtract`)){e.preventDefault();let t=x(z).zoom,n=Math.max(.1,t-.1),r=Ie();r&&(oe(z,x(z).x=x(z).x+r.x*(t-n)),oe(z,x(z).y=x(z).y+r.y*(t-n))),oe(z,x(z).zoom=n),L(z,{...x(z)})}if((e.metaKey||e.ctrlKey)&&e.key===`0`&&(e.preventDefault(),qt()),!n&&!e.metaKey&&!e.ctrlKey&&(e.key===`0`||e.code===`Numpad0`)){e.preventDefault();let t=x(z).zoom;if(t!==1){let e=Ie();e&&(oe(z,x(z).x=x(z).x+e.x*(t-1)),oe(z,x(z).y=x(z).y+e.y*(t-1))),oe(z,x(z).zoom=1),L(z,{...x(z)})}}if(e.key===`h`||e.key===`H`){let t=e.target;t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`&&(e.preventDefault(),qt())}if(e.key===`Escape`){let t=e.target;t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`&&(x(gt)?L(gt,null):(T()||x(U).length>0)&&(e.preventDefault(),T(null),L(U,[]),b(`annotationSelect`,{annotationId:null})))}if(e.key===`Delete`||e.key===`Backspace`){let t=e.target;t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`&&(x(H).length>0||x(U).length>0||T())&&(e.preventDefault(),Xt())}if((e.metaKey||e.ctrlKey)&&e.key===`x`){let t=e.target;t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`&&(e.preventDefault(),Nt())}if((e.metaKey||e.ctrlKey)&&e.key===`c`){let t=e.target;t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`&&(e.preventDefault(),Pt())}if((e.metaKey||e.ctrlKey)&&e.key===`v`){let t=e.target;t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`&&(e.preventDefault(),Ft())}if((e.metaKey||e.ctrlKey)&&e.key===`a`){let t=e.target;t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`&&(e.preventDefault(),Jt())}(e.metaKey||e.ctrlKey)&&e.key===`d`&&(e.preventDefault(),Zt());let i=e.target;i.tagName!==`INPUT`&&i.tagName!==`TEXTAREA`&&((e.key===`Enter`||e.key===`i`)&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&C()&&C().isNetwork()&&(e.preventDefault(),_e(C())),(e.key===`o`||e.key===`u`)&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&x(fe)&&(e.preventDefault(),ve()),(e.metaKey||e.ctrlKey)&&!e.shiftKey&&e.key===`g`&&x(H).length>0&&(e.preventDefault(),ze()),(e.metaKey||e.ctrlKey)&&e.shiftKey&&e.key===`G`&&x(H).length===1&&w().getNode(x(H)[0])?.isNetwork()&&(e.preventDefault(),Be()),e.key===`/`&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&(e.preventDefault(),Oe()),e.key===`c`&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&C()&&(e.preventDefault(),C().setCook(!C().cook),w(w().nodes=[...w().nodes],!0)),e.key===`b`&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&C()&&(e.preventDefault(),C().setBypass(!C().bypass),w(w().nodes=[...w().nodes],!0)))}function _n(e){e.code===`Space`&&(Ve=!1),(e.key===`Control`||e.key===`Meta`||!e.ctrlKey&&!e.metaKey)&&(L(Ze,!1),L(Xe,null))}ye(()=>(w().nodes.length>0&&w(w().nodes=[...w().nodes],!0),window.addEventListener(`keydown`,gn),window.addEventListener(`keyup`,_n),()=>{window.removeEventListener(`keydown`,gn),window.removeEventListener(`keyup`,_n)})),J(()=>(A(w()),x(N),x(ie),x(ae)),()=>{let e=w().scheduler;e!==x(N)&&(x(ie)?.(),L(N,e),L(ie,e.subscribe(()=>{L(ae,x(ae)+1)})))}),J(()=>(A(k()),x(B)),()=>{k()&&(!x(B)||x(B).x!==k().x||x(B).y!==k().y||x(B).zoom!==k().zoom)&&(L(z,{...k()}),L(B,{...k()}))}),J(()=>(A(k()),x(ce),x(z),x(B)),()=>{k()!==void 0&&(x(ce).x!==x(z).x||x(ce).y!==x(z).y||x(ce).zoom!==x(z).zoom)&&(x(B)&&x(B).x===x(z).x&&x(B).y===x(z).y&&x(B).zoom===x(z).zoom?L(ce,{...x(z)}):(L(ce,{...x(z)}),b(`transformChange`,{transform:{...x(z)}})))}),J(()=>(A(C()),x(H)),()=>{C()&&C().id&&!x(H).includes(C().id)&&L(H,[C().id])}),J(()=>(A(C()),x(H)),()=>{!C()&&x(H).length>0&&L(H,[])}),J(()=>(x(H),A(w())),()=>{de(x(H),w())}),J(()=>x(fe),()=>{L(c,W(x(fe)))}),J(()=>(A(w()),x(fe)),()=>{L(l,Me(w().nodes,x(fe)))}),J(()=>(A(w()),x(fe)),()=>{L(_,Me(w().annotations,x(fe)))}),J(()=>(x(l),x(_)),()=>{x(l),x(_),L(Fe,!1)}),J(()=>(x(ae),x(l)),()=>{L(u,(x(ae),x(l)))}),J(()=>x(u),()=>{L(d,x(u).filter(e=>e&&e.inputs&&e.outputs).map(e=>({id:e.id,inputs:e.inputs.length,outputs:e.outputs.length})))}),J(()=>(r(),x(u)),()=>{L(p,tt(r(),x(u)))}),J(()=>(x(ae),x(p),x(d),x(_),x(u),A(w())),()=>{x(ae),x(p),x(d),x(_);let e=new Set(x(u).map(e=>e.id)),t=new Set(x(_).map(e=>e.id)),n=new Set([...e,...t]);L(nt,w().connections.filter((e,t,r)=>r.findIndex(t=>t.id===e.id)===t&&n.has(e.from.nodeId)&&n.has(e.to.nodeId)))}),J(()=>(x(nt),x(H),x(Xe)),()=>{L(m,[...x(nt).filter(e=>!rt(e,x(H),x(Xe)?.connectionId)),...x(nt).filter(e=>rt(e,x(H),x(Xe)?.connectionId))])}),J(()=>x(z),()=>{L(y,`${x(z).x},${x(z).y},${x(z).zoom}`)}),J(()=>(x(Qt),x(y),x(en)),()=>{x(Qt)&&x(y)!==x(en)&&$t()}),he();var vn={addNode:Wt,centerOnNodes:qt,selectAll:Jt,deselectAll:Yt,deleteSelected:Xt};ue();var yn=ev(),bn=G(yn);let xn;var Sn=M(bn),Cn=M(Sn),wn=e=>{var t=G_();re(t),ge(t,e=>L(De,e),()=>x(De)),Ce(t,()=>x(Te),e=>L(Te,e)),O(`keydown`,t,je),O(`blur`,t,ke),E(e,t)},Tn=e=>{var t=J_(),n=G(t);f(n,1,()=>x(c),h,(e,t,n)=>{var r=q_(),i=G(r),a=e=>{var t=K_();E(e,t)};Z(i,e=>{n>0&&e(a)});var o=P(i,2);let s;var l=q(o,!0);K(()=>{s=v(o,1,`path-segment svelte-p2f6pl`,null,s,{current:n===x(c).length-1}),D(l,(x(t),F(()=>x(t).label)))}),O(`click`,o,()=>be(x(t).node)),E(e,r)});var r=P(n,2);O(`click`,r,Oe),E(e,t)};Z(Cn,e=>{x(Se)?e(wn):e(Tn,-1)}),o(Sn);var En=P(Sn,2),Dn=e=>{let t=pe(()=>(x(We),x(Q),F(()=>({x:Math.min(x(We).x,x(Q).x),y:Math.min(x(We).y,x(Q).y),width:Math.abs(x(Q).x-x(We).x),height:Math.abs(x(Q).y-x(We).y)}))));var n=Y_();K(()=>a(n,`left: ${A(x(t)),F(()=>x(t).x)??``}px; top: ${A(x(t)),F(()=>x(t).y)??``}px; width: ${A(x(t)),F(()=>x(t).width)??``}px; height: ${A(x(t)),F(()=>x(t).height)??``}px;`)),E(e,n)};Z(En,e=>{x(He)&&x(Ue)&&x(We)&&x(Q)&&e(Dn)});var On=P(En,4),kn=M(On);f(kn,1,()=>x(m),e=>e.id,(e,t)=>{pe(()=>(x(p),x(t),F(()=>x(p).find(e=>e.id===x(t).from.nodeId)))),pe(()=>(x(p),x(t),F(()=>x(p).find(e=>e.id===x(t).to.nodeId))));let n=pe(()=>(x(t),F(()=>on(x(t).from.nodeId,x(t).from.portId,`output`)))),r=pe(()=>(x(t),F(()=>on(x(t).to.nodeId,x(t).to.portId,`input`))));var i=te(),o=G(i),s=e=>{let i=pe(()=>(A(w()),x(t),F(()=>w().getElement(x(t).from.nodeId)))),o=pe(()=>(A(w()),x(t),F(()=>w().getElement(x(t).to.nodeId)))),s=pe(()=>(A(x(i)),F(()=>x(i)&&!x(i)?.isAnnotation?x(i):null))),c=pe(()=>(A(x(o)),F(()=>x(o)&&!x(o)?.isAnnotation?x(o):null))),l=pe(()=>(A(x(i)),F(()=>x(i)?.isAnnotation?x(i):null))),u=pe(()=>(A(x(s)),x(t),A(x(l)),F(()=>x(s)?.outputs.find(e=>e.id===x(t).from.portId)||x(l)?.outputs?.find(e=>e.id===x(t).from.portId)))),d=pe(()=>(A(x(c)),x(t),F(()=>!x(c)?.isInputActive||x(c).isInputActive(x(t).to.portId)))),f=pe(()=>(A(x(d)),A(x(u)),A(cg),A(sg),F(()=>x(d)?x(u)?cg(x(u)):sg.any:sg.inactive))),p=pe(()=>(x(t),x(H),x(Xe),F(()=>rt(x(t),x(H),x(Xe)?.connectionId))));pe(()=>(A(x(n)),A(x(r)),F(()=>(x(n).y+x(r).y)/2)));let m=pe(()=>(A(x(r)),A(x(n)),F(()=>Math.abs(x(r).y-x(n).y)*.5))),h=pe(()=>(x(t),F(()=>x(t).type===`trigger`))),g=pe(()=>(x(t),F(()=>it(x(t)))));var _=X_(),y=G(_),b=P(y);let S;K(()=>{X(y,`d`,`M ${A(x(n)),F(()=>x(n).x)??``} ${A(x(n)),F(()=>x(n).y)??``} C ${A(x(n)),F(()=>x(n).x)??``} ${A(x(n)),A(x(m)),F(()=>x(n).y+x(m))??``} ${A(x(r)),F(()=>x(r).x)??``} ${A(x(r)),A(x(m)),F(()=>x(r).y-x(m))??``} ${A(x(r)),F(()=>x(r).x)??``} ${A(x(r)),F(()=>x(r).y)??``}`),a(y,`cursor: ${x(Xe),x(t),x(Ze),F(()=>x(Xe)?.connectionId===x(t).id&&x(Ze)?`pointer`:`default`)??``};`),X(b,`d`,`M ${A(x(n)),F(()=>x(n).x)??``} ${A(x(n)),F(()=>x(n).y)??``} C ${A(x(n)),F(()=>x(n).x)??``} ${A(x(n)),A(x(m)),F(()=>x(n).y+x(m))??``} ${A(x(r)),F(()=>x(r).x)??``} ${A(x(r)),A(x(m)),F(()=>x(r).y-x(m))??``} ${A(x(r)),F(()=>x(r).x)??``} ${A(x(r)),F(()=>x(r).y)??``}`),a(b,`stroke: ${x(f)??``};`),X(b,`stroke-opacity`,x(p)?1:.5),X(b,`stroke-dasharray`,x(g)?`8 6`:x(h)?`3 3`:`none`),S=v(b,0,`connection svelte-p2f6pl`,null,S,{"trigger-connection":x(h),"processing-connection":x(g),inactive:!x(d)})}),E(e,_)};Z(o,e=>{x(n)&&x(r)&&e(s)}),E(e,i)});var An=P(kn),jn=e=>{let t=pe(()=>(x(Xe),F(()=>x(Xe).position)));var n=Z_();K(()=>X(n,`transform`,`translate(${A(x(t)),F(()=>x(t).x)??``}, ${A(x(t)),F(()=>x(t).y)??``})`)),E(e,n)};Z(An,e=>{x(Xe)&&e(jn)});var Mn=P(An),Nn=e=>{let t=pe(()=>x(Ke)),n=pe(()=>(A(w()),A(x(t)),F(()=>w().getElement(x(t).nodeId)))),r=pe(()=>(A(x(n)),F(()=>x(n)&&!x(n)?.isAnnotation?x(n):null))),i=pe(()=>(A(x(n)),F(()=>x(n)?.isAnnotation?x(n):null))),o=pe(()=>(A(x(t)),A(x(r)),A(x(i)),F(()=>x(t).portType===`output`?x(r)?.outputs.find(e=>e.id===x(t).portId)||x(i)?.outputs?.find(e=>e.id===x(t).portId):x(r)?.inputs.find(e=>e.id===x(t).portId)))),s=pe(()=>(A(x(o)),A(cg),A(sg),F(()=>x(o)?cg(x(o)):sg.any))),c=pe(()=>(x(Je),x(qe),F(()=>Math.abs(x(Je).y-x(qe).y)*.5))),l=pe(()=>(A(x(t)),A(x(r)),F(()=>x(t).portType===`output`&&(x(r)?x(r).outputs.find(e=>e.id===x(t).portId)?.portType===`trigger`:!1))));var u=Q_();K(()=>{X(u,`d`,`M ${x(qe),F(()=>x(qe).x)??``} ${x(qe),F(()=>x(qe).y)??``} C ${x(qe),F(()=>x(qe).x)??``} ${x(qe),A(x(c)),F(()=>x(qe).y+x(c))??``} ${x(Je),F(()=>x(Je).x)??``} ${x(Je),A(x(c)),F(()=>x(Je).y-x(c))??``} ${x(Je),F(()=>x(Je).x)??``} ${x(Je),F(()=>x(Je).y)??``}`),a(u,`stroke: ${x(s)??``};`),X(u,`stroke-dasharray`,x(l)?`3 3`:`4 4`)}),E(e,u)};Z(Mn,e=>{x(Ke)&&x(qe)&&e(Nn)}),o(On);var Pn=P(On,2);f(Pn,5,()=>x(_),e=>e.id,(e,t)=>{let n=pe(()=>(x(gt),x(t),F(()=>x(gt)===x(t).id))),r=pe(()=>(x(U),x(t),A(T()),F(()=>x(U).includes(x(t).id)||T()===x(t).id))),i=pe(()=>(x(_t),x(t),F(()=>x(_t)?.annotationId===x(t).id))),o=pe(()=>(A(Dg),x(t),F(()=>Dg.get(x(t).type))));var s=te(),c=G(s),l=e=>{var a=te(),s=G(a);g(s,()=>x(o),(e,a)=>{a(e,{get annotation(){return x(t)},get isSelected(){return x(r)},get isEditing(){return x(n)},get isDragging(){return x(i)},$$events:{click:e=>Tt(e.detail.id,e.detail.event),dblclick:e=>jt(e.detail.id,e.detail.event),mousedown:e=>{let{id:n,event:r,width:i,height:a}=e.detail;x(t)instanceof Zu?Dt(n,r,i||540,a||60):Et(n,r)},mousemove:e=>{let{id:t,event:n,width:r,height:i}=e.detail;kt(t,n,r||540,i||60)},keydown:e=>Ot(e.detail.id,e.detail.event),finishEdit:zt,delete:e=>Mt(e.detail.id),input:e=>{let{id:n,event:r}=e.detail;x(t)instanceof Zu?Lt(n,r):Rt(n,r)},portMouseDown:e=>sn(e.detail.nodeId,e.detail.portId,e.detail.portType,e.detail.event),resizeStart:e=>lt(e.detail.id,e.detail.handle,e.detail.event)}})}),E(e,a)},u=e=>{var n=$_(),r=q(n);K(()=>{a(n,`position: absolute; left: ${x(t),F(()=>x(t).position.x)??``}px; top: ${x(t),F(()=>x(t).position.y)??``}px; background: var(--status-error-strong); color: var(--text-on-accent); padding: 8px; border-radius: 4px; font-size: 12px;`),D(r,`Unknown type: ${x(t),F(()=>x(t).type)??``}`)}),E(e,n)};Z(c,e=>{x(o)?e(l):e(u,-1)}),E(e,s)}),o(Pn);var Fn=P(Pn,2);f(Fn,5,()=>x(u),e=>e.id,(e,t)=>{{let n=pe(()=>(x(H),x(t),F(()=>x(H).includes(x(t).id))));f_(e,{get node(){return x(t)},get selected(){return x(n)},get canvasTransform(){return x(z)},$$events:{portClick:e=>cn(e.detail.nodeId,e.detail.portId,e.detail.portType,e.detail.event),portMouseDown:e=>sn(e.detail.nodeId,e.detail.portId,e.detail.portType,e.detail.event),nodeMouseDown:e=>ut(e.detail.nodeId,e.detail.event),nodeClick:e=>ft(x(t).id,e.detail),edit:dt,diveInto:e=>_e(e.detail.node),bypassToggle:e=>pt(e.detail.nodeId,e.detail.event),cookToggle:e=>mt(e.detail.nodeId,e.detail.event),disconnect:e=>ht(e.detail.connectionId)}})}}),o(Fn),o(bn),ge(bn,e=>L(R,e),()=>x(R));var In=P(bn,2),Ln=e=>{U_(e,{get x(){return x(Qt),F(()=>x(Qt).x)},get y(){return x(Qt),F(()=>x(Qt).y)},get items(){return x(Qt),F(()=>x(Qt).items)},$$events:{close:$t}})};Z(In,e=>{x(Qt)&&e(Ln)}),K(()=>{xn=v(bn,1,`canvas svelte-p2f6pl`,null,xn,{"select-tool":S()===`select`,"hand-tool":S()===`hand`}),a(On,`transform: translate(${x(z),F(()=>x(z).x)??``}px, ${x(z),F(()=>x(z).y)??``}px) scale(${x(z),F(()=>x(z).zoom)??``})`),a(Pn,`transform: translate(${x(z),F(()=>x(z).x)??``}px, ${x(z),F(()=>x(z).y)??``}px) scale(${x(z),F(()=>x(z).zoom)??``})`),a(Fn,`transform: translate(${x(z),F(()=>x(z).x)??``}px, ${x(z),F(()=>x(z).y)??``}px) scale(${x(z),F(()=>x(z).zoom)??``})`)}),O(`mousedown`,bn,at),O(`mousemove`,bn,ot),O(`mouseup`,bn,ct),O(`click`,bn,Ct),O(`dblclick`,bn,Ht),O(`wheel`,bn,ln),O(`contextmenu`,bn,rn),O(`touchstart`,bn,un),O(`touchmove`,bn,dn),O(`touchend`,bn,fn),O(`touchcancel`,bn,fn),O(`pointerdown`,bn,pn),O(`pointermove`,bn,mn),O(`pointerup`,bn,hn),O(`pointercancel`,bn,hn),O(`dragover`,bn,Bt),O(`drop`,bn,Vt),O(`keydown`,bn,xt),O(`keyup`,bn,St),E(t,yn),se(n,`addNode`,Wt),se(n,`centerOnNodes`,qt),se(n,`selectAll`,Jt),se(n,`deselectAll`,Yt),se(n,`deleteSelected`,Xt);var Rn=Ee(vn);return s(),Rn}var nv=u(`<div class="empty-state svelte-qbjsq3">Loading graph...</div>`),rv=u(`<div class="panel-wrapper svelte-qbjsq3" data-panel-type="graph" data-window-id="graph"><!></div>`);function iv(e,t){ee(t,!1);let n=()=>we(ga,`$sharedContextStore`,r),[r,i]=ne(),a=V(t,`panelApi`,8),s=V(t,`graph`,12,void 0),c=V(t,`selectedNode`,12,null),l=V(t,`selectedAnnotation`,12,null),u=V(t,`activeTool`,12,`select`),d=V(t,`presentationMode`,12,!1),f=V(t,`onRecordHistory`,12,void 0),p=V(t,`onNodeSelect`,12,void 0),m=V(t,`onAnnotationSelect`,12,void 0),h=V(t,`onToolChange`,12,void 0),g=V(t,`onOpenNodePanel`,12,void 0);xe();let _=Y(null),v=Y(),y=Y({x:0,y:0,zoom:1});function b(e){p()&&p()(e.detail.node)}function S(e){m()&&m()(e.detail.annotationId)}function C(e){L(y,e.detail.transform)}function w(e){g()&&g()(e.detail)}function T(e){let t=e.detail.node;t&&cl.openCodeEditor(t.id,t.type||`Code`)}function D(e){x(_)&&x(_).addNode&&x(_).addNode(e)}function te(){x(_)&&x(_).centerOnNodes&&x(_).centerOnNodes()}function O(){x(_)&&x(_).selectAll&&x(_).selectAll()}function k(){x(_)&&x(_).deselectAll&&x(_).deselectAll()}function A(){x(_)&&x(_).deleteSelected&&x(_).deleteSelected()}ye(()=>{if(x(v)?.addEventListener(`addNode`,e=>{D(e.detail)}),x(v)?.addEventListener(`centerOnNodes`,()=>{te()}),x(v)?.addEventListener(`selectAll`,()=>{O()}),x(v)?.addEventListener(`deselectAll`,()=>{k()}),x(v)?.addEventListener(`deleteSelected`,()=>{A()}),a()){let e=a().onDidDimensionsChange?.(e=>{e.width,e.height});return()=>{e?.dispose?.()}}}),J(()=>n(),()=>{n()&&(s(n().graph),c(n().selectedNode),l(n().selectedAnnotation),u(n().activeTool||`select`),d(n().presentationMode||!1),f(n().onRecordHistory),p(n().onNodeSelect),m(n().onAnnotationSelect),h(n().onToolChange),g(n().onOpenNodePanel))}),he();var j={addNode:D,centerOnNodes:te,selectAll:O,deselectAll:k,deleteSelected:A};ue();var re=rv(),N=M(re),ie=e=>{ge(tv(e,{get graph(){return s()},get activeTool(){return u()},get selectedNode(){return c()},get selectedAnnotation(){return l()},get transform(){return x(y)},get onRecordHistory(){return f()},$$events:{nodeSelect:b,annotationSelect:S,transformChange:C,openNodePanel:w,nodeEdit:T},$$legacy:!0}),e=>L(_,e),()=>x(_))},P=e=>{var t=nv();E(e,t)};Z(N,e=>{s()?e(ie):e(P,-1)}),o(re),ge(re,e=>L(v,e),()=>x(v)),E(e,re),se(t,`addNode`,D),se(t,`centerOnNodes`,te),se(t,`selectAll`,O),se(t,`deselectAll`,k),se(t,`deleteSelected`,A);var ae=Ee(j);return i(),ae}function av(e){return Number.isInteger(e)}function ov(e){if(e.type)return e.type;let t=e.value,n=e.params,r=n?.integer===!0||n?.step===1&&typeof t==`number`&&av(t);if(typeof t==`number`)return n?.min!==void 0&&n?.max!==void 0?r?`int`:`slider`:r?`int`:`number`;if(typeof t==`string`)return/^#([0-9A-F]{3}|[0-9A-F]{6})$/i.test(t)?`color`:n?.accept===`image/*`||t.match(/\.(jpg|jpeg|png|gif|webp|svg)$/i)||t.startsWith(`data:image/`)?`image`:n?.options&&n.options.length>0?`select`:t.includes(`
|
|
201
|
-
`)||t.length>100?`textarea`:`text`;if(typeof t==`boolean`)return`boolean`;if(Array.isArray(t)){if(t.length>0&&typeof t[0]==`object`&&t[0]!==null&&`position`in t[0]&&`color`in t[0])return`colorramp`;if(t.length===2&&n?.min!==void 0&&n?.max!==void 0&&typeof n.min==`number`&&typeof n.max==`number`)return`range`;let e=t.length>0&&t.every(e=>typeof e==`number`&&av(e)),r=e&&t.every(e=>e>=1&&e<=8192)&&n?.min!==void 0&&n?.max!==void 0,i=n?.integer===!0||n?.step===1&&e||r;return t.length===2?i?`vec2i`:`vec2`:t.length===3?i?`vec3i`:`vec3`:`vector`}return typeof t==`function`?`button`:`text`}var sv=1,cv=1e5;function lv(e){return typeof e==`object`&&e?e:null}function uv(e){return Array.isArray(e)?e.every(Number.isFinite)?e:null:!ArrayBuffer.isView(e)||e instanceof DataView?null:e}function dv(e,t,n){let r=e[n*t],i=e[n*t+1];return Number.isFinite(r)&&Number.isFinite(i)?[r,i]:null}function fv(e,t,n,r,i){let a=1-i,o=a*a*a,s=3*a*a*i,c=3*a*i*i,l=i*i*i;return[o*e[0]+s*t[0]+c*n[0]+l*r[0],o*e[1]+s*t[1]+c*n[1]+l*r[1]]}function pv(e,t=1200){if(!Number.isSafeInteger(t)||t<1||t>cv)return null;let n=lv(e),r=n?.pointCount,i=n?.primitiveCount;if(n?.kind!==`geometry`||typeof r!=`number`||!Number.isSafeInteger(r)||r<0||typeof i!=`number`||!Number.isSafeInteger(i)||i<0)return null;let a=lv(lv(n.point)?.P),o=a?.size,s=uv(a?.data);if(o!==2&&o!==3||!s||s.length!==r*o)return null;let c=null,l=1/0,u=1/0,d=-1/0,f=-1/0;for(let e=0;e<r;e+=1){let t=dv(s,o,e);if(!t)return null;let[n,r]=t;n<l&&(l=n),r<u&&(u=r),n>d&&(d=n),r>f&&(f=r)}r>0&&(c={min:[l,u],max:[d,f]});let p=e=>dv(s,o,e),m=lv(n.topology),h=uv(m?.vertexPoints),g=uv(m?.offsets),_=uv(m?.kinds),v=uv(m?.closed);if(!h||!g||!_||!v||g.length!==i+1||_.length!==i||v.length!==i||g[0]!==0||g[g.length-1]!==h.length)return null;let y=new Uint8Array(r);for(let e=0;e<h.length;e+=1){let t=h[e];if(!Number.isSafeInteger(t)||t<0||t>=r)return null;y[t]=1}let b=[],x=Math.max(1,Math.floor(t/Math.max(i,1)));for(let e=0;e<i&&b.length<t;e+=1){let t=g[e],n=g[e+1],r=_[e],i=v[e];if(!Number.isSafeInteger(t)||!Number.isSafeInteger(n)||t<0||n<t||n>h.length||!Number.isSafeInteger(r)||r<0||r>3||i!==0&&i!==1)return null;let a=n-t,o=e=>p(h[t+e]),s;if(r===sv){let e=i?a/3:(a-1)/3;if(!Number.isSafeInteger(e)||e<1)return null;s=[];for(let t=0;t<e;t+=1){let n=t*3,r=[o(n),o(n+1),o(n+2),o((n+3)%a)];if(r.some(e=>!e))return null;let i=Math.max(2,Math.min(16,Math.floor(x/Math.max(e,1))));for(let e=t===0?0:1;e<=i;e+=1)s.push(fv(r[0],r[1],r[2],r[3],e/i))}}else{let e=Math.min(a,x);s=[];for(let t=0;t<e;t+=1){let n=o(Math.floor(t*a/e));if(!n)return null;s.push(n)}i===1&&s.length>1&&s.push(s[0])}s.length>0&&b.push(s)}let S=[],C=Math.max(0,Math.floor(t));if(C>0){let e=r-y.reduce((e,t)=>e+t,0),t=Math.max(1,e/C),n=0,i=0;for(let e=0;e<r&&S.length<C;e+=1)if(!y[e]){if(n>=i){let n=p(e);n&&S.push(n),i+=t}n+=1}}return{bounds:c,points:S,paths:b,summary:`${r} ${r===1?`point`:`points`} · ${i} ${i===1?`primitive`:`primitives`}`}}var mv=/\.(png|jpe?g|webp|gif|tiff?|avif|svg|npy)$/i,hv=1200;function gv(e){if(typeof e==`number`)return Number.isInteger(e)?`int`:`float`;if(typeof e==`boolean`)return`bool`;if(typeof e==`string`)return mv.test(e)?`image`:`string`;if($l(e))return`image`;if(typeof e==`object`&&e&&e.kind===`geometry`)return`geometry`;if(Array.isArray(e)){if(e.every(e=>typeof e==`number`)){if(e.length===2)return`vec2`;if(e.length===3)return`vec3`;if(e.length===4)return`vec4`;if(e.length===9)return`mat3`;if(e.length===16)return`mat4`}return`array`}return typeof e==`object`&&e?`object`:`any`}function _v(e,t={}){if(/^(https?:|data:|blob:)/.test(e))return e;let n=e.replace(/^\.?\//,``),r=n.split(`/`).map(encodeURIComponent).join(`/`),i=new URLSearchParams;t.raw||/\.svg$/i.test(n)?i.set(`raw`,`1`):t.width&&i.set(`w`,String(t.width)),t.version&&i.set(`v`,String(t.version));let a=i.toString();return`/api/media/${r}${a?`?${a}`:``}`}function vv(e,t=0){let n=Number(e);return Number.isFinite(n)?n:t}function yv(e,t=0){return Math.max(0,Math.min(1,vv(e,t)))}function bv(e){if(Array.isArray(e))return[yv(e[0]),yv(e[1]),yv(e[2]),yv(e[3],1)];if(e&&typeof e==`object`){let t=e;return[yv(t.r),yv(t.g),yv(t.b),yv(t.a,1)]}if(typeof e==`string`){let t=/^#([\da-f]{6})([\da-f]{2})?$/i.exec(e.trim());if(t){let e=t[1];return[parseInt(e.slice(0,2),16)/255,parseInt(e.slice(2,4),16)/255,parseInt(e.slice(4,6),16)/255,t[2]?parseInt(t[2],16)/255:1]}}return[0,0,0,1]}function xv(e){let[t,n,r,i]=bv(e);return`rgba(${Math.round(t*255)}, ${Math.round(n*255)}, ${Math.round(r*255)}, ${Number(i.toFixed(3))})`}function Sv(e){let[t,n,r]=bv(e),i=e=>Math.round(e*255).toString(16).padStart(2,`0`);return`#${i(t)}${i(n)}${i(r)}`}function Cv(e,t){if(e===void 0)return`—`;if(e===null)return`null`;let n=eu(e);if(t===`image`&&n){let[e,t]=n.size;return`${e||`?`}×${t||`?`} · ${n.channels} · ${n.depth} · ${n.space}`}if(t===`texture`&&typeof e==`object`){let t=e,n=t.size??[t.width,t.height];return`${Array.isArray(n)?`${n[0]??`?`}×${n[1]??`?`}`:`?×?`} · ${t.format??(t.float?`float`:`GPU texture`)} · browser session`}if([`geometry`,`points`,`lines`,`polyline`,`mesh`,`rects`].includes(t))return Dv(e,t).countLabel;if(Array.isArray(e))return`${e.length} ${e.length===1?`item`:`items`}`;if(typeof e==`object`){let t=Object.keys(e);return`{${t.slice(0,4).join(`, `)}${t.length>4?`, …`:``}}`}let r=String(e);return r.length>100?`${r.slice(0,97)}…`:r}function wv(e){if(!Array.isArray(e)||e.length<2)return null;let t=Number(e[0]),n=Number(e[1]);return Number.isFinite(t)&&Number.isFinite(n)?[t,n]:null}function Tv(e){return Array.isArray(e)?e.slice(0,hv).map(wv).filter(e=>!!e):[]}function Ev(e,t){return t&&e.length>1?[...e,e[0]]:e}function Dv(e,t){let n={countLabel:`No geometry`,bounds:null,points:[],paths:[],rects:[]},r=e;if(t===`geometry`){let t=pv(e,hv);return t?(n.points=t.points,n.paths=t.paths,n.bounds=t.bounds,n.countLabel=t.summary,n):n}if(t===`points`)n.points=Tv(Array.isArray(r)?r:r?.points),n.countLabel=`${n.points.length} ${n.points.length===1?`point`:`points`}`;else if(t===`lines`){let e=Array.isArray(r)?r:r?.lines;Array.isArray(e)&&(n.paths=e.slice(0,hv).map(e=>Tv(e)).filter(e=>e.length>=2)),n.countLabel=`${n.paths.length} ${n.paths.length===1?`segment`:`segments`}`}else if(t===`polyline`){n.paths=(Array.isArray(r)&&wv(r[0])?[{points:r}]:Array.isArray(r)?r:[r]).slice(0,hv).map(e=>Ev(Tv(e?.points??e),!!e?.closed)).filter(e=>e.length>0);let e=n.paths.reduce((e,t)=>e+t.length,0);n.countLabel=`${n.paths.length} ${n.paths.length===1?`chain`:`chains`} · ${e} vertices`}else if(t===`mesh`){let e=Array.isArray(r?.positions)?r.positions:[],t=[];for(let n=0;n+1<e.length&&t.length<hv;n+=3){let r=wv([e[n],e[n+1]]);r&&t.push(r)}let i=Array.isArray(r?.indices)?r.indices:[];for(let e=0;e+2<i.length&&n.paths.length<hv;e+=3){let r=[t[i[e]],t[i[e+1]],t[i[e+2]]];r.every(Boolean)&&n.paths.push([...r,r[0]])}n.points=t,n.countLabel=`${Math.floor(e.length/3)} vertices · ${Math.floor(i.length/3)} ${i.length===3?`triangle`:`triangles`}`}else if(t===`rects`){let e=Array.isArray(r)?r:r?.rects;Array.isArray(e)&&(n.rects=e.slice(0,hv).map(e=>({x:vv(Array.isArray(e)?e[0]:e?.x),y:vv(Array.isArray(e)?e[1]:e?.y),width:vv(Array.isArray(e)?e[2]:e?.width),height:vv(Array.isArray(e)?e[3]:e?.height)}))),n.countLabel=`${n.rects.length} ${n.rects.length===1?`rect`:`rects`}`}let i=[...n.points,...n.paths.flat(),...n.rects.flatMap(e=>[[e.x,e.y],[e.x+e.width,e.y+e.height]])];return i.length>0&&(n.bounds={min:[Math.min(...i.map(e=>e[0])),Math.min(...i.map(e=>e[1]))],max:[Math.max(...i.map(e=>e[0])),Math.max(...i.map(e=>e[1]))]}),n}var Ov=m(`<rect class="svelte-k5ygks"></rect>`),kv=m(`<polyline class="svelte-k5ygks"></polyline>`),Av=m(`<circle class="svelte-k5ygks"></circle>`),jv=m(`<svg role="img" preserveAspectRatio="xMidYMid meet" class="svelte-k5ygks"><!><!><!></svg>`),Mv=u(`<div class="empty svelte-k5ygks">No previewable geometry</div>`),Nv=u(`<span> </span>`),Pv=u(`<div class="geometry-preview svelte-k5ygks"><!> <div class="meta svelte-k5ygks"><span> </span> <!></div></div>`);function Fv(e,t){ee(t,!1);let n=Y(),r=Y(),i=Y(),a=Y(),s=Y(),c=Y(),l=Y(),u=Y(),d=V(t,`value`,8),p=V(t,`type`,8);J(()=>(A(d()),A(p())),()=>{L(n,Dv(d(),p()))}),J(()=>x(n),()=>{L(r,x(n).bounds?.min[0]??0)}),J(()=>x(n),()=>{L(i,x(n).bounds?.min[1]??0)}),J(()=>(x(n),x(r)),()=>{L(a,Math.max(x(n).bounds?x(n).bounds.max[0]-x(r):1,1e-6))}),J(()=>(x(n),x(i)),()=>{L(s,Math.max(x(n).bounds?x(n).bounds.max[1]-x(i):1,1e-6))}),J(()=>(x(a),x(s)),()=>{L(c,Math.max(x(a),x(s))*.04)}),J(()=>(x(r),x(c),x(i),x(a),x(s)),()=>{L(l,`${x(r)-x(c)} ${x(i)-x(c)} ${x(a)+x(c)*2} ${x(s)+x(c)*2}`)}),J(()=>(x(a),x(s)),()=>{L(u,Math.max(x(a),x(s))*.008)}),he(),ue();var m=Pv(),g=M(m),_=e=>{var t=jv(),r=M(t);f(r,1,()=>(x(n),F(()=>x(n).rects)),h,(e,t)=>{var n=Ov();K(()=>{X(n,`x`,(x(t),F(()=>x(t).x))),X(n,`y`,(x(t),F(()=>x(t).y))),X(n,`width`,(x(t),F(()=>x(t).width))),X(n,`height`,(x(t),F(()=>x(t).height)))}),E(e,n)});var i=P(r);f(i,1,()=>(x(n),F(()=>x(n).paths)),h,(e,t)=>{var n=kv();K(e=>X(n,`points`,e),[()=>(x(t),F(()=>x(t).map(e=>e.join(`,`)).join(` `)))]),E(e,n)});var a=P(i);f(a,1,()=>(x(n),F(()=>x(n).points)),h,(e,t)=>{var n=Av();K(()=>{X(n,`cx`,(x(t),F(()=>x(t)[0]))),X(n,`cy`,(x(t),F(()=>x(t)[1]))),X(n,`r`,x(u))}),E(e,n)}),o(t),K(()=>{X(t,`viewBox`,x(l)),X(t,`aria-label`,`${p()??``} preview`)}),E(e,t)},v=e=>{var t=Mv();E(e,t)};Z(g,e=>{x(n),F(()=>x(n).bounds)?e(_):e(v,-1)});var y=P(g,2),b=M(y),S=q(b,!0),C=P(b,2),w=e=>{var t=Nv(),n=q(t);K((e,t)=>D(n,`${e??``}×${t??``}`),[()=>(x(a),F(()=>Number(x(a).toFixed(2)))),()=>(x(s),F(()=>Number(x(s).toFixed(2))))]),E(e,t)};Z(C,e=>{x(n),F(()=>x(n).bounds)&&e(w)}),o(y),o(m),K(()=>D(S,(x(n),F(()=>x(n).countLabel)))),E(e,m),Ee()}var Iv=u(`<button class="twisty svelte-1juqkku"> </button>`),Lv=u(`<span class="twisty spacer svelte-1juqkku"></span>`),Rv=u(`<span class="key svelte-1juqkku"> </span>`),zv=u(`<span class="count svelte-1juqkku"> </span>`),Bv=u(`<span> </span>`),Vv=u(`<button class="more svelte-1juqkku"> </button>`),Hv=u(`<!> <!>`,1),Uv=u(`<div class="row svelte-1juqkku"><!> <!> <!></div> <!>`,1);function Wv(e,t){ee(t,!1);let n=Y(),r=Y(),i=Y(),s=Y(),c=Y(),l=V(t,`value`,8),u=V(t,`name`,8,null),d=V(t,`depth`,8,0),p=V(t,`expanded`,28,()=>d()<1),m=Y(50);function h(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?e.length<=4&&e.every(e=>typeof e==`number`)?`[${e.map(e=>Number.isInteger(e)?e:Number(e.toFixed(4))).join(`, `)}]`:`Array(${e.length})`:typeof e==`object`?`{${Object.keys(e).length}}`:typeof e==`string`?e.length>48?`"${e.slice(0,45)}…"`:`"${e}"`:String(typeof e==`number`?Number.isInteger(e)?e:Number(e.toFixed(6)):e)}function g(e){return e==null?`null`:typeof e==`number`?`number`:typeof e==`string`?`string`:typeof e==`boolean`?`boolean`:`plain`}J(()=>A(l()),()=>{L(n,Array.isArray(l()))}),J(()=>(A(l()),x(n)),()=>{L(r,l()!==null&&typeof l()==`object`&&!x(n))}),J(()=>(x(n),x(r)),()=>{L(i,x(n)||x(r))}),J(()=>(x(n),A(l()),x(r)),()=>{L(s,x(n)?l().map((e,t)=>[String(t),e]):x(r)?Object.entries(l()):[])}),J(()=>(x(s),x(m)),()=>{L(c,x(s).slice(0,x(m)))}),he(),ue();var _=Uv(),y=G(_),b=M(y),S=e=>{var t=Iv(),n=q(t,!0);K(()=>D(n,p()?`▾`:`▸`)),O(`click`,t,()=>p(!p())),E(e,t)},C=e=>{var t=Lv();E(e,t)};Z(b,e=>{x(i)?e(S):e(C,-1)});var w=P(b,2),T=e=>{var t=Rv(),n=q(t,!0);K(()=>D(n,u())),E(e,t)};Z(w,e=>{u()!==null&&e(T)});var k=P(w,2),ne=e=>{var t=zv(),r=q(t,!0);K(()=>D(r,(x(n),x(s),F(()=>x(n)?`${x(s).length} items`:`${x(s).length} keys`)))),E(e,t)},j=e=>{var t=Bv(),n=q(t,!0);K((e,r)=>{v(t,1,`value ${e??``}`,`svelte-1juqkku`),X(t,`title`,typeof l()==`string`?l():``),D(n,r)},[()=>(A(l()),F(()=>g(l()))),()=>(A(l()),F(()=>h(l())))]),E(e,t)};Z(k,e=>{x(i)?e(ne):e(j,-1)}),o(y);var re=P(y,2),N=e=>{var t=Hv(),n=G(t);f(n,1,()=>x(c),([e,t])=>e,(e,t)=>{var n=B(()=>U(x(t),2));let r=()=>x(n)[0],i=()=>x(n)[1];var a=te(),o=G(a);{let e=pe(()=>d()+1);Wv(o,{get value(){return i()},get name(){return r()},get depth(){return x(e)}})}E(e,a)});var r=P(n,2),i=e=>{var t=Vv(),n=q(t);K(()=>{a(t,`padding-left: ${(d()+1)*10}px`),D(n,`${x(s),x(m),F(()=>x(s).length-x(m))??``} more…`)}),O(`click`,t,()=>L(m,x(m)+200)),E(e,t)};Z(r,e=>{x(s),x(m),F(()=>x(s).length>x(m))&&e(i)}),E(e,t)};Z(re,e=>{x(i)&&p()&&e(N)}),K(()=>a(y,`padding-left: ${d()*10}px`)),E(e,_),Ee()}var Gv=u(`<div class="tree svelte-2vu630"><!></div>`),Kv=u(`<div class="error svelte-2vu630" role="alert"> </div>`),qv=u(`<textarea spellcheck="false" class="svelte-2vu630"></textarea> <!> <div class="hint svelte-2vu630">Apply with blur or ⌘/Ctrl Enter</div>`,1);function Jv(e,t){ee(t,!1);let n=V(t,`value`,8),r=V(t,`type`,8,`object`),i=V(t,`readOnly`,8,!1),a=V(t,`onChange`,8,null),s=Y(``),l=Y(),u=Y(``);function d(e){if(e===void 0)return``;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function f(){if(!(i()||!a()))try{let e=JSON.parse(x(s));if(r()===`array`&&!Array.isArray(e)){L(u,`Expected an array`);return}if(r()===`object`&&(e===null||Array.isArray(e)||typeof e!=`object`)){L(u,`Expected an object`);return}L(u,``),L(l,e),a()(e)}catch{L(u,`Invalid JSON`)}}function p(e){(e.metaKey||e.ctrlKey)&&e.key===`Enter`&&(e.preventDefault(),f())}J(()=>(A(n()),x(l)),()=>{n()!==x(l)&&(L(l,n()),L(s,d(n())),L(u,``))}),he(),ue();var m=te(),h=G(m),g=e=>{var t=Gv();Wv(M(t),{get value(){return n()}}),o(t),E(e,t)},_=e=>{var t=qv(),n=G(t);z(n);var i=P(n,2),a=e=>{var t=Kv(),n=q(t,!0);K(()=>D(n,x(u))),E(e,t)};Z(i,e=>{x(u)&&e(a)}),c(2),K(()=>X(n,`aria-label`,`${r()??``} JSON`)),Ce(n,()=>x(s),e=>L(s,e)),O(`blur`,n,f),O(`keydown`,n,p),E(e,t)};Z(h,e=>{i()?e(g):e(_,-1)}),E(e,m),Ee()}function Yv(e,t,n,r){let i=e?.parameters.find(e=>e.name===t);if(!e||!i)throw Error(`Unknown parameter ${e?.id??`<missing>`}.${t}`);r?.(),e.setParameter(t,n)}async function Xv(e=fetch){let t=await e(`/api/panels`);if(!t.ok)throw Error(`Cannot list project panels (${t.status})`);let n=await t.json();return Array.isArray(n.panels)?n.panels:[]}async function Zv(e){let t=await od(()=>import(`/api/panels/${encodeURIComponent(e)}/compiled`),[]);if(typeof t.mount!=`function`)throw Error(`Project panel "${e}" must export mount(element, api)`);return t}var Qv;async function $v(){return Qv??=fetch(`/api/exec/capability`,{cache:`no-store`}).then(async e=>{if(!e.ok)throw Error(`Cascade project execution capability is unavailable`);return(await e.json()).capability}).catch(e=>{throw Qv=void 0,e}),Qv}async function ey(e,t){let n=n=>fetch(`/api/exec`,{method:`POST`,headers:{"Content-Type":`application/json`,"X-Cascade-Exec-Capability":n},body:JSON.stringify({stage:e,args:t})}),r=await n(await $v());r.status===403&&(Qv=void 0,r=await n(await $v()));let i=await r.json();if(!r.ok||!i.ok)throw Error(`Stage "${e}" failed: ${i.stderr||i.error||`unknown error`}`);let a=String(i.stdout).trim().split(`
|
|
202
|
-
`).pop()??`{}`;return JSON.parse(a)}function ty(e){let t=t=>e.context()?.graph?.getNode(t)??null;return{runStage:e.runStage??ey,mediaUrl:_v,getParam(e,n){return t(e)?.parameters.find(e=>e.name===n)?.value},setParam(n,r,i){let a=t(n),o=a?.parameters.find(e=>e.name===r);if(!a||!o)throw Error(`Unknown parameter ${n}.${r}`);Yv(a,r,i,e.context()?.onRecordHistory)},selectedNodeId(){return e.context()?.selectedNode?.id??null},sourceNodeId:e.sourceNodeId??null,signal:e.signal??new AbortController().signal,close:e.close}}var ny=u(`<span class="renderer-error svelte-qxatjj" role="alert"> </span>`),ry=u(`<div></div>`);function iy(e,t){ee(t,!1);let n=Y(),r=V(t,`panelName`,8),i=V(t,`rendererType`,8),a=V(t,`value`,8),o=V(t,`readOnly`,8,!0),s=V(t,`mode`,8,`inspect`),c=V(t,`onChange`,8,null),l=V(t,`loader`,8,Zv),u=Y(),d=Y(null),f=Y(``);ye(()=>{let e=!1,t=null;return l()(r()).then(async a=>{if(e)return;let o=a.renderers?.[i()];if(!o)throw Error(`Project module "${r()}" does not export renderer "${i()}"`);let s=await o.mount(x(u),x(n));typeof s==`function`?t=s:s&&L(d,s),e&&(t?.(),x(d)?.dispose())}).catch(t=>{e||L(f,t instanceof Error?t.message:String(t))}),()=>{e=!0,t?.(),x(d)?.dispose()}}),J(()=>(A(a()),A(o()),A(s()),A(c())),()=>{L(n,{value:a(),readOnly:o(),mode:s(),onChange:c()})}),J(()=>(x(d),x(n)),()=>{x(d)?.update?.(x(n))}),he(),ue();var p=te(),m=G(p),h=e=>{var t=ny(),n=q(t,!0);K(()=>D(n,x(f))),E(e,t)},g=e=>{var t=ry();ge(t,e=>L(u,e),()=>x(u)),E(e,t)};Z(m,e=>{x(f)?e(h):e(g,-1)}),E(e,p),Ee()}var ay=new Map;function oy(e,t){ay.set(e,{kind:`svelte`,component:t})}function sy(e,t){ay.set(e,{kind:`project`,component:iy,panelName:t,rendererType:e})}function cy(e){return e?ay.get(e)??null:null}oy(`object`,Wv),oy(`array`,Wv);var ly=u(`<input type="number" class="cell svelte-1b37oh8"/>`),uy=u(`<button class="reset svelte-1b37oh8">Identity</button>`),dy=u(`<div class="matrix svelte-1b37oh8"></div> <!>`,1),fy=u(`<span class="swatch svelte-1b37oh8"></span>`),py=u(`<input aria-label="Color" type="color" class="svelte-1b37oh8"/>`),my=u(`<label class="component svelte-1b37oh8"><span class="svelte-1b37oh8"> </span> <input type="number" min="0" max="1" step="0.01" class="svelte-1b37oh8"/></label>`),hy=u(`<div class="vector svelte-1b37oh8"></div>`),gy=u(`<div class="color-row svelte-1b37oh8"><!> <span class="color-css svelte-1b37oh8"> </span></div> <!>`,1),_y=u(`<label class="component svelte-1b37oh8"><span class="svelte-1b37oh8"> </span> <input type="number" class="svelte-1b37oh8"/></label>`),vy=u(`<option> </option>`),yy=u(`<select class="single svelte-1b37oh8"></select>`),by=u(`<label class="boolean svelte-1b37oh8"><input type="checkbox" class="svelte-1b37oh8"/> </label>`),xy=u(`<div class="slider-row svelte-1b37oh8"><input type="range" class="svelte-1b37oh8"/> <input type="number" class="slider-number svelte-1b37oh8"/></div>`),Sy=u(`<input type="number" class="single svelte-1b37oh8"/>`),Cy=u(`<pre class="text-value svelte-1b37oh8"> </pre>`),wy=u(`<input aria-label="string" type="text" class="single svelte-1b37oh8"/>`),Ty=u(`<img loading="lazy" class="svelte-1b37oh8"/> <div class="meta svelte-1b37oh8"> </div> <div class="path svelte-1b37oh8"> </div>`,1),Ey=u(`<div class="summary svelte-1b37oh8">No image reference</div>`),Dy=u(`<input aria-label="image path" type="text" class="single svelte-1b37oh8"/>`),Oy=u(`<div class="structured svelte-1b37oh8"><!></div>`),ky=u(`<div class="image svelte-1b37oh8"><!> <!></div>`),Ay=u(`<div class="texture"><div class="meta svelte-1b37oh8"> </div> <div class="notice svelte-1b37oh8">Live browser resource · convert to image to cross runtimes</div></div>`),jy=u(`<!> <!>`,1),My=u(`<input aria-label="asset path" type="text" class="single svelte-1b37oh8"/>`),Ny=u(`<div class="summary svelte-1b37oh8"> </div>`),Py=u(`<div><!></div>`);function Fy(e,t){ee(t,!1);let n=Y(),i=Y(),l=Y(),u=Y(),d=Y(),p=Y(),m=Y(),_=Y(),y=Y(),b=Y(),S=Y(),w=Y(),k=Y(),ne=Y(),j=V(t,`type`,8,`any`),N=V(t,`value`,8),ie=V(t,`mode`,8,`inspect`),ae=V(t,`readOnly`,8,!1),oe=V(t,`port`,8,null),I=V(t,`node`,8,null),R=V(t,`onChange`,8,null),z=V(t,`version`,8,0),se=new Set([`geometry`,`points`,`lines`,`polyline`,`mesh`,`rects`]);function ce(e){if(!Number.isFinite(e))return x(y).min;let t=Math.min(x(y).max,Math.max(x(y).min,e));return x(i)===`int`?Math.round(t):t}function le(e){!ae()&&R()&&R()(e)}function H(e,t){let n=Number(t);if(!Number.isFinite(n))return;let r=Array.isArray(N())?[...N()]:Array(x(l)).fill(0),i=x(b)?ce(n):n;r[e]=x(p)?Math.round(i):i,le(r)}function U(){let e=Array(x(l)).fill(0);for(let t=0;t<x(d);t++)e[t*x(d)+t]=1;le(e)}function de(e,t){let n=[...x(ne)];n[e]=Math.max(0,Math.min(1,Number(t))),le(n)}function fe(e){let t=bv(e);t[3]=x(ne)[3],le(t)}function me(e){let t=x(S).find(t=>String(t.value)===e);t&&le(t.value)}J(()=>A(j()),()=>{L(n,Yl(j()))}),J(()=>(x(n),A(N())),()=>{L(i,x(n)===`any`?gv(N()):x(n))}),J(()=>x(i),()=>{L(l,ql[x(i)]??0)}),J(()=>x(i),()=>{L(u,x(i).startsWith(`mat`))}),J(()=>(x(u),x(l)),()=>{L(d,x(u)?Math.sqrt(x(l)):0)}),J(()=>x(i),()=>{L(p,Jl(x(i)))}),J(()=>(x(i),x(l)),()=>{L(m,x(i)===`color`?[`R`,`G`,`B`,`A`]:[`X`,`Y`,`Z`,`W`].slice(0,x(l)))}),J(()=>(A(ae()),x(i),cy),()=>{L(_,!ae()&&(x(i)===`object`||x(i)===`array`)?null:cy(x(i)))}),J(()=>(A(oe()),x(i)),()=>{L(y,{min:Number(oe()?.options?.min),max:Number(oe()?.options?.max),step:oe()?.options?.step??(x(i)===`int`?1:`any`)})}),J(()=>x(y),()=>{L(b,Number.isFinite(x(y).min)&&Number.isFinite(x(y).max)&&x(y).max>x(y).min)}),J(()=>A(oe()),()=>{L(S,Array.isArray(oe()?.options?.choices)?oe().options.choices:[])}),J(()=>(x(i),A(N())),()=>{L(w,x(i)===`image`?eu(N()):null)}),J(()=>(x(w),A(ie()),A(z())),()=>{L(k,x(w)?_v(x(w).path,{width:ie()===`view`?1800:320,version:z()}):``)}),J(()=>A(N()),()=>{L(ne,bv(N()))}),he(),ue();var W=Py(),ge=M(W),_e=e=>{var t=te(),n=G(t),r=e=>{var t=te(),n=G(t);{let e=pe(()=>ae()?null:le);g(n,()=>x(_).component,(t,n)=>{n(t,{get value(){return N()},get readOnly(){return ae()},get mode(){return ie()},get onChange(){return x(e)},get panelName(){return x(_),F(()=>x(_).panelName)},get rendererType(){return x(_),F(()=>x(_).rendererType)}})})}E(e,t)},i=e=>{var t=te(),n=G(t);{let e=pe(()=>ae()?null:le);g(n,()=>x(_).component,(t,n)=>{n(t,{get value(){return N()},get port(){return oe()},get readOnly(){return ae()},get mode(){return ie()},get node(){return I()},get onChange(){return x(e)}})})}E(e,t)};Z(n,e=>{x(_),F(()=>x(_).kind===`project`)?e(r):e(i,-1)}),E(e,t)},ve=e=>{var t=dy(),n=G(t);f(n,5,()=>(x(l),F(()=>Array(x(l)))),h,(e,t,n)=>{var i=ly();re(i),K((e,t)=>{X(i,`aria-label`,`Row ${e??``}, column ${n%x(d)+1}`),i.disabled=ae(),r(i,t)},[()=>(x(d),F(()=>Math.floor(n/x(d))+1)),()=>(A(N()),F(()=>Array.isArray(N())?N()[n]??0:0))]),O(`change`,i,e=>H(n,e.currentTarget.value)),E(e,i)}),o(n);var i=P(n,2),s=e=>{var t=uy();O(`click`,t,U),E(e,t)};Z(i,e=>{ae()||e(s)}),K(()=>a(n,`grid-template-columns: repeat(${x(d)??``}, minmax(0, 1fr))`)),E(e,t)},ye=e=>{var t=gy(),n=G(t),i=M(n),s=e=>{var t=fy();K(e=>a(t,`background:${e??``}`),[()=>(A(xv),x(ne),F(()=>xv(x(ne))))]),E(e,t)},c=e=>{var t=py();re(t),K(e=>r(t,e),[()=>(A(Sv),x(ne),F(()=>Sv(x(ne))))]),O(`input`,t,e=>fe(e.currentTarget.value)),E(e,t)};Z(i,e=>{ae()?e(s):e(c,-1)});var l=P(i,2),u=q(l,!0);o(n);var d=P(n,2),p=e=>{var t=hy();f(t,5,()=>x(ne),h,(e,t,n)=>{var i=my(),a=M(i),s=q(a,!0),c=P(a,2);re(c),o(i),K(()=>{D(s,(x(m),F(()=>x(m)[n]))),X(c,`aria-label`,(x(m),F(()=>x(m)[n]))),c.disabled=ae(),r(c,x(t))}),O(`change`,c,e=>de(n,e.currentTarget.value)),E(e,i)}),o(t),E(e,t)};Z(d,e=>{(!ae()||ie()===`view`)&&e(p)}),K(e=>D(u,e),[()=>(A(xv),x(ne),F(()=>xv(x(ne))))]),E(e,t)},be=e=>{var t=hy();f(t,5,()=>(x(l),F(()=>Array(x(l)))),h,(e,t,n)=>{var i=_y(),a=M(i),s=q(a,!0),c=P(a,2);re(c),o(i),K((e,t,i)=>{D(s,(x(m),F(()=>x(m)[n]))),X(c,`aria-label`,(x(m),F(()=>x(m)[n]))),X(c,`min`,e),X(c,`max`,t),X(c,`step`,(A(oe()),x(p),F(()=>oe()?.options?.step??(x(p)?1:`any`)))),c.disabled=ae(),r(c,i)},[()=>(x(y),F(()=>Number.isFinite(x(y).min)?x(y).min:void 0)),()=>(x(y),F(()=>Number.isFinite(x(y).max)?x(y).max:void 0)),()=>(A(N()),F(()=>Array.isArray(N())?N()[n]??0:0))]),O(`change`,c,e=>H(n,e.currentTarget.value)),E(e,i)}),o(t),E(e,t)},xe=e=>{var t=yy();f(t,5,()=>x(S),h,(e,t)=>{var n=vy(),r=q(n,!0),i={};K(e=>{D(r,(x(t),F(()=>x(t).label))),i!==(i=e)&&(n.value=(n.__value=i)??``)},[()=>(x(t),F(()=>String(x(t).value)))]),E(e,n)}),o(t);var n;T(t),K(e=>{X(t,`aria-label`,(A(oe()),F(()=>oe()?.name??`choice`))),t.disabled=ae(),n!==(n=e)&&(t.value=(t.__value=n)??``,s(t,n))},[()=>(A(N()),F(()=>String(N()??``)))]),O(`change`,t,e=>me(e.currentTarget.value)),E(e,t)},Se=e=>{var t=by(),n=M(t);re(n);var r=P(n);o(t),K((e,t)=>{n.disabled=ae(),C(n,e),D(r,` ${t??``}`)},[()=>(A(N()),F(()=>!!N())),()=>(A(N()),F(()=>N()?`true`:`false`))]),O(`change`,n,e=>le(e.currentTarget.checked)),E(e,t)},Ce=e=>{var t=xy(),n=M(t);re(n);var a=P(n,2);re(a),o(t),K(()=>{X(n,`aria-label`,x(i)),X(n,`min`,(x(y),F(()=>x(y).min))),X(n,`max`,(x(y),F(()=>x(y).max))),X(n,`step`,(x(y),F(()=>x(y).step))),n.disabled=ae(),r(n,(A(N()),x(y),F(()=>N()??x(y).min))),X(a,`aria-label`,`${x(i)??``} value`),X(a,`min`,(x(y),F(()=>x(y).min))),X(a,`max`,(x(y),F(()=>x(y).max))),X(a,`step`,(x(y),F(()=>x(y).step))),a.disabled=ae(),r(a,(A(N()),x(y),F(()=>N()??x(y).min)))}),O(`input`,n,e=>le(ce(Number(e.currentTarget.value)))),O(`change`,a,e=>le(ce(Number(e.currentTarget.value)))),E(e,t)},we=e=>{var t=Sy();re(t),K(()=>{X(t,`aria-label`,x(i)),X(t,`step`,x(i)===`int`?1:`any`),t.disabled=ae(),r(t,N()??0)}),O(`change`,t,e=>le(x(i)===`int`?Math.round(Number(e.currentTarget.value)):Number(e.currentTarget.value))),E(e,t)},Te=e=>{var t=te(),n=G(t),i=e=>{var t=Cy(),n=q(t,!0);K(()=>D(n,N()??``)),E(e,t)},a=e=>{var t=wy();re(t),K(()=>{t.disabled=ae(),r(t,N()??``)}),O(`change`,t,e=>le(e.currentTarget.value)),E(e,t)};Z(n,e=>{ie()===`view`&&ae()?e(i):e(a,-1)}),E(e,t)},De=e=>{var t=ky(),n=M(t),a=e=>{var t=Ty(),n=G(t),r=P(n,2),a=q(r,!0),o=P(r,2),s=q(o,!0);K(e=>{X(n,`src`,x(k)),X(n,`alt`,(x(w),F(()=>x(w).path))),D(a,e),X(o,`title`,(x(w),F(()=>x(w).path))),D(s,(x(w),F(()=>x(w).path)))},[()=>(A(Cv),x(w),x(i),F(()=>Cv(x(w),x(i))))]),E(e,t)},s=e=>{var t=Ey();E(e,t)};Z(n,e=>{x(w)?e(a):e(s,-1)});var c=P(n,2),l=e=>{var t=Oy(),n=M(t),i=e=>{var t=Dy();re(t),K(()=>r(t,N())),O(`change`,t,e=>le(e.currentTarget.value)),E(e,t)},a=e=>{Jv(e,{get value(){return N()},type:`image`,get onChange(){return R()}})};Z(n,e=>{typeof N()==`string`?e(i):e(a,-1)}),o(t),E(e,t)};Z(c,e=>{ae()||e(l)}),o(t),E(e,t)},Oe=e=>{var t=Ay(),n=M(t),r=q(n,!0);c(2),o(t),K(e=>D(r,e),[()=>(A(Cv),A(N()),x(i),F(()=>Cv(N(),x(i))))]),E(e,t)},ke=e=>{var t=jy(),n=G(t);Fv(n,{get value(){return N()},get type(){return x(i)}});var r=P(n,2),a=e=>{var t=Oy();Jv(M(t),{get value(){return N()},get type(){return x(i)},get onChange(){return R()}}),o(t),E(e,t)};Z(r,e=>{ae()||e(a)}),E(e,t)},Ae=B(()=>(x(i),F(()=>se.has(x(i))))),je=e=>{var t=My();re(t),K(()=>{t.disabled=ae(),r(t,N())}),O(`change`,t,e=>le(e.currentTarget.value)),E(e,t)},Me=e=>{Jv(e,{get value(){return N()},get type(){return x(i)},get readOnly(){return ae()},get onChange(){return R()}})},Ne=e=>{var t=Ny(),n=q(t,!0);K(e=>D(n,e),[()=>(A(Cv),A(N()),x(i),F(()=>Cv(N(),x(i))))]),E(e,t)};Z(ge,e=>{x(_)?e(_e):x(u)?e(ve,1):x(i)===`color`?e(ye,2):x(l)>0?e(be,3):(x(S),F(()=>x(S).length>0)?e(xe,4):x(i)===`bool`?e(Se,5):(x(i)===`float`||x(i)===`int`)&&x(b)?e(Ce,6):x(i)===`float`||x(i)===`int`?e(we,7):x(i)===`string`?e(Te,8):x(i)===`image`?e(De,9):x(i)===`texture`?e(Oe,10):x(Ae)?e(ke,11):x(i)===`asset`&&typeof N()==`string`?e(je,12):x(i)===`array`||x(i)===`object`||x(i)===`any`||x(i)===`asset`?e(Me,13):e(Ne,-1))}),o(W),K(()=>{v(W,1,`core-value mode-${ie()??``}`,`svelte-1b37oh8`),X(W,`data-type`,x(i))}),E(e,W),Ee()}var Iy=u(`<div class="source svelte-1boj9ce"> </div>`),Ly=u(`<div><div class="row svelte-1boj9ce"><span class="dot svelte-1boj9ce"></span> <span class="name svelte-1boj9ce"> </span></div> <!> <div class="value svelte-1boj9ce"><!></div></div>`);function Ry(e,t){ee(t,!1);let n=Y(),r=Y(),i=Y(),s=Y(),c=Y(),l=V(t,`port`,8),u=V(t,`node`,8,null),d=V(t,`direction`,8,`input`),f=V(t,`onChange`,8,null);J(()=>A(l()),()=>{L(n,Yl(l()?.dataType))}),J(()=>A(l()),()=>{L(r,l()?.value)}),J(()=>(x(n),x(r)),()=>{L(i,x(n)===`any`?gv(x(r)):x(n))}),J(()=>A(l()),()=>{L(s,(l()?.connections?.length??0)>0)}),J(()=>(A(d()),x(s)),()=>{L(c,d()===`output`||x(s))}),he(),ue();var p=Ly();let m;var h=M(p),g=M(h),_=P(g,2),y=q(_,!0);o(h);var b=P(h,2),S=e=>{var t=Iy(),n=q(t);K(()=>D(n,`from ${A(l()),F(()=>l().connections[0]?.from?.nodeId??`upstream`)??``}`)),E(e,t)};Z(b,e=>{x(s)&&d()===`input`&&e(S)});var C=P(b,2),w=M(C);{let e=pe(()=>x(c)?null:f());Fy(w,{get type(){return x(i)},get value(){return x(r)},get port(){return l()},get node(){return u()},mode:`inspect`,get readOnly(){return x(c)},get onChange(){return x(e)}})}o(C),o(p),K(e=>{m=v(p,1,`port-editor svelte-1boj9ce`,null,m,{"read-only":x(c)}),a(g,`background:${e??``}`),X(_,`title`,(A(l()),x(i),F(()=>`${l()?.name} · ${x(i)}`))),D(y,(A(l()),F(()=>l()?.name)))},[()=>(A(Ql),A(l()),F(()=>Ql(l()?.dataType)))]),E(e,p),Ee()}var zy=u(`<div class="slider-wrapper svelte-368zap"><input type="range" class="slider svelte-368zap"/> <input type="text" inputmode="decimal" spellcheck="false" autocomplete="off" class="number-input svelte-368zap"/></div>`),By=u(`<input type="text" inputmode="decimal" spellcheck="false" autocomplete="off" class="number-input-full svelte-368zap"/>`),Vy=u(`<div class="number-input-container svelte-368zap"><!></div>`);function Hy(e,t){ee(t,!1);let n=Y(),i=Y(),a=Y(),s=Y(),c=Y(),l=Y(),u=Y(),d=Y(),f=V(t,`prop`,8),p=V(t,`id`,8),m=V(t,`onValueChange`,8),h=V(t,`onExpressionChange`,8,null),g=Y(String(x(d))),_=Y(!1),v=/^[-+]?(\d+\.?\d*|\.\d+)([eE][-+]?\d+)?$/;function y(e){let t=e;return x(i)!==void 0&&t<x(i)&&(t=x(i)),x(a)!==void 0&&t>x(a)&&(t=x(a)),x(c)?Math.round(t):t}function b(e){let t=parseFloat(e.target.value);Number.isNaN(t)||m()(x(c)?Math.round(t):t)}function S(e){L(g,e.target.value);let t=x(g).trim();v.test(t)&&m()(y(Number(t)))}function C(){let e=x(g).trim();if(v.test(e)){m()(y(Number(e)));return}if(e&&h()){h()(e);return}L(g,String(x(d)))}function w(e){if(e.key===`ArrowUp`||e.key===`ArrowDown`){let t=x(g).trim();if(t&&!v.test(t))return;e.preventDefault();let r=v.test(t)?Number(t):x(n),i=(typeof x(s)==`number`?x(s):1)*(e.shiftKey?10:1),a=y(r+(e.key===`ArrowUp`?i:-i)),o=x(c)?a:Number(a.toFixed(6));L(g,String(o)),m()(o);return}e.key===`Enter`?(e.preventDefault(),C(),e.target.blur()):e.key===`Escape`&&(L(g,String(x(d))),e.target.blur())}function T(){L(_,!0)}function D(){L(_,!1),C()}J(()=>A(f()),()=>{L(n,typeof f().value==`number`?f().value:0)}),J(()=>A(f()),()=>{L(i,typeof f().params?.min==`number`?f().params.min:void 0)}),J(()=>A(f()),()=>{L(a,typeof f().params?.max==`number`?f().params.max:void 0)}),J(()=>A(f()),()=>{L(s,f().params?.step??(f().params?.integer?1:.01))}),J(()=>(A(f()),x(s)),()=>{L(c,f().params?.integer===!0||x(s)===1)}),J(()=>(x(i),x(a)),()=>{L(l,x(i)!==void 0&&x(a)!==void 0)}),J(()=>A(f()),()=>{L(u,typeof f().disabled==`function`?f().disabled():f().disabled)}),J(()=>(x(c),x(n)),()=>{L(d,x(c)?Math.round(x(n)):x(n))}),J(()=>(x(_),x(d)),()=>{x(_)||L(g,String(x(d)))}),he(),ue();var te=Vy(),k=M(te),ne=e=>{var t=zy(),c=M(t);re(c);var l=P(c,2);re(l),o(t),K(()=>{X(c,`id`,p()),X(c,`min`,x(i)),X(c,`max`,x(a)),X(c,`step`,x(s)),r(c,x(n)),c.disabled=x(u),r(l,x(g)),l.disabled=x(u)}),O(`input`,c,b),O(`input`,l,S),O(`keydown`,l,w),O(`focus`,l,T),O(`blur`,l,D),E(e,t)},j=e=>{var t=By();re(t),K(()=>{X(t,`id`,p()),r(t,x(g)),t.disabled=x(u)}),O(`input`,t,S),O(`keydown`,t,w),O(`focus`,t,T),O(`blur`,t,D),E(e,t)};Z(k,e=>{x(l)?e(ne):e(j,-1)}),o(te),E(e,te),Ee()}var Uy=u(`<input type="number" class="number-input svelte-zpm8xr"/>`),Wy=u(`<button class="preset-option svelte-zpm8xr"> </button>`),Gy=u(`<div class="preset-dropdown svelte-zpm8xr" role="menu" tabindex="-1"></div>`),Ky=u(`<div class="preset-container svelte-zpm8xr"><button class="preset-button svelte-zpm8xr" title="Resolution presets"><svg width="12" height="12" viewBox="0 0 12 12" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M2 3h8M2 6h8M2 9h8"></path></svg></button> <!></div>`),qy=m(`<path d="M3 5.5 V4 a3 3 0 0 1 6 0 v1.5 M6 8.5 v2 M2.5 5.5 h7 a1 1 0 0 1 1 1 v4 a1 1 0 0 1 -1 1 h-7 a1 1 0 0 1 -1 -1 v-4 a1 1 0 0 1 1 -1 z"></path>`),Jy=m(`<path d="M3 5.5 V4 a3 3 0 0 1 6 0 v1.5 M6 8.5 v2 M2.5 5.5 h7 a1 1 0 0 1 1 1 v4 a1 1 0 0 1 -1 1 h-7 a1 1 0 0 1 -1 -1 v-4 a1 1 0 0 1 1 -1 z" stroke-dasharray="2 2"></path>`),Yy=u(`<button><svg width="12" height="12" viewBox="0 0 12 12" fill="none" stroke="currentColor" stroke-width="1.5"><!></svg></button>`),Xy=u(`<div class="vector-input-container svelte-zpm8xr"><div class="vector-row svelte-zpm8xr"><!> <!> <!></div></div>`);function Zy(t,n){ee(n,!1);let i=Y(),a=Y(),s=Y(),c=Y(),l=Y(),u=Y(),d=Y(),p=V(n,`prop`,12),m=V(n,`id`,8),g=V(n,`onValueChange`,8),_=Y(Array.isArray(p().value)?[...p().value]:[0,0,0]),y=Y([]),b=Y(p().params?.locked??!1),S=Y(!1),C=Y(),w=Y(),T=[{label:`256 × 256`,value:[256,256]},{label:`512 × 512`,value:[512,512]},{label:`1024 × 1024`,value:[1024,1024]},{label:`2048 × 2048`,value:[2048,2048]},{label:`640 × 480`,value:[640,480]},{label:`1280 × 720`,value:[1280,720]},{label:`1920 × 1080`,value:[1920,1080]},{label:`3840 × 2160`,value:[3840,2160]}];function te(e){x(i)===2?g()([e[0],e[1]]):x(i)===3&&g()([e[0],e[1],x(_)[2]]),L(S,!1)}function k(e){x(w)&&!x(w).contains(e.target)&&x(C)&&!x(C).contains(e.target)&&L(S,!1)}function ne(e,t){let n=[...x(_)];if(x(u)&&(t=Math.round(t)),x(s)!==void 0){let n=Array.isArray(x(s))?x(s)[e]:x(s);n!==void 0&&t<n&&(t=n)}if(x(c)!==void 0){let n=Array.isArray(x(c))?x(c)[e]:x(c);n!==void 0&&t>n&&(t=n)}x(b)?n.fill(t):n[e]=t,g()(n)}function j(e,t){let n=e.target,r=parseFloat(n.value);if(isNaN(r)){n.value=String(x(_)[t]);return}ne(t,r)}function N(e,t){let n=e.target;(n.value===``||isNaN(parseFloat(n.value)))&&(n.value=String(x(_)[t]))}ye(()=>(document.addEventListener(`click`,k),()=>{document.removeEventListener(`click`,k)})),J(()=>(A(p()),x(_)),()=>{let e=p().value,t=Array.isArray(e)?[...e]:[0,0,0];JSON.stringify(x(_))!==JSON.stringify(t)&&L(_,t)}),J(()=>A(p()),()=>{L(l,p().params?.step??(p().params?.integer?1:.01))}),J(()=>(A(p()),x(l)),()=>{L(u,p().params?.integer===!0||x(l)===1)}),J(()=>(x(_),x(y),x(u)),()=>{x(_)&&e().then(()=>{x(_).forEach((e,t)=>{if(x(y)[t]){let n=x(u)?Math.round(e):e;x(y)[t].value!==String(n)&&!isNaN(n)&&oe(y,x(y)[t].value=String(n))}})})}),J(()=>x(_),()=>{L(i,x(_).length)}),J(()=>x(i),()=>{L(a,x(i)===2?[`X`,`Y`]:[`X`,`Y`,`Z`])}),J(()=>A(p()),()=>{L(s,typeof p().params?.min==`number`||Array.isArray(p().params?.min)?p().params.min:void 0)}),J(()=>A(p()),()=>{L(c,typeof p().params?.max==`number`||Array.isArray(p().params?.max)?p().params.max:void 0)}),J(()=>A(p()),()=>{L(d,typeof p().disabled==`function`?p().disabled():p().disabled)}),J(()=>A(p()),()=>{p().params?.locked!==void 0&&L(b,p().params.locked)}),he(),ue();var ie=Xy(),ae=M(ie),R=M(ae);f(R,1,()=>(x(i),F(()=>Array(x(i)))),h,(e,t,n)=>{let i=pe(()=>(x(_),x(u),F(()=>x(_)[n]===void 0?0:x(u)?Math.round(x(_)[n]):x(_)[n])));pe(()=>(x(y),F(()=>x(y)[n])));var a=Uy();re(a),ge(a,(e,t)=>oe(y,x(y)[t]=e),e=>x(y)?.[e],()=>[n]),K((e,t)=>{X(a,`id`,`${m()??``}-${n}`),X(a,`min`,e),X(a,`max`,t),X(a,`step`,x(l)),r(a,x(i)),a.disabled=x(d)},[()=>(x(s),F(()=>x(s)===void 0?void 0:Array.isArray(x(s))?x(s)[n]:x(s))),()=>(x(c),F(()=>x(c)===void 0?void 0:Array.isArray(x(c))?x(c)[n]:x(c)))]),O(`input`,a,e=>j(e,n)),O(`blur`,a,e=>N(e,n)),E(e,a)});var z=P(R,2),se=e=>{var t=Ky(),r=M(t);ge(r,e=>L(C,e),()=>x(C));var i=P(r,2),a=e=>{var t=Gy();f(t,5,()=>T,h,(e,t)=>{var n=Wy(),r=q(n,!0);K(()=>D(r,(x(t),F(()=>x(t).label)))),O(`click`,n,I(()=>te(x(t).value))),E(e,n)}),o(t),ge(t,e=>L(w,e),()=>x(w)),O(`click`,t,I(function(e){be.call(this,n,e)})),O(`keydown`,t,I(function(e){be.call(this,n,e)})),E(e,t)};Z(i,e=>{x(S)&&e(a)}),o(t),K(()=>r.disabled=x(d)),O(`click`,r,I(e=>{e.stopPropagation(),L(S,!x(S))})),E(e,t)};Z(z,e=>{x(i)===2&&e(se)});var B=P(z,2),ce=e=>{var t=Yy();let n;var r=M(t),i=M(r),a=e=>{var t=qy();E(e,t)},s=e=>{var t=Jy();E(e,t)};Z(i,e=>{x(b)?e(a):e(s,-1)}),o(r),o(t),K(()=>{n=v(t,1,`lock-button svelte-zpm8xr`,null,n,{locked:x(b)}),X(t,`title`,x(b)?`Unlock components`:`Lock components`),t.disabled=x(d)}),O(`click`,t,e=>{e.stopPropagation(),L(b,!x(b)),p().params&&p(p().params.locked=x(b),!0)}),E(e,t)};Z(B,e=>{x(i)>1&&e(ce)}),o(ae),o(ie),E(t,ie),Ee()}var Qy=w(null),$y=u(`<div class="input-row svelte-1hwwwsb"><label class="svelte-1hwwwsb">H</label> <input type="number" min="0" max="360" class="number-input-small svelte-1hwwwsb"/> <input aria-label="Hue" type="range" min="0" max="360" step="1" class="slider-input svelte-1hwwwsb"/></div> <div class="input-row svelte-1hwwwsb"><label class="svelte-1hwwwsb">S</label> <input type="number" min="0" max="100" class="number-input-small svelte-1hwwwsb"/> <input aria-label="Saturation" type="range" min="0" max="100" step="1" class="slider-input svelte-1hwwwsb"/></div> <div class="input-row svelte-1hwwwsb"><label class="svelte-1hwwwsb">V</label> <input type="number" min="0" max="100" class="number-input-small svelte-1hwwwsb"/> <input aria-label="Value" type="range" min="0" max="100" step="1" class="slider-input svelte-1hwwwsb"/></div>`,1),eb=u(`<div class="input-row svelte-1hwwwsb"><label class="svelte-1hwwwsb">R</label> <input type="number" min="0" max="255" class="number-input-small svelte-1hwwwsb"/> <input aria-label="Red" type="range" min="0" max="255" step="1" class="slider-input svelte-1hwwwsb"/></div> <div class="input-row svelte-1hwwwsb"><label class="svelte-1hwwwsb">G</label> <input type="number" min="0" max="255" class="number-input-small svelte-1hwwwsb"/> <input aria-label="Green" type="range" min="0" max="255" step="1" class="slider-input svelte-1hwwwsb"/></div> <div class="input-row svelte-1hwwwsb"><label class="svelte-1hwwwsb">B</label> <input type="number" min="0" max="255" class="number-input-small svelte-1hwwwsb"/> <input aria-label="Blue" type="range" min="0" max="255" step="1" class="slider-input svelte-1hwwwsb"/></div>`,1),tb=u(`<button class="palette-swatch svelte-1hwwwsb"></button>`),nb=u(`<div class="picker-popover svelte-1hwwwsb" role="dialog" aria-label="Color picker" tabindex="-1"><div class="picker-header svelte-1hwwwsb"><button>HSV</button> <button>RGB</button></div> <div class="picker-content svelte-1hwwwsb"><div class="wheel-section svelte-1hwwwsb"><canvas class="color-wheel svelte-1hwwwsb"></canvas></div> <div class="inputs-section svelte-1hwwwsb"><!> <div class="input-row svelte-1hwwwsb"><label class="svelte-1hwwwsb">Hex</label> <input type="text" class="hex-input svelte-1hwwwsb"/></div></div> <div class="palette-section svelte-1hwwwsb"><div class="color-history svelte-1hwwwsb"><button class="history-swatch svelte-1hwwwsb" title="Swap with previous"></button> <button class="history-swatch svelte-1hwwwsb" aria-label="Current color"></button></div> <div class="palette-grid svelte-1hwwwsb"></div></div></div></div>`),rb=u(`<div class="color-picker-container svelte-1hwwwsb"><button class="color-swatch svelte-1hwwwsb" aria-label="Choose color"></button> <!></div>`);function ib(e,t){ee(t,!1);let n=V(t,`prop`,8),i=V(t,`id`,8),s=V(t,`onValueChange`,8),c=Y(!1),l=null,u=Y(),d=Y(),p=Y(null),m=null,g=null,_=-1,y=null,b=Y(210),S=Y(1),C=Y(.5),w=Y(0),T=Y(.25),D=Y(.5),k=Y(`#003F7F`),ne=Y(`#000000`),j=Y(`hsv`),N=[[`#FF0000`,`#FF2000`,`#FF4000`,`#FF6000`,`#FF8000`,`#FFA000`,`#FFC000`,`#FFE000`,`#FFFF00`,`#E0FF00`,`#C0FF00`,`#A0FF00`,`#80FF00`,`#60FF00`,`#40FF00`,`#20FF00`],[`#00FF00`,`#00FF20`,`#00FF40`,`#00FF60`,`#00FF80`,`#00FFA0`,`#00FFC0`,`#00FFE0`,`#00FFFF`,`#00E0FF`,`#00C0FF`,`#00A0FF`,`#0080FF`,`#0060FF`,`#0040FF`,`#0020FF`],[`#0000FF`,`#2000FF`,`#4000FF`,`#6000FF`,`#8000FF`,`#A000FF`,`#C000FF`,`#E000FF`,`#FF00FF`,`#FF00E0`,`#FF00C0`,`#FF00A0`,`#FF0080`,`#FF0060`,`#FF0040`,`#FF0020`],[`#000000`,`#111111`,`#222222`,`#333333`,`#444444`,`#555555`,`#666666`,`#777777`,`#888888`,`#999999`,`#AAAAAA`,`#BBBBBB`,`#CCCCCC`,`#DDDDDD`,`#EEEEEE`,`#FFFFFF`]];function ie(e,t,n){let r=Math.max(e,t,n),i=r-Math.min(e,t,n),a=0;i!==0&&(a=r===e?(t-n)/i%6:r===t?(n-e)/i+2:(e-t)/i+4),a=Math.round(a*60),a<0&&(a+=360);let o=r===0?0:i/r;return{h:a,s:o,v:r}}function ae(e,t,n){let r=n*t,i=r*(1-Math.abs(e/60%2-1)),a=n-r,o=0,s=0,c=0;return e<60?(o=r,s=i,c=0):e<120?(o=i,s=r,c=0):e<180?(o=0,s=r,c=i):e<240?(o=0,s=i,c=r):e<300?(o=i,s=0,c=r):(o=r,s=0,c=i),{r:o+a,g:s+a,b:c+a}}function oe(e,t,n){let r=e=>{let t=Math.round(e*255).toString(16);return t.length===1?`0`+t:t};return`#${r(e)}${r(t)}${r(n)}`.toUpperCase()}function R(e){let t=ll(e);L(k,dl(t).toUpperCase()),L(w,t.r),L(T,t.g),L(D,t.b);let n=ie(x(w),x(T),x(D));L(b,n.h),L(S,n.s),L(C,n.v),x(p)&&x(d)&&H()}function z(){let e=ae(x(b),x(S),x(C));L(w,e.r),L(T,e.g),L(D,e.b),L(k,oe(x(w),x(T),x(D)));let t={r:x(w),g:x(T),b:x(D),a:1};s()(t),requestAnimationFrame(()=>{x(p)&&x(d)&&H()})}function se(){L(k,oe(x(w),x(T),x(D)));let e=ie(x(w),x(T),x(D));L(b,e.h),L(S,e.s),L(C,e.v);let t={r:x(w),g:x(T),b:x(D),a:1};s()(t),requestAnimationFrame(()=>{x(p)&&x(d)&&H()})}function B(e){let t=document.createElement(`canvas`);t.width=e,t.height=e;let n=t.getContext(`2d`),r=e/2,i=r-2,a=i-9,o=n.createImageData(e,e),s=o.data;for(let t=0;t<e;t++)for(let n=0;n<e;n++){let o=n-r,c=t-r,l=Math.sqrt(o*o+c*c);if(l<=i&&l>a){let r=ae((Math.atan2(c,o)*180/Math.PI+90+360)%360,1,1),i=(t*e+n)*4;s[i]=Math.round(r.r*255),s[i+1]=Math.round(r.g*255),s[i+2]=Math.round(r.b*255),s[i+3]=255}}return n.putImageData(o,0,0),t}function ce(e,t,n){let r=document.createElement(`canvas`);r.width=e,r.height=e;let i=r.getContext(`2d`),a=e/2,o=a-2-9,s=i.createImageData(e,e),c=s.data;for(let r=0;r<e;r++)for(let i=0;i<e;i++){let s=i-a,l=r-a,u=Math.sqrt(s*s+l*l);if(u<=o){let a=(Math.atan2(l,s)*180/Math.PI+90+360)%360,d=(r*e+i)*4;if(n===`rgb`){let e=a/360,t=0,n=0,r=0;if(e<1/3){let i=e*3;t=1-i,n=i,r=0}else if(e<2/3){let i=(e-1/3)*3;t=0,n=1-i,r=i}else{let i=(e-2/3)*3;t=i,n=0,r=1-i}let i=u/o,s=1-i;t*=s,n*=s,r=r*s+i;let l=u/o;t=t*l+(1-l),n=n*l+(1-l),r=r*l+(1-l),c[d]=Math.round(t*255),c[d+1]=Math.round(n*255),c[d+2]=Math.round(r*255),c[d+3]=255}else{let e=ae(a,u/o,t);c[d]=Math.round(e.r*255),c[d+1]=Math.round(e.g*255),c[d+2]=Math.round(e.b*255),c[d+3]=255}}}return i.putImageData(s,0,0),r}function le(e,t){let n=t/2,r=n-2,i=r-9;if(x(j)===`rgb`){let t=(Math.atan2(x(T)-x(w),x(w)-x(D))*180/Math.PI+90+360)%360,a=n+Math.cos((t-90)*Math.PI/180)*(r-4.5),o=n+Math.sin((t-90)*Math.PI/180)*(r-4.5);e.strokeStyle=`#fff`,e.lineWidth=2,e.beginPath(),e.arc(a,o,4,0,Math.PI*2),e.stroke(),e.strokeStyle=`#000`,e.lineWidth=1,e.beginPath(),e.arc(a,o,5,0,Math.PI*2),e.stroke();let s=Math.sqrt(x(w)*x(w)+x(T)*x(T)+x(D)*x(D))/Math.sqrt(3),c=n+Math.cos((t-90)*Math.PI/180)*(s*i),l=n+Math.sin((t-90)*Math.PI/180)*(s*i);e.strokeStyle=`#fff`,e.lineWidth=2,e.beginPath(),e.arc(c,l,6,0,Math.PI*2),e.stroke(),e.strokeStyle=`#000`,e.lineWidth=1,e.beginPath(),e.arc(c,l,7,0,Math.PI*2),e.stroke()}else{let t=n+Math.cos((x(b)-90)*Math.PI/180)*(r-4.5),a=n+Math.sin((x(b)-90)*Math.PI/180)*(r-4.5);e.strokeStyle=`#fff`,e.lineWidth=2,e.beginPath(),e.arc(t,a,4,0,Math.PI*2),e.stroke(),e.strokeStyle=`#000`,e.lineWidth=1,e.beginPath(),e.arc(t,a,5,0,Math.PI*2),e.stroke();let o=n+Math.cos((x(b)-90)*Math.PI/180)*(x(S)*i),s=n+Math.sin((x(b)-90)*Math.PI/180)*(x(S)*i);e.strokeStyle=`#fff`,e.lineWidth=2,e.beginPath(),e.arc(o,s,6,0,Math.PI*2),e.stroke(),e.strokeStyle=`#000`,e.lineWidth=1,e.beginPath(),e.arc(o,s,7,0,Math.PI*2),e.stroke()}}function H(){if(!x(p)||!x(d))return;let e=x(d).width;(!m||m.width!==e)&&(m=B(e)),(!g||g.width!==e||_!==x(C)||y!==x(j))&&(g=ce(e,x(C),x(j)),_=x(C),y=x(j)),x(p).clearRect(0,0,e,e),x(p).drawImage(g,0,0),x(p).drawImage(m,0,0),le(x(p),e)}function U(e){if(e.stopPropagation(),!x(d))return;let t=x(d).getBoundingClientRect(),n=x(d).width/t.width,r=x(d).height/t.height,i=(e.clientX-t.left)*n,a=(e.clientY-t.top)*r,o=x(d).width/2,s=i-o,c=a-o,l=Math.sqrt(s*s+c*c),u=o-2,f=u-9,p=(Math.atan2(c,s)*180/Math.PI+90+360)%360;if(x(j)===`rgb`){if(l<=u&&l>f){let e=p/360,t=0,n=0,r=0;if(e<1/3){let i=e*3;t=1-i,n=i,r=0}else if(e<2/3){let i=(e-1/3)*3;t=0,n=1-i,r=i}else{let i=(e-2/3)*3;t=i,n=0,r=1-i}L(w,t),L(T,n),L(D,r),se()}else if(l<=f){let e=p/360,t=0,n=0,r=0;if(e<1/3){let i=e*3;t=1-i,n=i,r=0}else if(e<2/3){let i=(e-1/3)*3;t=0,n=1-i,r=i}else{let i=(e-2/3)*3;t=i,n=0,r=1-i}let i=l/f,a=1-i;t*=a,n*=a,r=r*a+i;let o=l/f;t=t*o+(1-o),n=n*o+(1-o),r=r*o+(1-o),L(w,Math.max(0,Math.min(1,t))),L(T,Math.max(0,Math.min(1,n))),L(D,Math.max(0,Math.min(1,r))),se()}}else l<=u&&l>f?(L(b,p),z()):l<=f&&(L(b,p),L(S,Math.min(1,l/f)),z())}function de(e,t){let n=parseFloat(t.target.value)/255;e===`r`&&L(w,Math.max(0,Math.min(1,n))),e===`g`&&L(T,Math.max(0,Math.min(1,n))),e===`b`&&L(D,Math.max(0,Math.min(1,n))),se()}function fe(e,t){let n=parseFloat(t.target.value);e===`h`&&L(b,Math.max(0,Math.min(360,n))),e===`s`&&L(S,Math.max(0,Math.min(1,n/100))),e===`v`&&L(C,Math.max(0,Math.min(1,n/100))),z()}function pe(e){let t=e.target.value;if(/^#([0-9A-F]{3}|[0-9A-F]{6})$/i.test(t)){let e=ll(t);R(e),s()(e)}}function me(e){L(ne,x(k));let t=ll(e);R(t),s()(t)}function W(){let e=x(ne);L(ne,x(k));let t=ll(e);R(t),s()(t)}function _e(e){x(u)&&!x(u).contains(e.target)&&(L(c,!1),Qy.set(null))}ye(()=>(n().value&&R(n().value),l=Qy.subscribe(e=>{e!==i()&&x(c)&&L(c,!1)}),setTimeout(()=>{x(d)&&(L(p,x(d).getContext(`2d`)),x(p)&&H())},0),document.addEventListener(`click`,_e),()=>{l&&l(),document.removeEventListener(`click`,_e)}));let ve=Y(null);J(()=>(x(c),x(d),x(ve),x(p)),()=>{x(c)&&x(d)&&(x(ve)&&clearTimeout(x(ve)),x(p)||L(p,x(d).getContext(`2d`)),x(p)&&L(ve,setTimeout(()=>{x(d)&&x(p)&&H()},50)))}),J(()=>(A(n()),x(k)),()=>{if(n().value){let e=ll(n().value);dl(e)!==x(k)&&R(e)}}),J(()=>(x(j),x(p),x(d)),()=>{x(j)&&x(p)&&x(d)&&H()}),he(),ue();var q=rb(),xe=M(q),Se=P(xe,2),Ce=e=>{var n=nb(),s=M(n),c=M(s);let l;var m=P(c,2);let g;o(s);var _=P(s,2),y=M(_),ee=M(y);X(ee,`width`,180),X(ee,`height`,180),ge(ee,e=>L(d,e),()=>x(d)),o(y);var A=P(y,2),ie=M(A),ae=e=>{var t=$y(),n=G(t),a=M(n),s=P(a,2);re(s);var c=P(s,2);re(c),o(n);var l=P(n,2),u=M(l),d=P(u,2);re(d);var f=P(d,2);re(f),o(l);var p=P(l,2),m=M(p),h=P(m,2);re(h);var g=P(h,2);re(g),o(p),K((e,t,n,o,l,p)=>{X(a,`for`,`${i()}-h`),X(s,`id`,`${i()}-h`),r(s,e),r(c,t),X(u,`for`,`${i()}-s`),X(d,`id`,`${i()}-s`),r(d,n),r(f,o),X(m,`for`,`${i()}-v`),X(h,`id`,`${i()}-v`),r(h,l),r(g,p)},[()=>(x(b),F(()=>Math.round(x(b)))),()=>(x(b),F(()=>Math.round(x(b)))),()=>(x(S),F(()=>Math.round(x(S)*100))),()=>(x(S),F(()=>Math.round(x(S)*100))),()=>(x(C),F(()=>Math.round(x(C)*100))),()=>(x(C),F(()=>Math.round(x(C)*100)))]),O(`input`,s,e=>fe(`h`,e)),O(`input`,c,e=>fe(`h`,e)),O(`input`,d,e=>fe(`s`,e)),O(`input`,f,e=>fe(`s`,e)),O(`input`,h,e=>fe(`v`,e)),O(`input`,g,e=>fe(`v`,e)),E(e,t)},oe=e=>{var t=eb(),n=G(t),a=M(n),s=P(a,2);re(s);var c=P(s,2);re(c),o(n);var l=P(n,2),u=M(l),d=P(u,2);re(d);var f=P(d,2);re(f),o(l);var p=P(l,2),m=M(p),h=P(m,2);re(h);var g=P(h,2);re(g),o(p),K((e,t,n,o,l,p)=>{X(a,`for`,`${i()}-r`),X(s,`id`,`${i()}-r`),r(s,e),r(c,t),X(u,`for`,`${i()}-g`),X(d,`id`,`${i()}-g`),r(d,n),r(f,o),X(m,`for`,`${i()}-b`),X(h,`id`,`${i()}-b`),r(h,l),r(g,p)},[()=>(x(w),F(()=>Math.round(x(w)*255))),()=>(x(w),F(()=>Math.round(x(w)*255))),()=>(x(T),F(()=>Math.round(x(T)*255))),()=>(x(T),F(()=>Math.round(x(T)*255))),()=>(x(D),F(()=>Math.round(x(D)*255))),()=>(x(D),F(()=>Math.round(x(D)*255)))]),O(`input`,s,e=>de(`r`,e)),O(`input`,c,e=>de(`r`,e)),O(`input`,d,e=>de(`g`,e)),O(`input`,f,e=>de(`g`,e)),O(`input`,h,e=>de(`b`,e)),O(`input`,g,e=>de(`b`,e)),E(e,t)};Z(ie,e=>{x(j)===`hsv`?e(ae):e(oe,-1)});var R=P(ie,2),z=M(R),se=P(z,2);re(se),o(R),o(A);var B=P(A,2),V=M(B),ce=M(V),le=P(ce,2);o(V);var ue=P(V,2);f(ue,5,()=>N,h,(e,t)=>{var n=te(),r=G(n);f(r,1,()=>x(t),h,(e,t)=>{var n=tb();K(()=>{a(n,`background-color: ${x(t)??``};`),X(n,`aria-label`,`Choose ${x(t)}`)}),O(`click`,n,()=>me(x(t))),E(e,n)}),E(e,n)}),o(ue),o(B),o(_),o(n),ge(n,e=>L(u,e),()=>x(u)),K(()=>{l=v(c,1,`mode-button svelte-1hwwwsb`,null,l,{active:x(j)===`hsv`}),g=v(m,1,`mode-button svelte-1hwwwsb`,null,g,{active:x(j)===`rgb`}),X(z,`for`,`${i()}-hex`),X(se,`id`,`${i()}-hex`),r(se,x(k)),a(ce,`background-color: ${x(ne)??``};`),a(le,`background-color: ${x(k)??``};`)}),O(`click`,c,()=>{L(j,`hsv`),x(p)&&x(d)&&H()}),O(`click`,m,()=>{L(j,`rgb`),x(p)&&x(d)&&H()}),O(`click`,ee,I(U)),O(`mousedown`,ee,I(e=>{U(e)})),O(`mousemove`,ee,I(e=>{e.buttons===1&&U(e)})),O(`input`,se,pe),O(`click`,ce,W),O(`click`,n,I(function(e){be.call(this,t,e)})),O(`keydown`,n,I(function(e){be.call(this,t,e)})),E(e,n)};Z(Se,e=>{x(c)&&e(Ce)}),o(q),K((e,t)=>{a(xe,`background-color: ${e??``};`),xe.disabled=t},[()=>(A(ul),x(w),x(T),x(D),F(()=>ul({r:x(w),g:x(T),b:x(D),a:1}))),()=>(A(n()),F(()=>typeof n().disabled==`function`?n().disabled():n().disabled))]),O(`click`,xe,I(()=>{x(c)?(L(c,!1),Qy.set(null)):(Qy.set(i()),L(c,!0),x(d)&&!x(p)&&L(p,x(d).getContext(`2d`)))})),E(e,q),Ee()}var ab=u(`<button class="clear-button svelte-1lbwdc6" title="Clear file">×</button>`),ob=u(`<div class="file-info svelte-1lbwdc6"><span class="file-name svelte-1lbwdc6"> </span></div>`),sb=u(`<div class="preview-container svelte-1lbwdc6"><img alt="Preview" class="preview-image svelte-1lbwdc6"/></div>`),cb=u(`<div class="preview-container svelte-1lbwdc6"><video class="preview-video svelte-1lbwdc6" controls=""></video></div>`,2),lb=u(`<span class="drop-hint svelte-1lbwdc6">Drop file here</span>`),ub=u(`<div class="file-input-container svelte-1lbwdc6"><div class="file-controls svelte-1lbwdc6"><input type="file" style="display: none;"/> <button class="file-button svelte-1lbwdc6">Choose File</button> <!></div> <!> <!> <div role="region" aria-label="File drop zone"><!></div></div>`);function db(e,t){ee(t,!1);let n=Y(),r=Y(),i=Y(),a=V(t,`prop`,8),s=V(t,`id`,8),c=V(t,`onValueChange`,8),l=Y(),u=Y(null),d=Y(`none`);function f(e){let t=e.target.files?.[0];t&&((t.type.startsWith(`image/`)||t.type.startsWith(`video/`))&&(L(u,URL.createObjectURL(t)),L(d,t.type.startsWith(`image/`)?`image`:`video`)),c()(t.name))}function p(){x(u)&&x(u).startsWith(`blob:`)&&URL.revokeObjectURL(x(u)),L(u,null),L(d,`none`),c()(``),x(l)&&oe(l,x(l).value=``)}function m(e){e.preventDefault();let t=e.dataTransfer?.files[0];t&&((t.type.startsWith(`image/`)||t.type.startsWith(`video/`))&&(L(u,URL.createObjectURL(t)),L(d,t.type.startsWith(`image/`)?`image`:`video`)),c()(t.name))}function h(e){e.preventDefault()}J(()=>A(a()),()=>{L(n,typeof a().value==`string`?a().value:``)}),J(()=>A(a()),()=>{L(r,a().params?.accept||`*/*`)}),J(()=>A(a()),()=>{L(i,typeof a().disabled==`function`?a().disabled():a().disabled)}),J(()=>x(n),()=>{if(x(n)){let e=/\.(jpg|jpeg|png|gif|webp|svg)$/i.test(x(n))||x(n).startsWith(`data:image/`),t=/\.(mp4|webm|mov)$/i.test(x(n))||x(n).startsWith(`data:video/`);e?(L(d,`image`),L(u,(x(n).startsWith(`data:`)||x(n).startsWith(`http`),x(n)))):t?(L(d,`video`),L(u,(x(n).startsWith(`data:`)||x(n).startsWith(`http`),x(n)))):(L(d,`none`),L(u,null))}else L(d,`none`),L(u,null)}),he(),ue();var g=ub(),_=M(g),y=M(_);ge(y,e=>L(l,e),()=>x(l));var b=P(y,2),S=P(b,2),C=e=>{var t=ab();K(()=>t.disabled=x(i)),O(`click`,t,p),E(e,t)};Z(S,e=>{x(n)&&e(C)}),o(_);var w=P(_,2),T=e=>{var t=ob(),r=M(t),i=q(r,!0);o(t),K(()=>{X(r,`title`,x(n)),D(i,x(n))}),E(e,t)};Z(w,e=>{x(n)&&e(T)});var te=P(w,2),k=e=>{var t=sb(),n=q(t);K(()=>X(n,`src`,x(u))),E(e,t)},ne=e=>{var t=cb(),n=q(t);K(()=>X(n,`src`,x(u))),E(e,t)};Z(te,e=>{x(d)===`image`&&x(u)?e(k):x(d)===`video`&&x(u)&&e(ne,1)});var j=P(te,2);let re;var N=M(j),ie=e=>{var t=lb();E(e,t)};Z(N,e=>{x(n)||e(ie)}),o(j),o(g),K(()=>{X(y,`id`,s()),X(y,`accept`,x(r)),y.disabled=x(i),b.disabled=x(i),re=v(j,1,`drop-zone svelte-1lbwdc6`,null,re,{"has-preview":x(d)!==`none`})}),O(`change`,y,f),O(`click`,b,()=>x(l)?.click()),O(`drop`,j,m),O(`dragover`,j,h),E(e,g),Ee()}var fb=u(`<div class="search-box svelte-bczi6w"><input type="text" class="search-input svelte-bczi6w" placeholder="Search..."/></div>`),pb=u(`<div class="option-group-header svelte-bczi6w"> </div>`),mb=u(`<button> </button>`),hb=u(`<!> <!>`,1),gb=u(`<div class="no-results svelte-bczi6w">No results</div>`),_b=u(`<div class="dropdown-menu svelte-bczi6w"><!> <div class="options-list svelte-bczi6w"><!> <!></div></div>`),vb=u(`<div class="select-input-container svelte-bczi6w"><button><span class="select-value svelte-bczi6w"></span> <svg class="dropdown-icon svelte-bczi6w" width="12" height="12" viewBox="0 0 12 12" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M3 4.5L6 7.5L9 4.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></button> <!></div>`);function yb(e,t){ee(t,!1);let n=Y(),r=Y(),i=Y(),a=Y(),s=Y(),l=Y(),u=V(t,`prop`,8),d=V(t,`id`,8,void 0),p=V(t,`onValueChange`,8),m=Y(!1),g=Y(``),_=Y();function y(e){let t=typeof e==`object`&&`value`in e?e.value:e;p()(t),L(m,!1),L(g,``)}function b(e){x(_)&&!x(_).contains(e.target)&&(L(m,!1),L(g,``))}function S(e){e.key===`Escape`&&(L(m,!1),L(g,``))}J(()=>A(u()),()=>{L(n,u().value)}),J(()=>A(u()),()=>{L(r,u().params?.options||[])}),J(()=>A(u()),()=>{L(i,typeof u().disabled==`function`?u().disabled():u().disabled)}),J(()=>(x(g),x(r)),()=>{L(a,x(g)?x(r).filter(e=>(typeof e==`object`&&`label`in e?e.label:String(e)).toLowerCase().includes(x(g).toLowerCase())):x(r))}),J(()=>x(a),()=>{L(s,(()=>{let e=new Map,t=[];for(let n of x(a))typeof n==`object`&&`group`in n&&n.group?(e.has(n.group)||e.set(n.group,[]),e.get(n.group).push(n)):t.push(n);let n=Array.from(e.entries()).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>({group:e,options:t.sort((e,t)=>{let n=typeof e==`object`&&`label`in e?e.label:String(e),r=typeof t==`object`&&`label`in t?t.label:String(t);return n.localeCompare(r)})}));return t.length>0&&n.push({group:``,options:t}),n})())}),J(()=>x(s),()=>{L(l,x(s).some(e=>e.group!==``))}),he(),ue();var C=vb();O(`click`,ce,b),O(`keydown`,ce,S);var w=M(C);let T;var k=M(w);f(k,5,()=>x(r),h,(e,t)=>{let r=pe(()=>(x(t),F(()=>typeof x(t)==`object`&&`value`in x(t)?x(t).value:x(t)))),i=pe(()=>(x(t),F(()=>typeof x(t)==`object`&&`label`in x(t)?x(t).label:String(x(t)))));var a=te(),o=G(a),s=e=>{var t=ve();K(()=>D(t,x(i))),E(e,t)},c=B(()=>(A(x(r)),x(n),F(()=>String(x(r))===String(x(n)))));Z(o,e=>{x(c)&&e(s)}),E(e,a)}),o(k),c(2),o(w);var ne=P(w,2),j=e=>{var i=_b(),c=M(i),u=e=>{var n=fb(),r=M(n);re(r),o(n),Ce(r,()=>x(g),e=>L(g,e)),O(`click`,r,I(function(e){be.call(this,t,e)})),E(e,n)};Z(c,e=>{x(r),F(()=>x(r).length>5)&&e(u)});var d=P(c,2),p=M(d),m=e=>{var t=te(),r=G(t);f(r,1,()=>x(s),h,(e,t)=>{let r=()=>x(t).group,i=()=>x(t).options;var a=hb(),o=G(a),s=e=>{var t=pb(),n=q(t,!0);K(()=>D(n,r())),E(e,t)};Z(o,e=>{r()&&e(s)});var c=P(o,2);f(c,1,i,h,(e,t)=>{let i=pe(()=>(x(t),F(()=>typeof x(t)==`object`&&`value`in x(t)?x(t).value:x(t)))),a=pe(()=>(x(t),F(()=>typeof x(t)==`object`&&`label`in x(t)?x(t).label:String(x(t))))),o=pe(()=>(x(t),F(()=>typeof x(t)==`object`&&`disabled`in x(t)&&x(t).disabled)));var s=mb();let c;var l=q(s,!0);K(e=>{c=v(s,1,`option-item svelte-bczi6w`,null,c,{selected:e,grouped:!!r()}),s.disabled=x(o),D(l,x(a))},[()=>String(x(i))===String(x(n))]),O(`click`,s,()=>y(x(t))),E(e,s)}),E(e,a)}),E(e,t)},_=e=>{var t=te(),r=G(t);f(r,1,()=>x(a),h,(e,t)=>{let r=pe(()=>(x(t),F(()=>typeof x(t)==`object`&&`value`in x(t)?x(t).value:x(t)))),i=pe(()=>(x(t),F(()=>typeof x(t)==`object`&&`label`in x(t)?x(t).label:String(x(t))))),a=pe(()=>(x(t),F(()=>typeof x(t)==`object`&&`disabled`in x(t)&&x(t).disabled)));var o=mb();let s;var c=q(o,!0);K(e=>{s=v(o,1,`option-item svelte-bczi6w`,null,s,{selected:e}),o.disabled=x(a),D(c,x(i))},[()=>String(x(r))===String(x(n))]),O(`click`,o,()=>y(x(t))),E(e,o)}),E(e,t)};Z(p,e=>{x(l)?e(m):e(_,-1)});var b=P(p,2),S=e=>{var t=gb();E(e,t)};Z(b,e=>{x(a),F(()=>x(a).length===0)&&e(S)}),o(d),o(i),E(e,i)};Z(ne,e=>{x(m),x(r),F(()=>x(m)&&x(r).length>0)&&e(j)}),o(C),ge(C,e=>L(_,e),()=>x(_)),K(()=>{X(w,`id`,d()),T=v(w,1,`select-button svelte-bczi6w`,null,T,{open:x(m)}),w.disabled=x(i)}),O(`click`,w,()=>{x(i)||(L(m,!x(m)),x(m)&&L(g,``))}),E(e,C),Ee()}var bb=u(`<span class="loading-spinner svelte-17d1c14"></span>`),xb=u(`<span> </span>`),Sb=u(`<!> <!>`,1),Cb=u(`<button><!></button>`);function wb(e,t){ee(t,!1);let n=Y(),r=Y(),i=Y(),a=Y(),s=Y(),c=V(t,`prop`,8),l=V(t,`id`,8),u=V(t,`onValueChange`,8),d=Y(!1);async function f(){L(d,!0);try{u()(!0)}catch(e){console.error(`[ButtonInput] Error:`,e)}finally{L(d,!1)}}J(()=>A(c()),()=>{L(n,typeof c().disabled==`function`?c().disabled():c().disabled)}),J(()=>A(c()),()=>{L(r,typeof c().value==`string`?c().value:c().displayName||`Execute`)}),J(()=>A(c()),()=>{L(i,c().params?.small??!1)}),J(()=>A(c()),()=>{L(a,c().params?.icon)}),J(()=>A(c()),()=>{L(s,c().params?.tooltip)}),he(),ue();var p=Cb();let m;var h=M(p),g=e=>{var t=bb();E(e,t)},_=e=>{var t=Sb(),n=G(t);{let e=pe(()=>x(i)?14:16);zc(n,{get name(){return x(a)},get size(){return x(e)}})}var o=P(n,2),s=e=>{var t=xb(),n=q(t,!0);K(()=>D(n,x(r))),E(e,t)};Z(o,e=>{x(r),A(c()),F(()=>x(r)&&!c().params?.iconOnly)&&e(s)}),E(e,t)},y=e=>{var t=xb(),n=q(t,!0);K(()=>D(n,x(r))),E(e,t)};Z(h,e=>{x(d)?e(g):x(a)?e(_,1):e(y,-1)}),o(p),K(()=>{X(p,`id`,l()),m=v(p,1,`button-input svelte-17d1c14`,null,m,{small:x(i),"icon-only":x(a)&&!x(r)}),p.disabled=x(n)||x(d),X(p,`title`,x(s))}),O(`click`,p,f),E(e,p),Ee()}var Tb=u(`<label class="checkbox-label svelte-16zsb4p"><input type="checkbox" class="checkbox-input svelte-16zsb4p"/> <span class="checkbox-slider svelte-16zsb4p"></span> <span class="checkbox-text svelte-16zsb4p"> </span></label>`);function Eb(e,t){ee(t,!1);let n=Y(),r=Y(),i=V(t,`prop`,8),a=V(t,`id`,8),s=V(t,`onValueChange`,8);function c(e){let t=e.target.checked;s()(t)}J(()=>A(i()),()=>{L(n,i().value===!0)}),J(()=>A(i()),()=>{L(r,typeof i().disabled==`function`?i().disabled():i().disabled)}),he(),ue();var l=Tb(),u=M(l);re(u);var d=P(u,4),f=q(d,!0);o(l),K(()=>{X(u,`id`,a()),C(u,x(n)),u.disabled=x(r),D(f,x(n)?`On`:`Off`)}),O(`change`,u,c),E(e,l),Ee()}var Db=u(`<div class="folder-content svelte-1spr549"><!></div>`),Ob=u(`<div class="folder-group svelte-1spr549"><button class="folder-header svelte-1spr549"><svg width="10" height="10" viewBox="0 0 10 10" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M2 3L5 1L8 3" stroke-linecap="round" stroke-linejoin="round"></path></svg> <span class="folder-name svelte-1spr549"> </span></button> <!></div>`);function kb(e,t){ee(t,!1);let n=V(t,`folderName`,8),r=V(t,`isExpanded`,8,!0),i=xe();function a(){i(`toggle`)}ue();var s=Ob(),c=M(s),l=M(c);let u;var d=P(l,2),f=q(d,!0);o(c);var p=P(c,2),m=e=>{var n=Db(),r=M(n);b(r,t,`default`,{},null),o(n),E(e,n)};Z(p,e=>{r()&&e(m)}),o(s),K(()=>{u=v(l,0,`folder-icon svelte-1spr549`,null,u,{expanded:r()}),D(f,n())}),O(`click`,c,a),E(e,s),Ee()}var Ab=u(`<button type="button" class="color-swatch svelte-kla7jy"><div class="swatch-color svelte-kla7jy"></div></button>`),jb=u(`<div class="ramp-handle svelte-kla7jy" role="slider" tabindex="0" aria-label="Color stop position" aria-valuemin="0" aria-valuemax="1"></div>`),Mb=u(`<option> </option>`),Nb=u(`<div class="table-row svelte-kla7jy"><input type="number" class="position-input svelte-kla7jy" min="0" max="1" step="0.001"/> <button type="button" class="color-cell svelte-kla7jy"></button> <select class="interpolation-select svelte-kla7jy"></select> <div class="table-row-actions svelte-kla7jy"><button class="icon-button svelte-kla7jy" title="Add Point">+</button> <button class="icon-button delete-button svelte-kla7jy" title="Delete Point">×</button></div></div>`),Pb=u(`<div class="color-picker-overlay svelte-kla7jy"><div class="color-picker-container svelte-kla7jy" role="dialog" aria-modal="true" aria-label="Edit color stop"><!></div></div>`),Fb=u(`<div class="color-ramp-editor svelte-kla7jy"><div class="ramp-header svelte-kla7jy"><span class="ramp-label svelte-kla7jy"> </span> <label class="auto-update-label svelte-kla7jy"><input type="checkbox"/> Auto-update</label></div> <div class="ramp-visualization svelte-kla7jy"><canvas class="ramp-canvas svelte-kla7jy"></canvas> <div class="color-swatches svelte-kla7jy"></div> <div class="ramp-handles svelte-kla7jy"></div></div> <div class="ramp-points-table svelte-kla7jy"><div class="table-header svelte-kla7jy"><span>Position</span> <span>Color</span> <span>Interp.</span> <span class="table-actions svelte-kla7jy"><button class="icon-button svelte-kla7jy" title="Add Point">+</button></span></div> <!></div> <!></div>`);function Ib(e,t){ee(t,!1);let n=V(t,`prop`,8),i=V(t,`id`,8),l=V(t,`onValueChange`,8),u=Y([]),d=Y(!0),p=Y(),m=null,g=Y(null),_=Y(0),v=Y(null),y=Y(!1);function b(e){x(y)&&e.key===`Escape`&&L(y,!1)}let S=[{value:`linear`,label:`Linear`},{value:`constant`,label:`Constant`},{value:`smooth`,label:`Smooth`}];function C(){Array.isArray(n().value)&&n().value.length>0?L(u,n().value.map(e=>({position:e.position,color:(e.color,ll(e.color)),interpolation:e.interpolation||`linear`})).sort((e,t)=>e.position-t.position)):L(u,[{position:0,color:{r:0,g:0,b:0},interpolation:`linear`},{position:1,color:{r:1,g:1,b:1},interpolation:`linear`}]),w()}function w(){if(!m||!x(p))return;let e=x(p).width,t=x(p).height;m.clearRect(0,0,e,t);let n=m.createLinearGradient(0,0,e,0),r=[...x(u)].sort((e,t)=>e.position-t.position);for(let e of r)n.addColorStop(e.position,ul(e.color));m.fillStyle=n,m.fillRect(0,0,e,t);for(let t=0;t<r.length;t++){let n=r[t],i=n.position*e;m.fillStyle=ul(n.color),m.fillRect(i-6,-14,12,12),m.strokeStyle=`#ffffff`,m.lineWidth=1,m.strokeRect(i-6,-14,12,12)}let i=t+2;for(let t=0;t<r.length;t++){let n=r[t].position*e;m.fillStyle=`#888888`,m.beginPath(),m.moveTo(n,i),m.lineTo(n-4,i+6),m.lineTo(n+4,i+6),m.closePath(),m.fill()}}function te(e){let t=x(p).getBoundingClientRect(),n=e-t.left;Math.max(0,Math.min(1,n/t.width));let r=[...x(u)].sort((e,t)=>e.position-t.position);for(let e=0;e<r.length;e++){let i=r[e],a=i.position*t.width;if(Math.abs(n-a)<10)return x(u).indexOf(i)}return null}function k(e){if(!x(p))return;let t=x(p).getBoundingClientRect(),n=e.clientX-t.left,r=Math.max(0,Math.min(1,n/t.width)),i=te(e.clientX);i===null?e.button===0&&N(r):(L(g,i),L(_,e.clientX))}function ne(e){if(x(g)!==null&&x(p)){let t=x(p).getBoundingClientRect(),n=e.clientX-t.left,r=Math.max(0,Math.min(1,n/t.width));oe(u,x(u)[x(g)].position=r),x(u).sort((e,t)=>e.position-t.position),w(),x(d)&&l()([...x(u)])}}function j(){x(g)!==null&&(L(g,null),x(d)||l()([...x(u)]))}function N(e){let t=[...x(u)].sort((e,t)=>e.position-t.position),n={r:.5,g:.5,b:.5};for(let r=0;r<t.length-1;r++)if(e>=t[r].position&&e<=t[r+1].position){let i=(e-t[r].position)/(t[r+1].position-t[r].position),a=t[r].color,o=t[r+1].color;n={r:a.r+(o.r-a.r)*i,g:a.g+(o.g-a.g)*i,b:a.b+(o.b-a.b)*i};break}x(u).push({position:e,color:n,interpolation:`linear`}),x(u).sort((e,t)=>e.position-t.position),w(),l()([...x(u)])}function ie(e){x(u).length<=2||(x(u).splice(e,1),w(),l()([...x(u)]))}function z(e,t){oe(u,x(u)[e].color=t),w(),l()([...x(u)])}function se(e,t){oe(u,x(u)[e].interpolation=t),w(),l()([...x(u)])}function B(e,t){oe(u,x(u)[e].position=Math.max(0,Math.min(1,t))),x(u).sort((e,t)=>e.position-t.position),w(),l()([...x(u)])}function le(e,t){let n=t.key===`ArrowLeft`?-.01:t.key===`ArrowRight`?.01:0;n&&(t.preventDefault(),B(e,x(u)[e].position+n))}ye(()=>(C(),x(p)&&(m=x(p).getContext(`2d`),oe(p,x(p).width=x(p).offsetWidth),oe(p,x(p).height=20),w()),window.addEventListener(`mousemove`,ne),window.addEventListener(`mouseup`,j),()=>{window.removeEventListener(`mousemove`,ne),window.removeEventListener(`mouseup`,j)})),J(()=>A(n()),()=>{n().value&&C()}),he(),ue();var H=Fb();O(`keydown`,ce,b);var U=M(H),de=M(U),fe=q(de,!0),me=P(de,2),W=M(me);re(W),c(),o(me),o(U);var G=P(U,2),_e=M(G);ge(_e,e=>L(p,e),()=>x(p));var ve=P(_e,2);f(ve,5,()=>(x(u),F(()=>x(u).sort((e,t)=>e.position-t.position))),h,(e,t)=>{let n=pe(()=>(x(u),x(t),F(()=>x(u).indexOf(x(t)))));var r=Ab(),i=q(r);K(e=>{a(r,`left: ${x(t),F(()=>x(t).position*100)??``}%`),X(r,`aria-label`,e),a(i,`background-color: ${x(t),F(()=>x(t).color)??``}`)},[()=>(x(t),F(()=>`Edit color stop at ${Math.round(x(t).position*100)}%`))]),O(`click`,r,()=>{L(v,x(n)),L(y,!0)}),E(e,r)}),o(ve);var be=P(ve,2);f(be,5,()=>(x(u),F(()=>x(u).sort((e,t)=>e.position-t.position))),h,(e,t)=>{let n=pe(()=>(x(u),x(t),F(()=>x(u).indexOf(x(t)))));var r=jb();K(()=>{a(r,`left: ${x(t),F(()=>x(t).position*100)??``}%`),X(r,`aria-valuenow`,(x(t),F(()=>x(t).position)))}),O(`keydown`,r,e=>le(x(n),e)),O(`mousedown`,r,I(e=>{L(g,x(n)),L(_,e.clientX)})),E(e,r)}),o(be),o(G);var xe=P(G,2),Ce=M(xe),we=P(M(Ce),6),Te=q(we);o(Ce);var De=P(Ce,2);f(De,1,()=>(x(u),F(()=>x(u).sort((e,t)=>e.position-t.position))),h,(e,t)=>{let n=pe(()=>(x(u),x(t),F(()=>x(u).indexOf(x(t)))));var i=Nb(),c=M(i);re(c);var l=P(c,2),d=P(l,2);f(d,5,()=>S,h,(e,t)=>{var n=Mb(),r=q(n,!0),i={};K(()=>{D(r,(x(t),F(()=>x(t).label))),i!==(i=(x(t),F(()=>x(t).value)))&&(n.value=(n.__value=i)??``)}),E(e,n)}),o(d);var p;T(d);var m=P(d,2),g=M(m),_=P(g,2);o(m),o(i),K((e,n)=>{r(c,e),a(l,`background-color: ${x(t),F(()=>x(t).color)??``}`),X(l,`aria-label`,n),p!==(p=(x(t),F(()=>x(t).interpolation)))&&(d.value=(d.__value=p)??``,s(d,p)),_.disabled=(x(u),F(()=>x(u).length<=2))},[()=>(x(t),F(()=>x(t).position.toFixed(3))),()=>(x(t),F(()=>`Edit color stop at ${Math.round(x(t).position*100)}%`))]),O(`input`,c,e=>{let t=e.target;if(t instanceof HTMLInputElement){let e=parseFloat(t.value);B(x(n),e)}}),O(`click`,l,()=>{L(v,x(n)),L(y,!0)}),O(`change`,d,e=>{let t=e.target;t instanceof HTMLSelectElement&&se(x(n),t.value)}),O(`click`,g,()=>N((x(t).position+(x(u)[x(n)+1]?.position||1))/2)),O(`click`,_,()=>ie(x(n))),E(e,i)}),o(xe);var Oe=P(xe,2),ke=e=>{var t=Pb(),n=M(t),r=M(n);{let e=pe(()=>(x(u),x(v),F(()=>({value:x(u)[x(v)].color,type:`color`})))),t=pe(()=>`${i()}-color-picker`);ib(r,{get prop(){return x(e)},get id(){return x(t)},onValueChange:e=>{x(v)!==null&&z(x(v),e),L(y,!1)}})}o(n),o(t),O(`click`,t,ae(()=>L(y,!1))),E(e,t)};Z(Oe,e=>{x(y)&&x(v)!==null&&e(ke)}),o(H),K(()=>D(fe,(A(n()),F(()=>n().displayName||`Ramp`)))),R(W,()=>x(d),e=>L(d,e)),O(`mousedown`,_e,k),O(`contextmenu`,_e,Se(e=>{if(te(e.clientX)===null){let t=x(p).getBoundingClientRect(),n=e.clientX-t.left;N(Math.max(0,Math.min(1,n/t.width)))}})),O(`click`,Te,()=>N(.5)),E(e,H),Ee()}var Lb=class{constructor(){this._graph=null,this._pwd=null,this._time=new xu,this._selectedNodes=new Set}setGraph(e){this._graph=e,Tu.setGraph(e)}getGraph(){return this._graph}node(e){return this._graph?e.startsWith(`/`)?this.resolveAbsolutePath(e):this._pwd?this._pwd.node(e):this.resolveAbsolutePath(`/`+e):null}parm(e){let t=e.lastIndexOf(`/`);if(t===-1)return null;let n=e.substring(0,t)||`/`,r=e.substring(t+1);return this.node(n)?.parm(r)??null}root(){return null}pwd(){return this._pwd}setPwd(e){this._pwd=e}cd(e){if(e===`/`){this._pwd=null;return}let t=this.node(e);t&&t.isNetwork()&&(this._pwd=t)}selectedNodes(){return this._graph?Array.from(this._selectedNodes).map(e=>this._graph.getNode(e)).filter(e=>e!==null):[]}selectedNodeIds(){return Array.from(this._selectedNodes)}setSelection(e){this._selectedNodes=new Set(e),this.onSelectionChange?.(e)}clearAllSelected(){this._selectedNodes.clear(),this.onSelectionChange?.([])}frame(){return this._time.frame}fframe(){return this._time.frameFraction}time(){return this._time.time}fps(){return this._time.fps}setFrame(e){this._time.setFrame(e),Tu.setFrame(this._time.frameFraction)}setTime(e){this._time.setTime(e),Tu.setFrame(this._time.frameFraction)}setFps(e){this._time.setFps(e),Tu.setFps(this._time.fps)}clock(){return{setFrame:e=>this.setFrame(e),markTimeDependentDirty:()=>this.markTimeDependentDirty(),getFrame:()=>this.frame(),getFrameFraction:()=>this.fframe(),getTime:()=>this.time(),getFps:()=>this.fps()}}ch(e){return this.parm(e)?.evalAsFloat()??0}chs(e){return this.parm(e)?.evalAsString()??``}chv(e){let t=this.parm(e)?.eval();return Array.isArray(t)?t:typeof t==`number`?[t]:[]}markTimeDependentDirty(){if(this._graph)for(let e of this._graph.nodes)e.isTimeDependent&&e.markDirty()}getTimeDependentNodes(){return this._graph?this._graph.nodes.filter(e=>e.isTimeDependent):[]}nextFrame(e=1){return this.setFrame(this.fframe()+e),this.markTimeDependentDirty(),this.fframe()}resolveAbsolutePath(e){if(!this._graph)return null;let t=e.replace(/^\//,``).split(`/`).filter(e=>e.length>0);if(t.length===0)return null;let n=null,r=this._graph.nodes.filter(e=>!e.parent);for(let e=0;e<t.length;e++){let i=t[e],a=(n?n.children():r).find(e=>e.id===i);if(!a)return null;n=a}return n}},Rb=new Lb,zb=w(Rb.fframe());function Bb(e){Rb.setFrame(e),zb.set(Rb.fframe())}var Vb=u(`<button><span class="item-type svelte-10p3942"> </span> <span class="item-label svelte-10p3942"> </span></button>`),Hb=u(`<div class="autocomplete-dropdown svelte-10p3942"></div>`),Ub=u(`<div class="expression-input-container svelte-10p3942"><input type="text" placeholder="e.g., ch('../node/value') * 2"/> <!></div>`),Wb=u(`<button class="expression-display svelte-10p3942" title="Click to edit expression"><span class="expression-code svelte-10p3942"> </span></button>`),Gb=u(`<span class="expression-error svelte-10p3942"><!></span>`),Kb=u(`<button class="evaluated-badge svelte-10p3942"> </button>`),qb=u(`<div class="expression-view svelte-10p3942"><!> <div class="expression-actions svelte-10p3942"><!> <button class="remove-expression svelte-10p3942" title="Remove expression"><!></button></div></div>`),Jb=u(`<button class="toggle-to-expression svelte-10p3942" title="Click to see expression"><!></button>`),Yb=u(`<button class="add-expression svelte-10p3942" title="Add expression"><!></button>`),Xb=u(`<div><!> <!></div>`),Zb=u(`<div><!></div>`);function Qb(e,t){ee(t,!1);let n=()=>we(zb,`$currentFrame`,r),[r,i]=ne(),a=Y(),s=Y(),c=Y(),l=Y(),u=V(t,`prop`,8),d=V(t,`propKey`,8),p=V(t,`node`,8),m=V(t,`onValueChange`,8),g=Y(`value`),_=Y(!1),y=Y(u().expression||``),S=Y(),C=Y(!1),w=Y([]),T=Y(0),te=0;function k(e){return e==null?`—`:typeof e==`number`?Number.isInteger(e)?String(e):e.toFixed(4).replace(/\.?0+$/,``):Array.isArray(e)?`[${e.map(e=>typeof e==`number`?Number.isInteger(e)?e:e.toFixed(2):e).join(`, `)}]`:typeof e==`boolean`?e?`true`:`false`:typeof e==`string`?e.length>30?e.slice(0,27)+`...`:e:typeof e==`object`&&e?`r`in e&&`g`in e&&`b`in e?`rgb(${Math.round(e.r*255)}, ${Math.round(e.g*255)}, ${Math.round(e.b*255)})`:JSON.stringify(e).slice(0,30):String(e)}function j(e,t,n){try{let n=p()?.evalParm?.(t);return n===void 0?e.value:n}catch{return e.value}}let N=[{label:`ch(path)`,value:`ch("")`,type:`func`,desc:`Get parameter as number`},{label:`chs(path)`,value:`chs("")`,type:`func`,desc:`Get parameter as string`},{label:`chv(path)`,value:`chv("")`,type:`func`,desc:`Get parameter as vector`},{label:`time`,value:`time`,type:`func`,desc:`Current time in seconds`},{label:`frame`,value:`frame`,type:`func`,desc:`Current frame number`},{label:`fps`,value:`fps`,type:`func`,desc:`Frames per second`},{label:`fit(v, oMin, oMax, nMin, nMax)`,value:`fit(, 0, 1, 0, 100)`,type:`func`,desc:`Remap value range`},{label:`clamp(v, min, max)`,value:`clamp(, 0, 1)`,type:`func`,desc:`Clamp value`},{label:`lerp(a, b, t)`,value:`lerp(0, 1, )`,type:`func`,desc:`Linear interpolation`},{label:`noise(x)`,value:`noise()`,type:`func`,desc:`Perlin noise (-1 to 1)`},{label:`random(seed)`,value:`random()`,type:`func`,desc:`Deterministic random (0-1)`},{label:`true`,value:`true`,type:`func`,desc:`Boolean true`},{label:`false`,value:`false`,type:`func`,desc:`Boolean false`},{label:`Math.sin(x)`,value:`Math.sin()`,type:`func`,desc:`Sine function`},{label:`Math.cos(x)`,value:`Math.cos()`,type:`func`,desc:`Cosine function`},{label:`Math.abs(x)`,value:`Math.abs()`,type:`func`,desc:`Absolute value`}];function ie(){x(s)&&L(g,x(g)===`expression`?`value`:`expression`)}function ae(e){e.stopPropagation(),L(_,!0),L(g,`expression`),L(y,oe(u().value)),setTimeout(()=>{x(S)?.focus(),x(S)?.select()},0)}function oe(e){return typeof e==`string`?`"${e}"`:typeof e==`boolean`?e?`true`:`false`:Array.isArray(e)?`[${e.join(`, `)}]`:typeof e==`object`&&e&&`r`in e&&`g`in e&&`b`in e?`{ r: ${e.r}, g: ${e.g}, b: ${e.b}${e.a===void 0?``:`, a: ${e.a}`} }`:String(e??``)}function R(){L(_,!0),L(y,u().expression||``),setTimeout(()=>{x(S)?.focus()},0)}function z(e){e.stopPropagation();let t=p().parm(d());t&&(t.deleteExpression(),p().markDirty(),m()?.(u().value)),L(_,!1),L(g,`value`)}function se(e){let t=e.target;L(y,t.value),te=t.selectionStart||0,B()}function B(){if(!x(a)){L(C,!1);return}let e=x(y).slice(0,te),t=e.match(/ch[sv]?\s*\(\s*['"]([^'"]*?)$/);if(t){let e=t[1];L(w,ce(e)),L(C,x(w).length>0),L(T,0)}else{let t=e.match(/(?:^|[\s(,+\-*/%])(\w*)$/);if(t&&t[1].length>0){let e=t[1].toLowerCase();L(w,N.filter(t=>t.label.toLowerCase().startsWith(e)||t.value.toLowerCase().startsWith(e)).map(e=>({label:e.label,value:e.value,type:e.type}))),L(C,x(w).length>0),L(T,0)}else L(C,!1)}}function ce(e){if(!x(a))return[];let t=[],n=e.startsWith(`/`),r=[],i=``;if(n)r=x(a).nodes.filter(e=>!e.parent),i=`/`;else if(e.startsWith(`../`))p().parent&&(r=p().parent.children().filter(e=>e!==p()),i=`../`);else if(e.startsWith(`./`)){let n=e.slice(2).toLowerCase();return Object.keys(p().props).forEach(e=>{e.toLowerCase().startsWith(n)&&t.push({label:`./${e}`,value:`./${e}`,type:`prop`})}),t}else p().parent?(r=p().parent.children().filter(e=>e!==p()),i=`../`):(r=x(a).nodes.filter(e=>!e.parent&&e!==p()),i=`/`);let o=(n?e.slice(1):e.startsWith(`../`)?e.slice(3):e).split(`/`),s=o[o.length-1].toLowerCase(),c=r;for(let e=0;e<o.length-1;e++){let n=o[e],r=c.find(e=>e.id===n);if(r&&r.isNetwork())c=r.children(),i+=n+`/`;else return t}return c.forEach(e=>{e.id.toLowerCase().startsWith(s)&&(t.push({label:`${i}${e.id}`,value:`${i}${e.id}`,type:`node`}),Object.keys(e.props).forEach(n=>{t.push({label:`${i}${e.id}/${n}`,value:`${i}${e.id}/${n}`,type:`prop`})}))}),t.slice(0,10)}function le(e){let t=x(y).slice(0,te),n=x(y).slice(te),r=t.match(/ch[sv]?\s*\(\s*['"]([^'"]*?)$/);if(r){let i=t.slice(0,t.length-r[1].length);L(y,i+e.value+n)}else{let r=t.match(/(?:^|[\s(,+\-*/%])(\w*)$/);if(r){let i=t.slice(0,t.length-r[1].length);L(y,i+e.value+n)}}L(C,!1),x(S)?.focus()}function H(e){if(x(C)){if(e.key===`ArrowDown`)e.preventDefault(),L(T,(x(T)+1)%x(w).length);else if(e.key===`ArrowUp`)e.preventDefault(),L(T,(x(T)-1+x(w).length)%x(w).length);else if(e.key===`Tab`||e.key===`Enter`){if(x(w).length>0){e.preventDefault(),le(x(w)[x(T)]);return}}else if(e.key===`Escape`){L(C,!1);return}}e.key===`Enter`&&!e.shiftKey&&!x(C)?(e.preventDefault(),U()):e.key===`Escape`&&!x(C)&&de()}function U(){if(L(C,!1),x(y).trim()){let e=p().parm(d());e&&(e.setExpression(x(y)),p().markDirty(),m()?.(p().evalParm(d())))}L(_,!1)}function de(){L(C,!1),L(y,u().expression||``),L(_,!1),x(s)||L(g,`value`)}function fe(){setTimeout(()=>{x(C)||(x(y).trim()?U():de())},150)}J(()=>A(p()),()=>{L(a,p().graph)}),J(()=>A(u()),()=>{L(s,!!u().expression)}),J(()=>A(u()),()=>{L(c,u().expressionError)}),J(()=>(x(s),x(g),x(_)),()=>{x(s)&&x(g)===`value`&&!x(_)&&L(g,`expression`)}),J(()=>(x(s),x(g)),()=>{!x(s)&&x(g)===`expression`&&L(g,`value`)}),J(()=>A(u()),()=>{u().expression!==void 0&&L(y,u().expression||``)}),J(()=>(x(s),x(c),A(u()),A(d()),n()),()=>{L(l,x(s)&&!x(c)?k(j(u(),d(),n())):null)}),he(),ue();var pe=Zb();let me;var W=M(pe),G=e=>{var t=qb(),n=M(t),r=e=>{var t=Ub(),n=M(t);re(n);let r;ge(n,e=>L(S,e),()=>x(S));var i=P(n,2),a=e=>{var t=Hb();f(t,5,()=>x(w),h,(e,t,n)=>{var r=Vb();let i;var a=M(r),s=q(a,!0),c=P(a,2),l=q(c,!0);o(r),K(()=>{i=v(r,1,`autocomplete-item svelte-10p3942`,null,i,{selected:n===x(T),"type-node":x(t).type===`node`,"type-prop":x(t).type===`prop`,"type-func":x(t).type===`func`}),D(s,(x(t),F(()=>x(t).type===`func`?`ƒ`:x(t).type===`node`?`□`:`•`))),D(l,(x(t),F(()=>x(t).label)))}),O(`mousedown`,r,Se(()=>le(x(t)))),O(`mouseenter`,r,()=>L(T,n)),E(e,r)}),o(t),E(e,t)};Z(i,e=>{x(C),x(w),F(()=>x(C)&&x(w).length>0)&&e(a)}),o(t),K(()=>r=v(n,1,`expression-input svelte-10p3942`,null,r,{error:!!x(c)})),Ce(n,()=>x(y),e=>L(y,e)),O(`input`,n,se),O(`keydown`,n,H),O(`blur`,n,fe),E(e,t)},i=e=>{var t=Wb(),n=M(t),r=q(n,!0);o(t),K(()=>D(r,(A(u()),F(()=>u().expression)))),O(`click`,t,R),E(e,t)};Z(n,e=>{x(_)?e(r):e(i,-1)});var a=P(n,2),s=M(a),d=e=>{var t=Gb();$a(M(t),{size:12}),o(t),K(()=>X(t,`title`,x(c))),E(e,t)},p=e=>{var t=Kb(),n=q(t);K(()=>{X(t,`title`,`Click to see value: ${x(l)??``}`),D(n,`= ${x(l)??``}`)}),O(`click`,t,I(ie)),E(e,t)};Z(s,e=>{x(c)?e(d):x(l)!==null&&e(p,1)});var m=P(s,2);Ic(M(m),{size:12}),o(m),o(a),o(t),O(`click`,m,z),E(e,t)},_e=e=>{var n=Xb();let r;var i=M(n);b(i,t,`default`,{},null);var a=P(i,2),c=e=>{var t=Jb();Qs(M(t),{size:10}),o(t),O(`click`,t,I(ie)),E(e,t)},l=e=>{var t=Yb();Qs(M(t),{size:10}),o(t),O(`click`,t,ae),E(e,t)};Z(a,e=>{x(s)?e(c):e(l,-1)}),o(n),K(()=>r=v(n,1,`value-view svelte-10p3942`,null,r,{"expression-active":x(s)})),E(e,n)};Z(W,e=>{x(g)===`expression`&&x(s)?e(G):e(_e,-1)}),o(pe),K(()=>me=v(pe,1,`expression-wrapper svelte-10p3942`,null,me,{"has-expression":x(s),"has-error":!!x(c),editing:x(_)})),E(e,pe),Ee(),i()}function $b(e,t){let n=e.parm?.(t);return n&&typeof n==`object`?n:null}function ex(e){let t=e.currentFrame?.();return Number.isFinite(t)?Math.round(t):1}function tx(e,t){let n=$b(e,t);if(!n?.hasChannel?.())return`none`;let r=n.keys?.()??[];if(!r.length)return`none`;let i=ex(e);return r.some(e=>Math.round(e.frame)===i)?`keyed-here`:`keyed`}function nx(e,t){let n=$b(e,t);if(!n?.setKey)return`unavailable`;if(tx(e,t)===`keyed-here`){let r=e.props?.[t]?.value;if(typeof r==`number`&&Number.isFinite(r))return n.setKey(ex(e),r),`set`}return n.setKey(),`set`}function rx(e,t){let n=$b(e,t);return n?.deleteKey?tx(e,t)===`keyed-here`?(n.deleteKey(ex(e)),`removed`):`absent`:`unavailable`}function ix(e,t){return tx(e,t)===`keyed-here`?rx(e,t)===`removed`?`removed`:`unavailable`:nx(e,t)}function ax(e){return typeof e==`number`&&Number.isFinite(e)}var ox=w(null),sx=0;function cx(e,t){sx+=1,ox.set({nodeId:e,param:t,nonce:sx})}var lx=u(`<div><div class="content svelte-1nytthg"><div class="section svelte-1nytthg"><div class="section-header svelte-1nytthg"><span class="section-title svelte-1nytthg">Content</span></div> <textarea id="annotation-content" class="content-textarea svelte-1nytthg" placeholder="Enter text..."></textarea></div> <div class="section svelte-1nytthg"><div class="section-header svelte-1nytthg"><span class="section-title svelte-1nytthg">Position</span></div> <!></div> <div class="section svelte-1nytthg"><div class="section-header svelte-1nytthg"><span class="section-title svelte-1nytthg">Layout</span></div> <div class="layout-grid svelte-1nytthg"><div class="layout-input-group svelte-1nytthg"><label class="layout-label svelte-1nytthg" for="annotation-width">W</label> <div class="number-input-with-buttons svelte-1nytthg"><input id="annotation-width" type="number" class="layout-input svelte-1nytthg" min="100"/> <button class="number-button decrement svelte-1nytthg" type="button" title="Decrease">−</button> <button class="number-button increment svelte-1nytthg" type="button" title="Increase">+</button></div></div> <div class="layout-input-group svelte-1nytthg"><label class="layout-label svelte-1nytthg" for="annotation-height">H</label> <div class="number-input-with-buttons svelte-1nytthg"><input id="annotation-height" type="number" class="layout-input svelte-1nytthg" min="20"/> <button class="number-button decrement svelte-1nytthg" type="button" title="Decrease">−</button> <button class="number-button increment svelte-1nytthg" type="button" title="Increase">+</button></div></div></div></div> <div class="section svelte-1nytthg"><div class="section-header svelte-1nytthg"><span class="section-title svelte-1nytthg">Typography</span></div> <div class="typography-presets svelte-1nytthg"><button title="Heading 1">H1</button> <button title="Heading 2">H2</button> <button title="Heading 3">H3</button> <button title="Text">Text</button></div> <div class="typography-row svelte-1nytthg"><div class="typography-input-group svelte-1nytthg"><label class="typography-label svelte-1nytthg" for="annotation-font-size">Size</label> <div class="number-input-with-buttons svelte-1nytthg"><input id="annotation-font-size" type="number" class="typography-number-input svelte-1nytthg" min="8" max="72" step="1"/> <button class="number-button decrement svelte-1nytthg" type="button" title="Decrease">−</button> <button class="number-button increment svelte-1nytthg" type="button" title="Increase">+</button></div></div> <div class="typography-input-group svelte-1nytthg"><label class="typography-label svelte-1nytthg" for="annotation-text-align">Align</label> <div class="align-buttons svelte-1nytthg"><button title="Align left" aria-label="Align left"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M2 3H12M2 7H10M2 11H12" stroke-linecap="round"></path></svg></button> <button title="Align center" aria-label="Align center"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M2 3H12M4 7H10M2 11H12" stroke-linecap="round"></path></svg></button> <button title="Align right" aria-label="Align right"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M2 3H12M4 7H12M2 11H12" stroke-linecap="round"></path></svg></button></div></div></div> <div class="typography-toggles svelte-1nytthg"><button title="Bold"><strong>B</strong></button> <button title="Italic"><em>I</em></button> <button title="Normal">N</button></div></div> <div class="section svelte-1nytthg"><div class="section-header svelte-1nytthg"><span class="section-title svelte-1nytthg">Text Color</span></div> <!></div> <div class="section svelte-1nytthg"><div class="section-header svelte-1nytthg"><span class="section-title svelte-1nytthg">Appearance</span></div> <div class="appearance-row svelte-1nytthg"><div class="appearance-input-group svelte-1nytthg"><label class="appearance-label svelte-1nytthg" for="annotation-border-radius">Radius</label> <div class="number-input-with-buttons svelte-1nytthg"><input id="annotation-border-radius" type="number" class="appearance-number-input svelte-1nytthg" min="0" max="16" step="1"/> <button class="number-button decrement svelte-1nytthg" type="button" title="Decrease">−</button> <button class="number-button increment svelte-1nytthg" type="button" title="Increase">+</button></div></div></div></div> <div class="section svelte-1nytthg"><div class="section-header svelte-1nytthg"><span class="section-title svelte-1nytthg">Background Color</span></div> <!></div></div></div>`),ux=u(`<div><div class="content svelte-1nytthg"><div class="section svelte-1nytthg"><div class="section-header svelte-1nytthg"><span class="section-title svelte-1nytthg">Position</span></div> <div class="position-grid svelte-1nytthg"><div class="position-input-group svelte-1nytthg"><label class="position-label svelte-1nytthg" for="annotation-x">X</label> <input id="annotation-x" type="number" class="position-input svelte-1nytthg"/></div> <div class="position-input-group svelte-1nytthg"><label class="position-label svelte-1nytthg" for="annotation-y">Y</label> <input id="annotation-y" type="number" class="position-input svelte-1nytthg"/></div></div></div> <div class="section svelte-1nytthg"><div class="section-header svelte-1nytthg"><span class="section-title svelte-1nytthg">End Position</span></div> <div class="position-grid svelte-1nytthg"><div class="position-input-group svelte-1nytthg"><label class="position-label svelte-1nytthg" for="annotation-end-x">X</label> <input id="annotation-end-x" type="number" class="position-input svelte-1nytthg"/></div> <div class="position-input-group svelte-1nytthg"><label class="position-label svelte-1nytthg" for="annotation-end-y">Y</label> <input id="annotation-end-y" type="number" class="position-input svelte-1nytthg"/></div></div></div> <div class="section svelte-1nytthg"><div class="section-header svelte-1nytthg"><span class="section-title svelte-1nytthg">Stroke</span></div> <div class="fill-controls svelte-1nytthg"><input id="annotation-stroke-color" type="color" class="color-picker svelte-1nytthg"/> <input id="annotation-stroke-color-hex" type="text" class="color-hex-input svelte-1nytthg" placeholder="#FFFFFF"/></div> <div class="appearance-row svelte-1nytthg" style="margin-top: 8px;"><div class="appearance-input-group svelte-1nytthg"><label class="appearance-label svelte-1nytthg" for="annotation-stroke-width">Width</label> <div class="number-input-with-buttons svelte-1nytthg"><input id="annotation-stroke-width" type="number" class="appearance-number-input svelte-1nytthg" min="1" max="20" step="1"/> <button class="number-button decrement svelte-1nytthg" type="button" title="Decrease">−</button> <button class="number-button increment svelte-1nytthg" type="button" title="Increase">+</button></div></div></div></div></div></div>`),dx=u(`<div><div class="content svelte-1nytthg"><div class="section svelte-1nytthg"><div class="section-header svelte-1nytthg"><span class="section-title svelte-1nytthg">Position</span></div> <div class="position-grid svelte-1nytthg"><div class="position-input-group svelte-1nytthg"><label class="position-label svelte-1nytthg" for="annotation-x">X</label> <input id="annotation-x" type="number" class="position-input svelte-1nytthg"/></div> <div class="position-input-group svelte-1nytthg"><label class="position-label svelte-1nytthg" for="annotation-y">Y</label> <input id="annotation-y" type="number" class="position-input svelte-1nytthg"/></div></div></div> <div class="section svelte-1nytthg"><div class="section-header svelte-1nytthg"><span class="section-title svelte-1nytthg">Stroke</span></div> <div class="fill-controls svelte-1nytthg"><input id="annotation-stroke-color" type="color" class="color-picker svelte-1nytthg"/> <input id="annotation-stroke-color-hex" type="text" class="color-hex-input svelte-1nytthg" placeholder="#FFFFFF"/></div> <div class="appearance-row svelte-1nytthg" style="margin-top: 8px;"><div class="appearance-input-group svelte-1nytthg"><label class="appearance-label svelte-1nytthg" for="annotation-stroke-width">Width</label> <div class="number-input-with-buttons svelte-1nytthg"><input id="annotation-stroke-width" type="number" class="appearance-number-input svelte-1nytthg" min="1" max="20" step="1"/> <button class="number-button decrement svelte-1nytthg" type="button" title="Decrease">−</button> <button class="number-button increment svelte-1nytthg" type="button" title="Increase">+</button></div></div></div></div></div></div>`),fx=u(`<div class="error-badge-container svelte-1nytthg"><span class="error-badge svelte-1nytthg">Error</span></div>`),px=u(`<button title="Key at the current frame (or alt-click the label)"><!></button>`),mx=u(`<label class="prop-label svelte-1nytthg"> </label> <!>`,1),hx=u(`<textarea class="param-textarea svelte-1nytthg"></textarea>`),gx=u(`<input type="text" class="param-input svelte-1nytthg"/>`),_x=u(`<div><!> <!></div>`),vx=u(`<div class="port-section svelte-1nytthg"><button class="port-heading svelte-1nytthg"><span class="twisty svelte-1nytthg"> </span> Inputs <span class="tally svelte-1nytthg"> </span></button> <!></div>`),yx=u(`<div class="parameter-action-value svelte-1nytthg"><button class="parameter-action"> </button> <!></div>`),bx=u(`<button title="Key at the current frame (alt-click the row to set, ctrl-click to delete, right-click for the channel)"><!></button>`),xx=u(`<div class="parameter-bound svelte-1nytthg"><div class="parameter-head svelte-1nytthg"><span class="parameter-name svelte-1nytthg"> </span> <!></div> <!></div>`),Sx=u(`<button> </button>`),Cx=u(`<div class="parameter svelte-1nytthg"><!> <!></div>`),wx=u(`<div class="port-section svelte-1nytthg"><button class="port-heading svelte-1nytthg"><span class="twisty svelte-1nytthg"> </span> Parameters <span class="tally svelte-1nytthg"> </span></button> <!></div>`),Tx=u(`<div class="port-section svelte-1nytthg"><button class="port-heading svelte-1nytthg"><span class="twisty svelte-1nytthg"> </span> Outputs <span class="tally svelte-1nytthg"> </span></button> <!></div>`),Ex=u(`<div class="empty-state svelte-1nytthg">Nothing to show — this node has no parameters or outputs yet</div>`),Dx=u(`<div class="comment-section svelte-1nytthg"><div class="comment svelte-1nytthg"> </div></div>`),Ox=u(`<div><div class="content svelte-1nytthg"><!> <!> <!> <!> <!> <!> <!></div></div>`);function kx(e,n){ee(n,!1);let i=()=>we(Wg,`$propUpdateCounters`,a),[a,s]=ne(),c=Y(),l=Y(),u=Y(),d=Y(),p=Y(),m=Y(),g=Y(),_=Y(),y=Y(),b=Y(),C=Y(),w=Y(),T=V(n,`node`,8,null),k=V(n,`annotation`,12,null),j=V(n,`graph`,12,null),N=V(n,`position`,8,`right`),ie=V(n,`skipAnimation`,8,!1),ae=V(n,`embedded`,8,!1),R=V(n,`onRecordHistory`,8,void 0),se=V(n,`onAction`,8,void 0),ce=!1;function le(){!ce&&R()&&(R()(),ce=!0)}function H(){ce=!1}ye(()=>{let e=()=>H();return window.addEventListener(`mouseup`,e),()=>window.removeEventListener(`mouseup`,e)});let U=Y(0),de=``,fe=new Map,me=Y(0);function W(e){return fe.has(e)||fe.set(e,{inputs:!1,params:!0,outputs:!1}),fe.get(e)}function ge(e,t){let n=W(e);n[t]=!n[t],L(me,x(me)+1)}function _e(e){return T()?W(T().id):{inputs:!1,params:!0,outputs:!1}}ye(()=>{let e=setInterval(()=>{if(!T())return;let e=`${T().id}:${T().cookInfo?.cookCount??0}:${T().inputs?.length??0}:${T().outputs?.length??0}`;e!==de&&(de=e,L(U,x(U)+1))},400);return()=>clearInterval(e)});function ve(e,t){return t??[]}function be(e){return(T()?.parameters??[]).filter(e=>{if(typeof e.options?.visibleWhen!=`function`)return!0;try{let t=Object.fromEntries((T()?.parameters??[]).map(e=>[e.name,e.value]));return e.options.visibleWhen(t)}catch{return!0}})}let xe=Y(0),Se=Y([]);function Ce(e,t){if(T()){if(le(),e.value=t,e.onChange)try{e.onChange(t)}catch(e){console.warn(`port onChange failed:`,e)}T().markDirty?.()}}function Te(e,t){T()&&Yv(T(),e.name,t,le)}function De(e){T()&&e.options?.action&&se()?.(e.options.action,T().id)}function Oe(e){T()&&(le(),T().setParameterPromoted(e.name,!e.promoted),j()&&j(j().elements=[...j().elements],!0),L(me,x(me)+1),L(U,x(U)+1))}let ke=Y(0);function Ae(e){T()&&(cx(T().id,e),cl.focusOrOpenPanel(`timeline-main`,`timeline`,`Timeline`,`graph-main`,`below`))}function je(e,t){let n=-1,r=e=>{e.timeStamp-n<500||(n=e.timeStamp,Pe(t))},i=e=>{if(e.ctrlKey){e.preventDefault(),r(e);return}e.altKey&&(e.preventDefault(),Ne(t,`set`))},a=e=>{if(e.preventDefault(),e.stopPropagation(),e.ctrlKey){r(e);return}Ae(t)};return e.addEventListener(`click`,i),e.addEventListener(`contextmenu`,a),{destroy(){e.removeEventListener(`click`,i),e.removeEventListener(`contextmenu`,a)}}}function Me(e,t){let n=e=>{!e.dataTransfer||!T()||(e.stopPropagation(),e.dataTransfer.setData(`text/plain`,`${T().id}/${t}`),e.dataTransfer.effectAllowed=`copy`)};return e.setAttribute(`draggable`,`true`),e.addEventListener(`dragstart`,n),{destroy(){e.removeEventListener(`dragstart`,n)}}}function Ne(e,t=`toggle`){T()&&(t===`set`?nx(T(),e):ix(T(),e))!==`unavailable`&&(L(ke,x(ke)+1),L(xe,x(xe)+1),T().markDirty())}function Pe(e){T()&&rx(T(),e)===`removed`&&(L(ke,x(ke)+1),L(xe,x(xe)+1),T().markDirty())}function Fe(e){return T()?.props?.[e]||null}function Ie(e,t){let n=T()?.parm(e);n&&(le(),n.setExpression(t),T()?.markDirty(),L(ke,x(ke)+1),L(xe,x(xe)+1))}function Le([e,t],n){T()&&(le(),T().updateProp(e,n))}function Re([e,t],n){let r=n.target.value;Le([e,t],r)}function ze([e,t],n){let r=n.target.value;Le([e,t],r)}function Be([e,t]){let n=ov(t),r=t.displayName||e;return(typeof t.disabled==`function`?t.disabled():t.disabled)?null:{key:e,prop:t,controlType:n,displayName:r,folder:t.folder}}let Ve=Y({});function He(e){oe(Ve,x(Ve)[e]=!x(Ve)[e]),L(Ve,{...x(Ve)})}function Ue(e,t){if(k()&&j()){let n={...k().style||{},[e]:t},r=j().getAnnotation(k().id);r&&(r.style=n,j(j().annotations=[...j().annotations],!0))}}function We(e,t){if(k()&&j()){let n=j().getAnnotation(k().id);n&&(n.size||={width:540,height:60},n.size[e]=t,j(j().annotations=[...j().annotations],!0))}}function Q(e){if(k()&&j()){let t=j().getAnnotation(k().id);t&&t.type===`text`&&(t.content=e,j(j().annotations=[...j().annotations],!0),k(k().content=e,!0))}}function Ge(e){let t=e.target.value;Q(t)}function Ke(e,t){Ue(e,parseFloat(t.target.value))}function qe(e,t){let n=t.target.value;Ue(e,n)}function Je(e,t){We(e,parseFloat(t.target.value))}function Ye(e){let t=parseFloat(e.target.value);if(!isNaN(t)&&k()&&j()){let e=j().getAnnotation(k().id);e&&(e.position.x=t,j(j().annotations=[...j().annotations],!0))}}function Xe(e){let t=parseFloat(e.target.value);if(!isNaN(t)&&k()&&j()){let e=j().getAnnotation(k().id);e&&(e.position.y=t,j(j().annotations=[...j().annotations],!0))}}function Ze(e){let t=parseFloat(e.target.value);if(!isNaN(t)&&k()&&j()){let e=j().getAnnotation(k().id);e&&e.type===`line`&&(e.endPosition||={...e.position},e.endPosition.x=t,j(j().annotations=[...j().annotations],!0),k().endPosition?k(k().endPosition.x=t,!0):k(k().endPosition={...k().position,x:t},!0))}}function $(e){let t=parseFloat(e.target.value);if(!isNaN(t)&&k()&&j()){let e=j().getAnnotation(k().id);e&&e.type===`line`&&(e.endPosition||={...e.position},e.endPosition.y=t,j(j().annotations=[...j().annotations],!0),k().endPosition?k(k().endPosition.y=t,!0):k(k().endPosition={...k().position,y:t},!0))}}function Qe(e){let t=e.target.value;/^#[0-9A-Fa-f]{6}$/.test(t)&&Ue(`strokeColor`,t)}function $e(e){if(k()&&j()&&e.length>=2){let t=j().getAnnotation(k().id);t&&(t.position={x:e[0],y:e[1]},j(j().annotations=[...j().annotations],!0))}}function et(e){k()&&j()&&Ue(`color`,dl(ll(e)))}function tt(e){k()&&j()&&Ue(`backgroundColor`,dl(ll(e)))}function nt(e,t,n,r,i=1){let a=document.getElementById(e);if(!a)return;let o=(parseFloat(a.value)||0)+t*i;n!==void 0&&o<n&&(o=n),r!==void 0&&o>r&&(o=r),a.value=String(o),a.dispatchEvent(new Event(`input`,{bubbles:!0}))}function rt(e,t,n,r=1){e.preventDefault();let i=e.target,a=e.deltaY>0?-1:1;nt(i.id,a,t,n,r)}J(()=>x(me),()=>{L(c,_e(x(me)))}),J(()=>(x(U),A(T())),()=>{L(l,ve(x(U),T()?.inputs))}),J(()=>(x(U),A(T())),()=>{L(u,ve(x(U),T()?.outputs))}),J(()=>x(l),()=>{L(d,x(l).filter(e=>!e.fromParameter))}),J(()=>x(U),()=>{L(p,be(x(U)))}),J(()=>{},()=>{L(m,[])}),J(()=>A(T()),()=>{L(g,T()?Object.keys(T().props):[])}),J(()=>A(T()),()=>{L(_,T()?Object.keys(T().props).length:0)}),J(()=>A(T()),()=>{L(y,T()?.props)}),J(()=>(i(),A(T())),()=>{let e=i();L(xe,T()&&e.get(T().id)||0)}),J(()=>(x(y),x(xe)),()=>{L(b,x(y)&&x(xe)>=0?Object.entries(x(y)).map(([e,t])=>`${e}:${JSON.stringify(t.value)}:${JSON.stringify(t.params)}`).join(`|`)+`|counter:${x(xe)}`:``)}),J(()=>(A(T()),x(_),x(b)),()=>{let e=T()?.props,t=e&&x(_)>=0&&x(b)!==void 0?Object.entries(e).filter(([e,t])=>typeof t.hidden==`function`?!t.hidden():!t.hidden):[];L(Se,t)}),J(()=>x(Se),()=>{L(C,x(Se).map(Be).filter(e=>e!==null))}),J(()=>x(C),()=>{L(w,x(C).reduce((e,t)=>{let n=t.folder||`General`;return e[n]||(e[n]=[]),e[n].push(t),e},{}))}),J(()=>(x(w),x(Ve)),()=>{Object.keys(x(w)).forEach(e=>{e in x(Ve)||oe(Ve,x(Ve)[e]=e!==`Settings`)})}),he(),ue();var it=te(),at=G(it),ot=e=>{var t=lx();let n;var i=M(t),a=M(i),s=P(M(a),2);z(s),o(a);var c=P(a,2),l=P(M(c),2);S(l,()=>(A(k()),F(()=>`position-${k().id}-${k().position.x}-${k().position.y}`)),e=>{{let t=pe(()=>(A(k()),F(()=>({value:[k().position.x,k().position.y],type:`vec2`,params:{integer:!0}}))));Zy(e,{get prop(){return x(t)},id:`annotation-position`,onValueChange:$e})}}),o(c);var u=P(c,2),d=P(M(u),2),f=M(d),p=P(M(f),2),m=M(p);re(m);var h=P(m,2),g=P(h,2);o(p),o(f);var _=P(f,2),y=P(M(_),2),b=M(y);re(b);var C=P(b,2),w=P(C,2);o(y),o(_),o(d),o(u);var T=P(u,2),ee=P(M(T),2),D=M(ee);let te;var ne=P(D,2);let j;var oe=P(ne,2);let I;var L=P(oe,2);let R;o(ee);var se=P(ee,2),B=M(se),V=P(M(B),2),ce=M(V);re(ce);var le=P(ce,2),H=P(le,2);o(V),o(B);var U=P(B,2),ue=P(M(U),2),de=M(ue);let fe;var me=P(de,2);let he;var W=P(me,2);let G;o(ue),o(U),o(se);var ge=P(se,2),_e=M(ge);let ve;var ye=P(_e,2);let be;var q=P(ye,2);let xe;o(ge),o(T);var J=P(T,2),Se=P(M(J),2);S(Se,()=>(A(k()),F(()=>`text-color-${k().id}-${k().style?.color||`#ffffff`}`)),e=>{{let t=pe(()=>(A(k()),F(()=>({value:k().style?.color||`#ffffff`,type:`color`}))));ib(e,{get prop(){return x(t)},id:`annotation-text-color`,onValueChange:et})}}),o(J);var Y=P(J,2),Ce=P(M(Y),2),we=M(Ce),Te=P(M(we),2),Ee=M(Te);re(Ee);var X=P(Ee,2),De=P(X,2);o(Te),o(we),o(Ce),o(Y);var Oe=P(Y,2),ke=P(M(Oe),2);S(ke,()=>(A(k()),F(()=>`bg-color-${k().id}-${k().style?.backgroundColor||`#000000`}`)),e=>{{let t=pe(()=>(A(k()),F(()=>({value:k().style?.backgroundColor||`#000000`,type:`color`}))));ib(e,{get prop(){return x(t)},id:`annotation-bg-color`,onValueChange:tt})}}),o(Oe),o(i),o(t),K(()=>{n=v(t,1,`inspector svelte-1nytthg`,null,n,{left:N()===`left`,"no-animation":ie(),embedded:ae()}),r(s,(A(k()),F(()=>k().content||``))),r(m,(A(k()),F(()=>k().size?.width||540))),r(b,(A(k()),F(()=>k().size?.height||60))),te=v(D,1,`preset-button svelte-1nytthg`,null,te,{active:(k().style?.fontSize||14)===32&&(k().style?.fontWeight||`normal`)===`bold`}),j=v(ne,1,`preset-button svelte-1nytthg`,null,j,{active:(k().style?.fontSize||14)===24&&(k().style?.fontWeight||`normal`)===`bold`}),I=v(oe,1,`preset-button svelte-1nytthg`,null,I,{active:(k().style?.fontSize||14)===18&&(k().style?.fontWeight||`normal`)===`bold`}),R=v(L,1,`preset-button svelte-1nytthg`,null,R,{active:(k().style?.fontSize||14)===14&&(k().style?.fontWeight||`normal`)===`normal`}),r(ce,(A(k()),F(()=>k().style?.fontSize||14))),fe=v(de,1,`align-button svelte-1nytthg`,null,fe,{active:k().style?.textAlign===`left`||!k().style?.textAlign}),he=v(me,1,`align-button svelte-1nytthg`,null,he,{active:k().style?.textAlign===`center`}),G=v(W,1,`align-button svelte-1nytthg`,null,G,{active:k().style?.textAlign===`right`}),ve=v(_e,1,`toggle-button svelte-1nytthg`,null,ve,{active:(k().style?.fontWeight||`normal`)===`bold`}),be=v(ye,1,`toggle-button svelte-1nytthg`,null,be,{active:(k().style?.fontStyle||`normal`)===`italic`}),xe=v(q,1,`toggle-button svelte-1nytthg`,null,xe,{active:(k().style?.fontWeight||`normal`)===`normal`&&(k().style?.fontStyle||`normal`)===`normal`}),r(Ee,(A(k()),F(()=>k().style?.borderRadius||4)))}),O(`input`,s,Ge),O(`input`,m,e=>Je(`width`,e)),O(`wheel`,m,e=>rt(e,100,void 0,10)),O(`click`,h,()=>nt(`annotation-width`,-1,100)),O(`click`,g,()=>nt(`annotation-width`,1,100)),O(`input`,b,e=>Je(`height`,e)),O(`wheel`,b,e=>rt(e,20,void 0,10)),O(`click`,C,()=>nt(`annotation-height`,-1,20)),O(`click`,w,()=>nt(`annotation-height`,1,20)),O(`click`,D,()=>{Ue(`fontSize`,32),Ue(`fontWeight`,`bold`)}),O(`click`,ne,()=>{Ue(`fontSize`,24),Ue(`fontWeight`,`bold`)}),O(`click`,oe,()=>{Ue(`fontSize`,18),Ue(`fontWeight`,`bold`)}),O(`click`,L,()=>{Ue(`fontSize`,14),Ue(`fontWeight`,`normal`)}),O(`input`,ce,e=>Ke(`fontSize`,e)),O(`wheel`,ce,e=>rt(e,8,72,1)),O(`click`,le,()=>nt(`annotation-font-size`,-1,8,72,1)),O(`click`,H,()=>nt(`annotation-font-size`,1,8,72,1)),O(`click`,de,()=>Ue(`textAlign`,`left`)),O(`click`,me,()=>Ue(`textAlign`,`center`)),O(`click`,W,()=>Ue(`textAlign`,`right`)),O(`click`,_e,()=>{Ue(`fontWeight`,(k().style?.fontWeight||`normal`)===`bold`?`normal`:`bold`)}),O(`click`,ye,()=>{Ue(`fontStyle`,(k().style?.fontStyle||`normal`)===`italic`?`normal`:`italic`)}),O(`click`,q,()=>{Ue(`fontWeight`,`normal`),Ue(`fontStyle`,`normal`)}),O(`input`,Ee,e=>Ke(`borderRadius`,e)),O(`wheel`,Ee,e=>rt(e,0,16,1)),O(`click`,X,()=>nt(`annotation-border-radius`,-1,0,16,1)),O(`click`,De,()=>nt(`annotation-border-radius`,1,0,16,1)),E(e,t)},st=e=>{var t=ux();let n;var i=M(t),a=M(i),s=P(M(a),2),c=M(s),l=P(M(c),2);re(l),o(c);var u=P(c,2),d=P(M(u),2);re(d),o(u),o(s),o(a);var f=P(a,2),p=P(M(f),2),m=M(p),h=P(M(m),2);re(h),o(m);var g=P(m,2),_=P(M(g),2);re(_),o(g),o(p),o(f);var y=P(f,2),b=P(M(y),2),x=M(b);re(x);var S=P(x,2);re(S),o(b);var C=P(b,2),w=M(C),T=P(M(w),2),ee=M(T);re(ee);var D=P(ee,2),te=P(D,2);o(T),o(w),o(C),o(y),o(i),o(t),K((e,i,a,o,s)=>{n=v(t,1,`inspector svelte-1nytthg`,null,n,{left:N()===`left`,"no-animation":ie(),embedded:ae()}),r(l,e),r(d,i),r(h,a),r(_,o),r(x,(A(k()),F(()=>k().style?.strokeColor||`#ffffff`))),r(S,s),r(ee,(A(k()),F(()=>k().style?.strokeWidth||2)))},[()=>(A(k()),F(()=>Math.round(k().position.x))),()=>(A(k()),F(()=>Math.round(k().position.y))),()=>(A(k()),F(()=>Math.round(k().endPosition?.x||k().position.x))),()=>(A(k()),F(()=>Math.round(k().endPosition?.y||k().position.y))),()=>(A(k()),F(()=>(k().style?.strokeColor||`#ffffff`).toUpperCase()))]),O(`input`,l,Ye),O(`input`,d,Xe),O(`input`,h,Ze),O(`input`,_,$),O(`input`,x,e=>qe(`strokeColor`,e)),O(`input`,S,Qe),O(`input`,ee,e=>Ke(`strokeWidth`,e)),O(`wheel`,ee,e=>rt(e,1,20,1)),O(`click`,D,()=>nt(`annotation-stroke-width`,-1,1,20,1)),O(`click`,te,()=>nt(`annotation-stroke-width`,1,1,20,1)),E(e,t)},ct=e=>{var t=dx();let n;var i=M(t),a=M(i),s=P(M(a),2),c=M(s),l=P(M(c),2);re(l),o(c);var u=P(c,2),d=P(M(u),2);re(d),o(u),o(s),o(a);var f=P(a,2),p=P(M(f),2),m=M(p);re(m);var h=P(m,2);re(h),o(p);var g=P(p,2),_=M(g),y=P(M(_),2),b=M(y);re(b);var x=P(b,2),S=P(x,2);o(y),o(_),o(g),o(f),o(i),o(t),K((e,i,a)=>{n=v(t,1,`inspector svelte-1nytthg`,null,n,{left:N()===`left`,"no-animation":ie(),embedded:ae()}),r(l,e),r(d,i),r(m,(A(k()),F(()=>k().style?.strokeColor||`#ffffff`))),r(h,a),r(b,(A(k()),F(()=>k().style?.strokeWidth||2)))},[()=>(A(k()),F(()=>Math.round(k().position.x))),()=>(A(k()),F(()=>Math.round(k().position.y))),()=>(A(k()),F(()=>(k().style?.strokeColor||`#ffffff`).toUpperCase()))]),O(`input`,l,Ye),O(`input`,d,Xe),O(`input`,m,e=>qe(`strokeColor`,e)),O(`input`,h,Qe),O(`input`,b,e=>Ke(`strokeWidth`,e)),O(`wheel`,b,e=>rt(e,1,20,1)),O(`click`,x,()=>nt(`annotation-stroke-width`,-1,1,20,1)),O(`click`,S,()=>nt(`annotation-stroke-width`,1,1,20,1)),E(e,t)},lt=e=>{var n=Ox();let i;var a=M(n),s=M(a),l=e=>{var t=fx();E(e,t)};Z(s,e=>{A(T()),F(()=>T().error)&&e(l)});var m=P(s,2),g=e=>{var n=te(),i=G(n);f(i,1,()=>(x(w),F(()=>Object.entries(x(w)))),h,(e,n)=>{let i=pe(()=>{let[e,t]=x(n);return{folder:e,folderProps:t}});var a=te(),s=G(a),c=e=>{{let n=pe(()=>(x(Ve),A(x(i).folder),F(()=>x(Ve)[x(i).folder]??!0)));kb(e,{get folderName(){return x(i).folder},get isExpanded(){return x(n)},$$events:{toggle:()=>He(x(i).folder)},children:(e,n)=>{var a=te(),s=G(a);f(s,1,()=>x(i).folderProps,h,(e,n)=>{let a=pe(()=>x(n)),s=pe(()=>(A(T()),A(x(a).key),A(x(i).folder),F(()=>`prop-${T().id}-${x(a).key}-${x(i).folder}`))),c=pe(()=>x(a).controlType===`vec2`||x(a).controlType===`vec3`||x(a).controlType===`vec2i`||x(a).controlType===`vec3i`||x(a).controlType===`vector`);var l=_x();let u;var d=M(l),f=e=>{var n=mx(),r=G(n),i=q(r,!0);t(r,(e,t)=>je?.(e,t),()=>x(a).key),t(r,(e,t)=>Me?.(e,t),()=>x(a).key);var c=P(r,2),l=e=>{var t=te(),n=G(t);S(n,()=>`${x(a).key}-${x(ke)}`,e=>{var t=px();bo(M(t),{size:9}),o(t),K(e=>v(t,1,`key-toggle ${e??``}`,`svelte-1nytthg`),[()=>(A(T()),A(tx),A(x(a).key),F(()=>T()?tx(T(),x(a).key):`none`))]),O(`click`,t,I(()=>Ne(x(a).key))),E(e,t)}),E(e,t)},u=B(()=>(A(ax),A(x(a).prop),F(()=>ax(x(a).prop.value))));Z(c,e=>{x(u)&&e(l)}),K(()=>{X(r,`for`,x(s)),D(i,x(a).displayName)}),E(e,n)};Z(d,e=>{x(a).displayName!==null&&e(f)});var p=P(d,2),m=e=>{var t=te(),n=G(t);S(n,()=>(A(x(a).key),A(x(a).prop),F(()=>`${x(a).key}-${x(a).prop.value}-${x(a).prop.expression}-${JSON.stringify(x(a).prop.params)}`)),e=>{Qb(e,{get prop(){return x(a).prop},get propKey(){return x(a).key},get node(){return T()},onValueChange:e=>Le([x(a).key,x(a).prop],e),children:(e,t)=>{Hy(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},$$slots:{default:!0}})}),E(e,t)},h=e=>{var t=te(),n=G(t);S(n,()=>(A(x(a).key),A(x(a).prop),x(b),x(xe),F(()=>`${x(a).key}-${JSON.stringify(x(a).prop.value)}-${x(a).prop.expression}-${x(b)}-${x(xe)}`)),e=>{Qb(e,{get prop(){return x(a).prop},get propKey(){return x(a).key},get node(){return T()},onValueChange:e=>Le([x(a).key,x(a).prop],e),children:(e,t)=>{Zy(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},$$slots:{default:!0}})}),E(e,t)},g=e=>{var t=te(),n=G(t);S(n,()=>(A(x(a).key),A(x(a).prop),F(()=>`${x(a).key}-${JSON.stringify(x(a).prop.value)}-${x(a).prop.expression}`)),e=>{Qb(e,{get prop(){return x(a).prop},get propKey(){return x(a).key},get node(){return T()},onValueChange:e=>Le([x(a).key,x(a).prop],e),children:(e,t)=>{ib(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},$$slots:{default:!0}})}),E(e,t)},_=e=>{Ib(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},y=e=>{db(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},C=e=>{var t=te(),n=G(t);S(n,()=>(A(x(a).key),A(x(a).prop),F(()=>`${x(a).key}-${x(a).prop.expression}`)),e=>{Qb(e,{get prop(){return x(a).prop},get propKey(){return x(a).key},get node(){return T()},onValueChange:e=>Le([x(a).key,x(a).prop],e),children:(e,t)=>{var n=te(),i=G(n),o=e=>{var t=hx();z(t),K(()=>{X(t,`id`,x(s)),r(t,(A(x(a).prop),F(()=>x(a).prop.value||``)))}),O(`input`,t,e=>ze([x(a).key,x(a).prop],e)),E(e,t)},c=e=>{var t=gx();re(t),K(()=>{X(t,`id`,x(s)),r(t,(A(x(a).prop),F(()=>x(a).prop.value||``)))}),O(`input`,t,e=>Re([x(a).key,x(a).prop],e)),E(e,t)};Z(i,e=>{x(a).controlType===`textarea`?e(o):e(c,-1)}),E(e,n)},$$slots:{default:!0}})}),E(e,t)},w=e=>{var t=te(),n=G(t);S(n,()=>(A(x(a).key),A(x(a).prop),F(()=>`${x(a).key}-${x(a).prop.value}-${x(a).prop.expression}`)),e=>{Qb(e,{get prop(){return x(a).prop},get propKey(){return x(a).key},get node(){return T()},onValueChange:e=>Le([x(a).key,x(a).prop],e),children:(e,t)=>{Eb(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},$$slots:{default:!0}})}),E(e,t)},ee=e=>{var t=te(),n=G(t);S(n,()=>(A(x(a).key),A(x(a).prop),F(()=>`${x(a).key}-${x(a).prop.value}-${x(a).prop.expression}`)),e=>{Qb(e,{get prop(){return x(a).prop},get propKey(){return x(a).key},get node(){return T()},onValueChange:e=>Le([x(a).key,x(a).prop],e),children:(e,t)=>{yb(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},$$slots:{default:!0}})}),E(e,t)},k=e=>{wb(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:()=>{typeof x(a).prop.value==`function`&&x(a).prop.value(),typeof x(a).prop.onChange==`function`&&x(a).prop.onChange(x(a).prop,!0)}})},ne=e=>{var t=gx();re(t),K(e=>{X(t,`id`,x(s)),r(t,e)},[()=>(A(x(a).prop),F(()=>String(x(a).prop.value||``)))]),O(`input`,t,e=>Re([x(a).key,x(a).prop],e)),E(e,t)};Z(p,e=>{x(a).controlType===`number`||x(a).controlType===`slider`||x(a).controlType===`int`?e(m):x(c)?e(h,1):x(a).controlType===`color`?e(g,2):x(a).controlType===`colorramp`?e(_,3):(A(x(a).controlType),A(x(a).prop),F(()=>x(a).controlType===`image`||x(a).controlType===`text`&&x(a).prop.params?.accept)?e(y,4):x(a).controlType===`text`||x(a).controlType===`textarea`?e(C,5):x(a).controlType===`boolean`?e(w,6):(A(x(a).controlType),A(x(a).prop),F(()=>x(a).controlType===`select`&&x(a).prop.params?.options)?e(ee,7):x(a).controlType===`button`?e(k,8):e(ne,-1)))}),o(l),K(()=>u=v(l,1,`prop-group svelte-1nytthg`,null,u,{"prop-group-row":x(c)})),E(e,l)}),E(e,a)},$$slots:{default:!0}})}},l=e=>{var n=te(),a=G(n);f(a,1,()=>x(i).folderProps,h,(e,n)=>{let a=pe(()=>x(n)),s=pe(()=>(A(T()),A(x(a).key),A(x(i).folder),F(()=>`prop-${T().id}-${x(a).key}-${x(i).folder}`))),c=pe(()=>x(a).controlType===`vec2`||x(a).controlType===`vec3`||x(a).controlType===`vec2i`||x(a).controlType===`vec3i`||x(a).controlType===`vector`);var l=_x();let u;var d=M(l),f=e=>{var n=mx(),r=G(n),i=q(r,!0);t(r,(e,t)=>je?.(e,t),()=>x(a).key),t(r,(e,t)=>Me?.(e,t),()=>x(a).key);var c=P(r,2),l=e=>{var t=te(),n=G(t);S(n,()=>`${x(a).key}-${x(ke)}`,e=>{var t=px();bo(M(t),{size:9}),o(t),K(e=>v(t,1,`key-toggle ${e??``}`,`svelte-1nytthg`),[()=>(A(T()),A(tx),A(x(a).key),F(()=>T()?tx(T(),x(a).key):`none`))]),O(`click`,t,I(()=>Ne(x(a).key))),E(e,t)}),E(e,t)},u=B(()=>(A(ax),A(x(a).prop),F(()=>ax(x(a).prop.value))));Z(c,e=>{x(u)&&e(l)}),K(()=>{X(r,`for`,x(s)),D(i,x(a).displayName)}),E(e,n)};Z(d,e=>{x(a).displayName!==null&&e(f)});var p=P(d,2),m=e=>{Qb(e,{get prop(){return x(a).prop},get propKey(){return x(a).key},get node(){return T()},onValueChange:e=>Le([x(a).key,x(a).prop],e),children:(e,t)=>{Hy(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},$$slots:{default:!0}})},h=e=>{var t=te(),n=G(t);S(n,()=>(A(x(a).key),A(x(a).prop),x(b),x(xe),F(()=>`${x(a).key}-${JSON.stringify(x(a).prop.value)}-${x(a).prop.expression}-${x(b)}-${x(xe)}`)),e=>{Qb(e,{get prop(){return x(a).prop},get propKey(){return x(a).key},get node(){return T()},onValueChange:e=>Le([x(a).key,x(a).prop],e),children:(e,t)=>{Zy(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},$$slots:{default:!0}})}),E(e,t)},g=e=>{var t=te(),n=G(t);S(n,()=>(A(x(a).key),A(x(a).prop),F(()=>`${x(a).key}-${JSON.stringify(x(a).prop.value)}-${x(a).prop.expression}`)),e=>{Qb(e,{get prop(){return x(a).prop},get propKey(){return x(a).key},get node(){return T()},onValueChange:e=>Le([x(a).key,x(a).prop],e),children:(e,t)=>{ib(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},$$slots:{default:!0}})}),E(e,t)},_=e=>{Ib(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},y=e=>{db(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},C=e=>{var t=te(),n=G(t);S(n,()=>(A(x(a).key),A(x(a).prop),F(()=>`${x(a).key}-${x(a).prop.expression}`)),e=>{Qb(e,{get prop(){return x(a).prop},get propKey(){return x(a).key},get node(){return T()},onValueChange:e=>Le([x(a).key,x(a).prop],e),children:(e,t)=>{var n=te(),i=G(n),o=e=>{var t=hx();z(t),K(()=>{X(t,`id`,x(s)),r(t,(A(x(a).prop),F(()=>x(a).prop.value||``)))}),O(`input`,t,e=>ze([x(a).key,x(a).prop],e)),E(e,t)},c=e=>{var t=gx();re(t),K(()=>{X(t,`id`,x(s)),r(t,(A(x(a).prop),F(()=>x(a).prop.value||``)))}),O(`input`,t,e=>Re([x(a).key,x(a).prop],e)),E(e,t)};Z(i,e=>{x(a).controlType===`textarea`?e(o):e(c,-1)}),E(e,n)},$$slots:{default:!0}})}),E(e,t)},w=e=>{var t=te(),n=G(t);S(n,()=>(A(x(a).key),A(x(a).prop),F(()=>`${x(a).key}-${x(a).prop.value}-${x(a).prop.expression}`)),e=>{Qb(e,{get prop(){return x(a).prop},get propKey(){return x(a).key},get node(){return T()},onValueChange:e=>Le([x(a).key,x(a).prop],e),children:(e,t)=>{Eb(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},$$slots:{default:!0}})}),E(e,t)},ee=e=>{var t=te(),n=G(t);S(n,()=>(A(x(a).key),A(x(a).prop),F(()=>`${x(a).key}-${x(a).prop.value}-${x(a).prop.expression}`)),e=>{Qb(e,{get prop(){return x(a).prop},get propKey(){return x(a).key},get node(){return T()},onValueChange:e=>Le([x(a).key,x(a).prop],e),children:(e,t)=>{yb(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},$$slots:{default:!0}})}),E(e,t)},k=e=>{wb(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:()=>{typeof x(a).prop.value==`function`&&x(a).prop.value(),typeof x(a).prop.onChange==`function`&&x(a).prop.onChange(x(a).prop,!0)}})},ne=e=>{var t=gx();re(t),K(e=>{X(t,`id`,x(s)),r(t,e)},[()=>(A(x(a).prop),F(()=>String(x(a).prop.value||``)))]),O(`input`,t,e=>Re([x(a).key,x(a).prop],e)),E(e,t)};Z(p,e=>{x(a).controlType===`number`||x(a).controlType===`slider`||x(a).controlType===`int`?e(m):x(c)?e(h,1):x(a).controlType===`color`?e(g,2):x(a).controlType===`colorramp`?e(_,3):(A(x(a).controlType),A(x(a).prop),F(()=>x(a).controlType===`image`||x(a).controlType===`text`&&x(a).prop.params?.accept)?e(y,4):x(a).controlType===`text`||x(a).controlType===`textarea`?e(C,5):x(a).controlType===`boolean`?e(w,6):(A(x(a).controlType),A(x(a).prop),F(()=>x(a).controlType===`select`&&x(a).prop.params?.options)?e(ee,7):x(a).controlType===`button`?e(k,8):e(ne,-1)))}),o(l),K(()=>u=v(l,1,`prop-group svelte-1nytthg`,null,u,{"prop-group-row":x(c)})),E(e,l)}),E(e,n)};Z(s,e=>{x(i).folder===`General`?e(l,-1):e(c)}),E(e,a)}),E(e,n)};Z(m,e=>{x(C),F(()=>x(C).length>0)&&e(g)});var _=P(m,2),y=e=>{var t=vx(),n=M(t),r=M(n),i=q(r,!0),a=P(r,2),s=q(a,!0);o(n);var l=P(n,2),u=e=>{var t=te(),n=G(t);S(n,()=>(A(T()),x(xe),x(b),x(U),F(()=>`${T().id}-${x(xe)}-${x(b)}-${x(U)}`)),e=>{var t=te(),n=G(t);f(n,1,()=>x(d),e=>e.id,(e,t)=>{Ry(e,{get port(){return x(t)},get node(){return T()},direction:`input`,onChange:e=>Ce(x(t),e)})}),E(e,t)}),E(e,t)};Z(l,e=>{x(c),F(()=>x(c).inputs)&&e(u)}),o(t),K(()=>{D(i,(x(c),F(()=>x(c).inputs?`▾`:`▸`))),D(s,(x(d),F(()=>x(d).length)))}),O(`click`,n,()=>ge(T().id,`inputs`)),E(e,t)};Z(_,e=>{x(d),F(()=>x(d).length>0)&&e(y)});var ee=P(_,2),k=e=>{var n=wx(),r=M(n),i=M(r),a=q(i,!0),s=P(i,2),l=q(s,!0);o(r);var u=P(r,2),d=e=>{var n=te(),r=G(n);S(r,()=>(A(T()),F(()=>T().id)),e=>{var n=te(),r=G(n);f(r,1,()=>x(p),e=>e.name,(e,n)=>{let r=pe(()=>(x(n),F(()=>Fe(x(n).name)))),i=pe(()=>(A(x(r)),F(()=>!!x(r)&&(x(r).type===`number`||x(r).type===`int`))));var a=Cx(),s=M(a),c=e=>{var t=yx(),r=M(t),i=q(r,!0),a=P(r,2);{let e=pe(()=>(x(n),F(()=>({name:`Selected`,dataType:x(n).dataType,value:x(n).value,connections:[],options:{}}))));Ry(a,{get port(){return x(e)},get node(){return T()},direction:`output`})}o(t),K(()=>D(i,(x(n),F(()=>x(n).options?.label??x(n).name)))),O(`click`,r,()=>De(x(n))),E(e,t)},l=e=>{var i=xx(),a=M(i),s=M(a),c=q(s,!0);t(s,(e,t)=>Me?.(e,t),()=>x(n).name);var l=P(s,2);S(l,()=>(x(n),x(ke),F(()=>`${x(n).name}-${x(ke)}`)),e=>{var t=bx();bo(M(t),{size:9}),o(t),K(e=>v(t,1,`key-toggle ${e??``}`,`svelte-1nytthg`),[()=>(A(T()),A(tx),x(n),F(()=>T()?tx(T(),x(n).name):`none`))]),O(`click`,t,I(()=>Ne(x(n).name))),E(e,t)}),o(a);var u=P(a,2);S(u,()=>(x(n),A(x(r)),x(ke),F(()=>`${x(n).name}-${x(r).expression??``}-${x(ke)}`)),e=>{Qb(e,{get prop(){return x(r)},get propKey(){return x(n),F(()=>x(n).name)},get node(){return T()},onValueChange:e=>Te(x(n),e),children:(e,t)=>{{let t=pe(()=>(A(T()),x(n),F(()=>`param-${T().id}-${x(n).name}`)));Hy(e,{get prop(){return x(r)},get id(){return x(t)},onValueChange:e=>Te(x(n),e),onExpressionChange:e=>Ie(x(n).name,e)})}},$$slots:{default:!0}})}),o(i),K(e=>{X(s,`title`,e),D(c,(x(n),F(()=>x(n).options?.label??x(n).name)))},[()=>(x(n),A(Yl),F(()=>`${x(n).options?.label??x(n).name} · ${Yl(x(n).dataType)}`))]),E(e,i)},u=e=>{var t=te(),i=G(t);S(i,()=>(x(n),A(x(r)),x(ke),F(()=>`${x(n).name}-${x(r).expression??``}-${x(ke)}`)),e=>{Qb(e,{get prop(){return x(r)},get propKey(){return x(n),F(()=>x(n).name)},get node(){return T()},onValueChange:e=>Te(x(n),e),children:(e,t)=>{{let t=pe(()=>(x(n),F(()=>({name:x(n).options?.label??x(n).name,dataType:x(n).dataType,value:x(n).value,connections:[],options:x(n).options??{}}))));Ry(e,{get port(){return x(t)},get node(){return T()},direction:`input`,onChange:e=>Te(x(n),e)})}},$$slots:{default:!0}})}),E(e,t)},d=e=>{{let t=pe(()=>(x(n),F(()=>({name:x(n).options?.label??x(n).name,dataType:x(n).dataType,value:x(n).value,connections:[],options:x(n).options??{}}))));Ry(e,{get port(){return x(t)},get node(){return T()},direction:`input`,onChange:e=>Te(x(n),e)})}};Z(s,e=>{x(n),F(()=>x(n).options?.action)?e(c):x(i)&&x(r)?e(l,1):x(r)?e(u,2):e(d,-1)});var f=P(s,2),p=e=>{var t=Sx();let r;var i=q(t,!0);K(()=>{r=v(t,1,`promote svelte-1nytthg`,null,r,{on:x(n).promoted}),X(t,`title`,(x(n),F(()=>x(n).promoted?`Demote back to a parameter — removes the pin and any wire into it`:`Promote to an input pin so it can be driven from another node`))),D(i,(x(n),F(()=>x(n).promoted?`pin ✓`:`pin`)))}),O(`click`,t,()=>Oe(x(n))),E(e,t)};Z(f,e=>{x(n),F(()=>!x(n).options?.action&&x(n).options?.promotable!==!1)&&e(p)}),o(a),t(a,(e,t)=>je?.(e,t),()=>x(n).name),E(e,a)}),E(e,n)}),E(e,n)};Z(u,e=>{x(c),F(()=>x(c).params)&&e(d)}),o(n),K(()=>{D(a,(x(c),F(()=>x(c).params?`▾`:`▸`))),D(l,(x(p),F(()=>x(p).length)))}),O(`click`,r,()=>ge(T().id,`params`)),E(e,n)};Z(ee,e=>{x(p),F(()=>x(p).length>0)&&e(k)});var ne=P(ee,2),j=e=>{var t=Tx(),n=M(t),r=M(n),i=q(r,!0),a=P(r,2),s=q(a,!0);o(n);var l=P(n,2),d=e=>{var t=te(),n=G(t);S(n,()=>(A(T()),x(xe),x(b),x(U),F(()=>`${T().id}-${x(xe)}-${x(b)}-${x(U)}`)),e=>{var t=te(),n=G(t);f(n,1,()=>x(u),e=>e.id,(e,t)=>{Ry(e,{get port(){return x(t)},get node(){return T()},direction:`output`,onChange:void 0})}),E(e,t)}),E(e,t)};Z(l,e=>{x(c),F(()=>x(c).outputs)&&e(d)}),o(t),K(()=>{D(i,(x(c),F(()=>x(c).outputs?`▾`:`▸`))),D(s,(x(u),F(()=>x(u).length)))}),O(`click`,n,()=>ge(T().id,`outputs`)),E(e,t)};Z(ne,e=>{x(u),F(()=>x(u).length>0)&&e(j)});var oe=P(ne,2),L=e=>{var t=Ex();E(e,t)};Z(oe,e=>{x(C),x(d),x(p),x(u),F(()=>x(C).length===0&&x(d).length===0&&x(p).length===0&&x(u).length===0)&&e(L)});var R=P(oe,2),se=e=>{var t=Dx(),n=M(t),r=q(n,!0);o(t),K(()=>D(r,(A(T()),F(()=>T().comment)))),E(e,t)};Z(R,e=>{A(T()),F(()=>T().comment)&&e(se)}),o(a),o(n),K(()=>i=v(n,1,`inspector svelte-1nytthg`,null,i,{left:N()===`left`,"no-animation":ie(),embedded:ae()})),E(e,n)};Z(at,e=>{A(k()),F(()=>k()&&k().type===`text`)?e(ot):(A(k()),F(()=>k()&&k().type===`line`)?e(st,1):(A(k()),F(()=>k()&&k().type===`polyline`)?e(ct,2):T()&&e(lt,3)))}),E(e,it),Ee(),s()}var Ax=u(`<span class="hint svelte-i5w4kg">collapsed, open one to edit it</span>`),jx=u(`<div class="body svelte-i5w4kg"><!></div>`),Mx=u(`<section class="section svelte-i5w4kg"><button class="section-heading svelte-i5w4kg"><span class="twisty svelte-i5w4kg"> </span> <span class="label svelte-i5w4kg"> </span> <span class="type svelte-i5w4kg"> </span></button> <!></section>`),Nx=u(`<div class="stack svelte-i5w4kg"><div class="summary svelte-i5w4kg"><span class="count"> </span> <!></div> <div class="sections svelte-i5w4kg"></div></div>`);function Px(e,t){ee(t,!1);let n=Y(),r=V(t,`nodes`,24,()=>[]),i=V(t,`annotation`,8,null),a=V(t,`graph`,8,null),s=V(t,`position`,8,`right`),c=V(t,`skipAnimation`,8,!1),l=V(t,`onRecordHistory`,8,void 0),u=V(t,`onAction`,8,void 0),d=new Map,p=Y(0);function m(e){d.set(e,!h(e,x(p),x(n))),L(p,x(p)+1)}function h(e,t,n){return d.get(e)??!n}function g(e){return e.id}J(()=>A(r()),()=>{L(n,r().length>12)}),he(),ue();var _=te(),v=G(_),y=e=>{{let t=pe(()=>(A(r()),F(()=>r()[0]??null)));kx(e,{get node(){return x(t)},get annotation(){return i()},get graph(){return a()},get position(){return s()},get skipAnimation(){return c()},get onRecordHistory(){return l()},get onAction(){return u()}})}},b=e=>{var t=Nx(),i=M(t),c=M(i),d=q(c),_=P(c,2),v=e=>{var t=Ax();E(e,t)};Z(_,e=>{x(n)&&e(v)}),o(i);var y=P(i,2);f(y,5,r,e=>e.id,(e,t)=>{let r=pe(()=>(x(t),x(p),x(n),F(()=>h(x(t).id,x(p),x(n)))));var i=Mx(),c=M(i),d=M(c),f=q(d,!0),_=P(d,2),v=q(_,!0),y=P(_,2),b=q(y,!0);o(c);var S=P(c,2),C=e=>{var n=jx();kx(M(n),{get node(){return x(t)},get graph(){return a()},get position(){return s()},skipAnimation:!0,embedded:!0,get onRecordHistory(){return l()},get onAction(){return u()}}),o(n),E(e,n)};Z(S,e=>{x(r)&&e(C)}),o(i),K(e=>{X(c,`aria-expanded`,x(r)),D(f,x(r)?`▾`:`▸`),D(v,e),D(b,(x(t),F(()=>x(t).type??``)))},[()=>(x(t),F(()=>g(x(t))))]),O(`click`,c,()=>m(x(t).id)),E(e,i)}),o(y),o(t),K(()=>D(d,`${A(r()),F(()=>r().length)??``} nodes selected`)),E(e,t)};Z(v,e=>{A(r()),F(()=>r().length<=1)?e(y):e(b,-1)}),E(e,_),Ee()}var Fx=u(`<div class="panel-wrapper svelte-z0ewp0"><!></div>`);function Ix(e,t){ee(t,!1);let n=()=>we(_a,`$panelLockStore`,a),r=()=>we(N_,`$selectedNodeIds`,a),i=()=>we(ga,`$sharedContextStore`,a),[a,s]=ne(),c=Y(),l=Y(),u=Y(),d=Y(),f=Y(),p=V(t,`panelId`,8),m=V(t,`panelApi`,8),h=V(t,`graph`,12,void 0),g=V(t,`selectedNode`,12,null),_=V(t,`selectedAnnotation`,12,null),v=V(t,`onRecordHistory`,12,void 0),y=V(t,`onPanelAction`,12,void 0),b=Y(null);J(()=>(n(),A(p())),()=>{L(c,n().get(p()))}),J(()=>x(c),()=>{L(l,x(c)?.isLocked??!1)}),J(()=>i(),()=>{i()&&(h(i().graph),g(i().selectedNode),_(i().selectedAnnotation),v(i().onRecordHistory),y(i().onPanelAction))}),J(()=>(x(l),x(c),A(g())),()=>{L(u,x(l)?x(c)?.lockedNode:g())}),J(()=>(x(l),x(c),A(_())),()=>{L(d,x(l)?x(c)?.lockedAnnotationId:_())}),J(()=>(x(l),x(u),A(h()),r(),A(g())),()=>{L(f,x(l)?x(u)?[x(u)]:[]:F_(h()??null,r(),g()))}),J(()=>(A(h()),x(d)),()=>{h()&&x(d)?L(b,h().getAnnotation(x(d))):L(b,null)}),J(()=>(A(m()),x(l),x(f),x(b)),()=>{if(m()?.setTitle){let e=x(l)?`~ `:``;x(f).length>1?m().setTitle(`${e}Parameters: ${x(f).length} nodes`):x(f).length===1?m().setTitle(`${e}Parameters: ${x(f)[0].id}`):x(b)?m().setTitle(`${e}Parameters: ${x(b).type}`):m().setTitle(`${e}Parameters`)}}),he(),ue();var S=Fx(),C=M(S);{let e=pe(()=>h()??null);Px(C,{get nodes(){return x(f)},get annotation(){return x(b)},get graph(){return x(e)},position:`right`,skipAnimation:!0,get onRecordHistory(){return v()},get onAction(){return y()}})}o(S),E(e,S),Ee(),s()}function Lx(e){let t=new Uint8Array(e);if(String.fromCharCode(...t.subarray(0,6))!==`NUMPY`)throw Error(`not a .npy file`);let n=new DataView(e),r=t[6],i=r>=2?n.getUint32(8,!0):n.getUint16(8,!0),a=r>=2?12:10,o=String.fromCharCode(...t.subarray(a,a+i)),s=o.match(/'descr':\s*'([^']+)'/)?.[1];if(!s)throw Error(`.npy header has no dtype`);if(/'fortran_order':\s*True/.test(o))throw Error(`Fortran-ordered .npy is not supported`);let c=(o.match(/'shape':\s*\(([^)]*)\)/)?.[1]??``).split(`,`).map(e=>e.trim()).filter(Boolean).map(Number),l=a+i,u=c.reduce((e,t)=>e*t,1);if(s===`<f4`||s===`=f4`)return{data:new Float32Array(e,l,u),shape:c,dtype:s};let d=(()=>{switch(s){case`<f8`:case`=f8`:return new Float64Array(e,l,u);case`|u1`:case`<u1`:case`=u1`:case`|b1`:return new Uint8Array(e,l,u);case`|i1`:return new Int8Array(e,l,u);case`<i2`:return new Int16Array(e,l,u);case`<u2`:return new Uint16Array(e,l,u);case`<i4`:return new Int32Array(e,l,u);case`<u4`:return new Uint32Array(e,l,u);default:throw Error(`.npy dtype ${s} is not supported`)}})();return{data:d instanceof Float64Array?d:Float64Array.from(d),shape:c,dtype:s}}var Rx=1400,zx=1e5;function Bx(e,t,n){t<e.minX&&(e.minX=t),n<e.minY&&(e.minY=n),t>e.maxX&&(e.maxX=t),n>e.maxY&&(e.maxY=n)}function Vx(){return{minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}async function Hx(e){if(e&&typeof e==`object`&&e.kind===`geometry-file`){let t=e;if(t.format!==`npy`||t.attribute?.level!==`point`||t.attribute?.name!==`P`)return[];e=t.path}if(typeof e==`string`){if(!e.endsWith(`.npy`))return[];let t=e.replace(/^\.?\//,``),n=await fetch(`/api/media/${t.split(`/`).map(encodeURIComponent).join(`/`)}?raw=1`);if(!n.ok)return[];let r=Lx(await n.arrayBuffer()),i=r.shape.length>1?r.shape[1]:1;if(i<2)return[];let a=[];for(let e=0;e+1<r.data.length;e+=i)a.push([r.data[e],r.data[e+1]]);return a}let t=Array.isArray(e)?e:e?.points;return Array.isArray(t)?t.map(e=>Array.isArray(e)?e:e?.point??e?.position).filter(e=>Array.isArray(e)&&e.length>=2).map(e=>[Number(e[0]),Number(e[1])]):[]}function Ux(e){let t=Array.isArray(e)?e:e?.polylines??e?.paths;return Array.isArray(t)?t.map(e=>{let t=Array.isArray(e)?e:e?.points??e?.path;return Array.isArray(t)?t.filter(e=>Array.isArray(e)&&e.length>=2).map(e=>[Number(e[0]),Number(e[1])]):null}).filter(e=>!!(e&&e.length>1)):[]}function Wx(e){let t=Array.isArray(e)?e:e?.segments??e?.lines;if(!Array.isArray(t))return[];let n=[];for(let e of t)Array.isArray(e)&&(e.length>=4&&typeof e[0]==`number`?n.push([[Number(e[0]),Number(e[1])],[Number(e[2]),Number(e[3])]]):Array.isArray(e[0])&&e.length>=2&&n.push(e.slice(0,2).map(e=>[Number(e[0]),Number(e[1])])));return n}async function Gx(e,t){let n=Vx(),r=t===`geometry`?pv(e,zx):null,i=t===`geometry`?r?.points??[]:t===`points`?await Hx(e):[],a=t===`geometry`?r?.paths??[]:t===`polyline`?Ux(e):[],o=t===`lines`?Wx(e):[],s=t===`rects`?Array.isArray(e)?e:e?.rects:[],c=Array.isArray(s)?s.map(e=>Array.isArray(e)?e:e?.rect??[e?.x,e?.y,e?.width,e?.height]).filter(e=>Array.isArray(e)&&e.length>=4&&e.every(Number.isFinite)):[];if(i.forEach(([e,t])=>Bx(n,e,t)),a.forEach(e=>e.forEach(([e,t])=>Bx(n,e,t))),o.forEach(e=>e.forEach(([e,t])=>Bx(n,e,t))),c.forEach(([e,t,r,i])=>{Bx(n,e,t),Bx(n,e+r,t+i)}),!Number.isFinite(n.minX)||!Number.isFinite(n.maxX))return null;let l=Math.max(n.maxX-n.minX,1),u=Math.max(n.maxY-n.minY,1),d=Rx/Math.max(l,u),f=Math.max(1,Math.round(l*d)),p=Math.max(1,Math.round(u*d)),m=document.createElement(`canvas`);m.width=f,m.height=p;let h=m.getContext(`2d`);if(!h)return null;h.fillStyle=`#ffffff`,h.fillRect(0,0,f,p);let g=e=>(e-n.minX)*d,_=e=>(t===`geometry`?n.maxY-e:e-n.minY)*d;h.fillStyle=`#111111`,h.strokeStyle=`#111111`,h.lineWidth=1;let v=i.length>4e3?.6:i.length>800?1:1.8;for(let[e,t]of i)h.beginPath(),h.arc(g(e),_(t),v,0,Math.PI*2),h.fill();for(let e of a)h.beginPath(),e.forEach(([e,t],n)=>n===0?h.moveTo(g(e),_(t)):h.lineTo(g(e),_(t))),h.stroke();for(let[e,t]of o)h.beginPath(),h.moveTo(g(e[0]),_(e[1])),h.lineTo(g(t[0]),_(t[1])),h.stroke();for(let[e,t,n,r]of c)h.strokeRect(g(e),_(t),n*d,r*d);let y=t===`geometry`?r?.summary??`No geometry`:t===`points`?`${i.length.toLocaleString()} points`:t===`polyline`?`${a.length.toLocaleString()} chains · ${a.reduce((e,t)=>e+t.length,0).toLocaleString()} vertices`:t===`lines`?`${o.length.toLocaleString()} segments`:`${c.length.toLocaleString()} rects`;return!i.length&&!a.length&&!o.length&&!c.length?null:{url:m.toDataURL(`image/png`),width:f,height:p,summary:y}}var Kx=2e5;function qx(e){if(!e)return`none`;let t=e.length;if(t===0)return`empty`;let n=t>Kx?Math.ceil(t/Kx):1,r=2166136261;for(let i=0;i<t;i+=n){let t=e[i],n=Number.isFinite(t)?Math.round(t*4096)|0:2147483647;r^=n&255,r=Math.imul(r,16777619),r^=n>>>8&255,r=Math.imul(r,16777619),r^=n>>>16&255,r=Math.imul(r,16777619),r^=n>>>24&255,r=Math.imul(r,16777619)}return`${t}/${n}:${(r>>>0).toString(36)}`}function Jx(e){return!!e&&typeof e==`object`&&e.kind===`geometry`&&typeof e.pointCount==`number`}function Yx(e){let t=[`geometry:${e.pointCount}/${e.vertexCount??0}/${e.primitiveCount??0}`],n=e.point??{};for(let e of Object.keys(n).sort()){let r=n[e];t.push(`${e}${r?.size??``}=${qx(r?.data)}`)}return t.push(`t=${qx(e.topology?.offsets)}`),t.join(`|`)}function Xx(e){if(e===void 0)return`undefined`;if(e===null)return`null`;if(typeof e!=`object`)return`${typeof e}:${String(e).slice(0,80)}`;if(Jx(e))return Yx(e);if(e.kind===`geometry-file`)return`geometry-file:${e.path}:${e.pointCount??``}:${e.attribute?.name??``}`;if(ArrayBuffer.isView(e))return`buffer:${qx(e)}`;let t=eu(e);return t?`image:${t.path}:${t.size.join(`x`)}`:Array.isArray(e)?`array:${e.length}`:`object:${e.width??``}x${e.height??``}:${e.size?.join?.(`x`)??``}`}function Zx(e){return[e.nodeId??`view`,e.portId??`port`,e.kind,e.cookVersion,Xx(e.value)].join(`:`)}var Qx=u(`<button><span class="output-dot svelte-1p3xo7r"></span> </button>`),$x=u(`<div class="output-switcher svelte-1p3xo7r" aria-label="Node outputs"></div>`),eS=u(`<div class="typed-viewer svelte-1p3xo7r"><!></div>`),tS=u(`<div class="viewer-wrapper svelte-1p3xo7r"><!> <div></div> <!></div>`);function nS(e,t){ee(t,!1);let n=Y(),r=Y(),i=Y(),s=V(t,`graph`,8),c=V(t,`selectedNode`,8,null),l=V(t,`selectedAnnotation`,8,null),u=Y(),d=Y(`empty`),p=Y(null),m=Y(null),h=Y(null),g=Y(0),_=Y(0),y=``,b=Y(null),C=Y(null),w=Y(null),T=new Map,te=/\.(png|jpe?g|webp|gif|tiff?|avif|svg|npy)$/i,k=[`path`,`preview`,`image`,`png_path`,`output`,`svg_path`,`field`,`mask`,`height`,`shading`,`density`,`points`];function ne(e){return x(p)?.outputs?.filter(e=>e.value!==void 0)??[]}function j(){let e=x(p)?`${x(p).id}:${x(p).cookInfo?.cookCount??0}:${x(p).outputs?.map(e=>`${e.id}=${Xx(e.value)}`).join(`|`)}`:``;e!==y&&(y=e,L(_,x(_)+1),re())}function re(){let e=x(u)?.querySelector(`img[data-cascade-src]`);if(!e||e.dataset.cascadeSrc!==ce())return;let t=e[le];typeof t==`function`&&e.dataset.cascadeVersion!==String(x(_))&&t(x(_))}function N(e){let t=eu(e);return t&&(typeof e!=`string`||te.test(t.path))?t.path:null}function ie(e){if(!e?.outputs)return null;if(e===x(p)&&x(r)){let e=N(x(r).value);if(e)return e}let t=k.map(t=>e.outputs.find(e=>e.name===t)).find(e=>N(e?.value));if(t)return N(t.value);let n=e.outputs.find(e=>N(e?.value));return n?N(n.value):null}function ae(){let e=x(u)?.clientWidth||800,t=Math.min(window.devicePixelRatio||1,2);return Math.max(320,Math.min(3e3,Math.round(e*t)))}function I(){if(!x(u)||!x(p))return;oe(u,x(u).innerHTML=``);let e=null,t=x(r);if(t?.value&&(t.value instanceof HTMLCanvasElement?e=t.value:t.value instanceof og&&(e=t.value.toCanvas())),!e&&x(p).preview instanceof HTMLCanvasElement&&(e=x(p).preview),e){let t=document.createElement(`div`);t.className=`canvas-viewer`,t.style.width=`100%`,t.style.height=`100%`,t.style.display=`flex`,t.style.alignItems=`center`,t.style.justifyContent=`center`,t.style.background=`var(--surface-void)`;let n=document.createElement(`img`);n.src=e.toDataURL(),n.style.maxWidth=`100%`,n.style.maxHeight=`100%`,n.style.objectFit=`contain`,t.appendChild(n),x(u).appendChild(t)}}let R=new Set([`geometry`,`points`,`lines`,`polyline`,`rects`]),z=Y(null),se=``;async function B(e,t,n){let r=Zx({nodeId:x(p)?.id,portId:e?.id,kind:t,value:e?.value,cookVersion:n});if(r!==se){se=r;try{let n=await Gx(e.value,t);L(z,n?.url??null),n?.summary}catch(e){console.warn(`[Viewer] could not draw geometry:`,e),L(z,null)}x(z)&&U()}}function ce(){return x(m)||!x(p)||x(p).preview instanceof HTMLImageElement?null:x(z)&&R.has(x(i))?x(z):ie(x(p))}let le=`__cascadeRefreshVersion`;function H(e,t,n){e.style.position=`relative`,e.style.overflow=`hidden`,e.style.cursor=`grab`;let r=n,i=document.createElement(`img`);i.alt=t,i.draggable=!1,i.dataset.cascadeSrc=t,i.dataset.cascadeVersion=String(n??0),i.style.cssText=`position:absolute;top:0;left:0;transform-origin:0 0;user-select:none;visibility:hidden;max-width:100%;max-height:100%;`,e.appendChild(i);let a=document.createElement(`div`);a.style.cssText=`position:absolute;left:8px;bottom:8px;display:flex;gap:6px;align-items:center;font-size:11px;color:var(--text-tertiary);background:var(--shade-strong);padding:3px 8px;border-radius:4px;`,e.appendChild(a);let o=document.createElement(`span`);a.appendChild(o);function s(e,t){let n=document.createElement(`button`);return n.textContent=e,n.style.cssText=`background:none;border:1px solid var(--border);border-radius:3px;color:var(--text-tertiary);font-size:10px;padding:1px 5px;cursor:pointer;`,n.addEventListener(`mousedown`,e=>e.stopPropagation()),n.addEventListener(`click`,e=>{e.stopPropagation(),t()}),a.appendChild(n),n}let c={width:0,height:0},l=1,u=1,d={x:0,y:0},f=0,m=`${x(p)?.id??`view`}:${t}`,h=T.get(m),g=h?.userAdjusted??!1;function _(){T.set(m,{scale:u,offset:{...d},fitScale:l,userAdjusted:g})}function v(){return{width:e.clientWidth||1,height:e.clientHeight||1}}function y(){i.style.maxWidth=`none`,i.style.maxHeight=`none`,i.style.visibility=`visible`}function b(){i.style.width=c.width+`px`,i.style.height=c.height+`px`,i.style.transform=`translate(`+d.x+`px,`+d.y+`px) scale(`+u+`)`,o.textContent=Math.round(u*100)+`%`;let e=Math.min(c.width,Math.ceil(c.width*u*1.2));c.width&&e>f*1.25&&(f=e,i.src=_v(t,{width:e,version:r}))}function S(){let e=v();!c.width||!c.height||(l=Math.min(e.width/c.width,e.height/c.height),u=l,d={x:(e.width-c.width*u)/2,y:(e.height-c.height*u)/2},g=!1,y(),b(),_())}function C(e,t,n){g=!0;let r=u,i=Math.max(l/8,Math.min(l*20,e));i!==r&&(d.x=t-(t-d.x)*i/r,d.y=n-(n-d.y)*i/r,u=i,b(),_())}let w=1.25;function ee(e){let t=v();C(u*e,t.width/2,t.height/2)}function E(){if(!c.width||u===1)return;let e=v(),t=e.width/2,n=e.height/2;d.x=t-(t-d.x)/u,d.y=n-(n-d.y)/u,u=1,g=!0,b(),_()}function D(e,t){g=!0,d.x+=e,d.y+=t,b(),_()}e.addEventListener(`wheel`,t=>{t.preventDefault();let n=e.getBoundingClientRect();C(u*Math.exp(-t.deltaY*.0015),t.clientX-n.left,t.clientY-n.top)},{passive:!1});let te=!1,O={x:0,y:0};e.addEventListener(`pointerdown`,t=>{t.target?.closest(`button, a`)||(te=!0,O={x:t.clientX,y:t.clientY},e.style.cursor=`grabbing`,e.setPointerCapture(t.pointerId),t.preventDefault())}),e.addEventListener(`pointermove`,e=>{te&&(g=!0,d.x+=e.clientX-O.x,d.y+=e.clientY-O.y,O={x:e.clientX,y:e.clientY},b(),_())});let k=t=>{te&&(te=!1,e.style.cursor=`grab`,e.hasPointerCapture(t.pointerId)&&e.releasePointerCapture(t.pointerId))};e.addEventListener(`pointerup`,k),e.addEventListener(`pointercancel`,k),e.addEventListener(`dblclick`,()=>S()),e.tabIndex=0,e.style.outline=`none`,e.addEventListener(`pointerenter`,()=>{let t=document.activeElement;t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable)||e.focus({preventScroll:!0})}),e.addEventListener(`keydown`,e=>{if(e.altKey)return;let t=e.shiftKey?200:40,n=!0;e.key===`h`||e.key===`H`?S():e.key===`+`||e.key===`=`||e.code===`NumpadAdd`?ee(w):e.key===`-`||e.key===`_`||e.code===`NumpadSubtract`?ee(1/w):e.key===`0`||e.code===`Numpad0`?E():e.key===`ArrowLeft`?D(t,0):e.key===`ArrowRight`?D(-t,0):e.key===`ArrowUp`?D(0,t):e.key===`ArrowDown`?D(0,-t):n=!1,n&&(e.preventDefault(),e.stopPropagation())}),s(`Fit`,()=>S()).title=`Fit to panel (H)`,s(`1:1`,()=>E()).title=`Actual pixels, 100% (0)`;let A=document.createElement(`a`);A.textContent=`Original`,A.href=_v(t,{raw:!0,version:n}),A.target=`_blank`,A.rel=`noopener`,A.title=t,A.style.cssText=`color:var(--syntax-variable);text-decoration:none;font-size:10px;`,A.addEventListener(`mousedown`,e=>e.stopPropagation()),a.appendChild(A),i[le]=e=>{r=e,i.dataset.cascadeVersion=String(e),i.src=_v(t,{width:f||ae(),version:e}),A.href=_v(t,{raw:!0,version:e})},i.addEventListener(`load`,()=>{c.width||(c={width:i.naturalWidth,height:i.naturalHeight},h&&h.userAdjusted?(u=h.scale,l=h.fitScale,d={...h.offset},y(),b()):S())}),new ResizeObserver(()=>{c.width&&(g||S())}).observe(e),f=ae(),i.src=_v(t,{width:f,version:n})}function U(){if(!x(u))return;let e=x(u).querySelector(`img[data-cascade-src]`),t=ce();if(e&&t&&e.dataset.cascadeSrc===t){re();return}oe(u,x(u).innerHTML=``);let n=null,a=null;if(x(m)&&x(m).type===`Image`){let e=x(m).outputs?.find(e=>e.name===`image`);e?.value instanceof HTMLImageElement?n=e.value:a=x(m).src}else if(x(p)){if(x(p).preview instanceof HTMLImageElement)n=x(p).preview;else{let e=x(r);e?.value instanceof HTMLImageElement?n=e.value:a=(R.has(x(i))?x(z):null)??N(e?.value)??ie(x(p))}}let o=document.createElement(`div`);if(o.className=`image-viewer`,o.style.width=`100%`,o.style.height=`100%`,o.style.display=`flex`,o.style.alignItems=`center`,o.style.justifyContent=`center`,o.style.background=`var(--surface-void)`,n){let e=n.cloneNode(!0);e.style.maxWidth=`100%`,e.style.maxHeight=`100%`,e.style.objectFit=`contain`,o.appendChild(e)}else a&&H(o,a,x(_));x(u).appendChild(o)}function de(){if(!x(u))return;oe(u,x(u).innerHTML=``);let e=null;if(x(m)&&x(m).type===`Text`)e=x(m).content||``;else if(x(p)){if(x(p).preview&&!(x(p).preview instanceof HTMLElement))e=x(p).preview;else{let t=x(r);t?.value!==void 0&&(e=t.value)}}if(e!==null){let t=document.createElement(`div`);t.className=`text-viewer`,t.style.width=`100%`,t.style.height=`100%`,t.style.padding=`16px`,t.style.overflow=`auto`,t.style.background=`var(--surface-void)`,t.style.color=`var(--text-bright)`,t.style.fontFamily=`Monaco, Menlo, monospace`,t.style.fontSize=`12px`,t.style.lineHeight=`1.6`;let n=``;if(typeof e==`object`)try{n=JSON.stringify(e,null,2)}catch{n=String(e)}else n=String(e);let r=document.createElement(`pre`);r.style.margin=`0`,r.style.whiteSpace=`pre-wrap`,r.style.wordBreak=`break-word`,r.textContent=n,t.appendChild(r),x(u).appendChild(t)}}function fe(){if(!x(u))return;oe(u,x(u).innerHTML=``);let e=document.createElement(`div`);e.className=`empty-viewer`;let t=document.createElement(`p`);t.textContent=`No preview available`,e.appendChild(t);let n=document.createElement(`p`);n.className=`hint`,n.textContent=`Select a node or annotation to view its content`,e.appendChild(n),x(u).appendChild(e)}function pe(){if(x(m)){if(x(m).type===`Image`){let e=x(m).outputs?.find(e=>e.name===`image`);return e?.value instanceof HTMLImageElement?`img:${e.value.src}`:`img:${x(m).src||`none`}`}return x(m).type===`Text`?`text:${x(m).content||``}`:null}if(!x(p))return null;let e=x(r);if(e?.value instanceof HTMLCanvasElement)return`canvas:${e.value.width}x${e.value.height}:${x(p).id}:${x(p).cookInfo?.cookCount??0}`;if(e?.value instanceof HTMLImageElement)return`img:${e.value.src}`;if(R.has(x(i))&&e?.value!==void 0)return B(e,x(i),x(_)),x(z)?`geometry:${se}`:`data:${e.id}:${Xx(e.value)}`;if(e?.value!==void 0)return`data:${e.id}:${Xx(e.value)}`;if(x(p).preview instanceof HTMLCanvasElement)return`canvas:${x(p).preview.width}x${x(p).preview.height}:${x(p).id}`;if(x(p).preview instanceof HTMLImageElement)return`img:${x(p).preview.src}`;if(x(p).preview){let e=x(p).preview;return`preview:${Xx(e)}`}return null}function me(){if((x(p)||x(m))&&x(d)!==`empty`){let e=x(p)?.id||x(m)?.id||null,t=pe();(e!==x(b)||x(d)!==x(w)||t!==x(C))&&(L(b,e),L(w,x(d)),L(C,t),x(d)===`canvas`?I():x(d)===`image`?U():x(d)===`text`?de():x(d)===`typed`&&L(g,x(g)+1))}}let W=!1;function G(){x(d)===`canvas`?I():x(d)===`image`?U():x(d)===`text`?de():x(d)===`typed`&&L(g,x(g)+1)}async function _e(){if(x(p)&&x(p).isDirty&&!W){W=!0;try{await x(p).requestOutput(),j(),G()}finally{W=!1}}else j(),me()}let ve=null,be=Y(0);function q(){ve===null&&(ve=requestAnimationFrame(xe))}function xe(){ve=null;let e=performance.now();e-x(be)>=100&&(L(be,e),_e()),(x(p)||x(m))&&q()}ye(()=>(q(),()=>{ve!==null&&(cancelAnimationFrame(ve),ve=null)})),J(()=>(A(l()),A(c()),A(s())),()=>{if(l())L(m,l()),L(p,null);else if(c())L(p,c()),L(m,null);else if(s()){let e=Array.from(s().cookingNodes||[]);e.length>0?L(p,e[0]):L(p,null),L(m,null)}else L(p,null),L(m,null)}),J(()=>A(s()),()=>{s()&&s().cookingNodes?.size}),J(()=>x(_),()=>{L(n,ne(x(_)))}),J(()=>(x(n),x(h)),()=>{if(!x(n).find(e=>e.id===x(h))){let e=k.map(e=>x(n).find(t=>t.name===e)).find(Boolean);L(h,e?.id??x(n)[0]?.id??null)}}),J(()=>(x(n),x(h)),()=>{L(r,x(n).find(e=>e.id===x(h))??null)}),J(()=>(x(r),gv),()=>{L(i,x(r)?Yl(x(r).dataType)===`any`?gv(x(r).value):Yl(x(r).dataType):`any`)}),J(()=>(x(m),x(p),x(_),x(r),x(i),x(z)),()=>{if(x(m)){let e=x(m).type;e===`Image`?x(m).outputs?.find(e=>e.name===`image`)?.value instanceof HTMLImageElement||x(m).src?L(d,`image`):L(d,`empty`):e===`Text`?L(d,`text`):L(d,`empty`)}else if(!x(p))L(d,`empty`);else{x(_);let e=x(r);e&&e.value!==void 0?e.value instanceof HTMLCanvasElement||e.value instanceof og?L(d,`canvas`):e.value instanceof HTMLImageElement||x(i)===`image`&&N(e.value)||R.has(x(i))&&x(z)?L(d,`image`):L(d,`typed`):x(p).preview?x(p).preview instanceof HTMLCanvasElement?L(d,`canvas`):x(p).preview instanceof HTMLImageElement?L(d,`image`):L(d,`text`):ie(x(p))||R.has(x(i))?L(d,`image`):L(d,`empty`)}}),J(()=>(x(r),x(i),x(_)),()=>{x(r)&&R.has(x(i))&&B(x(r),x(i),x(_))}),J(()=>(x(p),x(m),x(d),x(u)),()=>{x(p),x(m),L(b,null),L(C,null),L(w,null),x(d)===`canvas`?I():x(d)===`image`?U():x(d)===`text`?de():x(d)===`typed`?x(u)&&oe(u,x(u).innerHTML=``):fe()}),J(()=>x(p),()=>{x(p)&&(L(be,0),q())}),he(),ue();var Se=tS(),Ce=M(Se),we=e=>{var t=$x();f(t,5,()=>x(n),e=>e.id,(e,t)=>{var n=Qx();let r;var i=M(n),s=P(i);o(n),K((e,o)=>{X(n,`title`,e),r=v(n,1,`svelte-1p3xo7r`,null,r,{active:x(t).id===x(h)}),a(i,`background:${o??``}`),D(s,` ${x(t),F(()=>x(t).name)??``}`)},[()=>(x(t),A(Yl),F(()=>`${x(t).name}: ${Yl(x(t).dataType)}`)),()=>(A(Ql),x(t),F(()=>Ql(x(t).dataType)))]),O(`click`,n,()=>L(h,x(t).id)),E(e,n)}),o(t),E(e,t)};Z(Ce,e=>{x(n),F(()=>x(n).length>1)&&e(we)});var Te=P(Ce,2);let De;ge(Te,e=>L(u,e),()=>x(u));var Oe=P(Te,2),ke=e=>{var t=eS(),n=M(t);S(n,()=>(x(r),x(g),F(()=>`${x(r).id}-${x(g)}`)),e=>{Fy(e,{get type(){return x(i)},get value(){return x(r),F(()=>x(r).value)},get port(){return x(r)},get node(){return x(p)},mode:`view`,get version(){return x(_)},readOnly:!0})}),o(t),E(e,t)};Z(Oe,e=>{x(d)===`typed`&&x(r)&&e(ke)}),o(Se),K(()=>De=v(Te,1,`viewer svelte-1p3xo7r`,null,De,{hidden:x(d)===`typed`})),E(e,Se),Ee()}var rS=u(`<div class="panel-wrapper svelte-1qtykx5"><!></div>`);function iS(e,t){ee(t,!1);let n=()=>we(_a,`$panelLockStore`,i),r=()=>we(ga,`$sharedContextStore`,i),[i,a]=ne(),s=Y(),c=Y(),l=Y(),u=V(t,`panelId`,8),d=V(t,`panelApi`,8),f=V(t,`graph`,12,void 0),p=V(t,`selectedNode`,12,null),m=V(t,`selectedAnnotationId`,12,null),h=Y(null);J(()=>(n(),A(u())),()=>{L(s,n().get(u()))}),J(()=>x(s),()=>{L(c,x(s)?.isLocked??!1)}),J(()=>r(),()=>{r()&&(f(r().graph),p(r().selectedNode),m(r().selectedAnnotation))}),J(()=>(x(c),x(s),A(p())),()=>{L(l,x(c)?x(s)?.lockedNode:p())}),J(()=>(A(m()),A(f())),()=>{m()&&f()?L(h,f().getAnnotation(m())):L(h,null)}),J(()=>(A(d()),x(c),x(l),x(h)),()=>{if(d()?.setTitle){let e=x(c)?`~ `:``;x(l)?d().setTitle(`${e}Viewer: ${x(l).id}`):x(h)?d().setTitle(`${e}Viewer: ${x(h).caption||x(h).type}`):d().setTitle(`${e}Viewer`)}}),he(),ue();var g=rS();nS(M(g),{get graph(){return f()},get selectedNode(){return x(l)},get selectedAnnotation(){return x(h)}}),o(g),E(e,g),Ee(),a()}var aS=u(`<span class="log-source svelte-1hh17sz"> </span>`),oS=u(`<div><!> <span> </span></div>`),sS=u(`<div class="log svelte-1hh17sz"><div class="log-content svelte-1hh17sz"><!></div></div>`);function cS(e,t){ee(t,!1);let n=Y([]),r=Y(),i=!0,a;function s(e,t){let n=null,r=t;if(t.length>0&&typeof t[0]==`string`){let e=t[0].match(/^\[([^\]]+)\]/);e&&(n=e[1],r=t.slice(1))}let i=r.map(e=>{if(typeof e==`object`)try{return JSON.stringify(e,null,2)}catch{return String(e)}return String(e)}).join(` `);return{source:n,formatted:i}}function c(e,...t){let{source:o,formatted:c}=s(e,t),l={id:`log_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,timestamp:new Date,level:e,source:o,args:t,formatted:c};L(n,[...x(n),l]),x(n).length>1e3&&L(n,x(n).slice(-1e3)),a&&a[e](...t),i&&x(r)&&setTimeout(()=>{x(r)&&oe(r,x(r).scrollTop=x(r).scrollHeight)},0)}function l(){x(r)&&(i=x(r).scrollHeight-x(r).scrollTop<=x(r).clientHeight+10)}function u(){L(n,[])}ye(()=>{a={log:console.log.bind(console),warn:console.warn.bind(console),error:console.error.bind(console)},console.log=(...e)=>{c(`log`,...e)},console.warn=(...e)=>{c(`warn`,...e)},console.error=(...e)=>{c(`error`,...e)},x(r)&&x(r).addEventListener(`scroll`,l)}),me(()=>{a&&(console.log=a.log,console.warn=a.warn,console.error=a.error),x(r)&&x(r).removeEventListener(`scroll`,l)});var d={clearLog:u};ue();var p=sS(),m=M(p),h=M(m),g=e=>{var t=te(),r=G(t);f(r,1,()=>x(n),e=>e.id,(e,t)=>{var n=oS();let r;var i=M(n),a=e=>{var n=aS(),r=q(n);K(()=>D(r,`[${x(t).source??``}]`)),E(e,n)};Z(i,e=>{x(t).source&&e(a)});var s=P(i,2);let c;var l=q(s,!0);o(n),K(()=>{r=v(n,1,`log-entry svelte-1hh17sz`,null,r,{error:x(t).level===`error`,warn:x(t).level===`warn`}),c=v(s,1,`log-message svelte-1hh17sz`,null,c,{error:x(t).level===`error`,warn:x(t).level===`warn`}),D(l,x(t).formatted)}),E(e,n)}),E(e,t)};return Z(h,e=>{x(n).length>0&&e(g)}),o(m),ge(m,e=>L(r,e),()=>x(r)),o(p),E(e,p),se(t,`clearLog`,u),Ee(d)}var lS=u(`<div class="panel-wrapper svelte-19qho59"><!></div>`);function uS(e,t){ee(t,!1);let n=Y(null);function r(){x(n)?.clearLog&&x(n).clearLog()}var i={clearLog:r},a=lS(),s=M(a);return ge(cS(s,{$$legacy:!0}),e=>L(n,e),()=>x(n)),o(a),E(e,a),se(t,`clearLog`,r),Ee(i)}var dS=class extends Error{constructor(e,t=null,n=null){super(e),this.hint=t,this.code=n,this.name=`AgentUnavailableError`}},fS=null;async function pS(){if(fS)return fS;let e=await fetch(`/api/agent/capability`);if(e.status===404)throw new dS(`The agent console is disabled on this server. It is available only on a loopback server or one started with an explicit trusted host.`);if(!e.ok)throw new dS(`Could not start an agent session (${e.status})`);let{capability:t}=await e.json();if(typeof t!=`string`||!t)throw new dS(`Server issued no agent capability`);return fS=t,t}async function mS(e,t){let n=e=>({...t.headers??{},"X-Cascade-Agent-Capability":e}),r=await fetch(e,{...t,headers:n(await pS())});return r.status===403&&(fS=null,r=await fetch(e,{...t,headers:n(await pS())})),r}async function hS(e){let t=await mS(`/api/agent/status${e?`?sketch=${encodeURIComponent(e)}`:``}`,{method:`GET`});if(!t.ok)throw new dS(`Could not read agent status (${t.status})`);let n=await t.json();return{root:String(n?.root??``),agents:Array.isArray(n?.agents)?n.agents:[],sessions:Array.isArray(n?.sessions)?n.sessions:[]}}async function gS(e,t){let n=await mS(`/api/agent/cancel`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({agent:e,sketch:t})});return n.ok?(await n.json().catch(()=>null))?.cancelled===!0:!1}async function _S(e,t){await mS(`/api/agent/reset`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({agent:e,sketch:t})})}async function vS(e){let t=await mS(`/api/agent/attach`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({agent:e.agent,sketch:e.sketch,since:e.since??0}),signal:e.signal});if(!t.ok){let e=await t.json().catch(()=>null);throw new dS(String(e?.error??`Could not reconnect to the agent (${t.status})`))}await bS(t,e.onEvent)}async function yS(e){let t=await mS(`/api/agent/prompt`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({agent:e.agent,sketch:e.sketch,prompt:e.prompt}),signal:e.signal});if(!t.ok){let e=await t.json().catch(()=>null);throw new dS(String(e?.error??`Agent request failed (${t.status})`),e?.hint??null,e?.code??null)}await bS(t,e.onEvent)}async function bS(e,t){if(!e.body)throw new dS(`Agent produced no stream`);let n=e.body.getReader(),r=new TextDecoder,i=``;for(;;){let{value:e,done:a}=await n.read();if(a)break;i+=r.decode(e,{stream:!0});let o=i.split(`
|
|
203
|
-
`);i=o.pop()??``;for(let e of o)
|
|
204
|
-
`);return t?{kind:e.every(e=>e.startsWith(`· `))?`tool`:`text`,text:t}:null}if(n?.type===`user`)return null;if(n?.type===`result`){let e=typeof n.result==`string`&&n.result.trim()?n.result.trim():null;return e?{kind:`result`,text:e}:null}return typeof n?.type==`string`?{kind:`detail`,text:t}:{kind:`raw`,text:t}}function
|
|
205
|
-
`))){L(Ie,!0),clearTimeout(Le),Le=setTimeout(()=>L(Ie,!1),1200);return}we(`error`,`Could not reach the clipboard. Select the transcript and copy it by hand.`)}function ze(t){if(!t)return;let n=x(I)?.selectionStart??x(g).length,r=x(g).slice(0,n),i=x(g).slice(n),a=r&&!/\s$/.test(r)?` `:``;L(g,`${r}${a}${t}${i}`),e().then(()=>{x(I)?.focus();let e=(r+a+t).length;x(I)?.setSelectionRange(e,e)})}me(()=>{ne?.abort(),j?.abort(),clearTimeout(Le)}),J(()=>(x(S),x(m)),()=>{L(r,x(S).find(e=>e.alias===x(m))??null)}),J(()=>(x(b),x(ie)),()=>{L(i,x(b)||x(ie))}),J(()=>(x(k),x(r)),()=>{L(s,!x(k)||!!(x(r)?.configured&&x(r)?.resolved))}),J(()=>x(_),()=>{L(c,x(_).filter(e=>e.kind===`detail`).length)}),J(()=>(x(y),x(_)),()=>{L(u,x(y)?x(_):x(_).filter(e=>e.kind!==`detail`))}),he(),ue();var Be=BS();O(`keydown`,ce,pe),O(`dragend`,ce,()=>L(R,!1));let Ve;var He=M(Be),Ue=M(He);f(Ue,5,()=>p,h,(e,t)=>{var n=DS(),r=q(n,!0),i={};K(()=>{D(r,x(t)),i!==(i=x(t))&&(n.value=(n.__value=i)??``)}),E(e,n)}),o(Ue),T(Ue);var We=P(Ue,2),Q=e=>{var t=OS();E(e,t)};Z(We,e=>{x(W)||e(Q)});var Ge=P(We,4),Ke=e=>{var t=kS(),n=q(t);K(e=>D(n,`${e??``}%`),[()=>(x(H),F(()=>Math.round(x(H)*100)))]),O(`click`,t,()=>de(1)),E(e,t)};Z(Ge,e=>{x(H)!==1&&e(Ke)});var qe=P(Ge,2),Je=e=>{var t=AS(),n=q(t,!0);K(()=>D(n,x(Ie)?`✓`:`⧉`)),O(`click`,t,Re),E(e,t)};Z(qe,e=>{x(_),F(()=>x(_).length>0)&&e(Je)});var Ye=P(qe,2),Xe=e=>{var t=jS();O(`click`,t,Ae),E(e,t)},Ze=e=>{var t=MS();O(`click`,t,je),E(e,t)};Z(Ye,e=>{x(i)?e(Xe):e(Ze,-1)}),o(He);var $=P(He,2),Qe=e=>{var t=NS(),n=q(t,!0);K(()=>D(n,x(w))),E(e,t)},$e=e=>{var t=FS(),n=M(t),i=q(n,!0),a=P(n,2),s=e=>{var t=PS(),n=q(t);K(()=>D(n,`"commands": { "${x(m)??``}": "<path>" }`)),E(e,t)};Z(a,e=>{x(C),x(r),F(()=>x(C)&&!x(r)?.configured)&&e(s)}),o(t),K(()=>D(i,(x(r),x(m),F(()=>x(r)?.hint??`Command "${x(m)}" is not allowed.`)))),E(e,t)};Z($,e=>{x(w)?e(Qe):x(k)&&!x(s)&&e($e,1)});var et=P($,2),tt=M(et),nt=e=>{var t=IS(),n=M(t),r=e=>{var t=ve(`No project file is open, so there is nothing for an agent to edit.`);E(e,t)},i=e=>{var t=ve(`Say what the sketch should become. Drag in a node or a parameter for its exact path.`);E(e,t)};Z(n,e=>{x(W)?e(i,-1):e(r)}),o(t),E(e,t)};Z(tt,e=>{x(_),F(()=>x(_).length===0)&&e(nt)});var rt=P(tt,2);f(rt,1,()=>x(u),h,(e,t)=>{var n=te(),r=G(n),i=e=>{var n=LS();l(n,()=>(A(Uh),x(t),F(()=>Uh(x(t).text))),!0),o(n),K(()=>v(n,1,`entry ${x(t),F(()=>x(t).kind)??``} markdown`,`svelte-1cqop5k`)),E(e,n)},a=B(()=>(x(t),F(()=>d.has(x(t).kind)))),s=e=>{var n=RS(),r=q(n,!0);K(()=>{v(n,1,`entry ${x(t),F(()=>x(t).kind)??``}`,`svelte-1cqop5k`),D(r,(x(t),F(()=>x(t).text)))}),E(e,n)};Z(r,e=>{x(a)?e(i):e(s,-1)}),E(e,n)});var it=P(rt,2),at=e=>{var t=zS(),n=q(t);K(()=>D(n,`${x(y)?`Hide`:`Show`} ${x(c)??``} stream ${x(c)===1?`event`:`events`}`)),O(`click`,t,()=>L(y,!x(y))),E(e,t)};Z(it,e=>{x(c)>0&&e(at)}),o(et),ge(et,e=>L(ae,e),()=>x(ae));var ot=P(et,2),st=M(ot);z(st),ge(st,e=>L(I,e),()=>x(I));var ct=P(st,2);o(ot),o(Be),ge(Be,e=>L(se,e),()=>x(se)),K(e=>{Ve=v(Be,1,`console svelte-1cqop5k`,null,Ve,{"drop-active":x(R)}),a(Be,`--agent-zoom: ${x(H)??``}`),Ue.disabled=x(i),st.disabled=x(i),ct.disabled=e},[()=>(x(i),x(g),x(s),F(()=>x(i)||!x(g).trim()||!x(s)))]),Te(Ue,()=>x(m),e=>L(m,e)),Ce(st,()=>x(g),e=>L(g,e)),O(`keydown`,st,Me),O(`input`,st,X),O(`click`,ct,ke),O(`dragover`,Be,Pe),O(`dragleave`,Be,Fe),O(`drop`,Be,Ne),E(t,Be),Ee()}var HS={apiVersion:1,label:`Random`,description:`Generate a deterministic unit value from an explicit seed.`,icon:`Dice5`,runsOn:`portable`,inputs:{seed:{kind:`data`,type:`int`,default:0,description:`Integer seed. Equal seeds always produce equal values.`},sample:{kind:`data`,type:`int`,default:0,description:`Stable sample index within the seeded sequence.`}},outputs:{value:{kind:`data`,type:`float`,description:`Deterministic value in the half-open range [0, 1).`}}};function US(e,t=0){let n=((Math.trunc(e)^Math.imul(Math.trunc(t),2654435761))>>>0)+1831565813>>>0;return n=Math.imul(n^n>>>15,n|1),n^=n+Math.imul(n^n>>>7,n|61),((n^n>>>14)>>>0)/4294967296}function WS(e){e.outputs.value.set(US(e.inputs.seed,e.inputs.sample))}var GS={kind:`definition-v1`,moduleId:`cascade.core.Random`,definition:HS,loadExecute:async()=>WS},KS={apiVersion:1,label:`Remap`,description:`Map a number from one range into another.`,icon:`ArrowRightLeft`,runsOn:`portable`,inputs:{value:{kind:`data`,type:`float`,default:0},inMin:{kind:`data`,type:`float`,default:0},inMax:{kind:`data`,type:`float`,default:1},outMin:{kind:`data`,type:`float`,default:0},outMax:{kind:`data`,type:`float`,default:1}},outputs:{result:{kind:`data`,type:`float`}},props:{clamp:{type:`bool`,default:!1,label:`Clamp`,description:`Keep the normalized input between zero and one.`}}};function qS(e,t,n,r,i,a){if(t===n)return r;let o=(e-t)/(n-t);return r+(a?Math.min(1,Math.max(0,o)):o)*(i-r)}function JS(e){let{value:t,inMin:n,inMax:r,outMin:i,outMax:a}=e.inputs;e.outputs.result.set(qS(t,n,r,i,a,e.props.clamp))}var YS=Object.freeze([{kind:`definition-v1`,moduleId:`cascade.core.Subnet`,definition:{apiVersion:1,runsOn:`portable`,container:`subnet`,label:`Subnet`,description:`Contains a nested deterministic graph`,icon:`Folder`},loadExecute:async()=>()=>{}},{kind:`definition-v1`,moduleId:`cascade.core.Input`,definition:{apiVersion:1,runsOn:`portable`,label:`Input`,description:`Defines a public graph or subnet input`,icon:`LogIn`,inputs:{value:{kind:`data`,type:`any`,default:null}},outputs:{output:{kind:`data`,type:`any`}},props:{inputIndex:{type:`int`,default:0,min:0,step:1},inputName:{type:`string`,default:``},dataType:{type:`string`,default:`any`}}},loadExecute:async()=>({inputs:e,outputs:t})=>t.output.set(e.value)},{kind:`definition-v1`,moduleId:`cascade.core.Output`,definition:{apiVersion:1,runsOn:`portable`,label:`Output`,description:`Defines a public graph or subnet output`,icon:`LogOut`,inputs:{input:{kind:`data`,type:`any`,default:null}},outputs:{output:{kind:`data`,type:`any`}},props:{outputIndex:{type:`int`,default:0,min:0,step:1},outputName:{type:`string`,default:``},dataType:{type:`string`,default:`any`}}},loadExecute:async()=>({inputs:e,outputs:t})=>t.output.set(e.input)},{kind:`definition-v1`,moduleId:`cascade.core.Switch`,definition:{apiVersion:1,runsOn:`portable`,label:`Switch`,description:`Selects one input by index`,icon:`GitBranch`,inputs:{inputs:{kind:`data`,type:`any`,variadic:!0}},outputs:{output:{kind:`data`,type:`any`}},props:{index:{type:`int`,default:0,min:0,step:1}}},loadExecute:async()=>({inputs:e,outputs:t,props:n})=>{let r=e.inputs;if(!r.length){t.output.set(null);return}let i=Math.max(0,Math.min(n.index,r.length-1));t.output.set(r[i])}},{kind:`definition-v1`,moduleId:`cascade.core.Merge`,definition:{apiVersion:1,runsOn:`portable`,label:`Merge`,description:`Collects inputs into an array`,icon:`GitMerge`,inputs:{inputs:{kind:`data`,type:`any`,variadic:!0}},outputs:{output:{kind:`data`,type:`array`}},props:{append:{type:`bool`,default:!1}}},loadExecute:async()=>({inputs:e,outputs:t,props:n})=>{let r=e.inputs.filter(e=>e!==null);t.output.set(n.append&&Array.isArray(r[0])?[...r[0],...r.slice(1)]:r)}},{kind:`definition-v1`,moduleId:`cascade.core.Null`,definition:{apiVersion:1,runsOn:`portable`,label:`Null`,description:`Passes its input through unchanged`,icon:`Circle`,inputs:{input:{kind:`data`,type:`any`,default:null}},outputs:{output:{kind:`data`,type:`any`}}},loadExecute:async()=>({inputs:e,outputs:t})=>{t.output.set(e.input)}},{kind:`definition-v1`,moduleId:`cascade.core.Select`,definition:{apiVersion:1,runsOn:`portable`,label:`Select`,description:`Selects an array item by index`,icon:`ListFilter`,inputs:{array:{kind:`data`,type:`array`,default:[]}},outputs:{item:{kind:`data`,type:`any`},count:{kind:`data`,type:`int`}},props:{index:{type:`int`,default:0,min:0,step:1},wrap:{type:`bool`,default:!0}}},loadExecute:async()=>({inputs:e,outputs:t,props:n})=>{let r=e.array.length;if(t.count.set(r),!r){t.item.set(null);return}let i=n.wrap?(n.index%r+r)%r:Math.max(0,Math.min(n.index,r-1));t.item.set(e.array[i])}},GS,{kind:`definition-v1`,moduleId:`cascade.core.Remap`,definition:KS,loadExecute:async()=>JS}]);new Map(YS.map(e=>[e.moduleId,e]));function XS(e,t){throw TypeError(`geometry/${e}: ${t}`)}function ZS(e,t){return e[t]}function QS(e,t,n){if(e!==void 0)return Al(e)&&XS(`attribute-storage`,`${t} must be numeric`),n!==void 0&&!n.includes(e.size)&&XS(`attribute-size`,`${t} has size ${e.size}; expected ${n.join(` or `)}`),e}function $S(e,t,n=0){return e.data[t*e.size+n]}function eC(e,t){let n=Array(e.size);for(let r=0;r<e.size;r+=1)n[r]=e.data[t*e.size+r];return n}function tC(e,t){let n=e.data[t];return n<0?``:e.table[n]??``}function nC(e){return e.point.P.size}function rC(e){return e.point.P}function iC(e,t){return eC(rC(e),t)}function aC(e,t,n=`f64`,r){let i=Ol(n,t*e);if(r!==void 0){let n=typeof r==`number`?[r]:r;for(let r=0;r<e;r+=1)for(let e=0;e<t;e+=1)i[r*t+e]=n[e%Math.max(n.length,1)]??0}return{storage:n,size:t,data:i}}function oC(e){let t=[],n=new Map,r=new Int32Array(e.length);for(let i=0;i<e.length;i+=1){let a=e[i],o=n.get(a);o===void 0&&(o=t.length,t.push(a),n.set(a,o)),r[i]=o}return{storage:`string`,size:1,table:t,data:r}}function sC(e,t,n){return Fl({pointCount:e.pointCount,point:t===`point`?n:e.point,vertex:t===`vertex`?n:e.vertex,primitive:t===`primitive`?n:e.primitive,detail:e.detail,topology:e.topology,pointGroups:e.pointGroups,primitiveGroups:e.primitiveGroups})}function cC(e,t,n,r){return sC(e,t,{...e[t],[n]:r})}function lC(e){return kl(e.storage,e.data)}var uC={point:`pointGroups`,primitive:`primitiveGroups`};function dC(e,t,n){return e[uC[t]][n]}function fC(e){let t=[];for(let n=0;n<e.length;n+=1)e[n]&&t.push(n);return t}function pC(e,t){return Object.keys(e[uC[t]])}function mC(e){let[t,n]=e.translate??[0,0],[r,i]=e.scale??[1,1],[a,o]=e.pivot??[0,0],s=e.rotate??0;if(![t,n,r,i,a,o,s].every(Number.isFinite))throw TypeError(`geometry/transform: transform parameters must be finite`);let c=s*Math.PI/180,l=Math.cos(c),u=Math.sin(c),d=l*r,f=u*r,p=-u*i,m=l*i;return[d,f,0,p,m,0,t+a-(d*a+p*o),n+o-(f*a+m*o),1]}function hC(e){if(e.length===0)return Ll(2);if(e.length===1)return e[0];let t=gC(e,e=>e.pointCount),n=gC(e,e=>e.vertexCount),r=gC(e,e=>e.primitiveCount),i=new Int32Array(n),a=new Int32Array(r+1),o=new Uint8Array(r),s=new Uint8Array(r),c=0,l=0,u=0;for(let t of e){for(let e=0;e<t.vertexCount;e+=1)i[l+e]=t.topology.vertexPoints[e]+c;for(let e=0;e<t.primitiveCount;e+=1)a[u+e]=t.topology.offsets[e]+l,o[u+e]=t.topology.kinds[e],s[u+e]=t.topology.closed[e];c+=t.pointCount,l+=t.vertexCount,u+=t.primitiveCount}a[r]=n;let d={};for(let t of e)for(let[e,n]of Object.entries(t.detail))Object.prototype.hasOwnProperty.call(d,e)||(d[e]=n);return Fl({pointCount:t,point:yC(e,`point`),vertex:yC(e,`vertex`),primitive:yC(e,`primitive`),detail:d,topology:{vertexPoints:i,offsets:a,kinds:o,closed:s},pointGroups:SC(e,`point`),primitiveGroups:SC(e,`primitive`)})}function gC(e,t){let n=0;for(let r of e)n+=t(r);return n}var _C={u8:0,i32:1,f32:2,f64:3};function vC(e,t){return e===t?e:e===`f64`||t===`f64`||e===`i32`&&t===`f32`||e===`f32`&&t===`i32`?`f64`:_C[e]>_C[t]?e:t}function yC(e,t){let n=[];for(let r of e)for(let e of Object.keys(r[t]))n.includes(e)||n.push(e);let r=gC(e,e=>jl(e,t)),i={};for(let a of n){let n=e.map(e=>e[t][a]).filter(e=>e!==void 0),o=n.filter(Al).length;o!==0&&o!==n.length&&XS(`attribute-conflict`,`${t}.${a} is a string attribute on one input and numeric on another`),i[a]=o===n.length?xC(e,t,a,r):bC(e,t,a,r)}return i}function bC(e,t,n,r){let i=1,a;for(let r of e){let e=r[t][n];e===void 0||Al(e)||(i=Math.max(i,e.size),a=a===void 0?e.storage:vC(a,e.storage))}let o=Ol(a??`f64`,i*r),s=0;for(let r of e){let e=jl(r,t),a=r[t][n];if(a!==void 0&&!Al(a))for(let t=0;t<e;t+=1)for(let e=0;e<a.size;e+=1)o[(s+t)*i+e]=a.data[t*a.size+e];s+=e}return{storage:a??`f64`,size:i,data:o}}function xC(e,t,n,r){let i=Array(r).fill(``),a=0;for(let r of e){let e=jl(r,t),o=r[t][n];if(o!==void 0&&Al(o))for(let t=0;t<e;t+=1)i[a+t]=tC(o,t);a+=e}return oC(i)}function SC(e,t){let n=t===`point`?`pointGroups`:`primitiveGroups`,r=[];for(let t of e)for(let e of Object.keys(t[n]))r.includes(e)||r.push(e);let i=gC(e,e=>jl(e,t)),a={};for(let o of r){let r=new Uint8Array(i),s=0;for(let i of e){let e=jl(i,t),a=i[n][o];if(a!==void 0)for(let t=0;t<e;t+=1)r[s+t]=a[t];s+=e}a[o]=r}return a}function CC(e,t){if(t.length!==9&&t.length!==16&&XS(`matrix`,`transform needs a mat3 or a mat4`),t.every(Number.isFinite)||XS(`matrix`,`transform matrix values must be finite`),e.pointCount===0)return e;let n=rC(e),r=n.size,i=lC(n);if(t.length===9){let n=t;for(let t=0;t<e.pointCount;t+=1){let e=t*r,a=i[e],o=i[e+1];i[e]=n[0]*a+n[3]*o+n[6],i[e+1]=n[1]*a+n[4]*o+n[7]}}else{let n=t;for(let t=0;t<e.pointCount;t+=1){let e=t*r,a=i[e],o=i[e+1],s=r===3?i[e+2]:0;i[e]=n[0]*a+n[4]*o+n[8]*s+n[12],i[e+1]=n[1]*a+n[5]*o+n[9]*s+n[13],r===3&&(i[e+2]=n[2]*a+n[6]*o+n[10]*s+n[14])}}return sC(e,`point`,{...ZS(e,`point`),P:{storage:n.storage,size:r,data:i}})}function wC(e,t,n={}){let r=nC(e)===3?3:2,i=n.targetGroup===void 0||n.targetGroup===``?void 0:dC(t,`point`,n.targetGroup)??XS(`missing-group`,`point group ${n.targetGroup} is not present on the target`),a=i===void 0?TC(t.pointCount):fC(i);if(a.length===0||e.pointCount===0)return Ll(r);let o=n.useTargetOrientations??!0,s=o?QS(t.point.pscale,`point.pscale`,[1]):void 0,c=o?QS(t.point.N,`point.N`,[2,3]):void 0,l=n.copyNumberAttribute??`copynum`,u=n.transferTargetAttributes??!0?Object.keys(t.point).filter(t=>t!==`P`&&!Object.prototype.hasOwnProperty.call(e.point,t)):[],d=[];for(let n of a){let r=iC(t,n),i=s===void 0?1:$S(s,n),a=c===void 0?0:Math.atan2($S(c,n,1),$S(c,n,0))*180/Math.PI,o=CC(e,mC({translate:[r[0],r[1]],rotate:a,scale:[i,i]}));l!==``&&(o=cC(o,`primitive`,l,{storage:`i32`,size:1,data:new Int32Array(o.primitiveCount).fill(n)}));for(let e of u)o=cC(o,`point`,e,EC(t.point[e],n,o.pointCount));d.push(o)}return hC(d)}function TC(e){let t=Array(e);for(let n=0;n<e;n+=1)t[n]=n;return t}function EC(e,t,n){return Al(e)?oC(Array(n).fill(tC(e,t))):aC(n,e.size,e.storage,eC(e,t))}var DC=`cascade.geo`;function OC(e){return`${DC}.${e}`}function kC(e){let t=e.inputs.source,n=e.inputs.target;if(t===void 0||n===void 0){e.outputs.geometry.set(Ll(2));return}e.outputs.geometry.set(wC(t,n,{targetGroup:e.props.targetGroup,useTargetOrientations:e.props.useTargetOrientations}))}var AC={kind:`definition-v1`,moduleId:OC(`CopyToPoints`),definition:Pg,loadExecute:async()=>kC},jC=class{positions=[];size;storage;vertexPoints=[];offsets=[0];kinds=[];closed=[];attributes={point:{},vertex:{},primitive:{}};detail={};pointGroups=new Map;primitiveGroups=new Map;constructor(e={}){this.size=e.positionSize??2,this.storage=e.positionStorage??`f64`}get pointCount(){return this.positions.length/this.size}get vertexCount(){return this.vertexPoints.length}get primitiveCount(){return this.offsets.length-1}addPoint(e,t,n=0){let r=this.pointCount;return this.positions.push(e,t),this.size===3&&this.positions.push(n),r}addPoints(e){e.length%this.size!==0&&XS(`point-stride`,`${e.length} values is not a multiple of the position size ${this.size}`);let t=this.pointCount;for(let t=0;t<e.length;t+=1)this.positions.push(e[t]);return t}addPrimitive(e,t={}){let n=this.primitiveCount;for(let t of e)(!Number.isInteger(t)||t<0||t>=this.pointCount)&&XS(`vertex-point`,`primitive ${n} references point ${t} of ${this.pointCount}`),this.vertexPoints.push(t);return this.offsets.push(this.vertexPoints.length),this.kinds.push(bl.indexOf(t.kind??`poly`)),this.closed.push(+!!t.closed),n}addPolygon(e,t={}){let n=this.addPoints(e),r=[];for(let e=n;e<this.pointCount;e+=1)r.push(e);return this.addPrimitive(r,t)}setAttribute(e,t,n){return e===`point`&&t===`P`&&XS(`set-position`,`point.P is owned by the builder; use addPoint`),this.attributes[e][t]=n,this}setNumericAttribute(e,t,n,r=1,i=`f64`){return this.setAttribute(e,t,{storage:i,size:r,data:kl(i,n)})}setStringAttribute(e,t,n){return this.setAttribute(e,t,oC(n))}setDetail(e,t){return this.detail[e]=t,this}addToPointGroup(e,t){let n=this.pointGroups.get(e)??new Set;return n.add(t),this.pointGroups.set(e,n),this}addToPrimitiveGroup(e,t){let n=this.primitiveGroups.get(e)??new Set;return n.add(t),this.primitiveGroups.set(e,n),this}build(){let e=this.pointCount,t={};for(let[n,r]of this.pointGroups)t[n]=MC(r,e);let n={};for(let[e,t]of this.primitiveGroups)n[e]=MC(t,this.primitiveCount);return Fl({pointCount:e,point:{...this.attributes.point,P:{storage:this.storage,size:this.size,data:kl(this.storage,this.positions)}},vertex:this.attributes.vertex,primitive:this.attributes.primitive,detail:this.detail,topology:{vertexPoints:Int32Array.from(this.vertexPoints),offsets:Int32Array.from(this.offsets),kinds:Uint8Array.from(this.kinds),closed:Uint8Array.from(this.closed)},pointGroups:t,primitiveGroups:n})}};function MC(e,t){let n=new Uint8Array(t);for(let r of e)(!Number.isInteger(r)||r<0||r>=t)&&XS(`group-indices`,`group references element ${r}`),n[r]=1;return n}function NC(e,t){(!Number.isFinite(e[0])||!Number.isFinite(e[1]))&&XS(t,`both components must be finite`)}function PC(e={}){let[t,n]=e.size??[1,1],[r,i]=e.center??[0,0];NC([t,n],`rectangle-size`),NC([r,i],`rectangle-center`),(t<0||n<0)&&XS(`rectangle-size`,`rectangle size must not be negative`);let a=r-t/2,o=r+t/2,s=i-n/2,c=i+n/2,l=new jC;return l.addPolygon([a,s,o,s,o,c,a,c],{closed:!0}),l.build()}function FC(e={}){let[t,n]=e.center??[0,0],[r,i]=e.radius??[1,1];NC([t,n],`circle-center`),NC([r,i],`circle-radius`),(r<0||i<0)&&XS(`circle-radius`,`circle radius must not be negative`);let a=new jC;if((e.type??`bezier`)===`poly`){let o=e.divisions??32;(!Number.isSafeInteger(o)||o<3)&&XS(`circle-divisions`,`a polygonal circle needs an integer division count of at least 3`);let s=[];for(let e=0;e<o;e+=1){let a=2*Math.PI*e/o;s.push(t+r*Math.cos(a),n+i*Math.sin(a))}return a.addPolygon(s,{closed:!0}),a.build()}let o=4/3*Math.tan(Math.PI/8),s=r*o,c=i*o,l=[t+r,n,t+r,n+c,t+s,n+i,t,n+i,t-s,n+i,t-r,n+c,t-r,n,t-r,n-c,t-s,n-i,t,n-i,t+s,n-i,t+r,n-c];return a.addPolygon(l,{closed:!0,kind:`bezier`}),a.build()}function IC(e){e.outputs.geometry.set(PC({size:e.inputs.size,center:e.inputs.center}))}var LC={kind:`definition-v1`,moduleId:OC(`Rectangle`),definition:Ag,loadExecute:async()=>IC};function RC(e){e.outputs.geometry.set(FC({center:e.inputs.center,radius:e.inputs.radius,divisions:e.inputs.divisions,type:e.props.type===`poly`?`poly`:`bezier`}))}var zC={kind:`definition-v1`,moduleId:OC(`Circle`),definition:jg,loadExecute:async()=>RC};function BC(e){e.outputs.geometry.set(hC(e.inputs.inputs.filter(e=>e!==void 0)))}var VC={kind:`definition-v1`,moduleId:OC(`Merge`),definition:Ng,loadExecute:async()=>BC};function HC(e,t){return bl[e.topology.kinds[t]]??`poly`}function UC(e,t){return e.topology.closed[t]===1}function WC(e,t){return HC(e,t)===`bezier`}function GC(e,t){let n=qC(e,t),r=UC(e,t)?n.length/3:(n.length-1)/3,i=[];for(let e=0;e<r;e+=1){let t=e*3;i.push([n[t],n[t+1],n[t+2],n[(t+3)%n.length]])}return i}function KC(e,t){return[e.topology.offsets[t],e.topology.offsets[t+1]]}function qC(e,t){let[n,r]=KC(e,t),i=Array(r-n);for(let t=n;t<r;t+=1)i[t-n]=e.topology.vertexPoints[t];return i}function JC(e){let t=new Uint8Array(e.pointCount);for(let n of e.topology.vertexPoints)t[n]=1;let n=new Uint8Array(e.pointCount);for(let e=0;e<n.length;e+=1)n[e]=+!t[e];return n}function YC(e){if(e.pointCount===0)return;let t=rC(e),n=nC(e),r=Array(n).fill(1/0),i=Array(n).fill(-1/0);for(let a=0;a<e.pointCount;a+=1)for(let e=0;e<n;e+=1){let o=t.data[a*n+e];o<r[e]&&(r[e]=o),o>i[e]&&(i[e]=o)}return{min:r,max:i}}var XC=`ungrouped`,ZC=[0,0,0,1];function QC(e,t={}){nw(t);let n=t.margin??0,r=YC(e),i=r===void 0?0:r.min[0]-n,a=r===void 0?0:r.min[1]-n,o=r===void 0?1:r.max[0]+n,s=r===void 0?1:r.max[1]+n,c=Math.max(o-i,2**-52),l=Math.max(s-a,2**-52),u=t.width&&t.width>0?t.width:c,d=t.height&&t.height>0?t.height:l,f=t.precision??3,p=e=>tw(e,f),m=t.stroke??ZC,h=t.strokeWidth??1,g=t.fill??ZC,_=(t.fillMode??`none`)===`solid`,v=e.primitive.Cd,y=QS(e.primitive.width,`primitive.width`,[1]),b=QS(e.primitive.opacity,`primitive.opacity`,[1]),x=QS(e.point.pscale,`point.pscale`,[1]),S=e.point.Cd;rw(y,`primitive.width`,e=>e>=0,`non-negative`),rw(b,`primitive.opacity`,e=>e>=0&&e<=1,`between 0 and 1`),rw(x,`point.pscale`,e=>e>=0,`non-negative`);let C=pC(e,`primitive`),w=new Int32Array(e.primitiveCount).fill(-1);for(let t=0;t<C.length;t+=1){let n=e.primitiveGroups[C[t]];for(let r=0;r<e.primitiveCount;r+=1)n[r]===1&&w[r]===-1&&(w[r]=t)}let T=t=>{let n=[`d="${$C(e,t,p)}"`],r=ew(v,t,`primitive`);return r!==void 0&&(n.push(`stroke="${yl.toHex(r)}"`),yl.alpha(r)<1&&n.push(`stroke-opacity="${p(yl.alpha(r))}"`)),y!==void 0&&n.push(`stroke-width="${p($S(y,t))}"`),b!==void 0&&n.push(`opacity="${p($S(b,t))}"`),`<path ${n.join(` `)} />`},ee=[];if(C.length===0)for(let t=0;t<e.primitiveCount;t+=1)ee.push(iw(T(t),2));else{for(let t=0;t<C.length;t+=1){let n=[];for(let r=0;r<e.primitiveCount;r+=1)w[r]===t&&n.push(iw(T(r),3));ee.push(iw(`<g id="${aw(C[t])}">`,2),...n,iw(`</g>`,2))}let t=[];for(let n=0;n<e.primitiveCount;n+=1)w[n]===-1&&t.push(iw(T(n),3));t.length>0&&ee.push(iw(`<g id="${XC}">`,2),...t,iw(`</g>`,2))}let E=JC(e),D=rC(e);for(let n=0;n<e.pointCount;n+=1){if(E[n]!==1)continue;let e=x===void 0?t.pointRadius??.5:$S(x,n),r=ew(S,n,`point`)??m,i=yl.alpha(r)<1;ee.push(iw(`<circle cx="${p($S(D,n,0))}" cy="${p($S(D,n,1))}" r="${p(e)}" fill="${yl.toHex(r)}"${i?` fill-opacity="${p(yl.alpha(r))}"`:``} stroke="none" />`,2))}return`${[`<svg xmlns="http://www.w3.org/2000/svg" width="${p(u)}" height="${p(d)}" viewBox="${p(i)} ${p(-s)} ${p(c)} ${p(l)}">`,iw(`<!-- Geometry is +Y up; SVG is +Y down. This is the one flip. -->`,1),iw(`<g transform="scale(1,-1)" fill="${_?yl.toHex(g):`none`}"${_&&yl.alpha(g)<1?` fill-opacity="${p(yl.alpha(g))}"`:``} stroke="${yl.toHex(m)}"${yl.alpha(m)<1?` stroke-opacity="${p(yl.alpha(m))}"`:``} stroke-width="${p(h)}"${t.opacity!==void 0&&t.opacity!==1?` opacity="${p(t.opacity)}"`:``}>`,1),...ee,iw(`</g>`,1),`</svg>`].join(`
|
|
206
|
-
`)}\n`}function $C(e,t,n){let r=rC(e),i=e=>`${n($S(r,e,0))} ${n($S(r,e,1))}`,a=UC(e,t);if(WC(e,t)){let n=GC(e,t);if(n.length===0)return``;let r=[`M ${i(n[0][0])}`];for(let[,e,t,a]of n)r.push(`C ${i(e)} ${i(t)} ${i(a)}`);return a&&r.push(`Z`),r.join(` `)}let o=qC(e,t);if(o.length===0)return``;let s=[`M ${i(o[0])}`];for(let e=1;e<o.length;e+=1)s.push(`L ${i(o[e])}`);return a&&s.push(`Z`),s.join(` `)}function ew(e,t,n){if(e!==void 0)return Al(e)&&XS(`colour-storage`,`${n}.Cd is a string attribute; colour is a vec4. Convert with Color.fromHex at the boundary.`),e.size!==4&&XS(`colour-size`,`${n}.Cd has size ${e.size}; colour is a vec4`),yl.fromComponents(e.data,t*4,4)}function tw(e,t){Number.isFinite(e)||XS(`svg-number`,`cannot format non-finite value ${String(e)}`);let n=Number.parseFloat(e.toFixed(t));return Object.is(n,-0)?`0`:String(n)}function nw(e){for(let[t,n]of[[`width`,e.width],[`height`,e.height],[`margin`,e.margin],[`strokeWidth`,e.strokeWidth],[`opacity`,e.opacity],[`pointRadius`,e.pointRadius]])n!==void 0&&!Number.isFinite(n)&&XS(`svg-option`,`${t} must be finite`);((e.width??0)<0||(e.height??0)<0)&&XS(`svg-option`,`width and height must not be negative`),((e.strokeWidth??0)<0||(e.pointRadius??0)<0)&&XS(`svg-option`,`strokeWidth and pointRadius must not be negative`),e.opacity!==void 0&&(e.opacity<0||e.opacity>1)&&XS(`svg-option`,`opacity must be between 0 and 1`);let t=e.precision??3;(!Number.isSafeInteger(t)||t<0||t>15)&&XS(`svg-precision`,`precision must be an integer from 0 to 15`)}function rw(e,t,n,r){if(e!==void 0)for(let i of e.data)n(i)||XS(`attribute-value`,`${t} values must be ${r}`)}function iw(e,t){return`${` `.repeat(t)}${e}`}function aw(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`)}function ow(e){let t=[];for(let n of e){let e=n.codePointAt(0);e<128?t.push(e):e<2048?t.push(192|e>>6,128|e&63):e<65536?t.push(224|e>>12,128|e>>6&63,128|e&63):t.push(240|e>>18,128|e>>12&63,128|e>>6&63,128|e&63),e=0}return Uint8Array.from(t)}async function sw(e){let{props:t}=e,n=QC(e.inputs.geometry??Ll(2),{width:t.width,height:t.height,margin:t.margin,stroke:t.stroke,strokeWidth:t.strokeWidth,opacity:t.opacity,fill:t.fill,fillMode:t.fillMode===`solid`?`solid`:`none`,pointRadius:t.pointRadius,precision:t.precision});e.outputs.svg.set(n);let r=await e.capabilities.assets.write(ow(n),{mediaType:`image/svg+xml`,suggestedName:t.filename},{signal:e.signal});e.outputs.asset.set(r)}var cw={kind:`definition-v1`,moduleId:OC(`SvgExport`),definition:Fg,loadExecute:async()=>sw};function lw(e){let t=e.inputs.geometry??Ll(2);e.outputs.geometry.set(CC(t,mC({translate:e.inputs.translate,rotate:e.inputs.rotate,scale:e.inputs.scale,pivot:e.inputs.pivot})))}var uw={kind:`definition-v1`,moduleId:OC(`Transform`),definition:Mg,loadExecute:async()=>lw},dw=Object.freeze([LC,zC,uw,VC,AC,cw]);new Map(dw.map(e=>[e.moduleId,e]));var fw=Object.freeze([...YS,...dw]),pw=new Map(fw.map(e=>[e.moduleId,e]));function mw(e){return pw.get(e)}var hw={core:`Cascade core`,library:`Cascade library`,project:`Project module`,embedded:`Embedded in the graph`,unknown:`Unknown`};function gw(e){return{moduleId:e,moduleFolder:null,origin:`unknown`,originLabel:hw.unknown,libraryId:null,path:null,pathNote:null,flavour:`unknown`,flavourNote:null,runsOn:null,runsOnNote:null,icon:null,iconNote:null,definition:null,inputs:[],outputs:[],props:[],hasLegacyExecute:null,warnings:[],error:null}}function _w(e){let t=e.modulePath;return typeof t==`string`&&t?t:e.type.includes(`.`)?e.type:je(e.type)}function vw(e){let t=e.sourceType;return typeof t==`string`&&t?t:null}function yw(e,t){return e?Object.entries(e).map(([e,n])=>({name:e,kind:t?`prop`:typeof n?.kind==`string`?n.kind:`data`,type:typeof n?.type==`string`?n.type:null,...n&&`default`in n?{default:n.default}:{},...typeof n?.description==`string`?{description:n.description}:{}})):[]}function bw(e,t){e.definition=t,e.flavour=`definition-v1`;let n=t;e.inputs=yw(n.inputs,!1),e.outputs=yw(n.outputs,!1),e.props=yw(n.props,!0),typeof n.icon==`string`&&n.icon?(e.icon=n.icon,e.iconNote=null):(e.icon=null,e.iconNote=`The definition declares no icon; Cascade’s default is used.`),(n.runsOn===`portable`||n.runsOn===`server`||n.runsOn===`browser`)&&(e.runsOn=n.runsOn,e.runsOnNote=`Declared in the definition.`)}function xw(e){if(e.hasLegacyExecute===!1)return["The module exports a definition but no `execute`, so there is nothing to cook — in Studio or under `cascade run`. A definition-v1 node exports both."];if(!e.definition)return[];if(!vf(e.definition))return["The `definition` export does not declare `apiVersion: 1`, so it is not a definition-v1 node. Studio calls this module as `execute(node, graph)`, and any ports it shows are the ones that call declares."];let t=yf(e.definition);if(t)return[`Studio cannot build ports from this definition:\n${t}`];let n=bf(e.definition);return n.length?[`The definition requires the ${n.join(`, `)} capability, which Studio does not supply. The cook fails here with that message; \`cascade run\` supplies it.`]:[]}var Sw=new Map;async function Cw(e){let t=Sw.get(e);return t||(t=(async()=>{let t=await fetch(`/api/nodes/${encodeURIComponent(e)}/compiled`);if(!t.ok)throw Error(await t.text()||`compile failed (${t.status})`);let n=await t.text(),r=typeof document<`u`?URL.createObjectURL(new Blob([n],{type:`text/javascript`})):`data:text/javascript;base64,${btoa(n)}`;try{let e=await od(()=>import(r),[]);return{definition:e?.definition??null,hasExecute:typeof e?.execute==`function`}}finally{r.startsWith(`blob:`)&&URL.revokeObjectURL(r)}})(),Sw.set(e,t),t)}function ww(e){Sw.delete(e),Tw.delete(e),Ew.delete(e)}var Tw=new Map,Ew=new Map;function Dw(e){let t=Tw.get(e);return t||(t=fetch(`/api/nodes/${encodeURIComponent(e)}/index.ts`).then(async e=>{if(!e.ok)throw Error(await e.text()||`source unavailable (${e.status})`);return e.text()}),Tw.set(e,t)),t}function Ow(e){let t=Ew.get(e);return t||(t=fetch(`/api/nodes/${encodeURIComponent(e)}/path`).then(async e=>e.ok?(await e.json())?.path??null:null).catch(()=>null),Ew.set(e,t)),t}function kw(e){let t=/export\s+(?:const|let|var)\s+definition\b/.test(e)||/export\s*\{[^}]*\bdefinition\b[^}]*\}/.test(e),n=/export\s+(?:async\s+)?function\s+execute\b/.test(e)||/export\s+(?:const|let|var)\s+execute\b/.test(e)||/export\s*\{[^}]*\bexecute\b[^}]*\}/.test(e);return t?{flavour:`definition-v1`,hasLegacyExecute:n}:n?{flavour:`legacy-dynamic`,hasLegacyExecute:n}:{flavour:`unknown`,hasLegacyExecute:n}}async function Aw(e,t={},n={}){let r=_w(e),i=gw(r),a=vw(e);if(Fe(r)||a===`stdlib`){let e=Re(r);i.libraryId=e,i.origin=e===`core`?`core`:`library`,i.originLabel=hw[i.origin],i.path=null,i.pathNote=`Compiled into Studio. No project path to resolve.`,i.runsOnNote=`The server reports runsOn for project modules only.`;let t=mw(r);if(t)bw(i,t.definition),i.hasLegacyExecute=!1,i.flavourNote=`Registered through the definition-v1 adapter (registerDefinitionNodes).`;else{i.flavour=`core-class`,i.flavourNote=`A Node subclass compiled into Studio — neither definition-v1 nor a dynamic module.`;let e=Me(r);i.icon=e?.icon??null,i.iconNote=e?.icon?null:`No icon in the node metadata registry.`}return i}if(r.startsWith(`local.`)||a===`embedded`){if(i.origin=`embedded`,i.originLabel=hw.embedded,i.path=null,i.pathNote=`The code lives in the graph document, not in a file.`,i.runsOnNote=`Not reported: runsOn comes from the project server, which does not see embedded code.`,i.iconNote=`Embedded code declares no icon.`,e.code){let t=kw(e.code);i.flavour=t.flavour,i.hasLegacyExecute=t.hasLegacyExecute,t.flavour===`definition-v1`&&!t.hasLegacyExecute&&i.warnings.push("The embedded code exports a definition but no `execute`, so there is nothing to cook. A definition-v1 node exports both."),t.flavour===`unknown`&&(i.flavourNote=`Neither a definition nor an execute export was found in the embedded code.`)}else i.flavourNote=`The node carries no code, so its flavour cannot be read.`;return i}if(r.startsWith(`project.`)||a===`project`){let e=Zg(r);if(i.origin=`project`,i.originLabel=hw.project,i.moduleFolder=e,!e)return i.error=`The module id carries no folder name.`,i;let a=t[e];a?(i.runsOn=a,i.runsOnNote=`From GET /api/nodes — declared, or inferred by the server when not declared.`):i.runsOnNote=`GET /api/nodes did not list this module. Either no server is serving this project, or it serves a different one.`;let o=n[e];o&&(i.icon=o),i.path=await Ow(e),i.path||(i.pathNote=`GET /api/nodes/<module>/path did not answer.`);try{let t=kw(await Dw(e));i.flavour=t.flavour,i.hasLegacyExecute=t.hasLegacyExecute,t.flavour===`unknown`&&(i.flavourNote=`Neither a definition nor an execute export was found in index.ts.`)}catch(e){return i.error=String(e instanceof Error?e.message:e),i}if(i.flavour===`definition-v1`){try{let t=await Cw(e);i.hasLegacyExecute=t.hasExecute,t.definition?(bw(i,t.definition),a&&i.runsOn!==a&&i.warnings.push(`The definition declares runsOn "${i.runsOn}" but the server reports "${a}".`),o&&(i.icon=o)):i.flavourNote=`index.ts exports a definition, but the compiled module has no definition export to read.`}catch(e){i.error=String(e instanceof Error?e.message:e)}i.warnings.push(...xw(i))}return i}return i.error=`Unrecognised module id "${r}" — no origin could be determined from the document.`,i}var jw=u(`<div class="empty-state svelte-16oolky"><p class="svelte-16oolky">Select a node to see where it is defined</p></div>`),Mw=u(`<div class="empty-state svelte-16oolky"><p class="svelte-16oolky">Reading the module…</p></div>`),Nw=u(`<span class="dim svelte-16oolky"> </span>`),Pw=u(`<span class="value mono wrap svelte-16oolky"> </span>`),Fw=u(`<span class="value unknown svelte-16oolky">unknown</span>`),Iw=u(`<p class="note svelte-16oolky"> </p>`),Lw=u(`<div class="info-row svelte-16oolky"><span class="label svelte-16oolky">API version</span> <span class="value svelte-16oolky"> </span></div>`),Rw=u(`<span class="value svelte-16oolky"> </span>`),zw=u(`<span class="value highlight svelte-16oolky"> </span>`),Bw=u(`<span class="value mono svelte-16oolky"> </span>`),Vw=u(`<span class="value dim svelte-16oolky">none</span>`),Hw=u(`<div class="info-row svelte-16oolky"><span class="label svelte-16oolky">Declared label</span> <span class="value svelte-16oolky"> </span></div>`),Uw=u(`<section class="info-section svelte-16oolky"><h3 class="svelte-16oolky">Read failed</h3> <p class="failure mono svelte-16oolky"> </p></section>`),Ww=u(`<p class="warning svelte-16oolky"> </p>`),Gw=u(`<span class="port-default mono svelte-16oolky"> </span>`),Kw=u(`<p class="port-description svelte-16oolky"> </p>`),qw=u(`<div class="port svelte-16oolky"><span class="port-name mono svelte-16oolky"> </span> <span class="port-type mono svelte-16oolky"> </span> <!> <!></div>`),Jw=u(`<section class="info-section svelte-16oolky"><h3 class="svelte-16oolky"> </h3> <div class="port-list svelte-16oolky"></div></section>`),Yw=u(`<p class="note standalone svelte-16oolky">A dynamic module declares nothing up front — its ports appear only once it has cooked, so what it takes and returns is in the Parameters panel rather than here. Definition-v1 declares its ports statically and reads them without running anything, which is why it is where Cascade is heading; Studio now cooks both styles, so this node can be converted whenever it suits.</p>`),Xw=u(`<div class="info-sections svelte-16oolky"><section class="info-section svelte-16oolky"><h3 class="svelte-16oolky">Module</h3> <div class="info-grid svelte-16oolky"><div class="info-row svelte-16oolky"><span class="label svelte-16oolky">Node</span> <span class="value mono svelte-16oolky"> </span></div> <div class="info-row svelte-16oolky"><span class="label svelte-16oolky">Module id</span> <span class="value mono wrap svelte-16oolky"> </span></div> <div class="info-row svelte-16oolky"><span class="label svelte-16oolky">Defined in</span> <span class="value svelte-16oolky"> <!></span></div> <div class="info-row svelte-16oolky"><span class="label svelte-16oolky">Path</span> <!></div> <!></div></section> <section class="info-section svelte-16oolky"><h3 class="svelte-16oolky">Format</h3> <div class="info-grid svelte-16oolky"><div class="info-row svelte-16oolky"><span class="label svelte-16oolky">Flavour</span> <span> </span></div> <!> <div class="info-row svelte-16oolky"><span class="label svelte-16oolky">execute() export</span> <!></div> <div class="info-row svelte-16oolky"><span class="label svelte-16oolky">Runs on</span> <!></div> <div class="info-row svelte-16oolky"><span class="label svelte-16oolky">Declared icon</span> <!></div> <!></div> <!> <!> <!></section> <!> <!> <!> <section class="info-section svelte-16oolky"><h3 class="svelte-16oolky">Actions</h3> <div class="actions svelte-16oolky"><button class="action-btn svelte-16oolky" disabled="">Duplicate node</button> <button class="action-btn svelte-16oolky" disabled="">Retarget…</button></div> <p class="note svelte-16oolky"></p></section></div>`),Zw=u(`<div class="definition-panel svelte-16oolky"><!></div>`);function Qw(e,t){ee(t,!1);let n=()=>we(_a,`$panelLockStore`,s),r=()=>we(ga,`$sharedContextStore`,s),i=()=>we(Kg,`$runsOnByModule`,s),a=()=>we(qg,`$iconByModule`,s),[s,c]=ne(),l=Y(),u=Y(),d=Y(),p=V(t,`panelId`,8),m=V(t,`panelApi`,8),g=V(t,`graph`,12,void 0),_=V(t,`selectedNode`,12,null);ye(()=>{Xg()});let y=Y(null),b=Y(!1),S=0;async function C(e){let t=++S;if(!e){L(y,null),L(b,!1);return}L(b,!0);let n=await Aw(e,i(),a());t===S&&(L(y,n),L(b,!1))}let w={"definition-v1":`definition-v1`,"legacy-dynamic":`dynamic`,"core-class":`core class`,unknown:`Unknown`},T={portable:`portable — either side`,server:`server`,browser:`browser`};function O(e){return e===void 0?``:typeof e==`string`?`"${e}"`:Array.isArray(e)?`[${e.join(`, `)}]`:typeof e==`object`&&e?JSON.stringify(e):String(e)}function k(e){return e.kind===`trigger`?`trigger`:e.type??`unknown`}let j=`Not wired up yet. Graph.retargetDefinition can carry parameters across a swap, but nothing enumerates the versions to retarget to, and there is no parameter-preserving duplicate.`;J(()=>(n(),A(p())),()=>{L(l,n().get(p()))}),J(()=>x(l),()=>{L(u,x(l)?.isLocked??!1)}),J(()=>r(),()=>{r()&&(g(r().graph),_(r().selectedNode))}),J(()=>(x(u),x(l),A(_())),()=>{L(d,x(u)?x(l)?.lockedNode:_())}),J(()=>x(d),()=>{C(x(d))}),J(()=>(A(m()),x(u),x(d)),()=>{if(m()?.setTitle){let e=x(u)?`~ `:``;m().setTitle(x(d)?`${e}Definition: ${x(d).id}`:`${e}Definition`)}}),he(),ue();var re=Zw(),N=M(re),ie=e=>{var t=jw();E(e,t)},ae=e=>{var t=Mw();E(e,t)},oe=e=>{var t=Xw(),n=M(t),r=P(M(n),2),i=M(r),a=P(M(i),2),s=q(a,!0);o(i);var c=P(i,2),l=P(M(c),2),u=q(l,!0);o(c);var p=P(c,2),m=P(M(p),2),g=M(m,!0),_=P(g),b=e=>{var t=Nw(),n=q(t);K(()=>D(n,`· ${x(y),F(()=>x(y).libraryId)??``}`)),E(e,t)};Z(_,e=>{x(y),F(()=>x(y).libraryId)&&e(b)}),o(m),o(p);var S=P(p,2),C=P(M(S),2),ee=e=>{var t=Pw(),n=q(t,!0);K(()=>D(n,(x(y),F(()=>x(y).path)))),E(e,t)},A=e=>{var t=Fw();E(e,t)};Z(C,e=>{x(y),F(()=>x(y).path)?e(ee):e(A,-1)}),o(S);var ne=P(S,2),re=e=>{var t=Iw(),n=q(t,!0);K(()=>D(n,(x(y),F(()=>x(y).pathNote)))),E(e,t)};Z(ne,e=>{x(y),F(()=>!x(y).path&&x(y).pathNote)&&e(re)}),o(r),o(n);var N=P(n,2),ie=P(M(N),2),ae=M(ie),oe=P(M(ae),2);let I;var L=q(oe,!0);o(ae);var R=P(ae,2),z=e=>{var t=Lw(),n=P(M(t),2),r=q(n,!0);o(t),K(()=>D(r,(x(y),F(()=>x(y).definition.apiVersion)))),E(e,t)};Z(R,e=>{x(y),F(()=>x(y).definition&&x(y).definition.apiVersion!==void 0)&&e(z)});var se=P(R,2),B=P(M(se),2),V=e=>{var t=Fw();E(e,t)},ce=e=>{var t=Rw(),n=q(t,!0);K(()=>D(n,(x(y),F(()=>x(y).hasLegacyExecute?`yes`:`no`)))),E(e,t)};Z(B,e=>{x(y),F(()=>x(y).hasLegacyExecute===null)?e(V):e(ce,-1)}),o(se);var le=P(se,2),H=P(M(le),2),U=e=>{var t=zw(),n=q(t,!0);K(()=>D(n,(x(y),F(()=>T[x(y).runsOn]??x(y).runsOn)))),E(e,t)},ue=e=>{var t=Fw();E(e,t)};Z(H,e=>{x(y),F(()=>x(y).runsOn)?e(U):e(ue,-1)}),o(le);var de=P(le,2),fe=P(M(de),2),pe=e=>{var t=Bw(),n=q(t,!0);K(()=>D(n,(x(y),F(()=>x(y).icon)))),E(e,t)},me=e=>{var t=Vw();E(e,t)};Z(fe,e=>{x(y),F(()=>x(y).icon)?e(pe):e(me,-1)}),o(de);var he=P(de,2),W=e=>{var t=Hw(),n=P(M(t),2),r=q(n,!0);o(t),K(()=>D(r,(x(y),F(()=>x(y).definition.label)))),E(e,t)};Z(he,e=>{x(y),F(()=>x(y).definition&&x(y).definition.label)&&e(W)}),o(ie);var ge=P(ie,2),_e=e=>{var t=Iw(),n=q(t,!0);K(()=>D(n,(x(y),F(()=>x(y).flavourNote)))),E(e,t)};Z(ge,e=>{x(y),F(()=>x(y).flavourNote)&&e(_e)});var ve=P(ge,2),ye=e=>{var t=Iw(),n=q(t,!0);K(()=>D(n,(x(y),F(()=>x(y).runsOnNote)))),E(e,t)};Z(ve,e=>{x(y),F(()=>x(y).runsOnNote&&!x(y).runsOn)&&e(ye)});var be=P(ve,2),xe=e=>{var t=Iw(),n=q(t,!0);K(()=>D(n,(x(y),F(()=>x(y).iconNote)))),E(e,t)};Z(be,e=>{x(y),F(()=>x(y).iconNote&&!x(y).icon)&&e(xe)}),o(N);var J=P(N,2),Se=e=>{var t=Uw(),n=P(M(t),2),r=q(n,!0);o(t),K(()=>D(r,(x(y),F(()=>x(y).error)))),E(e,t)};Z(J,e=>{x(y),F(()=>x(y).error)&&e(Se)});var Y=P(J,2);f(Y,1,()=>(x(y),F(()=>x(y).warnings)),h,(e,t)=>{var n=Ww(),r=q(n,!0);K(()=>D(r,x(t))),E(e,n)});var Ce=P(Y,2),we=e=>{var t=te(),n=G(t);f(n,1,()=>(x(y),F(()=>[{title:`Declared inputs`,ports:x(y).inputs,showDefault:!0},{title:`Declared outputs`,ports:x(y).outputs,showDefault:!1},{title:`Declared props`,ports:x(y).props,showDefault:!0}])),h,(e,t)=>{var n=te(),r=G(n),i=e=>{var n=Jw(),r=M(n),i=q(r,!0),a=P(r,2);f(a,5,()=>(x(t),F(()=>x(t).ports)),h,(e,n)=>{var r=qw(),i=M(r),a=q(i,!0),s=P(i,2),c=q(s,!0),l=P(s,2),u=e=>{var t=Gw(),r=q(t);K(e=>D(r,`= ${e??``}`),[()=>(x(n),F(()=>O(x(n).default)))]),E(e,t)};Z(l,e=>{x(t),x(n),F(()=>x(t).showDefault&&x(n).default!==void 0)&&e(u)});var d=P(l,2),f=e=>{var t=Kw(),r=q(t,!0);K(()=>D(r,(x(n),F(()=>x(n).description)))),E(e,t)};Z(d,e=>{x(n),F(()=>x(n).description)&&e(f)}),o(r),K(e=>{D(a,(x(n),F(()=>x(n).name))),D(c,e)},[()=>(x(n),F(()=>k(x(n))))]),E(e,r)}),o(a),o(n),K(()=>D(i,(x(t),F(()=>x(t).title)))),E(e,n)};Z(r,e=>{x(t),F(()=>x(t).ports.length)&&e(i)}),E(e,n)}),E(e,t)},Te=e=>{var t=Yw();E(e,t)};Z(Ce,e=>{x(y),F(()=>x(y).definition)?e(we):(x(y),F(()=>x(y).flavour===`legacy-dynamic`)&&e(Te,1))});var Ee=P(Ce,2),De=P(M(Ee),2),Oe=M(De);X(Oe,`title`,j);var ke=P(Oe,2);X(ke,`title`,j),o(De);var Ae=P(De,2);Ae.textContent=`Not wired up yet. Graph.retargetDefinition can carry parameters across a swap, but nothing enumerates the versions to retarget to, and there is no parameter-preserving duplicate.`,o(Ee),o(t),K(()=>{D(s,(x(d),F(()=>x(d).id))),D(u,(x(y),F(()=>x(y).moduleId))),D(g,(x(y),F(()=>x(y).originLabel))),I=v(oe,1,`value svelte-16oolky`,null,I,{unknown:x(y).flavour===`unknown`}),D(L,(x(y),F(()=>w[x(y).flavour]??x(y).flavour)))}),E(e,t)};Z(N,e=>{x(d)?x(b)&&!x(y)?e(ae,1):x(y)&&e(oe,2):e(ie)}),o(re),E(e,re),Ee(),c()}function $w(){return typeof document<`u`&&qh()}var eT=class e extends Ju{static{this.PREVIEW_INTERVAL=33}constructor(e,t,n){super(e,t,n),this._previewPending=!1,this._previewBuffer=null,this._lastPreviewTime=0}onCook(){return this.render()}requestCook(){this.markDirty()}toImageBuffer(e){return e?e instanceof og?e:rg(e)?og.fromCanvas(e):null:null}getImageSize(e){if(!e)return{width:0,height:0};if(e instanceof og)return{width:e.width,height:e.height};if(rg(e)){let t=e;return{width:t.naturalWidth||e.width,height:t.naturalHeight||e.height}}return{width:0,height:0}}addResolutionParm(e=512,t=512){this.addParm(`resolution`,{value:[e,t],params:{min:[1,1],max:[4096,4096],integer:!0},displayName:`Resolution`,onChange:()=>this.requestCook()})}getResolution(){return this.props.resolution?this.props.resolution.value:(console.warn(`${this.type}: getResolution() called but no resolution parameter exists. Call addResolutionParm() in setup().`),[512,512])}resolveOutputSize(e,t,n){let r=t.filter(e=>e!==null);switch(e){case`input`:case`input1`:if(r[0])return{width:r[0].width,height:r[0].height};break;case`input2`:if(r[1])return{width:r[1].width,height:r[1].height};if(r[0])return{width:r[0].width,height:r[0].height};break;case`largest`:if(r.length>0){let e=0,t=r[0];for(let n of r){let r=n.width*n.height;r>e&&(e=r,t=n)}return{width:t.width,height:t.height}}break;case`smallest`:if(r.length>0){let e=1/0,t=r[0];for(let n of r){let r=n.width*n.height;r<e&&(e=r,t=n)}return{width:t.width,height:t.height}}break;case`custom`:if(n)return{width:n[0],height:n[1]}}return r[0]?{width:r[0].width,height:r[0].height}:{width:512,height:512}}resizeToFit(e,t,n,r=`fill`){if(e.width===t&&e.height===n)return e;let i=og.rgba(t,n),a=e.width/e.height,o=t/n,s=0,c=0,l=e.width,u=e.height,d=0,f=0,p=t,m=n;switch(r){case`fill`:a>o?(l=Math.round(e.height*o),s=Math.round((e.width-l)/2)):(u=Math.round(e.width/o),c=Math.round((e.height-u)/2));break;case`fit`:a>o?(m=Math.round(t/a),f=Math.round((n-m)/2)):(p=Math.round(n*a),d=Math.round((t-p)/2)),i.fill(0,0),i.fill(1,0),i.fill(2,0),i.fill(3,1);break;case`stretch`:break;case`native`:p=Math.min(e.width,t),m=Math.min(e.height,n),l=p,u=m,d=Math.round((t-p)/2),f=Math.round((n-m)/2),s=Math.round((e.width-l)/2),c=Math.round((e.height-u)/2),i.fill(0,0),i.fill(1,0),i.fill(2,0),i.fill(3,1)}let h=l/p,g=u/m;for(let n=0;n<Math.min(e.channelCount,4);n++){let r=i.channels[n];for(let i=0;i<m;i++)for(let a=0;a<p;a++){let o=s+a*h,l=c+i*g;r[(f+i)*t+(d+a)]=e.sample(o,l,n)}}if(e.channelCount<4&&r!==`fit`&&r!==`native`)for(let e=0;e<m;e++)for(let n=0;n<p;n++)i.channels[3][(f+e)*t+(d+n)]=1;return i}prepareInputs(e,t=`input`,n=`fill`,r){let i=e.map(e=>this.toImageBuffer(e)),{width:a,height:o}=this.resolveOutputSize(t,i,r);return{buffers:i.map(e=>e?e.width===a&&e.height===o?e:this.resizeToFit(e,a,o,n):null),width:a,height:o}}setOutput(e,t){e.setValue(t),this._previewBuffer=t,this.updatePreviewThrottled()}updatePreviewThrottled(){if(!$w())return;let t=performance.now(),n=t-this._lastPreviewTime;if(n>=e.PREVIEW_INTERVAL)this._lastPreviewTime=t,this._previewBuffer&&(this.preview=this._previewBuffer.toCanvas()),this._previewPending=!1;else if(!this._previewPending){this._previewPending=!0;let t=e.PREVIEW_INTERVAL-n;setTimeout(()=>{this._previewPending=!1,this._lastPreviewTime=performance.now(),this._previewBuffer&&$w()&&(this.preview=this._previewBuffer.toCanvas())},t)}}getBufferInfo(){if(!this._previewBuffer)return null;let e=this._previewBuffer;return{hasOutput:!0,width:e.width,height:e.height,channels:e.channelCount,layout:e.layout,memoryBytes:e.memoryBytes,memorySizeStr:e.memorySizeStr}}},tT=u(`<section class="info-section buffer-section svelte-13kv637"><h3 class="svelte-13kv637">Output Buffer</h3> <div class="info-grid svelte-13kv637"><div class="info-row resolution-row svelte-13kv637"><span class="label svelte-13kv637">Resolution</span> <span class="value mono highlight svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Format</span> <span class="value svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Buffer Size</span> <span class="value svelte-13kv637"> </span></div></div></section>`),nT=u(`<div class="issue error svelte-13kv637"><span class="issue-type svelte-13kv637">Error</span> <span class="issue-message svelte-13kv637"> </span></div>`),rT=u(`<div class="issue warning svelte-13kv637"><span class="issue-type svelte-13kv637">Warning</span> <span class="issue-message svelte-13kv637"> </span></div>`),iT=u(`<section class="info-section svelte-13kv637"><h3 class="svelte-13kv637">Issues</h3> <div class="issues svelte-13kv637"><!> <!></div></section>`),aT=u(`<section class="info-section svelte-13kv637"><h3 class="svelte-13kv637">Code</h3> <div class="info-grid svelte-13kv637"><div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Lines</span> <span class="value svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Characters</span> <span class="value svelte-13kv637"> </span></div></div></section>`),oT=u(`<div class="info-sections svelte-13kv637"><section class="info-section svelte-13kv637"><h3 class="svelte-13kv637">Node</h3> <div class="info-grid svelte-13kv637"><div class="info-row svelte-13kv637"><span class="label svelte-13kv637">ID</span> <span class="value mono svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Type</span> <span class="value mono svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Class</span> <span class="value mono svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Path</span> <span class="value mono path svelte-13kv637"> </span></div></div></section> <section class="info-section svelte-13kv637"><h3 class="svelte-13kv637">Cook Performance <button class="reset-btn svelte-13kv637" title="Reset statistics">Reset</button></h3> <div class="info-grid svelte-13kv637"><div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Last Cook</span> <span> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Average</span> <span> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Total Time</span> <span class="value svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Cook Count</span> <span class="value svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Last Cooked</span> <span class="value svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Peak Memory</span> <span class="value svelte-13kv637"> </span></div></div></section> <!> <section class="info-section svelte-13kv637"><h3 class="svelte-13kv637">State</h3> <div class="info-grid svelte-13kv637"><div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Bypass</span> <span> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Cook Flag</span> <span> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Time Dependent</span> <span> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Dirty</span> <span> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Variadic</span> <span class="value svelte-13kv637"> </span></div></div></section> <section class="info-section svelte-13kv637"><h3 class="svelte-13kv637">Ports & Parameters</h3> <div class="info-grid svelte-13kv637"><div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Inputs</span> <span class="value svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Outputs</span> <span class="value svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Parameters</span> <span class="value svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Expressions</span> <span> </span></div></div></section> <!> <!></div>`),sT=u(`<div class="empty-state svelte-13kv637"><p class="svelte-13kv637">Select a node to view its information</p></div>`),cT=u(`<div class="cook-info-panel svelte-13kv637"><!></div>`);function lT(e,t){ee(t,!1);let n=()=>we(_a,`$panelLockStore`,i),r=()=>we(ga,`$sharedContextStore`,i),[i,a]=ne(),s=Y(),c=Y(),l=Y(),u=Y(),d=V(t,`panelId`,8),f=V(t,`panelApi`,8),p=V(t,`graph`,12,void 0),m=V(t,`selectedNode`,12,null);function h(e){return e<.01?`< 0.01ms`:e<1?`${e.toFixed(2)}ms`:e<1e3?`${e.toFixed(1)}ms`:`${(e/1e3).toFixed(2)}s`}function g(e){return e===0?`-`:e<1024?`${e}B`:e<1048576?`${(e/1024).toFixed(1)}KB`:`${(e/1048576).toFixed(2)}MB`}function _(e){return e===0?`Never`:new Date(e).toLocaleTimeString()}function y(e){return e.constructor.name}function b(e){return e.inputs.filter(e=>!e.options?.hidden).length}function S(e){return e.outputs.length}function C(e){return e.inputs.filter(e=>e.connections.length>0).length}function w(e){return e.outputs.filter(e=>e.connections.length>0).length}function T(e){return Object.keys(e.props).length}function te(e){return Object.values(e.props).filter(e=>e.expression).length}function O(){x(l)?.resetCookInfo&&x(l).resetCookInfo()}function j(e){return e instanceof eT}function re(e){return j(e)?e.getBufferInfo():null}function N(e,t){let n=e*t/1e6;return n>=1?`${e} × ${t} (${n.toFixed(1)}MP)`:`${e} × ${t} (${(e*t/1e3).toFixed(0)}K)`}function ie(e,t){switch(e){case`gray`:return`Grayscale (1ch)`;case`rgb`:return`RGB (3ch)`;case`rgba`:return`RGBA (4ch)`;default:return`${t} channels`}}J(()=>(n(),A(d())),()=>{L(s,n().get(d()))}),J(()=>x(s),()=>{L(c,x(s)?.isLocked??!1)}),J(()=>r(),()=>{r()&&(p(r().graph),m(r().selectedNode))}),J(()=>(x(c),x(s),A(m())),()=>{L(l,x(c)?x(s)?.lockedNode:m())}),J(()=>(A(f()),x(c),x(l)),()=>{if(f()?.setTitle){let e=x(c)?`~ `:``;x(l)?f().setTitle(`${e}Info: ${x(l).id}`):f().setTitle(`${e}Node Info`)}}),J(()=>x(l),()=>{L(u,x(l)?re(x(l)):null)}),he(),ue();var ae=cT(),oe=M(ae),I=e=>{var t=oT(),n=M(t),r=P(M(n),2),i=M(r),a=P(M(i),2),s=q(a,!0);o(i);var c=P(i,2),d=P(M(c),2),f=q(d,!0);o(c);var p=P(c,2),m=P(M(p),2),ee=q(m,!0);o(p);var A=P(p,2),ne=P(M(A),2),j=q(ne,!0);o(A),o(r),o(n);var re=P(n,2),ae=M(re),oe=P(M(ae));o(ae);var I=P(ae,2),L=M(I),R=P(M(L),2);let z;var se=q(R,!0);o(L);var B=P(L,2),V=P(M(B),2);let ce;var le=q(V,!0);o(B);var H=P(B,2),U=P(M(H),2),ue=q(U,!0);o(H);var de=P(H,2),fe=P(M(de),2),pe=q(fe,!0);o(de);var me=P(de,2),he=P(M(me),2),W=q(he,!0);o(me);var G=P(me,2),ge=P(M(G),2),_e=q(ge,!0);o(G),o(I),o(re);var ve=P(re,2),ye=e=>{var t=tT(),n=P(M(t),2),r=M(n),i=P(M(r),2),a=q(i,!0);o(r);var s=P(r,2),c=P(M(s),2),l=q(c,!0);o(s);var d=P(s,2),f=P(M(d),2),p=q(f,!0);o(d),o(n),o(t),K((e,t)=>{D(a,e),D(l,t),D(p,(x(u),F(()=>x(u).memorySizeStr)))},[()=>(x(u),F(()=>N(x(u).width,x(u).height))),()=>(x(u),F(()=>ie(x(u).layout,x(u).channels)))]),E(e,t)};Z(ve,e=>{x(u)&&e(ye)});var be=P(ve,2),xe=P(M(be),2),J=M(xe),Se=P(M(J),2);let Y;var Ce=q(Se,!0);o(J);var we=P(J,2),Te=P(M(we),2);let Ee;var X=q(Te,!0);o(we);var De=P(we,2),Oe=P(M(De),2);let ke;var Ae=q(Oe,!0);o(De);var je=P(De,2),Me=P(M(je),2);let Ne;var Pe=q(Me,!0);o(je);var Fe=P(je,2),Ie=P(M(Fe),2),Le=q(Ie,!0);o(Fe),o(xe),o(be);var Re=P(be,2),ze=P(M(Re),2),Be=M(ze),Ve=P(M(Be),2),He=q(Ve);o(Be);var Ue=P(Be,2),We=P(M(Ue),2),Q=q(We);o(Ue);var Ge=P(Ue,2),Ke=P(M(Ge),2),qe=q(Ke,!0);o(Ge);var Je=P(Ge,2),Ye=P(M(Je),2);let Xe;var Ze=q(Ye,!0);o(Je),o(ze),o(Re);var $=P(Re,2),Qe=e=>{var t=iT(),n=P(M(t),2),r=M(n),i=e=>{var t=nT(),n=P(M(t),2),r=q(n,!0);o(t),K(()=>D(r,(x(l),F(()=>x(l).error.message)))),E(e,t)};Z(r,e=>{x(l),F(()=>x(l).error)&&e(i)});var a=P(r,2),s=e=>{var t=rT(),n=P(M(t),2),r=q(n,!0);o(t),K(()=>D(r,(x(l),F(()=>x(l).warning)))),E(e,t)};Z(a,e=>{x(l),F(()=>x(l).warning)&&e(s)}),o(n),o(t),E(e,t)};Z($,e=>{x(l),F(()=>x(l).error||x(l).warning)&&e(Qe)});var $e=P($,2),et=e=>{var t=aT(),n=P(M(t),2),r=M(n),i=P(M(r),2),a=q(i,!0);o(r);var s=P(r,2),c=P(M(s),2),u=q(c,!0);o(s),o(n),o(t),K(e=>{D(a,e),D(u,(x(l),F(()=>x(l).code.length)))},[()=>(x(l),F(()=>x(l).code.split(`
|
|
207
|
-
`).length))]),E(e,t)};Z($e,e=>{x(l),F(()=>x(l).code)&&e(et)}),o(t),K((e,t,n,r,i,a,o,c,u,d,p,m,h,g)=>{D(s,(x(l),F(()=>x(l).id))),D(f,(x(l),F(()=>x(l).type))),D(ee,e),D(j,t),z=v(R,1,`value svelte-13kv637`,null,z,{slow:x(l).cookInfo.lastCookTime>100}),D(se,n),ce=v(V,1,`value svelte-13kv637`,null,ce,{slow:x(l).cookInfo.averageCookTime>100}),D(le,r),D(ue,i),D(pe,(x(l),F(()=>x(l).cookInfo.cookCount))),D(W,a),D(_e,o),Y=v(Se,1,`value svelte-13kv637`,null,Y,{active:x(l).bypass}),D(Ce,(x(l),F(()=>x(l).bypass?`Yes`:`No`))),Ee=v(Te,1,`value svelte-13kv637`,null,Ee,{active:x(l).cook}),D(X,(x(l),F(()=>x(l).cook?`Yes`:`No`))),ke=v(Oe,1,`value svelte-13kv637`,null,ke,{active:x(l).isTimeDependent}),D(Ae,(x(l),F(()=>x(l).isTimeDependent?`Yes`:`No`))),Ne=v(Me,1,`value svelte-13kv637`,null,Ne,{warning:x(l).isDirty}),D(Pe,(x(l),F(()=>x(l).isDirty?`Yes`:`No`))),D(Le,(x(l),F(()=>x(l).variadic?`Yes`:`No`))),D(He,`${c??``} / ${u??``} connected`),D(Q,`${d??``} / ${p??``} connected`),D(qe,m),Xe=v(Ye,1,`value svelte-13kv637`,null,Xe,{active:h}),D(Ze,g)},[()=>(x(l),F(()=>y(x(l)))),()=>(x(l),F(()=>x(l).path())),()=>(x(l),F(()=>h(x(l).cookInfo.lastCookTime))),()=>(x(l),F(()=>h(x(l).cookInfo.averageCookTime))),()=>(x(l),F(()=>h(x(l).cookInfo.totalCookTime))),()=>(x(l),F(()=>_(x(l).cookInfo.lastCookTimestamp))),()=>(x(l),F(()=>g(x(l).cookInfo.peakMemory))),()=>(x(l),F(()=>C(x(l)))),()=>(x(l),F(()=>b(x(l)))),()=>(x(l),F(()=>w(x(l)))),()=>(x(l),F(()=>S(x(l)))),()=>(x(l),F(()=>T(x(l)))),()=>te(x(l))>0,()=>(x(l),F(()=>te(x(l))))]),k(`click`,oe,O),E(e,t)},R=e=>{var t=sT();E(e,t)};Z(oe,e=>{x(l)?e(I):e(R,-1)}),o(ae),E(e,ae),Ee(),a()}p([`click`]);var uT=class{constructor(e,t=e.start){this.range=e,this._playing=!1,this.anchorMs=0,this.anchorFrame=0,this._dropped=0,this._frame=t}get frame(){return this._frame}get playing(){return this._playing}get dropped(){return this._dropped}setRange(e,t=0){this.range={...this.range,...e},this.range.end<this.range.start&&(this.range.end=this.range.start),this.setFrame(this._frame,t)}setFrame(e,t=0){return this._frame=Math.min(this.range.end,Math.max(this.range.start,Math.round(e))),this.anchorMs=t,this.anchorFrame=this._frame,this._frame}play(e){this._playing||(this._frame>=this.range.end&&!this.range.loop&&(this._frame=this.range.start),this._playing=!0,this._dropped=0,this.anchorMs=e,this.anchorFrame=this._frame)}pause(){this._playing=!1}toggle(e){this._playing?this.pause():this.play(e)}step(e,t=0){return this.pause(),this.setFrame(this._frame+e,t)}toStart(e=0){return this.setFrame(this.range.start,e)}toEnd(e=0){return this.setFrame(this.range.end,e)}advance(e,t=!1){if(!this._playing)return null;let n=Math.max(0,e-this.anchorMs)/1e3,r=Math.floor(this.anchorFrame+n*this.range.fps);if(r===this._frame)return null;if(r>this.range.end){if(!this.range.loop)return this._playing=!1,this._frame===this.range.end?null:(this._frame=this.range.end,this._frame);let t=this.range.end-this.range.start+1;r=this.range.start+(r-this.range.start)%t,this.anchorMs=e,this.anchorFrame=r}return t?(this._dropped+=1,null):(this._frame=r,r)}};function dT(e,t){if(!e)return null;let n=e[t];return typeof n==`function`?n:null}function fT(e){if(!e||typeof e!=`object`)return null;let t=e,n=t.frame??t.f??t.time??t.t,r=t.value??t.v??t.val;if(typeof n!=`number`||!Number.isFinite(n))return null;let i=typeof t.interpolation==`string`?t.interpolation:void 0;return{frame:n,value:typeof r==`number`?r:Number(r)||0,interpolation:i}}function pT(e){let t=dT(e,`hasChannel`);if(t&&!t())return[];let n=dT(e,`keys`);if(!n)return[];let r;try{r=n()}catch{return[]}return Array.isArray(r)?r.map(fT).filter(e=>e!==null).sort((e,t)=>e.frame-t.frame):[]}function mT(e){let t=new Set;for(let n of Object.keys(e.props??{}))t.add(n);for(let n of e.parameters??[])n?.name&&t.add(n.name);return[...t]}function hT(e){let t=[];for(let n of e?.nodes??[])if(typeof n?.parm==`function`)for(let e of mT(n)){let r;try{r=n.parm(e)}catch{continue}let i=pT(r);if(i.length===0)continue;let a=n.id;try{a=n.path?.()??n.id}catch{}t.push({nodeId:n.id,nodePath:a,param:e,keys:i})}return t}function gT(e,t,n){let r=(e?.nodes??[]).find(e=>e.id===t);if(!r||typeof r.parm!=`function`)return null;try{return r.parm(n)}catch{return null}}function _T(e,t,n,r,i){if(r===i)return!0;let a=gT(e,t,n);if(!a)return!1;let o=dT(a,`moveKey`);if(o)try{return o(r,i),!0}catch{return!1}let s=dT(a,`setKey`),c=dT(a,`deleteKey`);if(!s||!c)return!1;let l=pT(a).find(e=>e.frame===r);if(!l)return!1;try{return s(i,l.value,l.interpolation),c(r),!0}catch{return!1}}function vT(e){let t=yT(e);return e.width/t}function yT(e){return Math.max(1,e.end-e.start)}function bT(e,t){return(e-t.start)*vT(t)}function xT(e,t){return t.start+e/vT(t)}function ST(e,t){return Math.min(t.end,Math.max(t.start,e))}function CT(e,t){return ST(Math.round(xT(e,t)),t)}var wT=[1,2,5,10,25,50,100,250,500,1e3,2500,5e3,1e4];function TT(e,t=56){let n=vT(e);for(let e of wT)if(e*n>=t)return e;return wT[wT.length-1]}function ET(e,t=56){let n=TT(e,t),r=Math.ceil(e.start/n)*n,i=[];for(let t=r;t<=e.end;t+=n)i.push(t);return i.length===0&&i.push(e.start,e.end),i}function DT(e,t,n,r=6){let i=null,a=1/0;for(let o of t){let t=Math.abs(bT(o,n)-e);t<=r&&t<a&&(i=o,a=t)}return i}var OT=u(`<span class="note svelte-8qazfw" title="Frames skipped because a cook was still running"> </span>`),kT=u(`<span class="note warn svelte-8qazfw">Channel API cannot move keys yet</span>`),AT=u(`<span class="note svelte-8qazfw"> </span>`),jT=u(`<div class="tick svelte-8qazfw"><span class="tick-label svelte-8qazfw"> </span></div>`),MT=u(`<div class="empty svelte-8qazfw">No keyed parameters. Key a parameter to see its channel here.</div>`),NT=u(`<div></div>`),PT=u(`<div class="track-row svelte-8qazfw"><div class="gutter label svelte-8qazfw"><span class="node-name svelte-8qazfw"> </span> <span class="param-name svelte-8qazfw"> </span></div> <div class="track svelte-8qazfw" role="group"><div class="track-playhead svelte-8qazfw"></div> <!></div></div>`),FT=u(`<span class="selected-key svelte-8qazfw"> </span>`),IT=u(`<span class="hint"> </span>`),LT=u(`<div class="timeline-panel svelte-8qazfw" data-panel-type="timeline"><div class="transport svelte-8qazfw"><button class="tbtn svelte-8qazfw" title="Jump to start" aria-label="Jump to start">⏮</button> <button class="tbtn svelte-8qazfw" title="Step back" aria-label="Step back">◀</button> <button> </button> <button class="tbtn svelte-8qazfw" title="Step forward" aria-label="Step forward">▶</button> <button class="tbtn svelte-8qazfw" title="Jump to end" aria-label="Jump to end">⏭</button> <label class="field svelte-8qazfw" title="Current frame"><span class="svelte-8qazfw">Frame</span> <input type="number" aria-label="Current frame" class="svelte-8qazfw"/></label> <label class="field svelte-8qazfw" title="In point"><span class="svelte-8qazfw">In</span> <input type="number" aria-label="In point" class="svelte-8qazfw"/></label> <label class="field svelte-8qazfw" title="Out point"><span class="svelte-8qazfw">Out</span> <input type="number" aria-label="Out point" class="svelte-8qazfw"/></label> <label class="field svelte-8qazfw" title="Frames per second"><span class="svelte-8qazfw">FPS</span> <input type="number" aria-label="Frames per second" class="svelte-8qazfw"/></label> <label class="toggle svelte-8qazfw" title="Loop playback"><input type="checkbox"/> <span>Loop</span></label> <div class="spacer svelte-8qazfw"></div> <!> <!> <!></div> <div class="ruler-row svelte-8qazfw"><div class="gutter svelte-8qazfw"></div> <div class="ruler svelte-8qazfw" role="slider" tabindex="0" aria-label="Playhead"><!> <div class="playhead svelte-8qazfw"><span class="playhead-label svelte-8qazfw"> </span></div></div></div> <div class="sheet svelte-8qazfw"><!></div> <div class="status svelte-8qazfw"><!></div></div>`);function RT(e,t){ee(t,!1);let n=()=>we(ga,`$sharedContextStore`,i),r=()=>we(ox,`$timelineFocus`,i),[i,s]=ne(),l=Y(),u=Y(),d=Y(),p=V(t,`panelId`,8),m=V(t,`panelParams`,8),h=V(t,`panelApi`,8,void 0),g=V(t,`containerApi`,8,void 0),_=V(t,`graph`,12,void 0);p(),m(),g();let y=Y(Rb.fps()),b=Y(1),S=Y(250),C=Y(!0),w=Y(Rb.frame()),T=Y(String(x(w))),k=new uT({start:x(b),end:x(S),fps:x(y),loop:x(C)},x(w)),j=Y(!1),N=Y(0),ie=Y(600),ae=Y([]),oe=Y(null),I=null,z=Y(!1),se=!1,B=null;async function ce(e){if(Bb(e),Rb.markTimeDependentDirty(),se){B=e;return}se=!0;try{await _()?.execute()}catch(e){console.warn(`[Timeline] cook failed:`,e)}finally{se=!1;let t=B;B=null,t!==null&&t!==e&&ce(t)}}function le(e){L(w,e),L(T,String(e)),ce(e)}let H=null;function U(e){let t=k.advance(e,se);L(N,k.dropped),L(j,k.playing),t!==null&&le(t),H=k.playing?requestAnimationFrame(U):null}function de(){k.toggle(performance.now()),L(j,k.playing),x(j)&&H===null&&(H=requestAnimationFrame(U))}function pe(){k.pause(),L(j,!1)}function W(e){pe(),le(k.step(e,performance.now()))}function _e(){pe(),le(k.toStart(performance.now()))}function ve(){pe(),le(k.toEnd(performance.now()))}function be(){let e=Number.parseFloat(x(T));if(!Number.isFinite(e)){L(T,String(x(w)));return}pe(),le(k.setFrame(e,performance.now()))}function xe(){x(S)<x(b)&&L(S,x(b)),x(y)<=0&&L(y,1),Rb.setFps(x(y)),k.setRange({start:x(b),end:x(S),fps:x(y),loop:x(C)},performance.now()),(x(w)<x(b)||x(w)>x(S))&&le(k.setFrame(x(w),performance.now()))}let Se=Y();function Te(e,t){let n=t.getBoundingClientRect();return CT(e.clientX-n.left,x(l))}function De(e){x(Se)&&(pe(),e.currentTarget.setPointerCapture(e.pointerId),Oe(e))}function Oe(e){if(!x(Se))return;let t=k.setFrame(Te(e,x(Se)),performance.now());t!==x(w)&&le(t)}function ke(e){e.buttons!==0&&Oe(e)}function Ae(e){let t=e.currentTarget;t.hasPointerCapture?.(e.pointerId)&&t.releasePointerCapture(e.pointerId)}let je=null;function Me(){L(ae,hT(_())),x(oe)&&!x(ae).some(e=>e.nodeId===x(oe).nodeId&&e.param===x(oe).param&&e.keys.some(e=>e.frame===x(oe).frame))&&L(oe,null)}function Ne(e,t){Me();let n=x(ae).find(n=>n.nodeId===e&&n.param===t);if(!n?.keys.length){L(oe,null),L(Pe,`${e}.${t} has no keys yet — alt-click the parameter to set one.`);return}L(Pe,null);let r=n.keys.reduce((e,t)=>Math.abs(t.frame-x(w))<Math.abs(e.frame-x(w))?t:e);L(oe,{nodeId:e,param:t,frame:r.frame,value:r.value})}let Pe=Y(null);function Fe(e){return e.keys.map(e=>e.frame)}function Ie(e,t){return bT(I&&I.nodeId===e.nodeId&&I.param===e.param&&I.from===t?I.to:t,x(l))}function Le(e,t){let n=e.currentTarget,r=n.getBoundingClientRect(),i=DT(e.clientX-r.left,Fe(t),x(l));if(i===null){L(oe,null);return}let a=t.keys.find(e=>e.frame===i);L(oe,{nodeId:t.nodeId,param:t.param,frame:i,value:a?.value??0}),I={nodeId:t.nodeId,param:t.param,from:i,to:i},n.setPointerCapture(e.pointerId)}function Re(e){if(!I||e.buttons===0)return;let t=e.currentTarget.getBoundingClientRect(),n=CT(e.clientX-t.left,x(l));n!==I.to&&(I={...I,to:n})}function ze(e){let t=e.currentTarget;if(t.hasPointerCapture?.(e.pointerId)&&t.releasePointerCapture(e.pointerId),!I)return;let n=I;I=null,n.to!==n.from&&(_T(_(),n.nodeId,n.param,n.from,n.to)?(L(oe,x(oe)?{...x(oe),frame:n.to}:null),Me(),ce(x(w))):(L(z,!0),setTimeout(()=>{L(z,!1)},4e3)))}ye(()=>{L(y,Rb.fps()),L(w,Rb.frame()),L(T,String(x(w))),k.setFrame(x(w),performance.now()),Me(),je=setInterval(Me,1e3)}),me(()=>{H!==null&&cancelAnimationFrame(H),je!==null&&clearInterval(je)}),J(()=>n(),()=>{n()&&_(n().graph)}),J(()=>(x(b),x(S),x(ie)),()=>{L(l,{start:x(b),end:x(S),width:Math.max(1,x(ie))})}),J(()=>x(l),()=>{L(u,ET(x(l)))}),J(()=>(x(w),x(l)),()=>{L(d,bT(x(w),x(l)))}),J(()=>A(_()),()=>{_(),Me()}),J(()=>r(),()=>{r()&&Ne(r().nodeId,r().param)}),J(()=>(A(h()),x(j),x(w)),()=>{h()?.setTitle&&h().setTitle(x(j)?`Timeline · ${x(w)}`:`Timeline`)}),he(),ue();var Be=LT(),Ve=M(Be),He=M(Ve),Ue=P(He,2),We=P(Ue,2);let Q;var Ge=q(We,!0),Ke=P(We,2),qe=P(Ke,2),Je=P(qe,2),Ye=P(M(Je),2);re(Ye),o(Je);var Xe=P(Je,2),Ze=P(M(Xe),2);re(Ze),o(Xe);var $=P(Xe,2),Qe=P(M($),2);re(Qe),o($);var $e=P($,2),et=P(M($e),2);re(et),o($e);var tt=P($e,2),nt=M(tt);re(nt),c(2),o(tt);var rt=P(tt,4),it=e=>{var t=OT(),n=q(t);K(()=>D(n,`${x(N)??``} dropped`)),E(e,t)};Z(rt,e=>{x(j)&&x(N)>0&&e(it)});var at=P(rt,2),ot=e=>{var t=kT();E(e,t)};Z(at,e=>{x(z)&&e(ot)});var st=P(at,2),ct=e=>{var t=AT(),n=q(t,!0);K(()=>D(n,x(Pe))),E(e,t)};Z(st,e=>{x(Pe)&&e(ct)}),o(Ve);var lt=P(Ve,2),ut=M(lt);a(ut,`width: 170px`);var dt=P(ut,2),ft=M(dt);f(ft,1,()=>x(u),e=>e,(e,t)=>{var n=jT(),r=M(n),i=q(r,!0);o(n),K(e=>{a(n,`left: ${e??``}px`),D(i,x(t))},[()=>(A(bT),x(t),x(l),F(()=>bT(x(t),x(l))))]),E(e,n)});var pt=P(ft,2),mt=M(pt),ht=q(mt,!0);o(pt),o(dt),ge(dt,e=>L(Se,e),()=>x(Se)),o(lt);var gt=P(lt,2),_t=M(gt),vt=e=>{var t=MT();E(e,t)},yt=e=>{var t=te(),n=G(t);f(n,1,()=>x(ae),e=>e.nodeId+`/`+e.param,(e,t)=>{var n=PT(),r=M(n);a(r,`width: 170px`);var i=M(r),s=q(i,!0),c=P(i,2),l=q(c,!0);o(r);var u=P(r,2),p=M(u),m=P(p,2);f(m,1,()=>(x(t),F(()=>x(t).keys)),e=>e.frame,(e,n)=>{var r=NT();let i;K(e=>{i=v(r,1,`key svelte-8qazfw`,null,i,{selected:x(oe)&&x(oe).nodeId===x(t).nodeId&&x(oe).param===x(t).param&&x(oe).frame===x(n).frame}),a(r,`left: ${e??``}px`),X(r,`title`,`frame ${x(n),F(()=>x(n).frame)??``} · ${x(n),F(()=>x(n).value)??``}`)},[()=>(x(t),x(n),F(()=>Ie(x(t),x(n).frame)))]),E(e,r)}),o(u),o(n),K(()=>{X(r,`title`,`${x(t),F(()=>x(t).nodePath)??``}/${x(t),F(()=>x(t).param)??``}`),D(s,(x(t),F(()=>x(t).nodeId))),D(l,(x(t),F(()=>x(t).param))),X(u,`aria-label`,`${x(t),F(()=>x(t).nodeId)??``} ${x(t),F(()=>x(t).param)??``} channel`),a(p,`left: ${x(d)??``}px`)}),O(`pointerdown`,u,e=>Le(e,x(t))),O(`pointermove`,u,Re),O(`pointerup`,u,ze),E(e,n)}),E(e,t)};Z(_t,e=>{x(ae),F(()=>x(ae).length===0)?e(vt):e(yt,-1)}),o(gt);var bt=P(gt,2),xt=M(bt),St=e=>{var t=FT(),n=q(t);K(()=>D(n,`${x(oe),F(()=>x(oe).nodeId)??``}/${x(oe),F(()=>x(oe).param)??``} — frame ${x(oe),F(()=>x(oe).frame)??``}, value ${x(oe),F(()=>x(oe).value)??``}`)),E(e,t)},Ct=e=>{var t=IT(),n=q(t);K(()=>D(n,`${x(ae),F(()=>x(ae).length)??``} channel${x(ae),F(()=>x(ae).length===1?``:`s`)??``} · drag a key to move it in time`)),E(e,t)};Z(xt,e=>{x(oe)?e(St):e(Ct,-1)}),o(bt),o(Be),K(()=>{Q=v(We,1,`tbtn play svelte-8qazfw`,null,Q,{active:x(j)}),X(We,`title`,x(j)?`Pause`:`Play`),X(We,`aria-label`,x(j)?`Pause`:`Play`),D(Ge,x(j)?`⏸`:`▶`),X(dt,`aria-valuemin`,x(b)),X(dt,`aria-valuemax`,x(S)),X(dt,`aria-valuenow`,x(w)),a(pt,`left: ${x(d)??``}px`),D(ht,x(w))}),O(`click`,He,_e),O(`click`,Ue,()=>W(-1)),O(`click`,We,de),O(`click`,Ke,()=>W(1)),O(`click`,qe,ve),Ce(Ye,()=>x(T),e=>L(T,e)),O(`change`,Ye,be),O(`keydown`,Ye,e=>{e.key===`Enter`&&be()}),Ce(Ze,()=>x(b),e=>L(b,e)),O(`change`,Ze,xe),Ce(Qe,()=>x(S),e=>L(S,e)),O(`change`,Qe,xe),Ce(et,()=>x(y),e=>L(y,e)),O(`change`,et,xe),R(nt,()=>x(C),e=>L(C,e)),O(`change`,nt,xe),fe(dt,`clientWidth`,e=>L(ie,e)),O(`pointerdown`,dt,De),O(`pointermove`,dt,ke),O(`pointerup`,dt,Ae),O(`keydown`,dt,e=>{e.key===`ArrowLeft`&&(e.preventDefault(),W(-1)),e.key===`ArrowRight`&&(e.preventDefault(),W(1))}),E(e,Be),Ee(),s()}var zT=u(`<div class="panel-error svelte-1tj4xha" role="alert"> </div>`),BT=u(`<div class="project-panel svelte-1tj4xha"></div>`);function VT(e,t){ee(t,!1);let n=V(t,`panelParams`,8),r=V(t,`panelApi`,8),i=V(t,`loader`,8,Zv),a=Y(),o=Y(``);ye(()=>{let e=!1,t,s=new AbortController,c=n().projectPanelName;if(!c){L(o,`Project panel name is missing`);return}return i()(c).then(async i=>{if(e)return;let o=await i.mount(x(a),ty({context:ba,close:()=>r().close(),sourceNodeId:n().sourceNodeId,signal:s.signal}));e?o?.():t=o}).catch(t=>{e||L(o,t instanceof Error?t.message:String(t))}),()=>{e=!0,s.abort(),t?.()}}),ue();var s=te(),c=G(s),l=e=>{var t=zT(),n=q(t,!0);K(()=>D(n,x(o))),E(e,t)},u=e=>{var t=BT();ge(t,e=>L(a,e),()=>x(a)),E(e,t)};Z(c,e=>{x(o)?e(l):e(u,-1)}),E(e,s),Ee()}var HT=ie(()=>cl),UT=u(`<button class="add-panel-option svelte-1vs60xl"><!> <span class="panel-label svelte-1vs60xl"> </span></button>`),WT=u(`<div class="add-panel-menu svelte-1vs60xl"></div>`),GT=u(`<div class="dockview-container cascade-theme svelte-1vs60xl"></div> <!>`,1);function KT(t,n){ee(n,!1);let r=()=>we(rl,`$panelTypes`,i),[i,s]=ne(),c=Y(),l=xe(),u=Y(!1),d={x:0,y:0},p=Y(),m=Y(``),g=``,_=V(n,`graph`,8,void 0),v=V(n,`selectedNode`,8,null),y=V(n,`selectedAnnotation`,8,null),b=V(n,`activeTool`,8,`select`),S=V(n,`activeLibrary`,8,null),C=V(n,`documentName`,8,`Untitled`),w=V(n,`presentationMode`,8,!1),T=V(n,`onRecordHistory`,8,void 0),te=Y(),k=null;function j(e){let t=document.querySelector(`[data-panel-type="graph"]`);t&&t.dispatchEvent(new CustomEvent(`addNode`,{detail:e}))}function re(){let e=document.querySelector(`[data-panel-type="graph"]`);e&&e.dispatchEvent(new CustomEvent(`centerOnNodes`))}function N(){let e=document.querySelector(`[data-panel-type="graph"]`);e&&e.dispatchEvent(new CustomEvent(`selectAll`))}function ie(){let e=document.querySelector(`[data-panel-type="graph"]`);e&&e.dispatchEvent(new CustomEvent(`deselectAll`))}function ae(){let e=document.querySelector(`[data-panel-type="graph"]`);e&&e.dispatchEvent(new CustomEvent(`deleteSelected`))}function oe(e,t){HT().openCodeEditor(e,t)}function R(){HT().resetLayout()}function z(e){HT().focusPanel(e)}async function B(e,t){g=e,d=t,L(u,!0),await le()}async function le(){if(L(m,`left: ${d.x}px; top: ${d.y}px; visibility: hidden`),await e(),!x(p))return;let{width:t,height:n}=x(p).getBoundingClientRect(),r=z_(d,{width:t,height:n},{width:window.innerWidth,height:window.innerHeight});L(m,`left: ${r.x}px; top: ${r.y}px`)}function H(e){HT().addPanelToGroup(e,g),L(u,!1)}function U(){L(u,!1)}ye(async()=>{xa(`graph`,iv,`Graph`),xa(`inspector`,Ix,`Parameters`),xa(`definition`,Qw,`Definition`),xa(`viewer`,iS,`Viewer`),xa(`log`,uS,`Log`),xa(`agent`,VS,`Agent`),Sa(`code`,()=>od(()=>import(`./CodePanel-faK6PRfz.js`),__vite__mapDeps([0,1,2])),`Code`),xa(`info`,lT,`Node Info`),xa(`timeline`,RT,`Timeline`);try{let e=await Xv();il(e);for(let t of e){xa(`project:${t.name}`,VT,t.title);for(let e of t.rendererTypes??[])sy(e,t.name)}}catch(e){console.warn(`Failed to discover project panels:`,e),il([])}HT(HT().onAddPanelClick=B),HT().initialize(x(te)),k=setInterval(()=>{HT().saveLayout()},3e4)}),me(()=>{k&&clearInterval(k),HT(HT().onAddPanelClick=null),HT().dispose()}),J(()=>(A(_()),A(v()),A(y()),A(b()),A(S()),A(C()),A(w()),A(T()),HT()),()=>{L(c,{graph:_(),selectedNode:v(),selectedAnnotation:y(),activeTool:b(),activeLibrary:S(),documentName:C(),presentationMode:w(),onRecordHistory:T(),onNodeSelect:e=>{l(`nodeSelect`,{node:e})},onAnnotationSelect:e=>{l(`annotationSelect`,{annotationId:e})},onToolChange:e=>{l(`toolChange`,e)},onLibraryToggle:e=>{l(`libraryToggle`,e)},onAction:e=>{l(`action`,e)},onNameChange:e=>{l(`nameChange`,e)},onOpenNodePanel:e=>{l(`openNodePanel`,e)},onPanelAction:(e,t)=>{e.startsWith(`panel:`)?HT().openProjectPanel(e.slice(6),t):l(`action`,{action:e,nodeId:t})}})}),J(()=>x(c),()=>{ya(x(c))}),he();var de={addNode:j,centerOnNodes:re,selectAll:N,deselectAll:ie,deleteSelected:ae,openCodeEditor:oe,resetLayout:R,focusPanel:z};ue();var fe=GT();O(`click`,ce,U);var pe=G(fe);ge(pe,e=>L(te,e),()=>x(te));var W=P(pe,2),_e=e=>{var t=WT();f(t,5,r,h,(e,t)=>{var n=UT(),r=M(n);Vc(r,{get icon(){return x(t),F(()=>x(t).icon)},size:14,class:`panel-icon`});var i=P(r,2),a=q(i,!0);o(n),K(()=>D(a,(x(t),F(()=>x(t).label)))),O(`click`,n,()=>H(x(t).type)),E(e,n)}),o(t),ge(t,e=>L(p,e),()=>x(p)),K(()=>a(t,x(m))),O(`click`,t,I(function(e){be.call(this,n,e)})),E(e,t)};Z(W,e=>{x(u)&&e(_e)}),E(t,fe),se(n,`addNode`,j),se(n,`centerOnNodes`,re),se(n,`selectAll`,N),se(n,`deselectAll`,ie),se(n,`deleteSelected`,ae),se(n,`openCodeEditor`,oe),se(n,`resetLayout`,R),se(n,`focusPanel`,z);var ve=Ee(de);return s(),ve}var qT=u(`<div class="separator svelte-1tlamc9"></div>`),JT=u(`<span class="item-shortcut svelte-1tlamc9"> </span>`),YT=u(`<button class="dropdown-item svelte-1tlamc9"><span class="item-label svelte-1tlamc9"> </span> <!></button>`),XT=u(`<div class="dropdown svelte-1tlamc9"></div>`),ZT=u(`<button><span class="item-label svelte-1tlamc9"> </span> <!></button>`),QT=u(`<input class="name-input svelte-1tlamc9" type="text"/>`),$T=u(`<button class="document-name svelte-1tlamc9" title="Click to rename"> </button>`),eE=u(`<div class="menu-bar svelte-1tlamc9"><div class="menu-left svelte-1tlamc9"><div><button class="menu-button svelte-1tlamc9">File</button> <!></div> <div><button class="menu-button svelte-1tlamc9">Edit</button> <!></div> <div class="menu-item svelte-1tlamc9"><button class="menu-button svelte-1tlamc9">Create</button></div> <div><button class="menu-button svelte-1tlamc9">View</button> <!></div></div> <div class="menu-center svelte-1tlamc9"><!></div> <div class="menu-right svelte-1tlamc9"></div></div>`);function tE(e,t){ee(t,!1);let n=Y(),r=Y(),i=V(t,`documentName`,8,`Untitled`),a=V(t,`canUndo`,8,!1),s=V(t,`canRedo`,8,!1),l=xe(),u=Y(null),d=Y(!1),p=Y(),m=Y(i()),g=Y();function _(e){x(u)===e?L(u,null):L(u,e)}function y(e){l(`action`,e),L(u,null)}function b(){if(x(g)){let e=x(g).getBoundingClientRect();l(`openNodePanel`,{x:e.left,y:e.bottom+4})}else l(`action`,`addNode`);L(u,null)}function S(e){e.target.closest(`.menu-bar`)||L(u,null)}function C(){L(d,!0),L(m,i()),setTimeout(()=>{x(p)?.focus(),x(p)?.select()},0)}function w(){L(d,!1),x(m).trim()&&x(m)!==i()&&l(`nameChange`,x(m).trim())}function T(e){e.key===`Enter`?w():e.key===`Escape`&&(L(d,!1),L(m,i()))}let k=[{label:`Clean Up Layout`,action:`cleanUpLayout`,shortcut:`⇧L`},{label:`Center on Nodes`,action:`centerOnNodes`,shortcut:`H`},{label:`Reset Layout`,action:`resetLayout`,shortcut:`⇧⌘P`},{type:`separator`},{label:`Maximize Tab`,action:`maximizeTab`,shortcut:`⌘B`},{label:`Presentation Mode`,action:`presentationMode`,shortcut:`⌘.`},{type:`separator`},{label:`Focus Graph`,action:`focusGraph`,shortcut:`⌘1`},{label:`Focus Viewer`,action:`focusViewer`,shortcut:`⌘2`},{label:`Focus Parameters`,action:`focusInspector`,shortcut:`⌘3`},{label:`Focus Definition`,action:`focusDefinition`,shortcut:`⌘6`},{label:`Focus Log`,action:`focusLog`,shortcut:`⌘4`},{label:`Focus Agent`,action:`focusAgent`,shortcut:`⌘5`},{label:`Focus Timeline`,action:`focusTimeline`,shortcut:`⌘7`}];J(()=>A(i()),()=>{L(m,i())}),J(()=>{},()=>{L(n,[{label:`New Project`,action:`new`,shortcut:`⌥N`},{label:`Open...`,action:`open`,shortcut:`⌥O`},{type:`separator`},{label:`Save`,action:`save`,shortcut:`⌥S`},{label:`Save As...`,action:`saveAs`,shortcut:`⇧⌥S`},{label:`Version History...`,action:`versionHistory`},{type:`separator`},{label:`Export...`,action:`export`,shortcut:`⌘E`},{type:`separator`},{label:`Project Settings...`,action:`projectSettings`,shortcut:`⇧⌘,`},{label:`Settings...`,action:`settings`,shortcut:`⌘,`},{type:`separator`},{label:`About Cascade`,action:`about`}])}),J(()=>(A(a()),A(s())),()=>{L(r,[{label:`Undo`,action:`undo`,shortcut:`⌘Z`,disabled:!a()},{label:`Redo`,action:`redo`,shortcut:`⇧⌘Z`,disabled:!s()},{type:`separator`},{label:`Select All`,action:`selectAll`,shortcut:`⌘A`},{label:`Deselect All`,action:`deselectAll`,shortcut:`⇧⌘A`},{type:`separator`},{label:`Delete Selected`,action:`delete`,shortcut:`⌫`}])}),he(),ue();var ne=eE();O(`click`,ce,S);var j=M(ne),N=M(j);let ie;var ae=M(N),oe=P(ae,2),I=e=>{var t=XT();f(t,5,()=>x(n),h,(e,t)=>{var n=te(),r=G(n),i=e=>{var t=qT();E(e,t)},a=e=>{var n=YT(),r=M(n),i=q(r,!0),a=P(r,2),s=e=>{var n=JT(),r=q(n,!0);K(()=>D(r,(x(t),F(()=>x(t).shortcut)))),E(e,n)};Z(a,e=>{x(t),F(()=>x(t).shortcut)&&e(s)}),o(n),K(()=>D(i,(x(t),F(()=>x(t).label)))),O(`click`,n,()=>x(t).action&&y(x(t).action)),E(e,n)};Z(r,e=>{x(t),F(()=>x(t).type===`separator`)?e(i):e(a,-1)}),E(e,n)}),o(t),E(e,t)};Z(oe,e=>{x(u)===`file`&&e(I)}),o(N);var R=P(N,2);let z;var se=M(R),B=P(se,2),le=e=>{var t=XT();f(t,5,()=>x(r),h,(e,t)=>{var n=te(),r=G(n),i=e=>{var t=qT();E(e,t)},a=e=>{var n=ZT();let r;var i=M(n),a=q(i,!0),s=P(i,2),c=e=>{var n=JT(),r=q(n,!0);K(()=>D(r,(x(t),F(()=>x(t).shortcut)))),E(e,n)};Z(s,e=>{x(t),F(()=>x(t).shortcut)&&e(c)}),o(n),K(()=>{r=v(n,1,`dropdown-item svelte-1tlamc9`,null,r,{disabled:x(t).disabled}),n.disabled=(x(t),F(()=>x(t).disabled)),D(a,(x(t),F(()=>x(t).label)))}),O(`click`,n,()=>!x(t).disabled&&x(t).action&&y(x(t).action)),E(e,n)};Z(r,e=>{x(t),F(()=>x(t).type===`separator`)?e(i):e(a,-1)}),E(e,n)}),o(t),E(e,t)};Z(B,e=>{x(u)===`edit`&&e(le)}),o(R);var H=P(R,2),U=M(H);ge(U,e=>L(g,e),()=>x(g)),o(H);var de=P(H,2);let fe;var pe=M(de),me=P(pe,2),W=e=>{var t=XT();f(t,5,()=>k,h,(e,t)=>{var n=te(),r=G(n),i=e=>{var t=qT();E(e,t)},a=e=>{var n=YT(),r=M(n),i=q(r,!0),a=P(r,2),s=e=>{var n=JT(),r=q(n,!0);K(()=>D(r,(x(t),F(()=>x(t).shortcut)))),E(e,n)};Z(a,e=>{x(t),F(()=>x(t).shortcut)&&e(s)}),o(n),K(()=>D(i,(x(t),F(()=>x(t).label)))),O(`click`,n,()=>x(t).action&&y(x(t).action)),E(e,n)};Z(r,e=>{x(t),F(()=>x(t).type===`separator`)?e(i):e(a,-1)}),E(e,n)}),o(t),E(e,t)};Z(me,e=>{x(u)===`view`&&e(W)}),o(de),o(j);var _e=P(j,2),ve=M(_e),ye=e=>{var t=QT();re(t),ge(t,e=>L(p,e),()=>x(p)),Ce(t,()=>x(m),e=>L(m,e)),O(`blur`,t,w),O(`keydown`,t,T),E(e,t)},be=e=>{var t=$T(),n=q(t,!0);K(()=>D(n,i())),O(`click`,t,C),E(e,t)};Z(ve,e=>{x(d)?e(ye):e(be,-1)}),o(_e),c(2),o(ne),K(()=>{ie=v(N,1,`menu-item svelte-1tlamc9`,null,ie,{active:x(u)===`file`}),z=v(R,1,`menu-item svelte-1tlamc9`,null,z,{active:x(u)===`edit`}),fe=v(de,1,`menu-item svelte-1tlamc9`,null,fe,{active:x(u)===`view`})}),O(`click`,ae,()=>_(`file`)),O(`click`,se,()=>_(`edit`)),O(`click`,U,b),O(`click`,pe,()=>_(`view`)),E(e,ne),Ee()}var nE=`cascade-node-history`,rE=5;function iE(){try{let e=localStorage.getItem(nE);if(e)return JSON.parse(e)}catch(e){console.warn(`Failed to load node history:`,e)}return[]}function aE(e){try{localStorage.setItem(nE,JSON.stringify(e))}catch(e){console.warn(`Failed to save node history:`,e)}}function oE(){let{subscribe:e,set:t,update:n}=w(iE());return{subscribe:e,addToHistory(e){n(t=>{let n=[e,...t.filter(t=>t.type!==e.type)].slice(0,rE);return aE(n),n})},clear(){t([]),localStorage.removeItem(nE)}}}var sE=oE(),cE=u(`<button><span class="node-icon svelte-dm3w9n"><!></span> <span class="node-name svelte-dm3w9n"> </span> <span class="node-path svelte-dm3w9n"> </span></button>`),lE=u(`<div class="empty-state svelte-dm3w9n">No nodes found</div>`),uE=u(`<!> <!>`,1),dE=u(`<button><span class="label svelte-dm3w9n"> </span> <span class="arrow-icon svelte-dm3w9n"><!></span></button>`),fE=u(`<button class="node-item history-item svelte-dm3w9n"><span class="node-icon svelte-dm3w9n"><!></span> <span class="node-name svelte-dm3w9n"> </span> <span class="node-path svelte-dm3w9n"> </span></button>`),pE=u(`<div class="separator svelte-dm3w9n"></div> <div class="section-label svelte-dm3w9n">Recent</div> <!>`,1),mE=u(`<!> <div class="separator svelte-dm3w9n"></div> <button><span class="label svelte-dm3w9n">All</span> <span class="arrow-icon svelte-dm3w9n"><!></span></button> <div class="separator svelte-dm3w9n"></div> <button class="library-item svelte-dm3w9n"><span class="node-icon"><!></span> <span class="label svelte-dm3w9n"> </span></button> <!>`,1),hE=u(`<div class="menu-column submenu-column svelte-dm3w9n" role="group" aria-label="All nodes"></div>`),gE=u(`<div class="separator svelte-dm3w9n"></div>`),_E=u(`<button class="node-item svelte-dm3w9n"><span class="node-icon svelte-dm3w9n"><!></span> <span class="node-name svelte-dm3w9n"> </span></button>`),vE=u(`<button><span class="node-icon svelte-dm3w9n"><!></span> <span class="node-name svelte-dm3w9n"> </span></button>`),yE=u(`<div class="menu-column submenu-column nodes-submenu svelte-dm3w9n" role="group"></div>`),bE=u(`<div class="menu-column submenu-column svelte-dm3w9n" role="group"><!> <!> <!></div> <!>`,1),xE=u(`<div class="menu-column main-column svelte-dm3w9n" role="dialog" aria-label="Create node" tabindex="-1"><div class="search svelte-dm3w9n"><input type="text" placeholder="Type to search..." class="search-input svelte-dm3w9n"/></div> <!></div> <!>`,1);function SE(e,t){ee(t,!1);let n=()=>we(Jg,`$projectNodeModules`,s),r=()=>we(qg,`$iconByModule`,s),i=()=>we(sE,`$nodeHistoryStore`,s),[s,c]=ne(),l=Y(),u=Y(),d=Y(),p=Y(),m=Y(),_=Y(),y=Y(),b=Y(),S=Y(),C=Y(),w=Y(),T=Y(),k=Y(),j=Y(),N=Y(!1),ie=Y(null);async function oe(){L(ie,x(ie)??(await od(async()=>{let{default:e}=await import(`./CustomNodeDialog-DhlKuviy.js`);return{default:e}},__vite__mapDeps([3,1,4]))).default),L(N,!0)}let I=V(t,`libraryId`,8,null),R=V(t,`categoryId`,12,null),z=V(t,`centerPosition`,24,()=>({x:0,y:0})),se=V(t,`fixedPosition`,8,null),B=xe(),le=Y(),H=Y(``),U=Y(),de=Y(),fe=Y({x:0,y:0}),pe=Y(!1),me=Y(160),W=Y(180),_e=Y(-1),ve=Y(-1),be=Y(-1),Se=Y(`library`),Te=Y(void 0),De=Y(null),Oe=Y(0),ke=Y(0);function Ae(){if(se()){L(fe,{x:se().x,y:se().y}),L(pe,!0);return}if(!x(U)){(z().x!==0||z().y!==0)&&L(fe,{x:z().x,y:z().y});return}let e=document.querySelector(`[data-window-id="graph"]`);if(!e){L(fe,{x:z().x-80,y:z().y-200}),L(pe,!0);return}let t=e.getBoundingClientRect(),n=x(U).getBoundingClientRect(),r=n.width||160,i=n.height||400,a=z().x-t.left-r/2,o=z().y-t.top-i/2,s=t.width-r-10,c=t.height-i-10;a=Math.max(10,Math.min(s,a)),o=Math.max(10,Math.min(c,o)),L(fe,{x:t.left+a,y:t.top+o}),L(pe,!0)}ye(()=>{let e=()=>{(I()||R())&&Ae()};window.addEventListener(`resize`,e);let t=e=>{if(!x(N)&&(I()||R())){let t=e.target,n=document.querySelectorAll(`.menu-column`),r=!1;n.forEach(e=>{e.contains(t)&&(r=!0)}),document.querySelector(`.dialog-overlay`)?.contains(t)&&(r=!0),r||Le()}};return document.addEventListener(`mousedown`,t,!0),()=>{window.removeEventListener(`resize`,e),document.removeEventListener(`mousedown`,t,!0)}});function Me(e){let t=x(l).find(t=>t.id===e);if(!t)return[];let n=[];return t.categories.forEach(e=>{n.push(...e.nodes)}),n}function Ne(e){let t=e.categoryId||R(),n=e.type.startsWith(`annotation:`)?e.type:je(e.type);sE.addToHistory({name:e.name,icon:e.icon,description:e.description,type:e.type}),B(`addNode`,{type:n,libraryId:I(),categoryId:t})}function Pe(e,t){B(`selectCategory`,{libraryId:e,categoryId:t})}function Fe(e){let{name:t,modulePath:n,baseClass:r,template:i}=e.detail,a=(Bg[i]||Bg.node)(t);sE.addToHistory({name:t,icon:`Zap`,description:`Custom node based on ${r}`,type:n}),B(`addNode`,{type:n,libraryId:null,categoryId:null,customConfig:{name:t,modulePath:n,baseClass:r,code:a}}),L(N,!1),Le()}function Ie(e){e===`all`?(B(`selectLibrary`,{libraryId:null}),L(Se,`node`)):(B(`selectLibrary`,{libraryId:e}),L(Se,`node`))}function Le(){B(`close`)}function Re(e){return e.data}function ze(e){if(!(!I()&&!R())&&[`ArrowLeft`,`ArrowRight`,`ArrowUp`,`ArrowDown`,`Enter`,`Escape`].includes(e.key)){if(e.key===`Escape`){e.preventDefault(),e.stopPropagation(),Le();return}if(document.activeElement===x(le)&&e.key!==`Escape`){if(x(H)&&(e.key===`ArrowUp`||e.key===`ArrowDown`||e.key===`Enter`))e.preventDefault(),e.stopPropagation(),x(le).blur();else return}if(e.preventDefault(),e.stopPropagation(),e.key===`ArrowLeft`){if(x(H))return;x(Se)===`category`&&I()?R()?(L(Se,`category`),L(be,-1),R(null)):(L(Se,`library`),L(ve,-1)):x(Se)===`node`&&R()&&(L(Se,`category`),L(be,-1))}else if(e.key===`ArrowRight`){if(x(H))return;if(x(Se)===`library`&&I())(x(T).length>0||x(k).length>0)&&(L(Se,`category`),x(ve)===-1&&L(ve,0));else if(x(Se)===`category`&&!R()&&x(ve)>=0&&x(ve)<x(j).length){let e=x(j)[x(ve)];e.type===`category`&&`id`in e.data&&(I()&&`id`in e.data&&Pe(I(),e.data.id),L(Se,`node`),x(be)===-1&&L(be,0))}}else if(e.key===`ArrowUp`){if(x(H))L(Se,`node`),L(be,Math.max(0,x(be)-1));else if(x(Se)===`library`)L(_e,Math.max(0,x(_e)-1)),x(_e)>=0&&x(_e)<x(w).length&&Ie(x(w)[x(_e)].id);else if(x(Se)===`category`){if(R())L(be,Math.max(0,x(be)-1));else if(L(ve,Math.max(0,x(ve)-1)),x(ve)>=0&&x(ve)<x(j).length&&I()){let e=x(j)[x(ve)];e.type===`category`&&`id`in e.data&&Pe(I(),e.data.id)}}else x(Se)===`node`&&L(be,Math.max(0,x(be)-1))}else if(e.key===`ArrowDown`){if(x(H))L(Se,`node`),L(be,Math.min(x(C).length-1,x(be)+1));else if(x(Se)===`library`)L(_e,Math.min(x(w).length-1,x(_e)+1)),x(_e)>=0&&x(_e)<x(w).length&&Ie(x(w)[x(_e)].id);else if(x(Se)===`category`){if(R())L(be,Math.min(x(C).length-1,x(be)+1));else if(L(ve,Math.min(x(j).length-1,x(ve)+1)),x(ve)>=0&&x(ve)<x(j).length&&I()){let e=x(j)[x(ve)];e.type===`category`&&`id`in e.data&&Pe(I(),e.data.id)}}else x(Se)===`node`&&L(be,Math.min(x(C).length-1,x(be)+1))}else if(e.key===`Enter`){if(x(H))x(Se)===`node`&&x(be)>=0&&x(be)<x(C).length&&Ne(x(C)[x(be)]);else if(x(Se)===`node`&&R())x(be)>=0&&x(be)<x(C).length&&Ne(x(C)[x(be)]);else if(x(Se)===`category`&&!R()){if(x(ve)>=0&&x(ve)<x(j).length&&I()){let e=x(j)[x(ve)];e.type===`category`&&`id`in e.data?(Pe(I(),e.data.id),L(Se,`node`),L(be,0)):e.type===`computation`&&Ne(Re(e))}}else x(Se)===`library`&&x(_e)>=0&&x(_e)<x(w).length&&(Ie(x(w)[x(_e)].id),(x(T).length>0||x(k).length>0)&&(L(Se,`category`),L(ve,0)))}}}function Be(e){e.stopPropagation(),[`ArrowUp`,`ArrowDown`,`Enter`,`Escape`].includes(e.key)&&ze(e)}J(()=>(n(),r()),()=>{L(l,[...Lg,...n().length?[Rg(n(),r())]:[]])}),J(()=>(A(I()),A(R()),A(se())),()=>{(I()||R())&&(se()?(L(fe,{x:se().x,y:se().y}),L(pe,!0)):setTimeout(()=>{Ae(),setTimeout(()=>{Ae()},50)},0))}),J(()=>(A(I()),x(l)),()=>{L(u,I()&&I()!==`all`?x(l).find(e=>e.id===I()):null)}),J(()=>(x(u),A(R())),()=>{L(d,x(u)&&R()?x(u).categories.find(e=>e.id===R()):null)}),J(()=>(x(Te),x(l)),()=>{L(p,x(Te)&&x(Te)!==`all`?x(l).find(e=>e.id===x(Te)):null)}),J(()=>x(p),()=>{L(m,x(p)?x(p).categories.length===1:!1)}),J(()=>(x(p),x(m)),()=>{L(_,x(p)?x(m)?[]:x(p).categories.filter(e=>e.nodes.length>1):[])}),J(()=>(x(p),x(m)),()=>{L(y,x(p)?x(m)?x(p).categories[0].nodes:x(p).categories.filter(e=>e.nodes.length===1).map(e=>e.nodes[0]):[])}),J(()=>x(Te),()=>{x(Te)&&L(De,null)}),J(()=>(x(De),x(p)),()=>{L(b,x(De)&&x(p)&&x(p).categories.find(e=>e.id===x(De))?.nodes||[])}),J(()=>(x(Te),x(l)),()=>{L(S,x(Te)===null?x(l).flatMap(e=>e.categories.flatMap(e=>e.nodes)).sort((e,t)=>e.name.localeCompare(t.name)):[])}),J(()=>(x(Te),x(U)),()=>{x(Te)!==void 0&&x(U)&&L(me,x(U).getBoundingClientRect().width)}),J(()=>(x(De),x(de)),()=>{x(De)&&x(de)&&L(W,x(de).getBoundingClientRect().width)}),J(()=>(x(H),x(l),A(I()),A(R())),()=>{L(C,x(H)?x(l).flatMap(e=>e.categories.flatMap(e=>e.nodes)).filter(e=>e.name.toLowerCase().includes(x(H).toLowerCase())||e.description.toLowerCase().includes(x(H).toLowerCase())).sort((e,t)=>e.name.localeCompare(t.name)):I()===`all`||I()===null&&!R()?x(l).flatMap(e=>e.categories.flatMap(e=>e.nodes)).sort((e,t)=>e.name.localeCompare(t.name)):I()&&!R()?Me(I()).sort((e,t)=>e.name.localeCompare(t.name)):R()&&I()?(x(l).find(e=>e.id===I())?.categories.find(e=>e.id===R())?.nodes??[]).sort((e,t)=>e.name.localeCompare(t.name)):[])}),J(()=>x(l),()=>{L(w,x(l).filter(e=>e.categories.some(e=>e.nodes.length>0)).sort((e,t)=>e.label.localeCompare(t.label)))}),J(()=>x(u),()=>{L(T,x(u)?x(u).categories.filter(e=>e.nodes.length>1):[])}),J(()=>(x(u),A(R()),x(H)),()=>{L(k,x(u)&&!R()&&!x(H)?x(u).categories.filter(e=>e.nodes.length===1).map(e=>({...e.nodes[0],categoryId:e.id})):[])}),J(()=>(x(u),A(R()),x(H),x(T),x(k)),()=>{L(j,x(u)&&!R()&&!x(H)?[...x(T).map(e=>({type:`category`,data:e})),...x(k).map(e=>({type:`node`,data:e}))]:[])}),J(()=>(A(I()),A(R()),x(H),x(Se),x(C),x(be),x(_e),x(w),x(u),x(ve),x(T),x(j)),()=>{(I()||R())&&(x(H)?(L(Se,`node`),x(C).length>0?(x(be)<0||x(be)>=x(C).length)&&L(be,0):L(be,-1)):(x(_e)===-1&&(I()&&I()!==`all`?(L(_e,x(w).findIndex(e=>e.id===I())),x(_e)===-1&&L(_e,0)):L(_e,0),L(Se,`library`)),R()&&x(u)&&x(ve)===-1&&(L(ve,x(T).findIndex(e=>e.id===R())),x(ve)===-1&&L(ve,0),R()&&L(Se,`node`)),x(ve)===-1&&x(j).length>0&&x(Se)===`category`&&!R()?L(ve,0):x(Se)===`category`&&x(ve)>=x(j).length&&L(ve,Math.max(0,x(j).length-1)),x(be)===-1&&x(C).length>0&&x(Se)===`node`&&R()?L(be,0):x(Se)===`node`&&x(be)>=x(C).length&&R()&&L(be,Math.max(0,x(C).length-1))))}),J(()=>(A(I()),A(R())),()=>{!I()&&!R()&&(L(_e,-1),L(ve,-1),L(be,-1),L(Se,`library`))}),J(()=>(x(Se),x(_e),x(U)),()=>{x(Se)===`library`&&x(_e)>=0&&setTimeout(()=>{let e=(x(U)?.querySelector(`.main-column .column-content`))?.children[x(_e)+1];e&&e.scrollIntoView({block:`nearest`,behavior:`smooth`})},0)}),J(()=>(x(Se),x(ve),A(R()),x(U)),()=>{x(Se)===`category`&&x(ve)>=0&&!R()&&setTimeout(()=>{let e=(x(U)?.querySelector(`.main-column .column-content`))?.children[x(ve)];e&&e.scrollIntoView({block:`nearest`,behavior:`smooth`})},0)}),J(()=>(x(Se),x(be),x(U)),()=>{x(Se)===`node`&&x(be)>=0&&setTimeout(()=>{let e=document.querySelector(`.nodes-column .column-content`);if(e){let t=e.children[x(be)];t&&t.scrollIntoView({block:`nearest`,behavior:`smooth`})}else{let e=(x(U)?.querySelector(`.main-column .column-content`))?.children[x(be)];e&&e.scrollIntoView({block:`nearest`,behavior:`smooth`})}},0)}),J(()=>(A(I()),A(R()),x(le)),()=>{(I()||R())&&x(le)&&setTimeout(()=>{x(le)?.focus()},0)}),J(()=>(A(I()),A(R()),x(U),x(le)),()=>{(I()||R())&&x(U)&&setTimeout(()=>{document.activeElement!==x(le)&&x(U)?.focus()},50)}),he(),ue();var Ve=uE();O(`keydown`,ce,ze);var He=G(Ve),Ue=e=>{var t=xE(),n=G(t),r=M(n),s=M(r);re(s),ge(s,e=>L(le,e),()=>x(le)),o(r);var c=P(r,2),l=e=>{var t=uE(),n=G(t);f(n,1,()=>x(C),h,(e,t,n)=>{var r=cE();let i;var a=M(r);zc(M(a),{get name(){return x(t),F(()=>x(t).icon)},size:16}),o(a);var s=P(a,2),c=q(s,!0),l=P(s,2),u=q(l,!0);o(r),K(e=>{i=v(r,1,`node-item svelte-dm3w9n`,null,i,{"keyboard-selected":x(Se)===`node`&&x(be)===n}),X(r,`title`,(x(t),F(()=>x(t).description))),D(c,(x(t),F(()=>x(t).name))),D(u,e)},[()=>(A(Ug),x(t),F(()=>Ug(x(t).type)))]),O(`click`,r,()=>{L(be,n),Ne(x(t))}),O(`mouseenter`,r,()=>{L(be,n)}),E(e,r)});var r=P(n,2),i=e=>{var t=lE();E(e,t)};Z(r,e=>{x(C),F(()=>x(C).length===0)&&e(i)}),E(e,t)},u=e=>{var t=mE(),n=G(t);f(n,1,()=>x(w),h,(e,t,n)=>{var r=dE();let i;var a=M(r),s=q(a,!0),c=P(a,2);zc(M(c),{name:`ChevronRight`,size:12}),o(c),o(r),K(()=>{i=v(r,1,`library-item svelte-dm3w9n`,null,i,{active:x(Te)===x(t).id,"keyboard-selected":x(Se)===`library`&&x(_e)===n}),D(s,(x(t),F(()=>x(t).label)))}),O(`click`,r,()=>{L(_e,n),Ie(x(t).id)}),O(`mouseenter`,r,e=>{L(_e,n),L(Te,x(t).id),L(Oe,e.currentTarget.getBoundingClientRect().top)}),E(e,r)});var r=P(n,4);let a;var s=P(M(r),2);zc(M(s),{name:`ChevronRight`,size:12}),o(s),o(r);var c=P(r,4),l=M(c);zc(M(l),{get name(){return A(zg),F(()=>zg.icon)},size:16}),o(l);var u=P(l,2),d=q(u,!0);o(c);var p=P(c,2),m=e=>{var t=pE(),n=P(G(t),4);f(n,1,i,h,(e,t)=>{var n=fE(),r=M(n);zc(M(r),{get name(){return x(t),F(()=>x(t).icon)},size:16}),o(r);var i=P(r,2),a=q(i,!0),s=P(i,2),c=q(s,!0);o(n),K(e=>{X(n,`title`,(x(t),F(()=>x(t).description))),D(a,(x(t),F(()=>x(t).name))),D(c,e)},[()=>(A(Ug),x(t),F(()=>Ug(x(t).type)))]),O(`click`,n,()=>Ne(x(t))),E(e,n)}),E(e,t)};Z(p,e=>{i(),F(()=>i().length>0)&&e(m)}),K(()=>{a=v(r,1,`library-item svelte-dm3w9n`,null,a,{active:x(Te)===null,"keyboard-selected":x(Se)===`library`&&x(_e)===x(w).length}),X(c,`title`,(A(zg),F(()=>zg.description))),D(d,(A(zg),F(()=>zg.name)))}),O(`click`,r,()=>{L(_e,x(w).length),Ie(`all`)}),O(`mouseenter`,r,e=>{L(_e,x(w).length),L(Te,null),L(Oe,e.currentTarget.getBoundingClientRect().top)}),O(`click`,c,oe),E(e,t)};Z(c,e=>{x(H)?e(l):e(u,-1)}),o(n),ge(n,e=>L(U,e),()=>x(U));var d=P(n,2),m=e=>{var t=te(),n=G(t),r=e=>{var t=hE();f(t,5,()=>x(S),h,(e,t,n)=>{var r=cE();let i;var a=M(r);zc(M(a),{get name(){return x(t),F(()=>x(t).icon)},size:16}),o(a);var s=P(a,2),c=q(s,!0),l=P(s,2),u=q(l,!0);o(r),K(e=>{i=v(r,1,`node-item svelte-dm3w9n`,null,i,{"keyboard-selected":x(Se)===`node`&&x(be)===n}),X(r,`title`,(x(t),F(()=>x(t).description))),D(c,(x(t),F(()=>x(t).name))),D(u,e)},[()=>(A(Ug),x(t),F(()=>Ug(x(t).type)))]),O(`click`,r,()=>{L(be,n),Ne(x(t))}),O(`mouseenter`,r,()=>{L(be,n)}),E(e,r)}),o(t),K(e=>a(t,`left: ${x(fe),x(me),F(()=>x(fe).x+x(me))??``}px; top: ${x(Oe)??``}px; max-height: ${e??``}px;`),[()=>(x(Oe),F(()=>Math.max(200,window.innerHeight-x(Oe)-20)))]),O(`mouseenter`,t,()=>{}),O(`mouseleave`,t,ae(()=>{setTimeout(()=>{document.querySelector(`.menu-column:hover`)||L(Te,void 0)},50)})),E(e,t)},i=e=>{var t=bE(),n=G(t),r=M(n);f(r,1,()=>x(_),h,(e,t)=>{var n=dE();let r;var i=M(n),a=q(i,!0),s=P(i,2);zc(M(s),{name:`ChevronRight`,size:12}),o(s),o(n),K(()=>{r=v(n,1,`library-item svelte-dm3w9n`,null,r,{active:x(De)===x(t).id}),D(a,(x(t),F(()=>x(t).label)))}),O(`click`,n,()=>{}),O(`mouseenter`,n,e=>{L(De,x(t).id),L(ke,e.currentTarget.getBoundingClientRect().top)}),E(e,n)});var i=P(r,2),s=e=>{var t=gE();E(e,t)};Z(i,e=>{x(_),x(y),F(()=>x(_).length>0&&x(y).length>0)&&e(s)});var c=P(i,2);f(c,1,()=>x(y),h,(e,t)=>{var n=_E(),r=M(n);zc(M(r),{get name(){return x(t),F(()=>x(t).icon)},size:16}),o(r);var i=P(r,2),a=q(i,!0);o(n),K(()=>{X(n,`title`,(x(t),F(()=>x(t).description))),D(a,(x(t),F(()=>x(t).name)))}),O(`click`,n,()=>Ne(x(t))),O(`mouseenter`,n,()=>{L(De,null)}),E(e,n)}),o(n),ge(n,e=>L(de,e),()=>x(de));var l=P(n,2),u=e=>{var t=yE();f(t,5,()=>x(b),h,(e,t,n)=>{var r=vE();let i;var a=M(r);zc(M(a),{get name(){return x(t),F(()=>x(t).icon)},size:16}),o(a);var s=P(a,2),c=q(s,!0);o(r),K(()=>{i=v(r,1,`node-item svelte-dm3w9n`,null,i,{"keyboard-selected":x(Se)===`node`&&x(be)===n}),X(r,`title`,(x(t),F(()=>x(t).description))),D(c,(x(t),F(()=>x(t).name)))}),O(`click`,r,()=>{L(be,n),Ne(x(t))}),O(`mouseenter`,r,()=>{L(be,n)}),E(e,r)}),o(t),K(e=>{X(t,`aria-label`,`${x(De)} nodes`),a(t,`left: ${x(fe),x(me),x(W),F(()=>x(fe).x+x(me)+x(W))??``}px; top: ${x(ke)??``}px; max-height: ${e??``}px;`)},[()=>(x(ke),F(()=>Math.max(200,window.innerHeight-x(ke)-20)))]),O(`mouseenter`,t,()=>{}),O(`mouseleave`,t,ae(()=>{setTimeout(()=>{document.querySelector(`.menu-column:hover`)||L(De,null)},50)})),E(e,t)};Z(l,e=>{x(De),x(b),F(()=>x(De)&&x(b).length>0)&&e(u)}),K(e=>{X(n,`aria-label`,(x(p),F(()=>`${x(p).label} nodes`))),a(n,`left: ${x(fe),x(me),F(()=>x(fe).x+x(me))??``}px; top: ${x(Oe)??``}px; max-height: ${e??``}px;`)},[()=>(x(Oe),F(()=>Math.max(200,window.innerHeight-x(Oe)-20)))]),O(`mouseenter`,n,()=>{}),O(`mouseleave`,n,ae(()=>{setTimeout(()=>{document.querySelector(`.menu-column:hover`)||(L(Te,void 0),L(De,null))},50)})),E(e,t)};Z(n,e=>{x(Te),x(S),F(()=>x(Te)===null&&x(S).length>0)?e(r):(x(p),x(_),x(y),F(()=>x(p)&&(x(_).length>0||x(y).length>0))&&e(i,1))}),E(e,t)};Z(d,e=>{!x(H)&&x(Te)!==void 0&&e(m)}),K(()=>a(n,`left: ${x(fe),F(()=>x(fe).x)??``}px; top: ${x(fe),F(()=>x(fe).y)??``}px`)),Ce(s,()=>x(H),e=>L(H,e)),O(`keydown`,s,Be),O(`keydown`,n,ze),O(`mouseleave`,n,ae(e=>{setTimeout(()=>{if(x(N))return;let e=document.querySelector(`.menu-column:hover`),t=document.querySelector(`.dialog-overlay`);!e&&!t&&Le()},100)})),E(e,t)};Z(He,e=>{(I()||R())&&e(Ue)});var We=P(He,2),Q=e=>{var t=te(),n=G(t);g(n,()=>x(ie),(e,t)=>{t(e,{get open(){return x(N)},set open(e){L(N,e)},$$events:{create:Fe,close:()=>L(N,!1)},$$legacy:!0})}),E(e,t)};Z(We,e=>{x(ie)&&e(Q)}),E(e,Ve),Ee(),c()}var CE=w(!1);function wE(){CE.set(!1)}var TE=u(`<button class="swatch svelte-tkyoee"></button>`),EE=u(`<div class="palette svelte-tkyoee"><div class="head svelte-tkyoee"><span>Node colour</span> <span class="count svelte-tkyoee"> </span></div> <div class="grid svelte-tkyoee"></div> <div class="foot svelte-tkyoee"><button class="clear svelte-tkyoee">Clear</button> <button class="clear svelte-tkyoee">Close</button></div></div>`);function DE(e,t){ee(t,!1);let n=V(t,`open`,8,!1),r=V(t,`selectionCount`,8,0),i=xe(),s=[[`#3a3a3a`,`#454545`,`#505050`,`#5c5c5c`,`#686868`,`#757575`,`#828282`,`#909090`],...[0,28,45,140,190,215,265,320].slice(1).map(e=>[20,26,32,38,44,50,56,62].map(t=>`hsl(${e}, 42%, ${t/2+12}%)`))];function c(e){i(`choose`,e)}function l(e){e.key===`Escape`&&i(`close`)}ue();var u=te();O(`keydown`,ce,l);var d=G(u),p=e=>{var t=EE(),n=M(t),l=P(M(n),2),u=q(l);o(n);var d=P(n,2);f(d,5,()=>s,h,(e,t)=>{var n=te(),r=G(n);f(r,1,()=>x(t),h,(e,t)=>{var n=TE();K(()=>{a(n,`background:${x(t)??``}`),X(n,`title`,x(t))}),O(`click`,n,()=>c(x(t))),E(e,n)}),E(e,n)}),o(d);var p=P(d,2),m=M(p),g=P(m,2);o(p),o(t),K(()=>D(u,`${r()??``} selected`)),O(`click`,m,()=>c(null)),O(`click`,g,()=>i(`close`)),E(e,t)};Z(d,e=>{n()&&e(p)}),E(e,u),Ee()}var OE=`*`;function kE(e){if(typeof EventSource>`u`)return()=>{};let t=new EventSource(`/api/nodes/events`);return t.addEventListener(`module-changed`,t=>{let n;try{n=String(JSON.parse(t.data)?.module??``)}catch{return}if(!n)return;let r=e.getTarget()?.nodes??[],i=n===OE?r.filter(e=>e.modulePath?.startsWith(`project.`)):r.filter(e=>e.modulePath===`project.${n}`);if(n===OE)for(let e of i){let t=e.modulePath.slice(8);hd(t),ww(t)}else hd(n),ww(n);for(let e of i)e.markDirty();e.onReload?.(n,i.length)}),t.addEventListener(`error`,()=>console.debug(`[node watch] stream interrupted, reconnecting`)),()=>t.close()}function AE(e){return ME(jE(e))}function jE(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e,n=t.metadata;if(!n||typeof n!=`object`||Array.isArray(n))return t;let{modified:r,...i}=n;return{...t,metadata:i}}function ME(e){return typeof e!=`object`||!e?JSON.stringify(e)??`null`:Array.isArray(e)?`[${e.map(ME).join(`,`)}]`:`{${Object.entries(e).filter(([,e])=>e!==void 0).sort(([e],[t])=>e<t?-1:+(e>t)).map(([e,t])=>`${JSON.stringify(e)}:${ME(t)}`).join(`,`)}}`}function NE(e){if(typeof EventSource>`u`)return()=>{};let t=new EventSource(`/api/graph-events`);return t.addEventListener(`graph-changed`,t=>{let n;try{n=String(JSON.parse(t.data)?.file??``)}catch{return}n&&n===e.getFile()&&e.onChanged(n)}),t.addEventListener(`error`,()=>console.debug(`[graph watch] stream interrupted, reconnecting`)),()=>t.close()}var PE=12e4;async function FE(){try{let e=await fetch(`/api/build`,{cache:`no-store`});if(e.status===404)return{kind:`unsupported`};if(!e.ok)return{kind:`unknown`};let{id:t}=await e.json();return typeof t==`string`?{kind:`id`,id:t}:{kind:`unknown`}}catch{return{kind:`unknown`}}}function IE(e){let t=null,n=!1;async function r(){if(n)return;let r=await FE();if(n)return;if(r.kind===`unsupported`){n=!0;return}if(r.kind===`unknown`)return;let i=r.id;if(t===null){t=i;return}i!==t&&(n=!0,e())}r();let i=setInterval(r,PE),a=()=>{document.visibilityState===`visible`&&r()};return document.addEventListener(`visibilitychange`,a),()=>{n=!0,clearInterval(i),document.removeEventListener(`visibilitychange`,a)}}function LE(e){let t=e?.nodes;if(!Array.isArray(t))return[];let n=new Set;for(let e of t){let t=e?.module??e?.type;typeof t==`string`&&t.startsWith(`project.`)&&n.add(t)}return[...n]}function RE(e,t){let n=new Set(t);return LE(e).filter(e=>!n.has(e.slice(8)))}function zE(e){return`cascade ${e||`<project directory>`} --host ${location.hostname} --port <free port>`}var BE=`\0lane:`,VE=28,HE={columnGap:260,rowGap:190,originX:40,originY:40};function UE(e,t,n={}){let{columnGap:r,rowGap:i,originX:a,originY:o}={...HE,...n},s=n.widths,c=e=>s?.get(e)??r-60,l=new Map,u=new Map;for(let t of e)l.set(t,[]),u.set(t,[]);for(let e of t)!l.has(e.to)||!u.has(e.from)||(l.get(e.to).push(e.from),u.get(e.from).push(e.to));let d=new Map,f=new Set;function p(e){let t=d.get(e);if(t!==void 0)return t;if(f.has(e))return 0;f.add(e);let n=l.get(e)??[],r=n.length?Math.max(...n.map(p))+1:0;return f.delete(e),d.set(e,r),r}e.forEach(p);for(let t=0;t<e.length&&t<32;t++){let t=!1;for(let n of e){let e=u.get(n)??[];if(!e.length)continue;let r=l.get(n)??[],i=r.length?Math.max(...r.map(e=>d.get(e)??0))+1:0,a=Math.min(...e.map(e=>d.get(e)??0))-1,o=Math.max(i,a);o>(d.get(n)??0)&&(d.set(n,o),t=!0)}if(!t)break}let m=[];for(let t of e){let e=d.get(t)??0;for(;m.length<=e;)m.push([]);m[e].push(t)}let h=e=>e.startsWith(BE),g=new Map(l),_=new Map(u);t.forEach((e,t)=>{let n=d.get(e.from),r=d.get(e.to);if(n===void 0||r===void 0||r-n<=1)return;g.set(e.to,(g.get(e.to)??[]).filter(t=>t!==e.from)),_.set(e.from,(_.get(e.from)??[]).filter(t=>t!==e.to));let i=e.from;for(let e=n+1;e<r;e++){let n=`${BE}${t}:${e}`;m[e].push(n),g.set(n,[i]),_.set(n,[]),_.set(i,[..._.get(i)??[],n]),i=n}_.set(i,[..._.get(i)??[],e.to]),g.set(e.to,[...g.get(e.to)??[],i])}),m.forEach(e=>e.sort());let v=(e,t)=>e.indexOf(t);function y(e,t,n){let r=new Map;e.forEach((e,i)=>{let a=(n.get(e)??[]).map(e=>v(t,e)).filter(e=>e>=0);r.set(e,a.length?a.reduce((e,t)=>e+t,0)/a.length:i)}),e.sort((e,t)=>r.get(e)-r.get(t)||e.localeCompare(t))}function b(e,t){let n=[];t.forEach((t,r)=>{for(let i of g.get(t)??[]){let t=e.indexOf(i);t>=0&&n.push([t,r])}});let r=0;for(let e=0;e<n.length;e++)for(let t=e+1;t<n.length;t++)(n[e][0]-n[t][0])*(n[e][1]-n[t][1])<0&&r++;return r}let x=e=>(e>0?b(m[e-1],m[e]):0)+(e<m.length-1?b(m[e],m[e+1]):0);for(let e=0;e<8;e++){for(let e=1;e<m.length;e++)y(m[e],m[e-1],g);for(let e=m.length-2;e>=0;e--)y(m[e],m[e+1],_);let e=!0;for(let t=0;t<4&&e;t++){e=!1;for(let t=0;t<m.length;t++){let n=m[t];for(let r=0;r+1<n.length;r++){let i=x(t);[n[r],n[r+1]]=[n[r+1],n[r]],x(t)<i?e=!0:[n[r],n[r+1]]=[n[r+1],n[r]]}}}}let S=e=>h(e)?VE:c(e),C=e=>h(e)?45:90,w=m.map(e=>e.reduce((e,t)=>e+S(t),0)+Math.max(0,e.length-1)*90),T=Math.max(1,...w),ee=new Map;m.forEach((e,t)=>{let n=a+(T-w[t])/2;e.forEach(e=>{ee.set(e,n+S(e)/2),n+=S(e)+90})});for(let e=0;e<6;e++){let t=e%2==0?g:_;for(let e of m)for(let n=0;n<e.length;n++){let r=e[n],i=(t.get(r)??[]).map(e=>ee.get(e)).filter(e=>e!==void 0);if(!i.length)continue;let a=i.reduce((e,t)=>e+t,0)/i.length,o=S(r)/2,s=e[n-1],c=e[n+1],l=s===void 0?-1/0:ee.get(s)+S(s)/2+C(r)+o,u=c===void 0?1/0:ee.get(c)-S(c)/2-C(r)-o;ee.set(r,Math.min(Math.max(a,l),u))}}for(let e of m)for(let t=0;t<e.length;t++){let n=e[t],r=(g.get(n)??[]).map(e=>ee.get(e)).filter(e=>e!==void 0);if(!r.length)continue;let i=r.reduce((e,t)=>e+t,0)/r.length,a=S(n)/2,o=e[t-1],s=e[t+1],c=o===void 0?-1/0:ee.get(o)+S(o)/2+C(n)+a,l=s===void 0?1/0:ee.get(s)-S(s)/2-C(n)-a;ee.set(n,Math.min(Math.max(i,c),l))}let E=new Map;return m.forEach((e,t)=>{for(let n of e)h(n)||E.set(n,{x:Math.round(ee.get(n)-S(n)/2),y:Math.round(o+t*i)})}),E}function WE(e){return e.map(e=>({from:e.from.nodeId,to:e.to.nodeId}))}var GE=u(`<div class="cook-status loading svelte-16g4g59" role="status" aria-live="polite" data-phase="loading"><span class="status-mark svelte-16g4g59" aria-hidden="true"></span> <strong class="svelte-16g4g59">Loading graph</strong> <span class="svelte-16g4g59">Fetching and compiling nodes…</span></div>`),KE=u(`<strong class="svelte-16g4g59"> </strong>`),qE=u(`<span class="current-node svelte-16g4g59"> </span>`),JE=u(`<strong class="svelte-16g4g59"> </strong> <!> <time class="svelte-16g4g59"> </time>`,1),YE=u(`<div class="cook-status svelte-16g4g59" role="status" aria-live="polite"><span class="status-mark svelte-16g4g59" aria-hidden="true"></span> <!></div>`);function XE(e,t){ee(t,!1);let n=Y(),r=Y(),i=V(t,`loading`,8,!1),a=V(t,`status`,8),s=Y(Date.now()),c=Y(x(s)),l=Y(a()),u=Y();me(()=>x(u)&&clearInterval(x(u)));function d(e){return e<1e3?`${Math.max(0,Math.round(e))} ms`:`${(e/1e3).toFixed(1)} s`}J(()=>(A(a()),x(l),x(c)),()=>{a()!==x(l)&&(L(l,a()),L(c,Date.now()),L(s,x(c)))}),J(()=>(A(i()),A(a()),x(u)),()=>{let e=!i()&&a().phase===`cooking`;e&&!x(u)?L(u,setInterval(()=>{L(s,Date.now())},100)):!e&&x(u)&&(clearInterval(x(u)),L(u,void 0))}),J(()=>(A(a()),x(s),x(c)),()=>{L(n,a().elapsed+(a().phase===`cooking`?x(s)-x(c):0))}),J(()=>A(a()),()=>{L(r,Math.min(a().total,a().completed+ +!!a().currentNode))}),he(),ue();var f=te(),p=G(f),m=e=>{var t=GE();E(e,t)},h=e=>{var t=YE(),i=P(M(t),2),s=e=>{var t=KE(),n=q(t);K(()=>D(n,`Queued ${A(a()),F(()=>a().total)??``} ${A(a()),F(()=>a().total===1?`node`:`nodes`)??``}`)),E(e,t)},c=e=>{var t=JE(),i=G(t),o=q(i),s=P(i,2),c=e=>{var t=qE(),n=q(t,!0);K(()=>D(n,(A(a()),F(()=>a().currentNode.id)))),E(e,t)};Z(s,e=>{A(a()),F(()=>a().currentNode)&&e(c)});var l=P(s,2),u=q(l,!0);K(e=>{D(o,`Cooking ${x(r)??``} of ${A(a()),F(()=>a().total)??``}`),D(u,e)},[()=>(x(n),F(()=>d(x(n))))]),E(e,t)};Z(i,e=>{A(a()),F(()=>a().phase===`scheduled`)?e(s):e(c,-1)}),o(t),K(()=>X(t,`data-phase`,(A(a()),F(()=>a().phase)))),E(e,t)};Z(p,e=>{i()?e(m):(A(a()),F(()=>a().phase!==`idle`)&&e(h,1))}),E(e,f),Ee()}function ZE(e,t=2){let n=e,r=``;for(;n!==r;)r=n,n=QE(n,t);return n}function QE(e,t=2){let n=e.split(`
|
|
200
|
+
`}function Kt(){let e=1/0,t=1/0,n=-1/0,r=-1/0;return x(l).forEach(i=>{e=Math.min(e,i.position.x),t=Math.min(t,i.position.y),n=Math.max(n,i.position.x+120),r=Math.max(r,i.position.y+80)}),x(_).forEach(i=>{if(i.type===`Line`){let a=i.position.x,o=i.position.y,s=i.endPosition?.x??i.position.x,c=i.endPosition?.y??i.position.y;e=Math.min(e,a,s),t=Math.min(t,o,c),n=Math.max(n,a,s),r=Math.max(r,o,c)}else if(i.type===`Polyline`)i.points&&i.points.length>0?i.points.forEach(i=>{e=Math.min(e,i.x),t=Math.min(t,i.y),n=Math.max(n,i.x),r=Math.max(r,i.y)}):(e=Math.min(e,i.position.x),t=Math.min(t,i.position.y),n=Math.max(n,i.position.x),r=Math.max(r,i.position.y));else{let a=i.size?.width||(i.type===`Text`?540:i.type===`Image`?200:300),o=i.size?.height||(i.type===`Text`?60:i.type===`Image`?150:200);e=Math.min(e,i.position.x),t=Math.min(t,i.position.y),n=Math.max(n,i.position.x+a),r=Math.max(r,i.position.y+o)}}),e===1/0?null:{x:(e+n)/2,y:(t+r)/2}}function qt(){if(!x(R))return;let e=Kt();if(!e)return;let t=e.x,n=e.y,r=x(R).getBoundingClientRect(),i=r.width,a=r.height,o=1/0,s=1/0,c=-1/0,u=-1/0;x(l).forEach(e=>{o=Math.min(o,e.position.x),s=Math.min(s,e.position.y),c=Math.max(c,e.position.x+120),u=Math.max(u,e.position.y+80)}),x(_).forEach(e=>{if(e.type===`Line`){let t=e.position.x,n=e.position.y,r=e.endPosition?.x??e.position.x,i=e.endPosition?.y??e.position.y;o=Math.min(o,t,r),s=Math.min(s,n,i),c=Math.max(c,t,r),u=Math.max(u,n,i)}else if(e.type===`Polyline`)e.points&&e.points.length>0?e.points.forEach(e=>{o=Math.min(o,e.x),s=Math.min(s,e.y),c=Math.max(c,e.x),u=Math.max(u,e.y)}):(o=Math.min(o,e.position.x),s=Math.min(s,e.position.y),c=Math.max(c,e.position.x),u=Math.max(u,e.position.y));else{let t=e.size?.width||(e.type===`Text`?540:e.type===`Image`?200:300),n=e.size?.height||(e.type===`Text`?60:e.type===`Image`?150:200);o=Math.min(o,e.position.x),s=Math.min(s,e.position.y),c=Math.max(c,e.position.x+t),u=Math.max(u,e.position.y+n)}});let d=c-o,f=u-s,p=d*1.4,m=f*1.4,h=i/p,g=a/m,v=Math.min(h,g,1);oe(z,x(z).zoom=v);let y=i/2,b=a/2,S=t*v,C=n*v;oe(z,x(z).x=y-S),oe(z,x(z).y=b-C),L(z,{...x(z)})}function Jt(){let e=w().nodes.length>0&&w().nodes.every(e=>x(H).includes(e.id)),t=w().annotations.length===0||w().annotations.every(e=>x(U).includes(e.id));e&&t&&x(H).length>0?Yt():(L(H,w().nodes.map(e=>e.id)),L(U,w().annotations.map(e=>e.id)),w().nodes.length>0&&(C(w().nodes[0]),b(`nodeSelect`,{node:w().nodes[0]})))}function Yt(){L(H,[]),L(U,[]),C(null),b(`nodeSelect`,{node:null}),b(`annotationSelect`,{annotationId:null})}function Xt(){let e=x(H).length>0,t=x(U).length>0||T();!e&&!t||(I(),e&&(x(H).forEach(e=>{w().removeNode(e)}),L(H,[]),C(null),w(w().nodes=[...w().nodes],!0),b(`nodeSelect`,{node:null})),x(U).length>0?(x(U).forEach(e=>{Mt(e,!0)}),b(`annotationSelect`,{annotationId:null})):T()&&(Mt(T()),b(`annotationSelect`,{annotationId:null})))}function Zt(){if(x(H).length===0)return;I();let e=x(H).map(e=>w().getNode(e)).filter(Boolean),t=[];e.forEach(e=>{let n=w().addNode(e.type,{x:e.position.x+50,y:e.position.y+50});n.code=e.code,n.id=w().generateUniqueNodeId(e.id),n.comment=e.comment,n.bypass=e.bypass,x(fe)&&w().reparentElement(n,x(fe)),t.push(n)}),w(w().nodes=[...w().nodes],!0),t.length>0&&(L(H,t.map(e=>e.id)),C(t[0]),b(`nodeSelect`,{node:t[0]}))}let Qt=Y(null);function $t(){L(Qt,null)}let en=Y(``);function tn(e){b(`viewsource`,{nodeId:e.id,node:e},{cancelable:!0})&&cl.openCodeEditor(e.id,e.type||e.id)}function nn(e,t){x(H).includes(t.id)||(L(H,[t.id]),L(U,[]),C(t),b(`nodeSelect`,{node:t}));let n=Z_(x(H).length,`node`);L(en,x(y)),L(Qt,{x:e.clientX,y:e.clientY,items:[{id:`view-source`,label:`View source`,run:()=>tn(t)},{id:`copy`,label:`Copy ${n}`,run:()=>{Pt()}},{id:`duplicate`,label:`Duplicate ${n}`,run:Zt},{id:`delete`,label:`Delete ${n}`,separatorBefore:!0,danger:!0,run:Xt}]})}function rn(e){if(e.preventDefault(),e.ctrlKey||e.metaKey)return;let t=e.target.closest(`.node`);if(t){let n=t.dataset.nodeId,r=n?w().getNode(n):null;r&&nn(e,r);return}e.target.closest(`.annotation`)||b(`openNodePanel`,{x:e.clientX,y:e.clientY})}function an(e,t){if(!x(R))return null;let n=x(R).querySelector(`[data-node-id="${e}"][data-port-id="${t}"]`);if(n)return n;let r=x(R).querySelectorAll(`[data-node-id="${e}"][data-variadic-ports]`);for(let e of r){let n=e.getAttribute(`data-variadic-ports`);if(n&&n.split(`,`).includes(t))return e}return null}function on(e,t,n){let r=w().getElement(e);if(r?.isAnnotation===!0){let n=an(e,t);if(n&&x(R)){let e=n.getBoundingClientRect(),t=x(R).getBoundingClientRect(),r=n.querySelector(`.port-dot, .port-pill`);if(r){let e=r.getBoundingClientRect();return{x:(e.left+e.width/2-t.left-x(z).x)/x(z).zoom,y:(e.top+e.height/2-t.top-x(z).y)/x(z).zoom}}return{x:(e.left+e.width/2-t.left-x(z).x)/x(z).zoom,y:(e.top+e.height/2-t.top-x(z).y)/x(z).zoom}}let i=r;if(!i||!i.outputs||!i.outputs.find(e=>e.id===t))return null;let a=i.size?.width??(i.type===`Text`?540:i.type===`Image`?200:300),o=i.size?.height??(i.type===`Text`?60:i.type===`Image`?150:200);return{x:i.position.x+a/2,y:i.position.y+o}}let i=an(e,t);if(!i){let r=w().getNode(e);if(!r)return null;let i=n===`output`?r.outputs.findIndex(e=>e.id===t):r.inputs.findIndex(e=>e.id===t);if(i===-1)return null;i*16;let a=r.position.x+40,o=r.position.y+6,s=r.position.y+12+36+6;return{x:a-(n===`input`?r.inputs.length:r.outputs.length)*16/2+8+i*16,y:n===`input`?o:s}}let a=i.getBoundingClientRect(),o=x(R).getBoundingClientRect(),s=i.querySelector(`.port-dot, .port-pill`);if(s){let e=s.getBoundingClientRect();return{x:(e.left+e.width/2-o.left-x(z).x)/x(z).zoom,y:(e.top+e.height/2-o.top-x(z).y)/x(z).zoom}}return{x:(a.left+a.width/2-o.left-x(z).x)/x(z).zoom,y:(a.top+a.height/2-o.top-x(z).y)/x(z).zoom}}function sn(e,t,n,r){r.stopPropagation();let i=w().getElement(e);if(i?.isAnnotation===!0){let a=i;if(!a||!a.outputs)return;let o=a.outputs.find(e=>e.id===t);if(!o)return;if(o.connections.length>0&&(Ye={nodeId:e,portId:t,portType:n,connectionIds:o.connections.map(e=>e.id)}),n===`output`&&!x(Ke)){let i=on(e,t,n);if(i){L(Ke,{nodeId:e,portId:t,portType:n}),L(qe,i);let a=x(R).getBoundingClientRect();L(Je,{x:(r.clientX-a.left-x(z).x)/x(z).zoom,y:(r.clientY-a.top-x(z).y)/x(z).zoom})}}return}let a=w().getNode(e);if(!a)return;let o=n===`output`?a.outputs.find(e=>e.id===t):a.inputs.find(e=>e.id===t);if(o){if(o.connections.length>0&&(Ye={nodeId:e,portId:t,portType:n,connectionIds:o.connections.map(e=>e.id)}),n===`output`&&!x(Ke)){let i=on(e,t,n);if(i){L(Ke,{nodeId:e,portId:t,portType:n}),L(qe,i);let a=x(R).getBoundingClientRect();L(Je,{x:(r.clientX-a.left-x(z).x)/x(z).zoom,y:(r.clientY-a.top-x(z).y)/x(z).zoom})}}if(n===`input`&&o.connections.length>0&&!x(Ke)){let i=on(e,t,n);if(i){L(Ke,{nodeId:e,portId:t,portType:n}),L(qe,i);let a=x(R).getBoundingClientRect();L(Je,{x:(r.clientX-a.left-x(z).x)/x(z).zoom,y:(r.clientY-a.top-x(z).y)/x(z).zoom})}}}}function cn(e,t,n,r){r.stopPropagation();let i=w().getNode(e);if(!i)return;let a=n===`output`?i.outputs.find(e=>e.id===t):i.inputs.find(e=>e.id===t);if(a){if(x(Ke)){let t=x(Ke);if(t.nodeId!==e&&t.portType!==n){let r=w().getElement(t.nodeId),o=t.portType===`output`?r?.outputs.find(e=>e.id===t.portId):r?.inputs.find(e=>e.id===t.portId);if(o&&a&&t.portType===`output`&&n===`input`){I();let n=`variadic`in a&&a.variadic===!0,r=[];if(n){let n=e;x(H).forEach(e=>{if(e!==t.nodeId&&e!==n){let t=w().getNode(e);t&&t.outputs.length>0&&r.push({element:t,output:t.outputs[0]})}}),x(U).forEach(e=>{if(e!==t.nodeId&&e!==n){let t=w().getAnnotation(e);t&&t.outputs&&t.outputs.length>0&&r.push({element:t,output:t.outputs[0]})}})}if(w().connect(o,a),n&&r.length>0){let e=a.name.match(/^(.+)_(\d+)$/);if(e&&i.syncVariadicPorts){let t=e[1],n=parseInt(e[2],10)+1;for(let{output:e}of r){i.syncVariadicPorts();let r=`${t}_${n}`,a=i.inputs.find(e=>e.name===r&&!e.options?.hidden);if(a||=(i.syncVariadicPorts(),i.inputs.find(e=>e.name===r&&!e.options?.hidden)),a)try{w().connect(e,a),n++}catch(e){console.warn(`Failed to connect additional element:`,e)}}}}j.refresh({connections:!0})}}L(Ke,null),L(qe,null),Ye=null}else if(n===`output`){let i=on(e,t,n);if(i){L(Ke,{nodeId:e,portId:t,portType:n}),L(qe,i);let a=x(R).getBoundingClientRect();L(Je,{x:(r.clientX-a.left-x(z).x)/x(z).zoom,y:(r.clientY-a.top-x(z).y)/x(z).zoom})}}}}function ln(e){e.preventDefault();let t=(e.deltaY===0?e.deltaX:e.deltaY)*-.005,n=x(z).zoom,r=Math.max(.1,Math.min(2,n+t)),i=Ie();i&&(oe(z,x(z).x=x(z).x+i.x*(n-r)),oe(z,x(z).y=x(z).y+i.y*(n-r))),oe(z,x(z).zoom=r),L(z,{...x(z)})}function un(e){if(e.touches.length===2){let t=e.touches[0],n=e.touches[1];$e={x:(t.clientX+n.clientX)/2,y:(t.clientY+n.clientY)/2,touches:e.touches},e.preventDefault()}}function dn(e){if(e.touches.length===2&&$e){let t=e.touches[0],n=e.touches[1],r=(t.clientX+n.clientX)/2,i=(t.clientY+n.clientY)/2,a=r-$e.x,o=i-$e.y;oe(z,x(z).x+=a),oe(z,x(z).y+=o),L(z,{...x(z)}),$e.x=r,$e.y=i,e.preventDefault()}}function fn(e){e.touches.length<2&&($e=null)}function pn(e){if(et||={x:e.clientX,y:e.clientY,pointers:new Map},et.pointers.set(e.pointerId,{x:e.clientX,y:e.clientY}),et.pointers.size===2){let t=Array.from(et.pointers.values());et.x=(t[0].x+t[1].x)/2,et.y=(t[0].y+t[1].y)/2,e.preventDefault()}}function mn(e){if(et&&et.pointers.has(e.pointerId)&&(et.pointers.set(e.pointerId,{x:e.clientX,y:e.clientY}),et.pointers.size===2)){let t=Array.from(et.pointers.values()),n=(t[0].x+t[1].x)/2,r=(t[0].y+t[1].y)/2,i=n-et.x,a=r-et.y;oe(z,x(z).x+=i),oe(z,x(z).y+=a),L(z,{...x(z)}),et.x=n,et.y=r,e.preventDefault()}}function hn(e){et&&(et.pointers.delete(e.pointerId),et.pointers.size===0&&(et=null))}function gn(e){let t=document.activeElement,n=t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement||t?.getAttribute(`contenteditable`)===`true`;e.code===`Space`&&!n&&(Ve=!0,e.preventDefault()),(e.key===`Control`||e.key===`Meta`||e.ctrlKey||e.metaKey)&&L(Ze,!0);let r=E_(`graph`);if(r&&!n&&(e.key===`+`||e.key===`=`||e.code===`NumpadAdd`)){e.preventDefault();let t=x(z).zoom,n=Math.min(2,t+.1),r=Ie();r&&(oe(z,x(z).x=x(z).x+r.x*(t-n)),oe(z,x(z).y=x(z).y+r.y*(t-n))),oe(z,x(z).zoom=n),L(z,{...x(z)})}if(r&&!n&&(e.key===`-`||e.key===`_`||e.code===`NumpadSubtract`)){e.preventDefault();let t=x(z).zoom,n=Math.max(.1,t-.1),r=Ie();r&&(oe(z,x(z).x=x(z).x+r.x*(t-n)),oe(z,x(z).y=x(z).y+r.y*(t-n))),oe(z,x(z).zoom=n),L(z,{...x(z)})}if((e.metaKey||e.ctrlKey)&&e.key===`0`&&(e.preventDefault(),qt()),!n&&!e.metaKey&&!e.ctrlKey&&(e.key===`0`||e.code===`Numpad0`)){e.preventDefault();let t=x(z).zoom;if(t!==1){let e=Ie();e&&(oe(z,x(z).x=x(z).x+e.x*(t-1)),oe(z,x(z).y=x(z).y+e.y*(t-1))),oe(z,x(z).zoom=1),L(z,{...x(z)})}}if(e.key===`h`||e.key===`H`){let t=e.target;t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`&&(e.preventDefault(),qt())}if(e.key===`Escape`){let t=e.target;t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`&&(x(gt)?L(gt,null):(T()||x(U).length>0)&&(e.preventDefault(),T(null),L(U,[]),b(`annotationSelect`,{annotationId:null})))}if(e.key===`Delete`||e.key===`Backspace`){let t=e.target;t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`&&(x(H).length>0||x(U).length>0||T())&&(e.preventDefault(),Xt())}if((e.metaKey||e.ctrlKey)&&e.key===`x`){let t=e.target;t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`&&(e.preventDefault(),Nt())}if((e.metaKey||e.ctrlKey)&&e.key===`c`){let t=e.target;t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`&&(e.preventDefault(),Pt())}if((e.metaKey||e.ctrlKey)&&e.key===`v`){let t=e.target;t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`&&(e.preventDefault(),Ft())}if((e.metaKey||e.ctrlKey)&&e.key===`a`){let t=e.target;t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`&&(e.preventDefault(),Jt())}(e.metaKey||e.ctrlKey)&&e.key===`d`&&(e.preventDefault(),Zt());let i=e.target;i.tagName!==`INPUT`&&i.tagName!==`TEXTAREA`&&((e.key===`Enter`||e.key===`i`)&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&C()&&C().isNetwork()&&(e.preventDefault(),_e(C())),(e.key===`o`||e.key===`u`)&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&x(fe)&&(e.preventDefault(),ve()),(e.metaKey||e.ctrlKey)&&!e.shiftKey&&e.key===`g`&&x(H).length>0&&(e.preventDefault(),ze()),(e.metaKey||e.ctrlKey)&&e.shiftKey&&e.key===`G`&&x(H).length===1&&w().getNode(x(H)[0])?.isNetwork()&&(e.preventDefault(),Be()),e.key===`/`&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&(e.preventDefault(),Oe()),e.key===`c`&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&C()&&(e.preventDefault(),C().setCook(!C().cook),w(w().nodes=[...w().nodes],!0)),e.key===`b`&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&C()&&(e.preventDefault(),C().setBypass(!C().bypass),w(w().nodes=[...w().nodes],!0)))}function _n(e){e.code===`Space`&&(Ve=!1),(e.key===`Control`||e.key===`Meta`||!e.ctrlKey&&!e.metaKey)&&(L(Ze,!1),L(Xe,null))}ye(()=>(w().nodes.length>0&&w(w().nodes=[...w().nodes],!0),window.addEventListener(`keydown`,gn),window.addEventListener(`keyup`,_n),()=>{window.removeEventListener(`keydown`,gn),window.removeEventListener(`keyup`,_n)})),J(()=>(A(w()),x(N),x(ie),x(ae)),()=>{let e=w().scheduler;e!==x(N)&&(x(ie)?.(),L(N,e),L(ie,e.subscribe(()=>{L(ae,x(ae)+1)})))}),J(()=>(A(k()),x(B)),()=>{k()&&(!x(B)||x(B).x!==k().x||x(B).y!==k().y||x(B).zoom!==k().zoom)&&(L(z,{...k()}),L(B,{...k()}))}),J(()=>(A(k()),x(ce),x(z),x(B)),()=>{k()!==void 0&&(x(ce).x!==x(z).x||x(ce).y!==x(z).y||x(ce).zoom!==x(z).zoom)&&(x(B)&&x(B).x===x(z).x&&x(B).y===x(z).y&&x(B).zoom===x(z).zoom?L(ce,{...x(z)}):(L(ce,{...x(z)}),b(`transformChange`,{transform:{...x(z)}})))}),J(()=>(A(C()),x(H)),()=>{C()&&C().id&&!x(H).includes(C().id)&&L(H,[C().id])}),J(()=>(A(C()),x(H)),()=>{!C()&&x(H).length>0&&L(H,[])}),J(()=>(x(H),A(w())),()=>{de(x(H),w())}),J(()=>x(fe),()=>{L(c,W(x(fe)))}),J(()=>(A(w()),x(fe)),()=>{L(l,Me(w().nodes,x(fe)))}),J(()=>(A(w()),x(fe)),()=>{L(_,Me(w().annotations,x(fe)))}),J(()=>(x(l),x(_)),()=>{x(l),x(_),L(Fe,!1)}),J(()=>(x(ae),x(l)),()=>{L(u,(x(ae),x(l)))}),J(()=>x(u),()=>{L(d,x(u).filter(e=>e&&e.inputs&&e.outputs).map(e=>({id:e.id,inputs:e.inputs.length,outputs:e.outputs.length})))}),J(()=>(r(),x(u)),()=>{L(p,tt(r(),x(u)))}),J(()=>(x(ae),x(p),x(d),x(_),x(u),A(w())),()=>{x(ae),x(p),x(d),x(_);let e=new Set(x(u).map(e=>e.id)),t=new Set(x(_).map(e=>e.id)),n=new Set([...e,...t]);L(nt,w().connections.filter((e,t,r)=>r.findIndex(t=>t.id===e.id)===t&&n.has(e.from.nodeId)&&n.has(e.to.nodeId)))}),J(()=>(x(nt),x(H),x(Xe)),()=>{L(m,[...x(nt).filter(e=>!rt(e,x(H),x(Xe)?.connectionId)),...x(nt).filter(e=>rt(e,x(H),x(Xe)?.connectionId))])}),J(()=>x(z),()=>{L(y,`${x(z).x},${x(z).y},${x(z).zoom}`)}),J(()=>(x(Qt),x(y),x(en)),()=>{x(Qt)&&x(y)!==x(en)&&$t()}),he();var vn={addNode:Wt,centerOnNodes:qt,selectAll:Jt,deselectAll:Yt,deleteSelected:Xt};ue();var yn=sv(),bn=G(yn);let xn;var Sn=M(bn),Cn=M(Sn),wn=e=>{var t=Q_();re(t),ge(t,e=>L(De,e),()=>x(De)),Ce(t,()=>x(Te),e=>L(Te,e)),O(`keydown`,t,je),O(`blur`,t,ke),E(e,t)},Tn=e=>{var t=tv(),n=G(t);f(n,1,()=>x(c),h,(e,t,n)=>{var r=ev(),i=G(r),a=e=>{var t=$_();E(e,t)};Z(i,e=>{n>0&&e(a)});var o=P(i,2);let s;var l=q(o,!0);K(()=>{s=v(o,1,`path-segment svelte-p2f6pl`,null,s,{current:n===x(c).length-1}),D(l,(x(t),F(()=>x(t).label)))}),O(`click`,o,()=>be(x(t).node)),E(e,r)});var r=P(n,2);O(`click`,r,Oe),E(e,t)};Z(Cn,e=>{x(Se)?e(wn):e(Tn,-1)}),o(Sn);var En=P(Sn,2),Dn=e=>{let t=pe(()=>(x(We),x(Q),F(()=>({x:Math.min(x(We).x,x(Q).x),y:Math.min(x(We).y,x(Q).y),width:Math.abs(x(Q).x-x(We).x),height:Math.abs(x(Q).y-x(We).y)}))));var n=nv();K(()=>a(n,`left: ${A(x(t)),F(()=>x(t).x)??``}px; top: ${A(x(t)),F(()=>x(t).y)??``}px; width: ${A(x(t)),F(()=>x(t).width)??``}px; height: ${A(x(t)),F(()=>x(t).height)??``}px;`)),E(e,n)};Z(En,e=>{x(He)&&x(Ue)&&x(We)&&x(Q)&&e(Dn)});var On=P(En,4),kn=M(On);f(kn,1,()=>x(m),e=>e.id,(e,t)=>{pe(()=>(x(p),x(t),F(()=>x(p).find(e=>e.id===x(t).from.nodeId)))),pe(()=>(x(p),x(t),F(()=>x(p).find(e=>e.id===x(t).to.nodeId))));let n=pe(()=>(x(t),F(()=>on(x(t).from.nodeId,x(t).from.portId,`output`)))),r=pe(()=>(x(t),F(()=>on(x(t).to.nodeId,x(t).to.portId,`input`))));var i=te(),o=G(i),s=e=>{let i=pe(()=>(A(w()),x(t),F(()=>w().getElement(x(t).from.nodeId)))),o=pe(()=>(A(w()),x(t),F(()=>w().getElement(x(t).to.nodeId)))),s=pe(()=>(A(x(i)),F(()=>x(i)&&!x(i)?.isAnnotation?x(i):null))),c=pe(()=>(A(x(o)),F(()=>x(o)&&!x(o)?.isAnnotation?x(o):null))),l=pe(()=>(A(x(i)),F(()=>x(i)?.isAnnotation?x(i):null))),u=pe(()=>(A(x(s)),x(t),A(x(l)),F(()=>x(s)?.outputs.find(e=>e.id===x(t).from.portId)||x(l)?.outputs?.find(e=>e.id===x(t).from.portId)))),d=pe(()=>(A(x(c)),x(t),F(()=>!x(c)?.isInputActive||x(c).isInputActive(x(t).to.portId)))),f=pe(()=>(A(x(d)),A(x(u)),A(hg),A(mg),F(()=>x(d)?x(u)?hg(x(u)):mg.any:mg.inactive))),p=pe(()=>(x(t),x(H),x(Xe),F(()=>rt(x(t),x(H),x(Xe)?.connectionId))));pe(()=>(A(x(n)),A(x(r)),F(()=>(x(n).y+x(r).y)/2)));let m=pe(()=>(A(x(r)),A(x(n)),F(()=>Math.abs(x(r).y-x(n).y)*.5))),h=pe(()=>(x(t),F(()=>x(t).type===`trigger`))),g=pe(()=>(x(t),F(()=>it(x(t)))));var _=rv(),y=G(_),b=P(y);let S;K(()=>{X(y,`d`,`M ${A(x(n)),F(()=>x(n).x)??``} ${A(x(n)),F(()=>x(n).y)??``} C ${A(x(n)),F(()=>x(n).x)??``} ${A(x(n)),A(x(m)),F(()=>x(n).y+x(m))??``} ${A(x(r)),F(()=>x(r).x)??``} ${A(x(r)),A(x(m)),F(()=>x(r).y-x(m))??``} ${A(x(r)),F(()=>x(r).x)??``} ${A(x(r)),F(()=>x(r).y)??``}`),a(y,`cursor: ${x(Xe),x(t),x(Ze),F(()=>x(Xe)?.connectionId===x(t).id&&x(Ze)?`pointer`:`default`)??``};`),X(b,`d`,`M ${A(x(n)),F(()=>x(n).x)??``} ${A(x(n)),F(()=>x(n).y)??``} C ${A(x(n)),F(()=>x(n).x)??``} ${A(x(n)),A(x(m)),F(()=>x(n).y+x(m))??``} ${A(x(r)),F(()=>x(r).x)??``} ${A(x(r)),A(x(m)),F(()=>x(r).y-x(m))??``} ${A(x(r)),F(()=>x(r).x)??``} ${A(x(r)),F(()=>x(r).y)??``}`),a(b,`stroke: ${x(f)??``};`),X(b,`stroke-opacity`,x(p)?1:.5),X(b,`stroke-dasharray`,x(g)?`8 6`:x(h)?`3 3`:`none`),S=v(b,0,`connection svelte-p2f6pl`,null,S,{"trigger-connection":x(h),"processing-connection":x(g),inactive:!x(d)})}),E(e,_)};Z(o,e=>{x(n)&&x(r)&&e(s)}),E(e,i)});var An=P(kn),jn=e=>{let t=pe(()=>(x(Xe),F(()=>x(Xe).position)));var n=iv();K(()=>X(n,`transform`,`translate(${A(x(t)),F(()=>x(t).x)??``}, ${A(x(t)),F(()=>x(t).y)??``})`)),E(e,n)};Z(An,e=>{x(Xe)&&e(jn)});var Mn=P(An),Nn=e=>{let t=pe(()=>x(Ke)),n=pe(()=>(A(w()),A(x(t)),F(()=>w().getElement(x(t).nodeId)))),r=pe(()=>(A(x(n)),F(()=>x(n)&&!x(n)?.isAnnotation?x(n):null))),i=pe(()=>(A(x(n)),F(()=>x(n)?.isAnnotation?x(n):null))),o=pe(()=>(A(x(t)),A(x(r)),A(x(i)),F(()=>x(t).portType===`output`?x(r)?.outputs.find(e=>e.id===x(t).portId)||x(i)?.outputs?.find(e=>e.id===x(t).portId):x(r)?.inputs.find(e=>e.id===x(t).portId)))),s=pe(()=>(A(x(o)),A(hg),A(mg),F(()=>x(o)?hg(x(o)):mg.any))),c=pe(()=>(x(Je),x(qe),F(()=>Math.abs(x(Je).y-x(qe).y)*.5))),l=pe(()=>(A(x(t)),A(x(r)),F(()=>x(t).portType===`output`&&(x(r)?x(r).outputs.find(e=>e.id===x(t).portId)?.portType===`trigger`:!1))));var u=av();K(()=>{X(u,`d`,`M ${x(qe),F(()=>x(qe).x)??``} ${x(qe),F(()=>x(qe).y)??``} C ${x(qe),F(()=>x(qe).x)??``} ${x(qe),A(x(c)),F(()=>x(qe).y+x(c))??``} ${x(Je),F(()=>x(Je).x)??``} ${x(Je),A(x(c)),F(()=>x(Je).y-x(c))??``} ${x(Je),F(()=>x(Je).x)??``} ${x(Je),F(()=>x(Je).y)??``}`),a(u,`stroke: ${x(s)??``};`),X(u,`stroke-dasharray`,x(l)?`3 3`:`4 4`)}),E(e,u)};Z(Mn,e=>{x(Ke)&&x(qe)&&e(Nn)}),o(On);var Pn=P(On,2);f(Pn,5,()=>x(_),e=>e.id,(e,t)=>{let n=pe(()=>(x(gt),x(t),F(()=>x(gt)===x(t).id))),r=pe(()=>(x(U),x(t),A(T()),F(()=>x(U).includes(x(t).id)||T()===x(t).id))),i=pe(()=>(x(_t),x(t),F(()=>x(_t)?.annotationId===x(t).id))),o=pe(()=>(A(Pg),x(t),F(()=>Pg.get(x(t).type))));var s=te(),c=G(s),l=e=>{var a=te(),s=G(a);g(s,()=>x(o),(e,a)=>{a(e,{get annotation(){return x(t)},get isSelected(){return x(r)},get isEditing(){return x(n)},get isDragging(){return x(i)},$$events:{click:e=>Tt(e.detail.id,e.detail.event),dblclick:e=>jt(e.detail.id,e.detail.event),mousedown:e=>{let{id:n,event:r,width:i,height:a}=e.detail;x(t)instanceof Zu?Dt(n,r,i||540,a||60):Et(n,r)},mousemove:e=>{let{id:t,event:n,width:r,height:i}=e.detail;kt(t,n,r||540,i||60)},keydown:e=>Ot(e.detail.id,e.detail.event),finishEdit:zt,delete:e=>Mt(e.detail.id),input:e=>{let{id:n,event:r}=e.detail;x(t)instanceof Zu?Lt(n,r):Rt(n,r)},portMouseDown:e=>sn(e.detail.nodeId,e.detail.portId,e.detail.portType,e.detail.event),resizeStart:e=>lt(e.detail.id,e.detail.handle,e.detail.event)}})}),E(e,a)},u=e=>{var n=ov(),r=q(n);K(()=>{a(n,`position: absolute; left: ${x(t),F(()=>x(t).position.x)??``}px; top: ${x(t),F(()=>x(t).position.y)??``}px; background: var(--status-error-strong); color: var(--text-on-accent); padding: 8px; border-radius: 4px; font-size: 12px;`),D(r,`Unknown type: ${x(t),F(()=>x(t).type)??``}`)}),E(e,n)};Z(c,e=>{x(o)?e(l):e(u,-1)}),E(e,s)}),o(Pn);var Fn=P(Pn,2);f(Fn,5,()=>x(u),e=>e.id,(e,t)=>{{let n=pe(()=>(x(H),x(t),F(()=>x(H).includes(x(t).id))));y_(e,{get node(){return x(t)},get selected(){return x(n)},get canvasTransform(){return x(z)},$$events:{portClick:e=>cn(e.detail.nodeId,e.detail.portId,e.detail.portType,e.detail.event),portMouseDown:e=>sn(e.detail.nodeId,e.detail.portId,e.detail.portType,e.detail.event),nodeMouseDown:e=>ut(e.detail.nodeId,e.detail.event),nodeClick:e=>ft(x(t).id,e.detail),edit:dt,diveInto:e=>_e(e.detail.node),bypassToggle:e=>pt(e.detail.nodeId,e.detail.event),cookToggle:e=>mt(e.detail.nodeId,e.detail.event),disconnect:e=>ht(e.detail.connectionId)}})}}),o(Fn),o(bn),ge(bn,e=>L(R,e),()=>x(R));var In=P(bn,2),Ln=e=>{X_(e,{get x(){return x(Qt),F(()=>x(Qt).x)},get y(){return x(Qt),F(()=>x(Qt).y)},get items(){return x(Qt),F(()=>x(Qt).items)},$$events:{close:$t}})};Z(In,e=>{x(Qt)&&e(Ln)}),K(()=>{xn=v(bn,1,`canvas svelte-p2f6pl`,null,xn,{"select-tool":S()===`select`,"hand-tool":S()===`hand`}),a(On,`transform: translate(${x(z),F(()=>x(z).x)??``}px, ${x(z),F(()=>x(z).y)??``}px) scale(${x(z),F(()=>x(z).zoom)??``})`),a(Pn,`transform: translate(${x(z),F(()=>x(z).x)??``}px, ${x(z),F(()=>x(z).y)??``}px) scale(${x(z),F(()=>x(z).zoom)??``})`),a(Fn,`transform: translate(${x(z),F(()=>x(z).x)??``}px, ${x(z),F(()=>x(z).y)??``}px) scale(${x(z),F(()=>x(z).zoom)??``})`)}),O(`mousedown`,bn,at),O(`mousemove`,bn,ot),O(`mouseup`,bn,ct),O(`click`,bn,Ct),O(`dblclick`,bn,Ht),O(`wheel`,bn,ln),O(`contextmenu`,bn,rn),O(`touchstart`,bn,un),O(`touchmove`,bn,dn),O(`touchend`,bn,fn),O(`touchcancel`,bn,fn),O(`pointerdown`,bn,pn),O(`pointermove`,bn,mn),O(`pointerup`,bn,hn),O(`pointercancel`,bn,hn),O(`dragover`,bn,Bt),O(`drop`,bn,Vt),O(`keydown`,bn,xt),O(`keyup`,bn,St),E(t,yn),se(n,`addNode`,Wt),se(n,`centerOnNodes`,qt),se(n,`selectAll`,Jt),se(n,`deselectAll`,Yt),se(n,`deleteSelected`,Xt);var Rn=Ee(vn);return s(),Rn}var lv=u(`<div class="empty-state svelte-qbjsq3">Loading graph...</div>`),uv=u(`<div class="panel-wrapper svelte-qbjsq3" data-panel-type="graph" data-window-id="graph"><!></div>`);function dv(e,t){ee(t,!1);let n=()=>we(ga,`$sharedContextStore`,r),[r,i]=ne(),a=V(t,`panelApi`,8),s=V(t,`graph`,12,void 0),c=V(t,`selectedNode`,12,null),l=V(t,`selectedAnnotation`,12,null),u=V(t,`activeTool`,12,`select`),d=V(t,`presentationMode`,12,!1),f=V(t,`onRecordHistory`,12,void 0),p=V(t,`onNodeSelect`,12,void 0),m=V(t,`onAnnotationSelect`,12,void 0),h=V(t,`onToolChange`,12,void 0),g=V(t,`onOpenNodePanel`,12,void 0);xe();let _=Y(null),v=Y(),y=Y({x:0,y:0,zoom:1});function b(e){p()&&p()(e.detail.node)}function S(e){m()&&m()(e.detail.annotationId)}function C(e){L(y,e.detail.transform)}function w(e){g()&&g()(e.detail)}function T(e){let t=e.detail.node;t&&cl.openCodeEditor(t.id,t.type||`Code`)}function D(e){x(_)&&x(_).addNode&&x(_).addNode(e)}function te(){x(_)&&x(_).centerOnNodes&&x(_).centerOnNodes()}function O(){x(_)&&x(_).selectAll&&x(_).selectAll()}function k(){x(_)&&x(_).deselectAll&&x(_).deselectAll()}function A(){x(_)&&x(_).deleteSelected&&x(_).deleteSelected()}ye(()=>{if(x(v)?.addEventListener(`addNode`,e=>{D(e.detail)}),x(v)?.addEventListener(`centerOnNodes`,()=>{te()}),x(v)?.addEventListener(`selectAll`,()=>{O()}),x(v)?.addEventListener(`deselectAll`,()=>{k()}),x(v)?.addEventListener(`deleteSelected`,()=>{A()}),a()){let e=a().onDidDimensionsChange?.(e=>{e.width,e.height});return()=>{e?.dispose?.()}}}),J(()=>n(),()=>{n()&&(s(n().graph),c(n().selectedNode),l(n().selectedAnnotation),u(n().activeTool||`select`),d(n().presentationMode||!1),f(n().onRecordHistory),p(n().onNodeSelect),m(n().onAnnotationSelect),h(n().onToolChange),g(n().onOpenNodePanel))}),he();var j={addNode:D,centerOnNodes:te,selectAll:O,deselectAll:k,deleteSelected:A};ue();var re=uv(),N=M(re),ie=e=>{ge(cv(e,{get graph(){return s()},get activeTool(){return u()},get selectedNode(){return c()},get selectedAnnotation(){return l()},get transform(){return x(y)},get onRecordHistory(){return f()},$$events:{nodeSelect:b,annotationSelect:S,transformChange:C,openNodePanel:w,nodeEdit:T},$$legacy:!0}),e=>L(_,e),()=>x(_))},P=e=>{var t=lv();E(e,t)};Z(N,e=>{s()?e(ie):e(P,-1)}),o(re),ge(re,e=>L(v,e),()=>x(v)),E(e,re),se(t,`addNode`,D),se(t,`centerOnNodes`,te),se(t,`selectAll`,O),se(t,`deselectAll`,k),se(t,`deleteSelected`,A);var ae=Ee(j);return i(),ae}function fv(e){return Number.isInteger(e)}function pv(e){if(e.type)return e.type;let t=e.value,n=e.params,r=n?.integer===!0||n?.step===1&&typeof t==`number`&&fv(t);if(typeof t==`number`)return n?.min!==void 0&&n?.max!==void 0?r?`int`:`slider`:r?`int`:`number`;if(typeof t==`string`)return/^#([0-9A-F]{3}|[0-9A-F]{6})$/i.test(t)?`color`:n?.accept===`image/*`||t.match(/\.(jpg|jpeg|png|gif|webp|svg)$/i)||t.startsWith(`data:image/`)?`image`:n?.options&&n.options.length>0?`select`:t.includes(`
|
|
201
|
+
`)||t.length>100?`textarea`:`text`;if(typeof t==`boolean`)return`boolean`;if(Array.isArray(t)){if(t.length>0&&typeof t[0]==`object`&&t[0]!==null&&`position`in t[0]&&`color`in t[0])return`colorramp`;if(t.length===2&&n?.min!==void 0&&n?.max!==void 0&&typeof n.min==`number`&&typeof n.max==`number`)return`range`;let e=t.length>0&&t.every(e=>typeof e==`number`&&fv(e)),r=e&&t.every(e=>e>=1&&e<=8192)&&n?.min!==void 0&&n?.max!==void 0,i=n?.integer===!0||n?.step===1&&e||r;return t.length===2?i?`vec2i`:`vec2`:t.length===3?i?`vec3i`:`vec3`:`vector`}return typeof t==`function`?`button`:`text`}var mv=1,hv=1e5;function gv(e){return typeof e==`object`&&e?e:null}function _v(e){return Array.isArray(e)?e.every(Number.isFinite)?e:null:!ArrayBuffer.isView(e)||e instanceof DataView?null:e}function vv(e,t,n){let r=e[n*t],i=e[n*t+1];return Number.isFinite(r)&&Number.isFinite(i)?[r,i]:null}function yv(e,t,n,r,i){let a=1-i,o=a*a*a,s=3*a*a*i,c=3*a*i*i,l=i*i*i;return[o*e[0]+s*t[0]+c*n[0]+l*r[0],o*e[1]+s*t[1]+c*n[1]+l*r[1]]}function bv(e,t=1200){if(!Number.isSafeInteger(t)||t<1||t>hv)return null;let n=gv(e),r=n?.pointCount,i=n?.primitiveCount;if(n?.kind!==`geometry`||typeof r!=`number`||!Number.isSafeInteger(r)||r<0||typeof i!=`number`||!Number.isSafeInteger(i)||i<0)return null;let a=gv(gv(n.point)?.P),o=a?.size,s=_v(a?.data);if(o!==2&&o!==3||!s||s.length!==r*o)return null;let c=null,l=1/0,u=1/0,d=-1/0,f=-1/0;for(let e=0;e<r;e+=1){let t=vv(s,o,e);if(!t)return null;let[n,r]=t;n<l&&(l=n),r<u&&(u=r),n>d&&(d=n),r>f&&(f=r)}r>0&&(c={min:[l,u],max:[d,f]});let p=e=>vv(s,o,e),m=gv(n.topology),h=_v(m?.vertexPoints),g=_v(m?.offsets),_=_v(m?.kinds),v=_v(m?.closed);if(!h||!g||!_||!v||g.length!==i+1||_.length!==i||v.length!==i||g[0]!==0||g[g.length-1]!==h.length)return null;let y=new Uint8Array(r);for(let e=0;e<h.length;e+=1){let t=h[e];if(!Number.isSafeInteger(t)||t<0||t>=r)return null;y[t]=1}let b=[],x=Math.max(1,Math.floor(t/Math.max(i,1)));for(let e=0;e<i&&b.length<t;e+=1){let t=g[e],n=g[e+1],r=_[e],i=v[e];if(!Number.isSafeInteger(t)||!Number.isSafeInteger(n)||t<0||n<t||n>h.length||!Number.isSafeInteger(r)||r<0||r>3||i!==0&&i!==1)return null;let a=n-t,o=e=>p(h[t+e]),s;if(r===mv){let e=i?a/3:(a-1)/3;if(!Number.isSafeInteger(e)||e<1)return null;s=[];for(let t=0;t<e;t+=1){let n=t*3,r=[o(n),o(n+1),o(n+2),o((n+3)%a)];if(r.some(e=>!e))return null;let i=Math.max(2,Math.min(16,Math.floor(x/Math.max(e,1))));for(let e=t===0?0:1;e<=i;e+=1)s.push(yv(r[0],r[1],r[2],r[3],e/i))}}else{let e=Math.min(a,x);s=[];for(let t=0;t<e;t+=1){let n=o(Math.floor(t*a/e));if(!n)return null;s.push(n)}i===1&&s.length>1&&s.push(s[0])}s.length>0&&b.push(s)}let S=[],C=Math.max(0,Math.floor(t));if(C>0){let e=r-y.reduce((e,t)=>e+t,0),t=Math.max(1,e/C),n=0,i=0;for(let e=0;e<r&&S.length<C;e+=1)if(!y[e]){if(n>=i){let n=p(e);n&&S.push(n),i+=t}n+=1}}return{bounds:c,points:S,paths:b,summary:`${r} ${r===1?`point`:`points`} · ${i} ${i===1?`primitive`:`primitives`}`}}var xv=/\.(png|jpe?g|webp|gif|tiff?|avif|svg|npy)$/i,Sv=1200;function Cv(e){if(typeof e==`number`)return Number.isInteger(e)?`int`:`float`;if(typeof e==`boolean`)return`bool`;if(typeof e==`string`)return xv.test(e)?`image`:`string`;if($l(e))return`image`;if(typeof e==`object`&&e&&e.kind===`geometry`)return`geometry`;if(Array.isArray(e)){if(e.every(e=>typeof e==`number`)){if(e.length===2)return`vec2`;if(e.length===3)return`vec3`;if(e.length===4)return`vec4`;if(e.length===9)return`mat3`;if(e.length===16)return`mat4`}return`array`}return typeof e==`object`&&e?`object`:`any`}function wv(e,t={}){if(/^(https?:|data:|blob:)/.test(e))return e;let n=e.replace(/^\.?\//,``),r=n.split(`/`).map(encodeURIComponent).join(`/`),i=new URLSearchParams;t.raw||/\.svg$/i.test(n)?i.set(`raw`,`1`):t.width&&i.set(`w`,String(t.width)),t.version&&i.set(`v`,String(t.version));let a=i.toString();return`/api/media/${r}${a?`?${a}`:``}`}function Tv(e,t=0){let n=Number(e);return Number.isFinite(n)?n:t}function Ev(e,t=0){return Math.max(0,Math.min(1,Tv(e,t)))}function Dv(e){if(Array.isArray(e))return[Ev(e[0]),Ev(e[1]),Ev(e[2]),Ev(e[3],1)];if(e&&typeof e==`object`){let t=e;return[Ev(t.r),Ev(t.g),Ev(t.b),Ev(t.a,1)]}if(typeof e==`string`){let t=/^#([\da-f]{6})([\da-f]{2})?$/i.exec(e.trim());if(t){let e=t[1];return[parseInt(e.slice(0,2),16)/255,parseInt(e.slice(2,4),16)/255,parseInt(e.slice(4,6),16)/255,t[2]?parseInt(t[2],16)/255:1]}}return[0,0,0,1]}function Ov(e){let[t,n,r,i]=Dv(e);return`rgba(${Math.round(t*255)}, ${Math.round(n*255)}, ${Math.round(r*255)}, ${Number(i.toFixed(3))})`}function kv(e){let[t,n,r]=Dv(e),i=e=>Math.round(e*255).toString(16).padStart(2,`0`);return`#${i(t)}${i(n)}${i(r)}`}function Av(e,t){if(e===void 0)return`—`;if(e===null)return`null`;let n=eu(e);if(t===`image`&&n){let[e,t]=n.size;return`${e||`?`}×${t||`?`} · ${n.channels} · ${n.depth} · ${n.space}`}if(t===`texture`&&typeof e==`object`){let t=e,n=t.size??[t.width,t.height];return`${Array.isArray(n)?`${n[0]??`?`}×${n[1]??`?`}`:`?×?`} · ${t.format??(t.float?`float`:`GPU texture`)} · browser session`}if([`geometry`,`points`,`lines`,`polyline`,`mesh`,`rects`].includes(t))return Pv(e,t).countLabel;if(Array.isArray(e))return`${e.length} ${e.length===1?`item`:`items`}`;if(typeof e==`object`){let t=Object.keys(e);return`{${t.slice(0,4).join(`, `)}${t.length>4?`, …`:``}}`}let r=String(e);return r.length>100?`${r.slice(0,97)}…`:r}function jv(e){if(!Array.isArray(e)||e.length<2)return null;let t=Number(e[0]),n=Number(e[1]);return Number.isFinite(t)&&Number.isFinite(n)?[t,n]:null}function Mv(e){return Array.isArray(e)?e.slice(0,Sv).map(jv).filter(e=>!!e):[]}function Nv(e,t){return t&&e.length>1?[...e,e[0]]:e}function Pv(e,t){let n={countLabel:`No geometry`,bounds:null,points:[],paths:[],rects:[]},r=e;if(t===`geometry`){let t=bv(e,Sv);return t?(n.points=t.points,n.paths=t.paths,n.bounds=t.bounds,n.countLabel=t.summary,n):n}if(t===`points`)n.points=Mv(Array.isArray(r)?r:r?.points),n.countLabel=`${n.points.length} ${n.points.length===1?`point`:`points`}`;else if(t===`lines`){let e=Array.isArray(r)?r:r?.lines;Array.isArray(e)&&(n.paths=e.slice(0,Sv).map(e=>Mv(e)).filter(e=>e.length>=2)),n.countLabel=`${n.paths.length} ${n.paths.length===1?`segment`:`segments`}`}else if(t===`polyline`){n.paths=(Array.isArray(r)&&jv(r[0])?[{points:r}]:Array.isArray(r)?r:[r]).slice(0,Sv).map(e=>Nv(Mv(e?.points??e),!!e?.closed)).filter(e=>e.length>0);let e=n.paths.reduce((e,t)=>e+t.length,0);n.countLabel=`${n.paths.length} ${n.paths.length===1?`chain`:`chains`} · ${e} vertices`}else if(t===`mesh`){let e=Array.isArray(r?.positions)?r.positions:[],t=[];for(let n=0;n+1<e.length&&t.length<Sv;n+=3){let r=jv([e[n],e[n+1]]);r&&t.push(r)}let i=Array.isArray(r?.indices)?r.indices:[];for(let e=0;e+2<i.length&&n.paths.length<Sv;e+=3){let r=[t[i[e]],t[i[e+1]],t[i[e+2]]];r.every(Boolean)&&n.paths.push([...r,r[0]])}n.points=t,n.countLabel=`${Math.floor(e.length/3)} vertices · ${Math.floor(i.length/3)} ${i.length===3?`triangle`:`triangles`}`}else if(t===`rects`){let e=Array.isArray(r)?r:r?.rects;Array.isArray(e)&&(n.rects=e.slice(0,Sv).map(e=>({x:Tv(Array.isArray(e)?e[0]:e?.x),y:Tv(Array.isArray(e)?e[1]:e?.y),width:Tv(Array.isArray(e)?e[2]:e?.width),height:Tv(Array.isArray(e)?e[3]:e?.height)}))),n.countLabel=`${n.rects.length} ${n.rects.length===1?`rect`:`rects`}`}let i=[...n.points,...n.paths.flat(),...n.rects.flatMap(e=>[[e.x,e.y],[e.x+e.width,e.y+e.height]])];return i.length>0&&(n.bounds={min:[Math.min(...i.map(e=>e[0])),Math.min(...i.map(e=>e[1]))],max:[Math.max(...i.map(e=>e[0])),Math.max(...i.map(e=>e[1]))]}),n}var Fv=m(`<rect class="svelte-k5ygks"></rect>`),Iv=m(`<polyline class="svelte-k5ygks"></polyline>`),Lv=m(`<circle class="svelte-k5ygks"></circle>`),Rv=m(`<svg role="img" preserveAspectRatio="xMidYMid meet" class="svelte-k5ygks"><!><!><!></svg>`),zv=u(`<div class="empty svelte-k5ygks">No previewable geometry</div>`),Bv=u(`<span> </span>`),Vv=u(`<div class="geometry-preview svelte-k5ygks"><!> <div class="meta svelte-k5ygks"><span> </span> <!></div></div>`);function Hv(e,t){ee(t,!1);let n=Y(),r=Y(),i=Y(),a=Y(),s=Y(),c=Y(),l=Y(),u=Y(),d=V(t,`value`,8),p=V(t,`type`,8);J(()=>(A(d()),A(p())),()=>{L(n,Pv(d(),p()))}),J(()=>x(n),()=>{L(r,x(n).bounds?.min[0]??0)}),J(()=>x(n),()=>{L(i,x(n).bounds?.min[1]??0)}),J(()=>(x(n),x(r)),()=>{L(a,Math.max(x(n).bounds?x(n).bounds.max[0]-x(r):1,1e-6))}),J(()=>(x(n),x(i)),()=>{L(s,Math.max(x(n).bounds?x(n).bounds.max[1]-x(i):1,1e-6))}),J(()=>(x(a),x(s)),()=>{L(c,Math.max(x(a),x(s))*.04)}),J(()=>(x(r),x(c),x(i),x(a),x(s)),()=>{L(l,`${x(r)-x(c)} ${x(i)-x(c)} ${x(a)+x(c)*2} ${x(s)+x(c)*2}`)}),J(()=>(x(a),x(s)),()=>{L(u,Math.max(x(a),x(s))*.008)}),he(),ue();var m=Vv(),g=M(m),_=e=>{var t=Rv(),r=M(t);f(r,1,()=>(x(n),F(()=>x(n).rects)),h,(e,t)=>{var n=Fv();K(()=>{X(n,`x`,(x(t),F(()=>x(t).x))),X(n,`y`,(x(t),F(()=>x(t).y))),X(n,`width`,(x(t),F(()=>x(t).width))),X(n,`height`,(x(t),F(()=>x(t).height)))}),E(e,n)});var i=P(r);f(i,1,()=>(x(n),F(()=>x(n).paths)),h,(e,t)=>{var n=Iv();K(e=>X(n,`points`,e),[()=>(x(t),F(()=>x(t).map(e=>e.join(`,`)).join(` `)))]),E(e,n)});var a=P(i);f(a,1,()=>(x(n),F(()=>x(n).points)),h,(e,t)=>{var n=Lv();K(()=>{X(n,`cx`,(x(t),F(()=>x(t)[0]))),X(n,`cy`,(x(t),F(()=>x(t)[1]))),X(n,`r`,x(u))}),E(e,n)}),o(t),K(()=>{X(t,`viewBox`,x(l)),X(t,`aria-label`,`${p()??``} preview`)}),E(e,t)},v=e=>{var t=zv();E(e,t)};Z(g,e=>{x(n),F(()=>x(n).bounds)?e(_):e(v,-1)});var y=P(g,2),b=M(y),S=q(b,!0),C=P(b,2),w=e=>{var t=Bv(),n=q(t);K((e,t)=>D(n,`${e??``}×${t??``}`),[()=>(x(a),F(()=>Number(x(a).toFixed(2)))),()=>(x(s),F(()=>Number(x(s).toFixed(2))))]),E(e,t)};Z(C,e=>{x(n),F(()=>x(n).bounds)&&e(w)}),o(y),o(m),K(()=>D(S,(x(n),F(()=>x(n).countLabel)))),E(e,m),Ee()}var Uv=u(`<button class="twisty svelte-1juqkku"> </button>`),Wv=u(`<span class="twisty spacer svelte-1juqkku"></span>`),Gv=u(`<span class="key svelte-1juqkku"> </span>`),Kv=u(`<span class="count svelte-1juqkku"> </span>`),qv=u(`<span> </span>`),Jv=u(`<button class="more svelte-1juqkku"> </button>`),Yv=u(`<!> <!>`,1),Xv=u(`<div class="row svelte-1juqkku"><!> <!> <!></div> <!>`,1);function Zv(e,t){ee(t,!1);let n=Y(),r=Y(),i=Y(),s=Y(),c=Y(),l=V(t,`value`,8),u=V(t,`name`,8,null),d=V(t,`depth`,8,0),p=V(t,`expanded`,28,()=>d()<1),m=Y(50);function h(e){return e===null?`null`:e===void 0?`undefined`:Array.isArray(e)?e.length<=4&&e.every(e=>typeof e==`number`)?`[${e.map(e=>Number.isInteger(e)?e:Number(e.toFixed(4))).join(`, `)}]`:`Array(${e.length})`:typeof e==`object`?`{${Object.keys(e).length}}`:typeof e==`string`?e.length>48?`"${e.slice(0,45)}…"`:`"${e}"`:String(typeof e==`number`?Number.isInteger(e)?e:Number(e.toFixed(6)):e)}function g(e){return e==null?`null`:typeof e==`number`?`number`:typeof e==`string`?`string`:typeof e==`boolean`?`boolean`:`plain`}J(()=>A(l()),()=>{L(n,Array.isArray(l()))}),J(()=>(A(l()),x(n)),()=>{L(r,l()!==null&&typeof l()==`object`&&!x(n))}),J(()=>(x(n),x(r)),()=>{L(i,x(n)||x(r))}),J(()=>(x(n),A(l()),x(r)),()=>{L(s,x(n)?l().map((e,t)=>[String(t),e]):x(r)?Object.entries(l()):[])}),J(()=>(x(s),x(m)),()=>{L(c,x(s).slice(0,x(m)))}),he(),ue();var _=Xv(),y=G(_),b=M(y),S=e=>{var t=Uv(),n=q(t,!0);K(()=>D(n,p()?`▾`:`▸`)),O(`click`,t,()=>p(!p())),E(e,t)},C=e=>{var t=Wv();E(e,t)};Z(b,e=>{x(i)?e(S):e(C,-1)});var w=P(b,2),T=e=>{var t=Gv(),n=q(t,!0);K(()=>D(n,u())),E(e,t)};Z(w,e=>{u()!==null&&e(T)});var k=P(w,2),ne=e=>{var t=Kv(),r=q(t,!0);K(()=>D(r,(x(n),x(s),F(()=>x(n)?`${x(s).length} items`:`${x(s).length} keys`)))),E(e,t)},j=e=>{var t=qv(),n=q(t,!0);K((e,r)=>{v(t,1,`value ${e??``}`,`svelte-1juqkku`),X(t,`title`,typeof l()==`string`?l():``),D(n,r)},[()=>(A(l()),F(()=>g(l()))),()=>(A(l()),F(()=>h(l())))]),E(e,t)};Z(k,e=>{x(i)?e(ne):e(j,-1)}),o(y);var re=P(y,2),N=e=>{var t=Yv(),n=G(t);f(n,1,()=>x(c),([e,t])=>e,(e,t)=>{var n=B(()=>U(x(t),2));let r=()=>x(n)[0],i=()=>x(n)[1];var a=te(),o=G(a);{let e=pe(()=>d()+1);Zv(o,{get value(){return i()},get name(){return r()},get depth(){return x(e)}})}E(e,a)});var r=P(n,2),i=e=>{var t=Jv(),n=q(t);K(()=>{a(t,`padding-left: ${(d()+1)*10}px`),D(n,`${x(s),x(m),F(()=>x(s).length-x(m))??``} more…`)}),O(`click`,t,()=>L(m,x(m)+200)),E(e,t)};Z(r,e=>{x(s),x(m),F(()=>x(s).length>x(m))&&e(i)}),E(e,t)};Z(re,e=>{x(i)&&p()&&e(N)}),K(()=>a(y,`padding-left: ${d()*10}px`)),E(e,_),Ee()}var Qv=u(`<div class="tree svelte-2vu630"><!></div>`),$v=u(`<div class="error svelte-2vu630" role="alert"> </div>`),ey=u(`<textarea spellcheck="false" class="svelte-2vu630"></textarea> <!> <div class="hint svelte-2vu630">Apply with blur or ⌘/Ctrl Enter</div>`,1);function ty(e,t){ee(t,!1);let n=V(t,`value`,8),r=V(t,`type`,8,`object`),i=V(t,`readOnly`,8,!1),a=V(t,`onChange`,8,null),s=Y(``),l=Y(),u=Y(``);function d(e){if(e===void 0)return``;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function f(){if(!(i()||!a()))try{let e=JSON.parse(x(s));if(r()===`array`&&!Array.isArray(e)){L(u,`Expected an array`);return}if(r()===`object`&&(e===null||Array.isArray(e)||typeof e!=`object`)){L(u,`Expected an object`);return}L(u,``),L(l,e),a()(e)}catch{L(u,`Invalid JSON`)}}function p(e){(e.metaKey||e.ctrlKey)&&e.key===`Enter`&&(e.preventDefault(),f())}J(()=>(A(n()),x(l)),()=>{n()!==x(l)&&(L(l,n()),L(s,d(n())),L(u,``))}),he(),ue();var m=te(),h=G(m),g=e=>{var t=Qv();Zv(M(t),{get value(){return n()}}),o(t),E(e,t)},_=e=>{var t=ey(),n=G(t);z(n);var i=P(n,2),a=e=>{var t=$v(),n=q(t,!0);K(()=>D(n,x(u))),E(e,t)};Z(i,e=>{x(u)&&e(a)}),c(2),K(()=>X(n,`aria-label`,`${r()??``} JSON`)),Ce(n,()=>x(s),e=>L(s,e)),O(`blur`,n,f),O(`keydown`,n,p),E(e,t)};Z(h,e=>{i()?e(g):e(_,-1)}),E(e,m),Ee()}function ny(e,t,n,r){let i=e?.parameters.find(e=>e.name===t);if(!e||!i)throw Error(`Unknown parameter ${e?.id??`<missing>`}.${t}`);r?.(),e.setParameter(t,n)}async function ry(e=fetch){let t=await e(`/api/panels`);if(!t.ok)throw Error(`Cannot list project panels (${t.status})`);let n=await t.json();return Array.isArray(n.panels)?n.panels:[]}async function iy(e){let t=await od(()=>import(`/api/panels/${encodeURIComponent(e)}/compiled`),[]);if(typeof t.mount!=`function`)throw Error(`Project panel "${e}" must export mount(element, api)`);return t}var ay;async function oy(){return ay??=fetch(`/api/exec/capability`,{cache:`no-store`}).then(async e=>{if(!e.ok)throw Error(`Cascade project execution capability is unavailable`);return(await e.json()).capability}).catch(e=>{throw ay=void 0,e}),ay}async function sy(e,t){let n=n=>fetch(`/api/exec`,{method:`POST`,headers:{"Content-Type":`application/json`,"X-Cascade-Exec-Capability":n},body:JSON.stringify({stage:e,args:t})}),r=await n(await oy());r.status===403&&(ay=void 0,r=await n(await oy()));let i=await r.json();if(!r.ok||!i.ok)throw Error(`Stage "${e}" failed: ${i.stderr||i.error||`unknown error`}`);let a=String(i.stdout).trim().split(`
|
|
202
|
+
`).pop()??`{}`;return JSON.parse(a)}function cy(e){let t=t=>e.context()?.graph?.getNode(t)??null;return{runStage:e.runStage??sy,mediaUrl:wv,getParam(e,n){return t(e)?.parameters.find(e=>e.name===n)?.value},setParam(n,r,i){let a=t(n),o=a?.parameters.find(e=>e.name===r);if(!a||!o)throw Error(`Unknown parameter ${n}.${r}`);ny(a,r,i,e.context()?.onRecordHistory)},selectedNodeId(){return e.context()?.selectedNode?.id??null},sourceNodeId:e.sourceNodeId??null,signal:e.signal??new AbortController().signal,close:e.close}}var ly=u(`<span class="renderer-error svelte-qxatjj" role="alert"> </span>`),uy=u(`<div></div>`);function dy(e,t){ee(t,!1);let n=Y(),r=V(t,`panelName`,8),i=V(t,`rendererType`,8),a=V(t,`value`,8),o=V(t,`readOnly`,8,!0),s=V(t,`mode`,8,`inspect`),c=V(t,`onChange`,8,null),l=V(t,`loader`,8,iy),u=Y(),d=Y(null),f=Y(``);ye(()=>{let e=!1,t=null;return l()(r()).then(async a=>{if(e)return;let o=a.renderers?.[i()];if(!o)throw Error(`Project module "${r()}" does not export renderer "${i()}"`);let s=await o.mount(x(u),x(n));typeof s==`function`?t=s:s&&L(d,s),e&&(t?.(),x(d)?.dispose())}).catch(t=>{e||L(f,t instanceof Error?t.message:String(t))}),()=>{e=!0,t?.(),x(d)?.dispose()}}),J(()=>(A(a()),A(o()),A(s()),A(c())),()=>{L(n,{value:a(),readOnly:o(),mode:s(),onChange:c()})}),J(()=>(x(d),x(n)),()=>{x(d)?.update?.(x(n))}),he(),ue();var p=te(),m=G(p),h=e=>{var t=ly(),n=q(t,!0);K(()=>D(n,x(f))),E(e,t)},g=e=>{var t=uy();ge(t,e=>L(u,e),()=>x(u)),E(e,t)};Z(m,e=>{x(f)?e(h):e(g,-1)}),E(e,p),Ee()}var fy=new Map;function py(e,t){fy.set(e,{kind:`svelte`,component:t})}function my(e,t){fy.set(e,{kind:`project`,component:dy,panelName:t,rendererType:e})}function hy(e){return e?fy.get(e)??null:null}py(`object`,Zv),py(`array`,Zv);var gy=u(`<input type="number" class="cell svelte-1b37oh8"/>`),_y=u(`<button class="reset svelte-1b37oh8">Identity</button>`),vy=u(`<div class="matrix svelte-1b37oh8"></div> <!>`,1),yy=u(`<span class="swatch svelte-1b37oh8"></span>`),by=u(`<input aria-label="Color" type="color" class="svelte-1b37oh8"/>`),xy=u(`<label class="component svelte-1b37oh8"><span class="svelte-1b37oh8"> </span> <input type="number" min="0" max="1" step="0.01" class="svelte-1b37oh8"/></label>`),Sy=u(`<div class="vector svelte-1b37oh8"></div>`),Cy=u(`<div class="color-row svelte-1b37oh8"><!> <span class="color-css svelte-1b37oh8"> </span></div> <!>`,1),wy=u(`<label class="component svelte-1b37oh8"><span class="svelte-1b37oh8"> </span> <input type="number" class="svelte-1b37oh8"/></label>`),Ty=u(`<option> </option>`),Ey=u(`<select class="single svelte-1b37oh8"></select>`),Dy=u(`<label class="boolean svelte-1b37oh8"><input type="checkbox" class="svelte-1b37oh8"/> </label>`),Oy=u(`<div class="slider-row svelte-1b37oh8"><input type="range" class="svelte-1b37oh8"/> <input type="number" class="slider-number svelte-1b37oh8"/></div>`),ky=u(`<input type="number" class="single svelte-1b37oh8"/>`),Ay=u(`<pre class="text-value svelte-1b37oh8"> </pre>`),jy=u(`<input aria-label="string" type="text" class="single svelte-1b37oh8"/>`),My=u(`<img loading="lazy" class="svelte-1b37oh8"/> <div class="meta svelte-1b37oh8"> </div> <div class="path svelte-1b37oh8"> </div>`,1),Ny=u(`<div class="summary svelte-1b37oh8">No image reference</div>`),Py=u(`<input aria-label="image path" type="text" class="single svelte-1b37oh8"/>`),Fy=u(`<div class="structured svelte-1b37oh8"><!></div>`),Iy=u(`<div class="image svelte-1b37oh8"><!> <!></div>`),Ly=u(`<div class="texture"><div class="meta svelte-1b37oh8"> </div> <div class="notice svelte-1b37oh8">Live browser resource · convert to image to cross runtimes</div></div>`),Ry=u(`<!> <!>`,1),zy=u(`<input aria-label="asset path" type="text" class="single svelte-1b37oh8"/>`),By=u(`<div class="summary svelte-1b37oh8"> </div>`),Vy=u(`<div><!></div>`);function Hy(e,t){ee(t,!1);let n=Y(),i=Y(),l=Y(),u=Y(),d=Y(),p=Y(),m=Y(),_=Y(),y=Y(),b=Y(),S=Y(),w=Y(),k=Y(),ne=Y(),j=V(t,`type`,8,`any`),N=V(t,`value`,8),ie=V(t,`mode`,8,`inspect`),ae=V(t,`readOnly`,8,!1),oe=V(t,`port`,8,null),I=V(t,`node`,8,null),R=V(t,`onChange`,8,null),z=V(t,`version`,8,0),se=new Set([`geometry`,`points`,`lines`,`polyline`,`mesh`,`rects`]);function ce(e){if(!Number.isFinite(e))return x(y).min;let t=Math.min(x(y).max,Math.max(x(y).min,e));return x(i)===`int`?Math.round(t):t}function le(e){!ae()&&R()&&R()(e)}function H(e,t){let n=Number(t);if(!Number.isFinite(n))return;let r=Array.isArray(N())?[...N()]:Array(x(l)).fill(0),i=x(b)?ce(n):n;r[e]=x(p)?Math.round(i):i,le(r)}function U(){let e=Array(x(l)).fill(0);for(let t=0;t<x(d);t++)e[t*x(d)+t]=1;le(e)}function de(e,t){let n=[...x(ne)];n[e]=Math.max(0,Math.min(1,Number(t))),le(n)}function fe(e){let t=Dv(e);t[3]=x(ne)[3],le(t)}function me(e){let t=x(S).find(t=>String(t.value)===e);t&&le(t.value)}J(()=>A(j()),()=>{L(n,Yl(j()))}),J(()=>(x(n),A(N())),()=>{L(i,x(n)===`any`?Cv(N()):x(n))}),J(()=>x(i),()=>{L(l,ql[x(i)]??0)}),J(()=>x(i),()=>{L(u,x(i).startsWith(`mat`))}),J(()=>(x(u),x(l)),()=>{L(d,x(u)?Math.sqrt(x(l)):0)}),J(()=>x(i),()=>{L(p,Jl(x(i)))}),J(()=>(x(i),x(l)),()=>{L(m,x(i)===`color`?[`R`,`G`,`B`,`A`]:[`X`,`Y`,`Z`,`W`].slice(0,x(l)))}),J(()=>(A(ae()),x(i),hy),()=>{L(_,!ae()&&(x(i)===`object`||x(i)===`array`)?null:hy(x(i)))}),J(()=>(A(oe()),x(i)),()=>{L(y,{min:Number(oe()?.options?.min),max:Number(oe()?.options?.max),step:oe()?.options?.step??(x(i)===`int`?1:`any`)})}),J(()=>x(y),()=>{L(b,Number.isFinite(x(y).min)&&Number.isFinite(x(y).max)&&x(y).max>x(y).min)}),J(()=>A(oe()),()=>{L(S,Array.isArray(oe()?.options?.choices)?oe().options.choices:[])}),J(()=>(x(i),A(N())),()=>{L(w,x(i)===`image`?eu(N()):null)}),J(()=>(x(w),A(ie()),A(z())),()=>{L(k,x(w)?wv(x(w).path,{width:ie()===`view`?1800:320,version:z()}):``)}),J(()=>A(N()),()=>{L(ne,Dv(N()))}),he(),ue();var W=Vy(),ge=M(W),_e=e=>{var t=te(),n=G(t),r=e=>{var t=te(),n=G(t);{let e=pe(()=>ae()?null:le);g(n,()=>x(_).component,(t,n)=>{n(t,{get value(){return N()},get readOnly(){return ae()},get mode(){return ie()},get onChange(){return x(e)},get panelName(){return x(_),F(()=>x(_).panelName)},get rendererType(){return x(_),F(()=>x(_).rendererType)}})})}E(e,t)},i=e=>{var t=te(),n=G(t);{let e=pe(()=>ae()?null:le);g(n,()=>x(_).component,(t,n)=>{n(t,{get value(){return N()},get port(){return oe()},get readOnly(){return ae()},get mode(){return ie()},get node(){return I()},get onChange(){return x(e)}})})}E(e,t)};Z(n,e=>{x(_),F(()=>x(_).kind===`project`)?e(r):e(i,-1)}),E(e,t)},ve=e=>{var t=vy(),n=G(t);f(n,5,()=>(x(l),F(()=>Array(x(l)))),h,(e,t,n)=>{var i=gy();re(i),K((e,t)=>{X(i,`aria-label`,`Row ${e??``}, column ${n%x(d)+1}`),i.disabled=ae(),r(i,t)},[()=>(x(d),F(()=>Math.floor(n/x(d))+1)),()=>(A(N()),F(()=>Array.isArray(N())?N()[n]??0:0))]),O(`change`,i,e=>H(n,e.currentTarget.value)),E(e,i)}),o(n);var i=P(n,2),s=e=>{var t=_y();O(`click`,t,U),E(e,t)};Z(i,e=>{ae()||e(s)}),K(()=>a(n,`grid-template-columns: repeat(${x(d)??``}, minmax(0, 1fr))`)),E(e,t)},ye=e=>{var t=Cy(),n=G(t),i=M(n),s=e=>{var t=yy();K(e=>a(t,`background:${e??``}`),[()=>(A(Ov),x(ne),F(()=>Ov(x(ne))))]),E(e,t)},c=e=>{var t=by();re(t),K(e=>r(t,e),[()=>(A(kv),x(ne),F(()=>kv(x(ne))))]),O(`input`,t,e=>fe(e.currentTarget.value)),E(e,t)};Z(i,e=>{ae()?e(s):e(c,-1)});var l=P(i,2),u=q(l,!0);o(n);var d=P(n,2),p=e=>{var t=Sy();f(t,5,()=>x(ne),h,(e,t,n)=>{var i=xy(),a=M(i),s=q(a,!0),c=P(a,2);re(c),o(i),K(()=>{D(s,(x(m),F(()=>x(m)[n]))),X(c,`aria-label`,(x(m),F(()=>x(m)[n]))),c.disabled=ae(),r(c,x(t))}),O(`change`,c,e=>de(n,e.currentTarget.value)),E(e,i)}),o(t),E(e,t)};Z(d,e=>{(!ae()||ie()===`view`)&&e(p)}),K(e=>D(u,e),[()=>(A(Ov),x(ne),F(()=>Ov(x(ne))))]),E(e,t)},be=e=>{var t=Sy();f(t,5,()=>(x(l),F(()=>Array(x(l)))),h,(e,t,n)=>{var i=wy(),a=M(i),s=q(a,!0),c=P(a,2);re(c),o(i),K((e,t,i)=>{D(s,(x(m),F(()=>x(m)[n]))),X(c,`aria-label`,(x(m),F(()=>x(m)[n]))),X(c,`min`,e),X(c,`max`,t),X(c,`step`,(A(oe()),x(p),F(()=>oe()?.options?.step??(x(p)?1:`any`)))),c.disabled=ae(),r(c,i)},[()=>(x(y),F(()=>Number.isFinite(x(y).min)?x(y).min:void 0)),()=>(x(y),F(()=>Number.isFinite(x(y).max)?x(y).max:void 0)),()=>(A(N()),F(()=>Array.isArray(N())?N()[n]??0:0))]),O(`change`,c,e=>H(n,e.currentTarget.value)),E(e,i)}),o(t),E(e,t)},xe=e=>{var t=Ey();f(t,5,()=>x(S),h,(e,t)=>{var n=Ty(),r=q(n,!0),i={};K(e=>{D(r,(x(t),F(()=>x(t).label))),i!==(i=e)&&(n.value=(n.__value=i)??``)},[()=>(x(t),F(()=>String(x(t).value)))]),E(e,n)}),o(t);var n;T(t),K(e=>{X(t,`aria-label`,(A(oe()),F(()=>oe()?.name??`choice`))),t.disabled=ae(),n!==(n=e)&&(t.value=(t.__value=n)??``,s(t,n))},[()=>(A(N()),F(()=>String(N()??``)))]),O(`change`,t,e=>me(e.currentTarget.value)),E(e,t)},Se=e=>{var t=Dy(),n=M(t);re(n);var r=P(n);o(t),K((e,t)=>{n.disabled=ae(),C(n,e),D(r,` ${t??``}`)},[()=>(A(N()),F(()=>!!N())),()=>(A(N()),F(()=>N()?`true`:`false`))]),O(`change`,n,e=>le(e.currentTarget.checked)),E(e,t)},Ce=e=>{var t=Oy(),n=M(t);re(n);var a=P(n,2);re(a),o(t),K(()=>{X(n,`aria-label`,x(i)),X(n,`min`,(x(y),F(()=>x(y).min))),X(n,`max`,(x(y),F(()=>x(y).max))),X(n,`step`,(x(y),F(()=>x(y).step))),n.disabled=ae(),r(n,(A(N()),x(y),F(()=>N()??x(y).min))),X(a,`aria-label`,`${x(i)??``} value`),X(a,`min`,(x(y),F(()=>x(y).min))),X(a,`max`,(x(y),F(()=>x(y).max))),X(a,`step`,(x(y),F(()=>x(y).step))),a.disabled=ae(),r(a,(A(N()),x(y),F(()=>N()??x(y).min)))}),O(`input`,n,e=>le(ce(Number(e.currentTarget.value)))),O(`change`,a,e=>le(ce(Number(e.currentTarget.value)))),E(e,t)},we=e=>{var t=ky();re(t),K(()=>{X(t,`aria-label`,x(i)),X(t,`step`,x(i)===`int`?1:`any`),t.disabled=ae(),r(t,N()??0)}),O(`change`,t,e=>le(x(i)===`int`?Math.round(Number(e.currentTarget.value)):Number(e.currentTarget.value))),E(e,t)},Te=e=>{var t=te(),n=G(t),i=e=>{var t=Ay(),n=q(t,!0);K(()=>D(n,N()??``)),E(e,t)},a=e=>{var t=jy();re(t),K(()=>{t.disabled=ae(),r(t,N()??``)}),O(`change`,t,e=>le(e.currentTarget.value)),E(e,t)};Z(n,e=>{ie()===`view`&&ae()?e(i):e(a,-1)}),E(e,t)},De=e=>{var t=Iy(),n=M(t),a=e=>{var t=My(),n=G(t),r=P(n,2),a=q(r,!0),o=P(r,2),s=q(o,!0);K(e=>{X(n,`src`,x(k)),X(n,`alt`,(x(w),F(()=>x(w).path))),D(a,e),X(o,`title`,(x(w),F(()=>x(w).path))),D(s,(x(w),F(()=>x(w).path)))},[()=>(A(Av),x(w),x(i),F(()=>Av(x(w),x(i))))]),E(e,t)},s=e=>{var t=Ny();E(e,t)};Z(n,e=>{x(w)?e(a):e(s,-1)});var c=P(n,2),l=e=>{var t=Fy(),n=M(t),i=e=>{var t=Py();re(t),K(()=>r(t,N())),O(`change`,t,e=>le(e.currentTarget.value)),E(e,t)},a=e=>{ty(e,{get value(){return N()},type:`image`,get onChange(){return R()}})};Z(n,e=>{typeof N()==`string`?e(i):e(a,-1)}),o(t),E(e,t)};Z(c,e=>{ae()||e(l)}),o(t),E(e,t)},Oe=e=>{var t=Ly(),n=M(t),r=q(n,!0);c(2),o(t),K(e=>D(r,e),[()=>(A(Av),A(N()),x(i),F(()=>Av(N(),x(i))))]),E(e,t)},ke=e=>{var t=Ry(),n=G(t);Hv(n,{get value(){return N()},get type(){return x(i)}});var r=P(n,2),a=e=>{var t=Fy();ty(M(t),{get value(){return N()},get type(){return x(i)},get onChange(){return R()}}),o(t),E(e,t)};Z(r,e=>{ae()||e(a)}),E(e,t)},Ae=B(()=>(x(i),F(()=>se.has(x(i))))),je=e=>{var t=zy();re(t),K(()=>{t.disabled=ae(),r(t,N())}),O(`change`,t,e=>le(e.currentTarget.value)),E(e,t)},Me=e=>{ty(e,{get value(){return N()},get type(){return x(i)},get readOnly(){return ae()},get onChange(){return R()}})},Ne=e=>{var t=By(),n=q(t,!0);K(e=>D(n,e),[()=>(A(Av),A(N()),x(i),F(()=>Av(N(),x(i))))]),E(e,t)};Z(ge,e=>{x(_)?e(_e):x(u)?e(ve,1):x(i)===`color`?e(ye,2):x(l)>0?e(be,3):(x(S),F(()=>x(S).length>0)?e(xe,4):x(i)===`bool`?e(Se,5):(x(i)===`float`||x(i)===`int`)&&x(b)?e(Ce,6):x(i)===`float`||x(i)===`int`?e(we,7):x(i)===`string`?e(Te,8):x(i)===`image`?e(De,9):x(i)===`texture`?e(Oe,10):x(Ae)?e(ke,11):x(i)===`asset`&&typeof N()==`string`?e(je,12):x(i)===`array`||x(i)===`object`||x(i)===`any`||x(i)===`asset`?e(Me,13):e(Ne,-1))}),o(W),K(()=>{v(W,1,`core-value mode-${ie()??``}`,`svelte-1b37oh8`),X(W,`data-type`,x(i))}),E(e,W),Ee()}var Uy=u(`<div class="source svelte-1boj9ce"> </div>`),Wy=u(`<div><div class="row svelte-1boj9ce"><span class="dot svelte-1boj9ce"></span> <span class="name svelte-1boj9ce"> </span></div> <!> <div class="value svelte-1boj9ce"><!></div></div>`);function Gy(e,t){ee(t,!1);let n=Y(),r=Y(),i=Y(),s=Y(),c=Y(),l=V(t,`port`,8),u=V(t,`node`,8,null),d=V(t,`direction`,8,`input`),f=V(t,`onChange`,8,null);J(()=>A(l()),()=>{L(n,Yl(l()?.dataType))}),J(()=>A(l()),()=>{L(r,l()?.value)}),J(()=>(x(n),x(r)),()=>{L(i,x(n)===`any`?Cv(x(r)):x(n))}),J(()=>A(l()),()=>{L(s,(l()?.connections?.length??0)>0)}),J(()=>(A(d()),x(s)),()=>{L(c,d()===`output`||x(s))}),he(),ue();var p=Wy();let m;var h=M(p),g=M(h),_=P(g,2),y=q(_,!0);o(h);var b=P(h,2),S=e=>{var t=Uy(),n=q(t);K(()=>D(n,`from ${A(l()),F(()=>l().connections[0]?.from?.nodeId??`upstream`)??``}`)),E(e,t)};Z(b,e=>{x(s)&&d()===`input`&&e(S)});var C=P(b,2),w=M(C);{let e=pe(()=>x(c)?null:f());Hy(w,{get type(){return x(i)},get value(){return x(r)},get port(){return l()},get node(){return u()},mode:`inspect`,get readOnly(){return x(c)},get onChange(){return x(e)}})}o(C),o(p),K(e=>{m=v(p,1,`port-editor svelte-1boj9ce`,null,m,{"read-only":x(c)}),a(g,`background:${e??``}`),X(_,`title`,(A(l()),x(i),F(()=>`${l()?.name} · ${x(i)}`))),D(y,(A(l()),F(()=>l()?.name)))},[()=>(A(Ql),A(l()),F(()=>Ql(l()?.dataType)))]),E(e,p),Ee()}var Ky=u(`<div class="slider-wrapper svelte-368zap"><input type="range" class="slider svelte-368zap"/> <input type="text" inputmode="decimal" spellcheck="false" autocomplete="off" class="number-input svelte-368zap"/></div>`),qy=u(`<input type="text" inputmode="decimal" spellcheck="false" autocomplete="off" class="number-input-full svelte-368zap"/>`),Jy=u(`<div class="number-input-container svelte-368zap"><!></div>`);function Yy(e,t){ee(t,!1);let n=Y(),i=Y(),a=Y(),s=Y(),c=Y(),l=Y(),u=Y(),d=Y(),f=V(t,`prop`,8),p=V(t,`id`,8),m=V(t,`onValueChange`,8),h=V(t,`onExpressionChange`,8,null),g=Y(String(x(d))),_=Y(!1),v=/^[-+]?(\d+\.?\d*|\.\d+)([eE][-+]?\d+)?$/;function y(e){let t=e;return x(i)!==void 0&&t<x(i)&&(t=x(i)),x(a)!==void 0&&t>x(a)&&(t=x(a)),x(c)?Math.round(t):t}function b(e){let t=parseFloat(e.target.value);Number.isNaN(t)||m()(x(c)?Math.round(t):t)}function S(e){L(g,e.target.value);let t=x(g).trim();v.test(t)&&m()(y(Number(t)))}function C(){let e=x(g).trim();if(v.test(e)){m()(y(Number(e)));return}if(e&&h()){h()(e);return}L(g,String(x(d)))}function w(e){if(e.key===`ArrowUp`||e.key===`ArrowDown`){let t=x(g).trim();if(t&&!v.test(t))return;e.preventDefault();let r=v.test(t)?Number(t):x(n),i=(typeof x(s)==`number`?x(s):1)*(e.shiftKey?10:1),a=y(r+(e.key===`ArrowUp`?i:-i)),o=x(c)?a:Number(a.toFixed(6));L(g,String(o)),m()(o);return}e.key===`Enter`?(e.preventDefault(),C(),e.target.blur()):e.key===`Escape`&&(L(g,String(x(d))),e.target.blur())}function T(){L(_,!0)}function D(){L(_,!1),C()}J(()=>A(f()),()=>{L(n,typeof f().value==`number`?f().value:0)}),J(()=>A(f()),()=>{L(i,typeof f().params?.min==`number`?f().params.min:void 0)}),J(()=>A(f()),()=>{L(a,typeof f().params?.max==`number`?f().params.max:void 0)}),J(()=>A(f()),()=>{L(s,f().params?.step??(f().params?.integer?1:.01))}),J(()=>(A(f()),x(s)),()=>{L(c,f().params?.integer===!0||x(s)===1)}),J(()=>(x(i),x(a)),()=>{L(l,x(i)!==void 0&&x(a)!==void 0)}),J(()=>A(f()),()=>{L(u,typeof f().disabled==`function`?f().disabled():f().disabled)}),J(()=>(x(c),x(n)),()=>{L(d,x(c)?Math.round(x(n)):x(n))}),J(()=>(x(_),x(d)),()=>{x(_)||L(g,String(x(d)))}),he(),ue();var te=Jy(),k=M(te),ne=e=>{var t=Ky(),c=M(t);re(c);var l=P(c,2);re(l),o(t),K(()=>{X(c,`id`,p()),X(c,`min`,x(i)),X(c,`max`,x(a)),X(c,`step`,x(s)),r(c,x(n)),c.disabled=x(u),r(l,x(g)),l.disabled=x(u)}),O(`input`,c,b),O(`input`,l,S),O(`keydown`,l,w),O(`focus`,l,T),O(`blur`,l,D),E(e,t)},j=e=>{var t=qy();re(t),K(()=>{X(t,`id`,p()),r(t,x(g)),t.disabled=x(u)}),O(`input`,t,S),O(`keydown`,t,w),O(`focus`,t,T),O(`blur`,t,D),E(e,t)};Z(k,e=>{x(l)?e(ne):e(j,-1)}),o(te),E(e,te),Ee()}var Xy=u(`<input type="number" class="number-input svelte-zpm8xr"/>`),Zy=u(`<button class="preset-option svelte-zpm8xr"> </button>`),Qy=u(`<div class="preset-dropdown svelte-zpm8xr" role="menu" tabindex="-1"></div>`),$y=u(`<div class="preset-container svelte-zpm8xr"><button class="preset-button svelte-zpm8xr" title="Resolution presets"><svg width="12" height="12" viewBox="0 0 12 12" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M2 3h8M2 6h8M2 9h8"></path></svg></button> <!></div>`),eb=m(`<path d="M3 5.5 V4 a3 3 0 0 1 6 0 v1.5 M6 8.5 v2 M2.5 5.5 h7 a1 1 0 0 1 1 1 v4 a1 1 0 0 1 -1 1 h-7 a1 1 0 0 1 -1 -1 v-4 a1 1 0 0 1 1 -1 z"></path>`),tb=m(`<path d="M3 5.5 V4 a3 3 0 0 1 6 0 v1.5 M6 8.5 v2 M2.5 5.5 h7 a1 1 0 0 1 1 1 v4 a1 1 0 0 1 -1 1 h-7 a1 1 0 0 1 -1 -1 v-4 a1 1 0 0 1 1 -1 z" stroke-dasharray="2 2"></path>`),nb=u(`<button><svg width="12" height="12" viewBox="0 0 12 12" fill="none" stroke="currentColor" stroke-width="1.5"><!></svg></button>`),rb=u(`<div class="vector-input-container svelte-zpm8xr"><div class="vector-row svelte-zpm8xr"><!> <!> <!></div></div>`);function ib(t,n){ee(n,!1);let i=Y(),a=Y(),s=Y(),c=Y(),l=Y(),u=Y(),d=Y(),p=V(n,`prop`,12),m=V(n,`id`,8),g=V(n,`onValueChange`,8),_=Y(Array.isArray(p().value)?[...p().value]:[0,0,0]),y=Y([]),b=Y(p().params?.locked??!1),S=Y(!1),C=Y(),w=Y(),T=[{label:`256 × 256`,value:[256,256]},{label:`512 × 512`,value:[512,512]},{label:`1024 × 1024`,value:[1024,1024]},{label:`2048 × 2048`,value:[2048,2048]},{label:`640 × 480`,value:[640,480]},{label:`1280 × 720`,value:[1280,720]},{label:`1920 × 1080`,value:[1920,1080]},{label:`3840 × 2160`,value:[3840,2160]}];function te(e){x(i)===2?g()([e[0],e[1]]):x(i)===3&&g()([e[0],e[1],x(_)[2]]),L(S,!1)}function k(e){x(w)&&!x(w).contains(e.target)&&x(C)&&!x(C).contains(e.target)&&L(S,!1)}function ne(e,t){let n=[...x(_)];if(x(u)&&(t=Math.round(t)),x(s)!==void 0){let n=Array.isArray(x(s))?x(s)[e]:x(s);n!==void 0&&t<n&&(t=n)}if(x(c)!==void 0){let n=Array.isArray(x(c))?x(c)[e]:x(c);n!==void 0&&t>n&&(t=n)}x(b)?n.fill(t):n[e]=t,g()(n)}function j(e,t){let n=e.target,r=parseFloat(n.value);if(isNaN(r)){n.value=String(x(_)[t]);return}ne(t,r)}function N(e,t){let n=e.target;(n.value===``||isNaN(parseFloat(n.value)))&&(n.value=String(x(_)[t]))}ye(()=>(document.addEventListener(`click`,k),()=>{document.removeEventListener(`click`,k)})),J(()=>(A(p()),x(_)),()=>{let e=p().value,t=Array.isArray(e)?[...e]:[0,0,0];JSON.stringify(x(_))!==JSON.stringify(t)&&L(_,t)}),J(()=>A(p()),()=>{L(l,p().params?.step??(p().params?.integer?1:.01))}),J(()=>(A(p()),x(l)),()=>{L(u,p().params?.integer===!0||x(l)===1)}),J(()=>(x(_),x(y),x(u)),()=>{x(_)&&e().then(()=>{x(_).forEach((e,t)=>{if(x(y)[t]){let n=x(u)?Math.round(e):e;x(y)[t].value!==String(n)&&!isNaN(n)&&oe(y,x(y)[t].value=String(n))}})})}),J(()=>x(_),()=>{L(i,x(_).length)}),J(()=>x(i),()=>{L(a,x(i)===2?[`X`,`Y`]:[`X`,`Y`,`Z`])}),J(()=>A(p()),()=>{L(s,typeof p().params?.min==`number`||Array.isArray(p().params?.min)?p().params.min:void 0)}),J(()=>A(p()),()=>{L(c,typeof p().params?.max==`number`||Array.isArray(p().params?.max)?p().params.max:void 0)}),J(()=>A(p()),()=>{L(d,typeof p().disabled==`function`?p().disabled():p().disabled)}),J(()=>A(p()),()=>{p().params?.locked!==void 0&&L(b,p().params.locked)}),he(),ue();var ie=rb(),ae=M(ie),R=M(ae);f(R,1,()=>(x(i),F(()=>Array(x(i)))),h,(e,t,n)=>{let i=pe(()=>(x(_),x(u),F(()=>x(_)[n]===void 0?0:x(u)?Math.round(x(_)[n]):x(_)[n])));pe(()=>(x(y),F(()=>x(y)[n])));var a=Xy();re(a),ge(a,(e,t)=>oe(y,x(y)[t]=e),e=>x(y)?.[e],()=>[n]),K((e,t)=>{X(a,`id`,`${m()??``}-${n}`),X(a,`min`,e),X(a,`max`,t),X(a,`step`,x(l)),r(a,x(i)),a.disabled=x(d)},[()=>(x(s),F(()=>x(s)===void 0?void 0:Array.isArray(x(s))?x(s)[n]:x(s))),()=>(x(c),F(()=>x(c)===void 0?void 0:Array.isArray(x(c))?x(c)[n]:x(c)))]),O(`input`,a,e=>j(e,n)),O(`blur`,a,e=>N(e,n)),E(e,a)});var z=P(R,2),se=e=>{var t=$y(),r=M(t);ge(r,e=>L(C,e),()=>x(C));var i=P(r,2),a=e=>{var t=Qy();f(t,5,()=>T,h,(e,t)=>{var n=Zy(),r=q(n,!0);K(()=>D(r,(x(t),F(()=>x(t).label)))),O(`click`,n,I(()=>te(x(t).value))),E(e,n)}),o(t),ge(t,e=>L(w,e),()=>x(w)),O(`click`,t,I(function(e){be.call(this,n,e)})),O(`keydown`,t,I(function(e){be.call(this,n,e)})),E(e,t)};Z(i,e=>{x(S)&&e(a)}),o(t),K(()=>r.disabled=x(d)),O(`click`,r,I(e=>{e.stopPropagation(),L(S,!x(S))})),E(e,t)};Z(z,e=>{x(i)===2&&e(se)});var B=P(z,2),ce=e=>{var t=nb();let n;var r=M(t),i=M(r),a=e=>{var t=eb();E(e,t)},s=e=>{var t=tb();E(e,t)};Z(i,e=>{x(b)?e(a):e(s,-1)}),o(r),o(t),K(()=>{n=v(t,1,`lock-button svelte-zpm8xr`,null,n,{locked:x(b)}),X(t,`title`,x(b)?`Unlock components`:`Lock components`),t.disabled=x(d)}),O(`click`,t,e=>{e.stopPropagation(),L(b,!x(b)),p().params&&p(p().params.locked=x(b),!0)}),E(e,t)};Z(B,e=>{x(i)>1&&e(ce)}),o(ae),o(ie),E(t,ie),Ee()}var ab=w(null),ob=u(`<div class="input-row svelte-1hwwwsb"><label class="svelte-1hwwwsb">H</label> <input type="number" min="0" max="360" class="number-input-small svelte-1hwwwsb"/> <input aria-label="Hue" type="range" min="0" max="360" step="1" class="slider-input svelte-1hwwwsb"/></div> <div class="input-row svelte-1hwwwsb"><label class="svelte-1hwwwsb">S</label> <input type="number" min="0" max="100" class="number-input-small svelte-1hwwwsb"/> <input aria-label="Saturation" type="range" min="0" max="100" step="1" class="slider-input svelte-1hwwwsb"/></div> <div class="input-row svelte-1hwwwsb"><label class="svelte-1hwwwsb">V</label> <input type="number" min="0" max="100" class="number-input-small svelte-1hwwwsb"/> <input aria-label="Value" type="range" min="0" max="100" step="1" class="slider-input svelte-1hwwwsb"/></div>`,1),sb=u(`<div class="input-row svelte-1hwwwsb"><label class="svelte-1hwwwsb">R</label> <input type="number" min="0" max="255" class="number-input-small svelte-1hwwwsb"/> <input aria-label="Red" type="range" min="0" max="255" step="1" class="slider-input svelte-1hwwwsb"/></div> <div class="input-row svelte-1hwwwsb"><label class="svelte-1hwwwsb">G</label> <input type="number" min="0" max="255" class="number-input-small svelte-1hwwwsb"/> <input aria-label="Green" type="range" min="0" max="255" step="1" class="slider-input svelte-1hwwwsb"/></div> <div class="input-row svelte-1hwwwsb"><label class="svelte-1hwwwsb">B</label> <input type="number" min="0" max="255" class="number-input-small svelte-1hwwwsb"/> <input aria-label="Blue" type="range" min="0" max="255" step="1" class="slider-input svelte-1hwwwsb"/></div>`,1),cb=u(`<button class="palette-swatch svelte-1hwwwsb"></button>`),lb=u(`<div class="picker-popover svelte-1hwwwsb" role="dialog" aria-label="Color picker" tabindex="-1"><div class="picker-header svelte-1hwwwsb"><button>HSV</button> <button>RGB</button></div> <div class="picker-content svelte-1hwwwsb"><div class="wheel-section svelte-1hwwwsb"><canvas class="color-wheel svelte-1hwwwsb"></canvas></div> <div class="inputs-section svelte-1hwwwsb"><!> <div class="input-row svelte-1hwwwsb"><label class="svelte-1hwwwsb">Hex</label> <input type="text" class="hex-input svelte-1hwwwsb"/></div></div> <div class="palette-section svelte-1hwwwsb"><div class="color-history svelte-1hwwwsb"><button class="history-swatch svelte-1hwwwsb" title="Swap with previous"></button> <button class="history-swatch svelte-1hwwwsb" aria-label="Current color"></button></div> <div class="palette-grid svelte-1hwwwsb"></div></div></div></div>`),ub=u(`<div class="color-picker-container svelte-1hwwwsb"><button class="color-swatch svelte-1hwwwsb" aria-label="Choose color"></button> <!></div>`);function db(e,t){ee(t,!1);let n=V(t,`prop`,8),i=V(t,`id`,8),s=V(t,`onValueChange`,8),c=Y(!1),l=null,u=Y(),d=Y(),p=Y(null),m=null,g=null,_=-1,y=null,b=Y(210),S=Y(1),C=Y(.5),w=Y(0),T=Y(.25),D=Y(.5),k=Y(`#003F7F`),ne=Y(`#000000`),j=Y(`hsv`),N=[[`#FF0000`,`#FF2000`,`#FF4000`,`#FF6000`,`#FF8000`,`#FFA000`,`#FFC000`,`#FFE000`,`#FFFF00`,`#E0FF00`,`#C0FF00`,`#A0FF00`,`#80FF00`,`#60FF00`,`#40FF00`,`#20FF00`],[`#00FF00`,`#00FF20`,`#00FF40`,`#00FF60`,`#00FF80`,`#00FFA0`,`#00FFC0`,`#00FFE0`,`#00FFFF`,`#00E0FF`,`#00C0FF`,`#00A0FF`,`#0080FF`,`#0060FF`,`#0040FF`,`#0020FF`],[`#0000FF`,`#2000FF`,`#4000FF`,`#6000FF`,`#8000FF`,`#A000FF`,`#C000FF`,`#E000FF`,`#FF00FF`,`#FF00E0`,`#FF00C0`,`#FF00A0`,`#FF0080`,`#FF0060`,`#FF0040`,`#FF0020`],[`#000000`,`#111111`,`#222222`,`#333333`,`#444444`,`#555555`,`#666666`,`#777777`,`#888888`,`#999999`,`#AAAAAA`,`#BBBBBB`,`#CCCCCC`,`#DDDDDD`,`#EEEEEE`,`#FFFFFF`]];function ie(e,t,n){let r=Math.max(e,t,n),i=r-Math.min(e,t,n),a=0;i!==0&&(a=r===e?(t-n)/i%6:r===t?(n-e)/i+2:(e-t)/i+4),a=Math.round(a*60),a<0&&(a+=360);let o=r===0?0:i/r;return{h:a,s:o,v:r}}function ae(e,t,n){let r=n*t,i=r*(1-Math.abs(e/60%2-1)),a=n-r,o=0,s=0,c=0;return e<60?(o=r,s=i,c=0):e<120?(o=i,s=r,c=0):e<180?(o=0,s=r,c=i):e<240?(o=0,s=i,c=r):e<300?(o=i,s=0,c=r):(o=r,s=0,c=i),{r:o+a,g:s+a,b:c+a}}function oe(e,t,n){let r=e=>{let t=Math.round(e*255).toString(16);return t.length===1?`0`+t:t};return`#${r(e)}${r(t)}${r(n)}`.toUpperCase()}function R(e){let t=ll(e);L(k,dl(t).toUpperCase()),L(w,t.r),L(T,t.g),L(D,t.b);let n=ie(x(w),x(T),x(D));L(b,n.h),L(S,n.s),L(C,n.v),x(p)&&x(d)&&H()}function z(){let e=ae(x(b),x(S),x(C));L(w,e.r),L(T,e.g),L(D,e.b),L(k,oe(x(w),x(T),x(D)));let t={r:x(w),g:x(T),b:x(D),a:1};s()(t),requestAnimationFrame(()=>{x(p)&&x(d)&&H()})}function se(){L(k,oe(x(w),x(T),x(D)));let e=ie(x(w),x(T),x(D));L(b,e.h),L(S,e.s),L(C,e.v);let t={r:x(w),g:x(T),b:x(D),a:1};s()(t),requestAnimationFrame(()=>{x(p)&&x(d)&&H()})}function B(e){let t=document.createElement(`canvas`);t.width=e,t.height=e;let n=t.getContext(`2d`),r=e/2,i=r-2,a=i-9,o=n.createImageData(e,e),s=o.data;for(let t=0;t<e;t++)for(let n=0;n<e;n++){let o=n-r,c=t-r,l=Math.sqrt(o*o+c*c);if(l<=i&&l>a){let r=ae((Math.atan2(c,o)*180/Math.PI+90+360)%360,1,1),i=(t*e+n)*4;s[i]=Math.round(r.r*255),s[i+1]=Math.round(r.g*255),s[i+2]=Math.round(r.b*255),s[i+3]=255}}return n.putImageData(o,0,0),t}function ce(e,t,n){let r=document.createElement(`canvas`);r.width=e,r.height=e;let i=r.getContext(`2d`),a=e/2,o=a-2-9,s=i.createImageData(e,e),c=s.data;for(let r=0;r<e;r++)for(let i=0;i<e;i++){let s=i-a,l=r-a,u=Math.sqrt(s*s+l*l);if(u<=o){let a=(Math.atan2(l,s)*180/Math.PI+90+360)%360,d=(r*e+i)*4;if(n===`rgb`){let e=a/360,t=0,n=0,r=0;if(e<1/3){let i=e*3;t=1-i,n=i,r=0}else if(e<2/3){let i=(e-1/3)*3;t=0,n=1-i,r=i}else{let i=(e-2/3)*3;t=i,n=0,r=1-i}let i=u/o,s=1-i;t*=s,n*=s,r=r*s+i;let l=u/o;t=t*l+(1-l),n=n*l+(1-l),r=r*l+(1-l),c[d]=Math.round(t*255),c[d+1]=Math.round(n*255),c[d+2]=Math.round(r*255),c[d+3]=255}else{let e=ae(a,u/o,t);c[d]=Math.round(e.r*255),c[d+1]=Math.round(e.g*255),c[d+2]=Math.round(e.b*255),c[d+3]=255}}}return i.putImageData(s,0,0),r}function le(e,t){let n=t/2,r=n-2,i=r-9;if(x(j)===`rgb`){let t=(Math.atan2(x(T)-x(w),x(w)-x(D))*180/Math.PI+90+360)%360,a=n+Math.cos((t-90)*Math.PI/180)*(r-4.5),o=n+Math.sin((t-90)*Math.PI/180)*(r-4.5);e.strokeStyle=`#fff`,e.lineWidth=2,e.beginPath(),e.arc(a,o,4,0,Math.PI*2),e.stroke(),e.strokeStyle=`#000`,e.lineWidth=1,e.beginPath(),e.arc(a,o,5,0,Math.PI*2),e.stroke();let s=Math.sqrt(x(w)*x(w)+x(T)*x(T)+x(D)*x(D))/Math.sqrt(3),c=n+Math.cos((t-90)*Math.PI/180)*(s*i),l=n+Math.sin((t-90)*Math.PI/180)*(s*i);e.strokeStyle=`#fff`,e.lineWidth=2,e.beginPath(),e.arc(c,l,6,0,Math.PI*2),e.stroke(),e.strokeStyle=`#000`,e.lineWidth=1,e.beginPath(),e.arc(c,l,7,0,Math.PI*2),e.stroke()}else{let t=n+Math.cos((x(b)-90)*Math.PI/180)*(r-4.5),a=n+Math.sin((x(b)-90)*Math.PI/180)*(r-4.5);e.strokeStyle=`#fff`,e.lineWidth=2,e.beginPath(),e.arc(t,a,4,0,Math.PI*2),e.stroke(),e.strokeStyle=`#000`,e.lineWidth=1,e.beginPath(),e.arc(t,a,5,0,Math.PI*2),e.stroke();let o=n+Math.cos((x(b)-90)*Math.PI/180)*(x(S)*i),s=n+Math.sin((x(b)-90)*Math.PI/180)*(x(S)*i);e.strokeStyle=`#fff`,e.lineWidth=2,e.beginPath(),e.arc(o,s,6,0,Math.PI*2),e.stroke(),e.strokeStyle=`#000`,e.lineWidth=1,e.beginPath(),e.arc(o,s,7,0,Math.PI*2),e.stroke()}}function H(){if(!x(p)||!x(d))return;let e=x(d).width;(!m||m.width!==e)&&(m=B(e)),(!g||g.width!==e||_!==x(C)||y!==x(j))&&(g=ce(e,x(C),x(j)),_=x(C),y=x(j)),x(p).clearRect(0,0,e,e),x(p).drawImage(g,0,0),x(p).drawImage(m,0,0),le(x(p),e)}function U(e){if(e.stopPropagation(),!x(d))return;let t=x(d).getBoundingClientRect(),n=x(d).width/t.width,r=x(d).height/t.height,i=(e.clientX-t.left)*n,a=(e.clientY-t.top)*r,o=x(d).width/2,s=i-o,c=a-o,l=Math.sqrt(s*s+c*c),u=o-2,f=u-9,p=(Math.atan2(c,s)*180/Math.PI+90+360)%360;if(x(j)===`rgb`){if(l<=u&&l>f){let e=p/360,t=0,n=0,r=0;if(e<1/3){let i=e*3;t=1-i,n=i,r=0}else if(e<2/3){let i=(e-1/3)*3;t=0,n=1-i,r=i}else{let i=(e-2/3)*3;t=i,n=0,r=1-i}L(w,t),L(T,n),L(D,r),se()}else if(l<=f){let e=p/360,t=0,n=0,r=0;if(e<1/3){let i=e*3;t=1-i,n=i,r=0}else if(e<2/3){let i=(e-1/3)*3;t=0,n=1-i,r=i}else{let i=(e-2/3)*3;t=i,n=0,r=1-i}let i=l/f,a=1-i;t*=a,n*=a,r=r*a+i;let o=l/f;t=t*o+(1-o),n=n*o+(1-o),r=r*o+(1-o),L(w,Math.max(0,Math.min(1,t))),L(T,Math.max(0,Math.min(1,n))),L(D,Math.max(0,Math.min(1,r))),se()}}else l<=u&&l>f?(L(b,p),z()):l<=f&&(L(b,p),L(S,Math.min(1,l/f)),z())}function de(e,t){let n=parseFloat(t.target.value)/255;e===`r`&&L(w,Math.max(0,Math.min(1,n))),e===`g`&&L(T,Math.max(0,Math.min(1,n))),e===`b`&&L(D,Math.max(0,Math.min(1,n))),se()}function fe(e,t){let n=parseFloat(t.target.value);e===`h`&&L(b,Math.max(0,Math.min(360,n))),e===`s`&&L(S,Math.max(0,Math.min(1,n/100))),e===`v`&&L(C,Math.max(0,Math.min(1,n/100))),z()}function pe(e){let t=e.target.value;if(/^#([0-9A-F]{3}|[0-9A-F]{6})$/i.test(t)){let e=ll(t);R(e),s()(e)}}function me(e){L(ne,x(k));let t=ll(e);R(t),s()(t)}function W(){let e=x(ne);L(ne,x(k));let t=ll(e);R(t),s()(t)}function _e(e){x(u)&&!x(u).contains(e.target)&&(L(c,!1),ab.set(null))}ye(()=>(n().value&&R(n().value),l=ab.subscribe(e=>{e!==i()&&x(c)&&L(c,!1)}),setTimeout(()=>{x(d)&&(L(p,x(d).getContext(`2d`)),x(p)&&H())},0),document.addEventListener(`click`,_e),()=>{l&&l(),document.removeEventListener(`click`,_e)}));let ve=Y(null);J(()=>(x(c),x(d),x(ve),x(p)),()=>{x(c)&&x(d)&&(x(ve)&&clearTimeout(x(ve)),x(p)||L(p,x(d).getContext(`2d`)),x(p)&&L(ve,setTimeout(()=>{x(d)&&x(p)&&H()},50)))}),J(()=>(A(n()),x(k)),()=>{if(n().value){let e=ll(n().value);dl(e)!==x(k)&&R(e)}}),J(()=>(x(j),x(p),x(d)),()=>{x(j)&&x(p)&&x(d)&&H()}),he(),ue();var q=ub(),xe=M(q),Se=P(xe,2),Ce=e=>{var n=lb(),s=M(n),c=M(s);let l;var m=P(c,2);let g;o(s);var _=P(s,2),y=M(_),ee=M(y);X(ee,`width`,180),X(ee,`height`,180),ge(ee,e=>L(d,e),()=>x(d)),o(y);var A=P(y,2),ie=M(A),ae=e=>{var t=ob(),n=G(t),a=M(n),s=P(a,2);re(s);var c=P(s,2);re(c),o(n);var l=P(n,2),u=M(l),d=P(u,2);re(d);var f=P(d,2);re(f),o(l);var p=P(l,2),m=M(p),h=P(m,2);re(h);var g=P(h,2);re(g),o(p),K((e,t,n,o,l,p)=>{X(a,`for`,`${i()}-h`),X(s,`id`,`${i()}-h`),r(s,e),r(c,t),X(u,`for`,`${i()}-s`),X(d,`id`,`${i()}-s`),r(d,n),r(f,o),X(m,`for`,`${i()}-v`),X(h,`id`,`${i()}-v`),r(h,l),r(g,p)},[()=>(x(b),F(()=>Math.round(x(b)))),()=>(x(b),F(()=>Math.round(x(b)))),()=>(x(S),F(()=>Math.round(x(S)*100))),()=>(x(S),F(()=>Math.round(x(S)*100))),()=>(x(C),F(()=>Math.round(x(C)*100))),()=>(x(C),F(()=>Math.round(x(C)*100)))]),O(`input`,s,e=>fe(`h`,e)),O(`input`,c,e=>fe(`h`,e)),O(`input`,d,e=>fe(`s`,e)),O(`input`,f,e=>fe(`s`,e)),O(`input`,h,e=>fe(`v`,e)),O(`input`,g,e=>fe(`v`,e)),E(e,t)},oe=e=>{var t=sb(),n=G(t),a=M(n),s=P(a,2);re(s);var c=P(s,2);re(c),o(n);var l=P(n,2),u=M(l),d=P(u,2);re(d);var f=P(d,2);re(f),o(l);var p=P(l,2),m=M(p),h=P(m,2);re(h);var g=P(h,2);re(g),o(p),K((e,t,n,o,l,p)=>{X(a,`for`,`${i()}-r`),X(s,`id`,`${i()}-r`),r(s,e),r(c,t),X(u,`for`,`${i()}-g`),X(d,`id`,`${i()}-g`),r(d,n),r(f,o),X(m,`for`,`${i()}-b`),X(h,`id`,`${i()}-b`),r(h,l),r(g,p)},[()=>(x(w),F(()=>Math.round(x(w)*255))),()=>(x(w),F(()=>Math.round(x(w)*255))),()=>(x(T),F(()=>Math.round(x(T)*255))),()=>(x(T),F(()=>Math.round(x(T)*255))),()=>(x(D),F(()=>Math.round(x(D)*255))),()=>(x(D),F(()=>Math.round(x(D)*255)))]),O(`input`,s,e=>de(`r`,e)),O(`input`,c,e=>de(`r`,e)),O(`input`,d,e=>de(`g`,e)),O(`input`,f,e=>de(`g`,e)),O(`input`,h,e=>de(`b`,e)),O(`input`,g,e=>de(`b`,e)),E(e,t)};Z(ie,e=>{x(j)===`hsv`?e(ae):e(oe,-1)});var R=P(ie,2),z=M(R),se=P(z,2);re(se),o(R),o(A);var B=P(A,2),V=M(B),ce=M(V),le=P(ce,2);o(V);var ue=P(V,2);f(ue,5,()=>N,h,(e,t)=>{var n=te(),r=G(n);f(r,1,()=>x(t),h,(e,t)=>{var n=cb();K(()=>{a(n,`background-color: ${x(t)??``};`),X(n,`aria-label`,`Choose ${x(t)}`)}),O(`click`,n,()=>me(x(t))),E(e,n)}),E(e,n)}),o(ue),o(B),o(_),o(n),ge(n,e=>L(u,e),()=>x(u)),K(()=>{l=v(c,1,`mode-button svelte-1hwwwsb`,null,l,{active:x(j)===`hsv`}),g=v(m,1,`mode-button svelte-1hwwwsb`,null,g,{active:x(j)===`rgb`}),X(z,`for`,`${i()}-hex`),X(se,`id`,`${i()}-hex`),r(se,x(k)),a(ce,`background-color: ${x(ne)??``};`),a(le,`background-color: ${x(k)??``};`)}),O(`click`,c,()=>{L(j,`hsv`),x(p)&&x(d)&&H()}),O(`click`,m,()=>{L(j,`rgb`),x(p)&&x(d)&&H()}),O(`click`,ee,I(U)),O(`mousedown`,ee,I(e=>{U(e)})),O(`mousemove`,ee,I(e=>{e.buttons===1&&U(e)})),O(`input`,se,pe),O(`click`,ce,W),O(`click`,n,I(function(e){be.call(this,t,e)})),O(`keydown`,n,I(function(e){be.call(this,t,e)})),E(e,n)};Z(Se,e=>{x(c)&&e(Ce)}),o(q),K((e,t)=>{a(xe,`background-color: ${e??``};`),xe.disabled=t},[()=>(A(ul),x(w),x(T),x(D),F(()=>ul({r:x(w),g:x(T),b:x(D),a:1}))),()=>(A(n()),F(()=>typeof n().disabled==`function`?n().disabled():n().disabled))]),O(`click`,xe,I(()=>{x(c)?(L(c,!1),ab.set(null)):(ab.set(i()),L(c,!0),x(d)&&!x(p)&&L(p,x(d).getContext(`2d`)))})),E(e,q),Ee()}var fb=u(`<button class="clear-button svelte-1lbwdc6" title="Clear file">×</button>`),pb=u(`<div class="file-info svelte-1lbwdc6"><span class="file-name svelte-1lbwdc6"> </span></div>`),mb=u(`<div class="preview-container svelte-1lbwdc6"><img alt="Preview" class="preview-image svelte-1lbwdc6"/></div>`),hb=u(`<div class="preview-container svelte-1lbwdc6"><video class="preview-video svelte-1lbwdc6" controls=""></video></div>`,2),gb=u(`<span class="drop-hint svelte-1lbwdc6">Drop file here</span>`),_b=u(`<div class="file-input-container svelte-1lbwdc6"><div class="file-controls svelte-1lbwdc6"><input type="file" style="display: none;"/> <button class="file-button svelte-1lbwdc6">Choose File</button> <!></div> <!> <!> <div role="region" aria-label="File drop zone"><!></div></div>`);function vb(e,t){ee(t,!1);let n=Y(),r=Y(),i=Y(),a=V(t,`prop`,8),s=V(t,`id`,8),c=V(t,`onValueChange`,8),l=Y(),u=Y(null),d=Y(`none`);function f(e){let t=e.target.files?.[0];t&&((t.type.startsWith(`image/`)||t.type.startsWith(`video/`))&&(L(u,URL.createObjectURL(t)),L(d,t.type.startsWith(`image/`)?`image`:`video`)),c()(t.name))}function p(){x(u)&&x(u).startsWith(`blob:`)&&URL.revokeObjectURL(x(u)),L(u,null),L(d,`none`),c()(``),x(l)&&oe(l,x(l).value=``)}function m(e){e.preventDefault();let t=e.dataTransfer?.files[0];t&&((t.type.startsWith(`image/`)||t.type.startsWith(`video/`))&&(L(u,URL.createObjectURL(t)),L(d,t.type.startsWith(`image/`)?`image`:`video`)),c()(t.name))}function h(e){e.preventDefault()}J(()=>A(a()),()=>{L(n,typeof a().value==`string`?a().value:``)}),J(()=>A(a()),()=>{L(r,a().params?.accept||`*/*`)}),J(()=>A(a()),()=>{L(i,typeof a().disabled==`function`?a().disabled():a().disabled)}),J(()=>x(n),()=>{if(x(n)){let e=/\.(jpg|jpeg|png|gif|webp|svg)$/i.test(x(n))||x(n).startsWith(`data:image/`),t=/\.(mp4|webm|mov)$/i.test(x(n))||x(n).startsWith(`data:video/`);e?(L(d,`image`),L(u,(x(n).startsWith(`data:`)||x(n).startsWith(`http`),x(n)))):t?(L(d,`video`),L(u,(x(n).startsWith(`data:`)||x(n).startsWith(`http`),x(n)))):(L(d,`none`),L(u,null))}else L(d,`none`),L(u,null)}),he(),ue();var g=_b(),_=M(g),y=M(_);ge(y,e=>L(l,e),()=>x(l));var b=P(y,2),S=P(b,2),C=e=>{var t=fb();K(()=>t.disabled=x(i)),O(`click`,t,p),E(e,t)};Z(S,e=>{x(n)&&e(C)}),o(_);var w=P(_,2),T=e=>{var t=pb(),r=M(t),i=q(r,!0);o(t),K(()=>{X(r,`title`,x(n)),D(i,x(n))}),E(e,t)};Z(w,e=>{x(n)&&e(T)});var te=P(w,2),k=e=>{var t=mb(),n=q(t);K(()=>X(n,`src`,x(u))),E(e,t)},ne=e=>{var t=hb(),n=q(t);K(()=>X(n,`src`,x(u))),E(e,t)};Z(te,e=>{x(d)===`image`&&x(u)?e(k):x(d)===`video`&&x(u)&&e(ne,1)});var j=P(te,2);let re;var N=M(j),ie=e=>{var t=gb();E(e,t)};Z(N,e=>{x(n)||e(ie)}),o(j),o(g),K(()=>{X(y,`id`,s()),X(y,`accept`,x(r)),y.disabled=x(i),b.disabled=x(i),re=v(j,1,`drop-zone svelte-1lbwdc6`,null,re,{"has-preview":x(d)!==`none`})}),O(`change`,y,f),O(`click`,b,()=>x(l)?.click()),O(`drop`,j,m),O(`dragover`,j,h),E(e,g),Ee()}var yb=u(`<div class="search-box svelte-bczi6w"><input type="text" class="search-input svelte-bczi6w" placeholder="Search..."/></div>`),bb=u(`<div class="option-group-header svelte-bczi6w"> </div>`),xb=u(`<button> </button>`),Sb=u(`<!> <!>`,1),Cb=u(`<div class="no-results svelte-bczi6w">No results</div>`),wb=u(`<div class="dropdown-menu svelte-bczi6w"><!> <div class="options-list svelte-bczi6w"><!> <!></div></div>`),Tb=u(`<div class="select-input-container svelte-bczi6w"><button><span class="select-value svelte-bczi6w"></span> <svg class="dropdown-icon svelte-bczi6w" width="12" height="12" viewBox="0 0 12 12" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M3 4.5L6 7.5L9 4.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></button> <!></div>`);function Eb(e,t){ee(t,!1);let n=Y(),r=Y(),i=Y(),a=Y(),s=Y(),l=Y(),u=V(t,`prop`,8),d=V(t,`id`,8,void 0),p=V(t,`onValueChange`,8),m=Y(!1),g=Y(``),_=Y();function y(e){let t=typeof e==`object`&&`value`in e?e.value:e;p()(t),L(m,!1),L(g,``)}function b(e){x(_)&&!x(_).contains(e.target)&&(L(m,!1),L(g,``))}function S(e){e.key===`Escape`&&(L(m,!1),L(g,``))}J(()=>A(u()),()=>{L(n,u().value)}),J(()=>A(u()),()=>{L(r,u().params?.options||[])}),J(()=>A(u()),()=>{L(i,typeof u().disabled==`function`?u().disabled():u().disabled)}),J(()=>(x(g),x(r)),()=>{L(a,x(g)?x(r).filter(e=>(typeof e==`object`&&`label`in e?e.label:String(e)).toLowerCase().includes(x(g).toLowerCase())):x(r))}),J(()=>x(a),()=>{L(s,(()=>{let e=new Map,t=[];for(let n of x(a))typeof n==`object`&&`group`in n&&n.group?(e.has(n.group)||e.set(n.group,[]),e.get(n.group).push(n)):t.push(n);let n=Array.from(e.entries()).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>({group:e,options:t.sort((e,t)=>{let n=typeof e==`object`&&`label`in e?e.label:String(e),r=typeof t==`object`&&`label`in t?t.label:String(t);return n.localeCompare(r)})}));return t.length>0&&n.push({group:``,options:t}),n})())}),J(()=>x(s),()=>{L(l,x(s).some(e=>e.group!==``))}),he(),ue();var C=Tb();O(`click`,ce,b),O(`keydown`,ce,S);var w=M(C);let T;var k=M(w);f(k,5,()=>x(r),h,(e,t)=>{let r=pe(()=>(x(t),F(()=>typeof x(t)==`object`&&`value`in x(t)?x(t).value:x(t)))),i=pe(()=>(x(t),F(()=>typeof x(t)==`object`&&`label`in x(t)?x(t).label:String(x(t)))));var a=te(),o=G(a),s=e=>{var t=ve();K(()=>D(t,x(i))),E(e,t)},c=B(()=>(A(x(r)),x(n),F(()=>String(x(r))===String(x(n)))));Z(o,e=>{x(c)&&e(s)}),E(e,a)}),o(k),c(2),o(w);var ne=P(w,2),j=e=>{var i=wb(),c=M(i),u=e=>{var n=yb(),r=M(n);re(r),o(n),Ce(r,()=>x(g),e=>L(g,e)),O(`click`,r,I(function(e){be.call(this,t,e)})),E(e,n)};Z(c,e=>{x(r),F(()=>x(r).length>5)&&e(u)});var d=P(c,2),p=M(d),m=e=>{var t=te(),r=G(t);f(r,1,()=>x(s),h,(e,t)=>{let r=()=>x(t).group,i=()=>x(t).options;var a=Sb(),o=G(a),s=e=>{var t=bb(),n=q(t,!0);K(()=>D(n,r())),E(e,t)};Z(o,e=>{r()&&e(s)});var c=P(o,2);f(c,1,i,h,(e,t)=>{let i=pe(()=>(x(t),F(()=>typeof x(t)==`object`&&`value`in x(t)?x(t).value:x(t)))),a=pe(()=>(x(t),F(()=>typeof x(t)==`object`&&`label`in x(t)?x(t).label:String(x(t))))),o=pe(()=>(x(t),F(()=>typeof x(t)==`object`&&`disabled`in x(t)&&x(t).disabled)));var s=xb();let c;var l=q(s,!0);K(e=>{c=v(s,1,`option-item svelte-bczi6w`,null,c,{selected:e,grouped:!!r()}),s.disabled=x(o),D(l,x(a))},[()=>String(x(i))===String(x(n))]),O(`click`,s,()=>y(x(t))),E(e,s)}),E(e,a)}),E(e,t)},_=e=>{var t=te(),r=G(t);f(r,1,()=>x(a),h,(e,t)=>{let r=pe(()=>(x(t),F(()=>typeof x(t)==`object`&&`value`in x(t)?x(t).value:x(t)))),i=pe(()=>(x(t),F(()=>typeof x(t)==`object`&&`label`in x(t)?x(t).label:String(x(t))))),a=pe(()=>(x(t),F(()=>typeof x(t)==`object`&&`disabled`in x(t)&&x(t).disabled)));var o=xb();let s;var c=q(o,!0);K(e=>{s=v(o,1,`option-item svelte-bczi6w`,null,s,{selected:e}),o.disabled=x(a),D(c,x(i))},[()=>String(x(r))===String(x(n))]),O(`click`,o,()=>y(x(t))),E(e,o)}),E(e,t)};Z(p,e=>{x(l)?e(m):e(_,-1)});var b=P(p,2),S=e=>{var t=Cb();E(e,t)};Z(b,e=>{x(a),F(()=>x(a).length===0)&&e(S)}),o(d),o(i),E(e,i)};Z(ne,e=>{x(m),x(r),F(()=>x(m)&&x(r).length>0)&&e(j)}),o(C),ge(C,e=>L(_,e),()=>x(_)),K(()=>{X(w,`id`,d()),T=v(w,1,`select-button svelte-bczi6w`,null,T,{open:x(m)}),w.disabled=x(i)}),O(`click`,w,()=>{x(i)||(L(m,!x(m)),x(m)&&L(g,``))}),E(e,C),Ee()}var Db=u(`<span class="loading-spinner svelte-17d1c14"></span>`),Ob=u(`<span> </span>`),kb=u(`<!> <!>`,1),Ab=u(`<button><!></button>`);function jb(e,t){ee(t,!1);let n=Y(),r=Y(),i=Y(),a=Y(),s=Y(),c=V(t,`prop`,8),l=V(t,`id`,8),u=V(t,`onValueChange`,8),d=Y(!1);async function f(){L(d,!0);try{u()(!0)}catch(e){console.error(`[ButtonInput] Error:`,e)}finally{L(d,!1)}}J(()=>A(c()),()=>{L(n,typeof c().disabled==`function`?c().disabled():c().disabled)}),J(()=>A(c()),()=>{L(r,typeof c().value==`string`?c().value:c().displayName||`Execute`)}),J(()=>A(c()),()=>{L(i,c().params?.small??!1)}),J(()=>A(c()),()=>{L(a,c().params?.icon)}),J(()=>A(c()),()=>{L(s,c().params?.tooltip)}),he(),ue();var p=Ab();let m;var h=M(p),g=e=>{var t=Db();E(e,t)},_=e=>{var t=kb(),n=G(t);{let e=pe(()=>x(i)?14:16);zc(n,{get name(){return x(a)},get size(){return x(e)}})}var o=P(n,2),s=e=>{var t=Ob(),n=q(t,!0);K(()=>D(n,x(r))),E(e,t)};Z(o,e=>{x(r),A(c()),F(()=>x(r)&&!c().params?.iconOnly)&&e(s)}),E(e,t)},y=e=>{var t=Ob(),n=q(t,!0);K(()=>D(n,x(r))),E(e,t)};Z(h,e=>{x(d)?e(g):x(a)?e(_,1):e(y,-1)}),o(p),K(()=>{X(p,`id`,l()),m=v(p,1,`button-input svelte-17d1c14`,null,m,{small:x(i),"icon-only":x(a)&&!x(r)}),p.disabled=x(n)||x(d),X(p,`title`,x(s))}),O(`click`,p,f),E(e,p),Ee()}var Mb=u(`<label class="checkbox-label svelte-16zsb4p"><input type="checkbox" class="checkbox-input svelte-16zsb4p"/> <span class="checkbox-slider svelte-16zsb4p"></span> <span class="checkbox-text svelte-16zsb4p"> </span></label>`);function Nb(e,t){ee(t,!1);let n=Y(),r=Y(),i=V(t,`prop`,8),a=V(t,`id`,8),s=V(t,`onValueChange`,8);function c(e){let t=e.target.checked;s()(t)}J(()=>A(i()),()=>{L(n,i().value===!0)}),J(()=>A(i()),()=>{L(r,typeof i().disabled==`function`?i().disabled():i().disabled)}),he(),ue();var l=Mb(),u=M(l);re(u);var d=P(u,4),f=q(d,!0);o(l),K(()=>{X(u,`id`,a()),C(u,x(n)),u.disabled=x(r),D(f,x(n)?`On`:`Off`)}),O(`change`,u,c),E(e,l),Ee()}var Pb=u(`<div class="folder-content svelte-1spr549"><!></div>`),Fb=u(`<div class="folder-group svelte-1spr549"><button class="folder-header svelte-1spr549"><svg width="10" height="10" viewBox="0 0 10 10" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M2 3L5 1L8 3" stroke-linecap="round" stroke-linejoin="round"></path></svg> <span class="folder-name svelte-1spr549"> </span></button> <!></div>`);function Ib(e,t){ee(t,!1);let n=V(t,`folderName`,8),r=V(t,`isExpanded`,8,!0),i=xe();function a(){i(`toggle`)}ue();var s=Fb(),c=M(s),l=M(c);let u;var d=P(l,2),f=q(d,!0);o(c);var p=P(c,2),m=e=>{var n=Pb(),r=M(n);b(r,t,`default`,{},null),o(n),E(e,n)};Z(p,e=>{r()&&e(m)}),o(s),K(()=>{u=v(l,0,`folder-icon svelte-1spr549`,null,u,{expanded:r()}),D(f,n())}),O(`click`,c,a),E(e,s),Ee()}var Lb=u(`<button type="button" class="color-swatch svelte-kla7jy"><div class="swatch-color svelte-kla7jy"></div></button>`),Rb=u(`<div class="ramp-handle svelte-kla7jy" role="slider" tabindex="0" aria-label="Color stop position" aria-valuemin="0" aria-valuemax="1"></div>`),zb=u(`<option> </option>`),Bb=u(`<div class="table-row svelte-kla7jy"><input type="number" class="position-input svelte-kla7jy" min="0" max="1" step="0.001"/> <button type="button" class="color-cell svelte-kla7jy"></button> <select class="interpolation-select svelte-kla7jy"></select> <div class="table-row-actions svelte-kla7jy"><button class="icon-button svelte-kla7jy" title="Add Point">+</button> <button class="icon-button delete-button svelte-kla7jy" title="Delete Point">×</button></div></div>`),Vb=u(`<div class="color-picker-overlay svelte-kla7jy"><div class="color-picker-container svelte-kla7jy" role="dialog" aria-modal="true" aria-label="Edit color stop"><!></div></div>`),Hb=u(`<div class="color-ramp-editor svelte-kla7jy"><div class="ramp-header svelte-kla7jy"><span class="ramp-label svelte-kla7jy"> </span> <label class="auto-update-label svelte-kla7jy"><input type="checkbox"/> Auto-update</label></div> <div class="ramp-visualization svelte-kla7jy"><canvas class="ramp-canvas svelte-kla7jy"></canvas> <div class="color-swatches svelte-kla7jy"></div> <div class="ramp-handles svelte-kla7jy"></div></div> <div class="ramp-points-table svelte-kla7jy"><div class="table-header svelte-kla7jy"><span>Position</span> <span>Color</span> <span>Interp.</span> <span class="table-actions svelte-kla7jy"><button class="icon-button svelte-kla7jy" title="Add Point">+</button></span></div> <!></div> <!></div>`);function Ub(e,t){ee(t,!1);let n=V(t,`prop`,8),i=V(t,`id`,8),l=V(t,`onValueChange`,8),u=Y([]),d=Y(!0),p=Y(),m=null,g=Y(null),_=Y(0),v=Y(null),y=Y(!1);function b(e){x(y)&&e.key===`Escape`&&L(y,!1)}let S=[{value:`linear`,label:`Linear`},{value:`constant`,label:`Constant`},{value:`smooth`,label:`Smooth`}];function C(){Array.isArray(n().value)&&n().value.length>0?L(u,n().value.map(e=>({position:e.position,color:(e.color,ll(e.color)),interpolation:e.interpolation||`linear`})).sort((e,t)=>e.position-t.position)):L(u,[{position:0,color:{r:0,g:0,b:0},interpolation:`linear`},{position:1,color:{r:1,g:1,b:1},interpolation:`linear`}]),w()}function w(){if(!m||!x(p))return;let e=x(p).width,t=x(p).height;m.clearRect(0,0,e,t);let n=m.createLinearGradient(0,0,e,0),r=[...x(u)].sort((e,t)=>e.position-t.position);for(let e of r)n.addColorStop(e.position,ul(e.color));m.fillStyle=n,m.fillRect(0,0,e,t);for(let t=0;t<r.length;t++){let n=r[t],i=n.position*e;m.fillStyle=ul(n.color),m.fillRect(i-6,-14,12,12),m.strokeStyle=`#ffffff`,m.lineWidth=1,m.strokeRect(i-6,-14,12,12)}let i=t+2;for(let t=0;t<r.length;t++){let n=r[t].position*e;m.fillStyle=`#888888`,m.beginPath(),m.moveTo(n,i),m.lineTo(n-4,i+6),m.lineTo(n+4,i+6),m.closePath(),m.fill()}}function te(e){let t=x(p).getBoundingClientRect(),n=e-t.left;Math.max(0,Math.min(1,n/t.width));let r=[...x(u)].sort((e,t)=>e.position-t.position);for(let e=0;e<r.length;e++){let i=r[e],a=i.position*t.width;if(Math.abs(n-a)<10)return x(u).indexOf(i)}return null}function k(e){if(!x(p))return;let t=x(p).getBoundingClientRect(),n=e.clientX-t.left,r=Math.max(0,Math.min(1,n/t.width)),i=te(e.clientX);i===null?e.button===0&&N(r):(L(g,i),L(_,e.clientX))}function ne(e){if(x(g)!==null&&x(p)){let t=x(p).getBoundingClientRect(),n=e.clientX-t.left,r=Math.max(0,Math.min(1,n/t.width));oe(u,x(u)[x(g)].position=r),x(u).sort((e,t)=>e.position-t.position),w(),x(d)&&l()([...x(u)])}}function j(){x(g)!==null&&(L(g,null),x(d)||l()([...x(u)]))}function N(e){let t=[...x(u)].sort((e,t)=>e.position-t.position),n={r:.5,g:.5,b:.5};for(let r=0;r<t.length-1;r++)if(e>=t[r].position&&e<=t[r+1].position){let i=(e-t[r].position)/(t[r+1].position-t[r].position),a=t[r].color,o=t[r+1].color;n={r:a.r+(o.r-a.r)*i,g:a.g+(o.g-a.g)*i,b:a.b+(o.b-a.b)*i};break}x(u).push({position:e,color:n,interpolation:`linear`}),x(u).sort((e,t)=>e.position-t.position),w(),l()([...x(u)])}function ie(e){x(u).length<=2||(x(u).splice(e,1),w(),l()([...x(u)]))}function z(e,t){oe(u,x(u)[e].color=t),w(),l()([...x(u)])}function se(e,t){oe(u,x(u)[e].interpolation=t),w(),l()([...x(u)])}function B(e,t){oe(u,x(u)[e].position=Math.max(0,Math.min(1,t))),x(u).sort((e,t)=>e.position-t.position),w(),l()([...x(u)])}function le(e,t){let n=t.key===`ArrowLeft`?-.01:t.key===`ArrowRight`?.01:0;n&&(t.preventDefault(),B(e,x(u)[e].position+n))}ye(()=>(C(),x(p)&&(m=x(p).getContext(`2d`),oe(p,x(p).width=x(p).offsetWidth),oe(p,x(p).height=20),w()),window.addEventListener(`mousemove`,ne),window.addEventListener(`mouseup`,j),()=>{window.removeEventListener(`mousemove`,ne),window.removeEventListener(`mouseup`,j)})),J(()=>A(n()),()=>{n().value&&C()}),he(),ue();var H=Hb();O(`keydown`,ce,b);var U=M(H),de=M(U),fe=q(de,!0),me=P(de,2),W=M(me);re(W),c(),o(me),o(U);var G=P(U,2),_e=M(G);ge(_e,e=>L(p,e),()=>x(p));var ve=P(_e,2);f(ve,5,()=>(x(u),F(()=>x(u).sort((e,t)=>e.position-t.position))),h,(e,t)=>{let n=pe(()=>(x(u),x(t),F(()=>x(u).indexOf(x(t)))));var r=Lb(),i=q(r);K(e=>{a(r,`left: ${x(t),F(()=>x(t).position*100)??``}%`),X(r,`aria-label`,e),a(i,`background-color: ${x(t),F(()=>x(t).color)??``}`)},[()=>(x(t),F(()=>`Edit color stop at ${Math.round(x(t).position*100)}%`))]),O(`click`,r,()=>{L(v,x(n)),L(y,!0)}),E(e,r)}),o(ve);var be=P(ve,2);f(be,5,()=>(x(u),F(()=>x(u).sort((e,t)=>e.position-t.position))),h,(e,t)=>{let n=pe(()=>(x(u),x(t),F(()=>x(u).indexOf(x(t)))));var r=Rb();K(()=>{a(r,`left: ${x(t),F(()=>x(t).position*100)??``}%`),X(r,`aria-valuenow`,(x(t),F(()=>x(t).position)))}),O(`keydown`,r,e=>le(x(n),e)),O(`mousedown`,r,I(e=>{L(g,x(n)),L(_,e.clientX)})),E(e,r)}),o(be),o(G);var xe=P(G,2),Ce=M(xe),we=P(M(Ce),6),Te=q(we);o(Ce);var De=P(Ce,2);f(De,1,()=>(x(u),F(()=>x(u).sort((e,t)=>e.position-t.position))),h,(e,t)=>{let n=pe(()=>(x(u),x(t),F(()=>x(u).indexOf(x(t)))));var i=Bb(),c=M(i);re(c);var l=P(c,2),d=P(l,2);f(d,5,()=>S,h,(e,t)=>{var n=zb(),r=q(n,!0),i={};K(()=>{D(r,(x(t),F(()=>x(t).label))),i!==(i=(x(t),F(()=>x(t).value)))&&(n.value=(n.__value=i)??``)}),E(e,n)}),o(d);var p;T(d);var m=P(d,2),g=M(m),_=P(g,2);o(m),o(i),K((e,n)=>{r(c,e),a(l,`background-color: ${x(t),F(()=>x(t).color)??``}`),X(l,`aria-label`,n),p!==(p=(x(t),F(()=>x(t).interpolation)))&&(d.value=(d.__value=p)??``,s(d,p)),_.disabled=(x(u),F(()=>x(u).length<=2))},[()=>(x(t),F(()=>x(t).position.toFixed(3))),()=>(x(t),F(()=>`Edit color stop at ${Math.round(x(t).position*100)}%`))]),O(`input`,c,e=>{let t=e.target;if(t instanceof HTMLInputElement){let e=parseFloat(t.value);B(x(n),e)}}),O(`click`,l,()=>{L(v,x(n)),L(y,!0)}),O(`change`,d,e=>{let t=e.target;t instanceof HTMLSelectElement&&se(x(n),t.value)}),O(`click`,g,()=>N((x(t).position+(x(u)[x(n)+1]?.position||1))/2)),O(`click`,_,()=>ie(x(n))),E(e,i)}),o(xe);var Oe=P(xe,2),ke=e=>{var t=Vb(),n=M(t),r=M(n);{let e=pe(()=>(x(u),x(v),F(()=>({value:x(u)[x(v)].color,type:`color`})))),t=pe(()=>`${i()}-color-picker`);db(r,{get prop(){return x(e)},get id(){return x(t)},onValueChange:e=>{x(v)!==null&&z(x(v),e),L(y,!1)}})}o(n),o(t),O(`click`,t,ae(()=>L(y,!1))),E(e,t)};Z(Oe,e=>{x(y)&&x(v)!==null&&e(ke)}),o(H),K(()=>D(fe,(A(n()),F(()=>n().displayName||`Ramp`)))),R(W,()=>x(d),e=>L(d,e)),O(`mousedown`,_e,k),O(`contextmenu`,_e,Se(e=>{if(te(e.clientX)===null){let t=x(p).getBoundingClientRect(),n=e.clientX-t.left;N(Math.max(0,Math.min(1,n/t.width)))}})),O(`click`,Te,()=>N(.5)),E(e,H),Ee()}var Wb=class{constructor(){this._graph=null,this._pwd=null,this._time=new xu,this._selectedNodes=new Set}setGraph(e){this._graph=e,Tu.setGraph(e)}getGraph(){return this._graph}node(e){return this._graph?e.startsWith(`/`)?this.resolveAbsolutePath(e):this._pwd?this._pwd.node(e):this.resolveAbsolutePath(`/`+e):null}parm(e){let t=e.lastIndexOf(`/`);if(t===-1)return null;let n=e.substring(0,t)||`/`,r=e.substring(t+1);return this.node(n)?.parm(r)??null}root(){return null}pwd(){return this._pwd}setPwd(e){this._pwd=e}cd(e){if(e===`/`){this._pwd=null;return}let t=this.node(e);t&&t.isNetwork()&&(this._pwd=t)}selectedNodes(){return this._graph?Array.from(this._selectedNodes).map(e=>this._graph.getNode(e)).filter(e=>e!==null):[]}selectedNodeIds(){return Array.from(this._selectedNodes)}setSelection(e){this._selectedNodes=new Set(e),this.onSelectionChange?.(e)}clearAllSelected(){this._selectedNodes.clear(),this.onSelectionChange?.([])}frame(){return this._time.frame}fframe(){return this._time.frameFraction}time(){return this._time.time}fps(){return this._time.fps}setFrame(e){this._time.setFrame(e),Tu.setFrame(this._time.frameFraction)}setTime(e){this._time.setTime(e),Tu.setFrame(this._time.frameFraction)}setFps(e){this._time.setFps(e),Tu.setFps(this._time.fps)}clock(){return{setFrame:e=>this.setFrame(e),markTimeDependentDirty:()=>this.markTimeDependentDirty(),getFrame:()=>this.frame(),getFrameFraction:()=>this.fframe(),getTime:()=>this.time(),getFps:()=>this.fps()}}ch(e){return this.parm(e)?.evalAsFloat()??0}chs(e){return this.parm(e)?.evalAsString()??``}chv(e){let t=this.parm(e)?.eval();return Array.isArray(t)?t:typeof t==`number`?[t]:[]}markTimeDependentDirty(){if(this._graph)for(let e of this._graph.nodes)e.isTimeDependent&&e.markDirty()}getTimeDependentNodes(){return this._graph?this._graph.nodes.filter(e=>e.isTimeDependent):[]}nextFrame(e=1){return this.setFrame(this.fframe()+e),this.markTimeDependentDirty(),this.fframe()}resolveAbsolutePath(e){if(!this._graph)return null;let t=e.replace(/^\//,``).split(`/`).filter(e=>e.length>0);if(t.length===0)return null;let n=null,r=this._graph.nodes.filter(e=>!e.parent);for(let e=0;e<t.length;e++){let i=t[e],a=(n?n.children():r).find(e=>e.id===i);if(!a)return null;n=a}return n}},Gb=new Wb,Kb=w(Gb.fframe());function qb(e){Gb.setFrame(e),Kb.set(Gb.fframe())}var Jb=u(`<button><span class="item-type svelte-10p3942"> </span> <span class="item-label svelte-10p3942"> </span></button>`),Yb=u(`<div class="autocomplete-dropdown svelte-10p3942"></div>`),Xb=u(`<div class="expression-input-container svelte-10p3942"><input type="text" placeholder="e.g., ch('../node/value') * 2"/> <!></div>`),Zb=u(`<button class="expression-display svelte-10p3942" title="Click to edit expression"><span class="expression-code svelte-10p3942"> </span></button>`),Qb=u(`<span class="expression-error svelte-10p3942"><!></span>`),$b=u(`<button class="evaluated-badge svelte-10p3942"> </button>`),ex=u(`<div class="expression-view svelte-10p3942"><!> <div class="expression-actions svelte-10p3942"><!> <button class="remove-expression svelte-10p3942" title="Remove expression"><!></button></div></div>`),tx=u(`<button class="toggle-to-expression svelte-10p3942" title="Click to see expression"><!></button>`),nx=u(`<button class="add-expression svelte-10p3942" title="Add expression"><!></button>`),rx=u(`<div><!> <!></div>`),ix=u(`<div><!></div>`);function ax(e,t){ee(t,!1);let n=()=>we(Kb,`$currentFrame`,r),[r,i]=ne(),a=Y(),s=Y(),c=Y(),l=Y(),u=V(t,`prop`,8),d=V(t,`propKey`,8),p=V(t,`node`,8),m=V(t,`onValueChange`,8),g=Y(`value`),_=Y(!1),y=Y(u().expression||``),S=Y(),C=Y(!1),w=Y([]),T=Y(0),te=0;function k(e){return e==null?`—`:typeof e==`number`?Number.isInteger(e)?String(e):e.toFixed(4).replace(/\.?0+$/,``):Array.isArray(e)?`[${e.map(e=>typeof e==`number`?Number.isInteger(e)?e:e.toFixed(2):e).join(`, `)}]`:typeof e==`boolean`?e?`true`:`false`:typeof e==`string`?e.length>30?e.slice(0,27)+`...`:e:typeof e==`object`&&e?`r`in e&&`g`in e&&`b`in e?`rgb(${Math.round(e.r*255)}, ${Math.round(e.g*255)}, ${Math.round(e.b*255)})`:JSON.stringify(e).slice(0,30):String(e)}function j(e,t,n){try{let n=p()?.evalParm?.(t);return n===void 0?e.value:n}catch{return e.value}}let N=[{label:`ch(path)`,value:`ch("")`,type:`func`,desc:`Get parameter as number`},{label:`chs(path)`,value:`chs("")`,type:`func`,desc:`Get parameter as string`},{label:`chv(path)`,value:`chv("")`,type:`func`,desc:`Get parameter as vector`},{label:`time`,value:`time`,type:`func`,desc:`Current time in seconds`},{label:`frame`,value:`frame`,type:`func`,desc:`Current frame number`},{label:`fps`,value:`fps`,type:`func`,desc:`Frames per second`},{label:`fit(v, oMin, oMax, nMin, nMax)`,value:`fit(, 0, 1, 0, 100)`,type:`func`,desc:`Remap value range`},{label:`clamp(v, min, max)`,value:`clamp(, 0, 1)`,type:`func`,desc:`Clamp value`},{label:`lerp(a, b, t)`,value:`lerp(0, 1, )`,type:`func`,desc:`Linear interpolation`},{label:`noise(x)`,value:`noise()`,type:`func`,desc:`Perlin noise (-1 to 1)`},{label:`random(seed)`,value:`random()`,type:`func`,desc:`Deterministic random (0-1)`},{label:`true`,value:`true`,type:`func`,desc:`Boolean true`},{label:`false`,value:`false`,type:`func`,desc:`Boolean false`},{label:`Math.sin(x)`,value:`Math.sin()`,type:`func`,desc:`Sine function`},{label:`Math.cos(x)`,value:`Math.cos()`,type:`func`,desc:`Cosine function`},{label:`Math.abs(x)`,value:`Math.abs()`,type:`func`,desc:`Absolute value`}];function ie(){x(s)&&L(g,x(g)===`expression`?`value`:`expression`)}function ae(e){e.stopPropagation(),L(_,!0),L(g,`expression`),L(y,oe(u().value)),setTimeout(()=>{x(S)?.focus(),x(S)?.select()},0)}function oe(e){return typeof e==`string`?`"${e}"`:typeof e==`boolean`?e?`true`:`false`:Array.isArray(e)?`[${e.join(`, `)}]`:typeof e==`object`&&e&&`r`in e&&`g`in e&&`b`in e?`{ r: ${e.r}, g: ${e.g}, b: ${e.b}${e.a===void 0?``:`, a: ${e.a}`} }`:String(e??``)}function R(){L(_,!0),L(y,u().expression||``),setTimeout(()=>{x(S)?.focus()},0)}function z(e){e.stopPropagation();let t=p().parm(d());t&&(t.deleteExpression(),p().markDirty(),m()?.(u().value)),L(_,!1),L(g,`value`)}function se(e){let t=e.target;L(y,t.value),te=t.selectionStart||0,B()}function B(){if(!x(a)){L(C,!1);return}let e=x(y).slice(0,te),t=e.match(/ch[sv]?\s*\(\s*['"]([^'"]*?)$/);if(t){let e=t[1];L(w,ce(e)),L(C,x(w).length>0),L(T,0)}else{let t=e.match(/(?:^|[\s(,+\-*/%])(\w*)$/);if(t&&t[1].length>0){let e=t[1].toLowerCase();L(w,N.filter(t=>t.label.toLowerCase().startsWith(e)||t.value.toLowerCase().startsWith(e)).map(e=>({label:e.label,value:e.value,type:e.type}))),L(C,x(w).length>0),L(T,0)}else L(C,!1)}}function ce(e){if(!x(a))return[];let t=[],n=e.startsWith(`/`),r=[],i=``;if(n)r=x(a).nodes.filter(e=>!e.parent),i=`/`;else if(e.startsWith(`../`))p().parent&&(r=p().parent.children().filter(e=>e!==p()),i=`../`);else if(e.startsWith(`./`)){let n=e.slice(2).toLowerCase();return Object.keys(p().props).forEach(e=>{e.toLowerCase().startsWith(n)&&t.push({label:`./${e}`,value:`./${e}`,type:`prop`})}),t}else p().parent?(r=p().parent.children().filter(e=>e!==p()),i=`../`):(r=x(a).nodes.filter(e=>!e.parent&&e!==p()),i=`/`);let o=(n?e.slice(1):e.startsWith(`../`)?e.slice(3):e).split(`/`),s=o[o.length-1].toLowerCase(),c=r;for(let e=0;e<o.length-1;e++){let n=o[e],r=c.find(e=>e.id===n);if(r&&r.isNetwork())c=r.children(),i+=n+`/`;else return t}return c.forEach(e=>{e.id.toLowerCase().startsWith(s)&&(t.push({label:`${i}${e.id}`,value:`${i}${e.id}`,type:`node`}),Object.keys(e.props).forEach(n=>{t.push({label:`${i}${e.id}/${n}`,value:`${i}${e.id}/${n}`,type:`prop`})}))}),t.slice(0,10)}function le(e){let t=x(y).slice(0,te),n=x(y).slice(te),r=t.match(/ch[sv]?\s*\(\s*['"]([^'"]*?)$/);if(r){let i=t.slice(0,t.length-r[1].length);L(y,i+e.value+n)}else{let r=t.match(/(?:^|[\s(,+\-*/%])(\w*)$/);if(r){let i=t.slice(0,t.length-r[1].length);L(y,i+e.value+n)}}L(C,!1),x(S)?.focus()}function H(e){if(x(C)){if(e.key===`ArrowDown`)e.preventDefault(),L(T,(x(T)+1)%x(w).length);else if(e.key===`ArrowUp`)e.preventDefault(),L(T,(x(T)-1+x(w).length)%x(w).length);else if(e.key===`Tab`||e.key===`Enter`){if(x(w).length>0){e.preventDefault(),le(x(w)[x(T)]);return}}else if(e.key===`Escape`){L(C,!1);return}}e.key===`Enter`&&!e.shiftKey&&!x(C)?(e.preventDefault(),U()):e.key===`Escape`&&!x(C)&&de()}function U(){if(L(C,!1),x(y).trim()){let e=p().parm(d());e&&(e.setExpression(x(y)),p().markDirty(),m()?.(p().evalParm(d())))}L(_,!1)}function de(){L(C,!1),L(y,u().expression||``),L(_,!1),x(s)||L(g,`value`)}function fe(){setTimeout(()=>{x(C)||(x(y).trim()?U():de())},150)}J(()=>A(p()),()=>{L(a,p().graph)}),J(()=>A(u()),()=>{L(s,!!u().expression)}),J(()=>A(u()),()=>{L(c,u().expressionError)}),J(()=>(x(s),x(g),x(_)),()=>{x(s)&&x(g)===`value`&&!x(_)&&L(g,`expression`)}),J(()=>(x(s),x(g)),()=>{!x(s)&&x(g)===`expression`&&L(g,`value`)}),J(()=>A(u()),()=>{u().expression!==void 0&&L(y,u().expression||``)}),J(()=>(x(s),x(c),A(u()),A(d()),n()),()=>{L(l,x(s)&&!x(c)?k(j(u(),d(),n())):null)}),he(),ue();var pe=ix();let me;var W=M(pe),G=e=>{var t=ex(),n=M(t),r=e=>{var t=Xb(),n=M(t);re(n);let r;ge(n,e=>L(S,e),()=>x(S));var i=P(n,2),a=e=>{var t=Yb();f(t,5,()=>x(w),h,(e,t,n)=>{var r=Jb();let i;var a=M(r),s=q(a,!0),c=P(a,2),l=q(c,!0);o(r),K(()=>{i=v(r,1,`autocomplete-item svelte-10p3942`,null,i,{selected:n===x(T),"type-node":x(t).type===`node`,"type-prop":x(t).type===`prop`,"type-func":x(t).type===`func`}),D(s,(x(t),F(()=>x(t).type===`func`?`ƒ`:x(t).type===`node`?`□`:`•`))),D(l,(x(t),F(()=>x(t).label)))}),O(`mousedown`,r,Se(()=>le(x(t)))),O(`mouseenter`,r,()=>L(T,n)),E(e,r)}),o(t),E(e,t)};Z(i,e=>{x(C),x(w),F(()=>x(C)&&x(w).length>0)&&e(a)}),o(t),K(()=>r=v(n,1,`expression-input svelte-10p3942`,null,r,{error:!!x(c)})),Ce(n,()=>x(y),e=>L(y,e)),O(`input`,n,se),O(`keydown`,n,H),O(`blur`,n,fe),E(e,t)},i=e=>{var t=Zb(),n=M(t),r=q(n,!0);o(t),K(()=>D(r,(A(u()),F(()=>u().expression)))),O(`click`,t,R),E(e,t)};Z(n,e=>{x(_)?e(r):e(i,-1)});var a=P(n,2),s=M(a),d=e=>{var t=Qb();$a(M(t),{size:12}),o(t),K(()=>X(t,`title`,x(c))),E(e,t)},p=e=>{var t=$b(),n=q(t);K(()=>{X(t,`title`,`Click to see value: ${x(l)??``}`),D(n,`= ${x(l)??``}`)}),O(`click`,t,I(ie)),E(e,t)};Z(s,e=>{x(c)?e(d):x(l)!==null&&e(p,1)});var m=P(s,2);Ic(M(m),{size:12}),o(m),o(a),o(t),O(`click`,m,z),E(e,t)},_e=e=>{var n=rx();let r;var i=M(n);b(i,t,`default`,{},null);var a=P(i,2),c=e=>{var t=tx();Qs(M(t),{size:10}),o(t),O(`click`,t,I(ie)),E(e,t)},l=e=>{var t=nx();Qs(M(t),{size:10}),o(t),O(`click`,t,ae),E(e,t)};Z(a,e=>{x(s)?e(c):e(l,-1)}),o(n),K(()=>r=v(n,1,`value-view svelte-10p3942`,null,r,{"expression-active":x(s)})),E(e,n)};Z(W,e=>{x(g)===`expression`&&x(s)?e(G):e(_e,-1)}),o(pe),K(()=>me=v(pe,1,`expression-wrapper svelte-10p3942`,null,me,{"has-expression":x(s),"has-error":!!x(c),editing:x(_)})),E(e,pe),Ee(),i()}function ox(e,t){let n=e.parm?.(t);return n&&typeof n==`object`?n:null}function sx(e){let t=e.currentFrame?.();return Number.isFinite(t)?Math.round(t):1}function cx(e,t){let n=ox(e,t);if(!n?.hasChannel?.())return`none`;let r=n.keys?.()??[];if(!r.length)return`none`;let i=sx(e);return r.some(e=>Math.round(e.frame)===i)?`keyed-here`:`keyed`}function lx(e,t){let n=ox(e,t);if(!n?.setKey)return`unavailable`;if(cx(e,t)===`keyed-here`){let r=e.props?.[t]?.value;if(typeof r==`number`&&Number.isFinite(r))return n.setKey(sx(e),r),`set`}return n.setKey(),`set`}function ux(e,t){let n=ox(e,t);return n?.deleteKey?cx(e,t)===`keyed-here`?(n.deleteKey(sx(e)),`removed`):`absent`:`unavailable`}function dx(e,t){return cx(e,t)===`keyed-here`?ux(e,t)===`removed`?`removed`:`unavailable`:lx(e,t)}function fx(e){return typeof e==`number`&&Number.isFinite(e)}var px=w(null),mx=0;function hx(e,t){mx+=1,px.set({nodeId:e,param:t,nonce:mx})}var gx=u(`<div><div class="content svelte-1nytthg"><div class="section svelte-1nytthg"><div class="section-header svelte-1nytthg"><span class="section-title svelte-1nytthg">Content</span></div> <textarea id="annotation-content" class="content-textarea svelte-1nytthg" placeholder="Enter text..."></textarea></div> <div class="section svelte-1nytthg"><div class="section-header svelte-1nytthg"><span class="section-title svelte-1nytthg">Position</span></div> <!></div> <div class="section svelte-1nytthg"><div class="section-header svelte-1nytthg"><span class="section-title svelte-1nytthg">Layout</span></div> <div class="layout-grid svelte-1nytthg"><div class="layout-input-group svelte-1nytthg"><label class="layout-label svelte-1nytthg" for="annotation-width">W</label> <div class="number-input-with-buttons svelte-1nytthg"><input id="annotation-width" type="number" class="layout-input svelte-1nytthg" min="100"/> <button class="number-button decrement svelte-1nytthg" type="button" title="Decrease">−</button> <button class="number-button increment svelte-1nytthg" type="button" title="Increase">+</button></div></div> <div class="layout-input-group svelte-1nytthg"><label class="layout-label svelte-1nytthg" for="annotation-height">H</label> <div class="number-input-with-buttons svelte-1nytthg"><input id="annotation-height" type="number" class="layout-input svelte-1nytthg" min="20"/> <button class="number-button decrement svelte-1nytthg" type="button" title="Decrease">−</button> <button class="number-button increment svelte-1nytthg" type="button" title="Increase">+</button></div></div></div></div> <div class="section svelte-1nytthg"><div class="section-header svelte-1nytthg"><span class="section-title svelte-1nytthg">Typography</span></div> <div class="typography-presets svelte-1nytthg"><button title="Heading 1">H1</button> <button title="Heading 2">H2</button> <button title="Heading 3">H3</button> <button title="Text">Text</button></div> <div class="typography-row svelte-1nytthg"><div class="typography-input-group svelte-1nytthg"><label class="typography-label svelte-1nytthg" for="annotation-font-size">Size</label> <div class="number-input-with-buttons svelte-1nytthg"><input id="annotation-font-size" type="number" class="typography-number-input svelte-1nytthg" min="8" max="72" step="1"/> <button class="number-button decrement svelte-1nytthg" type="button" title="Decrease">−</button> <button class="number-button increment svelte-1nytthg" type="button" title="Increase">+</button></div></div> <div class="typography-input-group svelte-1nytthg"><label class="typography-label svelte-1nytthg" for="annotation-text-align">Align</label> <div class="align-buttons svelte-1nytthg"><button title="Align left" aria-label="Align left"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M2 3H12M2 7H10M2 11H12" stroke-linecap="round"></path></svg></button> <button title="Align center" aria-label="Align center"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M2 3H12M4 7H10M2 11H12" stroke-linecap="round"></path></svg></button> <button title="Align right" aria-label="Align right"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M2 3H12M4 7H12M2 11H12" stroke-linecap="round"></path></svg></button></div></div></div> <div class="typography-toggles svelte-1nytthg"><button title="Bold"><strong>B</strong></button> <button title="Italic"><em>I</em></button> <button title="Normal">N</button></div></div> <div class="section svelte-1nytthg"><div class="section-header svelte-1nytthg"><span class="section-title svelte-1nytthg">Text Color</span></div> <!></div> <div class="section svelte-1nytthg"><div class="section-header svelte-1nytthg"><span class="section-title svelte-1nytthg">Appearance</span></div> <div class="appearance-row svelte-1nytthg"><div class="appearance-input-group svelte-1nytthg"><label class="appearance-label svelte-1nytthg" for="annotation-border-radius">Radius</label> <div class="number-input-with-buttons svelte-1nytthg"><input id="annotation-border-radius" type="number" class="appearance-number-input svelte-1nytthg" min="0" max="16" step="1"/> <button class="number-button decrement svelte-1nytthg" type="button" title="Decrease">−</button> <button class="number-button increment svelte-1nytthg" type="button" title="Increase">+</button></div></div></div></div> <div class="section svelte-1nytthg"><div class="section-header svelte-1nytthg"><span class="section-title svelte-1nytthg">Background Color</span></div> <!></div></div></div>`),_x=u(`<div><div class="content svelte-1nytthg"><div class="section svelte-1nytthg"><div class="section-header svelte-1nytthg"><span class="section-title svelte-1nytthg">Position</span></div> <div class="position-grid svelte-1nytthg"><div class="position-input-group svelte-1nytthg"><label class="position-label svelte-1nytthg" for="annotation-x">X</label> <input id="annotation-x" type="number" class="position-input svelte-1nytthg"/></div> <div class="position-input-group svelte-1nytthg"><label class="position-label svelte-1nytthg" for="annotation-y">Y</label> <input id="annotation-y" type="number" class="position-input svelte-1nytthg"/></div></div></div> <div class="section svelte-1nytthg"><div class="section-header svelte-1nytthg"><span class="section-title svelte-1nytthg">End Position</span></div> <div class="position-grid svelte-1nytthg"><div class="position-input-group svelte-1nytthg"><label class="position-label svelte-1nytthg" for="annotation-end-x">X</label> <input id="annotation-end-x" type="number" class="position-input svelte-1nytthg"/></div> <div class="position-input-group svelte-1nytthg"><label class="position-label svelte-1nytthg" for="annotation-end-y">Y</label> <input id="annotation-end-y" type="number" class="position-input svelte-1nytthg"/></div></div></div> <div class="section svelte-1nytthg"><div class="section-header svelte-1nytthg"><span class="section-title svelte-1nytthg">Stroke</span></div> <div class="fill-controls svelte-1nytthg"><input id="annotation-stroke-color" type="color" class="color-picker svelte-1nytthg"/> <input id="annotation-stroke-color-hex" type="text" class="color-hex-input svelte-1nytthg" placeholder="#FFFFFF"/></div> <div class="appearance-row svelte-1nytthg" style="margin-top: 8px;"><div class="appearance-input-group svelte-1nytthg"><label class="appearance-label svelte-1nytthg" for="annotation-stroke-width">Width</label> <div class="number-input-with-buttons svelte-1nytthg"><input id="annotation-stroke-width" type="number" class="appearance-number-input svelte-1nytthg" min="1" max="20" step="1"/> <button class="number-button decrement svelte-1nytthg" type="button" title="Decrease">−</button> <button class="number-button increment svelte-1nytthg" type="button" title="Increase">+</button></div></div></div></div></div></div>`),vx=u(`<div><div class="content svelte-1nytthg"><div class="section svelte-1nytthg"><div class="section-header svelte-1nytthg"><span class="section-title svelte-1nytthg">Position</span></div> <div class="position-grid svelte-1nytthg"><div class="position-input-group svelte-1nytthg"><label class="position-label svelte-1nytthg" for="annotation-x">X</label> <input id="annotation-x" type="number" class="position-input svelte-1nytthg"/></div> <div class="position-input-group svelte-1nytthg"><label class="position-label svelte-1nytthg" for="annotation-y">Y</label> <input id="annotation-y" type="number" class="position-input svelte-1nytthg"/></div></div></div> <div class="section svelte-1nytthg"><div class="section-header svelte-1nytthg"><span class="section-title svelte-1nytthg">Stroke</span></div> <div class="fill-controls svelte-1nytthg"><input id="annotation-stroke-color" type="color" class="color-picker svelte-1nytthg"/> <input id="annotation-stroke-color-hex" type="text" class="color-hex-input svelte-1nytthg" placeholder="#FFFFFF"/></div> <div class="appearance-row svelte-1nytthg" style="margin-top: 8px;"><div class="appearance-input-group svelte-1nytthg"><label class="appearance-label svelte-1nytthg" for="annotation-stroke-width">Width</label> <div class="number-input-with-buttons svelte-1nytthg"><input id="annotation-stroke-width" type="number" class="appearance-number-input svelte-1nytthg" min="1" max="20" step="1"/> <button class="number-button decrement svelte-1nytthg" type="button" title="Decrease">−</button> <button class="number-button increment svelte-1nytthg" type="button" title="Increase">+</button></div></div></div></div></div></div>`),yx=u(`<div class="error-badge-container svelte-1nytthg"><span class="error-badge svelte-1nytthg">Error</span></div>`),bx=u(`<button title="Key at the current frame (or alt-click the label)"><!></button>`),xx=u(`<label class="prop-label svelte-1nytthg"> </label> <!>`,1),Sx=u(`<textarea class="param-textarea svelte-1nytthg"></textarea>`),Cx=u(`<input type="text" class="param-input svelte-1nytthg"/>`),wx=u(`<div><!> <!></div>`),Tx=u(`<div class="port-section svelte-1nytthg"><button class="port-heading svelte-1nytthg"><span class="twisty svelte-1nytthg"> </span> Inputs <span class="tally svelte-1nytthg"> </span></button> <!></div>`),Ex=u(`<div class="parameter-action-value svelte-1nytthg"><button class="parameter-action"> </button> <!></div>`),Dx=u(`<button title="Key at the current frame (alt-click the row to set, ctrl-click to delete, right-click for the channel)"><!></button>`),Ox=u(`<div class="parameter-bound svelte-1nytthg"><div class="parameter-head svelte-1nytthg"><span class="parameter-name svelte-1nytthg"> </span> <!></div> <!></div>`),kx=u(`<button> </button>`),Ax=u(`<div class="parameter svelte-1nytthg"><!> <!></div>`),jx=u(`<div class="port-section svelte-1nytthg"><button class="port-heading svelte-1nytthg"><span class="twisty svelte-1nytthg"> </span> Parameters <span class="tally svelte-1nytthg"> </span></button> <!></div>`),Mx=u(`<div class="port-section svelte-1nytthg"><button class="port-heading svelte-1nytthg"><span class="twisty svelte-1nytthg"> </span> Outputs <span class="tally svelte-1nytthg"> </span></button> <!></div>`),Nx=u(`<div class="empty-state svelte-1nytthg">Nothing to show — this node has no parameters or outputs yet</div>`),Px=u(`<div class="comment-section svelte-1nytthg"><div class="comment svelte-1nytthg"> </div></div>`),Fx=u(`<div><div class="content svelte-1nytthg"><!> <!> <!> <!> <!> <!> <!></div></div>`);function Ix(e,n){ee(n,!1);let i=()=>we(Zg,`$propUpdateCounters`,a),[a,s]=ne(),c=Y(),l=Y(),u=Y(),d=Y(),p=Y(),m=Y(),g=Y(),_=Y(),y=Y(),b=Y(),C=Y(),w=Y(),T=V(n,`node`,8,null),k=V(n,`annotation`,12,null),j=V(n,`graph`,12,null),N=V(n,`position`,8,`right`),ie=V(n,`skipAnimation`,8,!1),ae=V(n,`embedded`,8,!1),R=V(n,`onRecordHistory`,8,void 0),se=V(n,`onAction`,8,void 0),ce=!1;function le(){!ce&&R()&&(R()(),ce=!0)}function H(){ce=!1}ye(()=>{let e=()=>H();return window.addEventListener(`mouseup`,e),()=>window.removeEventListener(`mouseup`,e)});let U=Y(0),de=``,fe=new Map,me=Y(0);function W(e){return fe.has(e)||fe.set(e,{inputs:!1,params:!0,outputs:!1}),fe.get(e)}function ge(e,t){let n=W(e);n[t]=!n[t],L(me,x(me)+1)}function _e(e){return T()?W(T().id):{inputs:!1,params:!0,outputs:!1}}ye(()=>{let e=setInterval(()=>{if(!T())return;let e=`${T().id}:${T().cookInfo?.cookCount??0}:${T().inputs?.length??0}:${T().outputs?.length??0}`;e!==de&&(de=e,L(U,x(U)+1))},400);return()=>clearInterval(e)});function ve(e,t){return t??[]}function be(e){return(T()?.parameters??[]).filter(e=>{if(typeof e.options?.visibleWhen!=`function`)return!0;try{let t=Object.fromEntries((T()?.parameters??[]).map(e=>[e.name,e.value]));return e.options.visibleWhen(t)}catch{return!0}})}let xe=Y(0),Se=Y([]);function Ce(e,t){if(T()){if(le(),e.value=t,e.onChange)try{e.onChange(t)}catch(e){console.warn(`port onChange failed:`,e)}T().markDirty?.()}}function Te(e,t){T()&&ny(T(),e.name,t,le)}function De(e){T()&&e.options?.action&&se()?.(e.options.action,T().id)}function Oe(e){T()&&(le(),T().setParameterPromoted(e.name,!e.promoted),j()&&j(j().elements=[...j().elements],!0),L(me,x(me)+1),L(U,x(U)+1))}let ke=Y(0);function Ae(e){T()&&(hx(T().id,e),cl.focusOrOpenPanel(`timeline-main`,`timeline`,`Timeline`,`graph-main`,`below`))}function je(e,t){let n=-1,r=e=>{e.timeStamp-n<500||(n=e.timeStamp,Pe(t))},i=e=>{if(e.ctrlKey){e.preventDefault(),r(e);return}e.altKey&&(e.preventDefault(),Ne(t,`set`))},a=e=>{if(e.preventDefault(),e.stopPropagation(),e.ctrlKey){r(e);return}Ae(t)};return e.addEventListener(`click`,i),e.addEventListener(`contextmenu`,a),{destroy(){e.removeEventListener(`click`,i),e.removeEventListener(`contextmenu`,a)}}}function Me(e,t){let n=e=>{!e.dataTransfer||!T()||(e.stopPropagation(),e.dataTransfer.setData(`text/plain`,`${T().id}/${t}`),e.dataTransfer.effectAllowed=`copy`)};return e.setAttribute(`draggable`,`true`),e.addEventListener(`dragstart`,n),{destroy(){e.removeEventListener(`dragstart`,n)}}}function Ne(e,t=`toggle`){T()&&(t===`set`?lx(T(),e):dx(T(),e))!==`unavailable`&&(L(ke,x(ke)+1),L(xe,x(xe)+1),T().markDirty())}function Pe(e){T()&&ux(T(),e)===`removed`&&(L(ke,x(ke)+1),L(xe,x(xe)+1),T().markDirty())}function Fe(e){return T()?.props?.[e]||null}function Ie(e,t){let n=T()?.parm(e);n&&(le(),n.setExpression(t),T()?.markDirty(),L(ke,x(ke)+1),L(xe,x(xe)+1))}function Le([e,t],n){T()&&(le(),T().updateProp(e,n))}function Re([e,t],n){let r=n.target.value;Le([e,t],r)}function ze([e,t],n){let r=n.target.value;Le([e,t],r)}function Be([e,t]){let n=pv(t),r=t.displayName||e;return(typeof t.disabled==`function`?t.disabled():t.disabled)?null:{key:e,prop:t,controlType:n,displayName:r,folder:t.folder}}let Ve=Y({});function He(e){oe(Ve,x(Ve)[e]=!x(Ve)[e]),L(Ve,{...x(Ve)})}function Ue(e,t){if(k()&&j()){let n={...k().style||{},[e]:t},r=j().getAnnotation(k().id);r&&(r.style=n,j(j().annotations=[...j().annotations],!0))}}function We(e,t){if(k()&&j()){let n=j().getAnnotation(k().id);n&&(n.size||={width:540,height:60},n.size[e]=t,j(j().annotations=[...j().annotations],!0))}}function Q(e){if(k()&&j()){let t=j().getAnnotation(k().id);t&&t.type===`text`&&(t.content=e,j(j().annotations=[...j().annotations],!0),k(k().content=e,!0))}}function Ge(e){let t=e.target.value;Q(t)}function Ke(e,t){Ue(e,parseFloat(t.target.value))}function qe(e,t){let n=t.target.value;Ue(e,n)}function Je(e,t){We(e,parseFloat(t.target.value))}function Ye(e){let t=parseFloat(e.target.value);if(!isNaN(t)&&k()&&j()){let e=j().getAnnotation(k().id);e&&(e.position.x=t,j(j().annotations=[...j().annotations],!0))}}function Xe(e){let t=parseFloat(e.target.value);if(!isNaN(t)&&k()&&j()){let e=j().getAnnotation(k().id);e&&(e.position.y=t,j(j().annotations=[...j().annotations],!0))}}function Ze(e){let t=parseFloat(e.target.value);if(!isNaN(t)&&k()&&j()){let e=j().getAnnotation(k().id);e&&e.type===`line`&&(e.endPosition||={...e.position},e.endPosition.x=t,j(j().annotations=[...j().annotations],!0),k().endPosition?k(k().endPosition.x=t,!0):k(k().endPosition={...k().position,x:t},!0))}}function $(e){let t=parseFloat(e.target.value);if(!isNaN(t)&&k()&&j()){let e=j().getAnnotation(k().id);e&&e.type===`line`&&(e.endPosition||={...e.position},e.endPosition.y=t,j(j().annotations=[...j().annotations],!0),k().endPosition?k(k().endPosition.y=t,!0):k(k().endPosition={...k().position,y:t},!0))}}function Qe(e){let t=e.target.value;/^#[0-9A-Fa-f]{6}$/.test(t)&&Ue(`strokeColor`,t)}function $e(e){if(k()&&j()&&e.length>=2){let t=j().getAnnotation(k().id);t&&(t.position={x:e[0],y:e[1]},j(j().annotations=[...j().annotations],!0))}}function et(e){k()&&j()&&Ue(`color`,dl(ll(e)))}function tt(e){k()&&j()&&Ue(`backgroundColor`,dl(ll(e)))}function nt(e,t,n,r,i=1){let a=document.getElementById(e);if(!a)return;let o=(parseFloat(a.value)||0)+t*i;n!==void 0&&o<n&&(o=n),r!==void 0&&o>r&&(o=r),a.value=String(o),a.dispatchEvent(new Event(`input`,{bubbles:!0}))}function rt(e,t,n,r=1){e.preventDefault();let i=e.target,a=e.deltaY>0?-1:1;nt(i.id,a,t,n,r)}J(()=>x(me),()=>{L(c,_e(x(me)))}),J(()=>(x(U),A(T())),()=>{L(l,ve(x(U),T()?.inputs))}),J(()=>(x(U),A(T())),()=>{L(u,ve(x(U),T()?.outputs))}),J(()=>x(l),()=>{L(d,x(l).filter(e=>!e.fromParameter))}),J(()=>x(U),()=>{L(p,be(x(U)))}),J(()=>{},()=>{L(m,[])}),J(()=>A(T()),()=>{L(g,T()?Object.keys(T().props):[])}),J(()=>A(T()),()=>{L(_,T()?Object.keys(T().props).length:0)}),J(()=>A(T()),()=>{L(y,T()?.props)}),J(()=>(i(),A(T())),()=>{let e=i();L(xe,T()&&e.get(T().id)||0)}),J(()=>(x(y),x(xe)),()=>{L(b,x(y)&&x(xe)>=0?Object.entries(x(y)).map(([e,t])=>`${e}:${JSON.stringify(t.value)}:${JSON.stringify(t.params)}`).join(`|`)+`|counter:${x(xe)}`:``)}),J(()=>(A(T()),x(_),x(b)),()=>{let e=T()?.props,t=e&&x(_)>=0&&x(b)!==void 0?Object.entries(e).filter(([e,t])=>typeof t.hidden==`function`?!t.hidden():!t.hidden):[];L(Se,t)}),J(()=>x(Se),()=>{L(C,x(Se).map(Be).filter(e=>e!==null))}),J(()=>x(C),()=>{L(w,x(C).reduce((e,t)=>{let n=t.folder||`General`;return e[n]||(e[n]=[]),e[n].push(t),e},{}))}),J(()=>(x(w),x(Ve)),()=>{Object.keys(x(w)).forEach(e=>{e in x(Ve)||oe(Ve,x(Ve)[e]=e!==`Settings`)})}),he(),ue();var it=te(),at=G(it),ot=e=>{var t=gx();let n;var i=M(t),a=M(i),s=P(M(a),2);z(s),o(a);var c=P(a,2),l=P(M(c),2);S(l,()=>(A(k()),F(()=>`position-${k().id}-${k().position.x}-${k().position.y}`)),e=>{{let t=pe(()=>(A(k()),F(()=>({value:[k().position.x,k().position.y],type:`vec2`,params:{integer:!0}}))));ib(e,{get prop(){return x(t)},id:`annotation-position`,onValueChange:$e})}}),o(c);var u=P(c,2),d=P(M(u),2),f=M(d),p=P(M(f),2),m=M(p);re(m);var h=P(m,2),g=P(h,2);o(p),o(f);var _=P(f,2),y=P(M(_),2),b=M(y);re(b);var C=P(b,2),w=P(C,2);o(y),o(_),o(d),o(u);var T=P(u,2),ee=P(M(T),2),D=M(ee);let te;var ne=P(D,2);let j;var oe=P(ne,2);let I;var L=P(oe,2);let R;o(ee);var se=P(ee,2),B=M(se),V=P(M(B),2),ce=M(V);re(ce);var le=P(ce,2),H=P(le,2);o(V),o(B);var U=P(B,2),ue=P(M(U),2),de=M(ue);let fe;var me=P(de,2);let he;var W=P(me,2);let G;o(ue),o(U),o(se);var ge=P(se,2),_e=M(ge);let ve;var ye=P(_e,2);let be;var q=P(ye,2);let xe;o(ge),o(T);var J=P(T,2),Se=P(M(J),2);S(Se,()=>(A(k()),F(()=>`text-color-${k().id}-${k().style?.color||`#ffffff`}`)),e=>{{let t=pe(()=>(A(k()),F(()=>({value:k().style?.color||`#ffffff`,type:`color`}))));db(e,{get prop(){return x(t)},id:`annotation-text-color`,onValueChange:et})}}),o(J);var Y=P(J,2),Ce=P(M(Y),2),we=M(Ce),Te=P(M(we),2),Ee=M(Te);re(Ee);var X=P(Ee,2),De=P(X,2);o(Te),o(we),o(Ce),o(Y);var Oe=P(Y,2),ke=P(M(Oe),2);S(ke,()=>(A(k()),F(()=>`bg-color-${k().id}-${k().style?.backgroundColor||`#000000`}`)),e=>{{let t=pe(()=>(A(k()),F(()=>({value:k().style?.backgroundColor||`#000000`,type:`color`}))));db(e,{get prop(){return x(t)},id:`annotation-bg-color`,onValueChange:tt})}}),o(Oe),o(i),o(t),K(()=>{n=v(t,1,`inspector svelte-1nytthg`,null,n,{left:N()===`left`,"no-animation":ie(),embedded:ae()}),r(s,(A(k()),F(()=>k().content||``))),r(m,(A(k()),F(()=>k().size?.width||540))),r(b,(A(k()),F(()=>k().size?.height||60))),te=v(D,1,`preset-button svelte-1nytthg`,null,te,{active:(k().style?.fontSize||14)===32&&(k().style?.fontWeight||`normal`)===`bold`}),j=v(ne,1,`preset-button svelte-1nytthg`,null,j,{active:(k().style?.fontSize||14)===24&&(k().style?.fontWeight||`normal`)===`bold`}),I=v(oe,1,`preset-button svelte-1nytthg`,null,I,{active:(k().style?.fontSize||14)===18&&(k().style?.fontWeight||`normal`)===`bold`}),R=v(L,1,`preset-button svelte-1nytthg`,null,R,{active:(k().style?.fontSize||14)===14&&(k().style?.fontWeight||`normal`)===`normal`}),r(ce,(A(k()),F(()=>k().style?.fontSize||14))),fe=v(de,1,`align-button svelte-1nytthg`,null,fe,{active:k().style?.textAlign===`left`||!k().style?.textAlign}),he=v(me,1,`align-button svelte-1nytthg`,null,he,{active:k().style?.textAlign===`center`}),G=v(W,1,`align-button svelte-1nytthg`,null,G,{active:k().style?.textAlign===`right`}),ve=v(_e,1,`toggle-button svelte-1nytthg`,null,ve,{active:(k().style?.fontWeight||`normal`)===`bold`}),be=v(ye,1,`toggle-button svelte-1nytthg`,null,be,{active:(k().style?.fontStyle||`normal`)===`italic`}),xe=v(q,1,`toggle-button svelte-1nytthg`,null,xe,{active:(k().style?.fontWeight||`normal`)===`normal`&&(k().style?.fontStyle||`normal`)===`normal`}),r(Ee,(A(k()),F(()=>k().style?.borderRadius||4)))}),O(`input`,s,Ge),O(`input`,m,e=>Je(`width`,e)),O(`wheel`,m,e=>rt(e,100,void 0,10)),O(`click`,h,()=>nt(`annotation-width`,-1,100)),O(`click`,g,()=>nt(`annotation-width`,1,100)),O(`input`,b,e=>Je(`height`,e)),O(`wheel`,b,e=>rt(e,20,void 0,10)),O(`click`,C,()=>nt(`annotation-height`,-1,20)),O(`click`,w,()=>nt(`annotation-height`,1,20)),O(`click`,D,()=>{Ue(`fontSize`,32),Ue(`fontWeight`,`bold`)}),O(`click`,ne,()=>{Ue(`fontSize`,24),Ue(`fontWeight`,`bold`)}),O(`click`,oe,()=>{Ue(`fontSize`,18),Ue(`fontWeight`,`bold`)}),O(`click`,L,()=>{Ue(`fontSize`,14),Ue(`fontWeight`,`normal`)}),O(`input`,ce,e=>Ke(`fontSize`,e)),O(`wheel`,ce,e=>rt(e,8,72,1)),O(`click`,le,()=>nt(`annotation-font-size`,-1,8,72,1)),O(`click`,H,()=>nt(`annotation-font-size`,1,8,72,1)),O(`click`,de,()=>Ue(`textAlign`,`left`)),O(`click`,me,()=>Ue(`textAlign`,`center`)),O(`click`,W,()=>Ue(`textAlign`,`right`)),O(`click`,_e,()=>{Ue(`fontWeight`,(k().style?.fontWeight||`normal`)===`bold`?`normal`:`bold`)}),O(`click`,ye,()=>{Ue(`fontStyle`,(k().style?.fontStyle||`normal`)===`italic`?`normal`:`italic`)}),O(`click`,q,()=>{Ue(`fontWeight`,`normal`),Ue(`fontStyle`,`normal`)}),O(`input`,Ee,e=>Ke(`borderRadius`,e)),O(`wheel`,Ee,e=>rt(e,0,16,1)),O(`click`,X,()=>nt(`annotation-border-radius`,-1,0,16,1)),O(`click`,De,()=>nt(`annotation-border-radius`,1,0,16,1)),E(e,t)},st=e=>{var t=_x();let n;var i=M(t),a=M(i),s=P(M(a),2),c=M(s),l=P(M(c),2);re(l),o(c);var u=P(c,2),d=P(M(u),2);re(d),o(u),o(s),o(a);var f=P(a,2),p=P(M(f),2),m=M(p),h=P(M(m),2);re(h),o(m);var g=P(m,2),_=P(M(g),2);re(_),o(g),o(p),o(f);var y=P(f,2),b=P(M(y),2),x=M(b);re(x);var S=P(x,2);re(S),o(b);var C=P(b,2),w=M(C),T=P(M(w),2),ee=M(T);re(ee);var D=P(ee,2),te=P(D,2);o(T),o(w),o(C),o(y),o(i),o(t),K((e,i,a,o,s)=>{n=v(t,1,`inspector svelte-1nytthg`,null,n,{left:N()===`left`,"no-animation":ie(),embedded:ae()}),r(l,e),r(d,i),r(h,a),r(_,o),r(x,(A(k()),F(()=>k().style?.strokeColor||`#ffffff`))),r(S,s),r(ee,(A(k()),F(()=>k().style?.strokeWidth||2)))},[()=>(A(k()),F(()=>Math.round(k().position.x))),()=>(A(k()),F(()=>Math.round(k().position.y))),()=>(A(k()),F(()=>Math.round(k().endPosition?.x||k().position.x))),()=>(A(k()),F(()=>Math.round(k().endPosition?.y||k().position.y))),()=>(A(k()),F(()=>(k().style?.strokeColor||`#ffffff`).toUpperCase()))]),O(`input`,l,Ye),O(`input`,d,Xe),O(`input`,h,Ze),O(`input`,_,$),O(`input`,x,e=>qe(`strokeColor`,e)),O(`input`,S,Qe),O(`input`,ee,e=>Ke(`strokeWidth`,e)),O(`wheel`,ee,e=>rt(e,1,20,1)),O(`click`,D,()=>nt(`annotation-stroke-width`,-1,1,20,1)),O(`click`,te,()=>nt(`annotation-stroke-width`,1,1,20,1)),E(e,t)},ct=e=>{var t=vx();let n;var i=M(t),a=M(i),s=P(M(a),2),c=M(s),l=P(M(c),2);re(l),o(c);var u=P(c,2),d=P(M(u),2);re(d),o(u),o(s),o(a);var f=P(a,2),p=P(M(f),2),m=M(p);re(m);var h=P(m,2);re(h),o(p);var g=P(p,2),_=M(g),y=P(M(_),2),b=M(y);re(b);var x=P(b,2),S=P(x,2);o(y),o(_),o(g),o(f),o(i),o(t),K((e,i,a)=>{n=v(t,1,`inspector svelte-1nytthg`,null,n,{left:N()===`left`,"no-animation":ie(),embedded:ae()}),r(l,e),r(d,i),r(m,(A(k()),F(()=>k().style?.strokeColor||`#ffffff`))),r(h,a),r(b,(A(k()),F(()=>k().style?.strokeWidth||2)))},[()=>(A(k()),F(()=>Math.round(k().position.x))),()=>(A(k()),F(()=>Math.round(k().position.y))),()=>(A(k()),F(()=>(k().style?.strokeColor||`#ffffff`).toUpperCase()))]),O(`input`,l,Ye),O(`input`,d,Xe),O(`input`,m,e=>qe(`strokeColor`,e)),O(`input`,h,Qe),O(`input`,b,e=>Ke(`strokeWidth`,e)),O(`wheel`,b,e=>rt(e,1,20,1)),O(`click`,x,()=>nt(`annotation-stroke-width`,-1,1,20,1)),O(`click`,S,()=>nt(`annotation-stroke-width`,1,1,20,1)),E(e,t)},lt=e=>{var n=Fx();let i;var a=M(n),s=M(a),l=e=>{var t=yx();E(e,t)};Z(s,e=>{A(T()),F(()=>T().error)&&e(l)});var m=P(s,2),g=e=>{var n=te(),i=G(n);f(i,1,()=>(x(w),F(()=>Object.entries(x(w)))),h,(e,n)=>{let i=pe(()=>{let[e,t]=x(n);return{folder:e,folderProps:t}});var a=te(),s=G(a),c=e=>{{let n=pe(()=>(x(Ve),A(x(i).folder),F(()=>x(Ve)[x(i).folder]??!0)));Ib(e,{get folderName(){return x(i).folder},get isExpanded(){return x(n)},$$events:{toggle:()=>He(x(i).folder)},children:(e,n)=>{var a=te(),s=G(a);f(s,1,()=>x(i).folderProps,h,(e,n)=>{let a=pe(()=>x(n)),s=pe(()=>(A(T()),A(x(a).key),A(x(i).folder),F(()=>`prop-${T().id}-${x(a).key}-${x(i).folder}`))),c=pe(()=>x(a).controlType===`vec2`||x(a).controlType===`vec3`||x(a).controlType===`vec2i`||x(a).controlType===`vec3i`||x(a).controlType===`vector`);var l=wx();let u;var d=M(l),f=e=>{var n=xx(),r=G(n),i=q(r,!0);t(r,(e,t)=>je?.(e,t),()=>x(a).key),t(r,(e,t)=>Me?.(e,t),()=>x(a).key);var c=P(r,2),l=e=>{var t=te(),n=G(t);S(n,()=>`${x(a).key}-${x(ke)}`,e=>{var t=bx();bo(M(t),{size:9}),o(t),K(e=>v(t,1,`key-toggle ${e??``}`,`svelte-1nytthg`),[()=>(A(T()),A(cx),A(x(a).key),F(()=>T()?cx(T(),x(a).key):`none`))]),O(`click`,t,I(()=>Ne(x(a).key))),E(e,t)}),E(e,t)},u=B(()=>(A(fx),A(x(a).prop),F(()=>fx(x(a).prop.value))));Z(c,e=>{x(u)&&e(l)}),K(()=>{X(r,`for`,x(s)),D(i,x(a).displayName)}),E(e,n)};Z(d,e=>{x(a).displayName!==null&&e(f)});var p=P(d,2),m=e=>{var t=te(),n=G(t);S(n,()=>(A(x(a).key),A(x(a).prop),F(()=>`${x(a).key}-${x(a).prop.value}-${x(a).prop.expression}-${JSON.stringify(x(a).prop.params)}`)),e=>{ax(e,{get prop(){return x(a).prop},get propKey(){return x(a).key},get node(){return T()},onValueChange:e=>Le([x(a).key,x(a).prop],e),children:(e,t)=>{Yy(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},$$slots:{default:!0}})}),E(e,t)},h=e=>{var t=te(),n=G(t);S(n,()=>(A(x(a).key),A(x(a).prop),x(b),x(xe),F(()=>`${x(a).key}-${JSON.stringify(x(a).prop.value)}-${x(a).prop.expression}-${x(b)}-${x(xe)}`)),e=>{ax(e,{get prop(){return x(a).prop},get propKey(){return x(a).key},get node(){return T()},onValueChange:e=>Le([x(a).key,x(a).prop],e),children:(e,t)=>{ib(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},$$slots:{default:!0}})}),E(e,t)},g=e=>{var t=te(),n=G(t);S(n,()=>(A(x(a).key),A(x(a).prop),F(()=>`${x(a).key}-${JSON.stringify(x(a).prop.value)}-${x(a).prop.expression}`)),e=>{ax(e,{get prop(){return x(a).prop},get propKey(){return x(a).key},get node(){return T()},onValueChange:e=>Le([x(a).key,x(a).prop],e),children:(e,t)=>{db(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},$$slots:{default:!0}})}),E(e,t)},_=e=>{Ub(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},y=e=>{vb(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},C=e=>{var t=te(),n=G(t);S(n,()=>(A(x(a).key),A(x(a).prop),F(()=>`${x(a).key}-${x(a).prop.expression}`)),e=>{ax(e,{get prop(){return x(a).prop},get propKey(){return x(a).key},get node(){return T()},onValueChange:e=>Le([x(a).key,x(a).prop],e),children:(e,t)=>{var n=te(),i=G(n),o=e=>{var t=Sx();z(t),K(()=>{X(t,`id`,x(s)),r(t,(A(x(a).prop),F(()=>x(a).prop.value||``)))}),O(`input`,t,e=>ze([x(a).key,x(a).prop],e)),E(e,t)},c=e=>{var t=Cx();re(t),K(()=>{X(t,`id`,x(s)),r(t,(A(x(a).prop),F(()=>x(a).prop.value||``)))}),O(`input`,t,e=>Re([x(a).key,x(a).prop],e)),E(e,t)};Z(i,e=>{x(a).controlType===`textarea`?e(o):e(c,-1)}),E(e,n)},$$slots:{default:!0}})}),E(e,t)},w=e=>{var t=te(),n=G(t);S(n,()=>(A(x(a).key),A(x(a).prop),F(()=>`${x(a).key}-${x(a).prop.value}-${x(a).prop.expression}`)),e=>{ax(e,{get prop(){return x(a).prop},get propKey(){return x(a).key},get node(){return T()},onValueChange:e=>Le([x(a).key,x(a).prop],e),children:(e,t)=>{Nb(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},$$slots:{default:!0}})}),E(e,t)},ee=e=>{var t=te(),n=G(t);S(n,()=>(A(x(a).key),A(x(a).prop),F(()=>`${x(a).key}-${x(a).prop.value}-${x(a).prop.expression}`)),e=>{ax(e,{get prop(){return x(a).prop},get propKey(){return x(a).key},get node(){return T()},onValueChange:e=>Le([x(a).key,x(a).prop],e),children:(e,t)=>{Eb(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},$$slots:{default:!0}})}),E(e,t)},k=e=>{jb(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:()=>{typeof x(a).prop.value==`function`&&x(a).prop.value(),typeof x(a).prop.onChange==`function`&&x(a).prop.onChange(x(a).prop,!0)}})},ne=e=>{var t=Cx();re(t),K(e=>{X(t,`id`,x(s)),r(t,e)},[()=>(A(x(a).prop),F(()=>String(x(a).prop.value||``)))]),O(`input`,t,e=>Re([x(a).key,x(a).prop],e)),E(e,t)};Z(p,e=>{x(a).controlType===`number`||x(a).controlType===`slider`||x(a).controlType===`int`?e(m):x(c)?e(h,1):x(a).controlType===`color`?e(g,2):x(a).controlType===`colorramp`?e(_,3):(A(x(a).controlType),A(x(a).prop),F(()=>x(a).controlType===`image`||x(a).controlType===`text`&&x(a).prop.params?.accept)?e(y,4):x(a).controlType===`text`||x(a).controlType===`textarea`?e(C,5):x(a).controlType===`boolean`?e(w,6):(A(x(a).controlType),A(x(a).prop),F(()=>x(a).controlType===`select`&&x(a).prop.params?.options)?e(ee,7):x(a).controlType===`button`?e(k,8):e(ne,-1)))}),o(l),K(()=>u=v(l,1,`prop-group svelte-1nytthg`,null,u,{"prop-group-row":x(c)})),E(e,l)}),E(e,a)},$$slots:{default:!0}})}},l=e=>{var n=te(),a=G(n);f(a,1,()=>x(i).folderProps,h,(e,n)=>{let a=pe(()=>x(n)),s=pe(()=>(A(T()),A(x(a).key),A(x(i).folder),F(()=>`prop-${T().id}-${x(a).key}-${x(i).folder}`))),c=pe(()=>x(a).controlType===`vec2`||x(a).controlType===`vec3`||x(a).controlType===`vec2i`||x(a).controlType===`vec3i`||x(a).controlType===`vector`);var l=wx();let u;var d=M(l),f=e=>{var n=xx(),r=G(n),i=q(r,!0);t(r,(e,t)=>je?.(e,t),()=>x(a).key),t(r,(e,t)=>Me?.(e,t),()=>x(a).key);var c=P(r,2),l=e=>{var t=te(),n=G(t);S(n,()=>`${x(a).key}-${x(ke)}`,e=>{var t=bx();bo(M(t),{size:9}),o(t),K(e=>v(t,1,`key-toggle ${e??``}`,`svelte-1nytthg`),[()=>(A(T()),A(cx),A(x(a).key),F(()=>T()?cx(T(),x(a).key):`none`))]),O(`click`,t,I(()=>Ne(x(a).key))),E(e,t)}),E(e,t)},u=B(()=>(A(fx),A(x(a).prop),F(()=>fx(x(a).prop.value))));Z(c,e=>{x(u)&&e(l)}),K(()=>{X(r,`for`,x(s)),D(i,x(a).displayName)}),E(e,n)};Z(d,e=>{x(a).displayName!==null&&e(f)});var p=P(d,2),m=e=>{ax(e,{get prop(){return x(a).prop},get propKey(){return x(a).key},get node(){return T()},onValueChange:e=>Le([x(a).key,x(a).prop],e),children:(e,t)=>{Yy(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},$$slots:{default:!0}})},h=e=>{var t=te(),n=G(t);S(n,()=>(A(x(a).key),A(x(a).prop),x(b),x(xe),F(()=>`${x(a).key}-${JSON.stringify(x(a).prop.value)}-${x(a).prop.expression}-${x(b)}-${x(xe)}`)),e=>{ax(e,{get prop(){return x(a).prop},get propKey(){return x(a).key},get node(){return T()},onValueChange:e=>Le([x(a).key,x(a).prop],e),children:(e,t)=>{ib(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},$$slots:{default:!0}})}),E(e,t)},g=e=>{var t=te(),n=G(t);S(n,()=>(A(x(a).key),A(x(a).prop),F(()=>`${x(a).key}-${JSON.stringify(x(a).prop.value)}-${x(a).prop.expression}`)),e=>{ax(e,{get prop(){return x(a).prop},get propKey(){return x(a).key},get node(){return T()},onValueChange:e=>Le([x(a).key,x(a).prop],e),children:(e,t)=>{db(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},$$slots:{default:!0}})}),E(e,t)},_=e=>{Ub(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},y=e=>{vb(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},C=e=>{var t=te(),n=G(t);S(n,()=>(A(x(a).key),A(x(a).prop),F(()=>`${x(a).key}-${x(a).prop.expression}`)),e=>{ax(e,{get prop(){return x(a).prop},get propKey(){return x(a).key},get node(){return T()},onValueChange:e=>Le([x(a).key,x(a).prop],e),children:(e,t)=>{var n=te(),i=G(n),o=e=>{var t=Sx();z(t),K(()=>{X(t,`id`,x(s)),r(t,(A(x(a).prop),F(()=>x(a).prop.value||``)))}),O(`input`,t,e=>ze([x(a).key,x(a).prop],e)),E(e,t)},c=e=>{var t=Cx();re(t),K(()=>{X(t,`id`,x(s)),r(t,(A(x(a).prop),F(()=>x(a).prop.value||``)))}),O(`input`,t,e=>Re([x(a).key,x(a).prop],e)),E(e,t)};Z(i,e=>{x(a).controlType===`textarea`?e(o):e(c,-1)}),E(e,n)},$$slots:{default:!0}})}),E(e,t)},w=e=>{var t=te(),n=G(t);S(n,()=>(A(x(a).key),A(x(a).prop),F(()=>`${x(a).key}-${x(a).prop.value}-${x(a).prop.expression}`)),e=>{ax(e,{get prop(){return x(a).prop},get propKey(){return x(a).key},get node(){return T()},onValueChange:e=>Le([x(a).key,x(a).prop],e),children:(e,t)=>{Nb(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},$$slots:{default:!0}})}),E(e,t)},ee=e=>{var t=te(),n=G(t);S(n,()=>(A(x(a).key),A(x(a).prop),F(()=>`${x(a).key}-${x(a).prop.value}-${x(a).prop.expression}`)),e=>{ax(e,{get prop(){return x(a).prop},get propKey(){return x(a).key},get node(){return T()},onValueChange:e=>Le([x(a).key,x(a).prop],e),children:(e,t)=>{Eb(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:e=>Le([x(a).key,x(a).prop],e)})},$$slots:{default:!0}})}),E(e,t)},k=e=>{jb(e,{get prop(){return x(a).prop},get id(){return x(s)},onValueChange:()=>{typeof x(a).prop.value==`function`&&x(a).prop.value(),typeof x(a).prop.onChange==`function`&&x(a).prop.onChange(x(a).prop,!0)}})},ne=e=>{var t=Cx();re(t),K(e=>{X(t,`id`,x(s)),r(t,e)},[()=>(A(x(a).prop),F(()=>String(x(a).prop.value||``)))]),O(`input`,t,e=>Re([x(a).key,x(a).prop],e)),E(e,t)};Z(p,e=>{x(a).controlType===`number`||x(a).controlType===`slider`||x(a).controlType===`int`?e(m):x(c)?e(h,1):x(a).controlType===`color`?e(g,2):x(a).controlType===`colorramp`?e(_,3):(A(x(a).controlType),A(x(a).prop),F(()=>x(a).controlType===`image`||x(a).controlType===`text`&&x(a).prop.params?.accept)?e(y,4):x(a).controlType===`text`||x(a).controlType===`textarea`?e(C,5):x(a).controlType===`boolean`?e(w,6):(A(x(a).controlType),A(x(a).prop),F(()=>x(a).controlType===`select`&&x(a).prop.params?.options)?e(ee,7):x(a).controlType===`button`?e(k,8):e(ne,-1)))}),o(l),K(()=>u=v(l,1,`prop-group svelte-1nytthg`,null,u,{"prop-group-row":x(c)})),E(e,l)}),E(e,n)};Z(s,e=>{x(i).folder===`General`?e(l,-1):e(c)}),E(e,a)}),E(e,n)};Z(m,e=>{x(C),F(()=>x(C).length>0)&&e(g)});var _=P(m,2),y=e=>{var t=Tx(),n=M(t),r=M(n),i=q(r,!0),a=P(r,2),s=q(a,!0);o(n);var l=P(n,2),u=e=>{var t=te(),n=G(t);S(n,()=>(A(T()),x(xe),x(b),x(U),F(()=>`${T().id}-${x(xe)}-${x(b)}-${x(U)}`)),e=>{var t=te(),n=G(t);f(n,1,()=>x(d),e=>e.id,(e,t)=>{Gy(e,{get port(){return x(t)},get node(){return T()},direction:`input`,onChange:e=>Ce(x(t),e)})}),E(e,t)}),E(e,t)};Z(l,e=>{x(c),F(()=>x(c).inputs)&&e(u)}),o(t),K(()=>{D(i,(x(c),F(()=>x(c).inputs?`▾`:`▸`))),D(s,(x(d),F(()=>x(d).length)))}),O(`click`,n,()=>ge(T().id,`inputs`)),E(e,t)};Z(_,e=>{x(d),F(()=>x(d).length>0)&&e(y)});var ee=P(_,2),k=e=>{var n=jx(),r=M(n),i=M(r),a=q(i,!0),s=P(i,2),l=q(s,!0);o(r);var u=P(r,2),d=e=>{var n=te(),r=G(n);S(r,()=>(A(T()),F(()=>T().id)),e=>{var n=te(),r=G(n);f(r,1,()=>x(p),e=>e.name,(e,n)=>{let r=pe(()=>(x(n),F(()=>Fe(x(n).name)))),i=pe(()=>(A(x(r)),F(()=>!!x(r)&&(x(r).type===`number`||x(r).type===`int`))));var a=Ax(),s=M(a),c=e=>{var t=Ex(),r=M(t),i=q(r,!0),a=P(r,2);{let e=pe(()=>(x(n),F(()=>({name:`Selected`,dataType:x(n).dataType,value:x(n).value,connections:[],options:{}}))));Gy(a,{get port(){return x(e)},get node(){return T()},direction:`output`})}o(t),K(()=>D(i,(x(n),F(()=>x(n).options?.label??x(n).name)))),O(`click`,r,()=>De(x(n))),E(e,t)},l=e=>{var i=Ox(),a=M(i),s=M(a),c=q(s,!0);t(s,(e,t)=>Me?.(e,t),()=>x(n).name);var l=P(s,2);S(l,()=>(x(n),x(ke),F(()=>`${x(n).name}-${x(ke)}`)),e=>{var t=Dx();bo(M(t),{size:9}),o(t),K(e=>v(t,1,`key-toggle ${e??``}`,`svelte-1nytthg`),[()=>(A(T()),A(cx),x(n),F(()=>T()?cx(T(),x(n).name):`none`))]),O(`click`,t,I(()=>Ne(x(n).name))),E(e,t)}),o(a);var u=P(a,2);S(u,()=>(x(n),A(x(r)),x(ke),F(()=>`${x(n).name}-${x(r).expression??``}-${x(ke)}`)),e=>{ax(e,{get prop(){return x(r)},get propKey(){return x(n),F(()=>x(n).name)},get node(){return T()},onValueChange:e=>Te(x(n),e),children:(e,t)=>{{let t=pe(()=>(A(T()),x(n),F(()=>`param-${T().id}-${x(n).name}`)));Yy(e,{get prop(){return x(r)},get id(){return x(t)},onValueChange:e=>Te(x(n),e),onExpressionChange:e=>Ie(x(n).name,e)})}},$$slots:{default:!0}})}),o(i),K(e=>{X(s,`title`,e),D(c,(x(n),F(()=>x(n).options?.label??x(n).name)))},[()=>(x(n),A(Yl),F(()=>`${x(n).options?.label??x(n).name} · ${Yl(x(n).dataType)}`))]),E(e,i)},u=e=>{var t=te(),i=G(t);S(i,()=>(x(n),A(x(r)),x(ke),F(()=>`${x(n).name}-${x(r).expression??``}-${x(ke)}`)),e=>{ax(e,{get prop(){return x(r)},get propKey(){return x(n),F(()=>x(n).name)},get node(){return T()},onValueChange:e=>Te(x(n),e),children:(e,t)=>{{let t=pe(()=>(x(n),F(()=>({name:x(n).options?.label??x(n).name,dataType:x(n).dataType,value:x(n).value,connections:[],options:x(n).options??{}}))));Gy(e,{get port(){return x(t)},get node(){return T()},direction:`input`,onChange:e=>Te(x(n),e)})}},$$slots:{default:!0}})}),E(e,t)},d=e=>{{let t=pe(()=>(x(n),F(()=>({name:x(n).options?.label??x(n).name,dataType:x(n).dataType,value:x(n).value,connections:[],options:x(n).options??{}}))));Gy(e,{get port(){return x(t)},get node(){return T()},direction:`input`,onChange:e=>Te(x(n),e)})}};Z(s,e=>{x(n),F(()=>x(n).options?.action)?e(c):x(i)&&x(r)?e(l,1):x(r)?e(u,2):e(d,-1)});var f=P(s,2),p=e=>{var t=kx();let r;var i=q(t,!0);K(()=>{r=v(t,1,`promote svelte-1nytthg`,null,r,{on:x(n).promoted}),X(t,`title`,(x(n),F(()=>x(n).promoted?`Demote back to a parameter — removes the pin and any wire into it`:`Promote to an input pin so it can be driven from another node`))),D(i,(x(n),F(()=>x(n).promoted?`pin ✓`:`pin`)))}),O(`click`,t,()=>Oe(x(n))),E(e,t)};Z(f,e=>{x(n),F(()=>!x(n).options?.action&&x(n).options?.promotable!==!1)&&e(p)}),o(a),t(a,(e,t)=>je?.(e,t),()=>x(n).name),E(e,a)}),E(e,n)}),E(e,n)};Z(u,e=>{x(c),F(()=>x(c).params)&&e(d)}),o(n),K(()=>{D(a,(x(c),F(()=>x(c).params?`▾`:`▸`))),D(l,(x(p),F(()=>x(p).length)))}),O(`click`,r,()=>ge(T().id,`params`)),E(e,n)};Z(ee,e=>{x(p),F(()=>x(p).length>0)&&e(k)});var ne=P(ee,2),j=e=>{var t=Mx(),n=M(t),r=M(n),i=q(r,!0),a=P(r,2),s=q(a,!0);o(n);var l=P(n,2),d=e=>{var t=te(),n=G(t);S(n,()=>(A(T()),x(xe),x(b),x(U),F(()=>`${T().id}-${x(xe)}-${x(b)}-${x(U)}`)),e=>{var t=te(),n=G(t);f(n,1,()=>x(u),e=>e.id,(e,t)=>{Gy(e,{get port(){return x(t)},get node(){return T()},direction:`output`,onChange:void 0})}),E(e,t)}),E(e,t)};Z(l,e=>{x(c),F(()=>x(c).outputs)&&e(d)}),o(t),K(()=>{D(i,(x(c),F(()=>x(c).outputs?`▾`:`▸`))),D(s,(x(u),F(()=>x(u).length)))}),O(`click`,n,()=>ge(T().id,`outputs`)),E(e,t)};Z(ne,e=>{x(u),F(()=>x(u).length>0)&&e(j)});var oe=P(ne,2),L=e=>{var t=Nx();E(e,t)};Z(oe,e=>{x(C),x(d),x(p),x(u),F(()=>x(C).length===0&&x(d).length===0&&x(p).length===0&&x(u).length===0)&&e(L)});var R=P(oe,2),se=e=>{var t=Px(),n=M(t),r=q(n,!0);o(t),K(()=>D(r,(A(T()),F(()=>T().comment)))),E(e,t)};Z(R,e=>{A(T()),F(()=>T().comment)&&e(se)}),o(a),o(n),K(()=>i=v(n,1,`inspector svelte-1nytthg`,null,i,{left:N()===`left`,"no-animation":ie(),embedded:ae()})),E(e,n)};Z(at,e=>{A(k()),F(()=>k()&&k().type===`text`)?e(ot):(A(k()),F(()=>k()&&k().type===`line`)?e(st,1):(A(k()),F(()=>k()&&k().type===`polyline`)?e(ct,2):T()&&e(lt,3)))}),E(e,it),Ee(),s()}var Lx=u(`<span class="hint svelte-i5w4kg">collapsed, open one to edit it</span>`),Rx=u(`<div class="body svelte-i5w4kg"><!></div>`),zx=u(`<section class="section svelte-i5w4kg"><button class="section-heading svelte-i5w4kg"><span class="twisty svelte-i5w4kg"> </span> <span class="label svelte-i5w4kg"> </span> <span class="type svelte-i5w4kg"> </span></button> <!></section>`),Bx=u(`<div class="stack svelte-i5w4kg"><div class="summary svelte-i5w4kg"><span class="count"> </span> <!></div> <div class="sections svelte-i5w4kg"></div></div>`);function Vx(e,t){ee(t,!1);let n=Y(),r=V(t,`nodes`,24,()=>[]),i=V(t,`annotation`,8,null),a=V(t,`graph`,8,null),s=V(t,`position`,8,`right`),c=V(t,`skipAnimation`,8,!1),l=V(t,`onRecordHistory`,8,void 0),u=V(t,`onAction`,8,void 0),d=new Map,p=Y(0);function m(e){d.set(e,!h(e,x(p),x(n))),L(p,x(p)+1)}function h(e,t,n){return d.get(e)??!n}function g(e){return e.id}J(()=>A(r()),()=>{L(n,r().length>12)}),he(),ue();var _=te(),v=G(_),y=e=>{{let t=pe(()=>(A(r()),F(()=>r()[0]??null)));Ix(e,{get node(){return x(t)},get annotation(){return i()},get graph(){return a()},get position(){return s()},get skipAnimation(){return c()},get onRecordHistory(){return l()},get onAction(){return u()}})}},b=e=>{var t=Bx(),i=M(t),c=M(i),d=q(c),_=P(c,2),v=e=>{var t=Lx();E(e,t)};Z(_,e=>{x(n)&&e(v)}),o(i);var y=P(i,2);f(y,5,r,e=>e.id,(e,t)=>{let r=pe(()=>(x(t),x(p),x(n),F(()=>h(x(t).id,x(p),x(n)))));var i=zx(),c=M(i),d=M(c),f=q(d,!0),_=P(d,2),v=q(_,!0),y=P(_,2),b=q(y,!0);o(c);var S=P(c,2),C=e=>{var n=Rx();Ix(M(n),{get node(){return x(t)},get graph(){return a()},get position(){return s()},skipAnimation:!0,embedded:!0,get onRecordHistory(){return l()},get onAction(){return u()}}),o(n),E(e,n)};Z(S,e=>{x(r)&&e(C)}),o(i),K(e=>{X(c,`aria-expanded`,x(r)),D(f,x(r)?`▾`:`▸`),D(v,e),D(b,(x(t),F(()=>x(t).type??``)))},[()=>(x(t),F(()=>g(x(t))))]),O(`click`,c,()=>m(x(t).id)),E(e,i)}),o(y),o(t),K(()=>D(d,`${A(r()),F(()=>r().length)??``} nodes selected`)),E(e,t)};Z(v,e=>{A(r()),F(()=>r().length<=1)?e(y):e(b,-1)}),E(e,_),Ee()}var Hx=u(`<div class="panel-wrapper svelte-z0ewp0"><!></div>`);function Ux(e,t){ee(t,!1);let n=()=>we(_a,`$panelLockStore`,a),r=()=>we(B_,`$selectedNodeIds`,a),i=()=>we(ga,`$sharedContextStore`,a),[a,s]=ne(),c=Y(),l=Y(),u=Y(),d=Y(),f=Y(),p=V(t,`panelId`,8),m=V(t,`panelApi`,8),h=V(t,`graph`,12,void 0),g=V(t,`selectedNode`,12,null),_=V(t,`selectedAnnotation`,12,null),v=V(t,`onRecordHistory`,12,void 0),y=V(t,`onPanelAction`,12,void 0),b=Y(null);J(()=>(n(),A(p())),()=>{L(c,n().get(p()))}),J(()=>x(c),()=>{L(l,x(c)?.isLocked??!1)}),J(()=>i(),()=>{i()&&(h(i().graph),g(i().selectedNode),_(i().selectedAnnotation),v(i().onRecordHistory),y(i().onPanelAction))}),J(()=>(x(l),x(c),A(g())),()=>{L(u,x(l)?x(c)?.lockedNode:g())}),J(()=>(x(l),x(c),A(_())),()=>{L(d,x(l)?x(c)?.lockedAnnotationId:_())}),J(()=>(x(l),x(u),A(h()),r(),A(g())),()=>{L(f,x(l)?x(u)?[x(u)]:[]:H_(h()??null,r(),g()))}),J(()=>(A(h()),x(d)),()=>{h()&&x(d)?L(b,h().getAnnotation(x(d))):L(b,null)}),J(()=>(A(m()),x(l),x(f),x(b)),()=>{if(m()?.setTitle){let e=x(l)?`~ `:``;x(f).length>1?m().setTitle(`${e}Parameters: ${x(f).length} nodes`):x(f).length===1?m().setTitle(`${e}Parameters: ${x(f)[0].id}`):x(b)?m().setTitle(`${e}Parameters: ${x(b).type}`):m().setTitle(`${e}Parameters`)}}),he(),ue();var S=Hx(),C=M(S);{let e=pe(()=>h()??null);Vx(C,{get nodes(){return x(f)},get annotation(){return x(b)},get graph(){return x(e)},position:`right`,skipAnimation:!0,get onRecordHistory(){return v()},get onAction(){return y()}})}o(S),E(e,S),Ee(),s()}function Wx(e){let t=new Uint8Array(e);if(String.fromCharCode(...t.subarray(0,6))!==`NUMPY`)throw Error(`not a .npy file`);let n=new DataView(e),r=t[6],i=r>=2?n.getUint32(8,!0):n.getUint16(8,!0),a=r>=2?12:10,o=String.fromCharCode(...t.subarray(a,a+i)),s=o.match(/'descr':\s*'([^']+)'/)?.[1];if(!s)throw Error(`.npy header has no dtype`);if(/'fortran_order':\s*True/.test(o))throw Error(`Fortran-ordered .npy is not supported`);let c=(o.match(/'shape':\s*\(([^)]*)\)/)?.[1]??``).split(`,`).map(e=>e.trim()).filter(Boolean).map(Number),l=a+i,u=c.reduce((e,t)=>e*t,1);if(s===`<f4`||s===`=f4`)return{data:new Float32Array(e,l,u),shape:c,dtype:s};let d=(()=>{switch(s){case`<f8`:case`=f8`:return new Float64Array(e,l,u);case`|u1`:case`<u1`:case`=u1`:case`|b1`:return new Uint8Array(e,l,u);case`|i1`:return new Int8Array(e,l,u);case`<i2`:return new Int16Array(e,l,u);case`<u2`:return new Uint16Array(e,l,u);case`<i4`:return new Int32Array(e,l,u);case`<u4`:return new Uint32Array(e,l,u);default:throw Error(`.npy dtype ${s} is not supported`)}})();return{data:d instanceof Float64Array?d:Float64Array.from(d),shape:c,dtype:s}}var Gx=1400,Kx=1e5;function qx(e,t,n){t<e.minX&&(e.minX=t),n<e.minY&&(e.minY=n),t>e.maxX&&(e.maxX=t),n>e.maxY&&(e.maxY=n)}function Jx(){return{minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}async function Yx(e){if(e&&typeof e==`object`&&e.kind===`geometry-file`){let t=e;if(t.format!==`npy`||t.attribute?.level!==`point`||t.attribute?.name!==`P`)return[];e=t.path}if(typeof e==`string`){if(!e.endsWith(`.npy`))return[];let t=e.replace(/^\.?\//,``),n=await fetch(`/api/media/${t.split(`/`).map(encodeURIComponent).join(`/`)}?raw=1`);if(!n.ok)return[];let r=Wx(await n.arrayBuffer()),i=r.shape.length>1?r.shape[1]:1;if(i<2)return[];let a=[];for(let e=0;e+1<r.data.length;e+=i)a.push([r.data[e],r.data[e+1]]);return a}let t=Array.isArray(e)?e:e?.points;return Array.isArray(t)?t.map(e=>Array.isArray(e)?e:e?.point??e?.position).filter(e=>Array.isArray(e)&&e.length>=2).map(e=>[Number(e[0]),Number(e[1])]):[]}function Xx(e){let t=Array.isArray(e)?e:e?.polylines??e?.paths;return Array.isArray(t)?t.map(e=>{let t=Array.isArray(e)?e:e?.points??e?.path;return Array.isArray(t)?t.filter(e=>Array.isArray(e)&&e.length>=2).map(e=>[Number(e[0]),Number(e[1])]):null}).filter(e=>!!(e&&e.length>1)):[]}function Zx(e){let t=Array.isArray(e)?e:e?.segments??e?.lines;if(!Array.isArray(t))return[];let n=[];for(let e of t)Array.isArray(e)&&(e.length>=4&&typeof e[0]==`number`?n.push([[Number(e[0]),Number(e[1])],[Number(e[2]),Number(e[3])]]):Array.isArray(e[0])&&e.length>=2&&n.push(e.slice(0,2).map(e=>[Number(e[0]),Number(e[1])])));return n}async function Qx(e,t){let n=Jx(),r=t===`geometry`?bv(e,Kx):null,i=t===`geometry`?r?.points??[]:t===`points`?await Yx(e):[],a=t===`geometry`?r?.paths??[]:t===`polyline`?Xx(e):[],o=t===`lines`?Zx(e):[],s=t===`rects`?Array.isArray(e)?e:e?.rects:[],c=Array.isArray(s)?s.map(e=>Array.isArray(e)?e:e?.rect??[e?.x,e?.y,e?.width,e?.height]).filter(e=>Array.isArray(e)&&e.length>=4&&e.every(Number.isFinite)):[];if(i.forEach(([e,t])=>qx(n,e,t)),a.forEach(e=>e.forEach(([e,t])=>qx(n,e,t))),o.forEach(e=>e.forEach(([e,t])=>qx(n,e,t))),c.forEach(([e,t,r,i])=>{qx(n,e,t),qx(n,e+r,t+i)}),!Number.isFinite(n.minX)||!Number.isFinite(n.maxX))return null;let l=Math.max(n.maxX-n.minX,1),u=Math.max(n.maxY-n.minY,1),d=Gx/Math.max(l,u),f=Math.max(1,Math.round(l*d)),p=Math.max(1,Math.round(u*d)),m=document.createElement(`canvas`);m.width=f,m.height=p;let h=m.getContext(`2d`);if(!h)return null;h.fillStyle=`#ffffff`,h.fillRect(0,0,f,p);let g=e=>(e-n.minX)*d,_=e=>(t===`geometry`?n.maxY-e:e-n.minY)*d;h.fillStyle=`#111111`,h.strokeStyle=`#111111`,h.lineWidth=1;let v=i.length>4e3?.6:i.length>800?1:1.8;for(let[e,t]of i)h.beginPath(),h.arc(g(e),_(t),v,0,Math.PI*2),h.fill();for(let e of a)h.beginPath(),e.forEach(([e,t],n)=>n===0?h.moveTo(g(e),_(t)):h.lineTo(g(e),_(t))),h.stroke();for(let[e,t]of o)h.beginPath(),h.moveTo(g(e[0]),_(e[1])),h.lineTo(g(t[0]),_(t[1])),h.stroke();for(let[e,t,n,r]of c)h.strokeRect(g(e),_(t),n*d,r*d);let y=t===`geometry`?r?.summary??`No geometry`:t===`points`?`${i.length.toLocaleString()} points`:t===`polyline`?`${a.length.toLocaleString()} chains · ${a.reduce((e,t)=>e+t.length,0).toLocaleString()} vertices`:t===`lines`?`${o.length.toLocaleString()} segments`:`${c.length.toLocaleString()} rects`;return!i.length&&!a.length&&!o.length&&!c.length?null:{url:m.toDataURL(`image/png`),width:f,height:p,summary:y}}var $x=2e5;function eS(e){if(!e)return`none`;let t=e.length;if(t===0)return`empty`;let n=t>$x?Math.ceil(t/$x):1,r=2166136261;for(let i=0;i<t;i+=n){let t=e[i],n=Number.isFinite(t)?Math.round(t*4096)|0:2147483647;r^=n&255,r=Math.imul(r,16777619),r^=n>>>8&255,r=Math.imul(r,16777619),r^=n>>>16&255,r=Math.imul(r,16777619),r^=n>>>24&255,r=Math.imul(r,16777619)}return`${t}/${n}:${(r>>>0).toString(36)}`}function tS(e){return!!e&&typeof e==`object`&&e.kind===`geometry`&&typeof e.pointCount==`number`}function nS(e){let t=[`geometry:${e.pointCount}/${e.vertexCount??0}/${e.primitiveCount??0}`],n=e.point??{};for(let e of Object.keys(n).sort()){let r=n[e];t.push(`${e}${r?.size??``}=${eS(r?.data)}`)}return t.push(`t=${eS(e.topology?.offsets)}`),t.join(`|`)}function rS(e){if(e===void 0)return`undefined`;if(e===null)return`null`;if(typeof e!=`object`)return`${typeof e}:${String(e).slice(0,80)}`;if(tS(e))return nS(e);if(e.kind===`geometry-file`)return`geometry-file:${e.path}:${e.pointCount??``}:${e.attribute?.name??``}`;if(ArrayBuffer.isView(e))return`buffer:${eS(e)}`;let t=eu(e);return t?`image:${t.path}:${t.size.join(`x`)}`:Array.isArray(e)?`array:${e.length}`:`object:${e.width??``}x${e.height??``}:${e.size?.join?.(`x`)??``}`}function iS(e){return[e.nodeId??`view`,e.portId??`port`,e.kind,e.cookVersion,rS(e.value)].join(`:`)}var aS=u(`<button><span class="output-dot svelte-1p3xo7r"></span> </button>`),oS=u(`<div class="output-switcher svelte-1p3xo7r" aria-label="Node outputs"></div>`),sS=u(`<div class="typed-viewer svelte-1p3xo7r"><!></div>`),cS=u(`<div class="viewer-wrapper svelte-1p3xo7r"><!> <div></div> <!></div>`);function lS(e,t){ee(t,!1);let n=Y(),r=Y(),i=Y(),s=V(t,`graph`,8),c=V(t,`selectedNode`,8,null),l=V(t,`selectedAnnotation`,8,null),u=Y(),d=Y(`empty`),p=Y(null),m=Y(null),h=Y(null),g=Y(0),_=Y(0),y=``,b=Y(null),C=Y(null),w=Y(null),T=new Map,te=/\.(png|jpe?g|webp|gif|tiff?|avif|svg|npy)$/i,k=[`path`,`preview`,`image`,`png_path`,`output`,`svg_path`,`field`,`mask`,`height`,`shading`,`density`,`points`];function ne(e){return x(p)?.outputs?.filter(e=>e.value!==void 0)??[]}function j(){let e=x(p)?`${x(p).id}:${x(p).cookInfo?.cookCount??0}:${x(p).outputs?.map(e=>`${e.id}=${rS(e.value)}`).join(`|`)}`:``;e!==y&&(y=e,L(_,x(_)+1),re())}function re(){let e=x(u)?.querySelector(`img[data-cascade-src]`);if(!e||e.dataset.cascadeSrc!==ce())return;let t=e[le];typeof t==`function`&&e.dataset.cascadeVersion!==String(x(_))&&t(x(_))}function N(e){let t=eu(e);return t&&(typeof e!=`string`||te.test(t.path))?t.path:null}function ie(e){if(!e?.outputs)return null;if(e===x(p)&&x(r)){let e=N(x(r).value);if(e)return e}let t=k.map(t=>e.outputs.find(e=>e.name===t)).find(e=>N(e?.value));if(t)return N(t.value);let n=e.outputs.find(e=>N(e?.value));return n?N(n.value):null}function ae(){let e=x(u)?.clientWidth||800,t=Math.min(window.devicePixelRatio||1,2);return Math.max(320,Math.min(3e3,Math.round(e*t)))}function I(){if(!x(u)||!x(p))return;oe(u,x(u).innerHTML=``);let e=null,t=x(r);if(t?.value&&(t.value instanceof HTMLCanvasElement?e=t.value:t.value instanceof pg&&(e=t.value.toCanvas())),!e&&x(p).preview instanceof HTMLCanvasElement&&(e=x(p).preview),e){let t=document.createElement(`div`);t.className=`canvas-viewer`,t.style.width=`100%`,t.style.height=`100%`,t.style.display=`flex`,t.style.alignItems=`center`,t.style.justifyContent=`center`,t.style.background=`var(--surface-void)`;let n=document.createElement(`img`);n.src=e.toDataURL(),n.style.maxWidth=`100%`,n.style.maxHeight=`100%`,n.style.objectFit=`contain`,t.appendChild(n),x(u).appendChild(t)}}let R=new Set([`geometry`,`points`,`lines`,`polyline`,`rects`]),z=Y(null),se=``;async function B(e,t,n){let r=iS({nodeId:x(p)?.id,portId:e?.id,kind:t,value:e?.value,cookVersion:n});if(r!==se){se=r;try{let n=await Qx(e.value,t);L(z,n?.url??null),n?.summary}catch(e){console.warn(`[Viewer] could not draw geometry:`,e),L(z,null)}x(z)&&U()}}function ce(){return x(m)||!x(p)||x(p).preview instanceof HTMLImageElement?null:x(z)&&R.has(x(i))?x(z):ie(x(p))}let le=`__cascadeRefreshVersion`;function H(e,t,n){e.style.position=`relative`,e.style.overflow=`hidden`,e.style.cursor=`grab`;let r=n,i=document.createElement(`img`);i.alt=t,i.draggable=!1,i.dataset.cascadeSrc=t,i.dataset.cascadeVersion=String(n??0),i.style.cssText=`position:absolute;top:0;left:0;transform-origin:0 0;user-select:none;visibility:hidden;max-width:100%;max-height:100%;`,e.appendChild(i);let a=document.createElement(`div`);a.style.cssText=`position:absolute;left:8px;bottom:8px;display:flex;gap:6px;align-items:center;font-size:11px;color:var(--text-tertiary);background:var(--shade-strong);padding:3px 8px;border-radius:4px;`,e.appendChild(a);let o=document.createElement(`span`);a.appendChild(o);function s(e,t){let n=document.createElement(`button`);return n.textContent=e,n.style.cssText=`background:none;border:1px solid var(--border);border-radius:3px;color:var(--text-tertiary);font-size:10px;padding:1px 5px;cursor:pointer;`,n.addEventListener(`mousedown`,e=>e.stopPropagation()),n.addEventListener(`click`,e=>{e.stopPropagation(),t()}),a.appendChild(n),n}let c={width:0,height:0},l=1,u=1,d={x:0,y:0},f=0,m=`${x(p)?.id??`view`}:${t}`,h=T.get(m),g=h?.userAdjusted??!1;function _(){T.set(m,{scale:u,offset:{...d},fitScale:l,userAdjusted:g})}function v(){return{width:e.clientWidth||1,height:e.clientHeight||1}}function y(){i.style.maxWidth=`none`,i.style.maxHeight=`none`,i.style.visibility=`visible`}function b(){i.style.width=c.width+`px`,i.style.height=c.height+`px`,i.style.transform=`translate(`+d.x+`px,`+d.y+`px) scale(`+u+`)`,o.textContent=Math.round(u*100)+`%`;let e=Math.min(c.width,Math.ceil(c.width*u*1.2));c.width&&e>f*1.25&&(f=e,i.src=wv(t,{width:e,version:r}))}function S(){let e=v();!c.width||!c.height||(l=Math.min(e.width/c.width,e.height/c.height),u=l,d={x:(e.width-c.width*u)/2,y:(e.height-c.height*u)/2},g=!1,y(),b(),_())}function C(e,t,n){g=!0;let r=u,i=Math.max(l/8,Math.min(l*20,e));i!==r&&(d.x=t-(t-d.x)*i/r,d.y=n-(n-d.y)*i/r,u=i,b(),_())}let w=1.25;function ee(e){let t=v();C(u*e,t.width/2,t.height/2)}function E(){if(!c.width||u===1)return;let e=v(),t=e.width/2,n=e.height/2;d.x=t-(t-d.x)/u,d.y=n-(n-d.y)/u,u=1,g=!0,b(),_()}function D(e,t){g=!0,d.x+=e,d.y+=t,b(),_()}e.addEventListener(`wheel`,t=>{t.preventDefault();let n=e.getBoundingClientRect();C(u*Math.exp(-t.deltaY*.0015),t.clientX-n.left,t.clientY-n.top)},{passive:!1});let te=!1,O={x:0,y:0};e.addEventListener(`pointerdown`,t=>{t.target?.closest(`button, a`)||(te=!0,O={x:t.clientX,y:t.clientY},e.style.cursor=`grabbing`,e.setPointerCapture(t.pointerId),t.preventDefault())}),e.addEventListener(`pointermove`,e=>{te&&(g=!0,d.x+=e.clientX-O.x,d.y+=e.clientY-O.y,O={x:e.clientX,y:e.clientY},b(),_())});let k=t=>{te&&(te=!1,e.style.cursor=`grab`,e.hasPointerCapture(t.pointerId)&&e.releasePointerCapture(t.pointerId))};e.addEventListener(`pointerup`,k),e.addEventListener(`pointercancel`,k),e.addEventListener(`dblclick`,()=>S()),e.tabIndex=0,e.style.outline=`none`,e.addEventListener(`pointerenter`,()=>{let t=document.activeElement;t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable)||e.focus({preventScroll:!0})}),e.addEventListener(`keydown`,e=>{if(e.altKey)return;let t=e.shiftKey?200:40,n=!0;e.key===`h`||e.key===`H`?S():e.key===`+`||e.key===`=`||e.code===`NumpadAdd`?ee(w):e.key===`-`||e.key===`_`||e.code===`NumpadSubtract`?ee(1/w):e.key===`0`||e.code===`Numpad0`?E():e.key===`ArrowLeft`?D(t,0):e.key===`ArrowRight`?D(-t,0):e.key===`ArrowUp`?D(0,t):e.key===`ArrowDown`?D(0,-t):n=!1,n&&(e.preventDefault(),e.stopPropagation())}),s(`Fit`,()=>S()).title=`Fit to panel (H)`,s(`1:1`,()=>E()).title=`Actual pixels, 100% (0)`;let A=document.createElement(`a`);A.textContent=`Original`,A.href=wv(t,{raw:!0,version:n}),A.target=`_blank`,A.rel=`noopener`,A.title=t,A.style.cssText=`color:var(--syntax-variable);text-decoration:none;font-size:10px;`,A.addEventListener(`mousedown`,e=>e.stopPropagation()),a.appendChild(A),i[le]=e=>{r=e,i.dataset.cascadeVersion=String(e),i.src=wv(t,{width:f||ae(),version:e}),A.href=wv(t,{raw:!0,version:e})},i.addEventListener(`load`,()=>{c.width||(c={width:i.naturalWidth,height:i.naturalHeight},h&&h.userAdjusted?(u=h.scale,l=h.fitScale,d={...h.offset},y(),b()):S())}),new ResizeObserver(()=>{c.width&&(g||S())}).observe(e),f=ae(),i.src=wv(t,{width:f,version:n})}function U(){if(!x(u))return;let e=x(u).querySelector(`img[data-cascade-src]`),t=ce();if(e&&t&&e.dataset.cascadeSrc===t){re();return}oe(u,x(u).innerHTML=``);let n=null,a=null;if(x(m)&&x(m).type===`Image`){let e=x(m).outputs?.find(e=>e.name===`image`);e?.value instanceof HTMLImageElement?n=e.value:a=x(m).src}else if(x(p)){if(x(p).preview instanceof HTMLImageElement)n=x(p).preview;else{let e=x(r);e?.value instanceof HTMLImageElement?n=e.value:a=(R.has(x(i))?x(z):null)??N(e?.value)??ie(x(p))}}let o=document.createElement(`div`);if(o.className=`image-viewer`,o.style.width=`100%`,o.style.height=`100%`,o.style.display=`flex`,o.style.alignItems=`center`,o.style.justifyContent=`center`,o.style.background=`var(--surface-void)`,n){let e=n.cloneNode(!0);e.style.maxWidth=`100%`,e.style.maxHeight=`100%`,e.style.objectFit=`contain`,o.appendChild(e)}else a&&H(o,a,x(_));x(u).appendChild(o)}function de(){if(!x(u))return;oe(u,x(u).innerHTML=``);let e=null;if(x(m)&&x(m).type===`Text`)e=x(m).content||``;else if(x(p)){if(x(p).preview&&!(x(p).preview instanceof HTMLElement))e=x(p).preview;else{let t=x(r);t?.value!==void 0&&(e=t.value)}}if(e!==null){let t=document.createElement(`div`);t.className=`text-viewer`,t.style.width=`100%`,t.style.height=`100%`,t.style.padding=`16px`,t.style.overflow=`auto`,t.style.background=`var(--surface-void)`,t.style.color=`var(--text-bright)`,t.style.fontFamily=`Monaco, Menlo, monospace`,t.style.fontSize=`12px`,t.style.lineHeight=`1.6`;let n=``;if(typeof e==`object`)try{n=JSON.stringify(e,null,2)}catch{n=String(e)}else n=String(e);let r=document.createElement(`pre`);r.style.margin=`0`,r.style.whiteSpace=`pre-wrap`,r.style.wordBreak=`break-word`,r.textContent=n,t.appendChild(r),x(u).appendChild(t)}}function fe(){if(!x(u))return;oe(u,x(u).innerHTML=``);let e=document.createElement(`div`);e.className=`empty-viewer`;let t=document.createElement(`p`);t.textContent=`No preview available`,e.appendChild(t);let n=document.createElement(`p`);n.className=`hint`,n.textContent=`Select a node or annotation to view its content`,e.appendChild(n),x(u).appendChild(e)}function pe(){if(x(m)){if(x(m).type===`Image`){let e=x(m).outputs?.find(e=>e.name===`image`);return e?.value instanceof HTMLImageElement?`img:${e.value.src}`:`img:${x(m).src||`none`}`}return x(m).type===`Text`?`text:${x(m).content||``}`:null}if(!x(p))return null;let e=x(r);if(e?.value instanceof HTMLCanvasElement)return`canvas:${e.value.width}x${e.value.height}:${x(p).id}:${x(p).cookInfo?.cookCount??0}`;if(e?.value instanceof HTMLImageElement)return`img:${e.value.src}`;if(R.has(x(i))&&e?.value!==void 0)return B(e,x(i),x(_)),x(z)?`geometry:${se}`:`data:${e.id}:${rS(e.value)}`;if(e?.value!==void 0)return`data:${e.id}:${rS(e.value)}`;if(x(p).preview instanceof HTMLCanvasElement)return`canvas:${x(p).preview.width}x${x(p).preview.height}:${x(p).id}`;if(x(p).preview instanceof HTMLImageElement)return`img:${x(p).preview.src}`;if(x(p).preview){let e=x(p).preview;return`preview:${rS(e)}`}return null}function me(){if((x(p)||x(m))&&x(d)!==`empty`){let e=x(p)?.id||x(m)?.id||null,t=pe();(e!==x(b)||x(d)!==x(w)||t!==x(C))&&(L(b,e),L(w,x(d)),L(C,t),x(d)===`canvas`?I():x(d)===`image`?U():x(d)===`text`?de():x(d)===`typed`&&L(g,x(g)+1))}}let W=!1;function G(){x(d)===`canvas`?I():x(d)===`image`?U():x(d)===`text`?de():x(d)===`typed`&&L(g,x(g)+1)}async function _e(){if(x(p)&&x(p).isDirty&&!W){W=!0;try{await x(p).requestOutput(),j(),G()}finally{W=!1}}else j(),me()}let ve=null,be=Y(0);function q(){ve===null&&(ve=requestAnimationFrame(xe))}function xe(){ve=null;let e=performance.now();e-x(be)>=100&&(L(be,e),_e()),(x(p)||x(m))&&q()}ye(()=>(q(),()=>{ve!==null&&(cancelAnimationFrame(ve),ve=null)})),J(()=>(A(l()),A(c()),A(s())),()=>{if(l())L(m,l()),L(p,null);else if(c())L(p,c()),L(m,null);else if(s()){let e=Array.from(s().cookingNodes||[]);e.length>0?L(p,e[0]):L(p,null),L(m,null)}else L(p,null),L(m,null)}),J(()=>A(s()),()=>{s()&&s().cookingNodes?.size}),J(()=>x(_),()=>{L(n,ne(x(_)))}),J(()=>(x(n),x(h)),()=>{if(!x(n).find(e=>e.id===x(h))){let e=k.map(e=>x(n).find(t=>t.name===e)).find(Boolean);L(h,e?.id??x(n)[0]?.id??null)}}),J(()=>(x(n),x(h)),()=>{L(r,x(n).find(e=>e.id===x(h))??null)}),J(()=>(x(r),Cv),()=>{L(i,x(r)?Yl(x(r).dataType)===`any`?Cv(x(r).value):Yl(x(r).dataType):`any`)}),J(()=>(x(m),x(p),x(_),x(r),x(i),x(z)),()=>{if(x(m)){let e=x(m).type;e===`Image`?x(m).outputs?.find(e=>e.name===`image`)?.value instanceof HTMLImageElement||x(m).src?L(d,`image`):L(d,`empty`):e===`Text`?L(d,`text`):L(d,`empty`)}else if(!x(p))L(d,`empty`);else{x(_);let e=x(r);e&&e.value!==void 0?e.value instanceof HTMLCanvasElement||e.value instanceof pg?L(d,`canvas`):e.value instanceof HTMLImageElement||x(i)===`image`&&N(e.value)||R.has(x(i))&&x(z)?L(d,`image`):L(d,`typed`):x(p).preview?x(p).preview instanceof HTMLCanvasElement?L(d,`canvas`):x(p).preview instanceof HTMLImageElement?L(d,`image`):L(d,`text`):ie(x(p))||R.has(x(i))?L(d,`image`):L(d,`empty`)}}),J(()=>(x(r),x(i),x(_)),()=>{x(r)&&R.has(x(i))&&B(x(r),x(i),x(_))}),J(()=>(x(p),x(m),x(d),x(u)),()=>{x(p),x(m),L(b,null),L(C,null),L(w,null),x(d)===`canvas`?I():x(d)===`image`?U():x(d)===`text`?de():x(d)===`typed`?x(u)&&oe(u,x(u).innerHTML=``):fe()}),J(()=>x(p),()=>{x(p)&&(L(be,0),q())}),he(),ue();var Se=cS(),Ce=M(Se),we=e=>{var t=oS();f(t,5,()=>x(n),e=>e.id,(e,t)=>{var n=aS();let r;var i=M(n),s=P(i);o(n),K((e,o)=>{X(n,`title`,e),r=v(n,1,`svelte-1p3xo7r`,null,r,{active:x(t).id===x(h)}),a(i,`background:${o??``}`),D(s,` ${x(t),F(()=>x(t).name)??``}`)},[()=>(x(t),A(Yl),F(()=>`${x(t).name}: ${Yl(x(t).dataType)}`)),()=>(A(Ql),x(t),F(()=>Ql(x(t).dataType)))]),O(`click`,n,()=>L(h,x(t).id)),E(e,n)}),o(t),E(e,t)};Z(Ce,e=>{x(n),F(()=>x(n).length>1)&&e(we)});var Te=P(Ce,2);let De;ge(Te,e=>L(u,e),()=>x(u));var Oe=P(Te,2),ke=e=>{var t=sS(),n=M(t);S(n,()=>(x(r),x(g),F(()=>`${x(r).id}-${x(g)}`)),e=>{Hy(e,{get type(){return x(i)},get value(){return x(r),F(()=>x(r).value)},get port(){return x(r)},get node(){return x(p)},mode:`view`,get version(){return x(_)},readOnly:!0})}),o(t),E(e,t)};Z(Oe,e=>{x(d)===`typed`&&x(r)&&e(ke)}),o(Se),K(()=>De=v(Te,1,`viewer svelte-1p3xo7r`,null,De,{hidden:x(d)===`typed`})),E(e,Se),Ee()}var uS=u(`<div class="panel-wrapper svelte-1qtykx5"><!></div>`);function dS(e,t){ee(t,!1);let n=()=>we(_a,`$panelLockStore`,i),r=()=>we(ga,`$sharedContextStore`,i),[i,a]=ne(),s=Y(),c=Y(),l=Y(),u=V(t,`panelId`,8),d=V(t,`panelApi`,8),f=V(t,`graph`,12,void 0),p=V(t,`selectedNode`,12,null),m=V(t,`selectedAnnotationId`,12,null),h=Y(null);J(()=>(n(),A(u())),()=>{L(s,n().get(u()))}),J(()=>x(s),()=>{L(c,x(s)?.isLocked??!1)}),J(()=>r(),()=>{r()&&(f(r().graph),p(r().selectedNode),m(r().selectedAnnotation))}),J(()=>(x(c),x(s),A(p())),()=>{L(l,x(c)?x(s)?.lockedNode:p())}),J(()=>(A(m()),A(f())),()=>{m()&&f()?L(h,f().getAnnotation(m())):L(h,null)}),J(()=>(A(d()),x(c),x(l),x(h)),()=>{if(d()?.setTitle){let e=x(c)?`~ `:``;x(l)?d().setTitle(`${e}Viewer: ${x(l).id}`):x(h)?d().setTitle(`${e}Viewer: ${x(h).caption||x(h).type}`):d().setTitle(`${e}Viewer`)}}),he(),ue();var g=uS();lS(M(g),{get graph(){return f()},get selectedNode(){return x(l)},get selectedAnnotation(){return x(h)}}),o(g),E(e,g),Ee(),a()}var fS=u(`<span class="log-source svelte-1hh17sz"> </span>`),pS=u(`<div><!> <span> </span></div>`),mS=u(`<div class="log svelte-1hh17sz"><div class="log-content svelte-1hh17sz"><!></div></div>`);function hS(e,t){ee(t,!1);let n=Y([]),r=Y(),i=!0,a;function s(e,t){let n=null,r=t;if(t.length>0&&typeof t[0]==`string`){let e=t[0].match(/^\[([^\]]+)\]/);e&&(n=e[1],r=t.slice(1))}let i=r.map(e=>{if(typeof e==`object`)try{return JSON.stringify(e,null,2)}catch{return String(e)}return String(e)}).join(` `);return{source:n,formatted:i}}function c(e,...t){let{source:o,formatted:c}=s(e,t),l={id:`log_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,timestamp:new Date,level:e,source:o,args:t,formatted:c};L(n,[...x(n),l]),x(n).length>1e3&&L(n,x(n).slice(-1e3)),a&&a[e](...t),i&&x(r)&&setTimeout(()=>{x(r)&&oe(r,x(r).scrollTop=x(r).scrollHeight)},0)}function l(){x(r)&&(i=x(r).scrollHeight-x(r).scrollTop<=x(r).clientHeight+10)}function u(){L(n,[])}ye(()=>{a={log:console.log.bind(console),warn:console.warn.bind(console),error:console.error.bind(console)},console.log=(...e)=>{c(`log`,...e)},console.warn=(...e)=>{c(`warn`,...e)},console.error=(...e)=>{c(`error`,...e)},x(r)&&x(r).addEventListener(`scroll`,l)}),me(()=>{a&&(console.log=a.log,console.warn=a.warn,console.error=a.error),x(r)&&x(r).removeEventListener(`scroll`,l)});var d={clearLog:u};ue();var p=mS(),m=M(p),h=M(m),g=e=>{var t=te(),r=G(t);f(r,1,()=>x(n),e=>e.id,(e,t)=>{var n=pS();let r;var i=M(n),a=e=>{var n=fS(),r=q(n);K(()=>D(r,`[${x(t).source??``}]`)),E(e,n)};Z(i,e=>{x(t).source&&e(a)});var s=P(i,2);let c;var l=q(s,!0);o(n),K(()=>{r=v(n,1,`log-entry svelte-1hh17sz`,null,r,{error:x(t).level===`error`,warn:x(t).level===`warn`}),c=v(s,1,`log-message svelte-1hh17sz`,null,c,{error:x(t).level===`error`,warn:x(t).level===`warn`}),D(l,x(t).formatted)}),E(e,n)}),E(e,t)};return Z(h,e=>{x(n).length>0&&e(g)}),o(m),ge(m,e=>L(r,e),()=>x(r)),o(p),E(e,p),se(t,`clearLog`,u),Ee(d)}var gS=u(`<div class="panel-wrapper svelte-19qho59"><!></div>`);function _S(e,t){ee(t,!1);let n=Y(null);function r(){x(n)?.clearLog&&x(n).clearLog()}var i={clearLog:r},a=gS(),s=M(a);return ge(hS(s,{$$legacy:!0}),e=>L(n,e),()=>x(n)),o(a),E(e,a),se(t,`clearLog`,r),Ee(i)}var vS=class extends Error{constructor(e,t=null,n=null){super(e),this.hint=t,this.code=n,this.name=`AgentUnavailableError`}},yS=null;async function bS(){if(yS)return yS;let e=await fetch(`/api/agent/capability`);if(e.status===404)throw new vS(`The agent console is disabled on this server. It is available only on a loopback server or one started with an explicit trusted host.`);if(!e.ok)throw new vS(`Could not start an agent session (${e.status})`);let{capability:t}=await e.json();if(typeof t!=`string`||!t)throw new vS(`Server issued no agent capability`);return yS=t,t}async function xS(e,t){let n=e=>({...t.headers??{},"X-Cascade-Agent-Capability":e}),r=await fetch(e,{...t,headers:n(await bS())});return r.status===403&&(yS=null,r=await fetch(e,{...t,headers:n(await bS())})),r}async function SS(e){let t=await xS(`/api/agent/status${e?`?sketch=${encodeURIComponent(e)}`:``}`,{method:`GET`});if(!t.ok)throw new vS(`Could not read agent status (${t.status})`);let n=await t.json();return{root:String(n?.root??``),agents:Array.isArray(n?.agents)?n.agents:[],sessions:Array.isArray(n?.sessions)?n.sessions:[]}}async function CS(e,t){let n=await xS(`/api/agent/cancel`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({agent:e,sketch:t})});return n.ok?(await n.json().catch(()=>null))?.cancelled===!0:!1}async function wS(e,t){await xS(`/api/agent/reset`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({agent:e,sketch:t})})}async function TS(e){let t=await xS(`/api/agent/attach`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({agent:e.agent,sketch:e.sketch,since:e.since??0}),signal:e.signal});if(!t.ok){let e=await t.json().catch(()=>null);throw new vS(String(e?.error??`Could not reconnect to the agent (${t.status})`))}await DS(t,e.onEvent)}async function ES(e){let t=await xS(`/api/agent/prompt`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({agent:e.agent,sketch:e.sketch,prompt:e.prompt}),signal:e.signal});if(!t.ok){let e=await t.json().catch(()=>null);throw new vS(String(e?.error??`Agent request failed (${t.status})`),e?.hint??null,e?.code??null)}await DS(t,e.onEvent)}async function DS(e,t){if(!e.body)throw new vS(`Agent produced no stream`);let n=e.body.getReader(),r=new TextDecoder,i=``;for(;;){let{value:e,done:a}=await n.read();if(a)break;i+=r.decode(e,{stream:!0});let o=i.split(`
|
|
203
|
+
`);i=o.pop()??``;for(let e of o)OS(e,t)}OS(i,t)}function OS(e,t){if(e.trim())try{t(JSON.parse(e))}catch{t({type:`stderr`,text:e})}}function kS(e){let t=e.trim();if(!t)return null;if(!t.startsWith(`{`))return{kind:`raw`,text:t};let n;try{n=JSON.parse(t)}catch{return{kind:`raw`,text:t}}if(n?.type===`system`)return null;if(n?.type===`assistant`&&Array.isArray(n?.message?.content)){let e=[];for(let t of n.message.content)t?.type===`text`&&typeof t.text==`string`&&t.text.trim()?e.push(t.text.trim()):t?.type===`tool_use`&&e.push(`· ${t.name??`tool`}${AS(t.input)}`);let t=e.join(`
|
|
204
|
+
`);return t?{kind:e.every(e=>e.startsWith(`· `))?`tool`:`text`,text:t}:null}if(n?.type===`user`)return null;if(n?.type===`result`){let e=typeof n.result==`string`&&n.result.trim()?n.result.trim():null;return e?{kind:`result`,text:e}:null}return typeof n?.type==`string`?{kind:`detail`,text:t}:{kind:`raw`,text:t}}function AS(e){if(!e||typeof e!=`object`)return``;let t=e,n=t.file_path??t.path??t.pattern??t.command;return typeof n==`string`&&n?` ${n}`:``}var jS=null;function MS(e){return jS=e,()=>{jS===e&&(jS=null)}}function NS(){return jS}var PS=u(`<option> </option>`),FS=u(`<span class="sketch svelte-1cqop5k" title="Open the sketch through the cascade CLI">no project file</span>`),IS=u(`<button type="button" class="zoom svelte-1cqop5k" title="Text size — click to reset (⌘0)"> </button>`),LS=u(`<button type="button" class="icon svelte-1cqop5k" title="Copy the whole transcript, including hidden stream events" aria-label="Copy transcript"> </button>`),RS=u(`<button type="button" class="icon stop svelte-1cqop5k" title="Stop the agent" aria-label="Stop the agent">■</button>`),zS=u(`<button type="button" title="Forget the conversation for this sketch" class="svelte-1cqop5k">Reset</button>`),BS=u(`<div class="notice svelte-1cqop5k"> </div>`),VS=u(`<code class="svelte-1cqop5k"> </code>`),HS=u(`<div class="notice svelte-1cqop5k"><div> </div> <!></div>`),US=u(`<div class="hint svelte-1cqop5k"><!></div>`),WS=u(`<div></div>`),GS=u(`<div> </div>`),KS=u(`<button class="detail-toggle svelte-1cqop5k"> </button>`),qS=u(`<div data-panel-scope="agent" role="group" aria-label="Agent console"><div class="bar svelte-1cqop5k"><select aria-label="Agent" class="svelte-1cqop5k"></select> <!> <span class="spacer svelte-1cqop5k"></span> <!> <!> <!></div> <!> <div class="transcript svelte-1cqop5k"><!> <!> <!></div> <div class="composer svelte-1cqop5k"><textarea rows="2" spellcheck="false" placeholder="Prompt the sketch" class="svelte-1cqop5k"></textarea> <button type="button" class="send svelte-1cqop5k" title="Send (⌘↵)" aria-label="Send prompt">↑</button></div></div>`);function JS(t,n){ee(n,!1);let r=Y(),i=Y(),s=Y(),c=Y(),u=Y(),d=new Set([`agent`,`result`]),p=[`claude`,`codex`],m=Y(`claude`),g=Y(``),_=Y([]),y=Y(!1),b=Y(!1),S=Y([]),C=Y(``),w=Y(null),k=Y(!1),ne=null,j=null,re=null,N=null,ie=Y(!1),ae=Y(null),I=Y(null),R=Y(!1),se=Y(null),V=`cascade.agentPanel.zoom`,le=[.75,.85,1,1.15,1.3,1.5,1.75,2],H=Y(U());function U(){try{let e=Number(localStorage.getItem(V));return le.includes(e)?e:1}catch{return 1}}function de(e){L(H,e);try{localStorage.setItem(V,String(e))}catch{}}function fe(e){let t=le.indexOf(x(H)),n=t===-1?le.indexOf(1):t,r=Math.min(le.length-1,Math.max(0,n+e));r!==n&&de(le[r])}function pe(e){if(e.altKey)return;let t=e.metaKey||e.ctrlKey;if(!x(se)||!E_(`agent`))return;let n=e.target instanceof HTMLTextAreaElement||e.target instanceof HTMLInputElement;!t&&n||(e.key===`0`?(e.preventDefault(),de(1)):e.key===`+`||e.key===`=`?(e.preventDefault(),fe(1)):(e.key===`-`||e.key===`_`)&&(e.preventDefault(),fe(-1)))}let W=Y(NS()?.file()??null);ye(()=>{xe(x(W));let e=setInterval(()=>{let e=NS()?.file()??null;e===x(W)?!x(b)&&N!==x(m)?xe(e):Se():(L(W,e),xe(e))},1e3);return()=>clearInterval(e)}),_e();async function _e(){try{let e=await SS(x(W)??void 0);if(L(S,e.agents),L(C,e.root),!x(S).find(e=>e.alias===x(m)&&e.configured&&e.resolved)){let e=x(S).find(e=>e.configured&&e.resolved);e&&L(m,e.alias)}}catch(e){L(w,e instanceof Error?e.message:String(e))}finally{L(k,!0)}}function be(e){if(e.type===`attached`)L(ie,e.running),e.dropped>0&&we(`system`,`${e.dropped} earlier ${e.dropped===1?`line`:`lines`} were dropped from the server's buffer.`),e.running?we(`system`,`Reconnected to the ${e.agent} session running for ${e.sketch}.`):e.replayed>0&&we(`system`,`Showing the last ${e.agent} run for ${e.sketch}. Nothing is running now.`);else if(e.type===`started`)L(ie,!0),we(`system`,`${e.agent} ${e.resumed?`resumed`:`started`} for ${e.sketch}`);else if(e.type===`stdout`){let t=kS(e.text);t&&we(t.kind===`raw`?`system`:t.kind===`text`?`agent`:t.kind,t.text)}else e.type===`stderr`?we(`error`,e.text.trimEnd()):e.type===`exit`?(L(ie,!1),e.cancelled?we(`system`,`Stopped.`):e.timedOut?we(`error`,`The agent was still running after 15 minutes and was stopped.`):e.code!==0&&we(`error`,`${x(m)} exited with code ${e.code}.`)):e.type===`error`&&(L(ie,!1),we(`error`,e.message))}async function xe(e){if(j?.abort(),j=null,re=e,N=x(m),L(ie,!1),x(b)||(L(_,[]),!e))return;let t=new AbortController;j=t;try{await TS({agent:x(m),sketch:e,onEvent:t=>{re===e&&be(t)},signal:t.signal})}catch(e){e?.name!==`AbortError`&&we(`error`,e instanceof Error?e.message:String(e))}finally{j===t&&(j=null),L(ie,!1)}}async function Se(){if(!(x(b)||x(ie)||j||!x(W)||x(w)))try{(await SS(x(W))).sessions.find(e=>e.sketch===x(W)&&e.agent===x(m)&&e.running)&&!x(b)&&!j&&await xe(x(W))}catch{}}function we(e,t){t.trim()&&(L(_,[...x(_),{kind:e,text:t}]),De())}function X(){if(!x(I))return;oe(I,x(I).style.height=`auto`);let e=Math.max(120,Math.round((x(ae)?.clientHeight??400)/2));oe(I,x(I).style.height=`${Math.min(x(I).scrollHeight,e)}px`)}async function De(){await e(),x(ae)&&oe(ae,x(ae).scrollTop=x(ae).scrollHeight)}async function Oe(){let e=NS();if(!e)return we(`error`,`Studio has not registered the open document, so it cannot be saved before the prompt runs. Nothing was sent.`),null;let t=e.file();if(!t)return we(`error`,"This graph is not a project file, so the agent has nothing to edit. Open the sketch through the `cascade` CLI, or save it into the project first."),null;if(e.isDirty()){if(!await e.save())return we(`error`,`Could not save ${t}, so the prompt was not sent — the agent would have rewritten the file underneath your unsaved changes.`),null;we(`system`,`Saved ${t} before handing the prompt over.`)}return t}async function ke(){let t=x(g).trim();if(!t||x(b))return;let n=await Oe();if(n){j?.abort(),j=null,we(`you`,t),L(g,``),e().then(X),L(b,!0),ne=new AbortController;try{await ES({agent:x(m),sketch:n,prompt:t,signal:ne.signal,onEvent:be})}catch(e){e instanceof vS?(we(`error`,e.message),e.hint&&we(`system`,e.hint)):e?.name===`AbortError`?we(`system`,`Stopped.`):we(`error`,e instanceof Error?e.message:String(e))}finally{L(b,!1),ne=null,L(ie,!1)}}}async function Ae(){let e=x(W)??NS()?.file()??null;e&&await CS(x(m),e),ne?.abort(),j?.abort()}async function je(){let e=NS()?.file();j?.abort(),j=null,e&&await wS(x(m),e),L(_,[]),L(ie,!1),we(`system`,`New ${x(m)} session for ${e??`this sketch`}.`)}function Me(e){e.key===`Enter`&&(e.metaKey||e.ctrlKey||!e.shiftKey)&&(e.preventDefault(),ke())}function Ne(e){let t=e.dataTransfer?.getData(`text/plain`);L(R,!1),t&&(e.preventDefault(),e.stopPropagation(),ze(t.trim()))}function Pe(e){let t=Array.from(e.dataTransfer?.types??[]);!t.includes(`text/plain`)||t.includes(`Files`)||(e.preventDefault(),e.stopPropagation(),e.dataTransfer&&(e.dataTransfer.dropEffect=`copy`),L(R,!0))}function Fe(e){if(!x(se)){L(R,!1);return}let t=x(se).getBoundingClientRect();e.clientX>=t.left&&e.clientX<=t.right&&e.clientY>=t.top&&e.clientY<=t.bottom||L(R,!1)}let Ie=Y(!1),Le;async function Re(){if(await W_(x(_).map(e=>e.text).join(`
|
|
205
|
+
`))){L(Ie,!0),clearTimeout(Le),Le=setTimeout(()=>L(Ie,!1),1200);return}we(`error`,`Could not reach the clipboard. Select the transcript and copy it by hand.`)}function ze(t){if(!t)return;let n=x(I)?.selectionStart??x(g).length,r=x(g).slice(0,n),i=x(g).slice(n),a=r&&!/\s$/.test(r)?` `:``;L(g,`${r}${a}${t}${i}`),e().then(()=>{x(I)?.focus();let e=(r+a+t).length;x(I)?.setSelectionRange(e,e)})}me(()=>{ne?.abort(),j?.abort(),clearTimeout(Le)}),J(()=>(x(S),x(m)),()=>{L(r,x(S).find(e=>e.alias===x(m))??null)}),J(()=>(x(b),x(ie)),()=>{L(i,x(b)||x(ie))}),J(()=>(x(k),x(r)),()=>{L(s,!x(k)||!!(x(r)?.configured&&x(r)?.resolved))}),J(()=>x(_),()=>{L(c,x(_).filter(e=>e.kind===`detail`).length)}),J(()=>(x(y),x(_)),()=>{L(u,x(y)?x(_):x(_).filter(e=>e.kind!==`detail`))}),he(),ue();var Be=qS();O(`keydown`,ce,pe),O(`dragend`,ce,()=>L(R,!1));let Ve;var He=M(Be),Ue=M(He);f(Ue,5,()=>p,h,(e,t)=>{var n=PS(),r=q(n,!0),i={};K(()=>{D(r,x(t)),i!==(i=x(t))&&(n.value=(n.__value=i)??``)}),E(e,n)}),o(Ue),T(Ue);var We=P(Ue,2),Q=e=>{var t=FS();E(e,t)};Z(We,e=>{x(W)||e(Q)});var Ge=P(We,4),Ke=e=>{var t=IS(),n=q(t);K(e=>D(n,`${e??``}%`),[()=>(x(H),F(()=>Math.round(x(H)*100)))]),O(`click`,t,()=>de(1)),E(e,t)};Z(Ge,e=>{x(H)!==1&&e(Ke)});var qe=P(Ge,2),Je=e=>{var t=LS(),n=q(t,!0);K(()=>D(n,x(Ie)?`✓`:`⧉`)),O(`click`,t,Re),E(e,t)};Z(qe,e=>{x(_),F(()=>x(_).length>0)&&e(Je)});var Ye=P(qe,2),Xe=e=>{var t=RS();O(`click`,t,Ae),E(e,t)},Ze=e=>{var t=zS();O(`click`,t,je),E(e,t)};Z(Ye,e=>{x(i)?e(Xe):e(Ze,-1)}),o(He);var $=P(He,2),Qe=e=>{var t=BS(),n=q(t,!0);K(()=>D(n,x(w))),E(e,t)},$e=e=>{var t=HS(),n=M(t),i=q(n,!0),a=P(n,2),s=e=>{var t=VS(),n=q(t);K(()=>D(n,`"commands": { "${x(m)??``}": "<path>" }`)),E(e,t)};Z(a,e=>{x(C),x(r),F(()=>x(C)&&!x(r)?.configured)&&e(s)}),o(t),K(()=>D(i,(x(r),x(m),F(()=>x(r)?.hint??`Command "${x(m)}" is not allowed.`)))),E(e,t)};Z($,e=>{x(w)?e(Qe):x(k)&&!x(s)&&e($e,1)});var et=P($,2),tt=M(et),nt=e=>{var t=US(),n=M(t),r=e=>{var t=ve(`No project file is open, so there is nothing for an agent to edit.`);E(e,t)},i=e=>{var t=ve(`Say what the sketch should become. Drag in a node or a parameter for its exact path.`);E(e,t)};Z(n,e=>{x(W)?e(i,-1):e(r)}),o(t),E(e,t)};Z(tt,e=>{x(_),F(()=>x(_).length===0)&&e(nt)});var rt=P(tt,2);f(rt,1,()=>x(u),h,(e,t)=>{var n=te(),r=G(n),i=e=>{var n=WS();l(n,()=>(A(Xh),x(t),F(()=>Xh(x(t).text))),!0),o(n),K(()=>v(n,1,`entry ${x(t),F(()=>x(t).kind)??``} markdown`,`svelte-1cqop5k`)),E(e,n)},a=B(()=>(x(t),F(()=>d.has(x(t).kind)))),s=e=>{var n=GS(),r=q(n,!0);K(()=>{v(n,1,`entry ${x(t),F(()=>x(t).kind)??``}`,`svelte-1cqop5k`),D(r,(x(t),F(()=>x(t).text)))}),E(e,n)};Z(r,e=>{x(a)?e(i):e(s,-1)}),E(e,n)});var it=P(rt,2),at=e=>{var t=KS(),n=q(t);K(()=>D(n,`${x(y)?`Hide`:`Show`} ${x(c)??``} stream ${x(c)===1?`event`:`events`}`)),O(`click`,t,()=>L(y,!x(y))),E(e,t)};Z(it,e=>{x(c)>0&&e(at)}),o(et),ge(et,e=>L(ae,e),()=>x(ae));var ot=P(et,2),st=M(ot);z(st),ge(st,e=>L(I,e),()=>x(I));var ct=P(st,2);o(ot),o(Be),ge(Be,e=>L(se,e),()=>x(se)),K(e=>{Ve=v(Be,1,`console svelte-1cqop5k`,null,Ve,{"drop-active":x(R)}),a(Be,`--agent-zoom: ${x(H)??``}`),Ue.disabled=x(i),st.disabled=x(i),ct.disabled=e},[()=>(x(i),x(g),x(s),F(()=>x(i)||!x(g).trim()||!x(s)))]),Te(Ue,()=>x(m),e=>L(m,e)),Ce(st,()=>x(g),e=>L(g,e)),O(`keydown`,st,Me),O(`input`,st,X),O(`click`,ct,ke),O(`dragover`,Be,Pe),O(`dragleave`,Be,Fe),O(`drop`,Be,Ne),E(t,Be),Ee()}var YS={apiVersion:1,label:`Random`,description:`Generate a deterministic unit value from an explicit seed.`,icon:`Dice5`,runsOn:`portable`,inputs:{seed:{kind:`data`,type:`int`,default:0,description:`Integer seed. Equal seeds always produce equal values.`},sample:{kind:`data`,type:`int`,default:0,description:`Stable sample index within the seeded sequence.`}},outputs:{value:{kind:`data`,type:`float`,description:`Deterministic value in the half-open range [0, 1).`}}};function XS(e,t=0){let n=((Math.trunc(e)^Math.imul(Math.trunc(t),2654435761))>>>0)+1831565813>>>0;return n=Math.imul(n^n>>>15,n|1),n^=n+Math.imul(n^n>>>7,n|61),((n^n>>>14)>>>0)/4294967296}function ZS(e){e.outputs.value.set(XS(e.inputs.seed,e.inputs.sample))}var QS={kind:`definition-v1`,moduleId:`cascade.core.Random`,definition:YS,loadExecute:async()=>ZS},$S={apiVersion:1,label:`Remap`,description:`Map a number from one range into another.`,icon:`ArrowRightLeft`,runsOn:`portable`,inputs:{value:{kind:`data`,type:`float`,default:0},inMin:{kind:`data`,type:`float`,default:0},inMax:{kind:`data`,type:`float`,default:1},outMin:{kind:`data`,type:`float`,default:0},outMax:{kind:`data`,type:`float`,default:1}},outputs:{result:{kind:`data`,type:`float`}},props:{clamp:{type:`bool`,default:!1,label:`Clamp`,description:`Keep the normalized input between zero and one.`}}};function eC(e,t,n,r,i,a){if(t===n)return r;let o=(e-t)/(n-t);return r+(a?Math.min(1,Math.max(0,o)):o)*(i-r)}function tC(e){let{value:t,inMin:n,inMax:r,outMin:i,outMax:a}=e.inputs;e.outputs.result.set(eC(t,n,r,i,a,e.props.clamp))}var nC=Object.freeze([{kind:`definition-v1`,moduleId:`cascade.core.Subnet`,definition:{apiVersion:1,runsOn:`portable`,container:`subnet`,label:`Subnet`,description:`Contains a nested deterministic graph`,icon:`Folder`},loadExecute:async()=>()=>{}},{kind:`definition-v1`,moduleId:`cascade.core.Input`,definition:{apiVersion:1,runsOn:`portable`,label:`Input`,description:`Defines a public graph or subnet input`,icon:`LogIn`,inputs:{value:{kind:`data`,type:`any`,default:null}},outputs:{output:{kind:`data`,type:`any`}},props:{inputIndex:{type:`int`,default:0,min:0,step:1},inputName:{type:`string`,default:``},dataType:{type:`string`,default:`any`}}},loadExecute:async()=>({inputs:e,outputs:t})=>t.output.set(e.value)},{kind:`definition-v1`,moduleId:`cascade.core.Output`,definition:{apiVersion:1,runsOn:`portable`,label:`Output`,description:`Defines a public graph or subnet output`,icon:`LogOut`,inputs:{input:{kind:`data`,type:`any`,default:null}},outputs:{output:{kind:`data`,type:`any`}},props:{outputIndex:{type:`int`,default:0,min:0,step:1},outputName:{type:`string`,default:``},dataType:{type:`string`,default:`any`}}},loadExecute:async()=>({inputs:e,outputs:t})=>t.output.set(e.input)},{kind:`definition-v1`,moduleId:`cascade.core.Switch`,definition:{apiVersion:1,runsOn:`portable`,label:`Switch`,description:`Selects one input by index`,icon:`GitBranch`,inputs:{inputs:{kind:`data`,type:`any`,variadic:!0}},outputs:{output:{kind:`data`,type:`any`}},props:{index:{type:`int`,default:0,min:0,step:1}}},loadExecute:async()=>({inputs:e,outputs:t,props:n})=>{let r=e.inputs;if(!r.length){t.output.set(null);return}let i=Math.max(0,Math.min(n.index,r.length-1));t.output.set(r[i])}},{kind:`definition-v1`,moduleId:`cascade.core.Merge`,definition:{apiVersion:1,runsOn:`portable`,label:`Merge`,description:`Collects inputs into an array`,icon:`GitMerge`,inputs:{inputs:{kind:`data`,type:`any`,variadic:!0}},outputs:{output:{kind:`data`,type:`array`}},props:{append:{type:`bool`,default:!1}}},loadExecute:async()=>({inputs:e,outputs:t,props:n})=>{let r=e.inputs.filter(e=>e!==null);t.output.set(n.append&&Array.isArray(r[0])?[...r[0],...r.slice(1)]:r)}},{kind:`definition-v1`,moduleId:`cascade.core.Null`,definition:{apiVersion:1,runsOn:`portable`,label:`Null`,description:`Passes its input through unchanged`,icon:`Circle`,inputs:{input:{kind:`data`,type:`any`,default:null}},outputs:{output:{kind:`data`,type:`any`}}},loadExecute:async()=>({inputs:e,outputs:t})=>{t.output.set(e.input)}},{kind:`definition-v1`,moduleId:`cascade.core.Select`,definition:{apiVersion:1,runsOn:`portable`,label:`Select`,description:`Selects an array item by index`,icon:`ListFilter`,inputs:{array:{kind:`data`,type:`array`,default:[]}},outputs:{item:{kind:`data`,type:`any`},count:{kind:`data`,type:`int`}},props:{index:{type:`int`,default:0,min:0,step:1},wrap:{type:`bool`,default:!0}}},loadExecute:async()=>({inputs:e,outputs:t,props:n})=>{let r=e.array.length;if(t.count.set(r),!r){t.item.set(null);return}let i=n.wrap?(n.index%r+r)%r:Math.max(0,Math.min(n.index,r-1));t.item.set(e.array[i])}},QS,{kind:`definition-v1`,moduleId:`cascade.core.Remap`,definition:$S,loadExecute:async()=>tC}]);new Map(nC.map(e=>[e.moduleId,e]));function rC(e,t){throw TypeError(`geometry/${e}: ${t}`)}function iC(e,t){return e[t]}function aC(e,t,n){if(e!==void 0)return Al(e)&&rC(`attribute-storage`,`${t} must be numeric`),n!==void 0&&!n.includes(e.size)&&rC(`attribute-size`,`${t} has size ${e.size}; expected ${n.join(` or `)}`),e}function oC(e,t,n=0){return e.data[t*e.size+n]}function sC(e,t){let n=Array(e.size);for(let r=0;r<e.size;r+=1)n[r]=e.data[t*e.size+r];return n}function cC(e,t){let n=e.data[t];return n<0?``:e.table[n]??``}function lC(e){return e.point.P.size}function uC(e){return e.point.P}function dC(e,t){return sC(uC(e),t)}function fC(e,t,n=`f64`,r){let i=Ol(n,t*e);if(r!==void 0){let n=typeof r==`number`?[r]:r;for(let r=0;r<e;r+=1)for(let e=0;e<t;e+=1)i[r*t+e]=n[e%Math.max(n.length,1)]??0}return{storage:n,size:t,data:i}}function pC(e){let t=[],n=new Map,r=new Int32Array(e.length);for(let i=0;i<e.length;i+=1){let a=e[i],o=n.get(a);o===void 0&&(o=t.length,t.push(a),n.set(a,o)),r[i]=o}return{storage:`string`,size:1,table:t,data:r}}function mC(e,t,n){return Fl({pointCount:e.pointCount,point:t===`point`?n:e.point,vertex:t===`vertex`?n:e.vertex,primitive:t===`primitive`?n:e.primitive,detail:e.detail,topology:e.topology,pointGroups:e.pointGroups,primitiveGroups:e.primitiveGroups})}function hC(e,t,n,r){return mC(e,t,{...e[t],[n]:r})}function gC(e){return kl(e.storage,e.data)}var _C={point:`pointGroups`,primitive:`primitiveGroups`};function vC(e,t,n){return e[_C[t]][n]}function yC(e){let t=[];for(let n=0;n<e.length;n+=1)e[n]&&t.push(n);return t}function bC(e,t){return Object.keys(e[_C[t]])}function xC(e){let[t,n]=e.translate??[0,0],[r,i]=e.scale??[1,1],[a,o]=e.pivot??[0,0],s=e.rotate??0;if(![t,n,r,i,a,o,s].every(Number.isFinite))throw TypeError(`geometry/transform: transform parameters must be finite`);let c=s*Math.PI/180,l=Math.cos(c),u=Math.sin(c),d=l*r,f=u*r,p=-u*i,m=l*i;return[d,f,0,p,m,0,t+a-(d*a+p*o),n+o-(f*a+m*o),1]}function SC(e){if(e.length===0)return Ll(2);if(e.length===1)return e[0];let t=CC(e,e=>e.pointCount),n=CC(e,e=>e.vertexCount),r=CC(e,e=>e.primitiveCount),i=new Int32Array(n),a=new Int32Array(r+1),o=new Uint8Array(r),s=new Uint8Array(r),c=0,l=0,u=0;for(let t of e){for(let e=0;e<t.vertexCount;e+=1)i[l+e]=t.topology.vertexPoints[e]+c;for(let e=0;e<t.primitiveCount;e+=1)a[u+e]=t.topology.offsets[e]+l,o[u+e]=t.topology.kinds[e],s[u+e]=t.topology.closed[e];c+=t.pointCount,l+=t.vertexCount,u+=t.primitiveCount}a[r]=n;let d={};for(let t of e)for(let[e,n]of Object.entries(t.detail))Object.prototype.hasOwnProperty.call(d,e)||(d[e]=n);return Fl({pointCount:t,point:EC(e,`point`),vertex:EC(e,`vertex`),primitive:EC(e,`primitive`),detail:d,topology:{vertexPoints:i,offsets:a,kinds:o,closed:s},pointGroups:kC(e,`point`),primitiveGroups:kC(e,`primitive`)})}function CC(e,t){let n=0;for(let r of e)n+=t(r);return n}var wC={u8:0,i32:1,f32:2,f64:3};function TC(e,t){return e===t?e:e===`f64`||t===`f64`||e===`i32`&&t===`f32`||e===`f32`&&t===`i32`?`f64`:wC[e]>wC[t]?e:t}function EC(e,t){let n=[];for(let r of e)for(let e of Object.keys(r[t]))n.includes(e)||n.push(e);let r=CC(e,e=>jl(e,t)),i={};for(let a of n){let n=e.map(e=>e[t][a]).filter(e=>e!==void 0),o=n.filter(Al).length;o!==0&&o!==n.length&&rC(`attribute-conflict`,`${t}.${a} is a string attribute on one input and numeric on another`),i[a]=o===n.length?OC(e,t,a,r):DC(e,t,a,r)}return i}function DC(e,t,n,r){let i=1,a;for(let r of e){let e=r[t][n];e===void 0||Al(e)||(i=Math.max(i,e.size),a=a===void 0?e.storage:TC(a,e.storage))}let o=Ol(a??`f64`,i*r),s=0;for(let r of e){let e=jl(r,t),a=r[t][n];if(a!==void 0&&!Al(a))for(let t=0;t<e;t+=1)for(let e=0;e<a.size;e+=1)o[(s+t)*i+e]=a.data[t*a.size+e];s+=e}return{storage:a??`f64`,size:i,data:o}}function OC(e,t,n,r){let i=Array(r).fill(``),a=0;for(let r of e){let e=jl(r,t),o=r[t][n];if(o!==void 0&&Al(o))for(let t=0;t<e;t+=1)i[a+t]=cC(o,t);a+=e}return pC(i)}function kC(e,t){let n=t===`point`?`pointGroups`:`primitiveGroups`,r=[];for(let t of e)for(let e of Object.keys(t[n]))r.includes(e)||r.push(e);let i=CC(e,e=>jl(e,t)),a={};for(let o of r){let r=new Uint8Array(i),s=0;for(let i of e){let e=jl(i,t),a=i[n][o];if(a!==void 0)for(let t=0;t<e;t+=1)r[s+t]=a[t];s+=e}a[o]=r}return a}function AC(e,t){if(t.length!==9&&t.length!==16&&rC(`matrix`,`transform needs a mat3 or a mat4`),t.every(Number.isFinite)||rC(`matrix`,`transform matrix values must be finite`),e.pointCount===0)return e;let n=uC(e),r=n.size,i=gC(n);if(t.length===9){let n=t;for(let t=0;t<e.pointCount;t+=1){let e=t*r,a=i[e],o=i[e+1];i[e]=n[0]*a+n[3]*o+n[6],i[e+1]=n[1]*a+n[4]*o+n[7]}}else{let n=t;for(let t=0;t<e.pointCount;t+=1){let e=t*r,a=i[e],o=i[e+1],s=r===3?i[e+2]:0;i[e]=n[0]*a+n[4]*o+n[8]*s+n[12],i[e+1]=n[1]*a+n[5]*o+n[9]*s+n[13],r===3&&(i[e+2]=n[2]*a+n[6]*o+n[10]*s+n[14])}}return mC(e,`point`,{...iC(e,`point`),P:{storage:n.storage,size:r,data:i}})}function jC(e,t,n={}){let r=lC(e)===3?3:2,i=n.targetGroup===void 0||n.targetGroup===``?void 0:vC(t,`point`,n.targetGroup)??rC(`missing-group`,`point group ${n.targetGroup} is not present on the target`),a=i===void 0?MC(t.pointCount):yC(i);if(a.length===0||e.pointCount===0)return Ll(r);let o=n.useTargetOrientations??!0,s=o?aC(t.point.pscale,`point.pscale`,[1]):void 0,c=o?aC(t.point.N,`point.N`,[2,3]):void 0,l=n.copyNumberAttribute??`copynum`,u=n.transferTargetAttributes??!0?Object.keys(t.point).filter(t=>t!==`P`&&!Object.prototype.hasOwnProperty.call(e.point,t)):[],d=[];for(let n of a){let r=dC(t,n),i=s===void 0?1:oC(s,n),a=c===void 0?0:Math.atan2(oC(c,n,1),oC(c,n,0))*180/Math.PI,o=AC(e,xC({translate:[r[0],r[1]],rotate:a,scale:[i,i]}));l!==``&&(o=hC(o,`primitive`,l,{storage:`i32`,size:1,data:new Int32Array(o.primitiveCount).fill(n)}));for(let e of u)o=hC(o,`point`,e,NC(t.point[e],n,o.pointCount));d.push(o)}return SC(d)}function MC(e){let t=Array(e);for(let n=0;n<e;n+=1)t[n]=n;return t}function NC(e,t,n){return Al(e)?pC(Array(n).fill(cC(e,t))):fC(n,e.size,e.storage,sC(e,t))}var PC=`cascade.geo`;function FC(e){return`${PC}.${e}`}function IC(e){let t=e.inputs.source,n=e.inputs.target;if(t===void 0||n===void 0){e.outputs.geometry.set(Ll(2));return}e.outputs.geometry.set(jC(t,n,{targetGroup:e.props.targetGroup,useTargetOrientations:e.props.useTargetOrientations}))}var LC={kind:`definition-v1`,moduleId:FC(`CopyToPoints`),definition:Vg,loadExecute:async()=>IC},RC=class{positions=[];size;storage;vertexPoints=[];offsets=[0];kinds=[];closed=[];attributes={point:{},vertex:{},primitive:{}};detail={};pointGroups=new Map;primitiveGroups=new Map;constructor(e={}){this.size=e.positionSize??2,this.storage=e.positionStorage??`f64`}get pointCount(){return this.positions.length/this.size}get vertexCount(){return this.vertexPoints.length}get primitiveCount(){return this.offsets.length-1}addPoint(e,t,n=0){let r=this.pointCount;return this.positions.push(e,t),this.size===3&&this.positions.push(n),r}addPoints(e){e.length%this.size!==0&&rC(`point-stride`,`${e.length} values is not a multiple of the position size ${this.size}`);let t=this.pointCount;for(let t=0;t<e.length;t+=1)this.positions.push(e[t]);return t}addPrimitive(e,t={}){let n=this.primitiveCount;for(let t of e)(!Number.isInteger(t)||t<0||t>=this.pointCount)&&rC(`vertex-point`,`primitive ${n} references point ${t} of ${this.pointCount}`),this.vertexPoints.push(t);return this.offsets.push(this.vertexPoints.length),this.kinds.push(bl.indexOf(t.kind??`poly`)),this.closed.push(+!!t.closed),n}addPolygon(e,t={}){let n=this.addPoints(e),r=[];for(let e=n;e<this.pointCount;e+=1)r.push(e);return this.addPrimitive(r,t)}setAttribute(e,t,n){return e===`point`&&t===`P`&&rC(`set-position`,`point.P is owned by the builder; use addPoint`),this.attributes[e][t]=n,this}setNumericAttribute(e,t,n,r=1,i=`f64`){return this.setAttribute(e,t,{storage:i,size:r,data:kl(i,n)})}setStringAttribute(e,t,n){return this.setAttribute(e,t,pC(n))}setDetail(e,t){return this.detail[e]=t,this}addToPointGroup(e,t){let n=this.pointGroups.get(e)??new Set;return n.add(t),this.pointGroups.set(e,n),this}addToPrimitiveGroup(e,t){let n=this.primitiveGroups.get(e)??new Set;return n.add(t),this.primitiveGroups.set(e,n),this}build(){let e=this.pointCount,t={};for(let[n,r]of this.pointGroups)t[n]=zC(r,e);let n={};for(let[e,t]of this.primitiveGroups)n[e]=zC(t,this.primitiveCount);return Fl({pointCount:e,point:{...this.attributes.point,P:{storage:this.storage,size:this.size,data:kl(this.storage,this.positions)}},vertex:this.attributes.vertex,primitive:this.attributes.primitive,detail:this.detail,topology:{vertexPoints:Int32Array.from(this.vertexPoints),offsets:Int32Array.from(this.offsets),kinds:Uint8Array.from(this.kinds),closed:Uint8Array.from(this.closed)},pointGroups:t,primitiveGroups:n})}};function zC(e,t){let n=new Uint8Array(t);for(let r of e)(!Number.isInteger(r)||r<0||r>=t)&&rC(`group-indices`,`group references element ${r}`),n[r]=1;return n}function BC(e,t){(!Number.isFinite(e[0])||!Number.isFinite(e[1]))&&rC(t,`both components must be finite`)}function VC(e={}){let[t,n]=e.size??[1,1],[r,i]=e.center??[0,0];BC([t,n],`rectangle-size`),BC([r,i],`rectangle-center`),(t<0||n<0)&&rC(`rectangle-size`,`rectangle size must not be negative`);let a=r-t/2,o=r+t/2,s=i-n/2,c=i+n/2,l=new RC;return l.addPolygon([a,s,o,s,o,c,a,c],{closed:!0}),l.build()}function HC(e={}){let[t,n]=e.center??[0,0],[r,i]=e.radius??[1,1];BC([t,n],`circle-center`),BC([r,i],`circle-radius`),(r<0||i<0)&&rC(`circle-radius`,`circle radius must not be negative`);let a=new RC;if((e.type??`bezier`)===`poly`){let o=e.divisions??32;(!Number.isSafeInteger(o)||o<3)&&rC(`circle-divisions`,`a polygonal circle needs an integer division count of at least 3`);let s=[];for(let e=0;e<o;e+=1){let a=2*Math.PI*e/o;s.push(t+r*Math.cos(a),n+i*Math.sin(a))}return a.addPolygon(s,{closed:!0}),a.build()}let o=4/3*Math.tan(Math.PI/8),s=r*o,c=i*o,l=[t+r,n,t+r,n+c,t+s,n+i,t,n+i,t-s,n+i,t-r,n+c,t-r,n,t-r,n-c,t-s,n-i,t,n-i,t+s,n-i,t+r,n-c];return a.addPolygon(l,{closed:!0,kind:`bezier`}),a.build()}function UC(e){e.outputs.geometry.set(VC({size:e.inputs.size,center:e.inputs.center}))}var WC={kind:`definition-v1`,moduleId:FC(`Rectangle`),definition:Lg,loadExecute:async()=>UC};function GC(e){e.outputs.geometry.set(HC({center:e.inputs.center,radius:e.inputs.radius,divisions:e.inputs.divisions,type:e.props.type===`poly`?`poly`:`bezier`}))}var KC={kind:`definition-v1`,moduleId:FC(`Circle`),definition:Rg,loadExecute:async()=>GC};function qC(e){e.outputs.geometry.set(SC(e.inputs.inputs.filter(e=>e!==void 0)))}var JC={kind:`definition-v1`,moduleId:FC(`Merge`),definition:Bg,loadExecute:async()=>qC};function YC(e,t){return bl[e.topology.kinds[t]]??`poly`}function XC(e,t){return e.topology.closed[t]===1}function ZC(e,t){return YC(e,t)===`bezier`}function QC(e,t){let n=ew(e,t),r=XC(e,t)?n.length/3:(n.length-1)/3,i=[];for(let e=0;e<r;e+=1){let t=e*3;i.push([n[t],n[t+1],n[t+2],n[(t+3)%n.length]])}return i}function $C(e,t){return[e.topology.offsets[t],e.topology.offsets[t+1]]}function ew(e,t){let[n,r]=$C(e,t),i=Array(r-n);for(let t=n;t<r;t+=1)i[t-n]=e.topology.vertexPoints[t];return i}function tw(e){let t=new Uint8Array(e.pointCount);for(let n of e.topology.vertexPoints)t[n]=1;let n=new Uint8Array(e.pointCount);for(let e=0;e<n.length;e+=1)n[e]=+!t[e];return n}function nw(e){if(e.pointCount===0)return;let t=uC(e),n=lC(e),r=Array(n).fill(1/0),i=Array(n).fill(-1/0);for(let a=0;a<e.pointCount;a+=1)for(let e=0;e<n;e+=1){let o=t.data[a*n+e];o<r[e]&&(r[e]=o),o>i[e]&&(i[e]=o)}return{min:r,max:i}}var rw=`ungrouped`,iw=[0,0,0,1];function aw(e,t={}){lw(t);let n=t.margin??0,r=nw(e),i=r===void 0?0:r.min[0]-n,a=r===void 0?0:r.min[1]-n,o=r===void 0?1:r.max[0]+n,s=r===void 0?1:r.max[1]+n,c=Math.max(o-i,2**-52),l=Math.max(s-a,2**-52),u=t.width&&t.width>0?t.width:c,d=t.height&&t.height>0?t.height:l,f=t.precision??3,p=e=>cw(e,f),m=t.stroke??iw,h=t.strokeWidth??1,g=t.fill??iw,_=(t.fillMode??`none`)===`solid`,v=e.primitive.Cd,y=aC(e.primitive.width,`primitive.width`,[1]),b=aC(e.primitive.opacity,`primitive.opacity`,[1]),x=aC(e.point.pscale,`point.pscale`,[1]),S=e.point.Cd;uw(y,`primitive.width`,e=>e>=0,`non-negative`),uw(b,`primitive.opacity`,e=>e>=0&&e<=1,`between 0 and 1`),uw(x,`point.pscale`,e=>e>=0,`non-negative`);let C=bC(e,`primitive`),w=new Int32Array(e.primitiveCount).fill(-1);for(let t=0;t<C.length;t+=1){let n=e.primitiveGroups[C[t]];for(let r=0;r<e.primitiveCount;r+=1)n[r]===1&&w[r]===-1&&(w[r]=t)}let T=t=>{let n=[`d="${ow(e,t,p)}"`],r=sw(v,t,`primitive`);return r!==void 0&&(n.push(`stroke="${yl.toHex(r)}"`),yl.alpha(r)<1&&n.push(`stroke-opacity="${p(yl.alpha(r))}"`)),y!==void 0&&n.push(`stroke-width="${p(oC(y,t))}"`),b!==void 0&&n.push(`opacity="${p(oC(b,t))}"`),`<path ${n.join(` `)} />`},ee=[];if(C.length===0)for(let t=0;t<e.primitiveCount;t+=1)ee.push(dw(T(t),2));else{for(let t=0;t<C.length;t+=1){let n=[];for(let r=0;r<e.primitiveCount;r+=1)w[r]===t&&n.push(dw(T(r),3));ee.push(dw(`<g id="${fw(C[t])}">`,2),...n,dw(`</g>`,2))}let t=[];for(let n=0;n<e.primitiveCount;n+=1)w[n]===-1&&t.push(dw(T(n),3));t.length>0&&ee.push(dw(`<g id="${rw}">`,2),...t,dw(`</g>`,2))}let E=tw(e),D=uC(e);for(let n=0;n<e.pointCount;n+=1){if(E[n]!==1)continue;let e=x===void 0?t.pointRadius??.5:oC(x,n),r=sw(S,n,`point`)??m,i=yl.alpha(r)<1;ee.push(dw(`<circle cx="${p(oC(D,n,0))}" cy="${p(oC(D,n,1))}" r="${p(e)}" fill="${yl.toHex(r)}"${i?` fill-opacity="${p(yl.alpha(r))}"`:``} stroke="none" />`,2))}return`${[`<svg xmlns="http://www.w3.org/2000/svg" width="${p(u)}" height="${p(d)}" viewBox="${p(i)} ${p(-s)} ${p(c)} ${p(l)}">`,dw(`<!-- Geometry is +Y up; SVG is +Y down. This is the one flip. -->`,1),dw(`<g transform="scale(1,-1)" fill="${_?yl.toHex(g):`none`}"${_&&yl.alpha(g)<1?` fill-opacity="${p(yl.alpha(g))}"`:``} stroke="${yl.toHex(m)}"${yl.alpha(m)<1?` stroke-opacity="${p(yl.alpha(m))}"`:``} stroke-width="${p(h)}"${t.opacity!==void 0&&t.opacity!==1?` opacity="${p(t.opacity)}"`:``}>`,1),...ee,dw(`</g>`,1),`</svg>`].join(`
|
|
206
|
+
`)}\n`}function ow(e,t,n){let r=uC(e),i=e=>`${n(oC(r,e,0))} ${n(oC(r,e,1))}`,a=XC(e,t);if(ZC(e,t)){let n=QC(e,t);if(n.length===0)return``;let r=[`M ${i(n[0][0])}`];for(let[,e,t,a]of n)r.push(`C ${i(e)} ${i(t)} ${i(a)}`);return a&&r.push(`Z`),r.join(` `)}let o=ew(e,t);if(o.length===0)return``;let s=[`M ${i(o[0])}`];for(let e=1;e<o.length;e+=1)s.push(`L ${i(o[e])}`);return a&&s.push(`Z`),s.join(` `)}function sw(e,t,n){if(e!==void 0)return Al(e)&&rC(`colour-storage`,`${n}.Cd is a string attribute; colour is a vec4. Convert with Color.fromHex at the boundary.`),e.size!==4&&rC(`colour-size`,`${n}.Cd has size ${e.size}; colour is a vec4`),yl.fromComponents(e.data,t*4,4)}function cw(e,t){Number.isFinite(e)||rC(`svg-number`,`cannot format non-finite value ${String(e)}`);let n=Number.parseFloat(e.toFixed(t));return Object.is(n,-0)?`0`:String(n)}function lw(e){for(let[t,n]of[[`width`,e.width],[`height`,e.height],[`margin`,e.margin],[`strokeWidth`,e.strokeWidth],[`opacity`,e.opacity],[`pointRadius`,e.pointRadius]])n!==void 0&&!Number.isFinite(n)&&rC(`svg-option`,`${t} must be finite`);((e.width??0)<0||(e.height??0)<0)&&rC(`svg-option`,`width and height must not be negative`),((e.strokeWidth??0)<0||(e.pointRadius??0)<0)&&rC(`svg-option`,`strokeWidth and pointRadius must not be negative`),e.opacity!==void 0&&(e.opacity<0||e.opacity>1)&&rC(`svg-option`,`opacity must be between 0 and 1`);let t=e.precision??3;(!Number.isSafeInteger(t)||t<0||t>15)&&rC(`svg-precision`,`precision must be an integer from 0 to 15`)}function uw(e,t,n,r){if(e!==void 0)for(let i of e.data)n(i)||rC(`attribute-value`,`${t} values must be ${r}`)}function dw(e,t){return`${` `.repeat(t)}${e}`}function fw(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`)}function pw(e){let t=[];for(let n of e){let e=n.codePointAt(0);e<128?t.push(e):e<2048?t.push(192|e>>6,128|e&63):e<65536?t.push(224|e>>12,128|e>>6&63,128|e&63):t.push(240|e>>18,128|e>>12&63,128|e>>6&63,128|e&63),e=0}return Uint8Array.from(t)}async function mw(e){let{props:t}=e,n=aw(e.inputs.geometry??Ll(2),{width:t.width,height:t.height,margin:t.margin,stroke:t.stroke,strokeWidth:t.strokeWidth,opacity:t.opacity,fill:t.fill,fillMode:t.fillMode===`solid`?`solid`:`none`,pointRadius:t.pointRadius,precision:t.precision});e.outputs.svg.set(n);let r=await e.capabilities.assets.write(pw(n),{mediaType:`image/svg+xml`,suggestedName:t.filename},{signal:e.signal});e.outputs.asset.set(r)}var hw={kind:`definition-v1`,moduleId:FC(`SvgExport`),definition:Hg,loadExecute:async()=>mw};function gw(e){let t=e.inputs.geometry??Ll(2);e.outputs.geometry.set(AC(t,xC({translate:e.inputs.translate,rotate:e.inputs.rotate,scale:e.inputs.scale,pivot:e.inputs.pivot})))}var _w={kind:`definition-v1`,moduleId:FC(`Transform`),definition:zg,loadExecute:async()=>gw},vw=Object.freeze([WC,KC,_w,JC,LC,hw]);new Map(vw.map(e=>[e.moduleId,e]));var yw=Object.freeze([...nC,...vw]),bw=new Map(yw.map(e=>[e.moduleId,e]));function xw(e){return bw.get(e)}var Sw={core:`Cascade core`,library:`Cascade library`,project:`Project module`,embedded:`Embedded in the graph`,unknown:`Unknown`};function Cw(e){return{moduleId:e,moduleFolder:null,origin:`unknown`,originLabel:Sw.unknown,libraryId:null,path:null,pathNote:null,flavour:`unknown`,flavourNote:null,runsOn:null,runsOnNote:null,icon:null,iconNote:null,definition:null,inputs:[],outputs:[],props:[],hasLegacyExecute:null,warnings:[],error:null}}function ww(e){let t=e.modulePath;return typeof t==`string`&&t?t:e.type.includes(`.`)?e.type:je(e.type)}function Tw(e){let t=e.sourceType;return typeof t==`string`&&t?t:null}function Ew(e,t){return e?Object.entries(e).map(([e,n])=>({name:e,kind:t?`prop`:typeof n?.kind==`string`?n.kind:`data`,type:typeof n?.type==`string`?n.type:null,...n&&`default`in n?{default:n.default}:{},...typeof n?.description==`string`?{description:n.description}:{}})):[]}function Dw(e,t){e.definition=t,e.flavour=`definition-v1`;let n=t;e.inputs=Ew(n.inputs,!1),e.outputs=Ew(n.outputs,!1),e.props=Ew(n.props,!0),typeof n.icon==`string`&&n.icon?(e.icon=n.icon,e.iconNote=null):(e.icon=null,e.iconNote=`The definition declares no icon; Cascade’s default is used.`),(n.runsOn===`portable`||n.runsOn===`server`||n.runsOn===`browser`)&&(e.runsOn=n.runsOn,e.runsOnNote=`Declared in the definition.`)}function Ow(e){if(e.hasLegacyExecute===!1)return["The module exports a definition but no `execute`, so there is nothing to cook — in Studio or under `cascade run`. A definition-v1 node exports both."];if(!e.definition)return[];if(!Tf(e.definition))return["The `definition` export does not declare `apiVersion: 1`, so it is not a definition-v1 node. Studio calls this module as `execute(node, graph)`, and any ports it shows are the ones that call declares."];let t=Ef(e.definition);if(t)return[`Studio cannot build ports from this definition:\n${t}`];let n=Df(e.definition);return n.length?[`The definition requires the ${n.join(`, `)} capability, which Studio does not supply. The cook fails here with that message; \`cascade run\` supplies it.`]:[]}var kw=new Map;async function Aw(e){let t=kw.get(e);return t||(t=(async()=>{let t=await fetch(`/api/nodes/${encodeURIComponent(e)}/compiled`);if(!t.ok)throw Error(await t.text()||`compile failed (${t.status})`);let n=await t.text(),r=typeof document<`u`?URL.createObjectURL(new Blob([n],{type:`text/javascript`})):`data:text/javascript;base64,${btoa(n)}`;try{let e=await od(()=>import(r),[]);return{definition:e?.definition??null,hasExecute:typeof e?.execute==`function`}}finally{r.startsWith(`blob:`)&&URL.revokeObjectURL(r)}})(),kw.set(e,t),t)}function jw(e){kw.delete(e),Mw.delete(e),Nw.delete(e)}var Mw=new Map,Nw=new Map;function Pw(e){let t=Mw.get(e);return t||(t=fetch(`/api/nodes/${encodeURIComponent(e)}/index.ts`).then(async e=>{if(!e.ok)throw Error(await e.text()||`source unavailable (${e.status})`);return e.text()}),Mw.set(e,t)),t}function Fw(e){let t=Nw.get(e);return t||(t=fetch(`/api/nodes/${encodeURIComponent(e)}/path`).then(async e=>e.ok?(await e.json())?.path??null:null).catch(()=>null),Nw.set(e,t)),t}function Iw(e){let t=/export\s+(?:const|let|var)\s+definition\b/.test(e)||/export\s*\{[^}]*\bdefinition\b[^}]*\}/.test(e),n=/export\s+(?:async\s+)?function\s+execute\b/.test(e)||/export\s+(?:const|let|var)\s+execute\b/.test(e)||/export\s*\{[^}]*\bexecute\b[^}]*\}/.test(e);return t?{flavour:`definition-v1`,hasLegacyExecute:n}:n?{flavour:`legacy-dynamic`,hasLegacyExecute:n}:{flavour:`unknown`,hasLegacyExecute:n}}async function Lw(e,t={},n={}){let r=ww(e),i=Cw(r),a=Tw(e);if(Fe(r)||a===`stdlib`){let e=Re(r);i.libraryId=e,i.origin=e===`core`?`core`:`library`,i.originLabel=Sw[i.origin],i.path=null,i.pathNote=`Compiled into Studio. No project path to resolve.`,i.runsOnNote=`The server reports runsOn for project modules only.`;let t=xw(r);if(t)Dw(i,t.definition),i.hasLegacyExecute=!1,i.flavourNote=`Registered through the definition-v1 adapter (registerDefinitionNodes).`;else{i.flavour=`core-class`,i.flavourNote=`A Node subclass compiled into Studio — neither definition-v1 nor a dynamic module.`;let e=Me(r);i.icon=e?.icon??null,i.iconNote=e?.icon?null:`No icon in the node metadata registry.`}return i}if(r.startsWith(`local.`)||a===`embedded`){if(i.origin=`embedded`,i.originLabel=Sw.embedded,i.path=null,i.pathNote=`The code lives in the graph document, not in a file.`,i.runsOnNote=`Not reported: runsOn comes from the project server, which does not see embedded code.`,i.iconNote=`Embedded code declares no icon.`,e.code){let t=Iw(e.code);i.flavour=t.flavour,i.hasLegacyExecute=t.hasLegacyExecute,t.flavour===`definition-v1`&&!t.hasLegacyExecute&&i.warnings.push("The embedded code exports a definition but no `execute`, so there is nothing to cook. A definition-v1 node exports both."),t.flavour===`unknown`&&(i.flavourNote=`Neither a definition nor an execute export was found in the embedded code.`)}else i.flavourNote=`The node carries no code, so its flavour cannot be read.`;return i}if(r.startsWith(`project.`)||a===`project`){let e=i_(r);if(i.origin=`project`,i.originLabel=Sw.project,i.moduleFolder=e,!e)return i.error=`The module id carries no folder name.`,i;let a=t[e];a?(i.runsOn=a,i.runsOnNote=`From GET /api/nodes — declared, or inferred by the server when not declared.`):i.runsOnNote=`GET /api/nodes did not list this module. Either no server is serving this project, or it serves a different one.`;let o=n[e];o&&(i.icon=o),i.path=await Fw(e),i.path||(i.pathNote=`GET /api/nodes/<module>/path did not answer.`);try{let t=Iw(await Pw(e));i.flavour=t.flavour,i.hasLegacyExecute=t.hasLegacyExecute,t.flavour===`unknown`&&(i.flavourNote=`Neither a definition nor an execute export was found in index.ts.`)}catch(e){return i.error=String(e instanceof Error?e.message:e),i}if(i.flavour===`definition-v1`){try{let t=await Aw(e);i.hasLegacyExecute=t.hasExecute,t.definition?(Dw(i,t.definition),a&&i.runsOn!==a&&i.warnings.push(`The definition declares runsOn "${i.runsOn}" but the server reports "${a}".`),o&&(i.icon=o)):i.flavourNote=`index.ts exports a definition, but the compiled module has no definition export to read.`}catch(e){i.error=String(e instanceof Error?e.message:e)}i.warnings.push(...Ow(i))}return i}return i.error=`Unrecognised module id "${r}" — no origin could be determined from the document.`,i}var Rw=u(`<div class="empty-state svelte-16oolky"><p class="svelte-16oolky">Select a node to see where it is defined</p></div>`),zw=u(`<div class="empty-state svelte-16oolky"><p class="svelte-16oolky">Reading the module…</p></div>`),Bw=u(`<span class="dim svelte-16oolky"> </span>`),Vw=u(`<span class="value mono wrap svelte-16oolky"> </span>`),Hw=u(`<span class="value unknown svelte-16oolky">unknown</span>`),Uw=u(`<p class="note svelte-16oolky"> </p>`),Ww=u(`<div class="info-row svelte-16oolky"><span class="label svelte-16oolky">API version</span> <span class="value svelte-16oolky"> </span></div>`),Gw=u(`<span class="value svelte-16oolky"> </span>`),Kw=u(`<span class="value highlight svelte-16oolky"> </span>`),qw=u(`<span class="value mono svelte-16oolky"> </span>`),Jw=u(`<span class="value dim svelte-16oolky">none</span>`),Yw=u(`<div class="info-row svelte-16oolky"><span class="label svelte-16oolky">Declared label</span> <span class="value svelte-16oolky"> </span></div>`),Xw=u(`<section class="info-section svelte-16oolky"><h3 class="svelte-16oolky">Read failed</h3> <p class="failure mono svelte-16oolky"> </p></section>`),Zw=u(`<p class="warning svelte-16oolky"> </p>`),Qw=u(`<span class="port-default mono svelte-16oolky"> </span>`),$w=u(`<p class="port-description svelte-16oolky"> </p>`),eT=u(`<div class="port svelte-16oolky"><span class="port-name mono svelte-16oolky"> </span> <span class="port-type mono svelte-16oolky"> </span> <!> <!></div>`),tT=u(`<section class="info-section svelte-16oolky"><h3 class="svelte-16oolky"> </h3> <div class="port-list svelte-16oolky"></div></section>`),nT=u(`<p class="note standalone svelte-16oolky">A dynamic module declares nothing up front — its ports appear only once it has cooked, so what it takes and returns is in the Parameters panel rather than here. Definition-v1 declares its ports statically and reads them without running anything, which is why it is where Cascade is heading; Studio now cooks both styles, so this node can be converted whenever it suits.</p>`),rT=u(`<div class="info-sections svelte-16oolky"><section class="info-section svelte-16oolky"><h3 class="svelte-16oolky">Module</h3> <div class="info-grid svelte-16oolky"><div class="info-row svelte-16oolky"><span class="label svelte-16oolky">Node</span> <span class="value mono svelte-16oolky"> </span></div> <div class="info-row svelte-16oolky"><span class="label svelte-16oolky">Module id</span> <span class="value mono wrap svelte-16oolky"> </span></div> <div class="info-row svelte-16oolky"><span class="label svelte-16oolky">Defined in</span> <span class="value svelte-16oolky"> <!></span></div> <div class="info-row svelte-16oolky"><span class="label svelte-16oolky">Path</span> <!></div> <!></div></section> <section class="info-section svelte-16oolky"><h3 class="svelte-16oolky">Format</h3> <div class="info-grid svelte-16oolky"><div class="info-row svelte-16oolky"><span class="label svelte-16oolky">Flavour</span> <span> </span></div> <!> <div class="info-row svelte-16oolky"><span class="label svelte-16oolky">execute() export</span> <!></div> <div class="info-row svelte-16oolky"><span class="label svelte-16oolky">Runs on</span> <!></div> <div class="info-row svelte-16oolky"><span class="label svelte-16oolky">Declared icon</span> <!></div> <!></div> <!> <!> <!></section> <!> <!> <!> <section class="info-section svelte-16oolky"><h3 class="svelte-16oolky">Actions</h3> <div class="actions svelte-16oolky"><button class="action-btn svelte-16oolky" disabled="">Duplicate node</button> <button class="action-btn svelte-16oolky" disabled="">Retarget…</button></div> <p class="note svelte-16oolky"></p></section></div>`),iT=u(`<div class="definition-panel svelte-16oolky"><!></div>`);function aT(e,t){ee(t,!1);let n=()=>we(_a,`$panelLockStore`,s),r=()=>we(ga,`$sharedContextStore`,s),i=()=>we($g,`$runsOnByModule`,s),a=()=>we(e_,`$iconByModule`,s),[s,c]=ne(),l=Y(),u=Y(),d=Y(),p=V(t,`panelId`,8),m=V(t,`panelApi`,8),g=V(t,`graph`,12,void 0),_=V(t,`selectedNode`,12,null);ye(()=>{r_()});let y=Y(null),b=Y(!1),S=0;async function C(e){let t=++S;if(!e){L(y,null),L(b,!1);return}L(b,!0);let n=await Lw(e,i(),a());t===S&&(L(y,n),L(b,!1))}let w={"definition-v1":`definition-v1`,"legacy-dynamic":`dynamic`,"core-class":`core class`,unknown:`Unknown`},T={portable:`portable — either side`,server:`server`,browser:`browser`};function O(e){return e===void 0?``:typeof e==`string`?`"${e}"`:Array.isArray(e)?`[${e.join(`, `)}]`:typeof e==`object`&&e?JSON.stringify(e):String(e)}function k(e){return e.kind===`trigger`?`trigger`:e.type??`unknown`}let j=`Not wired up yet. Graph.retargetDefinition can carry parameters across a swap, but nothing enumerates the versions to retarget to, and there is no parameter-preserving duplicate.`;J(()=>(n(),A(p())),()=>{L(l,n().get(p()))}),J(()=>x(l),()=>{L(u,x(l)?.isLocked??!1)}),J(()=>r(),()=>{r()&&(g(r().graph),_(r().selectedNode))}),J(()=>(x(u),x(l),A(_())),()=>{L(d,x(u)?x(l)?.lockedNode:_())}),J(()=>x(d),()=>{C(x(d))}),J(()=>(A(m()),x(u),x(d)),()=>{if(m()?.setTitle){let e=x(u)?`~ `:``;m().setTitle(x(d)?`${e}Definition: ${x(d).id}`:`${e}Definition`)}}),he(),ue();var re=iT(),N=M(re),ie=e=>{var t=Rw();E(e,t)},ae=e=>{var t=zw();E(e,t)},oe=e=>{var t=rT(),n=M(t),r=P(M(n),2),i=M(r),a=P(M(i),2),s=q(a,!0);o(i);var c=P(i,2),l=P(M(c),2),u=q(l,!0);o(c);var p=P(c,2),m=P(M(p),2),g=M(m,!0),_=P(g),b=e=>{var t=Bw(),n=q(t);K(()=>D(n,`· ${x(y),F(()=>x(y).libraryId)??``}`)),E(e,t)};Z(_,e=>{x(y),F(()=>x(y).libraryId)&&e(b)}),o(m),o(p);var S=P(p,2),C=P(M(S),2),ee=e=>{var t=Vw(),n=q(t,!0);K(()=>D(n,(x(y),F(()=>x(y).path)))),E(e,t)},A=e=>{var t=Hw();E(e,t)};Z(C,e=>{x(y),F(()=>x(y).path)?e(ee):e(A,-1)}),o(S);var ne=P(S,2),re=e=>{var t=Uw(),n=q(t,!0);K(()=>D(n,(x(y),F(()=>x(y).pathNote)))),E(e,t)};Z(ne,e=>{x(y),F(()=>!x(y).path&&x(y).pathNote)&&e(re)}),o(r),o(n);var N=P(n,2),ie=P(M(N),2),ae=M(ie),oe=P(M(ae),2);let I;var L=q(oe,!0);o(ae);var R=P(ae,2),z=e=>{var t=Ww(),n=P(M(t),2),r=q(n,!0);o(t),K(()=>D(r,(x(y),F(()=>x(y).definition.apiVersion)))),E(e,t)};Z(R,e=>{x(y),F(()=>x(y).definition&&x(y).definition.apiVersion!==void 0)&&e(z)});var se=P(R,2),B=P(M(se),2),V=e=>{var t=Hw();E(e,t)},ce=e=>{var t=Gw(),n=q(t,!0);K(()=>D(n,(x(y),F(()=>x(y).hasLegacyExecute?`yes`:`no`)))),E(e,t)};Z(B,e=>{x(y),F(()=>x(y).hasLegacyExecute===null)?e(V):e(ce,-1)}),o(se);var le=P(se,2),H=P(M(le),2),U=e=>{var t=Kw(),n=q(t,!0);K(()=>D(n,(x(y),F(()=>T[x(y).runsOn]??x(y).runsOn)))),E(e,t)},ue=e=>{var t=Hw();E(e,t)};Z(H,e=>{x(y),F(()=>x(y).runsOn)?e(U):e(ue,-1)}),o(le);var de=P(le,2),fe=P(M(de),2),pe=e=>{var t=qw(),n=q(t,!0);K(()=>D(n,(x(y),F(()=>x(y).icon)))),E(e,t)},me=e=>{var t=Jw();E(e,t)};Z(fe,e=>{x(y),F(()=>x(y).icon)?e(pe):e(me,-1)}),o(de);var he=P(de,2),W=e=>{var t=Yw(),n=P(M(t),2),r=q(n,!0);o(t),K(()=>D(r,(x(y),F(()=>x(y).definition.label)))),E(e,t)};Z(he,e=>{x(y),F(()=>x(y).definition&&x(y).definition.label)&&e(W)}),o(ie);var ge=P(ie,2),_e=e=>{var t=Uw(),n=q(t,!0);K(()=>D(n,(x(y),F(()=>x(y).flavourNote)))),E(e,t)};Z(ge,e=>{x(y),F(()=>x(y).flavourNote)&&e(_e)});var ve=P(ge,2),ye=e=>{var t=Uw(),n=q(t,!0);K(()=>D(n,(x(y),F(()=>x(y).runsOnNote)))),E(e,t)};Z(ve,e=>{x(y),F(()=>x(y).runsOnNote&&!x(y).runsOn)&&e(ye)});var be=P(ve,2),xe=e=>{var t=Uw(),n=q(t,!0);K(()=>D(n,(x(y),F(()=>x(y).iconNote)))),E(e,t)};Z(be,e=>{x(y),F(()=>x(y).iconNote&&!x(y).icon)&&e(xe)}),o(N);var J=P(N,2),Se=e=>{var t=Xw(),n=P(M(t),2),r=q(n,!0);o(t),K(()=>D(r,(x(y),F(()=>x(y).error)))),E(e,t)};Z(J,e=>{x(y),F(()=>x(y).error)&&e(Se)});var Y=P(J,2);f(Y,1,()=>(x(y),F(()=>x(y).warnings)),h,(e,t)=>{var n=Zw(),r=q(n,!0);K(()=>D(r,x(t))),E(e,n)});var Ce=P(Y,2),we=e=>{var t=te(),n=G(t);f(n,1,()=>(x(y),F(()=>[{title:`Declared inputs`,ports:x(y).inputs,showDefault:!0},{title:`Declared outputs`,ports:x(y).outputs,showDefault:!1},{title:`Declared props`,ports:x(y).props,showDefault:!0}])),h,(e,t)=>{var n=te(),r=G(n),i=e=>{var n=tT(),r=M(n),i=q(r,!0),a=P(r,2);f(a,5,()=>(x(t),F(()=>x(t).ports)),h,(e,n)=>{var r=eT(),i=M(r),a=q(i,!0),s=P(i,2),c=q(s,!0),l=P(s,2),u=e=>{var t=Qw(),r=q(t);K(e=>D(r,`= ${e??``}`),[()=>(x(n),F(()=>O(x(n).default)))]),E(e,t)};Z(l,e=>{x(t),x(n),F(()=>x(t).showDefault&&x(n).default!==void 0)&&e(u)});var d=P(l,2),f=e=>{var t=$w(),r=q(t,!0);K(()=>D(r,(x(n),F(()=>x(n).description)))),E(e,t)};Z(d,e=>{x(n),F(()=>x(n).description)&&e(f)}),o(r),K(e=>{D(a,(x(n),F(()=>x(n).name))),D(c,e)},[()=>(x(n),F(()=>k(x(n))))]),E(e,r)}),o(a),o(n),K(()=>D(i,(x(t),F(()=>x(t).title)))),E(e,n)};Z(r,e=>{x(t),F(()=>x(t).ports.length)&&e(i)}),E(e,n)}),E(e,t)},Te=e=>{var t=nT();E(e,t)};Z(Ce,e=>{x(y),F(()=>x(y).definition)?e(we):(x(y),F(()=>x(y).flavour===`legacy-dynamic`)&&e(Te,1))});var Ee=P(Ce,2),De=P(M(Ee),2),Oe=M(De);X(Oe,`title`,j);var ke=P(Oe,2);X(ke,`title`,j),o(De);var Ae=P(De,2);Ae.textContent=`Not wired up yet. Graph.retargetDefinition can carry parameters across a swap, but nothing enumerates the versions to retarget to, and there is no parameter-preserving duplicate.`,o(Ee),o(t),K(()=>{D(s,(x(d),F(()=>x(d).id))),D(u,(x(y),F(()=>x(y).moduleId))),D(g,(x(y),F(()=>x(y).originLabel))),I=v(oe,1,`value svelte-16oolky`,null,I,{unknown:x(y).flavour===`unknown`}),D(L,(x(y),F(()=>w[x(y).flavour]??x(y).flavour)))}),E(e,t)};Z(N,e=>{x(d)?x(b)&&!x(y)?e(ae,1):x(y)&&e(oe,2):e(ie)}),o(re),E(e,re),Ee(),c()}function oT(){return typeof document<`u`&&eg()}var sT=class e extends Ju{static{this.PREVIEW_INTERVAL=33}constructor(e,t,n){super(e,t,n),this._previewPending=!1,this._previewBuffer=null,this._lastPreviewTime=0}onCook(){return this.render()}requestCook(){this.markDirty()}toImageBuffer(e){return e?e instanceof pg?e:ug(e)?pg.fromCanvas(e):null:null}getImageSize(e){if(!e)return{width:0,height:0};if(e instanceof pg)return{width:e.width,height:e.height};if(ug(e)){let t=e;return{width:t.naturalWidth||e.width,height:t.naturalHeight||e.height}}return{width:0,height:0}}addResolutionParm(e=512,t=512){this.addParm(`resolution`,{value:[e,t],params:{min:[1,1],max:[4096,4096],integer:!0},displayName:`Resolution`,onChange:()=>this.requestCook()})}getResolution(){return this.props.resolution?this.props.resolution.value:(console.warn(`${this.type}: getResolution() called but no resolution parameter exists. Call addResolutionParm() in setup().`),[512,512])}resolveOutputSize(e,t,n){let r=t.filter(e=>e!==null);switch(e){case`input`:case`input1`:if(r[0])return{width:r[0].width,height:r[0].height};break;case`input2`:if(r[1])return{width:r[1].width,height:r[1].height};if(r[0])return{width:r[0].width,height:r[0].height};break;case`largest`:if(r.length>0){let e=0,t=r[0];for(let n of r){let r=n.width*n.height;r>e&&(e=r,t=n)}return{width:t.width,height:t.height}}break;case`smallest`:if(r.length>0){let e=1/0,t=r[0];for(let n of r){let r=n.width*n.height;r<e&&(e=r,t=n)}return{width:t.width,height:t.height}}break;case`custom`:if(n)return{width:n[0],height:n[1]}}return r[0]?{width:r[0].width,height:r[0].height}:{width:512,height:512}}resizeToFit(e,t,n,r=`fill`){if(e.width===t&&e.height===n)return e;let i=pg.rgba(t,n),a=e.width/e.height,o=t/n,s=0,c=0,l=e.width,u=e.height,d=0,f=0,p=t,m=n;switch(r){case`fill`:a>o?(l=Math.round(e.height*o),s=Math.round((e.width-l)/2)):(u=Math.round(e.width/o),c=Math.round((e.height-u)/2));break;case`fit`:a>o?(m=Math.round(t/a),f=Math.round((n-m)/2)):(p=Math.round(n*a),d=Math.round((t-p)/2)),i.fill(0,0),i.fill(1,0),i.fill(2,0),i.fill(3,1);break;case`stretch`:break;case`native`:p=Math.min(e.width,t),m=Math.min(e.height,n),l=p,u=m,d=Math.round((t-p)/2),f=Math.round((n-m)/2),s=Math.round((e.width-l)/2),c=Math.round((e.height-u)/2),i.fill(0,0),i.fill(1,0),i.fill(2,0),i.fill(3,1)}let h=l/p,g=u/m;for(let n=0;n<Math.min(e.channelCount,4);n++){let r=i.channels[n];for(let i=0;i<m;i++)for(let a=0;a<p;a++){let o=s+a*h,l=c+i*g;r[(f+i)*t+(d+a)]=e.sample(o,l,n)}}if(e.channelCount<4&&r!==`fit`&&r!==`native`)for(let e=0;e<m;e++)for(let n=0;n<p;n++)i.channels[3][(f+e)*t+(d+n)]=1;return i}prepareInputs(e,t=`input`,n=`fill`,r){let i=e.map(e=>this.toImageBuffer(e)),{width:a,height:o}=this.resolveOutputSize(t,i,r);return{buffers:i.map(e=>e?e.width===a&&e.height===o?e:this.resizeToFit(e,a,o,n):null),width:a,height:o}}setOutput(e,t){e.setValue(t),this._previewBuffer=t,this.updatePreviewThrottled()}updatePreviewThrottled(){if(!oT())return;let t=performance.now(),n=t-this._lastPreviewTime;if(n>=e.PREVIEW_INTERVAL)this._lastPreviewTime=t,this._previewBuffer&&(this.preview=this._previewBuffer.toCanvas()),this._previewPending=!1;else if(!this._previewPending){this._previewPending=!0;let t=e.PREVIEW_INTERVAL-n;setTimeout(()=>{this._previewPending=!1,this._lastPreviewTime=performance.now(),this._previewBuffer&&oT()&&(this.preview=this._previewBuffer.toCanvas())},t)}}getBufferInfo(){if(!this._previewBuffer)return null;let e=this._previewBuffer;return{hasOutput:!0,width:e.width,height:e.height,channels:e.channelCount,layout:e.layout,memoryBytes:e.memoryBytes,memorySizeStr:e.memorySizeStr}}},cT=u(`<section class="info-section buffer-section svelte-13kv637"><h3 class="svelte-13kv637">Output Buffer</h3> <div class="info-grid svelte-13kv637"><div class="info-row resolution-row svelte-13kv637"><span class="label svelte-13kv637">Resolution</span> <span class="value mono highlight svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Format</span> <span class="value svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Buffer Size</span> <span class="value svelte-13kv637"> </span></div></div></section>`),lT=u(`<div class="issue error svelte-13kv637"><span class="issue-type svelte-13kv637">Error</span> <span class="issue-message svelte-13kv637"> </span></div>`),uT=u(`<div class="issue warning svelte-13kv637"><span class="issue-type svelte-13kv637">Warning</span> <span class="issue-message svelte-13kv637"> </span></div>`),dT=u(`<section class="info-section svelte-13kv637"><h3 class="svelte-13kv637">Issues</h3> <div class="issues svelte-13kv637"><!> <!></div></section>`),fT=u(`<section class="info-section svelte-13kv637"><h3 class="svelte-13kv637">Code</h3> <div class="info-grid svelte-13kv637"><div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Lines</span> <span class="value svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Characters</span> <span class="value svelte-13kv637"> </span></div></div></section>`),pT=u(`<div class="info-sections svelte-13kv637"><section class="info-section svelte-13kv637"><h3 class="svelte-13kv637">Node</h3> <div class="info-grid svelte-13kv637"><div class="info-row svelte-13kv637"><span class="label svelte-13kv637">ID</span> <span class="value mono svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Type</span> <span class="value mono svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Class</span> <span class="value mono svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Path</span> <span class="value mono path svelte-13kv637"> </span></div></div></section> <section class="info-section svelte-13kv637"><h3 class="svelte-13kv637">Cook Performance <button class="reset-btn svelte-13kv637" title="Reset statistics">Reset</button></h3> <div class="info-grid svelte-13kv637"><div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Last Cook</span> <span> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Average</span> <span> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Total Time</span> <span class="value svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Cook Count</span> <span class="value svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Last Cooked</span> <span class="value svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Peak Memory</span> <span class="value svelte-13kv637"> </span></div></div></section> <!> <section class="info-section svelte-13kv637"><h3 class="svelte-13kv637">State</h3> <div class="info-grid svelte-13kv637"><div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Bypass</span> <span> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Cook Flag</span> <span> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Time Dependent</span> <span> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Dirty</span> <span> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Variadic</span> <span class="value svelte-13kv637"> </span></div></div></section> <section class="info-section svelte-13kv637"><h3 class="svelte-13kv637">Ports & Parameters</h3> <div class="info-grid svelte-13kv637"><div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Inputs</span> <span class="value svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Outputs</span> <span class="value svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Parameters</span> <span class="value svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Expressions</span> <span> </span></div></div></section> <!> <!></div>`),mT=u(`<div class="empty-state svelte-13kv637"><p class="svelte-13kv637">Select a node to view its information</p></div>`),hT=u(`<div class="cook-info-panel svelte-13kv637"><!></div>`);function gT(e,t){ee(t,!1);let n=()=>we(_a,`$panelLockStore`,i),r=()=>we(ga,`$sharedContextStore`,i),[i,a]=ne(),s=Y(),c=Y(),l=Y(),u=Y(),d=V(t,`panelId`,8),f=V(t,`panelApi`,8),p=V(t,`graph`,12,void 0),m=V(t,`selectedNode`,12,null);function h(e){return e<.01?`< 0.01ms`:e<1?`${e.toFixed(2)}ms`:e<1e3?`${e.toFixed(1)}ms`:`${(e/1e3).toFixed(2)}s`}function g(e){return e===0?`-`:e<1024?`${e}B`:e<1048576?`${(e/1024).toFixed(1)}KB`:`${(e/1048576).toFixed(2)}MB`}function _(e){return e===0?`Never`:new Date(e).toLocaleTimeString()}function y(e){return e.constructor.name}function b(e){return e.inputs.filter(e=>!e.options?.hidden).length}function S(e){return e.outputs.length}function C(e){return e.inputs.filter(e=>e.connections.length>0).length}function w(e){return e.outputs.filter(e=>e.connections.length>0).length}function T(e){return Object.keys(e.props).length}function te(e){return Object.values(e.props).filter(e=>e.expression).length}function O(){x(l)?.resetCookInfo&&x(l).resetCookInfo()}function j(e){return e instanceof sT}function re(e){return j(e)?e.getBufferInfo():null}function N(e,t){let n=e*t/1e6;return n>=1?`${e} × ${t} (${n.toFixed(1)}MP)`:`${e} × ${t} (${(e*t/1e3).toFixed(0)}K)`}function ie(e,t){switch(e){case`gray`:return`Grayscale (1ch)`;case`rgb`:return`RGB (3ch)`;case`rgba`:return`RGBA (4ch)`;default:return`${t} channels`}}J(()=>(n(),A(d())),()=>{L(s,n().get(d()))}),J(()=>x(s),()=>{L(c,x(s)?.isLocked??!1)}),J(()=>r(),()=>{r()&&(p(r().graph),m(r().selectedNode))}),J(()=>(x(c),x(s),A(m())),()=>{L(l,x(c)?x(s)?.lockedNode:m())}),J(()=>(A(f()),x(c),x(l)),()=>{if(f()?.setTitle){let e=x(c)?`~ `:``;x(l)?f().setTitle(`${e}Info: ${x(l).id}`):f().setTitle(`${e}Node Info`)}}),J(()=>x(l),()=>{L(u,x(l)?re(x(l)):null)}),he(),ue();var ae=hT(),oe=M(ae),I=e=>{var t=pT(),n=M(t),r=P(M(n),2),i=M(r),a=P(M(i),2),s=q(a,!0);o(i);var c=P(i,2),d=P(M(c),2),f=q(d,!0);o(c);var p=P(c,2),m=P(M(p),2),ee=q(m,!0);o(p);var A=P(p,2),ne=P(M(A),2),j=q(ne,!0);o(A),o(r),o(n);var re=P(n,2),ae=M(re),oe=P(M(ae));o(ae);var I=P(ae,2),L=M(I),R=P(M(L),2);let z;var se=q(R,!0);o(L);var B=P(L,2),V=P(M(B),2);let ce;var le=q(V,!0);o(B);var H=P(B,2),U=P(M(H),2),ue=q(U,!0);o(H);var de=P(H,2),fe=P(M(de),2),pe=q(fe,!0);o(de);var me=P(de,2),he=P(M(me),2),W=q(he,!0);o(me);var G=P(me,2),ge=P(M(G),2),_e=q(ge,!0);o(G),o(I),o(re);var ve=P(re,2),ye=e=>{var t=cT(),n=P(M(t),2),r=M(n),i=P(M(r),2),a=q(i,!0);o(r);var s=P(r,2),c=P(M(s),2),l=q(c,!0);o(s);var d=P(s,2),f=P(M(d),2),p=q(f,!0);o(d),o(n),o(t),K((e,t)=>{D(a,e),D(l,t),D(p,(x(u),F(()=>x(u).memorySizeStr)))},[()=>(x(u),F(()=>N(x(u).width,x(u).height))),()=>(x(u),F(()=>ie(x(u).layout,x(u).channels)))]),E(e,t)};Z(ve,e=>{x(u)&&e(ye)});var be=P(ve,2),xe=P(M(be),2),J=M(xe),Se=P(M(J),2);let Y;var Ce=q(Se,!0);o(J);var we=P(J,2),Te=P(M(we),2);let Ee;var X=q(Te,!0);o(we);var De=P(we,2),Oe=P(M(De),2);let ke;var Ae=q(Oe,!0);o(De);var je=P(De,2),Me=P(M(je),2);let Ne;var Pe=q(Me,!0);o(je);var Fe=P(je,2),Ie=P(M(Fe),2),Le=q(Ie,!0);o(Fe),o(xe),o(be);var Re=P(be,2),ze=P(M(Re),2),Be=M(ze),Ve=P(M(Be),2),He=q(Ve);o(Be);var Ue=P(Be,2),We=P(M(Ue),2),Q=q(We);o(Ue);var Ge=P(Ue,2),Ke=P(M(Ge),2),qe=q(Ke,!0);o(Ge);var Je=P(Ge,2),Ye=P(M(Je),2);let Xe;var Ze=q(Ye,!0);o(Je),o(ze),o(Re);var $=P(Re,2),Qe=e=>{var t=dT(),n=P(M(t),2),r=M(n),i=e=>{var t=lT(),n=P(M(t),2),r=q(n,!0);o(t),K(()=>D(r,(x(l),F(()=>x(l).error.message)))),E(e,t)};Z(r,e=>{x(l),F(()=>x(l).error)&&e(i)});var a=P(r,2),s=e=>{var t=uT(),n=P(M(t),2),r=q(n,!0);o(t),K(()=>D(r,(x(l),F(()=>x(l).warning)))),E(e,t)};Z(a,e=>{x(l),F(()=>x(l).warning)&&e(s)}),o(n),o(t),E(e,t)};Z($,e=>{x(l),F(()=>x(l).error||x(l).warning)&&e(Qe)});var $e=P($,2),et=e=>{var t=fT(),n=P(M(t),2),r=M(n),i=P(M(r),2),a=q(i,!0);o(r);var s=P(r,2),c=P(M(s),2),u=q(c,!0);o(s),o(n),o(t),K(e=>{D(a,e),D(u,(x(l),F(()=>x(l).code.length)))},[()=>(x(l),F(()=>x(l).code.split(`
|
|
207
|
+
`).length))]),E(e,t)};Z($e,e=>{x(l),F(()=>x(l).code)&&e(et)}),o(t),K((e,t,n,r,i,a,o,c,u,d,p,m,h,g)=>{D(s,(x(l),F(()=>x(l).id))),D(f,(x(l),F(()=>x(l).type))),D(ee,e),D(j,t),z=v(R,1,`value svelte-13kv637`,null,z,{slow:x(l).cookInfo.lastCookTime>100}),D(se,n),ce=v(V,1,`value svelte-13kv637`,null,ce,{slow:x(l).cookInfo.averageCookTime>100}),D(le,r),D(ue,i),D(pe,(x(l),F(()=>x(l).cookInfo.cookCount))),D(W,a),D(_e,o),Y=v(Se,1,`value svelte-13kv637`,null,Y,{active:x(l).bypass}),D(Ce,(x(l),F(()=>x(l).bypass?`Yes`:`No`))),Ee=v(Te,1,`value svelte-13kv637`,null,Ee,{active:x(l).cook}),D(X,(x(l),F(()=>x(l).cook?`Yes`:`No`))),ke=v(Oe,1,`value svelte-13kv637`,null,ke,{active:x(l).isTimeDependent}),D(Ae,(x(l),F(()=>x(l).isTimeDependent?`Yes`:`No`))),Ne=v(Me,1,`value svelte-13kv637`,null,Ne,{warning:x(l).isDirty}),D(Pe,(x(l),F(()=>x(l).isDirty?`Yes`:`No`))),D(Le,(x(l),F(()=>x(l).variadic?`Yes`:`No`))),D(He,`${c??``} / ${u??``} connected`),D(Q,`${d??``} / ${p??``} connected`),D(qe,m),Xe=v(Ye,1,`value svelte-13kv637`,null,Xe,{active:h}),D(Ze,g)},[()=>(x(l),F(()=>y(x(l)))),()=>(x(l),F(()=>x(l).path())),()=>(x(l),F(()=>h(x(l).cookInfo.lastCookTime))),()=>(x(l),F(()=>h(x(l).cookInfo.averageCookTime))),()=>(x(l),F(()=>h(x(l).cookInfo.totalCookTime))),()=>(x(l),F(()=>_(x(l).cookInfo.lastCookTimestamp))),()=>(x(l),F(()=>g(x(l).cookInfo.peakMemory))),()=>(x(l),F(()=>C(x(l)))),()=>(x(l),F(()=>b(x(l)))),()=>(x(l),F(()=>w(x(l)))),()=>(x(l),F(()=>S(x(l)))),()=>(x(l),F(()=>T(x(l)))),()=>te(x(l))>0,()=>(x(l),F(()=>te(x(l))))]),k(`click`,oe,O),E(e,t)},R=e=>{var t=mT();E(e,t)};Z(oe,e=>{x(l)?e(I):e(R,-1)}),o(ae),E(e,ae),Ee(),a()}p([`click`]);var _T=class{constructor(e,t=e.start){this.range=e,this._playing=!1,this.anchorMs=0,this.anchorFrame=0,this._dropped=0,this._frame=t}get frame(){return this._frame}get playing(){return this._playing}get dropped(){return this._dropped}setRange(e,t=0){this.range={...this.range,...e},this.range.end<this.range.start&&(this.range.end=this.range.start),this.setFrame(this._frame,t)}setFrame(e,t=0){return this._frame=Math.min(this.range.end,Math.max(this.range.start,Math.round(e))),this.anchorMs=t,this.anchorFrame=this._frame,this._frame}play(e){this._playing||(this._frame>=this.range.end&&!this.range.loop&&(this._frame=this.range.start),this._playing=!0,this._dropped=0,this.anchorMs=e,this.anchorFrame=this._frame)}pause(){this._playing=!1}toggle(e){this._playing?this.pause():this.play(e)}step(e,t=0){return this.pause(),this.setFrame(this._frame+e,t)}toStart(e=0){return this.setFrame(this.range.start,e)}toEnd(e=0){return this.setFrame(this.range.end,e)}advance(e,t=!1){if(!this._playing)return null;let n=Math.max(0,e-this.anchorMs)/1e3,r=Math.floor(this.anchorFrame+n*this.range.fps);if(r===this._frame)return null;if(r>this.range.end){if(!this.range.loop)return this._playing=!1,this._frame===this.range.end?null:(this._frame=this.range.end,this._frame);let t=this.range.end-this.range.start+1;r=this.range.start+(r-this.range.start)%t,this.anchorMs=e,this.anchorFrame=r}return t?(this._dropped+=1,null):(this._frame=r,r)}};function vT(e,t){if(!e)return null;let n=e[t];return typeof n==`function`?n:null}function yT(e){if(!e||typeof e!=`object`)return null;let t=e,n=t.frame??t.f??t.time??t.t,r=t.value??t.v??t.val;if(typeof n!=`number`||!Number.isFinite(n))return null;let i=typeof t.interpolation==`string`?t.interpolation:void 0;return{frame:n,value:typeof r==`number`?r:Number(r)||0,interpolation:i}}function bT(e){let t=vT(e,`hasChannel`);if(t&&!t())return[];let n=vT(e,`keys`);if(!n)return[];let r;try{r=n()}catch{return[]}return Array.isArray(r)?r.map(yT).filter(e=>e!==null).sort((e,t)=>e.frame-t.frame):[]}function xT(e){let t=new Set;for(let n of Object.keys(e.props??{}))t.add(n);for(let n of e.parameters??[])n?.name&&t.add(n.name);return[...t]}function ST(e){let t=[];for(let n of e?.nodes??[])if(typeof n?.parm==`function`)for(let e of xT(n)){let r;try{r=n.parm(e)}catch{continue}let i=bT(r);if(i.length===0)continue;let a=n.id;try{a=n.path?.()??n.id}catch{}t.push({nodeId:n.id,nodePath:a,param:e,keys:i})}return t}function CT(e,t,n){let r=(e?.nodes??[]).find(e=>e.id===t);if(!r||typeof r.parm!=`function`)return null;try{return r.parm(n)}catch{return null}}function wT(e,t,n,r,i){if(r===i)return!0;let a=CT(e,t,n);if(!a)return!1;let o=vT(a,`moveKey`);if(o)try{return o(r,i),!0}catch{return!1}let s=vT(a,`setKey`),c=vT(a,`deleteKey`);if(!s||!c)return!1;let l=bT(a).find(e=>e.frame===r);if(!l)return!1;try{return s(i,l.value,l.interpolation),c(r),!0}catch{return!1}}function TT(e){let t=ET(e);return e.width/t}function ET(e){return Math.max(1,e.end-e.start)}function DT(e,t){return(e-t.start)*TT(t)}function OT(e,t){return t.start+e/TT(t)}function kT(e,t){return Math.min(t.end,Math.max(t.start,e))}function AT(e,t){return kT(Math.round(OT(e,t)),t)}var jT=[1,2,5,10,25,50,100,250,500,1e3,2500,5e3,1e4];function MT(e,t=56){let n=TT(e);for(let e of jT)if(e*n>=t)return e;return jT[jT.length-1]}function NT(e,t=56){let n=MT(e,t),r=Math.ceil(e.start/n)*n,i=[];for(let t=r;t<=e.end;t+=n)i.push(t);return i.length===0&&i.push(e.start,e.end),i}function PT(e,t,n,r=6){let i=null,a=1/0;for(let o of t){let t=Math.abs(DT(o,n)-e);t<=r&&t<a&&(i=o,a=t)}return i}var FT=u(`<span class="note svelte-8qazfw" title="Frames skipped because a cook was still running"> </span>`),IT=u(`<span class="note warn svelte-8qazfw">Channel API cannot move keys yet</span>`),LT=u(`<span class="note svelte-8qazfw"> </span>`),RT=u(`<div class="tick svelte-8qazfw"><span class="tick-label svelte-8qazfw"> </span></div>`),zT=u(`<div class="empty svelte-8qazfw">No keyed parameters. Key a parameter to see its channel here.</div>`),BT=u(`<div></div>`),VT=u(`<div class="track-row svelte-8qazfw"><div class="gutter label svelte-8qazfw"><span class="node-name svelte-8qazfw"> </span> <span class="param-name svelte-8qazfw"> </span></div> <div class="track svelte-8qazfw" role="group"><div class="track-playhead svelte-8qazfw"></div> <!></div></div>`),HT=u(`<span class="selected-key svelte-8qazfw"> </span>`),UT=u(`<span class="hint"> </span>`),WT=u(`<div class="timeline-panel svelte-8qazfw" data-panel-type="timeline"><div class="transport svelte-8qazfw"><button class="tbtn svelte-8qazfw" title="Jump to start" aria-label="Jump to start">⏮</button> <button class="tbtn svelte-8qazfw" title="Step back" aria-label="Step back">◀</button> <button> </button> <button class="tbtn svelte-8qazfw" title="Step forward" aria-label="Step forward">▶</button> <button class="tbtn svelte-8qazfw" title="Jump to end" aria-label="Jump to end">⏭</button> <label class="field svelte-8qazfw" title="Current frame"><span class="svelte-8qazfw">Frame</span> <input type="number" aria-label="Current frame" class="svelte-8qazfw"/></label> <label class="field svelte-8qazfw" title="In point"><span class="svelte-8qazfw">In</span> <input type="number" aria-label="In point" class="svelte-8qazfw"/></label> <label class="field svelte-8qazfw" title="Out point"><span class="svelte-8qazfw">Out</span> <input type="number" aria-label="Out point" class="svelte-8qazfw"/></label> <label class="field svelte-8qazfw" title="Frames per second"><span class="svelte-8qazfw">FPS</span> <input type="number" aria-label="Frames per second" class="svelte-8qazfw"/></label> <label class="toggle svelte-8qazfw" title="Loop playback"><input type="checkbox"/> <span>Loop</span></label> <div class="spacer svelte-8qazfw"></div> <!> <!> <!></div> <div class="ruler-row svelte-8qazfw"><div class="gutter svelte-8qazfw"></div> <div class="ruler svelte-8qazfw" role="slider" tabindex="0" aria-label="Playhead"><!> <div class="playhead svelte-8qazfw"><span class="playhead-label svelte-8qazfw"> </span></div></div></div> <div class="sheet svelte-8qazfw"><!></div> <div class="status svelte-8qazfw"><!></div></div>`);function GT(e,t){ee(t,!1);let n=()=>we(ga,`$sharedContextStore`,i),r=()=>we(px,`$timelineFocus`,i),[i,s]=ne(),l=Y(),u=Y(),d=Y(),p=V(t,`panelId`,8),m=V(t,`panelParams`,8),h=V(t,`panelApi`,8,void 0),g=V(t,`containerApi`,8,void 0),_=V(t,`graph`,12,void 0);p(),m(),g();let y=Y(Gb.fps()),b=Y(1),S=Y(250),C=Y(!0),w=Y(Gb.frame()),T=Y(String(x(w))),k=new _T({start:x(b),end:x(S),fps:x(y),loop:x(C)},x(w)),j=Y(!1),N=Y(0),ie=Y(600),ae=Y([]),oe=Y(null),I=null,z=Y(!1),se=!1,B=null;async function ce(e){if(qb(e),Gb.markTimeDependentDirty(),se){B=e;return}se=!0;try{await _()?.execute()}catch(e){console.warn(`[Timeline] cook failed:`,e)}finally{se=!1;let t=B;B=null,t!==null&&t!==e&&ce(t)}}function le(e){L(w,e),L(T,String(e)),ce(e)}let H=null;function U(e){let t=k.advance(e,se);L(N,k.dropped),L(j,k.playing),t!==null&&le(t),H=k.playing?requestAnimationFrame(U):null}function de(){k.toggle(performance.now()),L(j,k.playing),x(j)&&H===null&&(H=requestAnimationFrame(U))}function pe(){k.pause(),L(j,!1)}function W(e){pe(),le(k.step(e,performance.now()))}function _e(){pe(),le(k.toStart(performance.now()))}function ve(){pe(),le(k.toEnd(performance.now()))}function be(){let e=Number.parseFloat(x(T));if(!Number.isFinite(e)){L(T,String(x(w)));return}pe(),le(k.setFrame(e,performance.now()))}function xe(){x(S)<x(b)&&L(S,x(b)),x(y)<=0&&L(y,1),Gb.setFps(x(y)),k.setRange({start:x(b),end:x(S),fps:x(y),loop:x(C)},performance.now()),(x(w)<x(b)||x(w)>x(S))&&le(k.setFrame(x(w),performance.now()))}let Se=Y();function Te(e,t){let n=t.getBoundingClientRect();return AT(e.clientX-n.left,x(l))}function De(e){x(Se)&&(pe(),e.currentTarget.setPointerCapture(e.pointerId),Oe(e))}function Oe(e){if(!x(Se))return;let t=k.setFrame(Te(e,x(Se)),performance.now());t!==x(w)&&le(t)}function ke(e){e.buttons!==0&&Oe(e)}function Ae(e){let t=e.currentTarget;t.hasPointerCapture?.(e.pointerId)&&t.releasePointerCapture(e.pointerId)}let je=null;function Me(){L(ae,ST(_())),x(oe)&&!x(ae).some(e=>e.nodeId===x(oe).nodeId&&e.param===x(oe).param&&e.keys.some(e=>e.frame===x(oe).frame))&&L(oe,null)}function Ne(e,t){Me();let n=x(ae).find(n=>n.nodeId===e&&n.param===t);if(!n?.keys.length){L(oe,null),L(Pe,`${e}.${t} has no keys yet — alt-click the parameter to set one.`);return}L(Pe,null);let r=n.keys.reduce((e,t)=>Math.abs(t.frame-x(w))<Math.abs(e.frame-x(w))?t:e);L(oe,{nodeId:e,param:t,frame:r.frame,value:r.value})}let Pe=Y(null);function Fe(e){return e.keys.map(e=>e.frame)}function Ie(e,t){return DT(I&&I.nodeId===e.nodeId&&I.param===e.param&&I.from===t?I.to:t,x(l))}function Le(e,t){let n=e.currentTarget,r=n.getBoundingClientRect(),i=PT(e.clientX-r.left,Fe(t),x(l));if(i===null){L(oe,null);return}let a=t.keys.find(e=>e.frame===i);L(oe,{nodeId:t.nodeId,param:t.param,frame:i,value:a?.value??0}),I={nodeId:t.nodeId,param:t.param,from:i,to:i},n.setPointerCapture(e.pointerId)}function Re(e){if(!I||e.buttons===0)return;let t=e.currentTarget.getBoundingClientRect(),n=AT(e.clientX-t.left,x(l));n!==I.to&&(I={...I,to:n})}function ze(e){let t=e.currentTarget;if(t.hasPointerCapture?.(e.pointerId)&&t.releasePointerCapture(e.pointerId),!I)return;let n=I;I=null,n.to!==n.from&&(wT(_(),n.nodeId,n.param,n.from,n.to)?(L(oe,x(oe)?{...x(oe),frame:n.to}:null),Me(),ce(x(w))):(L(z,!0),setTimeout(()=>{L(z,!1)},4e3)))}ye(()=>{L(y,Gb.fps()),L(w,Gb.frame()),L(T,String(x(w))),k.setFrame(x(w),performance.now()),Me(),je=setInterval(Me,1e3)}),me(()=>{H!==null&&cancelAnimationFrame(H),je!==null&&clearInterval(je)}),J(()=>n(),()=>{n()&&_(n().graph)}),J(()=>(x(b),x(S),x(ie)),()=>{L(l,{start:x(b),end:x(S),width:Math.max(1,x(ie))})}),J(()=>x(l),()=>{L(u,NT(x(l)))}),J(()=>(x(w),x(l)),()=>{L(d,DT(x(w),x(l)))}),J(()=>A(_()),()=>{_(),Me()}),J(()=>r(),()=>{r()&&Ne(r().nodeId,r().param)}),J(()=>(A(h()),x(j),x(w)),()=>{h()?.setTitle&&h().setTitle(x(j)?`Timeline · ${x(w)}`:`Timeline`)}),he(),ue();var Be=WT(),Ve=M(Be),He=M(Ve),Ue=P(He,2),We=P(Ue,2);let Q;var Ge=q(We,!0),Ke=P(We,2),qe=P(Ke,2),Je=P(qe,2),Ye=P(M(Je),2);re(Ye),o(Je);var Xe=P(Je,2),Ze=P(M(Xe),2);re(Ze),o(Xe);var $=P(Xe,2),Qe=P(M($),2);re(Qe),o($);var $e=P($,2),et=P(M($e),2);re(et),o($e);var tt=P($e,2),nt=M(tt);re(nt),c(2),o(tt);var rt=P(tt,4),it=e=>{var t=FT(),n=q(t);K(()=>D(n,`${x(N)??``} dropped`)),E(e,t)};Z(rt,e=>{x(j)&&x(N)>0&&e(it)});var at=P(rt,2),ot=e=>{var t=IT();E(e,t)};Z(at,e=>{x(z)&&e(ot)});var st=P(at,2),ct=e=>{var t=LT(),n=q(t,!0);K(()=>D(n,x(Pe))),E(e,t)};Z(st,e=>{x(Pe)&&e(ct)}),o(Ve);var lt=P(Ve,2),ut=M(lt);a(ut,`width: 170px`);var dt=P(ut,2),ft=M(dt);f(ft,1,()=>x(u),e=>e,(e,t)=>{var n=RT(),r=M(n),i=q(r,!0);o(n),K(e=>{a(n,`left: ${e??``}px`),D(i,x(t))},[()=>(A(DT),x(t),x(l),F(()=>DT(x(t),x(l))))]),E(e,n)});var pt=P(ft,2),mt=M(pt),ht=q(mt,!0);o(pt),o(dt),ge(dt,e=>L(Se,e),()=>x(Se)),o(lt);var gt=P(lt,2),_t=M(gt),vt=e=>{var t=zT();E(e,t)},yt=e=>{var t=te(),n=G(t);f(n,1,()=>x(ae),e=>e.nodeId+`/`+e.param,(e,t)=>{var n=VT(),r=M(n);a(r,`width: 170px`);var i=M(r),s=q(i,!0),c=P(i,2),l=q(c,!0);o(r);var u=P(r,2),p=M(u),m=P(p,2);f(m,1,()=>(x(t),F(()=>x(t).keys)),e=>e.frame,(e,n)=>{var r=BT();let i;K(e=>{i=v(r,1,`key svelte-8qazfw`,null,i,{selected:x(oe)&&x(oe).nodeId===x(t).nodeId&&x(oe).param===x(t).param&&x(oe).frame===x(n).frame}),a(r,`left: ${e??``}px`),X(r,`title`,`frame ${x(n),F(()=>x(n).frame)??``} · ${x(n),F(()=>x(n).value)??``}`)},[()=>(x(t),x(n),F(()=>Ie(x(t),x(n).frame)))]),E(e,r)}),o(u),o(n),K(()=>{X(r,`title`,`${x(t),F(()=>x(t).nodePath)??``}/${x(t),F(()=>x(t).param)??``}`),D(s,(x(t),F(()=>x(t).nodeId))),D(l,(x(t),F(()=>x(t).param))),X(u,`aria-label`,`${x(t),F(()=>x(t).nodeId)??``} ${x(t),F(()=>x(t).param)??``} channel`),a(p,`left: ${x(d)??``}px`)}),O(`pointerdown`,u,e=>Le(e,x(t))),O(`pointermove`,u,Re),O(`pointerup`,u,ze),E(e,n)}),E(e,t)};Z(_t,e=>{x(ae),F(()=>x(ae).length===0)?e(vt):e(yt,-1)}),o(gt);var bt=P(gt,2),xt=M(bt),St=e=>{var t=HT(),n=q(t);K(()=>D(n,`${x(oe),F(()=>x(oe).nodeId)??``}/${x(oe),F(()=>x(oe).param)??``} — frame ${x(oe),F(()=>x(oe).frame)??``}, value ${x(oe),F(()=>x(oe).value)??``}`)),E(e,t)},Ct=e=>{var t=UT(),n=q(t);K(()=>D(n,`${x(ae),F(()=>x(ae).length)??``} channel${x(ae),F(()=>x(ae).length===1?``:`s`)??``} · drag a key to move it in time`)),E(e,t)};Z(xt,e=>{x(oe)?e(St):e(Ct,-1)}),o(bt),o(Be),K(()=>{Q=v(We,1,`tbtn play svelte-8qazfw`,null,Q,{active:x(j)}),X(We,`title`,x(j)?`Pause`:`Play`),X(We,`aria-label`,x(j)?`Pause`:`Play`),D(Ge,x(j)?`⏸`:`▶`),X(dt,`aria-valuemin`,x(b)),X(dt,`aria-valuemax`,x(S)),X(dt,`aria-valuenow`,x(w)),a(pt,`left: ${x(d)??``}px`),D(ht,x(w))}),O(`click`,He,_e),O(`click`,Ue,()=>W(-1)),O(`click`,We,de),O(`click`,Ke,()=>W(1)),O(`click`,qe,ve),Ce(Ye,()=>x(T),e=>L(T,e)),O(`change`,Ye,be),O(`keydown`,Ye,e=>{e.key===`Enter`&&be()}),Ce(Ze,()=>x(b),e=>L(b,e)),O(`change`,Ze,xe),Ce(Qe,()=>x(S),e=>L(S,e)),O(`change`,Qe,xe),Ce(et,()=>x(y),e=>L(y,e)),O(`change`,et,xe),R(nt,()=>x(C),e=>L(C,e)),O(`change`,nt,xe),fe(dt,`clientWidth`,e=>L(ie,e)),O(`pointerdown`,dt,De),O(`pointermove`,dt,ke),O(`pointerup`,dt,Ae),O(`keydown`,dt,e=>{e.key===`ArrowLeft`&&(e.preventDefault(),W(-1)),e.key===`ArrowRight`&&(e.preventDefault(),W(1))}),E(e,Be),Ee(),s()}var KT=u(`<div class="panel-error svelte-1tj4xha" role="alert"> </div>`),qT=u(`<div class="project-panel svelte-1tj4xha"></div>`);function JT(e,t){ee(t,!1);let n=V(t,`panelParams`,8),r=V(t,`panelApi`,8),i=V(t,`loader`,8,iy),a=Y(),o=Y(``);ye(()=>{let e=!1,t,s=new AbortController,c=n().projectPanelName;if(!c){L(o,`Project panel name is missing`);return}return i()(c).then(async i=>{if(e)return;let o=await i.mount(x(a),cy({context:ba,close:()=>r().close(),sourceNodeId:n().sourceNodeId,signal:s.signal}));e?o?.():t=o}).catch(t=>{e||L(o,t instanceof Error?t.message:String(t))}),()=>{e=!0,s.abort(),t?.()}}),ue();var s=te(),c=G(s),l=e=>{var t=KT(),n=q(t,!0);K(()=>D(n,x(o))),E(e,t)},u=e=>{var t=qT();ge(t,e=>L(a,e),()=>x(a)),E(e,t)};Z(c,e=>{x(o)?e(l):e(u,-1)}),E(e,s),Ee()}var YT=ie(()=>cl),XT=u(`<button class="add-panel-option svelte-1vs60xl"><!> <span class="panel-label svelte-1vs60xl"> </span></button>`),ZT=u(`<div class="add-panel-menu svelte-1vs60xl"></div>`),QT=u(`<div class="dockview-container cascade-theme svelte-1vs60xl"></div> <!>`,1);function $T(t,n){ee(n,!1);let r=()=>we(rl,`$panelTypes`,i),[i,s]=ne(),c=Y(),l=xe(),u=Y(!1),d={x:0,y:0},p=Y(),m=Y(``),g=``,_=V(n,`graph`,8,void 0),v=V(n,`selectedNode`,8,null),y=V(n,`selectedAnnotation`,8,null),b=V(n,`activeTool`,8,`select`),S=V(n,`activeLibrary`,8,null),C=V(n,`documentName`,8,`Untitled`),w=V(n,`presentationMode`,8,!1),T=V(n,`onRecordHistory`,8,void 0),te=Y(),k=null;function j(e){let t=document.querySelector(`[data-panel-type="graph"]`);t&&t.dispatchEvent(new CustomEvent(`addNode`,{detail:e}))}function re(){let e=document.querySelector(`[data-panel-type="graph"]`);e&&e.dispatchEvent(new CustomEvent(`centerOnNodes`))}function N(){let e=document.querySelector(`[data-panel-type="graph"]`);e&&e.dispatchEvent(new CustomEvent(`selectAll`))}function ie(){let e=document.querySelector(`[data-panel-type="graph"]`);e&&e.dispatchEvent(new CustomEvent(`deselectAll`))}function ae(){let e=document.querySelector(`[data-panel-type="graph"]`);e&&e.dispatchEvent(new CustomEvent(`deleteSelected`))}function oe(e,t){YT().openCodeEditor(e,t)}function R(){YT().resetLayout()}function z(e){YT().focusPanel(e)}async function B(e,t){g=e,d=t,L(u,!0),await le()}async function le(){if(L(m,`left: ${d.x}px; top: ${d.y}px; visibility: hidden`),await e(),!x(p))return;let{width:t,height:n}=x(p).getBoundingClientRect(),r=K_(d,{width:t,height:n},{width:window.innerWidth,height:window.innerHeight});L(m,`left: ${r.x}px; top: ${r.y}px`)}function H(e){YT().addPanelToGroup(e,g),L(u,!1)}function U(){L(u,!1)}ye(async()=>{xa(`graph`,dv,`Graph`),xa(`inspector`,Ux,`Parameters`),xa(`definition`,aT,`Definition`),xa(`viewer`,dS,`Viewer`),xa(`log`,_S,`Log`),xa(`agent`,JS,`Agent`),Sa(`code`,()=>od(()=>import(`./CodePanel-DPNEYfcR.js`),__vite__mapDeps([0,1,2])),`Code`),xa(`info`,gT,`Node Info`),xa(`timeline`,GT,`Timeline`);try{let e=await ry();il(e);for(let t of e){xa(`project:${t.name}`,JT,t.title);for(let e of t.rendererTypes??[])my(e,t.name)}}catch(e){console.warn(`Failed to discover project panels:`,e),il([])}YT(YT().onAddPanelClick=B),YT().initialize(x(te)),k=setInterval(()=>{YT().saveLayout()},3e4)}),me(()=>{k&&clearInterval(k),YT(YT().onAddPanelClick=null),YT().dispose()}),J(()=>(A(_()),A(v()),A(y()),A(b()),A(S()),A(C()),A(w()),A(T()),YT()),()=>{L(c,{graph:_(),selectedNode:v(),selectedAnnotation:y(),activeTool:b(),activeLibrary:S(),documentName:C(),presentationMode:w(),onRecordHistory:T(),onNodeSelect:e=>{l(`nodeSelect`,{node:e})},onAnnotationSelect:e=>{l(`annotationSelect`,{annotationId:e})},onToolChange:e=>{l(`toolChange`,e)},onLibraryToggle:e=>{l(`libraryToggle`,e)},onAction:e=>{l(`action`,e)},onNameChange:e=>{l(`nameChange`,e)},onOpenNodePanel:e=>{l(`openNodePanel`,e)},onPanelAction:(e,t)=>{e.startsWith(`panel:`)?YT().openProjectPanel(e.slice(6),t):l(`action`,{action:e,nodeId:t})}})}),J(()=>x(c),()=>{ya(x(c))}),he();var de={addNode:j,centerOnNodes:re,selectAll:N,deselectAll:ie,deleteSelected:ae,openCodeEditor:oe,resetLayout:R,focusPanel:z};ue();var fe=QT();O(`click`,ce,U);var pe=G(fe);ge(pe,e=>L(te,e),()=>x(te));var W=P(pe,2),_e=e=>{var t=ZT();f(t,5,r,h,(e,t)=>{var n=XT(),r=M(n);Vc(r,{get icon(){return x(t),F(()=>x(t).icon)},size:14,class:`panel-icon`});var i=P(r,2),a=q(i,!0);o(n),K(()=>D(a,(x(t),F(()=>x(t).label)))),O(`click`,n,()=>H(x(t).type)),E(e,n)}),o(t),ge(t,e=>L(p,e),()=>x(p)),K(()=>a(t,x(m))),O(`click`,t,I(function(e){be.call(this,n,e)})),E(e,t)};Z(W,e=>{x(u)&&e(_e)}),E(t,fe),se(n,`addNode`,j),se(n,`centerOnNodes`,re),se(n,`selectAll`,N),se(n,`deselectAll`,ie),se(n,`deleteSelected`,ae),se(n,`openCodeEditor`,oe),se(n,`resetLayout`,R),se(n,`focusPanel`,z);var ve=Ee(de);return s(),ve}var eE=u(`<div class="separator svelte-1tlamc9"></div>`),tE=u(`<span class="item-shortcut svelte-1tlamc9"> </span>`),nE=u(`<button class="dropdown-item svelte-1tlamc9"><span class="item-label svelte-1tlamc9"> </span> <!></button>`),rE=u(`<div class="dropdown svelte-1tlamc9"></div>`),iE=u(`<button><span class="item-label svelte-1tlamc9"> </span> <!></button>`),aE=u(`<input class="name-input svelte-1tlamc9" type="text"/>`),oE=u(`<button class="document-name svelte-1tlamc9" title="Click to rename"> </button>`),sE=u(`<div class="menu-bar svelte-1tlamc9"><div class="menu-left svelte-1tlamc9"><div><button class="menu-button svelte-1tlamc9">File</button> <!></div> <div><button class="menu-button svelte-1tlamc9">Edit</button> <!></div> <div class="menu-item svelte-1tlamc9"><button class="menu-button svelte-1tlamc9">Create</button></div> <div><button class="menu-button svelte-1tlamc9">View</button> <!></div></div> <div class="menu-center svelte-1tlamc9"><!></div> <div class="menu-right svelte-1tlamc9"></div></div>`);function cE(e,t){ee(t,!1);let n=Y(),r=Y(),i=V(t,`documentName`,8,`Untitled`),a=V(t,`canUndo`,8,!1),s=V(t,`canRedo`,8,!1),l=xe(),u=Y(null),d=Y(!1),p=Y(),m=Y(i()),g=Y();function _(e){x(u)===e?L(u,null):L(u,e)}function y(e){l(`action`,e),L(u,null)}function b(){if(x(g)){let e=x(g).getBoundingClientRect();l(`openNodePanel`,{x:e.left,y:e.bottom+4})}else l(`action`,`addNode`);L(u,null)}function S(e){e.target.closest(`.menu-bar`)||L(u,null)}function C(){L(d,!0),L(m,i()),setTimeout(()=>{x(p)?.focus(),x(p)?.select()},0)}function w(){L(d,!1),x(m).trim()&&x(m)!==i()&&l(`nameChange`,x(m).trim())}function T(e){e.key===`Enter`?w():e.key===`Escape`&&(L(d,!1),L(m,i()))}let k=[{label:`Clean Up Layout`,action:`cleanUpLayout`,shortcut:`⇧L`},{label:`Center on Nodes`,action:`centerOnNodes`,shortcut:`H`},{label:`Reset Layout`,action:`resetLayout`,shortcut:`⇧⌘P`},{type:`separator`},{label:`Maximize Tab`,action:`maximizeTab`,shortcut:`⌘B`},{label:`Presentation Mode`,action:`presentationMode`,shortcut:`⌘.`},{type:`separator`},{label:`Focus Graph`,action:`focusGraph`,shortcut:`⌘1`},{label:`Focus Viewer`,action:`focusViewer`,shortcut:`⌘2`},{label:`Focus Parameters`,action:`focusInspector`,shortcut:`⌘3`},{label:`Focus Definition`,action:`focusDefinition`,shortcut:`⌘6`},{label:`Focus Log`,action:`focusLog`,shortcut:`⌘4`},{label:`Focus Agent`,action:`focusAgent`,shortcut:`⌘5`},{label:`Focus Timeline`,action:`focusTimeline`,shortcut:`⌘7`}];J(()=>A(i()),()=>{L(m,i())}),J(()=>{},()=>{L(n,[{label:`New Project`,action:`new`,shortcut:`⌥N`},{label:`Open...`,action:`open`,shortcut:`⌥O`},{type:`separator`},{label:`Save`,action:`save`,shortcut:`⌥S`},{label:`Save As...`,action:`saveAs`,shortcut:`⇧⌥S`},{label:`Version History...`,action:`versionHistory`},{type:`separator`},{label:`Export...`,action:`export`,shortcut:`⌘E`},{type:`separator`},{label:`Project Settings...`,action:`projectSettings`,shortcut:`⇧⌘,`},{label:`Settings...`,action:`settings`,shortcut:`⌘,`},{type:`separator`},{label:`About Cascade`,action:`about`}])}),J(()=>(A(a()),A(s())),()=>{L(r,[{label:`Undo`,action:`undo`,shortcut:`⌘Z`,disabled:!a()},{label:`Redo`,action:`redo`,shortcut:`⇧⌘Z`,disabled:!s()},{type:`separator`},{label:`Select All`,action:`selectAll`,shortcut:`⌘A`},{label:`Deselect All`,action:`deselectAll`,shortcut:`⇧⌘A`},{type:`separator`},{label:`Delete Selected`,action:`delete`,shortcut:`⌫`}])}),he(),ue();var ne=sE();O(`click`,ce,S);var j=M(ne),N=M(j);let ie;var ae=M(N),oe=P(ae,2),I=e=>{var t=rE();f(t,5,()=>x(n),h,(e,t)=>{var n=te(),r=G(n),i=e=>{var t=eE();E(e,t)},a=e=>{var n=nE(),r=M(n),i=q(r,!0),a=P(r,2),s=e=>{var n=tE(),r=q(n,!0);K(()=>D(r,(x(t),F(()=>x(t).shortcut)))),E(e,n)};Z(a,e=>{x(t),F(()=>x(t).shortcut)&&e(s)}),o(n),K(()=>D(i,(x(t),F(()=>x(t).label)))),O(`click`,n,()=>x(t).action&&y(x(t).action)),E(e,n)};Z(r,e=>{x(t),F(()=>x(t).type===`separator`)?e(i):e(a,-1)}),E(e,n)}),o(t),E(e,t)};Z(oe,e=>{x(u)===`file`&&e(I)}),o(N);var R=P(N,2);let z;var se=M(R),B=P(se,2),le=e=>{var t=rE();f(t,5,()=>x(r),h,(e,t)=>{var n=te(),r=G(n),i=e=>{var t=eE();E(e,t)},a=e=>{var n=iE();let r;var i=M(n),a=q(i,!0),s=P(i,2),c=e=>{var n=tE(),r=q(n,!0);K(()=>D(r,(x(t),F(()=>x(t).shortcut)))),E(e,n)};Z(s,e=>{x(t),F(()=>x(t).shortcut)&&e(c)}),o(n),K(()=>{r=v(n,1,`dropdown-item svelte-1tlamc9`,null,r,{disabled:x(t).disabled}),n.disabled=(x(t),F(()=>x(t).disabled)),D(a,(x(t),F(()=>x(t).label)))}),O(`click`,n,()=>!x(t).disabled&&x(t).action&&y(x(t).action)),E(e,n)};Z(r,e=>{x(t),F(()=>x(t).type===`separator`)?e(i):e(a,-1)}),E(e,n)}),o(t),E(e,t)};Z(B,e=>{x(u)===`edit`&&e(le)}),o(R);var H=P(R,2),U=M(H);ge(U,e=>L(g,e),()=>x(g)),o(H);var de=P(H,2);let fe;var pe=M(de),me=P(pe,2),W=e=>{var t=rE();f(t,5,()=>k,h,(e,t)=>{var n=te(),r=G(n),i=e=>{var t=eE();E(e,t)},a=e=>{var n=nE(),r=M(n),i=q(r,!0),a=P(r,2),s=e=>{var n=tE(),r=q(n,!0);K(()=>D(r,(x(t),F(()=>x(t).shortcut)))),E(e,n)};Z(a,e=>{x(t),F(()=>x(t).shortcut)&&e(s)}),o(n),K(()=>D(i,(x(t),F(()=>x(t).label)))),O(`click`,n,()=>x(t).action&&y(x(t).action)),E(e,n)};Z(r,e=>{x(t),F(()=>x(t).type===`separator`)?e(i):e(a,-1)}),E(e,n)}),o(t),E(e,t)};Z(me,e=>{x(u)===`view`&&e(W)}),o(de),o(j);var _e=P(j,2),ve=M(_e),ye=e=>{var t=aE();re(t),ge(t,e=>L(p,e),()=>x(p)),Ce(t,()=>x(m),e=>L(m,e)),O(`blur`,t,w),O(`keydown`,t,T),E(e,t)},be=e=>{var t=oE(),n=q(t,!0);K(()=>D(n,i())),O(`click`,t,C),E(e,t)};Z(ve,e=>{x(d)?e(ye):e(be,-1)}),o(_e),c(2),o(ne),K(()=>{ie=v(N,1,`menu-item svelte-1tlamc9`,null,ie,{active:x(u)===`file`}),z=v(R,1,`menu-item svelte-1tlamc9`,null,z,{active:x(u)===`edit`}),fe=v(de,1,`menu-item svelte-1tlamc9`,null,fe,{active:x(u)===`view`})}),O(`click`,ae,()=>_(`file`)),O(`click`,se,()=>_(`edit`)),O(`click`,U,b),O(`click`,pe,()=>_(`view`)),E(e,ne),Ee()}var lE=`cascade-node-history`,uE=5;function dE(){try{let e=localStorage.getItem(lE);if(e)return JSON.parse(e)}catch(e){console.warn(`Failed to load node history:`,e)}return[]}function fE(e){try{localStorage.setItem(lE,JSON.stringify(e))}catch(e){console.warn(`Failed to save node history:`,e)}}function pE(){let{subscribe:e,set:t,update:n}=w(dE());return{subscribe:e,addToHistory(e){n(t=>{let n=[e,...t.filter(t=>t.type!==e.type)].slice(0,uE);return fE(n),n})},clear(){t([]),localStorage.removeItem(lE)}}}var mE=pE(),hE=u(`<button><span class="node-icon svelte-dm3w9n"><!></span> <span class="node-name svelte-dm3w9n"> </span> <span class="node-path svelte-dm3w9n"> </span></button>`),gE=u(`<div class="empty-state svelte-dm3w9n">No nodes found</div>`),_E=u(`<!> <!>`,1),vE=u(`<button><span class="label svelte-dm3w9n"> </span> <span class="arrow-icon svelte-dm3w9n"><!></span></button>`),yE=u(`<button class="node-item history-item svelte-dm3w9n"><span class="node-icon svelte-dm3w9n"><!></span> <span class="node-name svelte-dm3w9n"> </span> <span class="node-path svelte-dm3w9n"> </span></button>`),bE=u(`<div class="separator svelte-dm3w9n"></div> <div class="section-label svelte-dm3w9n">Recent</div> <!>`,1),xE=u(`<!> <div class="separator svelte-dm3w9n"></div> <button><span class="label svelte-dm3w9n">All</span> <span class="arrow-icon svelte-dm3w9n"><!></span></button> <div class="separator svelte-dm3w9n"></div> <button class="library-item svelte-dm3w9n"><span class="node-icon"><!></span> <span class="label svelte-dm3w9n"> </span></button> <!>`,1),SE=u(`<div class="menu-column submenu-column svelte-dm3w9n" role="group" aria-label="All nodes"></div>`),CE=u(`<div class="separator svelte-dm3w9n"></div>`),wE=u(`<button class="node-item svelte-dm3w9n"><span class="node-icon svelte-dm3w9n"><!></span> <span class="node-name svelte-dm3w9n"> </span></button>`),TE=u(`<button><span class="node-icon svelte-dm3w9n"><!></span> <span class="node-name svelte-dm3w9n"> </span></button>`),EE=u(`<div class="menu-column submenu-column nodes-submenu svelte-dm3w9n" role="group"></div>`),DE=u(`<div class="menu-column submenu-column svelte-dm3w9n" role="group"><!> <!> <!></div> <!>`,1),OE=u(`<div class="menu-column main-column svelte-dm3w9n" role="dialog" aria-label="Create node" tabindex="-1"><div class="search svelte-dm3w9n"><input type="text" placeholder="Type to search..." class="search-input svelte-dm3w9n"/></div> <!></div> <!>`,1);function kE(e,t){ee(t,!1);let n=()=>we(t_,`$projectNodeModules`,s),r=()=>we(e_,`$iconByModule`,s),i=()=>we(mE,`$nodeHistoryStore`,s),[s,c]=ne(),l=Y(),u=Y(),d=Y(),p=Y(),m=Y(),_=Y(),y=Y(),b=Y(),S=Y(),C=Y(),w=Y(),T=Y(),k=Y(),j=Y(),N=Y(!1),ie=Y(null);async function oe(){L(ie,x(ie)??(await od(async()=>{let{default:e}=await import(`./CustomNodeDialog-DeHCAvgb.js`);return{default:e}},__vite__mapDeps([3,1,4]))).default),L(N,!0)}let I=V(t,`libraryId`,8,null),R=V(t,`categoryId`,12,null),z=V(t,`centerPosition`,24,()=>({x:0,y:0})),se=V(t,`fixedPosition`,8,null),B=xe(),le=Y(),H=Y(``),U=Y(),de=Y(),fe=Y({x:0,y:0}),pe=Y(!1),me=Y(160),W=Y(180),_e=Y(-1),ve=Y(-1),be=Y(-1),Se=Y(`library`),Te=Y(void 0),De=Y(null),Oe=Y(0),ke=Y(0);function Ae(){if(se()){L(fe,{x:se().x,y:se().y}),L(pe,!0);return}if(!x(U)){(z().x!==0||z().y!==0)&&L(fe,{x:z().x,y:z().y});return}let e=document.querySelector(`[data-window-id="graph"]`);if(!e){L(fe,{x:z().x-80,y:z().y-200}),L(pe,!0);return}let t=e.getBoundingClientRect(),n=x(U).getBoundingClientRect(),r=n.width||160,i=n.height||400,a=z().x-t.left-r/2,o=z().y-t.top-i/2,s=t.width-r-10,c=t.height-i-10;a=Math.max(10,Math.min(s,a)),o=Math.max(10,Math.min(c,o)),L(fe,{x:t.left+a,y:t.top+o}),L(pe,!0)}ye(()=>{let e=()=>{(I()||R())&&Ae()};window.addEventListener(`resize`,e);let t=e=>{if(!x(N)&&(I()||R())){let t=e.target,n=document.querySelectorAll(`.menu-column`),r=!1;n.forEach(e=>{e.contains(t)&&(r=!0)}),document.querySelector(`.dialog-overlay`)?.contains(t)&&(r=!0),r||Le()}};return document.addEventListener(`mousedown`,t,!0),()=>{window.removeEventListener(`resize`,e),document.removeEventListener(`mousedown`,t,!0)}});function Me(e){let t=x(l).find(t=>t.id===e);if(!t)return[];let n=[];return t.categories.forEach(e=>{n.push(...e.nodes)}),n}function Ne(e){let t=e.categoryId||R(),n=e.type.startsWith(`annotation:`)?e.type:je(e.type);mE.addToHistory({name:e.name,icon:e.icon,description:e.description,type:e.type}),B(`addNode`,{type:n,libraryId:I(),categoryId:t})}function Pe(e,t){B(`selectCategory`,{libraryId:e,categoryId:t})}function Fe(e){let{name:t,modulePath:n,baseClass:r,template:i}=e.detail,a=(qg[i]||qg.node)(t);mE.addToHistory({name:t,icon:`Zap`,description:`Custom node based on ${r}`,type:n}),B(`addNode`,{type:n,libraryId:null,categoryId:null,customConfig:{name:t,modulePath:n,baseClass:r,code:a}}),L(N,!1),Le()}function Ie(e){e===`all`?(B(`selectLibrary`,{libraryId:null}),L(Se,`node`)):(B(`selectLibrary`,{libraryId:e}),L(Se,`node`))}function Le(){B(`close`)}function Re(e){return e.data}function ze(e){if(!(!I()&&!R())&&[`ArrowLeft`,`ArrowRight`,`ArrowUp`,`ArrowDown`,`Enter`,`Escape`].includes(e.key)){if(e.key===`Escape`){e.preventDefault(),e.stopPropagation(),Le();return}if(document.activeElement===x(le)&&e.key!==`Escape`){if(x(H)&&(e.key===`ArrowUp`||e.key===`ArrowDown`||e.key===`Enter`))e.preventDefault(),e.stopPropagation(),x(le).blur();else return}if(e.preventDefault(),e.stopPropagation(),e.key===`ArrowLeft`){if(x(H))return;x(Se)===`category`&&I()?R()?(L(Se,`category`),L(be,-1),R(null)):(L(Se,`library`),L(ve,-1)):x(Se)===`node`&&R()&&(L(Se,`category`),L(be,-1))}else if(e.key===`ArrowRight`){if(x(H))return;if(x(Se)===`library`&&I())(x(T).length>0||x(k).length>0)&&(L(Se,`category`),x(ve)===-1&&L(ve,0));else if(x(Se)===`category`&&!R()&&x(ve)>=0&&x(ve)<x(j).length){let e=x(j)[x(ve)];e.type===`category`&&`id`in e.data&&(I()&&`id`in e.data&&Pe(I(),e.data.id),L(Se,`node`),x(be)===-1&&L(be,0))}}else if(e.key===`ArrowUp`){if(x(H))L(Se,`node`),L(be,Math.max(0,x(be)-1));else if(x(Se)===`library`)L(_e,Math.max(0,x(_e)-1)),x(_e)>=0&&x(_e)<x(w).length&&Ie(x(w)[x(_e)].id);else if(x(Se)===`category`){if(R())L(be,Math.max(0,x(be)-1));else if(L(ve,Math.max(0,x(ve)-1)),x(ve)>=0&&x(ve)<x(j).length&&I()){let e=x(j)[x(ve)];e.type===`category`&&`id`in e.data&&Pe(I(),e.data.id)}}else x(Se)===`node`&&L(be,Math.max(0,x(be)-1))}else if(e.key===`ArrowDown`){if(x(H))L(Se,`node`),L(be,Math.min(x(C).length-1,x(be)+1));else if(x(Se)===`library`)L(_e,Math.min(x(w).length-1,x(_e)+1)),x(_e)>=0&&x(_e)<x(w).length&&Ie(x(w)[x(_e)].id);else if(x(Se)===`category`){if(R())L(be,Math.min(x(C).length-1,x(be)+1));else if(L(ve,Math.min(x(j).length-1,x(ve)+1)),x(ve)>=0&&x(ve)<x(j).length&&I()){let e=x(j)[x(ve)];e.type===`category`&&`id`in e.data&&Pe(I(),e.data.id)}}else x(Se)===`node`&&L(be,Math.min(x(C).length-1,x(be)+1))}else if(e.key===`Enter`){if(x(H))x(Se)===`node`&&x(be)>=0&&x(be)<x(C).length&&Ne(x(C)[x(be)]);else if(x(Se)===`node`&&R())x(be)>=0&&x(be)<x(C).length&&Ne(x(C)[x(be)]);else if(x(Se)===`category`&&!R()){if(x(ve)>=0&&x(ve)<x(j).length&&I()){let e=x(j)[x(ve)];e.type===`category`&&`id`in e.data?(Pe(I(),e.data.id),L(Se,`node`),L(be,0)):e.type===`computation`&&Ne(Re(e))}}else x(Se)===`library`&&x(_e)>=0&&x(_e)<x(w).length&&(Ie(x(w)[x(_e)].id),(x(T).length>0||x(k).length>0)&&(L(Se,`category`),L(ve,0)))}}}function Be(e){e.stopPropagation(),[`ArrowUp`,`ArrowDown`,`Enter`,`Escape`].includes(e.key)&&ze(e)}J(()=>(n(),r()),()=>{L(l,[...Wg,...n().length?[Gg(n(),r())]:[]])}),J(()=>(A(I()),A(R()),A(se())),()=>{(I()||R())&&(se()?(L(fe,{x:se().x,y:se().y}),L(pe,!0)):setTimeout(()=>{Ae(),setTimeout(()=>{Ae()},50)},0))}),J(()=>(A(I()),x(l)),()=>{L(u,I()&&I()!==`all`?x(l).find(e=>e.id===I()):null)}),J(()=>(x(u),A(R())),()=>{L(d,x(u)&&R()?x(u).categories.find(e=>e.id===R()):null)}),J(()=>(x(Te),x(l)),()=>{L(p,x(Te)&&x(Te)!==`all`?x(l).find(e=>e.id===x(Te)):null)}),J(()=>x(p),()=>{L(m,x(p)?x(p).categories.length===1:!1)}),J(()=>(x(p),x(m)),()=>{L(_,x(p)?x(m)?[]:x(p).categories.filter(e=>e.nodes.length>1):[])}),J(()=>(x(p),x(m)),()=>{L(y,x(p)?x(m)?x(p).categories[0].nodes:x(p).categories.filter(e=>e.nodes.length===1).map(e=>e.nodes[0]):[])}),J(()=>x(Te),()=>{x(Te)&&L(De,null)}),J(()=>(x(De),x(p)),()=>{L(b,x(De)&&x(p)&&x(p).categories.find(e=>e.id===x(De))?.nodes||[])}),J(()=>(x(Te),x(l)),()=>{L(S,x(Te)===null?x(l).flatMap(e=>e.categories.flatMap(e=>e.nodes)).sort((e,t)=>e.name.localeCompare(t.name)):[])}),J(()=>(x(Te),x(U)),()=>{x(Te)!==void 0&&x(U)&&L(me,x(U).getBoundingClientRect().width)}),J(()=>(x(De),x(de)),()=>{x(De)&&x(de)&&L(W,x(de).getBoundingClientRect().width)}),J(()=>(x(H),x(l),A(I()),A(R())),()=>{L(C,x(H)?x(l).flatMap(e=>e.categories.flatMap(e=>e.nodes)).filter(e=>e.name.toLowerCase().includes(x(H).toLowerCase())||e.description.toLowerCase().includes(x(H).toLowerCase())).sort((e,t)=>e.name.localeCompare(t.name)):I()===`all`||I()===null&&!R()?x(l).flatMap(e=>e.categories.flatMap(e=>e.nodes)).sort((e,t)=>e.name.localeCompare(t.name)):I()&&!R()?Me(I()).sort((e,t)=>e.name.localeCompare(t.name)):R()&&I()?(x(l).find(e=>e.id===I())?.categories.find(e=>e.id===R())?.nodes??[]).sort((e,t)=>e.name.localeCompare(t.name)):[])}),J(()=>x(l),()=>{L(w,x(l).filter(e=>e.categories.some(e=>e.nodes.length>0)).sort((e,t)=>e.label.localeCompare(t.label)))}),J(()=>x(u),()=>{L(T,x(u)?x(u).categories.filter(e=>e.nodes.length>1):[])}),J(()=>(x(u),A(R()),x(H)),()=>{L(k,x(u)&&!R()&&!x(H)?x(u).categories.filter(e=>e.nodes.length===1).map(e=>({...e.nodes[0],categoryId:e.id})):[])}),J(()=>(x(u),A(R()),x(H),x(T),x(k)),()=>{L(j,x(u)&&!R()&&!x(H)?[...x(T).map(e=>({type:`category`,data:e})),...x(k).map(e=>({type:`node`,data:e}))]:[])}),J(()=>(A(I()),A(R()),x(H),x(Se),x(C),x(be),x(_e),x(w),x(u),x(ve),x(T),x(j)),()=>{(I()||R())&&(x(H)?(L(Se,`node`),x(C).length>0?(x(be)<0||x(be)>=x(C).length)&&L(be,0):L(be,-1)):(x(_e)===-1&&(I()&&I()!==`all`?(L(_e,x(w).findIndex(e=>e.id===I())),x(_e)===-1&&L(_e,0)):L(_e,0),L(Se,`library`)),R()&&x(u)&&x(ve)===-1&&(L(ve,x(T).findIndex(e=>e.id===R())),x(ve)===-1&&L(ve,0),R()&&L(Se,`node`)),x(ve)===-1&&x(j).length>0&&x(Se)===`category`&&!R()?L(ve,0):x(Se)===`category`&&x(ve)>=x(j).length&&L(ve,Math.max(0,x(j).length-1)),x(be)===-1&&x(C).length>0&&x(Se)===`node`&&R()?L(be,0):x(Se)===`node`&&x(be)>=x(C).length&&R()&&L(be,Math.max(0,x(C).length-1))))}),J(()=>(A(I()),A(R())),()=>{!I()&&!R()&&(L(_e,-1),L(ve,-1),L(be,-1),L(Se,`library`))}),J(()=>(x(Se),x(_e),x(U)),()=>{x(Se)===`library`&&x(_e)>=0&&setTimeout(()=>{let e=(x(U)?.querySelector(`.main-column .column-content`))?.children[x(_e)+1];e&&e.scrollIntoView({block:`nearest`,behavior:`smooth`})},0)}),J(()=>(x(Se),x(ve),A(R()),x(U)),()=>{x(Se)===`category`&&x(ve)>=0&&!R()&&setTimeout(()=>{let e=(x(U)?.querySelector(`.main-column .column-content`))?.children[x(ve)];e&&e.scrollIntoView({block:`nearest`,behavior:`smooth`})},0)}),J(()=>(x(Se),x(be),x(U)),()=>{x(Se)===`node`&&x(be)>=0&&setTimeout(()=>{let e=document.querySelector(`.nodes-column .column-content`);if(e){let t=e.children[x(be)];t&&t.scrollIntoView({block:`nearest`,behavior:`smooth`})}else{let e=(x(U)?.querySelector(`.main-column .column-content`))?.children[x(be)];e&&e.scrollIntoView({block:`nearest`,behavior:`smooth`})}},0)}),J(()=>(A(I()),A(R()),x(le)),()=>{(I()||R())&&x(le)&&setTimeout(()=>{x(le)?.focus()},0)}),J(()=>(A(I()),A(R()),x(U),x(le)),()=>{(I()||R())&&x(U)&&setTimeout(()=>{document.activeElement!==x(le)&&x(U)?.focus()},50)}),he(),ue();var Ve=_E();O(`keydown`,ce,ze);var He=G(Ve),Ue=e=>{var t=OE(),n=G(t),r=M(n),s=M(r);re(s),ge(s,e=>L(le,e),()=>x(le)),o(r);var c=P(r,2),l=e=>{var t=_E(),n=G(t);f(n,1,()=>x(C),h,(e,t,n)=>{var r=hE();let i;var a=M(r);zc(M(a),{get name(){return x(t),F(()=>x(t).icon)},size:16}),o(a);var s=P(a,2),c=q(s,!0),l=P(s,2),u=q(l,!0);o(r),K(e=>{i=v(r,1,`node-item svelte-dm3w9n`,null,i,{"keyboard-selected":x(Se)===`node`&&x(be)===n}),X(r,`title`,(x(t),F(()=>x(t).description))),D(c,(x(t),F(()=>x(t).name))),D(u,e)},[()=>(A(Xg),x(t),F(()=>Xg(x(t).type)))]),O(`click`,r,()=>{L(be,n),Ne(x(t))}),O(`mouseenter`,r,()=>{L(be,n)}),E(e,r)});var r=P(n,2),i=e=>{var t=gE();E(e,t)};Z(r,e=>{x(C),F(()=>x(C).length===0)&&e(i)}),E(e,t)},u=e=>{var t=xE(),n=G(t);f(n,1,()=>x(w),h,(e,t,n)=>{var r=vE();let i;var a=M(r),s=q(a,!0),c=P(a,2);zc(M(c),{name:`ChevronRight`,size:12}),o(c),o(r),K(()=>{i=v(r,1,`library-item svelte-dm3w9n`,null,i,{active:x(Te)===x(t).id,"keyboard-selected":x(Se)===`library`&&x(_e)===n}),D(s,(x(t),F(()=>x(t).label)))}),O(`click`,r,()=>{L(_e,n),Ie(x(t).id)}),O(`mouseenter`,r,e=>{L(_e,n),L(Te,x(t).id),L(Oe,e.currentTarget.getBoundingClientRect().top)}),E(e,r)});var r=P(n,4);let a;var s=P(M(r),2);zc(M(s),{name:`ChevronRight`,size:12}),o(s),o(r);var c=P(r,4),l=M(c);zc(M(l),{get name(){return A(Kg),F(()=>Kg.icon)},size:16}),o(l);var u=P(l,2),d=q(u,!0);o(c);var p=P(c,2),m=e=>{var t=bE(),n=P(G(t),4);f(n,1,i,h,(e,t)=>{var n=yE(),r=M(n);zc(M(r),{get name(){return x(t),F(()=>x(t).icon)},size:16}),o(r);var i=P(r,2),a=q(i,!0),s=P(i,2),c=q(s,!0);o(n),K(e=>{X(n,`title`,(x(t),F(()=>x(t).description))),D(a,(x(t),F(()=>x(t).name))),D(c,e)},[()=>(A(Xg),x(t),F(()=>Xg(x(t).type)))]),O(`click`,n,()=>Ne(x(t))),E(e,n)}),E(e,t)};Z(p,e=>{i(),F(()=>i().length>0)&&e(m)}),K(()=>{a=v(r,1,`library-item svelte-dm3w9n`,null,a,{active:x(Te)===null,"keyboard-selected":x(Se)===`library`&&x(_e)===x(w).length}),X(c,`title`,(A(Kg),F(()=>Kg.description))),D(d,(A(Kg),F(()=>Kg.name)))}),O(`click`,r,()=>{L(_e,x(w).length),Ie(`all`)}),O(`mouseenter`,r,e=>{L(_e,x(w).length),L(Te,null),L(Oe,e.currentTarget.getBoundingClientRect().top)}),O(`click`,c,oe),E(e,t)};Z(c,e=>{x(H)?e(l):e(u,-1)}),o(n),ge(n,e=>L(U,e),()=>x(U));var d=P(n,2),m=e=>{var t=te(),n=G(t),r=e=>{var t=SE();f(t,5,()=>x(S),h,(e,t,n)=>{var r=hE();let i;var a=M(r);zc(M(a),{get name(){return x(t),F(()=>x(t).icon)},size:16}),o(a);var s=P(a,2),c=q(s,!0),l=P(s,2),u=q(l,!0);o(r),K(e=>{i=v(r,1,`node-item svelte-dm3w9n`,null,i,{"keyboard-selected":x(Se)===`node`&&x(be)===n}),X(r,`title`,(x(t),F(()=>x(t).description))),D(c,(x(t),F(()=>x(t).name))),D(u,e)},[()=>(A(Xg),x(t),F(()=>Xg(x(t).type)))]),O(`click`,r,()=>{L(be,n),Ne(x(t))}),O(`mouseenter`,r,()=>{L(be,n)}),E(e,r)}),o(t),K(e=>a(t,`left: ${x(fe),x(me),F(()=>x(fe).x+x(me))??``}px; top: ${x(Oe)??``}px; max-height: ${e??``}px;`),[()=>(x(Oe),F(()=>Math.max(200,window.innerHeight-x(Oe)-20)))]),O(`mouseenter`,t,()=>{}),O(`mouseleave`,t,ae(()=>{setTimeout(()=>{document.querySelector(`.menu-column:hover`)||L(Te,void 0)},50)})),E(e,t)},i=e=>{var t=DE(),n=G(t),r=M(n);f(r,1,()=>x(_),h,(e,t)=>{var n=vE();let r;var i=M(n),a=q(i,!0),s=P(i,2);zc(M(s),{name:`ChevronRight`,size:12}),o(s),o(n),K(()=>{r=v(n,1,`library-item svelte-dm3w9n`,null,r,{active:x(De)===x(t).id}),D(a,(x(t),F(()=>x(t).label)))}),O(`click`,n,()=>{}),O(`mouseenter`,n,e=>{L(De,x(t).id),L(ke,e.currentTarget.getBoundingClientRect().top)}),E(e,n)});var i=P(r,2),s=e=>{var t=CE();E(e,t)};Z(i,e=>{x(_),x(y),F(()=>x(_).length>0&&x(y).length>0)&&e(s)});var c=P(i,2);f(c,1,()=>x(y),h,(e,t)=>{var n=wE(),r=M(n);zc(M(r),{get name(){return x(t),F(()=>x(t).icon)},size:16}),o(r);var i=P(r,2),a=q(i,!0);o(n),K(()=>{X(n,`title`,(x(t),F(()=>x(t).description))),D(a,(x(t),F(()=>x(t).name)))}),O(`click`,n,()=>Ne(x(t))),O(`mouseenter`,n,()=>{L(De,null)}),E(e,n)}),o(n),ge(n,e=>L(de,e),()=>x(de));var l=P(n,2),u=e=>{var t=EE();f(t,5,()=>x(b),h,(e,t,n)=>{var r=TE();let i;var a=M(r);zc(M(a),{get name(){return x(t),F(()=>x(t).icon)},size:16}),o(a);var s=P(a,2),c=q(s,!0);o(r),K(()=>{i=v(r,1,`node-item svelte-dm3w9n`,null,i,{"keyboard-selected":x(Se)===`node`&&x(be)===n}),X(r,`title`,(x(t),F(()=>x(t).description))),D(c,(x(t),F(()=>x(t).name)))}),O(`click`,r,()=>{L(be,n),Ne(x(t))}),O(`mouseenter`,r,()=>{L(be,n)}),E(e,r)}),o(t),K(e=>{X(t,`aria-label`,`${x(De)} nodes`),a(t,`left: ${x(fe),x(me),x(W),F(()=>x(fe).x+x(me)+x(W))??``}px; top: ${x(ke)??``}px; max-height: ${e??``}px;`)},[()=>(x(ke),F(()=>Math.max(200,window.innerHeight-x(ke)-20)))]),O(`mouseenter`,t,()=>{}),O(`mouseleave`,t,ae(()=>{setTimeout(()=>{document.querySelector(`.menu-column:hover`)||L(De,null)},50)})),E(e,t)};Z(l,e=>{x(De),x(b),F(()=>x(De)&&x(b).length>0)&&e(u)}),K(e=>{X(n,`aria-label`,(x(p),F(()=>`${x(p).label} nodes`))),a(n,`left: ${x(fe),x(me),F(()=>x(fe).x+x(me))??``}px; top: ${x(Oe)??``}px; max-height: ${e??``}px;`)},[()=>(x(Oe),F(()=>Math.max(200,window.innerHeight-x(Oe)-20)))]),O(`mouseenter`,n,()=>{}),O(`mouseleave`,n,ae(()=>{setTimeout(()=>{document.querySelector(`.menu-column:hover`)||(L(Te,void 0),L(De,null))},50)})),E(e,t)};Z(n,e=>{x(Te),x(S),F(()=>x(Te)===null&&x(S).length>0)?e(r):(x(p),x(_),x(y),F(()=>x(p)&&(x(_).length>0||x(y).length>0))&&e(i,1))}),E(e,t)};Z(d,e=>{!x(H)&&x(Te)!==void 0&&e(m)}),K(()=>a(n,`left: ${x(fe),F(()=>x(fe).x)??``}px; top: ${x(fe),F(()=>x(fe).y)??``}px`)),Ce(s,()=>x(H),e=>L(H,e)),O(`keydown`,s,Be),O(`keydown`,n,ze),O(`mouseleave`,n,ae(e=>{setTimeout(()=>{if(x(N))return;let e=document.querySelector(`.menu-column:hover`),t=document.querySelector(`.dialog-overlay`);!e&&!t&&Le()},100)})),E(e,t)};Z(He,e=>{(I()||R())&&e(Ue)});var We=P(He,2),Q=e=>{var t=te(),n=G(t);g(n,()=>x(ie),(e,t)=>{t(e,{get open(){return x(N)},set open(e){L(N,e)},$$events:{create:Fe,close:()=>L(N,!1)},$$legacy:!0})}),E(e,t)};Z(We,e=>{x(ie)&&e(Q)}),E(e,Ve),Ee(),c()}var AE=w(!1);function jE(){AE.set(!1)}var ME=u(`<button class="swatch svelte-tkyoee"></button>`),NE=u(`<div class="palette svelte-tkyoee"><div class="head svelte-tkyoee"><span>Node colour</span> <span class="count svelte-tkyoee"> </span></div> <div class="grid svelte-tkyoee"></div> <div class="foot svelte-tkyoee"><button class="clear svelte-tkyoee">Clear</button> <button class="clear svelte-tkyoee">Close</button></div></div>`);function PE(e,t){ee(t,!1);let n=V(t,`open`,8,!1),r=V(t,`selectionCount`,8,0),i=xe(),s=[[`#3a3a3a`,`#454545`,`#505050`,`#5c5c5c`,`#686868`,`#757575`,`#828282`,`#909090`],...[0,28,45,140,190,215,265,320].slice(1).map(e=>[20,26,32,38,44,50,56,62].map(t=>`hsl(${e}, 42%, ${t/2+12}%)`))];function c(e){i(`choose`,e)}function l(e){e.key===`Escape`&&i(`close`)}ue();var u=te();O(`keydown`,ce,l);var d=G(u),p=e=>{var t=NE(),n=M(t),l=P(M(n),2),u=q(l);o(n);var d=P(n,2);f(d,5,()=>s,h,(e,t)=>{var n=te(),r=G(n);f(r,1,()=>x(t),h,(e,t)=>{var n=ME();K(()=>{a(n,`background:${x(t)??``}`),X(n,`title`,x(t))}),O(`click`,n,()=>c(x(t))),E(e,n)}),E(e,n)}),o(d);var p=P(d,2),m=M(p),g=P(m,2);o(p),o(t),K(()=>D(u,`${r()??``} selected`)),O(`click`,m,()=>c(null)),O(`click`,g,()=>i(`close`)),E(e,t)};Z(d,e=>{n()&&e(p)}),E(e,u),Ee()}var FE=`*`;function IE(e){if(typeof EventSource>`u`)return()=>{};let t=new EventSource(`/api/nodes/events`);return t.addEventListener(`module-changed`,t=>{let n;try{n=String(JSON.parse(t.data)?.module??``)}catch{return}if(!n)return;let r=e.getTarget()?.nodes??[],i=n===FE?r.filter(e=>e.modulePath?.startsWith(`project.`)):r.filter(e=>e.modulePath===`project.${n}`);if(n===FE)for(let e of i){let t=e.modulePath.slice(8);hd(t),jw(t)}else hd(n),jw(n);for(let e of i)e.markDirty();e.onReload?.(n,i.length)}),t.addEventListener(`error`,()=>console.debug(`[node watch] stream interrupted, reconnecting`)),()=>t.close()}function LE(e){return zE(RE(e))}function RE(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e,n=t.metadata;if(!n||typeof n!=`object`||Array.isArray(n))return t;let{modified:r,...i}=n;return{...t,metadata:i}}function zE(e){return typeof e!=`object`||!e?JSON.stringify(e)??`null`:Array.isArray(e)?`[${e.map(zE).join(`,`)}]`:`{${Object.entries(e).filter(([,e])=>e!==void 0).sort(([e],[t])=>e<t?-1:+(e>t)).map(([e,t])=>`${JSON.stringify(e)}:${zE(t)}`).join(`,`)}}`}function BE(e){if(typeof EventSource>`u`)return()=>{};let t=new EventSource(`/api/graph-events`);return t.addEventListener(`graph-changed`,t=>{let n;try{n=String(JSON.parse(t.data)?.file??``)}catch{return}n&&n===e.getFile()&&e.onChanged(n)}),t.addEventListener(`error`,()=>console.debug(`[graph watch] stream interrupted, reconnecting`)),()=>t.close()}var VE=12e4;async function HE(){try{let e=await fetch(`/api/build`,{cache:`no-store`});if(e.status===404)return{kind:`unsupported`};if(!e.ok)return{kind:`unknown`};let{id:t}=await e.json();return typeof t==`string`?{kind:`id`,id:t}:{kind:`unknown`}}catch{return{kind:`unknown`}}}function UE(e){let t=null,n=!1;async function r(){if(n)return;let r=await HE();if(n)return;if(r.kind===`unsupported`){n=!0;return}if(r.kind===`unknown`)return;let i=r.id;if(t===null){t=i;return}i!==t&&(n=!0,e())}r();let i=setInterval(r,VE),a=()=>{document.visibilityState===`visible`&&r()};return document.addEventListener(`visibilitychange`,a),()=>{n=!0,clearInterval(i),document.removeEventListener(`visibilitychange`,a)}}function WE(e){let t=e?.nodes;if(!Array.isArray(t))return[];let n=new Set;for(let e of t){let t=e?.module??e?.type;typeof t==`string`&&t.startsWith(`project.`)&&n.add(t)}return[...n]}function GE(e,t){let n=new Set(t);return WE(e).filter(e=>!n.has(e.slice(8)))}function KE(e){return`cascade ${e||`<project directory>`} --host ${location.hostname} --port <free port>`}var qE=`\0lane:`,JE=28,YE={columnGap:260,rowGap:190,originX:40,originY:40};function XE(e,t,n={}){let{columnGap:r,rowGap:i,originX:a,originY:o}={...YE,...n},s=n.widths,c=e=>s?.get(e)??r-60,l=new Map,u=new Map;for(let t of e)l.set(t,[]),u.set(t,[]);for(let e of t)!l.has(e.to)||!u.has(e.from)||(l.get(e.to).push(e.from),u.get(e.from).push(e.to));let d=new Map,f=new Set;function p(e){let t=d.get(e);if(t!==void 0)return t;if(f.has(e))return 0;f.add(e);let n=l.get(e)??[],r=n.length?Math.max(...n.map(p))+1:0;return f.delete(e),d.set(e,r),r}e.forEach(p);for(let t=0;t<e.length&&t<32;t++){let t=!1;for(let n of e){let e=u.get(n)??[];if(!e.length)continue;let r=l.get(n)??[],i=r.length?Math.max(...r.map(e=>d.get(e)??0))+1:0,a=Math.min(...e.map(e=>d.get(e)??0))-1,o=Math.max(i,a);o>(d.get(n)??0)&&(d.set(n,o),t=!0)}if(!t)break}let m=[];for(let t of e){let e=d.get(t)??0;for(;m.length<=e;)m.push([]);m[e].push(t)}let h=e=>e.startsWith(qE),g=new Map(l),_=new Map(u);t.forEach((e,t)=>{let n=d.get(e.from),r=d.get(e.to);if(n===void 0||r===void 0||r-n<=1)return;g.set(e.to,(g.get(e.to)??[]).filter(t=>t!==e.from)),_.set(e.from,(_.get(e.from)??[]).filter(t=>t!==e.to));let i=e.from;for(let e=n+1;e<r;e++){let n=`${qE}${t}:${e}`;m[e].push(n),g.set(n,[i]),_.set(n,[]),_.set(i,[..._.get(i)??[],n]),i=n}_.set(i,[..._.get(i)??[],e.to]),g.set(e.to,[...g.get(e.to)??[],i])}),m.forEach(e=>e.sort());let v=(e,t)=>e.indexOf(t);function y(e,t,n){let r=new Map;e.forEach((e,i)=>{let a=(n.get(e)??[]).map(e=>v(t,e)).filter(e=>e>=0);r.set(e,a.length?a.reduce((e,t)=>e+t,0)/a.length:i)}),e.sort((e,t)=>r.get(e)-r.get(t)||e.localeCompare(t))}function b(e,t){let n=[];t.forEach((t,r)=>{for(let i of g.get(t)??[]){let t=e.indexOf(i);t>=0&&n.push([t,r])}});let r=0;for(let e=0;e<n.length;e++)for(let t=e+1;t<n.length;t++)(n[e][0]-n[t][0])*(n[e][1]-n[t][1])<0&&r++;return r}let x=e=>(e>0?b(m[e-1],m[e]):0)+(e<m.length-1?b(m[e],m[e+1]):0);for(let e=0;e<8;e++){for(let e=1;e<m.length;e++)y(m[e],m[e-1],g);for(let e=m.length-2;e>=0;e--)y(m[e],m[e+1],_);let e=!0;for(let t=0;t<4&&e;t++){e=!1;for(let t=0;t<m.length;t++){let n=m[t];for(let r=0;r+1<n.length;r++){let i=x(t);[n[r],n[r+1]]=[n[r+1],n[r]],x(t)<i?e=!0:[n[r],n[r+1]]=[n[r+1],n[r]]}}}}let S=e=>h(e)?JE:c(e),C=e=>h(e)?45:90,w=m.map(e=>e.reduce((e,t)=>e+S(t),0)+Math.max(0,e.length-1)*90),T=Math.max(1,...w),ee=new Map;m.forEach((e,t)=>{let n=a+(T-w[t])/2;e.forEach(e=>{ee.set(e,n+S(e)/2),n+=S(e)+90})});for(let e=0;e<6;e++){let t=e%2==0?g:_;for(let e of m)for(let n=0;n<e.length;n++){let r=e[n],i=(t.get(r)??[]).map(e=>ee.get(e)).filter(e=>e!==void 0);if(!i.length)continue;let a=i.reduce((e,t)=>e+t,0)/i.length,o=S(r)/2,s=e[n-1],c=e[n+1],l=s===void 0?-1/0:ee.get(s)+S(s)/2+C(r)+o,u=c===void 0?1/0:ee.get(c)-S(c)/2-C(r)-o;ee.set(r,Math.min(Math.max(a,l),u))}}for(let e of m)for(let t=0;t<e.length;t++){let n=e[t],r=(g.get(n)??[]).map(e=>ee.get(e)).filter(e=>e!==void 0);if(!r.length)continue;let i=r.reduce((e,t)=>e+t,0)/r.length,a=S(n)/2,o=e[t-1],s=e[t+1],c=o===void 0?-1/0:ee.get(o)+S(o)/2+C(n)+a,l=s===void 0?1/0:ee.get(s)-S(s)/2-C(n)-a;ee.set(n,Math.min(Math.max(i,c),l))}let E=new Map;return m.forEach((e,t)=>{for(let n of e)h(n)||E.set(n,{x:Math.round(ee.get(n)-S(n)/2),y:Math.round(o+t*i)})}),E}function ZE(e){return e.map(e=>({from:e.from.nodeId,to:e.to.nodeId}))}var QE=u(`<div class="cook-status loading svelte-16g4g59" role="status" aria-live="polite" data-phase="loading"><span class="status-mark svelte-16g4g59" aria-hidden="true"></span> <strong class="svelte-16g4g59">Loading graph</strong> <span class="svelte-16g4g59">Fetching and compiling nodes…</span></div>`),$E=u(`<strong class="svelte-16g4g59"> </strong>`),eD=u(`<span class="current-node svelte-16g4g59"> </span>`),tD=u(`<strong class="svelte-16g4g59"> </strong> <!> <time class="svelte-16g4g59"> </time>`,1),nD=u(`<div class="cook-status svelte-16g4g59" role="status" aria-live="polite"><span class="status-mark svelte-16g4g59" aria-hidden="true"></span> <!></div>`);function rD(e,t){ee(t,!1);let n=Y(),r=Y(),i=V(t,`loading`,8,!1),a=V(t,`status`,8),s=Y(Date.now()),c=Y(x(s)),l=Y(a()),u=Y();me(()=>x(u)&&clearInterval(x(u)));function d(e){return e<1e3?`${Math.max(0,Math.round(e))} ms`:`${(e/1e3).toFixed(1)} s`}J(()=>(A(a()),x(l),x(c)),()=>{a()!==x(l)&&(L(l,a()),L(c,Date.now()),L(s,x(c)))}),J(()=>(A(i()),A(a()),x(u)),()=>{let e=!i()&&a().phase===`cooking`;e&&!x(u)?L(u,setInterval(()=>{L(s,Date.now())},100)):!e&&x(u)&&(clearInterval(x(u)),L(u,void 0))}),J(()=>(A(a()),x(s),x(c)),()=>{L(n,a().elapsed+(a().phase===`cooking`?x(s)-x(c):0))}),J(()=>A(a()),()=>{L(r,Math.min(a().total,a().completed+ +!!a().currentNode))}),he(),ue();var f=te(),p=G(f),m=e=>{var t=QE();E(e,t)},h=e=>{var t=nD(),i=P(M(t),2),s=e=>{var t=$E(),n=q(t);K(()=>D(n,`Queued ${A(a()),F(()=>a().total)??``} ${A(a()),F(()=>a().total===1?`node`:`nodes`)??``}`)),E(e,t)},c=e=>{var t=tD(),i=G(t),o=q(i),s=P(i,2),c=e=>{var t=eD(),n=q(t,!0);K(()=>D(n,(A(a()),F(()=>a().currentNode.id)))),E(e,t)};Z(s,e=>{A(a()),F(()=>a().currentNode)&&e(c)});var l=P(s,2),u=q(l,!0);K(e=>{D(o,`Cooking ${x(r)??``} of ${A(a()),F(()=>a().total)??``}`),D(u,e)},[()=>(x(n),F(()=>d(x(n))))]),E(e,t)};Z(i,e=>{A(a()),F(()=>a().phase===`scheduled`)?e(s):e(c,-1)}),o(t),K(()=>X(t,`data-phase`,(A(a()),F(()=>a().phase)))),E(e,t)};Z(p,e=>{i()?e(m):(A(a()),F(()=>a().phase!==`idle`)&&e(h,1))}),E(e,f),Ee()}function iD(e,t=2){let n=e,r=``;for(;n!==r;)r=n,n=aD(n,t);return n}function aD(e,t=2){let n=e.split(`
|
|
208
208
|
`),r=[],i=0;for(;i<n.length;){let e=n[i],t=e.trim();if(t.endsWith(`[`)&&(t.includes(`:`)||t===`[`)){let a=[e],o=1,s=i+1;for(;s<n.length&&o>0;){let e=n[s];a.push(e);for(let t of e)t===`[`&&o++,t===`]`&&o--;s++}let c=[],l=1;for(;l<a.length-1;){let e=a[l].trim();if(e.endsWith(`[`)||e.startsWith(`[`)&&!e.endsWith(`]`)){let e=[a[l]],t=1,n=l+1;for(;n<a.length-1&&t>0;){e.push(a[n]);for(let e of a[n])e===`[`&&t++,e===`]`&&t--;n++}let r=[];for(let t=1;t<e.length-1;t++){let n=e[t].trim().replace(/,$/,``).trim();n&&r.push(n)}let i=`[`+r.map(e=>e.trim()).join(`, `)+`]`;c.push(i),l=n}else{let t=e.replace(/,$/,``).trim();t&&c.push(t),l++}}let u=c.length>=2&&c.length<=4&&c.every(e=>{let t=e.trim();return/^-?\d+(\.\d+)?([eE][+-]?\d+)?$/.test(t)}),d=!1;if(c.length>=2&&c.length<=20&&c.every(e=>{let t=e.trim();if(t.startsWith(`[`)&&t.endsWith(`]`)){let e=t.slice(1,-1).trim().split(`,`).map(e=>e.trim()).filter(e=>e);return e.length>=2&&e.length<=4}return!!t.endsWith(`[`)})){let e=!0;for(let t of c){let n=t.trim();if(n.startsWith(`[`)&&n.endsWith(`]`)){let t=n.slice(1,-1).trim().split(`,`).map(e=>e.trim()).filter(e=>e);if(t.length<2||t.length>4){e=!1;break}}else if(!n.endsWith(`[`)){e=!1;break}}d=e}if(u||d){let n=(e.match(/^(\s*)/)?.[1]||``).length,o=t.match(/^(.+?)\s*\[\s*$/),l=o?o[1]:``,u=a[a.length-1].trim().endsWith(`,`),f;f=d?c.map(e=>{let t=e.trim();return t.startsWith(`[`)&&t.endsWith(`]`),t}).join(`, `):c.map(e=>e.trim()).join(`, `);let p=l+` [`+f+`]`+(u?`,`:``);r.push(` `.repeat(n)+p),i=s;continue}}r.push(e),i++}return r.join(`
|
|
209
|
-
`)}function
|
|
210
|
-
Version 1.0.0`);break;case`undo`:Ke();break;case`redo`:qe();break;case`selectAll`:x(Me)?.selectAll&&x(Me).selectAll();break;case`deselectAll`:x(Me)?.deselectAll&&x(Me).deselectAll(),L(k,null),L(j,null);break;case`delete`:x(Me)?.deleteSelected&&x(Me).deleteSelected(),L(k,null),L(j,null);break;case`addNode`:L(N,null),L(w,`core`),L(ae,{x:window.innerWidth/2,y:window.innerHeight/2});break;case`addText`:L(ie,`text`);break;case`addImage`:L(ie,`image`);break;case`addGroup`:L(ie,`group`);break;case`addLine`:L(ie,`line`);break;case`addPolyline`:L(ie,`polyline`);break;case`cleanUpLayout`:et();break;case`centerOnNodes`:x(Me)?.centerOnNodes&&x(Me).centerOnNodes();break;case`resetLayout`:cl.resetLayout();break;case`presentationMode`:De();break;case`maximizeTab`:cl.toggleMaximizeActivePanel();break;case`focusGraph`:cl.focusOrOpenPanel(`graph-main`,`graph`,`Graph`);break;case`focusViewer`:cl.focusOrOpenPanel(`viewer-main`,`viewer`,`Viewer`,`graph-main`);break;case`focusInspector`:cl.focusOrOpenPanel(`inspector-main`,`inspector`,`Parameters`,`viewer-main`);break;case`focusLog`:cl.focusOrOpenPanel(`log-main`,`log`,`Log`,`viewer-main`);break;case`focusDefinition`:cl.focusOrOpenPanel(`definition-main`,`definition`,`Definition`,`inspector-main`);break;case`focusAgent`:cl.focusOrOpenPanel(`agent-main`,`agent`,`Agent`,`log-main`);break;case`focusTimeline`:cl.focusOrOpenPanel(`timeline-main`,`timeline`,`Timeline`,`graph-main`,`below`)}}async function Le(e){let t=aD.fromJSON(e).getGraph();try{await t.waitForAnnotationPorts();for(let e of t.nodes)if(e.code)try{let t=`return (async function(node, graph) {\n${e.code}\n})(node, graph);`,n=Function(`node`,`graph`,t);e.setFunction(n)}catch(t){console.warn(`Failed to set function for node ${e.id}:`,t)}}catch(e){throw Re(t),e}return t}function Re(e){e.nodes.forEach(e=>{try{e.onDestroy?.()}catch(t){console.warn(`Failed to dispose node ${e.id}:`,t)}})}async function ze(t,n=!1){let r=x(B);L(B,t);try{V.restoreConnections(),await e()}catch(e){throw L(B,r),Re(t),e}n&&M_(),r&&Re(r)}async function Be(){if(!(!(x(B)&&confirm(`Create a new project? Unsaved changes will be lost.`))&&x(B)))try{let e=await fetch(`/graphs/default.cascade`);if(!e.ok)throw Error(`Failed to load default graph`);await ze(await Le(await e.json()),!0),L(de,`Untitled`),L(fe,null),L(W,null),L(X,!1),Q(),Ye().catch(e=>console.warn(`Graph execution failed:`,e)),setTimeout(()=>{x(Me)&&x(Me).centerOnNodes&&x(Me).centerOnNodes()},100)}catch(e){console.error(`Failed to load default graph:`,e),x(B)||(L(B,aD.create().getGraph()),L(de,`Untitled`),L(fe,null),L(W,null),L(X,!1),Q())}}async function Ve(){try{let e=await rD(`.cascade`);if(!e)return;let t=await nD(e);await ze(await Le(t),!0),L(de,iD(e.name)),L(fe,e.name),L(W,null),L(X,!1),Q(),await Qe(t),await Ye().catch(e=>console.warn(`Graph execution failed:`,e)),setTimeout(()=>{x(Me)&&x(Me).centerOnNodes&&x(Me).centerOnNodes()},100)}catch(e){alert(`Failed to open project: `+e.message)}}async function He(){if(x(B)){if(x(fe)){if(x(W)){let e=await fetch(`/api/graph/${encodeURIComponent(x(W))}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:$E(x(B))});if(!e.ok){let t=await e.text();alert(`Failed to save ${x(W)}: ${t}`);return}}else if(!await tD(x(B),x(fe)))return;L(X,!1),Q()}else Ue()}}async function Ue(){if(!x(B))return;let e=x(de)===`Untitled`?`my-project.cascade`:`${x(de)}.cascade`,t=await tD(x(B),e);t&&(L(de,t.replace(/\.cascade$/,``)),L(fe,t),L(W,null),L(X,!1),Q())}function We(){if(!x(B))return;let e=x(B).toJSON(),t=aD.fromJSON(e).getGraph();t.nodes.forEach(e=>{e.position.x+=50,e.position.y+=50}),L(B,t),L(de,x(de)+` Copy`),L(fe,null),L(W,null),Q(),t.nodes.forEach(e=>{if(e.code)try{let t=Function(`node`,`graph`,e.code);e.setFunction(t)}catch(t){console.warn(`Failed to execute node `+e.id+`:`,t)}}),Ye().catch(e=>console.warn(`Failed to initialize duplicated graph:`,e)),setTimeout(()=>{x(Me)&&x(Me).centerOnNodes&&x(Me).centerOnNodes()},100)}function Q(){if(typeof document<`u`){let e=x(X)?` *`:``,t=x(B)?.project?.name&&x(B).project.name!==`Cascade Graph`?x(B).project.name:x(Se)?x(Se):x(de)&&x(de)!==`Untitled`?x(de):`Untitled`;document.title=`${t}${e} - Cascade`}}async function Ge(e){x(B)&&(await ze(await Le(e.json)),L(k,e.selectedNodeId?x(B).getNode(e.selectedNodeId):null),L(j,e.selectedAnnotationId),Ye().catch(e=>console.warn(`Graph execution failed:`,e)))}async function Ke(){if(!x(B))return;let e=A_(x(B),x(k)?.id||null,x(j));e&&await Ge(e)}async function qe(){if(!x(B))return;let e=j_(x(B),x(k)?.id||null,x(j));e&&await Ge(e)}function Je(){x(B)&&(k_(x(B),x(k)?.id||null,x(j)),L(X,!0),Q())}async function Ye(t=16){if(!x(B))return;let n=-1,r=-1;for(let i=0;i<t;i++){await x(B).execute(),V.restoreConnections(),await e();let t=x(B).nodes.reduce((e,t)=>e+t.outputs.filter(e=>e.value!==void 0&&e.value!==null).length,0),a=(x(B)._connectionsToRestore??[]).length;if(t===n&&a===r){console.log(`[Cook] settled after ${i+1} passes: ${t} outputs`+(a?`, ${a} connections unresolved (bypassed or unrunnable upstream)`:``)),a&&console.log(`[Cook] unresolved:`,(x(B)._connectionsToRestore??[]).map(e=>`${e[0][0]}.${e[0][2]??e[0][1]}->${e[1][0]}.${e[1][2]??e[1][1]}`).join(` `));return}n=t,r=a}console.warn(`[Cook] still changing after ${t} passes — stopping`)}async function Xe(){try{let e=await fetch(`/api/graph`);if(!e.ok)return null;let{default:t}=await e.json();if(!t)return null;let n=await fetch(`/api/graph/${encodeURIComponent(t)}`);return n.ok?{filename:t,json:await n.json()}:null}catch(e){return console.warn(`[Startup] No project graph available from the server:`,e),null}}let Ze=!1;async function $(e){if(!(Ze||!x(B))){Ze=!0;try{let t=await fetch(`/api/graph/${encodeURIComponent(e)}`,{cache:`no-store`});if(!t.ok)return;let n=await t.json();if(AE(n)===AE(JSON.parse($E(x(B)))))return;if(x(X)){console.warn(`[graph watch] ${e} changed on disk and this document has unsaved changes — not reloading. Save or discard to pick the new version up.`);return}await ze(await Le(n)),L(X,!1),Q(),await Qe(n),await Ye().catch(e=>console.warn(`Graph execution failed:`,e)),console.log(`[graph watch] reloaded ${e} from disk`)}catch(e){console.warn(`[graph watch] could not reload the document:`,e)}finally{Ze=!1}}}async function Qe(e){L(be,null);try{let[t,n]=await Promise.all([fetch(`/api/nodes`),fetch(`/api/graph`)]);if(!t.ok)return;let r=RE(e,(await t.json())?.modules??[]);if(!r.length)return;let i=n.ok?(await n.json())?.root??``:``;L(be,{missing:r,root:i})}catch{}}async function $e(e){let{json:t,version:n}=e.detail,r=x(W);await ze(await Le(t),!0),L(_e,!1),L(W,r),L(fe,r),L(X,!0),Q(),Ye().catch(e=>console.warn(`Graph execution failed:`,e)),console.log(`[Version] Restored ${r} at ${n.shortSha} — unsaved until you save`)}async function et(){if(!x(B))return;Je();let e=new Map;document.querySelectorAll(`.node`).forEach(t=>{let n=t.querySelector(`.node-name`)?.textContent?.trim();n&&e.set(n,Math.max(t.offsetWidth,90))});let t=UE(x(B).nodes.map(e=>e.id),WE(x(B).connections),{widths:e});x(B).nodes.forEach(e=>{let n=t.get(e.id);n&&(e.position=n)}),oe(B,x(B).elements=[...x(B).elements]),$g(),L(X,!0),Q(),requestAnimationFrame(()=>requestAnimationFrame(()=>{$g(),x(Me)?.centerOnNodes?.(),requestAnimationFrame(()=>requestAnimationFrame(()=>$g()))}))}ye(()=>{oD(oD().onPropParamsChanged=Gg),Q(),Xg();let e=kE({getTarget:()=>x(B)??null}),t=NE({getFile:()=>x(W),onChanged:e=>$(e)}),n=TS({file:()=>x(W),isDirty:()=>x(X),save:async()=>(await He(),!x(X))}),r=IE(()=>{L(ve,!0)}),i=CE.subscribe(e=>{e&&(b().then(()=>L(z,!0)),wE())});(async()=>{if(!x(B))try{let e,t=`Untitled`,n=null,r=null,i=await Xe();if(i&&(console.log(`[Startup] Loading project graph from server:`,i.filename),e=i.json,n=i.filename,t=i.filename,r=i.filename),!e){let t=await fetch(`/graphs/default.cascade`);if(!t.ok)throw Error(`Failed to load default graph`);e=await t.json()}if(await ze(await Le(e)),L(de,t),L(fe,n),L(W,r),L(X,!1),Q(),await Qe(e),x(W))try{let{loadProjectSettings:e}=await od(async()=>{let{loadProjectSettings:e}=await import(`./projectSettingsApi-C1WvIwfP.js`);return{loadProjectSettings:e}},[]),t=await e();L(xe,t.missingCredentials),L(Se,t.manifest.name),Q()}catch{L(xe,[])}x(xe).length===0?await Ye().catch(e=>console.warn(`Graph execution failed:`,e)):console.warn(`[Startup] Cook deferred until required credentials are set: ${x(xe).join(`, `)}`),setTimeout(()=>{x(Me)&&x(Me).centerOnNodes&&x(Me).centerOnNodes()},100)}catch(e){console.error(`Failed to load default graph:`,e);let t=aD.create();L(B,t.getGraph()),L(de,`Untitled`),L(fe,null),L(W,null),Q()}L(ce,!1)})();function a(e){I={x:e.clientX,y:e.clientY}}window.addEventListener(`mousemove`,a);function o(e){if((e.key===`c`||e.key===`C`)&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&!e.shiftKey){let t=e.target;if(t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`&&!t.isContentEditable){e.preventDefault(),L(Ce,!x(Ce));return}}if((e.metaKey||e.ctrlKey)&&e.key===`.`&&(e.preventDefault(),De()),(e.metaKey||e.ctrlKey)&&e.key===`z`&&!e.shiftKey){e.preventDefault(),Ke();return}if((e.metaKey||e.ctrlKey)&&e.key===`z`&&e.shiftKey){e.preventDefault(),qe();return}let t=e.target;if(t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`&&((e.key===`v`||e.key===`V`)&&!e.metaKey&&!e.ctrlKey&&L(ie,`select`),(e.key===`h`||e.key===`H`)&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&(e.preventDefault(),x(Me)&&x(Me).centerOnNodes&&x(Me).centerOnNodes()),e.altKey&&!e.metaKey&&!e.ctrlKey&&((e.key===`t`||e.key===`T`)&&(e.preventDefault(),L(ie,`text`)),(e.key===`i`||e.key===`I`)&&(e.preventDefault(),L(ie,`image`)),(e.key===`g`||e.key===`G`)&&(e.preventDefault(),L(ie,`group`)),(e.key===`l`||e.key===`L`)&&(e.preventDefault(),L(ie,`line`)),(e.key===`p`||e.key===`P`)&&(e.preventDefault(),L(ie,`polyline`)))),e.key===`Tab`&&!e.metaKey&&!e.ctrlKey&&!e.altKey){let t=e.target;if(t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`){if(e.preventDefault(),x(w)||x(T))L(w,null),L(T,null),L(N,null);else{L(N,null);let e=document.querySelector(`[data-window-id="graph"]`);if(e){let t=e.getBoundingClientRect();I.x>=t.left&&I.x<=t.right&&I.y>=t.top&&I.y<=t.bottom?L(ae,{...I}):L(ae,{x:t.left+t.width/2,y:t.top+t.height/2})}else L(ae,{x:window.innerWidth/2,y:window.innerHeight/2});L(w,`core`)}}}if(e.key===`Escape`&&(x(w)||x(T))&&(L(w,null),L(T,null),L(N,null)),(e.metaKey||e.ctrlKey)&&e.key===`b`&&(e.preventDefault(),cl.toggleMaximizeActivePanel()),(e.metaKey||e.ctrlKey)&&e.key===`/`){e.preventDefault();let t=e.target;t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`&&(x(w)||x(T)?(L(w,null),L(T,null),L(N,null)):(L(N,null),L(ae,{x:window.innerWidth/2,y:window.innerHeight/2}),L(w,`core`)))}(e.metaKey||e.ctrlKey)&&e.key===`;`&&(e.preventDefault(),(x(k)||x(k)===null)&&L(k,null)),(e.metaKey||e.ctrlKey)&&e.key===`e`&&(e.preventDefault(),y().then(()=>L(R,!0))),(e.metaKey||e.ctrlKey)&&e.key===`,`&&(e.preventDefault(),b().then(()=>L(z,!0)));let n=e.altKey;if(n&&e.key===`n`&&!e.shiftKey&&(e.preventDefault(),Be()),n&&e.key===`o`&&!e.shiftKey&&(e.preventDefault(),Ve()),n&&e.key===`s`&&(e.preventDefault(),e.shiftKey?Ue():He()),(e.metaKey||e.ctrlKey)&&e.key===`d`){let t=e.target;t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`&&(e.preventDefault(),We())}let r=e.target;if(r.tagName!==`INPUT`&&r.tagName!==`TEXTAREA`&&x(B)&&x(k)){if((e.key===`b`||e.key===`B`)&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&(e.preventDefault(),x(k).setBypass(!x(k).bypass)),(e.key===`k`||e.key===`K`)&&!e.metaKey&&!e.ctrlKey){if(e.preventDefault(),e.shiftKey){x(k).setCook(!0);let e=t=>{t.outputs.forEach(t=>{t.connections.forEach(t=>{let n=x(B)?.getNode(t.to.nodeId);n&&(n.setCook(!0),e(n))})})};e(x(k))}else x(k).cook?x(k).setCook(!1):(x(B).clearCookingNodes(),x(k).setCook(!0))}e.altKey&&(e.key===`b`||e.key===`B`)&&(e.preventDefault(),x(B).nodes.forEach(e=>{e.bypass&&e.setBypass(!1)})),e.altKey&&(e.key===`k`||e.key===`K`)&&(e.preventDefault(),x(B).clearCookingNodes())}if(e.key===`Delete`&&x(B)&&x(k)){let t=e.target;t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`&&(e.preventDefault(),Je(),x(B).removeNode(x(k).id),L(k,null))}if(e.altKey&&(e.key===`h`||e.key===`H`)){let t=e.target;t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`&&(e.preventDefault(),x(Me)&&x(Me).centerOnNodes&&x(Me).centerOnNodes())}if((e.ctrlKey||e.metaKey)&&!e.shiftKey&&!e.altKey){let t={1:()=>Ie(`focusGraph`),2:()=>Ie(`focusViewer`),3:()=>Ie(`focusInspector`),4:()=>Ie(`focusLog`),5:()=>Ie(`focusAgent`),6:()=>Ie(`focusDefinition`),7:()=>Ie(`focusTimeline`)}[e.key];t&&(e.preventDefault(),t())}if((e.ctrlKey||e.metaKey)&&e.key===`w`&&!e.shiftKey){let t=cl.activePanel;t&&t!==`graph-main`&&(e.preventDefault(),cl.removePanel(t))}(e.ctrlKey||e.metaKey)&&e.shiftKey&&e.key===`P`&&(e.preventDefault(),cl.resetLayout())}return window.addEventListener(`keydown`,o),()=>{window.removeEventListener(`keydown`,o),window.removeEventListener(`mousemove`,a),i(),e(),t(),n(),r()}}),J(()=>(x(k),x(j)),()=>{L(l,x(k)!==null||x(j)!==null)}),J(()=>x(l),()=>{L(re,x(l))}),J(()=>(x(re),x(l)),()=>{L(u,x(re)&&x(l))}),J(()=>(x(B),x(le),x(H),Rb),()=>{x(B)!==x(le)&&(x(H)?.(),L(le,x(B)),x(B)&&Rb.setGraph(x(B)),L(U,x(B)?.scheduler.status??{phase:`idle`,total:0,completed:0,currentNode:null,startedAt:null,elapsed:0}),L(H,x(B)?.scheduler.subscribe(e=>{L(U,e)})))}),J(()=>(x(X),x(fe),x(de)),()=>{L(d,x(X)||x(fe)===null?`${x(de)} *`:x(de))}),J(()=>x(de),()=>{x(de)&&Q()}),J(()=>x(X),()=>{x(X)!==void 0&&Q()}),he(),ue();var tt=uD();let nt;var rt=M(tt),it=e=>{var t=sD(),n=P(M(t),2);o(t),O(`click`,n,()=>location.reload()),E(e,t)};Z(rt,e=>{x(ve)&&e(it)});var at=P(rt,2),ot=e=>{var t=cD(),n=M(t),r=q(n),i=P(n,2),a=q(i,!0),s=P(i,2);o(t),K((e,t)=>{D(r,`This graph needs project nodes this server does not have
|
|
209
|
+
`)}function oD(e){let t=e.toJSON();return iD(JSON.stringify(t,null,2),2)}function sD(e,t=`graph.cascade`){let n=oD(e),r=new Blob([n],{type:`application/json`}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=t,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(i)}async function cD(e,t=`graph.cascade`){if(!(`showSaveFilePicker`in window))return sD(e,t),t;try{let n=await window.showSaveFilePicker({suggestedName:t,types:[{description:`Cascade Files`,accept:{"application/json":[`.cascade`]}}]}),r=await n.createWritable(),i=oD(e);return await r.write(i),await r.close(),n.name}catch(e){if(e.name===`AbortError`)return null;throw e}}function lD(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=e=>{try{t(JSON.parse(e.target?.result))}catch{n(Error(`Failed to parse JSON file`))}},r.onerror=()=>n(Error(`Failed to read file`)),r.readAsText(e)})}function uD(e=`.cascade`){return new Promise(t=>{let n=document.createElement(`input`);n.type=`file`,n.accept=e,n.onchange=e=>{t(e.target.files?.[0]||null)},n.click()})}function dD(e){return e.replace(/\.[^/.]+$/,``)}var fD=class e{constructor(e){if(this.sceneContainer=null,e)this.graph=e;else{let e=new nd(``,new td),t=new sd;this.graph=new Nf(e,t)}typeof document<`u`&&(this.sceneContainer=document.createElement(`div`),this.sceneContainer.id=`cascade-scene`)}getGraph(){return this.graph}getSceneContainer(){return this.sceneContainer}static create(){return new e}static fromJSON(t){let n=new nd(``,new td),r=new sd,i=Nf.fromJSON(t,n,r);return new e(i)}},pD=ie(()=>Ju),mD=u(`<div class="build-stale svelte-1n46o8q" role="status"><span>Cascade updated. This tab is running the previous build.</span> <button class="svelte-1n46o8q">Reload</button></div>`),hD=u(`<div class="project-mismatch svelte-1n46o8q" role="alert"><span> </span> <code class="svelte-1n46o8q"> </code> <button class="svelte-1n46o8q">Dismiss</button></div>`),gD=u(`<div class="credential-warning svelte-1n46o8q" role="alert"> <button class="svelte-1n46o8q">Open Project Settings</button></div>`),_D=u(`<div><!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!></div>`);function vD(t,n){ee(n,!1);let r=()=>we(B_,`$selectedNodeIds`,s),i=()=>we(A_,`$canUndo`,s),a=()=>we(j_,`$canRedo`,s),[s,c]=ne(),l=Y(),u=Y(),d=Y(),f=Y(null),p=Y(null),m=Y(null),h=Y(null);async function _(){if(!x(m)){let e=await od(()=>import(`./VersionHistoryDialog-DTMGhI0_.js`),__vite__mapDeps([5,1,6]));L(m,e.default)}}async function y(){if(!x(f)){let e=await od(()=>import(`./ExportDialog-BJu2Bpvv.js`),__vite__mapDeps([7,1,8]));L(f,e.default)}}async function b(){if(!x(p)){let e=await od(()=>import(`./SettingsDialog-za00IS3L.js`),__vite__mapDeps([9,1,10]));L(p,e.default)}}async function S(){x(h)||L(h,(await od(async()=>{let{default:e}=await import(`./ProjectSettings-DWpVtWEx.js`);return{default:e}},__vite__mapDeps([11,1,12,13]))).default)}let C=Y(!1),w=Y(null),T=Y(null),k=Y(null),j=Y(null),re=Y(!1),N=Y(null),ie=Y(`select`),ae=Y({x:0,y:0}),I={x:0,y:0},R=Y(!1),z=Y(!1),se=Y(!1),B=Y(void 0),V=new S_(()=>x(B)),ce=Y(!0),le=Y(),H=Y(),U=Y({phase:`idle`,total:0,completed:0,currentNode:null,startedAt:null,elapsed:0});me(()=>x(H)?.());let de=Y(`Untitled`),fe=Y(null),W=Y(null),_e=Y(!1),ve=Y(!1),be=Y(null),xe=Y([]),Se=Y(``),Ce=Y(!1);function Te(e){if(!x(B))return;let t=H_(x(B),r(),x(k));t.length!==0&&(Je(),t.forEach(t=>{e?t.color=e:delete t.color}),oe(B,x(B).elements=[...x(B).elements]),L(X,!0),Q())}let X=Y(!1);function De(){L(C,!x(C)),x(C)&&(L(w,null),L(T,null))}function Oe(e){L(w,e),L(T,null)}function ke(e){L(w,e.detail.libraryId),L(T,e.detail.categoryId)}function Ae(e){L(w,e.detail.libraryId),L(T,null)}function je(e){L(ie,e)}let Me=Y(null);function Ne(e){x(Me)&&x(Me).addNode&&x(Me).addNode({type:e.detail.type,category:e.detail.categoryId,customConfig:e.detail.customConfig}),L(w,null),L(T,null)}function Pe(e){L(k,e),e&&L(j,null)}function Fe(e){L(j,e.detail.annotationId),e.detail.annotationId&&L(k,null)}function Ie(e){switch(e){case`new`:Be();break;case`open`:Ve();break;case`save`:He();break;case`versionHistory`:if(!x(W)){alert(`Version history is for a project opened by the cascade CLI — this document has none.`);break}_().then(()=>L(_e,!0));break;case`saveAs`:Ue();break;case`duplicate`:We();break;case`export`:y().then(()=>L(R,!0));break;case`settings`:b().then(()=>L(z,!0));break;case`projectSettings`:S().then(()=>L(se,!0));break;case`about`:alert(`Cascade - Visual Programming Framework
|
|
210
|
+
Version 1.0.0`);break;case`undo`:Ke();break;case`redo`:qe();break;case`selectAll`:x(Me)?.selectAll&&x(Me).selectAll();break;case`deselectAll`:x(Me)?.deselectAll&&x(Me).deselectAll(),L(k,null),L(j,null);break;case`delete`:x(Me)?.deleteSelected&&x(Me).deleteSelected(),L(k,null),L(j,null);break;case`addNode`:L(N,null),L(w,`core`),L(ae,{x:window.innerWidth/2,y:window.innerHeight/2});break;case`addText`:L(ie,`text`);break;case`addImage`:L(ie,`image`);break;case`addGroup`:L(ie,`group`);break;case`addLine`:L(ie,`line`);break;case`addPolyline`:L(ie,`polyline`);break;case`cleanUpLayout`:et();break;case`centerOnNodes`:x(Me)?.centerOnNodes&&x(Me).centerOnNodes();break;case`resetLayout`:cl.resetLayout();break;case`presentationMode`:De();break;case`maximizeTab`:cl.toggleMaximizeActivePanel();break;case`focusGraph`:cl.focusOrOpenPanel(`graph-main`,`graph`,`Graph`);break;case`focusViewer`:cl.focusOrOpenPanel(`viewer-main`,`viewer`,`Viewer`,`graph-main`);break;case`focusInspector`:cl.focusOrOpenPanel(`inspector-main`,`inspector`,`Parameters`,`viewer-main`);break;case`focusLog`:cl.focusOrOpenPanel(`log-main`,`log`,`Log`,`viewer-main`);break;case`focusDefinition`:cl.focusOrOpenPanel(`definition-main`,`definition`,`Definition`,`inspector-main`);break;case`focusAgent`:cl.focusOrOpenPanel(`agent-main`,`agent`,`Agent`,`log-main`);break;case`focusTimeline`:cl.focusOrOpenPanel(`timeline-main`,`timeline`,`Timeline`,`graph-main`,`below`)}}async function Le(e){let t=fD.fromJSON(e).getGraph();try{await t.waitForAnnotationPorts();for(let e of t.nodes)if(e.code)try{let t=`return (async function(node, graph) {\n${e.code}\n})(node, graph);`,n=Function(`node`,`graph`,t);e.setFunction(n)}catch(t){console.warn(`Failed to set function for node ${e.id}:`,t)}}catch(e){throw Re(t),e}return t}function Re(e){e.nodes.forEach(e=>{try{e.onDestroy?.()}catch(t){console.warn(`Failed to dispose node ${e.id}:`,t)}})}async function ze(t,n=!1){let r=x(B);L(B,t);try{V.restoreConnections(),await e()}catch(e){throw L(B,r),Re(t),e}n&&z_(),r&&Re(r)}async function Be(){if(!(!(x(B)&&confirm(`Create a new project? Unsaved changes will be lost.`))&&x(B)))try{let e=await fetch(`/graphs/default.cascade`);if(!e.ok)throw Error(`Failed to load default graph`);await ze(await Le(await e.json()),!0),L(de,`Untitled`),L(fe,null),L(W,null),L(X,!1),Q(),Ye().catch(e=>console.warn(`Graph execution failed:`,e)),setTimeout(()=>{x(Me)&&x(Me).centerOnNodes&&x(Me).centerOnNodes()},100)}catch(e){console.error(`Failed to load default graph:`,e),x(B)||(L(B,fD.create().getGraph()),L(de,`Untitled`),L(fe,null),L(W,null),L(X,!1),Q())}}async function Ve(){try{let e=await uD(`.cascade`);if(!e)return;let t=await lD(e);await ze(await Le(t),!0),L(de,dD(e.name)),L(fe,e.name),L(W,null),L(X,!1),Q(),await Qe(t),await Ye().catch(e=>console.warn(`Graph execution failed:`,e)),setTimeout(()=>{x(Me)&&x(Me).centerOnNodes&&x(Me).centerOnNodes()},100)}catch(e){alert(`Failed to open project: `+e.message)}}async function He(){if(x(B)){if(x(fe)){if(x(W)){let e=await fetch(`/api/graph/${encodeURIComponent(x(W))}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:oD(x(B))});if(!e.ok){let t=await e.text();alert(`Failed to save ${x(W)}: ${t}`);return}}else if(!await cD(x(B),x(fe)))return;L(X,!1),Q()}else Ue()}}async function Ue(){if(!x(B))return;let e=x(de)===`Untitled`?`my-project.cascade`:`${x(de)}.cascade`,t=await cD(x(B),e);t&&(L(de,t.replace(/\.cascade$/,``)),L(fe,t),L(W,null),L(X,!1),Q())}function We(){if(!x(B))return;let e=x(B).toJSON(),t=fD.fromJSON(e).getGraph();t.nodes.forEach(e=>{e.position.x+=50,e.position.y+=50}),L(B,t),L(de,x(de)+` Copy`),L(fe,null),L(W,null),Q(),t.nodes.forEach(e=>{if(e.code)try{let t=Function(`node`,`graph`,e.code);e.setFunction(t)}catch(t){console.warn(`Failed to execute node `+e.id+`:`,t)}}),Ye().catch(e=>console.warn(`Failed to initialize duplicated graph:`,e)),setTimeout(()=>{x(Me)&&x(Me).centerOnNodes&&x(Me).centerOnNodes()},100)}function Q(){if(typeof document<`u`){let e=x(X)?` *`:``,t=x(B)?.project?.name&&x(B).project.name!==`Cascade Graph`?x(B).project.name:x(Se)?x(Se):x(de)&&x(de)!==`Untitled`?x(de):`Untitled`;document.title=`${t}${e} - Cascade`}}async function Ge(e){x(B)&&(await ze(await Le(e.json)),L(k,e.selectedNodeId?x(B).getNode(e.selectedNodeId):null),L(j,e.selectedAnnotationId),Ye().catch(e=>console.warn(`Graph execution failed:`,e)))}async function Ke(){if(!x(B))return;let e=L_(x(B),x(k)?.id||null,x(j));e&&await Ge(e)}async function qe(){if(!x(B))return;let e=R_(x(B),x(k)?.id||null,x(j));e&&await Ge(e)}function Je(){x(B)&&(I_(x(B),x(k)?.id||null,x(j)),L(X,!0),Q())}async function Ye(t=16){if(!x(B))return;let n=-1,r=-1;for(let i=0;i<t;i++){await x(B).execute(),V.restoreConnections(),await e();let t=x(B).nodes.reduce((e,t)=>e+t.outputs.filter(e=>e.value!==void 0&&e.value!==null).length,0),a=(x(B)._connectionsToRestore??[]).length;if(t===n&&a===r){console.log(`[Cook] settled after ${i+1} passes: ${t} outputs`+(a?`, ${a} connections unresolved (bypassed or unrunnable upstream)`:``)),a&&console.log(`[Cook] unresolved:`,(x(B)._connectionsToRestore??[]).map(e=>`${e[0][0]}.${e[0][2]??e[0][1]}->${e[1][0]}.${e[1][2]??e[1][1]}`).join(` `));return}n=t,r=a}console.warn(`[Cook] still changing after ${t} passes — stopping`)}async function Xe(){try{let e=await fetch(`/api/graph`);if(!e.ok)return null;let{default:t}=await e.json();if(!t)return null;let n=await fetch(`/api/graph/${encodeURIComponent(t)}`);return n.ok?{filename:t,json:await n.json()}:null}catch(e){return console.warn(`[Startup] No project graph available from the server:`,e),null}}let Ze=!1;async function $(e){if(!(Ze||!x(B))){Ze=!0;try{let t=await fetch(`/api/graph/${encodeURIComponent(e)}`,{cache:`no-store`});if(!t.ok)return;let n=await t.json();if(LE(n)===LE(JSON.parse(oD(x(B)))))return;if(x(X)){console.warn(`[graph watch] ${e} changed on disk and this document has unsaved changes — not reloading. Save or discard to pick the new version up.`);return}await ze(await Le(n)),L(X,!1),Q(),await Qe(n),await Ye().catch(e=>console.warn(`Graph execution failed:`,e)),console.log(`[graph watch] reloaded ${e} from disk`)}catch(e){console.warn(`[graph watch] could not reload the document:`,e)}finally{Ze=!1}}}async function Qe(e){L(be,null);try{let[t,n]=await Promise.all([fetch(`/api/nodes`),fetch(`/api/graph`)]);if(!t.ok)return;let r=GE(e,(await t.json())?.modules??[]);if(!r.length)return;let i=n.ok?(await n.json())?.root??``:``;L(be,{missing:r,root:i})}catch{}}async function $e(e){let{json:t,version:n}=e.detail,r=x(W);await ze(await Le(t),!0),L(_e,!1),L(W,r),L(fe,r),L(X,!0),Q(),Ye().catch(e=>console.warn(`Graph execution failed:`,e)),console.log(`[Version] Restored ${r} at ${n.shortSha} — unsaved until you save`)}async function et(){if(!x(B))return;Je();let e=new Map;document.querySelectorAll(`.node`).forEach(t=>{let n=t.querySelector(`.node-name`)?.textContent?.trim();n&&e.set(n,Math.max(t.offsetWidth,90))});let t=XE(x(B).nodes.map(e=>e.id),ZE(x(B).connections),{widths:e});x(B).nodes.forEach(e=>{let n=t.get(e.id);n&&(e.position=n)}),oe(B,x(B).elements=[...x(B).elements]),o_(),L(X,!0),Q(),requestAnimationFrame(()=>requestAnimationFrame(()=>{o_(),x(Me)?.centerOnNodes?.(),requestAnimationFrame(()=>requestAnimationFrame(()=>o_()))}))}ye(()=>{pD(pD().onPropParamsChanged=Qg),Q(),r_();let e=IE({getTarget:()=>x(B)??null}),t=BE({getFile:()=>x(W),onChanged:e=>$(e)}),n=MS({file:()=>x(W),isDirty:()=>x(X),save:async()=>(await He(),!x(X))}),r=UE(()=>{L(ve,!0)}),i=AE.subscribe(e=>{e&&(b().then(()=>L(z,!0)),jE())});(async()=>{if(!x(B))try{let e,t=`Untitled`,n=null,r=null,i=await Xe();if(i&&(console.log(`[Startup] Loading project graph from server:`,i.filename),e=i.json,n=i.filename,t=i.filename,r=i.filename),!e){let t=await fetch(`/graphs/default.cascade`);if(!t.ok)throw Error(`Failed to load default graph`);e=await t.json()}if(await ze(await Le(e)),L(de,t),L(fe,n),L(W,r),L(X,!1),Q(),await Qe(e),x(W))try{let{loadProjectSettings:e}=await od(async()=>{let{loadProjectSettings:e}=await import(`./projectSettingsApi-C1WvIwfP.js`);return{loadProjectSettings:e}},[]),t=await e();L(xe,t.missingCredentials),L(Se,t.manifest.name),Q()}catch{L(xe,[])}x(xe).length===0?await Ye().catch(e=>console.warn(`Graph execution failed:`,e)):console.warn(`[Startup] Cook deferred until required credentials are set: ${x(xe).join(`, `)}`),setTimeout(()=>{x(Me)&&x(Me).centerOnNodes&&x(Me).centerOnNodes()},100)}catch(e){console.error(`Failed to load default graph:`,e);let t=fD.create();L(B,t.getGraph()),L(de,`Untitled`),L(fe,null),L(W,null),Q()}L(ce,!1)})();function a(e){I={x:e.clientX,y:e.clientY}}window.addEventListener(`mousemove`,a);function o(e){if((e.key===`c`||e.key===`C`)&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&!e.shiftKey){let t=e.target;if(t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`&&!t.isContentEditable){e.preventDefault(),L(Ce,!x(Ce));return}}if((e.metaKey||e.ctrlKey)&&e.key===`.`&&(e.preventDefault(),De()),(e.metaKey||e.ctrlKey)&&e.key===`z`&&!e.shiftKey){e.preventDefault(),Ke();return}if((e.metaKey||e.ctrlKey)&&e.key===`z`&&e.shiftKey){e.preventDefault(),qe();return}let t=e.target;if(t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`&&((e.key===`v`||e.key===`V`)&&!e.metaKey&&!e.ctrlKey&&L(ie,`select`),(e.key===`h`||e.key===`H`)&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&(e.preventDefault(),x(Me)&&x(Me).centerOnNodes&&x(Me).centerOnNodes()),e.altKey&&!e.metaKey&&!e.ctrlKey&&((e.key===`t`||e.key===`T`)&&(e.preventDefault(),L(ie,`text`)),(e.key===`i`||e.key===`I`)&&(e.preventDefault(),L(ie,`image`)),(e.key===`g`||e.key===`G`)&&(e.preventDefault(),L(ie,`group`)),(e.key===`l`||e.key===`L`)&&(e.preventDefault(),L(ie,`line`)),(e.key===`p`||e.key===`P`)&&(e.preventDefault(),L(ie,`polyline`)))),e.key===`Tab`&&!e.metaKey&&!e.ctrlKey&&!e.altKey){let t=e.target;if(t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`){if(e.preventDefault(),x(w)||x(T))L(w,null),L(T,null),L(N,null);else{L(N,null);let e=document.querySelector(`[data-window-id="graph"]`);if(e){let t=e.getBoundingClientRect();I.x>=t.left&&I.x<=t.right&&I.y>=t.top&&I.y<=t.bottom?L(ae,{...I}):L(ae,{x:t.left+t.width/2,y:t.top+t.height/2})}else L(ae,{x:window.innerWidth/2,y:window.innerHeight/2});L(w,`core`)}}}if(e.key===`Escape`&&(x(w)||x(T))&&(L(w,null),L(T,null),L(N,null)),(e.metaKey||e.ctrlKey)&&e.key===`b`&&(e.preventDefault(),cl.toggleMaximizeActivePanel()),(e.metaKey||e.ctrlKey)&&e.key===`/`){e.preventDefault();let t=e.target;t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`&&(x(w)||x(T)?(L(w,null),L(T,null),L(N,null)):(L(N,null),L(ae,{x:window.innerWidth/2,y:window.innerHeight/2}),L(w,`core`)))}(e.metaKey||e.ctrlKey)&&e.key===`;`&&(e.preventDefault(),(x(k)||x(k)===null)&&L(k,null)),(e.metaKey||e.ctrlKey)&&e.key===`e`&&(e.preventDefault(),y().then(()=>L(R,!0))),(e.metaKey||e.ctrlKey)&&e.key===`,`&&(e.preventDefault(),b().then(()=>L(z,!0)));let n=e.altKey;if(n&&e.key===`n`&&!e.shiftKey&&(e.preventDefault(),Be()),n&&e.key===`o`&&!e.shiftKey&&(e.preventDefault(),Ve()),n&&e.key===`s`&&(e.preventDefault(),e.shiftKey?Ue():He()),(e.metaKey||e.ctrlKey)&&e.key===`d`){let t=e.target;t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`&&(e.preventDefault(),We())}let r=e.target;if(r.tagName!==`INPUT`&&r.tagName!==`TEXTAREA`&&x(B)&&x(k)){if((e.key===`b`||e.key===`B`)&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&(e.preventDefault(),x(k).setBypass(!x(k).bypass)),(e.key===`k`||e.key===`K`)&&!e.metaKey&&!e.ctrlKey){if(e.preventDefault(),e.shiftKey){x(k).setCook(!0);let e=t=>{t.outputs.forEach(t=>{t.connections.forEach(t=>{let n=x(B)?.getNode(t.to.nodeId);n&&(n.setCook(!0),e(n))})})};e(x(k))}else x(k).cook?x(k).setCook(!1):(x(B).clearCookingNodes(),x(k).setCook(!0))}e.altKey&&(e.key===`b`||e.key===`B`)&&(e.preventDefault(),x(B).nodes.forEach(e=>{e.bypass&&e.setBypass(!1)})),e.altKey&&(e.key===`k`||e.key===`K`)&&(e.preventDefault(),x(B).clearCookingNodes())}if(e.key===`Delete`&&x(B)&&x(k)){let t=e.target;t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`&&(e.preventDefault(),Je(),x(B).removeNode(x(k).id),L(k,null))}if(e.altKey&&(e.key===`h`||e.key===`H`)){let t=e.target;t.tagName!==`INPUT`&&t.tagName!==`TEXTAREA`&&(e.preventDefault(),x(Me)&&x(Me).centerOnNodes&&x(Me).centerOnNodes())}if((e.ctrlKey||e.metaKey)&&!e.shiftKey&&!e.altKey){let t={1:()=>Ie(`focusGraph`),2:()=>Ie(`focusViewer`),3:()=>Ie(`focusInspector`),4:()=>Ie(`focusLog`),5:()=>Ie(`focusAgent`),6:()=>Ie(`focusDefinition`),7:()=>Ie(`focusTimeline`)}[e.key];t&&(e.preventDefault(),t())}if((e.ctrlKey||e.metaKey)&&e.key===`w`&&!e.shiftKey){let t=cl.activePanel;t&&t!==`graph-main`&&(e.preventDefault(),cl.removePanel(t))}(e.ctrlKey||e.metaKey)&&e.shiftKey&&e.key===`P`&&(e.preventDefault(),cl.resetLayout())}return window.addEventListener(`keydown`,o),()=>{window.removeEventListener(`keydown`,o),window.removeEventListener(`mousemove`,a),i(),e(),t(),n(),r()}}),J(()=>(x(k),x(j)),()=>{L(l,x(k)!==null||x(j)!==null)}),J(()=>x(l),()=>{L(re,x(l))}),J(()=>(x(re),x(l)),()=>{L(u,x(re)&&x(l))}),J(()=>(x(B),x(le),x(H),Gb),()=>{x(B)!==x(le)&&(x(H)?.(),L(le,x(B)),x(B)&&Gb.setGraph(x(B)),L(U,x(B)?.scheduler.status??{phase:`idle`,total:0,completed:0,currentNode:null,startedAt:null,elapsed:0}),L(H,x(B)?.scheduler.subscribe(e=>{L(U,e)})))}),J(()=>(x(X),x(fe),x(de)),()=>{L(d,x(X)||x(fe)===null?`${x(de)} *`:x(de))}),J(()=>x(de),()=>{x(de)&&Q()}),J(()=>x(X),()=>{x(X)!==void 0&&Q()}),he(),ue();var tt=_D();let nt;var rt=M(tt),it=e=>{var t=mD(),n=P(M(t),2);o(t),O(`click`,n,()=>location.reload()),E(e,t)};Z(rt,e=>{x(ve)&&e(it)});var at=P(rt,2),ot=e=>{var t=hD(),n=M(t),r=q(n),i=P(n,2),a=q(i,!0),s=P(i,2);o(t),K((e,t)=>{D(r,`This graph needs project nodes this server does not have
|
|
211
211
|
(${e??``}${x(be),F(()=>x(be).missing.length>3?`, and ${x(be).missing.length-3} more`:``)??``}), so they cannot cook here. This server serves
|
|
212
|
-
${x(be),F(()=>x(be).root||`another project`)??``}. Launch the graph's own project from the CLI:`),D(a,t)},[()=>(x(be),F(()=>x(be).missing.slice(0,3).map(e=>e.slice(8)).join(`, `))),()=>(A(
|
|
212
|
+
${x(be),F(()=>x(be).root||`another project`)??``}. Launch the graph's own project from the CLI:`),D(a,t)},[()=>(x(be),F(()=>x(be).missing.slice(0,3).map(e=>e.slice(8)).join(`, `))),()=>(A(KE),F(()=>KE(``)))]),O(`click`,s,()=>L(be,null)),E(e,t)};Z(at,e=>{x(be)&&e(ot)});var st=P(at,2),ct=e=>{cE(e,{get documentName(){return x(d)},get canUndo(){return i()},get canRedo(){return a()},$$events:{action:e=>Ie(e.detail),openNodePanel:e=>{L(w,`core`),L(N,{x:e.detail.x,y:e.detail.y})},nameChange:e=>{L(de,e.detail),L(X,!0),Q()}}})};Z(st,e=>{x(C)||e(ct)});var lt=P(st,2);ge($T(lt,{get graph(){return x(B)},get selectedNode(){return x(k)},get selectedAnnotation(){return x(j)},get activeTool(){return x(ie)},get activeLibrary(){return x(w)},get documentName(){return x(d)},get presentationMode(){return x(C)},onRecordHistory:Je,$$events:{nodeSelect:e=>Pe(e.detail.node),annotationSelect:e=>Fe(e),libraryToggle:e=>Oe(e.detail),toolChange:e=>je(e.detail),action:e=>Ie(e.detail),nameChange:e=>{L(de,e.detail),L(X,!0),Q()},openNodePanel:e=>{e.detail?.x&&e.detail?.y?L(ae,{x:e.detail.x,y:e.detail.y}):L(ae,{x:window.innerWidth/2,y:window.innerHeight/2}),L(w,x(w)?null:`core`),L(T,null)}},$$legacy:!0}),e=>L(Me,e),()=>x(Me));var ut=P(lt,2);rD(ut,{get loading(){return x(ce)},get status(){return x(U)}});var dt=P(ut,2),ft=e=>{var t=gD(),n=M(t),r=P(n);o(t),K(e=>D(n,`Missing project credentials: ${e??``}. `),[()=>(x(xe),F(()=>x(xe).join(`, `)))]),O(`click`,r,()=>S().then(()=>L(se,!0))),E(e,t)};Z(dt,e=>{x(xe),F(()=>x(xe).length)&&e(ft)});var pt=P(dt,2),mt=e=>{kE(e,{get libraryId(){return x(w)},get categoryId(){return x(T)},get centerPosition(){return x(ae)},get fixedPosition(){return x(N)},$$events:{addNode:Ne,selectCategory:ke,selectLibrary:Ae,close:()=>{L(w,null),L(T,null),L(N,null)}}})};Z(pt,e=>{(x(w)||x(T))&&e(mt)});var ht=P(pt,2),gt=e=>{var t=te(),n=G(t);g(n,()=>x(f),(e,t)=>{t(e,{get graph(){return x(B)},get open(){return x(R)},set open(e){L(R,e)},$$events:{close:()=>L(R,!1)},$$legacy:!0})}),E(e,t)};Z(ht,e=>{x(B)&&x(f)&&e(gt)});var _t=P(ht,2);{let e=pe(()=>(A(H_),x(B),r(),x(k),F(()=>H_(x(B),r(),x(k)).length)));PE(_t,{get open(){return x(Ce)},get selectionCount(){return x(e)},$$events:{choose:e=>{Te(e.detail),L(Ce,!1)},close:()=>L(Ce,!1)}})}var vt=P(_t,2),yt=e=>{var t=te(),n=G(t);g(n,()=>x(m),(e,t)=>{t(e,{get filename(){return x(W)},get open(){return x(_e)},set open(e){L(_e,e)},$$events:{restore:$e,close:()=>L(_e,!1)},$$legacy:!0})}),E(e,t)};Z(vt,e=>{x(m)&&e(yt)});var bt=P(vt,2),xt=e=>{var t=te(),n=G(t);g(n,()=>x(p),(e,t)=>{t(e,{get open(){return x(z)},set open(e){L(z,e)},$$events:{close:()=>L(z,!1)},$$legacy:!0})}),E(e,t)};Z(bt,e=>{x(p)&&e(xt)});var St=P(bt,2),Ct=e=>{var t=te(),n=G(t);g(n,()=>x(h),(e,t)=>{t(e,{get graph(){return x(B)},get open(){return x(se)},set open(e){L(se,e)},$$events:{save:e=>{L(de,e.detail.graphName||x(de)),L(Se,e.detail.projectName),L(xe,e.detail.missingCredentials),L(X,!0),Q()},close:()=>L(se,!1)},$$legacy:!0})}),E(e,t)};Z(St,e=>{x(B)&&x(h)&&e(Ct)}),o(tt),K(()=>nt=v(tt,1,`app svelte-1n46o8q`,null,nt,{"presentation-mode":x(C)})),E(t,tt),Ee(),c()}var yD=[`auto`,`dark`,`light`],bD=`auto`,xD=`dark`;function SD(e){return typeof e==`string`&&yD.includes(e)}function CD(e){return SD(e)?e:bD}function wD(e,t){return e===`dark`||e===`light`?e:t===void 0?xD:t?`dark`:`light`}function TD(e){return e===`light`?`vs`:`vs-dark`}var ED=`cascade-user-settings`,DD=12,OD=10,kD=24;function AD(e){return typeof e==`number`&&Number.isFinite(e)?Math.min(kD,Math.max(OD,Math.round(e))):DD}function jD(e){let t=e&&typeof e==`object`?e:{};return{appearance:{theme:CD(t.appearance?.theme)},editor:{fontSize:AD(t.editor?.fontSize)}}}function MD(){try{let e=localStorage.getItem(ED);return jD(e?JSON.parse(e):void 0)}catch(e){return console.warn(`Failed to load settings:`,e),jD(void 0)}}function ND(e){try{localStorage.setItem(ED,JSON.stringify(jD(e)))}catch(e){console.warn(`Failed to save settings:`,e)}}var PD=w(MD());PD.subscribe(ND);function FD(e){PD.set(jD(e))}var ID=w(xD),LD=De(ID),RD=`(prefers-color-scheme: dark)`;function zD(e,t){e.setAttribute(`data-theme`,t)}function BD(){return typeof window>`u`||typeof window.matchMedia!=`function`?null:window.matchMedia(RD)}function VD(e,t){return typeof e.addEventListener==`function`?(e.addEventListener(`change`,t),()=>e.removeEventListener?.(`change`,t)):typeof e.addListener==`function`?(e.addListener(t),()=>e.removeListener?.(t)):()=>{}}function HD(e={}){let t=e.root??(typeof document>`u`?void 0:document.documentElement),n=e.query===void 0?BD():e.query,r=e.preferences??{subscribe:e=>PD.subscribe(t=>e(t.appearance.theme))},i=`auto`,a=()=>{let e=wD(i,n?n.matches:void 0);ID.set(e),t&&zD(t,e)},o=r.subscribe(e=>{i=e,a()}),s=n?VD(n,a):()=>{};return()=>{s(),o()}}var UD=!1;async function WD(){UD||=(await Promise.all([od(()=>import(`./core-JsyKMO1k.js`),__vite__mapDeps([14,15])),od(()=>import(`./geo-BAR6lQp5.js`),[]),od(()=>import(`./image-i1j6nWKe.js`),__vite__mapDeps([16,15]))]),!0)}async function GD(){HD(),await WD(),n(vD,{target:document.getElementById(`app`)})}GD();export{zc as A,qa as B,Ju as C,Gl as D,Ul as E,Mo as F,ga as H,go as I,ao as L,Is as M,As as N,ul as O,Io as P,ro as R,od as S,Tu as T,ja as V,tg as _,TD as a,_f as b,eC as c,Gb as d,Ug as f,ug as g,pg as h,yD as i,Ic as j,ll as k,XS as l,Fg as m,FD as n,sT as o,Ig as p,PD as r,vw as s,LD as t,Wb as u,ng as v,wu as w,hf as x,Nf as y,$a as z};
|