koppler 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -17
- package/dist/.built +1 -1
- package/dist/core/databases.js +70 -0
- package/dist/core/databases.js.map +1 -0
- package/dist/core/migrations/board/0.1.0.js +14 -0
- package/dist/core/migrations/board/0.1.0.js.map +1 -0
- package/dist/core/migrations/board/index.js +12 -0
- package/dist/core/migrations/board/index.js.map +1 -0
- package/dist/core/migrations/board-file/index.js +13 -0
- package/dist/core/migrations/board-file/index.js.map +1 -0
- package/dist/core/migrations/files.js +24 -0
- package/dist/core/migrations/files.js.map +1 -0
- package/dist/core/migrations/run.js +47 -0
- package/dist/core/migrations/run.js.map +1 -0
- package/dist/core/migrations/stack/0.2.0.js +152 -0
- package/dist/core/migrations/stack/0.2.0.js.map +1 -0
- package/dist/core/migrations/stack/0.2.1.js +7 -0
- package/dist/core/migrations/stack/0.2.1.js.map +1 -0
- package/dist/core/migrations/stack/index.js +14 -0
- package/dist/core/migrations/stack/index.js.map +1 -0
- package/dist/core/plan.js +6 -2
- package/dist/core/plan.js.map +1 -1
- package/dist/core/presets.js +26 -22
- package/dist/core/presets.js.map +1 -1
- package/dist/core/stack.js +63 -0
- package/dist/core/stack.js.map +1 -1
- package/dist/data.js +23 -3
- package/dist/data.js.map +1 -1
- package/dist/engine/checks.js +4 -1
- package/dist/engine/checks.js.map +1 -1
- package/dist/engine/early-log.js +39 -0
- package/dist/engine/early-log.js.map +1 -0
- package/dist/engine/history.js +5 -0
- package/dist/engine/history.js.map +1 -1
- package/dist/engine/listen.js +23 -0
- package/dist/engine/listen.js.map +1 -1
- package/dist/engine/local-databases.js +69 -0
- package/dist/engine/local-databases.js.map +1 -0
- package/dist/engine/processes.js +19 -2
- package/dist/engine/processes.js.map +1 -1
- package/dist/engine/runs.js +3 -0
- package/dist/engine/runs.js.map +1 -1
- package/dist/engine/share.js +5 -3
- package/dist/engine/share.js.map +1 -1
- package/dist/engine/stack-file.js +17 -2
- package/dist/engine/stack-file.js.map +1 -1
- package/dist/engine/stacks.js +1 -0
- package/dist/engine/stacks.js.map +1 -1
- package/dist/engine/sync.js +6 -2
- package/dist/engine/sync.js.map +1 -1
- package/dist/engine/up.js +89 -5
- package/dist/engine/up.js.map +1 -1
- package/dist/koppler.mjs +24 -2
- package/dist/koppler.mjs.map +1 -1
- package/dist/page/assets/index-CD2dld8S.css +1 -0
- package/dist/page/assets/index-CcNVMT0j.js +44 -0
- package/dist/page/index.html +2 -2
- package/dist/server/cable-test.js +1 -1
- package/dist/server/cable-test.js.map +1 -1
- package/dist/server/files.js +1 -1
- package/dist/server/files.js.map +1 -1
- package/dist/server/routes.js +33 -1
- package/dist/server/routes.js.map +1 -1
- package/dist/server/sanitize.js +9 -0
- package/dist/server/sanitize.js.map +1 -1
- package/dist/upgraded.js +18 -0
- package/dist/upgraded.js.map +1 -0
- package/package.json +2 -2
- package/skills/koppler-run/SKILL.md +2 -2
- package/skills/koppler-run/VERSION +1 -1
- package/skills/koppler-run/references/stack.md +3 -0
- package/dist/page/assets/index-BlCQOHKq.js +0 -43
- package/dist/page/assets/index-DUWc3lut.css +0 -1
|
@@ -0,0 +1,44 @@
|
|
|
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={postgres:`Postgres`,mysql:`MySQL`,valkey:`Valkey`,redis:`Redis`};function go(e,t,n){let r=t===n?e:e.envs?.[t];if(!r)return[];let i=e.kind?ho[e.kind]??e.kind:``,a=`${e.name??`Database`}${i?` (${i})`:``}`;return[...r.tunnel&&r.port?[{tunnel:r.tunnel,port:r.port,what:a,...r.cmd&&{cmd:r.cmd}}]:[],...r.hosts?[{hosts:r.hosts,note:`${a}: the name its connection settings dial.`}]:[]]}var _o=(e,t)=>[...e,...t.filter(t=>!e.some(e=>t.tunnel&&e.tunnel===t.tunnel||t.hosts&&e.hosts===t.hosts))],vo=(e,t)=>Object.keys(e.apps[t]?.uses??{}).filter(t=>!!e.databases?.[t]);function yo(e,t=new Set){let n=Object.fromEntries(Object.entries(e.databases??{}).filter(([e])=>!t.has(e))),r=e.envs[0]??``,i=Object.fromEntries(Object.entries(e.apps).map(([t,i])=>{let a=Object.keys(i?.uses??{}).flatMap(e=>n[e]?[n[e]]:[]);if(!i||!a.length)return[t,i];let o=e=>a.flatMap(t=>go(t,e,r)),s=Object.fromEntries(e.envs.slice(1).flatMap(e=>{let t=i.envs?.[e],n=o(e);return!t?.prereqs&&!n.length?t?[[e,t]]:[]:[[e,{...t,prereqs:_o(t?.prereqs??[],n)}]]}));return[t,{...i,prereqs:_o(i.prereqs??[],o(r)),envs:{...i.envs,...s}}]}));return{...e,apps:i}}var bo=/^(\d+)\.(\d+)\.(\d+)$/,xo=e=>typeof e==`string`&&bo.test(e);function So(e,t){let[n,r]=[e,t].map(e=>(bo.exec(e)??[]).slice(1).map(Number));for(let e=0;e<3;e++){let t=(n?.[e]??0)-(r?.[e]??0);if(t)return t}return 0}var Co=(e,t)=>{let n=e[t.key];return xo(n)?n:`0.0.0`};function wo(e,t){let n=Co(e,t);if(So(n,t.version)>0)return{error:`${t.name} is written for Koppler ${n}, newer than this one reads (${t.version}); update Koppler`};let r=e,i=[];for(let e of t.migrations){if(So(e.version,n)<=0)continue;let t=[];r=e.up(structuredClone(r),e=>t.push(e)),i.push({migration:e,changes:t})}return{value:{...r,[t.key]:t.version},from:n,applied:i}}var To={name:`The board`,key:`koppler`,version:`0.1.0`,migrations:[{version:`0.1.0`,about:`Every app on a board says how it runs`,up:(e,t)=>{let n=e.nodes??{};for(let[e,r]of Object.entries(n))r.run===void 0&&(r.run=`cli`,t(`${e} runs by Koppler, as it did`));return{...e,nodes:n}}}]},Eo=e=>wo(e,To),Do={name:`The board file`,key:`koppler`,version:`0.2.0`,migrations:[]},Oo=e=>wo(e,Do),ko={5432:`postgres`,3306:`mysql`,6379:`valkey`,6380:`valkey`},Ao=/postgres|mysql|aurora|rds|cluster|valkey|redis|elasticache|database|\bdb\b|cache/i,jo=new Set([`tunnel`,`port`,`what`,`cmd`,`note`]),Mo=e=>Object.keys(e).every(e=>jo.has(e))&&!!e.tunnel&&!!e.port&&(!!ko[e.port]||Ao.test(`${e.tunnel} ${e.what??``}`)),No=e=>/redis/i.test(e.tunnel??``)?`redis`:ko[e.port??0]??(/mysql/i.test(e.what??``)?`mysql`:`postgres`),Po=e=>!!e.hosts&&!e.tunnel&&Ao.test(e.hosts),Fo=new Set([`dev`,`qa`,`test`,`uat`,`stg`,`staging`,`prod`,`production`,`internal`]),Io=e=>{let t=(e.what??``).replace(/\s*\([^)]*\)$/,``);if(t&&!/^(database|cache|tunnel)$/i.test(t))return t;let n=((e.tunnel??``).split(`.`)[0]?.split(`-`).filter(e=>e&&!Fo.has(e))??[]).join(` `);return n?n.charAt(0).toUpperCase()+n.slice(1):`Database`},Lo=e=>e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-|-$/g,``)||`database`;function Ro(e){let t=yo(e),n=e=>JSON.stringify([e.tunnel,e.port,e.hosts,e.sso,e.signIn,e.cmd]);return Object.fromEntries(Object.entries(t.apps).flatMap(([e,r])=>t.envs.map(i=>[`${e}@${i}`,((i===t.envs[0]?void 0:r.envs?.[i]?.prereqs)??r.prereqs??[]).map(n).sort()])))}function zo(e,t){let n=e;if(!Array.isArray(n.envs)||typeof n.apps!=`object`)return e;let r=structuredClone(n),[i=``]=r.envs,a=r.databases??={},o=new Map,s=[],c=new Map;for(let[e,t]of Object.entries(r.apps)){let n=(t.prereqs??[]).filter(Mo);for(let r of n){let n=r.tunnel??``,i=o.get(n);if(!i){let e=Io(r);for(i=Lo(e);a[i];)i=`${i}-2`;o.set(n,i),a[i]={name:e,kind:No(r),tunnel:n,port:r.port,...r.cmd&&{cmd:r.cmd}},s.push(`New database ${i}: ${e}, through the tunnel to ${n}`)}(t.uses??={})[i]??={},s.push(`${t.name??e} uses ${i} instead of its own tunnel to ${n}`)}let l={};for(let e of n.length?r.envs:[]){let r=e===i?t.prereqs:t.envs?.[e]?.prereqs;if(!r)continue;let s=r.filter(Mo),u=r.filter(Po);for(let t of n){let d=n.filter(e=>e.port===t.port),f=e===i?t:s.filter(e=>e.port===t.port)[d.indexOf(t)],p=o.get(t.tunnel??``)??``,m=a[p];if(!f||!m)continue;let h=e===i?m:(m.envs??={})[e]??={tunnel:f.tunnel,port:f.port,...f.cmd&&{cmd:f.cmd}};if(h.tunnel!==f.tunnel||h.port!==f.port)continue;r.splice(r.indexOf(f),1),f.note&&(l[p]??=[]).push([e,f.note]);let g=c.get(`${p}@${e}`)??[];g.push({list:r,endpoint:n.length===1&&u.length===1?u[0]:void 0}),c.set(`${p}@${e}`,g)}}for(let[e,n]of Object.entries(l)){let r=[...new Set(n.map(([,e])=>e))],i=r.length===1?r[0]:n.map(([e,t])=>`${e.toUpperCase()}: ${t}`).join(`
|
|
3
|
+
`),a=t.uses?.[e];a&&i&&(a.note=i)}}for(let[e,t]of c){let[n=``,r=``]=e.split(`@`),o=t[0]?.endpoint?.hosts;if(!o||t.some(e=>e.endpoint?.hosts!==o))continue;let s=a[n],c=r===i?s:s?.envs?.[r];if(c){c.hosts=o;for(let{list:e,endpoint:n}of t)n&&e.splice(e.indexOf(n),1)}}let[l,u]=[Ro(n),Ro(r)];if(!s.length||Object.keys(l).some(e=>JSON.stringify(l[e])!==JSON.stringify(u[e])))return e;for(let e of new Set(s))t(e);return r}var Bo={version:`0.2.0`,about:`Names each database once under databases, used by its apps, instead of a tunnel on each app`,up:zo},Vo={name:`The stack`,key:`koppler`,version:`0.2.1`,migrations:[Bo,{version:`0.2.1`,about:`Names each database once where 0.2.0 left the stack alone, keeping each tunnel command and note`,up:Bo.up}]},Ho=e=>wo(e,Vo),Uo=80,Wo=90,Go=(e,t)=>e[t];function Ko(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=Go(i,e.from)<=Go(i,e.to),a=t?e.to:e.from,o=t?e.from:e.to;if(i[o]!==i[a]){for(let t=Go(i,o)+1;t<Go(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 qo=e=>{let t={};for(let n of e)n.forEach((e,n)=>t[e]=n);return t};function Jo(e,t,n){let r=qo(e),i=0;return t.forEach(([e,a],o)=>{for(let[s,c]of t.slice(o+1))n[e]===n[s]&&(Go(r,e)-Go(r,s))*(Go(r,a)-Go(r,c))<0&&i++}),i}function Yo(e,t){let{rows:n,links:r,row:i}=Ko(e,t),a={};for(let[e,t]of r)(a[e]??=[]).push(t),(a[t]??=[]).push(e);let o=n.map(e=>[...e]),s=Jo(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=qo(n),o=n=>{let o=(a[n]??[]).filter(n=>i[n]===e+(t?-1:1));return o.length?o.reduce((e,t)=>e+Go(r,t),0)/o.length:Go(r,n)};n[e]?.sort((e,t)=>o(e)-o(t))}let l=Jo(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 Xo(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(Go(d,t),Go(d,e)+1);for(let e of s){let t=(o[e]??[]).map(e=>Go(d,e));t.length&&(d[e]=Math.max(Go(d,e),Math.min(...t)-1))}return d}function Zo(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,Go(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+Go(c,t),0)/i.length:Go(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-Go(c,t))),c[t]=i}}}for(let e of Object.keys(c))n[e]=Go(c,e)-a(e)}function Qo(e,t,n,r=`down`,i=!1,{pad:a,tight:o=!1,anchor:s}={pad:0}){let c=Xo(e,t),l=[];for(let t of e)(l[Go(c,t)]??=[]).push(t);let u=l.filter(Boolean);if(Yo(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?Uo*f:Wo*.6*f,_=p?Wo*f:Uo*1.6*f,v=e=>e.reduce((e,t)=>e+Go(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+=Go(d,n)[m]+g;S+=Math.max(...e.map(e=>Go(d,e)[h]))+_}Zo(u,t,b,e=>Go(d,e)[m],g,e=>s?.(e)??Go(d,e)[m]/2);let C=Math.min(...Object.values(b)),w={};for(let t of e){let e=Math.round(Go(b,t)-C+a+40);w[t]=p?{x:e,y:Go(x,t)}:{x:Go(x,t),y:e}}return w}function $o(e,t,n,r,i={}){let a=t=>{let n=Go(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 es={top:[0,-1],right:[1,0],bottom:[0,1],left:[-1,0]},ts={top:`bottom`,bottom:`top`,left:`right`,right:`left`},ns=(e,t,n)=>Math.min(Math.max(e,t),Math.max(t,n)),rs=(e,t,n)=>t?{x:e.x+es[t][0]*n,y:e.y+es[t][1]*n}:e,is=({x:e,y:t})=>`${String(e)},${String(t)}`,as=({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 os(e,t,n,r){let i=ns(Math.hypot(n.x-e.x,n.y-e.y)*.4,30,140);return[e,rs(e,t,i),rs(n,r,i),n]}function ss(e,t,n,r){let[,i,a]=os(e,t,n,r);return`M${is(e)} C${is(i)} ${is(a)} ${is(n)}`}function cs(e,t,n,r,i){let a=rs(e,t,40),o=[a,...i,rs(n,r,40)],s=`M${is(e)} L${is(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${is(l)} ${is(u)} ${is(a)}`}return`${s} L${is(n)}`}var ls=e=>e===`left`||e===`right`,us=e=>[[`from`,e.from,e.fromSide,e.to],[`to`,e.to,e.toSide,e.from]];function ds(e){let t=new Map;return e.forEach((e,n)=>{for(let[r,i,a,o]of us(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 fs=(e,t)=>t>1?Math.min(26,(e-48)/(t-1)):0,ps=e=>e.every(t=>t.other===e[0]?.other)&&e.every(({cable:e,end:t,side:n})=>(t===`from`?e.toSide:e.fromSide)===ts[n])?e[0]?.other:void 0;function ms(e,t){for(let n of ds(e).values()){let[{id:e,side:r}={id:``,side:`top`}]=n,i=ls(r)?`y`:`x`,a=e=>i===`x`?e.w:e.h,o=e=>e[i]+a(e)/2,s=t(e),c=ps(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(fs(a(s),n.length),fs(a(t(c)),n.length));r-e>=u*(n.length-1)+32&&(l=Math.round((e+r)/2-o(s)))}let u=as(s,r),[d,f]=es[r],p=({cable:e,end:n,other:r})=>{let a=as(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 hs(e,{cardOf:t,coveredBelow:n}){let r={},i=[];for(let a of ds(e).values()){let[{id:e,side:o}={id:``,side:`top`}]=a,s=t(e);if(!s)continue;let c=ls(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(ps(a)??``);e&&(g=Math.min(g,fs(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);_=ns(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 gs=[[`cli`,`Koppler`],[`ide`,`Your IDE`]],_s={tool:`docker`,fix:`Install a Docker runtime (Docker Desktop or Colima)`},vs={tool:`npm`,fix:`Comes with Node`},ys={dotnet:{label:`.NET`,runIn:gs,serves:!0,needs:[{tool:`dotnet`,fix:`Install the .NET SDK the repo targets`}]},flutter:{label:`Flutter`,runIn:gs,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:gs,serves:!0,needs:[vs]},web:{label:`Web`,runIn:gs,serves:!1,browser:!0,needs:[vs]},lambda:{label:`Lambda`,runIn:gs,serves:!0,needs:[_s,{tool:`aws`,fix:`brew install awscli`}]},sam:{label:`AWS SAM`,runIn:gs,serves:!0,needs:[_s,{tool:`sam`,fix:`brew install aws-sam-cli (or: uv tool install aws-sam-cli)`}]},other:{label:`Other`,runIn:gs,serves:!0}},bs=(e,t)=>e.read(t)??``,xs=(e,t)=>t.map(t=>bs(e,t)).join(`
|
|
4
|
+
`).toLowerCase(),Ss=(e,t)=>t?` ${e}${String(t)}`:``,Cs=e=>xs(e,[`pyproject.toml`,`requirements.txt`,`Pipfile`]);function ws(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 Ts=e=>/spring-boot|springframework\.boot/.test(xs(e,[`pom.xml`,`build.gradle`,`build.gradle.kts`])),Es=e=>[`compose.yaml`,`compose.yml`,`docker-compose.yml`,`docker-compose.yaml`].find(t=>e.has(t)),Ds={reactnative:{label:`React Native`,color:[`#087EA4`,`#58C4DC`],serves:!1,platforms:[[`ios`,`iOS simulator`],[`android`,`Android emulator`]],detect:e=>/"(expo|react-native)"\s*:/.test(bs(e,`package.json`)),start:(e,{platform:t=`ios`})=>/"expo"\s*:/.test(bs(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=>Ts(e)?8080:null,start:e=>e.has(`pom.xml`)?Ts(e)?`${e.has(`mvnw`)?`./mvnw`:`mvn`} spring-boot:run`:null:`${e.has(`gradlew`)?`./gradlew`:`gradle`} ${Ts(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=Cs(e);return e.has(`manage.py`)||/fastapi|uvicorn/.test(t)?8e3:t.includes(`flask`)?5e3:null},start:(e,{port:t})=>{let n=ws(e),r=Cs(e);if(e.has(`manage.py`))return`${n}python manage.py runserver${Ss(``,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${Ss(`--port `,t)}`:null}return r.includes(`flask`)?`${n}flask run${Ss(`--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${Ss(`-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${Ss(`--port=`,t)}`:null},compose:{label:`Docker Compose`,color:[`#1D63ED`,`#7AA7FF`],detect:e=>!!Es(e),port:e=>Number(/["'\s-](\d{2,5}):\d{2,5}["'\s]/.exec(bs(e,Es(e)??``))?.[1])||null,start:()=>`docker compose up`,stop:`docker compose down`}};for(let[e,t]of Object.entries(Ds))ys[e]={label:t.label,runIn:gs,serves:t.serves!==!1,...t.platforms&&{platforms:t.platforms},...t.color&&{color:t.color}};Object.keys(ys);var Os={kinds:ys,recipes:Ds,custom:[]},ks=new WeakMap;function As(e){let t=e?.kinds;if(typeof t!=`object`||!t)return Os;let n=ks.get(t);if(n)return n;let r={kinds:{...ys},recipes:{...Ds},custom:[]};for(let[e,n]of Object.entries(t)){if(!/^[a-z0-9-]{1,32}$/.test(e)||Object.hasOwn(ys,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:gs,serves:t.serves!==!1,custom:!0},r.custom.push(e)}return ks.set(t,r),r}var js=e=>As(e).kinds;function Ms(e,t){let n=e?.kind,r=js(t);return n!==void 0&&Object.hasOwn(r,n)&&r[n]||{label:n??`App`,runIn:gs,serves:!0}}var Ns=e=>typeof e==`string`?e:``,Ps=e=>({branch:e?.branch||``,run:e?.run||`cli`,...e?.platform&&{platform:e.platform},...Ns(e?.note)&&{note:Ns(e?.note)},...e?.tunnels===!1&&{tunnels:!1},...e?.queues===!0&&{queues:!0},...Ns(e?.changes)&&{changes:Ns(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}}),Fs=e=>e?.run===`mock`?{branch:``,run:`mock`,...e.restart===!0&&{restart:!0}}:Ps(e);function Is(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,Fs(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=e=>Object.fromEntries(Object.entries(e??{}).flatMap(([e,t])=>t===`local`?[[e,`local`]]:[]));return{env:e?.env??null,nodes:r,edges:i,queues:a(e?.queues),databases:a(e?.databases)}}var Ls=(e,t)=>e.edges.filter(e=>e.from===t).map(e=>e.to).sort(),Rs=e=>e.toUpperCase(),zs=e=>({ide:`your IDE`,cli:`the command line`,mock:`a mock`})[e];function Bs(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 ${Rs(r.from)} to ${Rs(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 ${zs(a.run)} to ${zs(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`);for(let r of i.databasesOf?.(e)??[])Object.hasOwn(t.databases,r)!==Object.hasOwn(n.databases,r)&&c.push(`it moves to the ${Object.hasOwn(n.databases,r)?`local`:`deployed`} ${r} database`);return c}function Vs(e,t,n={}){let r=Is(e),i=Is(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=Bs(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 Hs=[[`starts`,`START`],[`restarts`,`RESTART`],[`stops`,`STOP AND REVERT`],[`keeps`,`KEEP RUNNING`]];function Us(e,t={}){let n=e=>t.name?.(e)??e,r=e=>n(e.id)+(e.why.length>0?` (${e.why.join(`; `)})`:``),i=Hs.filter(([t])=>e[t].length>0).map(([t,n])=>`${n}: ${e[t].map(r).join(`, `)}`);return i.length>0?i:[`NOTHING TO CHANGE`]}var Ws=[`sqs`,`kafka`];function Gs(e,t){let n=e?.apps?.[t];return[...new Set([...Object.keys(n?.publishes??{}),...Object.keys(n?.reads??{})])]}function Ks(e){let t=e?.envs??[],n=e?.protected;return Array.isArray(n)?t.filter(e=>n.includes(e)):t.slice(1)}var qs=(e,t)=>Ks(e).includes(t),Js=[[`valkey`,`Cache (Valkey)`],[`redis`,`Cache (Redis)`],[`aurora`,`Database (Aurora)`],[`postgres`,`Database (Postgres)`],[`mysql`,`Database (MySQL)`],[`mongo`,`Database (MongoDB)`],[`db`,`Database`],[`rds`,`Database`]];function Ys(e){if(e.what)return e.what;let t=(e.tunnel??``).toLowerCase(),n=t.split(/[.-]/);return Js.find(([e])=>n.includes(e)||e.length>3&&t.includes(e))?.[1]??`Tunnel`}function Xs(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:Ys(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 Zs(e,t=[]){let n=Xs(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 Qs(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 $s=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function ec(e){if(!$s(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(!$s(n)||Object.keys(n).length===0)return{error:`It has no apps.`};if(typeof i==`number`&&i>1)return{error:`It was saved by a newer Koppler (preset format ${String(i)}). Update Koppler.`};let a=Eo({...e,name:t,nodes:Object.fromEntries(Object.entries(n).map(([e,t])=>[e,$s(t)?t:{}])),edges:Array.isArray(r)?r:[]});return a.error===void 0?{preset:{...a.value,version:1},migratedFrom:a.applied.length?a.from:null}:{error:`It was saved by a newer Koppler: ${a.error}.`}}function tc(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 nc=e=>$s(e)&&typeof e.from==`string`&&typeof e.to==`string`;function rc(e,t){let n=ec(e);if(n.error!==void 0)return{error:n.error};let r=n.preset,i=[],a=e=>t.name?.(e)??e;(!$s(e)||!Number.isInteger(e.version)&&e.koppler===void 0)&&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,tc(e,r.nodes[e]??{},t,a(e),i)])),d=[],f=0;for(let e of r.edges.filter(nc)){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.0.0`&&i.push(`updated from the Koppler ${n.migratedFrom} format`);let p={name:r.name.trim().slice(0,80),version:1,koppler:To.version,nodes:u,edges:d};return r.source&&(p.source=r.source),{preset:p,notes:i}}var ic=e=>$s(e)&&typeof e.x==`number`&&typeof e.y==`number`,ac=e=>t=>e.from===t.from&&e.to===t.to;function oc(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=$s(e.layout)?e.layout:void 0,o=r($s(a?.nodes)?a.nodes:{}),s=Object.values(o).filter(ic),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(nc).filter(e=>!n.has(e.from)&&!n.has(e.to)&&!(t.uncable??[]).some(ac(e)));for(let e of t.cable??[])l.some(ac(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($s(a.sides)?a.sides:{}).filter(([e])=>u.has(e)));return{...e,nodes:i,edges:l,layout:{...a,nodes:o,sides:d}}}function sc(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 cc={cli:`Koppler`,ide:`Me`,mock:`Mock`},lc=.6,uc=[[`down`,!1],[`right`,!1],[`down`,!0],[`right`,!0]],dc=e=>`tunnel:${e.host}:${String(e.original)}`,fc={w:230,h:58,gap:40},pc=[`bottom`,`right`,`left`,`top`],mc=8,hc=24,gc=44,_c={w:300,h:240,gap:32},vc=(e,t,n)=>({id:`${e}>${t}`,source:e,target:t,type:`cable`,data:n}),yc=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 databases(){return B(this.#h)}set databases(e){P(this.#h,e)}#g=N({});get hiddenQueues(){return B(this.#g)}set hiddenQueues(e){P(this.#g,e)}#_=N({});get hiddenOutside(){return B(this.#_)}set hiddenOutside(e){P(this.#_,e)}#v=N({});get hiddenLogs(){return B(this.#v)}set hiddenLogs(e){P(this.#v,e)}#y=N({});get logAliases(){return B(this.#y)}set logAliases(e){P(this.#y,e)}#b=N([]);get pinned(){return B(this.#b)}set pinned(e){P(this.#b,e)}pin(e){this.pinned.includes(e)||(this.pinned=[...this.pinned,e])}unpin(e){this.pinned=this.pinned.filter(t=>t!==e)}#x=M(()=>new Map(this.infra.map(({id:e,position:t,measured:n})=>[e,{...this.shown(t,e),w:n?.width??fc.w,h:n?.height??fc.h}])));get infraBoxes(){return B(this.#x)}set infraBoxes(e){P(this.#x,e)}#S=N(!1);get present(){return B(this.#S)}set present(e){P(this.#S,e,!0)}entering=!1;#C=N(!1);get brief(){return B(this.#C)}set brief(e){P(this.#C,e,!0)}#w=N(!1);get selecting(){return B(this.#w)}set selecting(e){P(this.#w,e,!0)}#T=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.#T)}set panelCard(e){P(this.#T,e)}#E=N({});get fullHeights(){return B(this.#E)}set fullHeights(e){P(this.#E,e)}#D=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.#D).get(t)??0)});stored=(e,t=``)=>({x:e.x,y:e.y-(B(this.#D).get(t)??0)});dropped(e,t){return this.stored(t,e)}#O=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.#O)}set boxes(e){P(this.#O,e)}#k=N();#A=M(()=>B(this.#k)&&yo(B(this.#k),new Set(Object.keys(this.databases))));#j=N([]);get unplaced(){return B(this.#j)}set unplaced(e){P(this.#j,e)}#M=[];#N(e){return this.nodes.some(t=>t.id===e&&t.data.run===`mock`)}tunnelsOf(e){if(this.#N(e))return[];let t=B(this.#A)?.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]=this.#H(t);if(n)return`databases.${n}${this.env===this.envs[0]?``:`.envs.${this.env}`}`;let r=B(this.#A)?.apps[e],i=this.env===this.envs[0]?void 0:r?.envs?.[this.env]?.prereqs,a=(i??r?.prereqs??[]).findIndex(e=>e.tunnel===t);return`apps.${e}.${i?`envs.${this.env}.`:``}prereqs[${String(a)}]`}#P=M(()=>Zs(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:Ys(t),connectsAs:t.connectsAs}))),this.cards.flatMap(({id:e})=>{let t=Number(new URL(B(this.#A)?.apps[e]?.url??`http://none`).port);return t?[t]:[]})));get plan(){return B(this.#P)}set plan(e){P(this.#P,e)}ledBy(e){return[...this.shownPlan.filter(t=>t.apps[0]===e).map(dc),...this.boardDatabases.filter(t=>t.apps[0]===e).map(e=>`database:${e.id}`),...this.boardQueues.filter(t=>this.#B(t)===e).map(e=>`queue:${e.id}`)]}#F=M(()=>new Set(this.cards.map(e=>e.id)));#I=M(()=>new Set(this.cards.filter(e=>e.data.showQueues).map(e=>e.id)));commandsOf(e){return Object.entries(B(this.#A)?.apps[e]?.commands??{}).filter(([,e])=>(e.show??`both`)!==`cli`)}#L(e){return!!B(this.#A)?.apps[e]?.outside}#R=M(()=>{let e=B(this.#A)?.apps??{};return Object.entries(B(this.#A)?.queues??{}).flatMap(([t,n])=>{let r=n=>Object.keys(e).filter(r=>Object.hasOwn(e[r]?.[n]??{},t)&&(B(this.#I).has(r)||this.#L(r))),[i,a]=[r(`publishes`),r(`reads`)];return!this.hiddenQueues[t]&&[...i,...a].some(e=>B(this.#I).has(e))?[{id:t,queue:n,pubs:i,reads:a,upstream:!1}]:[]})});get boardQueues(){return B(this.#R)}set boardQueues(e){P(this.#R,e)}#z=M(()=>{let e=[...this.boardQueues],t=t=>e.some(e=>e.id===t),n=Object.entries(B(this.#A)?.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.#z)}set shownQueues(e){P(this.#z,e)}ownedBy(e){let t=t=>[...t.pubs,...t.reads].filter(e=>B(this.#F).has(e)||this.#L(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))||this.boardDatabases.some(t=>`database:${t.id}`===e&&t.apps.length===1))}#B(e){return[...e.pubs,...e.reads].find(e=>B(this.#F).has(e))}queueName(e){return B(this.#A)?.queues?.[e]?.name??e}switchesOver(e){if(this.#N(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.#A)?.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.#N(e)?[]:Gs(B(this.#A),e).filter(e=>B(this.#A)?.queues?.[e])}databasesOf(e){return this.#N(e)||!B(this.#k)?[]:vo(B(this.#k),e)}#V(e){let t=B(this.#k)?.databases?.[e];return this.env===this.envs[0]?t:t?.envs?.[this.env]}useOf(e,t){return B(this.#k)?.apps[e]?.uses?.[t]}tunnelOf(e){return this.#V(e)?.tunnel}databaseName(e){return B(this.#k)?.databases?.[e]?.name??e}#H(e){return this.boardDatabases.filter(t=>this.#V(t.id)?.tunnel===e).map(e=>e.id)}#U=M(()=>Object.keys(B(this.#k)?.databases??{}).flatMap(e=>{let t=this.cards.filter(t=>this.databasesOf(t.id).includes(e)).map(e=>e.id);return t.length?[{id:e,apps:t}]:[]}));get boardDatabases(){return B(this.#U)}set boardDatabases(e){P(this.#U,e)}tunnelShown(e,t){let n=this.#V(t)?.tunnel;if(!n||this.databases[t])return!1;let r=this.cards.find(t=>t.id===e)?.data.shownTunnels?.[t];return r===void 0?this.cards.filter(e=>this.databasesOf(e.id).some(e=>this.#V(e)?.tunnel===n)).length>=2:r}showTunnel(e,t,n){let r=this.cards.find(t=>t.id===e);r&&this.set(e,{shownTunnels:{...r.data.shownTunnels,[t]:n}})}#W(e,t){let n=this.databasesOf(e).filter(e=>this.#V(e)?.tunnel===t),r=B(this.#k)?.apps[e];return((this.env===this.envs[0]?void 0:r?.envs?.[this.env]?.prereqs)??r?.prereqs??[]).some(e=>e.tunnel===t)||n.some(t=>this.tunnelShown(e,t))}showTunnelFor(e,t,n){let r=this.cards.find(t=>t.id===e),i=this.databasesOf(e).filter(e=>!this.databases[e]&&this.#V(e)?.tunnel===t);r&&i.length&&this.set(e,{shownTunnels:{...r.data.shownTunnels,...Object.fromEntries(i.map(e=>[e,n]))}})}#G=M(()=>{let e={};for(let{id:t,apps:n}of this.boardDatabases){let r=this.#V(t);if(!r?.tunnel||!r.port)continue;let i=e[r.tunnel]??={port:r.port,apps:[],local:!0};i.apps=[...new Set([...i.apps,...n])],i.local&&=!!this.databases[t]}return Object.entries(e).flatMap(([e,{port:t,apps:n,local:r}])=>r&&n.length>=2&&!this.plan.some(t=>t.host===e)?[{host:e,port:t,original:t,bind:`localhost`,apps:[...n],envs:{},what:Ys({tunnel:e})}]:[])});#K=M(()=>[...this.plan.filter(e=>e.apps.some(t=>this.#W(t,e.host))),...B(this.#G)]);get shownPlan(){return B(this.#K)}set shownPlan(e){P(this.#K,e)}#q=N(fn({}));get rowY(){return B(this.#q)}set rowY(e){P(this.#q,e,!0)}setDatabase(e,t){let{[e]:n,...r}=this.databases;this.databases=t?{...r,[e]:`local`}:r,this.syncInfra()}#J(){return this.boardDatabases.flatMap(({id:e,apps:t})=>{let n=this.#V(e)?.tunnel,r=n&&this.shownPlan.find(e=>e.host===n),i=`database:${e}`,a=t.filter(t=>this.tunnelShown(t,e));return[...r&&a.length?[{from:dc(r),to:i,database:e}]:[],...t.filter(e=>!a.includes(e)).map(t=>({from:t,to:i,database:e,...!this.databases[e]&&r&&{via:`Through tunnel · ${r.bind}:${String(r.port)}`}}))]})}#Y=M(()=>{let e=e=>this.#L(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.#ie(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.#A)?.apps[e]?.consumes??{}).filter(e=>this.#L(e)).map(t=>({from:e,to:`outside:${t}`}))),...this.#J(),...Object.entries(B(this.#A)?.apps??{}).flatMap(([e,t])=>this.#L(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.#Y)}set flows(e){P(this.#Y,e)}infraSide(e){let t=new Set(this.cables.flatMap(t=>[t.from===e&&t.fromSide,t.to===e&&t.toSide]));return pc.find(e=>!t.has(e))??`bottom`}deployedCalls(e){return this.#N(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])])}#X=M(()=>this.shownPlan.flatMap(e=>e.apps.filter(t=>this.#W(t,e.host)).map(t=>({from:t,to:dc(e),tunnel:e}))));get links(){return B(this.#X)}set links(e){P(this.#X,e)}#Z=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.#Z)}set focus(e){P(this.#Z,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);#Q(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)}}#$=M(()=>hs(this.cables,{cardOf:e=>this.boxes.get(e),coveredBelow:e=>this.#Q(e)}));get ends(){return B(this.#$)}set ends(e){P(this.#$,e)}#ee(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+fc.gap/2:c===`top`?s.y-fc.gap/2:s.y,u=s.y-fc.gap;return t.map(e=>{if(!o.has(e.id))return e;let t=this.infraBoxes.get(e.id)??fc;if(this.#ae(e.id)){u-=t.h;let n={...e,position:{x:s.x+s.w/2-t.w/2,y:u}};return u-=fc.gap,n}c===`top`&&(l-=t.h);let n=c===`right`?s.x+s.w+fc.gap:c===`left`?s.x-fc.gap-t.w:s.x,r={...e,position:{x:n,y:l}};return l+=c===`top`?-fc.gap/2:t.h+fc.gap/2,r})}#te={};#ne(e,t){return t.map(t=>{let n=t.measured?.width,r=t.measured?.height,i=this.#te[t.id];if(n&&(this.#te[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-fc.gap/2:s+e+fc.gap/2)}return a===t.position.x?t:{...t,position:{x:a,y:o}}})}#re(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??fc.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+fc.gap/2:-1/0,n=e.position.y>=Math.max(u,t)?e.position.y:Math.max(u+fc.gap/2,t);n!==e.position.y&&(d[e.id]=n),u=n+(this.infraBoxes.get(e.id)?.h??fc.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.shownPlan.map(r=>{let i=dc(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),rows:this.#H(r.host).map(e=>({database:e,name:this.databaseName(e),use:this.databases[e]?`local`:this.boardDatabases.find(t=>t.id===e)?.apps.some(t=>this.tunnelShown(t,e))?`deployed`:`hidden`}))}}}),i=this.boardDatabases.map(({id:r,apps:i})=>{let a=`database:${r}`,o=t.get(a);!o&&!e[a]&&n.push(i[0]??``);let s=this.#V(r)?.tunnel,c=s?this.plan.find(e=>e.host===s):void 0,l=B(this.#k)?.databases?.[r]?.kind??``;return{...o,id:a,type:`database`,deletable:!1,position:o?.position??e[a]??{x:0,y:0},data:{database:r,name:this.databaseName(r),kind:l.toUpperCase(),local:!!this.databases[r],tunnel:c?`the ${Ys({tunnel:c.host})} tunnel`:``,through:c?`${c.bind}:${String(c.port)}`:s?`localhost:${String(this.#V(r)?.port??``)}`:``,apps:i}}}),a=this.env.toUpperCase(),o=e=>B(this.#A)?.apps[e]?.name??e,s=[],c=this.shownQueues.map(r=>{let i=`queue:${r.id}`,c=t.get(i),l=this.#B(r);!c&&!e[i]&&l&&n.push(l),!c&&!e[i]&&r.upstream&&s.push(i);let u=!r.upstream&&Ws.includes(r.queue.type),d=u&&this.queues[r.id]===`local`,f=r.reads.filter(e=>B(this.#F).has(e)&&!this.#ie(e,r.id)).map(o),p=!d&&f.length?f.join(` and `):``;return{...c,id:i,type:`queue`,deletable:!1,position:c?.position??e[i]??{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 ${a} queue`:``,about:[r.queue.envs?.[this.env]?.queue??r.queue.queue??r.id,r.upstream?`Stays deployed on ${a}: it feeds ${this.#oe(r.queue.feeds)}.`:``,p?`It takes messages the deployed ${a} reader would get. Switch to Local to give your run its own copy.`:``].filter(Boolean)}}}),l=[...new Set([...this.flows.flatMap(e=>[e.from,e.to]),...this.pinned.filter(e=>this.#L(e)).map(e=>`outside:${e}`)])].filter(e=>e.startsWith(`outside:`)&&!this.hiddenOutside[e.slice(8)]).map(n=>{let r=B(this.#A)?.apps[n.slice(8)],i=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{...i,id:n,type:`outside`,deletable:!1,position:i?.position??e[n]??{x:0,y:0},data:{name:r?.name??n.slice(8),where:l?`${a}: ${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 ${a} board uses ${c}.`:``,...this.flows.filter(e=>e.from===n).map(e=>`It sends to the deployed ${o(e.to)}, not to your local one.`)].filter(Boolean)}}}),u=[...r,...i,...c,...l];for(let e of n)u=this.#ee(e,u);u=this.#se(s,u),this.#M=[...new Set([...this.#M,...s])];for(let n of l.filter(n=>!t.has(n.id)&&!e[n.id])){let e=this.#le(n.id,u);u=u.map(t=>t.id===n.id?{...t,position:e}:t)}this.infra=u,this.unplaced=[...new Set([...this.unplaced,...n])]}#ie(e,t){let n=B(this.#A)?.apps[e]?.reads?.[t]?.via;return typeof n==`string`?n:void 0}#ae(e){return e.startsWith(`queue:`)&&this.shownQueues.some(t=>t.upstream&&Object.hasOwn(t.queue.feeds??{},e.slice(6)))}#oe(e){return Object.keys(e??{}).filter(e=>this.shownQueues.some(t=>t.id===e)).map(e=>this.queueName(e)).join(` and `)}#se(e,t){let n=t,r=e;for(let t of e){let e=this.#ce(t,n,r);e&&(n=n.map(n=>n.id===t?{...n,position:e}:n)),r=r.filter(e=>e!==t)}return n}#ce(e,t,n){let r=this.infraBoxes.get(e)??fc,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)??fc}),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]}#le(e,t,n=e=>this.boxes.get(e)??{w:260,h:200}){let r=fc,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.#M.length||!e(this.nodes)||!e(this.infra))return;let t=this.infra;for(let e of this.unplaced)t=this.#ee(e,t);t=this.#se(this.#M,t),this.#M=[],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.#ue.set(e.id,t),{...e,position:t}})}#ue=new Map;#de={};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.#fe(e.id,e.position,i):this.#pe(e.id,e.position,i)}:e;if(t?.dragging&&!n.dragging)return{...n,position:this.dropped(n.id,n.position)};let a=t&&(this.#ue.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.#de[e],a=r?.height;a&&(this.#de[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.#re(d.filter(e=>l.includes(e.id)),u),u=this.#ne(d,u),this.nodes=d,this.infra=u,Object.keys(c).length>0}#fe(e,t,n){let r=this.boxes.get(e);if(!r)return t;let i=mc/(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=as(n,i),o=this.ends.offset[`${String(e)}|${t}`]??0;return{side:i,at:es[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=es[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}}#pe(e,t,n){let r=this.infraBoxes.get(e);if(!r)return t;let i=mc/(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)}}#me=N([]);get snapped(){return B(this.#me)}set snapped(e){P(this.#me,e)}#he=N();get view(){return B(this.#he)}set view(e){P(this.#he,e)}#ge=N(!1);get unsaved(){return B(this.#ge)}set unsaved(e){P(this.#ge,e,!0)}#_e={};#ve=N(!1);get live(){return B(this.#ve)}set live(e){P(this.#ve,e,!0)}#ye=``;#be={};goLive(){this.live||=(this.commit(),this.#be=this.saved(),this.#ye=this.content(),!0)}goEdit(){this.live&&=(this.setContent(this.#ye),!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,databases:this.databases,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,databases:o,hiddenQueues:s,hiddenOutside:c,pinned:l}=JSON.parse(e);this.name=t,this.pinned=l,this.nodes=n,this.edges=r,this.queues=a,this.databases=o??{},this.hiddenQueues=s,this.hiddenOutside=c,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}))}#xe=N(null);get name(){return B(this.#xe)}set name(e){P(this.#xe,e,!0)}#Se=N([]);get own(){return B(this.#Se)}set own(e){P(this.#Se,e)}get team(){return B(this.#A)?.presets??[]}#Ce=N(null);get opened(){return B(this.#Ce)}set opened(e){P(this.#Ce,e,!0)}#we(){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}}}#Te(e){return{name:e,version:1,koppler:To.version,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}}}#Ee(){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]]))}}#De(){let e=e=>{let t={...this.own.find(t=>t.name===e),...this.#Te(e),layout:this.#Ee()},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&&rc(t,this.#we()).preset;if(t&&r&&n(this.#Te(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}#Oe=N([]);get trash(){return B(this.#Oe)}set trash(e){P(this.#Oe,e)}#ke=N([]);get recent(){return B(this.#ke)}set recent(e){P(this.#ke,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.#De();let e=this.nodes[0]?.data.name??`Untitled`,t=this.uniqueName(`${this.name??e} copy`);this.own=[...this.own,{...this.#Te(t),layout:this.#Ee()}],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=>ec(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=rc(a,this.#we());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.#A)?.presets??[]];n[e]=t,B(this.#k)&&P(this.#k,{...B(this.#k),presets:n})}asShared(e){let{name:t,nodes:n,edges:r}=e,i=ec(e).preset?.version??1;return JSON.stringify({name:t,version:i,koppler:To.version,nodes:n,edges:r},null,2)}#Ae=N([]);get dismissed(){return B(this.#Ae)}set dismissed(e){P(this.#Ae,e)}#je=N(!1);get scratch(){return B(this.#je)}set scratch(e){P(this.#je,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.databases={},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=rc(e,this.#we());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.databases={},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(yc),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.#Ie(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 es,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)?vc(e,t,$o(c,{from:e,to:t},`down`,()=>({w:260,h:160}))):vc(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=[]}#Me=N([]);get apps(){return B(this.#Me)}set apps(e){P(this.#Me,e)}#Ne=M(()=>new Map(this.apps.map(e=>[e.id,e])));app=e=>B(this.#Ne).get(e);nameOf=e=>B(this.#Ne).get(e)?.name??e;#Pe=N([]);get envs(){return B(this.#Pe)}set envs(e){P(this.#Pe,e)}#Fe=N([]);get roots(){return B(this.#Fe)}set roots(e){P(this.#Fe,e)}area=()=>new DOMRect;show=()=>void 0;#Ie(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`)},...n.shownTunnels&&{shownTunnels:n.shownTunnels},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)}#Le=N(``);get formatError(){return B(this.#Le)}set formatError(e){P(this.#Le,e,!0)}open({stack:e,clones:t,roots:n,saved:r}){let i=Ho(e);this.formatError=i.error??``;let a=i.value??e,o=(r?Oo(r):void 0)?.value??r,s=yo(mo(a));P(this.#k,mo(a)),P(this.#u,s.envs.filter(e=>qs(s,e))),this.stack=s.name??``,this.dir=(s.source??``).replace(/\/stack\.json$/,``),this.setup=!!s.setup,this.known=s.stacks??[],this.envs=s.envs,this.env=o?.env??s.envs[0]??``,this.roots=n,this.apps=Object.entries(s.apps).map(([e,n])=>({id:e,name:n.name,kind:n.kind,kindLabel:Ms(n,s).label,slug:n.slug??``,cloned:!!t[e],calls:[...new Set([...Object.keys(n.consumes??{}),...Object.keys(s.found?.[e]??{})])],known:Object.keys(n.consumes??{}),answers:Ms(n,s).serves||Object.entries(s.apps).some(([t,n])=>t!==e&&(n.consumes?.[e]??s.found?.[t]?.[e])),serves:!!n.url,runIn:[...Ms(n,s).runIn,...n.mock?.length?[[`mock`,`Mock`]]:[]],platforms:Ms(n,s).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=o?.nodes?.[e.id];return t?[this.#Ie(e,{x:t.x,y:t.y},t)]:[]}),this.fullHeights=Object.fromEntries(Object.entries(o?.nodes??{}).flatMap(([e,t])=>typeof t?.full==`number`&&t.full>0?[[e,t.full]]:[]));let c=new Set(this.nodes.map(({id:e})=>e));this.edges=(o?.edges??[]).filter(({from:e,to:t})=>c.has(e)&&c.has(t)).map(({from:e,to:t,fromSide:n,toSide:r,...i})=>vc(e,t,{fromSide:n??`right`,toSide:r??`left`,...i})),this.#_e=o??{},this.name=typeof o?.preset==`string`?o.preset:null,this.own=Array.isArray(o?.presets)?o.presets:[],this.#Re=this.own.map(e=>e.name),this.scratch=o?.scratch===!0,this.dismissed=Array.isArray(o?.dismissed)?o.dismissed:[],this.trash=Array.isArray(o?.trash)?o.trash:[],this.recent=Array.isArray(o?.recent)?o.recent:[],this.infra=[],this.queues=o?.queues??{},this.databases=o?.databases??{},this.hiddenQueues=o?.hiddenQueues??{},this.hiddenOutside=o?.hiddenOutside??{},this.hiddenLogs=o?.hiddenLogs??{},this.logAliases=o?.logAliases??{},this.pinned=Array.isArray(o?.outside)?o.outside:[],this.syncInfra(o?.infra??{});let{zoom:l,pan:u}=o??{};this.view=l&&u?{x:u.x,y:u.y,zoom:l}:void 0}commit(){!this.live&&!this.nodes.some(e=>e.dragging)&&this.#De()}get changes(){return[B(this.#A),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.databases,this.hiddenQueues,this.hiddenOutside,this.hiddenLogs,this.logAliases,this.pinned]}#Re=[];saved(){if(this.#Re=[...new Set([...this.#Re,...this.own.map(e=>e.name)])],this.live)return{...this.#be,env:this.env};let e=this.#_e.nodes??{};return{mode:`auto`,koppler:Do.version,...this.#_e,preset:this.name,presets:this.own,seen:this.#Re,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,shownTunnels:f}})=>[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,shownTunnels:f&&Object.keys(f).length?f:void 0,full:this.fullHeights[t]}])),edges:this.edges.map(({source:e,target:t,data:n})=>({from:e,to:t,...n})),queues:this.queues,databases:Object.keys(this.databases).length?this.databases:void 0,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.#ze(this.#Ie(n,this.stored({x:e.x-_c.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:_c.w,h:_c.h}),s=(e,t)=>o.every(n=>e+_c.w+_c.gap<=n.x||n.x+n.w+_c.gap<=e||t+_c.h+_c.gap<=n.y||n.y+n.h+_c.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,_c.h)).filter(e=>e>=i.y&&e+_c.h<=a.y),f=u(o.map(e=>e.x+e.w+_c.gap).sort(l),c(i.x,a.x,_c.w)).filter(e=>e>=i.x&&e+_c.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.#ze(this.#Ie(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(yc)}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(yc),this.nodes=this.nodes.map(t)}#ze(e){this.infra=this.infra.map(yc),this.edges=this.edges.map(yc),this.nodes=[...this.nodes.map(yc),{...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=vc(e,t,$o(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,koppler:To.version,nodes:{},edges:[]}:void 0);if(!r)return!1;let i={...oc(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}#Be={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.#Be.key?this.#Be.version+1:0;for(let i=0;i<uc.length;i++,r++){let[i,a]=uc[r%uc.length]??uc[0];if(this.#Ve(e,i,a),t()!==n)break}this.#Be={key:t(),version:r}}#Ve(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)??fc),{w:a,h:o}=e(n);if(!i.length)return{w:a,h:o};let s=i.reduce((e,t)=>e+t.h+fc.gap/2,0),c=Math.max(...i.map(e=>e.w));return t===`down`&&r.some(e=>e.from===n)?{w:a+fc.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=Qo([...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:hc,anchor:n=>s.includes(n)?void 0:t===`down`?e(n).w/2:gc/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,...$o(d,n,t,e,f)}));ms(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})=>vc(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.#ee(t.id,m,e(t.id),!0,f[t.id]);this.infra=m}},bc={waiting:`Waiting`,building:`Building`,running:`Running`,unhealthy:`Unhealthy`,exited:`Exited`,"failed-to-start":`Failed to start`,"secret-missing":`Secret missing`},xc={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?xc[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 Sc(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 Cc=(e,t)=>io(e,t,!0),wc=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}`:``}`},Tc=e=>!!e.closest(`[type="password"], [data-secret]`),Ec=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&&Cc(`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(`
|
|
5
|
+
`).slice(-300).join(`
|
|
6
|
+
`)}clear(){this.#t=[],Cc(`debug-clear`,{})}watch(){try{P(this.#e,localStorage.getItem(`koppler-debug`)===`on`)}catch{}let e={capture:!0};addEventListener(`click`,e=>{e.target instanceof Element&&!Tc(e.target)&&this.note(`click`,wc(e.target))},e),addEventListener(`change`,e=>{let t=e.target;if(!(t instanceof Element)||Tc(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`,wc(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),Ec.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 Dc(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 Oc=U(`<p class="ask svelte-gr1w3a"> </p>`),kc=U(`<span class="opt svelte-gr1w3a">optional</span>`),Ac=U(`<option> </option>`),jc=U(`<select class="svelte-gr1w3a"></select>`),Mc=U(`<input class="svelte-gr1w3a"/>`),Nc=U(`<label class="svelte-gr1w3a"><span> <!></span> <!></label>`),Pc=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),Fc=U(`<dialog aria-labelledby="command-title" class="svelte-gr1w3a"><!></dialog>`);function Ic(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 Dc(B(r),B(i))??``,!0),P(o,!1),B(a)||B(n)?.close())};var l={open:s},u=Fc(),d=F(u),f=e=>{let t=M(()=>B(r));var s=Pc(),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=Oc(),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=Nc(),r=F(n),a=F(r,!0),o=R(a),s=e=>{W(e,kc())};K(o,e=>{B(t).required||e(s)}),k(r);var c=R(r,2),l=e=>{var n=jc();q(n,20,()=>B(t).choices??[],e=>e,(e,t)=>{var n=Ac(),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=Mc();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 Lc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Rc(e,t){let n=La(t,Lc),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 zc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Bc(e,t){let n=La(t,zc),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 Vc(e,t){let n=X(t,`size`,3,14);Ua(e,{get of(){return Bc},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 Uc(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 Wc={value:()=>{}};function Gc(){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 Kc(n)}function Kc(e){this._=e}function qc(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}})}Kc.prototype=Gc.prototype={constructor:Kc,on:function(e,t){var n=this._,r=qc(e+``,n),i,a=-1,o=r.length;if(arguments.length<2){for(;++a<o;)if((i=(e=r[a]).type)&&(i=Jc(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]=Yc(n[i],e.name,t);else if(t==null)for(i in n)n[i]=Yc(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 Kc(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 Jc(e,t){for(var n=0,r=e.length,i;n<r;++n)if((i=e[n]).name===t)return i.value}function Yc(e,t,n){for(var r=0,i=e.length;r<i;++r)if(e[r].name===t){e[r]=Wc,e=e.slice(0,r).concat(e.slice(r+1));break}return n!=null&&e.push({name:t,value:n}),e}var Xc={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 Zc(e){var t=e+=``,n=t.indexOf(`:`);return n>=0&&(t=e.slice(0,n))!==`xmlns`&&(e=e.slice(n+1)),Xc.hasOwnProperty(t)?{space:Xc[t],local:e}:e}function Qc(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 $c(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function el(e){var t=Zc(e);return(t.local?$c:Qc)(t)}function tl(){}function nl(e){return e==null?tl:function(){return this.querySelector(e)}}function rl(e){typeof e!=`function`&&(e=nl(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 Gu(r,this._parents)}function il(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function al(){return[]}function ol(e){return e==null?al:function(){return this.querySelectorAll(e)}}function sl(e){return function(){return il(e.apply(this,arguments))}}function cl(e){e=typeof e==`function`?sl(e):ol(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 Gu(r,i)}function ll(e){return function(){return this.matches(e)}}function ul(e){return function(t){return t.matches(e)}}var dl=Array.prototype.find;function fl(e){return function(){return dl.call(this.children,e)}}function pl(){return this.firstElementChild}function ml(e){return this.select(e==null?pl:fl(typeof e==`function`?e:ul(e)))}var hl=Array.prototype.filter;function gl(){return Array.from(this.children)}function _l(e){return function(){return hl.call(this.children,e)}}function vl(e){return this.selectAll(e==null?gl:_l(typeof e==`function`?e:ul(e)))}function yl(e){typeof e!=`function`&&(e=ll(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 Gu(r,this._parents)}function bl(e){return Array(e.length)}function xl(){return new Gu(this._enter||this._groups.map(bl),this._parents)}function Sl(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}Sl.prototype={constructor:Sl,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 Cl(e){return function(){return e}}function wl(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 Sl(e,a[o]);for(;o<c;++o)(s=t[o])&&(i[o]=s)}function Tl(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 Sl(e,a[s]);for(s=0;s<u;++s)(c=t[s])&&l.get(f[s])===c&&(i[s]=c)}function El(e){return e.__data__}function Dl(e,t){if(!arguments.length)return Array.from(this,El);var n=t?Tl:wl,r=this._parents,i=this._groups;typeof e!=`function`&&(e=Cl(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=Ol(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 Gu(o,r),o._enter=s,o._exit=c,o}function Ol(e){return typeof e==`object`&&`length`in e?e:Array.from(e)}function kl(){return new Gu(this._exit||this._groups.map(bl),this._parents)}function Al(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 jl(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 Gu(s,this._parents)}function Ml(){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 Nl(e){e||=Pl;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 Gu(i,this._parents).order()}function Pl(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function Fl(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function Il(){return Array.from(this)}function Ll(){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 Rl(){let e=0;for(let t of this)++e;return e}function zl(){return!this.node()}function Bl(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 Vl(e){return function(){this.removeAttribute(e)}}function Hl(e){return function(){this.removeAttributeNS(e.space,e.local)}}function Ul(e,t){return function(){this.setAttribute(e,t)}}function Wl(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function Gl(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttribute(e):this.setAttribute(e,n)}}function Kl(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 ql(e,t){var n=Zc(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:Vl:typeof t==`function`?n.local?Kl:Gl:n.local?Wl:Ul)(n,t))}function Jl(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function Yl(e){return function(){this.style.removeProperty(e)}}function Xl(e,t,n){return function(){this.style.setProperty(e,t,n)}}function Zl(e,t,n){return function(){var r=t.apply(this,arguments);r==null?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}function Ql(e,t,n){return arguments.length>1?this.each((t==null?Yl:typeof t==`function`?Zl:Xl)(e,t,n??``)):$l(this.node(),e)}function $l(e,t){return e.style.getPropertyValue(t)||Jl(e).getComputedStyle(e,null).getPropertyValue(t)}function eu(e){return function(){delete this[e]}}function tu(e,t){return function(){this[e]=t}}function nu(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function ru(e,t){return arguments.length>1?this.each((t==null?eu:typeof t==`function`?nu:tu)(e,t)):this.node()[e]}function iu(e){return e.trim().split(/^|\s+/)}function au(e){return e.classList||new ou(e)}function ou(e){this._node=e,this._names=iu(e.getAttribute(`class`)||``)}ou.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 su(e,t){for(var n=au(e),r=-1,i=t.length;++r<i;)n.add(t[r])}function cu(e,t){for(var n=au(e),r=-1,i=t.length;++r<i;)n.remove(t[r])}function lu(e){return function(){su(this,e)}}function uu(e){return function(){cu(this,e)}}function du(e,t){return function(){(t.apply(this,arguments)?su:cu)(this,e)}}function fu(e,t){var n=iu(e+``);if(arguments.length<2){for(var r=au(this.node()),i=-1,a=n.length;++i<a;)if(!r.contains(n[i]))return!1;return!0}return this.each((typeof t==`function`?du:t?lu:uu)(n,t))}function pu(){this.textContent=``}function mu(e){return function(){this.textContent=e}}function hu(e){return function(){var t=e.apply(this,arguments);this.textContent=t??``}}function gu(e){return arguments.length?this.each(e==null?pu:(typeof e==`function`?hu:mu)(e)):this.node().textContent}function _u(){this.innerHTML=``}function vu(e){return function(){this.innerHTML=e}}function yu(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??``}}function bu(e){return arguments.length?this.each(e==null?_u:(typeof e==`function`?yu:vu)(e)):this.node().innerHTML}function xu(){this.nextSibling&&this.parentNode.appendChild(this)}function Su(){return this.each(xu)}function Cu(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function wu(){return this.each(Cu)}function Tu(e){var t=typeof e==`function`?e:el(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function Eu(){return null}function Du(e,t){var n=typeof e==`function`?e:el(e),r=t==null?Eu:typeof t==`function`?t:nl(t);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function Ou(){var e=this.parentNode;e&&e.removeChild(this)}function ku(){return this.each(Ou)}function Au(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function ju(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function Mu(e){return this.select(e?ju:Au)}function Nu(e){return arguments.length?this.property(`__data__`,e):this.node().__data__}function Pu(e){return function(t){e.call(this,t,this.__data__)}}function Fu(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 Iu(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 Lu(e,t,n){return function(){var r=this.__on,i,a=Pu(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 Ru(e,t,n){var r=Fu(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?Lu:Iu,i=0;i<a;++i)this.each(s(r[i],t,n));return this}}function zu(e,t,n){var r=Jl(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 Bu(e,t){return function(){return zu(this,e,t)}}function Vu(e,t){return function(){return zu(this,e,t.apply(this,arguments))}}function Hu(e,t){return this.each((typeof t==`function`?Vu:Bu)(e,t))}function*Uu(){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 Wu=[null];function Gu(e,t){this._groups=e,this._parents=t}function Ku(){return new Gu([[document.documentElement]],Wu)}function qu(){return this}Gu.prototype=Ku.prototype={constructor:Gu,select:rl,selectAll:cl,selectChild:ml,selectChildren:vl,filter:yl,data:Dl,enter:xl,exit:kl,join:Al,merge:jl,selection:qu,order:Ml,sort:Nl,call:Fl,nodes:Il,node:Ll,size:Rl,empty:zl,each:Bl,attr:ql,style:Ql,property:ru,classed:fu,text:gu,html:bu,raise:Su,lower:wu,append:Tu,insert:Du,remove:ku,clone:Mu,datum:Nu,on:Ru,dispatch:Hu,[Symbol.iterator]:Uu};function Ju(e){return typeof e==`string`?new Gu([[document.querySelector(e)]],[document.documentElement]):new Gu([[e]],Wu)}function Yu(e){let t;for(;t=e.sourceEvent;)e=t;return e}function Xu(e,t){if(e=Yu(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 Zu={passive:!1},Qu={capture:!0,passive:!1};function $u(e){e.stopImmediatePropagation()}function ed(e){e.preventDefault(),e.stopImmediatePropagation()}function td(e){var t=e.document.documentElement,n=Ju(e).on(`dragstart.drag`,ed,Qu);`onselectstart`in t?n.on(`selectstart.drag`,ed,Qu):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect=`none`)}function nd(e,t){var n=e.document.documentElement,r=Ju(e).on(`dragstart.drag`,null);t&&(r.on(`click.drag`,ed,Qu),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 rd=e=>()=>e;function id(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}})}id.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function ad(e){return!e.ctrlKey&&!e.button}function od(){return this.parentNode}function sd(e,t){return t??{x:e.x,y:e.y}}function cd(){return navigator.maxTouchPoints||`ontouchstart`in this}function ld(){var e=ad,t=od,n=sd,r=cd,i={},a=Gc(`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`,_,Zu).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&&(Ju(n.view).on(`mousemove.drag`,m,Qu).on(`mouseup.drag`,h,Qu),td(n.view),$u(n),l=!1,s=n.clientX,c=n.clientY,i(`start`,n))}}function m(e){if(ed(e),!l){var t=e.clientX-s,n=e.clientY-c;l=t*t+n*n>d}i.mouse(`drag`,e)}function h(e){Ju(e.view).on(`mousemove.drag mouseup.drag`,null),nd(e.view,l),ed(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]))&&($u(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])&&(ed(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])&&($u(e),a(`end`,e,t[r]))}function y(e,t,r,s,c,l){var u=a.copy(),d=Xu(l||r,t),p,m,h;if((h=n.call(e,new id(`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=Xu(l||a,t),_=o}u.call(r,e,new id(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:rd(!!t),f):e},f.container=function(e){return arguments.length?(t=typeof e==`function`?e:rd(e),f):t},f.subject=function(e){return arguments.length?(n=typeof e==`function`?e:rd(e),f):n},f.touchable=function(e){return arguments.length?(r=typeof e==`function`?e:rd(!!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 ud(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function dd(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function fd(){}var pd=.7,md=1/pd,hd=`\\s*([+-]?\\d+)\\s*`,gd=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*`,_d=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*`,vd=/^#([0-9a-f]{3,8})$/,yd=RegExp(`^rgb\\(${hd},${hd},${hd}\\)$`),bd=RegExp(`^rgb\\(${_d},${_d},${_d}\\)$`),xd=RegExp(`^rgba\\(${hd},${hd},${hd},${gd}\\)$`),Sd=RegExp(`^rgba\\(${_d},${_d},${_d},${gd}\\)$`),Cd=RegExp(`^hsl\\(${gd},${_d},${_d}\\)$`),wd=RegExp(`^hsla\\(${gd},${_d},${_d},${gd}\\)$`),Td={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};ud(fd,Ad,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Ed,formatHex:Ed,formatHex8:Dd,formatHsl:Od,formatRgb:kd,toString:kd});function Ed(){return this.rgb().formatHex()}function Dd(){return this.rgb().formatHex8()}function Od(){return Ud(this).formatHsl()}function kd(){return this.rgb().formatRgb()}function Ad(e){var t,n;return e=(e+``).trim().toLowerCase(),(t=vd.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?jd(t):n===3?new Fd(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?Md(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?Md(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=yd.exec(e))?new Fd(t[1],t[2],t[3],1):(t=bd.exec(e))?new Fd(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=xd.exec(e))?Md(t[1],t[2],t[3],t[4]):(t=Sd.exec(e))?Md(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Cd.exec(e))?Hd(t[1],t[2]/100,t[3]/100,1):(t=wd.exec(e))?Hd(t[1],t[2]/100,t[3]/100,t[4]):Td.hasOwnProperty(e)?jd(Td[e]):e===`transparent`?new Fd(NaN,NaN,NaN,0):null}function jd(e){return new Fd(e>>16&255,e>>8&255,e&255,1)}function Md(e,t,n,r){return r<=0&&(e=t=n=NaN),new Fd(e,t,n,r)}function Nd(e){return e instanceof fd||(e=Ad(e)),e?(e=e.rgb(),new Fd(e.r,e.g,e.b,e.opacity)):new Fd}function Pd(e,t,n,r){return arguments.length===1?Nd(e):new Fd(e,t,n,r??1)}function Fd(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}ud(Fd,Pd,dd(fd,{brighter(e){return e=e==null?md:md**+e,new Fd(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?pd:pd**+e,new Fd(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Fd(Bd(this.r),Bd(this.g),Bd(this.b),zd(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:Id,formatHex:Id,formatHex8:Ld,formatRgb:Rd,toString:Rd}));function Id(){return`#${Vd(this.r)}${Vd(this.g)}${Vd(this.b)}`}function Ld(){return`#${Vd(this.r)}${Vd(this.g)}${Vd(this.b)}${Vd((isNaN(this.opacity)?1:this.opacity)*255)}`}function Rd(){let e=zd(this.opacity);return`${e===1?`rgb(`:`rgba(`}${Bd(this.r)}, ${Bd(this.g)}, ${Bd(this.b)}${e===1?`)`:`, ${e})`}`}function zd(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Bd(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Vd(e){return e=Bd(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 Gd(e,t,n,r)}function Ud(e){if(e instanceof Gd)return new Gd(e.h,e.s,e.l,e.opacity);if(e instanceof fd||(e=Ad(e)),!e)return new Gd;if(e instanceof Gd)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 Gd(o,s,c,e.opacity)}function Wd(e,t,n,r){return arguments.length===1?Ud(e):new Gd(e,t,n,r??1)}function Gd(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}ud(Gd,Wd,dd(fd,{brighter(e){return e=e==null?md:md**+e,new Gd(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?pd:pd**+e,new Gd(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 Fd(Jd(e>=240?e-240:e+120,i,r),Jd(e,i,r),Jd(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new Gd(Kd(this.h),qd(this.s),qd(this.l),zd(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=zd(this.opacity);return`${e===1?`hsl(`:`hsla(`}${Kd(this.h)}, ${qd(this.s)*100}%, ${qd(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function Kd(e){return e=(e||0)%360,e<0?e+360:e}function qd(e){return Math.max(0,Math.min(1,e||0))}function Jd(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 Yd=e=>()=>e;function Xd(e,t){return function(n){return e+n*t}}function Zd(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function Qd(e){return(e=+e)==1?$d:function(t,n){return n-t?Zd(t,n,e):Yd(isNaN(t)?n:t)}}function $d(e,t){var n=t-e;return n?Xd(e,n):Yd(isNaN(e)?t:e)}var ef=(function e(t){var n=Qd(t);function r(e,t){var r=n((e=Pd(e)).r,(t=Pd(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=$d(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 tf(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 nf(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function rf(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]=pf(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 af(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function of(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function sf(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]=pf(e[i],t[i]):r[i]=t[i];return function(e){for(i in n)r[i]=n[i](e);return r}}var cf=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,lf=new RegExp(cf.source,`g`);function uf(e){return function(){return e}}function df(e){return function(t){return e(t)+``}}function ff(e,t){var n=cf.lastIndex=lf.lastIndex=0,r,i,a,o=-1,s=[],c=[];for(e+=``,t+=``;(r=cf.exec(e))&&(i=lf.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:of(r,i)})),n=lf.lastIndex;return n<t.length&&(a=t.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?c[0]?df(c[0].x):uf(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 pf(e,t){var n=typeof t,r;return t==null||n===`boolean`?Yd(t):(n===`number`?of:n===`string`?(r=Ad(t))?(t=r,ef):ff:t instanceof Ad?ef:t instanceof Date?af:nf(t)?tf:Array.isArray(t)?rf:typeof t.valueOf!=`function`&&typeof t.toString!=`function`||isNaN(t)?sf:of)(e,t)}var mf=180/Math.PI,hf={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function gf(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)*mf,skewX:Math.atan(c)*mf,scaleX:o,scaleY:s}}var _f;function vf(e){let t=new(typeof DOMMatrix==`function`?DOMMatrix:WebKitCSSMatrix)(e+``);return t.isIdentity?hf:gf(t.a,t.b,t.c,t.d,t.e,t.f)}function yf(e){return e==null||(_f||=document.createElementNS(`http://www.w3.org/2000/svg`,`g`),_f.setAttribute(`transform`,e),!(e=_f.transform.baseVal.consolidate()))?hf:(e=e.matrix,gf(e.a,e.b,e.c,e.d,e.e,e.f))}function bf(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:of(e,i)},{i:c-2,x:of(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:of(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:of(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:of(e,n)},{i:s-2,x:of(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 xf=bf(vf,`px, `,`px)`,`deg)`),Sf=bf(yf,`, `,`)`,`)`),Cf=1e-12;function wf(e){return((e=Math.exp(e))+1/e)/2}function Tf(e){return((e=Math.exp(e))-1/e)/2}function Ef(e){return((e=Math.exp(2*e))-1)/(e+1)}var Df=(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<Cf)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=wf(y),c=s/(n*g)*(i*Ef(t*r+y)-Tf(y));return[a+c*d,o+c*f,s*i/wf(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),Of=0,kf=0,Af=0,jf=1e3,Mf,Nf,Pf=0,Ff=0,If=0,Lf=typeof performance==`object`&&performance.now?performance:Date,Rf=typeof window==`object`&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function zf(){return Ff||=(Rf(Bf),Lf.now()+If)}function Bf(){Ff=0}function Vf(){this._call=this._time=this._next=null}Vf.prototype=Hf.prototype={constructor:Vf,restart:function(e,t,n){if(typeof e!=`function`)throw TypeError(`callback is not a function`);n=(n==null?zf():+n)+(t==null?0:+t),!this._next&&Nf!==this&&(Nf?Nf._next=this:Mf=this,Nf=this),this._call=e,this._time=n,qf()},stop:function(){this._call&&(this._call=null,this._time=1/0,qf())}};function Hf(e,t,n){var r=new Vf;return r.restart(e,t,n),r}function Uf(){zf(),++Of;for(var e=Mf,t;e;)(t=Ff-e._time)>=0&&e._call.call(void 0,t),e=e._next;--Of}function Wf(){Ff=(Pf=Lf.now())+If,Of=kf=0;try{Uf()}finally{Of=0,Kf(),Ff=0}}function Gf(){var e=Lf.now(),t=e-Pf;t>jf&&(If-=t,Pf=e)}function Kf(){for(var e,t=Mf,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:Mf=n);Nf=e,qf(r)}function qf(e){Of||(kf&&=clearTimeout(kf),e-Ff>24?(e<1/0&&(kf=setTimeout(Wf,e-Lf.now()-If)),Af&&=clearInterval(Af)):(Af||=(Pf=Lf.now(),setInterval(Gf,jf)),Of=1,Rf(Wf)))}function Jf(e,t,n){var r=new Vf;return t=t==null?0:+t,r.restart(n=>{r.stop(),e(n+t)},t,n),r}var Yf=Gc(`start`,`end`,`cancel`,`interrupt`),Xf=[];function Zf(e,t,n,r,i,a){var o=e.__transition;if(!o)e.__transition={};else if(n in o)return;tp(e,n,{name:t,index:r,group:i,on:Yf,tween:Xf,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:0})}function Qf(e,t){var n=ep(e,t);if(n.state>0)throw Error(`too late; already scheduled`);return n}function $f(e,t){var n=ep(e,t);if(n.state>3)throw Error(`too late; already running`);return n}function ep(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw Error(`transition not found`);return n}function tp(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 Jf(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(Jf(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 np(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 rp(e){return this.each(function(){np(this,e)})}function ip(e,t){var n,r;return function(){var i=$f(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 ap(e,t,n){var r,i;if(typeof n!=`function`)throw Error();return function(){var a=$f(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 op(e,t){var n=this._id;if(e+=``,arguments.length<2){for(var r=ep(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?ip:ap)(n,e,t))}function sp(e,t,n){var r=e._id;return e.each(function(){var e=$f(this,r);(e.value||={})[t]=n.apply(this,arguments)}),function(e){return ep(e,r).value[t]}}function cp(e,t){var n;return(typeof t==`number`?of:t instanceof Ad?ef:(n=Ad(t))?(t=n,ef):ff)(e,t)}function lp(e){return function(){this.removeAttribute(e)}}function up(e){return function(){this.removeAttributeNS(e.space,e.local)}}function dp(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 fp(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 pp(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 mp(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 hp(e,t){var n=Zc(e),r=n===`transform`?Sf:cp;return this.attrTween(e,typeof t==`function`?(n.local?mp:pp)(n,r,sp(this,`attr.`+e,t)):t==null?(n.local?up:lp)(n):(n.local?fp:dp)(n,r,t))}function gp(e,t){return function(n){this.setAttribute(e,t.call(this,n))}}function _p(e,t){return function(n){this.setAttributeNS(e.space,e.local,t.call(this,n))}}function vp(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&_p(e,i)),n}return i._value=t,i}function yp(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&gp(e,i)),n}return i._value=t,i}function bp(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=Zc(e);return this.tween(n,(r.local?vp:yp)(r,t))}function xp(e,t){return function(){Qf(this,e).delay=+t.apply(this,arguments)}}function Sp(e,t){return t=+t,function(){Qf(this,e).delay=t}}function Cp(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?xp:Sp)(t,e)):ep(this.node(),t).delay}function wp(e,t){return function(){$f(this,e).duration=+t.apply(this,arguments)}}function Tp(e,t){return t=+t,function(){$f(this,e).duration=t}}function Ep(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?wp:Tp)(t,e)):ep(this.node(),t).duration}function Dp(e,t){if(typeof t!=`function`)throw Error();return function(){$f(this,e).ease=t}}function Op(e){var t=this._id;return arguments.length?this.each(Dp(t,e)):ep(this.node(),t).ease}function kp(e,t){return function(){var n=t.apply(this,arguments);if(typeof n!=`function`)throw Error();$f(this,e).ease=n}}function Ap(e){if(typeof e!=`function`)throw Error();return this.each(kp(this._id,e))}function jp(e){typeof e!=`function`&&(e=ll(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 om(r,this._parents,this._name,this._id)}function Mp(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 om(o,this._parents,this._name,this._id)}function Np(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 Pp(e,t,n){var r,i,a=Np(t)?Qf:$f;return function(){var o=a(this,e),s=o.on;s!==r&&(i=(r=s).copy()).on(t,n),o.on=i}}function Fp(e,t){var n=this._id;return arguments.length<2?ep(this.node(),n).on.on(e):this.each(Pp(n,e,t))}function Ip(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function Lp(){return this.on(`end.remove`,Ip(this._id))}function Rp(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=nl(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,Zf(l[f],t,n,f,l,ep(u,n)));return new om(a,this._parents,t,n)}function zp(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=ol(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=ep(u,n),h=0,g=f.length;h<g;++h)(p=f[h])&&Zf(p,t,n,h,f,m);a.push(f),o.push(u)}return new om(a,o,t,n)}var Bp=Ku.prototype.constructor;function Vp(){return new Bp(this._groups,this._parents)}function Hp(e,t){var n,r,i;return function(){var a=$l(this,e),o=(this.style.removeProperty(e),$l(this,e));return a===o?null:a===n&&o===r?i:i=t(n=a,r=o)}}function Up(e){return function(){this.style.removeProperty(e)}}function Wp(e,t,n){var r,i=n+``,a;return function(){var o=$l(this,e);return o===i?null:o===r?a:a=t(r=o,n)}}function Gp(e,t,n){var r,i,a;return function(){var o=$l(this,e),s=n(this),c=s+``;return s??(c=s=(this.style.removeProperty(e),$l(this,e))),o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s))}}function Kp(e,t){var n,r,i,a=`style.`+t,o=`end.`+a,s;return function(){var c=$f(this,e),l=c.on,u=c.value[a]==null?s||=Up(t):void 0;(l!==n||i!==u)&&(r=(n=l).copy()).on(o,i=u),c.on=r}}function qp(e,t,n){var r=(e+=``)==`transform`?xf:cp;return t==null?this.styleTween(e,Hp(e,r)).on(`end.style.`+e,Up(e)):typeof t==`function`?this.styleTween(e,Gp(e,r,sp(this,`style.`+e,t))).each(Kp(this._id,e)):this.styleTween(e,Wp(e,r,t),n).on(`end.style.`+e,null)}function Jp(e,t,n){return function(r){this.style.setProperty(e,t.call(this,r),n)}}function Yp(e,t,n){var r,i;function a(){var a=t.apply(this,arguments);return a!==i&&(r=(i=a)&&Jp(e,a,n)),r}return a._value=t,a}function Xp(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,Yp(e,t,n??``))}function Zp(e){return function(){this.textContent=e}}function Qp(e){return function(){var t=e(this);this.textContent=t??``}}function $p(e){return this.tween(`text`,typeof e==`function`?Qp(sp(this,`text`,e)):Zp(e==null?``:e+``))}function em(e){return function(t){this.textContent=e.call(this,t)}}function tm(e){var t,n;function r(){var r=e.apply(this,arguments);return r!==n&&(t=(n=r)&&em(r)),t}return r._value=e,r}function nm(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,tm(e))}function rm(){for(var e=this._name,t=this._id,n=sm(),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=ep(c,t);Zf(c,e,n,l,o,{time:u.time+u.delay+u.duration,delay:0,duration:u.duration,ease:u.ease})}return new om(r,this._parents,e,n)}function im(){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=$f(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 am=0;function om(e,t,n,r){this._groups=e,this._parents=t,this._name=n,this._id=r}function sm(){return++am}var cm=Ku.prototype;om.prototype={constructor:om,select:Rp,selectAll:zp,selectChild:cm.selectChild,selectChildren:cm.selectChildren,filter:jp,merge:Mp,selection:Vp,transition:rm,call:cm.call,nodes:cm.nodes,node:cm.node,size:cm.size,empty:cm.empty,each:cm.each,on:Fp,attr:hp,attrTween:bp,style:qp,styleTween:Xp,text:$p,textTween:nm,remove:Lp,tween:op,delay:Cp,duration:Ep,ease:Op,easeVarying:Ap,end:im,[Symbol.iterator]:cm[Symbol.iterator]};function lm(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var um={time:null,delay:0,duration:250,ease:lm};function dm(e,t){for(var n;!(n=e.__transition)||!(n=n[t]);)if(!(e=e.parentNode))throw Error(`transition ${t} not found`);return n}function fm(e){var t,n;e instanceof om?(t=e._id,e=e._name):(t=sm(),(n=um).time=zf(),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])&&Zf(c,e,t,l,o,n||dm(c,t));return new om(r,this._parents,e,t)}Ku.prototype.interrupt=rp,Ku.prototype.transition=fm;var pm=e=>()=>e;function mm(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 hm(e,t,n){this.k=e,this.x=t,this.y=n}hm.prototype={constructor:hm,scale:function(e){return e===1?this:new hm(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new hm(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 gm=new hm(1,0,0);_m.prototype=hm.prototype;function _m(e){for(;!e.__zoom;)if(!(e=e.parentNode))return gm;return e.__zoom}function vm(e){e.stopImmediatePropagation()}function ym(e){e.preventDefault(),e.stopImmediatePropagation()}function bm(e){return(!e.ctrlKey||e.type===`wheel`)&&!e.button}function xm(){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 Sm(){return this.__zoom||gm}function Cm(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function wm(){return navigator.maxTouchPoints||`ontouchstart`in this}function Tm(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 Em(){var e=bm,t=xm,n=Tm,r=Cm,i=wm,a=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],s=250,c=Df,l=Gc(`start`,`zoom`,`end`),u,d,f,p=500,m=150,h=0,g=10;function _(e){e.property(`__zoom`,Sm).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`,Sm),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(gm.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 hm(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 hm(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 hm(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=Ju(this.that).datum();l.call(e,this.that,new mm(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=Xu(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)],np(this),s.start();ym(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=Ju(t.view).on(`mousemove.zoom`,d,!0).on(`mouseup.zoom`,p,!0),c=Xu(t,i),l=t.clientX,u=t.clientY;td(t.view),vm(t),a.mouse=[c,this.__zoom.invert(c)],np(this),a.start();function d(e){if(ym(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]=Xu(e,i),a.mouse[1]),a.extent,o))}function p(e){s.on(`mousemove.zoom mouseup.zoom`,null),nd(e.view,a.moved),ym(e),a.event(e).end()}}function ee(r,...i){if(e.apply(this,arguments)){var a=this.__zoom,c=Xu(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);ym(r),s>0?Ju(this).transition().duration(s).call(x,d,c,r):Ju(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(vm(t),s=0;s<i;++s)c=r[s],l=Xu(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)),np(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(ym(e),s=0;s<a;++s)c=i[s],l=Xu(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(vm(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=Xu(o,this),Math.hypot(d[0]-o[0],d[1]-o[1])<g)){var s=Ju(this).on(`dblclick.zoom`);s&&s.apply(this,arguments)}}}return _.wheelDelta=function(e){return arguments.length?(r=typeof e==`function`?e:pm(+e),_):r},_.filter=function(t){return arguments.length?(e=typeof t==`function`?t:pm(!!t),_):e},_.touchable=function(e){return arguments.length?(i=typeof e==`function`?e:pm(!!e),_):i},_.extent=function(e){return arguments.length?(t=typeof e==`function`?e:pm([[+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 Dm={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.`},Om=[[-1/0,-1/0],[1/0,1/0]],km=[`Enter`,` `,`Escape`],Am={"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`},jm;(function(e){e.Strict=`strict`,e.Loose=`loose`})(jm||={});var Mm;(function(e){e.Free=`free`,e.Vertical=`vertical`,e.Horizontal=`horizontal`})(Mm||={});var Nm;(function(e){e.Partial=`partial`,e.Full=`full`})(Nm||={});var Pm={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null},Fm;(function(e){e.Bezier=`default`,e.Straight=`straight`,e.Step=`step`,e.SmoothStep=`smoothstep`,e.SimpleBezier=`simplebezier`})(Fm||={});var Im;(function(e){e.Arrow=`arrow`,e.ArrowClosed=`arrowclosed`})(Im||={});var Lm;(function(e){e.Left=`left`,e.Top=`top`,e.Right=`right`,e.Bottom=`bottom`})(Lm||={});var Rm={[Lm.Left]:Lm.Right,[Lm.Right]:Lm.Left,[Lm.Top]:Lm.Bottom,[Lm.Bottom]:Lm.Top},zm=e=>!!e&&typeof e==`object`&&`id`in e&&`source`in e&&`target`in e,Bm=e=>!!e&&typeof e==`object`&&`id`in e&&`position`in e&&!(`source`in e)&&!(`target`in e),Vm=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}=Sh(e),i=e.origin??t,a=n*i[0],o=r*i[1];return{x:e.position.x-a,y:e.position.y-o}},Um=(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):Vm(r)?r:t.nodeLookup.get(r.id)),a?(n=!0,nh(e,oh(a,t.nodeOrigin))):e},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return n?ih(r):{x:0,y:0,width:0,height:0}},Wm=(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=nh(n,oh(e)),r=!0)}),r?ih(n):{x:0,y:0,width:0,height:0}},Gm=(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=ch(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},Km=(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 qm(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}=Sh(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 Jm({nodes:e,width:t,height:n,panZoom:r,minZoom:i,maxZoom:a},o){if(e.size===0)return!0;let s=yh(Wm(qm(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 Ym({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`,Dm.error005());else{let{width:e,height:t}=Sh(s);e&&t&&(d=[[c,l],[c+e,l+t]])}}else s&&xh(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=xh(d)?Qm(t,d,o.measured):t;return(o.measured.width===void 0||o.measured.height===void 0)&&a?.(`015`,Dm.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 Xm({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=Km(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 Zm=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),Qm=(e={x:0,y:0},t,n)=>({x:Zm(e.x,t[0][0],t[1][0]-(n?.width??0)),y:Zm(e.y,t[0][1],t[1][1]-(n?.height??0))});function $m(e,t,n){let{width:r,height:i}=Sh(n),{x:a,y:o}=n.internals.positionAbsolute;return Qm(e,[[a,o],[a+r,o+i]],t)}var eh=(e,t,n)=>e<t?Zm(Math.abs(e-t),1,t)/t:e>n?-Zm(Math.abs(e-n),1,t)/t:0,th=(e,t,n=15,r=40)=>[eh(e.x,r,t.width-r)*n,eh(e.y,r,t.height-r)*n],nh=(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)}),rh=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),ih=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),ah=(e,t=[0,0])=>{let{x:n,y:r}=Vm(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}},oh=(e,t=[0,0])=>{let{x:n,y:r}=Vm(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)}},sh=(e,t)=>ih(nh(rh(e),rh(t))),ch=(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)},lh=(e,t)=>ch(e.x,e.y,e.width,e.height,t.x,t.y,t.width,t.height),uh=e=>dh(e.width)&&dh(e.height)&&dh(e.x)&&dh(e.y),dh=e=>!isNaN(e)&&isFinite(e),fh=(e,t)=>(e,t)=>{},ph=(e,t=[1,1])=>({x:t[0]*Math.round(e.x/t[0]),y:t[1]*Math.round(e.y/t[1])}),mh=({x:e,y:t},[n,r,i],a=!1,o=[1,1])=>{let s={x:(e-n)/i,y:(t-r)/i};return a?ph(s,o):s},hh=({x:e,y:t},[n,r,i])=>({x:e*i+n,y:t*i+r});function gh(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 _h(e,t,n){if(typeof e==`string`||typeof e==`number`){let r=gh(e,n),i=gh(e,t);return{top:r,right:i,bottom:r,left:i,x:i*2,y:r*2}}if(typeof e==`object`){let r=gh(e.top??e.y??0,n),i=gh(e.bottom??e.y??0,n),a=gh(e.left??e.x??0,t),o=gh(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 vh(e,t,n,r,i,a){let{x:o,y:s}=hh(e,[t,n,r]),{x:c,y:l}=hh({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 yh=(e,t,n,r,i,a)=>{let o=_h(a,t,n),s=(t-o.x)/e.width,c=(n-o.y)/e.height,l=Zm(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=vh(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}},bh=()=>typeof navigator<`u`&&navigator?.userAgent?.indexOf(`Mac`)>=0;function xh(e){return e!=null&&e!==`parent`}function Sh(e){return{width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}}function Ch(e){return(e.measured?.width??e.width??e.initialWidth)!==void 0&&(e.measured?.height??e.height??e.initialHeight)!==void 0}function wh(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 Th(e){return{...Am,...e||{}}}function Eh(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 Dh(e,t,n){if(!n)return;let r=[];e.forEach((e,n)=>{t?.has(n)||r.push(e)}),r.length&&n(r)}function Oh(e){return e===null?null:e?`valid`:`invalid`}function kh(e,{snapGrid:t=[0,0],snapToGrid:n=!1,transform:r,containerBounds:i}){let{x:a,y:o}=Fh(e),s=mh({x:a-(i?.left??0),y:o-(i?.top??0)},r),{x:c,y:l}=n?ph(s,t):s;return{xSnapped:c,ySnapped:l,...s}}var Ah=e=>({width:e.offsetWidth,height:e.offsetHeight}),jh=e=>e?.getRootNode?.()||window?.document,Mh=[`INPUT`,`SELECT`,`TEXTAREA`];function Nh(e){let t=e.composedPath?.()?.[0]||e.target;return t?.nodeType===1?Mh.includes(t.nodeName)||t.hasAttribute(`contenteditable`)||!!t.closest(`.nokey`):!1}var Ph=e=>`clientX`in e,Fh=(e,t)=>{let n=Ph(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)}},Ih=(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,...Ah(t)}})};function Lh({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 Rh(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function zh({pos:e,x1:t,y1:n,x2:r,y2:i,c:a}){switch(e){case Lm.Left:return[t-Rh(t-r,a),n];case Lm.Right:return[t+Rh(r-t,a),n];case Lm.Top:return[t,n-Rh(n-i,a)];case Lm.Bottom:return[t,n+Rh(i-n,a)]}}function Bh({sourceX:e,sourceY:t,sourcePosition:n=Lm.Bottom,targetX:r,targetY:i,targetPosition:a=Lm.Top,curvature:o=.25}){let[s,c]=zh({pos:n,x1:e,y1:t,x2:r,y2:i,c:o}),[l,u]=zh({pos:a,x1:r,y1:i,x2:e,y2:t,c:o}),[d,f,p,m]=Lh({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 Vh({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 Uh({sourceNode:e,targetNode:t,width:n,height:r,transform:i}){let a=nh(oh(e),oh(t));return a.x===a.x2&&(a.x2+=1),a.y===a.y2&&(a.y2+=1),lh({x:-i[0]/i[2],y:-i[1]/i[2],width:n/i[2],height:r/i[2]},ih(a))>0}var Wh=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`xy-edge__${e}${t||``}-${n}${r||``}`,Gh=(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)),Kh=(e,t,n={})=>{if(!e.source||!e.target)return n.onError?.(`006`,Dm.error006()),t;let r=n.getEdgeId||Wh,i;return i=zm(e)?{...e}:{...e,id:r(e)},Gh(i,t)?t:(i.sourceHandle===null&&delete i.sourceHandle,i.targetHandle===null&&delete i.targetHandle,t.concat(i))};function qh({sourceX:e,sourceY:t,targetX:n,targetY:r}){let[i,a,o,s]=Vh({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,i,a,o,s]}var Jh={[Lm.Left]:{x:-1,y:0},[Lm.Right]:{x:1,y:0},[Lm.Top]:{x:0,y:-1},[Lm.Bottom]:{x:0,y:1}},Yh=({source:e,sourcePosition:t=Lm.Bottom,target:n})=>t===Lm.Left||t===Lm.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},Xh=(e,t)=>Math.sqrt((t.x-e.x)**2+(t.y-e.y)**2);function Zh({source:e,sourcePosition:t=Lm.Bottom,target:n,targetPosition:r=Lm.Top,center:i,offset:a,stepPosition:o}){let s=Jh[t],c=Jh[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=Yh({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]=Vh({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 Qh(e,t,n,r){let i=Math.min(Xh(e,t)/2,Xh(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 $h({sourceX:e,sourceY:t,sourcePosition:n=Lm.Bottom,targetX:r,targetY:i,targetPosition:a=Lm.Top,borderRadius:o=5,centerX:s,centerY:c,offset:l=20,stepPosition:u=.5}){let[d,f,p,m,h]=Zh({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+=Qh(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 eg(e){return e&&!!(e.internals.handleBounds||e.handles?.length)&&!!(e.measured.width||e.width||e.initialWidth)}function tg(e){let{sourceNode:t,targetNode:n}=e;if(!eg(t)||!eg(n))return null;let r=t.internals.handleBounds||ng(t.handles),i=n.internals.handleBounds||ng(n.handles),a=ig(r?.source??[],e.sourceHandle),o=ig(e.connectionMode===jm.Strict?i?.target??[]:(i?.target??[]).concat(i?.source??[]),e.targetHandle);if(!a||!o)return e.onError?.(`008`,Dm.error008(a?`target`:`source`,{id:e.id,sourceHandle:e.sourceHandle,targetHandle:e.targetHandle})),null;let s=a?.position||Lm.Bottom,c=o?.position||Lm.Top,l=rg(t,a,s),u=rg(n,o,c);return{sourceX:l.x,sourceY:l.y,targetX:u.x,targetY:u.y,sourcePosition:s,targetPosition:c}}function ng(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 rg(e,t,n=Lm.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??Sh(e);if(r)return{x:i+o/2,y:a+s/2};switch(t?.position??n){case Lm.Top:return{x:i+o/2,y:a};case Lm.Right:return{x:i+o,y:a+s/2};case Lm.Bottom:return{x:i+o/2,y:a+s};case Lm.Left:return{x:i,y:a+s/2}}}function ig(e,t){return e&&(t?e.find(e=>e.id===t):e[0])||null}function ag(e,t){return e?typeof e==`string`?e:`${t?`${t}__`:``}${Object.keys(e).sort().map(t=>`${t}=${e[t]}`).join(`&`)}`:``}function og(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=ag(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 sg(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 Lm.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 Lm.Bottom:o[1]=(e.y+e.height)*t.zoom+t.y+r,s[1]=0;break;case Lm.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 cg=1e3,lg=10,ug={nodeOrigin:[0,0],nodeExtent:Om,elevateNodesOnSelect:!0,zIndexMode:`basic`,defaults:{}},dg={...ug,checkEquality:!0};function fg(e,t){let n={...e};for(let e in t)t[e]!==void 0&&(n[e]=t[e]);return n}function pg(e,t,n){let r=fg(ug,n);for(let n of e.values())if(n.parentId)vg(n,e,t,r);else{let e=Qm(Hm(n,r.nodeOrigin),xh(n.extent)?n.extent:r.nodeExtent,Sh(n));n.internals.positionAbsolute=e}}function mg(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 hg(e){return e===`manual`}function gg(e,t,n,r={}){let i=fg(dg,r),a={i:0},o=new Map(t),s=i?.elevateNodesOnSelect&&!hg(i.zIndexMode)?cg: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=Qm(Hm(u,i.nodeOrigin),xh(u.extent)?u.extent:i.nodeExtent,Sh(u));e={...i.defaults,...u,measured:{width:u.measured?.width,height:u.measured?.height},internals:{positionAbsolute:n,handleBounds:mg(u,e),z:yg(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&&vg(e,t,n,r,a),l||=u.selected??!1}return{nodesInitialized:c,hasSelectedNodes:l}}function _g(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 vg(e,t,n,r,i){let{elevateNodesOnSelect:a,nodeOrigin:o,nodeExtent:s,zIndexMode:c}=fg(ug,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}_g(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*lg),i&&u.internals.rootParentIndex!==void 0&&(i.i=u.internals.rootParentIndex);let{x:d,y:f,z:p}=bg(e,u,o,s,a&&!hg(c)?cg: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 yg(e,t,n){let r=dh(e.zIndex)?e.zIndex:0;return hg(n)?r:r+(e.selected?t:0)}function bg(e,t,n,r,i,a){let{x:o,y:s}=t.internals.positionAbsolute,c=Sh(e),l=Hm(e,n),u=xh(e.extent)?Qm(l,e.extent,c):l,d=Qm({x:o+u.x,y:s+u.y},r,c);e.extent===`parent`&&(d=$m(d,c,t));let f=yg(e,i,a),p=t.internals.z??0;return{x:d.x,y:d.y,z:p>=f?p+1:f}}function xg(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=sh(a.get(n.parentId)?.expandedRect??ah(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=Sh(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 Sg(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=Ah(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=xh(e.extent)?e.extent:a,{positionAbsolute:h}=e.internals;if(e.parentId&&e.extent===`parent`){let n=t.get(e.parentId);n&&(h=$m(h,s,n))}else m&&(h=Qm(h,m,s));let g={...e,measured:s,internals:{...e.internals,positionAbsolute:h,handleBounds:{source:Ih(`source`,r.nodeElement,p,d,e.id),target:Ih(`target`,r.nodeElement,p,d,e.id)}}};t.set(e.id,g),e.parentId&&vg(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:ah(g,i)}))}}if(f.length>0){let e=xg(f,t,n,i);l.push(...e)}return{changes:l,updatedInternals:c}}async function Cg({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 wg(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 Tg(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}`;wg(`source`,s,`${i}-${o}--${n}-${a}`,e,n,a),wg(`target`,s,c,e,i,o),t.set(r.id,r)}}function Eg(e,t){if(!e.parentId)return!1;let n=t.get(e.parentId);return n?n.selected?!0:Eg(n,t):!1}function Dg(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 Og(e,t,n,r){let i=new Map;for(let[a,o]of e)if((o.selected||o.id===r)&&(!o.parentId||!Eg(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 kg({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 Ag({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=ph(a,t);return{x:o.x-a.x,y:o.y-a.y}}function jg({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=Ju(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?rh(Wm(s)):null,x=v&&l?Ag({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)}:ph(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}=Ym({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]=kg({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]=th(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=kh(r.sourceEvent,{transform:l,snapGrid:f,snapToGrid:p,containerBounds:u});if(a=v,s=Og(i,c,v,b),s.size>0&&(n||h||!b&&g)){let[e,t]=kg({nodeId:b,dragItems:s,nodeLookup:i});n?.(r.sourceEvent,s,e,t),h?.(r.sourceEvent,e,t),b||g?.(r.sourceEvent,t)}}let T=ld().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=kh(e.sourceEvent,{transform:i,snapGrid:o,snapToGrid:s,containerBounds:u}),l=Fh(e.sourceEvent,u)}).on(`drag`,e=>{let{autoPanOnNodeDrag:n,transform:r,snapGrid:i,snapToGrid:o,nodeDragThreshold:f,nodeLookup:m}=t(),g=kh(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=Fh(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=Fh(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]=kg({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||!Dg(t,`.${g}`,v))&&(!_||Dg(t,_,v))});f.call(T)}function _(){f?.on(`.drag`,null)}return{update:g,destroy:_}}function Mg(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())lh(i,ah(e))>0&&r.push(e);return r}var Ng=250;function Pg(e,t,n,r){let i=[],a=1/0,o=Mg(e,n,t+Ng);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}=rg(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 Fg(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,...rg(o,c,c.position,!0)}:c}function Ig(e,t){return e||(t?.classList.contains(`target`)?`target`:t?.classList.contains(`source`)?`source`:null)}function Lg(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}var Rg=()=>!0;function zg(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:_=Rg,onReconnectEnd:v,updateConnection:y,getTransform:b,getFromHandle:x,autoPanSpeed:S,dragThreshold:C=1,handleDomNode:w}){let T=jh(e.target),ee=0,te,{x:E,y:ne}=Fh(e),D=Ig(a,w),re=s?.getBoundingClientRect(),ie=!1;if(!re||!D)return;let ae=Fg(i,D,r,c,t);if(!ae)return;let oe=Fh(e,re),se=!1,ce=null,le=!1,ue=null;function de(){if(!u||!re)return;let[e,t]=th(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:rg(pe,fe,Lm.Left,!0),fromHandle:fe,fromPosition:fe.position,fromNode:pe,to:oe,toHandle:null,toPosition:Rm[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}=Fh(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=Fh(e,re),te=Pg(mh(oe,a,!1,[1,1]),n,c,fe),se||=(de(),!0);let s=Bg(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=Lg(!!te,s.isValid);let u=c.get(i),f=u?rg(u,fe,Lm.Left,!0):me.from,p={...me,from:f,isValid:le,to:s.toHandle&&le?hh({x:s.toHandle.x,y:s.toHandle.y},a):oe,toHandle:s.toHandle,toPosition:le&&s.toHandle?s.toHandle.position:Rm[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 Bg(e,{handle:t,connectionMode:n,fromNodeId:r,fromHandleId:i,fromType:a,doc:o,lib:s,flowId:c,isValidConnection:l=Rg,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}=Fh(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=Ig(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===jm.Strict?d&&e===`source`||!d&&e===`target`:t!==r||a!==i)&&l(c),_.toHandle=Fg(t,e,a,u,n,!0)}return _}var Vg={onPointerDown:zg,isValid:Bg};function Hg({domNode:e,panZoom:t,getTransform:n,getViewScale:r}){let i=Ju(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&&bh()?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=Em().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:Xu}}var Ug=e=>({x:e.x,y:e.y,zoom:e.k}),Wg=({x:e,y:t,zoom:n})=>gm.translate(e,t).scale(n),Gg=(e,t)=>e.target.closest(`.${t}`),Kg=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),qg=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2,Jg=(e,t=0,n=qg,r=()=>{})=>{let i=typeof t==`number`&&t>0;return i||r(),i?e.transition().duration(t).ease(n).on(`end`,r):e},Yg=e=>{let t=e.ctrlKey&&bh()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t};function Xg({zoomPanValues:e,noWheelClassName:t,d3Selection:n,d3Zoom:r,panOnScrollMode:i,panOnScrollSpeed:a,zoomOnPinch:o,onPanZoomStart:s,onPanZoom:c,onPanZoomEnd:l}){return u=>{if(Gg(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=Xu(u),t=d*2**Yg(u);r.scaleTo(n,t,e,u);return}let f=u.deltaMode===1?20:1,p=i===Mm.Vertical?0:u.deltaX*f,m=i===Mm.Horizontal?0:u.deltaY*f;!bh()&&u.shiftKey&&i!==Mm.Vertical&&(p=u.deltaY*f,m=0),r.translateBy(n,-(p/d)*a,-(m/d)*a,{internal:!0});let h=Ug(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 Zg({noWheelClassName:e,preventScrolling:t,d3ZoomHandler:n}){return function(r,i){let a=r.type===`wheel`,o=!t&&a&&!r.ctrlKey,s=Gg(r,e);if(r.ctrlKey&&a&&s&&r.preventDefault(),o||s)return null;r.preventDefault(),n.call(this,r,i)}}function Qg({zoomPanValues:e,onDraggingChange:t,onPanZoomStart:n}){return r=>{if(r.sourceEvent?.internal)return;let i=Ug(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 $g({zoomPanValues:e,panOnDrag:t,onPaneContextMenu:n,onTransformChange:r,onPanZoom:i}){return a=>{e.usedRightMouseButton=!!(n&&Kg(t,e.mouseButton??0)),a.sourceEvent?.sync||r([a.transform.x,a.transform.y,a.transform.k]),i&&!a.sourceEvent?.internal&&i?.(a.sourceEvent,Ug(a.transform))}}function e_({zoomPanValues:e,panOnDrag:t,panOnScroll:n,onDraggingChange:r,onPanZoomEnd:i,onPaneContextMenu:a}){return o=>{if(!o.sourceEvent?.internal&&(e.isZoomingOrPanning=!1,a&&Kg(t,e.mouseButton??0)&&!e.usedRightMouseButton&&o.sourceEvent&&a(o.sourceEvent),e.usedRightMouseButton=!1,r(!1),i)){let t=Ug(o.transform);e.prevViewport=t,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{i?.(o.sourceEvent,t)},n?150:0)}}}function t_({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`&&(Gg(f,`${u}-flow__node`)||Gg(f,`${u}-flow__edge`)||Gg(f,`${u}-flow__selection`)||Gg(f,`${u}-flow__nodesselection`)))return!0;if(!i&&!p&&!a&&!o&&!r||s||d&&!h||Gg(f,c)&&h||Gg(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 n_({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=Em().extent(()=>d).scaleExtent([t,n]).translateExtent(r),p=Ju(e).call(f);y({x:i.x,y:i.y,zoom:Zm(i.zoom,t,n)},[[0,0],[u.width,u.height]],r);let m=p.on(`wheel.zoom`),h=p.on(`dblclick.zoom`);f.wheelDelta(Yg);async function g(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?pf:Df).transform(Jg(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:!dh(te)||te<0?0:te);let D=ne?Xg({zoomPanValues:l,noWheelClassName:e,d3Selection:p,d3Zoom:f,panOnScrollMode:d,panOnScrollSpeed:g,zoomOnPinch:y,onPanZoomStart:o,onPanZoom:a,onPanZoomEnd:s}):Zg({noWheelClassName:e,preventScrolling:_,d3ZoomHandler:m});p.on(`wheel.zoom`,D,{passive:!1});let re=Qg({zoomPanValues:l,onDraggingChange:c,onPanZoomStart:o});f.on(`start`,re);let ie=$g({zoomPanValues:l,panOnDrag:u,onPaneContextMenu:!!n,onPanZoom:a,onTransformChange:T});f.on(`zoom`,ie);let ae=e_({zoomPanValues:l,panOnDrag:u,panOnScroll:i,onPaneContextMenu:n,onPanZoomEnd:s,onDraggingChange:c});f.on(`end`,ae);let oe=t_({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=Wg(e),i=f?.constrain()(r,t,n);return i&&await g(i),i}async function b(e,t){let n=Wg(e);return await g(n,t),n}function x(e){if(p){let t=Wg(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?_m(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`?pf:Df).scaleTo(Jg(p,t?.duration,t?.ease,()=>n(!0)),e)}):!1}async function w(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?pf:Df).scaleBy(Jg(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=!dh(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 r_;(function(e){e.Line=`line`,e.Handle=`handle`})(r_||={});var i_=fh(`Svelte Flow`,`https://svelteflow.dev/`);function a_(e,t,n={}){return Kh(e,t,{...n,onError:n.onError??i_})}function o_(){let e={};return[t=>{if(t&&!at(e))throw Error(t);return rt(e)},t=>it(e,t)]}var[s_,c_]=o_(),[l_,u_]=o_(),[d_,f_]=o_(),p_=new Set([`$$slots`,`$$events`,`$$legacy`,`id`,`type`,`position`,`style`,`class`,`isConnectable`,`isConnectableStart`,`isConnectableEnd`,`isValidConnection`,`onconnect`,`ondisconnect`,`children`]),m_=U(`<div><!></div>`);function h_(e,t){A(t,!0);let n=X(t,`id`,3,null),r=X(t,`type`,3,`source`),i=X(t,`position`,19,()=>Lm.Top),a=X(t,`isConnectableStart`,3,!0),o=X(t,`isConnectableEnd`,3,!0),s=La(t,p_),c=s_(`Handle must be used within a Custom Node component`),l=l_(`Handle must be used within a Custom Node component`),u=M(()=>r()===`target`),d=M(()=>t.isConnectable===void 0?l.value:t.isConnectable),p=iv(),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&&!Eh(e,h)){let n=e??new Map;Dh(h,n,t.ondisconnect),Dh(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===jm.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=Ph(e);e.currentTarget&&(r&&e.button===0||!r)&&Vg.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=jh(e.target),o=t.isValidConnection??p.isValidConnection,{connectionMode:s,clickConnectStartHandle:l,flowId:u,nodeLookup:d}=p,{connection:f,isValid:m}=Vg.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=m_(),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 g_=U(`<!> <!>`,1);function __(e,t){A(t,!0);let n=X(t,`targetPosition`,19,()=>Lm.Top),r=X(t,`sourcePosition`,19,()=>Lm.Bottom);var i=g_(),a=I(i);h_(a,{type:`target`,get position(){return n()}});var o=R(a);h_(R(o),{type:`source`,get position(){return r()}}),z(()=>G(o,` ${t.data?.label??``} `)),W(e,i),j()}var v_=U(` <!>`,1);function y_(e,t){A(t,!0);let n=X(t,`data`,19,()=>({label:`Node`})),r=X(t,`sourcePosition`,19,()=>Lm.Bottom);Ae();var i=v_(),a=I(i);h_(R(a),{type:`source`,get position(){return r()}}),z(()=>G(a,`${n()?.label??``} `)),W(e,i),j()}var b_=U(` <!>`,1);function x_(e,t){A(t,!0);let n=X(t,`data`,19,()=>({label:`Node`})),r=X(t,`targetPosition`,19,()=>Lm.Top);Ae();var i=b_(),a=I(i);h_(R(a),{type:`target`,get position(){return r()}}),z(()=>G(a,`${n()?.label??``} `)),W(e,i),j()}function S_(e,t){}function C_(e,t,n){if(!n||!t)return;let r=n===`root`?t:t.querySelector(`.svelte-flow__${n}`);r&&r.appendChild(e)}function w_(e,t){let n=M(iv),r=M(()=>B(n).domNode),i;return B(r)?C_(e,B(r),t):i=Rn(()=>{Fn(()=>{C_(e,B(r),t),i?.()})}),{async update(t){C_(e,B(r),t)},destroy(){e.parentNode&&e.parentNode.removeChild(e),i?.()}}}function T_(){let e=N(typeof window>`u`);if(B(e)){let t=Rn(()=>{Fn(()=>{P(e,!1),t?.()})})}return{get value(){return B(e)}}}var E_=e=>Bm(e),D_=e=>zm(e);function O_(e){return e===void 0?void 0:`${e}px`}var k_={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},A_=new Set([`$$slots`,`$$events`,`$$legacy`,`x`,`y`,`width`,`height`,`selectEdgeOnClick`,`transparent`,`class`,`children`]),j_=U(`<div><!></div>`);function M_(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,A_),s=iv(),c=d_(`EdgeLabel must be used within a Custom Edge component`),l=M(()=>s.visible.edges.get(c)?.zIndex);var u=j_(),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)}}),[()=>T_().value?`none`:void 0,()=>O_(t.width),()=>O_(t.height)],void 0,void 0,`svelte-1wg91mu`),Pi(F(u),()=>t.children??f),k(u),Li(u,(e,t)=>w_?.(e,t),()=>`edge-labels`),W(e,u),j()}var N_=new Set([`$$slots`,`$$events`,`$$legacy`,`id`,`path`,`label`,`labelX`,`labelY`,`labelStyle`,`markerStart`,`markerEnd`,`style`,`interactionWidth`,`class`]),P_=ai(`<path></path>`),F_=ai(`<path fill="none"></path><!><!>`,1);function I_(e,t){let n=X(t,`interactionWidth`,3,20),r=La(t,N_);var i=F_(),a=I(i),o=R(a),s=e=>{var i=P_();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=>{M_(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 L_(e,t){A(t,!0);let n=M(()=>Bh({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]);I_(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 R_(e,t){A(t,!0);let n=M(()=>$h({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]);I_(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 z_(e,t){A(t,!0);let n=M(()=>qh({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]);I_(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 B_(e,t){A(t,!0);let n=M(()=>$h({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]);I_(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 V_=[`forEach`,`isDisjointFrom`,`isSubsetOf`,`isSupersetOf`],H_=[`difference`,`intersection`,`symmetricDifference`,`union`],U_=!1,W_=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}U_||this.#a()}#i(e){return yr===this.#r?N(e):rn(e)}#a(){U_=!0;var t=e.prototype,n=Set.prototype;for(let e of V_)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)}},G_=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}},K_=class{#e;#t;constructor(e,t){this.#e=e,this.#t=li(t)}get current(){return this.#t(),this.#e()}},q_=/\(.+\)/,J_=new Set([`all`,`print`,`screen`,`and`,`or`,`not`,`only`]),Y_=class extends K_{constructor(e,t){let n=q_.test(e)||e.split(/[\s,]+/).some(e=>J_.has(e.trim()))?e:`(${e})`,r=window.matchMedia(n);super(()=>r.matches,e=>Yr(r,`change`,e))}};function X_(e,t,n,r){let i=new Map;return Gm(e,{x:0,y:0,width:n,height:r},t,!0).forEach(e=>{i.set(e.id,e)}),i}function Z_(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(Uh({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=tg({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 Q_=fh(`Svelte Flow`,`https://svelteflow.dev/`),$_={input:y_,output:x_,default:__,group:S_},ev={straight:z_,smoothstep:R_,default:L_,step:B_};function tv(e,t,n,r,i,a){return t&&!n&&r&&i?yh(Wm(a,{filter:e=>!(!e.width&&!e.initialWidth||!e.height&&!e.initialHeight)}),r,i,.5,2,.1):n??{x:0,y:0,zoom:1}}function nv(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}=gg(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(()=>(Tg(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=X_(i,r,t,n),d=Z_({...f,onlyRenderVisible:!0,visibleNodes:u,transform:r,width:t,height:n})}else u=this.nodeLookup,d=Z_(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??Om);get nodeExtent(){return B(this.#x)}set nodeExtent(e){P(this.#x,e)}#S=M(()=>e.props.translateExtent??Om);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??Nm.Partial);get selectionMode(){return B(this.#B)}set selectionMode(e){P(this.#B,e)}#V=M(()=>({...$_,...e.props.nodeTypes}));get nodeTypes(){return B(this.#V)}set nodeTypes(e){P(this.#V,e)}#H=M(()=>({...ev,...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(()=>Th(e.props.ariaLabelConfig));get ariaLabelConfig(){return B(this.#K)}set ariaLabelConfig(e){P(this.#K,e)}#q=N(tv(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(Pm);get _connection(){return B(this.#J)}set _connection(e){P(this.#J,e)}#Y=M(()=>this._connection.inProgress?{...this._connection,to:mh(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??jm.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(()=>og(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??Q_);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 Jm({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 Y_(`(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=Pm,this.clickConnectStartHandle=null,this.viewport=e.props.initialViewport??{x:0,y:0,zoom:1},this.ariaLiveMessage=``}}return new t}var rv=Dm.error001(`svelte`);function iv(){let e=rt(av);if(!e)throw Error(rv);return e.getStore()}var av=Symbol();function ov(e){let t=nv(e);function n(e){t.nodeTypes={...$_,...e}}function r(e){t.edgeTypes={...ev,...e}}function i(e){t.edges=a_(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:rg(e,t.connection.fromHandle,Lm.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}=Sg(e,t.nodeLookup,t.parentLookup,t.domNode,t.nodeOrigin,t.nodeExtent,t.zIndexMode);if(!r)return;pg(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`,Dm.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`,Dm.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=ph(t,i));let{position:n,positionAbsolute:a}=Ym({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 Cg({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=Pm}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 sv(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=n_({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 cv=U(`<div class="svelte-flow__zoom svelte-flow__container"><!></div>`);function lv(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=cv();Pi(F(s),()=>t.children),k(s),Li(s,(e,t)=>sv?.(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 uv(e,t){return n=>{n.target===t&&e?.(n)}}function dv(e){return t=>{let n=e.has(t.id);return!!t.selected===n?t:{...t,selected:n}}}function fv(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}var pv=U(`<div><!></div>`);function mv(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}=Fh(e,s),u=mh({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=hh(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(Gm(n().nodeLookup,a,[n().viewport.x,n().viewport.y,n().viewport.zoom],n().selectionMode===Nm.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)}}fv(o,l)||n(n().nodes=n().nodes.map(dv(l)),!0),fv(s,u)||n(n().edges=n().edges.map(dv(u)),!0),n(n().selectionRectMode=`user`,!0),n(n().selectionRect=a,!0)}function b(){if(!a()||!s)return;let[e,t]=th(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=Fh(e,s);g={x:r.x,y:r.y};let a=hh({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=pv();let ne;var D=M(()=>B(p)?void 0:uv(te,o)),re=M(()=>uv(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 hv=U(`<div class="svelte-flow__viewport xyflow__viewport svelte-flow__container"><!></div>`);function gv(e,t){A(t,!0);var n=hv();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 _v(e,t){let{store:n,onDrag:r,onDragStart:i,onDragStop:a,onNodeMouseDown:o}=t,s=jg({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 vv=U(`<div aria-live="assertive" aria-atomic="true" class="a11y-live-msg svelte-13pq11u"> </div>`),yv=U(`<div class="a11y-hidden svelte-13pq11u"> </div> <div class="a11y-hidden svelte-13pq11u"> </div> <!>`,1);function bv(e,t){A(t,!0);var n=yv(),r=I(n),i=L(r,!0),a=R(r,2),o=L(a,!0),s=R(a,2),c=e=>{var n=vv(),r=L(n,!0);z(()=>{Y(n,`id`,`${Cv}-${t.store.flowId}`),G(r,t.store.ariaLiveMessage)}),W(e,n)};K(s,e=>{t.store.disableKeyboardA11y||e(c)}),z(()=>{Y(r,`id`,`${xv}-${t.store.flowId}`),G(i,t.store.disableKeyboardA11y?t.store.ariaLabelConfig[`node.a11yDescription.default`]:t.store.ariaLabelConfig[`node.a11yDescription.keyboardDisabled`]),Y(a,`id`,`${Sv}-${t.store.flowId}`),G(o,t.store.ariaLabelConfig[`edge.a11yDescription.default`])}),W(e,n),j()}var xv=`svelte-flow__node-desc`,Sv=`svelte-flow__edge-desc`,Cv=`svelte-flow__aria-live`,wv=U(`<div><!></div>`);function Tv(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(()=>Ch(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)]??__),ve=M(()=>n().ariaLabelConfig);c_(D),u_({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:${O_(e)};`:``}${t?`height:${O_(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(!(Nh(e)||n().disableKeyboardA11y)){if(km.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(k_,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(k_[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();Gm(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=wv();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:`${xv}-${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)=>_v?.(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 Ev=U(`<div class="svelte-flow__nodes"></div>`);function Dv(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=Ev();q(i,21,()=>n().visible.nodes.values(),e=>e.id,(e,i)=>{Tv(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 Ov=ai(`<svg class="svelte-flow__edge-wrapper"><g><!></g></svg>`);function kv(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);f_(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)]??L_),se=M(()=>B(S)?`url('#${ag(B(S),t.store.flowId)}')`:void 0),ce=M(()=>B(C)?`url('#${ag(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&&km.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 _=Ov();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)?`${Sv}-${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 Av=ai(`<defs></defs>`);function jv(e,t){A(t,!1);let n=iv();Ma();var r=Av();q(r,5,()=>n.markers,e=>e.id,(e,t)=>{Fv(e,za(()=>B(t)))}),k(r),W(e,r),j()}var Mv=ai(`<polyline class="arrow" fill="none" stroke-linecap="round" stroke-linejoin="round" points="-5,-4 0,0 -5,4"></polyline>`),Nv=ai(`<polyline class="arrowclosed" stroke-linecap="round" stroke-linejoin="round" points="-5,-4 0,0 -5,4 -5,-4"></polyline>`),Pv=ai(`<marker class="svelte-flow__arrowhead" viewBox="-10 -10 20 20" refX="0" refY="0"><!></marker>`);function Fv(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=Pv(),c=F(s),l=e=>{var n=Mv();let r;z(()=>{Y(n,`stroke-width`,t.strokeWidth),r=Ji(n,``,r,{stroke:o()})}),W(e,n)},u=e=>{var n=Nv();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===Im.Arrow?e(l):t.type===Im.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 Iv=U(`<div class="svelte-flow__edges"><svg class="svelte-flow__marker"><!></svg> <!></div>`);function Lv(e,t){A(t,!0);let n=X(t,`store`,15);var r=Iv(),i=F(r);jv(F(i),{}),k(i),q(R(i,2),17,()=>n().visible.edges.values(),e=>e.id,(e,r)=>{kv(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 Rv=U(`<div class="svelte-flow__selection svelte-1vr3gfi"></div>`);function zv(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=Rv();let o;z((e,i)=>o=Ji(t,``,o,{width:e,height:i,transform:`translate(${n()}px, ${r()}px)`}),[()=>typeof i()==`string`?i():O_(i()),()=>typeof a()==`string`?a():O_(a())]),W(e,t)};K(c,e=>{o()&&e(l)}),W(e,s),j()}var Bv=U(`<div><!></div>`);function Vv(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=Wm(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(k_,e.key)&&(e.preventDefault(),t.store.moveSelectedNodes(k_[e.key],e.shiftKey?4:1))}var s=si(),c=I(s),l=e=>{var s=Bv();let c;zv(F(s),{width:`100%`,height:`100%`,x:0,y:0}),k(s),Li(s,(e,t)=>_v?.(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)`})},[()=>O_(B(r).width),()=>O_(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)&&dh(B(r).x)&&dh(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 Uv(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 Wv(){let e=M(iv),t=t=>{let n=E_(t)?t:B(e).nodeLookup.get(t.id),r=n.parentId?wh(n.position,n.measured,n.parentId,B(e).nodeLookup,B(e).nodeOrigin):n.position;return ah({...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&&E_(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&&D_(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:Gv(B(e).nodeLookup,t),getEdge:t=>B(e).edgeLookup.get(t),getEdges:t=>t===void 0?B(e).edges:Gv(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=yh(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=uh(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=ah(i),c=lh(s,o);return r&&c>0||c>=s.width*s.height||c>=o.width*o.height}):[]},isNodeIntersecting:(e,n,r=!0)=>{let i=uh(e)?e:t(e);if(!i)return!1;let a=lh(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 Xm({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 mh({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=hh(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=>Um(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 Gv(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 Kv(e,t){A(t,!0);let n=X(t,`store`,15),r=X(t,`selectionKey`,3,`Shift`),i=X(t,`multiSelectionKey`,19,()=>bh()?`Meta`:`Control`),a=X(t,`deleteKey`,3,`Backspace`),o=X(t,`panActivationKey`,3,` `),s=X(t,`zoomActivationKey`,19,()=>bh()?`Meta`:`Control`),{deleteElements:c}=Wv();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)=>Uv?.(e,t),()=>({trigger:f(r(),()=>n(n().selectionKeyPressed=!0,!0)),type:`keydown`})),Li(hn,(e,t)=>Uv?.(e,t),()=>({trigger:f(r(),()=>n(n().selectionKeyPressed=!1,!0)),type:`keyup`})),Li(hn,(e,t)=>Uv?.(e,t),()=>({trigger:f(i(),()=>{n(n().multiselectionKeyPressed=!0,!0)}),type:`keydown`})),Li(hn,(e,t)=>Uv?.(e,t),()=>({trigger:f(i(),()=>n(n().multiselectionKeyPressed=!1,!0)),type:`keyup`})),Li(hn,(e,t)=>Uv?.(e,t),()=>({trigger:f(a(),e=>{!(e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)&&!Nh(e.originalEvent)&&(n(n().deleteKeyPressed=!0,!0),m())}),type:`keydown`})),Li(hn,(e,t)=>Uv?.(e,t),()=>({trigger:f(a(),()=>n(n().deleteKeyPressed=!1,!0)),type:`keyup`})),Li(hn,(e,t)=>Uv?.(e,t),()=>({trigger:f(o(),()=>n(n().panActivationKeyPressed=!0,!0)),type:`keydown`})),Li(hn,(e,t)=>Uv?.(e,t),()=>({trigger:f(o(),()=>n(n().panActivationKeyPressed=!1,!0)),type:`keyup`})),Li(hn,(e,t)=>Uv?.(e,t),()=>({trigger:f(s(),()=>n(n().zoomActivationKeyPressed=!0,!0)),type:`keydown`})),Li(hn,(e,t)=>Uv?.(e,t),()=>({trigger:f(s(),()=>n(n().zoomActivationKeyPressed=!1,!0)),type:`keyup`})),j()}var qv=ai(`<path fill="none" class="svelte-flow__connection-path"></path>`),Jv=ai(`<svg class="svelte-flow__connectionline"><g><!></g></svg>`);function Yv(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 Fm.Bezier:{let[t]=Bh(e);return t}case Fm.Straight:{let[t]=qh(e);return t}case Fm.Step:case Fm.SmoothStep:{let[n]=$h({...e,borderRadius:t.type===Fm.Step?0:void 0});return n}}});var r=si(),i=I(r),a=e=>{var r=Jv(),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=qv();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`,Oh(t.store.connection.isValid)])]),W(e,r)};K(i,e=>{t.store.connection.inProgress&&e(a)}),W(e,r),j()}var Xv=new Set([`$$slots`,`$$events`,`$$legacy`,`position`,`style`,`class`,`children`]),Zv=U(`<div><!></div>`);function Qv(e,t){A(t,!0);let n=X(t,`position`,3,`top-right`),r=La(t,Xv),i=M(()=>`${n()}`.split(`-`));var a=Zv();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 $v=U(`<a target="_blank" rel="noopener noreferrer" aria-label="Svelte Flow attribution">Svelte Flow</a>`);function ey(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}`);Qv(e,{get position(){return n()},class:`svelte-flow__attribution`,get"data-message"(){return B(t)},children:(e,t)=>{var n=$v();z(()=>Y(n,`href`,r)),W(e,n)},$$slots:{default:!0}})}};K(a,e=>{t.proOptions?.hideAttribution||e(o)}),W(e,i),j()}var ty=U(`<div><!></div>`);function ny(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=ty();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}}),[()=>O_(t.width),()=>O_(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 ry=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(`.`)),iy=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),ay=U(`<!> <!>`,1),oy=U(`<!> <!> <!> <!> <!>`,1);function sy(e,t){A(t,!0);let n=X(t,`paneClickDistance`,3,1),r=X(t,`nodeClickDistance`,3,1),i=X(t,`panOnScrollMode`,19,()=>Mm.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,()=>Fm.Bezier),g=X(t,`nodes`,31,()=>fn([])),_=X(t,`edges`,31,()=>fn([])),v=X(t,`viewport`,15,void 0),y=La(t,ry),b=ov({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(av);x&&x.setStore&&x.setStore(b),it(av,{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(ov({width:0,height:0,nodes:[],edges:[],props:{}}))}),ny(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 _=oy(),v=I(_);Kv(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);lv(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)=>{mv(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=ay(),a=I(i);gv(a,{get store(){return b},set store(e){b=e},children:(e,n)=>{var i=iy(),a=R(I(i),2);Lv(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);Yv(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);Dv(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}}),Vv(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);zv(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);ey(x,{get proOptions(){return t.proOptions},get position(){return t.attributionPosition}});var S=R(x,2);bv(S,{get store(){return b}}),Pi(R(S,2),()=>t.children??f),W(e,_)},$$slots:{default:!0}}),j()}function cy(e,t){A(t,!0);let n=N(ov({props:{},nodes:[],edges:[]}));it(av,{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 ly=new Set([`$$slots`,`$$events`,`$$legacy`,`target`,`children`]),uy=U(`<div><!></div>`);function dy(e,t){A(t,!0);let n=X(t,`target`,3,`front`),r=La(t,ly);var i=uy();ga(i,e=>({...r,[ia]:{display:e}}),[()=>T_().value?`none`:void 0]),Pi(F(i),()=>t.children??f),k(i),Li(i,(e,t)=>w_?.(e,t),()=>`viewport-${n()}`),W(e,i),j()}var fy;(function(e){e.Lines=`lines`,e.Dots=`dots`,e.Cross=`cross`})(fy||={});var py=ai(`<circle></circle>`);function my(e,t){var n=py();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 hy=ai(`<path></path>`);function gy(e,t){A(t,!0);var n=hy();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 _y={[fy.Dots]:1,[fy.Lines]:1,[fy.Cross]:6},vy=ai(`<svg data-testid="svelte-flow__background"><pattern patternUnits="userSpaceOnUse"><!></pattern><rect x="0" y="0" width="100%" height="100%"></rect></svg>`);function yy(e,t){A(t,!0);let n=X(t,`variant`,19,()=>fy.Dots),r=X(t,`gap`,3,20),i=X(t,`lineWidth`,3,1),a=M(iv),o=M(()=>n()===fy.Dots),s=M(()=>n()===fy.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??_y[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=vy();let h;var g=F(m),_=F(g),v=e=>{{let n=M(()=>B(d)/2);my(e,{get radius(){return B(n)},get class(){return t.patternClass}})}},y=e=>{gy(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 by(e){let t=M(iv),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 xy=ai(`<rect></rect>`);function Sy(e,t){A(t,!0);let n=X(t,`borderRadius`,3,5),r=X(t,`strokeWidth`,3,2),i=M(()=>by(t.id)),a=M(()=>{if(!B(i).current)return{width:0,height:0,x:0,y:0};let{width:e,height:n}=Sh(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=xy();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 Cy(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 wy=e=>e instanceof Function?e:()=>e,Ty=new Set([`$$slots`,`$$events`,`$$legacy`,`position`,`ariaLabel`,`nodeStrokeColor`,`nodeColor`,`nodeClass`,`nodeBorderRadius`,`nodeStrokeWidth`,`nodeComponent`,`bgColor`,`maskColor`,`maskStrokeColor`,`maskStrokeWidth`,`width`,`height`,`pannable`,`zoomable`,`inversePan`,`zoomStep`,`class`]),Ey=ai(`<title> </title>`),Dy=ai(`<svg class="svelte-flow__minimap-svg" role="img"><!><!><path class="svelte-flow__minimap-mask" fill-rule="evenodd" pointer-events="none"></path></svg>`),Oy=U(`<svelte-css-wrapper style="display: contents"><!></svelte-css-wrapper>`,1);function ky(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,Ty),f=M(iv),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(_)?sh(Wm(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=Oy(),re=I(D);{let e=M(()=>[`svelte-flow__minimap`,t.class]);wi(re,()=>({"--xy-minimap-background-color-props":t.bgColor})),Qv(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=Dy();let d;var _=F(n),v=e=>{var n=Ey(),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:wy(t.nodeColor)(B(n))),l=M(()=>wy(r())(B(n))),u=M(()=>wy(i())(B(n)));Sy(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)&&Ch(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)=>Cy?.(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
|
|
7
|
+
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 Ay=new Set([`$$slots`,`$$events`,`$$legacy`,`nodeId`,`position`,`align`,`offset`,`isVisible`,`children`]),jy=U(`<div><!></div>`);function My(e,t){A(t,!0);let n=X(t,`position`,19,()=>Lm.Top),r=X(t,`align`,3,`center`),i=X(t,`offset`,3,10),a=La(t,Ay),o=iv(),{getNodesBounds:s}=Wv(),c=s_(),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?sg(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=jy();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(),()=>T_().value?`none`:void 0]),Pi(F(n),()=>t.children??f),k(n),Li(n,(e,t)=>w_?.(e,t),()=>`root`),W(e,n)};K(g,e=>{o.domNode&&B(m)&&B(l)&&e(_)}),W(e,h),j()}function Ny(){let e=M(iv);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 Py=new Set([`$$slots`,`$$events`,`$$legacy`]);function Fy(e,t){let n=La(t,Py),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 Iy=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`)}},Ly=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>`),Ry=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
|
|
8
|
+
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 zy(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(()=>Iy.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=Ry(),r=I(t),s=L(R(F(r)),!0);k(r);var c=R(r,2),u=e=>{var t=Ly();Ua(F(t),{get of(){return Fy},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);Uc(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`,Iy.open),G(s,B(x)),Y(d,`id`,n),Y(d,`aria-labelledby`,`${n}-title`),Y(f,`id`,`${n}-title`)}),H(`click`,r,()=>Iy.open=!Iy.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 By=new Set([`$$slots`,`$$events`,`$$legacy`]);function Vy(e,t){let n=La(t,By),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 Uy(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 Wy=new Set([`$$slots`,`$$events`,`$$legacy`]);function Gy(e,t){let n=La(t,Wy),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 Ky=new Set([`$$slots`,`$$events`,`$$legacy`]);function qy(e,t){let n=La(t,Ky),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 Jy=new Set([`$$slots`,`$$events`,`$$legacy`]);function Yy(e,t){let n=La(t,Jy),r={name:`minus`,size:24,node:[[`path`,{d:`M5 12h14`}]]};$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:`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 Qy=new Set([`$$slots`,`$$events`,`$$legacy`]);function $y(e,t){let n=La(t,Qy),r={name:`plus`,size:24,node:[[`path`,{d:`M5 12h14`}],[`path`,{d:`M12 5v14`}]]};$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:`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 nb=new Set([`$$slots`,`$$events`,`$$legacy`]);function rb(e,t){let n=La(t,nb),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 ib={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}},ab={locals:[`#ffffff`,`#c8f03c`,`#52f29a`,`#5ce1e6`,`#ffd43b`,`#ff8a1f`],deployeds:[`#9a9a9a`,`#8ea2ff`,`#a98bff`,`#7fc4d8`,`#5cc8ff`,`#e6a3d8`]},ob={locals:[`#141414`,`#1f4fd8`,`#b4490a`,`#0f766e`,`#7a3fc8`,`#1a6e2e`],deployeds:[`#6b6b6b`,`#7652c2`,`#22738a`,`#4a5fb5`,`#8a5a2b`,`#a3407a`]},sb=e=>!!ib[e].light,cb=e=>sb(e)?ob:ab,lb=[`#c8f03c`,`#52f29a`,`#1a6e2e`],ub=[`#4ade80`,`#5bd97a`,`#1a8f4c`,`#15803d`,`#2b8048`],db=`koppler-appearance`,fb=()=>{try{let e=JSON.parse(localStorage.getItem(db)??`{}`),t=(e,t)=>typeof e==`string`&&t.includes(e)?e:void 0,n=e.scheme&&e.scheme in ib?e.scheme:`mono`,r=t(e.local,cb(n).locals),i=t(e.deployed,cb(n).deployeds);return{scheme:n,...r&&{local:r},...i&&{deployed:i}}}catch{return{scheme:`mono`}}},pb=(e,t)=>{let n=ib[e];if(t&&lb.includes(t)&&ub.includes(n.live))return n.light?`#141414`:`#ffffff`},mb=new class{#e=N(fn(fb()));get now(){return B(this.#e)}set now(e){P(this.#e,e,!0)}constructor(){this.#n()}get local(){return this.now.local??ib[this.now.scheme].local}get deployed(){return this.now.deployed??ib[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(db,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`,pb(this.now.scheme,this.now.local)]])n?e.style.setProperty(t,n):e.style.removeProperty(t)}},hb=new Set([`$$slots`,`$$events`,`$$legacy`]);function gb(e,t){let n=La(t,hb),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 _b=new Set([`$$slots`,`$$events`,`$$legacy`]);function vb(e,t){let n=La(t,_b),r={name:`check`,size:24,node:[[`path`,{d:`M20 6 9 17l-5-5`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var yb=new Set([`$$slots`,`$$events`,`$$legacy`]);function bb(e,t){let n=La(t,yb),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 xb=new Set([`$$slots`,`$$events`,`$$legacy`]);function Sb(e,t){let n=La(t,xb),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 Cb=new Set([`$$slots`,`$$events`,`$$legacy`]);function wb(e,t){let n=La(t,Cb),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 Tb=new Set([`$$slots`,`$$events`,`$$legacy`]);function Eb(e,t){let n=La(t,Tb),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 Db=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ob(e,t){let n=La(t,Db),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 kb=U(`<span class="tag svelte-1ypd2at">current</span>`),Ab=U(`<span class="tag svelte-1ypd2at">picked</span>`),jb=U(`<li role="option" class="svelte-1ypd2at"><span class="name svelte-1ypd2at"> </span> <!></li>`),Mb=U(`<li class="note svelte-1ypd2at" role="presentation"> </li>`),Nb=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 Pb(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=Nb(),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=jb(),o=F(a),s=L(o,!0),l=R(o,2),u=e=>{W(e,kb())},d=e=>{W(e,Ab())};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=Mb(),n=L(t);z(()=>G(n,`${B(u).length-B(d).length} more, keep typing`)),W(e,t)},w=e=>{var n=Mb(),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 Fb=U(`<label class="field svelte-1kkgx5y">Branch <!></label>`),Ib=U(`<label class="svelte-1kkgx5y"><input type="radio"/> </label>`),Lb=U(`<div class="field svelte-1kkgx5y" role="radiogroup"> <span class="seg svelte-1kkgx5y"></span></div>`),Rb=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>`),zb=U(`<option> </option>`),Bb=U(`<label class="field svelte-1kkgx5y">Platform <span class="combo svelte-1kkgx5y"><select class="mono svelte-1kkgx5y"></select></span></label>`),Vb=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>`),Ub=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>`),Wb=U(`<div class="row svelte-1kkgx5y"><!> <!> <!> <!></div>`),Gb=U(`<label class="toggle svelte-1kkgx5y" title="Off draws its cable straight to the database; the tunnel keeps working, only the drawing changes."><input type="checkbox" role="switch"/><span class="track" aria-hidden="true"></span>Show tunnel</label>`),Kb=U(`<div class="change svelte-1kkgx5y"><b class="svelte-1kkgx5y">Koppler changes one line for the run</b> <span class="file svelte-1kkgx5y"> </span> <code class="out svelte-1kkgx5y"> </code> <code class="in svelte-1kkgx5y"> </code> <span>Undone on Stop.</span></div>`),qb=U(`<span class="database svelte-1kkgx5y"><span class="db-name svelte-1kkgx5y"> </span> <!></span> <!>`,1),Jb=U(`<div class="field databases svelte-1kkgx5y"> <!></div>`),Yb=U(`<label class="toggle svelte-1kkgx5y"><input type="checkbox" role="switch"/><span class="track" aria-hidden="true"></span> </label>`),Xb=U(`<div class="field svelte-1kkgx5y">Libraries <!></div>`),Zb=U(`<optgroup label="Call a local app"></optgroup>`),Qb=U(`<optgroup label="Remove the cable to"></optgroup>`),$b=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>`),ex=U(`<button class="note-toggle svelte-1kkgx5y" type="button">Add a note for the agent</button>`),tx=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),nx=U(`<div class="body svelte-1kkgx5y"><!> <!> <!> <!> <!> <!></div>`);function rx(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(cc,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.databasesOf(t.id)),h=N(null),g=M(()=>Z.localLibraries(t.id)),_=(e,n)=>{Z.set(t.id,{libraries:n?[...B(g),e]:B(g).filter(t=>t!==e)})},y=M(()=>!!B(i)?.platforms.length&&B(r)?.run===`cli`),b=N(fn({can:[],wired:[]})),x=N(!1),S=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=``},C=e=>e.target.closest(`select, textarea, input:not([type="radio"], [type="checkbox"])`),w=e=>{let t=C(e);t===document.activeElement?e.stopPropagation():t&&e.preventDefault()},T=e=>{let t=C(e);t&&t!==document.activeElement&&(t.focus(),t instanceof HTMLSelectElement&&t.showPicker())},ee=e=>{e.style.height=`auto`,e.style.height=`${String(e.scrollHeight+2)}px`};var te=si(),E=I(te),ne=e=>{var C=nx(),te=F(C),E=e=>{var n=Fb(),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);Pb(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(te,e=>{B(l)||e(E)});var ne=R(te,2),D=e=>{var i=Lb(),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=Ib(),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)},re=M(()=>Z.switchesOver(t.id));K(ne,e=>{B(re)&&e(D)});var ie=R(ne,2),ae=e=>{var n=Wb(),a=F(n),o=e=>{var n=Rb(),i=R(F(n));q(i,20,()=>B(s),e=>e,(e,n)=>{var i=Ib(),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,cc[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=Bb(),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=zb(),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(y)&&e(m)});var h=R(l,2),g=e=>{var n=Vb(),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(g)});var _=R(h,2),b=e=>{var n=Ub(),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(_,e=>{B(d).length&&e(b)}),k(n),W(e,n)};K(ie,e=>{(B(c)||B(u).length||B(d).length)&&e(ae)});var oe=R(ie,2),se=e=>{var n=Jb(),r=F(n);q(R(r),16,()=>B(m),e=>e,(e,n)=>{let r=M(()=>!!Z.databases[n]),i=M(()=>B(r)?Z.useOf(t.id,n)?.change:void 0);var a=qb(),o=I(a),s=F(o),c=L(s),l=R(s,2),u=e=>{var t=Hb(),r=L(t,!0);z(()=>{Y(t,`aria-expanded`,B(h)===n),G(r,B(h)===n?`Hide change`:`Show change`)}),H(`click`,t,()=>P(h,B(h)===n?null:n,!0)),W(e,t)},d=e=>{var r=Gb(),i=F(r);fa(i),Ae(2),k(r),z((e,t)=>{Y(i,`aria-label`,`Show the tunnel to ${e??``}`),ma(i,t)},[()=>Z.databaseName(n),()=>Z.tunnelShown(t.id,n)]),H(`change`,i,e=>{Z.showTunnel(t.id,n,e.currentTarget.checked)}),W(e,r)};K(l,e=>{B(i)?e(u):B(r)||e(d,1)}),k(o);var f=R(o,2),p=e=>{var t=Kb(),n=R(F(t),2),r=L(n,!0),a=R(n,2),o=L(a),s=L(R(a,2));Ae(2),k(t),z(()=>{G(r,B(i).file),G(o,`− ${B(i).find??``}`),G(s,`+ ${B(i).replace??``}`)}),W(e,t)};K(f,e=>{B(i)&&B(h)===n&&e(p)}),z(e=>G(c,`${e??``}${B(r)?` · Local`:``}`),[()=>Z.databaseName(n)]),W(e,a)}),k(n),z(()=>G(r,`${B(m).length>1?`Databases`:`Database`} `)),W(e,n)};K(oe,e=>{B(m).length&&e(se)});var ce=R(oe,2),le=e=>{var t=Xb();q(R(F(t)),17,()=>B(i).libraries,e=>e.name,(e,t)=>{let n=M(()=>B(g).includes(B(t).name));var i=Yb(),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=>{_(B(t).name,e.currentTarget.checked)}),W(e,i)}),k(t),W(e,t)};K(ce,e=>{B(i)?.libraries.length&&!B(l)&&e(le)});var ue=R(ce,2),de=e=>{var n=tx(),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=Zb();q(t,21,()=>B(b).can,e=>e.id,(e,t)=>{var n=zb(),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(b).can.length&&e(l)});var u=R(c),d=e=>{var t=Qb();q(t,21,()=>B(b).wired,e=>e.id,(e,t)=>{var n=zb(),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(b).wired.length&&e(d)}),k(o),k(a),k(i);var f=R(i,2),p=e=>{var n=$b(),i=R(F(n));_t(i),Ri(i,()=>ee),k(n),z(()=>pa(i,B(r).note)),H(`input`,i,e=>{ee(e.currentTarget),Z.set(t.id,{note:e.currentTarget.value})}),V(`blur`,i,()=>P(x,!1)),W(e,n)},m=e=>{var t=ex();H(`click`,t,()=>P(x,!0)),W(e,t)};K(f,e=>{B(r).note||B(x)?e(p):e(m,-1)}),z(()=>Y(o,`aria-label`,`Add or remove a cable from ${B(r).name??``}`)),V(`focus`,o,()=>P(b,Z.cablesOf(t.id),!0)),H(`pointerdown`,o,()=>P(b,Z.cablesOf(t.id),!0)),H(`change`,o,S),W(e,n)};K(ue,e=>{B(l)||e(de)}),k(C),V(`mousedown`,C,w,!0),H(`click`,C,T),W(e,C)};K(E,e=>{B(r)&&e(ne)}),W(e,te),j()}Xr([`click`,`change`,`pointerdown`,`input`]);var ix=(e,t)=>document.elementsFromPoint(e,t).find(e=>e.classList.contains(`svelte-flow__node`))?.getAttribute(`data-id`)??void 0,ax=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=as(r,i),o=Z.ends.offset[`${String(e)}|${t}`]??0;return es[i][0]===0?{...a,x:a.x+o}:{...a,y:a.y+o}}nearestSide(e,t){let n=n=>Math.hypot(as(e,n).x-t.x,as(e,n).y-t.y);return Object.keys(es).reduce((e,t)=>n(t)<n(e)?t:e)}start(e,t){let n=Z.boxes.get(e);if(!n)return;let r=as(n,t),i=[],a=e=>Z.toFlow({x:e.clientX,y:e.clientY}),o=(e,t)=>Object.keys(es).find(n=>Math.hypot(as(e,n).x-t.x,as(e,n).y-t.y)<=16/Z.zoom()),s=t=>{let n=a(t),s=ix(t.clientX,t.clientY)??[...Z.boxes].find(([t,r])=>t!==e&&o(r,n))?.[0],c=s&&s!==e?Z.boxes.get(s):void 0;if(s&&c)return{id:s,side:o(c,n)??this.nearestSide(c,i.at(-1)??r),at:c}},c=e=>Z.app(e),l=(e,t)=>!!c(e)?.calls.includes(t),u=t=>!c(e)?.outside&&!!c(t)&&!c(t)?.outside&&!!c(t)?.answers,d=t=>!l(e,t)&&l(t,e),f=e=>{let n=s(e),o=!!n&&u(n.id)&&!d(n.id);this.draft={a:r,side:t,b:n&&o?as(n.at,n.side):a(e),bSide:n&&o?n.side:null,points:[...i]},this.drop=n?{id:n.id,ok:o}:null},p=()=>{removeEventListener(`pointermove`,f),removeEventListener(`pointerdown`,h,!0),removeEventListener(`keydown`,g,!0),this.draft=this.drop=null},m=n=>{let r=s(n);if(p(),!r)return;let[a,o]=[c(e)?.name??e,c(r.id)?.name??r.id];if(!u(r.id)){let e=c(r.id)?.answers?`${a} doesn't call ${o}`:`${o} is a ${c(r.id)?.kindLabel??``} app: it calls others, nothing calls it.`;$.show(e,`warning`);return}if(d(r.id)){let t=Z.edges.some(t=>t.id===`${r.id}>${e}`);$.show(`In the code ${o} 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 l=vc(e,r.id,{fromSide:t,toSide:r.side,...i.length&&{points:i}});Z.edges=[...Z.edges.filter(e=>e.id!==l.id),l]},h=e=>{if(e.button===0){e.preventDefault(),e.stopPropagation();for(let e of[`mousedown`,`click`])addEventListener(e,e=>{e.stopPropagation()},{capture:!0,once:!0});ix(e.clientX,e.clientY)||s(e)?m(e):e.target.closest(`.svelte-flow__panel, button`)?p():(i.push(a(e)),f(e))}},g=e=>{e.key===`Escape`&&(e.preventDefault(),p())};addEventListener(`pointermove`,f),addEventListener(`pointerup`,e=>{let t=a(e),n=Math.hypot(t.x-r.x,t.y-r.y)>24/Z.zoom();ix(e.clientX,e.clientY)||s(e)||!n?m(e):(i.push(t),f(e),addEventListener(`pointerdown`,h,!0),addEventListener(`keydown`,g,!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=es[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)}},ox=(e,t,n)=>{try{let r=localStorage.getItem(e);return t.includes(r)?r:n}catch{return n}},sx=(e,t)=>{try{localStorage.setItem(e,t)}catch{}},cx=()=>{try{return JSON.parse(sessionStorage.getItem(`koppler-log-cleared`)??`{}`)??{}}catch{return{}}},lx=e=>{let[t=``,n]=e.split(`@`);return[t,n]},ux=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(cx());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(ox(`koppler-log-since`,[`run`,`hour`,`lines`],`run`)));get since(){return B(this.#s)}set since(e){P(this.#s,e,!0)}#c=N(fn(ox(`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,sx(`koppler-log-since`,e),this.reload()}reload(){this.#a[`*`]=0,this.refresh()}setNames(e){this.names=e,sx(`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!==`*`&&!!lx(e)[1]}label(e){if(e===`*`)return`All apps`;let[t,n]=lx(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(`
|
|
9
|
+
`)+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]=lx(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}},dx=(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),fx=e=>dx(e.name,Z.openBoard(e));async function px(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);dx(n.error===void 0?n.name:e.name,n)}async function mx(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?(dx(n.name,n),null):n.error}var hx=[[`year`,31536e3],[`month`,2592e3],[`week`,604800],[`day`,86400],[`hour`,3600],[`minute`,60]];function gx(e){let t=(new Date(e).getTime()-Date.now())/1e3,n=new Intl.RelativeTimeFormat(void 0,{numeric:`auto`});for(let[e,r]of hx)if(Math.abs(t)>=r)return n.format(Math.round(t/r),e);return`just now`}var _x=fn({}),vx=new class{#e=N({});get addresses(){return B(this.#e)}set addresses(e){P(this.#e,e)}#t=N(fn({}));get answers(){return B(this.#t)}set answers(e){P(this.#t,e,!0)}#n;load(){return this.#n??=fetch(`data/local-databases.json`).then(e=>e.ok?e.json():null).then(e=>{this.addresses=e??{}}).catch(()=>void 0),this.#n}async test(e,t=this.addresses[e]){if(!t)return!1;this.answers[e]=`testing`;let n=await oo(`local-database-test`,{id:e,...t,database:t.database??``});return this.answers[e]=`error`in n?!1:n.open,`error`in n?n.error:n.open}async keep(e,t){let n=await oo(`local-database`,{id:e,...t,database:t.database??``});return`error`in n?n.error:(this.addresses={...this.addresses,[e]:t},null)}async forget(e){let t=await oo(`local-database`,{id:e,clear:!0});if(`error`in t)return t.error;let{[e]:n,...r}=this.addresses;return this.addresses=r,null}},yx=e=>`${e.host}:${String(e.port)}${e.database?` · ${e.database}`:``}`,bx=[[`starts`,`Starts`],[`restarts`,`Restarts`],[`stops`,`Stops and reverts`],[`keeps`,`Keeps running`]],xx=()=>(Date.now().toString(36)+Math.random().toString(36).slice(2,8)).replace(/[^a-z0-9]/g,``),Sx=Z.nameOf,Cx=(e,t)=>`${String(e)} ${t}${e===1?``:`s`}`,wx=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`]]:[])),l=e?Object.fromEntries(Object.entries(t?.databases??{}).filter(([,e])=>e===`local`)):Z.databases;return{env:Z.env,mode:`auto`,nodes:a,edges:o,deployed:s,...Object.keys(c).length&&{queues:c},...Object.keys(l).length&&{databases:l}}}#r(e){let t=Q.status,n=t?.running;return Vs(t?.live??null,e,{name:Sx,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),databasesOf:e=>Z.databasesOf(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 ${Sx(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`),...Object.keys(e.databases??{}).map(e=>`DATABASE ${Z.databaseName(e)}: local, the user's own on this Mac`),...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 ${Sx(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 ${Sx(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` ${Sx(e)} → local ${Sx(t)}${i}`}),...e.deployed.map(({from:e,to:n})=>` ${Sx(e)} → ${t} ${Sx(n)}`),...e.deployed.filter(({to:t})=>e.nodes.some(e=>e.id===t)).map(({from:e,to:n})=>`! ${Sx(n)} is local but ${Sx(e)} still calls ${t}`)].join(`
|
|
10
|
+
`)}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 bx.filter(([t])=>e[t].length).map(([n,r])=>({verb:n,label:r,items:e[n].map(e=>({name:Sx(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,_x.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=Cx(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(`, `)}`}]:[],...Z.databasesOf(e).filter(t=>Z.databases[t]&&Z.useOf(e,t)?.change).map(t=>({text:`1 line changed for this run, undone on Stop: ${Z.databaseName(t)} on this Mac`,title:Z.useOf(e,t)?.change?.file??``}))]},h=Z.infra.flatMap(e=>e.type===`database`?[e.data]:[]),g=e=>`used by ${e.map(Sx).join(`, `)}`,_=h.filter(e=>!e.local).map(e=>({name:e.name,notes:[{text:e.tunnel?`Through ${e.tunnel} · ${g(e.apps)}`:g(e.apps)},{text:e.kind,kind:`host`}]})),v=h.filter(e=>e.local).map(e=>{let t=vx.addresses[e.database];return{name:e.name,notes:[...t?[{text:yx(t),kind:`host`}]:[{text:`No address yet`,kind:`flag`}],{text:g(e.apps)}]}}),y=[..._.length?[{verb:Z.protected?`stops`:`deployed`,label:`Deployed ${o} databases`,items:_}]:[],...v.length?[{verb:`local`,label:`On this Mac`,items:v}]:[]],b={};for(let{from:e,to:t}of i.deployed)b[t]=[...b[t]??[],e];let x=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(Sx).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}`}]:[],...x===`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:[...Z.protected?y.slice(0,+!!_.length):[],...this.#o(a,m),...Object.keys(b).length?[{verb:`deployed`,label:`Calls ${Z.protected?o:`deployed ${o}`}`,items:Object.entries(b).map(([e,t])=>{let n=Z.app(e),r=n?.cloned&&!n.outside&&n.answers;return{name:Sx(e),notes:[{text:`from ${t.map(Sx).join(`, `)}`}],...r&&{act:{label:`Run locally`,title:`Run it locally too, and point ${t.map(Sx).join(`, `)} at it`,run:()=>{Z.add(e);for(let n of t)Z.connect(n,e);this.again()}}}}})}]:[],...d.length?[{verb:`calls`,label:`Opens first`,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(Sx).join(`, `)}`}]:[]]}})}]:[],...Z.protected&&_.length?y.slice(1):y,...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(bx.map(([e])=>[e,a[e]])),n=`Set up and run this stack using the koppler-run skill.
|
|
11
|
+
`+this.#a(i)+`
|
|
12
|
+
PLAN the user confirmed on the canvas (do exactly this; check it first with koppler plan):
|
|
13
|
+
`+Us(a,{name:Sx}).map(e=>` ${e}`).join(`
|
|
14
|
+
`);Z.commit();let r=Z.saved();ao(r);let o={...i,id:xx(),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(`
|
|
15
|
+
`),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 ${Sx(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(`
|
|
16
|
+
`),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 ${Sx(e)} (${e})`,`FAILED ${t}`,`Find the cause, say what you would change, and ask before you start, stop or restart anything.`].join(`
|
|
17
|
+
`),r={env:Z.env,failures:[{connection:Sx(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)?Sx(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:()=>{fx(t)}}})}async stopApp(e){let t=await oo(`stop-apps`,{app:e});`stopped`in t&&t.stopped.length?$.show(`Stopped ${Sx(e)}. Its changes stay until you revert.`):$.show(`Could not stop ${Sx(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:Sx(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:xx(),...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()}},Tx=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),Ex=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>`),Dx=U(`<button type="button" aria-label="Show log" title="Show log" class="svelte-byllhq"><!>Log</button>`),Ox=U(`<button type="button" class="svelte-byllhq"> </button>`),kx=U(`<a class="tool svelte-byllhq" target="_blank" rel="noopener" title="Its requests, followed across your local apps">Traces</a>`),Ax=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>`),jx=U(`<button type="button" class="svelte-byllhq">Auto-restart</button>`),Mx=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>`),Nx=U(`<span class="live svelte-byllhq" role="img"></span>`),Px=U(`<span class="watch svelte-byllhq" role="img" aria-label="Auto-restart" title="Restarts when its files change"><!></span>`),Fx=U(`<span class="svelte-byllhq"> </span>`),Ix=U(`<span title="It is taken off its queues and keeps the deployed ones" class="svelte-byllhq">No queues</span>`),Lx=U(`<span class="off svelte-byllhq" title="Only the API runs; calls through its tunnels fail">No tunnels</span>`),Rx=U(`<p class="glance svelte-byllhq"><span class="svelte-byllhq"> </span> <!> <!> <!></p>`),zx=U(`<p class="changed svelte-byllhq"> </p>`),Bx=U(`<p class="where nodrag svelte-byllhq"> </p>`),Vx=U(`<i class="svelte-byllhq"></i>`),Hx=U(`<p class="why nodrag svelte-byllhq"> </p>`),Ux=U(`<span class="detail svelte-byllhq"> </span>`),Wx=U(`<li class="step svelte-byllhq"><span class="mark svelte-byllhq" aria-hidden="true"><!></span> <span class="what svelte-byllhq"> </span> <!> <!></li>`),Gx=U(`<ul class="steps nodrag nopan svelte-byllhq"></ul>`),Kx=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),qx=U(`<div class="acts nodrag svelte-byllhq"><button class="act fix svelte-byllhq" type="button"> </button></div>`),Jx=U(`<button class="chip svelte-byllhq" type="button"> </button>`),Yx=U(`<div class="calls nodrag nopan svelte-byllhq"><span class="calls-label svelte-byllhq"> </span> <!></div>`),Xx=U(`<button title="Drag a cable to an app this one should call locally" tabindex="-1"></button>`),Zx=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 Qx(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(()=>Z.nodes.filter(e=>e.selected).length>1),s=M(()=>(B(n)||t.selected)&&!B(o)),c=[`top`,`right`,`bottom`,`left`],l=Ny(),u=M(()=>l.current.zoom<lc),d=M(()=>B(u)||Z.live),f=N(0),p=N(0);Fn(()=>{!B(d)&&B(f)&&P(p,B(f),!0)});let m=M(()=>Z.app(t.id)),h=M(()=>B(m)?.current||`current branch`),g=M(()=>Z.tunnelsOf(t.id)),_=M(()=>Z.queuesOf(t.id)),y=M(()=>B(_).length>0&&!t.data.showQueues),b=M(()=>Z.deployedCalls(t.id)),x=M(()=>Z.databasesOf(t.id).filter(e=>Z.databases[e]&&Z.useOf(t.id,e)?.change).length),S=e=>{let[n,...r]=e.split(` `);return r.length&&n===t.data.name.split(` `)[0]?r.join(` `):e},C=M(()=>!!B(m)?.platforms.length&&t.data.run===`cli`),w=M(()=>B(m)?.platforms.find(([e])=>e===t.data.platform)?.[1]),T=M(()=>t.data.run===`ide`?`Started by you`:t.data.run===`mock`?`Mock`:B(C)?B(w):void 0),ee=M(()=>Q.up(t.id)),te=M(()=>Q.where(t.id)),E=M(()=>Q.state(t.id)),ne=async e=>{let n=await oo(`reload`,{app:t.id,restart:e});`error`in n?$.show(n.error,`warning`):$.show(`${n.said}.`)},D=M(()=>Q.stateSaid(t.id)),re=M(()=>Q.steps(t.id)),ie=M(()=>B(re).length?Sc(B(re)):[`todo`,``]),ae=M(()=>v(B(ie),2)),oe=M(()=>B(ae)[0]),se=M(()=>B(ae)[1]),ce=M(()=>B(re).find(e=>e.state===`failed`)),le=N(!1),ue=N(!1),de=e=>Z.ends.onPort.some(n=>n.id===t.id&&n.side===e);var fe=Zx(),pe=I(fe);{let e=M(()=>B(s)&&!t.dragging);My(pe,{get isVisible(){return B(e)},get position(){return Lm.Top},align:`start`,offset:8,children:(e,n)=>{var r=Mx();let o;var s=F(r),c=e=>{var n=Tx(),r=I(n);Ua(F(r),{get of(){return Eb},size:14}),Ae(),k(r);var i=R(r,2);Ua(F(i),{get of(){return wb},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 wx.stopApp(t.id)),H(`click`,i,()=>{wx.start({restart:t.id})}),W(e,n)},l=M(()=>wx.started.includes(t.id)),u=e=>{var n=Ex();Ua(F(n),{get of(){return Sb},size:14}),Ae(),k(n),z(()=>Y(n,`aria-label`,`Run ${t.data.name??``} alone`)),H(`click`,n,()=>{wx.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=Dx();Ua(F(n),{get of(){return bb},size:14}),Ae(),k(n),H(`click`,n,()=>{ux.open(t.id)}),W(e,n)},p=M(()=>Q.hasLog(t.id));K(d,e=>{B(p)&&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=Ox(),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?_x.command?.open(B(o)):Dc(B(o)).then(e=>{e&&$.show(e,`warning`)})}),W(e,s)});var g=R(h,2),_=e=>{var n=kx();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=Ax();z(()=>Y(n,`aria-label`,`Hot reload ${t.data.name??``}`)),H(`click`,n,e=>void ne(e.shiftKey)),W(e,n)};K(b,e=>{B(m)?.kind===`flutter`&&t.data.run===`cli`&&B(ee)&&e(x)});var S=R(b,2),C=e=>{var n=jx();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 w=R(S,2);Ua(F(w),{get of(){return Bc},size:14}),Ae(),k(w);var T=R(w,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(w,`aria-label`,`Settings for ${t.data.name??``}`),Y(T,`aria-label`,`Remove ${t.data.name??``}`)}),V(`pointerenter`,r,i),V(`pointerleave`,r,a),H(`click`,w,()=>void _x.settings?.open({title:t.data.name,path:`apps.${t.id}`})),H(`click`,T,()=>{Z.remove(t.id)}),W(e,r)},$$slots:{default:!0}})}var me=R(pe,2);let he,ge;var _e=F(me),ve=F(_e);Ua(F(ve),{get of(){return Ob},size:14}),k(ve);var ye=R(ve,2),be=e=>{var n=Nx();z(e=>{Y(n,`data-on`,B(ee)),Y(n,`data-state`,B(E)?.state),Y(n,`aria-label`,B(E)?bc[B(E).state]:B(ee)?`Running`:`Not answering`),Y(n,`title`,e)},[()=>B(D)||Q.about(t.id)]),W(e,n)};K(ye,e=>{(B(ee)!==null||B(E))&&e(be)});var xe=R(ye,2),Se=L(xe,!0),Ce=R(xe,2),we=e=>{var t=Px();Ua(F(t),{get of(){return gb},size:12}),k(t),W(e,t)};K(Ce,e=>{t.data.watch&&t.data.run===`cli`&&e(we)});var Te=L(R(Ce,2),!0);k(_e);var O=R(_e,2),Ee=e=>{var n=Rx(),r=F(n),i=L(r,!0),a=R(r,2),o=e=>{var t=Fx(),n=L(t,!0);z(()=>G(n,B(T))),W(e,t)};K(a,e=>{B(T)&&e(o)});var s=R(a,2),c=e=>{W(e,Ix())};K(s,e=>{B(y)&&e(c)});var l=R(s,2),u=e=>{W(e,Lx())};K(l,e=>{t.data.hideTunnels&&B(g).length&&e(u)}),k(n),z(()=>{Y(r,`title`,`Branch: ${(t.data.branch||B(h))??``}`),G(i,t.data.branch||B(h))}),W(e,n)},De=e=>{rx(e,{get id(){return t.id}})};K(O,e=>{B(d)?e(Ee):e(De,-1)});var Oe=R(O,2),ke=e=>{var t=zx(),n=L(t,!0);z(e=>{Y(t,`data-on`,!!B(ee)),G(n,e)},[()=>B(ee)?`${String(B(x))} ${B(x)===1?`line`:`lines`} changed · undone on Stop`:`Will change ${String(B(x))} ${B(x)===1?`line`:`lines`}`]),W(e,t)};K(Oe,e=>{B(x)&&e(ke)});var je=R(Oe,2),Me=e=>{var t=Bx(),n=L(t,!0);z(()=>{Y(t,`data-on`,B(ee)??`other`),G(n,B(te))}),W(e,t)},Ne=e=>{var t=Bx(),n=L(t,!0);z(()=>{Y(t,`data-state`,B(E)?.state),G(n,B(D))}),W(e,t)};K(je,e=>{B(te)?e(Me):B(D)&&e(Ne,1)});var Pe=R(je,2),Fe=e=>{var t=Kx(),n=I(t),r=F(n);q(r,21,()=>B(re),Ti,(e,t)=>{var n=Vx();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=Hx(),n=L(t,!0);z(()=>G(n,B(ce).detail)),W(e,t)};K(s,e=>{B(ce)?.detail&&!B(le)&&e(c)});var l=R(s,2),u=e=>{var t=Gx();q(t,21,()=>B(re),Ti,(e,t)=>{var n=Wx(),r=F(n),i=F(r),a=e=>{Ua(e,{get of(){return vb},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=Ux(),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=>{Uc(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(le)&&e(u)}),z(()=>{Y(n,`data-tone`,B(oe)),Y(n,`aria-expanded`,B(le)),G(a,B(se)),G(o,B(le)?`Hide`:`Details`)}),H(`click`,n,()=>P(le,!B(le))),W(e,t)};K(Pe,e=>{B(re).length&&e(Fe)});var Ie=R(Pe,2),Le=e=>{var n=qx(),r=F(n),i=L(r,!0);k(n),z(()=>{r.disabled=B(ue),G(i,B(ue)?`Sent to the agent`:`Ask the agent to fix`)}),H(`click`,r,async()=>{P(ue,await wx.askToFix(t.id,`${B(ce).label}${B(ce).detail?`: ${B(ce).detail}`:``}`),!0)}),W(e,n)};K(Ie,e=>{B(ce)&&e(Le)});var Re=R(Ie,2),ze=e=>{var n=Yx(),r=F(n),i=L(r);q(R(r,2),17,()=>B(b),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=Jx(),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(),()=>S(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(Re,e=>{B(b).length&&e(ze)});var Be=R(Re,2);h_(Be,{type:`source`,get position(){return Lm.Top},isConnectable:!1,class:`anchor`}),q(R(Be,2),16,()=>c,e=>e,(e,n)=>{var r=Xx();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??``}`)},[()=>de(n)]),H(`pointerdown`,r,e=>{e.button===0&&(e.stopPropagation(),ax.start(t.id,n))}),W(e,r)}),k(me),z((e,n)=>{he=J(me,1,`card kind-${t.data.kind??``}`,`svelte-byllhq`,he,{selected:t.selected,dimmed:e,short:B(d),far:B(u),reading:Z.live,"drop-ok":ax.drop?.id===t.id&&ax.drop.ok,"drop-bad":ax.drop?.id===t.id&&!ax.drop.ok,wiring:!!ax.draft}),ge=Ji(me,``,ge,{width:n}),Y(xe,`title`,t.data.name),G(Se,t.data.name),G(Te,t.data.kindLabel)},[()=>Z.dimmed(t.id),()=>B(d)&&B(p)?`${String(B(p))}px`:void 0]),V(`pointerenter`,me,i),V(`pointerleave`,me,a),Oa(me,`offsetWidth`,e=>P(f,e)),W(e,fe),j()}Xr([`click`,`pointerdown`]);var $x=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>`),eS=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 tS(e,t){A(t,!0);let n=Ny(),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(()=>ax.endPoint(B(a),`from`)),s=M(()=>ax.endPoint(B(a),`to`)),c=M(()=>!B(o)||!B(s)||!B(i)?``:B(i).points?.length?cs(B(o),B(i).fromSide,B(s),B(i).toSide,B(i).points):ss(B(o),B(i).fromSide,B(s),B(i).toSide)),l=M(()=>{if(!B(s)||!B(i))return``;let[e,t]=es[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=eS();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=$x();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 nS=U(`<span class="led"></span>`),rS=U(`<button class="nodrag svelte-1dgo2s3" type="button"><!></button>`),iS=U(`<div class="body svelte-1dgo2s3"><!></div>`),aS=U(`<div class="foot stack svelte-1dgo2s3"><!></div>`),oS=U(`<button class="link nodrag svelte-1dgo2s3" type="button"> </button>`),sS=U(`<p class="foot svelte-1dgo2s3"><span> </span> <!></p>`),cS=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 lS(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),s=X(t,`variant`,3,``);var c=cS();let l;var u=F(c);Pi(u,()=>t.band??f);var d=R(u,2),p=F(d),m=e=>{var r=nS();z(()=>{Y(r,`data-state`,t.dot?`running`:t.dot===!1?`failed`:void 0),Y(r,`title`,n())}),W(e,r)};K(p,e=>{r()&&e(m)});var h=R(p,2),g=L(h,!0),_=R(h,2);Pi(_,()=>t.flag??f);var v=R(_,2),y=L(v,!0),b=R(v,2);q(b,21,()=>t.actions,e=>e.label,(e,t)=>{var n=rS(),r=F(n),i=e=>{Vc(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(b),k(d);var x=R(d,2),S=e=>{var n=iS();Pi(F(n),()=>t.children),k(n),W(e,n)};K(x,e=>{t.children&&e(S)});var C=R(x,2),w=e=>{var n=aS();Pi(F(n),()=>t.foot),k(n),W(e,n)},T=e=>{var n=sS(),r=F(n),a=L(r,!0),o=R(r,2),s=e=>{var n=oS(),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(C,e=>{t.foot?e(w):i()&&e(T,1)}),k(c),z(e=>{l=J(c,1,`infra ${t.kind??``} ${s()??``}`,`svelte-1dgo2s3`,l,{selected:o(),dimmed:e}),Y(c,`title`,a()),G(g,t.name),G(y,t.tag)},[()=>Z.dimmed(t.id)]),W(e,c),j()}Xr([`click`]);var uS=U(`<span class="where svelte-o6r0zw"> </span>`);function dS(e,t){A(t,!0);{let n=M(()=>t.data.about.join(`
|
|
18
|
+
`)),r=M(()=>[{label:`Settings for ${t.data.name}`,title:`Settings: its addresses, and the apps it calls`,icon:`cog`,run:()=>void _x.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)}}]);lS(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=uS(),i=L(r,!0);z(()=>G(i,t.data.where)),W(e,r)},$$slots:{default:!0}})}j()}var fS=new Set([`$$slots`,`$$events`,`$$legacy`]);function pS(e,t){let n=La(t,fS),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 mS=U(`<span class="band svelte-1k105m0">PROD DATABASE</span>`),hS=U(`<button class="link nodrag" type="button"> </button>`),gS=U(`<span class="state svelte-1k105m0"><span class="led"></span><b class="svelte-1k105m0"> </b><!></span> <span class="then svelte-1k105m0"> </span>`,1),_S=U(`<span> </span>`),vS=U(`<span class="address svelte-1k105m0"> </span>`),yS=U(`<span class="mac svelte-1k105m0"><!>On this Mac</span> <!>`,1),bS=U(`<span class="via svelte-1k105m0"> </span> <span class="address deployed svelte-1k105m0"> </span>`,1),xS=U(`<span class="choice svelte-1k105m0"><span class="seg nodrag svelte-1k105m0" role="radiogroup"><label class="svelte-1k105m0"><input type="radio" value="deployed"/>Deployed</label> <label class="svelte-1k105m0"><input type="radio" value="local"/>Local</label></span> <!></span> <!>`,1),SS=U(`<p> </p>`),CS=U(`<form class="ask nodrag nopan nowheel svelte-1k105m0"><header class="svelte-1k105m0"><b class="svelte-1k105m0"> </b> <span class="svelte-1k105m0">Asked once. Kept on this Mac only, never shared with the stack.</span></header> <div class="fields svelte-1k105m0"><label class="svelte-1k105m0">Host<input class="mono svelte-1k105m0" autocomplete="off" spellcheck="false"/></label> <label class="svelte-1k105m0">Port<input class="mono svelte-1k105m0" inputmode="numeric" autocomplete="off"/></label> <label class="wide svelte-1k105m0">Database name<input class="mono svelte-1k105m0" autocomplete="off" spellcheck="false"/></label></div> <!> <footer class="svelte-1k105m0"><button class="link" type="button">Test connection</button> <span class="svelte-1k105m0"></span> <button class="text svelte-1k105m0" type="button">Cancel</button> <button class="text go svelte-1k105m0" type="submit">Use local</button></footer></form>`),wS=U(`<div class="ask guard nodrag nopan svelte-1k105m0" role="alertdialog"><header class="svelte-1k105m0"><b class="svelte-1k105m0"> </b> <span class="svelte-1k105m0"> </span></header> <footer class="svelte-1k105m0"><span class="svelte-1k105m0"></span> <button class="text svelte-1k105m0" type="button">Keep Local</button> <button class="text danger svelte-1k105m0" type="button">Use PROD database</button></footer></div>`),TS=U(`<!> <!> <!>`,1);function ES(e,t){A(t,!0);let n=M(()=>Z.env.toUpperCase()),r=M(()=>t.data.kind?t.data.kind.charAt(0)+t.data.kind.slice(1).toLowerCase():`database`),i=M(()=>vx.addresses[t.data.database]),a=M(()=>vx.answers[t.data.database]),o=M(()=>t.data.through.split(`:`).at(-1)??``),s=M(()=>t.data.through?Q.tunnel(B(o),t.data.apps):void 0),c=M(()=>Z.protected&&!t.data.local);vx.load().then(()=>{t.data.local&&vx.test(t.data.database)});let l=N(!1),u=N(!1),d=N(`localhost`),f=N(``),p=N(``),m=N(``),h=N(null),g=()=>{P(d,B(i)?.host??`localhost`,!0),P(f,B(i)?String(B(i).port):``,!0),P(p,B(i)?.database??``,!0),P(m,``),P(h,null),P(l,!0)},_=()=>({host:B(d).trim(),port:Number(B(f)),...B(p).trim()&&{database:B(p).trim()}}),v=async()=>{let e=await vx.test(t.data.database,_());P(typeof e==`string`?m:h,e,!0)},y=async()=>{let e=await vx.keep(t.data.database,_());e?P(m,e,!0):(P(l,!1),Z.setDatabase(t.data.database,!0),vx.test(t.data.database))},b=(e,n)=>{if(n!==t.data.local){if(n&&!B(i)||!n&&Z.protected)for(let n of e.currentTarget.closest(`.seg`)?.querySelectorAll(`input`)??[])n.checked=n.value===`local`===t.data.local;n&&!B(i)?g():n?(Z.setDatabase(t.data.database,!0),vx.test(t.data.database)):Z.protected?P(u,!0):Z.setDatabase(t.data.database,!1)}},x=async()=>{let e=await oo(`restart-tunnel`,{port:Number(B(o))});`error`in e?$.show(e.error,`warning`):$.show(`The tunnel to ${t.data.name} started again.`)},S=M(()=>t.data.apps.map(e=>Z.nameOf(e)).join(` and `)),C=M(()=>t.data.local?B(i)?B(a)===`testing`?{light:`starting`,said:`Testing…`,then:`On ${yx(B(i))}`}:B(a)===!1?{light:`failed`,said:`Local not answering`,then:`Nothing on ${B(i).host}:${String(B(i).port)}. Start your local ${B(r)}, or switch to Deployed.`,act:[`Test again`,()=>void vx.test(t.data.database)]}:{light:B(a)?`running`:`absent`,said:B(a)?`Reachable`:`Not tested yet`,then:B(a)?`On this Mac, tested just now`:`Used by ${B(S)}`,act:[`Change address`,g]}:{light:`absent`,said:`No address yet`,then:`Switch to Local to say where it runs.`}:B(c)?{light:`user`,said:`Asks before each run`,then:`Real customer data`}:t.data.through?B(s)===!1?{light:`failed`,said:`Tunnel down`,then:`Comes back when the tunnel reconnects.`,act:[`Reconnect tunnel`,()=>void x()]}:B(s)?{light:`running`,said:`Reachable`,then:`Through the tunnel`}:{light:`absent`,said:`Not open yet`,then:`Its tunnel opens first when the board runs.`}:{light:`absent`,said:`No tunnel`,then:`The stack names no ${B(n)} tunnel for it.`});var w=TS(),T=I(w);{let e=e=>{var t=si(),n=I(t),r=e=>{W(e,mS())};K(n,e=>{B(c)&&e(r)}),W(e,t)},a=e=>{var t=gS(),n=I(t),r=F(n),i=R(r),a=L(i,!0),o=R(i),s=e=>{var t=hS(),n=L(t,!0);z(()=>G(n,B(C).act[0])),H(`click`,t,function(...e){B(C).act[1]?.apply(this,e)}),W(e,t)};K(o,e=>{B(C).act&&e(s)}),k(n);var c=L(R(n,2),!0);z(()=>{Y(r,`data-state`,B(C).light),G(a,B(C).said),G(c,B(C).then)}),W(e,t)},o=M(()=>[t.data.local&&`local`,B(c)&&`prod`].filter(Boolean).join(` `)),s=M(()=>t.data.kind||`Database`),l=M(()=>[{label:`Settings for ${t.data.name}`,title:`Settings: its name, and its tunnel and hosts entry on each environment`,icon:`cog`,run:()=>void _x.settings?.open({title:t.data.name,path:`databases.${t.data.database}`})}]);lS(T,{get id(){return t.id},kind:`database`,get variant(){return B(o)},get name(){return t.data.name},get tag(){return B(s)},get title(){return t.data.name},get selected(){return t.selected},get actions(){return B(l)},band:e,foot:a,children:(e,a)=>{var o=xS(),s=I(o),l=F(s),u=F(l),d=F(u);fa(d),Ae(),k(u);var f=R(u,2),p=F(f);fa(p),Ae(),k(f),k(l);var m=R(l,2),h=e=>{var t=_S();let r;var i=L(t,!0);z(()=>{r=J(t,1,`env svelte-1k105m0`,null,r,{prod:B(c)}),G(i,B(n))}),W(e,t)};K(m,e=>{t.data.local||e(h)}),k(s);var g=R(s,2),_=e=>{var t=yS(),n=I(t);Ua(F(n),{get of(){return pS},size:14}),Ae(),k(n);var r=R(n,2),a=e=>{var t=vS(),n=L(t,!0);z(e=>G(n,e),[()=>yx(B(i))]),W(e,t)};K(r,e=>{B(i)&&e(a)}),W(e,t)},v=e=>{var n=bS(),r=I(n),i=L(r),a=L(R(r,2),!0);z(()=>{G(i,`Through ${t.data.tunnel??``}`),G(a,t.data.through)}),W(e,n)};K(g,e=>{t.data.local?e(_):t.data.through&&e(v,1)}),z(()=>{Y(l,`aria-label`,`Which ${t.data.name??``} its apps use`),Y(u,`title`,`The ${B(n)??``} database, through its tunnel`),Y(d,`name`,`database-${t.data.database??``}`),ma(d,!t.data.local),Y(f,`title`,`Your own ${B(r)??``} on this Mac`),Y(p,`name`,`database-${t.data.database??``}`),ma(p,t.data.local)}),H(`change`,d,e=>{b(e,!1)}),H(`change`,p,e=>{b(e,!0)}),W(e,o)},$$slots:{band:!0,foot:!0,default:!0}})}var ee=R(T,2),te=e=>{var n=CS(),i=F(n),a=L(F(i));Ae(2),k(i);var o=R(i,2),s=F(o),c=R(F(s));fa(c),k(s);var u=R(s,2),g=R(F(u));fa(g),k(u);var _=R(u,2),b=R(F(_));fa(b),k(_),k(o);var x=R(o,2),S=e=>{var t=SS();let n;var i=L(t,!0);z(()=>{n=J(t,1,`said svelte-1k105m0`,null,n,{bad:!!B(m)||B(h)===!1}),G(i,B(m)||(B(h)?`${B(d)}:${B(f)} answers.`:`Nothing answers on ${B(d)}:${B(f)}. Is your ${B(r)} running?`))}),W(e,t)};K(x,e=>{(B(m)||B(h)!==null)&&e(S)});var C=R(x,2),w=F(C),T=R(w,4);Ae(2),k(C),k(n),z(()=>{Y(n,`aria-label`,`Where your local ${t.data.name??``} runs`),G(a,`Where does your local ${t.data.name??``} database run?`)}),V(`submit`,n,e=>{e.preventDefault(),y()}),ba(c,()=>B(d),e=>P(d,e)),ba(g,()=>B(f),e=>P(f,e)),ba(b,()=>B(p),e=>P(p,e)),H(`click`,w,()=>void v()),H(`click`,T,()=>P(l,!1)),W(e,n)};K(ee,e=>{B(l)&&e(te)});var E=R(ee,2),ne=e=>{var n=wS(),r=F(n),i=F(r),a=L(i),o=L(R(i,2));k(r);var s=R(r,2),c=R(F(s),2),l=R(c,2);k(s),k(n),z(()=>{Y(n,`aria-label`,`Use the PROD ${t.data.name??``} database?`),G(a,`Use the PROD ${t.data.name??``} database?`),G(o,`${B(S)??``} will read and write real customer data. Koppler asks again before every run.`)}),H(`click`,c,()=>P(u,!1)),H(`click`,l,()=>{P(u,!1),Z.setDatabase(t.data.database,!1)}),W(e,n)};K(E,e=>{B(u)&&e(ne)}),W(e,w),j()}Xr([`click`,`change`]);var DS=new Set([`$$slots`,`$$events`,`$$legacy`]);function OS(e,t){let n=La(t,DS),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 kS=U(`<span class="warn svelte-1jmpek8" role="img"><!></span>`),AS=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 jS(e,t){A(t,!0);let n=M(()=>Z.env.toUpperCase()),r=Ny(),i=M(()=>r.current.zoom<lc);{let r=e=>{var n=si(),r=I(n),a=e=>{var n=kS();Ua(F(n),{get of(){return OS},size:13}),k(n),z(e=>{Y(n,`aria-label`,t.data.shares),Y(n,`title`,e)},[()=>t.data.about.slice(1).join(`
|
|
19
|
+
`)]),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(`
|
|
20
|
+
`)),s=M(()=>[{label:`Settings for ${t.data.name}`,title:`Settings: the queue's name and its queue on each environment`,icon:`cog`,run:()=>void _x.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)}}]);lS(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=AS(),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 MS=U(`<li class="svelte-s23l4l"><span class="svelte-s23l4l"> </span><span class="use svelte-s23l4l"> </span></li>`),NS=U(`<ul class="rows svelte-s23l4l" aria-label="Databases behind it"></ul>`),PS=U(`<span class="label">Local port</span> <span> </span> <span class="label">Goes to</span> <span class="host svelte-s23l4l"> </span> <!>`,1);function FS(e,t){A(t,!0);let n=M(()=>t.data.local.split(`:`).at(-1)??``),r=M(()=>Q.tunnel(B(n),t.data.apps)),i=M(()=>t.data.rows.length>1?Ys({tunnel:t.data.host}):t.data.what),a=M(()=>t.data.rows.filter(e=>e.use!==`local`)),o=M(()=>t.data.rows.length&&!B(a).length?`Closed · nothing needs it`:B(r)===!1?`Down`:B(r)===void 0?`Not running`:t.data.rows.length?B(a).length===t.data.rows.length?t.data.rows.length>1?`Open · ${String(t.data.rows.length)} databases`:`Open`:`Open for ${B(a).map(e=>e.name).join(` and `)}`:`Connected`),s=N(void 0);Fn(()=>{let e=[...B(s)?.querySelectorAll(`li[data-database]`)??[]],n=B(s)?.closest(`.infra`);n&&t.data.rows.length&&(Z.rowY[t.id]=Object.fromEntries(e.map(e=>[e.dataset.database??``,e.offsetTop-n.offsetTop+e.offsetHeight/2])))});let c={deployed:`Deployed`,local:`Local, skips the tunnel`,hidden:`Cable hidden`},l=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.`)},u=M(()=>[{label:`Settings for the ${t.data.what} tunnel`,title:`Settings: the host, its port and how it is opened`,icon:`cog`,run:()=>void _x.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`),a=M(()=>[t.data.host,...t.data.about].join(`
|
|
21
|
+
`)),d=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:gb,run:()=>void l()});lS(e,{get id(){return t.id},kind:`tunnel`,get name(){return B(i)},tag:`Tunnel`,hasDot:!0,get dot(){return B(r)},get dotTitle(){return B(n)},get status(){return B(o)},get title(){return B(a)},get selected(){return t.selected},get actions(){return B(u)},get act(){return B(d)},children:(e,n)=>{var r=PS(),i=R(I(r),2);let a;var o=L(i,!0),l=R(i,4),u=L(l,!0),d=R(l,2),f=e=>{var n=NS();q(n,21,()=>t.data.rows,e=>e.database,(e,t)=>{var n=MS(),r=F(n),i=L(r,!0),a=L(R(r),!0);k(n),z(()=>{Y(n,`data-use`,B(t).use),Y(n,`data-database`,B(t).database),G(i,B(t).name),G(a,c[B(t).use])}),W(e,n)}),k(n),Aa(n,e=>P(s,e),()=>B(s)),W(e,n)};K(d,e=>{t.data.rows.length&&e(f)}),z(()=>{a=J(i,1,`well svelte-s23l4l`,null,a,{moved:t.data.moved}),G(o,t.data.local),G(u,t.data.host)}),W(e,r)},$$slots:{default:!0}})}j()}var IS=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)}},LS={ok:!1,unsure:!0,text:`Cannot test`,detail:`Testing needs the Koppler canvas running (koppler canvas).`},RS=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(()=>LS):LS;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)))}},zS=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>`),BS=U(`<button class="tool svelte-ibqofz" type="button" role="radio"><!></button>`),VS=U(`<button class="clear svelte-ibqofz" title="Remove every card from this board. Undo brings them back.">Clear</button>`),HS=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>`),US=ai(`<path></path><path class="hit svelte-ibqofz" role="presentation"></path>`,1),WS=ai(`<path class="hit svelte-ibqofz" role="presentation"></path>`),GS=ai(`<text class="via svelte-ibqofz"> </text>`),KS=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>`),qS=ai(`<svg class="links svelte-ibqofz" aria-hidden="true"><!><!></svg>`),JS=ai(`<circle role="presentation" r="5"></circle>`),YS=ai(`<title class="svelte-ibqofz"> </title>`),XS=ai(`<circle r="7"><!></circle><circle class="light svelte-ibqofz" r="3.4"></circle>`,1),ZS=ai(`<!><!>`,1),QS=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),$S=ai(`<path class="draft svelte-ibqofz"></path>`),eC=ai(`<svg role="group" aria-label="Cable ends"><!><!><!></svg>`),tC=U(`<!> <!> <!> <!> <!> <!>`,1),nC=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>`),rC=U(`<ul aria-label="Or open a board" class="svelte-ibqofz"></ul>`),iC=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>`),aC=U(`<div class="line-menu svelte-ibqofz" role="menu" aria-label="Line"><button type="button" role="menuitem" class="svelte-ibqofz"> </button></div>`),oC=U(`<div class="area svelte-ibqofz" role="presentation"><!> <!> <!></div>`);function sC(e,t){A(t,!0);let n=Wv();Z.toFlow=e=>n.screenToFlowPosition(e,{snapToGrid:!1}),Z.zoom=()=>n.getZoom();let r=Ny(),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(()=>{RS.follow(B(oe))});let m=M(()=>{let e=ax.draft;return e?e.points.length?cs(e.a,e.side,e.b,e.bSide,e.points):ss(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`,Zy],[`hand`,`Hand (H): drag to move around. Or hold Space while dragging`,Vy]],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?IS.redo():IS.undo()}else t===`f`?pe():t===`p`||t===`escape`&&Z.present?fe():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})||pe(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=as(t,o),c=as(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:ss(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,host:n.host,what:n.what,payload:a,...E(r,i),idle:!Q.up(e)}]})),D=Z.nameOf,re=N(null),ie=(e,t,n,r)=>{e.preventDefault(),P(re,{x:e.clientX,y:e.clientY,app:t,host:n,show:r},!0)},ae=(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}.`,oe=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}))]),se=M(()=>Z.flows.flatMap(({from:e,to:t,queue:n,database:r,via:i})=>{let a=e=>Z.boxes.get(e)??Z.infraBoxes.get(e),[o,s]=[a(e),a(t)];if(!o||!s)return[];let c=s.x+s.w/2-(o.x+o.w/2),l=s.y+s.h/2-(o.y+o.h/2),u=c>0?[`right`,`left`]:[`left`,`right`],d=Math.abs(c)*.6>Math.abs(l)?u:l>0?[`bottom`,`top`]:[`top`,`bottom`],f=Z.ledBy(e).includes(t)||Z.ledBy(t).includes(e),p=(e,t)=>Z.boxes.has(e)&&!!Z.ledBy(e).length&&Z.infraSide(e)===t;!f&&(p(e,d[0])||p(t,d[1]))&&(d=u);let m=r?Z.rowY[e]?.[r]:void 0;m!==void 0&&(d=[s.x+s.w<o.x?`left`:`right`,s.x>o.x+o.w?`left`:(s.x+s.w,o.x,`right`)]);let[h,g]=[m===void 0?as(o,d[0]):{x:d[0]===`right`?o.x+o.w:o.x,y:o.y+m},as(s,d[1])],_=[...Z.boxes,...Z.infraBoxes].filter(([n])=>n!==e&&n!==t),v=r&&m===void 0&&Z.boxes.has(e)?((e,t)=>_.filter(([,n])=>[.2,.35,.5,.65,.8].some(r=>{let i=e.x+(t.x-e.x)*r,a=e.y+(t.y-e.y)*r;return i>n.x&&i<n.x+n.w&&a>n.y&&a<n.y+n.h})))(h,g):[],y;if(v.length){let e=s.x+s.w/2<=o.x+o.w/2?`left`:`right`;d=[e,e],[h,g]=[as(o,e),as(s,e)];let t=[o,s,...v.map(([,e])=>e)];y={x:e===`left`?Math.min(...t.map(e=>e.x))-40:Math.max(...t.map(e=>e.x+e.w))+40,y:(h.y+g.y)/2}}return[{key:`${e}>${t}`,from:e,to:t,tunnel:r&&!Z.databases[r]&&Z.boxes.has(e)?Z.tunnelOf(r):void 0,d:y?cs(h,d[0],g,d[1],[y]):ss(h,d[0],g,d[1]),start:h,end:g,kind:n?Z.queues[n]===`local`?`msg local`:`msg`:r?Z.databases[r]?`db local`:m===void 0?`db`:`db row`:`ext`,via:i,label:y?{x:y.x+(d[0]===`left`?-8:8),y:y.y,anchor:d[0]===`left`?`end`:`start`}:es[d[0]][0]===0?{x:(h.x+g.x)/2+8,y:(h.y+g.y)/2,anchor:`start`}:{x:(h.x+g.x)/2,y:(h.y+g.y)/2-9,anchor:`middle`}}]})),ce=M(()=>new Map(Z.nodes.map((e,t)=>[e.id,(e.selected?Z.nodes.length:0)+t]))),le=(e,t)=>{let n=B(ce).get(t)??0;return[...Z.boxes].some(([r,i])=>r!==t&&(B(ce).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)},ue=()=>new Promise(requestAnimationFrame);Fn(()=>{Z.brief=r.current.zoom<.6||Z.live});let de=!1,fe=async()=>{if(Z.present=!Z.present,!de){for(de=!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,de=!1}await ue(),await ue(),await pe()},pe=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 yh({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,...me[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 ue();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 ue(),await ue()),await n.setViewport(t(i(),lc-.01),{duration:e})}},me={};Fn(()=>{if(r.current.zoom<.6||Z.live)return;for(let[e,{w:t,h:n}]of Z.boxes)me[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 he=async()=>{!Z.live&&r.current.zoom<.6&&!Z.nodes.every(e=>me[e.id])&&(await n.setZoom(1,{duration:0}),await ue(),await ue()),Z.arrange(e=>{let t=Z.boxes.get(e)??{w:260,h:160};return me[e]??{w:t.w,h:Z.fullHeights[e]??t.h}}),requestAnimationFrame(()=>void pe())};Fn(()=>{let e=Z.opened;e&&Z.nodes.every(e=>e.measured?.width)&&(Z.opened=null,e===`arrange`?he():requestAnimationFrame(()=>void pe()))});var ge=oC();V(`keydown`,hn,e=>{e.key===`Escape`&&P(re,null),C(e),y(e),T(e)}),V(`keyup`,hn,e=>{C(e),y(e)}),V(`blur`,hn,()=>{P(g,!1),P(re,null)}),V(`pointermove`,hn,w,!0),V(`pointerdown`,hn,e=>{a={x:e.clientX,y:e.clientY},e.target.closest(`.line-menu`)||P(re,null)},!0),V(`pointerup`,hn,()=>a=null,!0);var _e=F(ge),ve=()=>Z.flowNodes(),ye=e=>{Z.fromFlow(e,`${String(r.current.zoom<.6)} ${String(Z.live)}`,Q.asked)&&IS.adopt()};{let e=M(()=>({app:Qx,tunnel:FS,queue:jS,outside:dS,database:ES})),t=M(()=>({cable:tS})),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(()=>sb(mb.now.scheme)?`light`:`dark`);sy(_e,za({get nodes(){return ve()},set nodes(e){ye(e)},get nodeTypes(){return B(e)},get edgeTypes(){return B(t)},get connectionMode(){return jm.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 Nm.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=tC(),a=I(i);yy(a,{get variant(){return fy.Dots},gap:20,size:1.4,bgColor:`var(--desk)`,patternColor:`var(--line)`});var o=R(a,2);Qv(o,{position:`top-left`,children:(e,t)=>{var n=zS(),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);Qv(s,{position:`bottom-center`,children:(e,t)=>{var i=HS(),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=BS();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 rb},size:16}),k(o);var s=R(o,2);Ua(F(s),{get of(){return tb},size:16}),k(s);var c=R(s,2);Ua(F(c),{get of(){return Uy},size:16}),k(c);var l=R(c,2);Ua(F(l),{get of(){return Gy},size:16}),k(l);var u=R(l,2),f=F(u),p=M(()=>d(1/1.2));Ua(F(f),{get of(){return Yy},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 $y},size:16}),k(_),k(u);var x=R(u,2);Ua(F(x),{get of(){return qy},size:16}),k(x);var S=R(x,2),C=e=>{var t=VS();z(()=>t.disabled=!Z.nodes.length),H(`click`,t,()=>{let e=Z.nodes.length;wx.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=!IS.canUndo,s.disabled=!IS.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,()=>{IS.undo()}),H(`click`,s,()=>{IS.redo()}),H(`click`,c,()=>void he()),H(`click`,l,()=>void pe()),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 fe()),W(e,i)},$$slots:{default:!0}});var c=R(s,2);ky(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);dy(l,{target:`back`,children:(e,t)=>{var n=qS(),r=F(n);q(r,17,()=>B(ne),e=>e.key,(e,t)=>{var n=US(),r=I(n);let i;var a=R(r);z((e,n,o)=>{i=J(r,0,`link svelte-ibqofz`,null,i,{idle:B(t).idle,dimmed:e,lit:n,snapped:o}),Y(r,`d`,B(t).d),Y(a,`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}`)]),H(`contextmenu`,a,e=>{Z.databasesOf(B(t).from).some(e=>Z.tunnelOf(e)===B(t).host)&&ie(e,B(t).from,B(t).host,!1)}),W(e,n)}),q(R(r),17,()=>B(se),e=>e.key,(e,t,n,r)=>{var i=KS();let a;var o=F(i),s=R(o),c=R(s),l=e=>{let n=M(()=>B(t).tunnel);var r=WS();z(()=>Y(r,`d`,B(t).d)),H(`contextmenu`,r,e=>{ie(e,B(t).from,B(n),!0)}),W(e,r)};K(c,e=>{B(t).tunnel&&e(l)});var u=R(c),d=R(u),f=R(d),p=e=>{var n=GS(),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(f,e=>{B(t).via&&e(p)}),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(u,`cx`,B(t).end.x),Y(u,`cy`,B(t).end.y),Y(d,`cx`,B(t).start.x),Y(d,`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}}),dy(R(l,2),{target:`front`,style:`position: absolute; z-index: 1001`,children:(e,t)=>{var n=eC();let r;var i=F(n);q(i,19,()=>Z.edges,e=>e.id,(e,t,n)=>{let r=M(()=>ax.endPoint(B(n),`from`)),i=M(()=>ax.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(()=>RS.results[B(t).id]);var o=ZS(),s=I(o),c=e=>{var n=JS();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:ax.grabbed?.id===B(t).id&&ax.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=>{ax.grabEnd(e,B(t).id,`from`)}),W(e,n)},l=M(()=>!le(B(r),B(t).source));K(s,e=>{B(l)&&e(c)});var u=R(s),d=e=>{var r=XS(),o=I(r);let s;var c=F(o),l=e=>{var n=YS(),r=L(n,!0);z(e=>G(r,e),[()=>ae(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:ax.grabbed?.id===B(t).id&&ax.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(),RS.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},ax.grabEnd(e,B(t).id,`to`)}),H(`click`,o,e=>{B(n)&&Math.hypot(e.clientX-p.x,e.clientY-p.y)<6&&RS.test({key:B(t).id,payload:{from:B(t).source,to:B(t).target}})}),W(e,r)},f=M(()=>!le(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(()=>RS.results[B(t).key]);var r=QS(),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(),()=>ae(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(),RS.test(B(t)))}),H(`pointerdown`,i,e=>{e.stopPropagation()}),H(`click`,i,()=>void RS.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=$S();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:!!ax.grabbed,drawing:!!ax.draft,still:Z.live})),W(e,n)},$$slots:{default:!0}}),W(e,i)},$$slots:{default:!0}}))}var be=R(_e,2),xe=e=>{var t=iC(),n=R(F(t),2),r=e=>{var t=rC();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=nC(),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 ${gx(i())}`:``]),H(`click`,o,()=>{fx(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(be,e=>{Z.nodes.length||e(xe)});var Se=R(be,2),Ce=e=>{let t=M(()=>B(re));var n=aC();let r;var i=F(n),a=L(i);k(n),z(e=>{r=Ji(n,``,r,{left:`${B(t).x??``}px`,top:`${B(t).y??``}px`}),G(a,`${B(t).show?`Show`:`Hide`} tunnel for ${e??``}`)},[()=>D(B(t).app)]),H(`click`,i,()=>{Z.showTunnelFor(B(t).app,B(t).host,B(t).show),P(re,null)}),W(e,n)};K(Se,e=>{B(re)&&e(Ce)}),k(ge),Aa(ge,e=>P(c,e),()=>B(c)),V(`dragover`,ge,e=>{e.dataTransfer?.types.includes(`text/app`)&&e.preventDefault()}),V(`drop`,ge,e=>{let t=e.dataTransfer?.getData(`text/app`);t&&!Z.live&&(e.preventDefault(),Z.add(t,{x:e.clientX,y:e.clientY}))}),H(`focusin`,ge,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,ge),j()}Xr([`focusin`,`change`,`click`,`contextmenu`,`pointerdown`,`keydown`]);var cC=new Set([`$$slots`,`$$events`,`$$legacy`]);function lC(e,t){let n=La(t,cC),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 uC=new Set([`$$slots`,`$$events`,`$$legacy`]);function dC(e,t){let n=La(t,uC),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 fC=U(`<button class="i svelte-1ixstkt" type="button"><!></button>`),pC=U(`<p class="result svelte-1ixstkt"> </p>`),mC=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>`),hC=U(`<button type="button" class="svelte-1ixstkt">Test</button> <button type="button" class="svelte-1ixstkt">Remove</button>`,1),gC=U(`<button type="button" title="A command for your own terminal that fetches and stores it without showing it" class="svelte-1ixstkt"> </button>`),_C=U(`<p class="nohow svelte-1ixstkt"> </p>`),vC=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
|
|
22
|
+
fetch the value and store it without showing it.</p> <!></div>`),yC=U(`<div class="acts svelte-1ixstkt"><button type="button" class="svelte-1ixstkt"> </button> <!></div> <!> <!>`,1),bC=U(`<dt class="svelte-1ixstkt">When</dt> <dd class="svelte-1ixstkt"> </dd>`,1),xC=U(`<li> </li>`),SC=U(`<ol class="svelte-1ixstkt"></ol>`),CC=U(`<dt class="svelte-1ixstkt">Where</dt> <dd class="svelte-1ixstkt"><!></dd>`,1),wC=U(`<dl class="svelte-1ixstkt"><!> <!></dl>`),TC=U(`<div class="cred svelte-1ixstkt"><div class="head svelte-1ixstkt"><code class="svelte-1ixstkt"> </code> <!> <span class="state svelte-1ixstkt"> </span></div> <!> <!> <!></div>`),EC=U(`<section class="svelte-1ixstkt"><h3 class="svelte-1ixstkt"> </h3> <!></section>`),DC=U(`<p class="none svelte-1ixstkt"> </p>`),OC=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 kC(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 G_,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=OC(),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=EC(),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=TC(),l=F(s),p=F(l),h=L(p,!0),v=R(p,2),S=e=>{var r=fC();Ua(F(r),{get of(){return lC},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=pC(),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=mC(),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=yC(),o=I(r),s=F(o),l=L(s,!0),u=R(s,2),f=e=>{var r=hC(),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=gC(),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=_C(),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
|
|
23
|
+
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=vC();Uc(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=wC(),r=F(t),i=e=>{var t=bC(),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=CC(),r=R(I(t),2),i=F(r),a=e=>{var t=SC();q(t,20,()=>_(B(n).fetchUi),e=>e,(e,t)=>{var n=xC(),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=DC(),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 dC},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 AC=U(`<li class="svelte-14dfga3"><span class="mark svelte-14dfga3">!</span><span class="what svelte-14dfga3"> </span></li>`),jC=U(`<li class="svelte-14dfga3"><span class="mark svelte-14dfga3"></span><span class="what svelte-14dfga3">Working out what is needed…</span></li>`),MC=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>`),NC=U(`<small class="for svelte-14dfga3"> </small>`),PC=U(`<small class="svelte-14dfga3"> </small>`),FC=U(`<!> <!>`,1),IC=U(`<!> <!> <!> <!>`,1),LC=U(`<li><span class="mark svelte-14dfga3"><!></span> <span class="what svelte-14dfga3"> <!> <!></span></li>`),RC=U(`<button class="ok svelte-14dfga3" type="button"> </button>`),zC=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 BC(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 wx.askFacts(Z.env,e),!0)};var l={open:s},u=zC(),d=F(u),f=L(d),p=R(d,4),m=F(p),h=e=>{var t=AC(),n=L(R(F(t)),!0);k(t),z(()=>G(n,B(i))),W(e,t)},g=e=>{W(e,jC())},_=e=>{var t=MC(),n=F(t);Ua(F(n),{get of(){return vb},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=LC();let i;var a=F(r),o=F(a),s=e=>{Ua(e,{get of(){return vb},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=NC(),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=IC(),r=I(n),i=e=>{var n=PC(),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=FC(),r=I(n);Uc(r,{get command(){return B(t).command}});var i=R(r,2),a=e=>{var n=PC(),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=PC(),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=PC(),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=RC(),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 VC=U(`"<strong> </strong>" in the repos means <strong> </strong>`,1),HC=U(`<strong> </strong> calls <strong> </strong>`,1),UC=U(`<strong> </strong> <code class="svelte-cao9th"> </code>`,1),WC=U(`<label class="svelte-cao9th"><input type="checkbox"/> <span><!> <small class="svelte-cao9th"> </small></span></label>`),GC=U(`<section class="svelte-cao9th"><h3 class="svelte-cao9th"> <span class="svelte-cao9th"> </span></h3> <p class="svelte-cao9th"> </p> <!></section>`),KC=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
|
|
24
|
+
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 qC(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 W_,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=KC(),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=GC(),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=WC(),i=F(n);fa(i);var a=R(i,2),o=F(a),u=e=>{var n=VC(),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=HC(),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=UC(),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=UC(),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 JC=Z.nameOf,YC=(e,t,n)=>`${String(e)} ${e===1?t:n}`,XC=e=>e.to?`${e.from} to ${e.to}`:e.from,ZC=e=>`tunnel:${e.host}:${String(e.original)}`,QC=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:`${JC(n)} is starting`}):Q.up(n)===!1?t.push({level:`bad`,id:n,down:!0,text:`${JC(n)} is not running`}):r?t.push({level:`bad`,id:n,text:`${JC(n)}: ${r.label.toLowerCase()} failed`}):e.some(e=>e.state===`user`)&&t.push({level:`warn`,id:n,text:`${JC(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(RS.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:`${JC(i)}${a?` to ${JC(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:JC(e),payload:{node:e}})),...Z.edges.map(({id:e,source:t,target:n})=>({kind:`cable`,key:e,id:t,from:JC(t),to:`local ${JC(n)}`,payload:{from:t,to:n}})),...Z.links.map(({from:e,tunnel:t})=>({kind:`tunnel`,key:`${e}>${ZC(t)}`,id:e,from:JC(e),to:t.what,payload:{app:e,host:t.bind,port:t.port,original:t.original}}))]}result(e){return RS.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));RS.forget(e.map(e=>e.key));for(let n of e){let e=t(n);e&&(RS.results[n.key]={state:`warn`,text:`Not started`,detail:`${JC(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=>RS.test(e,!0)))}async askToFix(){let e=(this.flow??[]).filter(e=>this.result(e).state===`bad`).map(e=>({connection:XC(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(`
|
|
25
|
+
`),n=(Q.status?.agent?.state??`none`)===`none`;this.asked=await wx.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(JC).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?JC(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?JC(s[0]??``):`${String(s.length)} apps`} running, not on this board`,title:`${s.map(JC).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:`${YC(c,`thing is`,`things are`)} off`,title:d}:u?{state:`warn`,label:`${String(u)} not started`,title:`${YC(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)}},$C=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,
|
|
26
|
+
databases and caches.</p>`,1),ew=U(`<progress aria-label="Connections checked" class="svelte-6gc4ih"></progress>`),tw=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>`),nw=U(`<button class="row svelte-6gc4ih" type="button"><span class="route"> </span> <span class="verdict svelte-6gc4ih"> </span></button>`),rw=U(`<details class="svelte-6gc4ih"><summary class="svelte-6gc4ih"> <span class="tally svelte-6gc4ih"> </span></summary> <!></details>`),iw=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,
|
|
27
|
+
stops or restarts anything.</p> <button class="go svelte-6gc4ih" type="button"> </button></div>`),aw=U(`<header class="svelte-6gc4ih"><p class="sum svelte-6gc4ih"> </p> <button type="button" class="svelte-6gc4ih">Check again</button></header> <!> <!> <!> <!>`,1),ow=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 sw(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(()=>QC.chip),c=M(()=>(QC.flow??[]).map(e=>({job:e,result:QC.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(()=>QC.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=ow(),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=$C();Ae(2),W(e,t)},C=e=>{var t=aw(),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=ew();z(()=>{Y(t,`max`,B(c).length),pa(t,B(u))}),W(e,t)};K(s,e=>{QC.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=tw(),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=rw(),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=nw(),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=iw(),n=R(F(t),2),r=L(n,!0);k(t),z(()=>{n.disabled=QC.asked,G(r,QC.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 QC.askToFix()),W(e,t)};K(_,e=>{B(l).length&&!QC.busy&&e(y)}),z(()=>{G(a,B(f)),o.disabled=QC.busy}),H(`click`,o,()=>void QC.check()),W(e,t)};K(x,e=>{!QC.sent.length&&!QC.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(),!QC.flow&&QC.sent.length&&QC.check())}),W(e,t)};K(_,e=>{Q.status&&e(y)}),W(e,g),j()}Xr([`click`]);var cw=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
|
|
28
|
+
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
|
|
29
|
+
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 lw(e){let t=N(void 0),n=e=>{e.key!==`?`||e.target.closest(`input, select, textarea`)||B(t)?.togglePopover()};var r=cw();V(`keydown`,hn,n),Aa(R(I(r),2),e=>P(t,e),()=>B(t)),W(e,r)}var uw=U(`<p class="svelte-146fxte"> </p>`),dw=U(`<h4 class="svelte-146fxte"> </h4>`),fw=U(`<li> </li>`),pw=U(`<ul class="svelte-146fxte"></ul>`),mw=U(`<!> <!> <!>`,1),hw=U(`<span class="svelte-146fxte"> </span>`),gw=U(`<button class="choice svelte-146fxte" type="button"><strong> </strong><!></button>`),_w=U(`<div class="choices svelte-146fxte"></div>`),vw=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),yw=U(`<p class="answered svelte-146fxte"> </p>`),bw=U(`<article><div class="meta svelte-146fxte"><span class="kind svelte-146fxte"> </span><time> </time></div> <h3 class="svelte-146fxte"> </h3> <!> <!> <!> <!></article>`);function xw(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&&Iy.answer(t,{text:n})};var s=bw();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=uw(),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=mw(),r=I(n),i=e=>{var n=dw(),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)=>{Uc(e,{get command(){return t}})});var o=R(a,2),s=e=>{var n=pw();q(n,21,()=>B(t).items,Ti,(e,t)=>{var n=fw(),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=vw(),r=I(n),i=e=>{var n=_w();q(n,21,()=>t.one.choices,e=>e.id,(e,n)=>{var r=gw(),i=F(r),a=L(i,!0),o=R(i),s=e=>{var t=hw(),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 Iy.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 Iy.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=yw(),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 Sw=U(`<button type="button" class="svelte-1ekufpr">Clear</button>`),Cw=U(`<p class="working svelte-1ekufpr" role="status"><span class="dot svelte-1ekufpr" aria-hidden="true"></span> <span class="svelte-1ekufpr"> </span> <small class="svelte-1ekufpr">It takes the next request once this one is done.</small></p>`),ww=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>`),Tw=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
|
|
30
|
+
you run this in your agent session:</p> <!> <ul class="svelte-1ekufpr"></ul></section>`),Ew=U(`<p class="none svelte-1ekufpr">The agent has said nothing yet.</p>`),Dw=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>`),Ow=U(`<p class="none svelte-1ekufpr">Nothing since the canvas started.</p>`),kw=U(`<details class="svelte-1ekufpr"><summary class="svelte-1ekufpr"> </summary> <!></details>`),Aw=U(`<!> <!>`,1),jw=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 Mw(e,t){A(t,!0);let n=N(void 0),r=M(()=>Iy.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`),u=M(()=>{let e=Date.parse(Q.status?.agent?.busy??``);return Number.isNaN(e)||!Q.status?0:Math.floor((Date.now()-e)/6e4)}),d=M(()=>Q.status?.agent?.state===`busy`&&B(u)<10),f=M(()=>{let e=Q.status?.runs?.findLast(e=>e.state===`applying`||e.state===`waiting`);return e?e.kind===`stop`?`the Stop`:`the run on ${(e.env??``).toUpperCase()}`:`your request`});Fn(()=>{Iy.open&&(B(n)?.querySelector(`.choice`)??B(n)?.querySelector(`.close`))?.focus()});var p=si(),m=I(p),h=e=>{var t=jw(),a=F(t),o=R(F(a),2),p=L(o,!0),m=R(o,2),h=e=>{var t=Sw();H(`click`,t,()=>void Iy.clear()),W(e,t)},g=M(()=>B(r).some(e=>!i(e)));K(m,e=>{B(g)&&e(h)});var _=R(m,2);Ua(F(_),{get of(){return to},size:14}),k(_),k(a);var v=R(a,2),y=F(v),b=e=>{var t=Cw(),n=L(R(F(t),2));Ae(2),k(t),z(e=>G(n,`Working on ${B(f)??``}${e??``}`),[()=>B(u)?`, ${String(B(u))} min`:``]),W(e,t)};K(y,e=>{B(d)&&e(b)});var x=R(y,2),S=e=>{var t=Tw(),n=F(t),r=L(n),i=R(n,4);Uc(i,{command:`/koppler-run connect`});var a=R(i,2);q(a,21,()=>Iy.waiting,e=>e.key,(e,t)=>{var n=ww(),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??``}`)},[()=>gx(B(t).at)]),H(`click`,o,()=>void Iy.drop(B(t).key)),W(e,n)}),k(a),k(t),z(()=>G(r,`Waiting for an agent (${Iy.waiting.length??``})`)),W(e,t)};K(x,e=>{Iy.waiting.length&&e(S)});var C=R(x,2),w=e=>{W(e,Ew())},T=e=>{W(e,Dw())},ee=e=>{var t=Aw(),n=I(t);q(n,17,()=>B(s),e=>e.id,(e,t)=>{{let n=M(()=>l(B(t)));xw(e,{get one(){return B(t)},get past(){return B(n)}})}},e=>{W(e,Ow())});var r=R(n,2),i=e=>{var t=kw(),n=F(t),r=L(n);q(R(n,2),17,()=>B(c),e=>e.id,(e,t)=>{{let n=M(()=>l(B(t)));xw(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(C,e=>{!B(r).length&&Iy.waiting.length?e(w):B(r).length?e(ee,-1):e(T,1)}),k(v),k(t),Aa(t,e=>P(n,e),()=>B(n)),z(()=>G(p,Iy.question?`Waiting for your answer`:``)),H(`keydown`,t,e=>{e.key===`Escape`&&(Iy.open=!1)}),H(`click`,_,()=>Iy.open=!1),W(e,t)};K(m,e=>{Iy.open&&e(h)}),W(e,p),j()}Xr([`keydown`,`click`]);var Nw=new Set([`$$slots`,`$$events`,`$$legacy`]);function Pw(e,t){let n=La(t,Nw),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 Fw=new Set([`$$slots`,`$$events`,`$$legacy`]);function Iw(e,t){let n=La(t,Fw),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 Lw=U(`<small class="svelte-i7whuv"> </small>`),Rw=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>`),zw=U(`<span class="changes svelte-i7whuv" title="Code changes Koppler made in your repos"> </span>`),Bw=U(`<p class="reason svelte-i7whuv"> </p>`),Vw=U(`<span> <!></span>`),Hw=U(`<li class="svelte-i7whuv"><span class="verb svelte-i7whuv"> </span> <span class="apps svelte-i7whuv"></span></li>`),Uw=U(`<span class="del svelte-i7whuv"><b aria-hidden="true" class="svelte-i7whuv">-</b><span class="sr svelte-i7whuv">removed: </span> </span>`),Ww=U(`<span class="add svelte-i7whuv"><b aria-hidden="true" class="svelte-i7whuv">+</b><span class="sr svelte-i7whuv">added: </span> </span>`),Gw=U(`<span class="svelte-i7whuv">No lines recorded.</span>`),Kw=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>`),qw=U(`<h4 class="svelte-i7whuv"> </h4> <!>`,1),Jw=U(`<div class="diffs svelte-i7whuv"><h3 class="svelte-i7whuv">Code changes in your repos</h3> <!></div>`),Yw=U(`<button type="button" class="svelte-i7whuv"> </button>`),Xw=U(`<div class="logs svelte-i7whuv"><h3 class="svelte-i7whuv">Logs</h3> <!> <button class="pin svelte-i7whuv" type="button"><!> </button></div>`),Zw=U(`<button class="back svelte-i7whuv" type="button">Put this board back</button>`),Qw=U(`<ul class="plan svelte-i7whuv"></ul> <!> <!> <!>`,1),$w=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 eT(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=Rw(),s=F(r),c=F(s),l=F(c,!0),u=R(l),d=e=>{var t=Lw(),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=$w(),l=F(c),u=F(l),d=F(u,!0),f=R(d),p=e=>{var t=Lw(),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=zw(),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=Bw(),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=Qw(),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=Hw(),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=Vw(),r=F(n,!0),i=R(r),o=e=>{var n=Lw(),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=Jw();q(R(F(n),2),16,()=>B(s),e=>e,(e,n)=>{var r=qw(),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=Kw(),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=Uw(),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=Ww(),r=R(F(n),2,!0);k(n),z(()=>G(r,B(t))),W(e,n)});var u=R(l),d=e=>{W(e,Gw())};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=Xw(),i=R(F(r),2);q(i,16,()=>t.run.logs,e=>e,(e,t)=>{var r=Yw(),i=L(r,!0);z(e=>G(i,e),[()=>a(t)]),H(`click`,r,()=>{ux.open(t,B(n))}),W(e,r)});var o=R(i,2),s=F(o);{let e=M(()=>t.run.pinned?Iw:Pw);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=Zw();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 tT=U(`<p class="none svelte-16dstxb">No runs yet. Each run and Stop shows up here with how it ended.</p>`),nT=U(`<p class="none svelte-16dstxb">No runs since the canvas started.</p>`),rT=U(`<details class="svelte-16dstxb"><summary class="svelte-16dstxb"> </summary> <!></details>`),iT=U(`<!> <!>`,1),aT=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 oT(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(),fx({name:`Run from ${f(e.at)}`,version:1,nodes:e.nodes??{},edges:e.edges??[]})};var h=aT(),g=I(h);let _;Aa(g,e=>P(r,e),()=>B(r));var v=R(g,2),y=F(v),b=e=>{W(e,tT())},x=e=>{var t=iT(),n=I(t);q(n,17,()=>B(u),e=>e.id??e.at,(e,t)=>{{let n=M(()=>B(o)===B(t).id);eT(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,nT())});var r=R(n,2),i=e=>{var t=rT(),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);eT(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 sT=U(`<button class="open svelte-1la1tzd" type="button">Traces</button>`);function cT(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=sT();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 lT=new Set([`$$slots`,`$$events`,`$$legacy`]);function uT(e,t){let n=La(t,lT),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 dT={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`},fT=e=>e==null?``:typeof e==`string`?e:JSON.stringify(e),pT=e=>dT[fT(e).toLowerCase()]??`info`;function mT(e){let t=/T?(\d{2}:\d{2}:\d{2})/.exec(fT(e))?.[1];if(!t)return``;let n=new Date(fT(e));return Number.isNaN(n.getTime())?t:n.toTimeString().slice(0,8)}var hT=(e,t)=>fT(e).replace(/\{[@$]?([\w.]+)(?:[,:][^}]*)?\}/g,(e,n)=>n in t?fT(t[n]):e);function gT(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:mT(n[`@t`]),level:pT(n[`@l`]??`Information`),text:fT(n[`@m`]??hT(n[`@mt`],n)),detail:fT(n[`@x`])};if(`Timestamp`in n||`MessageTemplate`in n||`RenderedMessage`in n){let e=n.Properties??{};return{time:mT(n.Timestamp),level:pT(n.Level),text:fT(n.RenderedMessage??hT(n.MessageTemplate,e)),detail:fT(n.Exception)}}return null}var _T=/\\?\^?\[\[?\d+m|\x1b\[[0-9;]*m/g,vT=[[/^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z?)\s+(INF|ERR|WRN|DBG)\s+(.*)$/,e=>({time:mT(e[1]),level:pT(e[2]),text:e[3]??``,detail:``})],[/^\[(\d{2}:\d{2}:\d{2})\s+(\w+)\]\s*(.*)$/,e=>({time:e[1]??``,level:pT(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(_T,``),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 yT(e){let t=e.trim(),n=gT(t);if(n)return n;for(let[e,n]of vT){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 bT=/^flutter: (#\d+\s|<asynchronous suspension>|\s*-- \S)/,xT=(e,t)=>bT.test(e)&&t.level===`error`||/^\s+(at |---|\.\.\.)/.test(e)||/^\s{2,}\S/.test(e);function ST(e,t,n,r){if(!t.trim())return;let i=e.at(-1);if(i&&r(i)&&xT(t,i)){i.detail+=(i.detail?`
|
|
31
|
+
`:``)+t.replace(/^flutter: /,``).trim();return}let a=yT(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 CT(e){let t=[];for(let{app:n,at:r,approx:i,line:a}of e)ST(t,a,e=>({...e,app:n,at:r,approx:i}),e=>e.app===n);return t}function wT(e){let t=[];for(let n of(e??``).split(`
|
|
32
|
+
`))ST(t,n,e=>e,()=>!0);return t}var TT=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>`),ET=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),DT=U(`<input maxlength="24"/>`),OT=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>`),kT=U(`<label class="svelte-1feoaw6"><input type="radio"/> </label>`),AT=U(`<span class="opt-label svelte-1feoaw6" aria-hidden="true"> </span> <span class="seg svelte-1feoaw6" role="radiogroup"></span>`,1),jT=U(`<div class="apps svelte-1feoaw6" role="group" aria-label="Apps in this log"><!> <span class="opts svelte-1feoaw6"></span></div>`),MT=U(`<p class="empty svelte-1feoaw6"> </p>`),NT=U(`<div><button type="button" class="n svelte-1feoaw6"> </button></div>`),PT=U(`<button type="button"> </button>`),FT=U(`<details class="m svelte-1feoaw6"><summary class="svelte-1feoaw6"> </summary><span class="x svelte-1feoaw6"> </span></details>`),IT=U(`<span class="x svelte-1feoaw6"> </span>`),LT=U(`<span class="m svelte-1feoaw6"> </span> <!>`,1),RT=U(`<!> <div class="row svelte-1feoaw6"><span> </span><span class="l svelte-1feoaw6"> </span> <!> <!></div>`,1),zT=U(`<!> <!>`,1),BT=U(`<div class="row svelte-1feoaw6"><span class="t svelte-1feoaw6"> </span><span class="l svelte-1feoaw6"> </span> <!></div>`),VT=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 HT(e,t){A(t,!0);let n={debug:`DEBUG`,warn:`WARN`,error:`ERROR`,koppler:`KOPPLER`,start:`START`},r=M(()=>ux.active),i=M(()=>B(r)?ux.text(B(r)):``),a=M(()=>{let e={};return(ux.raw?[]:wT(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:ux.names,choices:o,set:e=>{ux.setNames(e)}},{label:`Show`,value:ux.since,choices:s,set:e=>{ux.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(()=>ux.names===`change`),m=M(()=>Object.fromEntries(Z.nodes.map(e=>[e.id,e.data.kind]))),h=M(()=>{if(!B(l))return[];let e={};return CT(ux.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=ux.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&&ux.refresh()}),Fn(()=>{ux.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=VT();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,()=>ux.tabs,e=>e,(e,t)=>{let n=M(()=>ux.past(t)?null:Q.up(t));var i=TT();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`)},[()=>ux.label(t),()=>ux.label(t)]),H(`click`,o,()=>{ux.active=t}),H(`click`,l,()=>{ux.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=ET(),n=I(t),r=R(n,2);z(()=>Y(r,`aria-pressed`,ux.raw)),H(`click`,n,()=>{ux.clear()}),H(`click`,r,()=>ux.raw=!ux.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=jT(),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=DT();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=OT();let i;var a=F(r),o=L(a,!0),s=R(a);Ua(F(s),{get of(){return uT},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=AT(),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=kT(),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=zT(),r=I(t),i=e=>{var t=MT(),n=L(t,!0);z(e=>G(n,e),[()=>ux.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=RT(),i=I(r),a=e=>{var n=NT(),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=PT(),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=FT(),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)},b=e=>{var n=LT(),r=I(n),i=L(r,!0),a=R(r,2),o=e=>{var n=IT(),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=MT(),n=L(t,!0);z(()=>G(n,ux.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=BT(),i=F(r),a=L(i,!0),o=R(i),s=L(o,!0),c=R(o,2),l=e=>{var n=FT(),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(`
|
|
34
|
+
`)]),W(e,n)},u=e=>{var n=LT(),r=I(n),i=L(r,!0),a=R(r,2),o=e=>{var n=IT(),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)?ux.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:ux.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,()=>ux.label(`*`),()=>B(l)||(ux.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,()=>{ux.active=`*`}),H(`click`,le,ee),H(`click`,de,()=>{ux.closeAll()}),W(e,t)};K(re,e=>{B(r)&&e(ie)}),W(e,D),j()}Xr([`pointerdown`,`dblclick`,`keydown`,`click`,`change`]);var UT=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 WT(e,t){let n=X(t,`size`,3,24),r=M(()=>n()<=20?8:6);var i=UT(),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 GT=U(`<button class="open svelte-1skvv7i" type="button" title="The log of every app on the board, in one stream">Logs</button>`);function KT(e,t){A(t,!0);let n=M(()=>ux.active===`*`);var r=GT();z(()=>Y(r,`aria-pressed`,B(n))),H(`click`,r,()=>{ux.active=B(n)?null:`*`}),W(e,r),j()}Xr([`click`]);var qT=U(`<div class="tip svelte-1k9t7z2" popover="manual" role="tooltip"> </div>`);function JT(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=qT();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 YT=new Set([`$$slots`,`$$events`,`$$legacy`]);function XT(e,t){let n=La(t,YT),r={name:`chevron-down`,size:24,node:[[`path`,{d:`m6 9 6 6 6-6`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var ZT=U(`<button type="button" role="menuitem"> <span class="svelte-1i03v8q"> </span></button>`),QT=U(`<button type="button" aria-haspopup="menu"><!></button> <div class="menu svelte-1i03v8q" popover="" role="menu" tabindex="-1"></div>`,1);function $T(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=QT(),u=I(l);Ua(F(u),{get of(){return XT},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=ZT();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 eE=new Set([`$$slots`,`$$events`,`$$legacy`]);function tE(e,t){let n=La(t,eE),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 nE=new Set([`$$slots`,`$$events`,`$$legacy`]);function rE(e,t){let n=La(t,nE),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 iE=U(`<button class="text svelte-r1euo8" type="button">Copy</button> <button class="text svelte-r1euo8" type="button">Clear</button>`,1),aE=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),oE=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),sE=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>`),cE=U(`<span class="group svelte-r1euo8"> </span> <div class="schemes svelte-r1euo8"></div>`,1),lE=U(`<button class="link svelte-r1euo8" type="button">Scheme default</button>`),uE=U(`<button type="button" role="radio" class="svelte-r1euo8"></button>`),dE=U(`<div class="picks-head svelte-r1euo8"><h2 class="svelte-r1euo8"> </h2> <!></div> <div class="picks svelte-r1euo8" role="radiogroup"></div>`,1),fE=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 pE(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 Ec.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(ib),o=[[`Dark`,a.filter(([e])=>!sb(e))],[`Light`,a.filter(([e])=>sb(e))]],s=M(()=>[[`Local`,cb(mb.now.scheme).locals,mb.local,e=>{mb.pickLocal(e)}],[`Deployed`,cb(mb.now.scheme).deployeds,mb.deployed,e=>{mb.pickDeployed(e)}]]),c=M(()=>!!(mb.now.local??mb.now.deployed));var l=fE(),u=I(l);Ua(F(u),{get of(){return Bc},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=iE(),n=I(t),r=R(n,2);H(`click`,n,i),H(`click`,r,()=>{Ec.clear(),$.show(`Debug log cleared`)}),W(e,t)};K(h,e=>{Ec.on&&e(g)}),k(f);var _=R(f,2),y=F(_),b=e=>{var t=aE(),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=oE();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=cE(),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=sE(),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`,mb.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,()=>{mb.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=dE(),l=I(s),u=F(l),d=L(u,!0),f=R(u,2),p=e=>{var t=lE();H(`click`,t,()=>{mb.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=uE();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`,Ec.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=Ec.forced}),Ca(m,()=>Ec.on,e=>Ec.on=e),W(e,l),j()}Xr([`click`]);var mE=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>`),hE=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 gE(e,t){A(t,!0);let n=M(()=>(Q.status?.checks??[]).some(e=>e.state!==`ok`));var r=hE();let i;var a=F(r),o=F(a);Ua(o,{get of(){return rE},size:16});var s=L(R(o,2),!0);k(a);var c=R(a,2),l=F(c);Ua(l,{get of(){return tE},size:16});var u=L(R(l,2));k(c);var d=R(c,2),f=F(d),p=e=>{var n=mE();Ua(F(n),{get of(){return OS},size:15}),k(n),H(`click`,n,()=>{t.open()}),W(e,n)};K(f,e=>{B(n)&&e(p)}),pE(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 _E=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>`),vE=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
|
|
35
|
+
(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 yE(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=vE(),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=_E(),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 bE=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 xE(e,t){A(t,!0);let n=M(()=>Z.panelCard);var r=si(),i=I(r),a=e=>{var t=bE();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=>{rx(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 SE=new Set([`$$slots`,`$$events`,`$$legacy`]);function CE(e,t){let n=La(t,SE),r={name:`chevron-right`,size:24,node:[[`path`,{d:`m9 18 6-6-6-6`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var wE=U(`<p class="bad svelte-1kcafyk"> </p>`),TE=U(`<form class="svelte-1kcafyk"><label class="svelte-1kcafyk">Host<input class="mono svelte-1kcafyk" autocomplete="off" spellcheck="false"/></label> <label class="svelte-1kcafyk">Port<input class="mono svelte-1kcafyk" inputmode="numeric" autocomplete="off"/></label> <label class="wide svelte-1kcafyk">Database name<input class="mono svelte-1kcafyk" autocomplete="off" spellcheck="false"/></label> <!> <span class="acts svelte-1kcafyk"><button class="text svelte-1kcafyk" type="button">Cancel</button> <button class="text svelte-1kcafyk" type="submit">Keep</button></span></form>`),EE=U(`<span class="mono svelte-1kcafyk"> </span>`),DE=U(`<span class="none svelte-1kcafyk">Not set. Asked the first time you switch to Local.</span>`),OE=U(`<button class="link" type="button">Forget</button>`),kE=U(`<span class="at svelte-1kcafyk"><!> <button class="link" type="button"> </button> <!></span>`),AE=U(`<section class="local svelte-1kcafyk" aria-label="Local, this Mac"><span class="label svelte-1kcafyk">Local, this Mac</span> <!> <small class="svelte-1kcafyk">Kept on this Mac only, never in the stack.</small></section>`);function jE(e,t){A(t,!0),vx.load();let n=M(()=>vx.addresses[t.database]),r=N(!1),i=N(``),a=N(``),o=N(``),s=N(``),c=()=>{P(i,B(n)?.host??`localhost`,!0),P(a,B(n)?String(B(n).port):``,!0),P(o,B(n)?.database??``,!0),P(s,``),P(r,!0)},l=async()=>{let e=await vx.keep(t.database,{host:B(i).trim(),port:Number(B(a)),...B(o).trim()&&{database:B(o).trim()}});e?P(s,e,!0):P(r,!1)};var u=AE(),d=R(F(u),2),f=e=>{var t=TE(),n=F(t),c=R(F(n));fa(c),k(n);var u=R(n,2),d=R(F(u));fa(d),k(u);var f=R(u,2),p=R(F(f));fa(p),k(f);var m=R(f,2),h=e=>{var t=wE(),n=L(t,!0);z(()=>G(n,B(s))),W(e,t)};K(m,e=>{B(s)&&e(h)});var g=R(m,2),_=F(g);Ae(2),k(g),k(t),V(`submit`,t,e=>{e.preventDefault(),l()}),ba(c,()=>B(i),e=>P(i,e)),ba(d,()=>B(a),e=>P(a,e)),ba(p,()=>B(o),e=>P(o,e)),H(`click`,_,()=>P(r,!1)),W(e,t)},p=e=>{var r=kE(),i=F(r),a=e=>{var t=EE(),r=L(t,!0);z(e=>G(r,e),[()=>yx(B(n))]),W(e,t)},o=e=>{W(e,DE())};K(i,e=>{B(n)?e(a):e(o,-1)});var s=R(i,2),l=L(s,!0),u=R(s,2),d=e=>{var n=OE();H(`click`,n,()=>void vx.forget(t.database)),W(e,n)};K(u,e=>{B(n)&&e(d)}),k(r),z(()=>G(l,B(n)?`Change`:`Set`)),H(`click`,s,c),W(e,r)};K(d,e=>{B(r)?e(f):e(p,-1)}),Ae(2),k(u),W(e,u),j()}Xr([`click`]);var ME=[`postgres`,`mysql`,`redis`],NE=/^[A-Za-z0-9_][\w.-]*$/,PE=new Set([`__proto__`,`prototype`,`constructor`]);function FE(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`&&(PE.has(e)||!NE.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 IE=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function LE(e,t){let n=e;for(let e of t){if(typeof e==`number`?!Array.isArray(n):!IE(n)||!Object.hasOwn(n,e))return;n=n[e]}return n}function RE(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]=RE(t[r],i,n),t}if(Array.isArray(e))throw Error(`${r} is not a place in a list`);let a=IE(e)?e:{};return!i.length&&n===void 0?Object.fromEntries(Object.entries(a).filter(([e])=>e!==r)):{...a,[r]:RE(a[r],i,n)}}var zE=U(`<label class="svelte-s22te4"><input type="checkbox" class="svelte-s22te4"/> <span class="svelte-s22te4"> </span></label>`),BE=U(`<div class="checks svelte-s22te4" role="group"></div>`),VE=U(`<span class="none svelte-s22te4"> </span>`);function HE(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=BE();q(i,21,()=>B(r),e=>e.value,(e,r)=>{var i=zE(),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=VE(),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 UE=new Set([`$$slots`,`$$events`,`$$legacy`]);function WE(e,t){let n=La(t,UE),r={name:`chevron-left`,size:24,node:[[`path`,{d:`m15 18-6-6 6-6`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var GE=U(`<button type="button" title="Move earlier" class="svelte-1iop5lw"><!></button>`),KE=U(`<span class="tag svelte-1iop5lw"> </span>`),qE=U(`<button type="button" title="Remove" class="svelte-1iop5lw"><!></button>`),JE=U(`<li><!> <span class="word svelte-1iop5lw"> </span> <!> <!></li>`),YE=U(`<li class="new svelte-1iop5lw"><input class="svelte-1iop5lw"/></li>`),XE=U(`<ul class="chips svelte-1iop5lw"><!> <!></ul>`);function ZE(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=XE(),u=F(l);q(u,18,()=>t.value,e=>e,(e,i,o)=>{var s=JE();let l;var u=F(s),d=e=>{var t=GE();Ua(F(t),{get of(){return WE},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=KE(),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=qE();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=YE(),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 QE=new Set([`$$slots`,`$$events`,`$$legacy`]);function $E(e,t){let n=La(t,QE),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 eD=new Set([`$$slots`,`$$events`,`$$legacy`]);function tD(e,t){let n=La(t,eD),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 nD=`<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>`,rD=`</title><path d="`,iD=`"/></svg>`,aD={title:`.NET`,slug:`dotnet`,get svg(){return nD+`.NET`+rD+this.path+iD},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`}},oD={title:`Docker`,slug:`docker`,get svg(){return nD+`Docker`+rD+this.path+iD},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`},sD={title:`Flutter`,slug:`flutter`,get svg(){return nD+`Flutter`+rD+this.path+iD},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`},cD={title:`Go`,slug:`go`,get svg(){return nD+`Go`+rD+this.path+iD},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`},lD={title:`Node.js`,slug:`nodedotjs`,get svg(){return nD+`Node.js`+rD+this.path+iD},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`},uD={title:`OpenJDK`,slug:`openjdk`,get svg(){return nD+`OpenJDK`+rD+this.path+iD},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`}},dD={title:`PHP`,slug:`php`,get svg(){return nD+`PHP`+rD+this.path+iD},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`}},fD={title:`Python`,slug:`python`,get svg(){return nD+`Python`+rD+this.path+iD},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/`},pD={title:`React`,slug:`react`,get svg(){return nD+`React`+rD+this.path+iD},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`},mD={title:`Ruby`,slug:`ruby`,get svg(){return nD+`Ruby`+rD+this.path+iD},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`}},hD={title:`Rust`,slug:`rust`,get svg(){return nD+`Rust`+rD+this.path+iD},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`}},gD=`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`,_D={dotnet:{logo:aD.path},flutter:{logo:sD.path},node:{logo:lD.path},lambda:{logo:gD},sam:{logo:gD},web:{icon:$E},reactnative:{logo:pD.path},go:{logo:cD.path},rust:{logo:hD.path},java:{logo:uD.path},python:{logo:fD.path},ruby:{logo:mD.path},php:{logo:dD.path},compose:{logo:oD.path}},vD=e=>(Object.hasOwn(_D,e)?_D[e]:void 0)??{icon:tD},yD=ai(`<title> </title>`),bD=ai(`<svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor"><!><path></path></svg>`);function xD(e,t){A(t,!0);let n=M(()=>vD(t.kind));var r=si(),i=I(r),a=e=>{var r=bD();let i;var a=F(r),o=e=>{var n=yD(),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 SD=U(`<!> <span class="label svelte-npi4py"> </span>`,1),CD=U(`<span class="label unset svelte-npi4py">Choose a kind…</span>`),wD=U(`<button type="button" role="option" class="svelte-npi4py"><!> <span class="label svelte-npi4py"> </span></button>`),TD=U(`<div class="list svelte-npi4py" role="listbox" aria-label="Kind"></div>`),ED=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 DD(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=ED();V(`pointerdown`,hn,e=>{B(r)&&!B(i)?.contains(e.target)&&l(!1)});var d=F(u),f=F(d),p=e=>{var t=SD(),n=I(t);xD(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,CD())};K(f,e=>{B(o)?e(p):e(m,-1)});var h=R(f,2);Ua(F(h),{get of(){return XT},size:10}),k(h),k(d);var g=R(d,2),_=e=>{var n=TD();q(n,21,()=>B(a),e=>e.value,(e,n)=>{var r=wD(),i=F(r);xD(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 OD=U(`<option class="svelte-1uxsjsg"> </option>`),kD=U(`<datalist class="svelte-1uxsjsg"></datalist>`),AD=U(`<input class="svelte-1uxsjsg"/> <!>`,1),jD=U(`<input class="svelte-1uxsjsg"/>`),MD=U(`<option class="svelte-1uxsjsg">Other…</option>`),ND=U(`<select class="svelte-1uxsjsg"><!><!><!></select>`);function PD(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=AD(),i=I(r);fa(i);var s=R(i,2),l=e=>{var r=kD();q(r,21,()=>t.options,e=>e.value,(e,t)=>{var n=OD(),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=jD();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=ND(),o=F(n),u=e=>{var t=OD(),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=OD(),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=MD();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 FD=new Set([`$$slots`,`$$events`,`$$legacy`]);function ID(e,t){let n=La(t,FD),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 LD=new Set([`$$slots`,`$$events`,`$$legacy`]);function RD(e,t){let n=La(t,LD),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 zD=new Set([`$$slots`,`$$events`,`$$legacy`]);function BD(e,t){let n=La(t,zD),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 VD=new Set([`$$slots`,`$$events`,`$$legacy`]);function HD(e,t){let n=La(t,VD),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 UD=new Set([`$$slots`,`$$events`,`$$legacy`]);function WD(e,t){let n=La(t,UD),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 GD=new Set([`$$slots`,`$$events`,`$$legacy`]);function KD(e,t){let n=La(t,GD),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 qD=new Set([`$$slots`,`$$events`,`$$legacy`]);function JD(e,t){let n=La(t,qD),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 YD=e=>[e.type??[]].flat();function XD(e,t){if(e.enum)return`choice`;if(e.anyOf)return(t===void 0||typeof t==`string`)&&e.anyOf.some(e=>YD(e).includes(`string`))?`text`:`json`;let n=YD(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 ZD(e){if(typeof e!=`object`)return{};let t=YD(e);return t.includes(`array`)?[]:t.includes(`string`)||e.anyOf?``:t.includes(`object`)||!t.length?{}:``}var QD=e=>!!e?.required?.length,$D=/^[A-Za-z0-9_][\w-]*$/,eO=(e,t)=>typeof t==`number`?`${e}[${String(t)}]`:$D.test(t)?e?`${e}.${t}`:t:`${e}["${t}"]`,tO={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:`Hosts entry`,tunnel:`Tunnel to`,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 nO(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 rO={envs:`Environments`,protected:`Protected`,presets:`Team boards`,checks:`Checks on this Mac`};function iO(e,t=!1){if(t&&Object.hasOwn(rO,e))return rO[e]??e;if(Object.hasOwn(tO,e))return tO[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 aO=(e,t)=>e.some(e=>t===e||t.startsWith(`${e}.`)||t.startsWith(`${e}[`)),oO=[`name`,`kind`,`slug`],sO=`What it uses differently per environment`,cO=`Fields with no tab of their own`,lO={dotnet:[`project`,`launchSettings`,`baseProfile`],node:[`script`],web:[`script`],flutter:[`flutter`,`mobile`],lambda:[`lambda`,`sam`]},uO=[...new Set(Object.values(lO).flat())],dO=[{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, the queues it sends to and reads, and the databases it uses`,keys:[`consumes`,`publishes`,`reads`,`uses`]},{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:sO,keys:[`envs`],view:`envs`}],fO=[{name:`Deployed`,about:`Where it is and what it is`,keys:[`outside`,`deployedUrl`]},{name:`Calls`,about:`What it calls`,keys:[`consumes`]},{name:`Environments`,about:sO,keys:[`envs`],view:`envs`}],pO=[`name`],mO=[{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:`Databases`,about:`Named from the code. Renaming here does not change the code.`,keys:[`databases`]},{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`]}],hO=[`deployedUrl`,`start`,`prereqs`,`secrets`];function gO(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 _O=(e,t)=>!t||e===t||e.startsWith(`${t}.`)||e.startsWith(`${t}[`);function vO(e){return e===void 0?`not set`:typeof e==`string`?e:Array.isArray(e)?e.length?e.map((e,t)=>nO(e,`#${String(t+1)}`)).join(`, `):`none`:typeof e==`object`&&e?Object.keys(e).join(`, `)||`empty`:JSON.stringify(e)}function yO(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+yO(r[t],i[t]),0)}var bO=e=>typeof e==`object`&&e&&!Array.isArray(e)?e:{},xO=e=>typeof e==`string`||typeof e==`number`?String(e):``,SO={tunnel:ID,cloud:BD,laptop:pS,signIn:WD,shield:JD,box:KD,key:HD,other:RD},CO=[{id:`tunnel`,label:`Tunnel`,about:`A database or service reached through a tunnel`,icon:SO.tunnel,fields:[`tunnel`,`port`,`env`,`what`,`connectsAs`,`cmd`,`note`],start:{},say:e=>{let t=[xO(e.tunnel),xO(e.port)].filter(Boolean).join(`:`),n=xO(e.what),r=xO(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:SO.cloud,fields:[`sso`,`account`,`note`],start:{},say:e=>`${xO(e.sso)}${e.account?`, account ${xO(e.account)}`:``}`},{id:`hosts`,label:`Hosts entry`,about:`A name that has to lead to this Mac`,icon:SO.laptop,fields:[`hosts`,`note`],start:{},say:e=>e.hosts?`${xO(e.hosts)} leads to this Mac`:``},{id:`signIn`,label:`Stack sign-in`,about:`A sign-in this stack defines`,icon:SO.signIn,fields:[`signIn`,`note`],start:{},say:(e,t)=>{let n=xO(e.signIn),r=xO(bO(bO(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:SO.shield,fields:[`note`],own:[`devCerts`],start:{devCerts:!0},say:e=>xO(e.note)||`The local certificate must be trusted`},{id:`nuget`,label:`Private package feed`,about:`It downloads company packages while it builds`,icon:SO.box,fields:[`note`],own:[`nuget`],start:{nuget:!0},say:e=>xO(e.note)||`Packages come from a private feed`}],wO=(e,t)=>CO.find(n=>t?n.id===t:e[n.id]!==void 0&&e[n.id]!==!1),TO=[{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`}],EO={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`]},DO=e=>{let t=[e.env??[]].flat().map(xO).filter(Boolean).join(`, `),n=xO(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 ${xO(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 ${xO(e.key)||`a key`} in its secret`:`how it finds it is not known yet`},OO=/(?:^|\.)(prereqs|secrets|localChanges)\[\d+\]$|(?:^|\.)(consumes)(?:\.[\w-]+|\["[^"]+"\])$|(?:^|\.)(ready)$/,kO=/(?:^|\.)(prereqs|secrets|localChanges|consumes)$/;function AO(e,t,n,r){let i=OO.exec(e),a=i?.[1]??i?.[2]??i?.[3];if(!a)return;let o=bO(t),s=bO(n);if(a===`prereqs`){let e=wO(o,r);if(!e)return{label:`Something else`,say:vO(t),icon:SO.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=xO(o.type),t=xO(o.when);return{label:xO(o.env)||xO(o.file)||`Secret`,say:[e&&iO(e),t&&`needed ${t}`].filter(Boolean).join(`, `),icon:SO.key,fields:[`env`,`type`,`file`,`when`,`fetch`,`note`]}}if(a===`localChanges`)return{label:xO(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=bO(bO(s.apps)[c]),u=xO(o.how);return{label:xO(l.name)||c,say:DO(o),kind:xO(l.kind)||`other`,fields:(Object.hasOwn(EO,u)?EO[u]:void 0)??EO.unknown??[]}}var jO={path:`/health`,status:`200`,timeout:`30 s`,file:`src/config.ts`,find:`the text as it is`,replace:`the text for local runs`};function MO(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 NO(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)&&!e.startsWith(`databases.`)?`kind`:`pick`;if(/(?:^|\.)(url|deployedUrl|deployed)$/.test(e))return`address`;let i=e=>YD(e).includes(`array`)&&YD(e.items??{}).includes(`string`);if(i(t)||Array.isArray(n)&&t.anyOf?.some(i))return`chips`}var PO={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.`},FO=U(`<button class="words svelte-gtai80" type="button"> </button>`),IO=U(`<button class="words remove svelte-gtai80" type="button">Remove</button>`),LO=U(`<span><!> <button type="button"> </button></span>`),RO=U(`<!> <!>`,1),zO=U(`<span class="none svelte-gtai80"> </span>`),BO=U(`<option class="svelte-gtai80"> </option>`),VO=U(`<select class="svelte-gtai80"><option class="svelte-gtai80"> </option><!></select>`),HO=U(`<input placeholder="New key" class="svelte-gtai80"/>`),UO=U(`<!> <!> <span class="add svelte-gtai80"><!> <button type="button" class="svelte-gtai80">Add</button></span>`,1),WO=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>`),GO=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>`),KO=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>`),qO=U(`<span class="add svelte-gtai80"><button type="button" class="svelte-gtai80"> </button></span>`),JO=U(`<!> <!> <!>`,1),YO=U(`<span class="error svelte-gtai80" role="alert"> </span>`),XO=U(`<span class="name svelte-gtai80"> </span>`),ZO=U(`<span class="part svelte-gtai80"><span class="word svelte-gtai80"> </span> <!></span>`),QO=U(`<div><!> <fieldset class="parts svelte-gtai80"><legend class="sr svelte-gtai80"> </legend> <!></fieldset> <!> <!></div>`),$O=U(`<span class="about svelte-gtai80"> </span>`),ek=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>`),tk=U(`<span class="glyph svelte-gtai80"><!></span>`),nk=U(`<span class="name svelte-gtai80"><span class="what svelte-gtai80"> </span><span class="say svelte-gtai80"> </span></span>`),rk=U(`<span class="unset svelte-gtai80">Not set</span>`),ik=U(`<span class="name svelte-gtai80"> </span> <!>`,1),ak=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>`),ok=U(`<input type="checkbox" role="switch" class="svelte-gtai80"/>`),sk=U(`<select class="svelte-gtai80"><option class="svelte-gtai80">Not set</option><!></select>`),ck=U(`<input inputmode="numeric" class="svelte-gtai80"/>`),lk=U(`<input class="svelte-gtai80"/>`),uk=U(`<textarea rows="3" class="svelte-gtai80"></textarea>`),dk=U(`<textarea class="mono svelte-gtai80"></textarea>`),fk=U(`<span class="note warn svelte-gtai80"> </span>`),pk=U(`<span class="note svelte-gtai80"> </span>`),mk=U(`<div><label> </label> <!> <!> <!> <!></div>`);function hk(e,t){let n=ci();A(t,!0);let r=e=>{var n=LO();let r;var i=F(n),o=e=>{var n=FO(),r=L(n,!0);z(()=>G(r,t.drop)),H(`click`,n,()=>void h(void 0)),W(e,n)},s=e=>{var t=IO();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=RO(),r=I(n),i=e=>{var n=RO(),r=I(n);q(r,16,()=>B(x),e=>e,(e,n)=>{{let r=M(()=>eO(t.path,n)),i=M(()=>iO(n,t.path===``)),a=M(()=>t.schema.properties?.[n]??{}),s=M(()=>!!t.schema.required?.includes(n)),c=M(()=>o()+1);hk(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(()=>eO(t.path,n)),i=M(()=>iO(n)),a=M(()=>t.schema.properties?.[n]??{}),s=M(()=>o()+1);hk(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=UO(),r=I(n);q(r,16,()=>Object.keys(B(g)),e=>e,(e,n)=>{{let r=M(()=>eO(t.path,n)),i=M(()=>o()+1);hk(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=zO(),n=L(t,!0);z(()=>G(n,PO[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=VO(),r=F(n),i=L(r,!0);r.value=r.__value=``,q(R(r),16,()=>B(T),e=>e,(e,n)=>{var r=BO(),i=L(r,!0),a={};z(e=>{G(i,e),a!==(a=n)&&(r.value=(r.__value=a)??``)},[()=>AO(eO(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=HO();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=JO(),r=I(n);Ci(r,()=>B(_).length,e=>{var n=si();q(I(n),17,()=>B(_),Ti,(e,n,r)=>{{let i=M(()=>eO(t.path,r)),a=M(()=>nO(B(n),`${t.name} ${String(r+1)}`)),s=M(()=>t.schema.items??{}),c=M(()=>o()+1);hk(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=zO(),n=L(t,!0);z(()=>G(n,PO[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=WO(),r=F(n);{let e=M(()=>eO(t.path,B(_).length)),n=M(()=>t.schema.items??{}),i=M(()=>o()+1);hk(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(eO(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=KO(),n=F(t);q(n,17,()=>CO,e=>e.id,(e,t)=>{let n=M(()=>B(t).id===`signIn`&&!B(ie));var r=GO(),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=qO(),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=YO(),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(()=>XD(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(()=>NO(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(()=>AO(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`?MO(t.value):{}),E=M(()=>kO.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=FE(e.slice(eO(t.path,B(_).length).length).replace(/^\./,``));return`error`in r||P(oe,RE(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)||QD(t.schema.items)?de():P(p,await t.ctx.save(eO(t.path,B(_).length),ZD(t.schema.items))??``,!0);return}let e=B(ae).trim();e&&(P(p,await t.ctx.save(eO(t.path,e),ZD(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=QO();let i;var a=F(n),c=e=>{var n=XO(),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=ZO(),i=F(r),a=L(i,!0),s=R(i,2);{let e=M(()=>eO(t.path,n)),r=M(()=>iO(n)),i=M(()=>t.schema.properties?.[n]??{}),a=M(()=>o()+1);hk(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=YO(),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=ek(),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=$O(),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=ak();let a;var o=F(n),s=F(o);Ua(F(s),{get of(){return CE},size:10}),k(s);var c=R(s,2),l=e=>{xD(e,{get kind(){return B(v).kind},label:``})},u=e=>{var t=tk();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=nk(),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=ik(),r=I(n),i=L(r,!0),a=R(r,2),o=e=>{W(e,rk())};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=$O(),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=mk();let o;var l=F(i);let p;var _=L(l,!0),v=R(l,2),y=e=>{{let r=M(()=>ne(t.value));DD(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()?jO[t.path.split(`.`).at(-1)??``]??t.name:B(ee));PD(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`:``);ZE(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));HE(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})));HE(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)));HE(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=ok();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=sk(),i=F(r);i.value=i.__value=``,q(R(i),16,()=>t.schema.enum??[],e=>e,(e,t)=>{var n=BO(),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=ck();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()?jO[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=lk();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()?jO[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(`
|
|
36
|
+
`))&&!s())),ce=e=>{var r=uk();_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=dk();_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(`
|
|
37
|
+
`).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=fk(),n=L(t,!0);z(()=>G(n,B(te).warn)),W(e,t)},me=e=>{var t=pk(),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=YO(),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 gk=U(`<p class="none svelte-orrnu3"> </p>`),_k=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>`),vk=U(`<option> </option>`),yk=U(`<select class="svelte-orrnu3"><option>Its own value for another field…</option><!></select>`),bk=U(`<section class="env svelte-orrnu3"><h3 class="svelte-orrnu3"> </h3> <!> <!></section>`),xk=U(`<!> <!>`,1);function Sk(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([...hO,...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?ZD(s(e)):JSON.parse(JSON.stringify(n))},f=(e,n)=>eO(eO(eO(t.path,`envs`),e),n);var p=xk(),m=I(p),h=e=>{var t=gk(),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=bk(),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(()=>iO(r)),l=M(()=>s(r)),u=M(()=>a(n)[r]);hk(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=_k(),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)??``}`)},[()=>iO(r),()=>vO(t.app[r]),()=>vO(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=yk(),i=F(r);i.value=i.__value=``,q(R(i),16,()=>u(n),e=>e,(e,t)=>{var n=vk(),r=L(n,!0),i={};z(e=>{G(r,e),i!==(i=t)&&(n.value=(n.__value=i)??``)},[()=>iO(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 Ck=U(`<span class="led svelte-6g11qq" title="Running"></span>`),wk=U(`<span class="tag svelte-6g11qq"> </span>`),Tk=U(`<span class="slug svelte-6g11qq"> </span>`),Ek=U(`<span class="sub svelte-6g11qq"><!> <!></span>`),Dk=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>`),Ok=U(`<span class="mark bad svelte-6g11qq"> </span>`),kk=U(`<span class="mark svelte-6g11qq"> </span>`),Ak=U(`<button type="button" role="tab"><span class="marker svelte-6g11qq" aria-hidden="true"></span> <!></button>`),jk=U(`<div class="tabs svelte-6g11qq" role="tablist" aria-orientation="vertical"></div>`),Mk=U(`<span class="about svelte-6g11qq"> </span>`),Nk=U(`<div class="sec svelte-6g11qq"><span class="title svelte-6g11qq"> </span><!></div>`),Pk=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>`),Fk=U(`<ul class="apps svelte-6g11qq"></ul>`),Ik=U(`<details class="others svelte-6g11qq"><summary class="svelte-6g11qq"><span class="chev svelte-6g11qq"><!></span>Fields for other kinds of app</summary> <!></details>`),Lk=U(`<!> <!>`,1),Rk=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),zk=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),Bk=U(`<div><!> <div class="body svelte-6g11qq" role="tabpanel"><!> <!> <!></div></div> <footer><!></footer>`,1),Vk=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 Hk(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=FE(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)?LE(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)?oO:B(i)?[]:pO),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)?fO:dO]:B(i)?[]:[e,...mO],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)?AO(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:cO,keys:a}]:t:[{name:`Settings`,keys:a}]}),te=M(()=>B(ee)[Math.min(B(u),B(ee).length-1)]),E=M(()=>yO(B(a),B(o))),ne=(e,t)=>t?LE(e,y(t)):e,D=e=>yO(ne(B(a),e),ne(B(o),e))>0,re=e=>e.filter(e=>D(eO(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=>iO(e,!B(i)))}),ae=e=>[...B(l).keys()].filter(t=>e.some(e=>_O(t,eO(B(i),e)))).length,oe=M(()=>{let e=B(C)&&typeof B(S)?.kind==`string`?B(S).kind:``;return(Object.hasOwn(ys,e)?ys[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,RE(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=>aO(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:/(^|\.)uses$/.test(e)?Object.keys(LE(B(o),[`databases`])??{}):/(^|\.)(publishes|reads)$/.test(e)?Object.keys(LE(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(ys).map(([e,t])=>({value:e,label:t.label,kind:e})),...Object.entries(n.kinds??{}).filter(([e])=>!Object.hasOwn(ys,e)).map(([e,t])=>({value:e,label:t.label??e,kind:e}))]};if(/^databases\.[a-z0-9-]+\.kind$/.test(e))return{options:Object.entries(ho).map(([e,t])=>({value:e,label:t})),other:!0};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:TO};if(t===`type`&&/secrets\[\d+\]\.type$/.test(e))return{options:ME.map(e=>({value:e,label:iO(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?gO(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=Vk(),ve=F(_e),ye=F(ve),be=e=>{W(e,Ck())},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=Ek(),n=F(t),r=e=>{var t=wk(),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=Tk(),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=Dk(),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 wx.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=Bk(),n=I(t);let a;var o=F(n),s=e=>{var t=jk();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=Ak();let o;var s=R(F(a),1,!0),c=R(s),l=e=>{var t=Ok(),n=L(t);z(()=>G(n,`${B(r)??``} to fix`)),W(e,t)},d=e=>{var t=kk(),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=Nk(),n=F(t),r=L(n,!0),i=R(n),a=e=>{var t=Mk(),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=>{{let t=M(()=>B(i).slice(10));jE(e,{get database(){return B(t)}})}},y=M(()=>/^databases\.[a-z0-9-]+$/.test(B(i)));K(g,e=>{B(y)&&e(_)});var b=R(g,2),w=e=>{Sk(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}})},T=e=>{var t=Fk();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=Pk(),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(ys,i().kind??``)?ys[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)},ne=e=>{let t=M(()=>typeof B(S)?.kind==`string`?B(S).kind:``),n=M(()=>lO[B(t)]??[]),r=M(()=>B(te).keys.filter(e=>uO.includes(e)&&!B(n).includes(e)&&B(S)?.[e]===void 0));var a=Lk(),o=I(a);q(o,16,()=>B(te).keys.filter(e=>!B(r).includes(e)),e=>e,(e,t)=>{{let n=M(()=>eO(B(i),t)),r=M(()=>iO(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);hk(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=Ik(),n=F(t),a=F(n);Ua(F(a),{get of(){return CE},size:10}),k(a),Ae(),k(n),q(R(n,2),16,()=>B(r),e=>e,(e,t)=>{{let n=M(()=>eO(B(i),t)),r=M(()=>iO(t)),a=M(()=>B(x).properties?.[t]??{}),o=M(()=>B(S)?.[t]);hk(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(b,e=>{B(te)?.view===`envs`&&B(C)&&B(S)?e(w):B(te)?.view===`apps`?e(T,1):B(te)&&e(ne,2)}),k(c),k(n);var D=R(n,2);let oe;var se=F(D),le=e=>{var t=Rk(),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)},ue=e=>{var t=zk(),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(se,e=>{B(f)&&B(E)?e(le):e(ue,-1)}),k(D),z(()=>{a=J(n,1,`main svelte-6g11qq`,null,a,{single:B(ee).length<2}),Y(c,`aria-label`,B(te)?.name),oe=J(D,1,`svelte-6g11qq`,null,oe,{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 Uk=U(`<span> </span>`),Wk=U(`<option> </option>`),Gk=U(`<select class="svelte-1psun92"><option>Kind?</option><!></select>`),Kk=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>`),qk=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>`),Jk=U(`<p class="none svelte-1psun92"> </p>`),Yk=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 Xk(e,t){A(t,!0);let n=N(void 0),r=N(null),i=N(``),a=N(``),o=N(!1),s=new G_,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(),_x.findings?_x.findings.open({afterAdding:!0}):location.reload())};var g={open:f},_=Yk(),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
|
|
38
|
+
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=qk(),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=Kk();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=Uk(),r=L(n,!0);z(e=>{J(n,1,`kind kind-${B(t).kind??``}`,`svelte-1psun92`),G(r,e)},[()=>Ms({kind:B(t).kind}).label]),W(e,n)},m=e=>{var r=Gk(),i=F(r);i.value=i.__value=``,q(R(i),17,()=>Object.entries(ys),([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=Wk(),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=Jk(),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 Zk=U(`<button type="button" class="cable svelte-yroiop"> </button>`),Qk=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>`),$k=U(`<label class="branch svelte-yroiop">Branch <!></label>`),eA=U(`<label class="svelte-yroiop"> <select class="svelte-yroiop"><option>Set aside until Stop</option><option>Take along</option></select></label>`),tA=U(`<label class="svelte-yroiop"><input type="radio"/> </label>`),nA=U(`<span class="started svelte-yroiop">Started by <span class="seg svelte-yroiop" role="radiogroup" aria-label="Started by"></span></span>`),rA=U(`<label class="check svelte-yroiop"><input type="checkbox" role="switch" class="svelte-yroiop"/> Tunnels</label>`),iA=U(`<!> <span class="controls svelte-yroiop"><!> <!> <!> <!></span>`,1);function aA(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),wx.again()},s=e=>{Z.set(t.id,e),wx.again()};var c=si(),l=I(c),u=e=>{var c=iA(),l=I(c),u=e=>{var r=Qk(),s=R(F(r),2),c=F(s);q(c,17,()=>B(a).slice(0,3),e=>e.id,(e,n)=>{var r=Zk(),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=Zk(),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,()=>{wx.onItsOwn[t.id]=!0}),H(`click`,d,()=>{wx.leftOut[t.id]=!0,wx.again()}),W(e,r)};K(l,e=>{(B(i).length||B(a).length)&&!wx.onItsOwn[t.id]&&e(u)});var d=R(l,2),f=F(d),p=e=>{var t=$k();Pb(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=eA(),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=nA(),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=tA(),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,cc[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=rA(),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 oA=U(`<p class="stripes svelte-pzq2er" aria-hidden="true"> </p>`),sA=U(`<button class="mini svelte-pzq2er" type="button"> </button>`),cA=U(`<p> <!></p>`),lA=U(`<small> </small>`),uA=U(`<span> <!> <!> <!></span>`),dA=U(`<ul class="lines svelte-pzq2er"><li class="svelte-pzq2er"><span class="verb svelte-pzq2er"> </span> <span class="apps svelte-pzq2er"></span></li></ul>`),fA=U(`<button class="back svelte-pzq2er" type="button"> </button>`),pA=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),mA=U(`<dialog aria-labelledby="review-title"><!></dialog>`);function hA(e,t){A(t,!0);let n=N(void 0),r=M(()=>wx.review);Fn(()=>{B(r)&&!B(n)?.open?B(n)?.showModal():!B(r)&&B(n)?.open&&B(n).close()});var i=mA();let a;var o=F(i),s=e=>{var t=pA(),n=I(t),i=e=>{var t=oA(),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=cA();let r;var i=F(n),a=R(i),o=e=>{var n=sA(),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=dA(),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=uA();let a;var o=F(i),s=R(o),c=e=>{var n=sA(),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=lA(),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=>{aA(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=fA(),n=L(t,!0);z(()=>G(n,B(r).back.label)),H(`click`,t,()=>{let{back:e}=B(r);wx.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,()=>{wx.review=null}),H(`click`,h,()=>{wx.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||(wx.review=null)}),W(e,i),j()}Xr([`click`]);var gA=new class{#e=N(null);get switching(){return B(this.#e)}set switching(e){P(this.#e,e,!0)}useStack(e){wx.idle?this.#n(e.dir):wx.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:[]}))}];wx.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:()=>{wx.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){wx.idle?e():wx.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()}},_A=U(`<button class="x svelte-8d6d0q" type="button" aria-label="Close"><!></button>`),vA=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
|
|
39
|
+
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),yA=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>`),bA=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),xA=U(`<small class="svelte-8d6d0q">default</small>`),SA=U(`<span class="tag svelte-8d6d0q"> <!> <button type="button" class="svelte-8d6d0q"><!></button></span>`),CA=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),wA=U(`<dialog aria-labelledby="setup-title" class="svelte-8d6d0q"><!> <p class="error svelte-8d6d0q" role="alert"> </p></dialog>`);function TA(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=wA(),y=F(v),b=e=>{var t=vA(),r=I(t),i=e=>{var t=_A();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=bA(),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=yA(),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??``}
|
|
40
|
+
${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=CA(),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=SA(),i=F(r,!0),a=R(i),o=e=>{W(e,xA())};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 EA=new Set([`$$slots`,`$$events`,`$$legacy`]);function DA(e,t){let n=La(t,EA),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 OA=U(`<p class="svelte-ujai35"> </p>`),kA=U(`<button class="act svelte-ujai35" type="button">Reload</button>`),AA=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),jA=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>`),MA=U(`<!> <!>`,1),NA=U(`<p class="none svelte-ujai35">No boards yet. A board is kept as soon as it has an app.</p>`),PA=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>`),FA=U(`<button type="submit" class="svelte-ujai35">Open</button>`),IA=U(`<button type="button" class="svelte-ujai35">Open a file…</button>`),LA=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>`),RA=U(`<details class="svelte-ujai35"><summary class="svelte-ujai35"> </summary> <!></details>`),zA=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 BA(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 mx(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&&fx(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);wx.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;wx.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 mx(B(l).trim());P(d,!1),t?P(u,{text:t,warn:!0},!0):_()};var E=zA(),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=MA(),o=I(a),s=e=>{var t=OA(),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=jA(),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=kA();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=AA(),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,NA())};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=PA(),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=FA();z(()=>t.disabled=B(d)),W(e,t)},ve=M(()=>B(l).trim()),ye=e=>{var t=IA();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=RA(),n=F(t),r=L(n);q(R(n,2),17,()=>Z.trash,e=>e.name+e.deleted,(e,t)=>{var n=LA(),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??``}`)},[()=>gx(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,()=>{_(),px(B(o)?.files?.[0]),B(o)&&(B(o).value=``)}),W(e,E),j()}Xr([`keydown`,`click`,`change`]);var VA=U(`<li class="svelte-3tqys6"><strong> </strong> <small class="svelte-3tqys6"> </small> <!></li>`),HA=U(`<small class="svelte-3tqys6"> </small>`),UA=U(`<div class="gap svelte-3tqys6"><strong> </strong> <!> <button type="button" class="svelte-3tqys6"> </button></div>`),WA=U(`<button class="all svelte-3tqys6" type="button"> </button>`),GA=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>`),KA=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 qA(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 wx.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=KA(),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=VA(),i=F(r),a=L(i,!0),o=R(i,2),s=L(o,!0),c=R(o,2),l=e=>{Uc(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=GA(),r=F(n),i=L(r),o=R(r,4);q(o,16,()=>g(t),e=>e,(e,n)=>{var r=UA(),i=F(r),o=L(i,!0),s=R(i,2);q(s,17,()=>_(t,n),e=>e.detail,(e,t)=>{var n=HA(),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=WA(),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 JA=U(`<button class="do svelte-159ihlv" type="button">Connect</button>`),YA=U(`<div class="note svelte-159ihlv" role="note"><span> </span> <button class="x svelte-159ihlv" type="button" aria-label="Dismiss this note"><!></button> <!></div>`),XA=U(`<div class="notes svelte-159ihlv" role="group" aria-label="About this board"></div>`);function ZA(e,t){A(t,!0);let n=Z.nameOf,r=M(()=>Qs(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(()=>Z.formatError?[{key:`format:${Z.formatError}`,text:`${Z.formatError}.`}]:[]),o=M(()=>[...B(a),...B(r),...B(i)].filter(e=>!Z.dismissed.includes(e.key)));var s=si(),c=I(s),l=e=>{var t=XA();q(t,21,()=>B(o),e=>e.key,(e,t)=>{let n=M(()=>B(t).cable);var r=YA(),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=JA();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(c,e=>{B(o).length&&!Z.live&&e(l)}),W(e,s),j()}Xr([`click`]);var QA=U(`<span class="count svelte-1vh52u"> </span>`),$A=U(`<span class="led svelte-1vh52u" role="img"></span>`),ej=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),tj=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),nj=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),rj=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),ij=U(`<div role="listitem"><span class="kind svelte-1vh52u"> </span> <!></div>`),aj=U(`<p class="empty svelte-1vh52u"> </p>`),oj=U(`<p class="unsaved svelte-1vh52u" role="alert">Not saved: the canvas server is not answering. Changes stay on this page.</p>`),sj=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>`),cj=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>`),lj=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 uj(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(`
|
|
41
|
+
`);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=>{wx.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=lj();let S;var C=F(x);BA(F(C),{}),k(C);var w=R(C,2),T=F(w),ee=R(F(T)),te=e=>{var t=QA(),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=ij();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=ej(),i=I(r),a=L(F(i),!0);k(i);var o=R(i,2),s=e=>{var t=$A();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=tj(),r=I(n),i=L(F(r),!0);k(r);var a=R(r,4);Ua(F(a),{get of(){return DA},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=nj(),r=I(n),i=L(F(r),!0);k(r);var a=R(r,4);Ua(F(a),{get of(){return DA},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=rj(),r=I(n),i=L(F(r),!0);k(r);var a=R(r,2);Ua(F(a),{get of(){return DA},size:12}),k(a);var o=R(a,2);Ua(F(o),{get of(){return Sb},size:12,filled:!0}),k(o);var s=R(o,2);Ua(F(s),{get of(){return $y},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,()=>{wx.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=aj(),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);ZA(R(se,2),{}),k(w);var le=R(w,2),ue=F(le),de=e=>{W(e,oj())};K(ue,e=>{Z.unsaved&&e(de)});var fe=R(ue,2),pe=e=>{var t=sj();Uc(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=cj(),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)??``}
|
|
42
|
+
${B(f).length===1?`is`:`are`} not cloned on this Mac, so ${B(f).length===1?`it`:`they`} cannot
|
|
43
|
+
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);qA(ge,{}),pE(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 _x.repos?.open()),H(`click`,oe,()=>_x.outside?.open()),W(e,x),j()}Xr([`click`]);var dj=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>`),fj=U(`<span class="meta svelte-njiuyh"> </span>`),pj=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>`),mj=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 hj(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 gA.updateStack()}]:[],...B(s)?.changes.length?[{icon:`●`,label:`Changes not shared yet`,count:B(s).changes.length,run:()=>{gA.shareChanges()}}]:[],...Z.apps.length?[{icon:`⌕`,label:`Look through the repos again`,count:0,run:()=>void _x.findings?.open()}]:[],{icon:`+`,label:`Add a stack: new, or from GitHub`,count:0,run:()=>{gA.addStack(()=>_x.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=mj(),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=dj(),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)??``}
|
|
44
|
+
${B(r)===1?`app`:`apps`}`)}),H(`click`,a,()=>{B(i)?.hidePopover(),gA.useStack(B(t))}),W(e,a)});var _=R(g,2);q(_,21,()=>B(c),e=>e.label,(e,t)=>{var n=pj(),r=F(n),a=L(r,!0),o=R(r,2),s=L(o,!0),c=R(o,2),l=e=>{var n=fj(),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 gj=U(`<button class="action svelte-ieajqw" type="button"> </button>`),_j=U(`<div><span class="text svelte-ieajqw"> </span> <!> <!> <button class="close svelte-ieajqw" type="button" aria-label="Dismiss"><!></button></div>`);function vj(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=_j();let a;var o=F(i),s=L(o,!0),c=R(o,2),l=e=>{var n=gj(),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=gj(),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 yj=U(`<label><input type="radio" name="env" class="svelte-1jciobo"/> </label>`),bj=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),xj=U(`<!><!>`,1),Sj=U(`<!><!><!><!>`,1),Cj=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),wj=U(`<div class="dropping svelte-1jciobo">Drop to open this board</div>`),Tj=U(`<div class="banner svelte-1jciobo" role="alert"> </div> <div class="frame svelte-1jciobo" aria-hidden="true"></div>`,1),Ej=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>`),Dj=U(`<!> <div class="stage svelte-1jciobo"><div class="work svelte-1jciobo"><div class="board svelte-1jciobo"><!> <!></div> <!></div> <!></div>`,1),Oj=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>`),kj=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 Aj(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),px(e.dataTransfer?.files[0]))},l=N(void 0),u=N(``);Fn(()=>{Iy.follow()});let d=M(()=>gA.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?_x.setup?.open():(!Z.apps.length||location.hash===`#pick`)&&(history.replaceState(null,``,location.pathname+location.search),_x.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.databases,Z.hiddenQueues,Z.hiddenOutside,Z.pinned,Z.cards.map(e=>[e.id,e.data.run,e.data.hideTunnels,e.data.showQueues,e.data.shownTunnels])]));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}: ${sc(t.edit,e)}.`);oo(`board-edit-done`,{id:t.id})}})}),Fn(()=>{Z.stack&&IS.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&&!wx.review&&(e.preventDefault(),wx.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=kj();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 Rc},size:16}),k(ie);var ae=R(ie,2);WT(F(ae),{size:22}),Ae(),k(ae);var oe=R(ae,2),se=e=>{var t=bj(),r=R(I(t),2);hj(r,{});var i=R(r,2);Vc(F(i),{size:16}),Ae(),k(i);var a=R(i,2);q(a,20,()=>Z.envs,e=>e,(e,t)=>{var r=yj();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 _x.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=xj(),n=I(t);sw(n,{}),zy(R(n),{}),W(e,t)};K(ce,e=>{Z.stack&&e(le)});var ue=R(ce,2),de=F(ue),fe=e=>{var t=Sj(),n=I(t);KT(n,{});var r=R(n);oT(r,{});var i=R(r);cT(i,{}),kC(R(i),{}),W(e,t)};K(de,e=>{Z.stack&&e(fe)}),lw(R(de,2),{}),k(ue);var pe=R(ue,2),me=e=>{var t=Cj(),n=I(t),r=F(n),i=R(r,2);{let e=M(()=>[{label:`Stop apps, keep changes`,about:wx.started.length?`Stops every app, API and tunnel; branches and code changes stay until you revert`:`Nothing is running`,off:!wx.started.length,run:()=>{wx.stopApps()}},{label:`Revert temporary changes`,about:wx.left.length?`Undoes what the last run left: branches back, temporary edits gone`:`Nothing to revert`,off:!wx.left.length,run:()=>{wx.stop()}},{label:`Shut down Koppler`,about:`Stops the agent listener and this canvas server; apps and tunnels keep running`,danger:!0,run:()=>{wx.shutDown()}}]);$T(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=>{$T(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:()=>{wx.start({manual:!0})}}]})};K(s,e=>{Z.nodes.length&&e(c)}),k(a),z(()=>{n.inert=!!B(d),r.disabled=!wx.started.length,Y(r,`title`,wx.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,()=>{wx.stop()}),H(`click`,o,()=>{wx.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,wj())};K(he,e=>{B(r)&&e(ge)});var _e=R(he,2);hA(_e,{});var ve=R(_e,2);Aa(TA(ve,{}),e=>_x.setup=e,()=>_x?.setup);var ye=R(ve,2);Aa(Xk(ye,{}),e=>_x.repos=e,()=>_x?.repos);var be=R(ye,2);Aa(yE(be,{}),e=>_x.outside=e,()=>_x?.outside);var xe=R(be,2);Aa(Hk(xe,{}),e=>_x.settings=e,()=>_x?.settings);var Se=R(xe,2);Aa(qC(Se,{}),e=>_x.findings=e,()=>_x?.findings);var Ce=R(Se,2);Aa(BC(Ce,{}),e=>_x.checklist=e,()=>_x?.checklist);var we=R(Ce,2);Aa(Ic(we,{}),e=>_x.command=e,()=>_x?.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=Tj(),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=Ej(),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=Dj(),n=I(t),r=e=>{},i=e=>{uj(e,{})},a=e=>{gE(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);cy(l,{children:(e,t)=>{sC(e,{})},$$slots:{default:!0}}),vj(R(l,2),{}),k(c);var u=R(c,2),d=e=>{xE(e,{})};K(u,e=>{Z.present||e(d)}),k(s);var f=R(s,2),p=e=>{HT(e,{})};K(f,e=>{Z.present||e(p)}),k(o),W(e,t)},a=e=>{var t=Oj();Uc(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=>{Mw(e,{})};K(Ie,e=>{Z.present||e(Le)}),k(Me),JT(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,()=>{wx.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`]),Ec.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 jj=document.getElementById(`app`);jj&&pi(Aj,{target:jj});
|