koppler 0.0.9 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -10
- package/dist/.built +1 -1
- package/dist/core/arrange.js +0 -43
- package/dist/core/arrange.js.map +1 -1
- package/dist/koppler.mjs +1 -1
- package/dist/koppler.mjs.map +1 -1
- package/dist/page/appearance.js +18 -0
- package/dist/page/assets/Barlow-400-latin-DygnOwyn.woff2 +0 -0
- package/dist/page/assets/Barlow-400-latin-ext-BKWkRE1H.woff2 +0 -0
- package/dist/page/assets/Barlow-500-latin-D6sGsXIV.woff2 +0 -0
- package/dist/page/assets/Barlow-500-latin-ext-CPelPZq1.woff2 +0 -0
- package/dist/page/assets/Barlow-600-latin-DO9c7XN2.woff2 +0 -0
- package/dist/page/assets/Barlow-600-latin-ext-Cu-we8td.woff2 +0 -0
- package/dist/page/assets/Barlow-700-latin-B_0g9oET.woff2 +0 -0
- package/dist/page/assets/Barlow-700-latin-ext-CaU1nQ4r.woff2 +0 -0
- package/dist/page/assets/BarlowSemiCondensed-500-latin-CREnc4EB.woff2 +0 -0
- package/dist/page/assets/BarlowSemiCondensed-500-latin-ext-CoB4J12G.woff2 +0 -0
- package/dist/page/assets/BarlowSemiCondensed-600-latin-D36brihh.woff2 +0 -0
- package/dist/page/assets/BarlowSemiCondensed-600-latin-ext-CUbUZgPG.woff2 +0 -0
- package/dist/page/assets/BarlowSemiCondensed-700-latin-BSuPlIsc.woff2 +0 -0
- package/dist/page/assets/BarlowSemiCondensed-700-latin-ext-D_nMxumM.woff2 +0 -0
- package/dist/page/assets/SometypeMono-400-700-latin-5eE2nSzF.woff2 +0 -0
- package/dist/page/assets/SometypeMono-400-700-latin-ext-BNdIoRtJ.woff2 +0 -0
- package/dist/page/assets/index-BlCQOHKq.js +43 -0
- package/dist/page/assets/index-DUWc3lut.css +1 -0
- package/dist/page/favicon.svg +9 -0
- package/dist/page/index.html +4 -3
- package/dist/server/files.js +3 -1
- package/dist/server/files.js.map +1 -1
- package/package.json +2 -2
- package/skills/koppler-run/VERSION +1 -1
- package/skills/koppler-run/references/stack.md +1 -1
- package/dist/page/assets/JetBrainsMono-cyrillic-D2jMJ_bk.woff2 +0 -0
- package/dist/page/assets/JetBrainsMono-greek-D2nYnAec.woff2 +0 -0
- package/dist/page/assets/JetBrainsMono-latin-Db4Uuiha.woff2 +0 -0
- package/dist/page/assets/JetBrainsMono-latin-ext-Bnd2h4Br.woff2 +0 -0
- package/dist/page/assets/JetBrainsMono-vietnamese-CNlsqbWb.woff2 +0 -0
- package/dist/page/assets/SchibstedGrotesk-latin-DxefFeRw.woff2 +0 -0
- package/dist/page/assets/SchibstedGrotesk-latin-ext-CnpJE18X.woff2 +0 -0
- package/dist/page/assets/index-Bi0_sPx0.js +0 -43
- package/dist/page/assets/index-e6-Jk1nK.css +0 -1
- package/dist/page/theme.js +0 -8
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
(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 e=Array.isArray,t=Array.prototype.indexOf,n=Array.prototype.includes,r=Array.from,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyDescriptors,s=Object.prototype,c=Array.prototype,l=Object.getPrototypeOf,u=Object.isExtensible;function d(e){return typeof e==`function`}var f=()=>{};function p(e){return typeof e?.then==`function`}function m(e){return e()}function h(e){for(var t=0;t<e.length;t++)e[t]()}function g(){var e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function _(e,t,n=!1){return e===void 0?n?t():t:e}function v(e,t){if(Array.isArray(e))return e;if(t===void 0||!(Symbol.iterator in e))return Array.from(e);let n=[];for(let r of e)if(n.push(r),n.length===t)break;return n}function y(e,t){var n={};for(var r in e)t.includes(r)||(n[r]=e[r]);for(var i of Object.getOwnPropertySymbols(e))Object.propertyIsEnumerable.call(e,i)&&!t.includes(i)&&(n[i]=e[i]);return n}var b=1<<24,x=1024,S=2048,C=4096,w=8192,T=16384,ee=32768,te=1<<25,E=65536,ne=1<<19,D=1<<20,re=1<<25,ie=1<<21,ae=1<<22,oe=1<<23,se=Symbol(`$state`),ce=Symbol(`component`),le=Symbol(`legacy props`),ue=Symbol(``),de=Symbol(`attributes`),fe=Symbol(`class`),pe=Symbol(`style`),me=Symbol(`text`),he=Symbol(`form reset`),ge=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},_e=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`),ve={},ye=Symbol(`uninitialized`),be=`http://www.w3.org/1999/xhtml`,xe=`http://www.w3.org/2000/svg`;function Se(){console.warn(`https://svelte.dev/e/derived_inert`)}function Ce(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function we(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function Te(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var O=!1;function Ee(e){O=e}var De;function Oe(e){if(e===null)throw Ce(),ve;return De=e}function ke(){return Oe(Cn(De))}function k(e){if(O){if(Cn(De)!==null)throw Ce(),ve;De=e}}function Ae(e=1){if(O){for(var t=e,n=De;t--;)n=Cn(n);De=n}}function je(e=!0){for(var t=0,n=De;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else(r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=Cn(n);e&&n.remove(),n=i}}function Me(e){if(!e||e.nodeType!==8)throw Ce(),ve;return e.data}function Ne(e){return e===this.v}function Pe(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function Fe(e){return!Pe(e,this.v)}function Ie(e){throw Error(`https://svelte.dev/e/lifecycle_outside_component`)}function Le(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function Re(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function ze(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function Be(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function Ve(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function He(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function Ue(e){throw Error(`https://svelte.dev/e/props_invalid_value`)}function We(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function Ge(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function Ke(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function qe(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var Je=!1;function Ye(){Je=!0}var Xe=[];function Ze(e,t=!1,n=!1){return Qe(e,new Map,``,Xe,null,n)}function Qe(t,n,r,i,a=null,o=!1){if(typeof t==`object`&&t){var c=n.get(t);if(c!==void 0)return c;if(t instanceof Map)return new Map(t);if(t instanceof Set)return new Set(t);if(e(t)){var u=Array(t.length);n.set(t,u),a!==null&&n.set(a,u);for(var d=0;d<t.length;d+=1){var f=t[d];d in t&&(u[d]=Qe(f,n,r,i,null,o))}return u}if(l(t)===s){u={},n.set(t,u),a!==null&&n.set(a,u);for(var p of Object.keys(t))u[p]=Qe(t[p],n,r,i,null,o);return u}if(t instanceof Date)return t.getTime(),structuredClone(t);if(typeof t.toJSON==`function`&&!o)return Qe(t.toJSON(),n,r,i,t)}if(t instanceof EventTarget)return t;try{return structuredClone(t)}catch{return t}}function $e(e){let t=e.p;for(;t!==null&&t.c===null;)t=t.p;return t?.c??null}function et(e,t){return e===null&&Ie(t),e.c??=new Map($e(e)||void 0)}var tt=null;function nt(e){tt=e}function rt(e){return et(tt,`getContext`).get(e)}function it(e,t){return et(tt,`setContext`).set(e,t),t}function at(e){return et(tt,`hasContext`).has(e)}function A(e,t=!1,n){tt={p:tt,i:!1,c:null,e:null,s:e,x:null,r:lr,l:Je&&!t?{s:null,u:null,$:[]}:null}}function j(e){var t=tt,n=t.e;if(n!==null){t.e=null;for(var r of n)In(r)}return e!==void 0&&(t.x=e),t.i=!0,tt=t.p,ot(e)}function ot(e={}){return i(e,ce,{value:!0}),e}function st(){return!Je||tt!==null&&tt.l===null}var ct=[];function lt(){var e=ct;ct=[],h(e)}function ut(e){if(ct.length===0&&!Bt){var t=ct;queueMicrotask(()=>{t===ct&<()})}ct.push(e)}function dt(){for(;ct.length>0;)lt()}var ft=~(S|C|x);function pt(e,t){e.f=e.f&ft|t}function mt(e){e.f&512||e.deps===null?pt(e,x):pt(e,C)}function ht(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),pt(e,x)}function gt(e,t){if(t){let t=document.body;e.autofocus=!0,ut(()=>{document.activeElement===t&&e.focus()})}}function _t(e){O&&Sn(e)!==null&&wn(e)}var vt=!1;function yt(){vt||(vt=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[he]?.()})},{capture:!0}))}function bt(e){var t=or,n=lr;cr(null),ur(null);try{return e()}finally{cr(t),ur(n)}}function xt(e,t,n,r=n){e.addEventListener(t,()=>bt(n));let i=e[he];e[he]=i?()=>{i(),r(!0)}:()=>r(!0),yt()}function St(e,t,n,r){let i=st()?Et:kt;var a=e.filter(e=>!e.settled),o=t.map(i);if(n.length===0&&a.length===0){r(o);return}var s=lr,c=Ct(),l=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(e=>e.promise)):null;function u(e){if(!(s.f&16384)){c();try{r([...o,...e])}catch(e){kn(e,s)}wt()}}var d=Tt();if(n.length===0){l.then(()=>u([])).finally(d);return}function f(){Promise.all(n.map(e=>Ot(e))).then(u).catch(e=>kn(e,s)).finally(d)}l?l.then(()=>{s.f&16384?d():(c(),f(),wt())}):f()}function Ct(){var e=lr,t=or,n=tt,r=It;return function(i=!0){ur(e),cr(t),nt(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function wt(e=!0){ur(null),cr(null),nt(null),e&&It?.deactivate()}function Tt(){var e=lr,t=e.b,n=It,r=!!t?.is_rendered();return t?.update_pending_count(1,n),n.increment(r,e),()=>{t?.update_pending_count(-1,n),n.decrement(r,e)}}function Et(e){var t=2|S;return lr!==null&&(lr.f|=ne),{ctx:tt,deps:null,effects:null,equals:Ne,f:t,fn:e,reactions:null,rv:0,v:ye,wv:0,parent:lr,ac:null}}var Dt=Symbol(`obsolete`);function Ot(e,t,n){let r=lr;r===null&&Le();var i=void 0,a=rn(ye),o=!or,s=new Set;return Vn(()=>{var t=lr,n=g();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==ge&&n.reject(e)}).finally(wt)}catch(e){n.reject(e),wt()}var c=It;if(o){if(t.f&32768)var l=Tt();if(r.b?.is_rendered())c.async_deriveds.get(t)?.reject(Dt);else for(let e of s.values())e.reject(Dt);s.add(n),c.async_deriveds.set(t,n)}let u=(e,t=void 0)=>{l?.(),s.delete(n),t!==Dt&&(c.activate(),t?(a.f|=oe,cn(a,t)):(a.f&8388608&&(a.f^=oe),cn(a,e)),c.deactivate())};n.promise.then(u,e=>u(null,e||`unknown`))}),Pn(()=>{for(let e of s)e.reject(Dt)}),new Promise(e=>{function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}t(i)})}function M(e){let t=Et(e);return fr(t),t}function kt(e){let t=Et(e);return t.equals=Fe,t}function At(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n<t.length;n+=1)Yn(t[n])}}function jt(e){var t,n=lr,r=e.parent;if(!ir&&r!==null&&e.v!==ye&&r.f&24576)return Se(),e.v;ur(r);try{At(e),t=wr(e)}finally{ur(n)}return t}function Mt(e){var t=jt(e);!e.equals(t)&&(e.wv=xr(),(!It?.is_fork||e.deps===null)&&(It===null?e.v=t:(It.capture(e,t,!0),Lt?.capture(e,t,!0)),e.deps===null))?pt(e,x):ir||(Rt===null?mt(e):(Nn()||It?.is_fork)&&Rt.set(e,t))}function Nt(e){if(e.effects!==null)for(let t of e.effects)(t.teardown||t.ac)&&(t.teardown?.(),t.ac!==null&&bt(()=>{t.ac.abort(ge),t.ac=null}),t.fn!==null&&(t.teardown=f),Dr(t,0),qn(t))}function Pt(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&Or(t)}var Ft=null,It=null,Lt=null,Rt=null,zt=null,Bt=!1,Vt=!1,Ht=null,Ut=null,Wt=0,Gt=1,Kt=class e{id=Gt++;#e=!1;linked=!0;#t=null;#n=null;async_deriveds=new Map;current=new Map;previous=new Map;#r=new Set;#i=new Set;#a=0;#o=new Map;#s=null;#c=[];#l=[];#u=new Set;#d=new Set;#f=new Map;#p=new Set;is_fork=!1;#m=!1;constructor(){Ft===null?Ft=this:(Ft.#n=this,this.#t=Ft),Ft=this}#h(){if(this.is_fork)return!0;for(let n of this.#o.keys()){for(var e=n,t=!1;e.parent!==null;){if(this.#f.has(e)){t=!0;break}e=e.parent}if(!t)return!0}return!1}skip_effect(e){this.#f.has(e)||this.#f.set(e,{d:[],m:[]}),this.#p.delete(e)}unskip_effect(e,t=e=>this.schedule(e)){var n=this.#f.get(e);if(n){this.#f.delete(e);for(var r of n.d)pt(r,S),t(r);for(r of n.m)pt(r,C),t(r)}this.#p.add(e)}#g(){var e=[];for(let i of this.#c)if(!(i.f&16384||!(i.f&6144))){for(var t=i,n=!1;t.parent!==null;){t=t.parent;var r=t.f;if(r&96){if(!(r&1024)){n=!0;break}t.f^=x}}n||e.push(t)}return this.#c=[],e}#_(){this.#e=!0;for(let e of this.#u)this.#d.delete(e),pt(e,S),this.schedule(e);for(let e of this.#d)pt(e,C),this.schedule(e);this.apply();for(var t=Ht=[],n=[],r=Ut=[];this.#c.length>0;){Wt++>1e3&&(this.#S(),Jt());for(let e of this.#g())try{this.#v(e,t,n)}catch(t){throw $t(e),this.#h()||this.discard(),t}}if(It=null,r.length>0){var i=e.ensure();for(let e of r)i.schedule(e)}if(Ht=null,Ut=null,this.#h()){this.#x(n),this.#x(t);for(let[e,t]of this.#f)Qt(e,t);r.length>0&&It.#_();return}let a=this.#y();if(a)this.#x(n),this.#x(t),a.#b(this);else{this.#u.clear(),this.#d.clear();for(let e of this.#r)e(this);this.#r.clear(),Lt=this,Xt(n),Xt(t),Lt=null,this.#s?.resolve();var o=It;if(this.#a===0&&(this.#c.length===0||o!==null)&&this.#S(),this.#c.length>0){if(o!==null){for(let e of this.#c)o.#c.push(e);this.#c=[]}else o=this}o!==null&&(tn.clear(),o.#_())}}#v(e,t,n){e.f^=x;for(var r=e.first;r!==null;){var i=r.f,a=!!(i&96);if(!(a&&i&1024||i&8192||this.#f.has(r))&&r.fn!==null){a?r.f^=x:i&4?t.push(r):Sr(r)&&(i&16&&this.#d.add(r),Or(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}#y(){for(var e=this.#t;e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=e.#t}return null}#b(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve).catch(e.reject)}e.async_deriveds.clear(),this.transfer_effects(e.#u,e.#d);let t=e=>{var n=e.reactions;if(n!==null&&!(e.f&2&&!(e.f&6144)))for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(this.#d.delete(i),pt(i,S),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#S(),It=this,this.#_()}#x(e){for(var t=0;t<e.length;t+=1)ht(e[t],this.#u,this.#d)}capture(e,t,n=!1){e.v!==ye&&!this.previous.has(e)&&this.previous.set(e,e.v),e.f&8388608||(this.current.set(e,[t,n]),Rt?.set(e,t)),this.is_fork||(e.v=t)}activate(){It=this}deactivate(){It=null,Rt=null}flush(){try{Vt=!0,It=this,this.#_()}finally{Wt=0,zt=null,Ht=null,Ut=null,Vt=!1,It=null,Rt=null,tn.clear()}}discard(){for(let e of this.#i)e(this);this.#i.clear();for(let e of this.async_deriveds.values())e.reject(Dt);this.#S(),this.#s?.resolve()}register_created_effect(e){this.#l.push(e)}increment(e,t){if(this.#a+=1,e){let e=this.#o.get(t)??0;this.#o.set(t,e+1)}}decrement(e,t){if(--this.#a,e){let e=this.#o.get(t)??0;e===1?this.#o.delete(t):this.#o.set(t,e-1)}this.#m||(this.#m=!0,ut(()=>{this.#m=!1,this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)this.#u.add(t);for(let e of t)this.#d.add(e);e.clear(),t.clear()}oncommit(e){this.#r.add(e)}ondiscard(e){this.#i.add(e)}settled(){return(this.#s??=g()).promise}static ensure(){if(It===null){let t=It=new e;!Vt&&!Bt&&ut(()=>{t.#e||t.flush()})}return It}apply(){Rt=null}schedule(e){zt=e,e.b?.is_pending&&e.f&16777228&&!(e.f&32768)?e.b.defer_effect(e):this.#c.push(e)}#S(){if(this.linked){var e=this.#t,t=this.#n;e===null||(e.#n=t),t===null?Ft=e:t.#t=e,this.linked=!1}}};function qt(e){var t=Bt,n=Lt;Lt=null,Bt=!0;try{var r;for(e&&(qt(),r=e());;){if(dt(),It===null)return r;It.flush()}}finally{Bt=t,Lt=n}}function Jt(){try{He()}catch(e){kn(e,zt)}}var Yt=null;function Xt(e){var t=e.length;if(t!==0){for(var n=0;n<t;){var r=e[n++];if(!(r.f&24576)&&Sr(r)&&(Yt=new Set,Or(r),r.deps===null&&r.first===null&&r.nodes===null&&r.teardown===null&&r.ac===null&&Zn(r),Yt?.size>0)){tn.clear();for(let e of Yt){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)Yt.has(n)&&(Yt.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||Or(n)}}Yt.clear()}}Yt=null}}function Zt(e){It.schedule(e)}function Qt(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),pt(e,x);for(var n=e.first;n!==null;)Qt(n,t),n=n.next}}function $t(e){pt(e,x);for(var t=e.first;t!==null;)$t(t),t=t.next}var en=new Set,tn=new Map,nn=!1;function rn(e,t){return{f:0,v:e,reactions:null,equals:Ne,rv:0,wv:0}}function N(e,t){let n=rn(e,t);return fr(n),n}function an(e,t=!1,n=!0){let r=rn(e);return t||(r.equals=Fe),Je&&n&&tt!==null&&tt.l!==null&&(tt.l.s??=[]).push(r),r}function P(e,t,n=!1){return or!==null&&(!sr||or.f&131072)&&st()&&or.f&4325394&&(dr===null||!dr.has(e))&&Ke(),cn(e,n?fn(t):t,Ut)}var on=null,sn=0;function cn(e,t,n=null){if(!e.equals(t)){ir?tn.set(e,t):tn.has(e)||tn.set(e,e.v);var r=Kt.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&jt(t),Rt===null&&mt(t)}e.wv=xr(),on=null,sn=0,dn(e,S,n),on=null,st()&&lr!==null&&lr.f&1024&&!(lr.f&96)&&(hr===null?gr([e]):hr.push(e)),!r.is_fork&&en.size>0&&!nn&&ln()}return t}function ln(){nn=!1;for(let e of en){e.f&1024&&pt(e,C);let t;try{t=Sr(e)}catch{t=!0}t&&Or(e)}en.clear()}function un(e){P(e,e.v+1)}function dn(e,t,n){var r=e.reactions;if(r!==null){var i=st(),a=r.length;if(sn+=a,sn>1e5&&on===null&&(on=new Set),on!==null){if(on.has(e))return;on.add(e)}for(var o=0;o<a;o++){var s=r[o],c=s.f;if(i||s!==lr){var l=(c&S)===0;if(l&&pt(s,t),c&131072)en.add(s);else if(c&2){var u=s;Rt?.delete(u),dn(u,C,n)}else if(l){var d=s;c&16&&Yt!==null&&Yt.add(d),n===null?Zt(d):n.push(d)}}}}}function fn(t){if(typeof t!=`object`||!t||se in t||ce in t)return t;let n=l(t);if(n!==s&&n!==c)return t;var r=new Map,i=e(t),o=N(0),u=null,d=yr,f=e=>{if(yr===d)return e();var t=or,n=yr;cr(null),br(d);var r=e();return cr(t),br(n),r};return i&&r.set(`length`,N(t.length,u)),new Proxy(t,{defineProperty(e,t,n){(!(`value`in n)||n.configurable===!1||n.enumerable===!1||n.writable===!1)&&We();var i=r.get(t);return i===void 0?f(()=>{var e=N(n.value,u);return r.set(t,e),e}):P(i,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(n===void 0){if(t in e){let e=f(()=>N(ye,u));r.set(t,e),un(o)}}else P(n,ye),un(o);return!0},get(e,n,i){if(n===se)return t;var o=r.get(n),s=n in e;if(o===void 0&&(!s||a(e,n)?.writable)&&(o=f(()=>N(fn(s?e[n]:ye),u)),r.set(n,o)),o!==void 0){var c=B(o);return c===ye?void 0:c}return Reflect.get(e,n,i)},getOwnPropertyDescriptor(e,t){this.has?.(e,t);var n=Reflect.getOwnPropertyDescriptor(e,t),i=r.get(t);if(i!==void 0){var a=B(i);if(a===ye)return;if(n&&`value`in n)n.value=a;else return{enumerable:!0,configurable:!0,value:a,writable:!0}}return n},has(e,t){if(t===se)return!0;var n=r.get(t),i=n!==void 0&&n.v!==ye||Reflect.has(e,t);return(n!==void 0||lr!==null&&(!i||a(e,t)?.writable))&&(n===void 0&&(n=f(()=>N(i?fn(e[t]):ye,u)),r.set(t,n)),B(n)===ye)?!1:i},set(e,t,n,s){var c=r.get(t),l=t in e;if(i&&t===`length`)for(var d=n;d<c.v;d+=1){var p=r.get(d+``);p===void 0?d in e&&(p=f(()=>N(ye,u)),r.set(d+``,p)):P(p,ye)}if(c===void 0)(!l||a(e,t)?.writable)&&(c=f(()=>N(void 0,u)),P(c,fn(n)),r.set(t,c));else{l=c.v!==ye;var m=f(()=>fn(n));P(c,m)}var h=Reflect.getOwnPropertyDescriptor(e,t);if(h?.set&&h.set.call(s,n),!l){if(i&&typeof t==`string`){var g=r.get(`length`),_=Number(t);Number.isInteger(_)&&_>=g.v&&P(g,_+1)}un(o)}return!0},ownKeys(e){B(o);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return t===void 0||t.v!==ye});for(var[n,i]of r)i.v!==ye&&!(n in e)&&t.push(n);return t},setPrototypeOf(){Ge()}})}function pn(e){try{if(typeof e==`object`&&e&&se in e)return e[se]}catch{}return e}function mn(e,t){return Object.is(pn(e),pn(t))}var hn,gn,_n,vn,yn;function bn(){if(hn===void 0){hn=window,gn=document,_n=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;vn=a(t,`firstChild`).get,yn=a(t,`nextSibling`).get,u(e)&&(e[fe]=void 0,e[de]=null,e[pe]=void 0,e.__e=void 0),u(n)&&(n[me]=void 0)}}function xn(e=``){return document.createTextNode(e)}function Sn(e){return vn.call(e)}function Cn(e){return yn.call(e)}function F(e,t){if(!O)return Sn(e);var n=Sn(De);if(n===null)n=De.appendChild(xn());else if(t&&n.nodeType!==3){var r=xn();return n?.before(r),Oe(r),r}return t&&Dn(n),Oe(n),n}function I(e,t=!1){if(!O){var n=Sn(e);return n instanceof Comment&&n.data===``?Cn(n):n}if(t){if(De?.nodeType!==3){var r=xn();return De?.before(r),Oe(r),r}Dn(De)}return De}function L(e,t=!1){if(!O)return Sn(e);var n=F(e,t);return k(e),n}function R(e,t=1,n=!1){let r=O?De:e;for(var i;t--;)i=r,r=Cn(r);if(!O)return r;if(n){if(r?.nodeType!==3){var a=xn();return r===null?i?.after(a):r.before(a),Oe(a),a}Dn(r)}return Oe(r),r}function wn(e){e.textContent=``}function Tn(){return!1}function En(e,t,n){return t==null||t===`http://www.w3.org/1999/xhtml`?n?document.createElement(e,{is:n}):document.createElement(e):n?document.createElementNS(t,e,{is:n}):document.createElementNS(t,e)}function Dn(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function On(e){var t=lr;if(t===null)return or.f|=oe,e;if(!(t.f&32768)&&!(t.f&4))throw e;kn(e,t)}function kn(e,t){if(e===ve)throw e;if(!(t!==null&&t.f&16384)){for(;t!==null;){if(t.f&128&&!(t.f&33570816)){if(!(t.f&32768))throw e;try{t.b.error(e);return}catch(t){e=t}}t=t.parent}throw e}}function An(e){lr===null&&(or===null&&Ve(e),Be()),ir&&ze(e)}function jn(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function Mn(e,t){var n=lr;n!==null&&n.f&8192&&(e|=w);var r={ctx:tt,deps:null,nodes:null,f:e|S|512,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};It?.register_created_effect(r);var i=r;if(e&4)Ht===null?Kt.ensure().schedule(r):Ht.push(r);else if(t!==null){try{Or(r)}catch(e){throw Yn(r),e}i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&!(i.f&524288)&&(i=i.first,e&16&&e&65536&&i!==null&&(i.f|=E))}if(i!==null&&(i.parent=n,n!==null&&jn(i,n),or!==null&&or.f&2&&!(e&64))){var a=or;(a.effects??=[]).push(i)}return r}function Nn(){return or!==null&&!sr}function Pn(e){let t=Mn(8,null);return pt(t,x),t.teardown=e,t}function Fn(e){An(`$effect`);var t=lr.f;if(!or&&t&32&&tt!==null&&!tt.i){var n=tt;(n.e??=[]).push(e)}else return In(e)}function In(e){return Mn(4|D,e)}function Ln(e){return An(`$effect.pre`),Mn(8|D,e)}function Rn(e){Kt.ensure();let t=Mn(64|ne,e);return()=>{Yn(t)}}function zn(e){Kt.ensure();let t=Mn(64|ne,e);return(e={})=>new Promise(n=>{e.outro?Qn(t,()=>{Yn(t),n(void 0)}):(Yn(t),n(void 0))})}function Bn(e){return Mn(4,e)}function Vn(e){return Mn(ae|ne,e)}function Hn(e,t=0){return Mn(8|t,e)}function z(e,t=[],n=[],r=[]){St(r,t,n,t=>{Mn(8,()=>{e(...t.map(B))})})}function Un(e,t=0){return Mn(16|t,e)}function Wn(e,t=0){return Mn(b|t,e)}function Gn(e){return Mn(32|ne,e)}function Kn(e){var t=e.teardown;if(t!==null){let n=ir,r=or;ar(!0),cr(null);try{t.call(null)}catch(t){kn(t,e.parent)}finally{ar(n),cr(r)}}}function qn(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&bt(()=>{e.abort(ge)});var r=n.next;n.f&64?n.parent=null:Yn(n,t),n=r}}function Jn(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||Yn(t),t=n}}function Yn(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(Xn(e.nodes.start,e.nodes.end),n=!0),e.f|=te,qn(e,t&&!n),Dr(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();Kn(e),e.f^=te,e.f|=T;var i=e.parent;i!==null&&i.first!==null&&Zn(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function Xn(e,t){for(;e!==null;){var n=e===t?null:Cn(e);e.remove(),e=n}}function Zn(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Qn(e,t,n=!0){var r=[];e.f|=256,$n(e,r,!0);var i=()=>{n&&Yn(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function $n(e,t,n){if(!(e.f&8192)){e.f^=w;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=!!(i.f&65536)||!!(i.f&32)&&!!(e.f&16);$n(i,t,o?n:!1)}i=a}}}function er(e){e.f&=-257,tr(e,!0)}function tr(e,t){if(!(e.f&256)&&e.f&8192){e.f^=w,e.f&1024||(pt(e,S),Kt.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=!!(n.f&65536)||!!(n.f&32);tr(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function nr(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:Cn(n);t.append(n),n=i}}var rr=null,ir=!1;function ar(e){ir=e}var or=null,sr=!1;function cr(e){or=e}var lr=null;function ur(e){lr=e}var dr=null;function fr(e){or!==null&&(or.f&2097152||or.f&2)&&(dr??=new Set).add(e)}var pr=null,mr=0,hr=null;function gr(e){hr=e}var _r=1,vr=0,yr=vr;function br(e){yr=e}function xr(){return++_r}function Sr(e){var t=e.f;if(t&2048)return!0;if(t&4096){for(var n=e.deps,r=n.length,i=0;i<r;i++){var a=n[i];if(Sr(a)&&Mt(a),a.wv>e.wv)return!0}t&512&&Rt===null&&pt(e,x)}return!1}function Cr(e,t,n=!0){var r=e.reactions;if(r!==null&&!(dr!==null&&dr.has(e)))for(var i=0;i<r.length;i++){var a=r[i];a.f&2?Cr(a,t,!1):t===a&&(n?pt(a,S):a.f&1024&&pt(a,C),Zt(a))}}function wr(e){var t=pr,n=mr,r=hr,i=or,a=dr,o=tt,s=sr,c=yr,l=e.f;pr=null,mr=0,hr=null,or=l&96?null:e,dr=null,nt(e.ctx),sr=!1,yr=++vr,e.ac!==null&&(bt(()=>{e.ac.abort(ge)}),e.ac=null);try{e.f|=ie;var u=e.fn,d=u();e.f|=ee;var f=Tr(e);if(st()&&hr!==null&&!sr&&f!==null&&!(e.f&6146))for(var p=0;p<hr.length;p++)Cr(hr[p],e);if(i!==null&&i!==e){if(vr++,i.deps!==null)for(let e=0;e<n;e+=1)i.deps[e].rv=vr;if(t!==null)for(let e of t)e.rv=vr;hr!==null&&(r===null?r=hr:r.push(...hr))}return e.f&8388608&&(e.f^=oe),d}catch(t){return Tr(e),On(t)}finally{e.f^=ie,pr=t,mr=n,hr=r,or=i,dr=a,nt(o),sr=s,yr=c}}function Tr(e){var t=e.deps,n=It?.is_fork;if(pr!==null){var r;if(n||Dr(e,mr),t!==null&&mr>0)for(t.length=mr+pr.length,r=0;r<pr.length;r++)t[mr+r]=pr[r];else e.deps=t=pr;if(Nn()&&e.f&512)for(r=mr;r<t.length;r++)(t[r].reactions??=[]).push(e)}else!n&&t!==null&&mr<t.length&&(Dr(e,mr),t.length=mr);return t}function Er(e,r){let i=r.reactions;if(i!==null){var a=t.call(i,e);if(a!==-1){var o=i.length-1;o===0?i=r.reactions=null:(i[a]=i[o],i.pop())}}if(i===null&&r.f&2&&(pr===null||!n.call(pr,r))){var s=r;s.f&512&&(s.f^=512),s.v!==ye&&mt(s),s.ac!==null&&bt(()=>{s.ac.abort(ge),s.ac=null,pt(s,S)}),Nt(s),Dr(s,0)}}function Dr(e,t){var n=e.deps;if(n!==null)for(var r=t;r<n.length;r++)Er(e,n[r])}function Or(e){var t=e.f;if(!(t&16384)){pt(e,x);var n=lr;lr=e;try{t&16777232?Jn(e):qn(e),Kn(e);var r=wr(e);e.teardown=typeof r==`function`?r:null,e.wv=_r}finally{lr=n}}}async function kr(){await Promise.resolve(),qt()}function B(e){var t=!!(e.f&2);if(rr?.add(e),or!==null&&!sr&&!(lr!==null&&lr.f&16384)&&(dr===null||!dr.has(e))){var r=or.deps;if(or.f&2097152)e.rv<vr&&(e.rv=vr,pr===null&&r!==null&&r[mr]===e?mr++:pr===null?pr=[e]:pr.push(e));else{or.deps??=[],n.call(or.deps,e)||or.deps.push(e);var i=e.reactions;i===null?e.reactions=[or]:n.call(i,or)||i.push(or)}}if(ir&&tn.has(e))return tn.get(e);if(t){var a=e;if(ir){var o=a.v;return(!(a.f&1024)&&a.reactions!==null||jr(a))&&(o=jt(a)),tn.set(a,o),o}var s=!(a.f&512)&&!sr&&or!==null&&!!(or.f&512),c=(a.f&ee)===0;Sr(a)&&(s&&(a.f|=512),Mt(a)),s&&!c&&(Pt(a),Ar(a))}if(Rt?.has(e))return Rt.get(e);if(e.f&8388608)throw e.v;return e.v}function Ar(e){if(e.f|=512,e.deps!==null)for(let r of e.deps){var t=r.reactions;t===null?r.reactions=[e]:n.call(t,e)||t.push(e),r.f&2&&!(r.f&512)&&(Pt(r),Ar(r))}}function jr(e){if(e.v===ye)return!0;if(e.deps===null)return!1;for(let t of e.deps)if(tn.has(t)||t.f&2&&jr(t))return!0;return!1}function Mr(e){var t=sr;try{return sr=!0,e()}finally{sr=t}}function Nr(e){if(!(typeof e!=`object`||!e||e instanceof EventTarget)){if(se in e)Pr(e);else if(!Array.isArray(e))for(let t in e){let n=e[t];typeof n==`object`&&n&&se in n&&Pr(n)}}}function Pr(e,t=new Set){if(typeof e==`object`&&e&&!(e instanceof EventTarget)&&!t.has(e)){t.add(e),e instanceof Date&&e.getTime();for(let n in e)try{Pr(e[n],t)}catch{}let n=l(e);if(n!==Object.prototype&&n!==Array.prototype&&n!==Map.prototype&&n!==Set.prototype&&n!==Date.prototype){let t=o(n);for(let n in t){let r=t[n].get;if(r)try{r.call(e)}catch{}}}}}function Fr(e){return e.endsWith(`capture`)&&e!==`gotpointercapture`&&e!==`lostpointercapture`}var Ir=[`beforeinput`,`click`,`change`,`dblclick`,`contextmenu`,`focusin`,`focusout`,`input`,`keydown`,`keyup`,`mousedown`,`mousemove`,`mouseout`,`mouseover`,`mouseup`,`pointerdown`,`pointermove`,`pointerout`,`pointerover`,`pointerup`,`touchend`,`touchmove`,`touchstart`];function Lr(e){return Ir.includes(e)}var Rr=`allowfullscreen.async.autofocus.autoplay.checked.controls.default.disabled.formnovalidate.indeterminate.inert.ismap.loop.multiple.muted.nomodule.novalidate.open.playsinline.readonly.required.reversed.seamless.selected.webkitdirectory.defer.disablepictureinpicture.disableremoteplayback`.split(`.`),zr={formnovalidate:`formNoValidate`,ismap:`isMap`,nomodule:`noModule`,playsinline:`playsInline`,readonly:`readOnly`,defaultvalue:`defaultValue`,defaultchecked:`defaultChecked`,srcobject:`srcObject`,novalidate:`noValidate`,allowfullscreen:`allowFullscreen`,disablepictureinpicture:`disablePictureInPicture`,disableremoteplayback:`disableRemotePlayback`};function Br(e){return e=e.toLowerCase(),zr[e]??e}[...Rr];var Vr=[`touchstart`,`touchmove`];function Hr(e){return Vr.includes(e)}var Ur=[`textarea`,`script`,`style`,`title`];function Wr(e){return Ur.includes(e)}var Gr=Symbol(`events`),Kr=new Set,qr=new Set;function Jr(e,t,n,r={}){function i(e){if(r.capture||$r.call(t,e),!e.cancelBubble)return bt(()=>n?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?(i.__removed=!1,ut(()=>{i.__removed||t.addEventListener(e,i,r)})):t.addEventListener(e,i,r),i}function Yr(e,t,n,r={}){var i=Jr(t,e,n,r);return()=>{i.__removed=!0,e.removeEventListener(t,i,r)}}function V(e,t,n,r,i){var a={capture:r,passive:i},o=Jr(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&Pn(()=>{o.__removed=!0,t.removeEventListener(e,o,a)})}function H(e,t,n){(t[Gr]??={})[e]=n}function Xr(e){for(var t=0;t<e.length;t++)Kr.add(e[t]);for(var n of qr)n(e)}var Zr=null,Qr=!1;function $r(e){var t=this,n=t.ownerDocument,r=e.type,a=e.composedPath?.()||[],o=a[0]||e.target;Zr=e,Qr||(Qr=!0,setTimeout(()=>{Qr=!1,Zr=null}));var s=0,c=Zr===e&&e[Gr];if(c){var l=a.indexOf(c);if(l!==-1&&(t===document||t===window)){e[Gr]=t;return}var u=a.indexOf(t);if(u===-1)return;l<=u&&(s=l)}if(o=a[s]||e.target,o!==t){i(e,`currentTarget`,{configurable:!0,get(){return o||n}});var d=or,f=lr;cr(null),ur(null);try{for(var p,m=[];o!==null&&o!==t;){try{var h=o[Gr]?.[r];h!=null&&(!o.disabled||e.target===o)&&h.call(o,e)}catch(e){p?m.push(e):p=e}if(e.cancelBubble)break;s++,o=s<a.length?a[s]:null}if(p){for(let e of m)queueMicrotask(()=>{throw e});throw p}}finally{e[Gr]=t,delete e.currentTarget,cr(d),ur(f)}}}var ei=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function ti(e){return ei?.createHTML(e)??e}function ni(e){var t=En(`template`);return t.innerHTML=ti(e.replaceAll(`<!>`,`<!---->`)),t.content}function ri(e,t){var n=lr;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function U(e,t){var n=!!(t&1),r=!!(t&2),i,a=!e.startsWith(`<!>`);return()=>{if(O)return ri(De,null),De;i===void 0&&(i=ni(a?e:`<!>`+e),n||(i=Sn(i)));var t=r||_n?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=Sn(t),s=t.lastChild;ri(o,s)}else ri(t,t);return t}}function ii(e,t,n=`svg`){var r=!e.startsWith(`<!>`),i=!!(t&1),a=`<${n}>${r?e:`<!>`+e}</${n}>`,o;return()=>{if(O)return ri(De,null),De;if(!o){var e=Sn(ni(a));if(i)for(o=document.createDocumentFragment();Sn(e);)o.appendChild(Sn(e));else o=Sn(e)}var t=o.cloneNode(!0);if(i){var n=Sn(t),r=t.lastChild;ri(n,r)}else ri(t,t);return t}}function ai(e,t){return ii(e,t,`svg`)}function oi(e=``){if(!O){var t=xn(e+``);return ri(t,t),t}var n=De;return n.nodeType===3?Dn(n):(n.before(n=xn()),Oe(n)),ri(n,n),n}function si(){if(O)return ri(De,null),De;var e=document.createDocumentFragment(),t=document.createComment(``),n=xn();return e.append(t,n),ri(t,n),e}function W(e,t){if(O){var n=lr;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=De),ke()}else e!==null&&e.before(t)}function ci(){if(O&&De&&De.nodeType===8&&De.textContent?.startsWith(`$`)){let e=De.textContent.substring(1);return ke(),e}return(window.__svelte??={}).uid??=1,`c${window.__svelte.uid++}`}function li(e){let t=0,n=rn(0),r;return()=>{Nn()&&(B(n),Hn(()=>(t===0&&(r=Mr(()=>e(()=>un(n)))),t+=1,()=>{ut(()=>{--t,t===0&&(r?.(),r=void 0,un(n))})})))}}var ui=E|ne;function di(e,t,n,r){new fi(e,t,n,r)}var fi=class{parent;is_pending=!1;transform_error;#e;#t=O?De:null;#n;#r;#i;#a=null;#o=null;#s=null;#c=null;#l=0;#u=0;#d=!1;#f=new Set;#p=new Set;#m=null;#h=li(()=>(this.#m=rn(this.#l),()=>{this.#m=null}));constructor(e,t,n,r){this.#e=e,this.#n=t,this.#r=e=>{var t=lr;t.b=this,t.f|=128,n(e)},this.parent=lr.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=Un(()=>{if(O){let e=Me(this.#t);ke();let t=e===`[!`;if(e.startsWith(`[?`)){let t=JSON.parse(e.slice(2));this.#_(t)}else t?this.#b():this.#g()}else this.#x()},ui),O&&(this.#e=De)}#g(){try{this.#a=Gn(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed,{reset:n,invoke_onerror:r}=this.#v(e);ut(r),t&&(this.#s=Gn(()=>{t(this.#e,()=>e,()=>n)}))}#v(e){var t=!1,n=!1;let r=()=>{this.#y()||(t?Te():(t=!0,n&&qe(),this.#s!==null&&Qn(this.#s,()=>{this.#s=null}),this.#C(()=>{this.#x()})))};return{reset:r,invoke_onerror:()=>{if(!this.#y())try{n=!0,this.#n.onerror?.(e,r),n=!1}catch(e){kn(e,this.#i&&this.#i.parent)}}}}#y(){return(this.#i.f&(T|te))!==0}#b(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=Gn(()=>e(this.#e)),ut(()=>{if(!this.#y()){var e=this.#c=document.createDocumentFragment(),t=xn(),n=!1;e.append(t),this.#a=this.#C(()=>{try{return Gn(()=>this.#r(t))}catch(e){try{this.error(e),n=!0}catch(e){kn(e,this.#i.parent)}return null}}),this.#a===null?(this.#c=null,n&&this.#S(It)):this.#u===0&&(this.#e.before(e),this.#c=null,Qn(this.#o,()=>{this.#o=null}),this.#S(It))}}))}#x(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=Gn(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();nr(this.#a,e);let t=this.#n.pending;this.#o=Gn(()=>t(this.#e))}else this.#S(It)}catch(e){this.error(e)}}#S(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){ht(e,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#C(e){var t=lr,n=or,r=tt;ur(this.#i),cr(this.#i),nt(this.#i.ctx);try{return Kt.ensure(),e()}finally{ur(t),cr(n),nt(r)}}#w(e,t){this.has_pending_snippet()?(this.#u+=e,this.#u===0&&(this.#S(t),this.#o&&Qn(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))):this.parent&&this.parent.#w(e,t)}update_pending_count(e,t){this.#w(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,ut(()=>{this.#d=!1,this.#m&&cn(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),B(this.#m)}error(e){if(e===ve||!this.#n.onerror&&!this.#n.failed)throw e;It?.is_fork?(this.#a&&It.skip_effect(this.#a),this.#o&&It.skip_effect(this.#o),this.#s&&It.skip_effect(this.#s),It.oncommit(()=>{this.#y()||this.#T(e)})):this.#T(e)}#T(e){this.#a&&=(Yn(this.#a),null),this.#o&&=(Yn(this.#o),null),this.#s&&=(Yn(this.#s),null),O&&(Oe(this.#t),Ae(),Oe(je()));let t=this.#n.failed,n=e=>{if(this.#y())return;let{reset:n,invoke_onerror:r}=this.#v(e);r(),t&&!this.#y()&&(this.#s=this.#C(()=>{try{return Gn(()=>{var r=lr;r.b=this,r.f|=128,t(this.#e,()=>e,()=>n)})}catch(e){return kn(e,this.#i.parent),null}}))};ut(()=>{if(!this.#y()){var t;try{t=this.transform_error(e)}catch(e){kn(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(n,e=>kn(e,this.#i&&this.#i.parent)):n(t)}})}};function G(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[me]??=e.nodeValue)&&(e[me]=n,e.nodeValue=`${n}`)}function pi(e,t){return hi(e,t)}var mi=new Map;function hi(e,{target:t,anchor:n,props:i={},events:a,context:o,intro:s=!0,transformError:c}){bn();var l=void 0,u=zn(()=>{var s=n??t.appendChild(xn());di(s,{pending:()=>{}},t=>{A({});var n=tt;if(o&&(n.c=o),a&&(i.$$events=a),O&&ri(t,null),l=e(t,i)||ot(),O&&(lr.nodes.end=De,De===null||De.nodeType!==8||De.data!==`]`))throw Ce(),ve;j()},c);var u=new Set,d=e=>{for(var n=0;n<e.length;n++){var r=e[n];if(!u.has(r)){u.add(r);var i=Hr(r);for(let e of[t,document]){var a=mi.get(e);a===void 0&&(a=new Map,mi.set(e,a));var o=a.get(r);o===void 0?(e.addEventListener(r,$r,{passive:i}),a.set(r,1)):a.set(r,o+1)}}}};return d(r(Kr)),qr.add(d),()=>{for(var e of u)for(let n of[t,document]){var r=mi.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,$r),r.delete(e),r.size===0&&mi.delete(n)):r.set(e,i)}qr.delete(d),s!==n&&s.parentNode?.removeChild(s)}});return gi.set(l,u),l}var gi=new WeakMap,_i=class{anchor;#e=new Map;#t=new Map;#n=new Map;#r=new Set;#i=!0;constructor(e,t=!0){this.anchor=e,this.#i=t}#a=e=>{if(this.#e.has(e)){var t=this.#e.get(e),n=this.#t.get(t);if(n)er(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(er(r.effect),this.#t.set(t,r.effect),this.#n.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(let[t,n]of this.#e){if(this.#e.delete(t),t===e)break;let r=this.#n.get(n);r&&(Yn(r.effect),this.#n.delete(n))}for(let[e,r]of this.#t){if(e===t||this.#r.has(e))continue;let i=()=>{if(Array.from(this.#e.values()).includes(e)){var t=document.createDocumentFragment();nr(r,t),t.append(xn()),this.#n.set(e,{effect:r,fragment:t})}else Yn(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),Qn(r,i,!1)):i()}}};#o=e=>{this.#e.delete(e);let t=Array.from(this.#e.values());for(let[e,n]of this.#n)t.includes(e)||(Yn(n.effect),this.#n.delete(e))};ensure(e,t){var n=It,r=Tn();if(t&&!this.#t.has(e)&&!this.#n.has(e)){if(r){var i=document.createDocumentFragment(),a=xn();i.append(a),this.#n.set(e,{effect:Gn(()=>t(a)),fragment:i})}else this.#t.set(e,Gn(()=>t(this.anchor)))}if(this.#e.set(n,e),r){for(let[t,r]of this.#t)t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of this.#n)t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(this.#a),n.ondiscard(this.#o)}else O&&(this.anchor=De),this.#a(n)}},vi=0,yi=1,bi=2;function xi(e,t,n,r,i){O&&ke();var a=st(),o=ye,s=a?rn(o):an(o,!1,!1),c=a?rn(o):an(o,!1,!1),l=new _i(e);Un(()=>{var a=It,o=t(),u=!1;let d=O&&p(o)===(e.data===`[!`);if(d&&(Oe(je()),Ee(!1)),p(o)){var f=Ct(),m=!1;let e=e=>{if(!u){m=!0,f(!1),It===a&&a.deactivate(),Kt.ensure();try{e()}finally{wt(!1),Bt||qt()}}};o.then(t=>{e(()=>{cn(s,t),l.ensure(yi,r&&(e=>r(e,s)))})},t=>{e(()=>{if(cn(c,t),l.ensure(bi,i&&(e=>i(e,c))),!i)throw c.v})}),O?l.ensure(vi,n):ut(()=>{m||e(()=>{l.ensure(vi,n)})})}else cn(s,o),l.ensure(yi,r&&(e=>r(e,s)));return d&&Ee(!0),()=>{u=!0}})}function K(e,t,n=!1){var r;O&&(r=De,ke());var i=new _i(e),a=n?E:0;function o(e,t){if(O){var n=Me(r);if(e!==parseInt(n.substring(1))){var a=je();Oe(a),i.anchor=a,Ee(!1),i.ensure(e,t),Ee(!0);return}}i.ensure(e,t)}Un(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}var Si=Symbol(`NaN`);function Ci(e,t,n){O&&ke();var r=new _i(e),i=!st();Un(()=>{var e=t();e!==e&&(e=Si),i&&typeof e==`object`&&e&&(e={}),r.ensure(e,n)})}function wi(e,t){O&&Oe(Sn(e)),Hn(()=>{var n=t();for(var r in n){var i=n[r];i==null||i===``?e.style.removeProperty(r):e.style.setProperty(r,i)}})}function Ti(e,t){return t}function Ei(e,t,n){for(var i=[],a=t.length,o,s=t.length,c=0;c<a;c++){let n=t[c];Qn(n,()=>{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;Di(e,r(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else--s},!1)}if(s===0){var l=i.length===0&&n!==null&&e.pending.size===0;if(l){var u=n,d=u.parentNode;wn(d),d.append(u),e.items.clear()}Di(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function Di(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i<t.length;i++){var a=t[i];r?.has(a)?(a.f|=re,nr(a,document.createDocumentFragment())):Yn(t[i],n)}}var Oi;function q(t,n,i,a,o,s=null){var c=t,l=new Map;if(n&4){var u=t;c=O?Oe(Sn(u)):u.appendChild(xn())}O&&ke();var d=null,f=kt(()=>{var t=i();return e(t)?t:t==null?[]:r(t)}),p=new Map,m=!0;function h(e){if(!(_.effect.f&16384)){_.pending.delete(e);var t=B(f);_.fallback=d,Ai(_,t,c,n,a),d!==null&&(t.length===0?d.f&33554432?(d.f^=re,Mi(d,null,c)):er(d):Qn(d,()=>{d=null}))}}function g(e){_.pending.delete(e)}var _={effect:Un(()=>{var e=B(f),t=e.length;let r=!1;O&&Me(c)===`[!`!=(t===0)&&(c=je(),Oe(c),Ee(!1),r=!0);for(var u=new Set,_=It,v=Tn(),y=0;y<t;y+=1){O&&De.nodeType===8&&De.data===`]`&&(c=De,r=!0,Ee(!1));var b=e[y],x=a(b,y),S=m?null:l.get(x);S?(S.v&&cn(S.v,b),S.i&&cn(S.i,y),v&&_.unskip_effect(S.e)):(S=ji(l,m?c:Oi??=xn(),b,x,y,o,n,i),m||(S.e.f|=re),l.set(x,S)),u.add(x)}if(t===0&&s&&!d&&(m?d=Gn(()=>s(c)):(d=Gn(()=>s(Oi??=xn())),d.f|=re)),t>u.size&&Re(``,``,``),O&&t>0&&Oe(je()),!m){if(p.set(_,u),v){for(let[e,t]of l)u.has(e)||_.skip_effect(t.e);_.oncommit(h),_.ondiscard(g)}else h(_)}r&&Ee(!0),B(f)}),flags:n,items:l,pending:p,outrogroups:null,fallback:d};m=!1,O&&(c=De)}function ki(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function Ai(e,t,n,i,a){var o=!!(i&8),s=t.length,c=e.items,l=ki(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o)for(v=0;v<s;v+=1)h=t[v],g=a(h,v),_=c.get(g).e,_.f&33554432||(_.nodes?.a?.measure(),(f??=new Set).add(_));for(v=0;v<s;v+=1){if(h=t[v],g=a(h,v),_=c.get(g).e,e.outrogroups!==null)for(let t of e.outrogroups)t.pending.delete(_),t.done.delete(_);if(_.f&8192&&(er(_),o&&(_.nodes?.a?.unfix(),(f??=new Set).delete(_))),_.f&33554432){if(_.f^=re,_===l)Mi(_,null,n);else{var y=d?d.next:l;_===e.effect.last&&(e.effect.last=_.prev),_.prev&&(_.prev.next=_.next),_.next&&(_.next.prev=_.prev),Ni(e,d,_),Ni(e,_,y),Mi(_,y,n),d=_,p=[],m=[],l=ki(d.next);continue}}if(_!==l){if(u!==void 0&&u.has(_)){if(p.length<m.length){var b=m[0],x;d=b.prev;var S=p[0],C=p[p.length-1];for(x=0;x<p.length;x+=1)Mi(p[x],b,n);for(x=0;x<m.length;x+=1)u.delete(m[x]);Ni(e,S.prev,C.next),Ni(e,d,S),Ni(e,C,b),l=b,d=C,--v,p=[],m=[]}else u.delete(_),Mi(_,l,n),Ni(e,_.prev,_.next),Ni(e,_,d===null?e.effect.first:d.next),Ni(e,d,_),d=_;continue}for(p=[],m=[];l!==null&&l!==_;)(u??=new Set).add(l),m.push(l),l=ki(l.next);if(l===null)continue}_.f&33554432||p.push(_),d=_,l=ki(_.next)}if(e.outrogroups!==null){for(let t of e.outrogroups)t.pending.size===0&&(Di(e,r(t.done)),e.outrogroups?.delete(t));e.outrogroups.size===0&&(e.outrogroups=null)}if(l!==null||u!==void 0){var w=[];if(u!==void 0)for(_ of u)_.f&8192||w.push(_);for(;l!==null;)!(l.f&8192)&&l!==e.fallback&&w.push(l),l=ki(l.next);var T=w.length;if(T>0){var ee=i&4&&s===0?n:null;if(o){for(v=0;v<T;v+=1)w[v].nodes?.a?.measure();for(v=0;v<T;v+=1)w[v].nodes?.a?.fix()}Ei(e,w,ee)}}o&&ut(()=>{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function ji(e,t,n,r,i,a,o,s){var c=o&1?o&16?rn(n):an(n,!1,!1):null,l=o&2?rn(i):null;return{v:c,i:l,e:Gn(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function Mi(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=Cn(r);if(a.before(r),r===i)return;r=o}}function Ni(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function Pi(e,t,...n){var r=new _i(e);Un(()=>{let e=t()??null;r.ensure(e,e&&(t=>e(t,...n)))},E)}function Fi(e,t,n){var r;O&&(r=De,ke());var i=new _i(e);Un(()=>{var e=t()??null;if(O&&Me(r)===`[`!=(e!==null)){var a=je();Oe(a),i.anchor=a,Ee(!1),i.ensure(e,e&&(t=>n(t,e))),Ee(!0)}else i.ensure(e,e&&(t=>n(t,e)))},E)}function Ii(e,t,n,r,i,a){let o=O;O&&ke();var s=null;O&&De.nodeType===1&&(s=De,ke());var c=O?De:e,l=new _i(c,!1);Un(()=>{let e=t()||null;var a=i?i():n||e===`svg`?xe:void 0;if(e===null)l.ensure(null,null);else return l.ensure(e,t=>{if(e){var n=O;if(s=O?s:En(e,a),ri(s,s),r){var i=null;O&&Wr(e)&&s.append(i=document.createComment(``));var o=O?Sn(s):s.appendChild(xn());O&&(o===null?Ee(!1):Oe(o)),r(s,o),i?.remove()}lr.nodes.end=s,n||t.before(s)}O&&Oe(t)}),()=>{}},E),Pn(()=>{}),o&&(Ee(!0),Oe(c))}function Li(e,t,n){Bn(()=>{var r=Mr(()=>t(e,n?.())||{});if(n&&r?.update){var i=!1,a={};Hn(()=>{var e=n();Nr(e),i&&Pe(a,e)&&(a=e,r.update(e))}),i=!0}if(r?.destroy)return()=>r.destroy()})}function Ri(e,t){var n=void 0,r;Wn(()=>{n!==(n=t())&&(r&&=(Yn(r),null),n&&(r=Gn(()=>{Bn(()=>n(e))})))})}function zi(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`){if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=zi(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n)}return r}function Bi(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=zi(e))&&(r&&(r+=` `),r+=t);return r}function Vi(e){return typeof e==`object`?Bi(e):e??``}var Hi=[...`
|
|
2
|
+
\r\f\xA0\v`];function Ui(e,t,n){var r=e==null?``:``+e;if(t&&(r=r?r+` `+t:t),n){for(var i of Object.keys(n))if(n[i])r=r?r+` `+i:i;else if(r.length)for(var a=i.length,o=0;(o=r.indexOf(i,o))>=0;){var s=o+a;(o===0||Hi.includes(r[o-1]))&&(s===r.length||Hi.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function Wi(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function Gi(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function Ki(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\/\*.*?\*\//g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(Gi)),i&&c.push(...Object.keys(i).map(Gi));var l=0,u=-1;let t=e.length;for(var d=0;d<t;d++){var f=e[d];if(s?f===`/`&&e[d-1]===`*`&&(s=!1):a?a===f&&(a=!1):f===`/`&&e[d+1]===`*`?s=!0:f===`"`||f===`'`?a=f:f===`(`?o++:f===`)`&&o--,!s&&a===!1&&o===0){if(f===`:`&&u===-1)u=d;else if(f===`;`||d===t-1){if(u!==-1){var p=Gi(e.substring(l,u).trim());if(!c.includes(p)){f!==`;`&&d++;var m=e.substring(l,d).trim();n+=` `+m+`;`}}l=d+1,u=-1}}}}return r&&(n+=Wi(r)),i&&(n+=Wi(i,!0)),n=n.trim(),n===``?null:n}return e==null?null:String(e)}function J(e,t,n,r,i,a){var o=e[fe];if(O||o!==n||o===void 0){var s=Ui(n,r,a);(!O||s!==e.getAttribute(`class`))&&(s==null?e.removeAttribute(`class`):t?e.className=s:e.setAttribute(`class`,s)),e[fe]=n}else if(a&&i!==a)for(var c in a){var l=!!a[c];(i==null||l!==!!i[c])&&e.classList.toggle(c,l)}return a}function qi(e,t={},n,r){for(var i in n){var a=n[i];t[i]!==a&&(n[i]==null?e.style.removeProperty(i):e.style.setProperty(i,a,r))}}function Ji(e,t,n,r){var i=e[pe];if(O||i!==t){var a=Ki(t,r);(!O||a!==e.getAttribute(`style`))&&(a==null?e.removeAttribute(`style`):e.style.cssText=a),e[pe]=t}else r&&(Array.isArray(r)?(qi(e,n?.[0],r[0]),qi(e,n?.[1],r[1],`important`)):qi(e,n,r));return r}function Yi(e,t){t?e.hasAttribute(`selected`)||e.setAttribute(`selected`,``):e.removeAttribute(`selected`)}function Xi(e,t){var n=!(`__defaultValue`in e);(n||e.__defaultValue!==t)&&(e.__defaultValue=t,Zi(e,!n||`__value`in e))}function Zi(t,n){var r=t.__defaultValue,i=t.multiple,a=i?r??[]:null;if(!i||e(a)){var o=t.selectedIndex,s=n&&i?new Set(t.selectedOptions):null;for(var c of t.options){var l=ta(c);Yi(c,i?a.includes(l):mn(l,r))}if(n){if(s!==null)for(c of t.options){var u=s.has(c);c.selected!==u&&(c.selected=u)}else t.selectedIndex!==o&&(t.selectedIndex=o)}}}function Qi(t,n,r=!1){if(t.multiple){if(n==null)return;if(!e(n))return we();for(var i of t.options)i.selected=n.includes(ta(i))}else{for(i of t.options)if(mn(ta(i),n)){i.selected=!0;return}(!r||n!==void 0)&&(t.selectedIndex=-1)}}function $i(e){var t=new MutationObserver(t=>{t.every(na)||(`__defaultValue`in e&&Zi(e,!1),`__value`in e&&Qi(e,e.__value))});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),Pn(()=>{t.disconnect()})}function ea(e,t,n=t){var r=new WeakSet,i=!0;xt(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),ta);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&ta(o)}n(a),e.__value=a,It!==null&&r.add(It)}),Bn(()=>{var a=t();if(e===document.activeElement){var o=It;if(r.has(o))return}if(Qi(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=ta(s),n(a))}e.__value=a,i=!1})}function ta(e){return`__value`in e?e.__value:e.value}function na(e){if(e.target.closest(`selectedcontent`)!==null)return!0;if(e.type===`childList`){var t=[...e.addedNodes,...e.removedNodes];return t.length>0&&t.every(e=>e.nodeName===`SELECTEDCONTENT`)}return!1}var ra=Symbol(`class`),ia=Symbol(`style`),aa=Symbol(`is custom element`),oa=Symbol(`is html`),sa=_e?`link`:`LINK`,ca=_e?`input`:`INPUT`,la=_e?`option`:`OPTION`,ua=_e?`select`:`SELECT`,da=_e?`progress`:`PROGRESS`;function fa(e){if(O){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;Y(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;Y(e,`checked`,null),e.checked=r}}};e[he]=n,ut(n),yt()}}function pa(e,t){var n=_a(e);n.value!==(n.value=t??void 0)&&(e.value!==t||t===0&&e.nodeName===da)&&(e.value=t??``)}function ma(e,t){var n=_a(e);n.checked!==(n.checked=t??void 0)&&(e.checked=t)}function Y(e,t,n,r){var i=_a(e);O&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===sa)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[ue]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&ya(e).has(t)?e[t]=n:e.setAttribute(t,n))}function ha(e,t,n,r,i=!1,a=!1){O&&i&&e.nodeName===ca&&(`defaultValue`in n||`defaultChecked`in n||fa(e));var o=_a(e),s=o[aa],c=!o[oa];let l=O&&s;l&&Ee(!1);var u=t||{},d=e.nodeName===la,f=e.nodeName===ua;try{for(var p in t)!(p in n)&&p[0]+p[1]!==`$$`&&(n[p]=null);n.class?n.class=Vi(n.class):(r||n[ra])&&(n.class=null),n[ia]&&(n.style??=null);var m=ya(e);if(e.nodeName===ca&&`type`in n&&(`value`in n||`__value`in n)){var h=n.type;(h!==u.type||h===void 0&&e.hasAttribute(`type`))&&(u.type=h,Y(e,`type`,h,a))}for(let i in n){let l=n[i];if(d&&i===`value`&&l==null)e.value=e.__value=``,u[i]=l;else if(i===`class`)J(e,e.namespaceURI===`http://www.w3.org/1999/xhtml`,l,r,t?.[ra],n[ra]),u[i]=l,u[ra]=n[ra];else if(i===`style`)Ji(e,l,t?.[ia],n[ia]),u[i]=l,u[ia]=n[ia];else{var g=u[i];if(l!==g||l===void 0&&e.hasAttribute(i)){u[i]=l;var _=i[0]+i[1];if(_!==`$$`){if(_===`on`){let t={},n=`$$`+i,r=i.slice(2);var v=Lr(r);if(Fr(r)&&(r=r.slice(0,-7),t.capture=!0),!v&&g){if(l!=null)continue;e.removeEventListener(r,u[n],t),u[n]=null}if(v)H(r,e,l),Xr([r]);else if(l!=null){function a(e){u[i].call(this,e)}u[n]=Jr(r,e,a,t)}}else if(i===`style`)Y(e,i,l);else if(i===`autofocus`)gt(e,!!l);else if(!s&&(i===`__value`||i===`value`&&l!=null))e.__value=l,(g==null||e.value!==l||l===0&&e.nodeName===da)&&(e.value=l);else if(i===`selected`&&d)Yi(e,l);else{var y=i;c||(y=Br(y));var b=y===`defaultValue`||y===`defaultChecked`;if(f&&y===`defaultValue`)continue;if(l==null&&!s&&!b){if(o[i]=null,y===`value`||y===`checked`){let n=e,r=t===void 0;if(y===`value`){let e=n.defaultValue;n.removeAttribute(y),n.defaultValue=e,n.value=n.__value=r?e:null}else{let e=n.defaultChecked;n.removeAttribute(y),n.defaultChecked=e,n.checked=r?e:!1}}else e.removeAttribute(i)}else b||(s||typeof l!=`string`)&&m.has(y)?(e[y]=l,y in o&&(o[y]=ye)):typeof l!=`function`&&Y(e,y,l,a)}}}}}}finally{l&&Ee(!0)}return u}function ga(e,t,n=[],r=[],i=[],a,o=!1,s=!1){St(i,n,r,n=>{var r=void 0,i={},c=e.nodeName===ua,l=!1;if(Wn(()=>{var u=t(...n.map(B)),d=ha(e,r,u,a,o,s);if(l&&c){var f=e;`defaultValue`in u&&Xi(f,u.defaultValue),`value`in u&&Qi(f,u.value)}for(let e of Object.getOwnPropertySymbols(i))u[e]||Yn(i[e]);for(let t of Object.getOwnPropertySymbols(u)){var p=u[t];t.description===`@attach`&&(!r||p!==r[t])&&(i[t]&&Yn(i[t]),i[t]=Gn(()=>Ri(e,()=>p))),d[t]=p}r=d}),c){var u=e;Bn(()=>{var e=r;`defaultValue`in e&&Xi(u,e.defaultValue),Qi(u,e.value,!0),$i(u)})}l=!0})}function _a(e){return e[de]??={[aa]:e.nodeName.includes(`-`),[oa]:e.namespaceURI===be}}var va=new Map;function ya(e){var t=e.getAttribute(`is`)||e.nodeName,n=va.get(t);if(n)return n;va.set(t,n=new Set);for(var r,i=e,a=Element.prototype;a!==i;){for(var s in r=o(i),r)r[s].set&&s!==`innerHTML`&&s!==`textContent`&&s!==`innerText`&&n.add(s);i=l(i)}return n}function ba(e,t,n=t){var r=new WeakSet;xt(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=Ta(e)?Ea(a):a,n(a),It!==null&&r.add(It),await kr(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(O&&e.defaultValue!==e.value||Mr(t)==null&&e.value)&&(n(Ta(e)?Ea(e.value):e.value),It!==null&&r.add(It)),Hn(()=>{var n=t();if(e===document.activeElement){var i=It;if(r.has(i))return}Ta(e)&&n===Ea(e.value)||(e.type!==`date`||n||e.value)&&n!==e.value&&(e.value=n??``)})}var xa=new Set;function Sa(e,t,n,r,i=r){var a=n.getAttribute(`type`)===`checkbox`,o=e;let s=!1;if(t!==null)for(var c of t)o=o[c]??=[];o.push(n),xt(n,`change`,()=>{var e=n.__value;a&&(e=wa(o,e,n.checked)),i(e)},()=>i(a?[]:null)),Hn(()=>{var e=r();O&&n.defaultChecked!==n.checked?s=!0:a?(e||=[],n.checked=e.includes(n.__value)):n.checked=mn(n.__value,e)}),Pn(()=>{var e=o.indexOf(n);e!==-1&&o.splice(e,1)}),xa.has(o)||(xa.add(o),ut(()=>{o.sort((e,t)=>e.compareDocumentPosition(t)===4?-1:1),xa.delete(o)})),ut(()=>{if(s){var e=a?wa(o,e,n.checked):o.find(e=>e.checked)?.__value;i(e)}})}function Ca(e,t,n=t){xt(e,`change`,t=>{n(t?e.defaultChecked:e.checked)}),(O&&e.defaultChecked!==e.checked||Mr(t)==null)&&n(e.checked),Hn(()=>{e.checked=!!t()})}function wa(e,t,n){for(var r=new Set,i=0;i<e.length;i+=1)e[i].checked&&r.add(e[i].__value);return n||r.delete(t),Array.from(r)}function Ta(e){var t=e.type;return t===`number`||t===`range`}function Ea(e){return e===``?null:+e}var Da=new class e{#e=new WeakMap;#t;#n;static entries=new WeakMap;constructor(e){this.#n=e}observe(e,t){var n=this.#e.get(e)||new Set;return n.add(t),this.#e.set(e,n),this.#r().observe(e,this.#n),()=>{var n=this.#e.get(e);n.delete(t),n.size===0&&(this.#e.delete(e),this.#t.unobserve(e))}}#r(){return this.#t??=new ResizeObserver(t=>{for(var n of t){e.entries.set(n.target,n);for(var r of this.#e.get(n.target)||[])r(n)}})}}({box:`border-box`});function Oa(e,t,n){var r=Da.observe(e,()=>n(e[t]));Bn(()=>(Mr(()=>n(e[t])),r))}function ka(e,t){return e===t||e?.[se]===t}function Aa(e=ot(),t,n,r){var i=tt.r,a=lr;return Bn(()=>{var o,s;return Hn(()=>{o=s,s=r?.()||[],Mr(()=>{ka(n(...s),e)||(t(e,...s),o&&ka(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&ka(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}function ja(e,t,n,r,i){var a=()=>{r(n[e])};n.addEventListener(t,a),i?Hn(()=>{n[e]=i()}):a(),(n===document.body||n===window||n===document)&&Pn(()=>{n.removeEventListener(t,a)})}function Ma(e=!1){let t=tt,n=t.l.u;if(!n)return;let r=()=>Nr(t.s);if(e){let e=0,n={},i=Et(()=>{let r=!1,i=t.s;for(let e in i)i[e]!==n[e]&&(n[e]=i[e],r=!0);return r&&e++,e});r=()=>B(i)}n.b.length&&Ln(()=>{Na(t,r),h(n.b)}),Fn(()=>{let e=Mr(()=>n.m.map(m));return()=>{for(let t of e)typeof t==`function`&&t()}}),n.a.length&&Fn(()=>{Na(t,r),h(n.a)})}function Na(e,t){if(e.l.s)for(let t of e.l.s)B(t);t()}var Pa=!1;function Fa(e){var t=Pa;try{return Pa=!1,[e(),Pa]}finally{Pa=t}}var Ia={get(e,t){if(!e.exclude.has(t))return e.props[t]},set(e,t){return!1},getOwnPropertyDescriptor(e,t){if(!e.exclude.has(t)&&t in e.props)return{enumerable:!0,configurable:!0,value:e.props[t]}},has(e,t){return!e.exclude.has(t)&&t in e.props},ownKeys(e){return Reflect.ownKeys(e.props).filter(t=>!e.exclude.has(t))}};function La(e,t,n){return new Proxy({props:e,exclude:t},Ia)}var Ra={get(e,t){let n=e.props.length;for(;n--;){let r=e.props[n];if(d(r)&&(r=r()),typeof r==`object`&&r&&t in r)return r[t]}},set(e,t,n){let r=e.props.length;for(;r--;){let i=e.props[r];d(i)&&(i=i());let o=a(i,t);if(o&&o.set)return o.set(n),!0}return!1},getOwnPropertyDescriptor(e,t){let n=e.props.length;for(;n--;){let r=e.props[n];if(d(r)&&(r=r()),typeof r==`object`&&r&&t in r){let e=a(r,t);return e&&!e.configurable&&(e.configurable=!0),e}}},has(e,t){if(t===se||t===le)return!1;for(let n of e.props)if(d(n)&&(n=n()),n!=null&&t in n)return!0;return!1},ownKeys(e){let t=[];for(let n of e.props)if(d(n)&&(n=n()),n){for(let e in n)t.includes(e)||t.push(e);for(let e of Object.getOwnPropertySymbols(n))t.includes(e)||t.push(e)}return t}};function za(...e){return new Proxy({props:e},Ra)}function X(e,t,n,r){var i=!Je||!!(n&2),o=!!(n&8),s=!!(n&16),c=r,l=!0,u=void 0,d=()=>s&&i?(u??=Et(r),B(u)):(l&&(l=!1,c=s?Mr(r):r),c);let f;if(o){var p=se in e||le in e;f=a(e,t)?.set??(p&&t in e?n=>e[t]=n:void 0)}var m,h=!1;o?[m,h]=Fa(()=>e[t]):m=e[t],m===void 0&&r!==void 0&&(m=d(),f&&(i&&Ue(t),f(m)));var g=i?()=>{var n=e[t];return n===void 0?d():(l=!0,n)}:()=>{var n=e[t];return n!==void 0&&(c=void 0),n===void 0?c:n};if(i&&!(n&4))return g;if(f){var _=e.$$legacy;return(function(e,t){return arguments.length>0?((!i||!t||_||h)&&f(t?g():e),e):g()})}var v=!1,y=(n&1?Et:kt)(()=>(v=!1,g()));o&&B(y);var b=lr;return(function(e,t){if(arguments.length>0){let n=t?B(y):i&&o?fn(e):e;return P(y,n),v=!0,c!==void 0&&(c=n),e}return ir&&v||b.f&16384?y.v:B(y)})}function Ba(e){tt===null&&Ie(`onMount`),Je&&tt.l!==null?Ha(tt).m.push(e):Fn(()=>{let t=Mr(e);if(typeof t==`function`)return t})}function Va(e){tt===null&&Ie(`onDestroy`),Ba(()=>()=>Mr(e))}function Ha(e){var t=e.l;return t.u??={a:[],b:[],m:[]}}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);function Ua(e,t){let n=X(t,`size`,3,16),r=X(t,`filled`,3,!1);var i=si(),a=I(i);{let e=M(()=>r()?`currentColor`:`none`),i=M(()=>t.label?`img`:void 0),o=M(()=>t.label?void 0:`true`);Fi(a,()=>t.of,(r,a)=>{a(r,{get size(){return n()},strokeWidth:1.5,absoluteStrokeWidth:!0,get fill(){return B(e)},get role(){return B(i)},get"aria-label"(){return t.label},get"aria-hidden"(){return B(o)}})})}W(e,i)}var Wa={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`},Ga=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim();function Ka(e){return e!=null}function qa(e,t={}){let n=t.attributeNames??{},r=e=>n[e]??e,i=e.size??e.width??Wa.width,a=e.size??e.height??Wa.height,o=e.aliases?.filter(e=>typeof e==`string`&&e.trim()!==``).map(e=>`lucide-${e}`)??[],s=[...e.name?[`lucide-${e.name}`]:[],...o],c=t.className?.split(` `).filter(Boolean)??[],l=t.includeDefaultClasses===!1?Ga(...c):Ga(`lucide`,...s,...c),u=t.absoluteStrokeWidth?Number(t.strokeWidth??Wa[`stroke-width`])*Number(e.size??e.width??Wa.width)/Number(t.size??t.width??Wa.width):t.strokeWidth??Wa[`stroke-width`];return[`svg`,{...Object.entries(Wa).reduce((e,[t,n])=>(e[r(t)]=n,e),{}),...`color`in t&&t.color&&{[r(`stroke`)]:t.color},...`size`in t&&Ka(t.size)&&{[r(`width`)]:t.size,[r(`height`)]:t.size},...`width`in t&&Ka(t.width)&&{[r(`width`)]:t.width},...`height`in t&&Ka(t.height)&&{[r(`height`)]:t.height},[r(`stroke-width`)]:u,...l&&{[r(`class`)]:l},[r(`viewBox`)]:`0 0 ${i} ${a}`,...t.hasA11yProp===!1?{[r(`aria-hidden`)]:`true`}:{},...`attributes`in t&&t.attributes},e.node.map(e=>{let[n,i,a]=e,o=t.nonScalingStroke?{[r(`vector-effect`)]:`non-scaling-stroke`,...i}:i;return a?[n,o,a]:[n,o]})]}var Ja=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},Ya=Symbol(`lucide-context`),Xa=()=>rt(Ya),Za=new Set([`$$slots`,`$$events`,`$$legacy`,`color`,`size`,`width`,`height`,`strokeWidth`,`absoluteStrokeWidth`,`nonScalingStroke`,`iconNode`,`icon`,`class`,`children`]),Qa=ai(`<svg><!><!></svg>`);function $a(e,t){A(t,!0);let n=Xa()??{},r=X(t,`color`,19,()=>n.color??`currentColor`),i=X(t,`size`,19,()=>n.size??24),a=X(t,`width`,19,i),o=X(t,`height`,19,i),s=X(t,`strokeWidth`,19,()=>n.strokeWidth??2),c=X(t,`absoluteStrokeWidth`,19,()=>n.absoluteStrokeWidth??!1),l=X(t,`nonScalingStroke`,19,()=>n.nonScalingStroke??!1),u=X(t,`iconNode`,19,()=>[]),d=X(t,`icon`,19,()=>({node:u(),aliases:[],size:24})),p=La(t,Za),m=M(()=>!!t.children||Ja(p)),h=M(()=>qa(d(),{color:r(),width:a(),height:o(),strokeWidth:s(),absoluteStrokeWidth:c(),nonScalingStroke:l(),className:Ga(`lucide-icon`,n.class),hasA11yProp:B(m),attributes:p})),g=M(()=>v(B(h),3)),y=M(()=>B(g)[1]),b=M(()=>_(B(g)[2],()=>[],!0)),x=M(()=>({...B(y),class:[...B(y).class.split(` `),t.class]}));var S=Qa();ga(S,()=>({...B(x)}));var C=F(S);q(C,17,()=>B(b),Ti,(e,t)=>{var n=M(()=>v(B(t),2));let r=()=>B(n)[0],i=()=>B(n)[1];var a=si();Ii(I(a),r,!0,(e,t)=>{ga(e,()=>({...i()}))}),W(e,a)}),Pi(R(C),()=>t.children??f),k(S),W(e,S),j()}var eo=new Set([`$$slots`,`$$events`,`$$legacy`]);function to(e,t){let n=La(t,eo),r={name:`x`,size:24,node:[[`path`,{d:`M18 6 6 18`}],[`path`,{d:`m6 6 12 12`}]]};$a(e,za(()=>n,{get icon(){return r}}))}async function no(e){try{let t=await fetch(`data/${e}.json`);return t.ok?await t.json():null}catch{return null}}async function ro(){let[e,t,n]=await Promise.all([no(`registry`),no(`local`),no(`state`)]);return e?{stack:e,clones:t?.apps??{},roots:t?.roots??[],saved:n}:null}async function io(e,t={},n=!1){let r=location.pathname.split(`/`)[2]??``;try{return await fetch(`/${e}?token=${encodeURIComponent(r)}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(t),keepalive:n})}catch{return null}}var ao=async(e,t=!1)=>!!(await io(`state`,e,t))?.ok;async function oo(e,t={}){let n=await io(e,t);return n?await n.json().catch(()=>({error:`The canvas server answered ${String(n.status)}.`})):{error:`Could not reach the canvas server.`}}var so=()=>no(`repos`),co=e=>typeof e==`object`&&!!e&&!Array.isArray(e),lo=/\{\{\s*([a-z0-9-]+)\.([A-Za-z]\w*)\s*\}\}/g,uo=/^\{\{\s*([a-z0-9-]+)\.([A-Za-z]\w*)\s*\}\}$/,fo=e=>typeof e==`string`&&!e.includes(`{{`)||typeof e==`number`||typeof e==`boolean`;function po(e){let t=(r,i,a)=>{let o=`${r}.${i}`,s=Object.hasOwn(e,r)?e[r]:void 0;if(!co(s)||a.includes(o))return;if(Object.hasOwn(s,i)){let e=n(s[i],[...a,o]);return fo(e)?e:void 0}if(i!==`port`&&i!==`host`)return;let c=t(r,`url`,[...a,o]);if(typeof c!=`string`||!URL.canParse(c))return;let{port:l,hostname:u}=new URL(c);return i===`host`?u:Number(l)||void 0},n=(e,r)=>{if(typeof e==`string`){let n=uo.exec(e);return n?t(n[1]??``,n[2]??``,r)??e:e.replace(lo,(e,n,i)=>{let a=t(n,i,r);return a===void 0?e:String(a)})}return Array.isArray(e)?e.map(e=>n(e,r)):co(e)?Object.fromEntries(Object.entries(e).map(([e,t])=>[e,n(t,r)])):e};return n}function mo(e){return!co(e)||!co(e.apps)?e:po(e.apps)(e,[])}var ho=80,go=90,_o=(e,t)=>e[t];function vo(e,t){let n=e.map(e=>[...e]),r=[],i={};n.forEach((e,t)=>{for(let n of e)i[n]=t});for(let e of t){let t=_o(i,e.from)<=_o(i,e.to),a=t?e.to:e.from,o=t?e.from:e.to;if(i[o]!==i[a]){for(let t=_o(i,o)+1;t<_o(i,a);t++){let a=`~${e.from}>${e.to}:${String(t)}`;i[a]=t,n[t]?.push(a),r.push([o,a]),o=a}r.push([o,a])}}return{rows:n,links:r,row:i}}var yo=e=>{let t={};for(let n of e)n.forEach((e,n)=>t[e]=n);return t};function bo(e,t,n){let r=yo(e),i=0;return t.forEach(([e,a],o)=>{for(let[s,c]of t.slice(o+1))n[e]===n[s]&&(_o(r,e)-_o(r,s))*(_o(r,a)-_o(r,c))<0&&i++}),i}function xo(e,t){let{rows:n,links:r,row:i}=vo(e,t),a={};for(let[e,t]of r)(a[e]??=[]).push(t),(a[t]??=[]).push(e);let o=n.map(e=>[...e]),s=bo(n,r,i);for(let e=0;e<12&&s;e++){let t=e%2==0,c=t?n.map((e,t)=>t).slice(1):n.map((e,t)=>n.length-2-t).filter(e=>e>=0);for(let e of c){let r=yo(n),o=n=>{let o=(a[n]??[]).filter(n=>i[n]===e+(t?-1:1));return o.length?o.reduce((e,t)=>e+_o(r,t),0)/o.length:_o(r,n)};n[e]?.sort((e,t)=>o(e)-o(t))}let l=bo(n,r,i);l<s&&(s=l,o=n.map(e=>[...e]))}return e.forEach((e,t)=>{e.splice(0,e.length,...(o[t]??[]).filter(e=>!e.startsWith(`~`)))}),s}function So(e,t){let n=Object.fromEntries(e.map(e=>[e,[]]));for(let{from:e,to:r}of t)e in n&&r in n&&e!==r&&n[e]?.push(r);let r=e=>{let t=[e];for(let e=0;e<t.length;e++)for(let r of n[t[e]??``]??[])t.includes(r)||t.push(r);return t.length},i=new Set(Object.values(n).flat()),a=[...e.filter(e=>!i.has(e)).sort((e,t)=>r(t)-r(e)),...[...e].sort((e,t)=>r(t)-r(e))],o=Object.fromEntries(e.map(e=>[e,[]])),s=[],c={},l=e=>{c[e]=`open`;for(let t of n[e]??[])c[t]!==`open`&&(o[e]?.push(t),c[t]||l(t));c[e]=`done`,s.push(e)};for(let e of a)c[e]||l(e);let u=[...s].reverse(),d=Object.fromEntries(e.map(e=>[e,0]));for(let e of u)for(let t of o[e]??[])d[t]=Math.max(_o(d,t),_o(d,e)+1);for(let e of s){let t=(o[e]??[]).map(e=>_o(d,e));t.length&&(d[e]=Math.max(_o(d,e),Math.min(...t)-1))}return d}function Co(e,t,n,r,i,a){let o={};e.forEach((e,t)=>{for(let n of e)o[n]=t});let s={};for(let{from:e,to:n}of t)e in o&&n in o&&o[e]!==o[n]&&((s[e]??=[]).push(n),(s[n]??=[]).push(e));let c=Object.fromEntries(Object.keys(o).map(e=>[e,_o(n,e)+a(e)]));for(let t=0,n=1/0;t<500&&n>.01;t++){n=0;for(let o of t%2?[...e].reverse():e){let e=[];o.forEach((t,n)=>{let s=o[n-1];e.push(s===void 0?0:(e[n-1]??0)+r(s)-a(s)+i+a(t))});let t=[];o.forEach((n,r)=>{let i=s[n]??[],a=i.length||.001,o=i.length?i.reduce((e,t)=>e+_o(c,t),0)/i.length:_o(c,n);for(t.push({sum:(o-(e[r]??0))*a,weight:a,count:1});;){let e=t.at(-1),n=t.at(-2);if(!e||!n||n.sum/n.weight<=e.sum/e.weight)break;t.pop(),n.sum+=e.sum,n.weight+=e.weight,n.count+=e.count}});let l=0;for(let r of t)for(let t=0;t<r.count;t++,l++){let t=o[l]??``,i=r.sum/r.weight+(e[l]??0);n=Math.max(n,Math.abs(i-_o(c,t))),c[t]=i}}}for(let e of Object.keys(c))n[e]=_o(c,e)-a(e)}function wo(e,t,n,r=`down`,i=!1,{pad:a,tight:o=!1,anchor:s}={pad:0}){let c=So(e,t),l=[];for(let t of e)(l[_o(c,t)]??=[]).push(t);let u=l.filter(Boolean);if(xo(u,t.filter(({from:e,to:t})=>e in c&&t in c&&e!==t)),i)for(let e of u)e.reverse();let d=Object.fromEntries(e.map(e=>[e,n(e)])),f=o?.6:1,p=r===`down`,m=p?`w`:`h`,h=p?`h`:`w`,g=p?ho*f:go*.6*f,_=p?go*f:ho*1.6*f,v=e=>e.reduce((e,t)=>e+_o(d,t)[m],0)+g*(e.length-1),y=Math.max(...u.map(v)),b={},x={},S=a+40;for(let e of u){let t=a+40+(y-v(e))/2;for(let n of e)b[n]=t,x[n]=S,t+=_o(d,n)[m]+g;S+=Math.max(...e.map(e=>_o(d,e)[h]))+_}Co(u,t,b,e=>_o(d,e)[m],g,e=>s?.(e)??_o(d,e)[m]/2);let C=Math.min(...Object.values(b)),w={};for(let t of e){let e=Math.round(_o(b,t)-C+a+40);w[t]=p?{x:e,y:_o(x,t)}:{x:_o(x,t),y:e}}return w}function To(e,t,n,r,i={}){let a=t=>{let n=_o(e,t),{w:i,h:a}=r(t);return{...n,w:i,h:a,cx:n.x+i/2,cy:n.y+a/2}},o=a(t.from),s=a(t.to),c=Math.max(s.x-(o.x+o.w),o.x-(s.x+s.w)),l=Math.max(s.y-(o.y+o.h),o.y-(s.y+s.h)),u=s.cy>o.cy?{fromSide:`bottom`,toSide:`top`}:{fromSide:`top`,toSide:`bottom`},d=s.cx>=o.cx?{fromSide:`right`,toSide:`left`}:{fromSide:`left`,toSide:`right`},[f,p]=l>c||l===c&&n===`down`?[u,d]:[d,u],m=e=>i[t.from]!==e.fromSide&&i[t.to]!==e.toSide;return m(f)||!m(p)?f:p}var Eo={top:[0,-1],right:[1,0],bottom:[0,1],left:[-1,0]},Do={top:`bottom`,bottom:`top`,left:`right`,right:`left`},Oo=(e,t,n)=>Math.min(Math.max(e,t),Math.max(t,n)),ko=(e,t,n)=>t?{x:e.x+Eo[t][0]*n,y:e.y+Eo[t][1]*n}:e,Ao=({x:e,y:t})=>`${String(e)},${String(t)}`,jo=({x:e,y:t,w:n,h:r},i)=>({top:{x:e+n/2,y:t},right:{x:e+n,y:t+r/2},bottom:{x:e+n/2,y:t+r},left:{x:e,y:t+r/2}})[i];function Mo(e,t,n,r){let i=Oo(Math.hypot(n.x-e.x,n.y-e.y)*.4,30,140);return[e,ko(e,t,i),ko(n,r,i),n]}function No(e,t,n,r){let[,i,a]=Mo(e,t,n,r);return`M${Ao(e)} C${Ao(i)} ${Ao(a)} ${Ao(n)}`}function Po(e,t,n,r,i){let a=ko(e,t,40),o=[a,...i,ko(n,r,40)],s=`M${Ao(e)} L${Ao(a)}`;for(let t=0;t<o.length-1;t++){let r=o[t-1]??e,i=o[t]??e,a=o[t+1]??n,c=o[t+2]??n,l={x:i.x+(a.x-r.x)/6,y:i.y+(a.y-r.y)/6},u={x:a.x-(c.x-i.x)/6,y:a.y-(c.y-i.y)/6};s+=` C${Ao(l)} ${Ao(u)} ${Ao(a)}`}return`${s} L${Ao(n)}`}var Fo=e=>e===`left`||e===`right`,Io=e=>[[`from`,e.from,e.fromSide,e.to],[`to`,e.to,e.toSide,e.from]];function Lo(e){let t=new Map;return e.forEach((e,n)=>{for(let[r,i,a,o]of Io(e)){let s=`${i}|${a}`,c=t.get(s)??[];c.push({cable:e,index:n,end:r,side:a,id:i,other:o}),t.set(s,c)}}),t}var Ro=(e,t)=>t>1?Math.min(26,(e-48)/(t-1)):0,zo=e=>e.every(t=>t.other===e[0]?.other)&&e.every(({cable:e,end:t,side:n})=>(t===`from`?e.toSide:e.fromSide)===Do[n])?e[0]?.other:void 0;function Bo(e,t){for(let n of Lo(e).values()){let[{id:e,side:r}={id:``,side:`top`}]=n,i=Fo(r)?`y`:`x`,a=e=>i===`x`?e.w:e.h,o=e=>e[i]+a(e)/2,s=t(e),c=zo(n),l;if(c){let e=Math.max(s[i],t(c)[i]),r=Math.min(s[i]+a(s),t(c)[i]+a(t(c))),u=Math.min(Ro(a(s),n.length),Ro(a(t(c)),n.length));r-e>=u*(n.length-1)+32&&(l=Math.round((e+r)/2-o(s)))}let u=jo(s,r),[d,f]=Eo[r],p=({cable:e,end:n,other:r})=>{let a=jo(t(r),n===`from`?e.toSide:e.fromSide),[o,s]=[a.x-u.x,a.y-u.y];return Math.atan2(i===`x`?o:s,o*d+s*f)};n.sort((e,n)=>p(e)-p(n)||o(t(e.other))-o(t(n.other))).forEach(({cable:e,end:t},n)=>{e[`${t}Slot`]=n,l?e[`${t}Shift`]=l:t===`from`?delete e.fromShift:delete e.toShift})}}function Vo(e,{cardOf:t,coveredBelow:n}){let r={},i=[];for(let a of Lo(e).values()){let[{id:e,side:o}={id:``,side:`top`}]=a,s=t(e);if(!s)continue;let c=Fo(o)?`y`:`x`,l=e=>c===`x`?e.w:e.h,u=l(s),d=a.length;a.sort((e,t)=>(e.cable[`${e.end}Slot`]??1/0)-(t.cable[`${t.end}Slot`]??1/0)||e.index-t.index);let{covered:f,atRight:p}=o===`bottom`&&n?.(e)||{covered:0,atRight:!1},m=f&&u-f>=56?u-f:0,h=m?p?m/2-u/2:f+m/2-u/2:0,g=d>1?Math.min(26,((m||u)-(m?20:48))/(d-1)):0,_=h;if(!h){let e=t(zo(a)??``);e&&(g=Math.min(g,Ro(l(e),d)));let n=a.map(({cable:e,end:t})=>e[`${t}Shift`]).find(e=>e!==void 0)??0,r=Math.max(0,u/2-16-(d-1)/2*g);_=Oo(n,-r,r)}a.forEach(({index:e,end:t},n)=>{r[`${String(e)}|${t}`]=_+(n-(d-1)/2)*g}),d===1&&!_&&i.push({id:e,side:o})}return{offset:r,onPort:i}}var Ho=[[`cli`,`Koppler`],[`ide`,`Your IDE`]],Uo={tool:`docker`,fix:`Install a Docker runtime (Docker Desktop or Colima)`},Wo={tool:`npm`,fix:`Comes with Node`},Go={dotnet:{label:`.NET`,runIn:Ho,serves:!0,needs:[{tool:`dotnet`,fix:`Install the .NET SDK the repo targets`}]},flutter:{label:`Flutter`,runIn:Ho,serves:!1,platforms:[[`ios`,`iOS simulator`],[`android`,`Android emulator`],[`phone`,`Phone`]],needs:[{tool:`fvm`,fix:`brew tap leoafarias/fvm && brew install fvm`}]},node:{label:`Node`,runIn:Ho,serves:!0,needs:[Wo]},web:{label:`Web`,runIn:Ho,serves:!1,browser:!0,needs:[Wo]},lambda:{label:`Lambda`,runIn:Ho,serves:!0,needs:[Uo,{tool:`aws`,fix:`brew install awscli`}]},sam:{label:`AWS SAM`,runIn:Ho,serves:!0,needs:[Uo,{tool:`sam`,fix:`brew install aws-sam-cli (or: uv tool install aws-sam-cli)`}]},other:{label:`Other`,runIn:Ho,serves:!0}},Ko=(e,t)=>e.read(t)??``,qo=(e,t)=>t.map(t=>Ko(e,t)).join(`
|
|
3
|
+
`).toLowerCase(),Jo=(e,t)=>t?` ${e}${String(t)}`:``,Yo=e=>qo(e,[`pyproject.toml`,`requirements.txt`,`Pipfile`]);function Xo(e){return e.has(`uv.lock`)?`uv run `:e.has(`poetry.lock`)?`poetry run `:e.has(`Pipfile`)?`pipenv run `:e.has(`.venv/bin/python`)?`.venv/bin/`:``}var Zo=e=>/spring-boot|springframework\.boot/.test(qo(e,[`pom.xml`,`build.gradle`,`build.gradle.kts`])),Qo=e=>[`compose.yaml`,`compose.yml`,`docker-compose.yml`,`docker-compose.yaml`].find(t=>e.has(t)),$o={reactnative:{label:`React Native`,color:[`#087EA4`,`#58C4DC`],serves:!1,platforms:[[`ios`,`iOS simulator`],[`android`,`Android emulator`]],detect:e=>/"(expo|react-native)"\s*:/.test(Ko(e,`package.json`)),start:(e,{platform:t=`ios`})=>/"expo"\s*:/.test(Ko(e,`package.json`))?`npx expo start --${t}`:`npx react-native run-${t}`},go:{label:`Go`,color:[`#00758D`,`#5AD1E6`],detect:e=>e.has(`go.mod`),start:e=>{if(e.has(`main.go`))return`go run .`;let t=e.list(`cmd`);return t.length===1?`go run ./cmd/${t[0]??``}`:null}},rust:{label:`Rust`,color:[`#A0522D`,`#E8A27C`],detect:e=>e.has(`Cargo.toml`),start:()=>`cargo run`},java:{label:`Java / Kotlin`,color:[`#B0562B`,`#F0975F`],detect:e=>e.has(`pom.xml`)||e.has(`build.gradle`)||e.has(`build.gradle.kts`),port:e=>Zo(e)?8080:null,start:e=>e.has(`pom.xml`)?Zo(e)?`${e.has(`mvnw`)?`./mvnw`:`mvn`} spring-boot:run`:null:`${e.has(`gradlew`)?`./gradlew`:`gradle`} ${Zo(e)?`bootRun`:`run`}`},python:{label:`Python`,color:[`#2F6F9F`,`#7FB8E6`],detect:e=>[`manage.py`,`pyproject.toml`,`requirements.txt`,`Pipfile`].some(t=>e.has(t)),port:e=>{let t=Yo(e);return e.has(`manage.py`)||/fastapi|uvicorn/.test(t)?8e3:t.includes(`flask`)?5e3:null},start:(e,{port:t})=>{let n=Xo(e),r=Yo(e);if(e.has(`manage.py`))return`${n}python manage.py runserver${Jo(``,t)}`;if(/fastapi|uvicorn/.test(r)){let r=[`main.py`,`app/main.py`,`src/main.py`].find(t=>e.has(t))?.replace(/\.py$/,``).replace(/\//g,`.`);return r?`${n}uvicorn ${r}:app --reload${Jo(`--port `,t)}`:null}return r.includes(`flask`)?`${n}flask run${Jo(`--port `,t)}`:null}},ruby:{label:`Ruby`,color:[`#B3261E`,`#F28B82`],detect:e=>e.has(`Gemfile`),port:e=>e.has(`config/application.rb`)?3e3:null,start:(e,{port:t})=>e.has(`config/application.rb`)?`bin/rails server${Jo(`-p `,t)}`:null},php:{label:`PHP`,color:[`#6C5FC7`,`#A99FF5`],detect:e=>e.has(`artisan`)||e.has(`composer.json`),port:e=>e.has(`artisan`)?8e3:null,start:(e,{port:t})=>e.has(`artisan`)?`php artisan serve${Jo(`--port=`,t)}`:null},compose:{label:`Docker Compose`,color:[`#1D63ED`,`#7AA7FF`],detect:e=>!!Qo(e),port:e=>Number(/["'\s-](\d{2,5}):\d{2,5}["'\s]/.exec(Ko(e,Qo(e)??``))?.[1])||null,start:()=>`docker compose up`,stop:`docker compose down`}};for(let[e,t]of Object.entries($o))Go[e]={label:t.label,runIn:Ho,serves:t.serves!==!1,...t.platforms&&{platforms:t.platforms},...t.color&&{color:t.color}};Object.keys(Go);var es={kinds:Go,recipes:$o,custom:[]},ts=new WeakMap;function ns(e){let t=e?.kinds;if(typeof t!=`object`||!t)return es;let n=ts.get(t);if(n)return n;let r={kinds:{...Go},recipes:{...$o},custom:[]};for(let[e,n]of Object.entries(t)){if(!/^[a-z0-9-]{1,32}$/.test(e)||Object.hasOwn(Go,e)||typeof n!=`object`||!n)continue;let t=n,i=[t.detect??[]].flat().filter(e=>typeof e==`string`),a=typeof t.label==`string`&&t.label?t.label:e;r.recipes[e]={label:a,detect:e=>i.length>0&&i.every(t=>e.has(t)),port:()=>Number(t.port)||null,start:()=>typeof t.start==`string`&&t.start?t.start:null},r.kinds[e]={label:a,runIn:Ho,serves:t.serves!==!1,custom:!0},r.custom.push(e)}return ts.set(t,r),r}var rs=e=>ns(e).kinds;function is(e,t){let n=e?.kind,r=rs(t);return n!==void 0&&Object.hasOwn(r,n)&&r[n]||{label:n??`App`,runIn:Ho,serves:!0}}var as=e=>typeof e==`string`?e:``,os=e=>({branch:e?.branch||``,run:e?.run||`cli`,...e?.platform&&{platform:e.platform},...as(e?.note)&&{note:as(e?.note)},...e?.tunnels===!1&&{tunnels:!1},...e?.queues===!0&&{queues:!0},...as(e?.changes)&&{changes:as(e?.changes)},...Array.isArray(e?.libraries)&&e.libraries.length>0&&{libraries:e.libraries.map(String).sort()},...e?.restart===!0&&{restart:!0},...e?.watch===!0&&{watch:!0}}),ss=e=>e?.run===`mock`?{branch:``,run:`mock`,...e.restart===!0&&{restart:!0}}:os(e);function cs(e){let t=e?.nodes??{},n=Array.isArray(t)?t.map(e=>[e.id,e]):Object.entries(t),r=Object.fromEntries(n.filter(([e])=>typeof e==`string`).map(([e,t])=>[e,ss(t)])),i=(Array.isArray(e?.edges)?e.edges:[]).filter(e=>!!e&&Object.hasOwn(r,e.from)&&Object.hasOwn(r,e.to)).map(e=>({from:e.from,to:e.to})),a=Object.fromEntries(Object.entries(e?.queues??{}).flatMap(([e,t])=>t===`local`?[[e,`local`]]:[]));return{env:e?.env??null,nodes:r,edges:i,queues:a}}var ls=(e,t)=>e.edges.filter(e=>e.from===t).map(e=>e.to).sort(),us=e=>e.toUpperCase(),ds=e=>({ide:`your IDE`,cli:`the command line`,mock:`a mock`})[e];function fs(e,t,n,r,i){let a=t.nodes[e],o=n.nodes[e];if(!a||!o)return[];let s=e=>i.name?.(e)??e,c=[];o.restart&&c.push(`you asked to restart it`),r&&c.push(`the environment changes from ${us(r.from)} to ${us(r.to)}`),a.branch!==o.branch&&a.run!==`mock`&&o.run!==`mock`&&c.push(`its branch changes from ${a.branch||i.current?.(e)||`the current one`} to ${o.branch||`the current one`}`),a.run!==o.run&&c.push(`it moves from ${ds(a.run)} to ${ds(o.run)}`),(a.platform??``)!==(o.platform??``)&&o.run===`cli`&&c.push(`its device changes to ${String(o.platform)}`);let l=ls(t,e),u=ls(n,e);for(let e of u.filter(e=>!l.includes(e)))c.push(`it starts calling your local ${s(e)}`);for(let e of l.filter(e=>!u.includes(e)))c.push(`it goes back to the deployed ${s(e)}`);(a.note??``)!==(o.note??``)&&c.push(`its note changed`);let d=a.libraries??[],f=o.libraries??[];for(let e of f.filter(e=>!d.includes(e)))c.push(`it uses your local ${e}`);for(let e of d.filter(e=>!f.includes(e)))c.push(`it goes back to the published ${e}`);let p=(e,t,n)=>t.queues===!0&&Object.hasOwn(e.queues,n);for(let r of i.queuesOf?.(e)??[])p(t,a,r)!==p(n,o,r)&&c.push(`it moves to the ${p(n,o,r)?`local`:`deployed`} ${r} queue`);return c}function ps(e,t,n={}){let r=cs(e),i=cs(t),a=n.strays??[],o=r.env&&i.env&&r.env!==i.env&&Object.keys(r.nodes).length>0?{from:r.env,to:i.env}:null,s=[],c=[],l=[],u=[];for(let[e,t]of Object.entries(i.nodes))if(!Object.hasOwn(r.nodes,e)){let r=n.startedOn?.(e)===i.env&&ls(i,e).length===0&&!t.note&&!t.branch;a.includes(e)?r?u.push({id:e,why:[`you started it with koppler run`]}):c.push({id:e,why:[`it is running, but not from a run Koppler recorded`]}):s.push({id:e,why:[]})}else if(n.running?.(e)===!1&&t.run!==`ide`)s.push({id:e,why:[`it was started before but is not running now`]});else{let t=fs(e,r,i,o,n);(t.length>0?c:u).push({id:e,why:t})}for(let e of[...Object.keys(r.nodes),...a])!Object.hasOwn(i.nodes,e)&&!l.some(t=>t.id===e)&&l.push({id:e,why:[]});let d=s.length+c.length+l.length===0;return{env:i.env,envChange:o,starts:s,restarts:c,stops:l,keeps:u,nothing:d}}var ms=[[`starts`,`START`],[`restarts`,`RESTART`],[`stops`,`STOP AND REVERT`],[`keeps`,`KEEP RUNNING`]];function hs(e,t={}){let n=e=>t.name?.(e)??e,r=e=>n(e.id)+(e.why.length>0?` (${e.why.join(`; `)})`:``),i=ms.filter(([t])=>e[t].length>0).map(([t,n])=>`${n}: ${e[t].map(r).join(`, `)}`);return i.length>0?i:[`NOTHING TO CHANGE`]}var gs=[`sqs`,`kafka`];function _s(e,t){let n=e?.apps?.[t];return[...new Set([...Object.keys(n?.publishes??{}),...Object.keys(n?.reads??{})])]}function vs(e){let t=e?.envs??[],n=e?.protected;return Array.isArray(n)?t.filter(e=>n.includes(e)):t.slice(1)}var ys=(e,t)=>vs(e).includes(t),bs=[[`valkey`,`Cache (Valkey)`],[`redis`,`Cache (Redis)`],[`aurora`,`Database (Aurora)`],[`postgres`,`Database (Postgres)`],[`mysql`,`Database (MySQL)`],[`mongo`,`Database (MongoDB)`],[`db`,`Database`],[`rds`,`Database`]];function xs(e){if(e.what)return e.what;let t=(e.tunnel??``).toLowerCase(),n=t.split(/[.-]/);return bs.find(([e])=>n.includes(e)||e.length>3&&t.includes(e))?.[1]??`Tunnel`}function Ss(e){let t=new Map;for(let n of e){let e=`${n.tunnel}:${String(n.port)}`,r=t.get(e)??{host:n.tunnel,port:n.port,original:n.port,bind:`localhost`,apps:[],envs:{},what:xs(n),connectsAs:n.connectsAs};r.apps.includes(n.app)||r.apps.push(n.app),n.env&&(r.envs[n.app]=n.env),t.set(e,r)}return[...t.values()]}function Cs(e,t=[]){let n=Ss(e),r=new Set([...t,...n.map(e=>e.port)]),i=e=>e.apps.every(t=>e.envs[t]),a=2;for(let e of new Set(n.map(e=>e.original))){let t=n.filter(t=>t.original===e);t.sort((e,t)=>Number(i(e))-Number(i(t)));for(let n of t.slice(1))if(i(n)){let t=e+2;for(;r.has(t);)t++;r.add(t),n.port=t,n.settings=n.apps.map(e=>({app:e,env:n.envs[e]??``,value:`localhost:${String(t)}`}))}else n.bind=`127.0.0.${String(a++)}`,n.needsAlias=!0}return n}function ws(e,t=e=>e){let n=e=>e.what===`Tunnel`?`tunnel`:`${e.what.replace(/ \(.*\)$/,``).toLowerCase()} tunnel`,r=e=>`${e.apps.map(t).join(` and `)}'s ${n(e)}`;return e.flatMap(i=>{let a=e.filter(e=>e!==i&&e.original===i.original).map(r).join(` and `),o=String(i.port);return i.settings?[`${r(i)} moves from port ${String(i.original)} to ${o}, to make room for ${a}.`]:i.needsAlias?[`${r(i)} keeps port ${o} on its own address, ${i.bind}, next to ${a}. Needs a one-time sudo step.`]:i.apps.length>1?[`${i.apps.map(t).join(` and `)} share one ${n(i)} on port ${o}.`]:[]})}var Ts=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Es={0:e=>({...e,nodes:Object.fromEntries(Object.entries(e.nodes).map(([e,t])=>[e,{run:`cli`,...t}]))})};function Ds(e){if(!Ts(e))return{error:`It is not a preset.`};let{name:t,nodes:n,edges:r,version:i}=e;if(typeof t!=`string`||!t.trim())return{error:`It has no name.`};if(!Ts(n)||Object.keys(n).length===0)return{error:`It has no apps.`};let a=typeof i==`number`&&Number.isInteger(i)&&i>=0?i:0;if(a>1)return{error:`It was saved by a newer Koppler (${`preset format ${String(a)}, this one reads up to 1`}). Update Koppler.`};let o={...e,name:t,nodes:Object.fromEntries(Object.entries(n).map(([e,t])=>[e,Ts(t)?t:{}])),edges:Array.isArray(r)?r:[]};for(let e=a;e<1;e++)o={...Es[e]?.(o)??o,version:e+1};return{preset:o,migratedFrom:a<1?a:null}}function Os(e,t,n,r,i){let a=n.runIn(e),o=n.platforms(e),s=typeof t.run==`string`?t.run:``,c=a.includes(s)?s:a.includes(`cli`)?`cli`:a[0]??`cli`;s&&c!==s&&i.push(`${r} cannot run in "${s}", using ${c}`);let l={run:c},u=typeof t.platform==`string`?t.platform:``,d=o[0];d!==void 0&&c===`cli`&&(l.platform=o.includes(u)?u:d,u&&l.platform!==u&&i.push(`${r} has no "${u}" platform, using ${l.platform}`));let f=typeof t.branch==`string`?t.branch.trim():``;if(f){l.branch=f;let t=n.branches(e);t&&!t.includes(f)&&i.push(`${r} has no branch ${f} in your clone (fetch it first)`)}return typeof t.note==`string`&&t.note.trim()&&(l.note=t.note),t.tunnels===!1&&(l.tunnels=!1),t.queues===!0&&(l.queues=!0),t.watch===!0&&(l.watch=!0),l}var ks=e=>Ts(e)&&typeof e.from==`string`&&typeof e.to==`string`;function As(e,t){let n=Ds(e);if(n.error!==void 0)return{error:n.error};let r=n.preset,i=[],a=e=>t.name?.(e)??e;(!Ts(e)||!Number.isInteger(e.version))&&i.push(`it had no version, read as the oldest format`);let o=Object.keys(r.nodes),s=o.filter(e=>!t.known(e)),c=o.filter(e=>t.known(e)&&!t.cloned(e)),l=o.filter(e=>t.known(e)&&t.cloned(e));if(l.length===0)return{error:s.length===o.length?`None of its apps are in this stack (${s.join(`, `)}).`:`None of its apps are cloned here (${c.join(`, `)}).`};s.length>0&&i.push(`not in this stack: ${s.join(`, `)}`),c.length>0&&i.push(`not cloned: ${c.map(a).join(`, `)}`);let u=Object.fromEntries(l.map(e=>[e,Os(e,r.nodes[e]??{},t,a(e),i)])),d=[],f=0;for(let e of r.edges.filter(ks)){let{from:n,to:r}=e;!Object.hasOwn(u,n)||!Object.hasOwn(u,r)?t.known(n)&&t.known(r)&&f++:d.some(e=>e.from===n&&e.to===r)||(t.canCall(n,r)?d.push({from:n,to:r}):i.push(`${a(n)} does not call ${a(r)}, cable left out`))}f>0&&i.push(`${String(f)} ${f===1?`cable`:`cables`} left out with their apps`),n.migratedFrom!==null&&n.migratedFrom>0&&i.push(`updated from preset format ${String(n.migratedFrom)}`);let p={name:r.name.trim().slice(0,80),version:1,nodes:u,edges:d};return r.source&&(p.source=r.source),{preset:p,notes:i}}var js=e=>Ts(e)&&typeof e.x==`number`&&typeof e.y==`number`,Ms=e=>t=>e.from===t.from&&e.to===t.to;function Ns(e,t){let n=new Set(t.remove??[]),r=e=>Object.fromEntries(Object.entries(e).filter(([e])=>!n.has(e))),i=r(e.nodes),a=Ts(e.layout)?e.layout:void 0,o=r(Ts(a?.nodes)?a.nodes:{}),s=Object.values(o).filter(js),c=Math.min(...s.map(e=>e.y));for(let e of t.add??[])i[e]||(i[e]={run:`cli`},s.length&&(o[e]={x:Math.max(...s.map(e=>e.x))+340,y:c},c+=240));for(let[e,n]of Object.entries(t.branch??{}))i[e]&&(i[e]={...i[e],branch:n});for(let[e,n]of Object.entries(t.note??{})){let{note:t,...r}=i[e]??{};i[e]&&(i[e]=n.trim()?{...r,note:n}:r)}let l=e.edges.filter(ks).filter(e=>!n.has(e.from)&&!n.has(e.to)&&!(t.uncable??[]).some(Ms(e)));for(let e of t.cable??[])l.some(Ms(e))||l.push({from:e.from,to:e.to});if(!a||t.arrange){let{layout:t,...n}=e;return{...n,nodes:i,edges:l}}let u=new Set(l.map(e=>`${e.from}>${e.to}`)),d=Object.fromEntries(Object.entries(Ts(a.sides)?a.sides:{}).filter(([e])=>u.has(e)));return{...e,nodes:i,edges:l,layout:{...a,nodes:o,sides:d}}}function Ps(e,t=e=>e,n=!1){let r=(e=[])=>e.map(t).join(`, `),i=(e=[])=>e.map(e=>`${t(e.from)} to ${t(e.to)}`).join(`, `);return[e.add?.length&&`${n?`add`:`added`} ${r(e.add)}`,e.remove?.length&&`${n?`remove`:`removed`} ${r(e.remove)}`,e.cable?.length&&`${n?`cable`:`cabled`} ${i(e.cable)}`,e.uncable?.length&&`${n?`take the cable off`:`took the cable off`} ${i(e.uncable)}`,...Object.entries(e.branch??{}).map(([e,r])=>`${n?`put `:``}${t(e)} on ${r}`),...Object.entries(e.note??{}).map(([e,r])=>r.trim()?`${n?`add `:``}a note on ${t(e)}`:`${n?`take the `:`no `}note${n?` off `:` on `}${t(e)}`),e.arrange&&(n?`lay it out afresh`:`arranged`)].filter(Boolean).join(`; `)}var Fs={cli:`Koppler`,ide:`Me`,mock:`Mock`},Is=.6,Ls=[[`down`,!1],[`right`,!1],[`down`,!0],[`right`,!0]],Rs=e=>`tunnel:${e.host}:${String(e.original)}`,zs={w:230,h:58,gap:40},Bs=[`bottom`,`right`,`left`,`top`],Vs=8,Hs=24,Us=44,Ws={w:300,h:240,gap:32},Gs=(e,t,n)=>({id:`${e}>${t}`,source:e,target:t,type:`cable`,data:n}),Ks=e=>e.selected?{...e,selected:!1}:e,Z=new class{#e=N(``);get stack(){return B(this.#e)}set stack(e){P(this.#e,e,!0)}#t=N(``);get dir(){return B(this.#t)}set dir(e){P(this.#t,e,!0)}#n=N(!1);get setup(){return B(this.#n)}set setup(e){P(this.#n,e,!0)}#r=N([]);get known(){return B(this.#r)}set known(e){P(this.#r,e)}#i=N(``);get env(){return B(this.#i)}set env(e){P(this.#i,e,!0)}#a=N([]);get nodes(){return B(this.#a)}set nodes(e){P(this.#a,e)}#o=[];#s=M(()=>{let e=this.nodes;return e.length===this.#o.length&&e.every((e,t)=>e.id===this.#o[t]?.id&&e.data===this.#o[t].data)||(this.#o=e),this.#o});get cards(){return B(this.#s)}set cards(e){P(this.#s,e)}#c=N([]);get edges(){return B(this.#c)}set edges(e){P(this.#c,e)}#l=N(null);get hovered(){return B(this.#l)}set hovered(e){P(this.#l,e)}#u=N([]);#d=M(()=>B(this.#u).includes(this.env));get protected(){return B(this.#d)}set protected(e){P(this.#d,e)}toFlow=e=>e;zoom=()=>1;#f=M(()=>this.edges.map(e=>({from:e.source,to:e.target,...e.data})));get cables(){return B(this.#f)}set cables(e){P(this.#f,e)}#p=N([]);get infra(){return B(this.#p)}set infra(e){P(this.#p,e)}#m=N({});get queues(){return B(this.#m)}set queues(e){P(this.#m,e)}#h=N({});get hiddenQueues(){return B(this.#h)}set hiddenQueues(e){P(this.#h,e)}#g=N({});get hiddenOutside(){return B(this.#g)}set hiddenOutside(e){P(this.#g,e)}#_=N({});get hiddenLogs(){return B(this.#_)}set hiddenLogs(e){P(this.#_,e)}#v=N({});get logAliases(){return B(this.#v)}set logAliases(e){P(this.#v,e)}#y=N([]);get pinned(){return B(this.#y)}set pinned(e){P(this.#y,e)}pin(e){this.pinned.includes(e)||(this.pinned=[...this.pinned,e])}unpin(e){this.pinned=this.pinned.filter(t=>t!==e)}#b=M(()=>new Map(this.infra.map(({id:e,position:t,measured:n})=>[e,{...this.shown(t,e),w:n?.width??zs.w,h:n?.height??zs.h}])));get infraBoxes(){return B(this.#b)}set infraBoxes(e){P(this.#b,e)}#x=N(!1);get present(){return B(this.#x)}set present(e){P(this.#x,e,!0)}entering=!1;#S=N(!1);get brief(){return B(this.#S)}set brief(e){P(this.#S,e,!0)}#C=N(!1);get selecting(){return B(this.#C)}set selecting(e){P(this.#C,e,!0)}#w=M(()=>{if(!this.brief||this.live||this.present||this.selecting)return;let e=this.nodes.filter(e=>e.selected);return e.length===1?e[0]:void 0});get panelCard(){return B(this.#w)}set panelCard(e){P(this.#w,e)}#T=N({});get fullHeights(){return B(this.#T)}set fullHeights(e){P(this.#T,e)}#E=M(()=>new Map([...this.nodes,...this.infra].map(({id:e,measured:t})=>{let n=t?.height??0,r=this.fullHeights[e]??0;return[e,this.brief&&n&&r>n?(r-n)/2:0]})));shown=(e,t=``)=>({x:e.x,y:e.y+(B(this.#E).get(t)??0)});stored=(e,t=``)=>({x:e.x,y:e.y-(B(this.#E).get(t)??0)});dropped(e,t){return this.stored(t,e)}#D=M(()=>new Map(this.nodes.flatMap(({id:e,position:t,measured:n})=>n?.width&&n.height?[[e,{...this.shown(t,e),w:n.width,h:n.height}]]:[])));get boxes(){return B(this.#D)}set boxes(e){P(this.#D,e)}#O=N();#k=N([]);get unplaced(){return B(this.#k)}set unplaced(e){P(this.#k,e)}#A=[];#j(e){return this.nodes.some(t=>t.id===e&&t.data.run===`mock`)}tunnelsOf(e){if(this.#j(e))return[];let t=B(this.#O)?.apps[e];return((this.env===this.envs[0]?void 0:t?.envs?.[this.env]?.prereqs)??t?.prereqs??[]).flatMap(e=>{let{tunnel:t,port:n}=e;return t&&n&&Number.isInteger(n)&&n<65536?[{...e,tunnel:t,port:n}]:[]})}tunnelPath(e,t){let n=B(this.#O)?.apps[e],r=this.env===this.envs[0]?void 0:n?.envs?.[this.env]?.prereqs,i=(r??n?.prereqs??[]).findIndex(e=>e.tunnel===t);return`apps.${e}.${r?`envs.${this.env}.`:``}prereqs[${String(i)}]`}#M=M(()=>Cs(this.cards.filter(e=>!e.data.hideTunnels).flatMap(({id:e})=>this.tunnelsOf(e).map(t=>({app:e,tunnel:t.tunnel,port:t.port,env:t.env,what:xs(t),connectsAs:t.connectsAs}))),this.cards.flatMap(({id:e})=>{let t=Number(new URL(B(this.#O)?.apps[e]?.url??`http://none`).port);return t?[t]:[]})));get plan(){return B(this.#M)}set plan(e){P(this.#M,e)}ledBy(e){return[...this.plan.filter(t=>t.apps[0]===e).map(Rs),...this.boardQueues.filter(t=>this.#R(t)===e).map(e=>`queue:${e.id}`)]}#N=M(()=>new Set(this.cards.map(e=>e.id)));#P=M(()=>new Set(this.cards.filter(e=>e.data.showQueues).map(e=>e.id)));commandsOf(e){return Object.entries(B(this.#O)?.apps[e]?.commands??{}).filter(([,e])=>(e.show??`both`)!==`cli`)}#F(e){return!!B(this.#O)?.apps[e]?.outside}#I=M(()=>{let e=B(this.#O)?.apps??{};return Object.entries(B(this.#O)?.queues??{}).flatMap(([t,n])=>{let r=n=>Object.keys(e).filter(r=>Object.hasOwn(e[r]?.[n]??{},t)&&(B(this.#P).has(r)||this.#F(r))),[i,a]=[r(`publishes`),r(`reads`)];return!this.hiddenQueues[t]&&[...i,...a].some(e=>B(this.#P).has(e))?[{id:t,queue:n,pubs:i,reads:a,upstream:!1}]:[]})});get boardQueues(){return B(this.#I)}set boardQueues(e){P(this.#I,e)}#L=M(()=>{let e=[...this.boardQueues],t=t=>e.some(e=>e.id===t),n=Object.entries(B(this.#O)?.queues??{});for(let r=!0;r;){r=!1;for(let[i,a]of n)!t(i)&&!this.hiddenQueues[i]&&Object.keys(a.feeds??{}).some(t)&&(e.push({id:i,queue:a,pubs:[],reads:[],upstream:!0}),r=!0)}return e});get shownQueues(){return B(this.#L)}set shownQueues(e){P(this.#L,e)}ownedBy(e){let t=t=>[...t.pubs,...t.reads].filter(e=>B(this.#N).has(e)||this.#F(e)&&!this.hiddenOutside[e]).every(t=>t===e);return this.ledBy(e).filter(e=>e.startsWith(`tunnel:`)||this.boardQueues.some(n=>`queue:${n.id}`===e&&t(n)))}#R(e){return[...e.pubs,...e.reads].find(e=>B(this.#N).has(e))}queueName(e){return B(this.#O)?.queues?.[e]?.name??e}switchesOver(e){if(this.#j(e))return!1;let t=this.cards.find(t=>t.id===e)?.data.branch,n=this.app(e);return!!(t&&n?.current&&t!==n.current&&n.dirty)}localLibraries(e){let t=this.cards.find(t=>t.id===e)?.data.libraries??[],n=this.app(e)?.libraries??[];return t.filter(e=>n.some(t=>t.name===e))}borrowsTunnels(e){if(this.env===this.envs[0])return!1;let t=B(this.#O)?.apps[e],n=t?.envs?.[this.env]?.prereqs??[],r=this.cards.find(t=>t.id===e)?.data.hideTunnels;return[`sso`,`signIn`,`tunnel`,`hosts`].some(e=>(t?.prereqs??[]).some(t=>t[e])&&!n.some(t=>t[e])&&!(e!==`sso`&&e!==`signIn`&&r))}queuesOf(e){return this.#j(e)?[]:_s(B(this.#O),e).filter(e=>B(this.#O)?.queues?.[e])}#z=M(()=>{let e=e=>this.#F(e)?`outside:${e}`:e;return[...this.shownQueues.flatMap(({id:t,queue:n,pubs:r,reads:i})=>[...r.map(n=>({from:e(n),to:`queue:${t}`,queue:t})),...i.map(n=>{let r=this.#J(n,t);return{from:`queue:${t}`,to:e(n),queue:t,...r&&{via:r}}}),...Object.entries(n.feeds??{}).filter(([e])=>this.shownQueues.some(t=>t.id===e)).map(([e,n])=>({from:`queue:${t}`,to:`queue:${e}`,queue:t,via:n.via}))]),...this.cards.flatMap(({id:e})=>Object.keys(B(this.#O)?.apps[e]?.consumes??{}).filter(e=>this.#F(e)).map(t=>({from:e,to:`outside:${t}`}))),...Object.entries(B(this.#O)?.apps??{}).flatMap(([e,t])=>this.#F(e)?Object.keys(t.consumes??{}).filter(e=>this.cards.some(t=>t.id===e)).map(t=>({from:`outside:${e}`,to:t})):[])]});get flows(){return B(this.#z)}set flows(e){P(this.#z,e)}infraSide(e){let t=new Set(this.cables.flatMap(t=>[t.from===e&&t.fromSide,t.to===e&&t.toSide]));return Bs.find(e=>!t.has(e))??`bottom`}deployedCalls(e){return this.#j(e)?[]:(this.app(e)?.calls??[]).flatMap(t=>{let n=this.app(t);return n&&!n.outside&&!this.edges.some(n=>n.id===`${e}>${t}`)?[n]:[]})}callLocally(e,t){this.add(t),this.nodes.some(e=>e.id===t)&&this.connect(e,t)}setQueue(e,t){let{[e]:n,...r}=this.queues;this.queues=t?{...r,[e]:`local`}:r,this.syncInfra()}showQueues(e,t){let n=Object.entries(this.hiddenQueues).filter(([t])=>!e.includes(t));this.hiddenQueues=Object.fromEntries(t?n:[...n,...e.map(e=>[e,!0])])}#B=M(()=>this.plan.flatMap(e=>e.apps.map(t=>({from:t,to:Rs(e),tunnel:e}))));get links(){return B(this.#B)}set links(e){P(this.#B,e)}#V=M(()=>{let e=[...this.nodes,...this.infra].filter(e=>e.selected),t=this.edges.filter(e=>e.selected),[n]=e,[r]=t;if(e.length===1&&!t.length&&n){let e=[n.id];for(let{from:t,to:r}of[...this.cables,...this.links,...this.flows])(t===n.id||r===n.id)&&e.push(t,r);return{id:n.id,near:e}}return!e.length&&t.length===1&&r?{id:null,cable:[r.source,r.target],near:[r.source,r.target]}:null});get focus(){return B(this.#V)}set focus(e){P(this.#V,e)}dimmed=e=>!!this.focus&&!this.focus.near.includes(e);lit=(e,t)=>{let n=this.focus;return n?n.cable?n.cable[0]===e&&n.cable[1]===t:e===n.id||t===n.id:!1};dimmedLink=(e,t)=>!!this.focus&&!this.lit(e,t);#H(e){let t=this.boxes.get(e),n=this.ledBy(e).flatMap(e=>this.infraBoxes.get(e)??[]).filter(e=>t&&e.y>t.y&&e.x<t.x+t.w&&e.x+e.w>t.x);return{covered:n.length?Math.max(...n.map(e=>e.w+12)):0,atRight:!!t&&!!n.length&&n.every(e=>Math.abs(e.x+e.w-t.x-t.w)<2)}}#U=M(()=>Vo(this.cables,{cardOf:e=>this.boxes.get(e),coveredBelow:e=>this.#H(e)}));get ends(){return B(this.#U)}set ends(e){P(this.#U,e)}#W(e,t,n=this.boxes.get(e)??{w:260,h:200},r=!1,i){let a=this.nodes.find(t=>t.id===e),o=new Set(r?this.ownedBy(e):this.ledBy(e));if(!a||!o.size)return t;let s={...a.position,...n},c=i??this.infraSide(e),l=c===`bottom`?s.y+s.h+zs.gap/2:c===`top`?s.y-zs.gap/2:s.y,u=s.y-zs.gap;return t.map(e=>{if(!o.has(e.id))return e;let t=this.infraBoxes.get(e.id)??zs;if(this.#Y(e.id)){u-=t.h;let n={...e,position:{x:s.x+s.w/2-t.w/2,y:u}};return u-=zs.gap,n}c===`top`&&(l-=t.h);let n=c===`right`?s.x+s.w+zs.gap:c===`left`?s.x-zs.gap-t.w:s.x,r={...e,position:{x:n,y:l}};return l+=c===`top`?-zs.gap/2:t.h+zs.gap/2,r})}#G={};#K(e,t){return t.map(t=>{let n=t.measured?.width,r=t.measured?.height,i=this.#G[t.id];if(n&&(this.#G[t.id]=n),t.dragging||!n||!r||i!==void 0&&n<=i)return t;let{x:a}=t.position,{y:o}=t.position;for(let t of e){let e=t.measured?.width,i=Math.max(t.measured?.height??0,this.fullHeights[t.id]??0);if(!e||!i)continue;let{x:s,y:c}=t.position;a>=s+e||s>=a+n||o>=c+i||c>=o+r||(a=a+n/2<s+e/2?s-n-zs.gap/2:s+e+zs.gap/2)}return a===t.position.x?t:{...t,position:{x:a,y:o}}})}#q(e,t){let n=t;for(let{id:t,position:r,measured:i}of e){let e=Math.max(i?.height??0,this.brief?this.fullHeights[t]??0:0),a=i?.width;if(!e||!a)continue;let o=new Set(this.ownedBy(t)),s=new Set(this.ledBy(t)),c=n.filter(e=>{let t=this.infraBoxes.get(e.id)?.w??zs.w;return s.has(e.id)&&e.position.y>=r.y&&e.position.x<r.x+a&&r.x<e.position.x+t}).sort((e,t)=>e.position.y-t.position.y),l=r.y+e,u=-1/0,d={};for(let e of c){let t=o.has(e.id)?l+zs.gap/2:-1/0,n=e.position.y>=Math.max(u,t)?e.position.y:Math.max(u+zs.gap/2,t);n!==e.position.y&&(d[e.id]=n),u=n+(this.infraBoxes.get(e.id)?.h??zs.h)}Object.keys(d).length&&(n=n.map(e=>{let t=d[e.id];return t===void 0?e:{...e,position:{x:e.position.x,y:t}}}))}return n}syncInfra(e={}){let t=new Map(this.infra.map(e=>[e.id,e])),n=[],r=this.plan.map(r=>{let i=Rs(r),a=t.get(i);!a&&!e[i]&&n.push(r.apps[0]??``);let o=r.apps.flatMap(e=>this.tunnelsOf(e)).find(e=>e.tunnel===r.host)?.note;return{...a,id:i,type:`tunnel`,deletable:!1,position:a?.position??e[i]??{x:0,y:0},data:{what:r.what,local:`${r.bind}:${String(r.port)}`,moved:!!r.settings||!!r.needsAlias,host:r.host,about:[r.settings?`Moved from port ${String(r.original)} so it does not clash with another tunnel on the board.`:``,r.needsAlias?`Keeps port ${String(r.port)} on its own loopback address, ${r.bind}, so it does not clash (needs sudo once).`:``,typeof o==`string`?o:``].filter(Boolean),apps:r.apps,settings:this.tunnelPath(r.apps[0]??``,r.host)}}}),i=this.env.toUpperCase(),a=e=>B(this.#O)?.apps[e]?.name??e,o=[],s=this.shownQueues.map(r=>{let s=`queue:${r.id}`,c=t.get(s),l=this.#R(r);!c&&!e[s]&&l&&n.push(l),!c&&!e[s]&&r.upstream&&o.push(s);let u=!r.upstream&&gs.includes(r.queue.type),d=u&&this.queues[r.id]===`local`,f=r.reads.filter(e=>B(this.#N).has(e)&&!this.#J(e,r.id)).map(a),p=!d&&f.length?f.join(` and `):``;return{...c,id:s,type:`queue`,deletable:!1,position:c?.position??e[s]??{x:0,y:0},data:{queue:r.id,name:r.queue.name,kind:r.queue.type.toUpperCase(),can:u,local:d,upstream:r.upstream,shares:p?`Your local ${p} reads the ${i} queue`:``,about:[r.queue.envs?.[this.env]?.queue??r.queue.queue??r.id,r.upstream?`Stays deployed on ${i}: it feeds ${this.#X(r.queue.feeds)}.`:``,p?`It takes messages the deployed ${i} reader would get. Switch to Local to give your run its own copy.`:``].filter(Boolean)}}}),c=[...new Set([...this.flows.flatMap(e=>[e.from,e.to]),...this.pinned.filter(e=>this.#F(e)).map(e=>`outside:${e}`)])].filter(e=>e.startsWith(`outside:`)&&!this.hiddenOutside[e.slice(8)]).map(n=>{let r=B(this.#O)?.apps[n.slice(8)],o=t.get(n),s=this.env===this.envs[0]?void 0:r?.envs?.[this.env]?.deployedUrl,c=typeof s==`string`?s:r?.deployedUrl??``,l=URL.canParse(c)?new URL(c).hostname:``,u=typeof r?.outside==`string`?`: ${r.outside.replace(/\.+$/,``)}`:``;return{...o,id:n,type:`outside`,deletable:!1,position:o?.position??e[n]??{x:0,y:0},data:{name:r?.name??n.slice(8),where:l?`${i}: ${l}`:`Outside, never runs`,about:[`${r?.name??n.slice(8)} does not run on this Mac${u}. Koppler cannot check calls to it.`,l?`The ${i} board uses ${c}.`:``,...this.flows.filter(e=>e.from===n).map(e=>`It sends to the deployed ${a(e.to)}, not to your local one.`)].filter(Boolean)}}}),l=[...r,...s,...c];for(let e of n)l=this.#W(e,l);l=this.#Z(o,l),this.#A=[...new Set([...this.#A,...o])];for(let n of c.filter(n=>!t.has(n.id)&&!e[n.id])){let e=this.#$(n.id,l);l=l.map(t=>t.id===n.id?{...t,position:e}:t)}this.infra=l,this.unplaced=[...new Set([...this.unplaced,...n])]}#J(e,t){let n=B(this.#O)?.apps[e]?.reads?.[t]?.via;return typeof n==`string`?n:void 0}#Y(e){return e.startsWith(`queue:`)&&this.shownQueues.some(t=>t.upstream&&Object.hasOwn(t.queue.feeds??{},e.slice(6)))}#X(e){return Object.keys(e??{}).filter(e=>this.shownQueues.some(t=>t.id===e)).map(e=>this.queueName(e)).join(` and `)}#Z(e,t){let n=t,r=e;for(let t of e){let e=this.#Q(t,n,r);e&&(n=n.map(n=>n.id===t?{...n,position:e}:n)),r=r.filter(e=>e!==t)}return n}#Q(e,t,n){let r=this.infraBoxes.get(e)??zs,i=this.flows.filter(t=>t.from===e).map(e=>t.find(t=>t.id===e.to&&(t.position.x||t.position.y))).find(Boolean);if(!i)return;let a=e=>({...e.position,...this.infraBoxes.get(e.id)??zs}),o=[...this.nodes.map(e=>({...e.position,...this.boxes.get(e.id)??{w:260,h:200}})),...t.filter(e=>!n.includes(e.id)&&(e.position.x||e.position.y)).map(a)],s=e=>o.every(t=>e.x+r.w+16<=t.x||t.x+t.w+16<=e.x||e.y+r.h+16<=t.y||t.y+t.h+16<=e.y),c=i.position.y-r.h-60,l=i.position.x+a(i).w/2-r.w/2,u=[0,-1,1,-2,2].map(e=>({x:l+e*(r.w+24),y:c}));return u.find(s)??u[0]}#$(e,t,n=e=>this.boxes.get(e)??{w:260,h:200}){let r=zs,i=i=>{let a=t.find(t=>t.id===i&&(t.id===e||t.position.x||t.position.y)),o=this.nodes.find(e=>e.id===i);return a?{...a.position,...this.infraBoxes.get(i)??r}:o&&{...o.position,...n(i)}},a=this.flows.flatMap(t=>{let n=t.from===e?t.to:t.to===e?t.from:void 0,r=n===void 0?void 0:i(n);return r?[{at:r,before:t.to===e}]:[]}),o=[...this.nodes.map(e=>i(e.id)),...t.filter(t=>t.id!==e).map(e=>i(e.id))],s=e=>o.every(t=>!t||e.x+r.w+16<=t.x||t.x+t.w+16<=e.x||e.y+r.h+16<=t.y||t.y+t.h+16<=e.y),[c]=a;if(!c)return{x:40,y:40};let{at:l,before:u}=c,d=u?[l.x+l.w+80,l.x-r.w-80]:[l.x-r.w-80,l.x+l.w+80],f=[{x:d[0]??0,y:l.y},{x:d[1]??0,y:l.y},{x:l.x,y:l.y+l.h+40},{x:l.x,y:l.y-r.h-40},...Array.from({length:9},(e,t)=>({x:d[0]??0,y:l.y+(t+1)*(r.h+24)}))];return f.find(s)??f[0]??{x:40,y:40}}settle(){let e=e=>e.every(e=>e.measured?.width);if(!this.unplaced.length&&!this.#A.length||!e(this.nodes)||!e(this.infra))return;let t=this.infra;for(let e of this.unplaced)t=this.#W(e,t);t=this.#Z(this.#A,t),this.#A=[],this.unplaced=[],this.infra=t}pushed(e,t,n,r){let i=new Set(this.ledBy(e));return r.map(e=>i.has(e.id)&&e.position.y>=t?{...e,position:{x:e.position.x,y:e.position.y+n}}:e)}followed(e,t,n){let r=new Set(this.ownedBy(e));return n.map(e=>r.has(e.id)&&!e.selected&&!e.dragging?{...e,position:{x:e.position.x+t.x,y:e.position.y+t.y}}:e)}hideTunnel(e){let t=this.infra.find(t=>t.id===e),n=new Set(t?.type===`tunnel`?t.data.apps:[]);this.nodes=this.nodes.map(e=>n.has(e.id)?{...e,data:{...e.data,hideTunnels:!0}}:e)}flowNodes(){return[...this.nodes,...this.infra].map(e=>{let t=this.shown(e.position,e.id);return this.#ee.set(e.id,t),{...e,position:t}})}#ee=new Map;#te={};fromFlow(e,t,n){let r=new Map([...this.nodes,...this.infra].map(e=>[e.id,e])),i=[],a=e.map(e=>{let t=r.get(e.id),n=e.dragging||t?.dragging?{...e,position:e.type===`app`?this.#ne(e.id,e.position,i):this.#re(e.id,e.position,i)}:e;if(t?.dragging&&!n.dragging)return{...n,position:this.dropped(n.id,n.position)};let a=t&&(this.#ee.get(t.id)??this.shown(t.position,t.id));return t&&a?.x===n.position.x&&a.y===n.position.y?{...n,position:t.position}:{...n,position:this.stored(n.position,n.id)}}),o=e.every(e=>!e.dragging)?[]:i;o.join()!==this.snapped.join()&&(this.snapped=o);let s=new Map(this.nodes.map(e=>[e.id,e.position])),c={},l=[],u=a.filter(e=>e.type!==`app`),d=a.filter(e=>e.type===`app`);for(let{id:e,measured:r}of d){let i=this.#te[e],a=r?.height;a&&(this.#te[e]={brief:t,height:a}),a&&a!==i?.height&&l.push(e);let o=n&&i?.brief===t&&a?a-i.height:0;o&&(c[e]={bottom:i?.height??0,by:o});let s=this.boxes.get(e);if(o&&s){let t=e=>!!e&&e.y>=s.y+(i?.height??0)&&e.x<s.x+s.w&&s.x<e.x+e.w;for(let n of d.filter(n=>n.id!==e&&t(this.boxes.get(n.id))))u=this.followed(n.id,{x:0,y:o},u);d=d.map(n=>n.id!==e&&t(this.boxes.get(n.id))?{...n,position:{x:n.position.x,y:n.position.y+o}}:n)}}for(let{id:e,position:t}of d){let n=c[e];n&&(u=this.pushed(e,t.y+n.bottom,n.by,u));let r=s.get(e);r&&(r.x!==t.x||r.y!==t.y)&&(u=this.followed(e,{x:t.x-r.x,y:t.y-r.y},u))}return u=this.#q(d.filter(e=>l.includes(e.id)),u),u=this.#K(d,u),this.nodes=d,this.infra=u,Object.keys(c).length>0}#ne(e,t,n){let r=this.boxes.get(e);if(!r)return t;let i=Vs/(this.view?.zoom??1),a={...r,x:t.x,y:t.y},o=(e,t,n)=>{let r=this.cables[e];if(!r)return;let i=r[`${t}Side`],a=jo(n,i),o=this.ends.offset[`${String(e)}|${t}`]??0;return{side:i,at:Eo[i][0]===0?{...a,x:a.x+o}:{...a,y:a.y+o}}},s,c;this.cables.forEach((t,n)=>{let r=t.from===e?`from`:t.to===e?`to`:null;if(!r||t.from===t.to)return;let l=r===`from`?`to`:`from`,u=this.boxes.get(t[l]);if(!u||this.nodes.some(e=>e.id===t[l]&&e.dragging))return;let d=o(n,r,a),f=o(n,l,u);if(!d||!f)return;let p=Eo[d.side][0]!==0,m=p?f.at.y-d.at.y:f.at.x-d.at.x,h={by:m,cable:`${t.from}>${t.to}`};Math.abs(m)>i||(p&&(!c||Math.abs(m)<Math.abs(c.by))&&(c=h),!p&&(!s||Math.abs(m)<Math.abs(s.by))&&(s=h))});let l=new Set(this.ownedBy(e)),u=[...this.links.filter(t=>t.from===e).map(e=>e.to),...this.flows.flatMap(t=>t.from===e?[t.to]:t.to===e?[t.from]:[])].filter(e=>!l.has(e));for(let t of new Set(u)){let n=this.infraBoxes.get(t);if(!n||this.infra.some(e=>e.id===t&&e.dragging))continue;let r=Math.max(n.x-(a.x+a.w),a.x-(n.x+n.w)),o=Math.max(n.y-(a.y+a.h),a.y-(n.y+n.h))>=r,l=o?n.x+n.w/2-(a.x+a.w/2):n.y+n.h/2-(a.y+a.h/2);if(Math.abs(l)>i)continue;let u={by:l,cable:`${e}>${t}`};o&&(!s||Math.abs(l)<Math.abs(s.by))&&(s=u),!o&&(!c||Math.abs(l)<Math.abs(c.by))&&(c=u)}let d=s?.by??0,f=c?.by??0;for(let e of[s,c])e&&n.push(e.cable,e.cable.split(`>`).reverse().join(`>`));return{x:t.x+d,y:t.y+f}}#re(e,t,n){let r=this.infraBoxes.get(e);if(!r)return t;let i=Vs/(this.view?.zoom??1),a={...r,x:t.x,y:t.y},o=[...this.links.filter(t=>t.to===e).map(e=>e.from),...this.flows.flatMap(t=>t.from===e?[t.to]:t.to===e?[t.from]:[])],s,c;for(let e of new Set(o)){let t=this.boxes.get(e)??this.infraBoxes.get(e);if(!t||[...this.nodes,...this.infra].some(t=>t.id===e&&t.dragging))continue;let n=Math.max(t.x-(a.x+a.w),a.x-(t.x+t.w)),r=Math.max(t.y-(a.y+a.h),a.y-(t.y+t.h))>=n,o=r?t.x+t.w/2-(a.x+a.w/2):t.y+t.h/2-(a.y+a.h/2);if(Math.abs(o)>i)continue;let l=r?s:c;l&&Math.abs(l.by)<=Math.abs(o)||(r?s={by:o,partner:e}:c={by:o,partner:e})}for(let t of[s,c])t&&n.push(`${t.partner}>${e}`,`${e}>${t.partner}`);return{x:a.x+(s?.by??0),y:a.y+(c?.by??0)}}#ie=N([]);get snapped(){return B(this.#ie)}set snapped(e){P(this.#ie,e)}#ae=N();get view(){return B(this.#ae)}set view(e){P(this.#ae,e)}#oe=N(!1);get unsaved(){return B(this.#oe)}set unsaved(e){P(this.#oe,e,!0)}#se={};#ce=N(!1);get live(){return B(this.#ce)}set live(e){P(this.#ce,e,!0)}#le=``;#ue={};goLive(){this.live||=(this.commit(),this.#ue=this.saved(),this.#le=this.content(),!0)}goEdit(){this.live&&=(this.setContent(this.#le),!1)}content(){return JSON.stringify({name:this.name,nodes:this.nodes.map(({id:e,type:t,position:n,data:r})=>({id:e,type:t,position:n,data:r})),infra:this.infra.map(({id:e,position:t})=>({id:e,position:t})),queues:this.queues,hiddenQueues:this.hiddenQueues,hiddenOutside:this.hiddenOutside,pinned:this.pinned,edges:this.edges.map(({id:e,source:t,target:n,type:r,data:i})=>({id:e,source:t,target:n,type:r,data:i}))})}setContent(e){let{name:t,nodes:n,edges:r,infra:i,queues:a,hiddenQueues:o,hiddenOutside:s,pinned:c}=JSON.parse(e);this.name=t,this.pinned=c,this.nodes=n,this.edges=r,this.queues=a,this.hiddenQueues=o,this.hiddenOutside=s,this.syncInfra(Object.fromEntries(i.map(({id:e,position:t})=>[e,t]))),this.infra=this.infra.map(e=>({...e,position:i.find(t=>t.id===e.id)?.position??e.position}))}#de=N(null);get name(){return B(this.#de)}set name(e){P(this.#de,e,!0)}#fe=N([]);get own(){return B(this.#fe)}set own(e){P(this.#fe,e)}get team(){return B(this.#O)?.presets??[]}#pe=N(null);get opened(){return B(this.#pe)}set opened(e){P(this.#pe,e,!0)}#me(){let e=e=>this.app(e);return{known:t=>!!e(t),cloned:t=>!!e(t)?.cloned,name:t=>e(t)?.name??t,canCall:(t,n)=>!e(t)?.outside&&!!e(n)&&!e(n)?.outside&&!!e(n)?.answers,runIn:t=>(e(t)?.runIn??[]).map(([e])=>e),platforms:t=>(e(t)?.platforms??[]).map(([e])=>e),branches:t=>{let n=e(t)?.branches??[];return n.length&&n.length<300?n:null}}}#he(e){return{name:e,version:1,nodes:Object.fromEntries(this.nodes.map(({id:e,data:t})=>[e,{run:t.run,...t.platform&&{platform:t.platform},...t.branch&&{branch:t.branch},...t.note&&{note:t.note},...t.hideTunnels&&{tunnels:!1},...t.showQueues&&this.queuesOf(e).length>0&&{queues:!0},...t.watch&&t.run===`cli`&&{watch:!0}}])),edges:this.edges.map(({source:e,target:t})=>({from:e,to:t})),...this.pinned.length&&{outside:this.pinned}}}#ge(){let e=e=>Object.fromEntries(e.map(({id:e,position:t})=>[e,{x:Math.round(t.x),y:Math.round(t.y)}]));return{nodes:e(this.nodes),infra:e(this.infra),sides:Object.fromEntries(this.edges.map(({id:e,data:t})=>[e,[t.fromSide,t.toSide,null,null,t.fromSlot??null,t.toSlot??null,t.points??null,t.fromShift??null,t.toShift??null]]))}}#_e(){let e=e=>{let t={...this.own.find(t=>t.name===e),...this.#he(e),layout:this.#ge()},n=this.own.some(t=>t.name===e)?this.own.map(n=>n.name===e?t:n):[...this.own,t];JSON.stringify(n)!==JSON.stringify(this.own)&&(this.own=n),this.name!==e&&(this.name=e)};if(this.own.some(e=>e.name===this.name)){e(this.name??``);return}if(!this.nodes.length||this.scratch&&this.nodes.length<2)return;this.scratch=!1;let t=this.team.find(e=>e.name===this.name),n=e=>JSON.stringify([e.nodes,e.edges.map(e=>`${e.from}>${e.to}`).sort()]),r=t&&As(t,this.#me()).preset;if(t&&r&&n(this.#he(t.name))===n(r))return;let i=t&&this.own.find(e=>e.name===`${t.name} (local)`||e.name===`${t.name} (mine)`),a=this.nodes[0]?.data.name??`Untitled`,o=this.nodes.length>1?`${a} + ${String(this.nodes.length-1)}`:a;e(i?.name??this.uniqueName(t?`${t.name} (local)`:this.name||o))}uniqueName(e){let t=new Set([...this.team,...this.own].map(e=>e.name)),n=e;for(let r=2;t.has(n);r++)n=`${e} (${String(r)})`;return n}#ve=N([]);get trash(){return B(this.#ve)}set trash(e){P(this.#ve,e)}#ye=N([]);get recent(){return B(this.#ye)}set recent(e){P(this.#ye,e)}rename(e){let t=e.trim().slice(0,80),n=this.name;return this.own.some(e=>e.name===n)?t?t===n?null:[...this.team,...this.own].some(e=>e.name===t)?`A board is already called ${t}. Pick another name.`:(this.own=this.own.map(e=>e.name===n?{...e,name:t}:e),this.name=t,null):`Give the board a name first.`:`Only a board of your own can be renamed.`}duplicate(){if(!this.nodes.length)return;this.#_e();let e=this.nodes[0]?.data.name??`Untitled`,t=this.uniqueName(`${this.name??e} copy`);this.own=[...this.own,{...this.#he(t),layout:this.#ge()}],this.name=t}deleteBoard(e){let t=this.own.find(t=>t.name===e);t&&(this.own=this.own.filter(e=>e!==t),this.trash=[{...t,deleted:new Date().toISOString()},...this.trash].slice(0,20),this.name===e&&this.newBoard())}restore(e){let{deleted:t,...n}=e,r={...n,name:this.uniqueName(e.name)};this.trash=this.trash.filter(t=>t!==e),this.own=[...this.own,r],this.nodes.length||this.openBoard(r)}importBoards(e,t){let n=e?.presets,r=(Array.isArray(e)?e:Array.isArray(n)?n:[e]).map(e=>Ds(e)),i=r.flatMap(e=>e.preset?[{...e.preset,name:e.preset.name.trim().slice(0,80),source:t}]:[]),[a]=i;if(!a)return{error:r[0]?.error??`No board found in it.`};let o=As(a,this.#me());if(o.error!==void 0)return{error:o.error};let s=[...new Map(i.map(e=>[e.name,e])).values()];this.own=[...this.own.filter(e=>!s.some(t=>t.name===e.name)),...s];let c=this.openBoard(a);return c.error===void 0?{notes:c.notes,name:a.name}:c}forTeam(e){let{layout:t,outside:n}=e;return{...JSON.parse(this.asShared(e)),...t?{layout:t}:{},...n?{outside:n}:{}}}keptForTeam(e,t){let n=[...B(this.#O)?.presets??[]];n[e]=t,B(this.#O)&&P(this.#O,{...B(this.#O),presets:n})}asShared(e){let{name:t,nodes:n,edges:r}=e;return JSON.stringify({name:t,version:Ds(e).preset?.version??1,nodes:n,edges:r},null,2)}#be=N([]);get dismissed(){return B(this.#be)}set dismissed(e){P(this.#be,e)}#xe=N(!1);get scratch(){return B(this.#xe)}set scratch(e){P(this.#xe,e,!0)}alone(e){let t=[...this.own,...this.team].find(e=>e.name===this.name);return this.newBoard(),this.scratch=!0,this.add(e),this.opened=`fit`,t}newBoard(){this.scratch=!1,this.dismissed=[],this.name=null,this.nodes=[],this.edges=[],this.queues={},this.hiddenQueues={},this.hiddenOutside={},this.hiddenLogs={},this.logAliases={},this.pinned=[]}openBoard(e){if(!Object.keys(e.nodes).length)return this.newBoard(),this.name=e.name,{notes:[]};let t=As(e,this.#me());if(t.error!==void 0)return{error:t.error};let{preset:n,notes:r}=t,i=e.layout??{},a=e=>{let{x:t,y:n}=i.nodes?.[e]??{};return typeof t==`number`&&typeof n==`number`&&Number.isFinite(t)&&Number.isFinite(n)?{x:t,y:n}:null},o=Object.keys(n.nodes),s=o.every(a);this.scratch=!1,this.dismissed=[],this.recent=[{name:n.name,at:new Date().toISOString()},...this.recent.filter(e=>e.name!==n.name)].slice(0,20),this.name=n.name,this.queues={},this.hiddenQueues={},this.hiddenOutside={},this.hiddenLogs={},this.logAliases={},this.pinned=Array.isArray(e.outside)?e.outside.filter(e=>typeof e==`string`):[],this.infra=this.infra.map(Ks),this.nodes=o.flatMap(e=>{let t=this.app(e),r=n.nodes[e];if(!t||!r)return[];let i={...r,hideTunnels:r.tunnels===!1,showQueues:r.queues===!0};return[this.#Ee(t,s&&a(e)||{x:0,y:0},i)]});let c=Object.fromEntries(this.nodes.map(({id:e,position:t})=>[e,t])),l=e=>typeof e==`string`&&e in Eo,u=(e,t)=>Number.isInteger(t)?{[e]:t}:{},d=(e,t)=>typeof t==`number`&&Number.isFinite(t)?{[e]:t}:{};return this.edges=n.edges.map(({from:e,to:t})=>{let[n,r,,,a,o,f,p,m]=i.sides?.[`${e}>${t}`]??[];return!s||!l(n)||!l(r)?Gs(e,t,To(c,{from:e,to:t},`down`,()=>({w:260,h:160}))):Gs(e,t,{fromSide:n,toSide:r,...u(`fromSlot`,a),...u(`toSlot`,o),...d(`fromShift`,p),...d(`toShift`,m),...Array.isArray(f)&&{points:f}})}),this.infra=[],this.syncInfra(s?i.infra??{}:{}),this.opened=s?`fit`:`arrange`,{notes:r}}clear(){this.nodes=[],this.edges=[]}#Se=N([]);get apps(){return B(this.#Se)}set apps(e){P(this.#Se,e)}#Ce=M(()=>new Map(this.apps.map(e=>[e.id,e])));app=e=>B(this.#Ce).get(e);nameOf=e=>B(this.#Ce).get(e)?.name??e;#we=N([]);get envs(){return B(this.#we)}set envs(e){P(this.#we,e)}#Te=N([]);get roots(){return B(this.#Te)}set roots(e){P(this.#Te,e)}area=()=>new DOMRect;show=()=>void 0;#Ee(e,t,n={}){let{id:r,name:i,kind:a,kindLabel:o,runIn:s,platforms:c}=e,l=s.some(([e])=>e===n.run)?n.run:s[0]?.[0],u=c.some(([e])=>e===n.platform)?n.platform:c[0]?.[0];return{id:r,type:`app`,position:t,data:{name:i,kind:a,kindLabel:o,...n.hideTunnels===!0&&{hideTunnels:!0},...n.showQueues===!0&&{showQueues:!0},...n.watch===!0&&{watch:!0},...(n.changes===`take-along`||n.changes===`set-aside`)&&{changes:n.changes},...Array.isArray(n.libraries)&&{libraries:n.libraries.filter(e=>typeof e==`string`)},branch:n.branch??``,run:l??`cli`,...u&&{platform:u},note:n.note??``}}}async reload(){this.commit(),await ao(this.saved());let e=await ro();e&&this.open(e)}open({stack:e,clones:t,roots:n,saved:r}){let i=mo(e);P(this.#O,i),P(this.#u,i.envs.filter(e=>ys(i,e))),this.stack=i.name??``,this.dir=(i.source??``).replace(/\/stack\.json$/,``),this.setup=!!i.setup,this.known=i.stacks??[],this.envs=i.envs,this.env=r?.env??i.envs[0]??``,this.roots=n,this.apps=Object.entries(i.apps).map(([e,n])=>({id:e,name:n.name,kind:n.kind,kindLabel:is(n,i).label,slug:n.slug??``,cloned:!!t[e],calls:[...new Set([...Object.keys(n.consumes??{}),...Object.keys(i.found?.[e]??{})])],known:Object.keys(n.consumes??{}),answers:is(n,i).serves||Object.entries(i.apps).some(([t,n])=>t!==e&&(n.consumes?.[e]??i.found?.[t]?.[e])),serves:!!n.url,runIn:[...is(n,i).runIn,...n.mock?.length?[[`mock`,`Mock`]]:[]],platforms:is(n,i).platforms??[],current:t[e]?.branch??``,branches:t[e]?.branches??[],dirty:t[e]?.dirty??0,libraries:(t[e]?.libraries??[]).map(({name:e,path:t})=>({name:e,path:t})),...n.outside&&{outside:typeof n.outside==`string`?n.outside:`an outside system`}})),this.nodes=this.apps.flatMap(e=>{let t=r?.nodes?.[e.id];return t?[this.#Ee(e,{x:t.x,y:t.y},t)]:[]}),this.fullHeights=Object.fromEntries(Object.entries(r?.nodes??{}).flatMap(([e,t])=>typeof t?.full==`number`&&t.full>0?[[e,t.full]]:[]));let a=new Set(this.nodes.map(({id:e})=>e));this.edges=(r?.edges??[]).filter(({from:e,to:t})=>a.has(e)&&a.has(t)).map(({from:e,to:t,fromSide:n,toSide:r,...i})=>Gs(e,t,{fromSide:n??`right`,toSide:r??`left`,...i})),this.#se=r??{},this.name=typeof r?.preset==`string`?r.preset:null,this.own=Array.isArray(r?.presets)?r.presets:[],this.#De=this.own.map(e=>e.name),this.scratch=r?.scratch===!0,this.dismissed=Array.isArray(r?.dismissed)?r.dismissed:[],this.trash=Array.isArray(r?.trash)?r.trash:[],this.recent=Array.isArray(r?.recent)?r.recent:[],this.infra=[],this.queues=r?.queues??{},this.hiddenQueues=r?.hiddenQueues??{},this.hiddenOutside=r?.hiddenOutside??{},this.hiddenLogs=r?.hiddenLogs??{},this.logAliases=r?.logAliases??{},this.pinned=Array.isArray(r?.outside)?r.outside:[],this.syncInfra(r?.infra??{});let{zoom:o,pan:s}=r??{};this.view=o&&s?{x:s.x,y:s.y,zoom:o}:void 0}commit(){!this.live&&!this.nodes.some(e=>e.dragging)&&this.#_e()}get changes(){return[B(this.#O),this.live,this.env,this.name,this.scratch,this.view,this.nodes,this.edges,this.infra,this.own,this.trash,this.recent,this.dismissed,this.fullHeights,this.queues,this.hiddenQueues,this.hiddenOutside,this.hiddenLogs,this.logAliases,this.pinned]}#De=[];saved(){if(this.#De=[...new Set([...this.#De,...this.own.map(e=>e.name)])],this.live)return{...this.#ue,env:this.env};let e=this.#se.nodes??{};return{mode:`auto`,...this.#se,preset:this.name,presets:this.own,seen:this.#De,trash:this.trash,recent:this.recent,scratch:this.scratch||void 0,dismissed:this.dismissed.length?this.dismissed:void 0,env:this.env,...this.view&&{zoom:this.view.zoom,pan:{x:this.view.x,y:this.view.y}},nodes:Object.fromEntries(this.nodes.map(({id:t,position:n,data:{branch:r,run:i,platform:a,note:o,hideTunnels:s,showQueues:c,watch:l,changes:u,libraries:d}})=>[t,{...e[t],x:Math.round(n.x),y:Math.round(n.y),branch:r,run:i,...a&&{platform:a},note:o,hideTunnels:s?!0:void 0,showQueues:c?!0:void 0,watch:l?!0:void 0,changes:u,libraries:d?.length?d:void 0,full:this.fullHeights[t]}])),edges:this.edges.map(({source:e,target:t,data:n})=>({from:e,to:t,...n})),queues:this.queues,hiddenQueues:this.hiddenQueues,hiddenOutside:Object.keys(this.hiddenOutside).length?this.hiddenOutside:void 0,hiddenLogs:Object.keys(this.hiddenLogs).length?this.hiddenLogs:void 0,logAliases:Object.keys(this.logAliases).length?this.logAliases:void 0,outside:this.pinned.length?this.pinned:void 0,infra:Object.fromEntries(this.infra.map(({id:e,position:t})=>[e,{x:Math.round(t.x),y:Math.round(t.y)}]))}}add(e,t){let n=this.app(e);if(!n||n.outside||!n.cloned||this.nodes.some(t=>t.id===e))return;if(t){let e=this.toFlow(t);this.#Oe(this.#Ee(n,this.stored({x:e.x-Ws.w/2,y:e.y-22})));return}let r=this.area(),i=this.toFlow({x:r.left,y:r.top}),a=this.toFlow({x:r.right,y:r.bottom}),o=this.nodes.map(({id:e,position:t})=>this.boxes.get(e)??{...this.shown(t,e),w:Ws.w,h:Ws.h}),s=(e,t)=>o.every(n=>e+Ws.w+Ws.gap<=n.x||n.x+n.w+Ws.gap<=e||t+Ws.h+Ws.gap<=n.y||n.y+n.h+Ws.gap<=t),c=(e,t,n)=>Array.from({length:Math.max(0,Math.floor((t-n-e-40)/40)+1)},(t,n)=>e+40+n*40),l=(e,t)=>e-t,u=(e,t)=>[...new Set([...e,...t])],d=u(o.map(e=>e.y).sort(l),c(i.y,a.y,Ws.h)).filter(e=>e>=i.y&&e+Ws.h<=a.y),f=u(o.map(e=>e.x+e.w+Ws.gap).sort(l),c(i.x,a.x,Ws.w)).filter(e=>e>=i.x&&e+Ws.w<=a.x),p;for(let e of d)if(p=f.filter(t=>s(t,e)).map(t=>({x:t,y:e}))[0],p)break;let m=this.nodes.length*32;this.#Oe(this.#Ee(n,this.stored(p??{x:i.x+48+m,y:i.y+48+m})))}selectAll(){let e=e=>e.selected?e:{...e,selected:!0};this.nodes=this.nodes.map(e),this.infra=this.infra.map(e),this.edges=this.edges.map(Ks)}pick(e){let t=t=>!!t.selected==(t.id===e)?t:{...t,selected:t.id===e};this.infra=this.infra.map(t),this.edges=this.edges.map(Ks),this.nodes=this.nodes.map(t)}#Oe(e){this.infra=this.infra.map(Ks),this.edges=this.edges.map(Ks),this.nodes=[...this.nodes.map(Ks),{...e,selected:!0}]}logName(e){return this.logAliases[e]??this.nameOf(e)}aliasLog(e,t){let{[e]:n,...r}=this.logAliases,i=t.trim().slice(0,24);this.logAliases=i&&i!==this.nameOf(e)?{...r,[e]:i}:r}showLog(e,t){let{[e]:n,...r}=this.hiddenLogs;this.hiddenLogs=t?r:{...r,[e]:!0}}showOutside(e,t){let{[e]:n,...r}=this.hiddenOutside;this.hiddenOutside=t?r:{...r,[e]:!0},t?this.pin(e):this.unpin(e),this.syncInfra()}set(e,t){this.nodes=this.nodes.map(n=>n.id===e?{...n,data:{...n.data,...t}}:n)}cablesOf(e){let t=e=>this.app(e),n=this.cards.flatMap(n=>n.id===e?[]:t(n.id)??[]),r=n.filter(t=>this.edges.some(n=>n.id===`${e}>${t.id}`)),i=n.filter(e=>!r.includes(e)),a=i.filter(n=>t(e)?.calls.includes(n.id)),o=i.filter(t=>!t.outside&&t.answers&&!t.calls.includes(e));return{can:a.length?a:o,wired:r}}uncabled(e){return this.cards.length>1&&!this.edges.some(t=>t.source===e||t.target===e)}connect(e,t){let n=Gs(e,t,To(Object.fromEntries(this.nodes.map(({id:e,position:t})=>[e,t])),{from:e,to:t},`down`,e=>this.boxes.get(e)??{w:260,h:160}));this.edges=[...this.edges.filter(e=>e.id!==n.id),n]}cut(e,t){this.edges=this.edges.filter(n=>n.id!==`${e}>${t}`)}remove(e){this.nodes=this.nodes.filter(t=>t.id!==e),this.edges=this.edges.filter(t=>t.source!==e&&t.target!==e)}edit(e,t,n=!1){if(this.name!==e){let r=this.own.find(t=>t.name===e)??this.team.find(t=>t.name===e)??(n?{name:e,version:1,nodes:{},edges:[]}:void 0);if(!r)return!1;let i={...Ns(r,t),name:e};if(JSON.stringify(i)===JSON.stringify(r))return!1;let a=this.own.some(t=>t.name===e);return this.own=a?this.own.map(t=>t.name===e?i:t):[...this.own,i],!0}let r=this.content(),i=e=>this.cards.some(t=>t.id===e);for(let e of t.remove??[])this.remove(e);for(let e of t.add??[])this.add(e);for(let[e,n]of Object.entries(t.branch??{}))this.set(e,{branch:n});for(let[e,n]of Object.entries(t.note??{}))this.set(e,{note:n});for(let{from:e,to:n}of t.uncable??[])this.cut(e,n);for(let{from:e,to:n}of t.cable??[])i(e)&&i(n)&&!this.edges.some(t=>t.id===`${e}>${n}`)&&this.connect(e,n);return t.arrange&&(this.opened=`arrange`),this.content()!==r||!!t.arrange}#ke={key:``,version:0};arrange(e=e=>this.boxes.get(e)??{w:260,h:160}){let t=()=>JSON.stringify(this.nodes.map(({id:e,position:t})=>[e,t.x,t.y])),n=t(),r=n===this.#ke.key?this.#ke.version+1:0;for(let i=0;i<Ls.length;i++,r++){let[i,a]=Ls[r%Ls.length]??Ls[0];if(this.#Ae(e,i,a),t()!==n)break}this.#ke={key:t(),version:r}}#Ae(e,t,n){let r=this.cables.map(({from:e,to:t})=>({from:e,to:t})),i=e=>t===`down`&&r.some(t=>t.from===e)?`right`:`bottom`,a=n=>{let i=this.ledBy(n).filter(e=>this.ownedBy(n).includes(e)).map(e=>this.infraBoxes.get(e)??zs),{w:a,h:o}=e(n);if(!i.length)return{w:a,h:o};let s=i.reduce((e,t)=>e+t.h+zs.gap/2,0),c=Math.max(...i.map(e=>e.w));return t===`down`&&r.some(e=>e.from===n)?{w:a+zs.gap+c,h:Math.max(o,s)}:{w:Math.max(a,c),h:o+s}},o=new Map(this.nodes.flatMap(e=>this.ownedBy(e.id).map(t=>[t,e.id]))),s=this.infra.filter(e=>e.type!==`tunnel`&&!o.has(e.id)).map(e=>e.id),c=e=>s.includes(e)||this.cards.some(t=>t.id===e),l=e=>o.get(e)??e,u=this.flows.map(({from:e,to:t})=>({from:l(e),to:l(t)})).filter(({from:e,to:t})=>e!==t&&c(e)&&c(t)),d=wo([...this.nodes.map(e=>e.id),...s],[...r,...u],e=>s.includes(e)?this.infraBoxes.get(e)??{w:220,h:70}:a(e),t,n,{pad:Hs,anchor:n=>s.includes(n)?void 0:t===`down`?e(n).w/2:Us/2}),f=Object.fromEntries(this.nodes.filter(e=>this.ownedBy(e.id).length).map(e=>[e.id,i(e.id)])),p=r.map(n=>({...n,...To(d,n,t,e,f)}));Bo(p,t=>({...d[t]??{x:0,y:0},...e(t)})),this.nodes=this.nodes.map(e=>({...e,position:d[e.id]??e.position})),this.edges=p.map(({from:e,to:t,...n})=>Gs(e,t,n));let m=this.infra.map(e=>{let t=d[e.id];return t?{...e,position:t}:e});for(let t of this.nodes)m=this.#W(t.id,m,e(t.id),!0,f[t.id]);this.infra=m}},qs={waiting:`Waiting`,building:`Building`,running:`Running`,unhealthy:`Unhealthy`,exited:`Exited`,"failed-to-start":`Failed to start`,"secret-missing":`Secret missing`},Js={waiting:e=>e||`Waiting.`,building:e=>`Building. ${e}`,running:()=>``,unhealthy:e=>`Unhealthy: ${e}`,exited:e=>`Exited. ${e}`,"failed-to-start":e=>`Failed to start: ${e}`,"secret-missing":e=>`Secret missing: ${e}. Set it under Credentials.`},Q=new class{#e=N(null);get status(){return B(this.#e)}set status(e){P(this.#e,e)}#t=N(!1);get asked(){return B(this.#t)}set asked(e){P(this.#t,e,!0)}#n;#r=``;watch(){let e=!1,t=async()=>{if(!(document.hidden||e)){e=!0;try{let e=await fetch(`data/status.json`),t=e.ok?await e.text():this.#r;t!==this.#r&&(this.#r=t,this.status=JSON.parse(t))}catch{}e=!1,this.asked||requestAnimationFrame(()=>requestAnimationFrame(()=>this.asked=!0))}};t(),clearInterval(this.#n),this.#n=setInterval(()=>void t(),1500)}sent(e){let{live:t,progress:n}=this.status??{},r=!t?.env||t.env===Z.env;return!!t?.nodes?.[e]&&r||!!n?.apps?.includes(e)&&n.env===Z.env}#i(e){return this.sent(e)?this.status?.apps?.[e]:void 0}up(e){let t=this.#i(e);return t?t.running?t.running.length>0:t.listening??null:null}state(e){let t=this.#i(e);if(t?.state)return t.state;if(!this.sent(e)||this.up(e))return null;let n=(this.status?.secrets?.[e]?.[Z.env]??[]).filter(e=>!e.stored).map(e=>e.name);return n.length?{state:`secret-missing`,detail:n.join(`, `)}:null}stateSaid(e){let t=this.state(e);return t?Js[t.state](t.detail).trim():``}about(e){let t=this.#i(e);if(t?.running)return this.where(e);if(t?.listening===void 0)return``;let n=String(t.port??``);return t.listening?`Running on port ${n}`:`Nothing is listening on port ${n}`}where(e){let t=this.#i(e);if(!t?.running){let n=this.status?.apps?.[e],r=n?.running?n.running.length>0:n?.listening===!0,i=(this.status?.live?.env??``).toUpperCase();return!t&&r&&this.status?.live?.nodes?.[e]?`Running for your ${i} board, not this one. Run switches it.`:``}let[n]=t.running;if(!n)return`Not running on a simulator or device`;let r={ios:`iOS simulator`,android:`Android`}[n.platform]??n.platform,i=n.source?`, started from ${n.source===`ide`?`your IDE`:`Koppler`}`:``,a=t.running.length>1?`, and ${String(t.running.length-1)} more`:``;return`Running on ${n.device} (${r})${n.flavor?`, ${n.flavor}`:``}${i}${a}`}steps(e){let t=this.#i(e)?.steps??[],n=this.up(e);return n===!0?t.map(e=>(e.label===`Start`||e.label===`Check`)&&(e.state===`user`||e.state===`todo`)?{label:e.label,state:`done`,detail:`Running.`}:e):n===!1?t.map(e=>e.label===`Check`&&e.state===`done`?{...e,state:`todo`,detail:`Not running right now.`}:e):t}hasLog(e){return!!this.status?.apps?.[e]?.logTail}tail(e){return this.status?.apps?.[e]?.logTail??``}tunnel(e,t){return t.some(e=>this.sent(e))?this.status?.ports?.[e]:void 0}};function Ys(e){let t=t=>e.find(e=>e.state===t),[n,r,i]=[t(`failed`),t(`user`),t(`todo`)];return n?[`failed`,`Failed: ${n.label}`]:r?[`user`,`Waiting on you: ${r.label}`]:i?[`todo`,`Next: ${i.label}`]:[`done`,`All steps done`]}var Xs=(e,t)=>io(e,t,!0),Zs=e=>{if(e.matches(`.svelte-flow__pane`))return`the empty board`;let t=e.matches(`input[type="radio"], input[type="checkbox"]`)&&e.closest(`label`)||e.closest(`button, a, [role="button"], [role="option"], [role="radio"], [role="menuitem"], label, input, select, summary, .svelte-flow__node, .svelte-flow__edge`)||e,n=t instanceof HTMLInputElement||t instanceof HTMLSelectElement?t.labels?.[0]:null,r=(t.getAttribute(`aria-label`)??t.getAttribute(`title`)??(n??t).textContent).replace(/\s+/g,` `).trim().slice(0,80),i=t.closest(`.svelte-flow__node, .svelte-flow__edge`)?.getAttribute(`data-id`)??``;return`${t.tagName.toLowerCase()}${r?` "${r}"`:``}${i?` in ${i}`:``}`},Qs=e=>!!e.closest(`[type="password"], [data-secret]`),$s=new class{#e=N(!1);#t=[];#n;get forced(){return!!Q.status?.dev}get on(){return B(this.#e)||this.forced}set on(e){P(this.#e,e,!0);try{localStorage.setItem(`koppler-debug`,e?`on`:`off`)}catch{}e&&this.note(`debug`,`Debug log on`)}note(e,t,n){if(!this.on)return;let r={apps:Z.nodes.length,cables:Z.edges.length,view:Z.live?`live`:`edit`,env:Z.env,zoom:Math.round((Z.view?.zoom??1)*100)/100};this.#t.push({at:new Date().toISOString(),kind:e,what:t,...n&&{detail:n.slice(0,300)},board:r}),clearTimeout(this.#n),this.#n=setTimeout(()=>{this.flush()},1500)}flush(){let e=this.#t.splice(0);e.length&&Xs(`debug-log`,{entries:e})}async read(){return this.flush(),await new Promise(e=>setTimeout(e,300)),(await fetch(`temp/debug.jsonl?${String(Date.now())}`).then(e=>e.ok?e.text():``).catch(()=>``)).trim().split(`
|
|
4
|
+
`).slice(-300).join(`
|
|
5
|
+
`)}clear(){this.#t=[],Xs(`debug-clear`,{})}watch(){try{P(this.#e,localStorage.getItem(`koppler-debug`)===`on`)}catch{}let e={capture:!0};addEventListener(`click`,e=>{e.target instanceof Element&&!Qs(e.target)&&this.note(`click`,Zs(e.target))},e),addEventListener(`change`,e=>{let t=e.target;if(!(t instanceof Element)||Qs(t))return;let n=t instanceof HTMLInputElement&&t.type===`checkbox`?String(t.checked):t instanceof HTMLSelectElement||t instanceof HTMLInputElement&&t.type===`radio`?t.value:`(typed)`;this.note(`change`,Zs(t),n)},e),addEventListener(`keydown`,e=>{let t=e.target instanceof Element&&!!e.target.closest(`input:not([type="radio"]):not([type="checkbox"]), textarea, select, [contenteditable]`);if(!e.metaKey&&!e.ctrlKey&&t||e.key.length>12)return;let n=[e.metaKey&&`Cmd`,e.ctrlKey&&`Ctrl`,e.shiftKey&&`Shift`,e.altKey&&`Alt`,e.key];this.note(`key`,n.filter(Boolean).join(`+`))},e),addEventListener(`error`,e=>{this.note(`error`,e.message||`page error`,e.filename?`${e.filename.split(`/`).pop()??``}:${String(e.lineno)}`:``)}),addEventListener(`unhandledrejection`,e=>{let t=e.reason,n=t instanceof Error?t.message:typeof t==`string`?t:``;this.note(`error`,n||`unhandled rejection`)}),addEventListener(`pagehide`,()=>{this.flush()})}},$=new class{#e=N(null);get now(){return B(this.#e)}set now(e){P(this.#e,e)}#t;show(e,t=`message`,n){clearTimeout(this.#t),$s.note(t,e),this.now={text:e,warning:t===`warning`,...n&&{action:n}},t!==`warning`&&(this.#t=setTimeout(()=>this.now=null,n?7e3:2600))}hide(){clearTimeout(this.#t),this.now=null}};async function ec(e,t={}){let n=await oo(`app-command`,{app:e.app,command:e.key,args:t});return`error`in n?n.error:($.show(`${e.command.label} started on ${e.appName}. The inbox says when it ends.`),null)}var tc=U(`<p class="ask svelte-gr1w3a"> </p>`),nc=U(`<span class="opt svelte-gr1w3a">optional</span>`),rc=U(`<option> </option>`),ic=U(`<select class="svelte-gr1w3a"></select>`),ac=U(`<input class="svelte-gr1w3a"/>`),oc=U(`<label class="svelte-gr1w3a"><span> <!></span> <!></label>`),sc=U(`<button class="x svelte-gr1w3a" type="button" aria-label="Close"><!></button> <h2 id="command-title" class="svelte-gr1w3a"> </h2> <!> <form class="svelte-gr1w3a"><!> <p class="error svelte-gr1w3a" role="alert"> </p> <div class="acts svelte-gr1w3a"><button type="button" class="svelte-gr1w3a">Cancel</button> <button type="submit"> </button></div></form>`,1),cc=U(`<dialog aria-labelledby="command-title" class="svelte-gr1w3a"><!></dialog>`);function lc(e,t){A(t,!0);let n=N(void 0),r=N(null),i=N(fn({})),a=N(``),o=N(!1);function s(e){P(r,e),P(i,Object.fromEntries((e.command.args??[]).map(e=>[e.name,e.choices?.[0]??``])),!0),P(a,``),B(n)?.showModal()}let c=async e=>{e.preventDefault(),B(r)&&(P(o,!0),P(a,await ec(B(r),B(i))??``,!0),P(o,!1),B(a)||B(n)?.close())};var l={open:s},u=cc(),d=F(u),f=e=>{let t=M(()=>B(r));var s=sc(),l=I(s);Ua(F(l),{get of(){return to},size:14}),k(l);var u=R(l,2),d=L(u),f=R(u,2),p=e=>{var n=tc(),r=L(n,!0);z(()=>G(r,B(t).command.confirm)),W(e,n)};K(f,e=>{B(t).command.confirm&&e(p)});var m=R(f,2),h=F(m);q(h,17,()=>B(t).command.args??[],e=>e.name,(e,t)=>{var n=oc(),r=F(n),a=F(r,!0),o=R(a),s=e=>{W(e,nc())};K(o,e=>{B(t).required||e(s)}),k(r);var c=R(r,2),l=e=>{var n=ic();q(n,20,()=>B(t).choices??[],e=>e,(e,t)=>{var n=rc(),r=L(n,!0),i={};z(()=>{G(r,t),i!==(i=t)&&(n.value=(n.__value=i)??``)}),W(e,n)}),k(n),$i(n),ea(n,()=>B(i)[B(t).name],e=>B(i)[B(t).name]=e),W(e,n)},u=e=>{var n=ac();fa(n),z(()=>{n.required=!!B(t).required,Y(n,`inputmode`,B(t).type===`number`?`decimal`:void 0),Y(n,`pattern`,B(t).type===`number`?`-?\\d+(\\.\\d+)?`:void 0)}),ba(n,()=>B(i)[B(t).name],e=>B(i)[B(t).name]=e),W(e,n)};K(c,e=>{B(t).type===`choice`?e(l):e(u,-1)}),k(n),z(()=>G(a,B(t).label??B(t).name)),W(e,n)});var g=R(h,2),_=L(g,!0),v=R(g,2),y=F(v),b=R(y,2);let x;var S=L(b,!0);k(v),k(m),z(()=>{G(d,`${B(t).command.label??``} on ${B(t).appName??``}`),G(_,B(a)),x=J(b,1,`go svelte-gr1w3a`,null,x,{danger:!!B(t).command.confirm}),b.disabled=B(o),G(S,B(t).command.label)}),H(`click`,l,()=>B(n)?.close()),V(`submit`,m,c),H(`click`,y,()=>B(n)?.close()),W(e,s)};return K(d,e=>{B(r)&&e(f)}),k(u),Aa(u,e=>P(n,e),()=>B(n)),W(e,u),j(l)}Xr([`click`]);var uc=new Set([`$$slots`,`$$events`,`$$legacy`]);function dc(e,t){let n=La(t,uc),r={name:`panel-left`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`}],[`path`,{d:`M9 3v18`}]],aliases:[`sidebar`]};$a(e,za(()=>n,{get icon(){return r}}))}var fc=new Set([`$$slots`,`$$events`,`$$legacy`]);function pc(e,t){let n=La(t,fc),r={name:`settings`,size:24,node:[[`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`}]]};$a(e,za(()=>n,{get icon(){return r}}))}function mc(e,t){let n=X(t,`size`,3,14);Ua(e,{get of(){return pc},get size(){return n()}})}var hc=U(`<span class="cmd nodrag nopan svelte-1mrkr86"><code class="svelte-1mrkr86"> </code> <button type="button" title="Copy this command" class="svelte-1mrkr86"> </button></span>`);function gc(e,t){A(t,!0);let n=N(!1),r=async()=>{await navigator.clipboard.writeText(t.command).then(()=>!0,()=>!1)?(P(n,!0),setTimeout(()=>P(n,!1),1500)):$.show(`Copy is blocked here. Select the command and copy it.`,`warning`)};var i=hc(),a=F(i),o=L(a,!0),s=R(a,2),c=L(s,!0);k(i),z(()=>{G(o,t.command),Y(s,`aria-label`,t.label),G(c,B(n)?`Copied`:`Copy`)}),H(`click`,s,r),W(e,i),j()}Xr([`click`]);var _c={value:()=>{}};function vc(){for(var e=0,t=arguments.length,n={},r;e<t;++e){if(!(r=arguments[e]+``)||r in n||/[\s.]/.test(r))throw Error(`illegal type: `+r);n[r]=[]}return new yc(n)}function yc(e){this._=e}function bc(e,t){return e.trim().split(/^|\s+/).map(function(e){var n=``,r=e.indexOf(`.`);if(r>=0&&(n=e.slice(r+1),e=e.slice(0,r)),e&&!t.hasOwnProperty(e))throw Error(`unknown type: `+e);return{type:e,name:n}})}yc.prototype=vc.prototype={constructor:yc,on:function(e,t){var n=this._,r=bc(e+``,n),i,a=-1,o=r.length;if(arguments.length<2){for(;++a<o;)if((i=(e=r[a]).type)&&(i=xc(n[i],e.name)))return i}else{if(t!=null&&typeof t!=`function`)throw Error(`invalid callback: `+t);for(;++a<o;)if(i=(e=r[a]).type)n[i]=Sc(n[i],e.name,t);else if(t==null)for(i in n)n[i]=Sc(n[i],e.name,null);return this}},copy:function(){var e={},t=this._;for(var n in t)e[n]=t[n].slice();return new yc(e)},call:function(e,t){if((i=arguments.length-2)>0)for(var n=Array(i),r=0,i,a;r<i;++r)n[r]=arguments[r+2];if(!this._.hasOwnProperty(e))throw Error(`unknown type: `+e);for(a=this._[e],r=0,i=a.length;r<i;++r)a[r].value.apply(t,n)},apply:function(e,t,n){if(!this._.hasOwnProperty(e))throw Error(`unknown type: `+e);for(var r=this._[e],i=0,a=r.length;i<a;++i)r[i].value.apply(t,n)}};function xc(e,t){for(var n=0,r=e.length,i;n<r;++n)if((i=e[n]).name===t)return i.value}function Sc(e,t,n){for(var r=0,i=e.length;r<i;++r)if(e[r].name===t){e[r]=_c,e=e.slice(0,r).concat(e.slice(r+1));break}return n!=null&&e.push({name:t,value:n}),e}var Cc={svg:`http://www.w3.org/2000/svg`,xhtml:`http://www.w3.org/1999/xhtml`,xlink:`http://www.w3.org/1999/xlink`,xml:`http://www.w3.org/XML/1998/namespace`,xmlns:`http://www.w3.org/2000/xmlns/`};function wc(e){var t=e+=``,n=t.indexOf(`:`);return n>=0&&(t=e.slice(0,n))!==`xmlns`&&(e=e.slice(n+1)),Cc.hasOwnProperty(t)?{space:Cc[t],local:e}:e}function Tc(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===`http://www.w3.org/1999/xhtml`&&t.documentElement.namespaceURI===`http://www.w3.org/1999/xhtml`?t.createElement(e):t.createElementNS(n,e)}}function Ec(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function Dc(e){var t=wc(e);return(t.local?Ec:Tc)(t)}function Oc(){}function kc(e){return e==null?Oc:function(){return this.querySelector(e)}}function Ac(e){typeof e!=`function`&&(e=kc(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=Array(o),c,l,u=0;u<o;++u)(c=a[u])&&(l=e.call(c,c.__data__,u,a))&&(`__data__`in c&&(l.__data__=c.__data__),s[u]=l);return new vu(r,this._parents)}function jc(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function Mc(){return[]}function Nc(e){return e==null?Mc:function(){return this.querySelectorAll(e)}}function Pc(e){return function(){return jc(e.apply(this,arguments))}}function Fc(e){e=typeof e==`function`?Pc(e):Nc(e);for(var t=this._groups,n=t.length,r=[],i=[],a=0;a<n;++a)for(var o=t[a],s=o.length,c,l=0;l<s;++l)(c=o[l])&&(r.push(e.call(c,c.__data__,l,o)),i.push(c));return new vu(r,i)}function Ic(e){return function(){return this.matches(e)}}function Lc(e){return function(t){return t.matches(e)}}var Rc=Array.prototype.find;function zc(e){return function(){return Rc.call(this.children,e)}}function Bc(){return this.firstElementChild}function Vc(e){return this.select(e==null?Bc:zc(typeof e==`function`?e:Lc(e)))}var Hc=Array.prototype.filter;function Uc(){return Array.from(this.children)}function Wc(e){return function(){return Hc.call(this.children,e)}}function Gc(e){return this.selectAll(e==null?Uc:Wc(typeof e==`function`?e:Lc(e)))}function Kc(e){typeof e!=`function`&&(e=Ic(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=[],c,l=0;l<o;++l)(c=a[l])&&e.call(c,c.__data__,l,a)&&s.push(c);return new vu(r,this._parents)}function qc(e){return Array(e.length)}function Jc(){return new vu(this._enter||this._groups.map(qc),this._parents)}function Yc(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}Yc.prototype={constructor:Yc,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};function Xc(e){return function(){return e}}function Zc(e,t,n,r,i,a){for(var o=0,s,c=t.length,l=a.length;o<l;++o)(s=t[o])?(s.__data__=a[o],r[o]=s):n[o]=new Yc(e,a[o]);for(;o<c;++o)(s=t[o])&&(i[o]=s)}function Qc(e,t,n,r,i,a,o){var s,c,l=new Map,u=t.length,d=a.length,f=Array(u),p;for(s=0;s<u;++s)(c=t[s])&&(f[s]=p=o.call(c,c.__data__,s,t)+``,l.has(p)?i[s]=c:l.set(p,c));for(s=0;s<d;++s)p=o.call(e,a[s],s,a)+``,(c=l.get(p))?(r[s]=c,c.__data__=a[s],l.delete(p)):n[s]=new Yc(e,a[s]);for(s=0;s<u;++s)(c=t[s])&&l.get(f[s])===c&&(i[s]=c)}function $c(e){return e.__data__}function el(e,t){if(!arguments.length)return Array.from(this,$c);var n=t?Qc:Zc,r=this._parents,i=this._groups;typeof e!=`function`&&(e=Xc(e));for(var a=i.length,o=Array(a),s=Array(a),c=Array(a),l=0;l<a;++l){var u=r[l],d=i[l],f=d.length,p=tl(e.call(u,u&&u.__data__,l,r)),m=p.length,h=s[l]=Array(m),g=o[l]=Array(m);n(u,d,h,g,c[l]=Array(f),p,t);for(var _=0,v=0,y,b;_<m;++_)if(y=h[_]){for(_>=v&&(v=_+1);!(b=g[v])&&++v<m;);y._next=b||null}}return o=new vu(o,r),o._enter=s,o._exit=c,o}function tl(e){return typeof e==`object`&&`length`in e?e:Array.from(e)}function nl(){return new vu(this._exit||this._groups.map(qc),this._parents)}function rl(e,t,n){var r=this.enter(),i=this,a=this.exit();return typeof e==`function`?(r=e(r),r&&=r.selection()):r=r.append(e+``),t!=null&&(i=t(i),i&&=i.selection()),n==null?a.remove():n(a),r&&i?r.merge(i).order():i}function il(e){for(var t=e.selection?e.selection():e,n=this._groups,r=t._groups,i=n.length,a=r.length,o=Math.min(i,a),s=Array(i),c=0;c<o;++c)for(var l=n[c],u=r[c],d=l.length,f=s[c]=Array(d),p,m=0;m<d;++m)(p=l[m]||u[m])&&(f[m]=p);for(;c<i;++c)s[c]=n[c];return new vu(s,this._parents)}function al(){for(var e=this._groups,t=-1,n=e.length;++t<n;)for(var r=e[t],i=r.length-1,a=r[i],o;--i>=0;)(o=r[i])&&(a&&o.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(o,a),a=o);return this}function ol(e){e||=sl;function t(t,n){return t&&n?e(t.__data__,n.__data__):!t-!n}for(var n=this._groups,r=n.length,i=Array(r),a=0;a<r;++a){for(var o=n[a],s=o.length,c=i[a]=Array(s),l,u=0;u<s;++u)(l=o[u])&&(c[u]=l);c.sort(t)}return new vu(i,this._parents).order()}function sl(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function cl(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function ll(){return Array.from(this)}function ul(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],i=0,a=r.length;i<a;++i){var o=r[i];if(o)return o}return null}function dl(){let e=0;for(let t of this)++e;return e}function fl(){return!this.node()}function pl(e){for(var t=this._groups,n=0,r=t.length;n<r;++n)for(var i=t[n],a=0,o=i.length,s;a<o;++a)(s=i[a])&&e.call(s,s.__data__,a,i);return this}function ml(e){return function(){this.removeAttribute(e)}}function hl(e){return function(){this.removeAttributeNS(e.space,e.local)}}function gl(e,t){return function(){this.setAttribute(e,t)}}function _l(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function vl(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttribute(e):this.setAttribute(e,n)}}function yl(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}}function bl(e,t){var n=wc(e);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((t==null?n.local?hl:ml:typeof t==`function`?n.local?yl:vl:n.local?_l:gl)(n,t))}function xl(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function Sl(e){return function(){this.style.removeProperty(e)}}function Cl(e,t,n){return function(){this.style.setProperty(e,t,n)}}function wl(e,t,n){return function(){var r=t.apply(this,arguments);r==null?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}function Tl(e,t,n){return arguments.length>1?this.each((t==null?Sl:typeof t==`function`?wl:Cl)(e,t,n??``)):El(this.node(),e)}function El(e,t){return e.style.getPropertyValue(t)||xl(e).getComputedStyle(e,null).getPropertyValue(t)}function Dl(e){return function(){delete this[e]}}function Ol(e,t){return function(){this[e]=t}}function kl(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function Al(e,t){return arguments.length>1?this.each((t==null?Dl:typeof t==`function`?kl:Ol)(e,t)):this.node()[e]}function jl(e){return e.trim().split(/^|\s+/)}function Ml(e){return e.classList||new Nl(e)}function Nl(e){this._node=e,this._names=jl(e.getAttribute(`class`)||``)}Nl.prototype={add:function(e){this._names.indexOf(e)<0&&(this._names.push(e),this._node.setAttribute(`class`,this._names.join(` `)))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute(`class`,this._names.join(` `)))},contains:function(e){return this._names.indexOf(e)>=0}};function Pl(e,t){for(var n=Ml(e),r=-1,i=t.length;++r<i;)n.add(t[r])}function Fl(e,t){for(var n=Ml(e),r=-1,i=t.length;++r<i;)n.remove(t[r])}function Il(e){return function(){Pl(this,e)}}function Ll(e){return function(){Fl(this,e)}}function Rl(e,t){return function(){(t.apply(this,arguments)?Pl:Fl)(this,e)}}function zl(e,t){var n=jl(e+``);if(arguments.length<2){for(var r=Ml(this.node()),i=-1,a=n.length;++i<a;)if(!r.contains(n[i]))return!1;return!0}return this.each((typeof t==`function`?Rl:t?Il:Ll)(n,t))}function Bl(){this.textContent=``}function Vl(e){return function(){this.textContent=e}}function Hl(e){return function(){var t=e.apply(this,arguments);this.textContent=t??``}}function Ul(e){return arguments.length?this.each(e==null?Bl:(typeof e==`function`?Hl:Vl)(e)):this.node().textContent}function Wl(){this.innerHTML=``}function Gl(e){return function(){this.innerHTML=e}}function Kl(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??``}}function ql(e){return arguments.length?this.each(e==null?Wl:(typeof e==`function`?Kl:Gl)(e)):this.node().innerHTML}function Jl(){this.nextSibling&&this.parentNode.appendChild(this)}function Yl(){return this.each(Jl)}function Xl(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Zl(){return this.each(Xl)}function Ql(e){var t=typeof e==`function`?e:Dc(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function $l(){return null}function eu(e,t){var n=typeof e==`function`?e:Dc(e),r=t==null?$l:typeof t==`function`?t:kc(t);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function tu(){var e=this.parentNode;e&&e.removeChild(this)}function nu(){return this.each(tu)}function ru(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function iu(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function au(e){return this.select(e?iu:ru)}function ou(e){return arguments.length?this.property(`__data__`,e):this.node().__data__}function su(e){return function(t){e.call(this,t,this.__data__)}}function cu(e){return e.trim().split(/^|\s+/).map(function(e){var t=``,n=e.indexOf(`.`);return n>=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}})}function lu(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,i=t.length,a;n<i;++n)a=t[n],(!e.type||a.type===e.type)&&a.name===e.name?this.removeEventListener(a.type,a.listener,a.options):t[++r]=a;++r?t.length=r:delete this.__on}}}function uu(e,t,n){return function(){var r=this.__on,i,a=su(t);if(r){for(var o=0,s=r.length;o<s;++o)if((i=r[o]).type===e.type&&i.name===e.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=a,i.options=n),i.value=t;return}}this.addEventListener(e.type,a,n),i={type:e.type,name:e.name,value:t,listener:a,options:n},r?r.push(i):this.__on=[i]}}function du(e,t,n){var r=cu(e+``),i,a=r.length,o;if(arguments.length<2){var s=this.node().__on;if(s){for(var c=0,l=s.length,u;c<l;++c)for(i=0,u=s[c];i<a;++i)if((o=r[i]).type===u.type&&o.name===u.name)return u.value}}else{for(s=t?uu:lu,i=0;i<a;++i)this.each(s(r[i],t,n));return this}}function fu(e,t,n){var r=xl(e),i=r.CustomEvent;typeof i==`function`?i=new i(t,n):(i=r.document.createEvent(`Event`),n?(i.initEvent(t,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(t,!1,!1)),e.dispatchEvent(i)}function pu(e,t){return function(){return fu(this,e,t)}}function mu(e,t){return function(){return fu(this,e,t.apply(this,arguments))}}function hu(e,t){return this.each((typeof t==`function`?mu:pu)(e,t))}function*gu(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],i=0,a=r.length,o;i<a;++i)(o=r[i])&&(yield o)}var _u=[null];function vu(e,t){this._groups=e,this._parents=t}function yu(){return new vu([[document.documentElement]],_u)}function bu(){return this}vu.prototype=yu.prototype={constructor:vu,select:Ac,selectAll:Fc,selectChild:Vc,selectChildren:Gc,filter:Kc,data:el,enter:Jc,exit:nl,join:rl,merge:il,selection:bu,order:al,sort:ol,call:cl,nodes:ll,node:ul,size:dl,empty:fl,each:pl,attr:bl,style:Tl,property:Al,classed:zl,text:Ul,html:ql,raise:Yl,lower:Zl,append:Ql,insert:eu,remove:nu,clone:au,datum:ou,on:du,dispatch:hu,[Symbol.iterator]:gu};function xu(e){return typeof e==`string`?new vu([[document.querySelector(e)]],[document.documentElement]):new vu([[e]],_u)}function Su(e){let t;for(;t=e.sourceEvent;)e=t;return e}function Cu(e,t){if(e=Su(e),t===void 0&&(t=e.currentTarget),t){var n=t.ownerSVGElement||t;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=e.clientX,r.y=e.clientY,r=r.matrixTransform(t.getScreenCTM().inverse()),[r.x,r.y]}if(t.getBoundingClientRect){var i=t.getBoundingClientRect();return[e.clientX-i.left-t.clientLeft,e.clientY-i.top-t.clientTop]}}return[e.pageX,e.pageY]}var wu={passive:!1},Tu={capture:!0,passive:!1};function Eu(e){e.stopImmediatePropagation()}function Du(e){e.preventDefault(),e.stopImmediatePropagation()}function Ou(e){var t=e.document.documentElement,n=xu(e).on(`dragstart.drag`,Du,Tu);`onselectstart`in t?n.on(`selectstart.drag`,Du,Tu):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect=`none`)}function ku(e,t){var n=e.document.documentElement,r=xu(e).on(`dragstart.drag`,null);t&&(r.on(`click.drag`,Du,Tu),setTimeout(function(){r.on(`click.drag`,null)},0)),`onselectstart`in n?r.on(`selectstart.drag`,null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}var Au=e=>()=>e;function ju(e,{sourceEvent:t,subject:n,target:r,identifier:i,active:a,x:o,y:s,dx:c,dy:l,dispatch:u}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:a,enumerable:!0,configurable:!0},x:{value:o,enumerable:!0,configurable:!0},y:{value:s,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:l,enumerable:!0,configurable:!0},_:{value:u}})}ju.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function Mu(e){return!e.ctrlKey&&!e.button}function Nu(){return this.parentNode}function Pu(e,t){return t??{x:e.x,y:e.y}}function Fu(){return navigator.maxTouchPoints||`ontouchstart`in this}function Iu(){var e=Mu,t=Nu,n=Pu,r=Fu,i={},a=vc(`start`,`drag`,`end`),o=0,s,c,l,u,d=0;function f(e){e.on(`mousedown.drag`,p).filter(r).on(`touchstart.drag`,g).on(`touchmove.drag`,_,wu).on(`touchend.drag touchcancel.drag`,v).style(`touch-action`,`none`).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}function p(n,r){if(!u&&e.call(this,n,r)){var i=y(this,t.call(this,n,r),n,r,`mouse`);i&&(xu(n.view).on(`mousemove.drag`,m,Tu).on(`mouseup.drag`,h,Tu),Ou(n.view),Eu(n),l=!1,s=n.clientX,c=n.clientY,i(`start`,n))}}function m(e){if(Du(e),!l){var t=e.clientX-s,n=e.clientY-c;l=t*t+n*n>d}i.mouse(`drag`,e)}function h(e){xu(e.view).on(`mousemove.drag mouseup.drag`,null),ku(e.view,l),Du(e),i.mouse(`end`,e)}function g(n,r){if(e.call(this,n,r))for(var i=n.changedTouches,a=t.call(this,n,r),o=i.length,s=0,c;s<o;++s)(c=y(this,a,n,r,i[s].identifier,i[s]))&&(Eu(n),c(`start`,n,i[s]))}function _(e){for(var t=e.changedTouches,n=t.length,r=0,a;r<n;++r)(a=i[t[r].identifier])&&(Du(e),a(`drag`,e,t[r]))}function v(e){var t=e.changedTouches,n=t.length,r,a;for(u&&clearTimeout(u),u=setTimeout(function(){u=null},500),r=0;r<n;++r)(a=i[t[r].identifier])&&(Eu(e),a(`end`,e,t[r]))}function y(e,t,r,s,c,l){var u=a.copy(),d=Cu(l||r,t),p,m,h;if((h=n.call(e,new ju(`beforestart`,{sourceEvent:r,target:f,identifier:c,active:o,x:d[0],y:d[1],dx:0,dy:0,dispatch:u}),s))!=null)return p=h.x-d[0]||0,m=h.y-d[1]||0,function n(r,a,l){var g=d,_;switch(r){case`start`:i[c]=n,_=o++;break;case`end`:delete i[c],--o;case`drag`:d=Cu(l||a,t),_=o}u.call(r,e,new ju(r,{sourceEvent:a,subject:h,target:f,identifier:c,active:_,x:d[0]+p,y:d[1]+m,dx:d[0]-g[0],dy:d[1]-g[1],dispatch:u}),s)}}return f.filter=function(t){return arguments.length?(e=typeof t==`function`?t:Au(!!t),f):e},f.container=function(e){return arguments.length?(t=typeof e==`function`?e:Au(e),f):t},f.subject=function(e){return arguments.length?(n=typeof e==`function`?e:Au(e),f):n},f.touchable=function(e){return arguments.length?(r=typeof e==`function`?e:Au(!!e),f):r},f.on=function(){var e=a.on.apply(a,arguments);return e===a?f:e},f.clickDistance=function(e){return arguments.length?(d=(e=+e)*e,f):Math.sqrt(d)},f}function Lu(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function Ru(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function zu(){}var Bu=.7,Vu=1/Bu,Hu=`\\s*([+-]?\\d+)\\s*`,Uu=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*`,Wu=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*`,Gu=/^#([0-9a-f]{3,8})$/,Ku=RegExp(`^rgb\\(${Hu},${Hu},${Hu}\\)$`),qu=RegExp(`^rgb\\(${Wu},${Wu},${Wu}\\)$`),Ju=RegExp(`^rgba\\(${Hu},${Hu},${Hu},${Uu}\\)$`),Yu=RegExp(`^rgba\\(${Wu},${Wu},${Wu},${Uu}\\)$`),Xu=RegExp(`^hsl\\(${Uu},${Wu},${Wu}\\)$`),Zu=RegExp(`^hsla\\(${Uu},${Wu},${Wu},${Uu}\\)$`),Qu={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Lu(zu,rd,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:$u,formatHex:$u,formatHex8:ed,formatHsl:td,formatRgb:nd,toString:nd});function $u(){return this.rgb().formatHex()}function ed(){return this.rgb().formatHex8()}function td(){return gd(this).formatHsl()}function nd(){return this.rgb().formatRgb()}function rd(e){var t,n;return e=(e+``).trim().toLowerCase(),(t=Gu.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?id(t):n===3?new cd(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?ad(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?ad(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=Ku.exec(e))?new cd(t[1],t[2],t[3],1):(t=qu.exec(e))?new cd(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Ju.exec(e))?ad(t[1],t[2],t[3],t[4]):(t=Yu.exec(e))?ad(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Xu.exec(e))?hd(t[1],t[2]/100,t[3]/100,1):(t=Zu.exec(e))?hd(t[1],t[2]/100,t[3]/100,t[4]):Qu.hasOwnProperty(e)?id(Qu[e]):e===`transparent`?new cd(NaN,NaN,NaN,0):null}function id(e){return new cd(e>>16&255,e>>8&255,e&255,1)}function ad(e,t,n,r){return r<=0&&(e=t=n=NaN),new cd(e,t,n,r)}function od(e){return e instanceof zu||(e=rd(e)),e?(e=e.rgb(),new cd(e.r,e.g,e.b,e.opacity)):new cd}function sd(e,t,n,r){return arguments.length===1?od(e):new cd(e,t,n,r??1)}function cd(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}Lu(cd,sd,Ru(zu,{brighter(e){return e=e==null?Vu:Vu**+e,new cd(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Bu:Bu**+e,new cd(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new cd(pd(this.r),pd(this.g),pd(this.b),fd(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:ld,formatHex:ld,formatHex8:ud,formatRgb:dd,toString:dd}));function ld(){return`#${md(this.r)}${md(this.g)}${md(this.b)}`}function ud(){return`#${md(this.r)}${md(this.g)}${md(this.b)}${md((isNaN(this.opacity)?1:this.opacity)*255)}`}function dd(){let e=fd(this.opacity);return`${e===1?`rgb(`:`rgba(`}${pd(this.r)}, ${pd(this.g)}, ${pd(this.b)}${e===1?`)`:`, ${e})`}`}function fd(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function pd(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function md(e){return e=pd(e),(e<16?`0`:``)+e.toString(16)}function hd(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new vd(e,t,n,r)}function gd(e){if(e instanceof vd)return new vd(e.h,e.s,e.l,e.opacity);if(e instanceof zu||(e=rd(e)),!e)return new vd;if(e instanceof vd)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n<r)*6:n===a?(r-t)/s+2:(t-n)/s+4,s/=c<.5?a+i:2-a-i,o*=60):s=c>0&&c<1?0:o,new vd(o,s,c,e.opacity)}function _d(e,t,n,r){return arguments.length===1?gd(e):new vd(e,t,n,r??1)}function vd(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}Lu(vd,_d,Ru(zu,{brighter(e){return e=e==null?Vu:Vu**+e,new vd(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Bu:Bu**+e,new vd(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new cd(xd(e>=240?e-240:e+120,i,r),xd(e,i,r),xd(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new vd(yd(this.h),bd(this.s),bd(this.l),fd(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=fd(this.opacity);return`${e===1?`hsl(`:`hsla(`}${yd(this.h)}, ${bd(this.s)*100}%, ${bd(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function yd(e){return e=(e||0)%360,e<0?e+360:e}function bd(e){return Math.max(0,Math.min(1,e||0))}function xd(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var Sd=e=>()=>e;function Cd(e,t){return function(n){return e+n*t}}function wd(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function Td(e){return(e=+e)==1?Ed:function(t,n){return n-t?wd(t,n,e):Sd(isNaN(t)?n:t)}}function Ed(e,t){var n=t-e;return n?Cd(e,n):Sd(isNaN(e)?t:e)}var Dd=(function e(t){var n=Td(t);function r(e,t){var r=n((e=sd(e)).r,(t=sd(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=Ed(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function Od(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;i<n;++i)r[i]=e[i]*(1-a)+t[i]*a;return r}}function kd(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Ad(e,t){for(var n=t?t.length:0,r=e?Math.min(n,e.length):0,i=Array(r),a=Array(n),o=0;o<r;++o)i[o]=zd(e[o],t[o]);for(;o<n;++o)a[o]=t[o];return function(e){for(o=0;o<r;++o)a[o]=i[o](e);return a}}function jd(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function Md(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function Nd(e,t){var n={},r={},i;for(i in(typeof e!=`object`||!e)&&(e={}),(typeof t!=`object`||!t)&&(t={}),t)i in e?n[i]=zd(e[i],t[i]):r[i]=t[i];return function(e){for(i in n)r[i]=n[i](e);return r}}var Pd=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Fd=new RegExp(Pd.source,`g`);function Id(e){return function(){return e}}function Ld(e){return function(t){return e(t)+``}}function Rd(e,t){var n=Pd.lastIndex=Fd.lastIndex=0,r,i,a,o=-1,s=[],c=[];for(e+=``,t+=``;(r=Pd.exec(e))&&(i=Fd.exec(t));)(a=i.index)>n&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:Md(r,i)})),n=Fd.lastIndex;return n<t.length&&(a=t.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?c[0]?Ld(c[0].x):Id(t):(t=c.length,function(e){for(var n=0,r;n<t;++n)s[(r=c[n]).i]=r.x(e);return s.join(``)})}function zd(e,t){var n=typeof t,r;return t==null||n===`boolean`?Sd(t):(n===`number`?Md:n===`string`?(r=rd(t))?(t=r,Dd):Rd:t instanceof rd?Dd:t instanceof Date?jd:kd(t)?Od:Array.isArray(t)?Ad:typeof t.valueOf!=`function`&&typeof t.toString!=`function`||isNaN(t)?Nd:Md)(e,t)}var Bd=180/Math.PI,Vd={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Hd(e,t,n,r,i,a){var o,s,c;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(c=e*n+t*r)&&(n-=e*c,r-=t*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),e*r<t*n&&(e=-e,t=-t,c=-c,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(t,e)*Bd,skewX:Math.atan(c)*Bd,scaleX:o,scaleY:s}}var Ud;function Wd(e){let t=new(typeof DOMMatrix==`function`?DOMMatrix:WebKitCSSMatrix)(e+``);return t.isIdentity?Vd:Hd(t.a,t.b,t.c,t.d,t.e,t.f)}function Gd(e){return e==null||(Ud||=document.createElementNS(`http://www.w3.org/2000/svg`,`g`),Ud.setAttribute(`transform`,e),!(e=Ud.transform.baseVal.consolidate()))?Vd:(e=e.matrix,Hd(e.a,e.b,e.c,e.d,e.e,e.f))}function Kd(e,t,n,r){function i(e){return e.length?e.pop()+` `:``}function a(e,r,i,a,o,s){if(e!==i||r!==a){var c=o.push(`translate(`,null,t,null,n);s.push({i:c-4,x:Md(e,i)},{i:c-2,x:Md(r,a)})}else(i||a)&&o.push(`translate(`+i+t+a+n)}function o(e,t,n,a){e===t?t&&n.push(i(n)+`rotate(`+t+r):(e-t>180?t+=360:t-e>180&&(e+=360),a.push({i:n.push(i(n)+`rotate(`,null,r)-2,x:Md(e,t)}))}function s(e,t,n,a){e===t?t&&n.push(i(n)+`skewX(`+t+r):a.push({i:n.push(i(n)+`skewX(`,null,r)-2,x:Md(e,t)})}function c(e,t,n,r,a,o){if(e!==n||t!==r){var s=a.push(i(a)+`scale(`,null,`,`,null,`)`);o.push({i:s-4,x:Md(e,n)},{i:s-2,x:Md(t,r)})}else(n!==1||r!==1)&&a.push(i(a)+`scale(`+n+`,`+r+`)`)}return function(t,n){var r=[],i=[];return t=e(t),n=e(n),a(t.translateX,t.translateY,n.translateX,n.translateY,r,i),o(t.rotate,n.rotate,r,i),s(t.skewX,n.skewX,r,i),c(t.scaleX,t.scaleY,n.scaleX,n.scaleY,r,i),t=n=null,function(e){for(var t=-1,n=i.length,a;++t<n;)r[(a=i[t]).i]=a.x(e);return r.join(``)}}}var qd=Kd(Wd,`px, `,`px)`,`deg)`),Jd=Kd(Gd,`, `,`)`,`)`),Yd=1e-12;function Xd(e){return((e=Math.exp(e))+1/e)/2}function Zd(e){return((e=Math.exp(e))-1/e)/2}function Qd(e){return((e=Math.exp(2*e))-1)/(e+1)}var $d=(function e(t,n,r){function i(e,i){var a=e[0],o=e[1],s=e[2],c=i[0],l=i[1],u=i[2],d=c-a,f=l-o,p=d*d+f*f,m,h;if(p<Yd)h=Math.log(u/s)/t,m=function(e){return[a+e*d,o+e*f,s*Math.exp(t*e*h)]};else{var g=Math.sqrt(p),_=(u*u-s*s+r*p)/(2*s*n*g),v=(u*u-s*s-r*p)/(2*u*n*g),y=Math.log(Math.sqrt(_*_+1)-_);h=(Math.log(Math.sqrt(v*v+1)-v)-y)/t,m=function(e){var r=e*h,i=Xd(y),c=s/(n*g)*(i*Qd(t*r+y)-Zd(y));return[a+c*d,o+c*f,s*i/Xd(t*r+y)]}}return m.duration=h*1e3*t/Math.SQRT2,m}return i.rho=function(t){var n=Math.max(.001,+t),r=n*n;return e(n,r,r*r)},i})(Math.SQRT2,2,4),ef=0,tf=0,nf=0,rf=1e3,af,of,sf=0,cf=0,lf=0,uf=typeof performance==`object`&&performance.now?performance:Date,df=typeof window==`object`&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function ff(){return cf||=(df(pf),uf.now()+lf)}function pf(){cf=0}function mf(){this._call=this._time=this._next=null}mf.prototype=hf.prototype={constructor:mf,restart:function(e,t,n){if(typeof e!=`function`)throw TypeError(`callback is not a function`);n=(n==null?ff():+n)+(t==null?0:+t),!this._next&&of!==this&&(of?of._next=this:af=this,of=this),this._call=e,this._time=n,bf()},stop:function(){this._call&&(this._call=null,this._time=1/0,bf())}};function hf(e,t,n){var r=new mf;return r.restart(e,t,n),r}function gf(){ff(),++ef;for(var e=af,t;e;)(t=cf-e._time)>=0&&e._call.call(void 0,t),e=e._next;--ef}function _f(){cf=(sf=uf.now())+lf,ef=tf=0;try{gf()}finally{ef=0,yf(),cf=0}}function vf(){var e=uf.now(),t=e-sf;t>rf&&(lf-=t,sf=e)}function yf(){for(var e,t=af,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:af=n);of=e,bf(r)}function bf(e){ef||(tf&&=clearTimeout(tf),e-cf>24?(e<1/0&&(tf=setTimeout(_f,e-uf.now()-lf)),nf&&=clearInterval(nf)):(nf||=(sf=uf.now(),setInterval(vf,rf)),ef=1,df(_f)))}function xf(e,t,n){var r=new mf;return t=t==null?0:+t,r.restart(n=>{r.stop(),e(n+t)},t,n),r}var Sf=vc(`start`,`end`,`cancel`,`interrupt`),Cf=[];function wf(e,t,n,r,i,a){var o=e.__transition;if(!o)e.__transition={};else if(n in o)return;Of(e,n,{name:t,index:r,group:i,on:Sf,tween:Cf,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:0})}function Tf(e,t){var n=Df(e,t);if(n.state>0)throw Error(`too late; already scheduled`);return n}function Ef(e,t){var n=Df(e,t);if(n.state>3)throw Error(`too late; already running`);return n}function Df(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw Error(`transition not found`);return n}function Of(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=hf(a,0,n.time);function a(e){n.state=1,n.timer.restart(o,n.delay,n.time),n.delay<=e&&o(e-n.delay)}function o(a){var l,u,d,f;if(n.state!==1)return c();for(l in r)if(f=r[l],f.name===n.name){if(f.state===3)return xf(o);f.state===4?(f.state=6,f.timer.stop(),f.on.call(`interrupt`,e,e.__data__,f.index,f.group),delete r[l]):+l<t&&(f.state=6,f.timer.stop(),f.on.call(`cancel`,e,e.__data__,f.index,f.group),delete r[l])}if(xf(function(){n.state===3&&(n.state=4,n.timer.restart(s,n.delay,n.time),s(a))}),n.state=2,n.on.call(`start`,e,e.__data__,n.index,n.group),n.state===2){for(n.state=3,i=Array(d=n.tween.length),l=0,u=-1;l<d;++l)(f=n.tween[l].value.call(e,e.__data__,n.index,n.group))&&(i[++u]=f);i.length=u+1}}function s(t){for(var r=t<n.duration?n.ease.call(null,t/n.duration):(n.timer.restart(c),n.state=5,1),a=-1,o=i.length;++a<o;)i[a].call(e,r);n.state===5&&(n.on.call(`end`,e,e.__data__,n.index,n.group),c())}function c(){for(var i in n.state=6,n.timer.stop(),delete r[t],r)return;delete e.__transition}}function kf(e,t){var n=e.__transition,r,i,a=!0,o;if(n){for(o in t=t==null?null:t+``,n)(r=n[o]).name===t?(i=r.state>2&&r.state<5,r.state=6,r.timer.stop(),r.on.call(i?`interrupt`:`cancel`,e,e.__data__,r.index,r.group),delete n[o]):a=!1;a&&delete e.__transition}}function Af(e){return this.each(function(){kf(this,e)})}function jf(e,t){var n,r;return function(){var i=Ef(this,e),a=i.tween;if(a!==n){r=n=a;for(var o=0,s=r.length;o<s;++o)if(r[o].name===t){r=r.slice(),r.splice(o,1);break}}i.tween=r}}function Mf(e,t,n){var r,i;if(typeof n!=`function`)throw Error();return function(){var a=Ef(this,e),o=a.tween;if(o!==r){i=(r=o).slice();for(var s={name:t,value:n},c=0,l=i.length;c<l;++c)if(i[c].name===t){i[c]=s;break}c===l&&i.push(s)}a.tween=i}}function Nf(e,t){var n=this._id;if(e+=``,arguments.length<2){for(var r=Df(this.node(),n).tween,i=0,a=r.length,o;i<a;++i)if((o=r[i]).name===e)return o.value;return null}return this.each((t==null?jf:Mf)(n,e,t))}function Pf(e,t,n){var r=e._id;return e.each(function(){var e=Ef(this,r);(e.value||={})[t]=n.apply(this,arguments)}),function(e){return Df(e,r).value[t]}}function Ff(e,t){var n;return(typeof t==`number`?Md:t instanceof rd?Dd:(n=rd(t))?(t=n,Dd):Rd)(e,t)}function If(e){return function(){this.removeAttribute(e)}}function Lf(e){return function(){this.removeAttributeNS(e.space,e.local)}}function Rf(e,t,n){var r,i=n+``,a;return function(){var o=this.getAttribute(e);return o===i?null:o===r?a:a=t(r=o,n)}}function zf(e,t,n){var r,i=n+``,a;return function(){var o=this.getAttributeNS(e.space,e.local);return o===i?null:o===r?a:a=t(r=o,n)}}function Bf(e,t,n){var r,i,a;return function(){var o,s=n(this),c;return s==null?void this.removeAttribute(e):(o=this.getAttribute(e),c=s+``,o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s)))}}function Vf(e,t,n){var r,i,a;return function(){var o,s=n(this),c;return s==null?void this.removeAttributeNS(e.space,e.local):(o=this.getAttributeNS(e.space,e.local),c=s+``,o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s)))}}function Hf(e,t){var n=wc(e),r=n===`transform`?Jd:Ff;return this.attrTween(e,typeof t==`function`?(n.local?Vf:Bf)(n,r,Pf(this,`attr.`+e,t)):t==null?(n.local?Lf:If)(n):(n.local?zf:Rf)(n,r,t))}function Uf(e,t){return function(n){this.setAttribute(e,t.call(this,n))}}function Wf(e,t){return function(n){this.setAttributeNS(e.space,e.local,t.call(this,n))}}function Gf(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&Wf(e,i)),n}return i._value=t,i}function Kf(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&Uf(e,i)),n}return i._value=t,i}function qf(e,t){var n=`attr.`+e;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!=`function`)throw Error();var r=wc(e);return this.tween(n,(r.local?Gf:Kf)(r,t))}function Jf(e,t){return function(){Tf(this,e).delay=+t.apply(this,arguments)}}function Yf(e,t){return t=+t,function(){Tf(this,e).delay=t}}function Xf(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?Jf:Yf)(t,e)):Df(this.node(),t).delay}function Zf(e,t){return function(){Ef(this,e).duration=+t.apply(this,arguments)}}function Qf(e,t){return t=+t,function(){Ef(this,e).duration=t}}function $f(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?Zf:Qf)(t,e)):Df(this.node(),t).duration}function ep(e,t){if(typeof t!=`function`)throw Error();return function(){Ef(this,e).ease=t}}function tp(e){var t=this._id;return arguments.length?this.each(ep(t,e)):Df(this.node(),t).ease}function np(e,t){return function(){var n=t.apply(this,arguments);if(typeof n!=`function`)throw Error();Ef(this,e).ease=n}}function rp(e){if(typeof e!=`function`)throw Error();return this.each(np(this._id,e))}function ip(e){typeof e!=`function`&&(e=Ic(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=[],c,l=0;l<o;++l)(c=a[l])&&e.call(c,c.__data__,l,a)&&s.push(c);return new Np(r,this._parents,this._name,this._id)}function ap(e){if(e._id!==this._id)throw Error();for(var t=this._groups,n=e._groups,r=t.length,i=n.length,a=Math.min(r,i),o=Array(r),s=0;s<a;++s)for(var c=t[s],l=n[s],u=c.length,d=o[s]=Array(u),f,p=0;p<u;++p)(f=c[p]||l[p])&&(d[p]=f);for(;s<r;++s)o[s]=t[s];return new Np(o,this._parents,this._name,this._id)}function op(e){return(e+``).trim().split(/^|\s+/).every(function(e){var t=e.indexOf(`.`);return t>=0&&(e=e.slice(0,t)),!e||e===`start`})}function sp(e,t,n){var r,i,a=op(t)?Tf:Ef;return function(){var o=a(this,e),s=o.on;s!==r&&(i=(r=s).copy()).on(t,n),o.on=i}}function cp(e,t){var n=this._id;return arguments.length<2?Df(this.node(),n).on.on(e):this.each(sp(n,e,t))}function lp(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function up(){return this.on(`end.remove`,lp(this._id))}function dp(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=kc(e));for(var r=this._groups,i=r.length,a=Array(i),o=0;o<i;++o)for(var s=r[o],c=s.length,l=a[o]=Array(c),u,d,f=0;f<c;++f)(u=s[f])&&(d=e.call(u,u.__data__,f,s))&&(`__data__`in u&&(d.__data__=u.__data__),l[f]=d,wf(l[f],t,n,f,l,Df(u,n)));return new Np(a,this._parents,t,n)}function fp(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=Nc(e));for(var r=this._groups,i=r.length,a=[],o=[],s=0;s<i;++s)for(var c=r[s],l=c.length,u,d=0;d<l;++d)if(u=c[d]){for(var f=e.call(u,u.__data__,d,c),p,m=Df(u,n),h=0,g=f.length;h<g;++h)(p=f[h])&&wf(p,t,n,h,f,m);a.push(f),o.push(u)}return new Np(a,o,t,n)}var pp=yu.prototype.constructor;function mp(){return new pp(this._groups,this._parents)}function hp(e,t){var n,r,i;return function(){var a=El(this,e),o=(this.style.removeProperty(e),El(this,e));return a===o?null:a===n&&o===r?i:i=t(n=a,r=o)}}function gp(e){return function(){this.style.removeProperty(e)}}function _p(e,t,n){var r,i=n+``,a;return function(){var o=El(this,e);return o===i?null:o===r?a:a=t(r=o,n)}}function vp(e,t,n){var r,i,a;return function(){var o=El(this,e),s=n(this),c=s+``;return s??(c=s=(this.style.removeProperty(e),El(this,e))),o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s))}}function yp(e,t){var n,r,i,a=`style.`+t,o=`end.`+a,s;return function(){var c=Ef(this,e),l=c.on,u=c.value[a]==null?s||=gp(t):void 0;(l!==n||i!==u)&&(r=(n=l).copy()).on(o,i=u),c.on=r}}function bp(e,t,n){var r=(e+=``)==`transform`?qd:Ff;return t==null?this.styleTween(e,hp(e,r)).on(`end.style.`+e,gp(e)):typeof t==`function`?this.styleTween(e,vp(e,r,Pf(this,`style.`+e,t))).each(yp(this._id,e)):this.styleTween(e,_p(e,r,t),n).on(`end.style.`+e,null)}function xp(e,t,n){return function(r){this.style.setProperty(e,t.call(this,r),n)}}function Sp(e,t,n){var r,i;function a(){var a=t.apply(this,arguments);return a!==i&&(r=(i=a)&&xp(e,a,n)),r}return a._value=t,a}function Cp(e,t,n){var r=`style.`+(e+=``);if(arguments.length<2)return(r=this.tween(r))&&r._value;if(t==null)return this.tween(r,null);if(typeof t!=`function`)throw Error();return this.tween(r,Sp(e,t,n??``))}function wp(e){return function(){this.textContent=e}}function Tp(e){return function(){var t=e(this);this.textContent=t??``}}function Ep(e){return this.tween(`text`,typeof e==`function`?Tp(Pf(this,`text`,e)):wp(e==null?``:e+``))}function Dp(e){return function(t){this.textContent=e.call(this,t)}}function Op(e){var t,n;function r(){var r=e.apply(this,arguments);return r!==n&&(t=(n=r)&&Dp(r)),t}return r._value=e,r}function kp(e){var t=`text`;if(arguments.length<1)return(t=this.tween(t))&&t._value;if(e==null)return this.tween(t,null);if(typeof e!=`function`)throw Error();return this.tween(t,Op(e))}function Ap(){for(var e=this._name,t=this._id,n=Pp(),r=this._groups,i=r.length,a=0;a<i;++a)for(var o=r[a],s=o.length,c,l=0;l<s;++l)if(c=o[l]){var u=Df(c,t);wf(c,e,n,l,o,{time:u.time+u.delay+u.duration,delay:0,duration:u.duration,ease:u.ease})}return new Np(r,this._parents,e,n)}function jp(){var e,t,n=this,r=n._id,i=n.size();return new Promise(function(a,o){var s={value:o},c={value:function(){--i===0&&a()}};n.each(function(){var n=Ef(this,r),i=n.on;i!==e&&(t=(e=i).copy(),t._.cancel.push(s),t._.interrupt.push(s),t._.end.push(c)),n.on=t}),i===0&&a()})}var Mp=0;function Np(e,t,n,r){this._groups=e,this._parents=t,this._name=n,this._id=r}function Pp(){return++Mp}var Fp=yu.prototype;Np.prototype={constructor:Np,select:dp,selectAll:fp,selectChild:Fp.selectChild,selectChildren:Fp.selectChildren,filter:ip,merge:ap,selection:mp,transition:Ap,call:Fp.call,nodes:Fp.nodes,node:Fp.node,size:Fp.size,empty:Fp.empty,each:Fp.each,on:cp,attr:Hf,attrTween:qf,style:bp,styleTween:Cp,text:Ep,textTween:kp,remove:up,tween:Nf,delay:Xf,duration:$f,ease:tp,easeVarying:rp,end:jp,[Symbol.iterator]:Fp[Symbol.iterator]};function Ip(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var Lp={time:null,delay:0,duration:250,ease:Ip};function Rp(e,t){for(var n;!(n=e.__transition)||!(n=n[t]);)if(!(e=e.parentNode))throw Error(`transition ${t} not found`);return n}function zp(e){var t,n;e instanceof Np?(t=e._id,e=e._name):(t=Pp(),(n=Lp).time=ff(),e=e==null?null:e+``);for(var r=this._groups,i=r.length,a=0;a<i;++a)for(var o=r[a],s=o.length,c,l=0;l<s;++l)(c=o[l])&&wf(c,e,t,l,o,n||Rp(c,t));return new Np(r,this._parents,e,t)}yu.prototype.interrupt=Af,yu.prototype.transition=zp;var Bp=e=>()=>e;function Vp(e,{sourceEvent:t,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function Hp(e,t,n){this.k=e,this.x=t,this.y=n}Hp.prototype={constructor:Hp,scale:function(e){return e===1?this:new Hp(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new Hp(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return`translate(`+this.x+`,`+this.y+`) scale(`+this.k+`)`}};var Up=new Hp(1,0,0);Wp.prototype=Hp.prototype;function Wp(e){for(;!e.__zoom;)if(!(e=e.parentNode))return Up;return e.__zoom}function Gp(e){e.stopImmediatePropagation()}function Kp(e){e.preventDefault(),e.stopImmediatePropagation()}function qp(e){return(!e.ctrlKey||e.type===`wheel`)&&!e.button}function Jp(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute(`viewBox`)?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function Yp(){return this.__zoom||Up}function Xp(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function Zp(){return navigator.maxTouchPoints||`ontouchstart`in this}function Qp(e,t,n){var r=e.invertX(t[0][0])-n[0][0],i=e.invertX(t[1][0])-n[1][0],a=e.invertY(t[0][1])-n[0][1],o=e.invertY(t[1][1])-n[1][1];return e.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}function $p(){var e=qp,t=Jp,n=Qp,r=Xp,i=Zp,a=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],s=250,c=$d,l=vc(`start`,`zoom`,`end`),u,d,f,p=500,m=150,h=0,g=10;function _(e){e.property(`__zoom`,Yp).on(`wheel.zoom`,w,{passive:!1}).on(`mousedown.zoom`,T).on(`dblclick.zoom`,ee).filter(i).on(`touchstart.zoom`,te).on(`touchmove.zoom`,E).on(`touchend.zoom touchcancel.zoom`,ne).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}_.transform=function(e,t,n,r){var i=e.selection?e.selection():e;i.property(`__zoom`,Yp),e===i?i.interrupt().each(function(){S(this,arguments).event(r).start().zoom(null,typeof t==`function`?t.apply(this,arguments):t).end()}):x(e,t,n,r)},_.scaleBy=function(e,t,n,r){_.scaleTo(e,function(){return this.__zoom.k*(typeof t==`function`?t.apply(this,arguments):t)},n,r)},_.scaleTo=function(e,r,i,a){_.transform(e,function(){var e=t.apply(this,arguments),a=this.__zoom,s=i==null?b(e):typeof i==`function`?i.apply(this,arguments):i,c=a.invert(s),l=typeof r==`function`?r.apply(this,arguments):r;return n(y(v(a,l),s,c),e,o)},i,a)},_.translateBy=function(e,r,i,a){_.transform(e,function(){return n(this.__zoom.translate(typeof r==`function`?r.apply(this,arguments):r,typeof i==`function`?i.apply(this,arguments):i),t.apply(this,arguments),o)},null,a)},_.translateTo=function(e,r,i,a,s){_.transform(e,function(){var e=t.apply(this,arguments),s=this.__zoom,c=a==null?b(e):typeof a==`function`?a.apply(this,arguments):a;return n(Up.translate(c[0],c[1]).scale(s.k).translate(typeof r==`function`?-r.apply(this,arguments):-r,typeof i==`function`?-i.apply(this,arguments):-i),e,o)},a,s)};function v(e,t){return t=Math.max(a[0],Math.min(a[1],t)),t===e.k?e:new Hp(t,e.x,e.y)}function y(e,t,n){var r=t[0]-n[0]*e.k,i=t[1]-n[1]*e.k;return r===e.x&&i===e.y?e:new Hp(e.k,r,i)}function b(e){return[(+e[0][0]+ +e[1][0])/2,(+e[0][1]+ +e[1][1])/2]}function x(e,n,r,i){e.on(`start.zoom`,function(){S(this,arguments).event(i).start()}).on(`interrupt.zoom end.zoom`,function(){S(this,arguments).event(i).end()}).tween(`zoom`,function(){var e=this,a=arguments,o=S(e,a).event(i),s=t.apply(e,a),l=r==null?b(s):typeof r==`function`?r.apply(e,a):r,u=Math.max(s[1][0]-s[0][0],s[1][1]-s[0][1]),d=e.__zoom,f=typeof n==`function`?n.apply(e,a):n,p=c(d.invert(l).concat(u/d.k),f.invert(l).concat(u/f.k));return function(e){if(e===1)e=f;else{var t=p(e),n=u/t[2];e=new Hp(n,l[0]-t[0]*n,l[1]-t[1]*n)}o.zoom(null,e)}})}function S(e,t,n){return!n&&e.__zooming||new C(e,t)}function C(e,n){this.that=e,this.args=n,this.active=0,this.sourceEvent=null,this.extent=t.apply(e,n),this.taps=0}C.prototype={event:function(e){return e&&(this.sourceEvent=e),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit(`start`)),this},zoom:function(e,t){return this.mouse&&e!==`mouse`&&(this.mouse[1]=t.invert(this.mouse[0])),this.touch0&&e!==`touch`&&(this.touch0[1]=t.invert(this.touch0[0])),this.touch1&&e!==`touch`&&(this.touch1[1]=t.invert(this.touch1[0])),this.that.__zoom=t,this.emit(`zoom`),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit(`end`)),this},emit:function(e){var t=xu(this.that).datum();l.call(e,this.that,new Vp(e,{sourceEvent:this.sourceEvent,target:_,type:e,transform:this.that.__zoom,dispatch:l}),t)}};function w(t,...i){if(!e.apply(this,arguments))return;var s=S(this,i).event(t),c=this.__zoom,l=Math.max(a[0],Math.min(a[1],c.k*2**r.apply(this,arguments))),u=Cu(t);if(s.wheel)(s.mouse[0][0]!==u[0]||s.mouse[0][1]!==u[1])&&(s.mouse[1]=c.invert(s.mouse[0]=u)),clearTimeout(s.wheel);else if(c.k===l)return;else s.mouse=[u,c.invert(u)],kf(this),s.start();Kp(t),s.wheel=setTimeout(d,m),s.zoom(`mouse`,n(y(v(c,l),s.mouse[0],s.mouse[1]),s.extent,o));function d(){s.wheel=null,s.end()}}function T(t,...r){if(f||!e.apply(this,arguments))return;var i=t.currentTarget,a=S(this,r,!0).event(t),s=xu(t.view).on(`mousemove.zoom`,d,!0).on(`mouseup.zoom`,p,!0),c=Cu(t,i),l=t.clientX,u=t.clientY;Ou(t.view),Gp(t),a.mouse=[c,this.__zoom.invert(c)],kf(this),a.start();function d(e){if(Kp(e),!a.moved){var t=e.clientX-l,r=e.clientY-u;a.moved=t*t+r*r>h}a.event(e).zoom(`mouse`,n(y(a.that.__zoom,a.mouse[0]=Cu(e,i),a.mouse[1]),a.extent,o))}function p(e){s.on(`mousemove.zoom mouseup.zoom`,null),ku(e.view,a.moved),Kp(e),a.event(e).end()}}function ee(r,...i){if(e.apply(this,arguments)){var a=this.__zoom,c=Cu(r.changedTouches?r.changedTouches[0]:r,this),l=a.invert(c),u=a.k*(r.shiftKey?.5:2),d=n(y(v(a,u),c,l),t.apply(this,i),o);Kp(r),s>0?xu(this).transition().duration(s).call(x,d,c,r):xu(this).call(_.transform,d,c,r)}}function te(t,...n){if(e.apply(this,arguments)){var r=t.touches,i=r.length,a=S(this,n,t.changedTouches.length===i).event(t),o,s,c,l;for(Gp(t),s=0;s<i;++s)c=r[s],l=Cu(c,this),l=[l,this.__zoom.invert(l),c.identifier],a.touch0?!a.touch1&&a.touch0[2]!==l[2]&&(a.touch1=l,a.taps=0):(a.touch0=l,o=!0,a.taps=1+!!u);u&&=clearTimeout(u),o&&(a.taps<2&&(d=l[0],u=setTimeout(function(){u=null},p)),kf(this),a.start())}}function E(e,...t){if(this.__zooming){var r=S(this,t).event(e),i=e.changedTouches,a=i.length,s,c,l,u;for(Kp(e),s=0;s<a;++s)c=i[s],l=Cu(c,this),r.touch0&&r.touch0[2]===c.identifier?r.touch0[0]=l:r.touch1&&r.touch1[2]===c.identifier&&(r.touch1[0]=l);if(c=r.that.__zoom,r.touch1){var d=r.touch0[0],f=r.touch0[1],p=r.touch1[0],m=r.touch1[1],h=(h=p[0]-d[0])*h+(h=p[1]-d[1])*h,g=(g=m[0]-f[0])*g+(g=m[1]-f[1])*g;c=v(c,Math.sqrt(h/g)),l=[(d[0]+p[0])/2,(d[1]+p[1])/2],u=[(f[0]+m[0])/2,(f[1]+m[1])/2]}else if(r.touch0)l=r.touch0[0],u=r.touch0[1];else return;r.zoom(`touch`,n(y(c,l,u),r.extent,o))}}function ne(e,...t){if(this.__zooming){var n=S(this,t).event(e),r=e.changedTouches,i=r.length,a,o;for(Gp(e),f&&clearTimeout(f),f=setTimeout(function(){f=null},p),a=0;a<i;++a)o=r[a],n.touch0&&n.touch0[2]===o.identifier?delete n.touch0:n.touch1&&n.touch1[2]===o.identifier&&delete n.touch1;if(n.touch1&&!n.touch0&&(n.touch0=n.touch1,delete n.touch1),n.touch0)n.touch0[1]=this.__zoom.invert(n.touch0[0]);else if(n.end(),n.taps===2&&(o=Cu(o,this),Math.hypot(d[0]-o[0],d[1]-o[1])<g)){var s=xu(this).on(`dblclick.zoom`);s&&s.apply(this,arguments)}}}return _.wheelDelta=function(e){return arguments.length?(r=typeof e==`function`?e:Bp(+e),_):r},_.filter=function(t){return arguments.length?(e=typeof t==`function`?t:Bp(!!t),_):e},_.touchable=function(e){return arguments.length?(i=typeof e==`function`?e:Bp(!!e),_):i},_.extent=function(e){return arguments.length?(t=typeof e==`function`?e:Bp([[+e[0][0],+e[0][1]],[+e[1][0],+e[1][1]]]),_):t},_.scaleExtent=function(e){return arguments.length?(a[0]=+e[0],a[1]=+e[1],_):[a[0],a[1]]},_.translateExtent=function(e){return arguments.length?(o[0][0]=+e[0][0],o[1][0]=+e[1][0],o[0][1]=+e[0][1],o[1][1]=+e[1][1],_):[[o[0][0],o[0][1]],[o[1][0],o[1][1]]]},_.constrain=function(e){return arguments.length?(n=e,_):n},_.duration=function(e){return arguments.length?(s=+e,_):s},_.interpolate=function(e){return arguments.length?(c=e,_):c},_.on=function(){var e=l.on.apply(l,arguments);return e===l?_:e},_.clickDistance=function(e){return arguments.length?(h=(e=+e)*e,_):Math.sqrt(h)},_.tapDistance=function(e){return arguments.length?(g=+e,_):g},_}var em={error001:(e=`react`)=>`Seems like you have not used ${e===`svelte`?`SvelteFlowProvider`:`ReactFlowProvider`} as an ancestor. Help: https://${e}flow.dev/error#001`,error002:()=>`It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.`,error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>`The parent container needs a width and a height to render the graph.`,error005:()=>`Only child nodes can use a parent extent.`,error006:()=>`Can't create edge. An edge needs a source and a target.`,error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,{id:t,sourceHandle:n,targetHandle:r})=>`Couldn't create edge for ${e} handle id: "${e===`source`?n:r}", edge id: ${t}.`,error010:()=>`Handle: No node id found. Make sure to only use a Handle inside a custom Node.`,error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`,error013:(e=`react`)=>`It seems that you haven't loaded the styles. Please import '@xyflow/${e}/dist/style.css' or base.css to make sure everything is working properly.`,error014:()=>`useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.`,error015:()=>`It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs.`,error016:e=>`Edge with id "${e}" does not exist, it may have been removed. This can happen when an edge is deleted before the "onEdgeClick" handler is called.`},tm=[[-1/0,-1/0],[1/0,1/0]],nm=[`Enter`,` `,`Escape`],rm={"node.a11yDescription.default":`Press enter or space to select a node. Press delete to remove it and escape to cancel.`,"node.a11yDescription.keyboardDisabled":`Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.`,"node.a11yDescription.ariaLiveMessage":({direction:e,x:t,y:n})=>`Moved selected node ${e}. New position, x: ${t}, y: ${n}`,"edge.a11yDescription.default":`Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.`,"controls.ariaLabel":`Control Panel`,"controls.zoomIn.ariaLabel":`Zoom In`,"controls.zoomOut.ariaLabel":`Zoom Out`,"controls.fitView.ariaLabel":`Fit View`,"controls.interactive.ariaLabel":`Toggle Interactivity`,"minimap.ariaLabel":`Mini Map`,"handle.ariaLabel":`Handle`},im;(function(e){e.Strict=`strict`,e.Loose=`loose`})(im||={});var am;(function(e){e.Free=`free`,e.Vertical=`vertical`,e.Horizontal=`horizontal`})(am||={});var om;(function(e){e.Partial=`partial`,e.Full=`full`})(om||={});var sm={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null},cm;(function(e){e.Bezier=`default`,e.Straight=`straight`,e.Step=`step`,e.SmoothStep=`smoothstep`,e.SimpleBezier=`simplebezier`})(cm||={});var lm;(function(e){e.Arrow=`arrow`,e.ArrowClosed=`arrowclosed`})(lm||={});var um;(function(e){e.Left=`left`,e.Top=`top`,e.Right=`right`,e.Bottom=`bottom`})(um||={});var dm={[um.Left]:um.Right,[um.Right]:um.Left,[um.Top]:um.Bottom,[um.Bottom]:um.Top},fm=e=>!!e&&typeof e==`object`&&`id`in e&&`source`in e&&`target`in e,pm=e=>!!e&&typeof e==`object`&&`id`in e&&`position`in e&&!(`source`in e)&&!(`target`in e),mm=e=>!!e&&typeof e==`object`&&`id`in e&&`internals`in e&&!(`source`in e)&&!(`target`in e),hm=(e,t=[0,0])=>{let{width:n,height:r}=Ym(e),i=e.origin??t,a=n*i[0],o=r*i[1];return{x:e.position.x-a,y:e.position.y-o}},gm=(e,t={nodeOrigin:[0,0]})=>{if(e.length===0)return{x:0,y:0,width:0,height:0};let n=!1,r=e.reduce((e,r)=>{let i=typeof r==`string`,a=!t.nodeLookup&&!i?r:void 0;return t.nodeLookup&&(a=i?t.nodeLookup.get(r):mm(r)?r:t.nodeLookup.get(r.id)),a?(n=!0,km(e,Nm(a,t.nodeOrigin))):e},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return n?jm(r):{x:0,y:0,width:0,height:0}},_m=(e,t={})=>{let n={x:1/0,y:1/0,x2:-1/0,y2:-1/0},r=!1;return e.forEach(e=>{(t.filter===void 0||t.filter(e))&&(n=km(n,Nm(e)),r=!0)}),r?jm(n):{x:0,y:0,width:0,height:0}},vm=(e,t,[n,r,i]=[0,0,1],a=!1,o=!1)=>{let s=(t.x-n)/i,c=(t.y-r)/i,l=t.width/i,u=t.height/i,d=[];for(let t of e.values()){let{measured:e,selectable:n=!0,hidden:r=!1}=t;if(o&&!n||r)continue;let i=e.width??t.width??t.initialWidth??0,f=e.height??t.height??t.initialHeight??0,{x:p,y:m}=t.internals.positionAbsolute,h=Fm(s,c,l,u,p,m,i,f),g=i*f,_=a&&h>0;(!t.internals.handleBounds||_||h>=g||t.dragging)&&d.push(t)}return d},ym=(e,t)=>{let n=new Set;return e.forEach(e=>{n.add(e.id)}),t.filter(e=>n.has(e.source)||n.has(e.target))};function bm(e,t){let n=new Map,r=t?.nodes?new Set(t.nodes.map(e=>e.id)):null;return e.forEach(e=>{let i;if(t?.includeHiddenNodes){let{width:t,height:n}=Ym(e);i=t>0&&n>0}else i=!!(e.measured.width&&e.measured.height&&!e.hidden);i&&(!r||r.has(e.id))&&n.set(e.id,e)}),n}async function xm({nodes:e,width:t,height:n,panZoom:r,minZoom:i,maxZoom:a},o){if(e.size===0)return!0;let s=Km(_m(bm(e,o)),t,n,o?.minZoom??i,o?.maxZoom??a,o?.padding??.1);return await r.setViewport(s,{duration:o?.duration,ease:o?.ease,interpolate:o?.interpolate}),!0}function Sm({nodeId:e,nextPosition:t,nodeLookup:n,nodeOrigin:r=[0,0],nodeExtent:i,onError:a}){let o=n.get(e),s=o.parentId?n.get(o.parentId):void 0,{x:c,y:l}=s?s.internals.positionAbsolute:{x:0,y:0},u=o.origin??r,d=o.extent||i;if(o.extent===`parent`&&!o.expandParent){if(!s)a?.(`005`,em.error005());else{let{width:e,height:t}=Ym(s);e&&t&&(d=[[c,l],[c+e,l+t]])}}else s&&Jm(o.extent)&&(d=[[o.extent[0][0]+c,o.extent[0][1]+l],[o.extent[1][0]+c,o.extent[1][1]+l]]);let f=Jm(d)?Tm(t,d,o.measured):t;return(o.measured.width===void 0||o.measured.height===void 0)&&a?.(`015`,em.error015()),{position:{x:f.x-c+(o.measured.width??0)*u[0],y:f.y-l+(o.measured.height??0)*u[1]},positionAbsolute:f}}async function Cm({nodesToRemove:e=[],edgesToRemove:t=[],nodes:n,edges:r,onBeforeDelete:i}){let a=new Set(e.map(e=>e.id)),o=[];for(let e of n){if(e.deletable===!1)continue;let t=a.has(e.id),n=!t&&e.parentId&&o.find(t=>t.id===e.parentId);(t||n)&&o.push(e)}let s=new Set(t.map(e=>e.id)),c=r.filter(e=>e.deletable!==!1),l=ym(o,c);for(let e of c)s.has(e.id)&&!l.find(t=>t.id===e.id)&&l.push(e);if(!i)return{edges:l,nodes:o};let u=await i({nodes:o,edges:l});return typeof u==`boolean`?u?{edges:l,nodes:o}:{edges:[],nodes:[]}:u}var wm=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),Tm=(e={x:0,y:0},t,n)=>({x:wm(e.x,t[0][0],t[1][0]-(n?.width??0)),y:wm(e.y,t[0][1],t[1][1]-(n?.height??0))});function Em(e,t,n){let{width:r,height:i}=Ym(n),{x:a,y:o}=n.internals.positionAbsolute;return Tm(e,[[a,o],[a+r,o+i]],t)}var Dm=(e,t,n)=>e<t?wm(Math.abs(e-t),1,t)/t:e>n?-wm(Math.abs(e-n),1,t)/t:0,Om=(e,t,n=15,r=40)=>[Dm(e.x,r,t.width-r)*n,Dm(e.y,r,t.height-r)*n],km=(e,t)=>({x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x2,t.x2),y2:Math.max(e.y2,t.y2)}),Am=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),jm=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),Mm=(e,t=[0,0])=>{let{x:n,y:r}=mm(e)?e.internals.positionAbsolute:hm(e,t);return{x:n,y:r,width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}},Nm=(e,t=[0,0])=>{let{x:n,y:r}=mm(e)?e.internals.positionAbsolute:hm(e,t);return{x:n,y:r,x2:n+(e.measured?.width??e.width??e.initialWidth??0),y2:r+(e.measured?.height??e.height??e.initialHeight??0)}},Pm=(e,t)=>jm(km(Am(e),Am(t))),Fm=(e,t,n,r,i,a,o,s)=>{let c=Math.max(0,Math.min(e+n,i+o)-Math.max(e,i)),l=Math.max(0,Math.min(t+r,a+s)-Math.max(t,a));return Math.ceil(c*l)},Im=(e,t)=>Fm(e.x,e.y,e.width,e.height,t.x,t.y,t.width,t.height),Lm=e=>Rm(e.width)&&Rm(e.height)&&Rm(e.x)&&Rm(e.y),Rm=e=>!isNaN(e)&&isFinite(e),zm=(e,t)=>(e,t)=>{},Bm=(e,t=[1,1])=>({x:t[0]*Math.round(e.x/t[0]),y:t[1]*Math.round(e.y/t[1])}),Vm=({x:e,y:t},[n,r,i],a=!1,o=[1,1])=>{let s={x:(e-n)/i,y:(t-r)/i};return a?Bm(s,o):s},Hm=({x:e,y:t},[n,r,i])=>({x:e*i+n,y:t*i+r});function Um(e,t){if(typeof e==`number`)return Math.floor((t-t/(1+e))*.5);if(typeof e==`string`&&e.endsWith(`px`)){let t=parseFloat(e);if(!Number.isNaN(t))return Math.floor(t)}if(typeof e==`string`&&e.endsWith(`%`)){let n=parseFloat(e);if(!Number.isNaN(n))return Math.floor(t*n*.01)}return console.error(`The padding value "${e}" is invalid. Please provide a number or a string with a valid unit (px or %).`),0}function Wm(e,t,n){if(typeof e==`string`||typeof e==`number`){let r=Um(e,n),i=Um(e,t);return{top:r,right:i,bottom:r,left:i,x:i*2,y:r*2}}if(typeof e==`object`){let r=Um(e.top??e.y??0,n),i=Um(e.bottom??e.y??0,n),a=Um(e.left??e.x??0,t),o=Um(e.right??e.x??0,t);return{top:r,right:o,bottom:i,left:a,x:a+o,y:r+i}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}function Gm(e,t,n,r,i,a){let{x:o,y:s}=Hm(e,[t,n,r]),{x:c,y:l}=Hm({x:e.x+e.width,y:e.y+e.height},[t,n,r]),u=i-c,d=a-l;return{left:Math.floor(o),top:Math.floor(s),right:Math.floor(u),bottom:Math.floor(d)}}var Km=(e,t,n,r,i,a)=>{let o=Wm(a,t,n),s=(t-o.x)/e.width,c=(n-o.y)/e.height,l=wm(Math.min(s,c),r,i),u=e.x+e.width/2,d=e.y+e.height/2,f=t/2-u*l,p=n/2-d*l,m=Gm(e,f,p,l,t,n),h={left:Math.min(m.left-o.left,0),top:Math.min(m.top-o.top,0),right:Math.min(m.right-o.right,0),bottom:Math.min(m.bottom-o.bottom,0)};return{x:f-h.left+h.right,y:p-h.top+h.bottom,zoom:l}},qm=()=>typeof navigator<`u`&&navigator?.userAgent?.indexOf(`Mac`)>=0;function Jm(e){return e!=null&&e!==`parent`}function Ym(e){return{width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}}function Xm(e){return(e.measured?.width??e.width??e.initialWidth)!==void 0&&(e.measured?.height??e.height??e.initialHeight)!==void 0}function Zm(e,t={width:0,height:0},n,r,i){let a={...e},o=r.get(n);if(o){let e=o.origin||i;a.x+=o.internals.positionAbsolute.x-(t.width??0)*e[0],a.y+=o.internals.positionAbsolute.y-(t.height??0)*e[1]}return a}function Qm(e){return{...rm,...e||{}}}function $m(e,t){if(!e&&!t)return!0;if(!e||!t||e.size!==t.size)return!1;if(!e.size&&!t.size)return!0;for(let n of e.keys())if(!t.has(n))return!1;return!0}function eh(e,t,n){if(!n)return;let r=[];e.forEach((e,n)=>{t?.has(n)||r.push(e)}),r.length&&n(r)}function th(e){return e===null?null:e?`valid`:`invalid`}function nh(e,{snapGrid:t=[0,0],snapToGrid:n=!1,transform:r,containerBounds:i}){let{x:a,y:o}=ch(e),s=Vm({x:a-(i?.left??0),y:o-(i?.top??0)},r),{x:c,y:l}=n?Bm(s,t):s;return{xSnapped:c,ySnapped:l,...s}}var rh=e=>({width:e.offsetWidth,height:e.offsetHeight}),ih=e=>e?.getRootNode?.()||window?.document,ah=[`INPUT`,`SELECT`,`TEXTAREA`];function oh(e){let t=e.composedPath?.()?.[0]||e.target;return t?.nodeType===1?ah.includes(t.nodeName)||t.hasAttribute(`contenteditable`)||!!t.closest(`.nokey`):!1}var sh=e=>`clientX`in e,ch=(e,t)=>{let n=sh(e),r=n?e.clientX:e.touches?.[0].clientX,i=n?e.clientY:e.touches?.[0].clientY;return{x:r-(t?.left??0),y:i-(t?.top??0)}},lh=(e,t,n,r,i)=>{let a=t.querySelectorAll(`.${e}`);return!a||!a.length?null:Array.from(a).map(t=>{let a=t.getBoundingClientRect();return{id:t.getAttribute(`data-handleid`),type:e,nodeId:i,position:t.getAttribute(`data-handlepos`),x:(a.left-n.left)/r,y:(a.top-n.top)/r,...rh(t)}})};function uh({sourceX:e,sourceY:t,targetX:n,targetY:r,sourceControlX:i,sourceControlY:a,targetControlX:o,targetControlY:s}){let c=e*.125+i*.375+o*.375+n*.125,l=t*.125+a*.375+s*.375+r*.125;return[c,l,Math.abs(c-e),Math.abs(l-t)]}function dh(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function fh({pos:e,x1:t,y1:n,x2:r,y2:i,c:a}){switch(e){case um.Left:return[t-dh(t-r,a),n];case um.Right:return[t+dh(r-t,a),n];case um.Top:return[t,n-dh(n-i,a)];case um.Bottom:return[t,n+dh(i-n,a)]}}function ph({sourceX:e,sourceY:t,sourcePosition:n=um.Bottom,targetX:r,targetY:i,targetPosition:a=um.Top,curvature:o=.25}){let[s,c]=fh({pos:n,x1:e,y1:t,x2:r,y2:i,c:o}),[l,u]=fh({pos:a,x1:r,y1:i,x2:e,y2:t,c:o}),[d,f,p,m]=uh({sourceX:e,sourceY:t,targetX:r,targetY:i,sourceControlX:s,sourceControlY:c,targetControlX:l,targetControlY:u});return[`M${e},${t} C${s},${c} ${l},${u} ${r},${i}`,d,f,p,m]}function mh({sourceX:e,sourceY:t,targetX:n,targetY:r}){let i=Math.abs(n-e)/2,a=n<e?n+i:n-i,o=Math.abs(r-t)/2;return[a,r<t?r+o:r-o,i,o]}function hh({sourceNode:e,targetNode:t,selected:n=!1,zIndex:r=0,elevateOnSelect:i=!1,zIndexMode:a=`basic`}){return a===`manual`?r:(i&&n?r+1e3:r)+Math.max(e.parentId||i&&e.selected?e.internals.z:0,t.parentId||i&&t.selected?t.internals.z:0)}function gh({sourceNode:e,targetNode:t,width:n,height:r,transform:i}){let a=km(Nm(e),Nm(t));return a.x===a.x2&&(a.x2+=1),a.y===a.y2&&(a.y2+=1),Im({x:-i[0]/i[2],y:-i[1]/i[2],width:n/i[2],height:r/i[2]},jm(a))>0}var _h=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`xy-edge__${e}${t||``}-${n}${r||``}`,vh=(e,t)=>t.some(t=>t.source===e.source&&t.target===e.target&&(t.sourceHandle===e.sourceHandle||!t.sourceHandle&&!e.sourceHandle)&&(t.targetHandle===e.targetHandle||!t.targetHandle&&!e.targetHandle)),yh=(e,t,n={})=>{if(!e.source||!e.target)return n.onError?.(`006`,em.error006()),t;let r=n.getEdgeId||_h,i;return i=fm(e)?{...e}:{...e,id:r(e)},vh(i,t)?t:(i.sourceHandle===null&&delete i.sourceHandle,i.targetHandle===null&&delete i.targetHandle,t.concat(i))};function bh({sourceX:e,sourceY:t,targetX:n,targetY:r}){let[i,a,o,s]=mh({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,i,a,o,s]}var xh={[um.Left]:{x:-1,y:0},[um.Right]:{x:1,y:0},[um.Top]:{x:0,y:-1},[um.Bottom]:{x:0,y:1}},Sh=({source:e,sourcePosition:t=um.Bottom,target:n})=>t===um.Left||t===um.Right?e.x<n.x?{x:1,y:0}:{x:-1,y:0}:e.y<n.y?{x:0,y:1}:{x:0,y:-1},Ch=(e,t)=>Math.sqrt((t.x-e.x)**2+(t.y-e.y)**2);function wh({source:e,sourcePosition:t=um.Bottom,target:n,targetPosition:r=um.Top,center:i,offset:a,stepPosition:o}){let s=xh[t],c=xh[r],l={x:e.x+s.x*a,y:e.y+s.y*a},u={x:n.x+c.x*a,y:n.y+c.y*a},d=Sh({source:l,sourcePosition:t,target:u}),f=d.x===0?`y`:`x`,p=d[f],m=[],h,g,_={x:0,y:0},v={x:0,y:0},[,,y,b]=mh({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(s[f]*c[f]===-1){f===`x`?(h=i.x??l.x+(u.x-l.x)*o,g=i.y??(l.y+u.y)/2):(h=i.x??(l.x+u.x)/2,g=i.y??l.y+(u.y-l.y)*o);let e=[{x:h,y:l.y},{x:h,y:u.y}],t=[{x:l.x,y:g},{x:u.x,y:g}];m=s[f]===p?f===`x`?e:t:f===`x`?t:e}else{let i=[{x:l.x,y:u.y}],o=[{x:u.x,y:l.y}];if(m=f===`x`?s.x===p?o:i:s.y===p?i:o,t===r){let t=Math.abs(e[f]-n[f]);if(t<=a){let r=Math.min(a-1,a-t);s[f]===p?_[f]=(l[f]>e[f]?-1:1)*r:v[f]=(u[f]>n[f]?-1:1)*r}}if(t!==r){let e=f===`x`?`y`:`x`,t=s[f]===c[e],n=l[e]>u[e],r=l[e]<u[e];(s[f]===1&&(!t&&n||t&&r)||s[f]!==1&&(!t&&r||t&&n))&&(m=f===`x`?i:o)}let d={x:l.x+_.x,y:l.y+_.y},y={x:u.x+v.x,y:u.y+v.y};Math.max(Math.abs(d.x-m[0].x),Math.abs(y.x-m[0].x))>=Math.max(Math.abs(d.y-m[0].y),Math.abs(y.y-m[0].y))?(h=(d.x+y.x)/2,g=m[0].y):(h=m[0].x,g=(d.y+y.y)/2)}let x={x:l.x+_.x,y:l.y+_.y},S={x:u.x+v.x,y:u.y+v.y};return[[e,...x.x!==m[0].x||x.y!==m[0].y?[x]:[],...m,...S.x!==m[m.length-1].x||S.y!==m[m.length-1].y?[S]:[],n],h,g,y,b]}function Th(e,t,n,r){let i=Math.min(Ch(e,t)/2,Ch(t,n)/2,r),{x:a,y:o}=t;if(e.x===a&&a===n.x||e.y===o&&o===n.y)return`L${a} ${o}`;if(e.y===o){let t=e.x<n.x?-1:1,r=e.y<n.y?1:-1;return`L ${a+i*t},${o}Q ${a},${o} ${a},${o+i*r}`}let s=e.x<n.x?1:-1;return`L ${a},${o+i*(e.y<n.y?-1:1)}Q ${a},${o} ${a+i*s},${o}`}function Eh({sourceX:e,sourceY:t,sourcePosition:n=um.Bottom,targetX:r,targetY:i,targetPosition:a=um.Top,borderRadius:o=5,centerX:s,centerY:c,offset:l=20,stepPosition:u=.5}){let[d,f,p,m,h]=wh({source:{x:e,y:t},sourcePosition:n,target:{x:r,y:i},targetPosition:a,center:{x:s,y:c},offset:l,stepPosition:u}),g=`M${d[0].x} ${d[0].y}`;for(let e=1;e<d.length-1;e++)g+=Th(d[e-1],d[e],d[e+1],o);return g+=`L${d[d.length-1].x} ${d[d.length-1].y}`,[g,f,p,m,h]}function Dh(e){return e&&!!(e.internals.handleBounds||e.handles?.length)&&!!(e.measured.width||e.width||e.initialWidth)}function Oh(e){let{sourceNode:t,targetNode:n}=e;if(!Dh(t)||!Dh(n))return null;let r=t.internals.handleBounds||kh(t.handles),i=n.internals.handleBounds||kh(n.handles),a=jh(r?.source??[],e.sourceHandle),o=jh(e.connectionMode===im.Strict?i?.target??[]:(i?.target??[]).concat(i?.source??[]),e.targetHandle);if(!a||!o)return e.onError?.(`008`,em.error008(a?`target`:`source`,{id:e.id,sourceHandle:e.sourceHandle,targetHandle:e.targetHandle})),null;let s=a?.position||um.Bottom,c=o?.position||um.Top,l=Ah(t,a,s),u=Ah(n,o,c);return{sourceX:l.x,sourceY:l.y,targetX:u.x,targetY:u.y,sourcePosition:s,targetPosition:c}}function kh(e){if(!e)return null;let t=[],n=[];for(let r of e)r.width=r.width??1,r.height=r.height??1,r.type===`source`?t.push(r):r.type===`target`&&n.push(r);return{source:t,target:n}}function Ah(e,t,n=um.Left,r=!1){let i=(t?.x??0)+e.internals.positionAbsolute.x,a=(t?.y??0)+e.internals.positionAbsolute.y,{width:o,height:s}=t??Ym(e);if(r)return{x:i+o/2,y:a+s/2};switch(t?.position??n){case um.Top:return{x:i+o/2,y:a};case um.Right:return{x:i+o,y:a+s/2};case um.Bottom:return{x:i+o/2,y:a+s};case um.Left:return{x:i,y:a+s/2}}}function jh(e,t){return e&&(t?e.find(e=>e.id===t):e[0])||null}function Mh(e,t){return e?typeof e==`string`?e:`${t?`${t}__`:``}${Object.keys(e).sort().map(t=>`${t}=${e[t]}`).join(`&`)}`:``}function Nh(e,{id:t,defaultColor:n,defaultMarkerStart:r,defaultMarkerEnd:i}){let a=new Set;return e.reduce((e,o)=>([o.markerStart||r,o.markerEnd||i].forEach(r=>{if(r&&typeof r==`object`){let i=Mh(r,t);a.has(i)||(e.push({id:i,color:r.color||n,...r}),a.add(i))}}),e),[]).sort((e,t)=>e.id.localeCompare(t.id))}function Ph(e,t,n,r,i){let a=.5;i===`start`?a=0:i===`end`&&(a=1);let o=[(e.x+e.width*a)*t.zoom+t.x,e.y*t.zoom+t.y-r],s=[-100*a,-100];switch(n){case um.Right:o=[(e.x+e.width)*t.zoom+t.x+r,(e.y+e.height*a)*t.zoom+t.y],s=[0,-100*a];break;case um.Bottom:o[1]=(e.y+e.height)*t.zoom+t.y+r,s[1]=0;break;case um.Left:o=[e.x*t.zoom+t.x-r,(e.y+e.height*a)*t.zoom+t.y],s=[-100,-100*a]}return`translate(${o[0]}px, ${o[1]}px) translate(${s[0]}%, ${s[1]}%)`}var Fh=1e3,Ih=10,Lh={nodeOrigin:[0,0],nodeExtent:tm,elevateNodesOnSelect:!0,zIndexMode:`basic`,defaults:{}},Rh={...Lh,checkEquality:!0};function zh(e,t){let n={...e};for(let e in t)t[e]!==void 0&&(n[e]=t[e]);return n}function Bh(e,t,n){let r=zh(Lh,n);for(let n of e.values())if(n.parentId)Gh(n,e,t,r);else{let e=Tm(hm(n,r.nodeOrigin),Jm(n.extent)?n.extent:r.nodeExtent,Ym(n));n.internals.positionAbsolute=e}}function Vh(e,t){if(!e.handles)return e.measured?t?.internals.handleBounds:void 0;let n=[],r=[];for(let t of e.handles){let i={id:t.id,width:t.width??1,height:t.height??1,nodeId:e.id,x:t.x,y:t.y,position:t.position,type:t.type};t.type===`source`?n.push(i):t.type===`target`&&r.push(i)}return{source:n,target:r}}function Hh(e){return e===`manual`}function Uh(e,t,n,r={}){let i=zh(Rh,r),a={i:0},o=new Map(t),s=i?.elevateNodesOnSelect&&!Hh(i.zIndexMode)?Fh:0,c=e.length>0,l=!1;t.clear(),n.clear();for(let u of e){let e=o.get(u.id);if(i.checkEquality&&u===e?.internals.userNode)t.set(u.id,e);else{let n=Tm(hm(u,i.nodeOrigin),Jm(u.extent)?u.extent:i.nodeExtent,Ym(u));e={...i.defaults,...u,measured:{width:u.measured?.width,height:u.measured?.height},internals:{positionAbsolute:n,handleBounds:Vh(u,e),z:Kh(u,s,i.zIndexMode),userNode:u}},t.set(u.id,e)}(e.measured===void 0||e.measured.width===void 0||e.measured.height===void 0)&&!e.hidden&&(c=!1),u.parentId&&Gh(e,t,n,r,a),l||=u.selected??!1}return{nodesInitialized:c,hasSelectedNodes:l}}function Wh(e,t){if(!e.parentId)return;let n=t.get(e.parentId);n?n.set(e.id,e):t.set(e.parentId,new Map([[e.id,e]]))}function Gh(e,t,n,r,i){let{elevateNodesOnSelect:a,nodeOrigin:o,nodeExtent:s,zIndexMode:c}=zh(Lh,r),l=e.parentId,u=t.get(l);if(!u){console.warn(`Parent node ${l} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}Wh(e,n),i&&!u.parentId&&u.internals.rootParentIndex===void 0&&c===`auto`&&(u.internals.rootParentIndex=++i.i,u.internals.z=u.internals.z+i.i*Ih),i&&u.internals.rootParentIndex!==void 0&&(i.i=u.internals.rootParentIndex);let{x:d,y:f,z:p}=qh(e,u,o,s,a&&!Hh(c)?Fh:0,c),{positionAbsolute:m}=e.internals,h=d!==m.x||f!==m.y;(h||p!==e.internals.z)&&t.set(e.id,{...e,internals:{...e.internals,positionAbsolute:h?{x:d,y:f}:m,z:p}})}function Kh(e,t,n){let r=Rm(e.zIndex)?e.zIndex:0;return Hh(n)?r:r+(e.selected?t:0)}function qh(e,t,n,r,i,a){let{x:o,y:s}=t.internals.positionAbsolute,c=Ym(e),l=hm(e,n),u=Jm(e.extent)?Tm(l,e.extent,c):l,d=Tm({x:o+u.x,y:s+u.y},r,c);e.extent===`parent`&&(d=Em(d,c,t));let f=Kh(e,i,a),p=t.internals.z??0;return{x:d.x,y:d.y,z:p>=f?p+1:f}}function Jh(e,t,n,r=[0,0]){let i=[],a=new Map;for(let n of e){let e=t.get(n.parentId);if(!e)continue;let r=Pm(a.get(n.parentId)?.expandedRect??Mm(e),n.rect);a.set(n.parentId,{expandedRect:r,parent:e})}return a.size>0&&a.forEach(({expandedRect:t,parent:a},o)=>{let s=a.internals.positionAbsolute,c=Ym(a),l=a.origin??r,u=t.x<s.x?Math.round(Math.abs(s.x-t.x)):0,d=t.y<s.y?Math.round(Math.abs(s.y-t.y)):0,f=Math.max(c.width,Math.round(t.width)),p=Math.max(c.height,Math.round(t.height)),m=(f-c.width)*l[0],h=(p-c.height)*l[1];(u>0||d>0||m||h)&&(i.push({id:o,type:`position`,position:{x:a.position.x-u+m,y:a.position.y-d+h}}),n.get(o)?.forEach(t=>{e.some(e=>e.id===t.id)||i.push({id:t.id,type:`position`,position:{x:t.position.x+u,y:t.position.y+d}})})),(c.width<t.width||c.height<t.height||u||d)&&i.push({id:o,type:`dimensions`,setAttributes:!0,dimensions:{width:f+(u?l[0]*u-m:0),height:p+(d?l[1]*d-h:0)}})}),i}function Yh(e,t,n,r,i,a,o){let s=r?.querySelector(`.xyflow__viewport`),c=!1;if(!s)return{changes:[],updatedInternals:c};let l=[],u=window.getComputedStyle(s),{m22:d}=new window.DOMMatrixReadOnly(u.transform),f=[];for(let r of e.values()){let e=t.get(r.id);if(!e)continue;if(e.hidden){t.set(e.id,{...e,internals:{...e.internals,handleBounds:void 0}}),c=!0;continue}let s=rh(r.nodeElement),u=e.measured.width!==s.width||e.measured.height!==s.height;if(s.width&&s.height&&(u||!e.internals.handleBounds||r.force)){let p=r.nodeElement.getBoundingClientRect(),m=Jm(e.extent)?e.extent:a,{positionAbsolute:h}=e.internals;if(e.parentId&&e.extent===`parent`){let n=t.get(e.parentId);n&&(h=Em(h,s,n))}else m&&(h=Tm(h,m,s));let g={...e,measured:s,internals:{...e.internals,positionAbsolute:h,handleBounds:{source:lh(`source`,r.nodeElement,p,d,e.id),target:lh(`target`,r.nodeElement,p,d,e.id)}}};t.set(e.id,g),e.parentId&&Gh(g,t,n,{nodeOrigin:i,zIndexMode:o}),c=!0,u&&(l.push({id:e.id,type:`dimensions`,dimensions:s}),e.expandParent&&e.parentId&&f.push({id:e.id,parentId:e.parentId,rect:Mm(g,i)}))}}if(f.length>0){let e=Jh(f,t,n,i);l.push(...e)}return{changes:l,updatedInternals:c}}async function Xh({delta:e,panZoom:t,transform:n,translateExtent:r,width:i,height:a}){if(!t||!e.x&&!e.y)return!1;let o=await t.setViewportConstrained({x:n[0]+e.x,y:n[1]+e.y,zoom:n[2]},[[0,0],[i,a]],r);return!!o&&(o.x!==n[0]||o.y!==n[1]||o.k!==n[2])}function Zh(e,t,n,r,i,a){let o=i,s=r.get(o)||new Map;r.set(o,s.set(n,t)),o=`${i}-${e}`;let c=r.get(o)||new Map;if(r.set(o,c.set(n,t)),a){o=`${i}-${e}-${a}`;let s=r.get(o)||new Map;r.set(o,s.set(n,t))}}function Qh(e,t,n){e.clear(),t.clear();for(let r of n){let{source:n,target:i,sourceHandle:a=null,targetHandle:o=null}=r,s={edgeId:r.id,source:n,target:i,sourceHandle:a,targetHandle:o},c=`${n}-${a}--${i}-${o}`;Zh(`source`,s,`${i}-${o}--${n}-${a}`,e,n,a),Zh(`target`,s,c,e,i,o),t.set(r.id,r)}}function $h(e,t){if(!e.parentId)return!1;let n=t.get(e.parentId);return n?n.selected?!0:$h(n,t):!1}function eg(e,t,n){let r=e;do{if(r?.matches?.(t))return!0;if(r===n)return!1;r=r?.parentElement}while(r);return!1}function tg(e,t,n,r){let i=new Map;for(let[a,o]of e)if((o.selected||o.id===r)&&(!o.parentId||!$h(o,e))&&(o.draggable||t&&o.draggable===void 0)){let t=e.get(a);t&&i.set(a,{id:a,position:t.position||{x:0,y:0},distance:{x:n.x-t.internals.positionAbsolute.x,y:n.y-t.internals.positionAbsolute.y},extent:t.extent,parentId:t.parentId,origin:t.origin,expandParent:t.expandParent,internals:{positionAbsolute:t.internals.positionAbsolute||{x:0,y:0}},measured:{width:t.measured.width??0,height:t.measured.height??0}})}return i}function ng({nodeId:e,dragItems:t,nodeLookup:n,dragging:r=!0}){let i=[];for(let[e,a]of t){let t=n.get(e)?.internals.userNode;t&&i.push({...t,position:a.position,dragging:r})}if(!e)return[i[0],i];let a=n.get(e)?.internals.userNode;return[a?{...a,position:t.get(e)?.position||a.position,dragging:r}:i[0],i]}function rg({dragItems:e,snapGrid:t,x:n,y:r}){let i=e.values().next().value;if(!i)return null;let a={x:n-i.distance.x,y:r-i.distance.y},o=Bm(a,t);return{x:o.x-a.x,y:o.y-a.y}}function ig({onNodeMouseDown:e,getStoreItems:t,onDragStart:n,onDrag:r,onDragStop:i}){let a={x:null,y:null},o=0,s=new Map,c=!1,l={x:0,y:0},u=null,d=!1,f=null,p=!1,m=!1,h=null;function g({noDragClassName:g,handleSelector:_,domNode:v,isSelectable:y,nodeId:b,nodeClickDistance:x=0}){f=xu(v);function S({x:e,y:n}){let{nodeLookup:i,nodeExtent:o,snapGrid:c,snapToGrid:l,nodeOrigin:u,onNodeDrag:d,onSelectionDrag:f,onError:p,updateNodePositions:g}=t();a={x:e,y:n};let _=!1,v=s.size>1,y=v&&o?Am(_m(s)):null,x=v&&l?rg({dragItems:s,snapGrid:c,x:e,y:n}):null;for(let[t,r]of s){if(!i.has(t))continue;let a={x:e-r.distance.x,y:n-r.distance.y};l&&(a=x?{x:Math.round(a.x+x.x),y:Math.round(a.y+x.y)}:Bm(a,c));let s=null;if(v&&o&&!r.extent&&y){let{positionAbsolute:e}=r.internals,t=e.x-y.x+o[0][0],n=e.x+r.measured.width-y.x2+o[1][0],i=e.y-y.y+o[0][1],a=e.y+r.measured.height-y.y2+o[1][1];s=[[t,i],[n,a]]}let{position:d,positionAbsolute:f}=Sm({nodeId:t,nextPosition:a,nodeLookup:i,nodeExtent:s||o,nodeOrigin:u,onError:p});_=_||r.position.x!==d.x||r.position.y!==d.y,r.position=d,r.internals.positionAbsolute=f}if(m||=_,_&&(g(s,!0),h&&(r||d||!b&&f))){let[e,t]=ng({nodeId:b,dragItems:s,nodeLookup:i});r?.(h,s,e,t),d?.(h,e,t),b||f?.(h,t)}}async function C(){if(!u)return;let{transform:e,panBy:n,autoPanSpeed:r,autoPanOnNodeDrag:i}=t();if(!i){c=!1,cancelAnimationFrame(o);return}let[s,d]=Om(l,u,r);(s!==0||d!==0)&&(a.x=(a.x??0)-s/e[2],a.y=(a.y??0)-d/e[2],await n({x:s,y:d})&&S(a)),o=requestAnimationFrame(C)}function w(r){let{nodeLookup:i,multiSelectionActive:o,nodesDraggable:c,transform:l,snapGrid:f,snapToGrid:p,selectNodesOnDrag:m,onNodeDragStart:h,onSelectionDragStart:g,unselectNodesAndEdges:_}=t();d=!0,(!m||!y)&&!o&&b&&(i.get(b)?.selected||_()),y&&m&&b&&e?.(b);let v=nh(r.sourceEvent,{transform:l,snapGrid:f,snapToGrid:p,containerBounds:u});if(a=v,s=tg(i,c,v,b),s.size>0&&(n||h||!b&&g)){let[e,t]=ng({nodeId:b,dragItems:s,nodeLookup:i});n?.(r.sourceEvent,s,e,t),h?.(r.sourceEvent,e,t),b||g?.(r.sourceEvent,t)}}let T=Iu().clickDistance(x).on(`start`,e=>{let{domNode:n,nodeDragThreshold:r,transform:i,snapGrid:o,snapToGrid:s}=t();u=n?.getBoundingClientRect()||null,p=!1,m=!1,h=e.sourceEvent,r===0&&w(e),a=nh(e.sourceEvent,{transform:i,snapGrid:o,snapToGrid:s,containerBounds:u}),l=ch(e.sourceEvent,u)}).on(`drag`,e=>{let{autoPanOnNodeDrag:n,transform:r,snapGrid:i,snapToGrid:o,nodeDragThreshold:f,nodeLookup:m}=t(),g=nh(e.sourceEvent,{transform:r,snapGrid:i,snapToGrid:o,containerBounds:u});if(h=e.sourceEvent,(e.sourceEvent.type===`touchmove`&&e.sourceEvent.touches.length>1||b&&!m.has(b))&&(p=!0),!p){if(!c&&n&&d&&(c=!0,C()),!d){let t=ch(e.sourceEvent,u),n=t.x-l.x,r=t.y-l.y;Math.sqrt(n*n+r*r)>f&&w(e)}(a.x!==g.xSnapped||a.y!==g.ySnapped)&&s&&d&&(l=ch(e.sourceEvent,u),S(g))}}).on(`end`,e=>{if(!d||p)p&&s.size>0&&t().updateNodePositions(s,!1);else if(c=!1,d=!1,cancelAnimationFrame(o),s.size>0){let{nodeLookup:n,updateNodePositions:r,onNodeDragStop:a,onSelectionDragStop:o}=t();if(m&&=(r(s,!1),!1),i||a||!b&&o){let[t,r]=ng({nodeId:b,dragItems:s,nodeLookup:n,dragging:!1});i?.(e.sourceEvent,s,t,r),a?.(e.sourceEvent,t,r),b||o?.(e.sourceEvent,r)}}}).filter(e=>{let t=e.target;return!e.button&&(!g||!eg(t,`.${g}`,v))&&(!_||eg(t,_,v))});f.call(T)}function _(){f?.on(`.drag`,null)}return{update:g,destroy:_}}function ag(e,t,n){let r=[],i={x:e.x-n,y:e.y-n,width:n*2,height:n*2};for(let e of t.values())Im(i,Mm(e))>0&&r.push(e);return r}var og=250;function sg(e,t,n,r){let i=[],a=1/0,o=ag(e,n,t+og);for(let n of o){let o=[...n.internals.handleBounds?.source??[],...n.internals.handleBounds?.target??[]];for(let s of o){if(r.nodeId===s.nodeId&&r.type===s.type&&r.id===s.id)continue;let{x:o,y:c}=Ah(n,s,s.position,!0),l=Math.sqrt((o-e.x)**2+(c-e.y)**2);l>t||(l<a?(i=[{...s,x:o,y:c}],a=l):l===a&&i.push({...s,x:o,y:c}))}}if(!i.length)return null;if(i.length>1){let e=r.type===`source`?`target`:`source`;return i.find(t=>t.type===e)??i[0]}return i[0]}function cg(e,t,n,r,i,a=!1){let o=r.get(e);if(!o)return null;let s=i===`strict`?o.internals.handleBounds?.[t]:[...o.internals.handleBounds?.source??[],...o.internals.handleBounds?.target??[]],c=(n?s?.find(e=>e.id===n):s?.[0])??null;return c&&a?{...c,...Ah(o,c,c.position,!0)}:c}function lg(e,t){return e||(t?.classList.contains(`target`)?`target`:t?.classList.contains(`source`)?`source`:null)}function ug(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}var dg=()=>!0;function fg(e,{connectionMode:t,connectionRadius:n,handleId:r,nodeId:i,edgeUpdaterType:a,isTarget:o,domNode:s,nodeLookup:c,lib:l,autoPanOnConnect:u,flowId:d,panBy:f,cancelConnection:p,onConnectStart:m,onConnect:h,onConnectEnd:g,isValidConnection:_=dg,onReconnectEnd:v,updateConnection:y,getTransform:b,getFromHandle:x,autoPanSpeed:S,dragThreshold:C=1,handleDomNode:w}){let T=ih(e.target),ee=0,te,{x:E,y:ne}=ch(e),D=lg(a,w),re=s?.getBoundingClientRect(),ie=!1;if(!re||!D)return;let ae=cg(i,D,r,c,t);if(!ae)return;let oe=ch(e,re),se=!1,ce=null,le=!1,ue=null;function de(){if(!u||!re)return;let[e,t]=Om(oe,re,S);f({x:e,y:t}),ee=requestAnimationFrame(de)}let fe={...ae,nodeId:i,type:D,position:ae.position},pe=c.get(i),me={inProgress:!0,isValid:null,from:Ah(pe,fe,um.Left,!0),fromHandle:fe,fromPosition:fe.position,fromNode:pe,to:oe,toHandle:null,toPosition:dm[fe.position],toNode:null,pointer:oe};function he(){ie=!0,y(me),m?.(e,{nodeId:i,handleId:r,handleType:D})}C===0&&he();function ge(e){if(!ie){let{x:t,y:n}=ch(e),r=t-E,i=n-ne;if(!(r*r+i*i>C*C))return;he()}if(!x()||!fe){_e(e);return}let a=b();oe=ch(e,re),te=sg(Vm(oe,a,!1,[1,1]),n,c,fe),se||=(de(),!0);let s=pg(e,{handle:te,connectionMode:t,fromNodeId:i,fromHandleId:r,fromType:o?`target`:`source`,isValidConnection:_,doc:T,lib:l,flowId:d,nodeLookup:c});ue=s.handleDomNode,ce=s.connection,le=ug(!!te,s.isValid);let u=c.get(i),f=u?Ah(u,fe,um.Left,!0):me.from,p={...me,from:f,isValid:le,to:s.toHandle&&le?Hm({x:s.toHandle.x,y:s.toHandle.y},a):oe,toHandle:s.toHandle,toPosition:le&&s.toHandle?s.toHandle.position:dm[fe.position],toNode:s.toHandle?c.get(s.toHandle.nodeId):null,pointer:oe};y(p),me=p}function _e(e){if(!(`touches`in e&&e.touches.length>0)){if(ie){(te||ue)&&ce&&le&&h?.(ce);let{inProgress:t,...n}=me,r={...n,toPosition:me.toHandle?me.toPosition:null};g?.(e,r),a&&v?.(e,r)}p(),cancelAnimationFrame(ee),se=!1,le=!1,ce=null,ue=null,T.removeEventListener(`mousemove`,ge),T.removeEventListener(`mouseup`,_e),T.removeEventListener(`touchmove`,ge),T.removeEventListener(`touchend`,_e)}}T.addEventListener(`mousemove`,ge),T.addEventListener(`mouseup`,_e),T.addEventListener(`touchmove`,ge),T.addEventListener(`touchend`,_e)}function pg(e,{handle:t,connectionMode:n,fromNodeId:r,fromHandleId:i,fromType:a,doc:o,lib:s,flowId:c,isValidConnection:l=dg,nodeLookup:u}){let d=a===`target`,f=t?o.querySelector(`.${s}-flow__handle[data-id="${c}-${t?.nodeId}-${t?.id}-${t?.type}"]`):null,{x:p,y:m}=ch(e),h=o.elementFromPoint(p,m),g=h?.classList.contains(`${s}-flow__handle`)?h:f,_={handleDomNode:g,isValid:!1,connection:null,toHandle:null};if(g){let e=lg(void 0,g),t=g.getAttribute(`data-nodeid`),a=g.getAttribute(`data-handleid`),o=g.classList.contains(`connectable`),s=g.classList.contains(`connectableend`);if(!t||!e)return _;let c={source:d?t:r,sourceHandle:d?a:i,target:d?r:t,targetHandle:d?i:a};_.connection=c,_.isValid=o&&s&&(n===im.Strict?d&&e===`source`||!d&&e===`target`:t!==r||a!==i)&&l(c),_.toHandle=cg(t,e,a,u,n,!0)}return _}var mg={onPointerDown:fg,isValid:pg};function hg({domNode:e,panZoom:t,getTransform:n,getViewScale:r}){let i=xu(e);function a({translateExtent:e,width:a,height:o,zoomStep:s=1,pannable:c=!0,zoomable:l=!0,inversePan:u=!1}){let d=e=>{if(e.sourceEvent.type!==`wheel`||!t)return;let r=n(),i=e.sourceEvent.ctrlKey&&qm()?10:1,a=-e.sourceEvent.deltaY*(e.sourceEvent.deltaMode===1?.05:e.sourceEvent.deltaMode?1:.002)*s,o=r[2]*2**(a*i);t.scaleTo(o)},f=[0,0],p=$p().on(`start`,e=>{(e.sourceEvent.type===`mousedown`||e.sourceEvent.type===`touchstart`)&&(f=[e.sourceEvent.clientX??e.sourceEvent.touches[0].clientX,e.sourceEvent.clientY??e.sourceEvent.touches[0].clientY])}).on(`zoom`,c?i=>{let s=n();if(i.sourceEvent.type!==`mousemove`&&i.sourceEvent.type!==`touchmove`||!t)return;let c=[i.sourceEvent.clientX??i.sourceEvent.touches[0].clientX,i.sourceEvent.clientY??i.sourceEvent.touches[0].clientY],l=[c[0]-f[0],c[1]-f[1]];f=c;let d=r()*Math.max(s[2],Math.log(s[2]))*(u?-1:1),p={x:s[0]-l[0]*d,y:s[1]-l[1]*d},m=[[0,0],[a,o]];t.setViewportConstrained({x:p.x,y:p.y,zoom:s[2]},m,e)}:null).on(`zoom.wheel`,l?d:null);i.call(p,{})}function o(){i.on(`zoom`,null)}return{update:a,destroy:o,pointer:Cu}}var gg=e=>({x:e.x,y:e.y,zoom:e.k}),_g=({x:e,y:t,zoom:n})=>Up.translate(e,t).scale(n),vg=(e,t)=>e.target.closest(`.${t}`),yg=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),bg=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2,xg=(e,t=0,n=bg,r=()=>{})=>{let i=typeof t==`number`&&t>0;return i||r(),i?e.transition().duration(t).ease(n).on(`end`,r):e},Sg=e=>{let t=e.ctrlKey&&qm()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t};function Cg({zoomPanValues:e,noWheelClassName:t,d3Selection:n,d3Zoom:r,panOnScrollMode:i,panOnScrollSpeed:a,zoomOnPinch:o,onPanZoomStart:s,onPanZoom:c,onPanZoomEnd:l}){return u=>{if(vg(u,t))return u.ctrlKey&&u.preventDefault(),!1;u.preventDefault(),u.stopImmediatePropagation();let d=n.property(`__zoom`).k||1;if(u.ctrlKey&&o){let e=Cu(u),t=d*2**Sg(u);r.scaleTo(n,t,e,u);return}let f=u.deltaMode===1?20:1,p=i===am.Vertical?0:u.deltaX*f,m=i===am.Horizontal?0:u.deltaY*f;!qm()&&u.shiftKey&&i!==am.Vertical&&(p=u.deltaY*f,m=0),r.translateBy(n,-(p/d)*a,-(m/d)*a,{internal:!0});let h=gg(n.property(`__zoom`));clearTimeout(e.panScrollTimeout),e.isPanScrolling?c?.(u,h):(e.isPanScrolling=!0,s?.(u,h)),e.panScrollTimeout=setTimeout(()=>{l?.(u,h),e.isPanScrolling=!1},150)}}function wg({noWheelClassName:e,preventScrolling:t,d3ZoomHandler:n}){return function(r,i){let a=r.type===`wheel`,o=!t&&a&&!r.ctrlKey,s=vg(r,e);if(r.ctrlKey&&a&&s&&r.preventDefault(),o||s)return null;r.preventDefault(),n.call(this,r,i)}}function Tg({zoomPanValues:e,onDraggingChange:t,onPanZoomStart:n}){return r=>{if(r.sourceEvent?.internal)return;let i=gg(r.transform);e.mouseButton=r.sourceEvent?.button||0,e.isZoomingOrPanning=!0,e.prevViewport=i,r.sourceEvent?.type===`mousedown`&&t(!0),n&&n?.(r.sourceEvent,i)}}function Eg({zoomPanValues:e,panOnDrag:t,onPaneContextMenu:n,onTransformChange:r,onPanZoom:i}){return a=>{e.usedRightMouseButton=!!(n&&yg(t,e.mouseButton??0)),a.sourceEvent?.sync||r([a.transform.x,a.transform.y,a.transform.k]),i&&!a.sourceEvent?.internal&&i?.(a.sourceEvent,gg(a.transform))}}function Dg({zoomPanValues:e,panOnDrag:t,panOnScroll:n,onDraggingChange:r,onPanZoomEnd:i,onPaneContextMenu:a}){return o=>{if(!o.sourceEvent?.internal&&(e.isZoomingOrPanning=!1,a&&yg(t,e.mouseButton??0)&&!e.usedRightMouseButton&&o.sourceEvent&&a(o.sourceEvent),e.usedRightMouseButton=!1,r(!1),i)){let t=gg(o.transform);e.prevViewport=t,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{i?.(o.sourceEvent,t)},n?150:0)}}}function Og({panActivationKeyPressed:e,zoomActivationKeyPressed:t,zoomOnScroll:n,zoomOnPinch:r,panOnDrag:i,panOnScroll:a,zoomOnDoubleClick:o,userSelectionActive:s,noWheelClassName:c,noPanClassName:l,lib:u,connectionInProgress:d}){return f=>{let p=t||n,m=r&&f.ctrlKey,h=f.type===`wheel`;if(f.button===1&&f.type===`mousedown`&&(vg(f,`${u}-flow__node`)||vg(f,`${u}-flow__edge`)||vg(f,`${u}-flow__selection`)||vg(f,`${u}-flow__nodesselection`)))return!0;if(!i&&!p&&!a&&!o&&!r||s||d&&!h||vg(f,c)&&h||vg(f,l)&&(!h||a&&h&&!t)||!r&&f.ctrlKey&&h)return!1;if(!r&&f.type===`touchstart`&&f.touches?.length>1)return f.preventDefault(),!1;if(!p&&!a&&!m&&h||!i&&(f.type===`mousedown`||f.type===`touchstart`)||Array.isArray(i)&&!i.includes(f.button)&&f.type===`mousedown`)return!1;let g=Array.isArray(i)&&i.includes(f.button)||!f.button||f.button<=1;return(!f.ctrlKey||h||e)&&g}}function kg({domNode:e,minZoom:t,maxZoom:n,translateExtent:r,viewport:i,onPanZoom:a,onPanZoomStart:o,onPanZoomEnd:s,onDraggingChange:c}){let l={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},u=e.getBoundingClientRect(),d=[[0,0],[u.width,u.height]];(typeof ResizeObserver<`u`?new ResizeObserver(e=>{let t=e[0];t&&(d=[[0,0],[t.contentRect.width,t.contentRect.height]])}):null)?.observe(e);let f=$p().extent(()=>d).scaleExtent([t,n]).translateExtent(r),p=xu(e).call(f);y({x:i.x,y:i.y,zoom:wm(i.zoom,t,n)},[[0,0],[u.width,u.height]],r);let m=p.on(`wheel.zoom`),h=p.on(`dblclick.zoom`);f.wheelDelta(Sg);async function g(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?zd:$d).transform(xg(p,t?.duration,t?.ease,()=>n(!0)),e)}):!1}function _({noWheelClassName:e,noPanClassName:t,onPaneContextMenu:n,userSelectionActive:r,panOnScroll:i,panOnDrag:u,panOnScrollMode:d,panOnScrollSpeed:g,preventScrolling:_,zoomOnPinch:y,zoomOnScroll:b,zoomOnDoubleClick:x,panActivationKeyPressed:S=!1,zoomActivationKeyPressed:C,lib:w,onTransformChange:T,connectionInProgress:ee,paneClickDistance:te,selectionOnDrag:E}){r&&!l.isZoomingOrPanning&&v();let ne=i&&!C&&!r;f.clickDistance(E?1/0:!Rm(te)||te<0?0:te);let D=ne?Cg({zoomPanValues:l,noWheelClassName:e,d3Selection:p,d3Zoom:f,panOnScrollMode:d,panOnScrollSpeed:g,zoomOnPinch:y,onPanZoomStart:o,onPanZoom:a,onPanZoomEnd:s}):wg({noWheelClassName:e,preventScrolling:_,d3ZoomHandler:m});p.on(`wheel.zoom`,D,{passive:!1});let re=Tg({zoomPanValues:l,onDraggingChange:c,onPanZoomStart:o});f.on(`start`,re);let ie=Eg({zoomPanValues:l,panOnDrag:u,onPaneContextMenu:!!n,onPanZoom:a,onTransformChange:T});f.on(`zoom`,ie);let ae=Dg({zoomPanValues:l,panOnDrag:u,panOnScroll:i,onPaneContextMenu:n,onPanZoomEnd:s,onDraggingChange:c});f.on(`end`,ae);let oe=Og({panActivationKeyPressed:S,zoomActivationKeyPressed:C,panOnDrag:u,zoomOnScroll:b,panOnScroll:i,zoomOnDoubleClick:x,zoomOnPinch:y,userSelectionActive:r,noPanClassName:t,noWheelClassName:e,lib:w,connectionInProgress:ee});f.filter(oe),x?p.on(`dblclick.zoom`,h):p.on(`dblclick.zoom`,null)}function v(){f.on(`zoom`,null)}async function y(e,t,n){let r=_g(e),i=f?.constrain()(r,t,n);return i&&await g(i),i}async function b(e,t){let n=_g(e);return await g(n,t),n}function x(e){if(p){let t=_g(e),n=p.property(`__zoom`);(n.k!==e.zoom||n.x!==e.x||n.y!==e.y)&&f?.transform(p,t,null,{sync:!0})}}function S(){let e=p?Wp(p.node()):{x:0,y:0,k:1};return{x:e.x,y:e.y,zoom:e.k}}async function C(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?zd:$d).scaleTo(xg(p,t?.duration,t?.ease,()=>n(!0)),e)}):!1}async function w(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?zd:$d).scaleBy(xg(p,t?.duration,t?.ease,()=>n(!0)),e)}):!1}function T(e){f?.scaleExtent(e)}function ee(e){f?.translateExtent(e)}function te(e){let t=!Rm(e)||e<0?0:e;f?.clickDistance(t)}return{update:_,destroy:v,setViewport:b,setViewportConstrained:y,getViewport:S,scaleTo:C,scaleBy:w,setScaleExtent:T,setTranslateExtent:ee,syncViewport:x,setClickDistance:te}}var Ag;(function(e){e.Line=`line`,e.Handle=`handle`})(Ag||={});var jg=zm(`Svelte Flow`,`https://svelteflow.dev/`);function Mg(e,t,n={}){return yh(e,t,{...n,onError:n.onError??jg})}function Ng(){let e={};return[t=>{if(t&&!at(e))throw Error(t);return rt(e)},t=>it(e,t)]}var[Pg,Fg]=Ng(),[Ig,Lg]=Ng(),[Rg,zg]=Ng(),Bg=new Set([`$$slots`,`$$events`,`$$legacy`,`id`,`type`,`position`,`style`,`class`,`isConnectable`,`isConnectableStart`,`isConnectableEnd`,`isValidConnection`,`onconnect`,`ondisconnect`,`children`]),Vg=U(`<div><!></div>`);function Hg(e,t){A(t,!0);let n=X(t,`id`,3,null),r=X(t,`type`,3,`source`),i=X(t,`position`,19,()=>um.Top),a=X(t,`isConnectableStart`,3,!0),o=X(t,`isConnectableEnd`,3,!0),s=La(t,Bg),c=Pg(`Handle must be used within a Custom Node component`),l=Ig(`Handle must be used within a Custom Node component`),u=M(()=>r()===`target`),d=M(()=>t.isConnectable===void 0?l.value:t.isConnectable),p=j_(),m=M(()=>p.ariaLabelConfig),h=null;Ln(()=>{if(t.onconnect||t.ondisconnect){p.edges;let e=p.connectionLookup.get(`${c}-${r()}${n()?`-${n()}`:``}`);if(h&&!$m(e,h)){let n=e??new Map;eh(h,n,t.ondisconnect),eh(n,h,t.onconnect)}h=new Map(e)}});let g=M(()=>{if(!p.connection.inProgress)return[!1,!1,!1,!1,null];let{fromHandle:e,toHandle:t,isValid:i}=p.connection,a=e&&e.nodeId===c&&e.type===r()&&e.id===n(),o=t&&t.nodeId===c&&t.type===r()&&t.id===n();return[!0,a,o,p.connectionMode===im.Strict?e?.type!==r():c!==e?.nodeId||n()!==e?.id,o&&i]}),_=M(()=>v(B(g),5)),y=M(()=>B(_)[0]),b=M(()=>B(_)[1]),x=M(()=>B(_)[2]),S=M(()=>B(_)[3]),C=M(()=>B(_)[4]);function w(e){let t=p.onbeforeconnect?p.onbeforeconnect(e):e;t&&(p.addEdge(t),p.onconnect?.(e))}function T(e){let r=sh(e);e.currentTarget&&(r&&e.button===0||!r)&&mg.onPointerDown(e,{handleId:n(),nodeId:c,isTarget:B(u),connectionRadius:p.connectionRadius,domNode:p.domNode,nodeLookup:p.nodeLookup,connectionMode:p.connectionMode,lib:`svelte`,autoPanOnConnect:p.autoPanOnConnect,autoPanSpeed:p.autoPanSpeed,flowId:p.flowId,isValidConnection:t.isValidConnection||((...e)=>p.isValidConnection?.(...e)??!0),updateConnection:p.updateConnection,cancelConnection:p.cancelConnection,panBy:p.panBy,onConnect:w,onConnectStart:p.onconnectstart,onConnectEnd:(...e)=>p.onconnectend?.(...e),getTransform:()=>[p.viewport.x,p.viewport.y,p.viewport.zoom],getFromHandle:()=>p.connection.fromHandle,dragThreshold:p.connectionDragThreshold,handleDomNode:e.currentTarget})}function ee(e){if(!c||!p.clickConnectStartHandle&&!a())return;if(!p.clickConnectStartHandle){p.onclickconnectstart?.(e,{nodeId:c,handleId:n(),handleType:r()}),p.clickConnectStartHandle={nodeId:c,type:r(),id:n()};return}let i=ih(e.target),o=t.isValidConnection??p.isValidConnection,{connectionMode:s,clickConnectStartHandle:l,flowId:u,nodeLookup:d}=p,{connection:f,isValid:m}=mg.isValid(e,{handle:{nodeId:c,id:n(),type:r()},connectionMode:s,fromNodeId:l.nodeId,fromHandleId:l.id??null,fromType:l.type,isValidConnection:o,flowId:u,doc:i,lib:`svelte`,nodeLookup:d});m&&f&&w(f);let h=structuredClone(Ze(p.connection));delete h.inProgress,h.toPosition=h.toHandle?h.toHandle.position:null,p.onclickconnectend?.(e,h),p.clickConnectStartHandle=null}var te=Vg(),E=()=>{};ga(te,()=>({"data-handleid":n(),"data-nodeid":c,"data-handlepos":i(),"data-id":`${p.flowId??``}-${c??``}-${n()??`null`??``}-${r()??``}`,class:[`svelte-flow__handle`,`svelte-flow__handle-${i()}`,p.noDragClass,p.noPanClass,i(),t.class],onmousedown:T,ontouchstart:T,onclick:p.clickConnect?ee:void 0,onkeypress:E,style:t.style,role:`button`,"aria-label":B(m)[`handle.ariaLabel`],tabindex:`-1`,...s,[ra]:{valid:B(C),connectingto:B(x),connectingfrom:B(b),source:!B(u),target:B(u),connectablestart:a(),connectableend:o(),connectable:B(d),connectionindicator:B(d)&&(!B(y)||B(S))&&(B(y)||p.clickConnectStartHandle?o():a())}})),Pi(F(te),()=>t.children??f),k(te),W(e,te),j()}var Ug=U(`<!> <!>`,1);function Wg(e,t){A(t,!0);let n=X(t,`targetPosition`,19,()=>um.Top),r=X(t,`sourcePosition`,19,()=>um.Bottom);var i=Ug(),a=I(i);Hg(a,{type:`target`,get position(){return n()}});var o=R(a);Hg(R(o),{type:`source`,get position(){return r()}}),z(()=>G(o,` ${t.data?.label??``} `)),W(e,i),j()}var Gg=U(` <!>`,1);function Kg(e,t){A(t,!0);let n=X(t,`data`,19,()=>({label:`Node`})),r=X(t,`sourcePosition`,19,()=>um.Bottom);Ae();var i=Gg(),a=I(i);Hg(R(a),{type:`source`,get position(){return r()}}),z(()=>G(a,`${n()?.label??``} `)),W(e,i),j()}var qg=U(` <!>`,1);function Jg(e,t){A(t,!0);let n=X(t,`data`,19,()=>({label:`Node`})),r=X(t,`targetPosition`,19,()=>um.Top);Ae();var i=qg(),a=I(i);Hg(R(a),{type:`target`,get position(){return r()}}),z(()=>G(a,`${n()?.label??``} `)),W(e,i),j()}function Yg(e,t){}function Xg(e,t,n){if(!n||!t)return;let r=n===`root`?t:t.querySelector(`.svelte-flow__${n}`);r&&r.appendChild(e)}function Zg(e,t){let n=M(j_),r=M(()=>B(n).domNode),i;return B(r)?Xg(e,B(r),t):i=Rn(()=>{Fn(()=>{Xg(e,B(r),t),i?.()})}),{async update(t){Xg(e,B(r),t)},destroy(){e.parentNode&&e.parentNode.removeChild(e),i?.()}}}function Qg(){let e=N(typeof window>`u`);if(B(e)){let t=Rn(()=>{Fn(()=>{P(e,!1),t?.()})})}return{get value(){return B(e)}}}var $g=e=>pm(e),e_=e=>fm(e);function t_(e){return e===void 0?void 0:`${e}px`}var n_={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},r_=new Set([`$$slots`,`$$events`,`$$legacy`,`x`,`y`,`width`,`height`,`selectEdgeOnClick`,`transparent`,`class`,`children`]),i_=U(`<div><!></div>`);function a_(e,t){A(t,!0);let n=X(t,`x`,3,0),r=X(t,`y`,3,0),i=X(t,`selectEdgeOnClick`,3,!1),a=X(t,`transparent`,3,!1),o=La(t,r_),s=j_(),c=Rg(`EdgeLabel must be used within a Custom Edge component`),l=M(()=>s.visible.edges.get(c)?.zIndex);var u=i_(),d=()=>{i()&&c&&s.handleEdgeSelection(c)};ga(u,(e,s,c)=>({class:[`svelte-flow__edge-label`,{transparent:a()},t.class],tabindex:`-1`,onclick:d,...o,[ia]:{display:e,cursor:i()?`pointer`:void 0,transform:`translate(-50%, -50%) translate(${n()??``}px,${r()??``}px)`,"pointer-events":`all`,width:s,height:c,"z-index":B(l)}}),[()=>Qg().value?`none`:void 0,()=>t_(t.width),()=>t_(t.height)],void 0,void 0,`svelte-1wg91mu`),Pi(F(u),()=>t.children??f),k(u),Li(u,(e,t)=>Zg?.(e,t),()=>`edge-labels`),W(e,u),j()}var o_=new Set([`$$slots`,`$$events`,`$$legacy`,`id`,`path`,`label`,`labelX`,`labelY`,`labelStyle`,`markerStart`,`markerEnd`,`style`,`interactionWidth`,`class`]),s_=ai(`<path></path>`),c_=ai(`<path fill="none"></path><!><!>`,1);function l_(e,t){let n=X(t,`interactionWidth`,3,20),r=La(t,o_);var i=c_(),a=I(i),o=R(a),s=e=>{var i=s_();ga(i,()=>({d:t.path,"stroke-opacity":0,"stroke-width":n(),fill:`none`,class:`svelte-flow__edge-interaction`,...r})),W(e,i)};K(o,e=>{n()>0&&e(s)});var c=R(o),l=e=>{a_(e,{get x(){return t.labelX},get y(){return t.labelY},get style(){return t.labelStyle},selectEdgeOnClick:!0,children:(e,n)=>{Ae();var r=oi();z(()=>G(r,t.label)),W(e,r)},$$slots:{default:!0}})};K(c,e=>{t.label&&e(l)}),z(()=>{Y(a,`id`,t.id),Y(a,`d`,t.path),J(a,0,Vi([`svelte-flow__edge-path`,t.class])),Y(a,`marker-start`,t.markerStart),Y(a,`marker-end`,t.markerEnd),Ji(a,t.style)}),W(e,i)}function u_(e,t){A(t,!0);let n=M(()=>ph({sourceX:t.sourceX,sourceY:t.sourceY,targetX:t.targetX,targetY:t.targetY,sourcePosition:t.sourcePosition,targetPosition:t.targetPosition,curvature:t.pathOptions?.curvature})),r=M(()=>v(B(n),3)),i=M(()=>B(r)[0]),a=M(()=>B(r)[1]),o=M(()=>B(r)[2]);l_(e,{get id(){return t.id},get path(){return B(i)},get labelX(){return B(a)},get labelY(){return B(o)},get label(){return t.label},get labelStyle(){return t.labelStyle},get markerStart(){return t.markerStart},get markerEnd(){return t.markerEnd},get interactionWidth(){return t.interactionWidth},get style(){return t.style}}),j()}function d_(e,t){A(t,!0);let n=M(()=>Eh({sourceX:t.sourceX,sourceY:t.sourceY,targetX:t.targetX,targetY:t.targetY,sourcePosition:t.sourcePosition,targetPosition:t.targetPosition})),r=M(()=>v(B(n),3)),i=M(()=>B(r)[0]),a=M(()=>B(r)[1]),o=M(()=>B(r)[2]);l_(e,{get path(){return B(i)},get labelX(){return B(a)},get labelY(){return B(o)},get label(){return t.label},get labelStyle(){return t.labelStyle},get markerStart(){return t.markerStart},get markerEnd(){return t.markerEnd},get interactionWidth(){return t.interactionWidth},get style(){return t.style}}),j()}function f_(e,t){A(t,!0);let n=M(()=>bh({sourceX:t.sourceX,sourceY:t.sourceY,targetX:t.targetX,targetY:t.targetY})),r=M(()=>v(B(n),3)),i=M(()=>B(r)[0]),a=M(()=>B(r)[1]),o=M(()=>B(r)[2]);l_(e,{get path(){return B(i)},get labelX(){return B(a)},get labelY(){return B(o)},get label(){return t.label},get labelStyle(){return t.labelStyle},get markerStart(){return t.markerStart},get markerEnd(){return t.markerEnd},get interactionWidth(){return t.interactionWidth},get style(){return t.style}}),j()}function p_(e,t){A(t,!0);let n=M(()=>Eh({sourceX:t.sourceX,sourceY:t.sourceY,targetX:t.targetX,targetY:t.targetY,sourcePosition:t.sourcePosition,targetPosition:t.targetPosition,borderRadius:0})),r=M(()=>v(B(n),3)),i=M(()=>B(r)[0]),a=M(()=>B(r)[1]),o=M(()=>B(r)[2]);l_(e,{get path(){return B(i)},get labelX(){return B(a)},get labelY(){return B(o)},get label(){return t.label},get labelStyle(){return t.labelStyle},get markerStart(){return t.markerStart},get markerEnd(){return t.markerEnd},get interactionWidth(){return t.interactionWidth},get style(){return t.style}}),j()}var m_=[`forEach`,`isDisjointFrom`,`isSubsetOf`,`isSupersetOf`],h_=[`difference`,`intersection`,`symmetricDifference`,`union`],g_=!1,__=class e extends Set{#e=new Map;#t=N(0);#n=N(0);#r=yr||-1;constructor(e){if(super(),e){for(var t of e)super.add(t);this.#n.v=super.size}g_||this.#a()}#i(e){return yr===this.#r?N(e):rn(e)}#a(){g_=!0;var t=e.prototype,n=Set.prototype;for(let e of m_)t[e]=function(...t){return B(this.#t),n[e].apply(this,t)};for(let r of h_)t[r]=function(...t){B(this.#t);var i=n[r].apply(this,t);return new e(i)}}has(e){var t=super.has(e),n=this.#e,r=n.get(e);if(r===void 0){if(!t)return B(this.#t),!1;r=this.#i(!0),n.set(e,r)}return B(r),t}add(e){return super.has(e)||(super.add(e),P(this.#n,super.size),un(this.#t)),this}delete(e){var t=super.delete(e),n=this.#e,r=n.get(e);return r!==void 0&&(n.delete(e),P(r,!1)),t&&(P(this.#n,super.size),un(this.#t)),t}clear(){if(super.size!==0){super.clear();var e=this.#e;for(var t of e.values())P(t,!1);e.clear(),P(this.#n,0),un(this.#t)}}keys(){return this.values()}values(){return B(this.#t),super.values()}entries(){return B(this.#t),super.entries()}[Symbol.iterator](){return this.keys()}get size(){return B(this.#n)}},v_=class extends Map{#e=new Map;#t=N(0);#n=N(0);#r=yr||-1;constructor(e){if(super(),e){for(var[t,n]of e)super.set(t,n);this.#n.v=super.size}}#i(e){return yr===this.#r?N(e):rn(e)}has(e){var t=this.#e,n=t.get(e);if(n===void 0){if(super.has(e))n=this.#i(0),t.set(e,n);else return B(this.#t),!1}return B(n),!0}forEach(e,t){this.#a(),super.forEach(e,t)}get(e){var t=this.#e,n=t.get(e);if(n===void 0){if(super.has(e))n=this.#i(0),t.set(e,n);else{B(this.#t);return}}return B(n),super.get(e)}getOrInsert(e,t){return super.has(e)||this.set(e,t),this.get(e)}getOrInsertComputed(e,t){return super.has(e)||this.set(e,t(e)),this.get(e)}set(e,t){var n=this.#e,r=n.get(e),i=super.get(e),a=super.set(e,t),o=this.#t;if(r===void 0)r=this.#i(0),n.set(e,r),P(this.#n,super.size),un(o);else if(i!==t){un(r);var s=o.reactions===null?null:new Set(o.reactions);(s===null||!r.reactions?.every(e=>s.has(e)))&&un(o)}return a}delete(e){var t=this.#e,n=t.get(e),r=super.delete(e);return n!==void 0&&(t.delete(e),P(n,-1)),r&&(P(this.#n,super.size),un(this.#t)),r}clear(){if(super.size!==0){super.clear();var e=this.#e;P(this.#n,0);for(var t of e.values())P(t,-1);un(this.#t),e.clear()}}#a(){B(this.#t);var e=this.#e;if(this.#n.v!==e.size){for(var t of super.keys())if(!e.has(t)){var n=this.#i(0);e.set(t,n)}}for([,n]of this.#e)B(n)}keys(){return B(this.#t),super.keys()}values(){return this.#a(),super.values()}entries(){return this.#a(),super.entries()}[Symbol.iterator](){return this.entries()}get size(){return B(this.#n),super.size}},y_=class{#e;#t;constructor(e,t){this.#e=e,this.#t=li(t)}get current(){return this.#t(),this.#e()}},b_=/\(.+\)/,x_=new Set([`all`,`print`,`screen`,`and`,`or`,`not`,`only`]),S_=class extends y_{constructor(e,t){let n=b_.test(e)||e.split(/[\s,]+/).some(e=>x_.has(e.trim()))?e:`(${e})`,r=window.matchMedia(n);super(()=>r.matches,e=>Yr(r,`change`,e))}};function C_(e,t,n,r){let i=new Map;return vm(e,{x:0,y:0,width:n,height:r},t,!0).forEach(e=>{i.set(e.id,e)}),i}function w_(e){let{edges:t,defaultEdgeOptions:n,nodeLookup:r,previousEdges:i,connectionMode:a,onerror:o,onlyRenderVisible:s,elevateEdgesOnSelect:c,zIndexMode:l}=e,u=new Map;for(let d of t){let t=r.get(d.source),f=r.get(d.target);if(!t||!f||t.hidden||f.hidden)continue;if(s){let{visibleNodes:n,transform:r,width:i,height:a}=e;if(gh({sourceNode:t,targetNode:f,width:i,height:a,transform:r}))n.set(t.id,t),n.set(f.id,f);else continue}let p=i.get(d.id);if(p&&d===p.edge&&t==p.sourceNode&&f==p.targetNode){u.set(d.id,p);continue}let m=Oh({id:d.id,sourceNode:t,targetNode:f,sourceHandle:d.sourceHandle||null,targetHandle:d.targetHandle||null,connectionMode:a,onError:o});m&&u.set(d.id,{...n,...d,...m,zIndex:hh({selected:d.selected,zIndex:d.zIndex??n.zIndex,sourceNode:t,targetNode:f,elevateOnSelect:c,zIndexMode:l}),sourceNode:t,targetNode:f,edge:d})}return u}var T_=zm(`Svelte Flow`,`https://svelteflow.dev/`),E_={input:Kg,output:Jg,default:Wg,group:Yg},D_={straight:f_,smoothstep:d_,default:u_,step:p_};function O_(e,t,n,r,i,a){return t&&!n&&r&&i?Km(_m(a,{filter:e=>!(!e.width&&!e.initialWidth||!e.height&&!e.initialHeight)}),r,i,.5,2,.1):n??{x:0,y:0,zoom:1}}function k_(e){class t{#e=M(()=>e.props.id??`1`);get flowId(){return B(this.#e)}set flowId(e){P(this.#e,e)}#t=N(null);get domNode(){return B(this.#t)}set domNode(e){P(this.#t,e)}#n=N(null);get panZoom(){return B(this.#n)}set panZoom(e){P(this.#n,e)}#r=N(e.width??0);get width(){return B(this.#r)}set width(e){P(this.#r,e)}#i=N(e.height??0);get height(){return B(this.#i)}set height(e){P(this.#i,e)}#a=N(e.props.zIndexMode??`basic`);get zIndexMode(){return B(this.#a)}set zIndexMode(e){P(this.#a,e)}#o=M(()=>{let{nodesInitialized:t}=Uh(e.nodes,this.nodeLookup,this.parentLookup,{nodeExtent:this.nodeExtent,nodeOrigin:this.nodeOrigin,elevateNodesOnSelect:e.props.elevateNodesOnSelect??!0,checkEquality:!0,zIndexMode:this.zIndexMode});return this.fitViewQueued&&t&&(this.fitViewOptions?.duration?this.resolveFitView():queueMicrotask(()=>{this.resolveFitView()})),t});get nodesInitialized(){return B(this.#o)}set nodesInitialized(e){P(this.#o,e)}#s=M(()=>this.panZoom!==null);get viewportInitialized(){return B(this.#s)}set viewportInitialized(e){P(this.#s,e)}#c=M(()=>(Qh(this.connectionLookup,this.edgeLookup,e.edges),e.edges));get _edges(){return B(this.#c)}set _edges(e){P(this.#c,e)}get nodes(){return this.nodesInitialized,e.nodes}set nodes(t){e.nodes=t}get edges(){return this._edges}set edges(t){e.edges=t}_prevSelectedNodes=[];_prevSelectedNodeIds=new Set;#l=M(()=>{let e=this._prevSelectedNodeIds.size,t=new Set,n=this.nodes.filter(e=>(e.selected&&(t.add(e.id),this._prevSelectedNodeIds.delete(e.id)),e.selected));return(e!==t.size||this._prevSelectedNodeIds.size>0)&&(this._prevSelectedNodes=n),this._prevSelectedNodeIds=t,this._prevSelectedNodes});get selectedNodes(){return B(this.#l)}set selectedNodes(e){P(this.#l,e)}_prevSelectedEdges=[];_prevSelectedEdgeIds=new Set;#u=M(()=>{let e=this._prevSelectedEdgeIds.size,t=new Set,n=this.edges.filter(e=>(e.selected&&(t.add(e.id),this._prevSelectedEdgeIds.delete(e.id)),e.selected));return(e!==t.size||this._prevSelectedEdgeIds.size>0)&&(this._prevSelectedEdges=n),this._prevSelectedEdgeIds=t,this._prevSelectedEdges});get selectedEdges(){return B(this.#u)}set selectedEdges(e){P(this.#u,e)}selectionChangeHandlers=new Map;nodeLookup=new Map;parentLookup=new Map;connectionLookup=new Map;edgeLookup=new Map;_prevVisibleEdges=new Map;#d=M(()=>{let{nodes:t,_edges:n,_prevVisibleEdges:r,nodeLookup:i,connectionMode:a,onerror:o,onlyRenderVisibleElements:s,defaultEdgeOptions:c,zIndexMode:l}=this,u,d,f={edges:n,defaultEdgeOptions:c,previousEdges:r,nodeLookup:i,connectionMode:a,elevateEdgesOnSelect:e.props.elevateEdgesOnSelect??!0,zIndexMode:l,onerror:o};if(s){let{viewport:e,width:t,height:n}=this,r=[e.x,e.y,e.zoom];u=C_(i,r,t,n),d=w_({...f,onlyRenderVisible:!0,visibleNodes:u,transform:r,width:t,height:n})}else u=this.nodeLookup,d=w_(f);return this._prevVisibleEdges=d,{nodes:u,edges:d}});get visible(){return B(this.#d)}set visible(e){P(this.#d,e)}#f=M(()=>e.props.nodesDraggable??!0);get nodesDraggable(){return B(this.#f)}set nodesDraggable(e){P(this.#f,e)}#p=M(()=>e.props.nodesConnectable??!0);get nodesConnectable(){return B(this.#p)}set nodesConnectable(e){P(this.#p,e)}#m=M(()=>e.props.elementsSelectable??!0);get elementsSelectable(){return B(this.#m)}set elementsSelectable(e){P(this.#m,e)}#h=M(()=>e.props.nodesFocusable??!0);get nodesFocusable(){return B(this.#h)}set nodesFocusable(e){P(this.#h,e)}#g=M(()=>e.props.edgesFocusable??!0);get edgesFocusable(){return B(this.#g)}set edgesFocusable(e){P(this.#g,e)}#_=M(()=>e.props.disableKeyboardA11y??!1);get disableKeyboardA11y(){return B(this.#_)}set disableKeyboardA11y(e){P(this.#_,e)}#v=M(()=>e.props.minZoom??.5);get minZoom(){return B(this.#v)}set minZoom(e){P(this.#v,e)}#y=M(()=>e.props.maxZoom??2);get maxZoom(){return B(this.#y)}set maxZoom(e){P(this.#y,e)}#b=M(()=>e.props.nodeOrigin??[0,0]);get nodeOrigin(){return B(this.#b)}set nodeOrigin(e){P(this.#b,e)}#x=M(()=>e.props.nodeExtent??tm);get nodeExtent(){return B(this.#x)}set nodeExtent(e){P(this.#x,e)}#S=M(()=>e.props.translateExtent??tm);get translateExtent(){return B(this.#S)}set translateExtent(e){P(this.#S,e)}#C=M(()=>e.props.defaultEdgeOptions??{});get defaultEdgeOptions(){return B(this.#C)}set defaultEdgeOptions(e){P(this.#C,e)}#w=M(()=>e.props.nodeDragThreshold??1);get nodeDragThreshold(){return B(this.#w)}set nodeDragThreshold(e){P(this.#w,e)}#T=M(()=>e.props.autoPanOnNodeDrag??!0);get autoPanOnNodeDrag(){return B(this.#T)}set autoPanOnNodeDrag(e){P(this.#T,e)}#E=M(()=>e.props.autoPanOnConnect??!0);get autoPanOnConnect(){return B(this.#E)}set autoPanOnConnect(e){P(this.#E,e)}#D=M(()=>e.props.autoPanOnNodeFocus??!0);get autoPanOnNodeFocus(){return B(this.#D)}set autoPanOnNodeFocus(e){P(this.#D,e)}#O=M(()=>e.props.autoPanSpeed??15);get autoPanSpeed(){return B(this.#O)}set autoPanSpeed(e){P(this.#O,e)}#k=M(()=>e.props.connectionDragThreshold??1);get connectionDragThreshold(){return B(this.#k)}set connectionDragThreshold(e){P(this.#k,e)}fitViewQueued=e.props.fitView??!1;fitViewOptions=e.props.fitViewOptions;fitViewResolver=null;#A=M(()=>e.props.snapGrid??null);get snapGrid(){return B(this.#A)}set snapGrid(e){P(this.#A,e)}#j=N(!1);get dragging(){return B(this.#j)}set dragging(e){P(this.#j,e)}#M=N(null);get selectionRect(){return B(this.#M)}set selectionRect(e){P(this.#M,e)}#N=N(!1);get selectionKeyPressed(){return B(this.#N)}set selectionKeyPressed(e){P(this.#N,e)}#P=N(!1);get multiselectionKeyPressed(){return B(this.#P)}set multiselectionKeyPressed(e){P(this.#P,e)}#F=N(!1);get deleteKeyPressed(){return B(this.#F)}set deleteKeyPressed(e){P(this.#F,e)}#I=N(!1);get panActivationKeyPressed(){return B(this.#I)}set panActivationKeyPressed(e){P(this.#I,e)}#L=N(!1);get zoomActivationKeyPressed(){return B(this.#L)}set zoomActivationKeyPressed(e){P(this.#L,e)}#R=N(null);get selectionRectMode(){return B(this.#R)}set selectionRectMode(e){P(this.#R,e)}#z=N(``);get ariaLiveMessage(){return B(this.#z)}set ariaLiveMessage(e){P(this.#z,e)}#B=M(()=>e.props.selectionMode??om.Partial);get selectionMode(){return B(this.#B)}set selectionMode(e){P(this.#B,e)}#V=M(()=>({...E_,...e.props.nodeTypes}));get nodeTypes(){return B(this.#V)}set nodeTypes(e){P(this.#V,e)}#H=M(()=>({...D_,...e.props.edgeTypes}));get edgeTypes(){return B(this.#H)}set edgeTypes(e){P(this.#H,e)}#U=M(()=>e.props.noPanClass??`nopan`);get noPanClass(){return B(this.#U)}set noPanClass(e){P(this.#U,e)}#W=M(()=>e.props.noDragClass??`nodrag`);get noDragClass(){return B(this.#W)}set noDragClass(e){P(this.#W,e)}#G=M(()=>e.props.noWheelClass??`nowheel`);get noWheelClass(){return B(this.#G)}set noWheelClass(e){P(this.#G,e)}#K=M(()=>Qm(e.props.ariaLabelConfig));get ariaLabelConfig(){return B(this.#K)}set ariaLabelConfig(e){P(this.#K,e)}#q=N(O_(this.nodesInitialized,e.props.fitView,e.props.initialViewport,this.width,this.height,this.nodeLookup));get _viewport(){return B(this.#q)}set _viewport(e){P(this.#q,e)}get viewport(){return e.viewport??this._viewport}set viewport(t){e.viewport&&=t,this._viewport=t}#J=N(sm);get _connection(){return B(this.#J)}set _connection(e){P(this.#J,e)}#Y=M(()=>this._connection.inProgress?{...this._connection,to:Vm(this._connection.to,[this.viewport.x,this.viewport.y,this.viewport.zoom])}:this._connection);get connection(){return B(this.#Y)}set connection(e){P(this.#Y,e)}#X=M(()=>e.props.connectionMode??im.Strict);get connectionMode(){return B(this.#X)}set connectionMode(e){P(this.#X,e)}#Z=M(()=>e.props.connectionRadius??20);get connectionRadius(){return B(this.#Z)}set connectionRadius(e){P(this.#Z,e)}#Q=M(()=>e.props.isValidConnection??(()=>!0));get isValidConnection(){return B(this.#Q)}set isValidConnection(e){P(this.#Q,e)}#$=M(()=>e.props.selectNodesOnDrag??!0);get selectNodesOnDrag(){return B(this.#$)}set selectNodesOnDrag(e){P(this.#$,e)}#ee=M(()=>e.props.defaultMarkerColor===void 0?`#b1b1b7`:e.props.defaultMarkerColor);get defaultMarkerColor(){return B(this.#ee)}set defaultMarkerColor(e){P(this.#ee,e)}#te=M(()=>Nh(e.edges,{defaultColor:this.defaultMarkerColor,id:this.flowId,defaultMarkerStart:this.defaultEdgeOptions.markerStart,defaultMarkerEnd:this.defaultEdgeOptions.markerEnd}));get markers(){return B(this.#te)}set markers(e){P(this.#te,e)}#ne=M(()=>e.props.onlyRenderVisibleElements??!1);get onlyRenderVisibleElements(){return B(this.#ne)}set onlyRenderVisibleElements(e){P(this.#ne,e)}#re=M(()=>e.props.onflowerror??T_);get onerror(){return B(this.#re)}set onerror(e){P(this.#re,e)}#ie=M(()=>e.props.ondelete);get ondelete(){return B(this.#ie)}set ondelete(e){P(this.#ie,e)}#ae=M(()=>e.props.onbeforedelete);get onbeforedelete(){return B(this.#ae)}set onbeforedelete(e){P(this.#ae,e)}#oe=M(()=>e.props.onbeforeconnect);get onbeforeconnect(){return B(this.#oe)}set onbeforeconnect(e){P(this.#oe,e)}#se=M(()=>e.props.onconnect);get onconnect(){return B(this.#se)}set onconnect(e){P(this.#se,e)}#ce=M(()=>e.props.onconnectstart);get onconnectstart(){return B(this.#ce)}set onconnectstart(e){P(this.#ce,e)}#le=M(()=>e.props.onconnectend);get onconnectend(){return B(this.#le)}set onconnectend(e){P(this.#le,e)}#ue=M(()=>e.props.onbeforereconnect);get onbeforereconnect(){return B(this.#ue)}set onbeforereconnect(e){P(this.#ue,e)}#de=M(()=>e.props.onreconnect);get onreconnect(){return B(this.#de)}set onreconnect(e){P(this.#de,e)}#fe=M(()=>e.props.onreconnectstart);get onreconnectstart(){return B(this.#fe)}set onreconnectstart(e){P(this.#fe,e)}#pe=M(()=>e.props.onreconnectend);get onreconnectend(){return B(this.#pe)}set onreconnectend(e){P(this.#pe,e)}#me=M(()=>e.props.clickConnect??!0);get clickConnect(){return B(this.#me)}set clickConnect(e){P(this.#me,e)}#he=M(()=>e.props.onclickconnectstart);get onclickconnectstart(){return B(this.#he)}set onclickconnectstart(e){P(this.#he,e)}#ge=M(()=>e.props.onclickconnectend);get onclickconnectend(){return B(this.#ge)}set onclickconnectend(e){P(this.#ge,e)}#_e=N(null);get clickConnectStartHandle(){return B(this.#_e)}set clickConnectStartHandle(e){P(this.#_e,e)}#ve=M(()=>e.props.onselectiondrag);get onselectiondrag(){return B(this.#ve)}set onselectiondrag(e){P(this.#ve,e)}#ye=M(()=>e.props.onselectiondragstart);get onselectiondragstart(){return B(this.#ye)}set onselectiondragstart(e){P(this.#ye,e)}#be=M(()=>e.props.onselectiondragstop);get onselectiondragstop(){return B(this.#be)}set onselectiondragstop(e){P(this.#be,e)}resolveFitView=async()=>{this.panZoom&&(await xm({nodes:this.nodeLookup,width:this.width,height:this.height,panZoom:this.panZoom,minZoom:this.minZoom,maxZoom:this.maxZoom},this.fitViewOptions),this.fitViewResolver?.resolve(!0),this.fitViewQueued=!1,this.fitViewOptions=void 0,this.fitViewResolver=null)};_prefersDark=new S_(`(prefers-color-scheme: dark)`,e.props.colorModeSSR===`dark`);#xe=M(()=>e.props.colorMode===`system`?this._prefersDark.current?`dark`:`light`:e.props.colorMode??`light`);get colorMode(){return B(this.#xe)}set colorMode(e){P(this.#xe,e)}constructor(){}resetStoreValues(){this.dragging=!1,this.selectionRect=null,this.selectionRectMode=null,this.selectionKeyPressed=!1,this.multiselectionKeyPressed=!1,this.deleteKeyPressed=!1,this.panActivationKeyPressed=!1,this.zoomActivationKeyPressed=!1,this._connection=sm,this.clickConnectStartHandle=null,this.viewport=e.props.initialViewport??{x:0,y:0,zoom:1},this.ariaLiveMessage=``}}return new t}var A_=em.error001(`svelte`);function j_(){let e=rt(M_);if(!e)throw Error(A_);return e.getStore()}var M_=Symbol();function N_(e){let t=k_(e);function n(e){t.nodeTypes={...E_,...e}}function r(e){t.edgeTypes={...D_,...e}}function i(e){t.edges=Mg(e,t.edges,{onError:t.onerror})}let a=(e,n=!1)=>{t.nodes=t.nodes.map(r=>{if(t.connection.inProgress&&t.connection.fromNode.id===r.id){let e=t.nodeLookup.get(r.id);e&&(t.connection={...t.connection,from:Ah(e,t.connection.fromHandle,um.Left,!0)})}let i=e.get(r.id);return i?{...r,position:i.position,dragging:n}:r})};function o(e){let{changes:n,updatedInternals:r}=Yh(e,t.nodeLookup,t.parentLookup,t.domNode,t.nodeOrigin,t.nodeExtent,t.zIndexMode);if(!r)return;Bh(t.nodeLookup,t.parentLookup,{nodeOrigin:t.nodeOrigin,nodeExtent:t.nodeExtent,zIndexMode:t.zIndexMode}),t.fitViewQueued&&t.resolveFitView();let i=new Map;for(let e of n){let n=t.nodeLookup.get(e.id)?.internals.userNode;if(!n)continue;let r={...n};switch(e.type){case`dimensions`:{let t={...r.measured,...e.dimensions};e.setAttributes&&(r.width=e.dimensions?.width??r.width,r.height=e.dimensions?.height??r.height),r.measured=t;break}case`position`:r.position=e.position??r.position}i.set(e.id,r)}t.nodes=t.nodes.map(e=>i.get(e.id)??e)}function s(e){let n=t.fitViewResolver??Promise.withResolvers();return t.fitViewQueued=!0,t.fitViewOptions=e,t.fitViewResolver=n,t.nodes=[...t.nodes],n.promise}async function c(e,n,r){let i=r?.zoom===void 0?t.maxZoom:r.zoom,a=t.panZoom;return a?(await a.setViewport({x:t.width/2-e*i,y:t.height/2-n*i,zoom:i},{duration:r?.duration,ease:r?.ease,interpolate:r?.interpolate}),!0):!1}async function l(e,n){let r=t.panZoom;return r?r.scaleBy(e,n):!1}async function u(e){return l(1.2,e)}function d(e){return l(1/1.2,e)}function f(e){let n=t.panZoom;n&&(n.setScaleExtent([e,t.maxZoom]),t.minZoom=e)}function p(e){let n=t.panZoom;n&&(n.setScaleExtent([t.minZoom,e]),t.maxZoom=e)}function m(e){let n=t.panZoom;n&&(n.setTranslateExtent(e),t.translateExtent=e)}function h(e,t=null){let n=!1,r=e.map(e=>(!t||t.has(e.id))&&e.selected?(n=!0,{...e,selected:!1}):e);return[n,r]}function g(e){let n=e?.nodes?new Set(e.nodes.map(e=>e.id)):null,[r,i]=h(t.nodes,n);r&&(t.nodes=i);let a=e?.edges?new Set(e.edges.map(e=>e.id)):null,[o,s]=h(t.edges,a);o&&(t.edges=s)}function _(e){let n=t.multiselectionKeyPressed;t.nodes=t.nodes.map(t=>{let r=e.includes(t.id),i=n&&t.selected||r;return!!t.selected===i?t:{...t,selected:i}}),n||g({nodes:[]})}function v(e){let n=t.multiselectionKeyPressed;t.edges=t.edges.map(t=>{let r=e.includes(t.id),i=n&&t.selected||r;return!!t.selected===i?t:{...t,selected:i}}),n||g({edges:[]})}function y(e,n,r){let i=t.nodeLookup.get(e);i?(t.selectionRect=null,t.selectionRectMode=null,i.selected?(n||i.selected&&t.multiselectionKeyPressed)&&(g({nodes:[i.internals.userNode],edges:[]}),requestAnimationFrame(()=>r?.blur())):_([e])):t.onerror(`012`,em.error012(e))}function b(e){let n=t.edgeLookup.get(e);n?(n.selectable||t.elementsSelectable&&n.selectable===void 0)&&(t.selectionRect=null,t.selectionRectMode=null,n.selected?n.selected&&t.multiselectionKeyPressed&&g({nodes:[],edges:[n]}):v([e])):t.onerror(`016`,em.error016(e))}function x(e,n){let{nodeExtent:r,snapGrid:i,nodeOrigin:o,nodeLookup:s,nodesDraggable:c,onerror:l}=t,u=new Map,d=i?.[0]??5,f=i?.[1]??5,p=e.x*d*n,m=e.y*f*n;for(let e of s.values()){if(!(e.selected&&(e.draggable||c&&e.draggable===void 0)))continue;let t={x:e.internals.positionAbsolute.x+p,y:e.internals.positionAbsolute.y+m};i&&(t=Bm(t,i));let{position:n,positionAbsolute:a}=Sm({nodeId:e.id,nextPosition:t,nodeLookup:s,nodeExtent:r,nodeOrigin:o,onError:l});e.position=n,e.internals.positionAbsolute=a,u.set(e.id,e)}a(u)}function S(e){return Xh({delta:e,panZoom:t.panZoom,transform:[t.viewport.x,t.viewport.y,t.viewport.zoom],translateExtent:t.translateExtent,width:t.width,height:t.height})}let C=e=>{t._connection={...e}};function w(){t._connection=sm}function T(){t.resetStoreValues(),g()}return Object.assign(t,{setNodeTypes:n,setEdgeTypes:r,addEdge:i,updateNodePositions:a,updateNodeInternals:o,zoomIn:u,zoomOut:d,fitView:s,setCenter:c,setMinZoom:f,setMaxZoom:p,setTranslateExtent:m,unselectNodesAndEdges:g,addSelectedNodes:_,addSelectedEdges:v,handleNodeSelection:y,handleEdgeSelection:b,moveSelectedNodes:x,panBy:S,updateConnection:C,cancelConnection:w,reset:T})}function P_(e,t){let{minZoom:n,maxZoom:r,initialViewport:i,onPanZoomStart:a,onPanZoom:o,onPanZoomEnd:s,translateExtent:c,setPanZoomInstance:l,onDraggingChange:u,onTransformChange:d}=t,f=kg({domNode:e,minZoom:n,maxZoom:r,translateExtent:c,viewport:i,onPanZoom:o,onPanZoomStart:a,onPanZoomEnd:s,onDraggingChange:u}),p=f.getViewport();return(i.x!==p.x||i.y!==p.y||i.zoom!==p.zoom)&&d([p.x,p.y,p.zoom]),l(f),f.update(t),{update(e){f.update(e)}}}var F_=U(`<div class="svelte-flow__zoom svelte-flow__container"><!></div>`);function I_(e,t){A(t,!0);let n=X(t,`store`,15),r=M(()=>n().panActivationKeyPressed||t.panOnDrag),i=M(()=>n().panActivationKeyPressed||t.panOnScroll),{viewport:a}=n(),o=!1;Fn(()=>{!o&&n().viewportInitialized&&(t.oninit?.(),o=!0)});var s=F_();Pi(F(s),()=>t.children),k(s),Li(s,(e,t)=>P_?.(e,t),()=>({viewport:n().viewport,minZoom:n().minZoom,maxZoom:n().maxZoom,initialViewport:a,onDraggingChange:e=>{n(n().dragging=e,!0)},setPanZoomInstance:e=>{n(n().panZoom=e,!0)},onPanZoomStart:t.onmovestart,onPanZoom:t.onmove,onPanZoomEnd:t.onmoveend,zoomOnScroll:t.zoomOnScroll,zoomOnDoubleClick:t.zoomOnDoubleClick,zoomOnPinch:t.zoomOnPinch,panOnScroll:B(i),panOnDrag:B(r),panOnScrollSpeed:t.panOnScrollSpeed,panOnScrollMode:t.panOnScrollMode,panActivationKeyPressed:n().panActivationKeyPressed,zoomActivationKeyPressed:n().zoomActivationKeyPressed,preventScrolling:typeof t.preventScrolling!=`boolean`||t.preventScrolling,noPanClassName:n().noPanClass,noWheelClassName:n().noWheelClass,userSelectionActive:!!n().selectionRect,translateExtent:n().translateExtent,lib:`svelte`,paneClickDistance:t.paneClickDistance,selectionOnDrag:t.selectionOnDrag,onTransformChange:e=>{n(n().viewport={x:e[0],y:e[1],zoom:e[2]},!0)},connectionInProgress:n().connection.inProgress})),W(e,s),j()}function L_(e,t){return n=>{n.target===t&&e?.(n)}}function R_(e){return t=>{let n=e.has(t.id);return!!t.selected===n?t:{...t,selected:n}}}function z_(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}var B_=U(`<div><!></div>`);function V_(e,t){A(t,!0);let n=X(t,`store`,15),r=X(t,`panOnDrag`,3,!0),i=X(t,`paneClickDistance`,3,1),a=X(t,`autoPanOnSelection`,3,!0),o,s=null,c=!1,l=new Set,u=new Set,d=M(()=>n().panActivationKeyPressed||r()),f=M(()=>n().selectionKeyPressed||!!n().selectionRect||t.selectionOnDrag&&B(d)!==!0),p=M(()=>n().elementsSelectable&&(B(f)||n().selectionRectMode===`user`)),m=!1,h=0,g={x:0,y:0},_=!1;function v(e){if(e.pointerType===`touch`&&B(d)!==!1&&!n().selectionKeyPressed||(s=o?.getBoundingClientRect(),!s))return;let r=e.target===o,i=!r&&!!e.target.closest(`.nokey`),a=t.selectionOnDrag&&r||n().selectionKeyPressed;if(i||!B(f)||!a||e.button!==0||!e.isPrimary)return;e.target?.setPointerCapture?.(e.pointerId),m=!1,_=!1;let{x:c,y:l}=ch(e,s),u=Vm({x:c,y:l},[n().viewport.x,n().viewport.y,n().viewport.zoom]);n(n().selectionRect={width:0,height:0,startX:u.x,startY:u.y,x:c,y:l},!0),r||(e.stopPropagation(),e.preventDefault())}function y(e,t){if(n().selectionRect?.startX===void 0||n().selectionRect.startY===void 0)return;let r={x:n().selectionRect?.startX,y:n().selectionRect?.startY},i=Hm(r,[n().viewport.x,n().viewport.y,n().viewport.zoom]),a={startX:r.x,startY:r.y,x:e<i.x?e:i.x,y:t<i.y?t:i.y,width:Math.abs(e-i.x),height:Math.abs(t-i.y)},o=l,s=u;l=new Set(vm(n().nodeLookup,a,[n().viewport.x,n().viewport.y,n().viewport.zoom],n().selectionMode===om.Partial,!0).map(e=>e.id));let c=n().defaultEdgeOptions.selectable??!0;u=new Set;for(let e of l){let t=n().connectionLookup.get(e);if(t)for(let{edgeId:e}of t.values()){let t=n().edgeLookup.get(e);t&&(t.selectable??c)&&u.add(e)}}z_(o,l)||n(n().nodes=n().nodes.map(R_(l)),!0),z_(s,u)||n(n().edges=n().edges.map(R_(u)),!0),n(n().selectionRectMode=`user`,!0),n(n().selectionRect=a,!0)}function b(){if(!a()||!s)return;let[e,t]=Om(g,s,n().autoPanSpeed);n().panBy({x:e,y:t}).then(e=>{!m||!e||y(g.x,g.y),h=requestAnimationFrame(b)})}function x(){cancelAnimationFrame(h),h=0,_=!1}Va(()=>{typeof window<`u`&&x()});function S(e){if(!B(f)||!s||!n().selectionRect)return;let r=ch(e,s);g={x:r.x,y:r.y};let a=Hm({x:n().selectionRect.startX,y:n().selectionRect.startY},[n().viewport.x,n().viewport.y,n().viewport.zoom]);if(!m){let o=n().selectionKeyPressed?0:i();if(Math.hypot(r.x-a.x,r.y-a.y)<=o)return;n().unselectNodesAndEdges(),t.onselectionstart?.(e)}m=!0,_||=(b(),!0),y(r.x,r.y)}function C(e){B(p)?e.button===0&&(e.target?.releasePointerCapture?.(e.pointerId),!m&&e.target===o&&te?.(e),n(n().selectionRect=null,!0),m&&n(n().selectionRectMode=l.size>0?`nodes`:null,!0),m&&t.onselectionend?.(e),x()):e.target===o&&n().connection.inProgress&&(c=!0)}function w(e){e.target?.releasePointerCapture?.(e.pointerId),x()}let T=e=>{Array.isArray(B(d))&&B(d).includes(2)?e.preventDefault():t.onpanecontextmenu?.({event:e})},ee=e=>{m&&=(e.stopPropagation(),!1)};function te(e){m||n().connection.inProgress||c?(m=!1,c=!1):(t.onpaneclick?.({event:e}),n().unselectNodesAndEdges(),n(n().selectionRectMode=null,!0),n(n().selectionRect=null,!0))}var E=B_();let ne;var D=M(()=>B(p)?void 0:L_(te,o)),re=M(()=>L_(T,o));Pi(F(E),()=>t.children),k(E),Aa(E,e=>o=e,()=>o),z(e=>ne=J(E,1,`svelte-flow__pane svelte-flow__container`,null,ne,{draggable:e,dragging:n().dragging,selection:B(f)}),[()=>r()===!0||Array.isArray(r())&&r().includes(0)]),H(`click`,E,function(...e){B(D)?.apply(this,e)}),V(`pointerdown`,E,function(...e){(B(p)?v:void 0)?.apply(this,e)},!0),H(`pointermove`,E,function(...e){(B(p)?S:void 0)?.apply(this,e)}),H(`pointerup`,E,C),V(`pointercancel`,E,function(...e){(B(p)?w:void 0)?.apply(this,e)}),H(`contextmenu`,E,function(...e){B(re)?.apply(this,e)}),V(`click`,E,function(...e){(B(p)?ee:void 0)?.apply(this,e)},!0),W(e,E),j()}Xr([`click`,`pointermove`,`pointerup`,`contextmenu`]);var H_=U(`<div class="svelte-flow__viewport xyflow__viewport svelte-flow__container"><!></div>`);function U_(e,t){A(t,!0);var n=H_();let r;Pi(F(n),()=>t.children),k(n),z(()=>r=Ji(n,``,r,{transform:`translate(${t.store.viewport.x??``}px, ${t.store.viewport.y??``}px) scale(${t.store.viewport.zoom??``})`})),W(e,n),j()}function W_(e,t){let{store:n,onDrag:r,onDragStart:i,onDragStop:a,onNodeMouseDown:o}=t,s=ig({onDrag:r,onDragStart:i,onDragStop:a,onNodeMouseDown:o,getStoreItems:()=>{let{snapGrid:e,viewport:t}=n;return{nodes:n.nodes,nodeLookup:n.nodeLookup,edges:n.edges,nodeExtent:n.nodeExtent,snapGrid:e||[0,0],snapToGrid:!!e,nodeOrigin:n.nodeOrigin,multiSelectionActive:n.multiselectionKeyPressed,domNode:n.domNode,transform:[t.x,t.y,t.zoom],autoPanOnNodeDrag:n.autoPanOnNodeDrag,nodesDraggable:n.nodesDraggable,selectNodesOnDrag:n.selectNodesOnDrag,nodeDragThreshold:n.nodeDragThreshold,unselectNodesAndEdges:n.unselectNodesAndEdges,updateNodePositions:n.updateNodePositions,onSelectionDrag:n.onselectiondrag,onSelectionDragStart:n.onselectiondragstart,onSelectionDragStop:n.onselectiondragstop,panBy:n.panBy}}});function c(e,t){t.disabled?s.destroy():s.update({domNode:e,noDragClassName:t.noDragClass,handleSelector:t.handleSelector,nodeId:t.nodeId,isSelectable:t.isSelectable,nodeClickDistance:t.nodeClickDistance})}return c(e,t),{update(t){c(e,t)},destroy(){s.destroy()}}}var G_=U(`<div aria-live="assertive" aria-atomic="true" class="a11y-live-msg svelte-13pq11u"> </div>`),K_=U(`<div class="a11y-hidden svelte-13pq11u"> </div> <div class="a11y-hidden svelte-13pq11u"> </div> <!>`,1);function q_(e,t){A(t,!0);var n=K_(),r=I(n),i=L(r,!0),a=R(r,2),o=L(a,!0),s=R(a,2),c=e=>{var n=G_(),r=L(n,!0);z(()=>{Y(n,`id`,`${X_}-${t.store.flowId}`),G(r,t.store.ariaLiveMessage)}),W(e,n)};K(s,e=>{t.store.disableKeyboardA11y||e(c)}),z(()=>{Y(r,`id`,`${J_}-${t.store.flowId}`),G(i,t.store.disableKeyboardA11y?t.store.ariaLabelConfig[`node.a11yDescription.default`]:t.store.ariaLabelConfig[`node.a11yDescription.keyboardDisabled`]),Y(a,`id`,`${Y_}-${t.store.flowId}`),G(o,t.store.ariaLabelConfig[`edge.a11yDescription.default`])}),W(e,n),j()}var J_=`svelte-flow__node-desc`,Y_=`svelte-flow__edge-desc`,X_=`svelte-flow__aria-live`,Z_=U(`<div><!></div>`);function Q_(e,t){A(t,!0);let n=X(t,`store`,15),r=M(()=>_(t.node.data,()=>({}),!0)),i=M(()=>_(t.node.selected,!1)),a=M(()=>t.node.draggable),o=M(()=>t.node.selectable),s=M(()=>_(t.node.deletable,!0)),c=M(()=>t.node.connectable),l=M(()=>t.node.focusable),u=M(()=>_(t.node.hidden,!1)),d=M(()=>_(t.node.dragging,!1)),f=M(()=>_(t.node.style,``)),p=M(()=>t.node.class),m=M(()=>_(t.node.type,`default`)),h=M(()=>t.node.parentId),g=M(()=>t.node.sourcePosition),v=M(()=>t.node.targetPosition),y=M(()=>_(t.node.measured,()=>({width:0,height:0}),!0).width),b=M(()=>_(t.node.measured,()=>({width:0,height:0}),!0).height),x=M(()=>t.node.initialWidth),S=M(()=>t.node.initialHeight),C=M(()=>t.node.width),w=M(()=>t.node.height),T=M(()=>t.node.dragHandle),ee=M(()=>_(t.node.internals.z,0)),te=M(()=>t.node.internals.positionAbsolute.x),E=M(()=>t.node.internals.positionAbsolute.y),ne=M(()=>t.node.internals.userNode),{id:D}=t.node,re=M(()=>B(a)??n().nodesDraggable),ie=M(()=>B(o)??n().elementsSelectable),ae=M(()=>B(c)??n().nodesConnectable),oe=M(()=>Xm(t.node)),se=M(()=>!!t.node.internals.handleBounds),ce=M(()=>B(oe)&&B(se)),le=M(()=>B(l)??n().nodesFocusable);function ue(e){return n().parentLookup.has(e)}let de=M(()=>ue(D)),fe=N(null),pe=null,me=B(m),he=B(g),ge=B(v),_e=M(()=>n().nodeTypes[B(m)]??Wg),ve=M(()=>n().ariaLabelConfig);Fg(D),Lg({get value(){return B(ae)}});let ye=M(()=>{let e=B(y)===void 0?B(C)??B(x):B(C),t=B(b)===void 0?B(w)??B(S):B(w);if(e!==void 0||t!==void 0||B(f)!==void 0)return`${B(f)};${e?`width:${t_(e)};`:``}${t?`height:${t_(t)};`:``}`});Fn(()=>{(B(m)!==me||B(g)!==he||B(v)!==ge)&&B(fe)!==null&&requestAnimationFrame(()=>{B(fe)!==null&&n().updateNodeInternals(new Map([[D,{id:D,nodeElement:B(fe),force:!0}]]))}),me=B(m),he=B(g),ge=B(v)}),Fn(()=>{t.resizeObserver&&(!B(ce)||B(fe)!==pe)&&(pe&&t.resizeObserver.unobserve(pe),B(fe)&&t.resizeObserver.observe(B(fe)),pe=B(fe))}),Va(()=>{pe&&t.resizeObserver?.unobserve(pe)});function be(e){B(ie)&&(!n().selectNodesOnDrag||!B(re)||n().nodeDragThreshold>0)&&n().handleNodeSelection(D),t.onnodeclick?.({node:B(ne),event:e})}function xe(e){if(!(oh(e)||n().disableKeyboardA11y)){if(nm.includes(e.key)&&B(ie)){let t=e.key===`Escape`;n().handleNodeSelection(D,t,B(fe))}else B(re)&&t.node.selected&&Object.prototype.hasOwnProperty.call(n_,e.key)&&(e.preventDefault(),n(n().ariaLiveMessage=B(ve)[`node.a11yDescription.ariaLiveMessage`]({direction:e.key.replace(`Arrow`,``).toLowerCase(),x:~~t.node.internals.positionAbsolute.x,y:~~t.node.internals.positionAbsolute.y}),!0),n().moveSelectedNodes(n_[e.key],e.shiftKey?4:1))}}let Se=()=>{if(n().disableKeyboardA11y||!n().autoPanOnNodeFocus||!B(fe)?.matches(`:focus-visible`))return;let{width:e,height:r,viewport:i}=n();vm(new Map([[D,t.node]]),{x:0,y:0,width:e,height:r},[i.x,i.y,i.zoom],!0).length>0||n().setCenter(t.node.position.x+(t.node.measured.width??0)/2,t.node.position.y+(t.node.measured.height??0)/2,{zoom:i.zoom})};var Ce=si(),we=I(Ce),Te=e=>{var a=Z_();ga(a,()=>({"data-id":D,class:[`svelte-flow__node`,`svelte-flow__node-${B(m)}`,B(p)],style:B(ye),onclick:be,onpointerenter:t.onnodepointerenter?e=>t.onnodepointerenter({node:B(ne),event:e}):void 0,onpointerleave:t.onnodepointerleave?e=>t.onnodepointerleave({node:B(ne),event:e}):void 0,onpointermove:t.onnodepointermove?e=>t.onnodepointermove({node:B(ne),event:e}):void 0,oncontextmenu:t.onnodecontextmenu?e=>t.onnodecontextmenu({node:B(ne),event:e}):void 0,onkeydown:B(le)?xe:void 0,onfocus:B(le)?Se:void 0,tabIndex:B(le)?0:void 0,role:t.node.ariaRole??(B(le)?`group`:void 0),"aria-label":t.node.ariaLabel,"aria-roledescription":`node`,"aria-describedby":n().disableKeyboardA11y?void 0:`${J_}-${n().flowId}`,...t.node.domAttributes,[ra]:{dragging:B(d),selected:B(i),draggable:B(re),connectable:B(ae),selectable:B(ie),nopan:B(re),parent:B(de)},[ia]:{"z-index":B(ee),transform:`translate(${B(te)??``}px, ${B(E)??``}px)`,visibility:B(oe)?`visible`:`hidden`}})),Fi(F(a),()=>B(_e),(e,t)=>{t(e,{get data(){return B(r)},get id(){return D},get selected(){return B(i)},get selectable(){return B(ie)},get deletable(){return B(s)},get sourcePosition(){return B(g)},get targetPosition(){return B(v)},get zIndex(){return B(ee)},get dragging(){return B(d)},get draggable(){return B(re)},get dragHandle(){return B(T)},get parentId(){return B(h)},get type(){return B(m)},get isConnectable(){return B(ae)},get positionAbsoluteX(){return B(te)},get positionAbsoluteY(){return B(E)},get width(){return B(C)},get height(){return B(w)}})}),k(a),Li(a,(e,t)=>W_?.(e,t),()=>({nodeId:D,isSelectable:B(ie),disabled:!B(re),handleSelector:B(T),noDragClass:n().noDragClass,nodeClickDistance:t.nodeClickDistance,onNodeMouseDown:n().handleNodeSelection,onDrag:(e,n,r,i)=>{t.onnodedrag?.({event:e,targetNode:r,nodes:i})},onDragStart:(e,n,r,i)=>{t.onnodedragstart?.({event:e,targetNode:r,nodes:i})},onDragStop:(e,n,r,i)=>{t.onnodedragstop?.({event:e,targetNode:r,nodes:i})},store:n()})),Aa(a,e=>P(fe,e),()=>B(fe)),W(e,a)};K(we,e=>{B(u)||e(Te)}),W(e,Ce),j()}var $_=U(`<div class="svelte-flow__nodes"></div>`);function ev(e,t){A(t,!0);let n=X(t,`store`,15),r=typeof ResizeObserver>`u`?null:new ResizeObserver(e=>{let t=new Map;e.forEach(e=>{let n=e.target.getAttribute(`data-id`);t.set(n,{id:n,nodeElement:e.target,force:!0})}),n().updateNodeInternals(t)});Va(()=>{r?.disconnect()});var i=$_();q(i,21,()=>n().visible.nodes.values(),e=>e.id,(e,i)=>{Q_(e,{get node(){return B(i)},get resizeObserver(){return r},get nodeClickDistance(){return t.nodeClickDistance},get onnodeclick(){return t.onnodeclick},get onnodepointerenter(){return t.onnodepointerenter},get onnodepointermove(){return t.onnodepointermove},get onnodepointerleave(){return t.onnodepointerleave},get onnodedrag(){return t.onnodedrag},get onnodedragstart(){return t.onnodedragstart},get onnodedragstop(){return t.onnodedragstop},get onnodecontextmenu(){return t.onnodecontextmenu},get store(){return n()},set store(e){n(e)}})}),k(i),W(e,i),j()}var tv=ai(`<svg class="svelte-flow__edge-wrapper"><g><!></g></svg>`);function nv(e,t){A(t,!0);let n=M(()=>t.edge.id),r=M(()=>t.edge.source),i=M(()=>t.edge.target),a=M(()=>t.edge.sourceX),o=M(()=>t.edge.sourceY),s=M(()=>t.edge.targetX),c=M(()=>t.edge.targetY),l=M(()=>t.edge.sourcePosition),u=M(()=>t.edge.targetPosition),d=M(()=>_(t.edge.animated,!1)),f=M(()=>_(t.edge.selected,!1)),p=M(()=>t.edge.label),m=M(()=>t.edge.labelStyle),h=M(()=>_(t.edge.data,()=>({}),!0)),g=M(()=>t.edge.style),v=M(()=>t.edge.interactionWidth),y=M(()=>_(t.edge.type,`default`)),b=M(()=>t.edge.sourceHandle),x=M(()=>t.edge.targetHandle),S=M(()=>t.edge.markerStart),C=M(()=>t.edge.markerEnd),w=M(()=>t.edge.selectable),T=M(()=>t.edge.focusable),ee=M(()=>_(t.edge.deletable,!0)),te=M(()=>t.edge.hidden),E=M(()=>t.edge.zIndex),ne=M(()=>t.edge.class),D=M(()=>t.edge.ariaLabel);zg(B(n));let re=null,ie=M(()=>B(w)??t.store.elementsSelectable),ae=M(()=>B(T)??t.store.edgesFocusable),oe=M(()=>t.store.edgeTypes[B(y)]??u_),se=M(()=>B(S)?`url('#${Mh(B(S),t.store.flowId)}')`:void 0),ce=M(()=>B(C)?`url('#${Mh(B(C),t.store.flowId)}')`:void 0);function le(e){let r=t.store.edgeLookup.get(B(n));r&&(B(ie)&&t.store.handleEdgeSelection(B(n)),t.onedgeclick?.({event:e,edge:r}))}function ue(e,r){let i=t.store.edgeLookup.get(B(n));i&&r({event:e,edge:i})}function de(e){if(!t.store.disableKeyboardA11y&&nm.includes(e.key)&&B(ie)){let{unselectNodesAndEdges:r,addSelectedEdges:i}=t.store;e.key===`Escape`?(re?.blur(),r({edges:[t.edge]})):i([B(n)])}}var fe=si(),pe=I(fe),me=e=>{var _=tv();let S;var C=F(_);ga(C,()=>({class:[`svelte-flow__edge`,B(ne)],"data-id":B(n),onclick:le,oncontextmenu:t.onedgecontextmenu?e=>{ue(e,t.onedgecontextmenu)}:void 0,onpointerenter:t.onedgepointerenter?e=>{ue(e,t.onedgepointerenter)}:void 0,onpointerleave:t.onedgepointerleave?e=>{ue(e,t.onedgepointerleave)}:void 0,"aria-label":B(D)===null?void 0:B(D)?B(D):`Edge from ${B(r)} to ${B(i)}`,"aria-describedby":B(ae)?`${Y_}-${t.store.flowId}`:void 0,role:t.edge.ariaRole??(B(ae)?`group`:`img`),"aria-roledescription":`edge`,onkeydown:B(ae)?de:void 0,tabindex:B(ae)?0:void 0,...t.edge.domAttributes,[ra]:{animated:B(d),selected:B(f),selectable:B(ie)}})),Fi(F(C),()=>B(oe),(e,t)=>{t(e,{get id(){return B(n)},get source(){return B(r)},get target(){return B(i)},get sourceX(){return B(a)},get sourceY(){return B(o)},get targetX(){return B(s)},get targetY(){return B(c)},get sourcePosition(){return B(l)},get targetPosition(){return B(u)},get animated(){return B(d)},get selected(){return B(f)},get label(){return B(p)},get labelStyle(){return B(m)},get data(){return B(h)},get style(){return B(g)},get interactionWidth(){return B(v)},get selectable(){return B(ie)},get deletable(){return B(ee)},get type(){return B(y)},get sourceHandleId(){return B(b)},get targetHandleId(){return B(x)},get markerStart(){return B(se)},get markerEnd(){return B(ce)}})}),k(C),Aa(C,e=>re=e,()=>re),k(_),z(()=>S=Ji(_,``,S,{"z-index":B(E)})),W(e,_)};K(pe,e=>{B(te)||e(me)}),W(e,fe),j()}Ye();var rv=ai(`<defs></defs>`);function iv(e,t){A(t,!1);let n=j_();Ma();var r=rv();q(r,5,()=>n.markers,e=>e.id,(e,t)=>{cv(e,za(()=>B(t)))}),k(r),W(e,r),j()}var av=ai(`<polyline class="arrow" fill="none" stroke-linecap="round" stroke-linejoin="round" points="-5,-4 0,0 -5,4"></polyline>`),ov=ai(`<polyline class="arrowclosed" stroke-linecap="round" stroke-linejoin="round" points="-5,-4 0,0 -5,4 -5,-4"></polyline>`),sv=ai(`<marker class="svelte-flow__arrowhead" viewBox="-10 -10 20 20" refX="0" refY="0"><!></marker>`);function cv(e,t){A(t,!0);let n=X(t,`width`,3,12.5),r=X(t,`height`,3,12.5),i=X(t,`markerUnits`,3,`strokeWidth`),a=X(t,`orient`,3,`auto-start-reverse`),o=X(t,`color`,3,`none`);var s=sv(),c=F(s),l=e=>{var n=av();let r;z(()=>{Y(n,`stroke-width`,t.strokeWidth),r=Ji(n,``,r,{stroke:o()})}),W(e,n)},u=e=>{var n=ov();let r;z(()=>{Y(n,`stroke-width`,t.strokeWidth),r=Ji(n,``,r,{stroke:o(),fill:o()})}),W(e,n)};K(c,e=>{t.type===lm.Arrow?e(l):t.type===lm.ArrowClosed&&e(u,1)}),k(s),z(()=>{Y(s,`id`,t.id),Y(s,`markerWidth`,`${n()}`),Y(s,`markerHeight`,`${r()}`),Y(s,`markerUnits`,i()),Y(s,`orient`,a())}),W(e,s),j()}var lv=U(`<div class="svelte-flow__edges"><svg class="svelte-flow__marker"><!></svg> <!></div>`);function uv(e,t){A(t,!0);let n=X(t,`store`,15);var r=lv(),i=F(r);iv(F(i),{}),k(i),q(R(i,2),17,()=>n().visible.edges.values(),e=>e.id,(e,r)=>{nv(e,{get edge(){return B(r)},get onedgeclick(){return t.onedgeclick},get onedgecontextmenu(){return t.onedgecontextmenu},get onedgepointerenter(){return t.onedgepointerenter},get onedgepointerleave(){return t.onedgepointerleave},get store(){return n()},set store(e){n(e)}})}),k(r),W(e,r),j()}var dv=U(`<div class="svelte-flow__selection svelte-1vr3gfi"></div>`);function fv(e,t){A(t,!0);let n=X(t,`x`,3,0),r=X(t,`y`,3,0),i=X(t,`width`,3,0),a=X(t,`height`,3,0),o=X(t,`isVisible`,3,!0);var s=si(),c=I(s),l=e=>{var t=dv();let o;z((e,i)=>o=Ji(t,``,o,{width:e,height:i,transform:`translate(${n()}px, ${r()}px)`}),[()=>typeof i()==`string`?i():t_(i()),()=>typeof a()==`string`?a():t_(a())]),W(e,t)};K(c,e=>{o()&&e(l)}),W(e,s),j()}var pv=U(`<div><!></div>`);function mv(e,t){A(t,!0);let n=N(void 0);Fn(()=>{t.store.disableKeyboardA11y||B(n)?.focus({preventScroll:!0})});let r=M(()=>{if(t.store.selectionRectMode===`nodes`){t.store.nodes;let e=_m(t.store.nodeLookup,{filter:e=>!!e.selected});if(e.width>0&&e.height>0)return e}return null});function i(e){let n=t.store.nodes.filter(e=>e.selected);t.onselectioncontextmenu?.({nodes:n,event:e})}function a(e){let n=t.store.nodes.filter(e=>e.selected);t.onselectionclick?.({nodes:n,event:e})}function o(e){Object.prototype.hasOwnProperty.call(n_,e.key)&&(e.preventDefault(),t.store.moveSelectedNodes(n_[e.key],e.shiftKey?4:1))}var s=si(),c=I(s),l=e=>{var s=pv();let c;fv(F(s),{width:`100%`,height:`100%`,x:0,y:0}),k(s),Li(s,(e,t)=>W_?.(e,t),()=>({disabled:!1,store:t.store,onDrag:(e,n,r,i)=>{t.onnodedrag?.({event:e,targetNode:null,nodes:i})},onDragStart:(e,n,r,i)=>{t.onnodedragstart?.({event:e,targetNode:null,nodes:i})},onDragStop:(e,n,r,i)=>{t.onnodedragstop?.({event:e,targetNode:null,nodes:i})}})),Aa(s,e=>P(n,e),()=>B(n)),z((e,n)=>{J(s,1,Vi([`svelte-flow__selection-wrapper`,t.store.noPanClass]),`svelte-sf2y5e`),Y(s,`role`,t.store.disableKeyboardA11y?void 0:`button`),Y(s,`tabindex`,t.store.disableKeyboardA11y?void 0:-1),c=Ji(s,``,c,{width:e,height:n,transform:`translate(${B(r).x??``}px, ${B(r).y??``}px)`})},[()=>t_(B(r).width),()=>t_(B(r).height)]),H(`contextmenu`,s,i),H(`click`,s,a),H(`keydown`,s,function(...e){(t.store.disableKeyboardA11y?void 0:o)?.apply(this,e)}),W(e,s)},u=M(()=>t.store.selectionRectMode===`nodes`&&B(r)&&Rm(B(r).x)&&Rm(B(r).y));K(c,e=>{B(u)&&e(l)}),W(e,s),j()}Xr([`contextmenu`,`click`,`keydown`]);function hv(e){switch(e){case`none`:return 0;case`ctrl`:return 8;case`shift`:return 4;case`alt`:return 2;case`meta`:return 1}}function gv(e,t){let{enabled:n=!0,trigger:r,type:i=`keydown`}=t;function a(t){let n=Array.isArray(r)?r:[r],i=[t.metaKey,t.altKey,t.shiftKey,t.ctrlKey].reduce((e,t,n)=>t?e|1<<n:e,0);for(let r of n){let n={preventDefault:!1,enabled:!0,...r},{modifier:a,key:o,code:s,callback:c,preventDefault:l,enabled:u}=n;if(!o&&!s&&console.warn("[svelte-put/shortcut] Trigger should have either `key` or `code`, a trigger missing both was detected! Check your configuration"),u&&(o||s)){if(s&&t.code!==s||o&&t.key!==o)continue;if(a===null||a===!1){if(i!==0)continue}else if(a!==void 0&&a?.[0]?.length>0){let e=Array.isArray(a)?a:[a],t=!1;for(let n of e)if((Array.isArray(n)?n:[n]).reduce((e,t)=>e|hv(t),0)===i){t=!0;break}if(!t)continue}l&&t.preventDefault();let r={node:e,trigger:n,originalEvent:t};e.dispatchEvent(new CustomEvent(`shortcut`,{detail:r})),c?.(r)}}}let o;return n&&(o=Yr(e,i,a)),{update:t=>{let{enabled:s=!0,type:c=`keydown`}=t;n&&(!s||i!==c)?o?.():!n&&s&&(o=Yr(e,c,a)),n=s,i=c,r=t.trigger},destroy:()=>{o?.()}}}function _v(){let e=M(j_),t=t=>{let n=$g(t)?t:B(e).nodeLookup.get(t.id),r=n.parentId?Zm(n.position,n.measured,n.parentId,B(e).nodeLookup,B(e).nodeOrigin):n.position;return Mm({...n,position:r,width:n.measured?.width??n.width,height:n.measured?.height??n.height})};function n(t,n,r={replace:!1}){B(e).nodes=Mr(()=>B(e).nodes).map(e=>{if(e.id===t){let t=typeof n==`function`?n(e):n;return r?.replace&&$g(t)?t:{...e,...t}}return e})}function r(t,n,r={replace:!1}){B(e).edges=Mr(()=>B(e).edges).map(e=>{if(e.id===t){let t=typeof n==`function`?n(e):n;return r.replace&&e_(t)?t:{...e,...t}}return e})}let i=t=>B(e).nodeLookup.get(t);return{zoomIn:B(e).zoomIn,zoomOut:B(e).zoomOut,getInternalNode:i,getNode:e=>i(e)?.internals.userNode,getNodes:t=>t===void 0?B(e).nodes:vv(B(e).nodeLookup,t),getEdge:t=>B(e).edgeLookup.get(t),getEdges:t=>t===void 0?B(e).edges:vv(B(e).edgeLookup,t),setZoom:async(t,n)=>{let r=B(e).panZoom;return r?r.scaleTo(t,n):!1},getZoom:()=>B(e).viewport.zoom,setViewport:async(t,n)=>{let r=B(e).viewport;return B(e).panZoom?(await B(e).panZoom.setViewport({x:t.x??r.x,y:t.y??r.y,zoom:t.zoom??r.zoom},n),!0):!1},getViewport:()=>Ze(B(e).viewport),setCenter:async(t,n,r)=>B(e).setCenter(t,n,r),fitView:t=>B(e).fitView(t),fitBounds:async(t,n)=>{if(!B(e).panZoom)return!1;let r=Km(t,B(e).width,B(e).height,B(e).minZoom,B(e).maxZoom,n?.padding??.1);return await B(e).panZoom.setViewport(r,{duration:n?.duration,ease:n?.ease,interpolate:n?.interpolate}),!0},getIntersectingNodes:(n,r=!0,i)=>{let a=Lm(n),o=a?n:t(n);return o?(i||B(e).nodes).filter(t=>{let i=B(e).nodeLookup.get(t.id);if(!i||!a&&t.id===n.id)return!1;let s=Mm(i),c=Im(s,o);return r&&c>0||c>=s.width*s.height||c>=o.width*o.height}):[]},isNodeIntersecting:(e,n,r=!0)=>{let i=Lm(e)?e:t(e);if(!i)return!1;let a=Im(i,n);return r&&a>0||a>=n.width*n.height||a>=i.width*i.height},deleteElements:async({nodes:t=[],edges:n=[]})=>{let{nodes:r,edges:i}=await Cm({nodesToRemove:t,edgesToRemove:n,nodes:B(e).nodes,edges:B(e).edges,onBeforeDelete:B(e).onbeforedelete});return r&&(B(e).nodes=Mr(()=>B(e).nodes).filter(e=>!r.some(({id:t})=>t===e.id))),i&&(B(e).edges=Mr(()=>B(e).edges).filter(e=>!i.some(({id:t})=>t===e.id))),(r.length>0||i.length>0)&&B(e).ondelete?.({nodes:r,edges:i}),{deletedNodes:r,deletedEdges:i}},screenToFlowPosition:(t,n={snapToGrid:!0})=>{if(!B(e).domNode)return t;let r=n.snapToGrid?B(e).snapGrid:!1,{x:i,y:a,zoom:o}=B(e).viewport,{x:s,y:c}=B(e).domNode.getBoundingClientRect();return Vm({x:t.x-s,y:t.y-c},[i,a,o],r!==null,r||[1,1])},flowToScreenPosition:t=>{if(!B(e).domNode)return t;let{x:n,y:r,zoom:i}=B(e).viewport,{x:a,y:o}=B(e).domNode.getBoundingClientRect(),s=Hm(t,[n,r,i]);return{x:s.x+a,y:s.y+o}},toObject:()=>structuredClone({nodes:[...B(e).nodes],edges:[...B(e).edges],viewport:{...B(e).viewport}}),updateNode:n,updateNodeData:(t,r,i)=>{let a=B(e).nodeLookup.get(t)?.internals.userNode;if(!a)return;let o=typeof r==`function`?r(a):r;n(t,e=>({...e,data:i?.replace?o:{...e.data,...o}}))},updateEdge:r,getNodesBounds:t=>gm(t,{nodeLookup:B(e).nodeLookup,nodeOrigin:B(e).nodeOrigin}),getHandleConnections:({type:t,id:n,nodeId:r})=>Array.from(B(e).connectionLookup.get(`${r}-${t}-${n??null}`)?.values()??[])}}function vv(e,t){let n=[];for(let r of t){let t=e.get(r);if(t){let e=`internals`in t?t.internals?.userNode:t;n.push(e)}}return n}function yv(e,t){A(t,!0);let n=X(t,`store`,15),r=X(t,`selectionKey`,3,`Shift`),i=X(t,`multiSelectionKey`,19,()=>qm()?`Meta`:`Control`),a=X(t,`deleteKey`,3,`Backspace`),o=X(t,`panActivationKey`,3,` `),s=X(t,`zoomActivationKey`,19,()=>qm()?`Meta`:`Control`),{deleteElements:c}=_v();function l(e){return typeof e==`object`&&!!e}function u(e){return l(e)&&e.modifier||[]}function d(e){return e==null?``:l(e)?e.key:e}function f(e,t){return(Array.isArray(e)?e:[e]).map(e=>{let n=d(e);return{key:n,modifier:u(e),enabled:n!==null,callback:t}})}function p(){n(n().selectionRect=null,!0),n(n().selectionKeyPressed=!1,!0),n(n().multiselectionKeyPressed=!1,!0),n(n().deleteKeyPressed=!1,!0),n(n().panActivationKeyPressed=!1,!0),n(n().zoomActivationKeyPressed=!1,!0)}function m(){let e=n().nodes.filter(e=>e.selected),t=n().edges.filter(e=>e.selected);c({nodes:e,edges:t})}V(`blur`,hn,p),V(`contextmenu`,hn,p),Li(hn,(e,t)=>gv?.(e,t),()=>({trigger:f(r(),()=>n(n().selectionKeyPressed=!0,!0)),type:`keydown`})),Li(hn,(e,t)=>gv?.(e,t),()=>({trigger:f(r(),()=>n(n().selectionKeyPressed=!1,!0)),type:`keyup`})),Li(hn,(e,t)=>gv?.(e,t),()=>({trigger:f(i(),()=>{n(n().multiselectionKeyPressed=!0,!0)}),type:`keydown`})),Li(hn,(e,t)=>gv?.(e,t),()=>({trigger:f(i(),()=>n(n().multiselectionKeyPressed=!1,!0)),type:`keyup`})),Li(hn,(e,t)=>gv?.(e,t),()=>({trigger:f(a(),e=>{!(e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)&&!oh(e.originalEvent)&&(n(n().deleteKeyPressed=!0,!0),m())}),type:`keydown`})),Li(hn,(e,t)=>gv?.(e,t),()=>({trigger:f(a(),()=>n(n().deleteKeyPressed=!1,!0)),type:`keyup`})),Li(hn,(e,t)=>gv?.(e,t),()=>({trigger:f(o(),()=>n(n().panActivationKeyPressed=!0,!0)),type:`keydown`})),Li(hn,(e,t)=>gv?.(e,t),()=>({trigger:f(o(),()=>n(n().panActivationKeyPressed=!1,!0)),type:`keyup`})),Li(hn,(e,t)=>gv?.(e,t),()=>({trigger:f(s(),()=>n(n().zoomActivationKeyPressed=!0,!0)),type:`keydown`})),Li(hn,(e,t)=>gv?.(e,t),()=>({trigger:f(s(),()=>n(n().zoomActivationKeyPressed=!1,!0)),type:`keyup`})),j()}var bv=ai(`<path fill="none" class="svelte-flow__connection-path"></path>`),xv=ai(`<svg class="svelte-flow__connectionline"><g><!></g></svg>`);function Sv(e,t){A(t,!0);let n=M(()=>{if(!t.store.connection.inProgress)return``;let e={sourceX:t.store.connection.from.x,sourceY:t.store.connection.from.y,sourcePosition:t.store.connection.fromPosition,targetX:t.store.connection.to.x,targetY:t.store.connection.to.y,targetPosition:t.store.connection.toPosition};switch(t.type){case cm.Bezier:{let[t]=ph(e);return t}case cm.Straight:{let[t]=bh(e);return t}case cm.Step:case cm.SmoothStep:{let[n]=Eh({...e,borderRadius:t.type===cm.Step?0:void 0});return n}}});var r=si(),i=I(r),a=e=>{var r=xv(),i=F(r),a=F(i),o=e=>{var n=si();Fi(I(n),()=>t.LineComponent,(e,t)=>{t(e,{})}),W(e,n)},s=e=>{var r=bv();z(()=>{Y(r,`d`,B(n)),Ji(r,t.style)}),W(e,r)};K(a,e=>{t.LineComponent?e(o):e(s,-1)}),k(i),k(r),z(e=>{Y(r,`width`,t.store.width),Y(r,`height`,t.store.height),Ji(r,t.containerStyle),J(i,0,e)},[()=>Vi([`svelte-flow__connection`,th(t.store.connection.isValid)])]),W(e,r)};K(i,e=>{t.store.connection.inProgress&&e(a)}),W(e,r),j()}var Cv=new Set([`$$slots`,`$$events`,`$$legacy`,`position`,`style`,`class`,`children`]),wv=U(`<div><!></div>`);function Tv(e,t){A(t,!0);let n=X(t,`position`,3,`top-right`),r=La(t,Cv),i=M(()=>`${n()}`.split(`-`));var a=wv();ga(a,e=>({class:e,style:t.style,...r}),[()=>[`svelte-flow__panel`,t.class,...B(i)]]),Pi(F(a),()=>t.children??f),k(a),W(e,a),j()}var Ev=U(`<a target="_blank" rel="noopener noreferrer" aria-label="Svelte Flow attribution">Svelte Flow</a>`);function Dv(e,t){A(t,!0);let n=X(t,`position`,3,`bottom-right`),r=`https://svelteflow.dev?utm_source=attribution`;var i=si(),a=I(i),o=e=>{{let t=M(()=>`Please only hide this attribution when you are subscribed to Svelte Flow Pro: ${r}`);Tv(e,{get position(){return n()},class:`svelte-flow__attribution`,get"data-message"(){return B(t)},children:(e,t)=>{var n=Ev();z(()=>Y(n,`href`,r)),W(e,n)},$$slots:{default:!0}})}};K(a,e=>{t.proOptions?.hideAttribution||e(o)}),W(e,i),j()}var Ov=U(`<div><!></div>`);function kv(e,t){A(t,!0);let n=X(t,`domNode`,15),r=X(t,`clientWidth`,15),i=X(t,`clientHeight`,15),a=M(()=>t.rest.class),o=M(()=>y(t.rest,`id.class.nodeTypes.edgeTypes.colorMode.isValidConnection.onmove.onmovestart.onmoveend.onflowerror.ondelete.onbeforedelete.onbeforeconnect.onconnect.onconnectstart.onconnectend.onbeforereconnect.onreconnect.onreconnectstart.onreconnectend.onclickconnectstart.onclickconnectend.oninit.onselectionchange.onselectiondragstart.onselectiondrag.onselectiondragstop.onselectionstart.onselectionend.clickConnect.fitView.fitViewOptions.nodeOrigin.nodeDragThreshold.connectionDragThreshold.minZoom.maxZoom.initialViewport.connectionRadius.connectionMode.selectionMode.selectNodesOnDrag.snapGrid.defaultMarkerColor.translateExtent.nodeExtent.onlyRenderVisibleElements.autoPanOnConnect.autoPanOnNodeDrag.colorModeSSR.defaultEdgeOptions.elevateNodesOnSelect.elevateEdgesOnSelect.nodesDraggable.autoPanOnNodeFocus.nodesConnectable.elementsSelectable.nodesFocusable.edgesFocusable.disableKeyboardA11y.noDragClass.noPanClass.noWheelClass.ariaLabelConfig.autoPanSpeed.panOnScrollSpeed.zIndexMode.autoPanOnSelection`.split(`.`)));function s(e){e.currentTarget.scrollTo({top:0,left:0,behavior:`auto`}),t.rest.onscroll&&t.rest.onscroll(e)}var c=Ov();ga(c,(e,n)=>({class:[`svelte-flow`,`svelte-flow__container`,t.colorMode,B(a)],"data-testid":`svelte-flow__wrapper`,role:`application`,onscroll:s,...B(o),[ia]:{width:e,height:n}}),[()=>t_(t.width),()=>t_(t.height)],void 0,void 0,`svelte-mkap6j`),Pi(F(c),()=>t.children??f),k(c),Aa(c,e=>n(e),()=>n()),Oa(c,`clientHeight`,i),Oa(c,`clientWidth`,r),W(e,c),j()}var Av=new Set(`$$slots.$$events.$$legacy.width.height.proOptions.selectionKey.deleteKey.panActivationKey.multiSelectionKey.zoomActivationKey.paneClickDistance.nodeClickDistance.onmovestart.onmoveend.onmove.oninit.onnodeclick.onnodecontextmenu.onnodedrag.onnodedragstart.onnodedragstop.onnodepointerenter.onnodepointermove.onnodepointerleave.onselectionclick.onselectioncontextmenu.onselectionstart.onselectionend.onedgeclick.onedgecontextmenu.onedgepointerenter.onedgepointerleave.onpaneclick.onpanecontextmenu.panOnScrollMode.preventScrolling.zoomOnScroll.zoomOnDoubleClick.zoomOnPinch.panOnScroll.panOnScrollSpeed.panOnDrag.selectionOnDrag.autoPanOnSelection.connectionLineComponent.connectionLineStyle.connectionLineContainerStyle.connectionLineType.attributionPosition.children.nodes.edges.viewport`.split(`.`)),jv=U(`<div class="svelte-flow__viewport-back svelte-flow__container"></div> <!> <div class="svelte-flow__edge-labels svelte-flow__container"></div> <!> <!> <!> <div class="svelte-flow__viewport-front svelte-flow__container"></div>`,1),Mv=U(`<!> <!>`,1),Nv=U(`<!> <!> <!> <!> <!>`,1);function Pv(e,t){A(t,!0);let n=X(t,`paneClickDistance`,3,1),r=X(t,`nodeClickDistance`,3,1),i=X(t,`panOnScrollMode`,19,()=>am.Free),a=X(t,`preventScrolling`,3,!0),o=X(t,`zoomOnScroll`,3,!0),s=X(t,`zoomOnDoubleClick`,3,!0),c=X(t,`zoomOnPinch`,3,!0),l=X(t,`panOnScroll`,3,!1),u=X(t,`panOnScrollSpeed`,3,.5),d=X(t,`panOnDrag`,3,!0),p=X(t,`selectionOnDrag`,3,!1),m=X(t,`autoPanOnSelection`,3,!0),h=X(t,`connectionLineType`,19,()=>cm.Bezier),g=X(t,`nodes`,31,()=>fn([])),_=X(t,`edges`,31,()=>fn([])),v=X(t,`viewport`,15,void 0),y=La(t,Av),b=N_({props:y,width:t.width,height:t.height,get nodes(){return g()},set nodes(e){g(e)},get edges(){return _()},set edges(e){_(e)},get viewport(){return v()},set viewport(e){v(e)}}),x=rt(M_);x&&x.setStore&&x.setStore(b),it(M_,{provider:!1,getStore(){return b}}),Fn(()=>{let e={nodes:b.selectedNodes,edges:b.selectedEdges};Mr(()=>t.onselectionchange)?.(e);for(let t of b.selectionChangeHandlers.values())t(e)}),Va(()=>{x?.setStore(N_({width:0,height:0,nodes:[],edges:[],props:{}}))}),kv(e,{get colorMode(){return b.colorMode},get width(){return t.width},get height(){return t.height},get rest(){return y},get domNode(){return b.domNode},set domNode(e){b.domNode=e},get clientWidth(){return b.width},set clientWidth(e){b.width=e},get clientHeight(){return b.height},set clientHeight(e){b.height=e},children:(e,g)=>{var _=Nv(),v=I(_);yv(v,{get selectionKey(){return t.selectionKey},get deleteKey(){return t.deleteKey},get panActivationKey(){return t.panActivationKey},get multiSelectionKey(){return t.multiSelectionKey},get zoomActivationKey(){return t.zoomActivationKey},get store(){return b},set store(e){b=e}});var y=R(v,2);I_(y,{get panOnScrollMode(){return i()},get preventScrolling(){return a()},get zoomOnScroll(){return o()},get zoomOnDoubleClick(){return s()},get zoomOnPinch(){return c()},get panOnScroll(){return l()},get panOnScrollSpeed(){return u()},get panOnDrag(){return d()},get paneClickDistance(){return n()},get selectionOnDrag(){return p()},get onmovestart(){return t.onmovestart},get onmove(){return t.onmove},get onmoveend(){return t.onmoveend},get oninit(){return t.oninit},get store(){return b},set store(e){b=e},children:(e,i)=>{V_(e,{get onpaneclick(){return t.onpaneclick},get onpanecontextmenu(){return t.onpanecontextmenu},get onselectionstart(){return t.onselectionstart},get onselectionend(){return t.onselectionend},get panOnDrag(){return d()},get paneClickDistance(){return n()},get selectionOnDrag(){return p()},get autoPanOnSelection(){return m()},get store(){return b},set store(e){b=e},children:(e,n)=>{var i=Mv(),a=I(i);U_(a,{get store(){return b},set store(e){b=e},children:(e,n)=>{var i=jv(),a=R(I(i),2);uv(a,{get onedgeclick(){return t.onedgeclick},get onedgecontextmenu(){return t.onedgecontextmenu},get onedgepointerenter(){return t.onedgepointerenter},get onedgepointerleave(){return t.onedgepointerleave},get store(){return b},set store(e){b=e}});var o=R(a,4);Sv(o,{get type(){return h()},get LineComponent(){return t.connectionLineComponent},get containerStyle(){return t.connectionLineContainerStyle},get style(){return t.connectionLineStyle},get store(){return b},set store(e){b=e}});var s=R(o,2);ev(s,{get nodeClickDistance(){return r()},get onnodeclick(){return t.onnodeclick},get onnodecontextmenu(){return t.onnodecontextmenu},get onnodepointerenter(){return t.onnodepointerenter},get onnodepointermove(){return t.onnodepointermove},get onnodepointerleave(){return t.onnodepointerleave},get onnodedrag(){return t.onnodedrag},get onnodedragstart(){return t.onnodedragstart},get onnodedragstop(){return t.onnodedragstop},get store(){return b},set store(e){b=e}}),mv(R(s,2),{get onselectionclick(){return t.onselectionclick},get onselectioncontextmenu(){return t.onselectioncontextmenu},get onnodedrag(){return t.onnodedrag},get onnodedragstart(){return t.onnodedragstart},get onnodedragstop(){return t.onnodedragstop},get store(){return b},set store(e){b=e}}),Ae(2),W(e,i)},$$slots:{default:!0}});var o=R(a,2);{let e=M(()=>!!(b.selectionRect&&b.selectionRectMode===`user`)),t=M(()=>b.selectionRect?.width),n=M(()=>b.selectionRect?.height),r=M(()=>b.selectionRect?.x),i=M(()=>b.selectionRect?.y);fv(o,{get isVisible(){return B(e)},get width(){return B(t)},get height(){return B(n)},get x(){return B(r)},get y(){return B(i)}})}W(e,i)},$$slots:{default:!0}})},$$slots:{default:!0}});var x=R(y,2);Dv(x,{get proOptions(){return t.proOptions},get position(){return t.attributionPosition}});var S=R(x,2);q_(S,{get store(){return b}}),Pi(R(S,2),()=>t.children??f),W(e,_)},$$slots:{default:!0}}),j()}function Fv(e,t){A(t,!0);let n=N(N_({props:{},nodes:[],edges:[]}));it(M_,{provider:!0,getStore(){return B(n)},setStore:e=>{P(n,e)}}),Va(()=>{B(n).reset()});var r=si();Pi(I(r),()=>t.children??f),W(e,r),j()}var Iv=new Set([`$$slots`,`$$events`,`$$legacy`,`target`,`children`]),Lv=U(`<div><!></div>`);function Rv(e,t){A(t,!0);let n=X(t,`target`,3,`front`),r=La(t,Iv);var i=Lv();ga(i,e=>({...r,[ia]:{display:e}}),[()=>Qg().value?`none`:void 0]),Pi(F(i),()=>t.children??f),k(i),Li(i,(e,t)=>Zg?.(e,t),()=>`viewport-${n()}`),W(e,i),j()}var zv;(function(e){e.Lines=`lines`,e.Dots=`dots`,e.Cross=`cross`})(zv||={});var Bv=ai(`<circle></circle>`);function Vv(e,t){var n=Bv();z(()=>{Y(n,`cx`,t.radius),Y(n,`cy`,t.radius),Y(n,`r`,t.radius),J(n,0,Vi([`svelte-flow__background-pattern`,`dots`,t.class]))}),W(e,n)}var Hv=ai(`<path></path>`);function Uv(e,t){A(t,!0);var n=Hv();z(()=>{Y(n,`stroke-width`,t.lineWidth),Y(n,`d`,`M${t.dimensions[0]/2} 0 V${t.dimensions[1]} M0 ${t.dimensions[1]/2} H${t.dimensions[0]}`),J(n,0,Vi([`svelte-flow__background-pattern`,t.variant,t.class]))}),W(e,n),j()}var Wv={[zv.Dots]:1,[zv.Lines]:1,[zv.Cross]:6},Gv=ai(`<svg data-testid="svelte-flow__background"><pattern patternUnits="userSpaceOnUse"><!></pattern><rect x="0" y="0" width="100%" height="100%"></rect></svg>`);function Kv(e,t){A(t,!0);let n=X(t,`variant`,19,()=>zv.Dots),r=X(t,`gap`,3,20),i=X(t,`lineWidth`,3,1),a=M(j_),o=M(()=>n()===zv.Dots),s=M(()=>n()===zv.Cross),c=M(()=>Array.isArray(r())?r():[r(),r()]),l=M(()=>`background-pattern-${B(a).flowId}-${t.id??``}`),u=M(()=>[B(c)[0]*B(a).viewport.zoom||1,B(c)[1]*B(a).viewport.zoom||1]),d=M(()=>(t.size??Wv[n()])*B(a).viewport.zoom),f=M(()=>B(s)?[B(d),B(d)]:B(u)),p=M(()=>B(o)?[B(d)/2,B(d)/2]:[B(f)[0]/2,B(f)[1]/2]);var m=Gv();let h;var g=F(m),_=F(g),v=e=>{{let n=M(()=>B(d)/2);Vv(e,{get radius(){return B(n)},get class(){return t.patternClass}})}},y=e=>{Uv(e,{get dimensions(){return B(f)},get variant(){return n()},get lineWidth(){return i()},get class(){return t.patternClass}})};K(_,e=>{B(o)?e(v):e(y,-1)}),k(g);var b=R(g);k(m),z(()=>{J(m,0,Vi([`svelte-flow__background`,`svelte-flow__container`,t.class])),h=Ji(m,``,h,{"--xy-background-color-props":t.bgColor,"--xy-background-pattern-color-props":t.patternColor}),Y(g,`id`,B(l)),Y(g,`x`,B(a).viewport.x%B(u)[0]),Y(g,`y`,B(a).viewport.y%B(u)[1]),Y(g,`width`,B(u)[0]),Y(g,`height`,B(u)[1]),Y(g,`patternTransform`,`translate(-${B(p)[0]},-${B(p)[1]})`),Y(b,`fill`,`url(#${B(l)})`)}),W(e,m),j()}function qv(e){let t=M(j_),n=M(()=>B(t).nodeLookup),r=M(()=>B(t).nodes),i=M(()=>(B(r),B(n).get(e)));return{get current(){return B(i)}}}var Jv=ai(`<rect></rect>`);function Yv(e,t){A(t,!0);let n=X(t,`borderRadius`,3,5),r=X(t,`strokeWidth`,3,2),i=M(()=>qv(t.id)),a=M(()=>{if(!B(i).current)return{width:0,height:0,x:0,y:0};let{width:e,height:n}=Ym(B(i).current);return{width:t.width??e,height:t.height??n,x:t.x??B(i).current.internals.positionAbsolute.x,y:t.y??B(i).current.internals.positionAbsolute.y}}),o=M(()=>B(a).width),s=M(()=>B(a).height),c=M(()=>B(a).x),l=M(()=>B(a).y);var u=si(),d=I(u),f=e=>{let i=M(()=>t.nodeComponent);var a=si();Fi(I(a),()=>B(i),(e,i)=>{i(e,{get id(){return t.id},get x(){return B(c)},get y(){return B(l)},get width(){return B(o)},get height(){return B(s)},get borderRadius(){return n()},get class(){return t.class},get color(){return t.color},get shapeRendering(){return t.shapeRendering},get strokeColor(){return t.strokeColor},get strokeWidth(){return r()},get selected(){return t.selected}})}),W(e,a)},p=e=>{var i=Jv();let a,u;z(()=>{a=J(i,0,Vi([`svelte-flow__minimap-node`,t.class]),null,a,{selected:t.selected}),Y(i,`x`,B(c)),Y(i,`y`,B(l)),Y(i,`rx`,n()),Y(i,`ry`,n()),Y(i,`width`,B(o)),Y(i,`height`,B(s)),Y(i,`shape-rendering`,t.shapeRendering),u=Ji(i,``,u,{fill:t.color,stroke:t.strokeColor,"stroke-width":r()})}),W(e,i)};K(d,e=>{t.nodeComponent?e(f):e(p,-1)}),W(e,u),j()}function Xv(e,t){let n=hg({domNode:e,panZoom:t.panZoom,getTransform:()=>{let{viewport:e}=t.store;return[e.x,e.y,e.zoom]},getViewScale:t.getViewScale});n.update({translateExtent:t.translateExtent,width:t.width,height:t.height,inversePan:t.inversePan,zoomStep:t.zoomStep,pannable:t.pannable,zoomable:t.zoomable});function r(e){n.update({translateExtent:e.translateExtent,width:e.width,height:e.height,inversePan:e.inversePan,zoomStep:e.zoomStep,pannable:e.pannable,zoomable:e.zoomable})}return{update:r,destroy(){n.destroy()}}}var Zv=e=>e instanceof Function?e:()=>e,Qv=new Set([`$$slots`,`$$events`,`$$legacy`,`position`,`ariaLabel`,`nodeStrokeColor`,`nodeColor`,`nodeClass`,`nodeBorderRadius`,`nodeStrokeWidth`,`nodeComponent`,`bgColor`,`maskColor`,`maskStrokeColor`,`maskStrokeWidth`,`width`,`height`,`pannable`,`zoomable`,`inversePan`,`zoomStep`,`class`]),$v=ai(`<title> </title>`),ey=ai(`<svg class="svelte-flow__minimap-svg" role="img"><!><!><path class="svelte-flow__minimap-mask" fill-rule="evenodd" pointer-events="none"></path></svg>`),ty=U(`<svelte-css-wrapper style="display: contents"><!></svelte-css-wrapper>`,1);function ny(e,t){A(t,!0);let n=X(t,`position`,3,`bottom-right`),r=X(t,`nodeStrokeColor`,3,`transparent`),i=X(t,`nodeClass`,3,``),a=X(t,`nodeBorderRadius`,3,5),o=X(t,`nodeStrokeWidth`,3,2),s=X(t,`width`,3,200),c=X(t,`height`,3,150),l=X(t,`pannable`,3,!0),u=X(t,`zoomable`,3,!0),d=La(t,Qv),f=M(j_),p=M(()=>B(f).ariaLabelConfig),m=typeof window>`u`||window.chrome?`crispEdges`:`geometricPrecision`,h=M(()=>`svelte-flow__minimap-desc-${B(f).flowId}`),g=M(()=>({x:-B(f).viewport.x/B(f).viewport.zoom,y:-B(f).viewport.y/B(f).viewport.zoom,width:B(f).width/B(f).viewport.zoom,height:B(f).height/B(f).viewport.zoom})),_=M(()=>B(f).nodes.some(e=>!e.hidden)),v=M(()=>B(_)?Pm(_m(B(f).nodeLookup,{filter:e=>!e.hidden}),B(g)):B(g)),y=M(()=>B(v).width/s()),b=M(()=>B(v).height/c()),x=M(()=>Math.max(B(y),B(b))),S=M(()=>B(x)*s()),C=M(()=>B(x)*c()),w=M(()=>5*B(x)),T=M(()=>B(v).x-(B(S)-B(v).width)/2-B(w)),ee=M(()=>B(v).y-(B(C)-B(v).height)/2-B(w)),te=M(()=>B(S)+B(w)*2),E=M(()=>B(C)+B(w)*2),ne=()=>B(x);var D=ty(),re=I(D);{let e=M(()=>[`svelte-flow__minimap`,t.class]);wi(re,()=>({"--xy-minimap-background-color-props":t.bgColor})),Tv(re.lastChild,za({get position(){return n()},get class(){return B(e)},"data-testid":`svelte-flow__minimap`},()=>d,{children:(e,n)=>{var d=si(),_=I(d),v=e=>{var n=ey();let d;var _=F(n),v=e=>{var n=$v(),r=L(n,!0);z(()=>{Y(n,`id`,B(h)),G(r,t.ariaLabel??B(p)[`minimap.ariaLabel`])}),W(e,n)};K(_,e=>{(t.ariaLabel??B(p)[`minimap.ariaLabel`])&&e(v)});var y=R(_);q(y,17,()=>B(f).nodes,e=>e.id,(e,n)=>{let s=M(()=>B(f).nodeLookup.get(B(n).id));var c=si(),l=I(c),u=e=>{{let c=M(()=>t.nodeColor===void 0?void 0:Zv(t.nodeColor)(B(n))),l=M(()=>Zv(r())(B(n))),u=M(()=>Zv(i())(B(n)));Yv(e,{get id(){return B(s).id},get selected(){return B(s).selected},get nodeComponent(){return t.nodeComponent},get color(){return B(c)},get borderRadius(){return a()},get strokeColor(){return B(l)},get strokeWidth(){return o()},get shapeRendering(){return m},get class(){return B(u)}})}},d=M(()=>B(s)&&Xm(B(s))&&!B(s).hidden);K(l,e=>{B(d)&&e(u)}),W(e,c)});var b=R(y);k(n),Li(n,(e,t)=>Xv?.(e,t),()=>({store:B(f),panZoom:B(f).panZoom,getViewScale:ne,translateExtent:B(f).translateExtent,width:B(f).width,height:B(f).height,inversePan:t.inversePan,zoomStep:t.zoomStep,pannable:l(),zoomable:u()})),z(()=>{Y(n,`width`,s()),Y(n,`height`,c()),Y(n,`viewBox`,`${B(T)??``} ${B(ee)??``} ${B(te)??``} ${B(E)??``}`),Y(n,`aria-labelledby`,B(h)),d=Ji(n,``,d,{"--xy-minimap-mask-background-color-props":t.maskColor,"--xy-minimap-mask-stroke-color-props":t.maskStrokeColor,"--xy-minimap-mask-stroke-width-props":t.maskStrokeWidth?t.maskStrokeWidth*B(x):void 0}),Y(b,`d`,`M${B(T)-B(w)},${B(ee)-B(w)}h${B(te)+B(w)*2}v${B(E)+B(w)*2}h${-B(te)-B(w)*2}z
|
|
6
|
+
M${B(g).x??``},${B(g).y??``}h${B(g).width??``}v${B(g).height??``}h${-B(g).width}z`)}),W(e,n)};K(_,e=>{B(f).panZoom&&e(v)}),W(e,d)},$$slots:{default:!0}})),k(re)}W(e,D),j()}var ry=new Set([`$$slots`,`$$events`,`$$legacy`,`nodeId`,`position`,`align`,`offset`,`isVisible`,`children`]),iy=U(`<div><!></div>`);function ay(e,t){A(t,!0);let n=X(t,`position`,19,()=>um.Top),r=X(t,`align`,3,`center`),i=X(t,`offset`,3,10),a=La(t,ry),o=j_(),{getNodesBounds:s}=_v(),c=Pg(),l=M(()=>(o.nodes,(Array.isArray(t.nodeId)?t.nodeId:[t.nodeId??c]).reduce((e,t)=>{if(!t)throw Error(`Either pass a nodeId or use within a Custom Node component`);let n=o.nodeLookup.get(t);return n&&e.push(n),e},[]))),u=M(()=>{let e=s(B(l));return e?Ph(e,o.viewport,n(),i(),r()):``}),d=M(()=>B(l).length===0?1:Math.max(...B(l).map(e=>(e.internals.z||5)+1))),p=M(()=>o.nodes.filter(e=>e.selected).length),m=M(()=>typeof t.isVisible==`boolean`?t.isVisible:B(l).length===1&&B(l)[0].selected&&B(p)===1);var h=si(),g=I(h),_=e=>{var n=iy();ga(n,(e,t)=>({class:`svelte-flow__node-toolbar`,"data-id":e,...a,[ia]:{display:t,position:`absolute`,transform:B(u),"z-index":B(d)}}),[()=>B(l).reduce((e,t)=>`${e}${t.id} `,``).trim(),()=>Qg().value?`none`:void 0]),Pi(F(n),()=>t.children??f),k(n),Li(n,(e,t)=>Zg?.(e,t),()=>`root`),W(e,n)};K(g,e=>{o.domNode&&B(m)&&B(l)&&e(_)}),W(e,h),j()}function oy(){let e=M(j_);return{get current(){return B(e).viewport},set current(t){B(e).viewport=t},update(t){B(e).viewport=t(B(e).viewport)},set(t){B(e).viewport=t}}}var sy=new Set([`$$slots`,`$$events`,`$$legacy`]);function cy(e,t){let n=La(t,sy),r={name:`plug`,size:24,node:[[`path`,{d:`M12 22v-5`}],[`path`,{d:`M15 8V2`}],[`path`,{d:`M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z`}],[`path`,{d:`M9 8V2`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var ly=new class{#e=N(!1);get open(){return B(this.#e)}set open(e){P(this.#e,e,!0)}#t=N(fn({}));#n=N(!1);#r=new Set;#i=!1;#a=``;#o=M(()=>[...Q.status?.messages??[]].reverse().map(e=>({...e,answered:B(this.#t)[e.id]??e.answered??null})).filter(e=>!B(this.#n)||e.kind===`question`&&!e.answered));get messages(){return B(this.#o)}set messages(e){P(this.#o,e)}#s=M(()=>this.messages.find(e=>e.kind===`question`&&e.choices?.length&&!e.answered));get question(){return B(this.#s)}set question(e){P(this.#s,e)}follow(){if(Q.status){for(let e of this.messages)this.#r.has(e.id)||(this.#r.add(e.id),this.#i&&(e.kind===`question`&&!e.answered?this.open=!0:e.from===`koppler`&&!e.answered?(this.open=!0,this.#a=e.id):$.show(`Agent: ${e.title}`,e.kind===`failure`?`warning`:`message`,{label:`Open`,run:()=>this.open=!0})));this.#i=!0,this.#a&&this.messages.find(e=>e.id===this.#a)?.answered&&(this.#a=``,this.question||(this.open=!1)),B(this.#n)&&!(Q.status.messages??[]).some(e=>!(e.kind===`question`&&!e.answered))&&P(this.#n,!1)}}async answer(e,t){let n=e.choices?.find(e=>e.id===t.choice),r=n?`${n.label}${t.text?`. ${t.text}`:``}`:t.text??``,i=await io(`prompt`,{tag:`koppler-reply`,text:`Answer to your question "${e.title}"${e.run?` (run ${e.run})`:``}: ${r}`,data:{message:e.id,...t}});i?.ok?(B(this.#t)[e.id]={at:new Date().toISOString(),...t,via:`canvas`},(Q.status?.agent?.state??`none`)===`none`&&$.show(`Answer saved. The agent gets it when one connects.`)):$.show(i?.status===409?`That question was already answered.`:`Could not send the answer.`,`warning`)}async dismiss(e){let t=await io(`message-dismiss`,{id:e.id});!t?.ok&&t?.status!==409?$.show(`Could not dismiss it.`,`warning`):B(this.#t)[e.id]={at:new Date().toISOString(),via:`dismissed`}}get waiting(){return[...Q.status?.waiting??[]].reverse().filter(e=>!B(this.#c).includes(e.key))}#c=N(fn([]));async drop(e){let t=await io(`prompt-drop`,{key:e});t?.ok||t?.status===409?P(this.#c,[...B(this.#c),e],!0):$.show(`Could not drop it.`,`warning`)}async clear(){(await io(`messages-clear`,{}))?.ok?(P(this.#n,!0),this.question&&$.show(`Cleared. The open question stays.`)):$.show(`Could not clear the messages.`,`warning`)}},uy=U(`<button class="how svelte-ssy1qy" type="button" aria-label="How to connect an agent" title="How to connect an agent" aria-haspopup="dialog"><!></button>`),dy=U(`<button class="agent svelte-ssy1qy" type="button"><span class="dot round svelte-ssy1qy" aria-hidden="true"></span><span class="words svelte-ssy1qy"> </span></button> <!> <div class="connect svelte-ssy1qy" popover="" role="dialog"><h2 class="svelte-ssy1qy">Connect an agent</h2> <p class="svelte-ssy1qy">Koppler starts and stops a confirmed run by itself. The agent is needed for what it cannot do alone: manual
|
|
7
|
+
checklists, notes, fixing a failed start, and anything a run leaves over.</p> <ol class="svelte-ssy1qy"><li class="svelte-ssy1qy">Open your agent session in this project</li> <li class="svelte-ssy1qy">Run this command there <!></li> <li class="svelte-ssy1qy">The dot turns green once it listens<small class="svelte-ssy1qy">Anything sent meanwhile waits for it.</small></li></ol></div>`,1);function fy(e,t){let n=ci();A(t,!0);let r={listening:[`Agent connected`,`An agent session is listening: notes, checklists and fix requests reach it right away.`],busy:[`Agent working`,`The connected agent is working on a request; the next one waits for it.`],question:[`Agent needs you`,`The agent asked something about your run. Click to answer.`],quiet:[`Agent quiet`,`It took a request and has neither finished it nor listened again since. If its session is done, run /koppler-run connect there; press ↻ for the steps.`],none:[`No agent listening`,`Runs work without one. Notes, checklists and fix requests wait until an agent connects; press ↻ to see how.`]},i=N(void 0),a=N(void 0),o=N(!1),s=M(()=>{let e=Date.parse(Q.status?.agent?.busy??``);return Number.isNaN(e)||!Q.status?0:Math.floor((Date.now()-e)/6e4)}),c=M(()=>Q.status?.agent?.state??`none`),l=M(()=>B(c)===`busy`&&B(s)*6e4>=6e5?`quiet`:B(c)),u=M(()=>ly.question?`question`:B(l)),d=M(()=>r[B(u)]??r.none??[``,``]),f=M(()=>v(B(d),2)),p=M(()=>B(f)[0]),m=M(()=>B(f)[1]),h=M(()=>Q.status?.queued??0),g=M(()=>B(h)>0&&B(u)!==`listening`),_=M(()=>B(u)===`none`&&!B(h)?`off`:B(u)),y=M(()=>B(l)===`none`?void 0:Q.status?.agent?.who),b=M(()=>B(y)&&(B(y).agent||B(y).cwd)?` ${[B(y).agent&&`${B(y).agent}${B(y).agentSession?` session ${B(y).agentSession}`:``}`,B(y).cwd&&`in ${B(y).cwd.replace(/^\/Users\/[^/]+/,`~`)}`].filter(Boolean).join(`, `)}.`:``),x=M(()=>({listening:B(y)?.name?`Agent: ${B(y).name}`:`Agent`,busy:B(s)?`Agent working, ${String(B(s))} min`:`Agent working`,quiet:`Agent quiet, ${String(B(s))} min`,none:B(h)?B(p):`No agent`}[B(u)]??B(p))+(B(g)?`, ${String(B(h))} waiting`:``)),S=M(()=>`${B(p)}${B(y)?.name?`: ${B(y).name}`:``}.${B(b)} ${B(m)}${B(g)?` ${String(B(h))} ${B(h)===1?`request waits`:`requests wait`} for it; only the newest run or Stop is handed over.`:``}`),C=()=>{let e=B(i)?.getBoundingClientRect();e&&B(a)&&(B(a).style.top=`${String(e.bottom+6)}px`,B(a).style.right=`${String(Math.max(12,innerWidth-e.right))}px`)};Fn(()=>{(B(l)===`listening`||B(l)===`busy`)&&B(o)&&B(a)?.hidePopover()});var w=si(),T=I(w),ee=e=>{var t=dy(),r=I(t),s=L(R(F(r)),!0);k(r);var c=R(r,2),u=e=>{var t=uy();Ua(F(t),{get of(){return cy},size:15}),k(t),Aa(t,e=>P(i,e),()=>B(i)),z(()=>{Y(t,`aria-expanded`,B(o)),Y(t,`popovertarget`,n)}),W(e,t)};K(c,e=>{(B(l)===`none`||B(l)===`quiet`)&&e(u)});var d=R(c,2),f=F(d),p=R(f,4),m=R(F(p),2);gc(R(F(m)),{command:`/koppler-run connect`}),k(m),Ae(2),k(p),k(d),Aa(d,e=>P(a,e),()=>B(a)),z(()=>{Y(r,`data-state`,B(_)),Y(r,`title`,B(S)),Y(r,`aria-expanded`,ly.open),G(s,B(x)),Y(d,`id`,n),Y(d,`aria-labelledby`,`${n}-title`),Y(f,`id`,`${n}-title`)}),H(`click`,r,()=>ly.open=!ly.open),V(`toggle`,d,e=>{P(o,e.newState===`open`),B(o)&&C()}),W(e,t)};K(T,e=>{Q.status&&e(ee)}),W(e,w),j()}Xr([`click`]);var py=new Set([`$$slots`,`$$events`,`$$legacy`]);function my(e,t){let n=La(t,py),r={name:`hand`,size:24,node:[[`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`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var hy=new Set([`$$slots`,`$$events`,`$$legacy`]);function gy(e,t){let n=La(t,hy),r={name:`layout-grid`,size:24,node:[[`rect`,{width:`7`,height:`7`,x:`3`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`14`,rx:`1`}],[`rect`,{width:`7`,height:`7`,x:`3`,y:`14`,rx:`1`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var _y=new Set([`$$slots`,`$$events`,`$$legacy`]);function vy(e,t){let n=La(t,_y),r={name:`focus`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`3`}],[`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`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var yy=new Set([`$$slots`,`$$events`,`$$legacy`]);function by(e,t){let n=La(t,yy),r={name:`maximize`,size:24,node:[[`path`,{d:`M8 3H5a2 2 0 0 0-2 2v3`}],[`path`,{d:`M21 8V5a2 2 0 0 0-2-2h-3`}],[`path`,{d:`M3 16v3a2 2 0 0 0 2 2h3`}],[`path`,{d:`M16 21h3a2 2 0 0 0 2-2v-3`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var xy=new Set([`$$slots`,`$$events`,`$$legacy`]);function Sy(e,t){let n=La(t,xy),r={name:`minus`,size:24,node:[[`path`,{d:`M5 12h14`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var Cy=new Set([`$$slots`,`$$events`,`$$legacy`]);function wy(e,t){let n=La(t,Cy),r={name:`mouse-pointer-2`,size:24,node:[[`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`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var Ty=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ey(e,t){let n=La(t,Ty),r={name:`plus`,size:24,node:[[`path`,{d:`M5 12h14`}],[`path`,{d:`M12 5v14`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var Dy=new Set([`$$slots`,`$$events`,`$$legacy`]);function Oy(e,t){let n=La(t,Dy),r={name:`redo-2`,size:24,node:[[`path`,{d:`m15 14 5-5-5-5`}],[`path`,{d:`M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var ky=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ay(e,t){let n=La(t,ky),r={name:`undo-2`,size:24,node:[[`path`,{d:`M9 14 4 9l5-5`}],[`path`,{d:`M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var jy={mono:{desk:`#0d0d0d`,name:`Mono`,note:`No hue until something needs you`,local:`#ffffff`,deployed:`#9a9a9a`,live:`#4ade80`},lime:{desk:`#0e0f10`,name:`Patch bay`,note:`Lime local, periwinkle deployed`,local:`#c8f03c`,deployed:`#8ea2ff`,live:`#4fd6c4`},signal:{desk:`#100e0c`,name:`Signal`,note:`Orange local, steel deployed, warm black`,local:`#ff8a1f`,deployed:`#7fc4d8`,live:`#5bd97a`},scope:{desk:`#0a0d0b`,name:`Scope`,note:`Phosphor green local, cyan deployed`,local:`#52f29a`,deployed:`#5cc8ff`,live:`#ffffff`},sodium:{desk:`#0c0e12`,name:`Sodium`,note:`Yellow local, violet deployed, cool slate`,local:`#ffd43b`,deployed:`#a98bff`,live:`#4ade80`},paper:{desk:`#f4f4f2`,name:`Paper`,note:`Light, ink local`,local:`#141414`,deployed:`#6b6b6b`,live:`#1a8f4c`,light:!0},blueprint:{desk:`#edf1f5`,name:`Blueprint`,note:`Light, blue local, violet deployed, cool grey`,local:`#1f4fd8`,deployed:`#7652c2`,live:`#15803d`,light:!0},workshop:{desk:`#f5f1ea`,name:`Workshop`,note:`Light, burnt orange local, teal deployed, warm paper`,local:`#b4490a`,deployed:`#22738a`,live:`#2b8048`,light:!0}},My={locals:[`#ffffff`,`#c8f03c`,`#52f29a`,`#5ce1e6`,`#ffd43b`,`#ff8a1f`],deployeds:[`#9a9a9a`,`#8ea2ff`,`#a98bff`,`#7fc4d8`,`#5cc8ff`,`#e6a3d8`]},Ny={locals:[`#141414`,`#1f4fd8`,`#b4490a`,`#0f766e`,`#7a3fc8`,`#1a6e2e`],deployeds:[`#6b6b6b`,`#7652c2`,`#22738a`,`#4a5fb5`,`#8a5a2b`,`#a3407a`]},Py=e=>!!jy[e].light,Fy=e=>Py(e)?Ny:My,Iy=[`#c8f03c`,`#52f29a`,`#1a6e2e`],Ly=[`#4ade80`,`#5bd97a`,`#1a8f4c`,`#15803d`,`#2b8048`],Ry=`koppler-appearance`,zy=()=>{try{let e=JSON.parse(localStorage.getItem(Ry)??`{}`),t=(e,t)=>typeof e==`string`&&t.includes(e)?e:void 0,n=e.scheme&&e.scheme in jy?e.scheme:`mono`,r=t(e.local,Fy(n).locals),i=t(e.deployed,Fy(n).deployeds);return{scheme:n,...r&&{local:r},...i&&{deployed:i}}}catch{return{scheme:`mono`}}},By=(e,t)=>{let n=jy[e];if(t&&Iy.includes(t)&&Ly.includes(n.live))return n.light?`#141414`:`#ffffff`},Vy=new class{#e=N(fn(zy()));get now(){return B(this.#e)}set now(e){P(this.#e,e,!0)}constructor(){this.#n()}get local(){return this.now.local??jy[this.now.scheme].local}get deployed(){return this.now.deployed??jy[this.now.scheme].deployed}pickScheme(e){this.#t({scheme:e})}pickLocal(e){this.#t({...this.now,local:e})}pickDeployed(e){this.#t({...this.now,deployed:e})}schemeDefault(){this.#t({scheme:this.now.scheme})}#t(e){this.now=e,this.#n();try{localStorage.setItem(Ry,JSON.stringify(e))}catch{}}#n(){let e=document.documentElement;this.now.scheme===`mono`?delete e.dataset.scheme:e.dataset.scheme=this.now.scheme;for(let[t,n]of[[`--local`,this.now.local],[`--deployed`,this.now.deployed],[`--live`,By(this.now.scheme,this.now.local)]])n?e.style.setProperty(t,n):e.style.removeProperty(t)}},Hy=new Set([`$$slots`,`$$events`,`$$legacy`]);function Uy(e,t){let n=La(t,Hy),r={name:`refresh-cw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`}],[`path`,{d:`M21 3v5h-5`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`}],[`path`,{d:`M8 16H3v5`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var Wy=new Set([`$$slots`,`$$events`,`$$legacy`]);function Gy(e,t){let n=La(t,Wy),r={name:`check`,size:24,node:[[`path`,{d:`M20 6 9 17l-5-5`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var Ky=new Set([`$$slots`,`$$events`,`$$legacy`]);function qy(e,t){let n=La(t,Ky),r={name:`logs`,size:24,node:[[`path`,{d:`M3 5h1`}],[`path`,{d:`M3 12h1`}],[`path`,{d:`M3 19h1`}],[`path`,{d:`M8 5h1`}],[`path`,{d:`M8 12h1`}],[`path`,{d:`M8 19h1`}],[`path`,{d:`M13 5h8`}],[`path`,{d:`M13 12h8`}],[`path`,{d:`M13 19h8`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var Jy=new Set([`$$slots`,`$$events`,`$$legacy`]);function Yy(e,t){let n=La(t,Jy),r={name:`play`,size:24,node:[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var Xy=new Set([`$$slots`,`$$events`,`$$legacy`]);function Zy(e,t){let n=La(t,Xy),r={name:`rotate-cw`,size:24,node:[[`path`,{d:`M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8`}],[`path`,{d:`M21 3v5h-5`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var Qy=new Set([`$$slots`,`$$events`,`$$legacy`]);function $y(e,t){let n=La(t,Qy),r={name:`square`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var eb=new Set([`$$slots`,`$$events`,`$$legacy`]);function tb(e,t){let n=La(t,eb),r={name:`grip-vertical`,size:24,node:[[`circle`,{cx:`9`,cy:`12`,r:`1`}],[`circle`,{cx:`9`,cy:`5`,r:`1`}],[`circle`,{cx:`9`,cy:`19`,r:`1`}],[`circle`,{cx:`15`,cy:`12`,r:`1`}],[`circle`,{cx:`15`,cy:`5`,r:`1`}],[`circle`,{cx:`15`,cy:`19`,r:`1`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var nb=U(`<span class="tag svelte-1ypd2at">current</span>`),rb=U(`<span class="tag svelte-1ypd2at">picked</span>`),ib=U(`<li role="option" class="svelte-1ypd2at"><span class="name svelte-1ypd2at"> </span> <!></li>`),ab=U(`<li class="note svelte-1ypd2at" role="presentation"> </li>`),ob=U(`<input class="mono svelte-1ypd2at" role="combobox" aria-autocomplete="list" autocomplete="off" spellcheck="false" placeholder="current branch"/> <ul class="nodrag nopan nowheel svelte-1ypd2at" role="listbox" popover="manual"><!> <!></ul>`,1);function sb(e,t){let n=ci();A(t,!0);let r=X(t,`label`,3,`Branch`),i=N(void 0),a=N(void 0),o=N(!1),s=N(``),c=N(0),l=``,u=M(()=>B(s)?t.branches.filter(e=>e.toLowerCase().includes(B(s).toLowerCase())):t.branches),d=M(()=>B(u).slice(0,80)),f=(e,t)=>{let n=B(i)?.getBoundingClientRect();if(!n||!B(a))return;B(a).style.left=`${String(n.left)}px`,B(a).style.minWidth=`${String(Math.max(n.width,280))}px`,B(a).style.maxWidth=`${String(Math.max(280,Math.min(560,innerWidth-n.left-12)))}px`;let r=n.bottom+4;B(a).style.top=`${String(r+B(a).offsetHeight>innerHeight-8?Math.max(8,n.top-4-B(a).offsetHeight):r)}px`,t&&B(a).children[e]?.scrollIntoView({block:`nearest`})};Fn(()=>{B(o)&&f(B(c),B(d).length)});let p=()=>{!B(o)&&B(i)&&(l=B(i).value,P(s,``),P(c,Math.max(0,B(d).indexOf(t.value||t.current)),!0),P(o,!0),B(i).select(),B(a)?.showPopover())},m=()=>{B(o)&&(P(o,!1),B(a)?.hidePopover())},h=e=>{let n=e.trim();!n&&B(i)&&(B(i).value=t.current),n!==(t.value||t.current)&&t.onpick(n===t.current?``:n)},g=e=>{B(i)&&(B(i).value=e),h(e),m(),B(i)?.blur()},_=e=>{if(!B(o))e.key===`ArrowDown`&&p();else if((e.key===`ArrowDown`||e.key===`ArrowUp`)&&B(d).length)e.preventDefault(),P(c,(B(c)+(e.key===`ArrowDown`?1:-1)+B(d).length)%B(d).length);else if(e.key===`Enter`){e.preventDefault();let t=B(d)[B(c)];t?g(t):B(i)?.blur()}else e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),B(i)&&(B(i).value=l),m(),B(i)?.blur())};var v=ob(),y=I(v);fa(y),Aa(y,e=>P(i,e),()=>B(i));var b=R(y,2),x=F(b);q(x,18,()=>B(d),e=>e,(e,r,i)=>{var a=ib(),o=F(a),s=L(o,!0),l=R(o,2),u=e=>{W(e,nb())},d=e=>{W(e,rb())};K(l,e=>{r===t.current?e(u):r===t.value&&e(d,1)}),k(a),z(()=>{Y(a,`id`,`${n}-${B(i)??``}`),Y(a,`aria-selected`,B(i)===B(c)),Y(a,`title`,r),G(s,r)}),V(`pointerenter`,a,()=>P(c,B(i),!0)),H(`click`,a,e=>{e.preventDefault(),g(r)}),W(e,a)});var S=R(x,2),C=e=>{var t=ab(),n=L(t);z(()=>G(n,`${B(u).length-B(d).length} more, keep typing`)),W(e,t)},w=e=>{var n=ab(),r=L(n,!0);z(()=>G(r,t.branches.length?`No branch matches. Enter keeps "${B(s)}".`:`No branches found. Run koppler sync.`)),W(e,n)};K(S,e=>{B(u).length>B(d).length?e(C):B(u).length||e(w,1)}),k(b),Aa(b,e=>P(a,e),()=>B(a)),z(e=>{Y(y,`aria-label`,r()),Y(y,`aria-expanded`,B(o)),Y(y,`aria-controls`,`${n}-list`),Y(y,`aria-activedescendant`,e),Y(y,`title`,t.title),pa(y,t.value||t.current),Y(b,`id`,`${n}-list`)},[()=>B(o)&&B(d).length?`${n}-${String(B(c))}`:void 0]),H(`click`,y,p),V(`blur`,y,e=>{h(e.currentTarget.value),m()}),H(`input`,y,e=>{p(),P(s,e.currentTarget.value.trim(),!0),P(c,0)}),H(`keydown`,y,_),H(`pointerdown`,b,e=>{e.preventDefault()}),W(e,v),j()}Xr([`click`,`input`,`keydown`,`pointerdown`]);var cb=U(`<label class="field svelte-1kkgx5y">Branch <!></label>`),lb=U(`<label class="svelte-1kkgx5y"><input type="radio"/> </label>`),ub=U(`<div class="field svelte-1kkgx5y" role="radiogroup"> <span class="seg svelte-1kkgx5y"></span></div>`),db=U(`<div class="field svelte-1kkgx5y" role="group" aria-label="Who starts it">Started by <span class="seg svelte-1kkgx5y" role="radiogroup" aria-label="Started by"></span></div>`),fb=U(`<option> </option>`),pb=U(`<label class="field svelte-1kkgx5y">Platform <span class="combo svelte-1kkgx5y"><select class="mono svelte-1kkgx5y"></select></span></label>`),mb=U(`<div class="field svelte-1kkgx5y">Tunnels <label class="toggle svelte-1kkgx5y"><input type="checkbox" role="switch"/><span class="track" aria-hidden="true"></span> </label></div>`),hb=U(`<button class="link svelte-1kkgx5y" type="button"> </button>`),gb=U(`<div class="field svelte-1kkgx5y">Queues <label class="toggle svelte-1kkgx5y"><input type="checkbox" role="switch"/><span class="track" aria-hidden="true"></span> </label> <!></div>`),_b=U(`<div class="row svelte-1kkgx5y"><!> <!> <!> <!></div>`),vb=U(`<label class="toggle svelte-1kkgx5y"><input type="checkbox" role="switch"/><span class="track" aria-hidden="true"></span> </label>`),yb=U(`<div class="field svelte-1kkgx5y">Libraries <!></div>`),bb=U(`<optgroup label="Call a local app"></optgroup>`),xb=U(`<optgroup label="Remove the cable to"></optgroup>`),Sb=U(`<label class="field svelte-1kkgx5y">Note for the agent <textarea rows="2" placeholder="e.g. run with the new pricing flag on" class="svelte-1kkgx5y"></textarea></label>`),Cb=U(`<button class="note-toggle svelte-1kkgx5y" type="button">Add a note for the agent</button>`),wb=U(`<label class="field svelte-1kkgx5y">Cables <span class="combo svelte-1kkgx5y"><select class="svelte-1kkgx5y"><option>Add or remove…</option><!><!></select></span></label> <!>`,1),Tb=U(`<div class="body svelte-1kkgx5y"><!> <!> <!> <!> <!></div>`);function Eb(e,t){A(t,!0);let n=[[`set-aside`,`Set aside`,`Kept aside while it runs the other branch, back on Stop`],[`take-along`,`Take along`,`Carried to the other branch, and back on Stop`]],r=M(()=>Z.nodes.find(e=>e.id===t.id)?.data),i=M(()=>Z.app(t.id)),a=M(()=>B(i)?.current||`current branch`),o=M(()=>`${String(B(i)?.dirty??0)} uncommitted ${B(i)?.dirty===1?`change`:`changes`}`),s=M(()=>(B(i)?.runIn??[]).map(([e])=>e).filter(e=>Object.hasOwn(Fs,e))),c=M(()=>B(s).length>1),l=M(()=>B(r)?.run===`mock`),u=M(()=>Z.tunnelsOf(t.id)),d=M(()=>Z.queuesOf(t.id)),f=M(()=>B(d).filter(e=>Z.hiddenQueues[e])),p=M(()=>B(d).length>0&&!B(r)?.showQueues),m=M(()=>Z.localLibraries(t.id)),h=(e,n)=>{Z.set(t.id,{libraries:n?[...B(m),e]:B(m).filter(t=>t!==e)})},g=M(()=>!!B(i)?.platforms.length&&B(r)?.run===`cli`),_=N(fn({can:[],wired:[]})),y=N(!1),b=e=>{let n=e.currentTarget,[r,i]=[n.value[0],n.value.slice(1)];r===`+`?Z.connect(t.id,i):r===`-`&&Z.cut(t.id,i),n.value=``},x=e=>e.target.closest(`select, textarea, input:not([type="radio"], [type="checkbox"])`),S=e=>{let t=x(e);t===document.activeElement?e.stopPropagation():t&&e.preventDefault()},C=e=>{let t=x(e);t&&t!==document.activeElement&&(t.focus(),t instanceof HTMLSelectElement&&t.showPicker())},w=e=>{e.style.height=`auto`,e.style.height=`${String(e.scrollHeight+2)}px`};var T=si(),ee=I(T),te=e=>{var x=Tb(),T=F(x),ee=e=>{var n=cb(),a=R(F(n));{let e=M(()=>B(i)?.current??``),n=M(()=>B(i)?.branches??[]),s=M(()=>B(i)?.dirty&&!Z.switchesOver(t.id)?`Runs with your ${B(o)}`:void 0);sb(a,{get value(){return B(r).branch},get current(){return B(e)},get branches(){return B(n)},get title(){return B(s)},onpick:e=>{Z.set(t.id,{branch:e})}})}k(n),W(e,n)};K(T,e=>{B(l)||e(ee)});var te=R(T,2),E=e=>{var i=ub(),s=F(i),c=R(s);q(c,21,()=>n,([e,t,n])=>e,(e,n)=>{var i=M(()=>v(B(n),3));let a=()=>B(i)[0],o=()=>B(i)[1],s=()=>B(i)[2];var c=lb(),l=F(c);fa(l);var u=R(l,1,!0);k(c),z(()=>{Y(c,`title`,s()),Y(l,`name`,`changes-${t.id??``}`),pa(l,a()),ma(l,(B(r).changes??`set-aside`)===a()),G(u,o())}),H(`change`,l,()=>{Z.set(t.id,{changes:a()})}),W(e,c)}),k(c),k(i),z(()=>{Y(i,`aria-label`,`Your ${B(o)??``} on ${B(a)??``}`),Y(i,`title`,`Your ${B(o)??``} on ${B(a)??``}: set aside while it runs the other branch, or taken along. Back on Stop either way.`),G(s,`${B(o)??``} `)}),W(e,i)},ne=M(()=>Z.switchesOver(t.id));K(te,e=>{B(ne)&&e(E)});var D=R(te,2),re=e=>{var n=_b(),a=F(n),o=e=>{var n=db(),i=R(F(n));q(i,20,()=>B(s),e=>e,(e,n)=>{var i=lb(),a=F(i);fa(a);var o=R(a,1,!0);k(i),z(()=>{Y(a,`name`,`run-${t.id??``}`),pa(a,n),ma(a,B(r).run===n),G(o,Fs[n])}),H(`change`,a,()=>{Z.set(t.id,{run:n})}),W(e,i)}),k(i),k(n),z(e=>Y(n,`title`,`Koppler: the agent starts it. Me: you start it yourself (IDE, terminal, anything); the agent only prepares it.${e??``}`),[()=>B(s).includes(`mock`)?` Mock: Koppler answers its mock responses from the stack in its place.`:``]),W(e,n)};K(a,e=>{B(c)&&e(o)});var l=R(a,2),m=e=>{var n=pb(),a=R(F(n)),o=F(a);q(o,21,()=>B(i)?.platforms??[],([e,t])=>e,(e,t)=>{var n=M(()=>v(B(t),2));let r=()=>B(n)[0],i=()=>B(n)[1];var a=fb(),o=L(a,!0),s={};z(()=>{G(o,i()),s!==(s=r())&&(a.value=(a.__value=s)??``)}),W(e,a)}),k(o);var s;$i(o),k(a),k(n),z(()=>{s!==(s=B(r).platform)&&(o.value=(o.__value=s)??``,Qi(o,s))}),H(`change`,o,e=>{Z.set(t.id,{platform:e.currentTarget.value})}),W(e,n)};K(l,e=>{B(g)&&e(m)});var h=R(l,2),_=e=>{var n=mb(),i=R(F(n)),a=F(i);fa(a);var o=R(a,2,!0);k(i),k(n),z(()=>{Y(i,`title`,B(r).hideTunnels?`Off: only the API runs; calls through its tunnels fail.`:`On: Koppler opens its tunnels. Turn off when you only need the API.`),Y(a,`aria-label`,`Open ${B(r).name??``}'s tunnels`),ma(a,!B(r).hideTunnels),G(o,B(r).hideTunnels?`Off`:`On`)}),H(`change`,a,e=>{Z.set(t.id,{hideTunnels:!e.currentTarget.checked})}),W(e,n)};K(h,e=>{B(u).length&&e(_)});var y=R(h,2),b=e=>{var n=gb(),i=R(F(n)),a=F(i);fa(a);var o=R(a,2,!0);k(i);var s=R(i,2),c=e=>{var t=hb(),n=L(t);z(()=>G(n,`Show ${B(f).length??``} hidden`)),H(`click`,t,()=>{Z.showQueues(B(d),!0)}),W(e,t)};K(s,e=>{B(f).length&&!B(p)&&e(c)}),k(n),z(()=>{Y(i,`title`,B(p)?`Off: it is taken off its queues and keeps the deployed ones. A queue another app uses stays on the board for that app.`:`On: its queues show on the board, where each can be switched to a local copy.`),Y(a,`aria-label`,`Show ${B(r).name??``}'s queues`),ma(a,!B(p)),G(o,B(p)?`Off`:`On`)}),H(`change`,a,e=>{Z.set(t.id,{showQueues:e.currentTarget.checked})}),W(e,n)};K(y,e=>{B(d).length&&e(b)}),k(n),W(e,n)};K(D,e=>{(B(c)||B(u).length||B(d).length)&&e(re)});var ie=R(D,2),ae=e=>{var t=yb();q(R(F(t)),17,()=>B(i).libraries,e=>e.name,(e,t)=>{let n=M(()=>B(m).includes(B(t).name));var i=vb(),a=F(i);fa(a);var o=R(a,2,!0);k(i),z(e=>{Y(i,`title`,e),Y(a,`aria-label`,`Use the local ${B(t).name??``}`),ma(a,B(n)),G(o,B(t).name)},[()=>B(n)?`On: ${B(r).name} uses your local copy in ${B(t).path.replace(/^\/Users\/[^/]+/,`~`)}`:`Off: ${B(r).name} uses the published ${B(t).name}`]),H(`change`,a,e=>{h(B(t).name,e.currentTarget.checked)}),W(e,i)}),k(t),W(e,t)};K(ie,e=>{B(i)?.libraries.length&&!B(l)&&e(ae)});var oe=R(ie,2),se=e=>{var n=wb(),i=I(n),a=R(F(i)),o=F(a),s=F(o);s.value=s.__value=``;var c=R(s),l=e=>{var t=bb();q(t,21,()=>B(_).can,e=>e.id,(e,t)=>{var n=fb(),r=L(n,!0),i={};z(()=>{G(r,B(t).name),i!==(i=`+${B(t).id??``}`)&&(n.value=n.__value=i)}),W(e,n)}),k(t),W(e,t)};K(c,e=>{B(_).can.length&&e(l)});var u=R(c),d=e=>{var t=xb();q(t,21,()=>B(_).wired,e=>e.id,(e,t)=>{var n=fb(),r=L(n,!0),i={};z(()=>{G(r,B(t).name),i!==(i=`-${B(t).id??``}`)&&(n.value=n.__value=i)}),W(e,n)}),k(t),W(e,t)};K(u,e=>{B(_).wired.length&&e(d)}),k(o),k(a),k(i);var f=R(i,2),p=e=>{var n=Sb(),i=R(F(n));_t(i),Ri(i,()=>w),k(n),z(()=>pa(i,B(r).note)),H(`input`,i,e=>{w(e.currentTarget),Z.set(t.id,{note:e.currentTarget.value})}),V(`blur`,i,()=>P(y,!1)),W(e,n)},m=e=>{var t=Cb();H(`click`,t,()=>P(y,!0)),W(e,t)};K(f,e=>{B(r).note||B(y)?e(p):e(m,-1)}),z(()=>Y(o,`aria-label`,`Add or remove a cable from ${B(r).name??``}`)),V(`focus`,o,()=>P(_,Z.cablesOf(t.id),!0)),H(`pointerdown`,o,()=>P(_,Z.cablesOf(t.id),!0)),H(`change`,o,b),W(e,n)};K(oe,e=>{B(l)||e(se)}),k(x),V(`mousedown`,x,S,!0),H(`click`,x,C),W(e,x)};K(ee,e=>{B(r)&&e(te)}),W(e,T),j()}Xr([`click`,`change`,`pointerdown`,`input`]);var Db=(e,t)=>document.elementsFromPoint(e,t).find(e=>e.classList.contains(`svelte-flow__node`))?.getAttribute(`data-id`)??void 0,Ob=new class{#e=N(null);get draft(){return B(this.#e)}set draft(e){P(this.#e,e)}#t=N(null);get grabbed(){return B(this.#t)}set grabbed(e){P(this.#t,e)}#n=N(null);get drop(){return B(this.#n)}set drop(e){P(this.#n,e)}endPoint(e,t){let n=Z.cables[e],r=n&&Z.boxes.get(n[t]);if(!r)return;let i=n[`${t}Side`],a=jo(r,i),o=Z.ends.offset[`${String(e)}|${t}`]??0;return Eo[i][0]===0?{...a,x:a.x+o}:{...a,y:a.y+o}}nearestSide(e,t){let n=n=>Math.hypot(jo(e,n).x-t.x,jo(e,n).y-t.y);return Object.keys(Eo).reduce((e,t)=>n(t)<n(e)?t:e)}start(e,t){let n=Z.boxes.get(e);if(!n)return;let r=jo(n,t),i=[],a=e=>Z.toFlow({x:e.clientX,y:e.clientY}),o=t=>{let n=Db(t.clientX,t.clientY),o=n&&n!==e?Z.boxes.get(n):void 0;if(!n||!o)return;let s=a(t);return{id:n,side:Object.keys(Eo).find(e=>Math.hypot(jo(o,e).x-s.x,jo(o,e).y-s.y)<=16/Z.zoom())??this.nearestSide(o,i.at(-1)??r),at:o}},s=e=>Z.app(e),c=(e,t)=>!!s(e)?.calls.includes(t),l=t=>!s(e)?.outside&&!!s(t)&&!s(t)?.outside&&!!s(t)?.answers,u=t=>!c(e,t)&&c(t,e),d=e=>{let n=o(e),s=!!n&&l(n.id)&&!u(n.id);this.draft={a:r,side:t,b:n&&s?jo(n.at,n.side):a(e),bSide:n&&s?n.side:null,points:[...i]},this.drop=n?{id:n.id,ok:s}:null},f=()=>{removeEventListener(`pointermove`,d),removeEventListener(`pointerdown`,m,!0),removeEventListener(`keydown`,h,!0),this.draft=this.drop=null},p=n=>{let r=o(n);if(f(),!r)return;let[a,c]=[s(e)?.name??e,s(r.id)?.name??r.id];if(!l(r.id)){let e=s(r.id)?.answers?`${a} doesn't call ${c}`:`${c} is a ${s(r.id)?.kindLabel??``} app: it calls others, nothing calls it.`;$.show(e,`warning`);return}if(u(r.id)){let t=Z.edges.some(t=>t.id===`${r.id}>${e}`);$.show(`In the code ${c} calls ${a}, not the other way round.${t?` That cable is already on the board.`:``}`,`warning`,t?void 0:{label:`Connect that way`,run:()=>{Z.connect(r.id,e)}});return}let d=Gs(e,r.id,{fromSide:t,toSide:r.side,...i.length&&{points:i}});Z.edges=[...Z.edges.filter(e=>e.id!==d.id),d]},m=e=>{if(e.button===0){e.preventDefault(),e.stopPropagation();for(let e of[`mousedown`,`click`])addEventListener(e,e=>{e.stopPropagation()},{capture:!0,once:!0});Db(e.clientX,e.clientY)?p(e):e.target.closest(`.svelte-flow__panel, button`)?f():(i.push(a(e)),d(e))}},h=e=>{e.key===`Escape`&&(e.preventDefault(),f())};addEventListener(`pointermove`,d),addEventListener(`pointerup`,e=>{let t=a(e),n=Math.hypot(t.x-r.x,t.y-r.y)>24/Z.zoom();Db(e.clientX,e.clientY)||!n?p(e):(i.push(t),d(e),addEventListener(`pointerdown`,m,!0),addEventListener(`keydown`,h,!0))},{once:!0})}grabEnd(e,t,n){let r=Z.edges.find(e=>e.id===t);if(e.button!==0||!r||Z.live)return;e.preventDefault(),e.stopPropagation();let i=n===`from`?r.source:r.target,a=r.data[`${n}Side`],o=Eo[a][0]===0?`x`:`y`,s=Z.toFlow({x:e.clientX,y:e.clientY}),c=()=>Z.edges.flatMap((e,t)=>{let n=e.source===i&&e.data.fromSide===a?`from`:e.target===i&&e.data.toSide===a?`to`:null;return n?[{edge:e,index:t,end:n}]:[]}).sort((e,t)=>(e.edge.data[`${e.end}Slot`]??1/0)-(t.edge.data[`${t.end}Slot`]??1/0)||e.index-t.index),l=null,u=()=>{removeEventListener(`pointermove`,d),removeEventListener(`pointerup`,u),this.grabbed=null},d=e=>{let r=Z.toFlow({x:e.clientX,y:e.clientY}),d=r[o]-s[o],f=o===`x`?r.y-s.y:r.x-s.x;if(!l){if(Math.hypot(d,f)<6/Z.zoom())return;if(l=Math.abs(f)>Math.abs(d)?`wire`:`order`,l===`wire`){u(),this.start(i,a);return}this.grabbed={id:t,end:n}}let p=c(),m=p.find(e=>e.edge.id===t&&e.end===n);if(!m||p.length<2)return;let h=p.filter(e=>e!==m),g=h.filter(e=>(this.endPoint(e.index,e.end)?.[o]??0)<r[o]).length,_=[...h.slice(0,g),m,...h.slice(g)];if(_.every((e,t)=>p[t]===e))return;let v=new Map(_.map((e,t)=>[`${e.edge.id}|${e.end}`,t]));Z.edges=Z.edges.map(e=>{let t=v.get(`${e.id}|from`),n=v.get(`${e.id}|to`);return t===void 0&&n===void 0?e:{...e,data:{...e.data,...t!==void 0&&{fromSlot:t},...n!==void 0&&{toSlot:n}}}})};addEventListener(`pointermove`,d),addEventListener(`pointerup`,u)}},kb=(e,t,n)=>{try{let r=localStorage.getItem(e);return t.includes(r)?r:n}catch{return n}},Ab=(e,t)=>{try{localStorage.setItem(e,t)}catch{}},jb=()=>{try{return JSON.parse(sessionStorage.getItem(`koppler-log-cleared`)??`{}`)??{}}catch{return{}}},Mb=e=>{let[t=``,n]=e.split(`@`);return[t,n]},Nb=new class{#e=N([]);get tabs(){return B(this.#e)}set tabs(e){P(this.#e,e)}#t=N(null);get active(){return B(this.#t)}set active(e){P(this.#t,e,!0)}#n=N(!1);get raw(){return B(this.#n)}set raw(e){P(this.#n,e,!0)}#r=N(jb());get cleared(){return B(this.#r)}set cleared(e){P(this.#r,e)}#i=N({});get full(){return B(this.#i)}set full(e){P(this.#i,e)}#a={};#o=N([]);get all(){return B(this.#o)}set all(e){P(this.#o,e)}#s=N(fn(kb(`koppler-log-since`,[`run`,`hour`,`lines`],`run`)));get since(){return B(this.#s)}set since(e){P(this.#s,e,!0)}#c=N(fn(kb(`koppler-log-names`,[`every`,`change`],`every`)));get names(){return B(this.#c)}set names(e){P(this.#c,e,!0)}setSince(e){this.since=e,Ab(`koppler-log-since`,e),this.reload()}reload(){this.#a[`*`]=0,this.refresh()}setNames(e){this.names=e,Ab(`koppler-log-names`,e)}allApps(){return Z.nodes.map(e=>e.id).filter(e=>!Z.hiddenLogs[e])}open(e,t){let n=t?`${e}@${t}`:e;this.tabs.includes(n)||(this.tabs=[...this.tabs,n]),this.active=n,requestAnimationFrame(()=>{Z.show(e)})}past(e){return e!==`*`&&!!Mb(e)[1]}label(e){if(e===`*`)return`All apps`;let[t,n]=Mb(e),r=n?Q.status?.runs?.find(e=>e.id===n)?.at:void 0,i=r?new Date(r).toLocaleString([],{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`}):``;return n?`${Z.nameOf(t)}, run of ${i||n}`:Z.nameOf(t)}close(e){this.tabs=this.tabs.filter(t=>t!==e),this.active===e&&(this.active=this.tabs.at(-1)??null)}closeAll(){this.tabs=[],this.active=null}clear(){let e=this.active,t=e?Q.tail(e).trimEnd():``;if(e&&t){this.cleared={...this.cleared,[e]:t.slice(t.lastIndexOf(`
|
|
8
|
+
`)+1)};try{sessionStorage.setItem(`koppler-log-cleared`,JSON.stringify(this.cleared))}catch{}}}refresh(){let e=this.active;if(!e||Date.now()-(this.#a[e]??0)<2e3)return;if(this.#a[e]=Date.now(),e===`*`){let e=this.since===`lines`?`since=all&lines=2000`:`since=${this.since}`,t=this.allApps().map(encodeURIComponent).join(`,`);fetch(`log-all?apps=${t}&${e}`,{cache:`no-store`}).then(e=>e.ok?e.json():null).then(e=>{e&&(this.all=e)}).catch(()=>void 0);return}let[t,n]=Mb(e),r=`app=${encodeURIComponent(t)}${n?`&run=${encodeURIComponent(n)}`:``}`;fetch(`log?${r}`,{cache:`no-store`}).then(e=>e.ok?e.text():null).then(t=>{t!==null&&t!==this.full[e]&&(this.full={...this.full,[e]:t})}).catch(()=>void 0)}text(e){let t=this.full[e]??(this.past(e)?``:Q.tail(e)),n=this.cleared[e],r=n?t.lastIndexOf(n):-1;return r>=0?t.slice(r+(n?.length??0)).replace(/^\n/,``):t}},Pb=(e,t)=>(t.error===void 0?t.notes.length&&$.show(`Opened ${e}, changed to fit: ${t.notes.join(`; `)}`):$.show(`Cannot open ${e}. ${t.error}`,`warning`),t.error===void 0),Fb=e=>Pb(e.name,Z.openBoard(e));async function Ib(e){if(!e)return;let t;try{t=JSON.parse(await e.text())}catch{$.show(`${e.name} is not a JSON file`,`warning`);return}let n=Z.importBoards(t,e.name);Pb(n.error===void 0?n.name:e.name,n)}async function Lb(e){let t=await oo(`preset`,{url:e});if(t.error)return t.error;let n=Z.importBoards(t.presets,e);return n.error===void 0?(Pb(n.name,n),null):n.error}var Rb=[[`year`,31536e3],[`month`,2592e3],[`week`,604800],[`day`,86400],[`hour`,3600],[`minute`,60]];function zb(e){let t=(new Date(e).getTime()-Date.now())/1e3,n=new Intl.RelativeTimeFormat(void 0,{numeric:`auto`});for(let[e,r]of Rb)if(Math.abs(t)>=r)return n.format(Math.round(t/r),e);return`just now`}var Bb=fn({}),Vb=[[`starts`,`Starts`],[`restarts`,`Restarts`],[`stops`,`Stops and reverts`],[`keeps`,`Keeps running`]],Hb=()=>(Date.now().toString(36)+Math.random().toString(36).slice(2,8)).replace(/[^a-z0-9]/g,``),Ub=Z.nameOf,Wb=(e,t)=>`${String(e)} ${t}${e===1?``:`s`}`,Gb=new class{#e=N(null);get review(){return B(this.#e)}set review(e){P(this.#e,e)}#t=N(fn({}));get onItsOwn(){return B(this.#t)}set onItsOwn(e){P(this.#t,e,!0)}#n=N(fn({}));get leftOut(){return B(this.#n)}set leftOut(e){P(this.#n,e,!0)}graph(e){let t=Q.status?.live,n=n=>!e||n===e||Object.hasOwn(t?.nodes??{},n),r=Z.nodes.filter(({id:e})=>!this.leftOut[e]).map(({id:e,data:t})=>{let n=Z.app(e);return{id:e,branch:t.run!==`mock`&&t.branch||null,run:t.run,...t.hideTunnels&&Z.tunnelsOf(e).length>0&&{tunnels:!1},...t.showQueues&&Z.queuesOf(e).length>0&&{queues:!0},...t.watch&&t.run===`cli`&&{watch:!0},...Z.switchesOver(e)&&{changes:t.changes??`set-aside`},...t.platform&&t.run===`cli`&&!!n?.platforms.length&&{platform:t.platform},...t.run!==`mock`&&t.note.trim()&&{note:t.note.trim()},...Z.localLibraries(e).length>0&&{libraries:Z.localLibraries(e)}}}),i=Z.edges.filter(({source:e,target:t})=>!this.leftOut[e]&&!this.leftOut[t]).map(({source:e,target:t})=>({from:e,to:t})),a=e?r.flatMap(r=>r.id===e?[r]:n(r.id)?[{...t?.nodes?.[r.id],id:r.id}]:[]):r,o=e?[...(Array.isArray(t?.edges)?t.edges:[]).filter(t=>t.from!==e&&n(t.to)),...i.filter(t=>t.from===e&&n(t.to))]:i,s=a.filter(e=>e.run!==`mock`).flatMap(({id:e})=>(Z.app(e)?.calls??[]).filter(t=>!o.some(n=>n.from===e&&n.to===t)).map(t=>({from:e,to:t}))),c=Object.fromEntries(e?Object.entries(t?.queues??{}).filter(([,e])=>e===`local`):Z.infra.flatMap(e=>e.type===`queue`&&e.data.local?[[e.data.queue,`local`]]:[]));return{env:Z.env,mode:`auto`,nodes:a,edges:o,deployed:s,...Object.keys(c).length&&{queues:c}}}#r(e){let t=Q.status,n=t?.running;return ps(t?.live??null,e,{name:Ub,running:e=>n?.includes(e),strays:(n??[]).filter(e=>Z.apps.some(t=>t.id===e)&&!t?.live?.nodes?.[e]),startedOn:e=>t?.runningEnvs?.[e],queuesOf:e=>Z.queuesOf(e),current:e=>Z.app(e)?.current})}#i(){return Z.nodes.flatMap(({id:e})=>(Q.status?.secrets?.[e]?.[Z.env]??[]).filter(e=>!e.stored&&(!e.when||/^always\b/i.test(e.when.trim()))).map(t=>`${t.name} for ${Ub(e)}`))}#a(e){let t=e.env.toUpperCase(),n=(e,t)=>Z.app(e)?.known.includes(t);return[`ENV ${t}`,`MODE ${e.mode===`manual`?`manual: give me a checklist, change nothing`:`auto: apply the changes and start everything`}`,...e.note?[`NOTE ${e.note}`]:[],...Object.keys(e.queues??{}).map(e=>`QUEUE ${Z.queueName(e)}: local, in the AWS emulator`),...e.nodes.flatMap(e=>{let t=Z.apps.find(t=>t.id===e.id)?.platforms.find(([t])=>t===e.platform);if(e.run===`mock`)return[`MOCK ${Ub(e.id)}: Koppler answers its mock responses from the stack`];let n=[e.run===`ide`?`IDE`:`CLI`,e.run===`cli`?t?.[1].split(` `)[0]:void 0];return[`LOCAL ${Ub(e.id)} [${n.filter(Boolean).join(`, `)}] on ${e.branch??`current branch`}`,...e.note?[` note: ${e.note}`]:[]]}),...e.edges.map(({from:e,to:t})=>{let r=Z.app(e)?.calls.includes(t),i=n(e,t)?``:r?` (found in its repo, not in the stack yet)`:` (NEW: not in the stack; find how the caller picks this address, record it in consumes, ask if unclear)`;return` ${Ub(e)} → local ${Ub(t)}${i}`}),...e.deployed.map(({from:e,to:n})=>` ${Ub(e)} → ${t} ${Ub(n)}`),...e.deployed.filter(({to:t})=>e.nodes.some(e=>e.id===t)).map(({from:e,to:n})=>`! ${Ub(n)} is local but ${Ub(e)} still calls ${t}`)].join(`
|
|
9
|
+
`)}async deliver(e,t,n){return(await io(`prompt`,{...t,text:e}))?.ok?($.show(n),!0):(await navigator.clipboard.writeText(e).catch(()=>void 0),$.show(`No agent connection, so the request was copied to your clipboard`,`warning`),!1)}#o(e,t=()=>[]){return Vb.filter(([t])=>e[t].length).map(([n,r])=>({verb:n,label:r,items:e[n].map(e=>({name:Ub(e.id),...(n===`starts`||n===`restarts`)&&{id:e.id},notes:[...e.why.length?[{text:e.why.join(`; `)}]:[],...n===`starts`||n===`restarts`?t(e.id):[]]}))}))}#s={};again(){this.#c=!0,this.start(this.#s)}#c=!1;start({note:e,manual:t=!1,restart:n}={}){this.#c||(this.leftOut={}),this.#c=!1,this.#s={manual:t,...e&&{note:e},...n&&{restart:n}};let r=this.graph(n),i={...r,nodes:r.nodes.map(e=>e.id===n?{...e,restart:!0}:e),mode:t?`manual`:`auto`,...e&&{note:e}};if(!i.nodes.length){$.show(`Add at least one app first`,`warning`);return}let a=this.#r(i),o=i.env.toUpperCase(),s=Z.envs[0]?.toUpperCase()??``,c=!!e||i.nodes.some(e=>`note`in e),l=this.#i(),u=Z.nodes.filter(e=>Z.borrowsTunnels(e.id)).map(e=>e.id),d=Z.plan,f=Z.nodes.filter(e=>e.data.hideTunnels&&Z.tunnelsOf(e.id).length),p={label:`What to do`,run:()=>{this.review=null,Bb.checklist?.open()}},m=e=>{let t=Z.nodes.find(t=>t.id===e),n=Z.app(e);if(!t||!n)return[];let r=!t.data.branch||t.data.branch===n.current,a=Wb(n.dirty,`change`).replace(/^(\d+) /,`$1 uncommitted `);return[...new Set([n.current,...n.branches]).size>1?[]:[{text:t.data.branch||n.current||`current branch`,kind:`host`}],...n.dirty&&r?[{text:`With your ${a}`,kind:`flag`}]:[],...(Q.status?.recipes?.[e]??[]).filter(({when:t})=>t?.always||t?.env===i.env||i.edges.some(n=>n.from===e&&n.to===t?.calls)).map(e=>{let t=e.here?`${e.here.ok?`works on my machine`:`failed here`}, last run ${e.here.at}`:`not run here yet`;return{text:`Remembered change: ${e.why} (${t})`,title:e.file}}),...t.data.run===`ide`?[{text:`You start it; the agent only prepares it`}]:[],...t.data.run===`mock`?[{text:`A mock: its responses from the stack answer in its place`}]:[],...t.data.note?[{text:`Note: ${t.data.note}`}]:[],...Z.localLibraries(e).length?[{text:`Uses your local ${Z.localLibraries(e).join(`, `)}`}]:[]]},h={};for(let{from:e,to:t}of i.deployed)h[t]=[...h[t]??[],e];let g=Q.status?.agent?.state??`none`;this.review={title:t?`Checklist for ${o}`:`Run on ${o}`,sub:t?`You get a checklist of these steps to do yourself. The agent changes nothing.`:c?`The agent does exactly this, with your note, and asks before anything else.`:`Koppler does this as soon as you send it; the agent only steps in for what it cannot do alone.`,notices:[...u.length?[{text:`The stack has no ${o} sign-in or tunnel for ${u.map(Ub).join(`, `)}. Koppler will not use another environment's.`,kind:`prod`,act:p}]:[],...l.length&&Z.protected?[{text:`Store first, then send: ${l.join(`, `)}.`,kind:`prod`,act:p}]:[],...Z.protected?[{text:`${o}: your local code reads and writes real ${o} data.${d.length?` Running opens the ${o} ${d.length===1?`tunnel`:`tunnels`} listed below.`:``}`,kind:`prod`}]:[],...a.nothing?[{text:`Nothing to change: the board matches what is running.`}]:[],...Q.status?.live===void 0?[{text:`Koppler cannot see what is running from this page, so everything is listed as starting.`}]:[],...Q.status?.runs?.some(e=>e.state===`waiting`)?[{text:`An earlier run is still waiting for the agent. This one replaces it.`}]:[],...e?[{text:`Your note: ${e}`}]:[],...g===`none`&&(c||t)?[{text:`No agent is listening, so this waits until one is. Run /koppler-run connect in your agent session.`}]:[],...l.length&&!Z.protected?[{text:`Not stored yet, the agent will ask for it: ${l.join(`, `)}.`}]:[]],groups:[...this.#o(a,m),...Object.keys(h).length?[{verb:`deployed`,label:`Calls ${Z.protected?o:`deployed ${o}`}`,items:Object.entries(h).map(([e,t])=>{let n=Z.app(e),r=n?.cloned&&!n.outside&&n.answers;return{name:Ub(e),notes:[{text:`from ${t.map(Ub).join(`, `)}`}],...r&&{act:{label:`Run locally`,title:`Run it locally too, and point ${t.map(Ub).join(`, `)} at it`,run:()=>{Z.add(e);for(let n of t)Z.connect(n,e);this.again()}}}}})}]:[],...d.length?[{verb:`calls`,label:`Opens tunnels`,items:d.map(e=>{let t=e.apps.filter(e=>u.includes(e)),n=Q.status?.ports?.[String(e.port)]?` (already open)`:``;return{name:`${e.what} on ${e.bind}:${String(e.port)}${n}`,off:t.length>0,notes:[{text:e.host,kind:`host`},...t.length?[{text:`${s} host: the stack has no ${o} entry for ${t.map(Ub).join(`, `)}`}]:[]]}})}]:[],...f.length?[{verb:`keeps`,label:`No tunnels`,items:f.map(e=>({name:e.data.name,notes:[{text:`Only its API runs; calls through its tunnels fail`}]}))}]:[]],ok:t?`Get the checklist`:a.nothing?`Run anyway`:Z.protected?`Run on ${o}`:`Run`,prod:Z.protected,blocked:u.length>0||Z.protected&&l.length>0,confirm:()=>{let e=Object.fromEntries(Vb.map(([e])=>[e,a[e]])),n=`Set up and run this stack using the koppler-run skill.
|
|
10
|
+
`+this.#a(i)+`
|
|
11
|
+
PLAN the user confirmed on the canvas (do exactly this; check it first with koppler plan):
|
|
12
|
+
`+hs(a,{name:Ub}).map(e=>` ${e}`).join(`
|
|
13
|
+
`);Z.commit();let r=Z.saved();ao(r);let o={...i,id:Hb(),plan:e,layout:r};this.deliver(n,{tag:`koppler`,data:o},c||t?`Sent. Waiting for the agent`:`Sent. Koppler is starting it`)}}}askFacts(e,t){let n=[`Find the missing facts for this environment in the stack, using the koppler-run skill.`,`ENV ${e.toUpperCase()}`,`MISSING:`,...t.map(e=>` ${e}`),`Read each app's repo (infrastructure files such as Terraform tfvars, workflow files) and the user's local tunnel aliases. Never read or print a secret value.`,`Propose the additions (apps.<id>.envs.<env>.prereqs, .secrets with fetch steps), wait for the user to confirm, then make them with koppler stack set; never write stack.json.`].join(`
|
|
14
|
+
`),r=(Q.status?.agent?.state??`none`)===`none`;return this.deliver(n,{tag:`koppler-facts`,data:{env:e,gaps:t}},r?`Saved. The agent gets it when one connects.`:`Sent to the agent`)}askFill(e,t,n){let r=[`Fill in this app's settings in the stack from its repo, using the koppler-run skill.`,`APP ${Ub(e)} (${e})`,`EMPTY ${t.join(`, `)||`none`}`,`LOCKED ${n.join(`, `)||`none`} (never change these)`,`Read the app's repo (launch settings, package files, infrastructure, README) to find each fact; leave a field empty when it does not apply. Never read or print a secret value.`,`Propose what you would set, and why, wait for the user to confirm, then make each change with koppler stack set apps.`+e+`.<field>; never write stack.json.`].join(`
|
|
15
|
+
`),i=(Q.status?.agent?.state??`none`)===`none`;return this.deliver(r,{tag:`koppler-facts`,data:{env:Z.env,app:e,gaps:t}},i?`Saved. The agent gets it when one connects.`:`Sent to the agent`)}askToFix(e,t){let n=[`Fix this failed start, using the koppler-run skill.`,`ENV ${Z.env.toUpperCase()}`,`APP ${Ub(e)} (${e})`,`FAILED ${t}`,`Find the cause, say what you would change, and ask before you start, stop or restart anything.`].join(`
|
|
16
|
+
`),r={env:Z.env,failures:[{connection:Ub(e),result:`Failed to start`,detail:t,app:e}]},i=(Q.status?.agent?.state??`none`)===`none`;return this.deliver(n,{tag:`koppler-fix`,data:r},i?`Saved. The agent gets it when one connects.`:`Sent to the agent`)}async#l(e){let t=await io(e);return t?.ok?t.status===204?{}:await t.json().catch(()=>null):null}get started(){return(Q.status?.running??[]).filter(e=>e!==`canvas`)}get left(){let e=[...Q.status?.runs??[]].reverse().find(e=>e.state===`done`||e.state===`failed`);return e&&e.kind!==`stop`?e.changes??[]:[]}stopApps(){let e=e=>Q.status?.apps?.[e]?.running?.some(e=>e.source===`ide`),t=this.started.map(t=>({name:Z.apps.some(e=>e.id===t)?Ub(t):t.startsWith(`tunnel-`)?`Tunnel ${t.slice(7)}`:t,notes:e(t)?[{text:`Its log only; the app keeps running in your IDE`}]:[]}));this.review={title:`Stop apps, keep changes`,sub:`Koppler stops these now. Branches and code changes stay; Stop and revert undoes them later.`,notices:[],groups:[{verb:`stops`,label:`Stops`,items:t}],ok:`Stop apps`,prod:!0,blocked:!1,confirm:()=>{this.#l(`stop-apps`).then(e=>{let t=e?.stopped.length??0;e?$.show(`Stopped ${String(t)} ${t===1?`process`:`processes`}. Your changes stay until you revert.`):$.show(`Could not reach the canvas server.`,`warning`)})}}}alone(e){let t=Z.alone(e);this.start(),t&&this.review&&(this.review={...this.review,back:{label:`Back to ${t.name}`,run:()=>{Fb(t)}}})}async stopApp(e){let t=await oo(`stop-apps`,{app:e});`stopped`in t&&t.stopped.length?$.show(`Stopped ${Ub(e)}. Its changes stay until you revert.`):$.show(`Could not stop ${Ub(e)}.`,`warning`)}shutDown(){let e=[`listening`,`busy`].includes(Q.status?.agent?.state??`none`),t=Q.status?.start??`koppler canvas`;this.review={title:`Shut down Koppler`,sub:`This page stops updating until you start the canvas again.`,notices:this.started.length?[{text:`Keeps running: ${this.started.join(`, `)}. Stop and revert stops those.`}]:[],groups:[{verb:`stops`,label:`Stops`,items:[...e?[{name:`The agent listener`,notes:[{text:`The agent stops getting runs until it connects again`}]}]:[],{name:`The canvas server`,notes:[]}]}],ok:`Shut down`,prod:!0,blocked:!1,confirm:()=>{this.#l(`shutdown`).then(e=>{e?$.show(`Koppler is shut down. Start it again with ${t}.`,`message`,{label:`Copy command`,run:()=>void navigator.clipboard.writeText(t).catch(()=>void 0)}):$.show(`Could not reach the canvas server.`,`warning`)})}}}stop(){let{started:e,left:t}=this,n=e.filter(e=>!Z.app(e)),r=e.length>0;this.stopReview({title:r?`Stop and revert`:`Revert temporary changes`,sub:r?`Koppler stops what it started and undoes its temporary changes; the agent only gets what it cannot undo safely.`:`Nothing is running. Koppler undoes what the last run left behind.`,notices:[...n.length?[{text:`Also stops: ${n.join(`, `)}.`}]:[],{text:`Left alone: anything you started yourself or from your IDE, your AWS sign-ins and stored credentials.`}],stops:r,also:t.length?[{verb:`stops`,label:`Revert`,items:[...new Set(t.map(e=>e.app))].map(e=>({name:Ub(e),notes:t.filter(t=>t.app===e).map(e=>({text:`${e.title}${e.file?` (${e.file})`:``}`}))}))}]:[],ok:r?`Stop and revert`:`Revert`,text:`Stop and revert this stack using the koppler-run skill: stop every process the agent started (apps, tunnels, background tasks; leave anything started from an IDE or by me) and revert every temporary code change (do-not-commit edits and added launch profiles). Report what was stopped and reverted.`,sent:`Stopping and reverting`})}stopReview({stops:e=!0,also:t=[],text:n,sent:r,data:i={},...a}){let o=this.#r({env:Z.env,nodes:{},edges:[]});this.review={...a,groups:[...e?this.#o(o).filter(e=>e.verb===`stops`):[],...t],prod:!0,blocked:!1,confirm:()=>{this.deliver(n,{tag:`koppler-stop`,data:{action:`stop`,id:Hb(),...i}},r)}}}get idle(){return!this.#r({env:Z.env,nodes:{},edges:[]}).stops.length&&!this.started.length}confirm(){let e=this.review;this.review=null,e?.confirm()}},Kb=U(`<button class="stop svelte-byllhq" type="button" title="Stop this app; its changes stay"><!>Stop</button> <button type="button" title="Restart this app; the rest keeps running" class="svelte-byllhq"><!>Restart</button>`,1),qb=U(`<button type="button" title="Run alone: just this app and its tunnels, on a board of its own" class="svelte-byllhq"><!>Run alone</button>`),Jb=U(`<button type="button" aria-label="Show log" title="Show log" class="svelte-byllhq"><!>Log</button>`),Yb=U(`<button type="button" class="svelte-byllhq"> </button>`),Xb=U(`<a class="tool svelte-byllhq" target="_blank" rel="noopener" title="Its requests, followed across your local apps">Traces</a>`),Zb=U(`<button type="button" title="Hot reload: the app takes your code changes as it runs. Shift-click to hot restart." class="svelte-byllhq">Reload</button>`),Qb=U(`<button type="button" class="svelte-byllhq">Auto-restart</button>`),$b=U(`<span role="toolbar" tabindex="-1"><!> <!> <!> <!> <!> <!> <button type="button" title="Settings: every fact the stack has about it" class="svelte-byllhq"><!>Settings</button> <button class="remove svelte-byllhq" type="button" title="Take off the board">Remove</button></span>`),ex=U(`<span class="live svelte-byllhq" role="img"></span>`),tx=U(`<span class="watch svelte-byllhq" role="img" aria-label="Auto-restart" title="Restarts when its files change"><!></span>`),nx=U(`<span class="svelte-byllhq"> </span>`),rx=U(`<span title="It is taken off its queues and keeps the deployed ones" class="svelte-byllhq">No queues</span>`),ix=U(`<span class="off svelte-byllhq" title="Only the API runs; calls through its tunnels fail">No tunnels</span>`),ax=U(`<p class="glance svelte-byllhq"><span class="svelte-byllhq"> </span> <!> <!> <!></p>`),ox=U(`<p class="where nodrag svelte-byllhq"> </p>`),sx=U(`<i class="svelte-byllhq"></i>`),cx=U(`<p class="why nodrag svelte-byllhq"> </p>`),lx=U(`<span class="detail svelte-byllhq"> </span>`),ux=U(`<li class="step svelte-byllhq"><span class="mark svelte-byllhq" aria-hidden="true"><!></span> <span class="what svelte-byllhq"> </span> <!> <!></li>`),dx=U(`<ul class="steps nodrag nopan svelte-byllhq"></ul>`),fx=U(`<button class="progress nodrag svelte-byllhq" type="button"><span class="marks svelte-byllhq"></span> <span class="text svelte-byllhq"> </span> <span class="chev svelte-byllhq"> </span></button> <!> <!>`,1),px=U(`<div class="acts nodrag svelte-byllhq"><button class="act fix svelte-byllhq" type="button"> </button></div>`),mx=U(`<button class="chip svelte-byllhq" type="button"> </button>`),hx=U(`<div class="calls nodrag nopan svelte-byllhq"><span class="calls-label svelte-byllhq"> </span> <!></div>`),gx=U(`<button title="Drag a cable to an app this one should call locally" tabindex="-1"></button>`),_x=U(`<!> <article><header class="svelte-byllhq"><span class="grip svelte-byllhq" aria-hidden="true" title="Drag to move"><!></span> <!> <span class="name svelte-byllhq"> </span> <!> <span class="kind svelte-byllhq"> </span></header> <!> <!> <!> <!> <!> <!> <!></article>`,1);function vx(e,t){A(t,!0);let n=N(!1),r,i=()=>{clearTimeout(r),P(n,!0)},a=()=>{r=setTimeout(()=>P(n,!1),250)},o=M(()=>B(n)||t.selected),s=[`top`,`right`,`bottom`,`left`],c=oy(),l=M(()=>c.current.zoom<Is),u=M(()=>B(l)||Z.live),d=N(0),f=N(0);Fn(()=>{!B(u)&&B(d)&&P(f,B(d),!0)});let p=M(()=>Z.app(t.id)),m=M(()=>B(p)?.current||`current branch`),h=M(()=>Z.tunnelsOf(t.id)),g=M(()=>Z.queuesOf(t.id)),_=M(()=>B(g).length>0&&!t.data.showQueues),y=M(()=>Z.deployedCalls(t.id)),b=e=>{let[n,...r]=e.split(` `);return r.length&&n===t.data.name.split(` `)[0]?r.join(` `):e},x=M(()=>!!B(p)?.platforms.length&&t.data.run===`cli`),S=M(()=>B(p)?.platforms.find(([e])=>e===t.data.platform)?.[1]),C=M(()=>t.data.run===`ide`?`Started by you`:t.data.run===`mock`?`Mock`:B(x)?B(S):void 0),w=M(()=>Q.up(t.id)),T=M(()=>Q.where(t.id)),ee=M(()=>Q.state(t.id)),te=async e=>{let n=await oo(`reload`,{app:t.id,restart:e});`error`in n?$.show(n.error,`warning`):$.show(`${n.said}.`)},E=M(()=>Q.stateSaid(t.id)),ne=M(()=>Q.steps(t.id)),D=M(()=>B(ne).length?Ys(B(ne)):[`todo`,``]),re=M(()=>v(B(D),2)),ie=M(()=>B(re)[0]),ae=M(()=>B(re)[1]),oe=M(()=>B(ne).find(e=>e.state===`failed`)),se=N(!1),ce=N(!1),le=e=>Z.ends.onPort.some(n=>n.id===t.id&&n.side===e);var ue=_x(),de=I(ue);{let e=M(()=>B(o)&&!t.dragging);ay(de,{get isVisible(){return B(e)},get position(){return um.Top},align:`start`,offset:8,children:(e,n)=>{var r=$b();let o;var s=F(r),c=e=>{var n=Kb(),r=I(n);Ua(F(r),{get of(){return $y},size:14}),Ae(),k(r);var i=R(r,2);Ua(F(i),{get of(){return Zy},size:14}),Ae(),k(i),z(()=>{Y(r,`aria-label`,`Stop ${t.data.name??``}`),Y(i,`aria-label`,`Restart ${t.data.name??``}`)}),H(`click`,r,()=>void Gb.stopApp(t.id)),H(`click`,i,()=>{Gb.start({restart:t.id})}),W(e,n)},l=M(()=>Gb.started.includes(t.id)),u=e=>{var n=qb();Ua(F(n),{get of(){return Yy},size:14}),Ae(),k(n),z(()=>Y(n,`aria-label`,`Run ${t.data.name??``} alone`)),H(`click`,n,()=>{Gb.alone(t.id)}),W(e,n)};K(s,e=>{B(l)?e(c):e(u,-1)});var d=R(s,2),f=e=>{var n=Jb();Ua(F(n),{get of(){return qy},size:14}),Ae(),k(n),H(`click`,n,()=>{Nb.open(t.id)}),W(e,n)},m=M(()=>Q.hasLog(t.id));K(d,e=>{B(m)&&e(f)});var h=R(d,2);q(h,17,()=>Z.commandsOf(t.id),([e,t])=>e,(e,n)=>{var r=M(()=>v(B(n),2));let i=()=>B(r)[0],a=()=>B(r)[1],o=M(()=>({app:t.id,appName:t.data.name,key:i(),command:a()}));var s=Yb(),c=L(s,!0);z(()=>{Y(s,`aria-label`,`${a().label??``} on ${t.data.name??``}`),Y(s,`title`,a().confirm?`${a().label}: ${a().confirm}`:a().label),G(c,a().label)}),H(`click`,s,()=>{a().confirm||a().args?.length?Bb.command?.open(B(o)):ec(B(o)).then(e=>{e&&$.show(e,`warning`)})}),W(e,s)});var g=R(h,2),_=e=>{var n=Xb();z(e=>{Y(n,`href`,`${Q.status.traces.view??``}?service=${e??``}`),Y(n,`aria-label`,`Traces of ${t.data.name??``}`)},[()=>encodeURIComponent(t.id)]),W(e,n)},y=M(()=>Q.status?.traces?.state===`on`&&Q.sent(t.id));K(g,e=>{B(y)&&e(_)});var b=R(g,2),x=e=>{var n=Zb();z(()=>Y(n,`aria-label`,`Hot reload ${t.data.name??``}`)),H(`click`,n,e=>void te(e.shiftKey)),W(e,n)};K(b,e=>{B(p)?.kind===`flutter`&&t.data.run===`cli`&&B(w)&&e(x)});var S=R(b,2),C=e=>{var n=Qb();z(()=>{Y(n,`aria-pressed`,!!t.data.watch),Y(n,`aria-label`,`Auto-restart for ${t.data.name??``}`),Y(n,`title`,t.data.watch?`Auto-restart is on: Koppler starts it again whenever a file in its clone changes. Click to turn it off.`:`Auto-restart: start it again whenever a file in its clone changes`)}),H(`click`,n,()=>{Z.set(t.id,{watch:!t.data.watch})}),W(e,n)};K(S,e=>{t.data.run===`cli`&&e(C)});var T=R(S,2);Ua(F(T),{get of(){return pc},size:14}),Ae(),k(T);var ee=R(T,2);k(r),z(()=>{o=J(r,1,`tools nodrag svelte-byllhq`,null,o,{reading:Z.live}),Y(r,`data-card`,t.id),Y(r,`aria-label`,`${t.data.name??``} actions`),Y(T,`aria-label`,`Settings for ${t.data.name??``}`),Y(ee,`aria-label`,`Remove ${t.data.name??``}`)}),V(`pointerenter`,r,i),V(`pointerleave`,r,a),H(`click`,T,()=>void Bb.settings?.open({title:t.data.name,path:`apps.${t.id}`})),H(`click`,ee,()=>{Z.remove(t.id)}),W(e,r)},$$slots:{default:!0}})}var fe=R(de,2);let pe,me;var he=F(fe),ge=F(he);Ua(F(ge),{get of(){return tb},size:14}),k(ge);var _e=R(ge,2),ve=e=>{var n=ex();z(e=>{Y(n,`data-on`,B(w)),Y(n,`data-state`,B(ee)?.state),Y(n,`aria-label`,B(ee)?qs[B(ee).state]:B(w)?`Running`:`Not answering`),Y(n,`title`,e)},[()=>B(E)||Q.about(t.id)]),W(e,n)};K(_e,e=>{(B(w)!==null||B(ee))&&e(ve)});var ye=R(_e,2),be=L(ye,!0),xe=R(ye,2),Se=e=>{var t=tx();Ua(F(t),{get of(){return Uy},size:12}),k(t),W(e,t)};K(xe,e=>{t.data.watch&&t.data.run===`cli`&&e(Se)});var Ce=L(R(xe,2),!0);k(he);var we=R(he,2),Te=e=>{var n=ax(),r=F(n),i=L(r,!0),a=R(r,2),o=e=>{var t=nx(),n=L(t,!0);z(()=>G(n,B(C))),W(e,t)};K(a,e=>{B(C)&&e(o)});var s=R(a,2),c=e=>{W(e,rx())};K(s,e=>{B(_)&&e(c)});var l=R(s,2),u=e=>{W(e,ix())};K(l,e=>{t.data.hideTunnels&&B(h).length&&e(u)}),k(n),z(()=>{Y(r,`title`,`Branch: ${(t.data.branch||B(m))??``}`),G(i,t.data.branch||B(m))}),W(e,n)},O=e=>{Eb(e,{get id(){return t.id}})};K(we,e=>{B(u)?e(Te):e(O,-1)});var Ee=R(we,2),De=e=>{var t=ox(),n=L(t,!0);z(()=>{Y(t,`data-on`,B(w)??`other`),G(n,B(T))}),W(e,t)},Oe=e=>{var t=ox(),n=L(t,!0);z(()=>{Y(t,`data-state`,B(ee)?.state),G(n,B(E))}),W(e,t)};K(Ee,e=>{B(T)?e(De):B(E)&&e(Oe,1)});var ke=R(Ee,2),je=e=>{var t=fx(),n=I(t),r=F(n);q(r,21,()=>B(ne),Ti,(e,t)=>{var n=sx();z(()=>{Y(n,`data-state`,B(t).state),Y(n,`title`,B(t).label)}),W(e,n)}),k(r);var i=R(r,2),a=L(i,!0),o=L(R(i,2),!0);k(n);var s=R(n,2),c=e=>{var t=cx(),n=L(t,!0);z(()=>G(n,B(oe).detail)),W(e,t)};K(s,e=>{B(oe)?.detail&&!B(se)&&e(c)});var l=R(s,2),u=e=>{var t=dx();q(t,21,()=>B(ne),Ti,(e,t)=>{var n=ux(),r=F(n),i=F(r),a=e=>{Ua(e,{get of(){return Gy},size:11})},o=e=>{W(e,oi(`!`))};K(i,e=>{B(t).state===`done`?e(a):B(t).state===`failed`&&e(o,1)}),k(r);var s=R(r,2),c=L(s,!0),l=R(s,2),u=e=>{var n=lx(),r=L(n,!0);z(()=>G(r,B(t).detail)),W(e,n)};K(l,e=>{B(t).detail&&e(u)});var d=R(l,2),f=e=>{gc(e,{get command(){return B(t).copy}})};K(d,e=>{B(t).copy&&e(f)}),k(n),z(()=>{Y(n,`data-state`,B(t).state),G(c,B(t).label)}),W(e,n)}),k(t),W(e,t)};K(l,e=>{B(se)&&e(u)}),z(()=>{Y(n,`data-tone`,B(ie)),Y(n,`aria-expanded`,B(se)),G(a,B(ae)),G(o,B(se)?`Hide`:`Details`)}),H(`click`,n,()=>P(se,!B(se))),W(e,t)};K(ke,e=>{B(ne).length&&e(je)});var Me=R(ke,2),Ne=e=>{var n=px(),r=F(n),i=L(r,!0);k(n),z(()=>{r.disabled=B(ce),G(i,B(ce)?`Sent to the agent`:`Ask the agent to fix`)}),H(`click`,r,async()=>{P(ce,await Gb.askToFix(t.id,`${B(oe).label}${B(oe).detail?`: ${B(oe).detail}`:``}`),!0)}),W(e,n)};K(Me,e=>{B(oe)&&e(Ne)});var Pe=R(Me,2),Fe=e=>{var n=hx(),r=F(n),i=L(r);q(R(r,2),17,()=>B(y),e=>e.id,(e,n)=>{let r=M(()=>Z.cards.some(e=>e.id===B(n).id)),i=M(()=>B(r)||B(n).cloned);var a=mx(),o=L(a,!0);z((e,t)=>{a.disabled=!B(i),Y(a,`title`,`${B(n).name??``} stays on deployed ${e??``}.${B(i)?` Click to ${B(r)?`wire it to your local copy`:`run it locally too and wire it`}.`:` It is not cloned on this Mac.`}`),G(o,t)},[()=>Z.env.toUpperCase(),()=>b(B(n).name)]),H(`click`,a,()=>{Z.callLocally(t.id,B(n).id)}),W(e,a)}),k(n),z(e=>G(i,`Calls ${e??``}`),[()=>Z.env.toUpperCase()]),W(e,n)};K(Pe,e=>{B(y).length&&e(Fe)});var Ie=R(Pe,2);Hg(Ie,{type:`source`,get position(){return um.Top},isConnectable:!1,class:`anchor`}),q(R(Ie,2),16,()=>s,e=>e,(e,n)=>{var r=gx();let i;z(e=>{i=J(r,1,`port ${n??``} nodrag nopan`,`svelte-byllhq`,i,{on:e}),Y(r,`aria-label`,`Draw a cable from the ${n??``} of ${t.data.name??``}`)},[()=>le(n)]),H(`pointerdown`,r,e=>{e.button===0&&(e.stopPropagation(),Ob.start(t.id,n))}),W(e,r)}),k(fe),z((e,n)=>{pe=J(fe,1,`card kind-${t.data.kind??``}`,`svelte-byllhq`,pe,{selected:t.selected,dimmed:e,short:B(u),far:B(l),reading:Z.live,"drop-ok":Ob.drop?.id===t.id&&Ob.drop.ok,"drop-bad":Ob.drop?.id===t.id&&!Ob.drop.ok,wiring:!!Ob.draft}),me=Ji(fe,``,me,{width:n}),Y(ye,`title`,t.data.name),G(be,t.data.name),G(Ce,t.data.kindLabel)},[()=>Z.dimmed(t.id),()=>B(u)&&B(f)?`${String(B(f))}px`:void 0]),V(`pointerenter`,fe,i),V(`pointerleave`,fe,a),Oa(fe,`offsetWidth`,e=>P(d,e)),W(e,ue),j()}Xr([`click`,`pointerdown`]);var yx=ai(`<g class="cut nodrag svelte-1f6oz0q" role="button" tabindex="-1"><circle r="8" class="svelte-1f6oz0q"></circle><path d="M-3,-3 L3,3 M3,-3 L-3,3" class="svelte-1f6oz0q"></path></g>`),bx=ai(`<g role="presentation"><title> </title><path class="svelte-flow__edge-interaction hit svelte-1f6oz0q"></path><path class="under svelte-1f6oz0q"></path><path class="wire svelte-1f6oz0q"></path><path class="head svelte-1f6oz0q" d="M-10,-5 L0,0 L-10,5 L-7.5,0 Z"></path><!></g>`);function xx(e,t){A(t,!0);let n=oy(),r=M(()=>Math.max(1,1/n.current.zoom)),i=M(()=>t.data),a=M(()=>Z.edges.findIndex(e=>e.id===t.id)),o=M(()=>Ob.endPoint(B(a),`from`)),s=M(()=>Ob.endPoint(B(a),`to`)),c=M(()=>!B(o)||!B(s)||!B(i)?``:B(i).points?.length?Po(B(o),B(i).fromSide,B(s),B(i).toSide,B(i).points):No(B(o),B(i).fromSide,B(s),B(i).toSide)),l=M(()=>{if(!B(s)||!B(i))return``;let[e,t]=Eo[B(i).toSide];return`translate(${String(B(s).x+e*10)} ${String(B(s).y+t*10)}) rotate(${String(Math.atan2(-t,-e)*180/Math.PI)})`}),u=Z.nameOf,d=M(()=>{if(!B(c)||Z.hovered!==t.id&&!t.selected||Z.live)return``;let e=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);e.setAttribute(`d`,B(c));let n=e.getPointAtLength(e.getTotalLength()/2);return`translate(${String(n.x)} ${String(n.y)}) scale(${String(B(r))})`});var f=si(),p=I(f),m=e=>{var n=bx();let i;var a=F(n),o=L(a),s=R(a);let f;var p=R(s),m=R(p),h=R(m),g=R(h),_=e=>{var n=yx();z((e,t)=>{Y(n,`transform`,B(d)),Y(n,`aria-label`,`Unplug ${e??``} from ${t??``}`)},[()=>u(t.source),()=>u(t.target)]),H(`click`,n,e=>{e.stopPropagation(),Z.cut(t.source,t.target)}),H(`keydown`,n,e=>{(e.key===`Enter`||e.key===` `)&&Z.cut(t.source,t.target)}),W(e,n)};K(g,e=>{B(d)&&e(_)}),k(n),z((e,t,a,u,d,g)=>{i=J(n,0,`svelte-1f6oz0q`,null,i,{idle:e,dimmed:t,lit:a,snapped:u}),G(o,`${d??``} calls local ${g??``}. Click to pick it; the × in its middle unplugs it.`),Y(s,`d`,B(c)),f=Ji(s,``,f,{"stroke-width":`${16*B(r)}px`}),Y(p,`d`,B(c)),Y(m,`d`,B(c)),Y(h,`transform`,B(l))},[()=>!Q.up(t.source)||!Q.up(t.target),()=>Z.dimmedLink(t.source,t.target),()=>Z.lit(t.source,t.target),()=>Z.snapped.includes(t.id),()=>u(t.source),()=>u(t.target)]),V(`pointerenter`,n,()=>Z.hovered=t.id),V(`pointerleave`,n,()=>Z.hovered=null),W(e,n)};K(p,e=>{B(c)&&e(m)}),W(e,f),j()}Xr([`click`,`keydown`]);var Sx=U(`<span class="led"></span>`),Cx=U(`<button class="nodrag svelte-1dgo2s3" type="button"><!></button>`),wx=U(`<div class="body svelte-1dgo2s3"><!></div>`),Tx=U(`<button class="link nodrag svelte-1dgo2s3" type="button"> </button>`),Ex=U(`<p class="foot svelte-1dgo2s3"><span> </span> <!></p>`),Dx=U(`<div><span class="head svelte-1dgo2s3"><!> <span class="name svelte-1dgo2s3"> </span> <!> <span class="tag svelte-1dgo2s3"> </span> <span class="acts svelte-1dgo2s3"></span></span> <!> <!></div>`);function Ox(e,t){A(t,!0);let n=X(t,`dotTitle`,3,``),r=X(t,`hasDot`,3,!1),i=X(t,`status`,3,``),a=X(t,`title`,3,``),o=X(t,`selected`,3,!1);var s=Dx();let c;var l=F(s),u=F(l),d=e=>{var r=Sx();z(()=>{Y(r,`data-state`,t.dot?`running`:t.dot===!1?`failed`:void 0),Y(r,`title`,n())}),W(e,r)};K(u,e=>{r()&&e(d)});var p=R(u,2),m=L(p,!0),h=R(p,2);Pi(h,()=>t.flag??f);var g=R(h,2),_=L(g,!0),v=R(g,2);q(v,21,()=>t.actions,e=>e.label,(e,t)=>{var n=Cx(),r=F(n),i=e=>{mc(e,{size:16})},a=e=>{Ua(e,{get of(){return B(t).icon},size:16})};K(r,e=>{B(t).icon===`cog`?e(i):e(a,-1)}),k(n),z(()=>{Y(n,`aria-label`,B(t).label),Y(n,`title`,B(t).title)}),H(`click`,n,()=>{B(t).run()}),W(e,n)}),k(v),k(l);var y=R(l,2),b=e=>{var n=wx();Pi(F(n),()=>t.children),k(n),W(e,n)};K(y,e=>{t.children&&e(b)});var x=R(y,2),S=e=>{var n=Ex(),r=F(n),a=L(r,!0),o=R(r,2),s=e=>{var n=Tx(),r=L(n,!0);z(()=>{Y(n,`aria-label`,t.act.label),Y(n,`title`,t.act.title),G(r,t.act.word)}),H(`click`,n,()=>{t.act.run()}),W(e,n)};K(o,e=>{t.act&&e(s)}),k(n),z(()=>G(a,i())),W(e,n)};K(x,e=>{i()&&e(S)}),k(s),z(e=>{c=J(s,1,`infra ${t.kind??``}`,`svelte-1dgo2s3`,c,{selected:o(),dimmed:e}),Y(s,`title`,a()),G(m,t.name),G(_,t.tag)},[()=>Z.dimmed(t.id)]),W(e,s),j()}Xr([`click`]);var kx=U(`<span class="where svelte-o6r0zw"> </span>`);function Ax(e,t){A(t,!0);{let n=M(()=>t.data.about.join(`
|
|
17
|
+
`)),r=M(()=>[{label:`Settings for ${t.data.name}`,title:`Settings: its addresses, and the apps it calls`,icon:`cog`,run:()=>void Bb.settings?.open({title:t.data.name,path:`apps.${t.id.slice(8)}`})},{label:`Hide ${t.data.name}`,title:`Take it off the board. Bring it back from the list of apps.`,icon:to,run:()=>{Z.showOutside(t.id.slice(8),!1)}}]);Ox(e,{get id(){return t.id},kind:`outside`,get name(){return t.data.name},tag:`Outside`,get title(){return B(n)},get selected(){return t.selected},get actions(){return B(r)},children:(e,n)=>{var r=kx(),i=L(r,!0);z(()=>G(i,t.data.where)),W(e,r)},$$slots:{default:!0}})}j()}var jx=new Set([`$$slots`,`$$events`,`$$legacy`]);function Mx(e,t){let n=La(t,jx),r={name:`triangle-alert`,size:24,node:[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`}],[`path`,{d:`M12 9v4`}],[`path`,{d:`M12 17h.01`}]],aliases:[`alert-triangle`]};$a(e,za(()=>n,{get icon(){return r}}))}var Nx=U(`<span class="warn svelte-1jmpek8" role="img"><!></span>`),Px=U(`<span class="label">Messages go to</span> <span role="radiogroup"><label class="svelte-1jmpek8"><input type="radio"/>Deployed</label> <label class="svelte-1jmpek8"><input type="radio" class="svelte-1jmpek8"/>Local</label></span>`,1);function Fx(e,t){A(t,!0);let n=M(()=>Z.env.toUpperCase()),r=oy(),i=M(()=>r.current.zoom<Is);{let r=e=>{var n=si(),r=I(n),a=e=>{var n=Nx();Ua(F(n),{get of(){return Mx},size:13}),k(n),z(e=>{Y(n,`aria-label`,t.data.shares),Y(n,`title`,e)},[()=>t.data.about.slice(1).join(`
|
|
18
|
+
`)]),W(e,n)};K(r,e=>{t.data.shares&&!B(i)&&e(a)}),W(e,n)},a=M(()=>t.data.upstream?`Stays deployed`:t.data.local?`Runs on your Mac`:`Uses the deployed queue`),o=M(()=>t.data.about.join(`
|
|
19
|
+
`)),s=M(()=>[{label:`Settings for ${t.data.name}`,title:`Settings: the queue's name and its queue on each environment`,icon:`cog`,run:()=>void Bb.settings?.open({title:t.data.name,path:`queues.${t.data.queue}`})},{label:`Hide ${t.data.name}`,title:`Hide this queue: its apps use the deployed one. Bring it back from Queues on an app's card.`,icon:to,run:()=>{Z.showQueues([t.data.queue],!1)}}]);Ox(e,{get id(){return t.id},kind:`queue`,get name(){return t.data.name},get tag(){return t.data.kind},get status(){return B(a)},get title(){return B(o)},get selected(){return t.selected},get actions(){return B(s)},flag:r,children:(e,r)=>{var i=si(),a=I(i),o=e=>{var r=Px(),i=R(I(r),2);let a;var o=F(i),s=F(o);fa(s),Ae(),k(o);var c=R(o,2),l=F(c);fa(l),Ae(),k(c),k(i),z(()=>{a=J(i,1,`seg nodrag svelte-1jmpek8`,null,a,{local:t.data.local}),Y(i,`aria-label`,`Which ${t.data.name??``} its apps use`),Y(o,`title`,`The ${B(n)??``} queue`),Y(s,`name`,`queue-${t.data.queue??``}`),ma(s,!t.data.local),Y(c,`aria-disabled`,!t.data.can),Y(c,`title`,t.data.can?`Koppler runs it on your Mac and points its apps at it`:`Koppler cannot run a ${t.data.kind} queue locally yet`),Y(l,`name`,`queue-${t.data.queue??``}`),ma(l,t.data.local),l.disabled=!t.data.can}),H(`change`,s,()=>{Z.setQueue(t.data.queue,!1)}),H(`change`,l,()=>{Z.setQueue(t.data.queue,!0)}),W(e,r)};K(a,e=>{t.data.upstream||e(o)}),W(e,i)},$$slots:{flag:!0,default:!0}})}j()}Xr([`change`]);var Ix=U(`<span class="label">Local port</span> <span> </span> <span class="label">Goes to</span> <span class="host svelte-s23l4l"> </span>`,1);function Lx(e,t){A(t,!0);let n=M(()=>t.data.local.split(`:`).at(-1)??``),r=M(()=>Q.tunnel(B(n),t.data.apps)),i=async()=>{let e=await oo(`restart-tunnel`,{port:Number(B(n))});`error`in e?$.show(e.error,`warning`):$.show(`The ${t.data.what} tunnel started again.`)},a=M(()=>[{label:`Settings for the ${t.data.what} tunnel`,title:`Settings: the host, its port and how it is opened`,icon:`cog`,run:()=>void Bb.settings?.open({title:`${t.data.what} tunnel`,path:t.data.settings})},{label:`Run without this tunnel`,title:`Turn it off: the tunnel is not opened, so calls to it fail. Turn Tunnels back on on the app's card to bring it back.`,icon:to,run:()=>{Z.hideTunnel(t.id)}}]);{let n=M(()=>B(r)?`Tunnel is up`:B(r)===!1?`Nothing is listening on this port`:`Not running`),o=M(()=>B(r)?`Connected`:B(r)===!1?`Nothing is listening`:`Not running`),s=M(()=>[t.data.host,...t.data.about].join(`
|
|
20
|
+
`)),c=M(()=>B(r)===void 0?void 0:{label:`Restart the ${t.data.what} tunnel`,word:`Reconnect`,title:`Close the tunnel and open it again, for when calls through it hang or fail`,icon:Uy,run:()=>void i()});Ox(e,{get id(){return t.id},kind:`tunnel`,get name(){return t.data.what},tag:`Tunnel`,hasDot:!0,get dot(){return B(r)},get dotTitle(){return B(n)},get status(){return B(o)},get title(){return B(s)},get selected(){return t.selected},get actions(){return B(a)},get act(){return B(c)},children:(e,n)=>{var r=Ix(),i=R(I(r),2);let a;var o=L(i,!0),s=L(R(i,4),!0);z(()=>{a=J(i,1,`well svelte-s23l4l`,null,a,{moved:t.data.moved}),G(o,t.data.local),G(s,t.data.host)}),W(e,r)},$$slots:{default:!0}})}j()}var Rx=new class{#e=N(!1);get canUndo(){return B(this.#e)}set canUndo(e){P(this.#e,e,!0)}#t=N(!1);get canRedo(){return B(this.#t)}set canRedo(e){P(this.#t,e,!0)}#n=[];#r=[];#i=``;#a=0;record(){if(Z.live)return;let e=Z.content();e!==this.#i&&(this.#i&&Date.now()-this.#a>700&&this.#n.push(this.#i),this.#i&&(this.#r=[]),this.#i=e,this.#a=Date.now(),this.canUndo=this.#n.length>0,this.canRedo=!1)}adopt(){Z.live||(this.#i=Z.content())}#o(e,t){let n=e.pop();n!==void 0&&(t.push(this.#i),this.#i=n,this.#a=0,Z.setContent(n),this.canUndo=this.#n.length>0,this.canRedo=this.#r.length>0)}undo(){this.#o(this.#n,this.#r)}redo(){this.#o(this.#r,this.#n)}},zx={ok:!1,unsure:!0,text:`Cannot test`,detail:`Testing needs the Koppler canvas running (koppler canvas).`},Bx=new class{#e=N(fn({}));get results(){return B(this.#e)}set results(e){P(this.#e,e,!0)}#t=new Set;#n=new Map;async test({key:e,payload:t},n=!1){if(this.results[e]?.state===`busy`&&this.results[e].text!==`Starting`)return;let r=`node`in t?t.node:`to`in t?t.to:null;if(r&&Q.sent(r)&&Q.status?.running?.includes(r)&&!Q.up(r)){let i=`${Z.nameOf(r)} is starting. Koppler checks again once it answers.`;this.results[e]={state:`busy`,text:`Starting`,detail:i},this.#n.set(e,{target:r,payload:t}),n||$.show(i);return}this.results[e]={state:`busy`};let i=await io(`cable-test`,{env:Z.env,...t,...n&&{auto:!0}}),a=i?.ok?await i.json().catch(()=>zx):zx;this.results[e]={state:a.unsure?`warn`:a.ok?`ok`:`bad`,text:a.text,detail:a.detail},!n&&(!a.ok||a.unsure)&&$.show(a.detail,`warning`)}forget(e){this.results=Object.fromEntries(Object.entries(this.results).filter(([t])=>!e.includes(t)))}follow(e){let t=Q.status?.running??[];for(let[e,{target:n,payload:r}]of this.#n)(!t.includes(n)||Q.up(n))&&(this.#n.delete(e),this.results[e]?.text===`Starting`&&this.test({key:e,payload:r},!0));for(let t of e)t.apps.every(e=>Q.sent(e)&&Q.up(e))?this.#t.has(t.key)||(this.#t.add(t.key),this.test(t,!0)):this.#t.delete(t.key)&&(this.results=Object.fromEntries(Object.entries(this.results).filter(([e])=>e!==t.key)))}},Vx=U(`<div class="views svelte-ibqofz" role="radiogroup" aria-label="Board view" title="Edit (E): set up apps and cables. Live (L): what is running, large enough to read at a glance."><label class="svelte-ibqofz"><input type="radio" name="view" class="svelte-ibqofz"/>Edit</label> <label class="svelte-ibqofz"><input type="radio" name="view" class="svelte-ibqofz"/>Live</label></div>`),Hx=U(`<button class="tool svelte-ibqofz" type="button" role="radio"><!></button>`),Ux=U(`<button class="clear svelte-ibqofz" title="Remove every card from this board. Undo brings them back.">Clear</button>`),Wx=U(`<div class="tools svelte-ibqofz" role="toolbar" aria-label="Board"><div class="switch svelte-ibqofz" role="radiogroup" aria-label="Dragging on the board"></div> <button class="tool svelte-ibqofz" type="button" aria-label="Undo" title="Undo (Ctrl+Z or Cmd+Z)"><!></button> <button class="tool svelte-ibqofz" type="button" aria-label="Redo" title="Redo (Shift+Ctrl+Z or Shift+Cmd+Z)"><!></button> <button aria-label="Arrange" title="Arrange cards by who calls whom, callers on top" class="svelte-ibqofz"><!></button> <button aria-label="Fit" title="Zoom to fit all apps (F)" class="svelte-ibqofz"><!></button> <div class="zoom svelte-ibqofz" role="group" aria-label="Zoom"><button aria-label="Zoom out" title="Zoom out" class="svelte-ibqofz"><!></button> <button class="percent svelte-ibqofz" title="Reset to 100%"> </button> <button aria-label="Zoom in" title="Zoom in" class="svelte-ibqofz"><!></button></div> <button class="tool svelte-ibqofz" type="button"><!></button> <!></div>`),Gx=ai(`<path></path>`),Kx=ai(`<text class="via svelte-ibqofz"> </text>`),qx=ai(`<g><path class="under svelte-ibqofz"></path><path class="wire svelte-ibqofz"></path><circle class="socket svelte-ibqofz" r="5"></circle><circle class="plug svelte-ibqofz" r="5"></circle><!></g>`),Jx=ai(`<svg class="links svelte-ibqofz" aria-hidden="true"><!><!></svg>`),Yx=ai(`<circle role="presentation" r="5"></circle>`),Xx=ai(`<title class="svelte-ibqofz"> </title>`),Zx=ai(`<circle r="7"><!></circle><circle class="light svelte-ibqofz" r="3.4"></circle>`,1),Qx=ai(`<!><!>`,1),$x=ai(`<circle role="button" tabindex="0" class="socket tested press nodrag nopan svelte-ibqofz" r="7"><title class="svelte-ibqofz"> </title></circle><circle class="light svelte-ibqofz" r="3.4"></circle>`,1),eS=ai(`<path class="draft svelte-ibqofz"></path>`),tS=ai(`<svg role="group" aria-label="Cable ends"><!><!><!></svg>`),nS=U(`<!> <!> <!> <!> <!> <!>`,1),rS=U(`<li class="svelte-ibqofz"><button type="button" class="svelte-ibqofz"><span class="name svelte-ibqofz"> </span> <span class="meta svelte-ibqofz"> </span></button></li>`),iS=U(`<ul aria-label="Or open a board" class="svelte-ibqofz"></ul>`),aS=U(`<div class="empty svelte-ibqofz"><p class="svelte-ibqofz">Click the apps you want to run together.<br/>Connect them; the board is saved as you go.</p> <!></div>`),oS=U(`<div class="area svelte-ibqofz" role="presentation"><!> <!></div>`);function sS(e,t){A(t,!0);let n=_v();Z.toFlow=e=>n.screenToFlowPosition(e,{snapToGrid:!1}),Z.zoom=()=>n.getZoom();let r=oy(),i=0,a=null,o=M(()=>Z.panelCard?.id),s=e=>{let{x:t,y:r,zoom:a}=n.getViewport(),o=Z.panelCard?.id;if(!o){i&&n.setViewport({x:t+i,y:r,zoom:a}),i=0;return}if(i||e)return;let s=B(c)?.querySelector(`.svelte-flow__node[data-id="${CSS.escape(o)}"]`)?.getBoundingClientRect();!s||s.right<=Z.area().right||(n.setViewport({x:t-300,y:r,zoom:a}),i=300)};Fn(()=>{if(B(o)===void 0&&!i)return;let e=a;e?window.addEventListener(`pointerup`,t=>setTimeout(()=>{s(Math.hypot(t.clientX-e.x,t.clientY-e.y)>4)}),{once:!0}):setTimeout(()=>{s(!1)})});let c=N(void 0);Z.area=()=>B(c)?.getBoundingClientRect()??new DOMRect,Z.show=e=>{Z.pick(e);let t=n.getZoom();n.fitView({nodes:[{id:e}],minZoom:t,maxZoom:t,duration:200})};let l={padding:.15,duration:200,maxZoom:1},u={w:260,h:160},d=e=>()=>void n.setZoom(n.getZoom()*e,{duration:150}),f=M(()=>[...Z.team.map(e=>({preset:e,team:!0})),...Z.own.map(e=>({preset:e,team:!1}))].map((e,t)=>({...e,index:t,at:Z.recent.find(t=>t.name===e.preset.name)?.at??``})).sort((e,t)=>e.at===t.at?e.index-t.index:e.at>t.at?-1:1).slice(0,6)),p={x:0,y:0};Fn(()=>{Bx.follow(B(ie))});let m=M(()=>{let e=Ob.draft;return e?e.points.length?Po(e.a,e.side,e.b,e.bSide,e.points):No(e.a,e.side,e.b,e.bSide):``}),h=N(`select`),g=N(!1),_=M(()=>B(h)===`hand`||B(g)),y=e=>{e.code!==`Space`||e.target.closest(`input, select, textarea, button`)||P(g,e.type===`keydown`)},b=[[`select`,`Select (V): drag on the board to select an area`,wy],[`hand`,`Hand (H): drag to move around. Or hold Space while dragging`,my]],x={Shift:`shiftKey`,Meta:`metaKey`,Control:`ctrlKey`,Alt:`altKey`},S={Shift:!1,Meta:!1,Control:!1,Alt:!1},C=e=>{e.key in x&&(S[e.key]=e.type===`keydown`)},w=e=>{let t=Object.keys(x);if(!t.every(t=>!S[t]||e[x[t]])){for(let e of t)S[e]=!1;window.dispatchEvent(new Event(`blur`))}},T=e=>{if(e.altKey||e.target.closest(`input, select, textarea`)||document.querySelector(`dialog[open], :popover-open`))return;let t=e.key.toLowerCase();if(e.metaKey||e.ctrlKey){if(t===`a`&&!Z.live){e.preventDefault(),Z.selectAll();return}if(t!==`z`)return;e.preventDefault(),e.shiftKey?Rx.redo():Rx.undo()}else t===`f`?de():t===`p`||t===`escape`&&Z.present?ue():t===`e`?Z.goEdit():t===`l`?Z.goLive():e.key===`v`||e.key===`V`?P(h,`select`):(e.key===`h`||e.key===`H`)&&P(h,`hand`)},ee=Z.view?{initialViewport:Z.view}:Z.nodes.length?{fitView:!0,fitViewOptions:l}:{},te=!1;Fn(()=>{if(te||!Z.nodes.length||Z.boxes.size<Z.nodes.length)return;te=!0;let e=Z.area();[...B(c)?.querySelectorAll(`.svelte-flow__node`)??[]].some(t=>{let n=t.getBoundingClientRect();return n.right>e.left&&n.left<e.right&&n.bottom>e.top&&n.top<e.bottom})||de(0)});let E=(e,t)=>{let n=t.x+t.w/2-(e.x+e.w/2),r=t.y+t.h/2-(e.y+e.h/2),i=Math.abs(n)*.6>Math.abs(r),[a,o]=i?n>0?[`right`,`left`]:[`left`,`right`]:r>0?[`bottom`,`top`]:[`top`,`bottom`],s=jo(t,o),c=jo(e,a),l=(e,t,n)=>Math.min(Math.max(e,t),Math.max(t,n));return i?c.y=l(s.y,e.y+12,e.y+e.h-12):c.x=l(s.x,e.x+12,e.x+e.w-12),{d:No(c,a,s,o),end:s}},ne=M(()=>Z.links.flatMap(({from:e,to:t,tunnel:n})=>{let r=Z.boxes.get(e),i=Z.infraBoxes.get(t);if(!r||!i)return[];let a={app:e,host:n.bind,port:n.port,original:n.original};return[{key:`${e}>${t}`,from:e,to:t,what:n.what,payload:a,...E(r,i),idle:!Q.up(e)}]})),D=Z.nameOf,re=(e,t)=>e?.state===`busy`?e.detail?`${e.text??``}. ${e.detail}`:`Testing…`:e?.detail?`${e.text??``}. ${e.detail} Click to test again.`:`Not tested yet. Click to test that ${t}.`,ie=M(()=>[...Z.edges.map(({id:e,source:t,target:n})=>({key:e,apps:[t,n],payload:{from:t,to:n}})),...B(ne).map(({key:e,from:t,payload:n})=>({key:e,apps:[t],payload:n}))]),ae=M(()=>Z.flows.flatMap(({from:e,to:t,queue:n,via:r})=>{let i=e=>Z.boxes.get(e)??Z.infraBoxes.get(e),[a,o]=[i(e),i(t)];if(!a||!o)return[];let s=o.x+o.w/2-(a.x+a.w/2),c=o.y+o.h/2-(a.y+a.h/2),l=s>0?[`right`,`left`]:[`left`,`right`],u=Math.abs(s)*.6>Math.abs(c)?l:c>0?[`bottom`,`top`]:[`top`,`bottom`],d=Z.ledBy(e).includes(t)||Z.ledBy(t).includes(e),f=(e,t)=>Z.boxes.has(e)&&!!Z.ledBy(e).length&&Z.infraSide(e)===t;!d&&(f(e,u[0])||f(t,u[1]))&&(u=l);let[p,m]=[jo(a,u[0]),jo(o,u[1])];return[{key:`${e}>${t}`,from:e,to:t,d:No(p,u[0],m,u[1]),start:p,end:m,kind:n?Z.queues[n]===`local`?`msg local`:`msg`:`ext`,via:r,label:Eo[u[0]][0]===0?{x:(p.x+m.x)/2+8,y:(p.y+m.y)/2,anchor:`start`}:{x:(p.x+m.x)/2,y:(p.y+m.y)/2-9,anchor:`middle`}}]})),oe=M(()=>new Map(Z.nodes.map((e,t)=>[e.id,(e.selected?Z.nodes.length:0)+t]))),se=(e,t)=>{let n=B(oe).get(t)??0;return[...Z.boxes].some(([r,i])=>r!==t&&(B(oe).get(r)??0)>n&&e.x>i.x+1&&e.x<i.x+i.w-1&&e.y>i.y+1&&e.y<i.y+i.h-1)},ce=()=>new Promise(requestAnimationFrame);Fn(()=>{Z.brief=r.current.zoom<.6||Z.live});let le=!1,ue=async()=>{if(Z.present=!Z.present,!le){for(le=!0,Z.entering=!0;Z.present!==!!document.fullscreenElement;){let e=Z.present;if(await(e?document.documentElement.requestFullscreen():document.exitFullscreen()).catch(()=>void 0),e!==!!document.fullscreenElement)break}Z.entering=!1,le=!1}await ce(),await ce(),await de()},de=async(e=l.duration)=>{let t=(e,t)=>{let n=Math.min(...e.map(e=>e.x)),r=Math.min(...e.map(e=>e.y));return Km({x:n,y:r,width:Math.max(...e.map(e=>e.x+e.w))-n,height:Math.max(...e.map(e=>e.y+e.h))-r},B(c)?.clientWidth??0,B(c)?.clientHeight??0,.2,t,l.padding)},r=()=>[...Z.nodes.map(e=>({...e.position,...fe[e.id]??Z.boxes.get(e.id)??u})),...Z.infra.map(e=>({...e.position,...Z.infraBoxes.get(e.id)??u}))],i=()=>[...Z.boxes.values(),...Z.infraBoxes.values()],a=async()=>{let e=()=>JSON.stringify([...Z.boxes.values(),...Z.infraBoxes.values()]),t=``,n=0;for(let r=0;r<40&&n<3;r++){await ce();let r=e();n=r===t&&!Z.brief?n+1:0,t=r}};if(B(c)&&Z.nodes.length){for(let o=0;o<2;o++){let s=t(r(),l.maxZoom);if(s.zoom<.6)break;await n.setViewport(s,{duration:o?e:0}),await a();let c=t(i(),l.maxZoom);if(c.zoom>=.6){await n.setViewport(c,{duration:e});return}}Z.brief||(await n.setViewport(t(r(),l.maxZoom),{duration:0}),await ce(),await ce()),await n.setViewport(t(i(),Is-.01),{duration:e})}},fe={};Fn(()=>{if(r.current.zoom<.6||Z.live)return;for(let[e,{w:t,h:n}]of Z.boxes)fe[e]={w:t,h:n};let e=Object.fromEntries([...Z.boxes].map(([e,t])=>[e,Math.round(t.h)]));Object.entries(e).some(([e,t])=>Z.fullHeights[e]!==t)&&Mr(()=>Z.fullHeights={...Z.fullHeights,...e})});let pe=async()=>{!Z.live&&r.current.zoom<.6&&!Z.nodes.every(e=>fe[e.id])&&(await n.setZoom(1,{duration:0}),await ce(),await ce()),Z.arrange(e=>{let t=Z.boxes.get(e)??{w:260,h:160};return fe[e]??{w:t.w,h:Z.fullHeights[e]??t.h}}),requestAnimationFrame(()=>void de())};Fn(()=>{let e=Z.opened;e&&Z.nodes.every(e=>e.measured?.width)&&(Z.opened=null,e===`arrange`?pe():requestAnimationFrame(()=>void de()))});var me=oS();V(`keydown`,hn,e=>{C(e),y(e),T(e)}),V(`keyup`,hn,e=>{C(e),y(e)}),V(`blur`,hn,()=>P(g,!1)),V(`pointermove`,hn,w,!0),V(`pointerdown`,hn,e=>a={x:e.clientX,y:e.clientY},!0),V(`pointerup`,hn,()=>a=null,!0);var he=F(me),ge=()=>Z.flowNodes(),_e=e=>{Z.fromFlow(e,`${String(r.current.zoom<.6)} ${String(Z.live)}`,Q.asked)&&Rx.adopt()};{let e=M(()=>({app:vx,tunnel:Lx,queue:Fx,outside:Ax})),t=M(()=>({cable:xx})),a=M(()=>Z.live?null:[`Backspace`,`Delete`]),o=M(()=>!Z.live&&!B(_)),s=M(()=>!B(_)),c=M(()=>B(_)?!0:[1,2]),l=M(()=>!B(_)),u=M(()=>Py(Vy.now.scheme)?`light`:`dark`);Pv(he,za({get nodes(){return ge()},set nodes(e){_e(e)},get nodeTypes(){return B(e)},get edgeTypes(){return B(t)},get connectionMode(){return im.Loose},get deleteKey(){return B(a)},get nodesDraggable(){return B(o)},get elementsSelectable(){return B(s)},nodeDragThreshold:4,nodeClickDistance:4,panOnScroll:!0,panOnScrollSpeed:1,get panOnDrag(){return B(c)},get selectionOnDrag(){return B(l)},onselectionstart:()=>Z.selecting=!0,onselectionend:()=>Z.selecting=!1,get selectionMode(){return om.Partial},get colorMode(){return B(u)},minZoom:.2,proOptions:{hideAttribution:!0}},()=>ee,{onmoveend:(e,t)=>{Z.live||(Z.view={...t,x:t.x+i})},get edges(){return Z.edges},set edges(e){Z.edges=e},children:(e,t)=>{var i=nS(),a=I(i);Kv(a,{get variant(){return zv.Dots},gap:20,size:1.4,bgColor:`var(--desk)`,patternColor:`var(--line)`});var o=R(a,2);Tv(o,{position:`top-left`,children:(e,t)=>{var n=Vx(),r=F(n),i=F(r);fa(i),Ae(),k(r);var a=R(r,2),o=F(a);fa(o),Ae(),k(a),k(n),z(()=>{ma(i,!Z.live),ma(o,Z.live)}),H(`change`,i,()=>{Z.goEdit()}),H(`change`,o,()=>{Z.goLive()}),W(e,n)},$$slots:{default:!0}});var s=R(o,2);Tv(s,{position:`bottom-center`,children:(e,t)=>{var i=Wx(),a=F(i);q(a,21,()=>b,([e,t,n])=>e,(e,t,n,r)=>{var i=M(()=>v(B(t),3));let a=()=>B(i)[0],o=()=>B(i)[1],s=()=>B(i)[2];var c=Hx();Ua(F(c),{get of(){return s()},size:16}),k(c),z(()=>{Y(c,`aria-checked`,B(h)===a()),Y(c,`aria-label`,o()),Y(c,`title`,o())}),H(`click`,c,()=>P(h,a(),!0)),W(e,c)}),k(a);var o=R(a,2);Ua(F(o),{get of(){return Ay},size:16}),k(o);var s=R(o,2);Ua(F(s),{get of(){return Oy},size:16}),k(s);var c=R(s,2);Ua(F(c),{get of(){return gy},size:16}),k(c);var l=R(c,2);Ua(F(l),{get of(){return vy},size:16}),k(l);var u=R(l,2),f=F(u),p=M(()=>d(1/1.2));Ua(F(f),{get of(){return Sy},size:16}),k(f);var m=R(f,2),g=L(m),_=R(m,2),y=M(()=>d(1.2));Ua(F(_),{get of(){return Ey},size:16}),k(_),k(u);var x=R(u,2);Ua(F(x),{get of(){return by},size:16}),k(x);var S=R(x,2),C=e=>{var t=Ux();z(()=>t.disabled=!Z.nodes.length),H(`click`,t,()=>{let e=Z.nodes.length;Gb.review={title:`Clear ${Z.name??`this board`}?`,sub:`Takes ${e===1?`its app`:`all ${String(e)} apps`} and their cables off the board. Undo brings them back.`,notices:[],groups:[],ok:`Clear board`,prod:!0,blocked:!1,confirm:()=>{Z.clear()}}}),W(e,t)};K(S,e=>{Z.present||e(C)}),k(i),z(e=>{o.disabled=!Rx.canUndo,s.disabled=!Rx.canRedo,G(g,`${e??``}%`),Y(x,`aria-label`,Z.present?`Stop presenting`:`Present`),Y(x,`title`,Z.present?`Stop presenting (Esc)`:`Present: the board alone, full screen (P)`),Y(x,`aria-pressed`,Z.present)},[()=>Math.round(r.current.zoom*100)]),H(`click`,o,()=>{Rx.undo()}),H(`click`,s,()=>{Rx.redo()}),H(`click`,c,()=>void pe()),H(`click`,l,()=>void de()),H(`click`,f,function(...e){B(p)?.apply(this,e)}),H(`click`,m,()=>void n.setZoom(1,{duration:200})),H(`click`,_,function(...e){B(y)?.apply(this,e)}),H(`click`,x,()=>void ue()),W(e,i)},$$slots:{default:!0}});var c=R(s,2);ny(c,{position:`bottom-right`,pannable:!0,zoomable:!0,width:168,height:112,ariaLabel:`Overview of the board`,nodeBorderRadius:0,nodeStrokeWidth:0,nodeColor:e=>e.type===`app`?`var(--ink-muted)`:`var(--line-strong)`,bgColor:`var(--panel)`,maskColor:`color-mix(in oklab, var(--desk) 72%, transparent)`,maskStrokeColor:`var(--line)`,maskStrokeWidth:1});var l=R(c,2);Rv(l,{target:`back`,children:(e,t)=>{var n=Jx(),r=F(n);q(r,17,()=>B(ne),e=>e.key,(e,t)=>{var n=Gx();let r;z((e,i,a)=>{r=J(n,0,`link svelte-ibqofz`,null,r,{idle:B(t).idle,dimmed:e,lit:i,snapped:a}),Y(n,`d`,B(t).d)},[()=>Z.dimmedLink(B(t).from,B(t).to),()=>Z.lit(B(t).from,B(t).to),()=>Z.snapped.includes(`${B(t).from}>${B(t).to}`)]),W(e,n)}),q(R(r),17,()=>B(ae),e=>e.key,(e,t,n,r)=>{var i=qx();let a;var o=F(i),s=R(o),c=R(s),l=R(c),u=R(l),d=e=>{var n=Kx(),r=L(n,!0);z(()=>{Y(n,`x`,B(t).label.x),Y(n,`y`,B(t).label.y),Y(n,`text-anchor`,B(t).label.anchor),G(r,B(t).via)}),W(e,n)};K(u,e=>{B(t).via&&e(d)}),k(i),z((e,n,r)=>{a=J(i,0,`flow ${B(t).kind??``}`,`svelte-ibqofz`,a,{dimmed:e,lit:n,snapped:r}),Y(o,`d`,B(t).d),Y(s,`d`,B(t).d),Y(c,`cx`,B(t).end.x),Y(c,`cy`,B(t).end.y),Y(l,`cx`,B(t).start.x),Y(l,`cy`,B(t).start.y)},[()=>Z.dimmedLink(B(t).from,B(t).to),()=>Z.lit(B(t).from,B(t).to),()=>Z.snapped.includes(`${B(t).from}>${B(t).to}`)]),W(e,i)}),k(n),W(e,n)},$$slots:{default:!0}}),Rv(R(l,2),{target:`front`,style:`position: absolute; z-index: 1001`,children:(e,t)=>{var n=tS();let r;var i=F(n);q(i,19,()=>Z.edges,e=>e.id,(e,t,n)=>{let r=M(()=>Ob.endPoint(B(n),`from`)),i=M(()=>Ob.endPoint(B(n),`to`));var a=si(),o=I(a),s=e=>{let n=M(()=>Q.sent(B(t).source)&&Q.sent(B(t).target)),a=M(()=>Bx.results[B(t).id]);var o=Qx(),s=I(o),c=e=>{var n=Yx();let i;z((e,a)=>{i=J(n,0,`plug nodrag nopan svelte-ibqofz`,null,i,{cut:Z.hovered===B(t).id,idle:e,dimmed:a,grabbed:Ob.grabbed?.id===B(t).id&&Ob.grabbed.end===`from`}),Y(n,`data-cable`,B(t).id),Y(n,`cx`,B(r).x),Y(n,`cy`,B(r).y)},[()=>!Q.up(B(t).source)||!Q.up(B(t).target),()=>Z.dimmedLink(B(t).source,B(t).target)]),H(`pointerdown`,n,e=>{Ob.grabEnd(e,B(t).id,`from`)}),W(e,n)},l=M(()=>!se(B(r),B(t).source));K(s,e=>{B(l)&&e(c)});var u=R(s),d=e=>{var r=Zx(),o=I(r);let s;var c=F(o),l=e=>{var n=Xx(),r=L(n,!0);z(e=>G(r,e),[()=>re(B(a),`local ${D(B(t).target)} answers`)]),W(e,n)};K(c,e=>{B(n)&&e(l)}),k(o);var u=R(o);z((e,r)=>{Y(o,`role`,B(n)?`button`:`presentation`),Y(o,`tabindex`,B(n)?0:void 0),Y(o,`aria-label`,e),s=J(o,0,`socket nodrag nopan svelte-ibqofz`,null,s,{dimmed:r,tested:B(n),grabbed:Ob.grabbed?.id===B(t).id&&Ob.grabbed.end===`to`}),Y(o,`data-cable`,B(t).id),Y(o,`data-state`,B(n)?B(a)?.state:void 0),Y(o,`cx`,B(i).x),Y(o,`cy`,B(i).y),Y(u,`data-state`,B(n)?B(a)?.state??`idle`:void 0),Y(u,`data-light`,B(t).id),Y(u,`cx`,B(i).x),Y(u,`cy`,B(i).y)},[()=>B(n)?`Test that local ${D(B(t).target)} answers ${D(B(t).source)}`:void 0,()=>Z.dimmedLink(B(t).source,B(t).target)]),H(`keydown`,o,e=>{!B(n)||e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),Bx.test({key:B(t).id,payload:{from:B(t).source,to:B(t).target}}))}),H(`pointerdown`,o,e=>{p={x:e.clientX,y:e.clientY},Ob.grabEnd(e,B(t).id,`to`)}),H(`click`,o,e=>{B(n)&&Math.hypot(e.clientX-p.x,e.clientY-p.y)<6&&Bx.test({key:B(t).id,payload:{from:B(t).source,to:B(t).target}})}),W(e,r)},f=M(()=>!se(B(i),B(t).target));K(u,e=>{B(f)&&e(d)}),W(e,o)};K(o,e=>{B(r)&&B(i)&&e(s)}),W(e,a)});var a=R(i);q(a,17,()=>B(ne),e=>e.key,(e,t)=>{var n=si(),r=I(n),i=e=>{let n=M(()=>Bx.results[B(t).key]);var r=$x(),i=I(r),a=L(F(i),!0);k(i);var o=R(i);z((e,r,s)=>{Y(i,`aria-label`,`Test that ${e??``} reaches its ${r??``} through the tunnel`),Y(i,`data-link`,B(t).key),Y(i,`data-state`,B(n)?.state),Y(i,`cx`,B(t).end.x),Y(i,`cy`,B(t).end.y),G(a,s),Y(o,`data-state`,B(n)?.state??`idle`),Y(o,`data-light`,B(t).key),Y(o,`cx`,B(t).end.x),Y(o,`cy`,B(t).end.y)},[()=>D(B(t).from),()=>B(t).what.toLowerCase(),()=>re(B(n),`${D(B(t).from)} reaches its ${B(t).what.toLowerCase()} through the tunnel`)]),H(`keydown`,i,e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),Bx.test(B(t)))}),H(`pointerdown`,i,e=>{e.stopPropagation()}),H(`click`,i,()=>void Bx.test(B(t))),W(e,r)},a=M(()=>Q.sent(B(t).from));K(r,e=>{B(a)&&e(i)}),W(e,n)});var o=R(a),s=e=>{var t=eS();z(()=>Y(t,`d`,B(m))),W(e,t)};K(o,e=>{B(m)&&e(s)}),k(n),z(()=>r=J(n,0,`ends svelte-ibqofz`,null,r,{reordering:!!Ob.grabbed,still:Z.live})),W(e,n)},$$slots:{default:!0}}),W(e,i)},$$slots:{default:!0}}))}var ve=R(he,2),ye=e=>{var t=aS(),n=R(F(t),2),r=e=>{var t=iS();q(t,21,()=>B(f),({preset:e,team:t,at:n})=>`${t?`team`:`own`}:${e.name}`,(e,t)=>{let n=()=>B(t).preset,r=()=>B(t).team,i=()=>B(t).at;var a=rS(),o=F(a),s=F(o),c=L(s,!0),l=L(R(s,2));k(o),k(a),z(e=>{G(c,n().name),G(l,`${r()?`Team board`:`Your board`}${e??``}`)},[()=>i()?`, opened ${zb(i())}`:``]),H(`click`,o,()=>{Fb(n())}),W(e,a)}),k(t),W(e,t)};K(n,e=>{B(f).length&&!Z.live&&e(r)}),k(t),W(e,t)};K(ve,e=>{Z.nodes.length||e(ye)}),k(me),Aa(me,e=>P(c,e),()=>B(c)),V(`dragover`,me,e=>{e.dataTransfer?.types.includes(`text/app`)&&e.preventDefault()}),V(`drop`,me,e=>{let t=e.dataTransfer?.getData(`text/app`);t&&!Z.live&&(e.preventDefault(),Z.add(t,{x:e.clientX,y:e.clientY}))}),H(`focusin`,me,e=>{let t=e.target.matches(`.svelte-flow__node`)?e.target.getAttribute(`data-id`):null;t&&!B(_)&&![...Z.nodes,...Z.infra].find(e=>e.id===t)?.selected&&Z.pick(t)}),W(e,me),j()}Xr([`focusin`,`change`,`click`,`pointerdown`,`keydown`]);var cS=new Set([`$$slots`,`$$events`,`$$legacy`]);function lS(e,t){let n=La(t,cS),r={name:`info`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 16v-4`}],[`path`,{d:`M12 8h.01`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var uS=new Set([`$$slots`,`$$events`,`$$legacy`]);function dS(e,t){let n=La(t,uS),r={name:`lock`,size:24,node:[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var fS=U(`<button class="i svelte-1ixstkt" type="button"><!></button>`),pS=U(`<p class="result svelte-1ixstkt"> </p>`),mS=U(`<form class="svelte-1ixstkt"><input type="password" placeholder="Paste the value, Enter to save" autocomplete="off" spellcheck="false" class="svelte-1ixstkt"/> <button class="go svelte-1ixstkt" type="submit">Save</button> <button type="button" aria-label="Cancel" class="svelte-1ixstkt"><!></button></form>`),hS=U(`<button type="button" class="svelte-1ixstkt">Test</button> <button type="button" class="svelte-1ixstkt">Remove</button>`,1),gS=U(`<button type="button" title="A command for your own terminal that fetches and stores it without showing it" class="svelte-1ixstkt"> </button>`),_S=U(`<p class="nohow svelte-1ixstkt"> </p>`),vS=U(`<div class="cmd svelte-1ixstkt"><p class="svelte-1ixstkt">This command comes from the stack file, so read it before you run it, in your own terminal. It should
|
|
21
|
+
fetch the value and store it without showing it.</p> <!></div>`),yS=U(`<div class="acts svelte-1ixstkt"><button type="button" class="svelte-1ixstkt"> </button> <!></div> <!> <!>`,1),bS=U(`<dt class="svelte-1ixstkt">When</dt> <dd class="svelte-1ixstkt"> </dd>`,1),xS=U(`<li> </li>`),SS=U(`<ol class="svelte-1ixstkt"></ol>`),CS=U(`<dt class="svelte-1ixstkt">Where</dt> <dd class="svelte-1ixstkt"><!></dd>`,1),wS=U(`<dl class="svelte-1ixstkt"><!> <!></dl>`),TS=U(`<div class="cred svelte-1ixstkt"><div class="head svelte-1ixstkt"><code class="svelte-1ixstkt"> </code> <!> <span class="state svelte-1ixstkt"> </span></div> <!> <!> <!></div>`),ES=U(`<section class="svelte-1ixstkt"><h3 class="svelte-1ixstkt"> </h3> <!></section>`),DS=U(`<p class="none svelte-1ixstkt"> </p>`),OS=U(`<button type="button" aria-label="Credentials" aria-haspopup="dialog">Credentials</button> <div class="pop svelte-1ixstkt" popover="" role="dialog" tabindex="-1" aria-label="Credentials" data-secret=""><!> <p class="lock svelte-1ixstkt"><!> Kept in your Mac's Keychain. Nobody sees them again.</p></div>`,1);function kS(e,t){let n=ci();A(t,!0);let r={missing:`Missing`,stored:`Stored`,ok:`Works`,failed:`Does not work`},i=N(void 0),a=N(void 0),o=N(!1),s=new v_,c=M(()=>Z.env.toUpperCase()),l=(e,t)=>`${e}|${Z.env}|${t}`,u=(e,t)=>s.get(l(e,t))??{},d=(e,t,n)=>s.set(l(e,t),{...u(e,t),...n}),f=(e,t)=>{let n=u(e,t.name);return n.until&&n.until>Date.now()?!!n.stored:!!t.stored},p=M(()=>Z.cards.map(e=>({id:e.id,name:e.data.name,list:Q.status?.secrets?.[e.id]?.[Z.env]??[]})).filter(e=>e.list.length)),m=e=>!e.when||/^always\b/i.test(e.when.trim()),h=M(()=>B(p).flatMap(e=>e.list.filter(t=>!f(e.id,t)&&m(t))).length),g=(e,t)=>{let n=u(e,t.name);return f(e,t)?n.tested?n.ok?`ok`:`failed`:`stored`:`missing`},_=e=>e.split(/\s*(?:→|->|=>)\s*/).map(e=>e.trim()).filter(Boolean),v=()=>{let e=B(i)?.getBoundingClientRect();e&&B(a)&&(B(a).style.top=`${String(e.bottom+6)}px`,B(a).style.right=`${String(Math.max(12,innerWidth-e.right))}px`)},y=async(e,t,n)=>{e.preventDefault();let r=e.currentTarget.querySelector(`input`);if(!r?.value.trim())return;let i=await oo(`secret`,{app:t,env:Z.env,name:n,value:r.value});r.value=``;let a=`error`in i?i.error:``;d(t,n,{form:!!a,tested:!1,ok:!a,message:a}),a||d(t,n,{stored:!0,until:Date.now()+8e3})},b=async(e,t)=>{d(e,t,{message:`Testing…`,tested:!1});let n=await oo(`secret-test`,{app:e,env:Z.env,name:t});if(`error`in n){d(e,t,{message:n.error,ok:!1});return}let r=/^cannot test/.test(n.message??``),i=(n.message??``).replace(/^failed: /,``).replace(/^cannot test: /,`Cannot be tested: `);d(e,t,{tested:!r,ok:!!n.ok,message:n.ok?``:i.replace(/^./,e=>e.toUpperCase())})},x=async(e,t)=>{let n=await oo(`secret-remove`,{app:e,env:Z.env,name:t}),r=`error`in n?n.error:``;d(e,t,{tested:!1,ok:!r,message:r}),r||d(e,t,{stored:!1,until:Date.now()+8e3})};var S=OS(),C=I(S);let w;Aa(C,e=>P(i,e),()=>B(i));var T=R(C,2),ee=F(T);q(ee,17,()=>B(p),e=>e.id,(e,t)=>{var n=ES(),i=F(n),a=L(i);q(R(i,2),17,()=>B(t).list,e=>e.name,(e,n)=>{let i=M(()=>u(B(t).id,B(n).name)),a=M(()=>f(B(t).id,B(n))),o=M(()=>g(B(t).id,B(n)));var s=TS(),l=F(s),p=F(l),h=L(p,!0),v=R(p,2),S=e=>{var r=fS();Ua(F(r),{get of(){return lS},size:14}),k(r),z(e=>{Y(r,`aria-expanded`,!!B(i).info),Y(r,`aria-label`,`When ${B(n).name??``} is needed and where to get it`),Y(r,`title`,`${e??``}When it is needed and where to get it`)},[()=>m(B(n))?``:`Only needed in some setups. `]),H(`click`,r,()=>d(B(t).id,B(n).name,{info:!B(i).info})),W(e,r)};K(v,e=>{(B(n).when||B(n).fetchUi)&&e(S)});var C=R(v,2),w=L(C,!0);k(l);var T=R(l,2),ee=e=>{var t=pS(),n=L(t,!0);z(()=>{Y(t,`data-ok`,B(i).ok),G(n,B(i).message)}),W(e,t)};K(T,e=>{B(i).message&&e(ee)});var te=R(T,2),E=e=>{var r=mS(),i=F(r);gt(i,!0);var a=R(i,4);Ua(F(a),{get of(){return to},size:14}),k(a),k(r),z(()=>Y(i,`aria-label`,`Value for ${B(n).name??``}`)),V(`submit`,r,e=>void y(e,B(t).id,B(n).name)),H(`keydown`,i,e=>{e.key===`Escape`&&(e.preventDefault(),d(B(t).id,B(n).name,{form:!1}))}),H(`click`,a,()=>d(B(t).id,B(n).name,{form:!1})),W(e,r)},ne=e=>{var r=yS(),o=I(r),s=F(o),l=L(s,!0),u=R(s,2),f=e=>{var r=hS(),i=I(r),a=R(i,2);H(`click`,i,()=>void b(B(t).id,B(n).name)),H(`click`,a,()=>void x(B(t).id,B(n).name)),W(e,r)},p=e=>{var r=gS(),a=L(r,!0);z(()=>{Y(r,`aria-expanded`,!!B(i).command),G(a,B(i).command?`Hide fetch command`:`Show fetch command`)}),H(`click`,r,()=>d(B(t).id,B(n).name,{command:!B(i).command})),W(e,r)};K(u,e=>{B(a)?e(f):B(n).fetchCli&&e(p,1)}),k(o);var m=R(o,2),h=e=>{var n=_S(),r=L(n);z(()=>G(r,`The stack says nothing about where to get it on ${B(c)??``}. Ask whoever owns ${B(t).name??``}, or ask the agent to
|
|
22
|
+
find it in the repo and add the steps to the stack.`)),W(e,n)};K(m,e=>{!B(a)&&!B(n).fetchCli&&!B(n).fetchUi&&e(h)});var g=R(m,2),_=e=>{var t=vS();gc(R(F(t),2),{get command(){return B(n).fetchCli}}),k(t),W(e,t)};K(g,e=>{B(i).command&&B(n).fetchCli&&!B(a)&&e(_)}),z(()=>G(l,B(a)?`Replace`:`Set`)),H(`click`,s,()=>d(B(t).id,B(n).name,{form:!0})),W(e,r)};K(te,e=>{B(i).form?e(E):e(ne,-1)});var D=R(te,2),re=e=>{var t=wS(),r=F(t),i=e=>{var t=bS(),r=L(R(I(t),2),!0);z(()=>G(r,B(n).when)),W(e,t)};K(r,e=>{B(n).when&&e(i)});var a=R(r,2),o=e=>{var t=CS(),r=R(I(t),2),i=F(r),a=e=>{var t=SS();q(t,20,()=>_(B(n).fetchUi),e=>e,(e,t)=>{var n=xS(),r=L(n,!0);z(()=>G(r,t)),W(e,n)}),k(t),W(e,t)},o=M(()=>_(B(n).fetchUi).length>1),s=e=>{var t=oi();z(()=>G(t,B(n).fetchUi)),W(e,t)};K(i,e=>{B(o)?e(a):e(s,-1)}),k(r),W(e,t)};K(a,e=>{B(n).fetchUi&&e(o)}),k(t),W(e,t)};K(D,e=>{B(i).info&&e(re)}),k(s),z(()=>{Y(p,`title`,B(n).name),G(h,B(n).name),Y(C,`data-state`,B(o)),G(w,r[B(o)])}),W(e,s)}),k(n),z(()=>G(a,`${B(t).name??``} on ${B(c)??``}`)),W(e,n)},e=>{var t=DS(),n=L(t);z(()=>G(n,`No app on the board needs a stored credential on ${B(c)??``}.`)),W(e,t)});var te=R(ee,2);Ua(F(te),{get of(){return dS},size:13}),Ae(),k(te),k(T),Aa(T,e=>P(a,e),()=>B(a)),z(e=>{w=J(C,1,`open svelte-1ixstkt`,null,w,{missing:B(h)>0}),Y(C,`aria-expanded`,B(o)),Y(C,`title`,e),Y(C,`popovertarget`,n),Y(T,`id`,n)},[()=>B(h)?`${String(B(h))} ${B(h)===1?`credential is`:`credentials are`} missing for the apps on the board (${B(c)})`:`What the apps on the board need stored`]),V(`toggle`,T,e=>{P(o,e.newState===`open`),B(o)&&v()}),W(e,S),j()}Xr([`click`,`keydown`]);var AS=U(`<li class="svelte-14dfga3"><span class="mark svelte-14dfga3">!</span><span class="what svelte-14dfga3"> </span></li>`),jS=U(`<li class="svelte-14dfga3"><span class="mark svelte-14dfga3"></span><span class="what svelte-14dfga3">Working out what is needed…</span></li>`),MS=U(`<li class="done svelte-14dfga3"><span class="mark svelte-14dfga3"><!></span><span class="what svelte-14dfga3">Nothing for you to do. Koppler does the rest.</span></li>`),NS=U(`<small class="for svelte-14dfga3"> </small>`),PS=U(`<small class="svelte-14dfga3"> </small>`),FS=U(`<!> <!>`,1),IS=U(`<!> <!> <!> <!>`,1),LS=U(`<li><span class="mark svelte-14dfga3"><!></span> <span class="what svelte-14dfga3"> <!> <!></span></li>`),RS=U(`<button class="ok svelte-14dfga3" type="button"> </button>`),zS=U(`<dialog aria-labelledby="checklist-title" class="svelte-14dfga3"><h2 id="checklist-title" class="svelte-14dfga3"> </h2> <p class="sub svelte-14dfga3">In this order. Commands go in your own terminal, not in the agent: secrets must not reach it.</p> <ol class="svelte-14dfga3"><!></ol> <div class="actions svelte-14dfga3"><!> <button type="button" class="svelte-14dfga3">Check again</button> <button type="button" class="svelte-14dfga3">Done</button></div></dialog>`);function BS(e,t){A(t,!0);let n=N(void 0),r=N(null),i=N(``),a=N(!1),o=M(()=>Z.env.toUpperCase());async function s(){P(r,null),P(i,``),P(a,!1),B(n)?.showModal();let e=Z.cards.map(e=>e.id),t=Z.cards.filter(e=>e.data.hideTunnels).map(e=>e.id),o=await oo(`needs`,{env:Z.env,apps:e,noTunnels:t});`error`in o?P(i,o.error,!0):P(r,o.steps??[])}let c=async()=>{let e=(B(r)??[]).filter(e=>e.gap&&!e.done).map(e=>e.title);P(a,await Gb.askFacts(Z.env,e),!0)};var l={open:s},u=zS(),d=F(u),f=L(d),p=R(d,4),m=F(p),h=e=>{var t=AS(),n=L(R(F(t)),!0);k(t),z(()=>G(n,B(i))),W(e,t)},g=e=>{W(e,jS())},_=e=>{var t=MS(),n=F(t);Ua(F(n),{get of(){return Gy},size:13}),k(n),Ae(),k(t),W(e,t)},v=e=>{var t=si();q(I(t),17,()=>B(r),Ti,(e,t,n)=>{var r=LS();let i;var a=F(r),o=F(a),s=e=>{Ua(e,{get of(){return Gy},size:13})},c=e=>{var r=oi();z(()=>G(r,B(t).gap?`!`:n+1)),W(e,r)};K(o,e=>{B(t).done?e(s):e(c,-1)}),k(a);var l=R(a,2),u=F(l,!0),d=R(u),f=e=>{var n=NS(),r=L(n);z(e=>G(r,`(${e??``})`),[()=>B(t).apps.join(`, `)]),W(e,n)};K(d,e=>{B(t).apps?.length&&e(f)});var p=R(d,2),m=e=>{var n=IS(),r=I(n),i=e=>{var n=PS(),r=L(n,!0);z(()=>G(r,B(t).why)),W(e,n)};K(r,e=>{B(t).why&&e(i)});var a=R(r,2),o=e=>{var n=FS(),r=I(n);gc(r,{get command(){return B(t).command}});var i=R(r,2),a=e=>{var n=PS(),r=L(n);z(()=>G(r,`Where: ${B(t).where??``}`)),W(e,n)};K(i,e=>{B(t).where&&e(a)}),W(e,n)};K(a,e=>{B(t).command&&e(o)});var s=R(a,2),c=e=>{var n=PS(),r=L(n);z(()=>G(r,`Or: ${B(t).alt??``}`)),W(e,n)};K(s,e=>{B(t).alt&&e(c)});var l=R(s,2),u=e=>{var n=PS(),r=L(n,!0);z(()=>G(r,B(t).how)),W(e,n)};K(l,e=>{B(t).how&&!B(t).gap&&e(u)}),W(e,n)};K(p,e=>{B(t).done||e(m)}),k(l),k(r),z(()=>{i=J(r,1,`svelte-14dfga3`,null,i,{done:B(t).done,gap:B(t).gap&&!B(t).done}),G(u,B(t).title)}),W(e,r)}),W(e,t)};K(m,e=>{B(i)?e(h):B(r)?B(r).length?e(v,-1):e(_,2):e(g,1)}),k(p);var y=R(p,2),b=F(y),x=e=>{var t=RS(),n=L(t,!0);z(()=>{t.disabled=B(a),G(n,B(a)?`Sent to the agent`:`Ask the agent to find them`)}),H(`click`,t,()=>void c()),W(e,t)},S=M(()=>B(r)?.some(e=>e.gap&&!e.done));K(b,e=>{B(S)&&e(x)});var C=R(b,2),w=R(C,2);return k(y),k(u),Aa(u,e=>P(n,e),()=>B(n)),z(()=>G(f,`Before this runs on ${B(o)??``}`)),H(`click`,C,()=>void s()),H(`click`,w,()=>B(n)?.close()),W(e,u),j(l)}Xr([`click`]);var VS=U(`"<strong> </strong>" in the repos means <strong> </strong>`,1),HS=U(`<strong> </strong> calls <strong> </strong>`,1),US=U(`<strong> </strong> <code class="svelte-cao9th"> </code>`,1),WS=U(`<label class="svelte-cao9th"><input type="checkbox"/> <span><!> <small class="svelte-cao9th"> </small></span></label>`),GS=U(`<section class="svelte-cao9th"><h3 class="svelte-cao9th"> <span class="svelte-cao9th"> </span></h3> <p class="svelte-cao9th"> </p> <!></section>`),KS=U(`<dialog aria-labelledby="findings-title" class="svelte-cao9th"><h2 id="findings-title" class="svelte-cao9th"> </h2> <p class="sub svelte-cao9th">Keep what looks right. It goes into the stack, so the canvas can show calls and Koppler can start and connect the
|
|
23
|
+
apps. Nothing else changes.</p> <div class="list svelte-cao9th"></div> <div class="acts svelte-cao9th"><button type="button" class="svelte-cao9th"> </button> <button class="go svelte-cao9th" type="button"> </button></div></dialog>`);function qS(e,t){A(t,!0);let n=[[`alias`,`Environment names`,`The repos name an environment differently from this stack.`],[`call`,`Who calls whom`,`Found by another app's address in the code. Becomes a cable you can plug.`],[`address`,`Deployed addresses`,`From each app's Terraform. Used to find the calls above, and what an app calls when the other one is not running here.`],[`url`,`Where each app runs on this Mac`,`From launch settings and config. The port Koppler starts it on.`]],r=N(void 0),i=N([]),a=N(!1),o=N(!1),s=new __,c=(e=``)=>Z.nameOf(e),l=e=>!e.needs||s.has(e.needs),u=M(()=>B(i).filter(e=>s.has(e.id)&&l(e)).length);async function d({afterAdding:e=!1}={}){P(a,e,!0),$.show(`Looking through the repos…`);let t=await oo(`discover`);if(`error`in t)$.show(t.error,`warning`),e&&setTimeout(()=>{location.reload()},1500);else if(!t.findings.length)e?location.reload():$.show(`Nothing new found in the repos.`);else{P(i,t.findings),s.clear();for(let e of B(i))s.add(e.id);$.hide(),B(r)?.showModal()}}let f=()=>B(r)?.close(),p=async()=>{let e=B(i).filter(e=>s.has(e.id)&&l(e)).map(e=>e.id);if(!e.length){f();return}P(o,!0);let t=await oo(`discover-apply`,{ids:e});P(o,!1),`error`in t?$.show(t.error,`warning`):location.reload()};var m={open:d},h=KS(),g=F(h),_=L(g,!0),y=R(g,4);q(y,21,()=>n,([e,t,n])=>e,(e,t)=>{var n=M(()=>v(B(t),3));let r=()=>B(n)[0],a=()=>B(n)[1],o=()=>B(n)[2],u=M(()=>B(i).filter(e=>e.kind===r()));var d=si(),f=I(d),p=e=>{var t=GS(),n=F(t),i=F(n),d=L(R(i),!0);k(n);var f=R(n,2),p=L(f,!0);q(R(f,2),17,()=>B(u),e=>e.id,(e,t)=>{var n=WS(),i=F(n);fa(i);var a=R(i,2),o=F(a),u=e=>{var n=VS(),r=R(I(n)),i=L(r,!0),a=L(R(r,2),!0);z(e=>{G(i,B(t).value),G(a,e)},[()=>(B(t).env??``).toUpperCase()]),W(e,n)},d=e=>{var n=HS(),r=I(n),i=L(r,!0),a=L(R(r,2),!0);z((e,t)=>{G(i,e),G(a,t)},[()=>c(B(t).app),()=>c(B(t).to)]),W(e,n)},f=e=>{var n=US(),r=I(n),i=L(r,!0),a=R(r),o=L(R(a),!0);z((e,n)=>{G(i,e),G(a,` on ${n??``}: `),G(o,B(t).value)},[()=>c(B(t).app),()=>(B(t).env??``).toUpperCase()]),W(e,n)},p=e=>{var n=US(),r=I(n),i=L(r,!0),a=L(R(r,2),!0);z(e=>{G(i,e),G(a,B(t).value)},[()=>c(B(t).app)]),W(e,n)};K(o,e=>{r()===`alias`?e(u):r()===`call`?e(d,1):r()===`address`?e(f,2):e(p,-1)});var m=R(o,2),h=L(m,!0);k(a),k(n),z((e,n)=>{ma(i,e),i.disabled=n,Y(m,`title`,B(t).why),G(h,r()===`alias`||r()===`call`?B(t).why:`from ${B(t).why??``}`)},[()=>s.has(B(t).id)&&l(B(t)),()=>!l(B(t))]),H(`change`,i,e=>{e.currentTarget.checked?s.add(B(t).id):s.delete(B(t).id)}),W(e,n)}),k(t),z(()=>{G(i,`${a()??``} `),G(d,B(u).length),G(p,o())}),W(e,t)};K(f,e=>{B(u).length&&e(p)}),W(e,d)}),k(y);var b=R(y,2),x=F(b),S=L(x,!0),C=R(x,2),w=L(C,!0);return k(b),k(h),Aa(h,e=>P(r,e),()=>B(r)),z(e=>{G(_,B(a)?`Here is what Koppler found`:`What the repos say`),G(S,B(a)?`Skip`:`Cancel`),C.disabled=B(o),G(w,e)},[()=>B(u)?`Add ${String(B(u))} to the stack`:`Add nothing`]),V(`close`,h,()=>{B(a)&&location.reload()}),H(`click`,x,f),H(`click`,C,p),W(e,h),j(m)}Xr([`change`,`click`]);var JS=Z.nameOf,YS=(e,t,n)=>`${String(e)} ${e===1?t:n}`,XS=e=>e.to?`${e.from} to ${e.to}`:e.from,ZS=e=>`tunnel:${e.host}:${String(e.original)}`,QS=new class{#e=N(null);get flow(){return B(this.#e)}set flow(e){P(this.#e,e)}#t=N(!1);get asked(){return B(this.#t)}set asked(e){P(this.#t,e,!0)}#n=M(()=>Z.cards.map(e=>e.id).filter(e=>Q.sent(e)));get sent(){return B(this.#n)}set sent(e){P(this.#n,e)}starting(e){return Q.sent(e)&&!!Q.status?.running?.includes(e)&&Q.up(e)===!1}#r=M(()=>{let e=this.sent,t=[];for(let n of e){let e=Q.steps(n),r=e.find(e=>e.state===`failed`);Q.up(n)===!1&&this.starting(n)?t.push({level:`warn`,id:n,down:!0,text:`${JS(n)} is starting`}):Q.up(n)===!1?t.push({level:`bad`,id:n,down:!0,text:`${JS(n)} is not running`}):r?t.push({level:`bad`,id:n,text:`${JS(n)}: ${r.label.toLowerCase()} failed`}):e.some(e=>e.state===`user`)&&t.push({level:`warn`,id:n,text:`${JS(n)} is waiting on you`})}for(let n of Z.plan){let r=n.apps.find(t=>e.includes(t));r&&Q.status?.ports?.[String(n.port)]===!1&&t.push({level:`bad`,id:r,text:`${n.what} tunnel is closed`})}for(let[n,r]of Object.entries(Bx.results)){let[i=``,a=``]=n.replace(/^node:/,``).split(`>`);r.state===`bad`&&e.includes(i)&&!t.some(e=>e.down&&(e.id===i||e.id===a))&&t.push({level:`bad`,id:i,text:`${JS(i)}${a?` to ${JS(a)}`:``}: ${(r.text??``).toLowerCase()}`})}return t});get items(){return B(this.#r)}set items(e){P(this.#r,e)}jobs(){return[...Z.cards.filter(({id:e})=>Z.app(e)?.serves).map(({id:e})=>({kind:`app`,key:`node:${e}`,id:e,from:JS(e),payload:{node:e}})),...Z.edges.map(({id:e,source:t,target:n})=>({kind:`cable`,key:e,id:t,from:JS(t),to:`local ${JS(n)}`,payload:{from:t,to:n}})),...Z.links.map(({from:e,tunnel:t})=>({kind:`tunnel`,key:`${e}>${ZS(t)}`,id:e,from:JS(e),to:t.what,payload:{app:e,host:t.bind,port:t.port,original:t.original}}))]}result(e){return Bx.results[e.key]??{state:`busy`}}get busy(){return!!this.flow?.some(e=>this.result(e).state===`busy`)}async check(){let e=this.jobs();this.flow=e,this.asked=!1;let t=e=>Object.values(e.payload).find(e=>typeof e==`string`&&Z.apps.some(t=>t.id===e)&&!Q.sent(e));Bx.forget(e.map(e=>e.key));for(let n of e){let e=t(n);e&&(Bx.results[n.key]={state:`warn`,text:`Not started`,detail:`${JS(e)} is on the board but has not been started yet. Press Run to start it.`})}await Promise.all(e.filter(e=>!t(e)).map(e=>Bx.test(e,!0)))}async askToFix(){let e=(this.flow??[]).filter(e=>this.result(e).state===`bad`).map(e=>({connection:XS(e),result:this.result(e).text??``,detail:this.result(e).detail??``,...e.payload}));if(!e.length)return;let t=[`Fix what the Koppler flow check found, using the koppler-run skill.`,`ENV ${Z.env.toUpperCase()}`,`FAILED:`,...e.map(e=>` ${e.connection}: ${e.result}. ${e.detail}`),`Find the cause of each, say what you would change, and ask before you start, stop or restart anything.`].join(`
|
|
24
|
+
`),n=(Q.status?.agent?.state??`none`)===`none`;this.asked=await Gb.deliver(t,{tag:`koppler-fix`,data:{env:Z.env,failures:e}},n?`Saved. The agent gets it when one connects.`:`Sent to the agent`)}#i=M(()=>{let e=Z.cards.map(e=>e.id),t=Q.status?.live,n=t?.env&&Object.keys(t.nodes??{}).length?t.env:null,r=n&&n!==Z.env?n.toUpperCase():null,i=r?[]:this.sent.filter(e=>Q.steps(e).some(e=>e.state===`failed`));if(i.length)return{state:`bad`,label:`${String(i.length)} failed: ${i.map(JS).join(`, `)}`,title:`Its card says why. Ask the agent to fix it from the card, or run a Flow check.`};let a=r?[]:e.filter(e=>this.starting(e));if(a.length)return{state:`busy`,label:`Starting ${a.length===1?JS(a[0]??``):`${String(a.length)} apps`}`,title:`Koppler checks the connections again once it answers.`};let o=this.sent.length,s=!this.busy&&!r&&!o?(Q.status?.running??[]).filter(t=>Z.apps.some(e=>e.id===t)&&!e.includes(t)):[];if(s.length)return{state:`warn`,label:`${s.length===1?JS(s[0]??``):`${String(s.length)} apps`} running, not on this board`,title:`${s.map(JS).join(`, `)} ${s.length===1?`runs`:`run`}, but this board does not show ${s.length===1?`it`:`them`}. Run starts this board and stops what is not on it; Stop stops everything.`};if(this.busy&&this.flow){let e=this.flow.filter(e=>this.result(e).state!==`busy`).length;return{state:`busy`,label:`Checking ${String(e)} of ${String(this.flow.length)}`,title:`Flow check in progress`}}if(r)return{state:`warn`,label:`Running on ${r}`,title:`What runs now is your ${r} board. This board is set to ${Z.env.toUpperCase()} and has not been run; Run switches over.`};if(!o)return{state:`idle`,label:`Nothing running`,title:`Nothing on the board is running. Run starts it.`};let c=this.flow?this.flow.filter(e=>this.result(e).state===`bad`).length:this.items.filter(e=>e.level===`bad`).length,l=this.flow?0:this.items.length-c,u=e.length-o,d=`Flow check: test every connection on the board`;return c?{state:`bad`,label:`${YS(c,`thing is`,`things are`)} off`,title:d}:u?{state:`warn`,label:`${String(u)} not started`,title:`${YS(u,`app on this board was`,`apps on this board were`)} not started yet. Run starts ${u===1?`it`:`them`}.`}:l?{state:`warn`,label:`${String(l)} waiting on you`,title:d}:{state:`ok`,label:`All running`,title:d}});get chip(){return B(this.#i)}set chip(e){P(this.#i,e)}},$S=U(`<p class="sum svelte-6gc4ih">Nothing is running</p> <p class="idle svelte-6gc4ih">Press Run to start the apps on your board. Flow check then tests every connection between them: apps, cables,
|
|
25
|
+
databases and caches.</p>`,1),eC=U(`<progress aria-label="Connections checked" class="svelte-6gc4ih"></progress>`),tC=U(`<button class="fail svelte-6gc4ih" type="button" title="Show it on the board"><span class="route svelte-6gc4ih"> </span> <span class="verdict svelte-6gc4ih"> </span> <span class="why svelte-6gc4ih"> </span></button>`),nC=U(`<button class="row svelte-6gc4ih" type="button"><span class="route"> </span> <span class="verdict svelte-6gc4ih"> </span></button>`),rC=U(`<details class="svelte-6gc4ih"><summary class="svelte-6gc4ih"> <span class="tally svelte-6gc4ih"> </span></summary> <!></details>`),iC=U(`<div class="fix svelte-6gc4ih"><p class="svelte-6gc4ih">The agent can find the cause of each failure and tell you what it would change. It asks before it starts,
|
|
26
|
+
stops or restarts anything.</p> <button class="go svelte-6gc4ih" type="button"> </button></div>`),aC=U(`<header class="svelte-6gc4ih"><p class="sum svelte-6gc4ih"> </p> <button type="button" class="svelte-6gc4ih">Check again</button></header> <!> <!> <!> <!>`,1),oC=U(`<button class="chip svelte-6gc4ih" type="button" aria-haspopup="dialog"><span class="dot svelte-6gc4ih" aria-hidden="true"></span><span class="words"> </span></button> <p class="sr svelte-6gc4ih" aria-live="polite"> </p> <div class="pop svelte-6gc4ih" popover="" role="dialog" tabindex="-1" aria-label="Flow check"><!></div>`,1);function sC(e,t){let n=ci();A(t,!0);let r=[[`app`,`Apps`],[`cable`,`Cables between local apps`],[`tunnel`,`Databases and caches`]],i=N(void 0),a=N(void 0),o=N(!1),s=M(()=>QS.chip),c=M(()=>(QS.flow??[]).map(e=>({job:e,result:QS.result(e)}))),l=M(()=>B(c).filter(e=>e.result.state===`bad`)),u=M(()=>B(c).filter(e=>e.result.state!==`busy`).length),d=M(()=>B(c).filter(e=>e.result.state===`warn`).length),f=M(()=>QS.busy?`Checking, ${String(B(u))} of ${String(B(c).length)} done`:B(l).length?`${String(B(l).length)} of ${String(B(c).length)} connections ${B(l).length===1?`fails`:`fail`}`:B(d)?`Nothing fails, ${String(B(d))} not checked`:`All ${String(B(c).length)} connections work`),p=e=>{let t=B(c).filter(t=>t.job.kind===e),n=t.filter(e=>e.result.state===`bad`).length,r=t.filter(e=>e.result.state===`ok`).length,i=String(t.length);return t.some(e=>e.result.state===`busy`)?{text:`checking`,level:``}:n?{text:`${String(n)} of ${i} ${n===1?`fails`:`fail`}`,level:`bad`}:r<t.length?{text:`${String(r)} of ${i} work, ${String(t.length-r)} not checked`,level:`warn`}:{text:`${i} of ${i} work`,level:``}},m=e=>{B(a)?.hidePopover(),Z.show(e.id)},h=()=>{let e=B(i)?.getBoundingClientRect();e&&B(a)&&(B(a).style.top=`${String(e.bottom+6)}px`,B(a).style.left=`${String(Math.max(12,Math.min(e.left,innerWidth-492)))}px`)};var g=si(),_=I(g),y=e=>{var t=oC(),d=I(t),g=L(R(F(d)),!0);k(d),Aa(d,e=>P(i,e),()=>B(i));var _=R(d,2),y=L(_),b=R(_,2),x=F(b),S=e=>{var t=$S();Ae(2),W(e,t)},C=e=>{var t=aC(),n=I(t),i=F(n),a=L(i,!0),o=R(i,2);k(n);var s=R(n,2),d=e=>{var t=eC();z(()=>{Y(t,`max`,B(c).length),pa(t,B(u))}),W(e,t)};K(s,e=>{QS.busy&&e(d)});var h=R(s,2);q(h,17,()=>B(l),({job:e,result:t})=>e.key,(e,t)=>{let n=()=>B(t).job,r=()=>B(t).result;var i=tC(),a=F(i),o=L(a),s=R(a,2),c=L(s,!0),l=L(R(s,2),!0);k(i),z(()=>{G(o,`${n().from??``}${n().to?` → ${n().to}`:``}`),G(c,r().text),G(l,r().detail)}),H(`click`,i,()=>{m(n())}),W(e,i)});var g=R(h,2);q(g,17,()=>r,([e,t])=>e,(e,t)=>{var n=M(()=>v(B(t),2));let r=()=>B(n)[0],i=()=>B(n)[1],a=M(()=>B(c).filter(e=>e.job.kind===r()&&e.result.state!==`bad`)),o=M(()=>p(r()));var s=si(),l=I(s),u=e=>{var t=rC(),n=F(t),r=F(n,!0),s=R(r),c=L(s,!0);k(n),q(R(n,2),17,()=>B(a),({job:e,result:t})=>e.key,(e,t)=>{let n=()=>B(t).job,r=()=>B(t).result;var i=nC(),a=F(i),o=L(a),s=L(R(a,2),!0);k(i),z(e=>{Y(i,`data-level`,r().state),Y(i,`title`,r().detail),G(o,`${n().from??``}${n().to?` → ${n().to}`:``}`),G(s,e)},[()=>(r().text??``).replace(/^Answers, /,``)]),H(`click`,i,()=>{m(n())}),W(e,i)}),k(t),z(()=>{t.open=B(o).level===`warn`,Y(n,`aria-label`,`${i()??``}: ${B(o).text??``}`),G(r,i()),Y(s,`data-level`,B(o).level),G(c,B(o).text)}),W(e,t)},d=M(()=>B(c).some(e=>e.job.kind===r()));K(l,e=>{B(d)&&e(u)}),W(e,s)});var _=R(g,2),y=e=>{var t=iC(),n=R(F(t),2),r=L(n,!0);k(t),z(()=>{n.disabled=QS.asked,G(r,QS.asked?`Sent to the agent`:B(l).length===1?`Ask the agent to fix it`:`Ask the agent to fix these`)}),H(`click`,n,()=>void QS.askToFix()),W(e,t)};K(_,e=>{B(l).length&&!QS.busy&&e(y)}),z(()=>{G(a,B(f)),o.disabled=QS.busy}),H(`click`,o,()=>void QS.check()),W(e,t)};K(x,e=>{!QS.sent.length&&!QS.flow?e(S):e(C,-1)}),k(b),Aa(b,e=>P(a,e),()=>B(a)),z(()=>{Y(d,`data-state`,B(s).state),Y(d,`title`,B(s).title),Y(d,`aria-expanded`,B(o)),Y(d,`popovertarget`,n),G(g,B(s).label),G(y,`Board: ${B(s).label??``}`),Y(b,`id`,n)}),V(`toggle`,b,e=>{P(o,e.newState===`open`),B(o)&&(h(),!QS.flow&&QS.sent.length&&QS.check())}),W(e,t)};K(_,e=>{Q.status&&e(y)}),W(e,g),j()}Xr([`click`]);var cC=U(`<button class="open svelte-zovg1u" type="button" popovertarget="help" aria-label="Shortcuts and legend" title="Shortcuts and legend (?)">?</button> <div class="sheet svelte-zovg1u" id="help" popover="" aria-label="Shortcuts and legend"><h2 class="svelte-zovg1u">Shortcuts</h2> <dl class="svelte-zovg1u"><dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">F</kbd></dt> <dd class="svelte-zovg1u">Fit the whole board in view</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">P</kbd>, <kbd class="svelte-zovg1u">Esc</kbd> to stop</dt> <dd class="svelte-zovg1u">Present: the board alone, full screen</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">E</kbd> / <kbd class="svelte-zovg1u">L</kbd></dt> <dd class="svelte-zovg1u">Edit view / Live view</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">V</kbd> / <kbd class="svelte-zovg1u">H</kbd>, hold <kbd class="svelte-zovg1u">Space</kbd></dt> <dd class="svelte-zovg1u">Select / move around the board</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">Cmd</kbd> or <kbd class="svelte-zovg1u">Ctrl</kbd> + <kbd class="svelte-zovg1u">Z</kbd></dt> <dd class="svelte-zovg1u">Undo (add <kbd class="svelte-zovg1u">Shift</kbd> to redo)</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">Cmd</kbd> or <kbd class="svelte-zovg1u">Ctrl</kbd> + <kbd class="svelte-zovg1u">A</kbd></dt> <dd class="svelte-zovg1u">Select every card</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">Tab</kbd>, then arrow keys</dt> <dd class="svelte-zovg1u">Move to a card, then move it</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">Delete</kbd></dt> <dd class="svelte-zovg1u">Remove the selected cards</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">?</kbd></dt> <dd class="svelte-zovg1u">This sheet</dd></dl> <h2 class="svelte-zovg1u">On the board</h2> <dl class="svelte-zovg1u"><dt class="svelte-zovg1u"><span class="cable svelte-zovg1u"></span></dt> <dd class="svelte-zovg1u">A cable: the app at its start calls your local copy of the app at its end. Drag from the ring on a card's edge, or
|
|
27
|
+
use the card's Cables field.</dd> <dt class="svelte-zovg1u"><span class="card svelte-zovg1u"></span></dt> <dd class="svelte-zovg1u">A tunnel to a database or cache the app uses</dd> <dt class="svelte-zovg1u"><span class="cable queue svelte-zovg1u"></span></dt> <dd class="svelte-zovg1u">A queue between apps: dashed while it is the deployed one, solid once its switch runs it locally</dd> <dt class="svelte-zovg1u"><span class="card outside svelte-zovg1u"></span></dt> <dd class="svelte-zovg1u">An outside system, such as a payment provider: it never runs here</dd> <dt class="svelte-zovg1u"><span class="protected svelte-zovg1u">Protected</span></dt> <dd class="svelte-zovg1u">A protected environment (production, usually): red marks only the frame. Red on the board always means something
|
|
28
|
+
failed.</dd> <dt class="svelte-zovg1u"><span class="calls svelte-zovg1u">Calls QA</span></dt> <dd class="svelte-zovg1u">Apps this one still calls in the deployed environment. Click one to run it locally too.</dd> <dt class="svelte-zovg1u">Zoomed out</dt> <dd class="svelte-zovg1u">Cards show only their state; zoom in to change them</dd></dl></div>`,1);function lC(e){let t=N(void 0),n=e=>{e.key!==`?`||e.target.closest(`input, select, textarea`)||B(t)?.togglePopover()};var r=cC();V(`keydown`,hn,n),Aa(R(I(r),2),e=>P(t,e),()=>B(t)),W(e,r)}var uC=U(`<p class="svelte-146fxte"> </p>`),dC=U(`<h4 class="svelte-146fxte"> </h4>`),fC=U(`<li> </li>`),pC=U(`<ul class="svelte-146fxte"></ul>`),mC=U(`<!> <!> <!>`,1),hC=U(`<span class="svelte-146fxte"> </span>`),gC=U(`<button class="choice svelte-146fxte" type="button"><strong> </strong><!></button>`),_C=U(`<div class="choices svelte-146fxte"></div>`),vC=U(`<!> <form class="svelte-146fxte"><textarea rows="1" placeholder="Or answer in your own words" aria-label="Your answer" class="svelte-146fxte"></textarea> <button type="submit" class="svelte-146fxte">Send</button></form> <button class="dismiss svelte-146fxte" type="button" title="Close this question without answering; the agent is not told">Dismiss</button>`,1),yC=U(`<p class="answered svelte-146fxte"> </p>`),bC=U(`<article><div class="meta svelte-146fxte"><span class="kind svelte-146fxte"> </span><time> </time></div> <h3 class="svelte-146fxte"> </h3> <!> <!> <!> <!></article>`);function xC(e,t){A(t,!0);let n={question:`Question`,result:`Done`,failure:`Failed`,info:`Update`},r=e=>e.kind===`question`&&!e.answered,i=(e=``)=>{let t=new Date(e),n=t.toDateString()===new Date().toDateString();return t.toLocaleString([],n?{hour:`2-digit`,minute:`2-digit`}:{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})},a=e=>{let t=e.answered;if(!t)return``;let n=e.choices?.find(e=>e.id===t.choice)?.label??t.choice;return`${t.via===`replaced`?`Closed: a newer run replaced it`:t.via===`dismissed`?`Dismissed`:t.via===`chat`?`Answered in the chat`:n?`You chose: ${n}`:`You answered: ${t.text??``}`}, ${i(t.at)}.`},o=(e,t)=>{e.preventDefault();let n=e.currentTarget.querySelector(`textarea`)?.value.trim();n&&ly.answer(t,{text:n})};var s=bC();let c;var l=F(s),u=F(l),d=L(u,!0),f=L(R(u),!0);k(l);var p=R(l,2),m=L(p,!0),h=R(p,2),g=e=>{var n=uC(),r=L(n,!0);z(()=>G(r,t.one.summary)),W(e,n)};K(h,e=>{t.one.summary&&e(g)});var _=R(h,2);q(_,17,()=>t.one.sections??[],Ti,(e,t)=>{var n=mC(),r=I(n),i=e=>{var n=dC(),r=L(n,!0);z(()=>G(r,B(t).title)),W(e,n)};K(r,e=>{B(t).title&&e(i)});var a=R(r,2);q(a,16,()=>B(t).commands??[],e=>e,(e,t)=>{gc(e,{get command(){return t}})});var o=R(a,2),s=e=>{var n=pC();q(n,21,()=>B(t).items,Ti,(e,t)=>{var n=fC(),r=L(n,!0);z(()=>G(r,B(t))),W(e,n)}),k(n),W(e,n)};K(o,e=>{B(t).items?.length&&e(s)}),W(e,n)});var v=R(_,2),y=e=>{var n=vC(),r=I(n),i=e=>{var n=_C();q(n,21,()=>t.one.choices,e=>e.id,(e,n)=>{var r=gC(),i=F(r),a=L(i,!0),o=R(i),s=e=>{var t=hC(),r=L(t,!0);z(()=>G(r,B(n).detail)),W(e,t)};K(o,e=>{B(n).detail&&e(s)}),k(r),z(()=>G(a,B(n).label)),H(`click`,r,()=>void ly.answer(t.one,{choice:B(n).id})),W(e,r)}),k(n),W(e,n)};K(r,e=>{t.one.choices?.length&&e(i)});var a=R(r,2),s=R(a,2);V(`submit`,a,e=>{o(e,t.one)}),H(`click`,s,()=>void ly.dismiss(t.one)),W(e,n)},b=M(()=>r(t.one));K(v,e=>{B(b)&&e(y)});var x=R(v,2),S=e=>{var n=yC(),r=L(n,!0);z(e=>G(r,e),[()=>a(t.one)]),W(e,n)};K(x,e=>{t.one.answered&&e(S)}),k(s),z((e,r)=>{Y(s,`data-kind`,t.one.kind),s.inert=t.past,c=J(s,1,`svelte-146fxte`,null,c,{waits:e,past:t.past}),G(d,n[t.one.kind]??`Update`),G(f,r),G(m,t.one.title)},[()=>r(t.one),()=>i(t.one.at)]),W(e,s),j()}Xr([`click`]);var SC=U(`<button type="button" class="svelte-1ekufpr">Clear</button>`),CC=U(`<li class="svelte-1ekufpr"><span class="what svelte-1ekufpr"> <small class="svelte-1ekufpr"> </small></span> <button type="button" class="svelte-1ekufpr">Drop</button></li>`),wC=U(`<section class="waiting svelte-1ekufpr" aria-labelledby="waiting-title"><h3 id="waiting-title" class="svelte-1ekufpr"> </h3> <p class="svelte-1ekufpr">Sent while no agent was connected. Of several runs and Stops only the newest is acted on. One gets them when
|
|
29
|
+
you run this in your agent session:</p> <!> <ul class="svelte-1ekufpr"></ul></section>`),TC=U(`<p class="none svelte-1ekufpr">The agent has said nothing yet.</p>`),EC=U(`<p class="none svelte-1ekufpr">Nothing yet. When the agent needs a decision about your run, or finishes one, it shows up here.</p>`),DC=U(`<p class="none svelte-1ekufpr">Nothing since the canvas started.</p>`),OC=U(`<details class="svelte-1ekufpr"><summary class="svelte-1ekufpr"> </summary> <!></details>`),kC=U(`<!> <!>`,1),AC=U(`<div class="panel svelte-1ekufpr" role="dialog" tabindex="-1" aria-label="Messages from the agent"><header class="svelte-1ekufpr"><h2 class="svelte-1ekufpr">Agent</h2> <span class="sub svelte-1ekufpr"> </span> <!> <button class="close svelte-1ekufpr" type="button" aria-label="Close"><!></button></header> <div class="list svelte-1ekufpr"><!> <!></div></div>`);function jC(e,t){A(t,!0);let n=N(void 0),r=M(()=>ly.messages),i=e=>e.kind===`question`&&!e.answered,a=e=>e.from===`koppler`&&!!e.answered,o=e=>!a(e)&&(!Q.status?.startedAt||(e.at??``)>=Q.status.startedAt||i(e)),s=M(()=>B(r).filter(o)),c=M(()=>B(r).filter(e=>!o(e))),l=e=>!i(e)&&(B(r)[0]!==e||e.answered?.via===`dismissed`||e.answered?.via===`replaced`);Fn(()=>{ly.open&&(B(n)?.querySelector(`.choice`)??B(n)?.querySelector(`.close`))?.focus()});var u=si(),d=I(u),f=e=>{var t=AC(),a=F(t),o=R(F(a),2),u=L(o,!0),d=R(o,2),f=e=>{var t=SC();H(`click`,t,()=>void ly.clear()),W(e,t)},p=M(()=>B(r).some(e=>!i(e)));K(d,e=>{B(p)&&e(f)});var m=R(d,2);Ua(F(m),{get of(){return to},size:14}),k(m),k(a);var h=R(a,2),g=F(h),_=e=>{var t=wC(),n=F(t),r=L(n),i=R(n,4);gc(i,{command:`/koppler-run connect`});var a=R(i,2);q(a,21,()=>ly.waiting,e=>e.key,(e,t)=>{var n=CC(),r=F(n),i=F(r,!0),a=L(R(i),!0);k(r);var o=R(r,2);k(n),z(e=>{G(i,B(t).what),G(a,e),Y(o,`aria-label`,`Drop: ${B(t).what??``}`)},[()=>zb(B(t).at)]),H(`click`,o,()=>void ly.drop(B(t).key)),W(e,n)}),k(a),k(t),z(()=>G(r,`Waiting for an agent (${ly.waiting.length??``})`)),W(e,t)};K(g,e=>{ly.waiting.length&&e(_)});var v=R(g,2),y=e=>{W(e,TC())},b=e=>{W(e,EC())},x=e=>{var t=kC(),n=I(t);q(n,17,()=>B(s),e=>e.id,(e,t)=>{{let n=M(()=>l(B(t)));xC(e,{get one(){return B(t)},get past(){return B(n)}})}},e=>{W(e,DC())});var r=R(n,2),i=e=>{var t=OC(),n=F(t),r=L(n);q(R(n,2),17,()=>B(c),e=>e.id,(e,t)=>{{let n=M(()=>l(B(t)));xC(e,{get one(){return B(t)},get past(){return B(n)}})}}),k(t),z(()=>G(r,`Earlier (${B(c).length??``})`)),W(e,t)};K(r,e=>{B(c).length&&e(i)}),W(e,t)};K(v,e=>{!B(r).length&&ly.waiting.length?e(y):B(r).length?e(x,-1):e(b,1)}),k(h),k(t),Aa(t,e=>P(n,e),()=>B(n)),z(()=>G(u,ly.question?`Waiting for your answer`:``)),H(`keydown`,t,e=>{e.key===`Escape`&&(ly.open=!1)}),H(`click`,m,()=>ly.open=!1),W(e,t)};K(d,e=>{ly.open&&e(f)}),W(e,u),j()}Xr([`keydown`,`click`]);var MC=new Set([`$$slots`,`$$events`,`$$legacy`]);function NC(e,t){let n=La(t,MC),r={name:`pin`,size:24,node:[[`path`,{d:`M12 17v5`}],[`path`,{d:`M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var PC=new Set([`$$slots`,`$$events`,`$$legacy`]);function FC(e,t){let n=La(t,PC),r={name:`pin-off`,size:24,node:[[`path`,{d:`M12 17v5`}],[`path`,{d:`M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89`}],[`path`,{d:`m2 2 20 20`}],[`path`,{d:`M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var IC=U(`<small class="svelte-i7whuv"> </small>`),LC=U(`<div class="run svelte-i7whuv"><div class="head note svelte-i7whuv"><span class="what svelte-i7whuv"> <!></span> <time class="svelte-i7whuv"> </time></div></div>`),RC=U(`<span class="changes svelte-i7whuv" title="Code changes Koppler made in your repos"> </span>`),zC=U(`<p class="reason svelte-i7whuv"> </p>`),BC=U(`<span> <!></span>`),VC=U(`<li class="svelte-i7whuv"><span class="verb svelte-i7whuv"> </span> <span class="apps svelte-i7whuv"></span></li>`),HC=U(`<span class="del svelte-i7whuv"><b aria-hidden="true" class="svelte-i7whuv">-</b><span class="sr svelte-i7whuv">removed: </span> </span>`),UC=U(`<span class="add svelte-i7whuv"><b aria-hidden="true" class="svelte-i7whuv">+</b><span class="sr svelte-i7whuv">added: </span> </span>`),WC=U(`<span class="svelte-i7whuv">No lines recorded.</span>`),GC=U(`<figure class="svelte-i7whuv"><figcaption class="svelte-i7whuv"><code class="svelte-i7whuv"> </code> <span class="svelte-i7whuv"> </span></figcaption> <pre class="svelte-i7whuv"><!><!><!></pre></figure>`),KC=U(`<h4 class="svelte-i7whuv"> </h4> <!>`,1),qC=U(`<div class="diffs svelte-i7whuv"><h3 class="svelte-i7whuv">Code changes in your repos</h3> <!></div>`),JC=U(`<button type="button" class="svelte-i7whuv"> </button>`),YC=U(`<div class="logs svelte-i7whuv"><h3 class="svelte-i7whuv">Logs</h3> <!> <button class="pin svelte-i7whuv" type="button"><!> </button></div>`),XC=U(`<button class="back svelte-i7whuv" type="button">Put this board back</button>`),ZC=U(`<ul class="plan svelte-i7whuv"></ul> <!> <!> <!>`,1),QC=U(`<div class="run svelte-i7whuv"><button class="head svelte-i7whuv" type="button"><span class="what svelte-i7whuv"> <!></span> <!> <span class="state svelte-i7whuv"> </span> <time class="svelte-i7whuv"> </time></button> <!> <!></div>`);function $C(e,t){A(t,!0);let n=[[`starts`,`Starts`],[`restarts`,`Restarts`],[`stops`,`Stops and reverts`],[`keeps`,`Keeps running`]],r={waiting:`Waiting for the agent`,applying:`Being applied`,done:`Done`,failed:`Failed`,replaced:`Replaced by a newer run`},i={"stop-apps":`Apps stopped, changes kept`,"stop-all":`Everything stopped, changes kept`,"canvas-closed":`Canvas closed`},a=Z.nameOf,o=M(()=>{let e=new Date(t.run.at??``),n=e.toDateString()===new Date().toDateString();return e.toLocaleString([],n?{hour:`2-digit`,minute:`2-digit`}:{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}),s=M(()=>[...new Set((t.run.changes??[]).map(e=>e.app))]);var c=si(),l=I(c),u=e=>{let n=M(()=>(t.run.stopped??[]).map(a).join(`, `));var r=LC(),s=F(r),c=F(s),l=F(c,!0),u=R(l),d=e=>{var t=IC(),r=L(t,!0);z(()=>{Y(t,`title`,B(n)),G(r,B(n))}),W(e,t)};K(u,e=>{B(n)&&e(d)}),k(c);var f=L(R(c,2),!0);k(s),k(r),z(()=>{G(l,i[t.run.note]??`Stopped`),G(f,B(o))}),W(e,r)},d=e=>{let i=M(()=>Object.keys(t.run.nodes??{}).map(a).join(`, `));var c=QC(),l=F(c),u=F(l),d=F(u,!0),f=R(d),p=e=>{var t=IC(),n=L(t,!0);z(()=>{Y(t,`title`,B(i)),G(n,B(i))}),W(e,t)};K(f,e=>{B(i)&&e(p)}),k(u);var m=R(u,2),h=e=>{var n=RC(),r=L(n);z(()=>G(r,`${t.run.changes.length??``} ${t.run.changes.length===1?`change`:`changes`}`)),W(e,n)};K(m,e=>{t.run.changes?.length&&e(h)});var g=R(m,2),_=L(g,!0),y=L(R(g,2),!0);k(l);var b=R(l,2),x=e=>{var n=zC(),r=L(n,!0);z(()=>G(r,t.run.reason)),W(e,n)};K(b,e=>{t.run.reason&&e(x)});var S=R(b,2),C=e=>{var r=ZC(),o=I(r);q(o,21,()=>n,([e,t])=>e,(e,n)=>{var r=M(()=>v(B(n),2));let i=()=>B(r)[0],o=()=>B(r)[1];var s=si(),c=I(s),l=e=>{var n=VC(),r=F(n),s=L(r,!0),c=R(r,2);q(c,21,()=>t.run.plan[i()],e=>e.id,(e,t)=>{var n=BC(),r=F(n,!0),i=R(r),o=e=>{var n=IC(),r=L(n,!0);z(e=>G(r,e),[()=>B(t).why.join(`; `)]),W(e,n)};K(i,e=>{B(t).why?.length&&e(o)}),k(n),z(e=>G(r,e),[()=>a(B(t).id)]),W(e,n)}),k(c),k(n),z(()=>{Y(r,`data-verb`,i()),G(s,o())}),W(e,n)};K(c,e=>{t.run.plan?.[i()]?.length&&e(l)}),W(e,s)}),k(o);var c=R(o,2),l=e=>{var n=qC();q(R(F(n),2),16,()=>B(s),e=>e,(e,n)=>{var r=KC(),i=I(r),o=L(i,!0);q(R(i,2),17,()=>t.run.changes.filter(e=>e.app===n),e=>e.title+(e.file??``),(e,t)=>{var n=GC(),r=F(n),i=F(r),a=L(i,!0),o=L(R(i,2));k(r);var s=R(r,2),c=F(s);q(c,17,()=>B(t).removed??[],Ti,(e,t)=>{var n=HC(),r=R(F(n),2,!0);k(n),z(()=>G(r,B(t))),W(e,n)});var l=R(c);q(l,17,()=>B(t).added??[],Ti,(e,t)=>{var n=UC(),r=R(F(n),2,!0);k(n),z(()=>G(r,B(t))),W(e,n)});var u=R(l),d=e=>{W(e,WC())};K(u,e=>{!B(t).removed?.length&&!B(t).added?.length&&e(d)}),k(s),k(n),z(()=>{G(a,B(t).file||B(t).title),G(o,`${(B(t).file?B(t).title:``)??``}${B(t).fresh?``:` (from an earlier run)`}`)}),W(e,n)}),z(e=>G(o,e),[()=>a(n)]),W(e,r)}),k(n),W(e,n)};K(c,e=>{t.run.changes?.length&&e(l)});var u=R(c,2),d=e=>{let n=M(()=>t.run.id);var r=YC(),i=R(F(r),2);q(i,16,()=>t.run.logs,e=>e,(e,t)=>{var r=JC(),i=L(r,!0);z(e=>G(i,e),[()=>a(t)]),H(`click`,r,()=>{Nb.open(t,B(n))}),W(e,r)});var o=R(i,2),s=F(o);{let e=M(()=>t.run.pinned?FC:NC);Ua(s,{get of(){return B(e)},size:13})}var c=R(s,1,!0);k(o),k(r),z(()=>{Y(o,`aria-pressed`,!!t.run.pinned),Y(o,`title`,t.run.pinned?`Kept for good. Unpin to let them go with the oldest runs.`:`Keep these logs: the newest 20 runs keep theirs, older ones are let go.`),G(c,t.run.pinned?`Unpin`:`Pin`)}),H(`click`,o,()=>void oo(`run-pin`,{id:B(n),on:!t.run.pinned})),W(e,r)};K(u,e=>{t.run.logs?.length&&t.run.id&&e(d)});var f=R(u,2),p=e=>{var n=XC();H(`click`,n,function(...e){t.back?.apply(this,e)}),W(e,n)};K(f,e=>{B(i)&&e(p)}),W(e,r)};K(S,e=>{t.open&&e(C)}),k(c),z(e=>{Y(l,`aria-expanded`,t.open),G(d,e),Y(g,`data-state`,t.run.state),G(_,r[t.run.state??``]??t.run.state),G(y,B(o))},[()=>t.run.kind===`stop`?`Stop and revert`:`${(t.run.env??``).toUpperCase()}, ${t.run.mode??`auto`}`]),H(`click`,l,function(...e){t.toggle?.apply(this,e)}),W(e,c)};K(l,e=>{t.run.note?e(u):e(d,-1)}),W(e,c),j()}Xr([`click`]);var ew=U(`<p class="none svelte-16dstxb">No runs yet. Each run and Stop shows up here with how it ended.</p>`),tw=U(`<p class="none svelte-16dstxb">No runs since the canvas started.</p>`),nw=U(`<details class="svelte-16dstxb"><summary class="svelte-16dstxb"> </summary> <!></details>`),rw=U(`<!> <!>`,1),iw=U(`<button type="button" aria-label="History" aria-haspopup="dialog">History</button> <div class="pop svelte-16dstxb" popover="" role="dialog" tabindex="-1" aria-label="History"><!></div>`,1);function aw(e,t){let n=ci();A(t,!0);let r=N(void 0),i=N(void 0),a=N(!1),o=N(null),s=M(()=>!!Q.status?.runs?.some(e=>e.state===`waiting`)),c=M(()=>[...Q.status?.runs??[],...Q.status?.notes??[]].sort((e,t)=>(t.at??``).localeCompare(e.at??``))),l=e=>!Q.status?.startedAt||(e.at??``)>=Q.status.startedAt||e.state===`waiting`||e.state===`applying`,u=M(()=>B(c).filter(l)),d=M(()=>B(c).filter(e=>!l(e))),f=(e=``)=>{let t=new Date(e),n=t.toDateString()===new Date().toDateString();return t.toLocaleString([],n?{hour:`2-digit`,minute:`2-digit`}:{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})},p=()=>{let e=B(r)?.getBoundingClientRect();e&&B(i)&&(B(i).style.top=`${String(e.bottom+6)}px`,B(i).style.right=`${String(Math.max(12,innerWidth-e.right))}px`)},m=e=>{B(i)?.hidePopover(),Fb({name:`Run from ${f(e.at)}`,version:1,nodes:e.nodes??{},edges:e.edges??[]})};var h=iw(),g=I(h);let _;Aa(g,e=>P(r,e),()=>B(r));var v=R(g,2),y=F(v),b=e=>{W(e,ew())},x=e=>{var t=rw(),n=I(t);q(n,17,()=>B(u),e=>e.id??e.at,(e,t)=>{{let n=M(()=>B(o)===B(t).id);$C(e,{get run(){return B(t)},get open(){return B(n)},toggle:()=>P(o,B(o)===B(t).id?null:B(t).id??null,!0),back:()=>{m(B(t))}})}},e=>{W(e,tw())});var r=R(n,2),i=e=>{var t=nw(),n=F(t),r=L(n);q(R(n,2),17,()=>B(d),e=>e.id??e.at,(e,t)=>{{let n=M(()=>B(o)===B(t).id);$C(e,{get run(){return B(t)},get open(){return B(n)},toggle:()=>P(o,B(o)===B(t).id?null:B(t).id??null,!0),back:()=>{m(B(t))}})}}),k(t),z(()=>G(r,`Earlier (${B(d).length??``})`)),W(e,t)};K(r,e=>{B(d).length&&e(i)}),W(e,t)};K(y,e=>{B(c).length?e(x,-1):e(b)}),k(v),Aa(v,e=>P(i,e),()=>B(i)),z(()=>{_=J(g,1,`open svelte-16dstxb`,null,_,{waiting:B(s)}),Y(g,`aria-expanded`,B(a)),Y(g,`title`,B(s)?`A run is waiting for the agent`:`Every run and Stop, and how it ended`),Y(g,`popovertarget`,n),Y(v,`id`,n)}),V(`toggle`,v,e=>{P(a,e.newState===`open`),B(a)&&p()}),W(e,h),j()}var ow=U(`<button class="open svelte-1la1tzd" type="button">Traces</button>`);function sw(e,t){A(t,!0);let n=M(()=>Q.status?.traces?.state??`off`),r=async()=>{if(B(n)===`on`){window.open(Q.status?.traces?.view??``,`_blank`,`noopener`);return}if(B(n)===`starting`)return;let e=await oo(`traces`,{on:!0});`error`in e?$.show(e.error,`warning`):$.show(`Collecting traces. Apps started from now on send theirs; restart the running ones to include them.`)};var i=ow();z(()=>{Y(i,`data-state`,B(n)),Y(i,`aria-label`,B(n)===`on`?`Open traces`:B(n)===`starting`?`Traces are starting`:`Collect traces`),Y(i,`title`,B(n)===`on`?`Follow one request across your local apps, to where it failed`:B(n)===`starting`?`Starting the trace collector (Jaeger in Docker)`:`Collect traces from the apps Koppler starts (Jaeger in Docker)`)}),H(`click`,i,()=>void r()),W(e,i),j()}Xr([`click`]);var cw=new Set([`$$slots`,`$$events`,`$$legacy`]);function lw(e,t){let n=La(t,cw),r={name:`pencil`,size:24,node:[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`}],[`path`,{d:`m15 5 4 4`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var uw={verbose:`debug`,trace:`debug`,debug:`debug`,dbg:`debug`,information:`info`,info:`info`,inf:`info`,warning:`warn`,warn:`warn`,wrn:`warn`,error:`error`,err:`error`,fatal:`error`,critical:`error`,crit:`error`},dw=e=>e==null?``:typeof e==`string`?e:JSON.stringify(e),fw=e=>uw[dw(e).toLowerCase()]??`info`;function pw(e){let t=/T?(\d{2}:\d{2}:\d{2})/.exec(dw(e))?.[1];if(!t)return``;let n=new Date(dw(e));return Number.isNaN(n.getTime())?t:n.toTimeString().slice(0,8)}var mw=(e,t)=>dw(e).replace(/\{[@$]?([\w.]+)(?:[,:][^}]*)?\}/g,(e,n)=>n in t?dw(t[n]):e);function hw(e){if(!e.startsWith(`{`)||!e.endsWith(`}`))return null;let t;try{t=JSON.parse(e)}catch{return null}if(typeof t!=`object`||!t)return null;let n=t;if(`@t`in n||`@m`in n||`@mt`in n)return{time:pw(n[`@t`]),level:fw(n[`@l`]??`Information`),text:dw(n[`@m`]??mw(n[`@mt`],n)),detail:dw(n[`@x`])};if(`Timestamp`in n||`MessageTemplate`in n||`RenderedMessage`in n){let e=n.Properties??{};return{time:pw(n.Timestamp),level:fw(n.Level),text:dw(n.RenderedMessage??mw(n.MessageTemplate,e)),detail:dw(n.Exception)}}return null}var gw=/\\?\^?\[\[?\d+m|\x1b\[[0-9;]*m/g,_w=[[/^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z?)\s+(INF|ERR|WRN|DBG)\s+(.*)$/,e=>({time:pw(e[1]),level:fw(e[2]),text:e[3]??``,detail:``})],[/^\[(\d{2}:\d{2}:\d{2})\s+(\w+)\]\s*(.*)$/,e=>({time:e[1]??``,level:fw(e[2]),text:e[3]??``,detail:``})],[/^\d{4}-\d{2}-\d{2} (\d{2}:\d{2}:\d{2}) \$ (.*)$/,e=>({time:e[1]??``,level:`start`,text:e[2]??``,detail:``})],[/^flutter: (.*)$/s,e=>({time:``,level:/(^|\s)(Exception|Error)\b|\[31m/.test(e[1]??``)?`error`:`info`,text:(e[1]??``).replace(gw,``),detail:``})],[/^(.*?\.cs)\((\d+),\d+\): (warning|error) (\w+): (.*?)(?: \[[^\]]+\])?$/,e=>({time:``,level:e[3]===`error`?`error`:`warn`,build:!0,text:`${e[4]??``} ${(e[1]??``).split(`/`).slice(-2).join(`/`)}:${e[2]??``} ${e[5]??``}`,detail:``})],[/^koppler: (.*)$/s,e=>({time:``,level:`koppler`,text:e[1]??``,detail:``})]];function vw(e){let t=e.trim(),n=hw(t);if(n)return n;for(let[e,n]of _w){let r=e.exec(t);if(r)return n(r)}return{time:``,level:/\b(error|exception|fail(ed|ure)?|unhandled)\b/i.test(t)?`error`:/\bwarn(ing)?\b/i.test(t)?`warn`:`info`,text:t,detail:``}}var yw=/^flutter: (#\d+\s|<asynchronous suspension>|\s*-- \S)/,bw=(e,t)=>yw.test(e)&&t.level===`error`||/^\s+(at |---|\.\.\.)/.test(e)||/^\s{2,}\S/.test(e);function xw(e,t,n,r){if(!t.trim())return;let i=e.at(-1);if(i&&r(i)&&bw(t,i)){i.detail+=(i.detail?`
|
|
30
|
+
`:``)+t.replace(/^flutter: /,``).trim();return}let a=vw(t);a.build&&a.level===`warn`&&i&&r(i)&&i.group===`build`&&i.items?(i.items.push(a.text),i.text=`${String(i.items.length)} build warnings`):a.build&&a.level===`warn`?e.push(n({time:``,level:`warn`,group:`build`,items:[a.text],text:`1 build warning`,detail:``})):e.push(n(a))}function Sw(e){let t=[];for(let{app:n,at:r,approx:i,line:a}of e)xw(t,a,e=>({...e,app:n,at:r,approx:i}),e=>e.app===n);return t}function Cw(e){let t=[];for(let n of(e??``).split(`
|
|
31
|
+
`))xw(t,n,e=>e,()=>!0);return t}var ww=U(`<span><button type="button" role="tab" class="svelte-1feoaw6"><span class="live svelte-1feoaw6" aria-hidden="true"></span> </button> <button class="x svelte-1feoaw6" type="button"><!></button></span>`),Tw=U(`<button type="button" title="Hide what is in this log so far; new lines keep coming. The log file is not touched." class="svelte-1feoaw6">Clear</button> <button type="button" title="Show the log exactly as the app wrote it" class="svelte-1feoaw6">Raw</button>`,1),Ew=U(`<input maxlength="24"/>`),Dw=U(`<span><button type="button" class="svelte-1feoaw6"> </button><button type="button" class="rename svelte-1feoaw6" title="Give it a short name in this log"><!></button></span>`),Ow=U(`<label class="svelte-1feoaw6"><input type="radio"/> </label>`),kw=U(`<span class="opt-label svelte-1feoaw6" aria-hidden="true"> </span> <span class="seg svelte-1feoaw6" role="radiogroup"></span>`,1),Aw=U(`<div class="apps svelte-1feoaw6" role="group" aria-label="Apps in this log"><!> <span class="opts svelte-1feoaw6"></span></div>`),jw=U(`<p class="empty svelte-1feoaw6"> </p>`),Mw=U(`<div><button type="button" class="n svelte-1feoaw6"> </button></div>`),Nw=U(`<button type="button"> </button>`),Pw=U(`<details class="m svelte-1feoaw6"><summary class="svelte-1feoaw6"> </summary><span class="x svelte-1feoaw6"> </span></details>`),Fw=U(`<span class="x svelte-1feoaw6"> </span>`),Iw=U(`<span class="m svelte-1feoaw6"> </span> <!>`,1),Lw=U(`<!> <div class="row svelte-1feoaw6"><span> </span><span class="l svelte-1feoaw6"> </span> <!> <!></div>`,1),Rw=U(`<!> <!>`,1),zw=U(`<div class="row svelte-1feoaw6"><span class="t svelte-1feoaw6"> </span><span class="l svelte-1feoaw6"> </span> <!></div>`),Bw=U(`<section aria-label="App log"><div class="grip svelte-1feoaw6" role="separator" aria-orientation="horizontal" aria-label="Resize the log" tabindex="0" title="Drag to resize. Double-click to switch between big and small."></div> <header class="svelte-1feoaw6"><div class="tabs svelte-1feoaw6" role="tablist"><span><button type="button" role="tab" class="svelte-1feoaw6"> </button></span> <!></div> <span class="meta svelte-1feoaw6"> </span> <!> <button type="button" class="svelte-1feoaw6"> </button> <button type="button" class="svelte-1feoaw6">Close all</button></header> <!> <div role="log"><!></div></section>`);function Vw(e,t){A(t,!0);let n={debug:`DEBUG`,warn:`WARN`,error:`ERROR`,koppler:`KOPPLER`,start:`START`},r=M(()=>Nb.active),i=M(()=>B(r)?Nb.text(B(r)):``),a=M(()=>{let e={};return(Nb.raw?[]:Cw(B(i))).map(t=>{let n=`${t.time} ${t.text}`,r=e[n]=(e[n]??0)+1;return{...t,key:`${n}#${String(r)}`}})}),o=[[`every`,`Every line`],[`change`,`App changes`]],s=[[`run`,`Since the run`],[`hour`,`Last hour`],[`lines`,`Last 2,000 lines`]],c=M(()=>[{label:`Name`,value:Nb.names,choices:o,set:e=>{Nb.setNames(e)}},{label:`Show`,value:Nb.since,choices:s,set:e=>{Nb.setSince(e)}}]),l=M(()=>B(r)===`*`),u=e=>`${new Date(e).toLocaleTimeString([],{hour12:!1})}.${String(e%1e3).padStart(3,`0`)}`,d=M(()=>Math.min(32,Math.max(4,...Z.nodes.map(e=>Z.logName(e.id).length)))),f=N(null),p=M(()=>Nb.names===`change`),m=M(()=>Object.fromEntries(Z.nodes.map(e=>[e.id,e.data.kind]))),h=M(()=>{if(!B(l))return[];let e={};return Sw(Nb.all.filter(e=>!Z.hiddenLogs[e.app])).map((t,n,r)=>{let i=`${t.app} ${String(t.at)} ${t.text}`,a=e[i]=(e[i]??0)+1,o=Nb.names===`every`||r[n-1]?.app!==t.app;return{...t,named:o,key:`${i}#${String(a)}`}})}),g=N(void 0),_=N(void 0),y=`koppler-logs-height`,b=N(fn((()=>{try{return Number(localStorage.getItem(y))||0}catch{return 0}})())),x=N(!1),S=()=>B(_)?.parentElement?.getBoundingClientRect().height??0,C=e=>{if(S()){P(b,Math.min(Math.max(e,120),S()-60)/S());try{localStorage.setItem(y,String(B(b)))}catch{}}},w=()=>B(_)?.getBoundingClientRect().height??0,T=M(()=>B(b)>.6),ee=()=>{C(S()*(B(T)?.38:.85))},te=e=>{e.preventDefault();let t=e.clientY,n=w();P(x,!0);let r=e=>{C(n+t-e.clientY)};addEventListener(`pointermove`,r),addEventListener(`pointerup`,()=>{removeEventListener(`pointermove`,r),P(x,!1)},{once:!0})},E=e=>{(e.key===`ArrowUp`||e.key===`ArrowDown`)&&(e.preventDefault(),C(w()+(e.key===`ArrowUp`?40:-40)))},ne=null;Fn(()=>{Q.status&&Nb.refresh()}),Fn(()=>{Nb.reload()}),Ln(()=>{if(!B(g))return;let e=B(l)?B(h).length:B(i),t=ne!==B(r)||!e||B(g).scrollHeight-B(g).scrollTop-B(g).clientHeight<24;ne=B(r);let n=B(g);t&&requestAnimationFrame(()=>{n.scrollTop=n.scrollHeight})});var D=si(),re=I(D),ie=e=>{var t=Bw();let o,s;var y=F(t),S=R(y,2),C=F(S),w=F(C);let ne;var D=F(w),re=L(D,!0);k(w),q(R(w,2),16,()=>Nb.tabs,e=>e,(e,t)=>{let n=M(()=>Nb.past(t)?null:Q.up(t));var i=ww();let a;var o=F(i),s=F(o),c=R(s,1,!0);k(o);var l=R(o,2);Ua(F(l),{get of(){return to},size:14}),k(l),k(i),z((e,u)=>{a=J(i,1,`tab svelte-1feoaw6`,null,a,{on:t===B(r)}),Y(o,`aria-selected`,t===B(r)),Y(s,`data-on`,B(n)),G(c,e),Y(l,`aria-label`,`Close ${u??``} log`)},[()=>Nb.label(t),()=>Nb.label(t)]),H(`click`,o,()=>{Nb.active=t}),H(`click`,l,()=>{Nb.close(t)}),W(e,i)}),k(C);var ie=R(C,2),ae=L(ie,!0),oe=R(ie,2),se=e=>{},ce=e=>{var t=Tw(),n=I(t),r=R(n,2);z(()=>Y(r,`aria-pressed`,Nb.raw)),H(`click`,n,()=>{Nb.clear()}),H(`click`,r,()=>Nb.raw=!Nb.raw),W(e,t)};K(oe,e=>{B(l)?e(se):e(ce,-1)});var le=R(oe,2),ue=L(le,!0),de=R(le,2);k(S);var fe=R(S,2),pe=e=>{var t=Aw(),n=F(t);q(n,17,()=>Z.nodes,e=>e.id,(e,t)=>{let n=M(()=>Z.logName(B(t).id));var r=si(),i=I(r),a=e=>{var r=Ew();fa(r),gt(r,!0),z((e,i)=>{J(r,1,`tag kind-${B(t).data.kind??``}`,`svelte-1feoaw6`),Y(r,`aria-label`,`Name for ${e??``} in this log`),pa(r,B(n)),Y(r,`size`,i)},[()=>Z.nameOf(B(t).id),()=>Math.max(4,B(n).length)]),H(`keydown`,r,e=>{e.key===`Enter`&&e.currentTarget.blur(),e.key===`Escape`&&P(f,null)}),V(`blur`,r,e=>{B(f)===B(t).id&&Z.aliasLog(B(t).id,e.currentTarget.value),P(f,null)}),W(e,r)},o=e=>{var r=Dw();let i;var a=F(r),o=L(a,!0),s=R(a);Ua(F(s),{get of(){return lw},size:11}),k(s),k(r),z(e=>{i=J(r,1,`tag kind-${B(t).data.kind??``}`,`svelte-1feoaw6`,i,{off:Z.hiddenLogs[B(t).id]}),Y(a,`aria-pressed`,!Z.hiddenLogs[B(t).id]),Y(a,`title`,Z.hiddenLogs[B(t).id]?`Show ${B(n)} in this log`:`Leave ${B(n)} out of this log`),G(o,B(n)),Y(s,`aria-label`,`Rename ${e??``} in this log`)},[()=>Z.nameOf(B(t).id)]),H(`click`,a,()=>{Z.showLog(B(t).id,!!Z.hiddenLogs[B(t).id])}),H(`click`,s,()=>{P(f,B(t).id,!0)}),W(e,r)};K(i,e=>{B(f)===B(t).id?e(a):e(o,-1)}),W(e,r)});var r=R(n,2);q(r,21,()=>B(c),e=>e.label,(e,t)=>{var n=kw(),r=I(n),i=L(r,!0),a=R(r,2);q(a,21,()=>B(t).choices,([e,t])=>e,(e,n,r,i)=>{var a=M(()=>v(B(n),2));let o=()=>B(a)[0],s=()=>B(a)[1];var c=Ow(),l=F(c);fa(l);var u=R(l,1,!0);k(c),z(()=>{Y(l,`name`,`log-${B(t).label??``}`),pa(l,o()),ma(l,B(t).value===o()),G(u,s())}),H(`change`,l,()=>{B(t).set(o())}),W(e,c)}),k(a),z(()=>{G(i,B(t).label),Y(a,`aria-label`,B(t).label)}),W(e,n)}),k(r),k(t),W(e,t)};K(fe,e=>{B(l)&&e(pe)});var me=R(fe,2);let he,ge;var _e=F(me),ve=e=>{var t=Rw(),r=I(t),i=e=>{var t=jw(),n=L(t,!0);z(e=>G(n,e),[()=>Nb.allApps().length?`No lines yet from the apps on the board.`:`No apps on the board to show.`]),W(e,t)};K(r,e=>{B(h).length||e(i)}),q(R(r,2),17,()=>B(h),e=>e.key,(e,t)=>{var r=Lw(),i=I(r),a=e=>{var n=Mw(),r=F(n),i=L(r,!0);k(n),z((e,a)=>{J(n,1,`switch kind-${B(m)[B(t).app]??``}`,`svelte-1feoaw6`),Y(r,`title`,`Leave ${e??``} out of this log`),G(i,a)},[()=>Z.logName(B(t).app),()=>Z.logName(B(t).app)]),H(`click`,r,()=>{Z.showLog(B(t).app,!1)}),W(e,n)};K(i,e=>{B(p)&&B(t).named&&e(a)});var o=R(i,2),s=F(o);let c;var l=L(s,!0),d=R(s),f=L(d,!0),h=R(d,2),g=e=>{},_=e=>{var n=Nw(),r=L(n,!0);z((e,i)=>{J(n,1,`n kind-${B(m)[B(t).app]??``}`,`svelte-1feoaw6`),Y(n,`title`,`Leave ${e??``} out of this log`),G(r,i)},[()=>Z.logName(B(t).app),()=>Z.logName(B(t).app)]),H(`click`,n,()=>{Z.showLog(B(t).app,!1)}),W(e,n)};K(h,e=>{B(p)?e(g):B(t).named&&e(_,1)});var v=R(h,2),y=e=>{var n=Pw(),r=F(n),i=L(r,!0),a=L(R(r),!0);k(n),z(e=>{G(i,B(t).text),G(a,e)},[()=>B(t).items.join(`
|
|
32
|
+
`)]),W(e,n)},b=e=>{var n=Iw(),r=I(n),i=L(r,!0),a=R(r,2),o=e=>{var n=Fw(),r=L(n,!0);z(()=>G(r,B(t).detail)),W(e,n)};K(a,e=>{B(t).detail&&e(o)}),z(()=>G(i,B(t).text)),W(e,n)};K(v,e=>{B(t).items?e(y):e(b,-1)}),k(o),z(e=>{Y(o,`data-level`,B(t).level),c=J(s,1,`t svelte-1feoaw6`,null,c,{approx:B(t).approx}),Y(s,`title`,B(t).approx?`Approximate: the time Koppler first read this line`:void 0),G(l,e),G(f,n[B(t).level]??``)},[()=>u(B(t).at)]),W(e,r)}),W(e,t)},ye=e=>{var t=jw(),n=L(t,!0);z(()=>G(n,Nb.cleared[B(r)]?`Cleared. New lines show up here.`:`No output captured for this app. Apps started from an IDE keep their output there.`)),W(e,t)},be=e=>{var t=oi();z(()=>G(t,B(i))),W(e,t)},xe=e=>{var t=si();q(I(t),17,()=>B(a),e=>e.key,(e,t)=>{var r=zw(),i=F(r),a=L(i,!0),o=R(i),s=L(o,!0),c=R(o,2),l=e=>{var n=Pw(),r=F(n),i=L(r,!0),a=L(R(r),!0);k(n),z(e=>{G(i,B(t).text),G(a,e)},[()=>B(t).items.join(`
|
|
33
|
+
`)]),W(e,n)},u=e=>{var n=Iw(),r=I(n),i=L(r,!0),a=R(r,2),o=e=>{var n=Fw(),r=L(n,!0);z(()=>G(r,B(t).detail)),W(e,n)};K(a,e=>{B(t).detail&&e(o)}),z(()=>G(i,B(t).text)),W(e,n)};K(c,e=>{B(t).items?e(l):e(u,-1)}),k(r),z(()=>{Y(r,`data-level`,B(t).level),G(a,B(t).time),G(s,n[B(t).level]??``)}),W(e,r)}),W(e,t)};K(_e,e=>{B(l)?e(ve):B(i)?Nb.raw?e(be,2):e(xe,-1):e(ye,1)}),k(me),Aa(me,e=>P(g,e),()=>B(g)),k(t),Aa(t,e=>P(_,e),()=>B(_)),z((e,n,r,i,a)=>{o=J(t,1,`logs svelte-1feoaw6`,null,o,{dragging:B(x)}),s=Ji(t,``,s,{height:e}),ne=J(w,1,`tab svelte-1feoaw6`,null,ne,{on:B(l)}),Y(D,`aria-selected`,B(l)),G(re,n),G(ae,r),G(ue,B(T)?`Shrink`:`Expand`),he=J(me,1,`body svelte-1feoaw6`,null,he,{raw:Nb.raw&&!B(l),all:B(l),"by-change":B(l)&&B(p),"no-time":i}),ge=Ji(me,``,ge,{"--name":a})},[()=>B(b)?`${String(B(b)*100)}%`:void 0,()=>Nb.label(`*`),()=>B(l)||(Nb.past(B(r))?B(i):Q.tail(B(r)))?``:`no log yet`,()=>!B(l)&&!B(a).some(e=>e.time),()=>`${String(B(d))}ch`]),H(`pointerdown`,y,te),H(`dblclick`,y,ee),H(`keydown`,y,E),H(`click`,D,()=>{Nb.active=`*`}),H(`click`,le,ee),H(`click`,de,()=>{Nb.closeAll()}),W(e,t)};K(re,e=>{B(r)&&e(ie)}),W(e,D),j()}Xr([`pointerdown`,`dblclick`,`keydown`,`click`,`change`]);var Hw=ai(`<svg class="mark svelte-48cxw8" viewBox="0 0 64 64" aria-hidden="true"><rect x="10" y="8" width="10" height="48" rx="5" fill="var(--ink)"></rect><path d="M20 32 C 34 32, 34 14, 47 14 M20 32 C 34 32, 34 50, 47 50" fill="none" stroke="var(--local)" stroke-linecap="round"></path><circle cx="49" cy="14" r="7.5" fill="var(--ink)"></circle><circle cx="49" cy="50" r="7.5" fill="var(--ink)"></circle><circle cx="49" cy="14" r="2.5" fill="var(--panel)"></circle><circle cx="49" cy="50" r="2.5" fill="var(--panel)"></circle></svg>`);function Uw(e,t){let n=X(t,`size`,3,24),r=M(()=>n()<=20?8:6);var i=Hw(),a=R(F(i));Ae(4),k(i),z(()=>{Y(i,`width`,n()),Y(i,`height`,n()),Y(a,`stroke-width`,B(r))}),W(e,i)}var Ww=U(`<button class="open svelte-1skvv7i" type="button" title="The log of every app on the board, in one stream">Logs</button>`);function Gw(e,t){A(t,!0);let n=M(()=>Nb.active===`*`);var r=Ww();z(()=>Y(r,`aria-pressed`,B(n))),H(`click`,r,()=>{Nb.active=B(n)?null:`*`}),W(e,r),j()}Xr([`click`]);var Kw=U(`<div class="tip svelte-1k9t7z2" popover="manual" role="tooltip"> </div>`);function qw(e){let t=N(void 0),n=N(``),r=null,i,a=()=>{clearTimeout(i),r&&r.el.setAttribute(`title`,r.title),r=null,B(t)?.matches(`:popover-open`)&&B(t).hidePopover()},o=e=>{if(!B(t))return;B(t).showPopover();let n=e.getBoundingClientRect(),r=B(t).getBoundingClientRect(),i=n.bottom+6+r.height<=innerHeight,a=Math.min(Math.max(8,n.left+n.width/2-r.width/2),innerWidth-r.width-8);B(t).style.left=`${String(a)}px`,B(t).style.top=`${String(i?n.bottom+6:n.top-6-r.height)}px`},s=e=>{if(e.type===`focusin`&&!(e.target instanceof Element&&e.target.matches(`:focus-visible`)))return;let t=e.target instanceof Element?e.target.closest(`[title]`):null;if(!t||t===r?.el)return;let s=t.getAttribute(`title`)??``;a(),s.trim()&&(r={el:t,title:s},t.removeAttribute(`title`),P(n,s,!0),i=setTimeout(()=>{o(t)},350))},c=e=>{r&&!r.el.contains(e.relatedTarget)&&a()};var l=Kw();V(`pointerover`,gn,s),V(`pointerout`,gn,c),V(`focusin`,gn,s),V(`focusout`,gn,a),V(`pointerdown`,gn,a),V(`keydown`,gn,a),V(`scroll`,hn,a),V(`blur`,hn,a);var u=L(l,!0);Aa(l,e=>P(t,e),()=>B(t)),z(()=>G(u,B(n))),W(e,l)}var Jw=new Set([`$$slots`,`$$events`,`$$legacy`]);function Yw(e,t){let n=La(t,Jw),r={name:`chevron-down`,size:24,node:[[`path`,{d:`m6 9 6 6 6-6`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var Xw=U(`<button type="button" role="menuitem"> <span class="svelte-1i03v8q"> </span></button>`),Zw=U(`<button type="button" aria-haspopup="menu"><!></button> <div class="menu svelte-1i03v8q" popover="" role="menu" tabindex="-1"></div>`,1);function Qw(e,t){let n=ci();A(t,!0);let r=N(void 0),i=N(void 0),a=N(!1),o=()=>[...B(i)?.querySelectorAll(`button:not(:disabled)`)??[]],s=()=>{let e=B(r)?.getBoundingClientRect();e&&B(i)&&(B(i).style.top=`${String(e.bottom+6)}px`,B(i).style.right=`${String(innerWidth-e.right)}px`,o()[0]?.focus())},c=e=>{if(e.key!==`ArrowDown`&&e.key!==`ArrowUp`)return;e.preventDefault();let t=o();t[(t.indexOf(document.activeElement)+(e.key===`ArrowDown`?1:-1)+t.length)%t.length]?.focus()};var l=Zw(),u=I(l);Ua(F(u),{get of(){return Yw},size:12}),k(u),Aa(u,e=>P(r,e),()=>B(r));var d=R(u,2);q(d,21,()=>t.items,e=>e.label,(e,t)=>{var n=Xw();let r;var a=F(n,!0),o=L(R(a),!0);k(n),z(()=>{n.disabled=B(t).off,r=J(n,1,`svelte-1i03v8q`,null,r,{danger:B(t).danger}),G(a,B(t).label),G(o,B(t).about)}),H(`click`,n,()=>{B(i)?.hidePopover(),B(t).run()}),W(e,n)}),k(d),Aa(d,e=>P(i,e),()=>B(i)),z(()=>{J(u,1,`more ${t.tone??``}`,`svelte-1i03v8q`),Y(u,`aria-label`,t.label),Y(u,`aria-expanded`,B(a)),Y(u,`popovertarget`,n),Y(d,`id`,n),Y(d,`aria-label`,t.label)}),H(`keydown`,d,c),V(`toggle`,d,e=>{P(a,e.newState===`open`),B(a)&&s()}),W(e,l),j()}Xr([`keydown`,`click`]);var $w=new Set([`$$slots`,`$$events`,`$$legacy`]);function eT(e,t){let n=La(t,$w),r={name:`list-checks`,size:24,node:[[`path`,{d:`M13 5h8`}],[`path`,{d:`M13 12h8`}],[`path`,{d:`M13 19h8`}],[`path`,{d:`m3 17 2 2 4-4`}],[`path`,{d:`m3 7 2 2 4-4`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var tT=new Set([`$$slots`,`$$events`,`$$legacy`]);function nT(e,t){let n=La(t,tT),r={name:`panel-top`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`}],[`path`,{d:`M3 9h18`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var rT=U(`<button class="text svelte-r1euo8" type="button">Copy</button> <button class="text svelte-r1euo8" type="button">Clear</button>`,1),iT=U(`<span class="warn svelte-r1euo8">Other open tabs and copied links stop working.</span> <button class="text svelte-r1euo8" type="button">Cancel</button> <button class="text go svelte-r1euo8" type="button">Get it</button>`,1),aT=U(`<span class="svelte-r1euo8">Address</span> <button class="text svelte-r1euo8" type="button" title="Give the canvas a new address, so a link that was copied or shared no longer opens it">New address</button>`,1),oT=U(`<button type="button" role="radio" class="scheme svelte-r1euo8"><span class="mark svelte-r1euo8" aria-hidden="true"></span> <span class="swatch svelte-r1euo8" aria-hidden="true"><i class="svelte-r1euo8"></i><i class="svelte-r1euo8"></i><i class="svelte-r1euo8"></i></span> <span class="words svelte-r1euo8"><b class="svelte-r1euo8"> </b><small class="svelte-r1euo8"> </small></span></button>`),sT=U(`<span class="group svelte-r1euo8"> </span> <div class="schemes svelte-r1euo8"></div>`,1),cT=U(`<button class="link svelte-r1euo8" type="button">Scheme default</button>`),lT=U(`<button type="button" role="radio" class="svelte-r1euo8"></button>`),uT=U(`<div class="picks-head svelte-r1euo8"><h2 class="svelte-r1euo8"> </h2> <!></div> <div class="picks svelte-r1euo8" role="radiogroup"></div>`,1),dT=U(`<button class="open svelte-r1euo8" type="button" popovertarget="settings" aria-label="Settings" title="Settings"><!></button> <div class="pop svelte-r1euo8" id="settings" popover="" aria-label="Settings"><div class="row log svelte-r1euo8"><label class="toggle svelte-r1euo8"><input type="checkbox" role="switch"/><span class="track svelte-r1euo8" aria-hidden="true"></span>Debug log</label> <!></div> <div class="row address svelte-r1euo8"><!></div> <section class="appearance svelte-r1euo8" aria-label="Appearance"><h2 class="svelte-r1euo8">Appearance</h2> <div role="radiogroup" aria-label="Scheme"></div> <!> <p class="svelte-r1euo8">Warning and PROD colours are left out of both rows, so a custom pick can never be mistaken for either.</p></section></div>`,1);function fT(e,t){A(t,!0);let n=N(!1),r=async()=>{let e=await oo(`new-address`,{port:location.port});`error`in e?($.show(`No new address: ${e.error}`,`warning`),P(n,!1)):location.replace(e.path+location.hash)},i=async()=>{let e=await $s.read();e?await navigator.clipboard.writeText(e).then(()=>!0,()=>!1)?$.show(`Last 300 entries copied`):$.show(`Copy is blocked here: the log is debug.jsonl in Koppler's run folder`,`warning`):$.show(`The debug log is empty. Turn it on, then do what went wrong.`)},a=Object.entries(jy),o=[[`Dark`,a.filter(([e])=>!Py(e))],[`Light`,a.filter(([e])=>Py(e))]],s=M(()=>[[`Local`,Fy(Vy.now.scheme).locals,Vy.local,e=>{Vy.pickLocal(e)}],[`Deployed`,Fy(Vy.now.scheme).deployeds,Vy.deployed,e=>{Vy.pickDeployed(e)}]]),c=M(()=>!!(Vy.now.local??Vy.now.deployed));var l=dT(),u=I(l);Ua(F(u),{get of(){return pc},size:16}),k(u);var d=R(u,2),f=F(d),p=F(f),m=F(p);fa(m),Ae(2),k(p);var h=R(p,2),g=e=>{var t=rT(),n=I(t),r=R(n,2);H(`click`,n,i),H(`click`,r,()=>{$s.clear(),$.show(`Debug log cleared`)}),W(e,t)};K(h,e=>{$s.on&&e(g)}),k(f);var _=R(f,2),y=F(_),b=e=>{var t=iT(),i=R(I(t),2),a=R(i,2);H(`click`,i,()=>P(n,!1)),H(`click`,a,()=>void r()),W(e,t)},x=e=>{var t=aT();H(`click`,R(I(t),2),()=>P(n,!0)),W(e,t)};K(y,e=>{B(n)?e(b):e(x,-1)}),k(_);var S=R(_,2),C=R(F(S),2);q(C,21,()=>o,([e,t])=>e,(e,t)=>{var n=M(()=>v(B(t),2));let r=()=>B(n)[0],i=()=>B(n)[1];var a=sT(),o=I(a),s=L(o,!0),c=R(o,2);q(c,21,i,([e,t])=>e,(e,t)=>{var n=M(()=>v(B(t),2));let r=()=>B(n)[0],i=()=>B(n)[1];var a=oT(),o=R(F(a),2),s=F(o);let c;var l=R(s);let u;var d=R(l);let f;k(o);var p=R(o,2),m=F(p),h=L(m,!0),g=L(R(m),!0);k(p),k(a),z(()=>{Y(a,`aria-checked`,Vy.now.scheme===r()),c=Ji(s,``,c,{background:i().desk}),u=Ji(l,``,u,{background:i().local}),f=Ji(d,``,f,{background:i().deployed}),G(h,i().name),G(g,i().note)}),H(`click`,a,()=>{Vy.pickScheme(r())}),W(e,a)}),k(c),z(()=>G(s,r())),W(e,a)}),k(C),q(R(C,2),17,()=>B(s),([e,t,n,r])=>e,(e,t)=>{var n=M(()=>v(B(t),4));let r=()=>B(n)[0],i=()=>B(n)[1],a=()=>B(n)[2],o=()=>B(n)[3];var s=uT(),l=I(s),u=F(l),d=L(u,!0),f=R(u,2),p=e=>{var t=cT();H(`click`,t,()=>{Vy.schemeDefault()}),W(e,t)};K(f,e=>{r()===`Local`&&B(c)&&e(p)}),k(l);var m=R(l,2);q(m,20,i,e=>e,(e,t)=>{var n=lT();let i;z(()=>{Y(n,`aria-checked`,a()===t),Y(n,`aria-label`,`${r()??``} ${t??``}`),i=Ji(n,``,i,{"--hex":t})}),H(`click`,n,()=>{o()(t)}),W(e,n)}),k(m),z(()=>{G(d,r()),Y(m,`aria-label`,`${r()??``} colour`)}),W(e,s)}),Ae(2),k(S),k(d),z(()=>{Y(p,`title`,$s.forced?`Always on while Koppler runs from its source folder, so every problem can be traced.`:`Keeps every click, change and message on this canvas, so a problem can be traced. Nothing you type is kept.`),m.disabled=$s.forced}),Ca(m,()=>$s.on,e=>$s.on=e),W(e,l),j()}Xr([`click`]);var pT=U(`<button class="needs svelte-1qvf60f" type="button" title="This stack needs something on this Mac" aria-label="This stack needs something on this Mac"><!></button>`),mT=U(`<nav aria-label="Side pane, folded"><button type="button" title="Board and environment" class="svelte-1qvf60f"><!> <span class="env svelte-1qvf60f"> </span></button> <button type="button" title="Apps: on the board, and the rest of the stack" class="svelte-1qvf60f"><!> <span class="svelte-1qvf60f"> </span></button> <div class="foot svelte-1qvf60f"><!> <!></div></nav>`);function hT(e,t){A(t,!0);let n=M(()=>(Q.status?.checks??[]).some(e=>e.state!==`ok`));var r=mT();let i;var a=F(r),o=F(a);Ua(o,{get of(){return nT},size:16});var s=L(R(o,2),!0);k(a);var c=R(a,2),l=F(c);Ua(l,{get of(){return eT},size:16});var u=L(R(l,2));k(c);var d=R(c,2),f=F(d),p=e=>{var n=pT();Ua(F(n),{get of(){return Mx},size:15}),k(n),H(`click`,n,()=>{t.open()}),W(e,n)};K(f,e=>{B(n)&&e(p)}),fT(R(f,2),{}),k(d),k(r),z((e,t)=>{i=J(r,1,`svelte-1qvf60f`,null,i,{protected:Z.protected}),Y(a,`aria-label`,`Board and environment: ${e??``}`),G(s,t),Y(c,`aria-label`,`Apps: ${Z.cards.length??``} of ${Z.apps.length??``} on the board`),G(u,`${Z.cards.length??``}/${Z.apps.length??``}`)},[()=>Z.env.toUpperCase(),()=>Z.env.toUpperCase()]),H(`click`,a,()=>{t.open(`board`)}),H(`click`,c,()=>{t.open()}),W(e,r),j()}Xr([`click`]);var gT=U(`<span class="row svelte-1vz4hzd"><span class="who svelte-1vz4hzd"> </span> <input type="checkbox" class="svelte-1vz4hzd"/> <input type="checkbox" class="svelte-1vz4hzd"/></span>`),_T=U(`<dialog aria-labelledby="outside-title" class="svelte-1vz4hzd"><button class="x svelte-1vz4hzd" type="button" aria-label="Close"><!></button> <h2 id="outside-title" class="svelte-1vz4hzd">Add an outside system</h2> <p class="sub svelte-1vz4hzd">A service that never runs on this Mac, such as a payment provider or a SaaS API: your apps call it, or it calls them
|
|
34
|
+
(a webhook).</p> <form class="svelte-1vz4hzd"><label class="svelte-1vz4hzd">Name <input required="" maxlength="80" placeholder="Stripe" class="svelte-1vz4hzd"/></label> <label class="svelte-1vz4hzd"><span>Address <span class="opt svelte-1vz4hzd">optional</span></span> <input type="url" placeholder="https://api.stripe.com" class="svelte-1vz4hzd"/></label> <label class="svelte-1vz4hzd"><span>What it is <span class="opt svelte-1vz4hzd">optional</span></span> <input maxlength="200" placeholder="Payment provider" class="svelte-1vz4hzd"/></label> <fieldset class="svelte-1vz4hzd"><legend class="svelte-1vz4hzd">Your apps</legend> <div class="callers svelte-1vz4hzd"><span class="head svelte-1vz4hzd" aria-hidden="true"><span class="svelte-1vz4hzd"></span><span class="svelte-1vz4hzd">Calls it</span><span class="svelte-1vz4hzd">Gets its calls</span></span> <!></div></fieldset> <p class="error svelte-1vz4hzd" role="alert"> </p> <div class="acts svelte-1vz4hzd"><button type="button" class="svelte-1vz4hzd">Cancel</button> <button class="go svelte-1vz4hzd" type="submit"> </button></div></form></dialog>`);function vT(e,t){A(t,!0);let n=N(void 0),r=N(``),i=N(``),a=N(``),o=N(fn({})),s=N(fn({})),c=N(``),l=N(!1),u=M(()=>Z.apps.filter(e=>!e.outside)),d=e=>B(u).filter(t=>e[t.id]).map(e=>e.id);function f(){P(r,``),P(i,``),P(a,``),P(o,{},!0),P(s,{},!0),P(c,``),B(n)?.showModal()}let p=async e=>{e.preventDefault();let t=d(B(o)),u=d(B(s));if(!t.length&&!u.length){P(c,`Pick the apps that call ${B(r).trim()||`it`}, or that it calls: its card shows next to them.`);return}P(l,!0);let f=await oo(`apps-outside`,{name:B(r),url:B(i),why:B(a),calledBy:t,sendsTo:u});P(l,!1),`error`in f?P(c,f.error,!0):(B(n)?.close(),location.reload())};var m={open:f},h=_T(),g=F(h);Ua(F(g),{get of(){return to},size:14}),k(g);var _=R(g,6),v=F(_),y=R(F(v));fa(y),k(v);var b=R(v,2),x=R(F(b),2);fa(x),k(b);var S=R(b,2),C=R(F(S),2);fa(C),k(S);var w=R(S,2),T=R(F(w),2);q(R(F(T),2),17,()=>B(u),e=>e.id,(e,t)=>{var n=gT(),r=F(n),i=L(r,!0),a=R(r,2);fa(a);var l=R(a,2);fa(l),k(n),z(()=>{G(i,B(t).name),Y(a,`aria-label`,`${B(t).name??``} calls it`),ma(a,!!B(o)[B(t).id]),Y(l,`aria-label`,`${B(t).name??``} gets its calls`),ma(l,!!B(s)[B(t).id])}),H(`change`,a,e=>{B(o)[B(t).id]=e.currentTarget.checked,P(c,``)}),H(`change`,l,e=>{B(s)[B(t).id]=e.currentTarget.checked,P(c,``)}),W(e,n)}),k(T),k(w);var ee=R(w,2),te=L(ee,!0),E=R(ee,2),ne=F(E),D=R(ne,2),re=L(D,!0);return k(E),k(_),k(h),Aa(h,e=>P(n,e),()=>B(n)),z(()=>{G(te,B(c)),D.disabled=B(l),G(re,B(l)?`Adding…`:`Add`)}),H(`click`,g,()=>B(n)?.close()),V(`submit`,_,p),ba(y,()=>B(r),e=>P(r,e)),ba(x,()=>B(i),e=>P(i,e)),ba(C,()=>B(a),e=>P(a,e)),H(`click`,ne,()=>B(n)?.close()),W(e,h),j(m)}Xr([`click`,`change`]);var yT=U(`<aside aria-labelledby="card-panel-title"><header class="svelte-c90ff7"><h2 id="card-panel-title" class="svelte-c90ff7"> </h2> <span class="kind svelte-c90ff7"> </span> <button class="x svelte-c90ff7" type="button" aria-label="Close" title="Close: deselects the card"><!></button></header> <!></aside>`);function bT(e,t){A(t,!0);let n=M(()=>Z.panelCard);var r=si(),i=I(r),a=e=>{var t=yT();let r;var i=F(t),a=F(i),o=L(a,!0),s=R(a,2),c=L(s,!0),l=R(s,2);Ua(F(l),{get of(){return to},size:14}),k(l),k(i),Ci(R(i,2),()=>B(n).id,e=>{Eb(e,{get id(){return B(n).id}})}),k(t),z(()=>{J(t,1,`kind-${B(n).data.kind??``}`,`svelte-c90ff7`),r=Ji(t,``,r,{width:`300px`}),Y(a,`title`,B(n).data.name),G(o,B(n).data.name),G(c,B(n).data.kindLabel)}),H(`click`,l,()=>{Z.pick(``)}),W(e,t)};K(i,e=>{B(n)&&e(a)}),W(e,r),j()}Xr([`click`]);var xT=new Set([`$$slots`,`$$events`,`$$legacy`]);function ST(e,t){let n=La(t,xT),r={name:`chevron-right`,size:24,node:[[`path`,{d:`m9 18 6-6-6-6`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var CT=[`postgres`,`mysql`,`redis`],wT=/^[A-Za-z0-9_][\w.-]*$/,TT=new Set([`__proto__`,`prototype`,`constructor`]);function ET(e){let t=[],n=/\.?([A-Za-z0-9_][\w-]*)|\[(\d+)\]|\["([^"\]]+)"\]/y,r=0;for(;r<e.length;){n.lastIndex=r;let i=n.exec(e);if(!i||r===0&&e.startsWith(`.`))return{error:`${e} is not a path such as apps.orders.url`};let[,a,o,s]=i;o===void 0?t.push(a??s):t.push(Number(o)),r=n.lastIndex}let i=t.find(e=>typeof e==`string`&&(TT.has(e)||!wT.test(e)));return i===void 0?t.length?t:{error:`give a path, such as apps.orders.url`}:{error:`${String(i)} cannot be part of a path`}}var DT=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function OT(e,t){let n=e;for(let e of t){if(typeof e==`number`?!Array.isArray(n):!DT(n)||!Object.hasOwn(n,e))return;n=n[e]}return n}function kT(e,t,n){let[r,...i]=t;if(r===void 0)return n;if(typeof r==`number`){let t=Array.isArray(e)?[...e]:[];if(r>t.length)throw Error(`there is no item ${String(r)} in this list`);return!i.length&&n===void 0?t.splice(r,1):t[r]=kT(t[r],i,n),t}if(Array.isArray(e))throw Error(`${r} is not a place in a list`);let a=DT(e)?e:{};return!i.length&&n===void 0?Object.fromEntries(Object.entries(a).filter(([e])=>e!==r)):{...a,[r]:kT(a[r],i,n)}}var AT=U(`<label class="svelte-s22te4"><input type="checkbox" class="svelte-s22te4"/> <span class="svelte-s22te4"> </span></label>`),jT=U(`<div class="checks svelte-s22te4" role="group"></div>`),MT=U(`<span class="none svelte-s22te4"> </span>`);function NT(e,t){A(t,!0);let n=X(t,`disabled`,3,!1),r=M(()=>[...t.options,...t.picked.filter(e=>!t.options.some(t=>t.value===e)).map(e=>({value:e,label:e}))]);var i=si(),a=I(i),o=e=>{var i=jT();q(i,21,()=>B(r),e=>e.value,(e,r)=>{var i=AT(),a=F(i);fa(a);var o=L(R(a,2),!0);k(i),z(e=>{a.disabled=n(),ma(a,e),G(o,B(r).label)},[()=>t.picked.includes(B(r).value)]),H(`change`,a,e=>{t.ontoggle(B(r).value,e.currentTarget.checked)}),W(e,i)}),k(i),z(()=>Y(i,`aria-label`,t.label)),W(e,i)},s=e=>{var n=MT(),r=L(n,!0);z(()=>G(r,t.none)),W(e,n)};K(a,e=>{B(r).length?e(o):e(s,-1)}),W(e,i),j()}Xr([`change`]);var PT=new Set([`$$slots`,`$$events`,`$$legacy`]);function FT(e,t){let n=La(t,PT),r={name:`chevron-left`,size:24,node:[[`path`,{d:`m15 18-6-6 6-6`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var IT=U(`<button type="button" title="Move earlier" class="svelte-1iop5lw"><!></button>`),LT=U(`<span class="tag svelte-1iop5lw"> </span>`),RT=U(`<button type="button" title="Remove" class="svelte-1iop5lw"><!></button>`),zT=U(`<li><!> <span class="word svelte-1iop5lw"> </span> <!> <!></li>`),BT=U(`<li class="new svelte-1iop5lw"><input class="svelte-1iop5lw"/></li>`),VT=U(`<ul class="chips svelte-1iop5lw"><!> <!></ul>`);function HT(e,t){A(t,!0);let n=X(t,`ordered`,3,!1),r=X(t,`disabled`,3,!1),i=X(t,`placeholder`,3,`Add one`),a=X(t,`first`,3,``),o=N(``),s=()=>{let e=B(o).trim();P(o,``),e&&!t.value.includes(e)&&t.onchange([...t.value,e])},c=e=>{let n=[...t.value];[n[e-1],n[e]]=[n[e]??``,n[e-1]??``],t.onchange(n)};var l=VT(),u=F(l);q(u,18,()=>t.value,e=>e,(e,i,o)=>{var s=zT();let l;var u=F(s),d=e=>{var t=IT();Ua(F(t),{get of(){return FT},size:10}),k(t),z(()=>Y(t,`aria-label`,`Move ${i??``} earlier`)),H(`click`,t,()=>{c(B(o))}),W(e,t)};K(u,e=>{n()&&B(o)>0&&!r()&&e(d)});var f=R(u,2),p=L(f,!0),m=R(f,2),h=e=>{var t=LT(),n=L(t,!0);z(()=>G(n,a())),W(e,t)};K(m,e=>{n()&&B(o)===0&&a()&&e(h)});var g=R(m,2),_=e=>{var n=RT();Ua(F(n),{get of(){return to},size:10}),k(n),z(()=>Y(n,`aria-label`,`Remove ${i??``}`)),H(`click`,n,()=>{t.onchange(t.value.filter(e=>e!==i))}),W(e,n)};K(g,e=>{r()||e(_)}),k(s),z(()=>{l=J(s,1,`svelte-1iop5lw`,null,l,{first:n()&&B(o)===0}),G(p,i)}),W(e,s)});var d=R(u,2),f=e=>{var n=BT(),r=F(n);fa(r),k(n),z(e=>{Y(r,`aria-label`,`Add to ${t.label??``}`),Y(r,`placeholder`,i()),Y(r,`size`,e)},[()=>Math.max(i().length,B(o).length)+1]),H(`keydown`,r,e=>{(e.key===`Enter`||e.key===`,`)&&(e.preventDefault(),s())}),V(`blur`,r,s),ba(r,()=>B(o),e=>P(o,e)),W(e,n)};K(d,e=>{r()||e(f)}),k(l),z(()=>Y(l,`aria-label`,t.label)),W(e,l),j()}Xr([`click`,`keydown`]);var UT=new Set([`$$slots`,`$$events`,`$$legacy`]);function WT(e,t){let n=La(t,UT),r={name:`app-window`,size:24,node:[[`rect`,{x:`2`,y:`4`,width:`20`,height:`16`,rx:`2`}],[`path`,{d:`M10 4v4`}],[`path`,{d:`M2 8h20`}],[`path`,{d:`M6 4v4`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var GT=new Set([`$$slots`,`$$events`,`$$legacy`]);function KT(e,t){let n=La(t,GT),r={name:`box`,size:24,node:[[`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`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var qT=`<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>`,JT=`</title><path d="`,YT=`"/></svg>`,XT={title:`.NET`,slug:`dotnet`,get svg(){return qT+`.NET`+JT+this.path+YT},path:`M24 8.77h-2.468v7.565h-1.425V8.77h-2.462V7.53H24zm-6.852 7.565h-4.821V7.53h4.63v1.24h-3.205v2.494h2.953v1.234h-2.953v2.604h3.396zm-6.708 0H8.882L4.78 9.863a2.896 2.896 0 0 1-.258-.51h-.036c.032.189.048.592.048 1.21v5.772H3.157V7.53h1.659l3.965 6.32c.167.261.275.442.323.54h.024c-.04-.233-.06-.629-.06-1.185V7.529h1.372zm-8.703-.693a.868.829 0 0 1-.869.829.868.829 0 0 1-.868-.83.868.829 0 0 1 .868-.828.868.829 0 0 1 .869.829Z`,source:`https://github.com/dotnet/brand/blob/c7d0f51b8ec59531332d05fb27a5b758a7a3d689/logo/dotnet-logo.svg`,hex:`512BD4`,guidelines:`https://github.com/dotnet/brand/blob/c7d0f51b8ec59531332d05fb27a5b758a7a3d689/dotnet-styleGuide-2024.pdf`,license:{type:`CC0-1.0`,url:`https://spdx.org/licenses/CC0-1.0`}},ZT={title:`Docker`,slug:`docker`,get svg(){return qT+`Docker`+JT+this.path+YT},path:`M13.983 11.078h2.119a.186.186 0 00.186-.185V9.006a.186.186 0 00-.186-.186h-2.119a.185.185 0 00-.185.185v1.888c0 .102.083.185.185.185m-2.954-5.43h2.118a.186.186 0 00.186-.186V3.574a.186.186 0 00-.186-.185h-2.118a.185.185 0 00-.185.185v1.888c0 .102.082.185.185.185m0 2.716h2.118a.187.187 0 00.186-.186V6.29a.186.186 0 00-.186-.185h-2.118a.185.185 0 00-.185.185v1.887c0 .102.082.185.185.186m-2.93 0h2.12a.186.186 0 00.184-.186V6.29a.185.185 0 00-.185-.185H8.1a.185.185 0 00-.185.185v1.887c0 .102.083.185.185.186m-2.964 0h2.119a.186.186 0 00.185-.186V6.29a.185.185 0 00-.185-.185H5.136a.186.186 0 00-.186.185v1.887c0 .102.084.185.186.186m5.893 2.715h2.118a.186.186 0 00.186-.185V9.006a.186.186 0 00-.186-.186h-2.118a.185.185 0 00-.185.185v1.888c0 .102.082.185.185.185m-2.93 0h2.12a.185.185 0 00.184-.185V9.006a.185.185 0 00-.184-.186h-2.12a.185.185 0 00-.184.185v1.888c0 .102.083.185.185.185m-2.964 0h2.119a.185.185 0 00.185-.185V9.006a.185.185 0 00-.184-.186h-2.12a.186.186 0 00-.186.186v1.887c0 .102.084.185.186.185m-2.92 0h2.12a.185.185 0 00.184-.185V9.006a.185.185 0 00-.184-.186h-2.12a.185.185 0 00-.184.185v1.888c0 .102.082.185.185.185M23.763 9.89c-.065-.051-.672-.51-1.954-.51-.338.001-.676.03-1.01.087-.248-1.7-1.653-2.53-1.716-2.566l-.344-.199-.226.327c-.284.438-.49.922-.612 1.43-.23.97-.09 1.882.403 2.661-.595.332-1.55.413-1.744.42H.751a.751.751 0 00-.75.748 11.376 11.376 0 00.692 4.062c.545 1.428 1.355 2.48 2.41 3.124 1.18.723 3.1 1.137 5.275 1.137.983.003 1.963-.086 2.93-.266a12.248 12.248 0 003.823-1.389c.98-.567 1.86-1.288 2.61-2.136 1.252-1.418 1.998-2.997 2.553-4.4h.221c1.372 0 2.215-.549 2.68-1.009.309-.293.55-.65.707-1.046l.098-.288Z`,source:`https://www.docker.com/company/newsroom/media-resources`,hex:`2496ED`},QT={title:`Flutter`,slug:`flutter`,get svg(){return qT+`Flutter`+JT+this.path+YT},path:`M14.314 0L2.3 12 6 15.7 21.684.013h-7.357zm.014 11.072L7.857 17.53l6.47 6.47H21.7l-6.46-6.468 6.46-6.46h-7.37z`,source:`https://flutter.dev/brand`,hex:`02569B`,guidelines:`https://flutter.dev/brand`},$T={title:`Go`,slug:`go`,get svg(){return qT+`Go`+JT+this.path+YT},path:`M1.811 10.231c-.047 0-.058-.023-.035-.059l.246-.315c.023-.035.081-.058.128-.058h4.172c.046 0 .058.035.035.07l-.199.303c-.023.036-.082.07-.117.07zM.047 11.306c-.047 0-.059-.023-.035-.058l.245-.316c.023-.035.082-.058.129-.058h5.328c.047 0 .07.035.058.07l-.093.28c-.012.047-.058.07-.105.07zm2.828 1.075c-.047 0-.059-.035-.035-.07l.163-.292c.023-.035.07-.07.117-.07h2.337c.047 0 .07.035.07.082l-.023.28c0 .047-.047.082-.082.082zm12.129-2.36c-.736.187-1.239.327-1.963.514-.176.046-.187.058-.34-.117-.174-.199-.303-.327-.548-.444-.737-.362-1.45-.257-2.115.175-.795.514-1.204 1.274-1.192 2.22.011.935.654 1.706 1.577 1.835.795.105 1.46-.175 1.987-.77.105-.13.198-.27.315-.434H10.47c-.245 0-.304-.152-.222-.35.152-.362.432-.97.596-1.274a.315.315 0 01.292-.187h4.253c-.023.316-.023.631-.07.947a4.983 4.983 0 01-.958 2.29c-.841 1.11-1.94 1.8-3.33 1.986-1.145.152-2.209-.07-3.143-.77-.865-.655-1.356-1.52-1.484-2.595-.152-1.274.222-2.419.993-3.424.83-1.086 1.928-1.776 3.272-2.02 1.098-.2 2.15-.07 3.096.571.62.41 1.063.97 1.356 1.648.07.105.023.164-.117.2m3.868 6.461c-1.064-.024-2.034-.328-2.852-1.029a3.665 3.665 0 01-1.262-2.255c-.21-1.32.152-2.489.947-3.529.853-1.122 1.881-1.706 3.272-1.95 1.192-.21 2.314-.095 3.33.595.923.63 1.496 1.484 1.648 2.605.198 1.578-.257 2.863-1.344 3.962-.771.783-1.718 1.273-2.805 1.495-.315.06-.63.07-.934.106zm2.78-4.72c-.011-.153-.011-.27-.034-.387-.21-1.157-1.274-1.81-2.384-1.554-1.087.245-1.788.935-2.045 2.033-.21.912.234 1.835 1.075 2.21.643.28 1.285.244 1.905-.07.923-.48 1.425-1.228 1.484-2.233z`,source:`https://blog.golang.org/go-brand`,hex:`00ADD8`,guidelines:`https://blog.golang.org/go-brand`},eE={title:`Node.js`,slug:`nodedotjs`,get svg(){return qT+`Node.js`+JT+this.path+YT},path:`M11.998,24c-0.321,0-0.641-0.084-0.922-0.247l-2.936-1.737c-0.438-0.245-0.224-0.332-0.08-0.383 c0.585-0.203,0.703-0.25,1.328-0.604c0.065-0.037,0.151-0.023,0.218,0.017l2.256,1.339c0.082,0.045,0.197,0.045,0.272,0l8.795-5.076 c0.082-0.047,0.134-0.141,0.134-0.238V6.921c0-0.099-0.053-0.192-0.137-0.242l-8.791-5.072c-0.081-0.047-0.189-0.047-0.271,0 L3.075,6.68C2.99,6.729,2.936,6.825,2.936,6.921v10.15c0,0.097,0.054,0.189,0.139,0.235l2.409,1.392 c1.307,0.654,2.108-0.116,2.108-0.89V7.787c0-0.142,0.114-0.253,0.256-0.253h1.115c0.139,0,0.255,0.112,0.255,0.253v10.021 c0,1.745-0.95,2.745-2.604,2.745c-0.508,0-0.909,0-2.026-0.551L2.28,18.675c-0.57-0.329-0.922-0.945-0.922-1.604V6.921 c0-0.659,0.353-1.275,0.922-1.603l8.795-5.082c0.557-0.315,1.296-0.315,1.848,0l8.794,5.082c0.57,0.329,0.924,0.944,0.924,1.603 v10.15c0,0.659-0.354,1.273-0.924,1.604l-8.794,5.078C12.643,23.916,12.324,24,11.998,24z M19.099,13.993 c0-1.9-1.284-2.406-3.987-2.763c-2.731-0.361-3.009-0.548-3.009-1.187c0-0.528,0.235-1.233,2.258-1.233 c1.807,0,2.473,0.389,2.747,1.607c0.024,0.115,0.129,0.199,0.247,0.199h1.141c0.071,0,0.138-0.031,0.186-0.081 c0.048-0.054,0.074-0.123,0.067-0.196c-0.177-2.098-1.571-3.076-4.388-3.076c-2.508,0-4.004,1.058-4.004,2.833 c0,1.925,1.488,2.457,3.895,2.695c2.88,0.282,3.103,0.703,3.103,1.269c0,0.983-0.789,1.402-2.642,1.402 c-2.327,0-2.839-0.584-3.011-1.742c-0.02-0.124-0.126-0.215-0.253-0.215h-1.137c-0.141,0-0.254,0.112-0.254,0.253 c0,1.482,0.806,3.248,4.655,3.248C17.501,17.007,19.099,15.91,19.099,13.993z`,source:`https://nodejs.org/en/about/branding`,hex:`5FA04E`,guidelines:`https://nodejs.org/en/about/branding`},tE={title:`OpenJDK`,slug:`openjdk`,get svg(){return qT+`OpenJDK`+JT+this.path+YT},path:`M11.915 0 11.7.215C9.515 2.4 7.47 6.39 6.046 10.483c-1.064 1.024-3.633 2.81-3.711 3.551-.093.87 1.746 2.611 1.55 3.235-.198.625-1.304 1.408-1.014 1.939.1.188.823.011 1.277-.491a13.389 13.389 0 0 0-.017 2.14c.076.906.27 1.668.643 2.232.372.563.956.911 1.667.911.397 0 .727-.114 1.024-.264.298-.149.571-.33.91-.5.68-.34 1.634-.666 3.53-.604 1.903.062 2.872.39 3.559.704.687.314 1.15.664 1.925.664.767 0 1.395-.336 1.807-.9.412-.563.631-1.33.72-2.24.06-.623.055-1.32 0-2.066.454.45 1.117.604 1.213.424.29-.53-.816-1.314-1.013-1.937-.198-.624 1.642-2.366 1.549-3.236-.08-.748-2.707-2.568-3.748-3.586C16.428 6.374 14.308 2.394 12.13.215zm.175 6.038a2.95 2.95 0 0 1 2.943 2.942 2.95 2.95 0 0 1-2.943 2.943A2.95 2.95 0 0 1 9.148 8.98a2.95 2.95 0 0 1 2.942-2.942zM8.685 7.983a3.515 3.515 0 0 0-.145.997c0 1.951 1.6 3.55 3.55 3.55 1.95 0 3.55-1.598 3.55-3.55 0-.329-.046-.648-.132-.951.334.095.64.208.915.336a42.699 42.699 0 0 1 2.042 5.829c.678 2.545 1.01 4.92.846 6.607-.082.844-.29 1.51-.606 1.94-.315.431-.713.651-1.315.651-.593 0-.932-.27-1.673-.61-.741-.338-1.825-.694-3.792-.758-1.974-.064-3.073.293-3.821.669-.375.188-.659.373-.911.5s-.466.2-.752.2c-.53 0-.876-.209-1.16-.64-.285-.43-.474-1.101-.545-1.948-.141-1.693.176-4.069.823-6.614a43.155 43.155 0 0 1 1.934-5.783c.348-.167.749-.31 1.192-.425zm-3.382 4.362a.216.216 0 0 1 .13.031c-.166.56-.323 1.116-.463 1.665a33.849 33.849 0 0 0-.547 2.555 3.9 3.9 0 0 0-.2-.39c-.58-1.012-.914-1.642-1.16-2.08.315-.24 1.679-1.755 2.24-1.781zm13.394.01c.562.027 1.926 1.543 2.24 1.783-.246.438-.58 1.068-1.16 2.08a4.428 4.428 0 0 0-.163.309 32.354 32.354 0 0 0-.562-2.49 40.579 40.579 0 0 0-.482-1.652.216.216 0 0 1 .127-.03z`,source:`https://hg.openjdk.java.net/duke/duke/file/ca00f100dafc/vector/Agent.svg`,hex:`000000`,license:{type:`BSD-3-Clause`,url:`https://spdx.org/licenses/BSD-3-Clause`}},nE={title:`PHP`,slug:`php`,get svg(){return qT+`PHP`+JT+this.path+YT},path:`M7.01 10.207h-.944l-.515 2.648h.838c.556 0 .97-.105 1.242-.314.272-.21.455-.559.55-1.049.092-.47.05-.802-.124-.995-.175-.193-.523-.29-1.047-.29zM12 5.688C5.373 5.688 0 8.514 0 12s5.373 6.313 12 6.313S24 15.486 24 12c0-3.486-5.373-6.312-12-6.312zm-3.26 7.451c-.261.25-.575.438-.917.551-.336.108-.765.164-1.285.164H5.357l-.327 1.681H3.652l1.23-6.326h2.65c.797 0 1.378.209 1.744.628.366.418.476 1.002.33 1.752a2.836 2.836 0 0 1-.305.847c-.143.255-.33.49-.561.703zm4.024.715l.543-2.799c.063-.318.039-.536-.068-.651-.107-.116-.336-.174-.687-.174H11.46l-.704 3.625H9.388l1.23-6.327h1.367l-.327 1.682h1.218c.767 0 1.295.134 1.586.401s.378.7.263 1.299l-.572 2.944h-1.389zm7.597-2.265a2.782 2.782 0 0 1-.305.847c-.143.255-.33.49-.561.703a2.44 2.44 0 0 1-.917.551c-.336.108-.765.164-1.286.164h-1.18l-.327 1.682h-1.378l1.23-6.326h2.649c.797 0 1.378.209 1.744.628.366.417.477 1.001.331 1.751zM17.766 10.207h-.943l-.516 2.648h.838c.557 0 .971-.105 1.242-.314.272-.21.455-.559.551-1.049.092-.47.049-.802-.125-.995s-.524-.29-1.047-.29z`,source:`https://php.net/download-logos.php`,hex:`777BB4`,license:{type:`CC-BY-SA-4.0`,url:`https://spdx.org/licenses/CC-BY-SA-4.0`}},rE={title:`Python`,slug:`python`,get svg(){return qT+`Python`+JT+this.path+YT},path:`M14.25.18l.9.2.73.26.59.3.45.32.34.34.25.34.16.33.1.3.04.26.02.2-.01.13V8.5l-.05.63-.13.55-.21.46-.26.38-.3.31-.33.25-.35.19-.35.14-.33.1-.3.07-.26.04-.21.02H8.77l-.69.05-.59.14-.5.22-.41.27-.33.32-.27.35-.2.36-.15.37-.1.35-.07.32-.04.27-.02.21v3.06H3.17l-.21-.03-.28-.07-.32-.12-.35-.18-.36-.26-.36-.36-.35-.46-.32-.59-.28-.73-.21-.88-.14-1.05-.05-1.23.06-1.22.16-1.04.24-.87.32-.71.36-.57.4-.44.42-.33.42-.24.4-.16.36-.1.32-.05.24-.01h.16l.06.01h8.16v-.83H6.18l-.01-2.75-.02-.37.05-.34.11-.31.17-.28.25-.26.31-.23.38-.2.44-.18.51-.15.58-.12.64-.1.71-.06.77-.04.84-.02 1.27.05zm-6.3 1.98l-.23.33-.08.41.08.41.23.34.33.22.41.09.41-.09.33-.22.23-.34.08-.41-.08-.41-.23-.33-.33-.22-.41-.09-.41.09zm13.09 3.95l.28.06.32.12.35.18.36.27.36.35.35.47.32.59.28.73.21.88.14 1.04.05 1.23-.06 1.23-.16 1.04-.24.86-.32.71-.36.57-.4.45-.42.33-.42.24-.4.16-.36.09-.32.05-.24.02-.16-.01h-8.22v.82h5.84l.01 2.76.02.36-.05.34-.11.31-.17.29-.25.25-.31.24-.38.2-.44.17-.51.15-.58.13-.64.09-.71.07-.77.04-.84.01-1.27-.04-1.07-.14-.9-.2-.73-.25-.59-.3-.45-.33-.34-.34-.25-.34-.16-.33-.1-.3-.04-.25-.02-.2.01-.13v-5.34l.05-.64.13-.54.21-.46.26-.38.3-.32.33-.24.35-.2.35-.14.33-.1.3-.06.26-.04.21-.02.13-.01h5.84l.69-.05.59-.14.5-.21.41-.28.33-.32.27-.35.2-.36.15-.36.1-.35.07-.32.04-.28.02-.21V6.07h2.09l.14.01zm-6.47 14.25l-.23.33-.08.41.08.41.23.33.33.23.41.08.41-.08.33-.23.23-.33.08-.41-.08-.41-.23-.33-.33-.23-.41-.08-.41.08z`,source:`https://www.python.org/community/logos/`,hex:`3776AB`,guidelines:`https://www.python.org/community/logos/`},iE={title:`React`,slug:`react`,get svg(){return qT+`React`+JT+this.path+YT},path:`M14.23 12.004a2.236 2.236 0 0 1-2.235 2.236 2.236 2.236 0 0 1-2.236-2.236 2.236 2.236 0 0 1 2.235-2.236 2.236 2.236 0 0 1 2.236 2.236zm2.648-10.69c-1.346 0-3.107.96-4.888 2.622-1.78-1.653-3.542-2.602-4.887-2.602-.41 0-.783.093-1.106.278-1.375.793-1.683 3.264-.973 6.365C1.98 8.917 0 10.42 0 12.004c0 1.59 1.99 3.097 5.043 4.03-.704 3.113-.39 5.588.988 6.38.32.187.69.275 1.102.275 1.345 0 3.107-.96 4.888-2.624 1.78 1.654 3.542 2.603 4.887 2.603.41 0 .783-.09 1.106-.275 1.374-.792 1.683-3.263.973-6.365C22.02 15.096 24 13.59 24 12.004c0-1.59-1.99-3.097-5.043-4.032.704-3.11.39-5.587-.988-6.38-.318-.184-.688-.277-1.092-.278zm-.005 1.09v.006c.225 0 .406.044.558.127.666.382.955 1.835.73 3.704-.054.46-.142.945-.25 1.44-.96-.236-2.006-.417-3.107-.534-.66-.905-1.345-1.727-2.035-2.447 1.592-1.48 3.087-2.292 4.105-2.295zm-9.77.02c1.012 0 2.514.808 4.11 2.28-.686.72-1.37 1.537-2.02 2.442-1.107.117-2.154.298-3.113.538-.112-.49-.195-.964-.254-1.42-.23-1.868.054-3.32.714-3.707.19-.09.4-.127.563-.132zm4.882 3.05c.455.468.91.992 1.36 1.564-.44-.02-.89-.034-1.345-.034-.46 0-.915.01-1.36.034.44-.572.895-1.096 1.345-1.565zM12 8.1c.74 0 1.477.034 2.202.093.406.582.802 1.203 1.183 1.86.372.64.71 1.29 1.018 1.946-.308.655-.646 1.31-1.013 1.95-.38.66-.773 1.288-1.18 1.87-.728.063-1.466.098-2.21.098-.74 0-1.477-.035-2.202-.093-.406-.582-.802-1.204-1.183-1.86-.372-.64-.71-1.29-1.018-1.946.303-.657.646-1.313 1.013-1.954.38-.66.773-1.286 1.18-1.868.728-.064 1.466-.098 2.21-.098zm-3.635.254c-.24.377-.48.763-.704 1.16-.225.39-.435.782-.635 1.174-.265-.656-.49-1.31-.676-1.947.64-.15 1.315-.283 2.015-.386zm7.26 0c.695.103 1.365.23 2.006.387-.18.632-.405 1.282-.66 1.933-.2-.39-.41-.783-.64-1.174-.225-.392-.465-.774-.705-1.146zm3.063.675c.484.15.944.317 1.375.498 1.732.74 2.852 1.708 2.852 2.476-.005.768-1.125 1.74-2.857 2.475-.42.18-.88.342-1.355.493-.28-.958-.646-1.956-1.1-2.98.45-1.017.81-2.01 1.085-2.964zm-13.395.004c.278.96.645 1.957 1.1 2.98-.45 1.017-.812 2.01-1.086 2.964-.484-.15-.944-.318-1.37-.5-1.732-.737-2.852-1.706-2.852-2.474 0-.768 1.12-1.742 2.852-2.476.42-.18.88-.342 1.356-.494zm11.678 4.28c.265.657.49 1.312.676 1.948-.64.157-1.316.29-2.016.39.24-.375.48-.762.705-1.158.225-.39.435-.788.636-1.18zm-9.945.02c.2.392.41.783.64 1.175.23.39.465.772.705 1.143-.695-.102-1.365-.23-2.006-.386.18-.63.406-1.282.66-1.933zM17.92 16.32c.112.493.2.968.254 1.423.23 1.868-.054 3.32-.714 3.708-.147.09-.338.128-.563.128-1.012 0-2.514-.807-4.11-2.28.686-.72 1.37-1.536 2.02-2.44 1.107-.118 2.154-.3 3.113-.54zm-11.83.01c.96.234 2.006.415 3.107.532.66.905 1.345 1.727 2.035 2.446-1.595 1.483-3.092 2.295-4.11 2.295-.22-.005-.406-.05-.553-.132-.666-.38-.955-1.834-.73-3.703.054-.46.142-.944.25-1.438zm4.56.64c.44.02.89.034 1.345.034.46 0 .915-.01 1.36-.034-.44.572-.895 1.095-1.345 1.565-.455-.47-.91-.993-1.36-1.565z`,source:`https://github.com/facebook/create-react-app/blob/282c03f9525fdf8061ffa1ec50dce89296d916bd/test/fixtures/relative-paths/src/logo.svg`,hex:`61DAFB`},aE={title:`Ruby`,slug:`ruby`,get svg(){return qT+`Ruby`+JT+this.path+YT},path:`M20.156.083c3.033.525 3.893 2.598 3.829 4.77L24 4.822 22.635 22.71 4.89 23.926h.016C3.433 23.864.15 23.729 0 19.139l1.645-3 2.819 6.586.503 1.172 2.805-9.144-.03.007.016-.03 9.255 2.956-1.396-5.431-.99-3.9 8.82-.569-.615-.51L16.5 2.114 20.159.073l-.003.01zM0 19.089zM5.13 5.073c3.561-3.533 8.157-5.621 9.922-3.84 1.762 1.777-.105 6.105-3.673 9.636-3.563 3.532-8.103 5.734-9.864 3.957-1.766-1.777.045-6.217 3.612-9.75l.003-.003z`,source:`https://www.ruby-lang.org/en/about/logo/`,hex:`CC342D`,license:{type:`CC-BY-SA-2.5`,url:`https://spdx.org/licenses/CC-BY-SA-2.5`}},oE={title:`Rust`,slug:`rust`,get svg(){return qT+`Rust`+JT+this.path+YT},path:`M23.8346 11.7033l-1.0073-.6236a13.7268 13.7268 0 00-.0283-.2936l.8656-.8069a.3483.3483 0 00-.1154-.578l-1.1066-.414a8.4958 8.4958 0 00-.087-.2856l.6904-.9587a.3462.3462 0 00-.2257-.5446l-1.1663-.1894a9.3574 9.3574 0 00-.1407-.2622l.49-1.0761a.3437.3437 0 00-.0274-.3361.3486.3486 0 00-.3006-.154l-1.1845.0416a6.7444 6.7444 0 00-.1873-.2268l.2723-1.153a.3472.3472 0 00-.417-.4172l-1.1532.2724a14.0183 14.0183 0 00-.2278-.1873l.0415-1.1845a.3442.3442 0 00-.49-.328l-1.076.491c-.0872-.0476-.1742-.0952-.2623-.1407l-.1903-1.1673A.3483.3483 0 0016.256.955l-.9597.6905a8.4867 8.4867 0 00-.2855-.086l-.414-1.1066a.3483.3483 0 00-.5781-.1154l-.8069.8666a9.2936 9.2936 0 00-.2936-.0284L12.2946.1683a.3462.3462 0 00-.5892 0l-.6236 1.0073a13.7383 13.7383 0 00-.2936.0284L9.9803.3374a.3462.3462 0 00-.578.1154l-.4141 1.1065c-.0962.0274-.1903.0567-.2855.086L7.744.955a.3483.3483 0 00-.5447.2258L7.009 2.348a9.3574 9.3574 0 00-.2622.1407l-1.0762-.491a.3462.3462 0 00-.49.328l.0416 1.1845a7.9826 7.9826 0 00-.2278.1873L3.8413 3.425a.3472.3472 0 00-.4171.4171l.2713 1.1531c-.0628.075-.1255.1509-.1863.2268l-1.1845-.0415a.3462.3462 0 00-.328.49l.491 1.0761a9.167 9.167 0 00-.1407.2622l-1.1662.1894a.3483.3483 0 00-.2258.5446l.6904.9587a13.303 13.303 0 00-.087.2855l-1.1065.414a.3483.3483 0 00-.1155.5781l.8656.807a9.2936 9.2936 0 00-.0283.2935l-1.0073.6236a.3442.3442 0 000 .5892l1.0073.6236c.008.0982.0182.1964.0283.2936l-.8656.8079a.3462.3462 0 00.1155.578l1.1065.4141c.0273.0962.0567.1914.087.2855l-.6904.9587a.3452.3452 0 00.2268.5447l1.1662.1893c.0456.088.0922.1751.1408.2622l-.491 1.0762a.3462.3462 0 00.328.49l1.1834-.0415c.0618.0769.1235.1528.1873.2277l-.2713 1.1541a.3462.3462 0 00.4171.4161l1.153-.2713c.075.0638.151.1255.2279.1863l-.0415 1.1845a.3442.3442 0 00.49.327l1.0761-.49c.087.0486.1741.0951.2622.1407l.1903 1.1662a.3483.3483 0 00.5447.2268l.9587-.6904a9.299 9.299 0 00.2855.087l.414 1.1066a.3452.3452 0 00.5781.1154l.8079-.8656c.0972.0111.1954.0203.2936.0294l.6236 1.0073a.3472.3472 0 00.5892 0l.6236-1.0073c.0982-.0091.1964-.0183.2936-.0294l.8069.8656a.3483.3483 0 00.578-.1154l.4141-1.1066a8.4626 8.4626 0 00.2855-.087l.9587.6904a.3452.3452 0 00.5447-.2268l.1903-1.1662c.088-.0456.1751-.0931.2622-.1407l1.0762.49a.3472.3472 0 00.49-.327l-.0415-1.1845a6.7267 6.7267 0 00.2267-.1863l1.1531.2713a.3472.3472 0 00.4171-.416l-.2713-1.1542c.0628-.0749.1255-.1508.1863-.2278l1.1845.0415a.3442.3442 0 00.328-.49l-.49-1.076c.0475-.0872.0951-.1742.1407-.2623l1.1662-.1893a.3483.3483 0 00.2258-.5447l-.6904-.9587.087-.2855 1.1066-.414a.3462.3462 0 00.1154-.5781l-.8656-.8079c.0101-.0972.0202-.1954.0283-.2936l1.0073-.6236a.3442.3442 0 000-.5892zm-6.7413 8.3551a.7138.7138 0 01.2986-1.396.714.714 0 11-.2997 1.396zm-.3422-2.3142a.649.649 0 00-.7715.5l-.3573 1.6685c-1.1035.501-2.3285.7795-3.6193.7795a8.7368 8.7368 0 01-3.6951-.814l-.3574-1.6684a.648.648 0 00-.7714-.499l-1.473.3158a8.7216 8.7216 0 01-.7613-.898h7.1676c.081 0 .1356-.0141.1356-.088v-2.536c0-.074-.0536-.0881-.1356-.0881h-2.0966v-1.6077h2.2677c.2065 0 1.1065.0587 1.394 1.2088.0901.3533.2875 1.5044.4232 1.8729.1346.413.6833 1.2381 1.2685 1.2381h3.5716a.7492.7492 0 00.1296-.0131 8.7874 8.7874 0 01-.8119.9526zM6.8369 20.024a.714.714 0 11-.2997-1.396.714.714 0 01.2997 1.396zM4.1177 8.9972a.7137.7137 0 11-1.304.5791.7137.7137 0 011.304-.579zm-.8352 1.9813l1.5347-.6824a.65.65 0 00.33-.8585l-.3158-.7147h1.2432v5.6025H3.5669a8.7753 8.7753 0 01-.2834-3.348zm6.7343-.5437V8.7836h2.9601c.153 0 1.0792.1772 1.0792.8697 0 .575-.7107.7815-1.2948.7815zm10.7574 1.4862c0 .2187-.008.4363-.0243.651h-.9c-.09 0-.1265.0586-.1265.1477v.413c0 .973-.5487 1.1846-1.0296 1.2382-.4576.0517-.9648-.1913-1.0275-.4717-.2704-1.5186-.7198-1.8436-1.4305-2.4034.8817-.5599 1.799-1.386 1.799-2.4915 0-1.1936-.819-1.9458-1.3769-2.3153-.7825-.5163-1.6491-.6195-1.883-.6195H5.4682a8.7651 8.7651 0 014.907-2.7699l1.0974 1.151a.648.648 0 00.9182.0213l1.227-1.1743a8.7753 8.7753 0 016.0044 4.2762l-.8403 1.8982a.652.652 0 00.33.8585l1.6178.7188c.0283.2875.0425.577.0425.8717zm-9.3006-9.5993a.7128.7128 0 11.984 1.0316.7137.7137 0 01-.984-1.0316zm8.3389 6.71a.7107.7107 0 01.9395-.3625.7137.7137 0 11-.9405.3635z`,source:`https://www.rust-lang.org`,hex:`000000`,guidelines:`https://www.rust-lang.org/policies/media-guide`,license:{type:`CC-BY-SA-4.0`,url:`https://spdx.org/licenses/CC-BY-SA-4.0`}},sE=`M4.9855 0c-.2941.0031-.5335.2466-.534.5482L4.446 5.456c0 .1451.06.2835.159.3891a.5322.5322 0 0 0 .3806.1562h3.4282l8.197 17.6805a.5365.5365 0 0 0 .4885.3181h5.811c.2969 0 .5426-.2448.5426-.5482V18.544c0-.3035-.2392-.5482-.5425-.5482h-2.0138L12.7394.3153C12.647.124 12.4564 0 12.2452 0h-7.254Zm.5397 1.0907h6.3678l8.16 17.6804a.5365.5365 0 0 0 .4885.3181h1.8178v3.8173H17.437L9.2402 5.226a.536.536 0 0 0-.4885-.318H5.5223Zm2.0137 8.2366c-.2098.0011-.3937.1193-.4857.3096L.6002 23.2133a.5506.5506 0 0 0 .0313.5282.5334.5334 0 0 0 .4544.25h6.169a.5468.5468 0 0 0 .497-.3096l3.38-7.166a.5405.5405 0 0 0-.0029-.4686L8.036 9.637a.5468.5468 0 0 0-.4942-.3096Zm.0057 1.8036 2.488 5.1522-3.1214 6.6206H1.9465Z`,cE={dotnet:{logo:XT.path},flutter:{logo:QT.path},node:{logo:eE.path},lambda:{logo:sE},sam:{logo:sE},web:{icon:WT},reactnative:{logo:iE.path},go:{logo:$T.path},rust:{logo:oE.path},java:{logo:tE.path},python:{logo:rE.path},ruby:{logo:aE.path},php:{logo:nE.path},compose:{logo:ZT.path}},lE=e=>(Object.hasOwn(cE,e)?cE[e]:void 0)??{icon:KT},uE=ai(`<title> </title>`),dE=ai(`<svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor"><!><path></path></svg>`);function fE(e,t){A(t,!0);let n=M(()=>lE(t.kind));var r=si(),i=I(r),a=e=>{var r=dE();let i;var a=F(r),o=e=>{var n=uE(),r=L(n,!0);z(()=>G(r,t.label)),W(e,n)};K(a,e=>{t.label&&e(o)});var s=R(a);k(r),z(()=>{Y(r,`role`,t.label?`img`:void 0),Y(r,`aria-label`,t.label||void 0),Y(r,`aria-hidden`,t.label?void 0:`true`),i=J(r,0,`svelte-7vspaq`,null,i,{wordmark:t.kind===`dotnet`}),Y(s,`d`,B(n).logo)}),W(e,r)},o=e=>{Ua(e,{get of(){return B(n).icon},size:16,get label(){return t.label}})};K(i,e=>{B(n).logo?e(a):B(n).icon&&e(o,1)}),W(e,r),j()}var pE=U(`<!> <span class="label svelte-npi4py"> </span>`,1),mE=U(`<span class="label unset svelte-npi4py">Choose a kind…</span>`),hE=U(`<button type="button" role="option" class="svelte-npi4py"><!> <span class="label svelte-npi4py"> </span></button>`),gE=U(`<div class="list svelte-npi4py" role="listbox" aria-label="Kind"></div>`),_E=U(`<div class="pick svelte-npi4py" role="presentation"><button class="now svelte-npi4py" type="button" aria-haspopup="listbox"><!> <span class="chev svelte-npi4py"><!></span></button> <!></div>`);function vE(e,t){A(t,!0);let n=X(t,`disabled`,3,!1),r=N(!1),i=N(void 0),a=M(()=>t.value&&!t.options.some(e=>e.value===t.value)?[...t.options,{value:t.value,label:t.value}]:t.options),o=M(()=>B(a).find(e=>e.value===t.value)),s=e=>{let t=[...B(i)?.querySelectorAll(`[role="option"]`)??[]],n=t.indexOf(document.activeElement);t[Math.max(0,Math.min(t.length-1,n+e))]?.focus()},c=async()=>{P(r,!0),await Promise.resolve(),requestAnimationFrame(()=>{(B(i)?.querySelector(`[aria-selected="true"]`)??B(i)?.querySelector(`[role="option"]`))?.focus()})},l=(e=!0)=>{P(r,!1),e&&B(i)?.querySelector(`.now`)?.focus()};var u=_E();V(`pointerdown`,hn,e=>{B(r)&&!B(i)?.contains(e.target)&&l(!1)});var d=F(u),f=F(d),p=e=>{var t=pE(),n=I(t);fE(n,{get kind(){return B(o).value},label:``});var r=L(R(n,2),!0);z(()=>G(r,B(o).label)),W(e,t)},m=e=>{W(e,mE())};K(f,e=>{B(o)?e(p):e(m,-1)});var h=R(f,2);Ua(F(h),{get of(){return Yw},size:10}),k(h),k(d);var g=R(d,2),_=e=>{var n=gE();q(n,21,()=>B(a),e=>e.value,(e,n)=>{var r=hE(),i=F(r);fE(i,{get kind(){return B(n).value},label:``});var a=L(R(i,2),!0);k(r),z(()=>{Y(r,`aria-selected`,B(n).value===t.value),G(a,B(n).label)}),H(`click`,r,()=>{t.onpick(B(n).value),l()}),W(e,r)}),k(n),W(e,n)};K(g,e=>{B(r)&&e(_)}),k(u),Aa(u,e=>P(i,e),()=>B(i)),z(()=>{Y(d,`id`,t.id),d.disabled=n(),Y(d,`aria-expanded`,B(r))}),H(`keydown`,u,e=>{B(r)&&(e.key===`Escape`?(e.preventDefault(),e.stopPropagation(),l()):(e.key===`ArrowDown`||e.key===`ArrowUp`)&&(e.preventDefault(),s(e.key===`ArrowDown`?1:-1)))}),H(`click`,d,()=>{B(r)?l():c()}),W(e,u),j()}Xr([`keydown`,`click`]);var yE=U(`<option class="svelte-1uxsjsg"> </option>`),bE=U(`<datalist class="svelte-1uxsjsg"></datalist>`),xE=U(`<input class="svelte-1uxsjsg"/> <!>`,1),SE=U(`<input class="svelte-1uxsjsg"/>`),CE=U(`<option class="svelte-1uxsjsg">Other…</option>`),wE=U(`<select class="svelte-1uxsjsg"><!><!><!></select>`);function TE(e,t){let n=ci();A(t,!0);let r=X(t,`other`,3,!1),i=X(t,`required`,3,!1),a=X(t,`disabled`,3,!1),o=X(t,`placeholder`,3,``),s=`\0other`,c=N(!1),l=M(()=>t.value&&!t.options.some(e=>e.value===t.value)?[...t.options,{value:t.value,label:t.value}]:t.options);var u=si(),d=I(u),f=e=>{var r=xE(),i=I(r);fa(i);var s=R(i,2),l=e=>{var r=bE();q(r,21,()=>t.options,e=>e.value,(e,t)=>{var n=yE(),r=L(n,!0),i={};z(()=>{G(r,B(t).label===B(t).value?``:B(t).label),i!==(i=B(t).value)&&(n.value=(n.__value=i)??``)}),W(e,n)}),k(r),z(()=>Y(r,`id`,n)),W(e,r)};K(s,e=>{t.options.length&&e(l)}),z(()=>{Y(i,`id`,t.id),i.disabled=a(),Y(i,`aria-label`,t.label),Y(i,`list`,t.options.length?n:void 0),Y(i,`placeholder`,o()||(t.options.length?`Type to find one`:``)),pa(i,t.value)}),H(`change`,i,e=>{let n=e.currentTarget.value.trim();!n&&t.options.length<=30&&P(c,!1),t.onpick(n||void 0)}),W(e,r)},p=e=>{var n=SE();fa(n),z(()=>{Y(n,`id`,t.id),n.disabled=a(),Y(n,`aria-label`,t.label),Y(n,`placeholder`,o()),pa(n,t.value)}),H(`change`,n,e=>{t.onpick(e.currentTarget.value.trim()||void 0)}),W(e,n)},m=e=>{var n=wE(),o=F(n),u=e=>{var t=yE(),n=L(t,!0);t.value=t.__value=``,z(()=>G(n,i()?`Choose…`:`Not set`)),W(e,t)};K(o,e=>{(!i()||!t.value)&&e(u)});var d=R(o);q(d,17,()=>B(l),e=>e.value,(e,t)=>{var n=yE(),r=L(n,!0),i={};z(()=>{G(r,B(t).label),i!==(i=B(t).value)&&(n.value=(n.__value=i)??``)}),W(e,n)});var f=R(d),p=e=>{var t=CE();t.value=t.__value=s,W(e,t)};K(f,e=>{r()&&e(p)}),k(n);var m;$i(n),z(()=>{Y(n,`id`,t.id),n.disabled=a(),Y(n,`aria-label`,t.label),m!==(m=t.value)&&(n.value=(n.__value=m)??``,Qi(n,m))}),H(`change`,n,e=>{let n=e.currentTarget.value;n===s?P(c,!0):t.onpick(n||void 0)}),W(e,n)};K(d,e=>{t.options.length>30||B(c)&&r()?e(f):!t.options.length&&r()?e(p,1):e(m,-1)}),W(e,u),j()}Xr([`change`]);var EE=new Set([`$$slots`,`$$events`,`$$legacy`]);function DE(e,t){let n=La(t,EE),r={name:`arrow-left-right`,size:24,node:[[`path`,{d:`M8 3 4 7l4 4`}],[`path`,{d:`M4 7h16`}],[`path`,{d:`m16 21 4-4-4-4`}],[`path`,{d:`M20 17H4`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var OE=new Set([`$$slots`,`$$events`,`$$legacy`]);function kE(e,t){let n=La(t,OE),r={name:`circle-question-mark`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`}],[`path`,{d:`M12 17h.01`}]],aliases:[`help-circle`,`circle-help`]};$a(e,za(()=>n,{get icon(){return r}}))}var AE=new Set([`$$slots`,`$$events`,`$$legacy`]);function jE(e,t){let n=La(t,AE),r={name:`cloud`,size:24,node:[[`path`,{d:`M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var ME=new Set([`$$slots`,`$$events`,`$$legacy`]);function NE(e,t){let n=La(t,ME),r={name:`key-round`,size:24,node:[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var PE=new Set([`$$slots`,`$$events`,`$$legacy`]);function FE(e,t){let n=La(t,PE),r={name:`laptop`,size:24,node:[[`path`,{d:`M18 5a2 2 0 0 1 2 2v8.526a2 2 0 0 0 .212.897l1.068 2.127a1 1 0 0 1-.9 1.45H3.62a1 1 0 0 1-.9-1.45l1.068-2.127A2 2 0 0 0 4 15.526V7a2 2 0 0 1 2-2z`}],[`path`,{d:`M20.054 15.987H3.946`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var IE=new Set([`$$slots`,`$$events`,`$$legacy`]);function LE(e,t){let n=La(t,IE),r={name:`log-in`,size:24,node:[[`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`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var RE=new Set([`$$slots`,`$$events`,`$$legacy`]);function zE(e,t){let n=La(t,RE),r={name:`package`,size:24,node:[[`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`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var BE=new Set([`$$slots`,`$$events`,`$$legacy`]);function VE(e,t){let n=La(t,BE),r={name:`shield-check`,size:24,node:[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`}],[`path`,{d:`m9 12 2 2 4-4`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var HE=e=>[e.type??[]].flat();function UE(e,t){if(e.enum)return`choice`;if(e.anyOf)return(t===void 0||typeof t==`string`)&&e.anyOf.some(e=>HE(e).includes(`string`))?`text`:`json`;let n=HE(e);return n.includes(`string`)?`text`:n.includes(`integer`)||n.includes(`number`)?`number`:n.includes(`boolean`)?`switch`:n.includes(`array`)?e.items?`list`:`json`:n.includes(`object`)?e.properties?`group`:typeof e.additionalProperties==`object`?`table`:`json`:`json`}function WE(e){if(typeof e!=`object`)return{};let t=HE(e);return t.includes(`array`)?[]:t.includes(`string`)||e.anyOf?``:t.includes(`object`)||!t.length?{}:``}var GE=e=>!!e?.required?.length,KE=/^[A-Za-z0-9_][\w-]*$/,qE=(e,t)=>typeof t==`number`?`${e}[${String(t)}]`:KE.test(t)?e?`${e}.${t}`:t:`${e}["${t}"]`,JE={prereqs:`Needs first`,once:`Runs to completion`,after:`Starts after`,commands:`Commands on its card`,mock:`Mock responses`,browserConsole:`Browser console on its card`,exitCode:`Exit code`,consumes:`Calls`,publishes:`Sends to queues`,reads:`Reads from queues`,envs:`Per environment`,localChanges:`Code changes for local runs`,signIns:`Sign-ins`,envAliases:`Other names for environments`,how:`Finds it by`,env:`Setting`,sso:`AWS profile`,signIn:`Sign-in`,hosts:`Host name`,tunnel:`Host`,connectsAs:`Dials it as`,cmd:`Command`,what:`What it is`,found:`Seen in`,deployed:`Deployed address`,fetch:`How to get it`,cli:`Command`,ui:`By hand`,devCerts:`HTTPS certificate`,nuget:`Private package feed`,defineFile:`Dart define file`};function YE(e,t){if(typeof e==`string`&&e)return e;if(typeof e!=`object`||!e)return t;let n=e;if(typeof n.path==`string`&&n.path)return`${typeof n.method==`string`?n.method:`Any`} ${n.path}`;let r=[`what`,`name`,`tunnel`,`sso`,`signIn`,`hosts`,`env`,`file`].map(e=>n[e]).find(e=>typeof e==`string`&&e);return typeof r==`string`?r:t}var XE={envs:`Environments`,protected:`Protected`,presets:`Team boards`,checks:`Checks on this Mac`};function ZE(e,t=!1){if(t&&Object.hasOwn(XE,e))return XE[e]??e;if(Object.hasOwn(JE,e))return JE[e]??e;let n=e.replace(/([a-z0-9])([A-Z])/g,`$1 $2`).toLowerCase().replace(/\b(url|sso|id|ios|aws|cors|sam)\b/g,e=>e===`ios`?`iOS`:e.toUpperCase());return n.charAt(0).toUpperCase()+n.slice(1)}var QE=(e,t)=>e.some(e=>t===e||t.startsWith(`${e}.`)||t.startsWith(`${e}[`)),$E=[`name`,`kind`,`slug`],eD=`What it uses differently per environment`,tD=`Fields with no tab of their own`,nD={dotnet:[`project`,`launchSettings`,`baseProfile`],node:[`script`],web:[`script`],flutter:[`flutter`,`mobile`],lambda:[`lambda`,`sam`]},rD=[...new Set(Object.values(nD).flat())],iD=[{name:`Runs here`,about:`How Koppler starts it on this Mac`,keys:[`start`,`url`,`ready`,`once`,`after`,`commands`,`mock`,`project`,`launchSettings`,`baseProfile`,`script`,`flutter`,`mobile`,`lambda`,`sam`,`localChanges`]},{name:`Deployed`,about:`Where it runs in the deployed environments`,keys:[`deployedUrl`,`cors`,`outside`]},{name:`Calls`,about:`What it calls, and the queues it sends to and reads`,keys:[`consumes`,`publishes`,`reads`]},{name:`Needs first`,about:`What has to be ready before it starts`,keys:[`prereqs`]},{name:`Secrets`,about:`The secrets it needs, and how to get each`,keys:[`secrets`]},{name:`Environments`,about:eD,keys:[`envs`],view:`envs`}],aD=[{name:`Deployed`,about:`Where it is and what it is`,keys:[`outside`,`deployedUrl`]},{name:`Calls`,about:`What it calls`,keys:[`consumes`]},{name:`Environments`,about:eD,keys:[`envs`],view:`envs`}],oD=[`name`],sD=[{name:`Environments`,about:`Where the stack is deployed, and which need a second look`,keys:[`envs`,`protected`,`envAliases`]},{name:`Apps`,about:`Every app in the stack`,keys:[`apps`],view:`apps`},{name:`Queues`,about:`The queues and topics between apps`,keys:[`queues`]},{name:`Sign-ins`,about:`Sign-ins the needs of its apps can use`,keys:[`signIns`]},{name:`Checks`,about:`What is checked on this Mac`,keys:[`checks`]},{name:`Kinds`,about:`Kinds of app beyond the ones Koppler knows`,keys:[`kinds`]},{name:`Team boards`,about:`Boards shared with the team`,keys:[`presets`]}],cD=[`deployedUrl`,`start`,`prereqs`,`secrets`];function lD(e){let t=new Map;for(let n of e){let e=n.indexOf(`: `);e>0&&t.set(n.slice(0,e),n.slice(e+2))}return t}var uD=(e,t)=>!t||e===t||e.startsWith(`${t}.`)||e.startsWith(`${t}[`);function dD(e){return e===void 0?`not set`:typeof e==`string`?e:Array.isArray(e)?e.length?e.map((e,t)=>YE(e,`#${String(t+1)}`)).join(`, `):`none`:typeof e==`object`&&e?Object.keys(e).join(`, `)||`empty`:JSON.stringify(e)}function fD(e,t){let n=e=>typeof e==`object`&&!!e;if(!n(e)||!n(t)||Array.isArray(e)!==Array.isArray(t))return JSON.stringify(e)===JSON.stringify(t)?0:1;let r=e,i=t;return[...new Set([...Object.keys(r),...Object.keys(i)])].reduce((e,t)=>e+fD(r[t],i[t]),0)}var pD=e=>typeof e==`object`&&e&&!Array.isArray(e)?e:{},mD=e=>typeof e==`string`||typeof e==`number`?String(e):``,hD={tunnel:DE,cloud:jE,laptop:FE,signIn:LE,shield:VE,box:zE,key:NE,other:kE},gD=[{id:`tunnel`,label:`Tunnel`,about:`A database or service reached through a tunnel`,icon:hD.tunnel,fields:[`tunnel`,`port`,`env`,`what`,`connectsAs`,`cmd`,`note`],start:{},say:e=>{let t=[mD(e.tunnel),mD(e.port)].filter(Boolean).join(`:`),n=mD(e.what),r=mD(e.env);return`${n&&t?`${n}, `:n}${t}${r?` as ${r}`:``}`}},{id:`sso`,label:`AWS sign-in`,about:`An AWS profile to be signed in with`,icon:hD.cloud,fields:[`sso`,`account`,`note`],start:{},say:e=>`${mD(e.sso)}${e.account?`, account ${mD(e.account)}`:``}`},{id:`hosts`,label:`Hosts entry`,about:`A name that has to lead to this Mac`,icon:hD.laptop,fields:[`hosts`,`note`],start:{},say:e=>e.hosts?`${mD(e.hosts)} leads to this Mac`:``},{id:`signIn`,label:`Stack sign-in`,about:`A sign-in this stack defines`,icon:hD.signIn,fields:[`signIn`,`note`],start:{},say:(e,t)=>{let n=mD(e.signIn),r=mD(pD(pD(t.signIns)[n]).what);return r&&r!==n?`${n}, ${r}`:n}},{id:`devCerts`,label:`HTTPS certificate`,about:`It serves https here, so its certificate must be trusted`,icon:hD.shield,fields:[`note`],own:[`devCerts`],start:{devCerts:!0},say:e=>mD(e.note)||`The local certificate must be trusted`},{id:`nuget`,label:`Private package feed`,about:`It downloads company packages while it builds`,icon:hD.box,fields:[`note`],own:[`nuget`],start:{nuget:!0},say:e=>mD(e.note)||`Packages come from a private feed`}],_D=(e,t)=>gD.find(n=>t?n.id===t:e[n.id]!==void 0&&e[n.id]!==!1),vD=[{value:`env`,label:`A setting`},{value:`env-file`,label:`A line in a settings file`},{value:`edit`,label:`An edit to its code`},{value:`secret`,label:`A key in its Lambda secret`},{value:`unknown`,label:`Not known yet`}],yD={env:[`how`,`env`,`path`,`value`,`deployed`,`note`],"env-file":[`how`,`file`,`key`,`path`,`value`,`deployed`,`note`],edit:[`how`,`file`,`key`,`value`,`deployed`,`note`],secret:[`how`,`key`,`path`,`deployed`,`note`],unknown:[`how`,`found`,`deployed`,`note`]},bD=e=>{let t=[e.env??[]].flat().map(mD).filter(Boolean).join(`, `),n=mD(e.file);return e.how===`env`?t?`found by the setting ${t}`:`found by a setting, not named yet`:e.how===`env-file`?`found by ${mD(e.key)||`a line`} in ${n||`a settings file`}`:e.how===`edit`?`found by an edit to ${n||`its code`}`:e.how===`secret`?`found by ${mD(e.key)||`a key`} in its secret`:`how it finds it is not known yet`},xD=/(?:^|\.)(prereqs|secrets|localChanges)\[\d+\]$|(?:^|\.)(consumes)(?:\.[\w-]+|\["[^"]+"\])$|(?:^|\.)(ready)$/,SD=/(?:^|\.)(prereqs|secrets|localChanges|consumes)$/;function CD(e,t,n,r){let i=xD.exec(e),a=i?.[1]??i?.[2]??i?.[3];if(!a)return;let o=pD(t),s=pD(n);if(a===`prereqs`){let e=_D(o,r);if(!e)return{label:`Something else`,say:dD(t),icon:hD.other,fields:Object.keys(o)};let{label:n,icon:i,fields:a,own:c}=e;return{label:n,icon:i,fields:a,say:e.say(o,s),...c&&{own:c}}}if(a===`secrets`){let e=mD(o.type),t=mD(o.when);return{label:mD(o.env)||mD(o.file)||`Secret`,say:[e&&ZE(e),t&&`needed ${t}`].filter(Boolean).join(`, `),icon:hD.key,fields:[`env`,`type`,`file`,`when`,`fetch`,`note`]}}if(a===`localChanges`)return{label:mD(o.file)||`Change`,say:``,fields:[`file`,`find`,`replace`],inline:{file:`In`,find:`find`,replace:`and put`}};if(a===`ready`)return{label:`Ready`,say:``,fields:[`path`,`status`,`timeout`],inline:{path:`when GET`,status:`answers`,timeout:`within`}};let c=/(?:\.([\w-]+)|\["([^"]+)"\])$/.exec(e)?.slice(1).find(Boolean)??``,l=pD(pD(s.apps)[c]),u=mD(o.how);return{label:mD(l.name)||c,say:bD(o),kind:mD(l.kind)||`other`,fields:(Object.hasOwn(yD,u)?yD[u]:void 0)??yD.unknown??[]}}var wD={path:`/health`,status:`200`,timeout:`30 s`,file:`src/config.ts`,find:`the text as it is`,replace:`the text for local runs`};function TD(e){if(typeof e!=`string`||!e)return{};if(!/^[a-z][a-z0-9+.-]*:\/\//i.test(e))return{warn:`Start it with http:// or https://`};try{let t=new URL(e);return[`localhost`,`127.0.0.1`,`[::1]`].includes(t.hostname)&&t.port?{note:`Answers on port ${t.port} of this Mac`}:{}}catch{return{warn:`Not an address a browser could open`}}}function ED(e,t,n,r){if(e===`envs`)return`ordered`;if(e===`protected`)return`envs`;if(/(?:^|\.)(publishes|reads)$/.test(e))return`queues`;if(/^apps\.[a-z0-9-]+\.after$/.test(e))return`apps`;if(r)return/(?:^|\.)kind$/.test(e)?`kind`:`pick`;if(/(?:^|\.)(url|deployedUrl|deployed)$/.test(e))return`address`;let i=e=>HE(e).includes(`array`)&&HE(e.items??{}).includes(`string`);if(i(t)||Array.isArray(n)&&t.anyOf?.some(i))return`chips`}var DD={prereqs:`Nothing has to be in place before it runs.`,secrets:`It needs no secrets.`,localChanges:`No code is changed for a local run.`,consumes:`No calls are recorded yet, which is not the same as calling nothing.`},OD=U(`<button class="words svelte-gtai80" type="button"> </button>`),kD=U(`<button class="words remove svelte-gtai80" type="button">Remove</button>`),AD=U(`<span><!> <button type="button"> </button></span>`),jD=U(`<!> <!>`,1),MD=U(`<span class="none svelte-gtai80"> </span>`),ND=U(`<option class="svelte-gtai80"> </option>`),PD=U(`<select class="svelte-gtai80"><option class="svelte-gtai80"> </option><!></select>`),FD=U(`<input placeholder="New key" class="svelte-gtai80"/>`),ID=U(`<!> <!> <span class="add svelte-gtai80"><!> <button type="button" class="svelte-gtai80">Add</button></span>`,1),LD=U(`<div class="draft svelte-gtai80" role="group"><!> <span class="add svelte-gtai80"><button type="button" class="go svelte-gtai80">Keep</button> <button type="button" class="svelte-gtai80">Cancel</button></span></div>`),RD=U(`<button type="button" class="svelte-gtai80"><span class="glyph svelte-gtai80"><!></span> <span class="what svelte-gtai80"> </span> <span class="about svelte-gtai80"> </span></button>`),zD=U(`<div class="types svelte-gtai80" role="group" aria-label="What does it need?"><!> <span class="add svelte-gtai80"><button type="button" class="svelte-gtai80">Cancel</button></span></div>`),BD=U(`<span class="add svelte-gtai80"><button type="button" class="svelte-gtai80"> </button></span>`),VD=U(`<!> <!> <!>`,1),HD=U(`<span class="error svelte-gtai80" role="alert"> </span>`),UD=U(`<span class="name svelte-gtai80"> </span>`),WD=U(`<span class="part svelte-gtai80"><span class="word svelte-gtai80"> </span> <!></span>`),GD=U(`<div><!> <fieldset class="parts svelte-gtai80"><legend class="sr svelte-gtai80"> </legend> <!></fieldset> <!> <!></div>`),KD=U(`<span class="about svelte-gtai80"> </span>`),qD=U(`<fieldset class="top svelte-gtai80"><legend class="sr svelte-gtai80"> </legend> <span class="row svelte-gtai80"><span class="name svelte-gtai80">Everything</span><!></span> <!> <!></fieldset>`),JD=U(`<span class="glyph svelte-gtai80"><!></span>`),YD=U(`<span class="name svelte-gtai80"><span class="what svelte-gtai80"> </span><span class="say svelte-gtai80"> </span></span>`),XD=U(`<span class="unset svelte-gtai80">Not set</span>`),ZD=U(`<span class="name svelte-gtai80"> </span> <!>`,1),QD=U(`<details><summary class="svelte-gtai80"><span class="chev svelte-gtai80"><!></span> <!> <!> <!></summary> <fieldset class="svelte-gtai80"><legend class="sr svelte-gtai80"> </legend> <!> <!></fieldset></details>`),$D=U(`<input type="checkbox" role="switch" class="svelte-gtai80"/>`),eO=U(`<select class="svelte-gtai80"><option class="svelte-gtai80">Not set</option><!></select>`),tO=U(`<input inputmode="numeric" class="svelte-gtai80"/>`),nO=U(`<input class="svelte-gtai80"/>`),rO=U(`<textarea rows="3" class="svelte-gtai80"></textarea>`),iO=U(`<textarea class="mono svelte-gtai80"></textarea>`),aO=U(`<span class="note warn svelte-gtai80"> </span>`),oO=U(`<span class="note svelte-gtai80"> </span>`),sO=U(`<div><label> </label> <!> <!> <!> <!></div>`);function cO(e,t){let n=ci();A(t,!0);let r=e=>{var n=AD();let r;var i=F(n),o=e=>{var n=OD(),r=L(n,!0);z(()=>G(r,t.drop)),H(`click`,n,()=>void h(void 0)),W(e,n)},s=e=>{var t=kD();z(()=>Y(t,`aria-label`,`Remove ${B(C)??``}`)),H(`click`,t,()=>void h(void 0)),W(e,t)};K(i,e=>{t.drop&&!B(f)?e(o):t.value!==void 0&&!a()&&!B(f)&&e(s,1)});var c=R(i,2);let l;var u=L(c,!0);k(n),z(()=>{r=J(n,1,`acts svelte-gtai80`,null,r,{fresh:t.ctx.fresh}),l=J(c,1,`words lock svelte-gtai80`,null,l,{on:B(f)}),Y(c,`aria-pressed`,B(f)),Y(c,`aria-label`,`${B(f)?`Unlock`:`Lock`} ${B(C)??``}`),Y(c,`title`,B(f)?`Locked: nothing changes it. Click to unlock`:`Lock: keep it as it is, for you and the agent`),G(u,B(f)?`Locked`:`Lock`)}),H(`click`,c,()=>{t.ctx.lock(t.path,!B(f))}),W(e,n)},i=e=>{var n=jD(),r=I(n),i=e=>{var n=jD(),r=I(n);q(r,16,()=>B(x),e=>e,(e,n)=>{{let r=M(()=>qE(t.path,n)),i=M(()=>ZE(n,t.path===``)),a=M(()=>t.schema.properties?.[n]??{}),s=M(()=>!!t.schema.required?.includes(n)),c=M(()=>o()+1);cO(e,{get path(){return B(r)},get name(){return B(i)},get schema(){return B(a)},get value(){return B(g)[n]},get ctx(){return t.ctx},get required(){return B(s)},get depth(){return B(c)}})}}),q(R(r,2),16,()=>B(b),e=>e,(e,n)=>{{let r=M(()=>qE(t.path,n)),i=M(()=>ZE(n)),a=M(()=>t.schema.properties?.[n]??{}),s=M(()=>o()+1);cO(e,{get path(){return B(r)},get name(){return B(i)},get schema(){return B(a)},get value(){return B(g)[n]},get ctx(){return t.ctx},get depth(){return B(s)}})}}),W(e,n)},a=e=>{var n=ID(),r=I(n);q(r,16,()=>Object.keys(B(g)),e=>e,(e,n)=>{{let r=M(()=>qE(t.path,n)),i=M(()=>o()+1);cO(e,{get path(){return B(r)},get name(){return n},get schema(){return t.schema.additionalProperties},get value(){return B(g)[n]},get ctx(){return t.ctx},get depth(){return B(i)}})}});var i=R(r,2),a=e=>{var t=MD(),n=L(t,!0);z(()=>G(n,DD[B(E)])),W(e,t)},s=M(()=>B(E)&&!Object.keys(B(g)).length);K(i,e=>{B(s)&&e(a)});var c=R(i,2),l=F(c),u=e=>{var n=PD(),r=F(n),i=L(r,!0);r.value=r.__value=``,q(R(r),16,()=>B(T),e=>e,(e,n)=>{var r=ND(),i=L(r,!0),a={};z(e=>{G(i,e),a!==(a=n)&&(r.value=(r.__value=a)??``)},[()=>CD(qE(t.path,n),{},t.ctx.stack())?.label??n]),W(e,r)}),k(n),$i(n),z(()=>{Y(n,`aria-label`,`Add to ${t.name??``}`),G(i,B(E)&&pe[B(E)]||`Add…`)}),ea(n,()=>B(ae),e=>P(ae,e)),W(e,n)},d=M(()=>t.ctx.keys(t.path)),f=e=>{var n=FD();fa(n),z(()=>Y(n,`aria-label`,`New key in ${t.name??``}`)),ba(n,()=>B(ae),e=>P(ae,e)),W(e,n)};K(l,e=>{B(d)?e(u):e(f,-1)});var p=R(l,2);k(c),z(e=>p.disabled=e,[()=>!B(ae).trim()]),H(`click`,p,()=>void fe()),W(e,n)},s=e=>{var n=VD(),r=I(n);Ci(r,()=>B(_).length,e=>{var n=si();q(I(n),17,()=>B(_),Ti,(e,n,r)=>{{let i=M(()=>qE(t.path,r)),a=M(()=>YE(B(n),`${t.name} ${String(r+1)}`)),s=M(()=>t.schema.items??{}),c=M(()=>o()+1);cO(e,{get path(){return B(i)},get name(){return B(a)},get schema(){return B(s)},get value(){return B(n)},get ctx(){return t.ctx},get depth(){return B(c)}})}}),W(e,n)});var i=R(r,2),a=e=>{var t=MD(),n=L(t,!0);z(()=>G(n,DD[B(E)])),W(e,t)};K(i,e=>{B(E)&&!B(_).length&&!B(oe)&&!B(ce)&&e(a)});var s=R(i,2),c=e=>{var n=LD(),r=F(n);{let e=M(()=>qE(t.path,B(_).length)),n=M(()=>t.schema.items??{}),i=M(()=>o()+1);cO(r,{get path(){return B(e)},name:`New`,get schema(){return B(n)},get value(){return B(oe)},get ctx(){return B(ue)},get as(){return B(se)},required:!0,open:!0,get depth(){return B(i)}})}var i=R(r,2),a=F(i),s=R(a,2);k(i),k(n),z(()=>Y(n,`aria-label`,`New in ${t.name??``}`)),H(`click`,a,async()=>{P(p,await t.ctx.save(qE(t.path,B(_).length),B(oe))??``,!0),B(p)||P(oe,null)}),H(`click`,s,()=>P(oe,null)),W(e,n)},l=e=>{var t=zD(),n=F(t);q(n,17,()=>gD,e=>e.id,(e,t)=>{let n=M(()=>B(t).id===`signIn`&&!B(ie));var r=RD(),i=F(r);Ua(F(i),{get of(){return B(t).icon},size:15}),k(i);var a=R(i,2),o=L(a,!0),s=L(R(a,2),!0);k(r),z(()=>{r.disabled=B(n),G(o,B(t).label),G(s,B(n)?`This stack defines none yet`:B(t).about)}),H(`click`,r,()=>de(B(t))),W(e,r)});var r=L(R(n,2));k(t),H(`click`,r,()=>P(ce,!1)),W(e,t)},u=e=>{var t=BD(),n=F(t),r=L(n,!0);k(t),z(()=>G(r,B(E)&&pe[B(E)]||`Add`)),H(`click`,n,()=>void fe()),W(e,t)};K(s,e=>{B(oe)?e(c):B(ce)?e(l,1):e(u,-1)}),W(e,n)};K(r,e=>{B(c)===`group`?e(i):B(c)===`table`?e(a,1):e(s,-1)});var l=R(r,2),u=e=>{var t=HD(),n=L(t,!0);z(()=>G(n,B(m))),W(e,t)};K(l,e=>{B(m)&&e(u)}),W(e,n)},a=X(t,`required`,3,!1),o=X(t,`depth`,3,0),s=X(t,`bare`,3,!1),c=M(()=>UE(t.schema,t.value)),l=M(()=>B(c)===`group`||B(c)===`table`||B(c)===`list`),u=M(()=>B(l)?null:t.ctx.options(t.path)),d=M(()=>ED(t.path,t.schema,t.value,B(u))),f=M(()=>t.ctx.locked(t.path)),p=N(``),m=M(()=>B(p)||t.ctx.problem?.(t.path)||``),h=async e=>{P(p,await t.ctx.save(t.path,e)??``,!0)},g=M(()=>typeof t.value==`object`&&t.value!==null&&!Array.isArray(t.value)?t.value:{}),_=M(()=>Array.isArray(t.value)?t.value:[]),v=M(()=>CD(t.path,t.value,t.ctx.stack(),t.as)),y=M(()=>B(v)?[...B(v).fields,...B(v).own??[]]:Object.keys(t.schema.properties??{})),b=M(()=>Object.keys(B(g)).filter(e=>!B(y).includes(e))),x=M(()=>B(v)?B(v).fields:Object.keys(t.schema.properties??{})),S=M(()=>B(v)?.inline&&!B(b).length?B(v).inline:void 0),C=M(()=>B(v)?[B(v).label,B(v).say].filter(Boolean).join(`: `):t.name),w=e=>e===void 0?``:JSON.stringify(e,null,2),T=M(()=>(t.ctx.keys(t.path)??[]).filter(e=>!Object.hasOwn(B(g),e))),ee=M(()=>t.schema.description??``),te=M(()=>B(d)===`address`?TD(t.value):{}),E=M(()=>SD.exec(t.path)?.[1]),ne=e=>typeof e==`string`?e:``,D=M(()=>B(_).filter(e=>typeof e==`string`)),re=M(()=>t.ctx.stack()),ie=M(()=>Object.keys(t.ctx.stack()?.signIns??{}).length),ae=N(``),oe=N(null),se=N(void 0),ce=N(!1),le=N(fn(Mr(()=>t.open??(!B(v)&&t.value!==void 0&&o()<2)))),ue=M(()=>({...t.ctx,save:(e,n)=>{let r=ET(e.slice(qE(t.path,B(_).length).length).replace(/^\./,``));return`error`in r||P(oe,kT(B(oe),r,n),!0),Promise.resolve(null)},locked:()=>!1,fresh:!0})),de=e=>{P(ce,!1),P(se,e?.id,!0),P(oe,{...e?.start},!0)},fe=async()=>{if(B(c)===`list`){B(E)===`prereqs`?P(ce,!0):B(E)||GE(t.schema.items)?de():P(p,await t.ctx.save(qE(t.path,B(_).length),WE(t.schema.items))??``,!0);return}let e=B(ae).trim();e&&(P(p,await t.ctx.save(qE(t.path,e),WE(t.schema.additionalProperties))??``,!0),B(p)||P(ae,``))},pe={prereqs:`Add a need`,secrets:`Add a secret`,localChanges:`Add a change`,consumes:`Add an app it calls…`};var me=si(),he=I(me),ge=e=>{var n=GD();let i;var a=F(n),c=e=>{var n=UD(),r=L(n,!0);z(()=>{Y(n,`title`,B(ee)),G(r,t.name)}),W(e,n)};K(a,e=>{o()<=1&&e(c)});var l=R(a,2),u=F(l),d=L(u,!0);q(R(u,2),16,()=>B(x),e=>e,(e,n)=>{var r=WD(),i=F(r),a=L(i,!0),s=R(i,2);{let e=M(()=>qE(t.path,n)),r=M(()=>ZE(n)),i=M(()=>t.schema.properties?.[n]??{}),a=M(()=>o()+1);cO(s,{get path(){return B(e)},get name(){return B(r)},get schema(){return B(i)},get value(){return B(g)[n]},get ctx(){return t.ctx},bare:!0,get depth(){return B(a)}})}k(r),z(()=>{Y(r,`data-key`,n),G(a,B(S)[n])}),W(e,r)}),k(l);var p=R(l,2);r(p);var h=R(p,2),_=e=>{var t=HD(),n=L(t,!0);z(()=>G(n,B(m))),W(e,t)};K(h,e=>{B(m)&&e(_)}),k(n),z(e=>{i=J(n,1,`field line svelte-gtai80`,null,i,{locked:B(f),changed:e,wide:o()>1||s()}),l.disabled=B(f),G(d,B(C))},[()=>t.ctx.changed?.(t.path)]),W(e,n)},_e=e=>{var n=qD(),a=F(n),o=L(a,!0),s=R(a,2),c=R(F(s));r(c),k(s);var l=R(s,2),u=e=>{var t=KD(),n=L(t,!0);z(()=>G(n,B(ee))),W(e,t)};K(l,e=>{B(ee)&&e(u)});var d=R(l,2);i(d),k(n),z(()=>{n.disabled=B(f),G(o,t.name)}),W(e,n)},ve=e=>{var n=QD();let a;var o=F(n),s=F(o);Ua(F(s),{get of(){return ST},size:10}),k(s);var c=R(s,2),l=e=>{fE(e,{get kind(){return B(v).kind},label:``})},u=e=>{var t=JD();Ua(F(t),{get of(){return B(v).icon},size:15}),k(t),W(e,t)};K(c,e=>{B(v)?.kind?e(l):B(v)?.icon&&e(u,1)});var d=R(c,2),p=e=>{var t=YD(),n=F(t),r=L(n,!0),i=L(R(n),!0);k(t),z(()=>{G(r,B(v).label),G(i,B(v).say)}),W(e,t)},m=e=>{var n=ZD(),r=I(n),i=L(r,!0),a=R(r,2),o=e=>{W(e,XD())};K(a,e=>{t.value===void 0&&e(o)}),z(()=>G(i,t.name)),W(e,n)};K(d,e=>{B(v)?e(p):e(m,-1)});var h=R(d,2);r(h),k(o);var g=R(o,2),_=F(g),y=L(_,!0),b=R(_,2),x=e=>{var t=KD(),n=L(t,!0);z(()=>G(n,B(ee))),W(e,t)};K(b,e=>{B(ee)&&!B(v)&&e(x)});var S=R(b,2);i(S),k(g),k(n),z(()=>{a=J(n,1,`nest svelte-gtai80`,null,a,{rowed:!!B(v)}),Y(o,`title`,B(ee)),g.disabled=B(f),G(y,B(C))}),ja(`open`,`toggle`,n,e=>P(le,e),()=>B(le)),W(e,n)},ye=e=>{var i=sO();let o;var l=F(i);let p;var _=L(l,!0),v=R(l,2),y=e=>{{let r=M(()=>ne(t.value));vE(e,{get id(){return n},get value(){return B(r)},get options(){return B(u).options},get disabled(){return B(f)},onpick:e=>void h(e)})}},b=e=>{{let r=M(()=>ne(t.value)),i=M(()=>!!B(u).other),o=M(()=>s()?wD[t.path.split(`.`).at(-1)??``]??t.name:B(ee));TE(e,{get id(){return n},get value(){return B(r)},get options(){return B(u).options},get other(){return B(i)},get required(){return a()},get disabled(){return B(f)},get placeholder(){return B(o)},onpick:e=>void h(e)})}},x=e=>{{let n=M(()=>B(d)===`ordered`),r=M(()=>B(d)===`ordered`?`runs by default`:``);HT(e,{get value(){return B(D)},get label(){return t.name},get ordered(){return B(n)},get first(){return B(r)},get disabled(){return B(f)},onchange:e=>void h(e.length||a()||B(d)===`ordered`?e:void 0)})}},S=e=>{let n=M(()=>B(re)?.envs??[]);{let r=M(()=>B(n).map(e=>({value:e,label:e.toUpperCase()}))),i=M(()=>t.value===void 0?B(n).slice(1):B(D));NT(e,{get options(){return B(r)},get picked(){return B(i)},get label(){return t.name},get disabled(){return B(f)},none:`The stack has no environments yet.`,ontoggle:(e,r)=>{let i=t.value===void 0?B(n).slice(1):B(D);h(B(n).filter(t=>t===e?r:i.includes(t)))}})}},C=e=>{let n=M(()=>t.path.split(`.`)[1]);{let r=M(()=>Object.entries(B(re)?.apps??{}).filter(([e,t])=>e!==B(n)&&!t.outside).map(([e,t])=>({value:e,label:t.name??e})));NT(e,{get options(){return B(r)},get picked(){return B(D)},get label(){return t.name},get disabled(){return B(f)},none:`The stack has no other apps.`,ontoggle:(e,t)=>{let n=t?[...B(D),e]:B(D).filter(t=>t!==e);h(n.length?n:void 0)}})}},T=e=>{{let n=M(()=>Object.entries(B(re)?.queues??{}).map(([e,t])=>({value:e,label:t.name??e}))),r=M(()=>Object.keys(B(g)));NT(e,{get options(){return B(n)},get picked(){return B(r)},get label(){return t.name},get disabled(){return B(f)},none:`The stack has no queues yet: add them in the stack's settings.`,ontoggle:(e,t)=>{let{[e]:n,...r}=B(g);h(t?{...B(g),[e]:n??{}}:Object.keys(r).length?r:void 0)}})}},E=e=>{var r=$D();fa(r),z(()=>{Y(r,`id`,n),r.disabled=B(f),ma(r,t.value===!0)}),H(`change`,r,e=>void h(e.currentTarget.checked)),W(e,r)},ie=e=>{var r=eO(),i=F(r);i.value=i.__value=``,q(R(i),16,()=>t.schema.enum??[],e=>e,(e,t)=>{var n=ND(),r=L(n,!0),i={};z(e=>{G(r,e),i!==(i=t)&&(n.value=(n.__value=i)??``)},[()=>String(t)]),W(e,n)}),k(r);var a;$i(r),z(()=>{Y(r,`id`,n),r.disabled=B(f),a!==(a=t.value??``)&&(r.value=(r.__value=a)??``,Qi(r,a))}),H(`change`,r,e=>void h(e.currentTarget.value||void 0)),W(e,r)},ae=e=>{var r=tO();fa(r),z(e=>{Y(r,`id`,n),r.disabled=B(f),Y(r,`placeholder`,e),pa(r,typeof t.value==`number`||typeof t.value==`string`?t.value:``)},[()=>s()?wD[t.path.split(`.`).at(-1)??``]??t.name:B(ee)]),H(`change`,r,e=>{let t=e.currentTarget.value.trim();h(t===``?void 0:Number.isFinite(Number(t))?Number(t):t)}),W(e,r)},oe=e=>{var r=nO();fa(r),z(e=>{Y(r,`id`,n),r.disabled=B(f),Y(r,`inputmode`,B(d)===`address`?`url`:void 0),Y(r,`spellcheck`,B(d)!==`address`&&void 0),Y(r,`aria-invalid`,B(te).warn?!0:void 0),Y(r,`placeholder`,e),pa(r,typeof t.value==`string`?t.value:``)},[()=>s()?wD[t.path.split(`.`).at(-1)??``]??t.name:B(ee)]),H(`change`,r,e=>void h(e.currentTarget.value===``?void 0:e.currentTarget.value)),W(e,r)},se=M(()=>B(c)===`text`&&!(typeof t.value==`string`&&(t.value.length>60||t.value.includes(`
|
|
35
|
+
`))&&!s())),ce=e=>{var r=rO();_t(r),z(()=>{Y(r,`id`,n),r.disabled=B(f),Y(r,`placeholder`,B(ee)),pa(r,typeof t.value==`string`?t.value:``)}),H(`change`,r,e=>void h(e.currentTarget.value===``?void 0:e.currentTarget.value)),W(e,r)},le=e=>{var r=iO();_t(r),z((e,t)=>{Y(r,`id`,n),Y(r,`rows`,e),r.disabled=B(f),Y(r,`placeholder`,B(ee)||`JSON`),pa(r,t)},[()=>Math.min(10,w(t.value).split(`
|
|
36
|
+
`).length+1),()=>w(t.value)]),H(`change`,r,e=>{let t=e.currentTarget.value.trim();if(!t)h(void 0);else try{h(JSON.parse(t))}catch{h(t)}}),W(e,r)};K(v,e=>{B(d)===`kind`&&B(u)?e(y):B(d)===`pick`&&B(u)?e(b,1):B(d)===`ordered`||B(d)===`chips`?e(x,2):B(d)===`envs`?e(S,3):B(d)===`apps`?e(C,4):B(d)===`queues`?e(T,5):B(c)===`switch`?e(E,6):B(c)===`choice`?e(ie,7):B(c)===`number`?e(ae,8):B(se)?e(oe,9):B(c)===`text`?e(ce,10):e(le,-1)});var ue=R(v,2),de=e=>{r(e)};K(ue,e=>{s()||e(de)});var fe=R(ue,2),pe=e=>{var t=aO(),n=L(t,!0);z(()=>G(n,B(te).warn)),W(e,t)},me=e=>{var t=oO(),n=L(t,!0);z(()=>G(n,B(te).note)),W(e,t)};K(fe,e=>{B(te).warn?e(pe):B(te).note&&e(me,1)});var he=R(fe,2),ge=e=>{var t=HD(),n=L(t,!0);z(()=>G(n,B(m))),W(e,t)};K(he,e=>{B(m)&&e(ge)}),k(i),z(e=>{o=J(i,1,`field svelte-gtai80`,null,o,{locked:B(f),changed:e,bare:s()}),p=J(l,1,`name svelte-gtai80`,null,p,{sr:s()}),Y(l,`for`,n),Y(l,`title`,B(ee)),G(_,t.name)},[()=>t.ctx.changed?.(t.path)]),W(e,i)};K(he,e=>{B(S)?e(ge):B(l)&&!B(d)&&o()===0?e(_e,1):B(l)&&!B(d)?e(ve,2):e(ye,-1)}),W(e,me),j()}Xr([`click`,`change`]);var lO=U(`<p class="none svelte-orrnu3"> </p>`),uO=U(`<div class="same svelte-orrnu3"><span class="name svelte-orrnu3"> </span> <span class="from svelte-orrnu3"> </span> <button type="button" class="svelte-orrnu3"> </button></div>`),dO=U(`<option> </option>`),fO=U(`<select class="svelte-orrnu3"><option>Its own value for another field…</option><!></select>`),pO=U(`<section class="env svelte-orrnu3"><h3 class="svelte-orrnu3"> </h3> <!> <!></section>`),mO=U(`<!> <!>`,1);function hO(e,t){A(t,!0);let n=M(()=>v(t.envs)),r=M(()=>_(B(n)[0],`qa`)),i=M(()=>B(n).slice(1)),a=e=>t.app.envs?.[e]??{},o=M(()=>typeof t.schema.properties?.envs?.additionalProperties==`object`?t.schema.properties.envs.additionalProperties:{}),s=e=>B(o).properties?.[e]??t.schema.properties?.[e]??{},c=e=>[...new Set([...cD,...Object.keys(a(e))])],l=new Set([`name`,`kind`,`slug`,`outside`,`envs`]),u=e=>Object.keys(t.schema.properties??{}).filter(t=>!l.has(t)&&!c(e).includes(t)),d=e=>{let n=t.app[e];return n===void 0?WE(s(e)):JSON.parse(JSON.stringify(n))},f=(e,n)=>qE(qE(qE(t.path,`envs`),e),n);var p=mO(),m=I(p),h=e=>{var t=lO(),n=L(t);z(e=>G(n,`The stack has one environment, ${e??``}: there is nothing to differ from.`),[()=>B(r).toUpperCase()]),W(e,t)};K(m,e=>{B(i).length||e(h)}),q(R(m,2),16,()=>B(i),e=>e,(e,n)=>{let i=M(()=>B(r).toUpperCase()),o=M(()=>n.toUpperCase());var l=pO(),p=F(l),m=L(p),h=R(p,2);q(h,16,()=>c(n),e=>e,(e,r)=>{var c=si(),l=I(c),u=e=>{{let o=M(()=>f(n,r)),c=M(()=>ZE(r)),l=M(()=>s(r)),u=M(()=>a(n)[r]);cO(e,{get path(){return B(o)},get name(){return B(c)},get schema(){return B(l)},get value(){return B(u)},get ctx(){return t.ctx},depth:1,get drop(){return`Use ${B(i)??``}'s`}})}},p=M(()=>a(n)[r]!==void 0),m=e=>{var a=uO(),s=F(a),c=L(s,!0),l=R(s,2),u=L(l),p=R(l,2),m=L(p);k(a),z((e,t,n)=>{G(c,e),Y(l,`title`,t),G(u,`Same as ${B(i)??``}: ${n??``}`),G(m,`Change for ${B(o)??``}`)},[()=>ZE(r),()=>dD(t.app[r]),()=>dD(t.app[r])]),H(`click`,p,()=>void t.ctx.save(f(n,r),d(r))),W(e,a)};K(l,e=>{B(p)?e(u):e(m,-1)}),W(e,c)});var g=R(h,2),_=e=>{var r=fO(),i=F(r);i.value=i.__value=``,q(R(i),16,()=>u(n),e=>e,(e,t)=>{var n=dO(),r=L(n,!0),i={};z(e=>{G(r,e),i!==(i=t)&&(n.value=(n.__value=i)??``)},[()=>ZE(t)]),W(e,n)}),k(r),r.value=r.__value=``,z(()=>Y(r,`aria-label`,`Give ${B(o)??``} its own value for another field`)),H(`change`,r,e=>{let r=e.currentTarget.value;e.currentTarget.value=``,r&&t.ctx.save(f(n,r),d(r))}),W(e,r)},v=M(()=>u(n).length);K(g,e=>{B(v)&&e(_)}),k(l),z(()=>{Y(l,`aria-label`,`What ${B(o)??``} uses`),G(m,`${B(o)??``} uses`)}),W(e,l)}),W(e,p),j()}Xr([`click`,`change`]);var gO=U(`<span class="led svelte-6g11qq" title="Running"></span>`),_O=U(`<span class="tag svelte-6g11qq"> </span>`),vO=U(`<span class="slug svelte-6g11qq"> </span>`),yO=U(`<span class="sub svelte-6g11qq"><!> <!></span>`),bO=U(`<button type="button" class="ask svelte-6g11qq" title="It reads the repo, says what it would set, and asks you first. Locked fields stay as they are."> </button>`),xO=U(`<span class="mark bad svelte-6g11qq"> </span>`),SO=U(`<span class="mark svelte-6g11qq"> </span>`),CO=U(`<button type="button" role="tab"><span class="marker svelte-6g11qq" aria-hidden="true"></span> <!></button>`),wO=U(`<div class="tabs svelte-6g11qq" role="tablist" aria-orientation="vertical"></div>`),TO=U(`<span class="about svelte-6g11qq"> </span>`),EO=U(`<div class="sec svelte-6g11qq"><span class="title svelte-6g11qq"> </span><!></div>`),DO=U(`<li class="svelte-6g11qq"><span class="name svelte-6g11qq"> </span> <span class="kind svelte-6g11qq"> </span> <button type="button" class="svelte-6g11qq">Settings</button></li>`),OO=U(`<ul class="apps svelte-6g11qq"></ul>`),kO=U(`<details class="others svelte-6g11qq"><summary class="svelte-6g11qq"><span class="chev svelte-6g11qq"><!></span>Fields for other kinds of app</summary> <!></details>`),AO=U(`<!> <!>`,1),jO=U(`<span class="say svelte-6g11qq" role="alert"> </span> <button type="button" class="svelte-6g11qq">Keep editing</button> <button type="button" class="bad svelte-6g11qq">Discard and close</button>`,1),MO=U(`<span class="say svelte-6g11qq" role="status"><!></span> <button type="button" class="svelte-6g11qq">Discard</button> <button type="button" class="go svelte-6g11qq"> </button>`,1),NO=U(`<div><!> <div class="body svelte-6g11qq" role="tabpanel"><!> <!></div></div> <footer><!></footer>`,1),PO=U(`<dialog aria-labelledby="settings-title" class="svelte-6g11qq"><header class="svelte-6g11qq"><!> <div class="who svelte-6g11qq"><h2 id="settings-title" class="svelte-6g11qq"> </h2> <!></div> <!> <button class="x svelte-6g11qq" type="button" aria-label="Close">×</button></header> <!></dialog>`);function FO(e,t){A(t,!0);let n=N(void 0),r=N(``),i=N(``),a=N(null),o=N(null),s=N(null),c=N(fn([])),l=N(fn(new Map)),u=N(0),d=N(!1),f=N(!1),p=N(!1),m=!1,h=N(!1),g={awsProfiles:[],files:[],profiles:{},scripts:{}},_=N(fn(g)),y=e=>{let t=ET(e);return`error`in t?[]:t},b=(e,t)=>{let n=e;for(let e of t?y(t):[])n=typeof e==`number`?n.items??{}:n.properties?.[e]??(typeof n.additionalProperties==`object`?n.additionalProperties:{});return n},x=M(()=>B(s)?b(B(s),B(i)):{}),S=M(()=>B(i)?OT(B(o),y(B(i))):B(o)),C=M(()=>/^apps\.[a-z0-9-]+$/.test(B(i))?B(i).slice(5):null),w=M(()=>!!B(C)&&!!B(S)?.outside),T=M(()=>B(C)?$E:B(i)?[]:oD),ee=M(()=>{let e={name:`Identity`,about:B(C)?`What it is called, and where its code is`:`What the stack is called`,keys:B(T)},t=B(C)?[e,...B(w)?aD:iD]:B(i)?[]:[e,...sD],n=new Set([...B(T),...t.flatMap(e=>e.keys)]),r=[...Object.keys(B(x).properties??{}),...Object.keys(B(S)??{})].filter(e=>!n.has(e)),a=[...new Set(r)],s=B(i)?CD(B(i),B(S),B(o)):void 0;return s?[{name:`Settings`,keys:[...new Set([...s.fields,...Object.keys(B(S)??{})])]}]:t.length?a.length?[...t,{name:`Other`,about:tD,keys:a}]:t:[{name:`Settings`,keys:a}]}),te=M(()=>B(ee)[Math.min(B(u),B(ee).length-1)]),E=M(()=>fD(B(a),B(o))),ne=(e,t)=>t?OT(e,y(t)):e,D=e=>fD(ne(B(a),e),ne(B(o),e))>0,re=e=>e.filter(e=>D(qE(B(i),e))),ie=M(()=>{let e=ne(B(a),B(i))??{};return re([...new Set([...Object.keys(e),...Object.keys(B(S)??{})])]).map(e=>ZE(e,!B(i)))}),ae=e=>[...B(l).keys()].filter(t=>e.some(e=>uD(t,qE(B(i),e)))).length,oe=M(()=>{let e=B(C)&&typeof B(S)?.kind==`string`?B(S).kind:``;return(Object.hasOwn(Go,e)?Go[e]?.label:null)??e}),se=M(()=>B(C)&&typeof B(S)?.slug==`string`?B(S).slug:``);async function ce(e){P(r,e.title,!0),P(i,e.path,!0),m=!1,P(h,!1),P(p,!1),P(f,!1),P(u,1),P(l,new Map,!0),P(c,Q.status?.locks??[],!0);let t=/^apps\.([a-z0-9-]+)$/.exec(e.path)?.[1]??``,[d,v,y]=await Promise.all([B(s)?Promise.resolve(B(s)):fetch(`data/stack-schema.json`).then(e=>e.json()),fetch(`data/registry.json`).then(e=>e.json()),fetch(`data/choices.json?app=${t}`).then(e=>e.json()).catch(()=>g)]);P(_,{...g,...y},!0),P(s,d);let{source:b,found:x,...S}=v;P(a,S),P(o,JSON.parse(JSON.stringify(S))),B(n)?.showModal()}let le=e=>e.map(e=>({value:e,label:e})),ue=(e,t=!0)=>({options:le(e),other:t}),de=e=>B(_).files.filter(t=>e.test(t)),fe={save:(e,t)=>(P(o,kT(B(o),y(e),t)),P(p,!1),B(l).has(e)&&P(l,new Map([...B(l)].filter(([t])=>t!==e)),!0),Promise.resolve(null)),locked:e=>QE(B(c),e),lock:(e,t)=>{oo(`stack-lock`,{path:e,on:t}).then(n=>{`error`in n||P(c,t?[...B(c),e]:B(c).filter(t=>t!==e),!0)})},keys:e=>/(^|\.)consumes$/.test(e)?Z.apps.map(e=>e.id).filter(t=>!e.startsWith(`apps.${t}.`)):/(^|\.)(envs|sam\.envs)$/.test(e)?Z.envs:/(^|\.)(publishes|reads)$/.test(e)?Object.keys(OT(B(o),[`queues`])??{}):null,problem:e=>B(l).get(e),changed:D,options:e=>{let t=/(?:^|\.)([A-Za-z]+)$/.exec(e)?.[1]??``,n=B(o)??{},r=B(S)??{};if(t===`kind`&&/^apps\.[a-z0-9-]+\.kind$/.test(e))return{options:[...Object.entries(Go).map(([e,t])=>({value:e,label:t.label,kind:e})),...Object.entries(n.kinds??{}).filter(([e])=>!Object.hasOwn(Go,e)).map(([e,t])=>({value:e,label:t.label??e,kind:e}))]};if(t===`sso`)return ue(B(_).awsProfiles);if(t===`signIn`)return ue(Object.keys(n.signIns??{}),!1);if(t===`how`&&/consumes/.test(e))return{options:vD};if(t===`type`&&/secrets\[\d+\]\.type$/.test(e))return{options:CT.map(e=>({value:e,label:ZE(e)})),other:!0};if(!B(C))return null;if(t===`project`&&!/lambda\.project$/.test(e)){let e=de(/\.(cs|fs|vb)proj$/);return ue([...new Set(e.map(e=>e.split(`/`).slice(0,-1).join(`/`)||`.`)),...e])}if(t===`launchSettings`)return ue(Object.keys(B(_).profiles));if(t===`baseProfile`){let e=typeof r.launchSettings==`string`?r.launchSettings:``,t=B(_).profiles[e]??[...new Set(Object.values(B(_).profiles).flat())];return ue(t)}return t===`script`?ue(B(_).scripts[`package.json`]??Object.values(B(_).scripts)[0]??[]):t===`defineFile`?ue(de(/\.(json|env)$/).filter(e=>!/(^|\/)package(-lock)?\.json$/.test(e))):t===`template`?ue(de(/\.ya?ml$/)):t===`file`?ue(B(_).files):null},stack:()=>B(o)},pe=async()=>{P(d,!0);let e=await oo(`stack-save`,{stack:B(o)});if(P(d,!1),`error`in e){let t=e.problems??[];P(l,t.length?lD(t):new Map([[``,e.error]]),!0);let n=B(ee).findIndex(e=>ae(e.keys));n>=0&&P(u,n,!0)}else P(a,JSON.parse(JSON.stringify(B(o)))),P(l,new Map,!0),P(p,!0),m=!0},me=()=>{P(o,JSON.parse(JSON.stringify(B(a)))),P(l,new Map,!0)},he=()=>{B(E)&&!B(f)?P(f,!0):(B(n)?.close(),m&&Z.reload())};var ge={open:ce},_e=PO(),ve=F(_e),ye=F(ve),be=e=>{W(e,gO())},xe=M(()=>B(C)&&Q.up(B(C)));K(ye,e=>{B(xe)&&e(be)});var Se=R(ye,2),Ce=F(Se),we=L(Ce,!0),Te=R(Ce,2),O=e=>{var t=yO(),n=F(t),r=e=>{var t=_O(),n=L(t,!0);z(()=>G(n,B(oe))),W(e,t)};K(n,e=>{B(oe)&&e(r)});var i=R(n,2),a=e=>{var t=vO(),n=L(t,!0);z(()=>G(n,B(se))),W(e,t)};K(i,e=>{B(se)&&e(a)}),k(t),W(e,t)};K(Te,e=>{(B(oe)||B(se))&&e(O)}),k(Se);var Ee=R(Se,2),De=e=>{var t=bO(),n=L(t,!0);z(()=>{t.disabled=B(h),G(n,B(h)?`Asked the agent`:`Ask the agent to fill in`)}),H(`click`,t,async()=>{P(h,await Gb.askFill(B(C),Object.keys(B(x).properties??{}).filter(e=>B(S)?.[e]===void 0&&e!==`outside`),B(c).filter(e=>e.startsWith(`apps.${B(C)}.`))),!0)}),W(e,t)};K(Ee,e=>{B(C)&&!B(w)&&e(De)});var Oe=R(Ee,2);k(ve);var ke=R(ve,2),je=e=>{var t=NO(),n=I(t);let a;var o=F(n),s=e=>{var t=wO();q(t,23,()=>B(ee),e=>e.name,(e,t,n)=>{let r=M(()=>ae(B(t).keys)),i=M(()=>re(B(t).keys).length);var a=CO();let o;var s=R(F(a),1,!0),c=R(s),l=e=>{var t=xO(),n=L(t);z(()=>G(n,`${B(r)??``} to fix`)),W(e,t)},d=e=>{var t=SO(),n=L(t);z(()=>G(n,`${B(i)??``} ${B(i)===1?`change`:`changes`}`)),W(e,t)};K(c,e=>{B(r)?e(l):B(i)&&e(d,1)}),k(a),z(()=>{Y(a,`aria-selected`,B(te)===B(t)),o=J(a,1,`svelte-6g11qq`,null,o,{wrong:B(r)>0}),G(s,B(t).name)}),H(`click`,a,()=>P(u,B(n),!0)),W(e,a)}),k(t),z(()=>Y(t,`aria-label`,`${B(r)??``} settings`)),W(e,t)};K(o,e=>{B(ee).length>1&&e(s)});var c=R(o,2),m=F(c),h=e=>{var t=EO(),n=F(t),r=L(n,!0),i=R(n),a=e=>{var t=TO(),n=L(t,!0);z(()=>G(n,B(te).about)),W(e,t)};K(i,e=>{B(te).about&&e(a)}),k(t),z(()=>G(r,B(te).name)),W(e,t)};K(m,e=>{B(ee).length>1&&B(te)&&e(h)});var g=R(m,2),_=e=>{hO(e,{get path(){return B(i)},get app(){return B(S)},get schema(){return B(x)},get envs(){return Z.envs},get ctx(){return fe}})},y=e=>{var t=OO();q(t,21,()=>Object.entries(B(S)?.apps??{}),([e,t])=>e,(e,t)=>{var n=M(()=>v(B(t),2));let r=()=>B(n)[0],i=()=>B(n)[1];var a=DO(),o=F(a),s=L(o,!0),c=R(o,2),l=L(c,!0),u=R(c,2);k(a),z(e=>{G(s,i().name??r()),G(l,e),u.disabled=B(E)>0,Y(u,`title`,B(E)?`Save or discard your changes first`:void 0)},[()=>(Object.hasOwn(Go,i().kind??``)?Go[i().kind??``]?.label:null)??i().kind??``]),H(`click`,u,()=>void ce({title:i().name??r(),path:`apps.${r()}`})),W(e,a)}),k(t),W(e,t)},b=e=>{let t=M(()=>typeof B(S)?.kind==`string`?B(S).kind:``),n=M(()=>nD[B(t)]??[]),r=M(()=>B(te).keys.filter(e=>rD.includes(e)&&!B(n).includes(e)&&B(S)?.[e]===void 0));var a=AO(),o=I(a);q(o,16,()=>B(te).keys.filter(e=>!B(r).includes(e)),e=>e,(e,t)=>{{let n=M(()=>qE(B(i),t)),r=M(()=>ZE(t,!B(i))),a=M(()=>B(x).properties?.[t]??{}),o=M(()=>B(S)?.[t]),s=M(()=>!!B(x).required?.includes(t)),c=M(()=>B(te).keys.length===1?0:1);cO(e,{get path(){return B(n)},get name(){return B(r)},get schema(){return B(a)},get value(){return B(o)},get ctx(){return fe},get required(){return B(s)},get depth(){return B(c)}})}});var s=R(o,2),c=e=>{var t=kO(),n=F(t),a=F(n);Ua(F(a),{get of(){return ST},size:10}),k(a),Ae(),k(n),q(R(n,2),16,()=>B(r),e=>e,(e,t)=>{{let n=M(()=>qE(B(i),t)),r=M(()=>ZE(t)),a=M(()=>B(x).properties?.[t]??{}),o=M(()=>B(S)?.[t]);cO(e,{get path(){return B(n)},get name(){return B(r)},get schema(){return B(a)},get value(){return B(o)},get ctx(){return fe},depth:1})}}),k(t),W(e,t)};K(s,e=>{B(r).length&&e(c)}),W(e,a)};K(g,e=>{B(te)?.view===`envs`&&B(C)&&B(S)?e(_):B(te)?.view===`apps`?e(y,1):B(te)&&e(b,2)}),k(c),k(n);var w=R(n,2);let T;var ne=F(w),D=e=>{var t=jO(),n=I(t),r=L(n),i=R(n,2),a=R(i,2);z(()=>G(r,`Close without saving ${B(E)??``} ${B(E)===1?`change`:`changes`}?`)),H(`click`,i,()=>P(f,!1)),H(`click`,a,()=>{me(),he()}),W(e,t)},oe=e=>{var t=MO(),n=I(t),r=F(n),i=e=>{var t=oi();z(e=>G(t,e),[()=>B(l).get(``)??`${String(B(l).size)} to fix before it can be saved`]),W(e,t)},a=e=>{var t=oi();z(e=>G(t,`${B(E)??``} ${B(E)===1?`change`:`changes`}${e??``}`),[()=>B(ie).length?` · ${B(ie).join(`, `)}`:``]),W(e,t)},o=e=>{W(e,oi(`Saved`))},s=e=>{W(e,oi(`No changes`))};K(r,e=>{B(l).size?e(i):B(E)?e(a,1):B(p)?e(o,2):e(s,-1)}),k(n);var c=R(n,2),u=R(c,2),f=L(u,!0);z(()=>{c.disabled=!B(E)||B(d),u.disabled=!B(E)||B(d),G(f,B(d)?`Saving…`:`Save`)}),H(`click`,c,me),H(`click`,u,()=>void pe()),W(e,t)};K(ne,e=>{B(f)&&B(E)?e(D):e(oe,-1)}),k(w),z(()=>{a=J(n,1,`main svelte-6g11qq`,null,a,{single:B(ee).length<2}),Y(c,`aria-label`,B(te)?.name),T=J(w,1,`svelte-6g11qq`,null,T,{dirty:B(E)>0})}),W(e,t)};return K(ke,e=>{B(s)&&B(o)&&e(je)}),k(_e),Aa(_e,e=>P(n,e),()=>B(n)),z(()=>G(we,B(r))),V(`cancel`,_e,e=>{e.preventDefault(),he()}),H(`click`,_e,e=>{e.target===B(n)&&he()}),H(`click`,Oe,he),W(e,_e),j(ge)}Xr([`click`]);var IO=U(`<span> </span>`),LO=U(`<option> </option>`),RO=U(`<select class="svelte-1psun92"><option>Kind?</option><!></select>`),zO=U(`<div><input type="checkbox" class="svelte-1psun92"/> <span class="who svelte-1psun92"><input class="name svelte-1psun92" maxlength="80" spellcheck="false"/> <span class="slug svelte-1psun92"> </span></span> <!></div>`),BO=U(`<details open="" class="svelte-1psun92"><summary class="svelte-1psun92"><span class="folder svelte-1psun92"> </span> <span class="n svelte-1psun92"> </span> <button class="link svelte-1psun92" type="button"> </button></summary> <!></details>`),VO=U(`<p class="none svelte-1psun92"> </p>`),HO=U(`<dialog aria-labelledby="repos-title" class="svelte-1psun92"><button class="x svelte-1psun92" type="button" aria-label="Close"><!></button> <h2 id="repos-title" class="svelte-1psun92"> </h2> <p class="sub svelte-1psun92"><!></p> <input type="search" placeholder="Find a repo" aria-label="Find a repo" autocomplete="off" class="svelte-1psun92"/> <div class="list svelte-1psun92"></div> <p class="error svelte-1psun92" role="alert"> </p> <div class="acts svelte-1psun92"><span class="count svelte-1psun92"> </span> <button type="button" class="svelte-1psun92">Cancel</button> <button class="go svelte-1psun92" type="button"> </button></div></dialog>`);function UO(e,t){A(t,!0);let n=N(void 0),r=N(null),i=N(``),a=N(``),o=N(!1),s=new v_,c=M(()=>(B(r)?.repos??[]).filter(e=>!e.inStack)),l=M(()=>B(c).filter(e=>`${e.name} ${e.slug} ${e.folder}`.toLowerCase().includes(B(i).trim().toLowerCase()))),u=M(()=>[...new Set(B(l).map(e=>e.folder))]),d=(e,t)=>`${String(e)} ${t}${e===1?``:`s`}`;async function f(){s.clear(),P(i,``),P(a,``),P(r,await so()),B(n)?.showModal()}let p=(e,t,n={})=>{P(a,``),t?s.set(e.slug,{name:e.name,kind:e.kind??``,...s.get(e.slug),...n}):s.delete(e.slug)},m=e=>{let t=B(c).filter(t=>t.folder===e),n=t.every(e=>s.has(e.slug));for(let e of t)p(e,!n)},h=async()=>{let e=B(c).find(e=>s.has(e.slug)&&!s.get(e.slug)?.kind);if(e){P(a,`Choose what kind of app ${e.name} is.`);return}P(o,!0);let t=await oo(`apps`,{apps:[...s].map(([e,{name:t,kind:n}])=>({slug:e,name:t.trim()||e,kind:n}))});P(o,!1),`error`in t?P(a,t.error,!0):(B(n)?.close(),Bb.findings?Bb.findings.open({afterAdding:!0}):location.reload())};var g={open:f},_=HO(),y=F(_);Ua(F(y),{get of(){return to},size:14}),k(y);var b=R(y,2),x=L(b),S=R(b,2),C=F(S),w=e=>{var t=oi();z(e=>G(t,`Tick every repo you might want to run in ${Z.stack??``}: this is the full list you will choose from. Which ones run
|
|
37
|
+
together is decided later on the board. Koppler found ${B(c).length??``} on this Mac, under ${e??``}.`),[()=>B(r).roots.join(`, `)]),W(e,t)},T=e=>{W(e,oi(`No scan of your repos yet. Run koppler init.`))};K(C,e=>{B(r)?e(w):e(T,-1)}),k(S);var ee=R(S,2);fa(ee);var te=R(ee,2);q(te,20,()=>B(u),e=>e,(e,t)=>{let n=M(()=>B(l).filter(e=>e.folder===t)),r=M(()=>B(n).filter(e=>s.has(e.slug)).length);var i=BO(),a=F(i),o=F(a),c=L(o,!0),u=R(o,2),f=L(u),h=R(u,2),g=L(h,!0);k(a),q(R(a,2),17,()=>B(n),e=>e.slug,(e,t)=>{let n=M(()=>s.get(B(t).slug));var r=zO();let i;var a=F(r);fa(a);var o=R(a,2),c=F(o);fa(c);var l=R(c,2),u=L(l,!0);k(o);var d=R(o,2),f=e=>{var n=IO(),r=L(n,!0);z(e=>{J(n,1,`kind kind-${B(t).kind??``}`,`svelte-1psun92`),G(r,e)},[()=>is({kind:B(t).kind}).label]),W(e,n)},m=e=>{var r=RO(),i=F(r);i.value=i.__value=``,q(R(i),17,()=>Object.entries(Go),([e,{label:t}])=>e,(e,t)=>{var n=M(()=>v(B(t),2));let r=()=>B(n)[0],i=()=>B(n)[1].label;var a=LO(),o=L(a,!0),s={};z(()=>{G(o,i()),s!==(s=r())&&(a.value=(a.__value=s)??``)}),W(e,a)}),k(r);var a;$i(r),z(()=>{Y(r,`aria-label`,`Kind of app for ${B(t).name??``}`),a!==(a=B(n)?.kind??``)&&(r.value=(r.__value=a)??``,Qi(r,a))}),H(`change`,r,e=>{p(B(t),!0,{kind:e.currentTarget.value})}),W(e,r)};K(d,e=>{B(t).kind?e(f):e(m,-1)}),k(r),z(()=>{i=J(r,1,`pick svelte-1psun92`,null,i,{on:!!B(n)}),Y(a,`aria-label`,`Add ${B(t).name??``}`),ma(a,!!B(n)),Y(c,`aria-label`,`Name of ${B(t).slug??``} in the stack`),pa(c,B(n)?.name??B(t).name),Y(l,`title`,B(t).path),G(u,B(t).slug)}),H(`change`,a,e=>{p(B(t),e.currentTarget.checked)}),H(`input`,c,e=>{B(n)&&p(B(t),!0,{name:e.currentTarget.value})}),W(e,r)}),k(i),z((e,n,r)=>{G(c,t),G(f,`${e??``}${n??``}`),G(g,r)},[()=>d(B(n).length,`repo`),()=>B(r)?`, ${String(B(r))} picked`:``,()=>B(r)===B(n).length?`Clear these`:`Pick all ${String(B(n).length)}`]),H(`click`,h,()=>{m(t)}),W(e,i)},e=>{var t=VO(),n=L(t,!0);z(()=>G(n,B(c).length?`No repo matches.`:`Every clone found is already in the stack.`)),W(e,t)}),k(te);var E=R(te,2),ne=L(E,!0),D=R(E,2),re=F(D),ie=L(re,!0),ae=R(re,2),oe=R(ae,2),se=L(oe,!0);return k(D),k(_),Aa(_,e=>P(n,e),()=>B(n)),z((e,t)=>{G(x,`${Z.apps.length?`Add repos to`:`Add your repos to`} ${Z.stack??``}`),G(ne,B(a)),G(ie,e),oe.disabled=!s.size||B(o),G(se,t)},[()=>s.size?`${String(s.size)} picked`:`Nothing picked yet`,()=>B(o)?`Adding…`:s.size?`Add ${d(s.size,`app`)}`:`Add apps`]),V(`cancel`,_,e=>{s.size&&e.preventDefault()}),H(`click`,y,()=>B(n)?.close()),ba(ee,()=>B(i),e=>P(i,e)),H(`click`,ae,()=>B(n)?.close()),H(`click`,oe,h),W(e,_),j(g)}Xr([`click`,`change`,`input`]);var WO=U(`<button type="button" class="cable svelte-yroiop"> </button>`),GO=U(`<span class="alone svelte-yroiop" role="group"><span>Not cabled to any app here, so nothing local calls it and it calls only deployed apps.</span> <span class="picks svelte-yroiop"><!> <!> <button type="button" class="svelte-yroiop">Run it on its own</button> <button type="button" title="Leave it out of this run; its card stays on the board" class="svelte-yroiop">Don't run it</button></span></span>`),KO=U(`<label class="branch svelte-yroiop">Branch <!></label>`),qO=U(`<label class="svelte-yroiop"> <select class="svelte-yroiop"><option>Set aside until Stop</option><option>Take along</option></select></label>`),JO=U(`<label class="svelte-yroiop"><input type="radio"/> </label>`),YO=U(`<span class="started svelte-yroiop">Started by <span class="seg svelte-yroiop" role="radiogroup" aria-label="Started by"></span></span>`),XO=U(`<label class="check svelte-yroiop"><input type="checkbox" role="switch" class="svelte-yroiop"/> Tunnels</label>`),ZO=U(`<!> <span class="controls svelte-yroiop"><!> <!> <!> <!></span>`,1);function QO(e,t){A(t,!0);let n=M(()=>Z.app(t.id)),r=M(()=>Z.cards.find(e=>e.id===t.id)?.data),i=M(()=>Z.uncabled(t.id)?Z.cablesOf(t.id).can:[]),a=M(()=>Z.uncabled(t.id)?Z.cards.flatMap(e=>e.id!==t.id&&Z.cablesOf(e.id).can.some(e=>e.id===t.id)?Z.apps.filter(t=>t.id===e.id):[]):[]),o=(e,t)=>{Z.connect(e,t),Gb.again()},s=e=>{Z.set(t.id,e),Gb.again()};var c=si(),l=I(c),u=e=>{var c=ZO(),l=I(c),u=e=>{var r=GO(),s=R(F(r),2),c=F(s);q(c,17,()=>B(a).slice(0,3),e=>e.id,(e,n)=>{var r=WO(),i=L(r);z(()=>G(i,`${B(n).name??``} calls it`)),H(`click`,r,()=>{o(B(n).id,t.id)}),W(e,r)});var l=R(c,2);q(l,17,()=>B(i).slice(0,3),e=>e.id,(e,n)=>{var r=WO(),i=L(r);z(()=>G(i,`It calls ${B(n).name??``}`)),H(`click`,r,()=>{o(t.id,B(n).id)}),W(e,r)});var u=R(l,2),d=R(u,2);k(s),k(r),z(()=>Y(r,`aria-label`,`${B(n).name??``} is not cabled`)),H(`click`,u,()=>{Gb.onItsOwn[t.id]=!0}),H(`click`,d,()=>{Gb.leftOut[t.id]=!0,Gb.again()}),W(e,r)};K(l,e=>{(B(i).length||B(a).length)&&!Gb.onItsOwn[t.id]&&e(u)});var d=R(l,2),f=F(d),p=e=>{var t=KO();sb(R(F(t)),{get value(){return B(r).branch},get current(){return B(n).current},get branches(){return B(n).branches},onpick:e=>{s({branch:e})}}),k(t),W(e,t)};K(f,e=>{B(n).branches.length&&B(r).run!==`mock`&&e(p)});var m=R(f,2),h=e=>{var t=qO(),i=F(t),a=R(i),o=F(a);o.value=o.__value=`set-aside`;var c=R(o);c.value=c.__value=`take-along`,k(a);var l;$i(a),k(t),z(()=>{G(i,`${B(n).dirty??``} uncommitted on ${B(n).current??``} `),l!==(l=B(r).changes??`set-aside`)&&(a.value=(a.__value=l)??``,Qi(a,l))}),H(`change`,a,e=>{s({changes:e.currentTarget.value===`take-along`?`take-along`:`set-aside`})}),W(e,t)},g=M(()=>Z.switchesOver(t.id));K(m,e=>{B(g)&&e(h)});var _=R(m,2),y=e=>{var i=YO(),a=R(F(i));q(a,21,()=>B(n).runIn,([e])=>e,(e,n)=>{var i=M(()=>v(B(n),1));let a=()=>B(i)[0];var o=JO(),c=F(o);fa(c);var l=R(c,1,!0);k(o),z(()=>{Y(c,`name`,`review-run-${t.id??``}`),pa(c,a()),ma(c,B(r).run===a()),G(l,Fs[a()]??a())}),H(`change`,c,()=>{s({run:a()})}),W(e,o)}),k(a),k(i),W(e,i)};K(_,e=>{B(n).runIn.length>1&&e(y)});var b=R(_,2),x=e=>{var t=XO(),n=F(t);fa(n),Ae(),k(t),z(()=>ma(n,!B(r).hideTunnels)),H(`change`,n,e=>{s({hideTunnels:!e.currentTarget.checked})}),W(e,t)},S=M(()=>Z.tunnelsOf(t.id).length);K(b,e=>{B(S)&&e(x)}),k(d),W(e,c)};K(l,e=>{B(n)&&B(r)&&e(u)}),W(e,c),j()}Xr([`click`,`change`]);var $O=U(`<p class="stripes svelte-pzq2er" aria-hidden="true"> </p>`),ek=U(`<button class="mini svelte-pzq2er" type="button"> </button>`),tk=U(`<p> <!></p>`),nk=U(`<small> </small>`),rk=U(`<span> <!> <!> <!></span>`),ik=U(`<ul class="lines svelte-pzq2er"><li class="svelte-pzq2er"><span class="verb svelte-pzq2er"> </span> <span class="apps svelte-pzq2er"></span></li></ul>`),ak=U(`<button class="back svelte-pzq2er" type="button"> </button>`),ok=U(`<!> <p class="kicker svelte-pzq2er" aria-hidden="true">Review first</p> <h2 id="review-title" class="svelte-pzq2er"> </h2> <p class="sub svelte-pzq2er"> </p> <div class="body svelte-pzq2er"><!> <!></div> <div class="actions svelte-pzq2er"><!> <button type="button" class="svelte-pzq2er">Cancel</button> <button type="button"> </button></div>`,1),sk=U(`<dialog aria-labelledby="review-title"><!></dialog>`);function ck(e,t){A(t,!0);let n=N(void 0),r=M(()=>Gb.review);Fn(()=>{B(r)&&!B(n)?.open?B(n)?.showModal():!B(r)&&B(n)?.open&&B(n).close()});var i=sk();let a;var o=F(i),s=e=>{var t=ok(),n=I(t),i=e=>{var t=$O(),n=L(t);z(e=>G(n,`${e??``} · production data and customers`),[()=>Z.env.toUpperCase()]),W(e,t)};K(n,e=>{B(r).prod&&Z.protected&&e(i)});var a=R(n,4),o=L(a,!0),s=R(a,2),c=L(s,!0),l=R(s,2),u=F(l);q(u,17,()=>B(r).notices,Ti,(e,t)=>{var n=tk();let r;var i=F(n),a=R(i),o=e=>{var n=ek(),r=L(n,!0);z(()=>G(r,B(t).act.label)),H(`click`,n,function(...e){B(t).act.run?.apply(this,e)}),W(e,n)};K(a,e=>{B(t).act&&e(o)}),k(n),z(()=>{r=J(n,1,`notice svelte-pzq2er`,null,r,{prod:B(t).kind===`prod`}),G(i,`${B(t).text??``} `)}),W(e,n)}),q(R(u,2),17,()=>B(r).groups,Ti,(e,t)=>{var n=ik(),r=F(n),i=F(r),a=L(i,!0),o=R(i,2);q(o,21,()=>B(t).items,Ti,(e,t,n,r)=>{var i=rk();let a;var o=F(i),s=R(o),c=e=>{var n=ek(),r=L(n,!0);z(()=>{Y(n,`title`,B(t).act.title),G(r,B(t).act.label)}),H(`click`,n,function(...e){B(t).act.run?.apply(this,e)}),W(e,n)};K(s,e=>{B(t).act&&e(c)});var l=R(s,2);q(l,17,()=>B(t).notes,Ti,(e,t,n,r)=>{var i=nk(),a=L(i,!0);z(()=>{J(i,1,Vi(B(t).kind),`svelte-pzq2er`),Y(i,`title`,B(t).title),G(a,B(t).text)}),W(e,i)});var u=R(l,2),d=e=>{QO(e,{get id(){return B(t).id}})};K(u,e=>{B(t).id&&e(d)}),k(i),z(()=>{a=J(i,1,`svelte-pzq2er`,null,a,{off:B(t).off}),G(o,`${B(t).name??``} `)}),W(e,i)}),k(o),k(r),k(n),z(()=>{Y(i,`data-verb`,B(t).verb),G(a,B(t).label)}),W(e,n)}),k(l);var d=R(l,2),f=F(d),p=e=>{var t=ak(),n=L(t,!0);z(()=>G(n,B(r).back.label)),H(`click`,t,()=>{let{back:e}=B(r);Gb.review=null,e?.run()}),W(e,t)};K(f,e=>{B(r).back&&e(p)});var m=R(f,2),h=R(m,2);let g;var _=L(h,!0);k(d),z(()=>{G(o,B(r).title),G(c,B(r).sub),g=J(h,1,`ok svelte-pzq2er`,null,g,{prod:B(r).prod}),h.disabled=B(r).blocked,G(_,B(r).ok)}),H(`click`,m,()=>{Gb.review=null}),H(`click`,h,()=>{Gb.confirm()}),W(e,t)};K(o,e=>{B(r)&&e(s)}),k(i),Aa(i,e=>P(n,e),()=>B(n)),z(()=>a=J(i,1,`svelte-pzq2er`,null,a,{prod:B(r)?.prod&&Z.protected})),V(`close`,i,()=>{B(n)?.open||(Gb.review=null)}),W(e,i),j()}Xr([`click`]);var lk=new class{#e=N(null);get switching(){return B(this.#e)}set switching(e){P(this.#e,e,!0)}useStack(e){Gb.idle?this.#n(e.dir):Gb.stopReview({title:`Switch to ${e.name}`,sub:`${Z.stack} still has something running. It is stopped and reverted first, then Koppler switches.`,notices:[{text:`Your boards and history for ${Z.stack} are kept and come back when you switch back.`}],ok:`Stop, revert and switch`,text:`Stop and revert this stack using the koppler-run skill (stop every process the agent started, revert every temporary code change), then switch Koppler to the stack "${e.name}": koppler history done <this run's id>, then koppler use "${e.dir}". Report what was stopped and reverted.`,sent:`Sent. Koppler switches once everything is stopped`,data:{switchTo:e.dir}})}async#t(e){let t=await oo(e);return`error`in t?($.show(t.error,`warning`),null):t}async updateStack(){let e=await this.#t(`stack-update`);e?.updated?location.reload():e&&$.show(e.message??`Already up to date.`)}shareChanges(){let e=Q.status?.linked;if(!e)return;let t=[{verb:`keeps`,label:`Changes`,items:e.changes.map(e=>({name:e.replace(/^./,e=>e.toUpperCase()),notes:[]}))}];Gb.review={title:`Changes not in the shared stack yet`,sub:`What Koppler learned here, kept in your copy of ${Z.stack}. The shared stack on GitHub stays as it is until a pull request is merged.`,notices:[...e.pr?[{text:`A pull request is already open: ${e.pr}. Opening another replaces nothing; close the old one if you open a new one.`}]:[],{text:`Opening a pull request pushes a new branch to the shared repo with your GitHub account, for your team to review. No secret values are in it.`}],groups:t,ok:`Open pull request`,prod:!1,blocked:!1,confirm:()=>{$.show(`Opening the pull request…`),this.#t(`stack-pr`).then(e=>{e&&$.show(`Pull request opened`,`message`,{label:`View`,run:()=>window.open(e.url,`_blank`,`noopener`)})})},back:{label:`Discard my changes instead`,run:()=>{Gb.review={title:`Discard your changes`,sub:`Your copy of ${Z.stack} goes back to the shared stack as last fetched. What Koppler learned here is lost.`,notices:[],groups:t,ok:`Discard`,prod:!0,blocked:!1,confirm:()=>{this.#t(`stack-discard`).then(e=>{e&&location.reload()})}}}}}}addStack(e){Gb.idle?e():Gb.stopReview({title:`Start a new stack`,sub:`${Z.stack} still has something running. It is stopped and reverted first; then choose Add a stack again.`,notices:[{text:`Your boards and history for ${Z.stack} are kept and come back when you switch back.`}],ok:`Stop and revert`,text:`Stop and revert this stack using the koppler-run skill (stop every process the agent started, revert every temporary code change), so the user can start a new stack. Report what was stopped and reverted.`,sent:`Stopping and reverting`})}async#n(e){this.switching=e;let t=await oo(`stack`,{use:e});t.error?(this.switching=null,$.show(t.error,`warning`)):location.reload()}},uk=U(`<button class="x svelte-8d6d0q" type="button" aria-label="Close"><!></button>`),dk=U(`<!> <h2 id="setup-title" class="svelte-8d6d0q">Set up Koppler</h2> <p class="sub svelte-8d6d0q">Koppler runs the apps you pick on this Mac and connects them to each other. Everything else keeps calling the
|
|
38
|
+
deployed environment.</p> <ol class="concept svelte-8d6d0q" aria-label="How it fits together"><li class="svelte-8d6d0q"><strong>Stack</strong><span class="svelte-8d6d0q">Every app you might run. Added once.</span></li> <li class="svelte-8d6d0q"><strong>Board</strong><span class="svelte-8d6d0q">The few you run now, wired together. Saved as you go; keep as many as you like.</span></li></ol> <div class="choices svelte-8d6d0q"><button type="button" class="svelte-8d6d0q"><strong class="svelte-8d6d0q">Use a shared stack</strong> <span class="svelte-8d6d0q"> </span></button> <button type="button" class="svelte-8d6d0q"><strong class="svelte-8d6d0q">Start a new stack</strong><span class="svelte-8d6d0q">Name it, then pick your repos.</span></button></div>`,1),fk=U(`<div class="stack svelte-8d6d0q"><span class="svelte-8d6d0q"><strong> </strong> <span class="about svelte-8d6d0q"> </span> <small class="svelte-8d6d0q"> </small></span> <button type="button" class="svelte-8d6d0q">Use</button></div>`),pk=U(`<button class="back svelte-8d6d0q" type="button">Back</button> <h2 id="setup-title" class="svelte-8d6d0q">Use a shared stack</h2> <p class="sub svelte-8d6d0q"> </p> <!> <form class="link svelte-8d6d0q"><input type="text" inputmode="url" placeholder="Link to a stack.json on GitHub" aria-label="Link to a shared stack on GitHub" autocomplete="off" spellcheck="false" class="svelte-8d6d0q"/> <button class="go svelte-8d6d0q" type="submit">Use</button></form>`,1),mk=U(`<small class="svelte-8d6d0q">default</small>`),hk=U(`<span class="tag svelte-8d6d0q"> <!> <button type="button" class="svelte-8d6d0q"><!></button></span>`),gk=U(`<button class="back svelte-8d6d0q" type="button">Back</button> <h2 id="setup-title" class="svelte-8d6d0q">Start a new stack</h2> <p class="sub svelte-8d6d0q">It stays private on this Mac until you choose to share it.</p> <form class="new svelte-8d6d0q"><label class="svelte-8d6d0q">Name <input maxlength="60" placeholder="e.g. Orders platform" autocomplete="off" spellcheck="false" class="svelte-8d6d0q"/></label> <label class="svelte-8d6d0q">Environments <span class="tags svelte-8d6d0q"><!> <input autocomplete="off" spellcheck="false" autocapitalize="off" maxlength="16" class="svelte-8d6d0q"/></span> <small class="svelte-8d6d0q">Where your apps are deployed, e.g. qa and prod. The first one is the default.</small></label> <button class="go svelte-8d6d0q" type="submit">Create and add repos</button></form>`,1),_k=U(`<dialog aria-labelledby="setup-title" class="svelte-8d6d0q"><!> <p class="error svelte-8d6d0q" role="alert"> </p></dialog>`);function vk(e,t){A(t,!0);let n=N(void 0),r=N(`start`),i=N(``),a=N(!1),o=N(``),s=N(``),c=N(``),l=N(fn([])),u=M(()=>Z.known);function d(e=`start`){f(e),P(o,P(s,P(c,``),!0),!0),P(l,[],!0),B(n)?.showModal()}let f=e=>{P(r,e,!0),P(i,``)},p=async e=>{P(a,!0),P(i,``);let t=await oo(`stack`,e);P(a,!1),`error`in t?P(i,t.error,!0):location.reload()},m=e=>{for(let t of e.split(/[\s,]+/).filter(Boolean)){let e=t.toLowerCase();if(!/^[a-z0-9-]{1,16}$/.test(e))return P(i,`"${t}" will not work as a name: use lowercase letters, digits and dashes, e.g. qa.`),!1;if(B(l).length>=8)return P(i,`Eight environments is the most a stack can have.`),!1;B(l).includes(e)||P(l,[...B(l),e],!0)}return P(i,``),P(c,``),!0},h=e=>{[`Enter`,`,`,` `,`Tab`].includes(e.key)&&B(c).trim()?(e.preventDefault(),m(B(c))):e.key===`Backspace`&&!B(c)&&B(l).length&&P(l,B(l).slice(0,-1),!0)},g=e=>{e.preventDefault(),(!B(c).trim()||m(B(c)))&&p({name:B(s),envs:B(l)})};var _={open:d},v=_k(),y=F(v),b=e=>{var t=dk(),r=I(t),i=e=>{var t=uk();Ua(F(t),{get of(){return to},size:14}),k(t),H(`click`,t,()=>B(n)?.close()),W(e,t)};K(r,e=>{Z.setup||e(i)});var a=R(r,8),o=F(a),s=L(R(F(o),2),!0);k(o);var c=R(o,2);k(a),z(e=>G(s,e),[()=>B(u).length?`${String(B(u).length)} found on this Mac, or one from a link on GitHub.`:`From a link on GitHub, set up by your team.`]),H(`click`,o,()=>{f(`join`)}),H(`click`,c,()=>{f(`new`)}),W(e,t)},x=e=>{var t=pk(),n=I(t),r=R(n,4),i=L(r,!0),s=R(r,2);q(s,17,()=>B(u),e=>e.dir,(e,t)=>{var n=fk(),r=F(n),i=F(r),o=L(i,!0),s=R(i,2),c=L(s),l=R(s,2),u=L(l,!0);k(r);var d=R(r,2);k(n),z(e=>{G(o,B(t).name),G(c,`${B(t).linked?`from GitHub`:B(t).shared?`shared`:`private`}, ${B(t).apps??``}
|
|
39
|
+
${B(t).apps===1?`app`:`apps`}, ${e??``}`),Y(l,`title`,B(t).path),G(u,B(t).path),d.disabled=B(a),Y(d,`aria-label`,`Use ${B(t).name??``}`)},[()=>B(t).envs.join(` / `)]),H(`click`,d,()=>void p({use:B(t).dir})),W(e,n)});var c=R(s,2),l=F(c);fa(l);var d=R(l,2);k(c),z(e=>{G(i,B(u).length?`Found on this Mac, or paste a link to one on GitHub. Koppler never changes the original.`:`Paste a link to its stack.json on GitHub. Koppler keeps a copy here and never changes the original.`),d.disabled=e},[()=>B(a)||!B(o).trim()]),H(`click`,n,()=>{f(`start`)}),V(`submit`,c,e=>{e.preventDefault(),B(o).trim()&&p({link:B(o).trim()})}),ba(l,()=>B(o),e=>P(o,e)),W(e,t)},S=e=>{var t=gk(),n=I(t),r=R(n,6),i=F(r),o=R(F(i));fa(o),k(i);var u=R(i,2),d=R(F(u)),p=F(d);q(p,18,()=>B(l),e=>e,(e,t,n)=>{var r=hk(),i=F(r,!0),a=R(i),o=e=>{W(e,mk())};K(a,e=>{B(n)===0&&B(l).length>1&&e(o)});var s=R(a,2);Ua(F(s),{get of(){return to},size:14}),k(s),k(r),z(()=>{G(i,t),Y(s,`aria-label`,`Remove ${t??``}`)}),H(`click`,s,()=>P(l,B(l).filter(e=>e!==t),!0)),W(e,r)});var _=R(p,2);fa(_),k(d),Ae(2),k(u);var v=R(u,2);k(r),z(()=>{Y(_,`placeholder`,B(l).length?`Add another`:`Type one, e.g. qa, and press Enter`),v.disabled=B(a)}),H(`click`,n,()=>{f(`start`)}),V(`submit`,r,g),ba(o,()=>B(s),e=>P(s,e)),H(`keydown`,_,h),V(`blur`,_,()=>{B(c).trim()&&m(B(c))}),ba(_,()=>B(c),e=>P(c,e)),W(e,t)};K(y,e=>{B(r)===`start`?e(b):B(r)===`join`?e(x,1):e(S,-1)});var C=L(R(y,2),!0);return k(v),Aa(v,e=>P(n,e),()=>B(n)),z(()=>G(C,B(i))),V(`cancel`,v,e=>{B(r)===`start`?Z.setup&&e.preventDefault():(e.preventDefault(),f(`start`))}),W(e,v),j(_)}Xr([`click`,`keydown`]);var yk=new Set([`$$slots`,`$$events`,`$$legacy`]);function bk(e,t){let n=La(t,yk),r={name:`trash`,size:24,node:[[`path`,{d:`M10 11v6`}],[`path`,{d:`M14 11v6`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`}],[`path`,{d:`M3 6h18`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`}]],aliases:[`trash-2`]};$a(e,za(()=>n,{get icon(){return r}}))}var xk=U(`<p class="svelte-ujai35"> </p>`),Sk=U(`<button class="act svelte-ujai35" type="button">Reload</button>`),Ck=U(`<button class="act svelte-ujai35" type="button" title="Propose it as a team board of the stack: a pull request on the stack's repo">Share with team</button> <button class="act svelte-ujai35" type="button" title="Delete"><!></button>`,1),wk=U(`<div class="row svelte-ujai35"><button type="button" class="svelte-ujai35"><span class="name svelte-ujai35"> </span><span class="meta svelte-ujai35"> </span></button> <!> <!></div>`),Tk=U(`<!> <!>`,1),Ek=U(`<p class="none svelte-ujai35">No boards yet. A board is kept as soon as it has an app.</p>`),Dk=U(`<form class="svelte-ujai35"><input type="text" aria-label="Name of this board" maxlength="80" class="svelte-ujai35"/> <button type="submit" class="svelte-ujai35">Rename</button></form>`),Ok=U(`<button type="submit" class="svelte-ujai35">Open</button>`),kk=U(`<button type="button" class="svelte-ujai35">Open a file…</button>`),Ak=U(`<div class="row gone svelte-ujai35"><span class="name svelte-ujai35"> </span><span class="meta svelte-ujai35"> </span> <button class="act svelte-ujai35" type="button">Restore</button></div>`),jk=U(`<details class="svelte-ujai35"><summary class="svelte-ujai35"> </summary> <!></details>`),Mk=U(`<button type="button" aria-haspopup="dialog"><span class="name svelte-ujai35"> </span></button> <div class="menu svelte-ujai35" popover="" role="dialog" tabindex="-1" aria-label="Boards"><!> <!> <div class="strip svelte-ujai35"><div class="acts svelte-ujai35"><button type="button" class="svelte-ujai35">New board</button> <button type="button" class="svelte-ujai35">Duplicate</button></div> <!> <form class="svelte-ujai35"><input type="text" aria-label="Open a board from a link" placeholder="Paste a GitHub link to a board file" class="svelte-ujai35"/> <!></form> <input type="file" accept=".json,application/json" hidden=""/> <p role="status"> </p></div> <!></div>`,1);function Nk(e,t){let n=ci();A(t,!0);let r=`Or drop a board .json file anywhere on the page.`,i=N(void 0),a=N(void 0),o=N(void 0),s=N(!1),c=N(``),l=N(``),u=N(fn({text:r,warn:!1})),d=N(!1),f=M(()=>Z.own.some(e=>e.name===Z.name)),p=async(e,t)=>{let n=await Lb(e);$.show(n?`Cannot reload ${t}. ${n}`:`Reloaded ${t} from ${e}.`,n?`warning`:`message`)},m=M(()=>!B(f)&&Z.team.some(e=>e.name===Z.name)),h=M(()=>Z.name??(Z.scratch&&Z.nodes[0]?`${Z.nodes[0].data.name} alone`:`New board`)),g=()=>[...B(a)?.querySelectorAll(`.row > button:first-child`)??[]],_=()=>B(a)?.hidePopover(),y=()=>{let e=B(i)?.getBoundingClientRect();e&&B(a)&&(B(a).style.top=`${String(e.bottom+4)}px`,B(a).style.left=`${String(e.left)}px`,B(a).style.width=`${String(Math.max(e.width,Math.min(400,innerWidth-e.left-12)))}px`,(B(a).querySelector(`[aria-current="true"]`)??g()[0])?.focus())},b=e=>{e.newState===`open`&&(P(c,Z.name??``,!0),P(l,``),P(u,{text:r,warn:!1},!0))},x=e=>{if(e.key!==`ArrowDown`&&e.key!==`ArrowUp`||e.target.matches(`input`))return;e.preventDefault();let t=g();t[(t.indexOf(document.activeElement)+(e.key===`ArrowDown`?1:-1)+t.length)%t.length]?.focus()},S=e=>{_(),e.name!==Z.name&&Fb(e)},C=e=>{let t=Object.keys(e.nodes).length;return`${String(t)} ${t===1?`app`:`apps`}`},w=e=>{e.preventDefault();let t=Z.rename(B(c));t?P(u,{text:t,warn:!0},!0):_()},T=async e=>{_();let t=Z.forTeam(e),n=await oo(`board-share`,{preset:t,check:!0});if(`error`in n){$.show(`Could not share ${e.name}: ${n.error}`,`warning`);return}let r=Z.team.some(t=>t.name===e.name);Gb.review={title:`Share ${e.name} with the team`,sub:n.repo?`Opens a pull request on ${n.repo} that ${r?`updates this team board`:`adds this board to the team boards`}. Your team gets it once the pull request is merged; nothing on this Mac changes.`:`This stack is not on GitHub, so the board is ${r?`updated`:`added`} among the team boards in its file here. Commit the stack so your team gets it.`,notices:[],groups:[{verb:`keeps`,label:r?`Updates`:`Adds`,items:[{name:e.name,notes:[]}]}],ok:n.repo?`Open pull request`:`Add to team boards`,prod:!1,blocked:!1,confirm:()=>{n.repo&&$.show(`Opening the pull request…`),oo(`board-share`,{preset:t}).then(n=>{if(`error`in n)$.show(`Could not share ${e.name}: ${n.error}`,`warning`);else if(n.url)$.show(`Pull request opened for ${e.name}`,`message`,{label:`View`,run:()=>window.open(n.url,`_blank`,`noopener`)});else{let n=Z.team.findIndex(t=>t.name===e.name);Z.keptForTeam(n<0?Z.team.length:n,t),$.show(`${e.name} is a team board now. Commit the stack's repo, so your team gets it.`)}})}}},ee=e=>{_();let t=e.edges.length,n=Z.name===e.name;Gb.review={title:`Delete board "${e.name}"?`,sub:`${C(e)} and ${String(t)} ${t===1?`cable`:`cables`}, with their branches and notes.${n?` It is the board on screen, so the screen empties.`:``}`,notices:[{text:`It moves to Recently deleted at the bottom of the board menu, where you can restore it.`}],groups:[],ok:`Delete board`,prod:!0,blocked:!1,confirm:()=>{Z.deleteBoard(e.name),$.show(`Deleted ${e.name}`)}}},te=async e=>{if(e.preventDefault(),!B(l).trim()||B(d))return;P(d,!0),P(u,{text:`Opening…`,warn:!1},!0);let t=await Lb(B(l).trim());P(d,!1),t?P(u,{text:t,warn:!0},!0):_()};var E=Mk(),ne=I(E);let D;var re=L(F(ne),!0);k(ne),Aa(ne,e=>P(i,e),()=>B(i));var ie=R(ne,2),ae=F(ie);q(ae,17,()=>[[`Team boards`,Z.team],[`Your boards`,Z.own]],([e,t])=>e,(e,t)=>{var n=M(()=>v(B(t),2));let r=()=>B(n)[0],i=()=>B(n)[1];var a=Tk(),o=I(a),s=e=>{var t=xk(),n=L(t,!0);z(()=>G(n,r())),W(e,t)};K(o,e=>{i().length&&e(s)}),q(R(o,2),17,i,e=>e.name,(e,t)=>{var n=wk(),r=F(n),a=F(r),o=L(a,!0),s=L(R(a),!0);k(r);var c=R(r,2),l=e=>{let n=M(()=>B(t).source);var r=Sk();z(()=>{Y(r,`aria-label`,`Reload ${B(t).name??``}`),Y(r,`title`,`Read it again from ${B(n)??``}`)}),H(`click`,r,()=>void p(B(n),B(t).name)),W(e,r)},u=M(()=>i()===Z.own&&typeof B(t).source==`string`&&/^(https?:|\/)/.test(B(t).source));K(c,e=>{B(u)&&e(l)});var d=R(c,2),f=e=>{var n=Ck(),r=I(n),i=R(r,2);Ua(F(i),{get of(){return to},size:14}),k(i),z(()=>{Y(r,`aria-label`,`Share ${B(t).name??``} with the team`),Y(i,`aria-label`,`Delete ${B(t).name??``}`)}),H(`click`,r,()=>void T(B(t))),H(`click`,i,()=>{ee(B(t))}),W(e,n)};K(d,e=>{i()===Z.own&&e(f)}),k(n),z(e=>{Y(r,`aria-current`,B(t).name===Z.name),Y(r,`title`,typeof B(t).source==`string`?`Opened from ${B(t).source}`:void 0),G(o,B(t).name),G(s,e)},[()=>C(B(t))]),H(`click`,r,()=>{S(B(t))}),W(e,n)}),W(e,a)});var oe=R(ae,2),se=e=>{W(e,Ek())};K(oe,e=>{!Z.team.length&&!Z.own.length&&e(se)});var ce=R(oe,2),le=F(ce),ue=F(le),de=R(ue,2);k(le);var fe=R(le,2),pe=e=>{var t=Dk(),n=F(t);fa(n);var r=R(n,2);k(t),z(e=>r.disabled=e,[()=>B(c).trim()===Z.name]),V(`submit`,t,w),ba(n,()=>B(c),e=>P(c,e)),W(e,t)};K(fe,e=>{B(f)&&e(pe)});var me=R(fe,2),he=F(me);fa(he);var ge=R(he,2),_e=e=>{var t=Ok();z(()=>t.disabled=B(d)),W(e,t)},ve=M(()=>B(l).trim()),ye=e=>{var t=kk();H(`click`,t,()=>B(o)?.click()),W(e,t)};K(ge,e=>{B(ve)?e(_e):e(ye,-1)}),k(me);var be=R(me,2);Aa(be,e=>P(o,e),()=>B(o));var xe=R(be,2);let Se;var Ce=L(xe,!0);k(ce);var we=R(ce,2),Te=e=>{var t=jk(),n=F(t),r=L(n);q(R(n,2),17,()=>Z.trash,e=>e.name+e.deleted,(e,t)=>{var n=Ak(),r=F(n),i=L(r,!0),a=R(r),o=L(a,!0),s=R(a,2);k(n),z(e=>{Y(r,`title`,B(t).name),G(i,B(t).name),G(o,e),Y(s,`aria-label`,`Restore ${B(t).name??``}`)},[()=>zb(B(t).deleted)]),H(`click`,s,()=>{Z.restore(B(t))}),W(e,n)}),k(t),z(()=>G(r,`Recently deleted (${Z.trash.length??``})`)),W(e,t)};K(we,e=>{Z.trash.length&&e(Te)}),k(ie),Aa(ie,e=>P(a,e),()=>B(a)),z(()=>{D=J(ne,1,`picker svelte-ujai35`,null,D,{chosen:!!Z.name}),Y(ne,`aria-label`,`Board: ${B(h)??``}`),Y(ne,`aria-expanded`,B(s)),Y(ne,`title`,B(f)?`Your board, saved on this Mac as you change it`:B(m)?`Team board, from the stack. Changing it makes a copy of your own.`:`Saved as soon as it has an app`),Y(ne,`popovertarget`,n),G(re,B(h)),Y(ie,`id`,n),de.disabled=!Z.nodes.length,Se=J(xe,1,`hint svelte-ujai35`,null,Se,{warn:B(u).warn}),G(Ce,B(u).text)}),H(`keydown`,ie,x),V(`beforetoggle`,ie,b),V(`toggle`,ie,e=>{P(s,e.newState===`open`),B(s)&&y()}),H(`click`,ue,()=>{_(),Z.newBoard()}),H(`click`,de,()=>{_(),Z.duplicate()}),V(`submit`,me,te),ba(he,()=>B(l),e=>P(l,e)),H(`change`,be,()=>{_(),Ib(B(o)?.files?.[0]),B(o)&&(B(o).value=``)}),W(e,E),j()}Xr([`keydown`,`click`,`change`]);var Pk=U(`<li class="svelte-3tqys6"><strong> </strong> <small class="svelte-3tqys6"> </small> <!></li>`),Fk=U(`<small class="svelte-3tqys6"> </small>`),Ik=U(`<div class="gap svelte-3tqys6"><strong> </strong> <!> <button type="button" class="svelte-3tqys6"> </button></div>`),Lk=U(`<button class="all svelte-3tqys6" type="button"> </button>`),Rk=U(`<li class="gaps svelte-3tqys6"><h3 class="svelte-3tqys6"> </h3> <p class="svelte-3tqys6">Koppler never uses another environment's sign-ins, tunnels or secret steps instead.</p> <!> <!></li>`),zk=U(`<button class="open svelte-3tqys6" type="button" aria-haspopup="dialog"> </button> <div class="pop svelte-3tqys6" popover="" role="dialog" tabindex="-1"><h2 class="svelte-3tqys6">What this stack needs on this Mac</h2> <ul class="svelte-3tqys6"><!> <!></ul></div>`,1);function Bk(e,t){let n=ci();A(t,!0);let r=N(void 0),i=N(void 0),a=N(fn([])),o=M(()=>(Q.status?.checks??[]).filter(e=>e.state!==`ok`)),s=M(()=>B(o).filter(e=>e.state!==`gap`)),c=M(()=>B(o).filter(e=>e.state===`gap`)),l=M(()=>[...new Set(B(c).map(e=>e.env??``))]),u=(e,t,n)=>`${String(e)} ${e===1?t:n}`,d=M(()=>{let e=B(s).filter(e=>e.state===`missing`).length,t=B(s).length-e;return[e&&`${String(e)} missing on this Mac`,t&&`${u(t,`check waits`,`checks wait`)} for your approval`,B(c).length&&`${String(B(c).length)} ${B(l).map(e=>e.toUpperCase()).join(` and `)} ${B(c).length===1?`fact`:`facts`} missing from the stack`].filter(Boolean).join(`, `)}),f=e=>e.state===`pending`?`koppler doctor --approve`:/^(brew|npm|xcode-select|nvm|pip|curl) /.test(e.detail??``)?e.detail??null:null,p=e=>e.for?.length?`needed by ${e.for.join(`, `)}`:``,m=e=>e.state===`pending`?`A check written into this stack. It is a command, so it runs only after you have seen it. In your own terminal:`:f(e)?`Missing${p(e)?`, ${p(e)}`:``}. Install it with:`:`${e.detail??``}${p(e)?` (${p(e)})`:``}`,h=Z.nameOf,g=e=>[...new Set(B(c).filter(t=>t.env===e).map(e=>e.app??``))],_=(e,t)=>B(c).filter(n=>n.env===e&&(!t||n.app===t)),v=e=>(e.detail??``).replace(`for ${h(e.app??``)}'s `,`for its `).replace(` for ${h(e.app??``)}`,``),y=async(e,t)=>{await Gb.askFacts(e,_(e,t).map(e=>e.detail??``))&&P(a,[...B(a),`${e}|${t??``}`],!0)},b=()=>{let e=B(r)?.getBoundingClientRect();e&&B(i)&&(B(i).style.left=`${String(Math.max(12,e.left))}px`,B(i).style.bottom=`${String(innerHeight-e.top+6)}px`)};var x=si(),S=I(x),C=e=>{var t=zk(),o=I(t),c=L(o,!0);Aa(o,e=>P(r,e),()=>B(r));var u=R(o,2),p=F(u),x=R(p,2),S=F(x);q(S,17,()=>B(s),e=>e.name,(e,t)=>{let n=M(()=>f(B(t)));var r=Pk(),i=F(r),a=L(i,!0),o=R(i,2),s=L(o,!0),c=R(o,2),l=e=>{gc(e,{get command(){return B(n)}})};K(c,e=>{B(n)&&e(l)}),k(r),z(e=>{G(a,B(t).name),G(s,e)},[()=>m(B(t))]),W(e,r)}),q(R(S,2),16,()=>B(l),e=>e,(e,t)=>{var n=Rk(),r=F(n),i=L(r),o=R(r,4);q(o,16,()=>g(t),e=>e,(e,n)=>{var r=Ik(),i=F(r),o=L(i,!0),s=R(i,2);q(s,17,()=>_(t,n),e=>e.detail,(e,t)=>{var n=Fk(),r=L(n,!0);z(e=>G(r,e),[()=>v(B(t))]),W(e,n)});var c=R(s,2),l=L(c,!0);k(r),z((e,t,n)=>{G(o,e),c.disabled=t,G(l,n)},[()=>h(n),()=>B(a).includes(`${t}|${n}`),()=>B(a).includes(`${t}|${n}`)?`Sent to the agent`:`Ask the agent to find it`]),H(`click`,c,()=>void y(t,n)),W(e,r)});var s=R(o,2),c=e=>{var n=Lk(),r=L(n,!0);z((e,t)=>{n.disabled=e,G(r,t)},[()=>B(a).includes(`${t}|`),()=>B(a).includes(`${t}|`)?`Sent to the agent`:`Ask the agent to find all ${String(g(t).length)}`]),H(`click`,n,()=>void y(t)),W(e,n)},l=M(()=>g(t).length>1);K(s,e=>{B(l)&&e(c)}),k(n),z(e=>G(i,`Missing from the stack for ${e??``}`),[()=>t.toUpperCase()]),W(e,n)}),k(x),k(u),Aa(u,e=>P(i,e),()=>B(i)),z(()=>{Y(o,`popovertarget`,n),G(c,B(d)),Y(u,`id`,n),Y(u,`aria-labelledby`,`${n}-title`),Y(p,`id`,`${n}-title`)}),V(`toggle`,u,e=>{e.newState===`open`&&b()}),W(e,t)};K(S,e=>{B(o).length&&e(C)}),W(e,x),j()}Xr([`click`]);var Vk=U(`<button class="do svelte-159ihlv" type="button">Connect</button>`),Hk=U(`<div class="note svelte-159ihlv" role="note"><span> </span> <button class="x svelte-159ihlv" type="button" aria-label="Dismiss this note"><!></button> <!></div>`),Uk=U(`<div class="notes svelte-159ihlv" role="group" aria-label="About this board"></div>`);function Wk(e,t){A(t,!0);let n=Z.nameOf,r=M(()=>ws(Z.plan,n).filter(e=>!e.includes(` share one `)).map(e=>({key:`ports:${e}`,text:e}))),i=M(()=>Z.cards.flatMap(({id:e})=>Z.deployedCalls(e).filter(e=>Z.cards.some(t=>t.id===e.id)).map(t=>({key:`unwired:${e}>${t.id}`,text:`${t.name} is on your board, but ${n(e)} still calls the ${Z.env.toUpperCase()} one.`,cable:{from:e,to:t.id}})))),a=M(()=>[...B(r),...B(i)].filter(e=>!Z.dismissed.includes(e.key)));var o=si(),s=I(o),c=e=>{var t=Uk();q(t,21,()=>B(a),e=>e.key,(e,t)=>{let n=M(()=>B(t).cable);var r=Hk(),i=F(r),a=L(i,!0),o=R(i,2);Ua(F(o),{get of(){return to},size:14}),k(o);var s=R(o,2),c=e=>{var t=Vk();H(`click`,t,()=>{Z.connect(B(n).from,B(n).to)}),W(e,t)};K(s,e=>{B(n)&&e(c)}),k(r),z(()=>G(a,B(t).text)),H(`click`,o,()=>{Z.dismissed=[...Z.dismissed,B(t).key]}),W(e,r)}),k(t),W(e,t)};K(s,e=>{B(a).length&&!Z.live&&e(c)}),W(e,o),j()}Xr([`click`]);var Gk=U(`<span class="count svelte-1vh52u"> </span>`),Kk=U(`<span class="led svelte-1vh52u" role="img"></span>`),qk=U(`<button class="main svelte-1vh52u" type="button" title="Show its card"><span class="name svelte-1vh52u"> </span></button> <!> <button class="act remove svelte-1vh52u" type="button" title="Remove from the board"><!></button>`,1),Jk=U(`<button class="main svelte-1vh52u" type="button"><span class="name svelte-1vh52u"> </span></button> <span class="state svelte-1vh52u">outside</span> <button class="act drop svelte-1vh52u" type="button" title="Remove from the stack (the repo stays on your Mac)"><!></button>`,1),Yk=U(`<button class="main svelte-1vh52u" type="button"><span class="name svelte-1vh52u"> </span></button> <span class="state svelte-1vh52u">not cloned</span> <button class="act drop svelte-1vh52u" type="button" title="Remove from the stack (the repo stays on your Mac)"><!></button>`,1),Xk=U(`<button class="main svelte-1vh52u" type="button" draggable="true"><span class="name svelte-1vh52u"> </span></button> <button class="act drop svelte-1vh52u" type="button" title="Remove from the stack (the repo stays on your Mac)"><!></button> <button class="act alone svelte-1vh52u" type="button" title="Run alone: just this app and its tunnels, on a board of its own"><!></button> <button class="act add svelte-1vh52u" type="button" title="Add to the board"><!></button>`,1),Zk=U(`<div role="listitem"><span class="kind svelte-1vh52u"> </span> <!></div>`),Qk=U(`<p class="empty svelte-1vh52u"> </p>`),$k=U(`<p class="unsaved svelte-1vh52u" role="alert">Not saved: the canvas server is not answering. Changes stay on this page.</p>`),eA=U(`<div class="warn svelte-1vh52u">The canvas server runs older code, so some buttons fail until it restarts. Run this in your terminal: <!></div>`),tA=U(`<div class="clone svelte-1vh52u" role="note" aria-label="Not cloned"><p class="svelte-1vh52u"> </p> <span class="acts svelte-1vh52u"><button class="do svelte-1vh52u" type="button"> </button> <button type="button" class="svelte-1vh52u"> </button></span></div>`),nA=U(`<aside aria-label="Board and apps"><div class="head svelte-1vh52u"><!></div> <section aria-labelledby="apps-title" class="svelte-1vh52u"><h2 id="apps-title" class="svelte-1vh52u">Apps <!> <button class="sort svelte-1vh52u" type="button"> </button></h2> <input class="search svelte-1vh52u" type="search" placeholder="Find or filter: a name, .net, lambda" aria-label="Find an app by name or kind" autocomplete="off" spellcheck="false"/> <div class="apps svelte-1vh52u" role="list"></div> <div class="adds svelte-1vh52u"><button class="add-repos svelte-1vh52u" type="button">Add repos…</button> <button class="add-repos svelte-1vh52u" type="button">Add outside system…</button></div> <p class="note svelte-1vh52u" role="status"> </p> <!></section> <footer class="svelte-1vh52u"><!> <!> <!> <!> <!></footer></aside>`);function rA(e,t){A(t,!0);let n=N(fn((()=>{try{return localStorage.getItem(`koppler-sort`)===`added`?`added`:`name`}catch{return`name`}})())),r=N(``),i=N(``),a=M(()=>[...Z.cards.map(e=>e.id),...Z.infra.filter(e=>e.type===`outside`).map(e=>e.id.slice(8))]),o=e=>{let t=B(r).trim().toLowerCase(),n=e=>e.toLowerCase().replace(/^\./,``);return!t||e.name.toLowerCase().includes(t)||n(e.kindLabel).startsWith(n(t))},s=M(()=>{let e=e=>B(a).includes(e.id)?B(a).indexOf(e.id):Z.apps.indexOf(e),t=(t,r)=>B(n)===`name`?t.name.localeCompare(r.name):e(t)-e(r),r=e=>+!B(a).includes(e.id);return Z.apps.filter(o).sort((e,n)=>r(e)-r(n)||t(e,n))}),c=M(()=>B(s).find(e=>!B(a).includes(e.id))),l=M(()=>B(n)===`name`?`Sorted by name. Click to sort by when each was added.`:`Sorted by when each was added. Click to sort by name.`),u=()=>{P(n,B(n)===`name`?`added`:`name`,!0);try{localStorage.setItem(`koppler-sort`,B(n))}catch{}},d=M(()=>Z.roots.map(e=>e.replace(/^\/Users\/[^/]+/,`~`)).join(`, `)),f=M(()=>Z.apps.filter(e=>!e.cloned&&!e.outside)),p=M(()=>B(f).length>3?`${B(f).slice(0,2).map(e=>e.name).join(`, `)} and ${String(B(f).length-2)} more`:new Intl.ListFormat(`en`,{type:`conjunction`}).format(B(f).map(e=>e.name))),m=N(!1),h=async()=>{let e=B(f).map(y).join(`
|
|
40
|
+
`);try{await navigator.clipboard.writeText(e),P(m,!0),setTimeout(()=>P(m,!1),2e3)}catch{P(i,`Copy is blocked here: ${e}`)}},g=N(!1),_=async()=>{P(g,!0);let e=await oo(`rescan`);P(g,!1),`error`in e?$.show(e.error,`warning`):location.reload()},v=e=>{Gb.review={title:`Remove ${e.name} from the stack?`,sub:`The repo stays on your Mac. Other apps stop listing it as something they call.`,notices:[],groups:[],ok:`Remove from stack`,prod:!0,blocked:!1,confirm:()=>{oo(`apps-remove`,{id:e.id}).then(e=>{`error`in e?$.show(e.error,`warning`):location.reload()})}}},y=e=>`git clone git@github.com:${e.slug}.git`,b=async e=>{try{await navigator.clipboard.writeText(y(e)),P(i,`Clone command for ${e.name} copied.`)}catch{P(i,`Copy is blocked here: ${y(e)}`)}};var x=nA();let S;var C=F(x);Nk(F(C),{}),k(C);var w=R(C,2),T=F(w),ee=R(F(T)),te=e=>{var t=Gk(),n=L(t);z(()=>G(n,`${B(a).length??``} of ${Z.apps.length??``} on the board`)),W(e,t)};K(ee,e=>{Z.apps.length&&e(te)});var E=R(ee,2),ne=L(E);k(T);var D=R(T,2);fa(D);var re=R(D,2);q(re,21,()=>B(s),e=>e.id,(e,t,n,r)=>{let i=M(()=>B(a).includes(B(t).id)),o=M(()=>!!B(t).outside||!B(t).cloned);var l=Zk();let u;var f=F(l),p=L(f,!0),m=R(f,2),h=e=>{let n=M(()=>Q.up(B(t).id));var r=qk(),i=I(r),a=L(F(i),!0);k(i);var o=R(i,2),s=e=>{var t=Kk();z(()=>{Y(t,`data-state`,B(n)?`running`:`failed`),Y(t,`aria-label`,B(n)?`Running`:`Not answering`)}),W(e,t)};K(o,e=>{B(n)!==null&&e(s)});var c=R(o,2);Ua(F(c),{get of(){return to},size:11}),k(c),z(()=>{G(a,B(t).name),Y(c,`aria-label`,`Remove ${B(t).name??``} from the board`)}),H(`click`,i,()=>{Z.show(B(t).outside?`outside:${B(t).id}`:B(t).id)}),H(`click`,c,()=>{B(t).outside?Z.showOutside(B(t).id,!1):Z.remove(B(t).id)}),W(e,r)},g=e=>{var n=Jk(),r=I(n),i=L(F(r),!0);k(r);var a=R(r,4);Ua(F(a),{get of(){return bk},size:12}),k(a),z(()=>{Y(r,`title`,`Does not run on this Mac: ${B(t).outside??``}. Click to put its card on the board; it never runs.`),G(i,B(t).name),Y(a,`aria-label`,`Remove ${B(t).name??``} from the stack`)}),H(`click`,r,()=>{Z.showOutside(B(t).id,!0)}),H(`click`,a,()=>{v(B(t))}),W(e,n)},_=e=>{var n=Yk(),r=I(n),i=L(F(r),!0);k(r);var a=R(r,4);Ua(F(a),{get of(){return bk},size:12}),k(a),z(()=>{Y(r,`title`,`Not cloned under ${B(d)??``}. Click to copy the clone command.`),G(i,B(t).name),Y(a,`aria-label`,`Remove ${B(t).name??``} from the stack`)}),H(`click`,r,()=>b(B(t))),H(`click`,a,()=>{v(B(t))}),W(e,n)},y=e=>{var n=Xk(),r=I(n),i=L(F(r),!0);k(r);var a=R(r,2);Ua(F(a),{get of(){return bk},size:12}),k(a);var o=R(a,2);Ua(F(o),{get of(){return Yy},size:12,filled:!0}),k(o);var s=R(o,2);Ua(F(s),{get of(){return Ey},size:12}),k(s),z(()=>{Y(r,`title`,`Add ${B(t).name??``} to the board: click, or drag it there`),G(i,B(t).name),Y(a,`aria-label`,`Remove ${B(t).name??``} from the stack`),Y(o,`aria-label`,`Run ${B(t).name??``} alone`),Y(s,`aria-label`,`Add ${B(t).name??``} to the board`)}),V(`dragstart`,r,e=>{e.dataTransfer?.setData(`text/app`,B(t).id)}),H(`click`,r,()=>{Z.add(B(t).id)}),H(`click`,a,()=>{v(B(t))}),H(`click`,o,()=>{Gb.alone(B(t).id)}),H(`click`,s,()=>{Z.add(B(t).id)}),W(e,n)};K(m,e=>{B(i)?e(h):B(t).outside?e(g,1):B(t).cloned?e(y,-1):e(_,2)}),k(l),z(()=>{u=J(l,1,`app svelte-1vh52u`,null,u,{on:B(i),missing:B(o),"first-off":B(t)===B(c)&&B(t)!==B(s)[0]}),G(p,B(t).outside?`Outside`:B(t).kindLabel)}),W(e,l)},e=>{var t=Qk(),n=L(t,!0);z(()=>G(n,Z.apps.length?`No app matches.`:`No apps in this stack yet.`)),W(e,t)}),k(re);var ie=R(re,2),ae=F(ie),oe=R(ae,2);k(ie);var se=R(ie,2),ce=L(se,!0);Wk(R(se,2),{}),k(w);var le=R(w,2),ue=F(le),de=e=>{W(e,$k())};K(ue,e=>{Z.unsaved&&e(de)});var fe=R(ue,2),pe=e=>{var t=eA();gc(R(F(t)),{get command(){return Q.status.restart},label:`Copy restart command`}),k(t),W(e,t)};K(fe,e=>{Q.status?.restart&&e(pe)});var me=R(fe,2),he=e=>{var t=tA(),n=F(t),r=L(n),i=R(n,2),a=F(i),o=L(a,!0),s=R(a,2),c=L(s,!0);k(i),k(t),z(()=>{G(r,`${B(p)??``}
|
|
41
|
+
${B(f).length===1?`is`:`are`} not cloned on this Mac, so ${B(f).length===1?`it`:`they`} cannot
|
|
42
|
+
run here. Koppler looks for clones in ${B(d)??``}.`),G(o,B(m)?`Copied`:B(f).length===1?`Copy clone command`:`Copy clone commands`),s.disabled=B(g),G(c,B(g)?`Looking…`:`Look again`)}),H(`click`,a,()=>void h()),H(`click`,s,()=>void _()),W(e,t)};K(me,e=>{B(f).length&&e(he)});var ge=R(me,2);Bk(ge,{}),fT(R(ge,2),{}),k(le),k(x),z(()=>{S=J(x,1,`svelte-1vh52u`,null,S,{protected:Z.protected}),Y(E,`title`,B(l)),Y(E,`aria-label`,B(l)),G(ne,`Sort: ${B(n)===`name`?`A–Z`:`Added`}`),G(ce,B(i))}),H(`click`,E,u),ba(D,()=>B(r),e=>P(r,e)),H(`click`,ae,()=>void Bb.repos?.open()),H(`click`,oe,()=>Bb.outside?.open()),W(e,x),j()}Xr([`click`]);var iA=U(`<button type="button" role="menuitemradio" class="svelte-njiuyh"><span class="check svelte-njiuyh" aria-hidden="true"></span> <span class="name svelte-njiuyh"> </span> <span class="meta svelte-njiuyh"> </span></button>`),aA=U(`<span class="meta svelte-njiuyh"> </span>`),oA=U(`<button type="button" role="menuitem" class="svelte-njiuyh"><span class="ico svelte-njiuyh" aria-hidden="true"> </span> <span class="name svelte-njiuyh"> </span> <!></button>`),sA=U(`<span class="slash svelte-njiuyh" aria-hidden="true">/</span> <button class="picker svelte-njiuyh" type="button" aria-haspopup="menu"><span class="name svelte-njiuyh"> </span></button> <div class="menu svelte-njiuyh" popover="" role="menu" tabindex="-1" aria-label="Stacks"><!> <div class="more svelte-njiuyh"></div></div>`,1);function cA(e,t){let n=ci();A(t,!0);let r=N(void 0),i=N(void 0),a=N(!1),o=M(()=>Q.status?.stacks??[]),s=M(()=>Q.status?.linked),c=M(()=>[...B(s)?[{icon:`↻`,label:`Check for updates from GitHub`,count:0,run:()=>void lk.updateStack()}]:[],...B(s)?.changes.length?[{icon:`●`,label:`Changes not shared yet`,count:B(s).changes.length,run:()=>{lk.shareChanges()}}]:[],...Z.apps.length?[{icon:`⌕`,label:`Look through the repos again`,count:0,run:()=>void Bb.findings?.open()}]:[],{icon:`+`,label:`Add a stack: new, or from GitHub`,count:0,run:()=>{lk.addStack(()=>Bb.setup?.open())}}]),l=()=>[...B(i)?.querySelectorAll(`button:not(:disabled)`)??[]],u=()=>{let e=B(r)?.getBoundingClientRect();e&&B(i)&&(B(i).style.top=`${String(e.bottom+4)}px`,B(i).style.left=`${String(e.left)}px`,l()[0]?.focus())},d=e=>{if(e.key!==`ArrowDown`&&e.key!==`ArrowUp`)return;e.preventDefault();let t=l();t[(t.indexOf(document.activeElement)+(e.key===`ArrowDown`?1:-1)+t.length)%t.length]?.focus()};var f=sA(),p=R(I(f),2),m=L(F(p),!0);k(p),Aa(p,e=>P(r,e),()=>B(r));var h=R(p,2),g=F(h);q(g,17,()=>B(o),e=>e.dir,(e,t)=>{let n=M(()=>B(t).dir===Z.dir),r=M(()=>B(n)?Z.apps.length:B(t).apps);var a=iA(),o=R(F(a),2),s=L(o,!0),c=L(R(o,2));k(a),z(()=>{Y(a,`aria-checked`,B(n)),a.disabled=B(n),Y(a,`title`,B(t).path),G(s,B(t).name),G(c,`${B(t).linked?`from GitHub`:B(t).shared?`shared`:`private`}, ${B(r)??``}
|
|
43
|
+
${B(r)===1?`app`:`apps`}`)}),H(`click`,a,()=>{B(i)?.hidePopover(),lk.useStack(B(t))}),W(e,a)});var _=R(g,2);q(_,21,()=>B(c),e=>e.label,(e,t)=>{var n=oA(),r=F(n),a=L(r,!0),o=R(r,2),s=L(o,!0),c=R(o,2),l=e=>{var n=aA(),r=L(n,!0);z(()=>G(r,B(t).count)),W(e,n)};K(c,e=>{B(t).count&&e(l)}),k(n),z(()=>{G(a,B(t).icon),G(s,B(t).label)}),H(`click`,n,()=>{B(i)?.hidePopover(),B(t).run()}),W(e,n)}),k(_),k(h),Aa(h,e=>P(i,e),()=>B(i)),z(()=>{Y(p,`aria-expanded`,B(a)),Y(p,`title`,`${Z.stack??``}: switch to another stack`),Y(p,`popovertarget`,n),G(m,Z.stack),Y(h,`id`,n)}),H(`keydown`,h,d),V(`toggle`,h,e=>{P(a,e.newState===`open`),B(a)&&u()}),W(e,f),j()}Xr([`keydown`,`click`]);var lA=U(`<button class="action svelte-ieajqw" type="button"> </button>`),uA=U(`<div><span class="text svelte-ieajqw"> </span> <!> <!> <button class="close svelte-ieajqw" type="button" aria-label="Dismiss"><!></button></div>`);function dA(e,t){A(t,!0);let n=N(!1),r=async e=>{await navigator.clipboard.writeText(e).catch(()=>void 0),P(n,!0),setTimeout(()=>P(n,!1),1500)};var i=si(),a=I(i),o=e=>{let t=M(()=>$.now);var i=uA();let a;var o=F(i),s=L(o,!0),c=R(o,2),l=e=>{var n=lA(),r=L(n,!0);z(()=>G(r,B(t).action.label)),H(`click`,n,()=>{B(t).action.run(),$.hide()}),W(e,n)};K(c,e=>{B(t).action&&e(l)});var u=R(c,2),d=e=>{var i=lA(),a=L(i,!0);z(()=>G(a,B(n)?`Copied`:`Copy`)),H(`click`,i,()=>r(B(t).text)),W(e,i)};K(u,e=>{B(t).warning&&e(d)});var f=R(u,2);Ua(F(f),{get of(){return to},size:14}),k(f),k(i),z(()=>{a=J(i,1,`toast svelte-ieajqw`,null,a,{warning:B(t).warning}),Y(i,`role`,B(t).warning?`alert`:`status`),G(s,B(t).text)}),H(`click`,f,()=>{$.hide()}),W(e,i)};K(a,e=>{$.now&&e(o)}),W(e,i),j()}Xr([`click`]);var fA=U(`<label><input type="radio" name="env" class="svelte-1jciobo"/> </label>`),pA=U(`<span class="slash svelte-1jciobo" aria-hidden="true">/</span> <!> <button class="side-toggle gear svelte-1jciobo" type="button" aria-label="Stack settings" title="Stack settings: its environments, apps, queues, sign-ins and team boards"><!><span class="words">Settings</span></button> <div class="seg env svelte-1jciobo" role="radiogroup" aria-label="Environment"></div>`,1),mA=U(`<!><!>`,1),hA=U(`<!><!><!><!>`,1),gA=U(`<span class="split svelte-1jciobo"><button class="stop svelte-1jciobo" type="button" aria-label="Stop"><span class="stop-mark svelte-1jciobo" aria-hidden="true"></span> <span class="words">Stop</span></button> <!></span> <span class="split svelte-1jciobo"><button class="run svelte-1jciobo" type="button"><span class="play svelte-1jciobo" aria-hidden="true"></span>Run</button> <!></span>`,1),_A=U(`<div class="dropping svelte-1jciobo">Drop to open this board</div>`),vA=U(`<div class="banner svelte-1jciobo" role="alert"> </div> <div class="frame svelte-1jciobo" aria-hidden="true"></div>`,1),yA=U(`<div class="loading svelte-1jciobo" role="status"><p class="svelte-1jciobo"><span class="dot svelte-1jciobo" aria-hidden="true"></span><span class="what svelte-1jciobo"> </span></p></div>`),bA=U(`<!> <div class="stage svelte-1jciobo"><div class="work svelte-1jciobo"><div class="board svelte-1jciobo"><!> <!></div> <!></div> <!></div>`,1),xA=U(`<div class="empty svelte-1jciobo"><p class="svelte-1jciobo">No stack yet. Run this in your terminal, then open the canvas again.</p> <!></div>`),SA=U(`<header><button class="side-toggle svelte-1jciobo" type="button"><!></button> <span class="brand svelte-1jciobo"><!><span class="word svelte-1jciobo">koppler</span></span> <!> <span class="spacer svelte-1jciobo"></span> <!> <span class="strip svelte-1jciobo"><!> <!></span> <!></header> <!> <!> <!> <!> <!> <!> <!> <!> <!> <dialog class="noting svelte-1jciobo" aria-labelledby="noting-title"><form method="dialog" class="svelte-1jciobo"><label id="noting-title" for="run-note" class="svelte-1jciobo">Note for the agent</label> <textarea id="run-note" rows="3" required="" placeholder="e.g. log in as the test account, or turn on the new checkout" class="svelte-1jciobo"></textarea> <div class="noting-acts svelte-1jciobo"><button type="button" class="svelte-1jciobo">Cancel</button> <button class="go svelte-1jciobo" type="submit">Review and send</button></div></form></dialog> <!> <div class="work svelte-1jciobo"><!> <main class="svelte-1jciobo"><!></main> <!></div> <!>`,1);function CA(e,t){A(t,!0);let n=[],r=N(!1),i=e=>!!e.dataTransfer?.types.includes(`Files`),a=e=>{i(e)&&P(r,!0)},o=e=>{i(e)&&e.preventDefault()},s=e=>{e.relatedTarget||P(r,!1)},c=e=>{i(e)&&(e.preventDefault(),P(r,!1),Ib(e.dataTransfer?.files[0]))},l=N(void 0),u=N(``);Fn(()=>{ly.follow()});let d=M(()=>lk.switching??(Q.status?.loading&&Q.status.loading!==Z.dir?Q.status.loading:null)),f=M(()=>Q.status?.stacks?.find(e=>e.dir===B(d))?.name??`the stack`);Fn(()=>{let e=Q.status?.stack;if(e&&Z.dir&&e!==Z.dir){try{if(Number(sessionStorage.getItem(`koppler-stack-reload`))>Date.now()-1e4)return;sessionStorage.setItem(`koppler-stack-reload`,String(Date.now()))}catch{return}location.reload()}});let p=ro().then(e=>{if(e){if(Z.open(e),Q.watch(),location.hash.startsWith(`#board=`)){let e=decodeURIComponent(location.hash.slice(7)).toLowerCase(),t=[...Z.own,...Z.team].find(t=>t.name.toLowerCase()===e);history.replaceState(null,``,location.pathname+location.search),t&&t.name!==Z.name&&Z.openBoard(t)}Z.setup?Bb.setup?.open():(!Z.apps.length||location.hash===`#pick`)&&(history.replaceState(null,``,location.pathname+location.search),Bb.repos?.open())}return!!e}),m=``,h=``,g,_=(e=!1)=>{clearTimeout(g),Z.commit();let t=Z.saved(),n=JSON.stringify(t);n!==m&&n!==h&&(h=n,ao(t,e).then(e=>{h=``,Z.unsaved=!e,e?m=n:g=setTimeout(_,2e3)}))},y=M(()=>JSON.stringify([Z.env,Z.queues,Z.hiddenQueues,Z.hiddenOutside,Z.pinned,Z.cards.map(e=>[e.id,e.data.hideTunnels,e.data.showQueues])]));Fn(()=>{B(y)&&Z.stack&&Mr(()=>{Z.syncInfra()})}),Fn(()=>{Z.settle()});let b={};Fn(()=>{let e=Q.status?.boardEdits??[];Z.stack&&!Z.live&&Mr(()=>{for(let t of e.filter(e=>!b[e.id])){b[t.id]=!0;let e=Z.nameOf;if(t.preset){let e=Z.importBoards(t.preset,typeof t.preset.source==`string`?t.preset.source:t.board);$.show(e.error===void 0?`Opened ${t.board} from the terminal.`:`Cannot open ${t.board}. ${e.error}`,e.error===void 0?`message`:`warning`)}else Z.edit(t.board,t.edit,t.create)&&$.show(t.create?`The agent made a board, ${t.board}.`:`The agent changed ${t.board}: ${Ps(t.edit,e)}.`);oo(`board-edit-done`,{id:t.id})}})}),Fn(()=>{Z.stack&&Rx.record()});let x;Fn(()=>{let e=Q.status?.refresh;e!==void 0&&(x!==void 0&&e!==x&&Mr(()=>Z.reload()),x=e)}),Fn(()=>{if(Z.changes.length&&Z.stack)return Mr(()=>{Z.commit(),m?g=setTimeout(_,400):m=JSON.stringify(Z.saved())}),()=>{clearTimeout(g)}});let S=e=>{(e.metaKey||e.ctrlKey)&&e.key===`Enter`&&Z.nodes.length&&!Gb.review&&(e.preventDefault(),Gb.start())},C=N(fn((()=>{try{return localStorage.getItem(`koppler-side`)!==`hidden`}catch{return!0}})())),w=!1;Fn(()=>{let e=matchMedia(`(max-width: 1100px)`),t=()=>{Mr(()=>{e.matches&&B(C)?(e=>{var t=v(e,2);w=t[0],P(C,t[1],!0)})([!0,!1]):!e.matches&&!B(C)&&w&&(e=>{var t=v(e,2);w=t[0],P(C,t[1],!0)})([!1,!0])})};return t(),e.addEventListener(`change`,t),()=>{e.removeEventListener(`change`,t)}});let T=N(void 0),ee=()=>{B(T)&&(B(T).classList.remove(`compact`),B(T).classList.toggle(`compact`,B(T).scrollWidth>B(T).clientWidth+1))};Fn(()=>{if(!B(T))return;let e=0,t=new ResizeObserver(([t])=>{let n=Math.round(t?.contentRect.width??0);n!==e&&(e=n,requestAnimationFrame(ee))});return t.observe(B(T)),()=>{t.disconnect()}}),Fn(()=>{let e=`${Z.stack}${Q.status?.running?.join()??``}`;requestAnimationFrame(()=>{e&&ee()})});let te=()=>{w=!1,P(C,!B(C));try{localStorage.setItem(`koppler-side`,B(C)?`open`:`hidden`)}catch{}};Fn(()=>{let e=!1,t=t=>{t.key===`Control`&&(e=t.type===`keydown`)},n=t=>{t.ctrlKey&&!e&&t.preventDefault()},r=e=>{e.preventDefault()};return window.addEventListener(`keydown`,t),window.addEventListener(`keyup`,t),window.addEventListener(`wheel`,n,{passive:!1}),window.addEventListener(`gesturestart`,r),()=>{window.removeEventListener(`keydown`,t),window.removeEventListener(`keyup`,t),window.removeEventListener(`wheel`,n),window.removeEventListener(`gesturestart`,r)}});let E=async e=>{te(),e&&(await kr(),document.querySelector(`aside button[aria-label^="Board:"]`)?.focus())};var ne=SA();V(`fullscreenchange`,gn,()=>{!document.fullscreenElement&&!Z.entering&&(Z.present=!1)}),V(`keydown`,hn,S),V(`pagehide`,hn,()=>{_(!0)}),V(`dragenter`,hn,a),V(`dragover`,hn,o),V(`dragleave`,hn,s),V(`drop`,hn,c);var D=I(ne);let re;var ie=F(D);Ua(F(ie),{get of(){return dc},size:16}),k(ie);var ae=R(ie,2);Uw(F(ae),{size:22}),Ae(),k(ae);var oe=R(ae,2),se=e=>{var t=pA(),r=R(I(t),2);cA(r,{});var i=R(r,2);mc(F(i),{size:16}),Ae(),k(i);var a=R(i,2);q(a,20,()=>Z.envs,e=>e,(e,t)=>{var r=fA();let i;var a=F(r);fa(a);var o,s=R(a,1,!0);k(r),z(e=>{i=J(r,1,`svelte-1jciobo`,null,i,{prod:Z.protected}),o!==(o=t)&&(a.value=(a.__value=o)??``),G(s,e)},[()=>t.toUpperCase()]),Sa(n,[],a,()=>Z.env,e=>Z.env=e),W(e,r)}),k(a),H(`click`,i,()=>void Bb.settings?.open({title:`${Z.stack} settings`,path:``})),W(e,t)};K(oe,e=>{Z.stack&&e(se)});var ce=R(oe,4),le=e=>{var t=mA(),n=I(t);sC(n,{}),fy(R(n),{}),W(e,t)};K(ce,e=>{Z.stack&&e(le)});var ue=R(ce,2),de=F(ue),fe=e=>{var t=hA(),n=I(t);Gw(n,{});var r=R(n);aw(r,{});var i=R(r);sw(i,{}),kS(R(i),{}),W(e,t)};K(de,e=>{Z.stack&&e(fe)}),lC(R(de,2),{}),k(ue);var pe=R(ue,2),me=e=>{var t=gA(),n=I(t),r=F(n),i=R(r,2);{let e=M(()=>[{label:`Stop apps, keep changes`,about:Gb.started.length?`Stops every app, API and tunnel; branches and code changes stay until you revert`:`Nothing is running`,off:!Gb.started.length,run:()=>{Gb.stopApps()}},{label:`Revert temporary changes`,about:Gb.left.length?`Undoes what the last run left: branches back, temporary edits gone`:`Nothing to revert`,off:!Gb.left.length,run:()=>{Gb.stop()}},{label:`Shut down Koppler`,about:`Stops the agent listener and this canvas server; apps and tunnels keep running`,danger:!0,run:()=>{Gb.shutDown()}}]);Qw(i,{label:`More ways to stop`,tone:`stop`,get items(){return B(e)}})}k(n);var a=R(n,2),o=F(a),s=R(o,2),c=e=>{Qw(e,{label:`More ways to run`,tone:`run`,items:[{label:`Run with a note for the agent…`,about:`Tell the agent something for this run, like a test account or a flag`,run:()=>{B(l)?.showModal()}},{label:`Get a checklist instead`,about:`The agent changes nothing and lists the steps for you to do yourself`,run:()=>{Gb.start({manual:!0})}}]})};K(s,e=>{Z.nodes.length&&e(c)}),k(a),z(()=>{n.inert=!!B(d),r.disabled=!Gb.started.length,Y(r,`title`,Gb.started.length?`Stop what the agent started and revert all temporary code changes`:`Nothing is running`),a.inert=!!B(d),o.disabled=!Z.nodes.length,Y(o,`title`,Z.nodes.length?`Review what will run, then send it (Cmd or Ctrl + Enter)`:`Add an app to the board first`)}),H(`click`,r,()=>{Gb.stop()}),H(`click`,o,()=>{Gb.start()}),W(e,t)};K(pe,e=>{Z.stack&&e(me)}),k(D),Aa(D,e=>P(T,e),()=>B(T));var he=R(D,2),ge=e=>{W(e,_A())};K(he,e=>{B(r)&&e(ge)});var _e=R(he,2);ck(_e,{});var ve=R(_e,2);Aa(vk(ve,{}),e=>Bb.setup=e,()=>Bb?.setup);var ye=R(ve,2);Aa(UO(ye,{}),e=>Bb.repos=e,()=>Bb?.repos);var be=R(ye,2);Aa(vT(be,{}),e=>Bb.outside=e,()=>Bb?.outside);var xe=R(be,2);Aa(FO(xe,{}),e=>Bb.settings=e,()=>Bb?.settings);var Se=R(xe,2);Aa(qS(Se,{}),e=>Bb.findings=e,()=>Bb?.findings);var Ce=R(Se,2);Aa(BS(Ce,{}),e=>Bb.checklist=e,()=>Bb?.checklist);var we=R(Ce,2);Aa(lc(we,{}),e=>Bb.command=e,()=>Bb?.command);var Te=R(we,2),O=F(Te),Ee=R(F(O),2);_t(Ee);var De=R(Ee,2),Oe=F(De);Ae(2),k(De),k(O),k(Te),Aa(Te,e=>P(l,e),()=>B(l));var ke=R(Te,2),je=e=>{var t=vA(),n=L(I(t));Ae(2),z((e,t)=>G(n,`${e??``}: local code runs against real ${t??``} data and secrets.`),[()=>Z.env.toUpperCase(),()=>Z.env.toUpperCase()]),W(e,t)};K(ke,e=>{Z.protected&&e(je)});var Me=R(ke,2),Ne=F(Me),Pe=e=>{var t=yA(),n=F(t),r=L(R(F(n)));k(n),k(t),z(()=>G(r,`Loading ${B(f)??``}...`)),W(e,t)};K(Ne,e=>{B(d)&&e(Pe)});var Fe=R(Ne,2);xi(F(Fe),()=>p,null,(e,t)=>{var n=si(),r=I(n),i=e=>{var t=bA(),n=I(t),r=e=>{},i=e=>{rA(e,{})},a=e=>{hT(e,{open:E})};K(n,e=>{Z.present?e(r):B(C)?e(i,1):e(a,-1)});var o=R(n,2),s=F(o),c=F(s),l=F(c);Fv(l,{children:(e,t)=>{sS(e,{})},$$slots:{default:!0}}),dA(R(l,2),{}),k(c);var u=R(c,2),d=e=>{bT(e,{})};K(u,e=>{Z.present||e(d)}),k(s);var f=R(s,2),p=e=>{Vw(e,{})};K(f,e=>{Z.present||e(p)}),k(o),W(e,t)},a=e=>{var t=xA();gc(R(F(t),2),{command:`koppler init`}),k(t),W(e,t)};K(r,e=>{B(t)?e(i):e(a,-1)}),W(e,n)}),k(Fe);var Ie=R(Fe,2),Le=e=>{jC(e,{})};K(Ie,e=>{Z.present||e(Le)}),k(Me),qw(R(Me,2),{}),z(()=>{Y(D,`hidden`,Z.present),re=J(D,1,`svelte-1jciobo`,null,re,{protected:Z.protected}),Y(ie,`aria-expanded`,B(C)),Y(ie,`aria-label`,B(C)?`Hide the side pane`:`Show the side pane`),Y(ie,`title`,B(C)?`Hide the side pane`:`Show the side pane`),Fe.inert=!!B(d)}),H(`click`,ie,te),V(`close`,Te,()=>P(u,``)),V(`submit`,O,()=>{Gb.start({note:B(u).trim()})}),ba(Ee,()=>B(u),e=>P(u,e)),H(`click`,Oe,()=>B(l)?.close()),W(e,ne),j()}Xr([`click`]),$s.watch(),await Promise.all([`400 12px Barlow`,`600 12px Barlow`,`600 12px 'Barlow Semi Condensed'`,`400 12px 'Sometype Mono'`].map(e=>document.fonts.load(e))).catch(()=>void 0);var wA=document.getElementById(`app`);wA&&pi(CA,{target:wA});
|