koppler 0.2.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.
@@ -1,43 +0,0 @@
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,E=1<<25,D=65536,te=1<<19,O=1<<20,ne=1<<25,re=1<<21,ie=1<<22,ae=1<<23,oe=Symbol(`$state`),se=Symbol(`component`),ce=Symbol(`legacy props`),le=Symbol(``),ue=Symbol(`attributes`),de=Symbol(`class`),fe=Symbol(`style`),pe=Symbol(`text`),me=Symbol(`form reset`),he=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},ge=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`),_e={},ve=Symbol(`uninitialized`),ye=`http://www.w3.org/1999/xhtml`,be=`http://www.w3.org/2000/svg`;function xe(){console.warn(`https://svelte.dev/e/derived_inert`)}function Se(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function Ce(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function we(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var Te=!1;function Ee(e){Te=e}var De;function Oe(e){if(e===null)throw Se(),_e;return De=e}function ke(){return Oe(Cn(De))}function k(e){if(Te){if(Cn(De)!==null)throw Se(),_e;De=e}}function Ae(e=1){if(Te){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 Se(),_e;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,se,{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&&lt()})}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){Te&&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[me]?.()})},{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[me];e[me]=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|=te),{ctx:tt,deps:null,effects:null,equals:Ne,f:t,fn:e,reactions:null,rv:0,v:ve,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(ve),o=!or,s=new Set;return Vn(()=>{var t=lr,n=g();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==he&&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|=ae,cn(a,t)):(a.f&8388608&&(a.f^=ae),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!==ve&&r.f&24576)return xe(),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(he),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!==ve&&!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||oe in t||se 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(ve,u));r.set(t,e),un(o)}}else P(n,ve),un(o);return!0},get(e,n,i){if(n===oe)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]:ve),u)),r.set(n,o)),o!==void 0){var c=B(o);return c===ve?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===ve)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===oe)return!0;var n=r.get(t),i=n!==void 0&&n.v!==ve||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]):ve,u)),r.set(t,n)),B(n)===ve)?!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(ve,u)),r.set(d+``,p)):P(p,ve)}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!==ve;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!==ve});for(var[n,i]of r)i.v!==ve&&!(n in e)&&t.push(n);return t},setPrototypeOf(){Ge()}})}function pn(e){try{if(typeof e==`object`&&e&&oe in e)return e[oe]}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[de]=void 0,e[ue]=null,e[fe]=void 0,e.__e=void 0),u(n)&&(n[pe]=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(!Te)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(!Te){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(!Te)return Sn(e);var n=F(e,t);return k(e),n}function R(e,t=1,n=!1){let r=Te?De:e;for(var i;t--;)i=r,r=Cn(r);if(!Te)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|=ae,e;if(!(t.f&32768)&&!(t.f&4))throw e;kn(e,t)}function kn(e,t){if(e===_e)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|=D))}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|O,e)}function Ln(e){return An(`$effect.pre`),Mn(8|O,e)}function Rn(e){Kt.ensure();let t=Mn(64|te,e);return()=>{Yn(t)}}function zn(e){Kt.ensure();let t=Mn(64|te,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(ie|te,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|te,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(he)});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|=E,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^=E,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(he)}),e.ac=null);try{e.f|=re;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^=ae),d}catch(t){return Tr(e),On(t)}finally{e.f^=re,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!==ve&&mt(s),s.ac!==null&&bt(()=>{s.ac.abort(he),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===ve)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(oe in e)Pr(e);else if(!Array.isArray(e))for(let t in e){let n=e[t];typeof n==`object`&&n&&oe 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(Te)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(Te)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(!Te){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(Te)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(Te){var n=lr;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=De),ke()}else e!==null&&e.before(t)}function ci(){if(Te&&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=D|te;function di(e,t,n,r){new fi(e,t,n,r)}var fi=class{parent;is_pending=!1;transform_error;#e;#t=Te?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(Te){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),Te&&(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?we():(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|E))!==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===_e||!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),Te&&(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[pe]??=e.nodeValue)&&(e[pe]=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),Te&&ri(t,null),l=e(t,i)||ot(),Te&&(lr.nodes.end=De,De===null||De.nodeType!==8||De.data!==`]`))throw Se(),_e;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 Te&&(this.anchor=De),this.#a(n)}},vi=0,yi=1,bi=2;function xi(e,t,n,r,i){Te&&ke();var a=st(),o=ve,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=Te&&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})}),Te?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;Te&&(r=De,ke());var i=new _i(e),a=n?D:0;function o(e,t){if(Te){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){Te&&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){Te&&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|=ne,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=Te?Oe(Sn(u)):u.appendChild(xn())}Te&&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^=ne,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;Te&&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){Te&&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|=ne),l.set(x,S)),u.add(x)}if(t===0&&s&&!d&&(m?d=Gn(()=>s(c)):(d=Gn(()=>s(Oi??=xn())),d.f|=ne)),t>u.size&&Re(``,``,``),Te&&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,Te&&(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^=ne,_===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)))},D)}function Fi(e,t,n){var r;Te&&(r=De,ke());var i=new _i(e);Un(()=>{var e=t()??null;if(Te&&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)))},D)}function Ii(e,t,n,r,i,a){let o=Te;Te&&ke();var s=null;Te&&De.nodeType===1&&(s=De,ke());var c=Te?De:e,l=new _i(c,!1);Un(()=>{let e=t()||null;var a=i?i():n||e===`svg`?be:void 0;if(e===null)l.ensure(null,null);else return l.ensure(e,t=>{if(e){var n=Te;if(s=Te?s:En(e,a),ri(s,s),r){var i=null;Te&&Wr(e)&&s.append(i=document.createComment(``));var o=Te?Sn(s):s.appendChild(xn());Te&&(o===null?Ee(!1):Oe(o)),r(s,o),i?.remove()}lr.nodes.end=s,n||t.before(s)}Te&&Oe(t)}),()=>{}},D),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[de];if(Te||o!==n||o===void 0){var s=Ui(n,r,a);(!Te||s!==e.getAttribute(`class`))&&(s==null?e.removeAttribute(`class`):t?e.className=s:e.setAttribute(`class`,s)),e[de]=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[fe];if(Te||i!==t){var a=Ki(t,r);(!Te||a!==e.getAttribute(`style`))&&(a==null?e.removeAttribute(`style`):e.style.cssText=a),e[fe]=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 Ce();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=ge?`link`:`LINK`,ca=ge?`input`:`INPUT`,la=ge?`option`:`OPTION`,ua=ge?`select`:`SELECT`,da=ge?`progress`:`PROGRESS`;function fa(e){if(Te){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[me]=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);Te&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===sa)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[le]=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){Te&&i&&e.nodeName===ca&&(`defaultValue`in n||`defaultChecked`in n||fa(e));var o=_a(e),s=o[aa],c=!o[oa];let l=Te&&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]=ve)):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[ue]??={[aa]:e.nodeName.includes(`-`),[oa]:e.namespaceURI===ye}}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))}}}),(Te&&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();Te&&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)}),(Te&&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?.[oe]===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===oe||t===ce)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=oe in e||ce 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=[[`valkey`,`Cache (Valkey)`],[`redis`,`Cache (Redis)`],[`aurora`,`Database (Aurora)`],[`postgres`,`Database (Postgres)`],[`mysql`,`Database (MySQL)`],[`mongo`,`Database (MongoDB)`],[`db`,`Database`],[`rds`,`Database`]];function Ao(e){if(e.what)return e.what;let t=(e.tunnel??``).toLowerCase(),n=t.split(/[.-]/);return ko.find(([e])=>n.includes(e)||e.length>3&&t.includes(e))?.[1]??`Tunnel`}function jo(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:Ao(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 Mo(e,t=[]){let n=jo(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 No(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 Po={5432:`postgres`,3306:`mysql`,6379:`valkey`,6380:`valkey`},Fo=/postgres|mysql|aurora|rds|cluster|valkey|redis|elasticache|database|\bdb\b|cache/i,Io=e=>!!e.tunnel&&!!e.port&&!e.env&&!e.connectsAs&&(!!Po[e.port]||Fo.test(`${e.tunnel} ${e.what??``}`)),Lo=e=>/redis/i.test(e.tunnel??``)?`redis`:Po[e.port??0]??(/mysql/i.test(e.what??``)?`mysql`:`postgres`),Ro=e=>!!e.hosts&&!e.tunnel&&Fo.test(e.hosts),zo=e=>e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-|-$/g,``)||`database`;function Bo(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 Vo(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(Io);for(let r of n){let n=r.tunnel??``,i=o.get(n);if(!i){let e=r.what&&!/^(database|cache)\b/i.test(r.what)?r.what:Ao({tunnel:n}),t=e.replace(/\s*\([^)]*\)$/,``)||e;for(i=zo(t);a[i];)i=`${i}-2`;o.set(n,i),a[i]={name:t,kind:Lo(r),tunnel:n,port:r.port,...r.cmd&&{cmd:r.cmd}},s.push(`New database ${i}: ${t}, through the tunnel to ${n}`)}(t.uses??={})[i]??={},s.push(`${t.name??e} uses ${i} instead of its own tunnel to ${n}`)}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(Io),l=r.filter(Ro);for(let t of n){let u=n.filter(e=>e.port===t.port),d=e===i?t:s.filter(e=>e.port===t.port)[u.indexOf(t)],f=o.get(t.tunnel??``)??``,p=a[f];if(!d||!p)continue;let m=e===i?p:(p.envs??={})[e]??={tunnel:d.tunnel,port:d.port};if(m.tunnel!==d.tunnel||m.port!==d.port)continue;r.splice(r.indexOf(d),1);let h=c.get(`${f}@${e}`)??[];h.push({list:r,endpoint:n.length===1&&l.length===1?l[0]:void 0}),c.set(`${f}@${e}`,h)}}}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]=[Bo(n),Bo(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 Ho={name:`The stack`,key:`koppler`,version:`0.2.0`,migrations:[{version:`0.2.0`,about:`Names each database once under databases, used by its apps, instead of a tunnel on each app`,up:Vo}]},Uo=e=>wo(e,Ho),Wo=80,Go=90,Ko=(e,t)=>e[t];function qo(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=Ko(i,e.from)<=Ko(i,e.to),a=t?e.to:e.from,o=t?e.from:e.to;if(i[o]!==i[a]){for(let t=Ko(i,o)+1;t<Ko(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 Jo=e=>{let t={};for(let n of e)n.forEach((e,n)=>t[e]=n);return t};function Yo(e,t,n){let r=Jo(e),i=0;return t.forEach(([e,a],o)=>{for(let[s,c]of t.slice(o+1))n[e]===n[s]&&(Ko(r,e)-Ko(r,s))*(Ko(r,a)-Ko(r,c))<0&&i++}),i}function Xo(e,t){let{rows:n,links:r,row:i}=qo(e,t),a={};for(let[e,t]of r)(a[e]??=[]).push(t),(a[t]??=[]).push(e);let o=n.map(e=>[...e]),s=Yo(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=Jo(n),o=n=>{let o=(a[n]??[]).filter(n=>i[n]===e+(t?-1:1));return o.length?o.reduce((e,t)=>e+Ko(r,t),0)/o.length:Ko(r,n)};n[e]?.sort((e,t)=>o(e)-o(t))}let l=Yo(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 Zo(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(Ko(d,t),Ko(d,e)+1);for(let e of s){let t=(o[e]??[]).map(e=>Ko(d,e));t.length&&(d[e]=Math.max(Ko(d,e),Math.min(...t)-1))}return d}function Qo(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,Ko(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+Ko(c,t),0)/i.length:Ko(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-Ko(c,t))),c[t]=i}}}for(let e of Object.keys(c))n[e]=Ko(c,e)-a(e)}function $o(e,t,n,r=`down`,i=!1,{pad:a,tight:o=!1,anchor:s}={pad:0}){let c=Zo(e,t),l=[];for(let t of e)(l[Ko(c,t)]??=[]).push(t);let u=l.filter(Boolean);if(Xo(u,t.filter(({from:e,to:t})=>e in c&&t in c&&e!==t)),i)for(let e of u)e.reverse();let d=Object.fromEntries(e.map(e=>[e,n(e)])),f=o?.6:1,p=r===`down`,m=p?`w`:`h`,h=p?`h`:`w`,g=p?Wo*f:Go*.6*f,_=p?Go*f:Wo*1.6*f,v=e=>e.reduce((e,t)=>e+Ko(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+=Ko(d,n)[m]+g;S+=Math.max(...e.map(e=>Ko(d,e)[h]))+_}Qo(u,t,b,e=>Ko(d,e)[m],g,e=>s?.(e)??Ko(d,e)[m]/2);let C=Math.min(...Object.values(b)),w={};for(let t of e){let e=Math.round(Ko(b,t)-C+a+40);w[t]=p?{x:e,y:Ko(x,t)}:{x:Ko(x,t),y:e}}return w}function es(e,t,n,r,i={}){let a=t=>{let n=Ko(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 ts={top:[0,-1],right:[1,0],bottom:[0,1],left:[-1,0]},ns={top:`bottom`,bottom:`top`,left:`right`,right:`left`},rs=(e,t,n)=>Math.min(Math.max(e,t),Math.max(t,n)),is=(e,t,n)=>t?{x:e.x+ts[t][0]*n,y:e.y+ts[t][1]*n}:e,as=({x:e,y:t})=>`${String(e)},${String(t)}`,os=({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 ss(e,t,n,r){let i=rs(Math.hypot(n.x-e.x,n.y-e.y)*.4,30,140);return[e,is(e,t,i),is(n,r,i),n]}function cs(e,t,n,r){let[,i,a]=ss(e,t,n,r);return`M${as(e)} C${as(i)} ${as(a)} ${as(n)}`}function ls(e,t,n,r,i){let a=is(e,t,40),o=[a,...i,is(n,r,40)],s=`M${as(e)} L${as(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${as(l)} ${as(u)} ${as(a)}`}return`${s} L${as(n)}`}var us=e=>e===`left`||e===`right`,ds=e=>[[`from`,e.from,e.fromSide,e.to],[`to`,e.to,e.toSide,e.from]];function fs(e){let t=new Map;return e.forEach((e,n)=>{for(let[r,i,a,o]of ds(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 ps=(e,t)=>t>1?Math.min(26,(e-48)/(t-1)):0,ms=e=>e.every(t=>t.other===e[0]?.other)&&e.every(({cable:e,end:t,side:n})=>(t===`from`?e.toSide:e.fromSide)===ns[n])?e[0]?.other:void 0;function hs(e,t){for(let n of fs(e).values()){let[{id:e,side:r}={id:``,side:`top`}]=n,i=us(r)?`y`:`x`,a=e=>i===`x`?e.w:e.h,o=e=>e[i]+a(e)/2,s=t(e),c=ms(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(ps(a(s),n.length),ps(a(t(c)),n.length));r-e>=u*(n.length-1)+32&&(l=Math.round((e+r)/2-o(s)))}let u=os(s,r),[d,f]=ts[r],p=({cable:e,end:n,other:r})=>{let a=os(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 gs(e,{cardOf:t,coveredBelow:n}){let r={},i=[];for(let a of fs(e).values()){let[{id:e,side:o}={id:``,side:`top`}]=a,s=t(e);if(!s)continue;let c=us(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(ms(a)??``);e&&(g=Math.min(g,ps(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);_=rs(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 _s=[[`cli`,`Koppler`],[`ide`,`Your IDE`]],vs={tool:`docker`,fix:`Install a Docker runtime (Docker Desktop or Colima)`},ys={tool:`npm`,fix:`Comes with Node`},bs={dotnet:{label:`.NET`,runIn:_s,serves:!0,needs:[{tool:`dotnet`,fix:`Install the .NET SDK the repo targets`}]},flutter:{label:`Flutter`,runIn:_s,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:_s,serves:!0,needs:[ys]},web:{label:`Web`,runIn:_s,serves:!1,browser:!0,needs:[ys]},lambda:{label:`Lambda`,runIn:_s,serves:!0,needs:[vs,{tool:`aws`,fix:`brew install awscli`}]},sam:{label:`AWS SAM`,runIn:_s,serves:!0,needs:[vs,{tool:`sam`,fix:`brew install aws-sam-cli (or: uv tool install aws-sam-cli)`}]},other:{label:`Other`,runIn:_s,serves:!0}},xs=(e,t)=>e.read(t)??``,Ss=(e,t)=>t.map(t=>xs(e,t)).join(`
3
- `).toLowerCase(),Cs=(e,t)=>t?` ${e}${String(t)}`:``,ws=e=>Ss(e,[`pyproject.toml`,`requirements.txt`,`Pipfile`]);function Ts(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 Es=e=>/spring-boot|springframework\.boot/.test(Ss(e,[`pom.xml`,`build.gradle`,`build.gradle.kts`])),Ds=e=>[`compose.yaml`,`compose.yml`,`docker-compose.yml`,`docker-compose.yaml`].find(t=>e.has(t)),Os={reactnative:{label:`React Native`,color:[`#087EA4`,`#58C4DC`],serves:!1,platforms:[[`ios`,`iOS simulator`],[`android`,`Android emulator`]],detect:e=>/"(expo|react-native)"\s*:/.test(xs(e,`package.json`)),start:(e,{platform:t=`ios`})=>/"expo"\s*:/.test(xs(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=>Es(e)?8080:null,start:e=>e.has(`pom.xml`)?Es(e)?`${e.has(`mvnw`)?`./mvnw`:`mvn`} spring-boot:run`:null:`${e.has(`gradlew`)?`./gradlew`:`gradle`} ${Es(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=ws(e);return e.has(`manage.py`)||/fastapi|uvicorn/.test(t)?8e3:t.includes(`flask`)?5e3:null},start:(e,{port:t})=>{let n=Ts(e),r=ws(e);if(e.has(`manage.py`))return`${n}python manage.py runserver${Cs(``,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${Cs(`--port `,t)}`:null}return r.includes(`flask`)?`${n}flask run${Cs(`--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${Cs(`-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${Cs(`--port=`,t)}`:null},compose:{label:`Docker Compose`,color:[`#1D63ED`,`#7AA7FF`],detect:e=>!!Ds(e),port:e=>Number(/["'\s-](\d{2,5}):\d{2,5}["'\s]/.exec(xs(e,Ds(e)??``))?.[1])||null,start:()=>`docker compose up`,stop:`docker compose down`}};for(let[e,t]of Object.entries(Os))bs[e]={label:t.label,runIn:_s,serves:t.serves!==!1,...t.platforms&&{platforms:t.platforms},...t.color&&{color:t.color}};Object.keys(bs);var ks={kinds:bs,recipes:Os,custom:[]},As=new WeakMap;function js(e){let t=e?.kinds;if(typeof t!=`object`||!t)return ks;let n=As.get(t);if(n)return n;let r={kinds:{...bs},recipes:{...Os},custom:[]};for(let[e,n]of Object.entries(t)){if(!/^[a-z0-9-]{1,32}$/.test(e)||Object.hasOwn(bs,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:_s,serves:t.serves!==!1,custom:!0},r.custom.push(e)}return As.set(t,r),r}var Ms=e=>js(e).kinds;function Ns(e,t){let n=e?.kind,r=Ms(t);return n!==void 0&&Object.hasOwn(r,n)&&r[n]||{label:n??`App`,runIn:_s,serves:!0}}var Ps=e=>typeof e==`string`?e:``,Fs=e=>({branch:e?.branch||``,run:e?.run||`cli`,...e?.platform&&{platform:e.platform},...Ps(e?.note)&&{note:Ps(e?.note)},...e?.tunnels===!1&&{tunnels:!1},...e?.queues===!0&&{queues:!0},...Ps(e?.changes)&&{changes:Ps(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}}),Is=e=>e?.run===`mock`?{branch:``,run:`mock`,...e.restart===!0&&{restart:!0}}:Fs(e);function Ls(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,Is(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 Rs=(e,t)=>e.edges.filter(e=>e.from===t).map(e=>e.to).sort(),zs=e=>e.toUpperCase(),Bs=e=>({ide:`your IDE`,cli:`the command line`,mock:`a mock`})[e];function Vs(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 ${zs(r.from)} to ${zs(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 ${Bs(a.run)} to ${Bs(o.run)}`),(a.platform??``)!==(o.platform??``)&&o.run===`cli`&&c.push(`its device changes to ${String(o.platform)}`);let l=Rs(t,e),u=Rs(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 Hs(e,t,n={}){let r=Ls(e),i=Ls(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&&Rs(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=Vs(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 Us=[[`starts`,`START`],[`restarts`,`RESTART`],[`stops`,`STOP AND REVERT`],[`keeps`,`KEEP RUNNING`]];function Ws(e,t={}){let n=e=>t.name?.(e)??e,r=e=>n(e.id)+(e.why.length>0?` (${e.why.join(`; `)})`:``),i=Us.filter(([t])=>e[t].length>0).map(([t,n])=>`${n}: ${e[t].map(r).join(`, `)}`);return i.length>0?i:[`NOTHING TO CHANGE`]}var Gs=[`sqs`,`kafka`];function Ks(e,t){let n=e?.apps?.[t];return[...new Set([...Object.keys(n?.publishes??{}),...Object.keys(n?.reads??{})])]}function qs(e){let t=e?.envs??[],n=e?.protected;return Array.isArray(n)?t.filter(e=>n.includes(e)):t.slice(1)}var Js=(e,t)=>qs(e).includes(t),Ys=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function Xs(e){if(!Ys(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(!Ys(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,Ys(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 Zs(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 Qs=e=>Ys(e)&&typeof e.from==`string`&&typeof e.to==`string`;function $s(e,t){let n=Xs(e);if(n.error!==void 0)return{error:n.error};let r=n.preset,i=[],a=e=>t.name?.(e)??e;(!Ys(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,Zs(e,r.nodes[e]??{},t,a(e),i)])),d=[],f=0;for(let e of r.edges.filter(Qs)){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 ec=e=>Ys(e)&&typeof e.x==`number`&&typeof e.y==`number`,tc=e=>t=>e.from===t.from&&e.to===t.to;function nc(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=Ys(e.layout)?e.layout:void 0,o=r(Ys(a?.nodes)?a.nodes:{}),s=Object.values(o).filter(ec),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(Qs).filter(e=>!n.has(e.from)&&!n.has(e.to)&&!(t.uncable??[]).some(tc(e)));for(let e of t.cable??[])l.some(tc(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(Ys(a.sides)?a.sides:{}).filter(([e])=>u.has(e)));return{...e,nodes:i,edges:l,layout:{...a,nodes:o,sides:d}}}function rc(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 ic={cli:`Koppler`,ide:`Me`,mock:`Mock`},ac=.6,oc=[[`down`,!1],[`right`,!1],[`down`,!0],[`right`,!0]],sc=e=>`tunnel:${e.host}:${String(e.original)}`,cc={w:230,h:58,gap:40},lc=[`bottom`,`right`,`left`,`top`],uc=8,dc=24,fc=44,pc={w:300,h:240,gap:32},mc=(e,t,n)=>({id:`${e}>${t}`,source:e,target:t,type:`cable`,data:n}),hc=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??cc.w,h:n?.height??cc.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(()=>Mo(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:Ao(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(sc),...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)?[]:Ks(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:Ao({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:sc(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 lc.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:sc(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(()=>gs(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+cc.gap/2:c===`top`?s.y-cc.gap/2:s.y,u=s.y-cc.gap;return t.map(e=>{if(!o.has(e.id))return e;let t=this.infraBoxes.get(e.id)??cc;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-=cc.gap,n}c===`top`&&(l-=t.h);let n=c===`right`?s.x+s.w+cc.gap:c===`left`?s.x-cc.gap-t.w:s.x,r={...e,position:{x:n,y:l}};return l+=c===`top`?-cc.gap/2:t.h+cc.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-cc.gap/2:s+e+cc.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??cc.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+cc.gap/2:-1/0,n=e.position.y>=Math.max(u,t)?e.position.y:Math.max(u+cc.gap/2,t);n!==e.position.y&&(d[e.id]=n),u=n+(this.infraBoxes.get(e.id)?.h??cc.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=sc(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 ${Ao({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&&Gs.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)??cc,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)??cc}),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=cc,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=uc/(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=os(n,i),o=this.ends.offset[`${String(e)}|${t}`]??0;return{side:i,at:ts[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=ts[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=uc/(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&&$s(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=>Xs(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=$s(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=Xs(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=$s(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(hc),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 ts,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)?mc(e,t,es(c,{from:e,to:t},`down`,()=>({w:260,h:160}))):mc(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=Uo(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=>Js(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:Ns(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:Ns(n,s).serves||Object.entries(s.apps).some(([t,n])=>t!==e&&(n.consumes?.[e]??s.found?.[t]?.[e])),serves:!!n.url,runIn:[...Ns(n,s).runIn,...n.mock?.length?[[`mock`,`Mock`]]:[]],platforms:Ns(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})=>mc(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-pc.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:pc.w,h:pc.h}),s=(e,t)=>o.every(n=>e+pc.w+pc.gap<=n.x||n.x+n.w+pc.gap<=e||t+pc.h+pc.gap<=n.y||n.y+n.h+pc.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,pc.h)).filter(e=>e>=i.y&&e+pc.h<=a.y),f=u(o.map(e=>e.x+e.w+pc.gap).sort(l),c(i.x,a.x,pc.w)).filter(e=>e>=i.x&&e+pc.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(hc)}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(hc),this.nodes=this.nodes.map(t)}#ze(e){this.infra=this.infra.map(hc),this.edges=this.edges.map(hc),this.nodes=[...this.nodes.map(hc),{...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=mc(e,t,es(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={...nc(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<oc.length;i++,r++){let[i,a]=oc[r%oc.length]??oc[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)??cc),{w:a,h:o}=e(n);if(!i.length)return{w:a,h:o};let s=i.reduce((e,t)=>e+t.h+cc.gap/2,0),c=Math.max(...i.map(e=>e.w));return t===`down`&&r.some(e=>e.from===n)?{w:a+cc.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=$o([...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:dc,anchor:n=>s.includes(n)?void 0:t===`down`?e(n).w/2:fc/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,...es(d,n,t,e,f)}));hs(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})=>mc(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}},gc={waiting:`Waiting`,building:`Building`,running:`Running`,unhealthy:`Unhealthy`,exited:`Exited`,"failed-to-start":`Failed to start`,"secret-missing":`Secret missing`},_c={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?_c[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 vc(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 yc=(e,t)=>io(e,t,!0),bc=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}`:``}`},xc=e=>!!e.closest(`[type="password"], [data-secret]`),Sc=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&&yc(`debug-log`,{entries:e})}async read(){return this.flush(),await new Promise(e=>setTimeout(e,300)),(await fetch(`temp/debug.jsonl?${String(Date.now())}`).then(e=>e.ok?e.text():``).catch(()=>``)).trim().split(`
4
- `).slice(-300).join(`
5
- `)}clear(){this.#t=[],yc(`debug-clear`,{})}watch(){try{P(this.#e,localStorage.getItem(`koppler-debug`)===`on`)}catch{}let e={capture:!0};addEventListener(`click`,e=>{e.target instanceof Element&&!xc(e.target)&&this.note(`click`,bc(e.target))},e),addEventListener(`change`,e=>{let t=e.target;if(!(t instanceof Element)||xc(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`,bc(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),Sc.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 Cc(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 wc=U(`<p class="ask svelte-gr1w3a"> </p>`),Tc=U(`<span class="opt svelte-gr1w3a">optional</span>`),Ec=U(`<option> </option>`),Dc=U(`<select class="svelte-gr1w3a"></select>`),Oc=U(`<input class="svelte-gr1w3a"/>`),kc=U(`<label class="svelte-gr1w3a"><span> <!></span> <!></label>`),Ac=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),jc=U(`<dialog aria-labelledby="command-title" class="svelte-gr1w3a"><!></dialog>`);function Mc(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 Cc(B(r),B(i))??``,!0),P(o,!1),B(a)||B(n)?.close())};var l={open:s},u=jc(),d=F(u),f=e=>{let t=M(()=>B(r));var s=Ac(),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=wc(),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=kc(),r=F(n),a=F(r,!0),o=R(a),s=e=>{W(e,Tc())};K(o,e=>{B(t).required||e(s)}),k(r);var c=R(r,2),l=e=>{var n=Dc();q(n,20,()=>B(t).choices??[],e=>e,(e,t)=>{var n=Ec(),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=Oc();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 Nc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Pc(e,t){let n=La(t,Nc),r={name:`panel-left`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`}],[`path`,{d:`M9 3v18`}]],aliases:[`sidebar`]};$a(e,za(()=>n,{get icon(){return r}}))}var Fc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ic(e,t){let n=La(t,Fc),r={name:`settings`,size:24,node:[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`}],[`circle`,{cx:`12`,cy:`12`,r:`3`}]]};$a(e,za(()=>n,{get icon(){return r}}))}function Lc(e,t){let n=X(t,`size`,3,14);Ua(e,{get of(){return Ic},get size(){return n()}})}var Rc=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 zc(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=Rc(),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 Bc={value:()=>{}};function Vc(){for(var e=0,t=arguments.length,n={},r;e<t;++e){if(!(r=arguments[e]+``)||r in n||/[\s.]/.test(r))throw Error(`illegal type: `+r);n[r]=[]}return new Hc(n)}function Hc(e){this._=e}function Uc(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}})}Hc.prototype=Vc.prototype={constructor:Hc,on:function(e,t){var n=this._,r=Uc(e+``,n),i,a=-1,o=r.length;if(arguments.length<2){for(;++a<o;)if((i=(e=r[a]).type)&&(i=Wc(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]=Gc(n[i],e.name,t);else if(t==null)for(i in n)n[i]=Gc(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 Hc(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 Wc(e,t){for(var n=0,r=e.length,i;n<r;++n)if((i=e[n]).name===t)return i.value}function Gc(e,t,n){for(var r=0,i=e.length;r<i;++r)if(e[r].name===t){e[r]=Bc,e=e.slice(0,r).concat(e.slice(r+1));break}return n!=null&&e.push({name:t,value:n}),e}var Kc={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 qc(e){var t=e+=``,n=t.indexOf(`:`);return n>=0&&(t=e.slice(0,n))!==`xmlns`&&(e=e.slice(n+1)),Kc.hasOwnProperty(t)?{space:Kc[t],local:e}:e}function Jc(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 Yc(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function Xc(e){var t=qc(e);return(t.local?Yc:Jc)(t)}function Zc(){}function Qc(e){return e==null?Zc:function(){return this.querySelector(e)}}function $c(e){typeof e!=`function`&&(e=Qc(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=Array(o),c,l,u=0;u<o;++u)(c=a[u])&&(l=e.call(c,c.__data__,u,a))&&(`__data__`in c&&(l.__data__=c.__data__),s[u]=l);return new Vu(r,this._parents)}function el(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function tl(){return[]}function nl(e){return e==null?tl:function(){return this.querySelectorAll(e)}}function rl(e){return function(){return el(e.apply(this,arguments))}}function il(e){e=typeof e==`function`?rl(e):nl(e);for(var t=this._groups,n=t.length,r=[],i=[],a=0;a<n;++a)for(var o=t[a],s=o.length,c,l=0;l<s;++l)(c=o[l])&&(r.push(e.call(c,c.__data__,l,o)),i.push(c));return new Vu(r,i)}function al(e){return function(){return this.matches(e)}}function ol(e){return function(t){return t.matches(e)}}var sl=Array.prototype.find;function cl(e){return function(){return sl.call(this.children,e)}}function ll(){return this.firstElementChild}function ul(e){return this.select(e==null?ll:cl(typeof e==`function`?e:ol(e)))}var dl=Array.prototype.filter;function fl(){return Array.from(this.children)}function pl(e){return function(){return dl.call(this.children,e)}}function ml(e){return this.selectAll(e==null?fl:pl(typeof e==`function`?e:ol(e)))}function hl(e){typeof e!=`function`&&(e=al(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=[],c,l=0;l<o;++l)(c=a[l])&&e.call(c,c.__data__,l,a)&&s.push(c);return new Vu(r,this._parents)}function gl(e){return Array(e.length)}function _l(){return new Vu(this._enter||this._groups.map(gl),this._parents)}function vl(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}vl.prototype={constructor:vl,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 yl(e){return function(){return e}}function bl(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 vl(e,a[o]);for(;o<c;++o)(s=t[o])&&(i[o]=s)}function xl(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 vl(e,a[s]);for(s=0;s<u;++s)(c=t[s])&&l.get(f[s])===c&&(i[s]=c)}function Sl(e){return e.__data__}function Cl(e,t){if(!arguments.length)return Array.from(this,Sl);var n=t?xl:bl,r=this._parents,i=this._groups;typeof e!=`function`&&(e=yl(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=wl(e.call(u,u&&u.__data__,l,r)),m=p.length,h=s[l]=Array(m),g=o[l]=Array(m);n(u,d,h,g,c[l]=Array(f),p,t);for(var _=0,v=0,y,b;_<m;++_)if(y=h[_]){for(_>=v&&(v=_+1);!(b=g[v])&&++v<m;);y._next=b||null}}return o=new Vu(o,r),o._enter=s,o._exit=c,o}function wl(e){return typeof e==`object`&&`length`in e?e:Array.from(e)}function Tl(){return new Vu(this._exit||this._groups.map(gl),this._parents)}function El(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 Dl(e){for(var t=e.selection?e.selection():e,n=this._groups,r=t._groups,i=n.length,a=r.length,o=Math.min(i,a),s=Array(i),c=0;c<o;++c)for(var l=n[c],u=r[c],d=l.length,f=s[c]=Array(d),p,m=0;m<d;++m)(p=l[m]||u[m])&&(f[m]=p);for(;c<i;++c)s[c]=n[c];return new Vu(s,this._parents)}function Ol(){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 kl(e){e||=Al;function t(t,n){return t&&n?e(t.__data__,n.__data__):!t-!n}for(var n=this._groups,r=n.length,i=Array(r),a=0;a<r;++a){for(var o=n[a],s=o.length,c=i[a]=Array(s),l,u=0;u<s;++u)(l=o[u])&&(c[u]=l);c.sort(t)}return new Vu(i,this._parents).order()}function Al(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function jl(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function Ml(){return Array.from(this)}function Nl(){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 Pl(){let e=0;for(let t of this)++e;return e}function Fl(){return!this.node()}function Il(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 Ll(e){return function(){this.removeAttribute(e)}}function Rl(e){return function(){this.removeAttributeNS(e.space,e.local)}}function zl(e,t){return function(){this.setAttribute(e,t)}}function Bl(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function Vl(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttribute(e):this.setAttribute(e,n)}}function Hl(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 Ul(e,t){var n=qc(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?Rl:Ll:typeof t==`function`?n.local?Hl:Vl:n.local?Bl:zl)(n,t))}function Wl(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function Gl(e){return function(){this.style.removeProperty(e)}}function Kl(e,t,n){return function(){this.style.setProperty(e,t,n)}}function ql(e,t,n){return function(){var r=t.apply(this,arguments);r==null?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}function Jl(e,t,n){return arguments.length>1?this.each((t==null?Gl:typeof t==`function`?ql:Kl)(e,t,n??``)):Yl(this.node(),e)}function Yl(e,t){return e.style.getPropertyValue(t)||Wl(e).getComputedStyle(e,null).getPropertyValue(t)}function Xl(e){return function(){delete this[e]}}function Zl(e,t){return function(){this[e]=t}}function Ql(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function $l(e,t){return arguments.length>1?this.each((t==null?Xl:typeof t==`function`?Ql:Zl)(e,t)):this.node()[e]}function eu(e){return e.trim().split(/^|\s+/)}function tu(e){return e.classList||new nu(e)}function nu(e){this._node=e,this._names=eu(e.getAttribute(`class`)||``)}nu.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 ru(e,t){for(var n=tu(e),r=-1,i=t.length;++r<i;)n.add(t[r])}function iu(e,t){for(var n=tu(e),r=-1,i=t.length;++r<i;)n.remove(t[r])}function au(e){return function(){ru(this,e)}}function ou(e){return function(){iu(this,e)}}function su(e,t){return function(){(t.apply(this,arguments)?ru:iu)(this,e)}}function cu(e,t){var n=eu(e+``);if(arguments.length<2){for(var r=tu(this.node()),i=-1,a=n.length;++i<a;)if(!r.contains(n[i]))return!1;return!0}return this.each((typeof t==`function`?su:t?au:ou)(n,t))}function lu(){this.textContent=``}function uu(e){return function(){this.textContent=e}}function du(e){return function(){var t=e.apply(this,arguments);this.textContent=t??``}}function fu(e){return arguments.length?this.each(e==null?lu:(typeof e==`function`?du:uu)(e)):this.node().textContent}function pu(){this.innerHTML=``}function mu(e){return function(){this.innerHTML=e}}function hu(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??``}}function gu(e){return arguments.length?this.each(e==null?pu:(typeof e==`function`?hu:mu)(e)):this.node().innerHTML}function _u(){this.nextSibling&&this.parentNode.appendChild(this)}function vu(){return this.each(_u)}function yu(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function bu(){return this.each(yu)}function xu(e){var t=typeof e==`function`?e:Xc(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function Su(){return null}function Cu(e,t){var n=typeof e==`function`?e:Xc(e),r=t==null?Su:typeof t==`function`?t:Qc(t);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function wu(){var e=this.parentNode;e&&e.removeChild(this)}function Tu(){return this.each(wu)}function Eu(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function Du(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function Ou(e){return this.select(e?Du:Eu)}function ku(e){return arguments.length?this.property(`__data__`,e):this.node().__data__}function Au(e){return function(t){e.call(this,t,this.__data__)}}function ju(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 Mu(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 Nu(e,t,n){return function(){var r=this.__on,i,a=Au(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 Pu(e,t,n){var r=ju(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?Nu:Mu,i=0;i<a;++i)this.each(s(r[i],t,n));return this}}function Fu(e,t,n){var r=Wl(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 Iu(e,t){return function(){return Fu(this,e,t)}}function Lu(e,t){return function(){return Fu(this,e,t.apply(this,arguments))}}function Ru(e,t){return this.each((typeof t==`function`?Lu:Iu)(e,t))}function*zu(){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 Bu=[null];function Vu(e,t){this._groups=e,this._parents=t}function Hu(){return new Vu([[document.documentElement]],Bu)}function Uu(){return this}Vu.prototype=Hu.prototype={constructor:Vu,select:$c,selectAll:il,selectChild:ul,selectChildren:ml,filter:hl,data:Cl,enter:_l,exit:Tl,join:El,merge:Dl,selection:Uu,order:Ol,sort:kl,call:jl,nodes:Ml,node:Nl,size:Pl,empty:Fl,each:Il,attr:Ul,style:Jl,property:$l,classed:cu,text:fu,html:gu,raise:vu,lower:bu,append:xu,insert:Cu,remove:Tu,clone:Ou,datum:ku,on:Pu,dispatch:Ru,[Symbol.iterator]:zu};function Wu(e){return typeof e==`string`?new Vu([[document.querySelector(e)]],[document.documentElement]):new Vu([[e]],Bu)}function Gu(e){let t;for(;t=e.sourceEvent;)e=t;return e}function Ku(e,t){if(e=Gu(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 qu={passive:!1},Ju={capture:!0,passive:!1};function Yu(e){e.stopImmediatePropagation()}function Xu(e){e.preventDefault(),e.stopImmediatePropagation()}function Zu(e){var t=e.document.documentElement,n=Wu(e).on(`dragstart.drag`,Xu,Ju);`onselectstart`in t?n.on(`selectstart.drag`,Xu,Ju):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect=`none`)}function Qu(e,t){var n=e.document.documentElement,r=Wu(e).on(`dragstart.drag`,null);t&&(r.on(`click.drag`,Xu,Ju),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 $u=e=>()=>e;function ed(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}})}ed.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function td(e){return!e.ctrlKey&&!e.button}function nd(){return this.parentNode}function rd(e,t){return t??{x:e.x,y:e.y}}function id(){return navigator.maxTouchPoints||`ontouchstart`in this}function ad(){var e=td,t=nd,n=rd,r=id,i={},a=Vc(`start`,`drag`,`end`),o=0,s,c,l,u,d=0;function f(e){e.on(`mousedown.drag`,p).filter(r).on(`touchstart.drag`,g).on(`touchmove.drag`,_,qu).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&&(Wu(n.view).on(`mousemove.drag`,m,Ju).on(`mouseup.drag`,h,Ju),Zu(n.view),Yu(n),l=!1,s=n.clientX,c=n.clientY,i(`start`,n))}}function m(e){if(Xu(e),!l){var t=e.clientX-s,n=e.clientY-c;l=t*t+n*n>d}i.mouse(`drag`,e)}function h(e){Wu(e.view).on(`mousemove.drag mouseup.drag`,null),Qu(e.view,l),Xu(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]))&&(Yu(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])&&(Xu(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])&&(Yu(e),a(`end`,e,t[r]))}function y(e,t,r,s,c,l){var u=a.copy(),d=Ku(l||r,t),p,m,h;if((h=n.call(e,new ed(`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=Ku(l||a,t),_=o}u.call(r,e,new ed(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:$u(!!t),f):e},f.container=function(e){return arguments.length?(t=typeof e==`function`?e:$u(e),f):t},f.subject=function(e){return arguments.length?(n=typeof e==`function`?e:$u(e),f):n},f.touchable=function(e){return arguments.length?(r=typeof e==`function`?e:$u(!!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 od(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function sd(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function cd(){}var ld=.7,ud=1/ld,dd=`\\s*([+-]?\\d+)\\s*`,fd=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*`,pd=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*`,md=/^#([0-9a-f]{3,8})$/,hd=RegExp(`^rgb\\(${dd},${dd},${dd}\\)$`),gd=RegExp(`^rgb\\(${pd},${pd},${pd}\\)$`),_d=RegExp(`^rgba\\(${dd},${dd},${dd},${fd}\\)$`),vd=RegExp(`^rgba\\(${pd},${pd},${pd},${fd}\\)$`),yd=RegExp(`^hsl\\(${fd},${pd},${pd}\\)$`),bd=RegExp(`^hsla\\(${fd},${pd},${pd},${fd}\\)$`),xd={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};od(cd,Ed,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Sd,formatHex:Sd,formatHex8:Cd,formatHsl:wd,formatRgb:Td,toString:Td});function Sd(){return this.rgb().formatHex()}function Cd(){return this.rgb().formatHex8()}function wd(){return zd(this).formatHsl()}function Td(){return this.rgb().formatRgb()}function Ed(e){var t,n;return e=(e+``).trim().toLowerCase(),(t=md.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?Dd(t):n===3?new jd(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?Od(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?Od(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=hd.exec(e))?new jd(t[1],t[2],t[3],1):(t=gd.exec(e))?new jd(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=_d.exec(e))?Od(t[1],t[2],t[3],t[4]):(t=vd.exec(e))?Od(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=yd.exec(e))?Rd(t[1],t[2]/100,t[3]/100,1):(t=bd.exec(e))?Rd(t[1],t[2]/100,t[3]/100,t[4]):xd.hasOwnProperty(e)?Dd(xd[e]):e===`transparent`?new jd(NaN,NaN,NaN,0):null}function Dd(e){return new jd(e>>16&255,e>>8&255,e&255,1)}function Od(e,t,n,r){return r<=0&&(e=t=n=NaN),new jd(e,t,n,r)}function kd(e){return e instanceof cd||(e=Ed(e)),e?(e=e.rgb(),new jd(e.r,e.g,e.b,e.opacity)):new jd}function Ad(e,t,n,r){return arguments.length===1?kd(e):new jd(e,t,n,r??1)}function jd(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}od(jd,Ad,sd(cd,{brighter(e){return e=e==null?ud:ud**+e,new jd(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?ld:ld**+e,new jd(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new jd(Id(this.r),Id(this.g),Id(this.b),Fd(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Md,formatHex:Md,formatHex8:Nd,formatRgb:Pd,toString:Pd}));function Md(){return`#${Ld(this.r)}${Ld(this.g)}${Ld(this.b)}`}function Nd(){return`#${Ld(this.r)}${Ld(this.g)}${Ld(this.b)}${Ld((isNaN(this.opacity)?1:this.opacity)*255)}`}function Pd(){let e=Fd(this.opacity);return`${e===1?`rgb(`:`rgba(`}${Id(this.r)}, ${Id(this.g)}, ${Id(this.b)}${e===1?`)`:`, ${e})`}`}function Fd(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Id(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Ld(e){return e=Id(e),(e<16?`0`:``)+e.toString(16)}function Rd(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Vd(e,t,n,r)}function zd(e){if(e instanceof Vd)return new Vd(e.h,e.s,e.l,e.opacity);if(e instanceof cd||(e=Ed(e)),!e)return new Vd;if(e instanceof Vd)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n<r)*6:n===a?(r-t)/s+2:(t-n)/s+4,s/=c<.5?a+i:2-a-i,o*=60):s=c>0&&c<1?0:o,new Vd(o,s,c,e.opacity)}function Bd(e,t,n,r){return arguments.length===1?zd(e):new Vd(e,t,n,r??1)}function Vd(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}od(Vd,Bd,sd(cd,{brighter(e){return e=e==null?ud:ud**+e,new Vd(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?ld:ld**+e,new Vd(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new jd(Wd(e>=240?e-240:e+120,i,r),Wd(e,i,r),Wd(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new Vd(Hd(this.h),Ud(this.s),Ud(this.l),Fd(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=Fd(this.opacity);return`${e===1?`hsl(`:`hsla(`}${Hd(this.h)}, ${Ud(this.s)*100}%, ${Ud(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function Hd(e){return e=(e||0)%360,e<0?e+360:e}function Ud(e){return Math.max(0,Math.min(1,e||0))}function Wd(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 Gd=e=>()=>e;function Kd(e,t){return function(n){return e+n*t}}function qd(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function Jd(e){return(e=+e)==1?Yd:function(t,n){return n-t?qd(t,n,e):Gd(isNaN(t)?n:t)}}function Yd(e,t){var n=t-e;return n?Kd(e,n):Gd(isNaN(e)?t:e)}var Xd=(function e(t){var n=Jd(t);function r(e,t){var r=n((e=Ad(e)).r,(t=Ad(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=Yd(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 Zd(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 Qd(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function $d(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]=lf(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 ef(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function tf(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function nf(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]=lf(e[i],t[i]):r[i]=t[i];return function(e){for(i in n)r[i]=n[i](e);return r}}var rf=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,af=new RegExp(rf.source,`g`);function of(e){return function(){return e}}function sf(e){return function(t){return e(t)+``}}function cf(e,t){var n=rf.lastIndex=af.lastIndex=0,r,i,a,o=-1,s=[],c=[];for(e+=``,t+=``;(r=rf.exec(e))&&(i=af.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:tf(r,i)})),n=af.lastIndex;return n<t.length&&(a=t.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?c[0]?sf(c[0].x):of(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 lf(e,t){var n=typeof t,r;return t==null||n===`boolean`?Gd(t):(n===`number`?tf:n===`string`?(r=Ed(t))?(t=r,Xd):cf:t instanceof Ed?Xd:t instanceof Date?ef:Qd(t)?Zd:Array.isArray(t)?$d:typeof t.valueOf!=`function`&&typeof t.toString!=`function`||isNaN(t)?nf:tf)(e,t)}var uf=180/Math.PI,df={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function ff(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)*uf,skewX:Math.atan(c)*uf,scaleX:o,scaleY:s}}var pf;function mf(e){let t=new(typeof DOMMatrix==`function`?DOMMatrix:WebKitCSSMatrix)(e+``);return t.isIdentity?df:ff(t.a,t.b,t.c,t.d,t.e,t.f)}function hf(e){return e==null||(pf||=document.createElementNS(`http://www.w3.org/2000/svg`,`g`),pf.setAttribute(`transform`,e),!(e=pf.transform.baseVal.consolidate()))?df:(e=e.matrix,ff(e.a,e.b,e.c,e.d,e.e,e.f))}function gf(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:tf(e,i)},{i:c-2,x:tf(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:tf(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:tf(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:tf(e,n)},{i:s-2,x:tf(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 _f=gf(mf,`px, `,`px)`,`deg)`),vf=gf(hf,`, `,`)`,`)`),yf=1e-12;function bf(e){return((e=Math.exp(e))+1/e)/2}function xf(e){return((e=Math.exp(e))-1/e)/2}function Sf(e){return((e=Math.exp(2*e))-1)/(e+1)}var Cf=(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<yf)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=bf(y),c=s/(n*g)*(i*Sf(t*r+y)-xf(y));return[a+c*d,o+c*f,s*i/bf(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),wf=0,Tf=0,Ef=0,Df=1e3,Of,kf,Af=0,jf=0,Mf=0,Nf=typeof performance==`object`&&performance.now?performance:Date,Pf=typeof window==`object`&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function Ff(){return jf||=(Pf(If),Nf.now()+Mf)}function If(){jf=0}function Lf(){this._call=this._time=this._next=null}Lf.prototype=Rf.prototype={constructor:Lf,restart:function(e,t,n){if(typeof e!=`function`)throw TypeError(`callback is not a function`);n=(n==null?Ff():+n)+(t==null?0:+t),!this._next&&kf!==this&&(kf?kf._next=this:Of=this,kf=this),this._call=e,this._time=n,Uf()},stop:function(){this._call&&(this._call=null,this._time=1/0,Uf())}};function Rf(e,t,n){var r=new Lf;return r.restart(e,t,n),r}function zf(){Ff(),++wf;for(var e=Of,t;e;)(t=jf-e._time)>=0&&e._call.call(void 0,t),e=e._next;--wf}function Bf(){jf=(Af=Nf.now())+Mf,wf=Tf=0;try{zf()}finally{wf=0,Hf(),jf=0}}function Vf(){var e=Nf.now(),t=e-Af;t>Df&&(Mf-=t,Af=e)}function Hf(){for(var e,t=Of,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:Of=n);kf=e,Uf(r)}function Uf(e){wf||(Tf&&=clearTimeout(Tf),e-jf>24?(e<1/0&&(Tf=setTimeout(Bf,e-Nf.now()-Mf)),Ef&&=clearInterval(Ef)):(Ef||=(Af=Nf.now(),setInterval(Vf,Df)),wf=1,Pf(Bf)))}function Wf(e,t,n){var r=new Lf;return t=t==null?0:+t,r.restart(n=>{r.stop(),e(n+t)},t,n),r}var Gf=Vc(`start`,`end`,`cancel`,`interrupt`),Kf=[];function qf(e,t,n,r,i,a){var o=e.__transition;if(!o)e.__transition={};else if(n in o)return;Zf(e,n,{name:t,index:r,group:i,on:Gf,tween:Kf,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:0})}function Jf(e,t){var n=Xf(e,t);if(n.state>0)throw Error(`too late; already scheduled`);return n}function Yf(e,t){var n=Xf(e,t);if(n.state>3)throw Error(`too late; already running`);return n}function Xf(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw Error(`transition not found`);return n}function Zf(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=Rf(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 Wf(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(Wf(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 Qf(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 $f(e){return this.each(function(){Qf(this,e)})}function ep(e,t){var n,r;return function(){var i=Yf(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 tp(e,t,n){var r,i;if(typeof n!=`function`)throw Error();return function(){var a=Yf(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 np(e,t){var n=this._id;if(e+=``,arguments.length<2){for(var r=Xf(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?ep:tp)(n,e,t))}function rp(e,t,n){var r=e._id;return e.each(function(){var e=Yf(this,r);(e.value||={})[t]=n.apply(this,arguments)}),function(e){return Xf(e,r).value[t]}}function ip(e,t){var n;return(typeof t==`number`?tf:t instanceof Ed?Xd:(n=Ed(t))?(t=n,Xd):cf)(e,t)}function ap(e){return function(){this.removeAttribute(e)}}function op(e){return function(){this.removeAttributeNS(e.space,e.local)}}function sp(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 cp(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 lp(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 up(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 dp(e,t){var n=qc(e),r=n===`transform`?vf:ip;return this.attrTween(e,typeof t==`function`?(n.local?up:lp)(n,r,rp(this,`attr.`+e,t)):t==null?(n.local?op:ap)(n):(n.local?cp:sp)(n,r,t))}function fp(e,t){return function(n){this.setAttribute(e,t.call(this,n))}}function pp(e,t){return function(n){this.setAttributeNS(e.space,e.local,t.call(this,n))}}function mp(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&pp(e,i)),n}return i._value=t,i}function hp(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&fp(e,i)),n}return i._value=t,i}function gp(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=qc(e);return this.tween(n,(r.local?mp:hp)(r,t))}function _p(e,t){return function(){Jf(this,e).delay=+t.apply(this,arguments)}}function vp(e,t){return t=+t,function(){Jf(this,e).delay=t}}function yp(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?_p:vp)(t,e)):Xf(this.node(),t).delay}function bp(e,t){return function(){Yf(this,e).duration=+t.apply(this,arguments)}}function xp(e,t){return t=+t,function(){Yf(this,e).duration=t}}function Sp(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?bp:xp)(t,e)):Xf(this.node(),t).duration}function Cp(e,t){if(typeof t!=`function`)throw Error();return function(){Yf(this,e).ease=t}}function wp(e){var t=this._id;return arguments.length?this.each(Cp(t,e)):Xf(this.node(),t).ease}function Tp(e,t){return function(){var n=t.apply(this,arguments);if(typeof n!=`function`)throw Error();Yf(this,e).ease=n}}function Ep(e){if(typeof e!=`function`)throw Error();return this.each(Tp(this._id,e))}function Dp(e){typeof e!=`function`&&(e=al(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 nm(r,this._parents,this._name,this._id)}function Op(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 nm(o,this._parents,this._name,this._id)}function kp(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 Ap(e,t,n){var r,i,a=kp(t)?Jf:Yf;return function(){var o=a(this,e),s=o.on;s!==r&&(i=(r=s).copy()).on(t,n),o.on=i}}function jp(e,t){var n=this._id;return arguments.length<2?Xf(this.node(),n).on.on(e):this.each(Ap(n,e,t))}function Mp(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function Np(){return this.on(`end.remove`,Mp(this._id))}function Pp(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=Qc(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,qf(l[f],t,n,f,l,Xf(u,n)));return new nm(a,this._parents,t,n)}function Fp(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=nl(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=Xf(u,n),h=0,g=f.length;h<g;++h)(p=f[h])&&qf(p,t,n,h,f,m);a.push(f),o.push(u)}return new nm(a,o,t,n)}var Ip=Hu.prototype.constructor;function Lp(){return new Ip(this._groups,this._parents)}function Rp(e,t){var n,r,i;return function(){var a=Yl(this,e),o=(this.style.removeProperty(e),Yl(this,e));return a===o?null:a===n&&o===r?i:i=t(n=a,r=o)}}function zp(e){return function(){this.style.removeProperty(e)}}function Bp(e,t,n){var r,i=n+``,a;return function(){var o=Yl(this,e);return o===i?null:o===r?a:a=t(r=o,n)}}function Vp(e,t,n){var r,i,a;return function(){var o=Yl(this,e),s=n(this),c=s+``;return s??(c=s=(this.style.removeProperty(e),Yl(this,e))),o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s))}}function Hp(e,t){var n,r,i,a=`style.`+t,o=`end.`+a,s;return function(){var c=Yf(this,e),l=c.on,u=c.value[a]==null?s||=zp(t):void 0;(l!==n||i!==u)&&(r=(n=l).copy()).on(o,i=u),c.on=r}}function Up(e,t,n){var r=(e+=``)==`transform`?_f:ip;return t==null?this.styleTween(e,Rp(e,r)).on(`end.style.`+e,zp(e)):typeof t==`function`?this.styleTween(e,Vp(e,r,rp(this,`style.`+e,t))).each(Hp(this._id,e)):this.styleTween(e,Bp(e,r,t),n).on(`end.style.`+e,null)}function Wp(e,t,n){return function(r){this.style.setProperty(e,t.call(this,r),n)}}function Gp(e,t,n){var r,i;function a(){var a=t.apply(this,arguments);return a!==i&&(r=(i=a)&&Wp(e,a,n)),r}return a._value=t,a}function Kp(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,Gp(e,t,n??``))}function qp(e){return function(){this.textContent=e}}function Jp(e){return function(){var t=e(this);this.textContent=t??``}}function Yp(e){return this.tween(`text`,typeof e==`function`?Jp(rp(this,`text`,e)):qp(e==null?``:e+``))}function Xp(e){return function(t){this.textContent=e.call(this,t)}}function Zp(e){var t,n;function r(){var r=e.apply(this,arguments);return r!==n&&(t=(n=r)&&Xp(r)),t}return r._value=e,r}function Qp(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,Zp(e))}function $p(){for(var e=this._name,t=this._id,n=rm(),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=Xf(c,t);qf(c,e,n,l,o,{time:u.time+u.delay+u.duration,delay:0,duration:u.duration,ease:u.ease})}return new nm(r,this._parents,e,n)}function em(){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=Yf(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 tm=0;function nm(e,t,n,r){this._groups=e,this._parents=t,this._name=n,this._id=r}function rm(){return++tm}var im=Hu.prototype;nm.prototype={constructor:nm,select:Pp,selectAll:Fp,selectChild:im.selectChild,selectChildren:im.selectChildren,filter:Dp,merge:Op,selection:Lp,transition:$p,call:im.call,nodes:im.nodes,node:im.node,size:im.size,empty:im.empty,each:im.each,on:jp,attr:dp,attrTween:gp,style:Up,styleTween:Kp,text:Yp,textTween:Qp,remove:Np,tween:np,delay:yp,duration:Sp,ease:wp,easeVarying:Ep,end:em,[Symbol.iterator]:im[Symbol.iterator]};function am(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var om={time:null,delay:0,duration:250,ease:am};function sm(e,t){for(var n;!(n=e.__transition)||!(n=n[t]);)if(!(e=e.parentNode))throw Error(`transition ${t} not found`);return n}function cm(e){var t,n;e instanceof nm?(t=e._id,e=e._name):(t=rm(),(n=om).time=Ff(),e=e==null?null:e+``);for(var r=this._groups,i=r.length,a=0;a<i;++a)for(var o=r[a],s=o.length,c,l=0;l<s;++l)(c=o[l])&&qf(c,e,t,l,o,n||sm(c,t));return new nm(r,this._parents,e,t)}Hu.prototype.interrupt=$f,Hu.prototype.transition=cm;var lm=e=>()=>e;function um(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 dm(e,t,n){this.k=e,this.x=t,this.y=n}dm.prototype={constructor:dm,scale:function(e){return e===1?this:new dm(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new dm(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 fm=new dm(1,0,0);pm.prototype=dm.prototype;function pm(e){for(;!e.__zoom;)if(!(e=e.parentNode))return fm;return e.__zoom}function mm(e){e.stopImmediatePropagation()}function hm(e){e.preventDefault(),e.stopImmediatePropagation()}function gm(e){return(!e.ctrlKey||e.type===`wheel`)&&!e.button}function _m(){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 vm(){return this.__zoom||fm}function ym(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function bm(){return navigator.maxTouchPoints||`ontouchstart`in this}function xm(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 Sm(){var e=gm,t=_m,n=xm,r=ym,i=bm,a=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],s=250,c=Cf,l=Vc(`start`,`zoom`,`end`),u,d,f,p=500,m=150,h=0,g=10;function _(e){e.property(`__zoom`,vm).on(`wheel.zoom`,w,{passive:!1}).on(`mousedown.zoom`,T).on(`dblclick.zoom`,ee).filter(i).on(`touchstart.zoom`,E).on(`touchmove.zoom`,D).on(`touchend.zoom touchcancel.zoom`,te).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`,vm),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(fm.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 dm(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 dm(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 dm(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=Wu(this.that).datum();l.call(e,this.that,new um(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=Ku(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)],Qf(this),s.start();hm(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=Wu(t.view).on(`mousemove.zoom`,d,!0).on(`mouseup.zoom`,p,!0),c=Ku(t,i),l=t.clientX,u=t.clientY;Zu(t.view),mm(t),a.mouse=[c,this.__zoom.invert(c)],Qf(this),a.start();function d(e){if(hm(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]=Ku(e,i),a.mouse[1]),a.extent,o))}function p(e){s.on(`mousemove.zoom mouseup.zoom`,null),Qu(e.view,a.moved),hm(e),a.event(e).end()}}function ee(r,...i){if(e.apply(this,arguments)){var a=this.__zoom,c=Ku(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);hm(r),s>0?Wu(this).transition().duration(s).call(x,d,c,r):Wu(this).call(_.transform,d,c,r)}}function E(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(mm(t),s=0;s<i;++s)c=r[s],l=Ku(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)),Qf(this),a.start())}}function D(e,...t){if(this.__zooming){var r=S(this,t).event(e),i=e.changedTouches,a=i.length,s,c,l,u;for(hm(e),s=0;s<a;++s)c=i[s],l=Ku(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 te(e,...t){if(this.__zooming){var n=S(this,t).event(e),r=e.changedTouches,i=r.length,a,o;for(mm(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=Ku(o,this),Math.hypot(d[0]-o[0],d[1]-o[1])<g)){var s=Wu(this).on(`dblclick.zoom`);s&&s.apply(this,arguments)}}}return _.wheelDelta=function(e){return arguments.length?(r=typeof e==`function`?e:lm(+e),_):r},_.filter=function(t){return arguments.length?(e=typeof t==`function`?t:lm(!!t),_):e},_.touchable=function(e){return arguments.length?(i=typeof e==`function`?e:lm(!!e),_):i},_.extent=function(e){return arguments.length?(t=typeof e==`function`?e:lm([[+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 Cm={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.`},wm=[[-1/0,-1/0],[1/0,1/0]],Tm=[`Enter`,` `,`Escape`],Em={"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`},Dm;(function(e){e.Strict=`strict`,e.Loose=`loose`})(Dm||={});var Om;(function(e){e.Free=`free`,e.Vertical=`vertical`,e.Horizontal=`horizontal`})(Om||={});var km;(function(e){e.Partial=`partial`,e.Full=`full`})(km||={});var Am={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null},jm;(function(e){e.Bezier=`default`,e.Straight=`straight`,e.Step=`step`,e.SmoothStep=`smoothstep`,e.SimpleBezier=`simplebezier`})(jm||={});var Mm;(function(e){e.Arrow=`arrow`,e.ArrowClosed=`arrowclosed`})(Mm||={});var Nm;(function(e){e.Left=`left`,e.Top=`top`,e.Right=`right`,e.Bottom=`bottom`})(Nm||={});var Pm={[Nm.Left]:Nm.Right,[Nm.Right]:Nm.Left,[Nm.Top]:Nm.Bottom,[Nm.Bottom]:Nm.Top},Fm=e=>!!e&&typeof e==`object`&&`id`in e&&`source`in e&&`target`in e,Im=e=>!!e&&typeof e==`object`&&`id`in e&&`position`in e&&!(`source`in e)&&!(`target`in e),Lm=e=>!!e&&typeof e==`object`&&`id`in e&&`internals`in e&&!(`source`in e)&&!(`target`in e),Rm=(e,t=[0,0])=>{let{width:n,height:r}=vh(e),i=e.origin??t,a=n*i[0],o=r*i[1];return{x:e.position.x-a,y:e.position.y-o}},zm=(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):Lm(r)?r:t.nodeLookup.get(r.id)),a?(n=!0,Qm(e,nh(a,t.nodeOrigin))):e},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return n?eh(r):{x:0,y:0,width:0,height:0}},Bm=(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=Qm(n,nh(e)),r=!0)}),r?eh(n):{x:0,y:0,width:0,height:0}},Vm=(e,t,[n,r,i]=[0,0,1],a=!1,o=!1)=>{let s=(t.x-n)/i,c=(t.y-r)/i,l=t.width/i,u=t.height/i,d=[];for(let t of e.values()){let{measured:e,selectable:n=!0,hidden:r=!1}=t;if(o&&!n||r)continue;let i=e.width??t.width??t.initialWidth??0,f=e.height??t.height??t.initialHeight??0,{x:p,y:m}=t.internals.positionAbsolute,h=ih(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},Hm=(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 Um(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}=vh(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 Wm({nodes:e,width:t,height:n,panZoom:r,minZoom:i,maxZoom:a},o){if(e.size===0)return!0;let s=hh(Bm(Um(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 Gm({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`,Cm.error005());else{let{width:e,height:t}=vh(s);e&&t&&(d=[[c,l],[c+e,l+t]])}}else s&&_h(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=_h(d)?Jm(t,d,o.measured):t;return(o.measured.width===void 0||o.measured.height===void 0)&&a?.(`015`,Cm.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 Km({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=Hm(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 qm=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),Jm=(e={x:0,y:0},t,n)=>({x:qm(e.x,t[0][0],t[1][0]-(n?.width??0)),y:qm(e.y,t[0][1],t[1][1]-(n?.height??0))});function Ym(e,t,n){let{width:r,height:i}=vh(n),{x:a,y:o}=n.internals.positionAbsolute;return Jm(e,[[a,o],[a+r,o+i]],t)}var Xm=(e,t,n)=>e<t?qm(Math.abs(e-t),1,t)/t:e>n?-qm(Math.abs(e-n),1,t)/t:0,Zm=(e,t,n=15,r=40)=>[Xm(e.x,r,t.width-r)*n,Xm(e.y,r,t.height-r)*n],Qm=(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)}),$m=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),eh=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),th=(e,t=[0,0])=>{let{x:n,y:r}=Lm(e)?e.internals.positionAbsolute:Rm(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}},nh=(e,t=[0,0])=>{let{x:n,y:r}=Lm(e)?e.internals.positionAbsolute:Rm(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)}},rh=(e,t)=>eh(Qm($m(e),$m(t))),ih=(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)},ah=(e,t)=>ih(e.x,e.y,e.width,e.height,t.x,t.y,t.width,t.height),oh=e=>sh(e.width)&&sh(e.height)&&sh(e.x)&&sh(e.y),sh=e=>!isNaN(e)&&isFinite(e),ch=(e,t)=>(e,t)=>{},lh=(e,t=[1,1])=>({x:t[0]*Math.round(e.x/t[0]),y:t[1]*Math.round(e.y/t[1])}),uh=({x:e,y:t},[n,r,i],a=!1,o=[1,1])=>{let s={x:(e-n)/i,y:(t-r)/i};return a?lh(s,o):s},dh=({x:e,y:t},[n,r,i])=>({x:e*i+n,y:t*i+r});function fh(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 ph(e,t,n){if(typeof e==`string`||typeof e==`number`){let r=fh(e,n),i=fh(e,t);return{top:r,right:i,bottom:r,left:i,x:i*2,y:r*2}}if(typeof e==`object`){let r=fh(e.top??e.y??0,n),i=fh(e.bottom??e.y??0,n),a=fh(e.left??e.x??0,t),o=fh(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 mh(e,t,n,r,i,a){let{x:o,y:s}=dh(e,[t,n,r]),{x:c,y:l}=dh({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 hh=(e,t,n,r,i,a)=>{let o=ph(a,t,n),s=(t-o.x)/e.width,c=(n-o.y)/e.height,l=qm(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=mh(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}},gh=()=>typeof navigator<`u`&&navigator?.userAgent?.indexOf(`Mac`)>=0;function _h(e){return e!=null&&e!==`parent`}function vh(e){return{width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}}function yh(e){return(e.measured?.width??e.width??e.initialWidth)!==void 0&&(e.measured?.height??e.height??e.initialHeight)!==void 0}function bh(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 xh(e){return{...Em,...e||{}}}function Sh(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 Ch(e,t,n){if(!n)return;let r=[];e.forEach((e,n)=>{t?.has(n)||r.push(e)}),r.length&&n(r)}function wh(e){return e===null?null:e?`valid`:`invalid`}function Th(e,{snapGrid:t=[0,0],snapToGrid:n=!1,transform:r,containerBounds:i}){let{x:a,y:o}=jh(e),s=uh({x:a-(i?.left??0),y:o-(i?.top??0)},r),{x:c,y:l}=n?lh(s,t):s;return{xSnapped:c,ySnapped:l,...s}}var Eh=e=>({width:e.offsetWidth,height:e.offsetHeight}),Dh=e=>e?.getRootNode?.()||window?.document,Oh=[`INPUT`,`SELECT`,`TEXTAREA`];function kh(e){let t=e.composedPath?.()?.[0]||e.target;return t?.nodeType===1?Oh.includes(t.nodeName)||t.hasAttribute(`contenteditable`)||!!t.closest(`.nokey`):!1}var Ah=e=>`clientX`in e,jh=(e,t)=>{let n=Ah(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)}},Mh=(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,...Eh(t)}})};function Nh({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 Ph(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function Fh({pos:e,x1:t,y1:n,x2:r,y2:i,c:a}){switch(e){case Nm.Left:return[t-Ph(t-r,a),n];case Nm.Right:return[t+Ph(r-t,a),n];case Nm.Top:return[t,n-Ph(n-i,a)];case Nm.Bottom:return[t,n+Ph(i-n,a)]}}function Ih({sourceX:e,sourceY:t,sourcePosition:n=Nm.Bottom,targetX:r,targetY:i,targetPosition:a=Nm.Top,curvature:o=.25}){let[s,c]=Fh({pos:n,x1:e,y1:t,x2:r,y2:i,c:o}),[l,u]=Fh({pos:a,x1:r,y1:i,x2:e,y2:t,c:o}),[d,f,p,m]=Nh({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 Lh({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 Rh({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 zh({sourceNode:e,targetNode:t,width:n,height:r,transform:i}){let a=Qm(nh(e),nh(t));return a.x===a.x2&&(a.x2+=1),a.y===a.y2&&(a.y2+=1),ah({x:-i[0]/i[2],y:-i[1]/i[2],width:n/i[2],height:r/i[2]},eh(a))>0}var Bh=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`xy-edge__${e}${t||``}-${n}${r||``}`,Vh=(e,t)=>t.some(t=>t.source===e.source&&t.target===e.target&&(t.sourceHandle===e.sourceHandle||!t.sourceHandle&&!e.sourceHandle)&&(t.targetHandle===e.targetHandle||!t.targetHandle&&!e.targetHandle)),Hh=(e,t,n={})=>{if(!e.source||!e.target)return n.onError?.(`006`,Cm.error006()),t;let r=n.getEdgeId||Bh,i;return i=Fm(e)?{...e}:{...e,id:r(e)},Vh(i,t)?t:(i.sourceHandle===null&&delete i.sourceHandle,i.targetHandle===null&&delete i.targetHandle,t.concat(i))};function Uh({sourceX:e,sourceY:t,targetX:n,targetY:r}){let[i,a,o,s]=Lh({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,i,a,o,s]}var Wh={[Nm.Left]:{x:-1,y:0},[Nm.Right]:{x:1,y:0},[Nm.Top]:{x:0,y:-1},[Nm.Bottom]:{x:0,y:1}},Gh=({source:e,sourcePosition:t=Nm.Bottom,target:n})=>t===Nm.Left||t===Nm.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},Kh=(e,t)=>Math.sqrt((t.x-e.x)**2+(t.y-e.y)**2);function qh({source:e,sourcePosition:t=Nm.Bottom,target:n,targetPosition:r=Nm.Top,center:i,offset:a,stepPosition:o}){let s=Wh[t],c=Wh[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=Gh({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]=Lh({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 Jh(e,t,n,r){let i=Math.min(Kh(e,t)/2,Kh(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 Yh({sourceX:e,sourceY:t,sourcePosition:n=Nm.Bottom,targetX:r,targetY:i,targetPosition:a=Nm.Top,borderRadius:o=5,centerX:s,centerY:c,offset:l=20,stepPosition:u=.5}){let[d,f,p,m,h]=qh({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+=Jh(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 Xh(e){return e&&!!(e.internals.handleBounds||e.handles?.length)&&!!(e.measured.width||e.width||e.initialWidth)}function Zh(e){let{sourceNode:t,targetNode:n}=e;if(!Xh(t)||!Xh(n))return null;let r=t.internals.handleBounds||Qh(t.handles),i=n.internals.handleBounds||Qh(n.handles),a=eg(r?.source??[],e.sourceHandle),o=eg(e.connectionMode===Dm.Strict?i?.target??[]:(i?.target??[]).concat(i?.source??[]),e.targetHandle);if(!a||!o)return e.onError?.(`008`,Cm.error008(a?`target`:`source`,{id:e.id,sourceHandle:e.sourceHandle,targetHandle:e.targetHandle})),null;let s=a?.position||Nm.Bottom,c=o?.position||Nm.Top,l=$h(t,a,s),u=$h(n,o,c);return{sourceX:l.x,sourceY:l.y,targetX:u.x,targetY:u.y,sourcePosition:s,targetPosition:c}}function Qh(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 $h(e,t,n=Nm.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??vh(e);if(r)return{x:i+o/2,y:a+s/2};switch(t?.position??n){case Nm.Top:return{x:i+o/2,y:a};case Nm.Right:return{x:i+o,y:a+s/2};case Nm.Bottom:return{x:i+o/2,y:a+s};case Nm.Left:return{x:i,y:a+s/2}}}function eg(e,t){return e&&(t?e.find(e=>e.id===t):e[0])||null}function tg(e,t){return e?typeof e==`string`?e:`${t?`${t}__`:``}${Object.keys(e).sort().map(t=>`${t}=${e[t]}`).join(`&`)}`:``}function ng(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=tg(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 rg(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 Nm.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 Nm.Bottom:o[1]=(e.y+e.height)*t.zoom+t.y+r,s[1]=0;break;case Nm.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 ig=1e3,ag=10,og={nodeOrigin:[0,0],nodeExtent:wm,elevateNodesOnSelect:!0,zIndexMode:`basic`,defaults:{}},sg={...og,checkEquality:!0};function cg(e,t){let n={...e};for(let e in t)t[e]!==void 0&&(n[e]=t[e]);return n}function lg(e,t,n){let r=cg(og,n);for(let n of e.values())if(n.parentId)mg(n,e,t,r);else{let e=Jm(Rm(n,r.nodeOrigin),_h(n.extent)?n.extent:r.nodeExtent,vh(n));n.internals.positionAbsolute=e}}function ug(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 dg(e){return e===`manual`}function fg(e,t,n,r={}){let i=cg(sg,r),a={i:0},o=new Map(t),s=i?.elevateNodesOnSelect&&!dg(i.zIndexMode)?ig: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=Jm(Rm(u,i.nodeOrigin),_h(u.extent)?u.extent:i.nodeExtent,vh(u));e={...i.defaults,...u,measured:{width:u.measured?.width,height:u.measured?.height},internals:{positionAbsolute:n,handleBounds:ug(u,e),z:hg(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&&mg(e,t,n,r,a),l||=u.selected??!1}return{nodesInitialized:c,hasSelectedNodes:l}}function pg(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 mg(e,t,n,r,i){let{elevateNodesOnSelect:a,nodeOrigin:o,nodeExtent:s,zIndexMode:c}=cg(og,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}pg(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*ag),i&&u.internals.rootParentIndex!==void 0&&(i.i=u.internals.rootParentIndex);let{x:d,y:f,z:p}=gg(e,u,o,s,a&&!dg(c)?ig: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 hg(e,t,n){let r=sh(e.zIndex)?e.zIndex:0;return dg(n)?r:r+(e.selected?t:0)}function gg(e,t,n,r,i,a){let{x:o,y:s}=t.internals.positionAbsolute,c=vh(e),l=Rm(e,n),u=_h(e.extent)?Jm(l,e.extent,c):l,d=Jm({x:o+u.x,y:s+u.y},r,c);e.extent===`parent`&&(d=Ym(d,c,t));let f=hg(e,i,a),p=t.internals.z??0;return{x:d.x,y:d.y,z:p>=f?p+1:f}}function _g(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=rh(a.get(n.parentId)?.expandedRect??th(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=vh(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 vg(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=Eh(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=_h(e.extent)?e.extent:a,{positionAbsolute:h}=e.internals;if(e.parentId&&e.extent===`parent`){let n=t.get(e.parentId);n&&(h=Ym(h,s,n))}else m&&(h=Jm(h,m,s));let g={...e,measured:s,internals:{...e.internals,positionAbsolute:h,handleBounds:{source:Mh(`source`,r.nodeElement,p,d,e.id),target:Mh(`target`,r.nodeElement,p,d,e.id)}}};t.set(e.id,g),e.parentId&&mg(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:th(g,i)}))}}if(f.length>0){let e=_g(f,t,n,i);l.push(...e)}return{changes:l,updatedInternals:c}}async function yg({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 bg(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 xg(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}`;bg(`source`,s,`${i}-${o}--${n}-${a}`,e,n,a),bg(`target`,s,c,e,i,o),t.set(r.id,r)}}function Sg(e,t){if(!e.parentId)return!1;let n=t.get(e.parentId);return n?n.selected?!0:Sg(n,t):!1}function Cg(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 wg(e,t,n,r){let i=new Map;for(let[a,o]of e)if((o.selected||o.id===r)&&(!o.parentId||!Sg(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 Tg({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 Eg({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=lh(a,t);return{x:o.x-a.x,y:o.y-a.y}}function Dg({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=Wu(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?$m(Bm(s)):null,x=v&&l?Eg({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)}:lh(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}=Gm({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]=Tg({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]=Zm(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=Th(r.sourceEvent,{transform:l,snapGrid:f,snapToGrid:p,containerBounds:u});if(a=v,s=wg(i,c,v,b),s.size>0&&(n||h||!b&&g)){let[e,t]=Tg({nodeId:b,dragItems:s,nodeLookup:i});n?.(r.sourceEvent,s,e,t),h?.(r.sourceEvent,e,t),b||g?.(r.sourceEvent,t)}}let T=ad().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=Th(e.sourceEvent,{transform:i,snapGrid:o,snapToGrid:s,containerBounds:u}),l=jh(e.sourceEvent,u)}).on(`drag`,e=>{let{autoPanOnNodeDrag:n,transform:r,snapGrid:i,snapToGrid:o,nodeDragThreshold:f,nodeLookup:m}=t(),g=Th(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=jh(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=jh(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]=Tg({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||!Cg(t,`.${g}`,v))&&(!_||Cg(t,_,v))});f.call(T)}function _(){f?.on(`.drag`,null)}return{update:g,destroy:_}}function Og(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())ah(i,th(e))>0&&r.push(e);return r}var kg=250;function Ag(e,t,n,r){let i=[],a=1/0,o=Og(e,n,t+kg);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}=$h(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 jg(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,...$h(o,c,c.position,!0)}:c}function Mg(e,t){return e||(t?.classList.contains(`target`)?`target`:t?.classList.contains(`source`)?`source`:null)}function Ng(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}var Pg=()=>!0;function Fg(e,{connectionMode:t,connectionRadius:n,handleId:r,nodeId:i,edgeUpdaterType:a,isTarget:o,domNode:s,nodeLookup:c,lib:l,autoPanOnConnect:u,flowId:d,panBy:f,cancelConnection:p,onConnectStart:m,onConnect:h,onConnectEnd:g,isValidConnection:_=Pg,onReconnectEnd:v,updateConnection:y,getTransform:b,getFromHandle:x,autoPanSpeed:S,dragThreshold:C=1,handleDomNode:w}){let T=Dh(e.target),ee=0,E,{x:D,y:te}=jh(e),O=Mg(a,w),ne=s?.getBoundingClientRect(),re=!1;if(!ne||!O)return;let ie=jg(i,O,r,c,t);if(!ie)return;let ae=jh(e,ne),oe=!1,se=null,ce=!1,le=null;function ue(){if(!u||!ne)return;let[e,t]=Zm(ae,ne,S);f({x:e,y:t}),ee=requestAnimationFrame(ue)}let de={...ie,nodeId:i,type:O,position:ie.position},fe=c.get(i),pe={inProgress:!0,isValid:null,from:$h(fe,de,Nm.Left,!0),fromHandle:de,fromPosition:de.position,fromNode:fe,to:ae,toHandle:null,toPosition:Pm[de.position],toNode:null,pointer:ae};function me(){re=!0,y(pe),m?.(e,{nodeId:i,handleId:r,handleType:O})}C===0&&me();function he(e){if(!re){let{x:t,y:n}=jh(e),r=t-D,i=n-te;if(!(r*r+i*i>C*C))return;me()}if(!x()||!de){ge(e);return}let a=b();ae=jh(e,ne),E=Ag(uh(ae,a,!1,[1,1]),n,c,de),oe||=(ue(),!0);let s=Ig(e,{handle:E,connectionMode:t,fromNodeId:i,fromHandleId:r,fromType:o?`target`:`source`,isValidConnection:_,doc:T,lib:l,flowId:d,nodeLookup:c});le=s.handleDomNode,se=s.connection,ce=Ng(!!E,s.isValid);let u=c.get(i),f=u?$h(u,de,Nm.Left,!0):pe.from,p={...pe,from:f,isValid:ce,to:s.toHandle&&ce?dh({x:s.toHandle.x,y:s.toHandle.y},a):ae,toHandle:s.toHandle,toPosition:ce&&s.toHandle?s.toHandle.position:Pm[de.position],toNode:s.toHandle?c.get(s.toHandle.nodeId):null,pointer:ae};y(p),pe=p}function ge(e){if(!(`touches`in e&&e.touches.length>0)){if(re){(E||le)&&se&&ce&&h?.(se);let{inProgress:t,...n}=pe,r={...n,toPosition:pe.toHandle?pe.toPosition:null};g?.(e,r),a&&v?.(e,r)}p(),cancelAnimationFrame(ee),oe=!1,ce=!1,se=null,le=null,T.removeEventListener(`mousemove`,he),T.removeEventListener(`mouseup`,ge),T.removeEventListener(`touchmove`,he),T.removeEventListener(`touchend`,ge)}}T.addEventListener(`mousemove`,he),T.addEventListener(`mouseup`,ge),T.addEventListener(`touchmove`,he),T.addEventListener(`touchend`,ge)}function Ig(e,{handle:t,connectionMode:n,fromNodeId:r,fromHandleId:i,fromType:a,doc:o,lib:s,flowId:c,isValidConnection:l=Pg,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}=jh(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=Mg(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===Dm.Strict?d&&e===`source`||!d&&e===`target`:t!==r||a!==i)&&l(c),_.toHandle=jg(t,e,a,u,n,!0)}return _}var Lg={onPointerDown:Fg,isValid:Ig};function Rg({domNode:e,panZoom:t,getTransform:n,getViewScale:r}){let i=Wu(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&&gh()?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=Sm().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:Ku}}var zg=e=>({x:e.x,y:e.y,zoom:e.k}),Bg=({x:e,y:t,zoom:n})=>fm.translate(e,t).scale(n),Vg=(e,t)=>e.target.closest(`.${t}`),Hg=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),Ug=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2,Wg=(e,t=0,n=Ug,r=()=>{})=>{let i=typeof t==`number`&&t>0;return i||r(),i?e.transition().duration(t).ease(n).on(`end`,r):e},Gg=e=>{let t=e.ctrlKey&&gh()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t};function Kg({zoomPanValues:e,noWheelClassName:t,d3Selection:n,d3Zoom:r,panOnScrollMode:i,panOnScrollSpeed:a,zoomOnPinch:o,onPanZoomStart:s,onPanZoom:c,onPanZoomEnd:l}){return u=>{if(Vg(u,t))return u.ctrlKey&&u.preventDefault(),!1;u.preventDefault(),u.stopImmediatePropagation();let d=n.property(`__zoom`).k||1;if(u.ctrlKey&&o){let e=Ku(u),t=d*2**Gg(u);r.scaleTo(n,t,e,u);return}let f=u.deltaMode===1?20:1,p=i===Om.Vertical?0:u.deltaX*f,m=i===Om.Horizontal?0:u.deltaY*f;!gh()&&u.shiftKey&&i!==Om.Vertical&&(p=u.deltaY*f,m=0),r.translateBy(n,-(p/d)*a,-(m/d)*a,{internal:!0});let h=zg(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 qg({noWheelClassName:e,preventScrolling:t,d3ZoomHandler:n}){return function(r,i){let a=r.type===`wheel`,o=!t&&a&&!r.ctrlKey,s=Vg(r,e);if(r.ctrlKey&&a&&s&&r.preventDefault(),o||s)return null;r.preventDefault(),n.call(this,r,i)}}function Jg({zoomPanValues:e,onDraggingChange:t,onPanZoomStart:n}){return r=>{if(r.sourceEvent?.internal)return;let i=zg(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 Yg({zoomPanValues:e,panOnDrag:t,onPaneContextMenu:n,onTransformChange:r,onPanZoom:i}){return a=>{e.usedRightMouseButton=!!(n&&Hg(t,e.mouseButton??0)),a.sourceEvent?.sync||r([a.transform.x,a.transform.y,a.transform.k]),i&&!a.sourceEvent?.internal&&i?.(a.sourceEvent,zg(a.transform))}}function Xg({zoomPanValues:e,panOnDrag:t,panOnScroll:n,onDraggingChange:r,onPanZoomEnd:i,onPaneContextMenu:a}){return o=>{if(!o.sourceEvent?.internal&&(e.isZoomingOrPanning=!1,a&&Hg(t,e.mouseButton??0)&&!e.usedRightMouseButton&&o.sourceEvent&&a(o.sourceEvent),e.usedRightMouseButton=!1,r(!1),i)){let t=zg(o.transform);e.prevViewport=t,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{i?.(o.sourceEvent,t)},n?150:0)}}}function Zg({panActivationKeyPressed:e,zoomActivationKeyPressed:t,zoomOnScroll:n,zoomOnPinch:r,panOnDrag:i,panOnScroll:a,zoomOnDoubleClick:o,userSelectionActive:s,noWheelClassName:c,noPanClassName:l,lib:u,connectionInProgress:d}){return f=>{let p=t||n,m=r&&f.ctrlKey,h=f.type===`wheel`;if(f.button===1&&f.type===`mousedown`&&(Vg(f,`${u}-flow__node`)||Vg(f,`${u}-flow__edge`)||Vg(f,`${u}-flow__selection`)||Vg(f,`${u}-flow__nodesselection`)))return!0;if(!i&&!p&&!a&&!o&&!r||s||d&&!h||Vg(f,c)&&h||Vg(f,l)&&(!h||a&&h&&!t)||!r&&f.ctrlKey&&h)return!1;if(!r&&f.type===`touchstart`&&f.touches?.length>1)return f.preventDefault(),!1;if(!p&&!a&&!m&&h||!i&&(f.type===`mousedown`||f.type===`touchstart`)||Array.isArray(i)&&!i.includes(f.button)&&f.type===`mousedown`)return!1;let g=Array.isArray(i)&&i.includes(f.button)||!f.button||f.button<=1;return(!f.ctrlKey||h||e)&&g}}function Qg({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=Sm().extent(()=>d).scaleExtent([t,n]).translateExtent(r),p=Wu(e).call(f);y({x:i.x,y:i.y,zoom:qm(i.zoom,t,n)},[[0,0],[u.width,u.height]],r);let m=p.on(`wheel.zoom`),h=p.on(`dblclick.zoom`);f.wheelDelta(Gg);async function g(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?lf:Cf).transform(Wg(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:E,selectionOnDrag:D}){r&&!l.isZoomingOrPanning&&v();let te=i&&!C&&!r;f.clickDistance(D?1/0:!sh(E)||E<0?0:E);let O=te?Kg({zoomPanValues:l,noWheelClassName:e,d3Selection:p,d3Zoom:f,panOnScrollMode:d,panOnScrollSpeed:g,zoomOnPinch:y,onPanZoomStart:o,onPanZoom:a,onPanZoomEnd:s}):qg({noWheelClassName:e,preventScrolling:_,d3ZoomHandler:m});p.on(`wheel.zoom`,O,{passive:!1});let ne=Jg({zoomPanValues:l,onDraggingChange:c,onPanZoomStart:o});f.on(`start`,ne);let re=Yg({zoomPanValues:l,panOnDrag:u,onPaneContextMenu:!!n,onPanZoom:a,onTransformChange:T});f.on(`zoom`,re);let ie=Xg({zoomPanValues:l,panOnDrag:u,panOnScroll:i,onPaneContextMenu:n,onPanZoomEnd:s,onDraggingChange:c});f.on(`end`,ie);let ae=Zg({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(ae),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=Bg(e),i=f?.constrain()(r,t,n);return i&&await g(i),i}async function b(e,t){let n=Bg(e);return await g(n,t),n}function x(e){if(p){let t=Bg(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?pm(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`?lf:Cf).scaleTo(Wg(p,t?.duration,t?.ease,()=>n(!0)),e)}):!1}async function w(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?lf:Cf).scaleBy(Wg(p,t?.duration,t?.ease,()=>n(!0)),e)}):!1}function T(e){f?.scaleExtent(e)}function ee(e){f?.translateExtent(e)}function E(e){let t=!sh(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:E}}var $g;(function(e){e.Line=`line`,e.Handle=`handle`})($g||={});var e_=ch(`Svelte Flow`,`https://svelteflow.dev/`);function t_(e,t,n={}){return Hh(e,t,{...n,onError:n.onError??e_})}function n_(){let e={};return[t=>{if(t&&!at(e))throw Error(t);return rt(e)},t=>it(e,t)]}var[r_,i_]=n_(),[a_,o_]=n_(),[s_,c_]=n_(),l_=new Set([`$$slots`,`$$events`,`$$legacy`,`id`,`type`,`position`,`style`,`class`,`isConnectable`,`isConnectableStart`,`isConnectableEnd`,`isValidConnection`,`onconnect`,`ondisconnect`,`children`]),u_=U(`<div><!></div>`);function d_(e,t){A(t,!0);let n=X(t,`id`,3,null),r=X(t,`type`,3,`source`),i=X(t,`position`,19,()=>Nm.Top),a=X(t,`isConnectableStart`,3,!0),o=X(t,`isConnectableEnd`,3,!0),s=La(t,l_),c=r_(`Handle must be used within a Custom Node component`),l=a_(`Handle must be used within a Custom Node component`),u=M(()=>r()===`target`),d=M(()=>t.isConnectable===void 0?l.value:t.isConnectable),p=ev(),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&&!Sh(e,h)){let n=e??new Map;Ch(h,n,t.ondisconnect),Ch(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===Dm.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=Ah(e);e.currentTarget&&(r&&e.button===0||!r)&&Lg.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=Dh(e.target),o=t.isValidConnection??p.isValidConnection,{connectionMode:s,clickConnectStartHandle:l,flowId:u,nodeLookup:d}=p,{connection:f,isValid:m}=Lg.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 E=u_(),D=()=>{};ga(E,()=>({"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:D,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(E),()=>t.children??f),k(E),W(e,E),j()}var f_=U(`<!> <!>`,1);function p_(e,t){A(t,!0);let n=X(t,`targetPosition`,19,()=>Nm.Top),r=X(t,`sourcePosition`,19,()=>Nm.Bottom);var i=f_(),a=I(i);d_(a,{type:`target`,get position(){return n()}});var o=R(a);d_(R(o),{type:`source`,get position(){return r()}}),z(()=>G(o,` ${t.data?.label??``} `)),W(e,i),j()}var m_=U(` <!>`,1);function h_(e,t){A(t,!0);let n=X(t,`data`,19,()=>({label:`Node`})),r=X(t,`sourcePosition`,19,()=>Nm.Bottom);Ae();var i=m_(),a=I(i);d_(R(a),{type:`source`,get position(){return r()}}),z(()=>G(a,`${n()?.label??``} `)),W(e,i),j()}var g_=U(` <!>`,1);function __(e,t){A(t,!0);let n=X(t,`data`,19,()=>({label:`Node`})),r=X(t,`targetPosition`,19,()=>Nm.Top);Ae();var i=g_(),a=I(i);d_(R(a),{type:`target`,get position(){return r()}}),z(()=>G(a,`${n()?.label??``} `)),W(e,i),j()}function v_(e,t){}function y_(e,t,n){if(!n||!t)return;let r=n===`root`?t:t.querySelector(`.svelte-flow__${n}`);r&&r.appendChild(e)}function b_(e,t){let n=M(ev),r=M(()=>B(n).domNode),i;return B(r)?y_(e,B(r),t):i=Rn(()=>{Fn(()=>{y_(e,B(r),t),i?.()})}),{async update(t){y_(e,B(r),t)},destroy(){e.parentNode&&e.parentNode.removeChild(e),i?.()}}}function x_(){let e=N(typeof window>`u`);if(B(e)){let t=Rn(()=>{Fn(()=>{P(e,!1),t?.()})})}return{get value(){return B(e)}}}var S_=e=>Im(e),C_=e=>Fm(e);function w_(e){return e===void 0?void 0:`${e}px`}var T_={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},E_=new Set([`$$slots`,`$$events`,`$$legacy`,`x`,`y`,`width`,`height`,`selectEdgeOnClick`,`transparent`,`class`,`children`]),D_=U(`<div><!></div>`);function O_(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,E_),s=ev(),c=s_(`EdgeLabel must be used within a Custom Edge component`),l=M(()=>s.visible.edges.get(c)?.zIndex);var u=D_(),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)}}),[()=>x_().value?`none`:void 0,()=>w_(t.width),()=>w_(t.height)],void 0,void 0,`svelte-1wg91mu`),Pi(F(u),()=>t.children??f),k(u),Li(u,(e,t)=>b_?.(e,t),()=>`edge-labels`),W(e,u),j()}var k_=new Set([`$$slots`,`$$events`,`$$legacy`,`id`,`path`,`label`,`labelX`,`labelY`,`labelStyle`,`markerStart`,`markerEnd`,`style`,`interactionWidth`,`class`]),A_=ai(`<path></path>`),j_=ai(`<path fill="none"></path><!><!>`,1);function M_(e,t){let n=X(t,`interactionWidth`,3,20),r=La(t,k_);var i=j_(),a=I(i),o=R(a),s=e=>{var i=A_();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=>{O_(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 N_(e,t){A(t,!0);let n=M(()=>Ih({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]);M_(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 P_(e,t){A(t,!0);let n=M(()=>Yh({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]);M_(e,{get path(){return B(i)},get labelX(){return B(a)},get labelY(){return B(o)},get label(){return t.label},get labelStyle(){return t.labelStyle},get markerStart(){return t.markerStart},get markerEnd(){return t.markerEnd},get interactionWidth(){return t.interactionWidth},get style(){return t.style}}),j()}function F_(e,t){A(t,!0);let n=M(()=>Uh({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]);M_(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 I_(e,t){A(t,!0);let n=M(()=>Yh({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]);M_(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 L_=[`forEach`,`isDisjointFrom`,`isSubsetOf`,`isSupersetOf`],R_=[`difference`,`intersection`,`symmetricDifference`,`union`],z_=!1,B_=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}z_||this.#a()}#i(e){return yr===this.#r?N(e):rn(e)}#a(){z_=!0;var t=e.prototype,n=Set.prototype;for(let e of L_)t[e]=function(...t){return B(this.#t),n[e].apply(this,t)};for(let r of R_)t[r]=function(...t){B(this.#t);var i=n[r].apply(this,t);return new e(i)}}has(e){var t=super.has(e),n=this.#e,r=n.get(e);if(r===void 0){if(!t)return B(this.#t),!1;r=this.#i(!0),n.set(e,r)}return B(r),t}add(e){return super.has(e)||(super.add(e),P(this.#n,super.size),un(this.#t)),this}delete(e){var t=super.delete(e),n=this.#e,r=n.get(e);return r!==void 0&&(n.delete(e),P(r,!1)),t&&(P(this.#n,super.size),un(this.#t)),t}clear(){if(super.size!==0){super.clear();var e=this.#e;for(var t of e.values())P(t,!1);e.clear(),P(this.#n,0),un(this.#t)}}keys(){return this.values()}values(){return B(this.#t),super.values()}entries(){return B(this.#t),super.entries()}[Symbol.iterator](){return this.keys()}get size(){return B(this.#n)}},V_=class extends Map{#e=new Map;#t=N(0);#n=N(0);#r=yr||-1;constructor(e){if(super(),e){for(var[t,n]of e)super.set(t,n);this.#n.v=super.size}}#i(e){return yr===this.#r?N(e):rn(e)}has(e){var t=this.#e,n=t.get(e);if(n===void 0){if(super.has(e))n=this.#i(0),t.set(e,n);else return B(this.#t),!1}return B(n),!0}forEach(e,t){this.#a(),super.forEach(e,t)}get(e){var t=this.#e,n=t.get(e);if(n===void 0){if(super.has(e))n=this.#i(0),t.set(e,n);else{B(this.#t);return}}return B(n),super.get(e)}getOrInsert(e,t){return super.has(e)||this.set(e,t),this.get(e)}getOrInsertComputed(e,t){return super.has(e)||this.set(e,t(e)),this.get(e)}set(e,t){var n=this.#e,r=n.get(e),i=super.get(e),a=super.set(e,t),o=this.#t;if(r===void 0)r=this.#i(0),n.set(e,r),P(this.#n,super.size),un(o);else if(i!==t){un(r);var s=o.reactions===null?null:new Set(o.reactions);(s===null||!r.reactions?.every(e=>s.has(e)))&&un(o)}return a}delete(e){var t=this.#e,n=t.get(e),r=super.delete(e);return n!==void 0&&(t.delete(e),P(n,-1)),r&&(P(this.#n,super.size),un(this.#t)),r}clear(){if(super.size!==0){super.clear();var e=this.#e;P(this.#n,0);for(var t of e.values())P(t,-1);un(this.#t),e.clear()}}#a(){B(this.#t);var e=this.#e;if(this.#n.v!==e.size){for(var t of super.keys())if(!e.has(t)){var n=this.#i(0);e.set(t,n)}}for([,n]of this.#e)B(n)}keys(){return B(this.#t),super.keys()}values(){return this.#a(),super.values()}entries(){return this.#a(),super.entries()}[Symbol.iterator](){return this.entries()}get size(){return B(this.#n),super.size}},H_=class{#e;#t;constructor(e,t){this.#e=e,this.#t=li(t)}get current(){return this.#t(),this.#e()}},U_=/\(.+\)/,W_=new Set([`all`,`print`,`screen`,`and`,`or`,`not`,`only`]),G_=class extends H_{constructor(e,t){let n=U_.test(e)||e.split(/[\s,]+/).some(e=>W_.has(e.trim()))?e:`(${e})`,r=window.matchMedia(n);super(()=>r.matches,e=>Yr(r,`change`,e))}};function K_(e,t,n,r){let i=new Map;return Vm(e,{x:0,y:0,width:n,height:r},t,!0).forEach(e=>{i.set(e.id,e)}),i}function q_(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(zh({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=Zh({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:Rh({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 J_=ch(`Svelte Flow`,`https://svelteflow.dev/`),Y_={input:h_,output:__,default:p_,group:v_},X_={straight:F_,smoothstep:P_,default:N_,step:I_};function Z_(e,t,n,r,i,a){return t&&!n&&r&&i?hh(Bm(a,{filter:e=>!(!e.width&&!e.initialWidth||!e.height&&!e.initialHeight)}),r,i,.5,2,.1):n??{x:0,y:0,zoom:1}}function Q_(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}=fg(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(()=>(xg(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=K_(i,r,t,n),d=q_({...f,onlyRenderVisible:!0,visibleNodes:u,transform:r,width:t,height:n})}else u=this.nodeLookup,d=q_(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??wm);get nodeExtent(){return B(this.#x)}set nodeExtent(e){P(this.#x,e)}#S=M(()=>e.props.translateExtent??wm);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??km.Partial);get selectionMode(){return B(this.#B)}set selectionMode(e){P(this.#B,e)}#V=M(()=>({...Y_,...e.props.nodeTypes}));get nodeTypes(){return B(this.#V)}set nodeTypes(e){P(this.#V,e)}#H=M(()=>({...X_,...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(()=>xh(e.props.ariaLabelConfig));get ariaLabelConfig(){return B(this.#K)}set ariaLabelConfig(e){P(this.#K,e)}#q=N(Z_(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(Am);get _connection(){return B(this.#J)}set _connection(e){P(this.#J,e)}#Y=M(()=>this._connection.inProgress?{...this._connection,to:uh(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??Dm.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(()=>ng(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??J_);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 Wm({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 G_(`(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=Am,this.clickConnectStartHandle=null,this.viewport=e.props.initialViewport??{x:0,y:0,zoom:1},this.ariaLiveMessage=``}}return new t}var $_=Cm.error001(`svelte`);function ev(){let e=rt(tv);if(!e)throw Error($_);return e.getStore()}var tv=Symbol();function nv(e){let t=Q_(e);function n(e){t.nodeTypes={...Y_,...e}}function r(e){t.edgeTypes={...X_,...e}}function i(e){t.edges=t_(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:$h(e,t.connection.fromHandle,Nm.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}=vg(e,t.nodeLookup,t.parentLookup,t.domNode,t.nodeOrigin,t.nodeExtent,t.zIndexMode);if(!r)return;lg(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`,Cm.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`,Cm.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=lh(t,i));let{position:n,positionAbsolute:a}=Gm({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 yg({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=Am}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 rv(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=Qg({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 iv=U(`<div class="svelte-flow__zoom svelte-flow__container"><!></div>`);function av(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=iv();Pi(F(s),()=>t.children),k(s),Li(s,(e,t)=>rv?.(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 ov(e,t){return n=>{n.target===t&&e?.(n)}}function sv(e){return t=>{let n=e.has(t.id);return!!t.selected===n?t:{...t,selected:n}}}function cv(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}var lv=U(`<div><!></div>`);function uv(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}=jh(e,s),u=uh({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=dh(r,[n().viewport.x,n().viewport.y,n().viewport.zoom]),a={startX:r.x,startY:r.y,x:e<i.x?e:i.x,y:t<i.y?t:i.y,width:Math.abs(e-i.x),height:Math.abs(t-i.y)},o=l,s=u;l=new Set(Vm(n().nodeLookup,a,[n().viewport.x,n().viewport.y,n().viewport.zoom],n().selectionMode===km.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)}}cv(o,l)||n(n().nodes=n().nodes.map(sv(l)),!0),cv(s,u)||n(n().edges=n().edges.map(sv(u)),!0),n(n().selectionRectMode=`user`,!0),n(n().selectionRect=a,!0)}function b(){if(!a()||!s)return;let[e,t]=Zm(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=jh(e,s);g={x:r.x,y:r.y};let a=dh({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&&E?.(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 E(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 D=lv();let te;var O=M(()=>B(p)?void 0:ov(E,o)),ne=M(()=>ov(T,o));Pi(F(D),()=>t.children),k(D),Aa(D,e=>o=e,()=>o),z(e=>te=J(D,1,`svelte-flow__pane svelte-flow__container`,null,te,{draggable:e,dragging:n().dragging,selection:B(f)}),[()=>r()===!0||Array.isArray(r())&&r().includes(0)]),H(`click`,D,function(...e){B(O)?.apply(this,e)}),V(`pointerdown`,D,function(...e){(B(p)?v:void 0)?.apply(this,e)},!0),H(`pointermove`,D,function(...e){(B(p)?S:void 0)?.apply(this,e)}),H(`pointerup`,D,C),V(`pointercancel`,D,function(...e){(B(p)?w:void 0)?.apply(this,e)}),H(`contextmenu`,D,function(...e){B(ne)?.apply(this,e)}),V(`click`,D,function(...e){(B(p)?ee:void 0)?.apply(this,e)},!0),W(e,D),j()}Xr([`click`,`pointermove`,`pointerup`,`contextmenu`]);var dv=U(`<div class="svelte-flow__viewport xyflow__viewport svelte-flow__container"><!></div>`);function fv(e,t){A(t,!0);var n=dv();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 pv(e,t){let{store:n,onDrag:r,onDragStart:i,onDragStop:a,onNodeMouseDown:o}=t,s=Dg({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 mv=U(`<div aria-live="assertive" aria-atomic="true" class="a11y-live-msg svelte-13pq11u"> </div>`),hv=U(`<div class="a11y-hidden svelte-13pq11u"> </div> <div class="a11y-hidden svelte-13pq11u"> </div> <!>`,1);function gv(e,t){A(t,!0);var n=hv(),r=I(n),i=L(r,!0),a=R(r,2),o=L(a,!0),s=R(a,2),c=e=>{var n=mv(),r=L(n,!0);z(()=>{Y(n,`id`,`${yv}-${t.store.flowId}`),G(r,t.store.ariaLiveMessage)}),W(e,n)};K(s,e=>{t.store.disableKeyboardA11y||e(c)}),z(()=>{Y(r,`id`,`${_v}-${t.store.flowId}`),G(i,t.store.disableKeyboardA11y?t.store.ariaLabelConfig[`node.a11yDescription.default`]:t.store.ariaLabelConfig[`node.a11yDescription.keyboardDisabled`]),Y(a,`id`,`${vv}-${t.store.flowId}`),G(o,t.store.ariaLabelConfig[`edge.a11yDescription.default`])}),W(e,n),j()}var _v=`svelte-flow__node-desc`,vv=`svelte-flow__edge-desc`,yv=`svelte-flow__aria-live`,bv=U(`<div><!></div>`);function xv(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)),E=M(()=>t.node.internals.positionAbsolute.x),D=M(()=>t.node.internals.positionAbsolute.y),te=M(()=>t.node.internals.userNode),{id:O}=t.node,ne=M(()=>B(a)??n().nodesDraggable),re=M(()=>B(o)??n().elementsSelectable),ie=M(()=>B(c)??n().nodesConnectable),ae=M(()=>yh(t.node)),oe=M(()=>!!t.node.internals.handleBounds),se=M(()=>B(ae)&&B(oe)),ce=M(()=>B(l)??n().nodesFocusable);function le(e){return n().parentLookup.has(e)}let ue=M(()=>le(O)),de=N(null),fe=null,pe=B(m),me=B(g),he=B(v),ge=M(()=>n().nodeTypes[B(m)]??p_),_e=M(()=>n().ariaLabelConfig);i_(O),o_({get value(){return B(ie)}});let ve=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:${w_(e)};`:``}${t?`height:${w_(t)};`:``}`});Fn(()=>{(B(m)!==pe||B(g)!==me||B(v)!==he)&&B(de)!==null&&requestAnimationFrame(()=>{B(de)!==null&&n().updateNodeInternals(new Map([[O,{id:O,nodeElement:B(de),force:!0}]]))}),pe=B(m),me=B(g),he=B(v)}),Fn(()=>{t.resizeObserver&&(!B(se)||B(de)!==fe)&&(fe&&t.resizeObserver.unobserve(fe),B(de)&&t.resizeObserver.observe(B(de)),fe=B(de))}),Va(()=>{fe&&t.resizeObserver?.unobserve(fe)});function ye(e){B(re)&&(!n().selectNodesOnDrag||!B(ne)||n().nodeDragThreshold>0)&&n().handleNodeSelection(O),t.onnodeclick?.({node:B(te),event:e})}function be(e){if(!(kh(e)||n().disableKeyboardA11y)){if(Tm.includes(e.key)&&B(re)){let t=e.key===`Escape`;n().handleNodeSelection(O,t,B(de))}else B(ne)&&t.node.selected&&Object.prototype.hasOwnProperty.call(T_,e.key)&&(e.preventDefault(),n(n().ariaLiveMessage=B(_e)[`node.a11yDescription.ariaLiveMessage`]({direction:e.key.replace(`Arrow`,``).toLowerCase(),x:~~t.node.internals.positionAbsolute.x,y:~~t.node.internals.positionAbsolute.y}),!0),n().moveSelectedNodes(T_[e.key],e.shiftKey?4:1))}}let xe=()=>{if(n().disableKeyboardA11y||!n().autoPanOnNodeFocus||!B(de)?.matches(`:focus-visible`))return;let{width:e,height:r,viewport:i}=n();Vm(new Map([[O,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 Se=si(),Ce=I(Se),we=e=>{var a=bv();ga(a,()=>({"data-id":O,class:[`svelte-flow__node`,`svelte-flow__node-${B(m)}`,B(p)],style:B(ve),onclick:ye,onpointerenter:t.onnodepointerenter?e=>t.onnodepointerenter({node:B(te),event:e}):void 0,onpointerleave:t.onnodepointerleave?e=>t.onnodepointerleave({node:B(te),event:e}):void 0,onpointermove:t.onnodepointermove?e=>t.onnodepointermove({node:B(te),event:e}):void 0,oncontextmenu:t.onnodecontextmenu?e=>t.onnodecontextmenu({node:B(te),event:e}):void 0,onkeydown:B(ce)?be:void 0,onfocus:B(ce)?xe:void 0,tabIndex:B(ce)?0:void 0,role:t.node.ariaRole??(B(ce)?`group`:void 0),"aria-label":t.node.ariaLabel,"aria-roledescription":`node`,"aria-describedby":n().disableKeyboardA11y?void 0:`${_v}-${n().flowId}`,...t.node.domAttributes,[ra]:{dragging:B(d),selected:B(i),draggable:B(ne),connectable:B(ie),selectable:B(re),nopan:B(ne),parent:B(ue)},[ia]:{"z-index":B(ee),transform:`translate(${B(E)??``}px, ${B(D)??``}px)`,visibility:B(ae)?`visible`:`hidden`}})),Fi(F(a),()=>B(ge),(e,t)=>{t(e,{get data(){return B(r)},get id(){return O},get selected(){return B(i)},get selectable(){return B(re)},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(ne)},get dragHandle(){return B(T)},get parentId(){return B(h)},get type(){return B(m)},get isConnectable(){return B(ie)},get positionAbsoluteX(){return B(E)},get positionAbsoluteY(){return B(D)},get width(){return B(C)},get height(){return B(w)}})}),k(a),Li(a,(e,t)=>pv?.(e,t),()=>({nodeId:O,isSelectable:B(re),disabled:!B(ne),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(de,e),()=>B(de)),W(e,a)};K(Ce,e=>{B(u)||e(we)}),W(e,Se),j()}var Sv=U(`<div class="svelte-flow__nodes"></div>`);function Cv(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=Sv();q(i,21,()=>n().visible.nodes.values(),e=>e.id,(e,i)=>{xv(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 wv=ai(`<svg class="svelte-flow__edge-wrapper"><g><!></g></svg>`);function Tv(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)),E=M(()=>t.edge.hidden),D=M(()=>t.edge.zIndex),te=M(()=>t.edge.class),O=M(()=>t.edge.ariaLabel);c_(B(n));let ne=null,re=M(()=>B(w)??t.store.elementsSelectable),ie=M(()=>B(T)??t.store.edgesFocusable),ae=M(()=>t.store.edgeTypes[B(y)]??N_),oe=M(()=>B(S)?`url('#${tg(B(S),t.store.flowId)}')`:void 0),se=M(()=>B(C)?`url('#${tg(B(C),t.store.flowId)}')`:void 0);function ce(e){let r=t.store.edgeLookup.get(B(n));r&&(B(re)&&t.store.handleEdgeSelection(B(n)),t.onedgeclick?.({event:e,edge:r}))}function le(e,r){let i=t.store.edgeLookup.get(B(n));i&&r({event:e,edge:i})}function ue(e){if(!t.store.disableKeyboardA11y&&Tm.includes(e.key)&&B(re)){let{unselectNodesAndEdges:r,addSelectedEdges:i}=t.store;e.key===`Escape`?(ne?.blur(),r({edges:[t.edge]})):i([B(n)])}}var de=si(),fe=I(de),pe=e=>{var _=wv();let S;var C=F(_);ga(C,()=>({class:[`svelte-flow__edge`,B(te)],"data-id":B(n),onclick:ce,oncontextmenu:t.onedgecontextmenu?e=>{le(e,t.onedgecontextmenu)}:void 0,onpointerenter:t.onedgepointerenter?e=>{le(e,t.onedgepointerenter)}:void 0,onpointerleave:t.onedgepointerleave?e=>{le(e,t.onedgepointerleave)}:void 0,"aria-label":B(O)===null?void 0:B(O)?B(O):`Edge from ${B(r)} to ${B(i)}`,"aria-describedby":B(ie)?`${vv}-${t.store.flowId}`:void 0,role:t.edge.ariaRole??(B(ie)?`group`:`img`),"aria-roledescription":`edge`,onkeydown:B(ie)?ue:void 0,tabindex:B(ie)?0:void 0,...t.edge.domAttributes,[ra]:{animated:B(d),selected:B(f),selectable:B(re)}})),Fi(F(C),()=>B(ae),(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(re)},get deletable(){return B(ee)},get type(){return B(y)},get sourceHandleId(){return B(b)},get targetHandleId(){return B(x)},get markerStart(){return B(oe)},get markerEnd(){return B(se)}})}),k(C),Aa(C,e=>ne=e,()=>ne),k(_),z(()=>S=Ji(_,``,S,{"z-index":B(D)})),W(e,_)};K(fe,e=>{B(E)||e(pe)}),W(e,de),j()}Ye();var Ev=ai(`<defs></defs>`);function Dv(e,t){A(t,!1);let n=ev();Ma();var r=Ev();q(r,5,()=>n.markers,e=>e.id,(e,t)=>{jv(e,za(()=>B(t)))}),k(r),W(e,r),j()}var Ov=ai(`<polyline class="arrow" fill="none" stroke-linecap="round" stroke-linejoin="round" points="-5,-4 0,0 -5,4"></polyline>`),kv=ai(`<polyline class="arrowclosed" stroke-linecap="round" stroke-linejoin="round" points="-5,-4 0,0 -5,4 -5,-4"></polyline>`),Av=ai(`<marker class="svelte-flow__arrowhead" viewBox="-10 -10 20 20" refX="0" refY="0"><!></marker>`);function jv(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=Av(),c=F(s),l=e=>{var n=Ov();let r;z(()=>{Y(n,`stroke-width`,t.strokeWidth),r=Ji(n,``,r,{stroke:o()})}),W(e,n)},u=e=>{var n=kv();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===Mm.Arrow?e(l):t.type===Mm.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 Mv=U(`<div class="svelte-flow__edges"><svg class="svelte-flow__marker"><!></svg> <!></div>`);function Nv(e,t){A(t,!0);let n=X(t,`store`,15);var r=Mv(),i=F(r);Dv(F(i),{}),k(i),q(R(i,2),17,()=>n().visible.edges.values(),e=>e.id,(e,r)=>{Tv(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 Pv=U(`<div class="svelte-flow__selection svelte-1vr3gfi"></div>`);function Fv(e,t){A(t,!0);let n=X(t,`x`,3,0),r=X(t,`y`,3,0),i=X(t,`width`,3,0),a=X(t,`height`,3,0),o=X(t,`isVisible`,3,!0);var s=si(),c=I(s),l=e=>{var t=Pv();let o;z((e,i)=>o=Ji(t,``,o,{width:e,height:i,transform:`translate(${n()}px, ${r()}px)`}),[()=>typeof i()==`string`?i():w_(i()),()=>typeof a()==`string`?a():w_(a())]),W(e,t)};K(c,e=>{o()&&e(l)}),W(e,s),j()}var Iv=U(`<div><!></div>`);function Lv(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=Bm(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(T_,e.key)&&(e.preventDefault(),t.store.moveSelectedNodes(T_[e.key],e.shiftKey?4:1))}var s=si(),c=I(s),l=e=>{var s=Iv();let c;Fv(F(s),{width:`100%`,height:`100%`,x:0,y:0}),k(s),Li(s,(e,t)=>pv?.(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)`})},[()=>w_(B(r).width),()=>w_(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)&&sh(B(r).x)&&sh(B(r).y));K(c,e=>{B(u)&&e(l)}),W(e,s),j()}Xr([`contextmenu`,`click`,`keydown`]);function Rv(e){switch(e){case`none`:return 0;case`ctrl`:return 8;case`shift`:return 4;case`alt`:return 2;case`meta`:return 1}}function zv(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|Rv(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 Bv(){let e=M(ev),t=t=>{let n=S_(t)?t:B(e).nodeLookup.get(t.id),r=n.parentId?bh(n.position,n.measured,n.parentId,B(e).nodeLookup,B(e).nodeOrigin):n.position;return th({...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&&S_(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&&C_(t)?t:{...e,...t}}return e})}let i=t=>B(e).nodeLookup.get(t);return{zoomIn:B(e).zoomIn,zoomOut:B(e).zoomOut,getInternalNode:i,getNode:e=>i(e)?.internals.userNode,getNodes:t=>t===void 0?B(e).nodes:Vv(B(e).nodeLookup,t),getEdge:t=>B(e).edgeLookup.get(t),getEdges:t=>t===void 0?B(e).edges:Vv(B(e).edgeLookup,t),setZoom:async(t,n)=>{let r=B(e).panZoom;return r?r.scaleTo(t,n):!1},getZoom:()=>B(e).viewport.zoom,setViewport:async(t,n)=>{let r=B(e).viewport;return B(e).panZoom?(await B(e).panZoom.setViewport({x:t.x??r.x,y:t.y??r.y,zoom:t.zoom??r.zoom},n),!0):!1},getViewport:()=>Ze(B(e).viewport),setCenter:async(t,n,r)=>B(e).setCenter(t,n,r),fitView:t=>B(e).fitView(t),fitBounds:async(t,n)=>{if(!B(e).panZoom)return!1;let r=hh(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=oh(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=th(i),c=ah(s,o);return r&&c>0||c>=s.width*s.height||c>=o.width*o.height}):[]},isNodeIntersecting:(e,n,r=!0)=>{let i=oh(e)?e:t(e);if(!i)return!1;let a=ah(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 Km({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 uh({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=dh(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=>zm(t,{nodeLookup:B(e).nodeLookup,nodeOrigin:B(e).nodeOrigin}),getHandleConnections:({type:t,id:n,nodeId:r})=>Array.from(B(e).connectionLookup.get(`${r}-${t}-${n??null}`)?.values()??[])}}function Vv(e,t){let n=[];for(let r of t){let t=e.get(r);if(t){let e=`internals`in t?t.internals?.userNode:t;n.push(e)}}return n}function Hv(e,t){A(t,!0);let n=X(t,`store`,15),r=X(t,`selectionKey`,3,`Shift`),i=X(t,`multiSelectionKey`,19,()=>gh()?`Meta`:`Control`),a=X(t,`deleteKey`,3,`Backspace`),o=X(t,`panActivationKey`,3,` `),s=X(t,`zoomActivationKey`,19,()=>gh()?`Meta`:`Control`),{deleteElements:c}=Bv();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)=>zv?.(e,t),()=>({trigger:f(r(),()=>n(n().selectionKeyPressed=!0,!0)),type:`keydown`})),Li(hn,(e,t)=>zv?.(e,t),()=>({trigger:f(r(),()=>n(n().selectionKeyPressed=!1,!0)),type:`keyup`})),Li(hn,(e,t)=>zv?.(e,t),()=>({trigger:f(i(),()=>{n(n().multiselectionKeyPressed=!0,!0)}),type:`keydown`})),Li(hn,(e,t)=>zv?.(e,t),()=>({trigger:f(i(),()=>n(n().multiselectionKeyPressed=!1,!0)),type:`keyup`})),Li(hn,(e,t)=>zv?.(e,t),()=>({trigger:f(a(),e=>{!(e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)&&!kh(e.originalEvent)&&(n(n().deleteKeyPressed=!0,!0),m())}),type:`keydown`})),Li(hn,(e,t)=>zv?.(e,t),()=>({trigger:f(a(),()=>n(n().deleteKeyPressed=!1,!0)),type:`keyup`})),Li(hn,(e,t)=>zv?.(e,t),()=>({trigger:f(o(),()=>n(n().panActivationKeyPressed=!0,!0)),type:`keydown`})),Li(hn,(e,t)=>zv?.(e,t),()=>({trigger:f(o(),()=>n(n().panActivationKeyPressed=!1,!0)),type:`keyup`})),Li(hn,(e,t)=>zv?.(e,t),()=>({trigger:f(s(),()=>n(n().zoomActivationKeyPressed=!0,!0)),type:`keydown`})),Li(hn,(e,t)=>zv?.(e,t),()=>({trigger:f(s(),()=>n(n().zoomActivationKeyPressed=!1,!0)),type:`keyup`})),j()}var Uv=ai(`<path fill="none" class="svelte-flow__connection-path"></path>`),Wv=ai(`<svg class="svelte-flow__connectionline"><g><!></g></svg>`);function Gv(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 jm.Bezier:{let[t]=Ih(e);return t}case jm.Straight:{let[t]=Uh(e);return t}case jm.Step:case jm.SmoothStep:{let[n]=Yh({...e,borderRadius:t.type===jm.Step?0:void 0});return n}}});var r=si(),i=I(r),a=e=>{var r=Wv(),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=Uv();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`,wh(t.store.connection.isValid)])]),W(e,r)};K(i,e=>{t.store.connection.inProgress&&e(a)}),W(e,r),j()}var Kv=new Set([`$$slots`,`$$events`,`$$legacy`,`position`,`style`,`class`,`children`]),qv=U(`<div><!></div>`);function Jv(e,t){A(t,!0);let n=X(t,`position`,3,`top-right`),r=La(t,Kv),i=M(()=>`${n()}`.split(`-`));var a=qv();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 Yv=U(`<a target="_blank" rel="noopener noreferrer" aria-label="Svelte Flow attribution">Svelte Flow</a>`);function Xv(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}`);Jv(e,{get position(){return n()},class:`svelte-flow__attribution`,get"data-message"(){return B(t)},children:(e,t)=>{var n=Yv();z(()=>Y(n,`href`,r)),W(e,n)},$$slots:{default:!0}})}};K(a,e=>{t.proOptions?.hideAttribution||e(o)}),W(e,i),j()}var Zv=U(`<div><!></div>`);function Qv(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=Zv();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}}),[()=>w_(t.width),()=>w_(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 $v=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(`.`)),ey=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),ty=U(`<!> <!>`,1),ny=U(`<!> <!> <!> <!> <!>`,1);function ry(e,t){A(t,!0);let n=X(t,`paneClickDistance`,3,1),r=X(t,`nodeClickDistance`,3,1),i=X(t,`panOnScrollMode`,19,()=>Om.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,()=>jm.Bezier),g=X(t,`nodes`,31,()=>fn([])),_=X(t,`edges`,31,()=>fn([])),v=X(t,`viewport`,15,void 0),y=La(t,$v),b=nv({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(tv);x&&x.setStore&&x.setStore(b),it(tv,{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(nv({width:0,height:0,nodes:[],edges:[],props:{}}))}),Qv(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 _=ny(),v=I(_);Hv(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);av(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)=>{uv(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=ty(),a=I(i);fv(a,{get store(){return b},set store(e){b=e},children:(e,n)=>{var i=ey(),a=R(I(i),2);Nv(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);Gv(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);Cv(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}}),Lv(R(s,2),{get onselectionclick(){return t.onselectionclick},get onselectioncontextmenu(){return t.onselectioncontextmenu},get onnodedrag(){return t.onnodedrag},get onnodedragstart(){return t.onnodedragstart},get onnodedragstop(){return t.onnodedragstop},get store(){return b},set store(e){b=e}}),Ae(2),W(e,i)},$$slots:{default:!0}});var o=R(a,2);{let e=M(()=>!!(b.selectionRect&&b.selectionRectMode===`user`)),t=M(()=>b.selectionRect?.width),n=M(()=>b.selectionRect?.height),r=M(()=>b.selectionRect?.x),i=M(()=>b.selectionRect?.y);Fv(o,{get isVisible(){return B(e)},get width(){return B(t)},get height(){return B(n)},get x(){return B(r)},get y(){return B(i)}})}W(e,i)},$$slots:{default:!0}})},$$slots:{default:!0}});var x=R(y,2);Xv(x,{get proOptions(){return t.proOptions},get position(){return t.attributionPosition}});var S=R(x,2);gv(S,{get store(){return b}}),Pi(R(S,2),()=>t.children??f),W(e,_)},$$slots:{default:!0}}),j()}function iy(e,t){A(t,!0);let n=N(nv({props:{},nodes:[],edges:[]}));it(tv,{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 ay=new Set([`$$slots`,`$$events`,`$$legacy`,`target`,`children`]),oy=U(`<div><!></div>`);function sy(e,t){A(t,!0);let n=X(t,`target`,3,`front`),r=La(t,ay);var i=oy();ga(i,e=>({...r,[ia]:{display:e}}),[()=>x_().value?`none`:void 0]),Pi(F(i),()=>t.children??f),k(i),Li(i,(e,t)=>b_?.(e,t),()=>`viewport-${n()}`),W(e,i),j()}var cy;(function(e){e.Lines=`lines`,e.Dots=`dots`,e.Cross=`cross`})(cy||={});var ly=ai(`<circle></circle>`);function uy(e,t){var n=ly();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 dy=ai(`<path></path>`);function fy(e,t){A(t,!0);var n=dy();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 py={[cy.Dots]:1,[cy.Lines]:1,[cy.Cross]:6},my=ai(`<svg data-testid="svelte-flow__background"><pattern patternUnits="userSpaceOnUse"><!></pattern><rect x="0" y="0" width="100%" height="100%"></rect></svg>`);function hy(e,t){A(t,!0);let n=X(t,`variant`,19,()=>cy.Dots),r=X(t,`gap`,3,20),i=X(t,`lineWidth`,3,1),a=M(ev),o=M(()=>n()===cy.Dots),s=M(()=>n()===cy.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??py[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=my();let h;var g=F(m),_=F(g),v=e=>{{let n=M(()=>B(d)/2);uy(e,{get radius(){return B(n)},get class(){return t.patternClass}})}},y=e=>{fy(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 gy(e){let t=M(ev),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 _y=ai(`<rect></rect>`);function vy(e,t){A(t,!0);let n=X(t,`borderRadius`,3,5),r=X(t,`strokeWidth`,3,2),i=M(()=>gy(t.id)),a=M(()=>{if(!B(i).current)return{width:0,height:0,x:0,y:0};let{width:e,height:n}=vh(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=_y();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 yy(e,t){let n=Rg({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 by=e=>e instanceof Function?e:()=>e,xy=new Set([`$$slots`,`$$events`,`$$legacy`,`position`,`ariaLabel`,`nodeStrokeColor`,`nodeColor`,`nodeClass`,`nodeBorderRadius`,`nodeStrokeWidth`,`nodeComponent`,`bgColor`,`maskColor`,`maskStrokeColor`,`maskStrokeWidth`,`width`,`height`,`pannable`,`zoomable`,`inversePan`,`zoomStep`,`class`]),Sy=ai(`<title> </title>`),Cy=ai(`<svg class="svelte-flow__minimap-svg" role="img"><!><!><path class="svelte-flow__minimap-mask" fill-rule="evenodd" pointer-events="none"></path></svg>`),wy=U(`<svelte-css-wrapper style="display: contents"><!></svelte-css-wrapper>`,1);function Ty(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,xy),f=M(ev),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(_)?rh(Bm(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)),E=M(()=>B(S)+B(w)*2),D=M(()=>B(C)+B(w)*2),te=()=>B(x);var O=wy(),ne=I(O);{let e=M(()=>[`svelte-flow__minimap`,t.class]);wi(ne,()=>({"--xy-minimap-background-color-props":t.bgColor})),Jv(ne.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=Cy();let d;var _=F(n),v=e=>{var n=Sy(),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:by(t.nodeColor)(B(n))),l=M(()=>by(r())(B(n))),u=M(()=>by(i())(B(n)));vy(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)&&yh(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)=>yy?.(e,t),()=>({store:B(f),panZoom:B(f).panZoom,getViewScale:te,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(E)??``} ${B(D)??``}`),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(E)+B(w)*2}v${B(D)+B(w)*2}h${-B(E)-B(w)*2}z
6
- M${B(g).x??``},${B(g).y??``}h${B(g).width??``}v${B(g).height??``}h${-B(g).width}z`)}),W(e,n)};K(_,e=>{B(f).panZoom&&e(v)}),W(e,d)},$$slots:{default:!0}})),k(ne)}W(e,O),j()}var Ey=new Set([`$$slots`,`$$events`,`$$legacy`,`nodeId`,`position`,`align`,`offset`,`isVisible`,`children`]),Dy=U(`<div><!></div>`);function Oy(e,t){A(t,!0);let n=X(t,`position`,19,()=>Nm.Top),r=X(t,`align`,3,`center`),i=X(t,`offset`,3,10),a=La(t,Ey),o=ev(),{getNodesBounds:s}=Bv(),c=r_(),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?rg(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=Dy();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(),()=>x_().value?`none`:void 0]),Pi(F(n),()=>t.children??f),k(n),Li(n,(e,t)=>b_?.(e,t),()=>`root`),W(e,n)};K(g,e=>{o.domNode&&B(m)&&B(l)&&e(_)}),W(e,h),j()}function ky(){let e=M(ev);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 Ay=new Set([`$$slots`,`$$events`,`$$legacy`]);function jy(e,t){let n=La(t,Ay),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 My=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`)}},Ny=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>`),Py=U(`<button class="agent svelte-ssy1qy" type="button"><span class="dot round svelte-ssy1qy" aria-hidden="true"></span><span class="words svelte-ssy1qy"> </span></button> <!> <div class="connect svelte-ssy1qy" popover="" role="dialog"><h2 class="svelte-ssy1qy">Connect an agent</h2> <p class="svelte-ssy1qy">Koppler starts and stops a confirmed run by itself. The agent is needed for what it cannot do alone: manual
7
- checklists, notes, fixing a failed start, and anything a run leaves over.</p> <ol class="svelte-ssy1qy"><li class="svelte-ssy1qy">Open your agent session in this project</li> <li class="svelte-ssy1qy">Run this command there <!></li> <li class="svelte-ssy1qy">The dot turns green once it listens<small class="svelte-ssy1qy">Anything sent meanwhile waits for it.</small></li></ol></div>`,1);function Fy(e,t){let n=ci();A(t,!0);let r={listening:[`Agent connected`,`An agent session is listening: notes, checklists and fix requests reach it right away.`],busy:[`Agent working`,`The connected agent is working on a request; the next one waits for it.`],question:[`Agent needs you`,`The agent asked something about your run. Click to answer.`],quiet:[`Agent quiet`,`It took a request and has neither finished it nor listened again since. If its session is done, run /koppler-run connect there; press ↻ for the steps.`],none:[`No agent listening`,`Runs work without one. Notes, checklists and fix requests wait until an agent connects; press ↻ to see how.`]},i=N(void 0),a=N(void 0),o=N(!1),s=M(()=>{let e=Date.parse(Q.status?.agent?.busy??``);return Number.isNaN(e)||!Q.status?0:Math.floor((Date.now()-e)/6e4)}),c=M(()=>Q.status?.agent?.state??`none`),l=M(()=>B(c)===`busy`&&B(s)*6e4>=6e5?`quiet`:B(c)),u=M(()=>My.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=Py(),r=I(t),s=L(R(F(r)),!0);k(r);var c=R(r,2),u=e=>{var t=Ny();Ua(F(t),{get of(){return jy},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);zc(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`,My.open),G(s,B(x)),Y(d,`id`,n),Y(d,`aria-labelledby`,`${n}-title`),Y(f,`id`,`${n}-title`)}),H(`click`,r,()=>My.open=!My.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 Iy=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ly(e,t){let n=La(t,Iy),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 Ry=new Set([`$$slots`,`$$events`,`$$legacy`]);function zy(e,t){let n=La(t,Ry),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 By=new Set([`$$slots`,`$$events`,`$$legacy`]);function Vy(e,t){let n=La(t,By),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 Hy=new Set([`$$slots`,`$$events`,`$$legacy`]);function Uy(e,t){let n=La(t,Hy),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 Wy=new Set([`$$slots`,`$$events`,`$$legacy`]);function Gy(e,t){let n=La(t,Wy),r={name:`minus`,size:24,node:[[`path`,{d:`M5 12h14`}]]};$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:`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 Jy=new Set([`$$slots`,`$$events`,`$$legacy`]);function Yy(e,t){let n=La(t,Jy),r={name:`plus`,size:24,node:[[`path`,{d:`M5 12h14`}],[`path`,{d:`M12 5v14`}]]};$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:`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 Qy=new Set([`$$slots`,`$$events`,`$$legacy`]);function $y(e,t){let n=La(t,Qy),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 eb={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}},tb={locals:[`#ffffff`,`#c8f03c`,`#52f29a`,`#5ce1e6`,`#ffd43b`,`#ff8a1f`],deployeds:[`#9a9a9a`,`#8ea2ff`,`#a98bff`,`#7fc4d8`,`#5cc8ff`,`#e6a3d8`]},nb={locals:[`#141414`,`#1f4fd8`,`#b4490a`,`#0f766e`,`#7a3fc8`,`#1a6e2e`],deployeds:[`#6b6b6b`,`#7652c2`,`#22738a`,`#4a5fb5`,`#8a5a2b`,`#a3407a`]},rb=e=>!!eb[e].light,ib=e=>rb(e)?nb:tb,ab=[`#c8f03c`,`#52f29a`,`#1a6e2e`],ob=[`#4ade80`,`#5bd97a`,`#1a8f4c`,`#15803d`,`#2b8048`],sb=`koppler-appearance`,cb=()=>{try{let e=JSON.parse(localStorage.getItem(sb)??`{}`),t=(e,t)=>typeof e==`string`&&t.includes(e)?e:void 0,n=e.scheme&&e.scheme in eb?e.scheme:`mono`,r=t(e.local,ib(n).locals),i=t(e.deployed,ib(n).deployeds);return{scheme:n,...r&&{local:r},...i&&{deployed:i}}}catch{return{scheme:`mono`}}},lb=(e,t)=>{let n=eb[e];if(t&&ab.includes(t)&&ob.includes(n.live))return n.light?`#141414`:`#ffffff`},ub=new class{#e=N(fn(cb()));get now(){return B(this.#e)}set now(e){P(this.#e,e,!0)}constructor(){this.#n()}get local(){return this.now.local??eb[this.now.scheme].local}get deployed(){return this.now.deployed??eb[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(sb,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`,lb(this.now.scheme,this.now.local)]])n?e.style.setProperty(t,n):e.style.removeProperty(t)}},db=new Set([`$$slots`,`$$events`,`$$legacy`]);function fb(e,t){let n=La(t,db),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 pb=new Set([`$$slots`,`$$events`,`$$legacy`]);function mb(e,t){let n=La(t,pb),r={name:`check`,size:24,node:[[`path`,{d:`M20 6 9 17l-5-5`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var hb=new Set([`$$slots`,`$$events`,`$$legacy`]);function gb(e,t){let n=La(t,hb),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 _b=new Set([`$$slots`,`$$events`,`$$legacy`]);function vb(e,t){let n=La(t,_b),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 yb=new Set([`$$slots`,`$$events`,`$$legacy`]);function bb(e,t){let n=La(t,yb),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 xb=new Set([`$$slots`,`$$events`,`$$legacy`]);function Sb(e,t){let n=La(t,xb),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 Cb=new Set([`$$slots`,`$$events`,`$$legacy`]);function wb(e,t){let n=La(t,Cb),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 Tb=U(`<span class="tag svelte-1ypd2at">current</span>`),Eb=U(`<span class="tag svelte-1ypd2at">picked</span>`),Db=U(`<li role="option" class="svelte-1ypd2at"><span class="name svelte-1ypd2at"> </span> <!></li>`),Ob=U(`<li class="note svelte-1ypd2at" role="presentation"> </li>`),kb=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 Ab(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=kb(),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=Db(),o=F(a),s=L(o,!0),l=R(o,2),u=e=>{W(e,Tb())},d=e=>{W(e,Eb())};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=Ob(),n=L(t);z(()=>G(n,`${B(u).length-B(d).length} more, keep typing`)),W(e,t)},w=e=>{var n=Ob(),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 jb=U(`<label class="field svelte-1kkgx5y">Branch <!></label>`),Mb=U(`<label class="svelte-1kkgx5y"><input type="radio"/> </label>`),Nb=U(`<div class="field svelte-1kkgx5y" role="radiogroup"> <span class="seg svelte-1kkgx5y"></span></div>`),Pb=U(`<div class="field svelte-1kkgx5y" role="group" aria-label="Who starts it">Started by <span class="seg svelte-1kkgx5y" role="radiogroup" aria-label="Started by"></span></div>`),Fb=U(`<option> </option>`),Ib=U(`<label class="field svelte-1kkgx5y">Platform <span class="combo svelte-1kkgx5y"><select class="mono svelte-1kkgx5y"></select></span></label>`),Lb=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>`),Rb=U(`<button class="link svelte-1kkgx5y" type="button"> </button>`),zb=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>`),Bb=U(`<div class="row svelte-1kkgx5y"><!> <!> <!> <!></div>`),Vb=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>`),Hb=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>`),Ub=U(`<span class="database svelte-1kkgx5y"><span class="db-name svelte-1kkgx5y"> </span> <!></span> <!>`,1),Wb=U(`<div class="field databases svelte-1kkgx5y"> <!></div>`),Gb=U(`<label class="toggle svelte-1kkgx5y"><input type="checkbox" role="switch"/><span class="track" aria-hidden="true"></span> </label>`),Kb=U(`<div class="field svelte-1kkgx5y">Libraries <!></div>`),qb=U(`<optgroup label="Call a local app"></optgroup>`),Jb=U(`<optgroup label="Remove the cable to"></optgroup>`),Yb=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>`),Xb=U(`<button class="note-toggle svelte-1kkgx5y" type="button">Add a note for the agent</button>`),Zb=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),Qb=U(`<div class="body svelte-1kkgx5y"><!> <!> <!> <!> <!> <!></div>`);function $b(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(ic,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 E=si(),D=I(E),te=e=>{var C=Qb(),E=F(C),D=e=>{var n=jb(),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);Ab(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(E,e=>{B(l)||e(D)});var te=R(E,2),O=e=>{var i=Nb(),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=Mb(),l=F(c);fa(l);var u=R(l,1,!0);k(c),z(()=>{Y(c,`title`,s()),Y(l,`name`,`changes-${t.id??``}`),pa(l,a()),ma(l,(B(r).changes??`set-aside`)===a()),G(u,o())}),H(`change`,l,()=>{Z.set(t.id,{changes:a()})}),W(e,c)}),k(c),k(i),z(()=>{Y(i,`aria-label`,`Your ${B(o)??``} on ${B(a)??``}`),Y(i,`title`,`Your ${B(o)??``} on ${B(a)??``}: set aside while it runs the other branch, or taken along. Back on Stop either way.`),G(s,`${B(o)??``} `)}),W(e,i)},ne=M(()=>Z.switchesOver(t.id));K(te,e=>{B(ne)&&e(O)});var re=R(te,2),ie=e=>{var n=Bb(),a=F(n),o=e=>{var n=Pb(),i=R(F(n));q(i,20,()=>B(s),e=>e,(e,n)=>{var i=Mb(),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,ic[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=Ib(),a=R(F(n)),o=F(a);q(o,21,()=>B(i)?.platforms??[],([e,t])=>e,(e,t)=>{var n=M(()=>v(B(t),2));let r=()=>B(n)[0],i=()=>B(n)[1];var a=Fb(),o=L(a,!0),s={};z(()=>{G(o,i()),s!==(s=r())&&(a.value=(a.__value=s)??``)}),W(e,a)}),k(o);var s;$i(o),k(a),k(n),z(()=>{s!==(s=B(r).platform)&&(o.value=(o.__value=s)??``,Qi(o,s))}),H(`change`,o,e=>{Z.set(t.id,{platform:e.currentTarget.value})}),W(e,n)};K(l,e=>{B(y)&&e(m)});var h=R(l,2),g=e=>{var n=Lb(),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=zb(),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=Rb(),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(re,e=>{(B(c)||B(u).length||B(d).length)&&e(ie)});var ae=R(re,2),oe=e=>{var n=Wb(),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=Ub(),o=I(a),s=F(o),c=L(s),l=R(s,2),u=e=>{var t=Rb(),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=Vb(),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=Hb(),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(ae,e=>{B(m).length&&e(oe)});var se=R(ae,2),ce=e=>{var t=Kb();q(R(F(t)),17,()=>B(i).libraries,e=>e.name,(e,t)=>{let n=M(()=>B(g).includes(B(t).name));var i=Gb(),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(se,e=>{B(i)?.libraries.length&&!B(l)&&e(ce)});var le=R(se,2),ue=e=>{var n=Zb(),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=qb();q(t,21,()=>B(b).can,e=>e.id,(e,t)=>{var n=Fb(),r=L(n,!0),i={};z(()=>{G(r,B(t).name),i!==(i=`+${B(t).id??``}`)&&(n.value=n.__value=i)}),W(e,n)}),k(t),W(e,t)};K(c,e=>{B(b).can.length&&e(l)});var u=R(c),d=e=>{var t=Jb();q(t,21,()=>B(b).wired,e=>e.id,(e,t)=>{var n=Fb(),r=L(n,!0),i={};z(()=>{G(r,B(t).name),i!==(i=`-${B(t).id??``}`)&&(n.value=n.__value=i)}),W(e,n)}),k(t),W(e,t)};K(u,e=>{B(b).wired.length&&e(d)}),k(o),k(a),k(i);var f=R(i,2),p=e=>{var n=Yb(),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=Xb();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(le,e=>{B(l)||e(ue)}),k(C),V(`mousedown`,C,w,!0),H(`click`,C,T),W(e,C)};K(D,e=>{B(r)&&e(te)}),W(e,E),j()}Xr([`click`,`change`,`pointerdown`,`input`]);var ex=(e,t)=>document.elementsFromPoint(e,t).find(e=>e.classList.contains(`svelte-flow__node`))?.getAttribute(`data-id`)??void 0,tx=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=os(r,i),o=Z.ends.offset[`${String(e)}|${t}`]??0;return ts[i][0]===0?{...a,x:a.x+o}:{...a,y:a.y+o}}nearestSide(e,t){let n=n=>Math.hypot(os(e,n).x-t.x,os(e,n).y-t.y);return Object.keys(ts).reduce((e,t)=>n(t)<n(e)?t:e)}start(e,t){let n=Z.boxes.get(e);if(!n)return;let r=os(n,t),i=[],a=e=>Z.toFlow({x:e.clientX,y:e.clientY}),o=t=>{let n=ex(t.clientX,t.clientY),o=n&&n!==e?Z.boxes.get(n):void 0;if(!n||!o)return;let s=a(t);return{id:n,side:Object.keys(ts).find(e=>Math.hypot(os(o,e).x-s.x,os(o,e).y-s.y)<=16/Z.zoom())??this.nearestSide(o,i.at(-1)??r),at:o}},s=e=>Z.app(e),c=(e,t)=>!!s(e)?.calls.includes(t),l=t=>!s(e)?.outside&&!!s(t)&&!s(t)?.outside&&!!s(t)?.answers,u=t=>!c(e,t)&&c(t,e),d=e=>{let n=o(e),s=!!n&&l(n.id)&&!u(n.id);this.draft={a:r,side:t,b:n&&s?os(n.at,n.side):a(e),bSide:n&&s?n.side:null,points:[...i]},this.drop=n?{id:n.id,ok:s}:null},f=()=>{removeEventListener(`pointermove`,d),removeEventListener(`pointerdown`,m,!0),removeEventListener(`keydown`,h,!0),this.draft=this.drop=null},p=n=>{let r=o(n);if(f(),!r)return;let[a,c]=[s(e)?.name??e,s(r.id)?.name??r.id];if(!l(r.id)){let e=s(r.id)?.answers?`${a} doesn't call ${c}`:`${c} is a ${s(r.id)?.kindLabel??``} app: it calls others, nothing calls it.`;$.show(e,`warning`);return}if(u(r.id)){let t=Z.edges.some(t=>t.id===`${r.id}>${e}`);$.show(`In the code ${c} calls ${a}, not the other way round.${t?` That cable is already on the board.`:``}`,`warning`,t?void 0:{label:`Connect that way`,run:()=>{Z.connect(r.id,e)}});return}let d=mc(e,r.id,{fromSide:t,toSide:r.side,...i.length&&{points:i}});Z.edges=[...Z.edges.filter(e=>e.id!==d.id),d]},m=e=>{if(e.button===0){e.preventDefault(),e.stopPropagation();for(let e of[`mousedown`,`click`])addEventListener(e,e=>{e.stopPropagation()},{capture:!0,once:!0});ex(e.clientX,e.clientY)?p(e):e.target.closest(`.svelte-flow__panel, button`)?f():(i.push(a(e)),d(e))}},h=e=>{e.key===`Escape`&&(e.preventDefault(),f())};addEventListener(`pointermove`,d),addEventListener(`pointerup`,e=>{let t=a(e),n=Math.hypot(t.x-r.x,t.y-r.y)>24/Z.zoom();ex(e.clientX,e.clientY)||!n?p(e):(i.push(t),d(e),addEventListener(`pointerdown`,m,!0),addEventListener(`keydown`,h,!0))},{once:!0})}grabEnd(e,t,n){let r=Z.edges.find(e=>e.id===t);if(e.button!==0||!r||Z.live)return;e.preventDefault(),e.stopPropagation();let i=n===`from`?r.source:r.target,a=r.data[`${n}Side`],o=ts[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)}},nx=(e,t,n)=>{try{let r=localStorage.getItem(e);return t.includes(r)?r:n}catch{return n}},rx=(e,t)=>{try{localStorage.setItem(e,t)}catch{}},ix=()=>{try{return JSON.parse(sessionStorage.getItem(`koppler-log-cleared`)??`{}`)??{}}catch{return{}}},ax=e=>{let[t=``,n]=e.split(`@`);return[t,n]},ox=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(ix());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(nx(`koppler-log-since`,[`run`,`hour`,`lines`],`run`)));get since(){return B(this.#s)}set since(e){P(this.#s,e,!0)}#c=N(fn(nx(`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,rx(`koppler-log-since`,e),this.reload()}reload(){this.#a[`*`]=0,this.refresh()}setNames(e){this.names=e,rx(`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!==`*`&&!!ax(e)[1]}label(e){if(e===`*`)return`All apps`;let[t,n]=ax(e),r=n?Q.status?.runs?.find(e=>e.id===n)?.at:void 0,i=r?new Date(r).toLocaleString([],{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`}):``;return n?`${Z.nameOf(t)}, run of ${i||n}`:Z.nameOf(t)}close(e){this.tabs=this.tabs.filter(t=>t!==e),this.active===e&&(this.active=this.tabs.at(-1)??null)}closeAll(){this.tabs=[],this.active=null}clear(){let e=this.active,t=e?Q.tail(e).trimEnd():``;if(e&&t){this.cleared={...this.cleared,[e]:t.slice(t.lastIndexOf(`
8
- `)+1)};try{sessionStorage.setItem(`koppler-log-cleared`,JSON.stringify(this.cleared))}catch{}}}refresh(){let e=this.active;if(!e||Date.now()-(this.#a[e]??0)<2e3)return;if(this.#a[e]=Date.now(),e===`*`){let e=this.since===`lines`?`since=all&lines=2000`:`since=${this.since}`,t=this.allApps().map(encodeURIComponent).join(`,`);fetch(`log-all?apps=${t}&${e}`,{cache:`no-store`}).then(e=>e.ok?e.json():null).then(e=>{e&&(this.all=e)}).catch(()=>void 0);return}let[t,n]=ax(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}},sx=(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),cx=e=>sx(e.name,Z.openBoard(e));async function lx(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);sx(n.error===void 0?n.name:e.name,n)}async function ux(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?(sx(n.name,n),null):n.error}var dx=[[`year`,31536e3],[`month`,2592e3],[`week`,604800],[`day`,86400],[`hour`,3600],[`minute`,60]];function fx(e){let t=(new Date(e).getTime()-Date.now())/1e3,n=new Intl.RelativeTimeFormat(void 0,{numeric:`auto`});for(let[e,r]of dx)if(Math.abs(t)>=r)return n.format(Math.round(t/r),e);return`just now`}var px=fn({}),mx=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}},hx=e=>`${e.host}:${String(e.port)}${e.database?` · ${e.database}`:``}`,gx=[[`starts`,`Starts`],[`restarts`,`Restarts`],[`stops`,`Stops and reverts`],[`keeps`,`Keeps running`]],_x=()=>(Date.now().toString(36)+Math.random().toString(36).slice(2,8)).replace(/[^a-z0-9]/g,``),vx=Z.nameOf,yx=(e,t)=>`${String(e)} ${t}${e===1?``:`s`}`,bx=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 Hs(t?.live??null,e,{name:vx,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 ${vx(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 ${vx(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 ${vx(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` ${vx(e)} → local ${vx(t)}${i}`}),...e.deployed.map(({from:e,to:n})=>` ${vx(e)} → ${t} ${vx(n)}`),...e.deployed.filter(({to:t})=>e.nodes.some(e=>e.id===t)).map(({from:e,to:n})=>`! ${vx(n)} is local but ${vx(e)} still calls ${t}`)].join(`
9
- `)}async deliver(e,t,n){return(await io(`prompt`,{...t,text:e}))?.ok?($.show(n),!0):(await navigator.clipboard.writeText(e).catch(()=>void 0),$.show(`No agent connection, so the request was copied to your clipboard`,`warning`),!1)}#o(e,t=()=>[]){return gx.filter(([t])=>e[t].length).map(([n,r])=>({verb:n,label:r,items:e[n].map(e=>({name:vx(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,px.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=yx(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(vx).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=mx.addresses[e.database];return{name:e.name,notes:[...t?[{text:hx(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(vx).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:vx(e),notes:[{text:`from ${t.map(vx).join(`, `)}`}],...r&&{act:{label:`Run locally`,title:`Run it locally too, and point ${t.map(vx).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(vx).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(gx.map(([e])=>[e,a[e]])),n=`Set up and run this stack using the koppler-run skill.
10
- `+this.#a(i)+`
11
- PLAN the user confirmed on the canvas (do exactly this; check it first with koppler plan):
12
- `+Ws(a,{name:vx}).map(e=>` ${e}`).join(`
13
- `);Z.commit();let r=Z.saved();ao(r);let o={...i,id:_x(),plan:e,layout:r};this.deliver(n,{tag:`koppler`,data:o},c||t?`Sent. Waiting for the agent`:`Sent. Koppler is starting it`)}}}askFacts(e,t){let n=[`Find the missing facts for this environment in the stack, using the koppler-run skill.`,`ENV ${e.toUpperCase()}`,`MISSING:`,...t.map(e=>` ${e}`),`Read each app's repo (infrastructure files such as Terraform tfvars, workflow files) and the user's local tunnel aliases. Never read or print a secret value.`,`Propose the additions (apps.<id>.envs.<env>.prereqs, .secrets with fetch steps), wait for the user to confirm, then make them with koppler stack set; never write stack.json.`].join(`
14
- `),r=(Q.status?.agent?.state??`none`)===`none`;return this.deliver(n,{tag:`koppler-facts`,data:{env:e,gaps:t}},r?`Saved. The agent gets it when one connects.`:`Sent to the agent`)}askFill(e,t,n){let r=[`Fill in this app's settings in the stack from its repo, using the koppler-run skill.`,`APP ${vx(e)} (${e})`,`EMPTY ${t.join(`, `)||`none`}`,`LOCKED ${n.join(`, `)||`none`} (never change these)`,`Read the app's repo (launch settings, package files, infrastructure, README) to find each fact; leave a field empty when it does not apply. Never read or print a secret value.`,`Propose what you would set, and why, wait for the user to confirm, then make each change with koppler stack set apps.`+e+`.<field>; never write stack.json.`].join(`
15
- `),i=(Q.status?.agent?.state??`none`)===`none`;return this.deliver(r,{tag:`koppler-facts`,data:{env:Z.env,app:e,gaps:t}},i?`Saved. The agent gets it when one connects.`:`Sent to the agent`)}askToFix(e,t){let n=[`Fix this failed start, using the koppler-run skill.`,`ENV ${Z.env.toUpperCase()}`,`APP ${vx(e)} (${e})`,`FAILED ${t}`,`Find the cause, say what you would change, and ask before you start, stop or restart anything.`].join(`
16
- `),r={env:Z.env,failures:[{connection:vx(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)?vx(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:()=>{cx(t)}}})}async stopApp(e){let t=await oo(`stop-apps`,{app:e});`stopped`in t&&t.stopped.length?$.show(`Stopped ${vx(e)}. Its changes stay until you revert.`):$.show(`Could not stop ${vx(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:vx(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:_x(),...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()}},xx=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),Sx=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>`),Cx=U(`<button type="button" aria-label="Show log" title="Show log" class="svelte-byllhq"><!>Log</button>`),wx=U(`<button type="button" class="svelte-byllhq"> </button>`),Tx=U(`<a class="tool svelte-byllhq" target="_blank" rel="noopener" title="Its requests, followed across your local apps">Traces</a>`),Ex=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>`),Dx=U(`<button type="button" class="svelte-byllhq">Auto-restart</button>`),Ox=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>`),kx=U(`<span class="live svelte-byllhq" role="img"></span>`),Ax=U(`<span class="watch svelte-byllhq" role="img" aria-label="Auto-restart" title="Restarts when its files change"><!></span>`),jx=U(`<span class="svelte-byllhq"> </span>`),Mx=U(`<span title="It is taken off its queues and keeps the deployed ones" class="svelte-byllhq">No queues</span>`),Nx=U(`<span class="off svelte-byllhq" title="Only the API runs; calls through its tunnels fail">No tunnels</span>`),Px=U(`<p class="glance svelte-byllhq"><span class="svelte-byllhq"> </span> <!> <!> <!></p>`),Fx=U(`<p class="changed svelte-byllhq"> </p>`),Ix=U(`<p class="where nodrag svelte-byllhq"> </p>`),Lx=U(`<i class="svelte-byllhq"></i>`),Rx=U(`<p class="why nodrag svelte-byllhq"> </p>`),zx=U(`<span class="detail svelte-byllhq"> </span>`),Bx=U(`<li class="step svelte-byllhq"><span class="mark svelte-byllhq" aria-hidden="true"><!></span> <span class="what svelte-byllhq"> </span> <!> <!></li>`),Vx=U(`<ul class="steps nodrag nopan svelte-byllhq"></ul>`),Hx=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),Ux=U(`<div class="acts nodrag svelte-byllhq"><button class="act fix svelte-byllhq" type="button"> </button></div>`),Wx=U(`<button class="chip svelte-byllhq" type="button"> </button>`),Gx=U(`<div class="calls nodrag nopan svelte-byllhq"><span class="calls-label svelte-byllhq"> </span> <!></div>`),Kx=U(`<button title="Drag a cable to an app this one should call locally" tabindex="-1"></button>`),qx=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 Jx(e,t){A(t,!0);let n=N(!1),r,i=()=>{clearTimeout(r),P(n,!0)},a=()=>{r=setTimeout(()=>P(n,!1),250)},o=M(()=>B(n)||t.selected),s=[`top`,`right`,`bottom`,`left`],c=ky(),l=M(()=>c.current.zoom<ac),u=M(()=>B(l)||Z.live),d=N(0),f=N(0);Fn(()=>{!B(u)&&B(d)&&P(f,B(d),!0)});let p=M(()=>Z.app(t.id)),m=M(()=>B(p)?.current||`current branch`),h=M(()=>Z.tunnelsOf(t.id)),g=M(()=>Z.queuesOf(t.id)),_=M(()=>B(g).length>0&&!t.data.showQueues),y=M(()=>Z.deployedCalls(t.id)),b=M(()=>Z.databasesOf(t.id).filter(e=>Z.databases[e]&&Z.useOf(t.id,e)?.change).length),x=e=>{let[n,...r]=e.split(` `);return r.length&&n===t.data.name.split(` `)[0]?r.join(` `):e},S=M(()=>!!B(p)?.platforms.length&&t.data.run===`cli`),C=M(()=>B(p)?.platforms.find(([e])=>e===t.data.platform)?.[1]),w=M(()=>t.data.run===`ide`?`Started by you`:t.data.run===`mock`?`Mock`:B(S)?B(C):void 0),T=M(()=>Q.up(t.id)),ee=M(()=>Q.where(t.id)),E=M(()=>Q.state(t.id)),D=async e=>{let n=await oo(`reload`,{app:t.id,restart:e});`error`in n?$.show(n.error,`warning`):$.show(`${n.said}.`)},te=M(()=>Q.stateSaid(t.id)),O=M(()=>Q.steps(t.id)),ne=M(()=>B(O).length?vc(B(O)):[`todo`,``]),re=M(()=>v(B(ne),2)),ie=M(()=>B(re)[0]),ae=M(()=>B(re)[1]),oe=M(()=>B(O).find(e=>e.state===`failed`)),se=N(!1),ce=N(!1),le=e=>Z.ends.onPort.some(n=>n.id===t.id&&n.side===e);var ue=qx(),de=I(ue);{let e=M(()=>B(o)&&!t.dragging);Oy(de,{get isVisible(){return B(e)},get position(){return Nm.Top},align:`start`,offset:8,children:(e,n)=>{var r=Ox();let o;var s=F(r),c=e=>{var n=xx(),r=I(n);Ua(F(r),{get of(){return Sb},size:14}),Ae(),k(r);var i=R(r,2);Ua(F(i),{get of(){return bb},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 bx.stopApp(t.id)),H(`click`,i,()=>{bx.start({restart:t.id})}),W(e,n)},l=M(()=>bx.started.includes(t.id)),u=e=>{var n=Sx();Ua(F(n),{get of(){return vb},size:14}),Ae(),k(n),z(()=>Y(n,`aria-label`,`Run ${t.data.name??``} alone`)),H(`click`,n,()=>{bx.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=Cx();Ua(F(n),{get of(){return gb},size:14}),Ae(),k(n),H(`click`,n,()=>{ox.open(t.id)}),W(e,n)},m=M(()=>Q.hasLog(t.id));K(d,e=>{B(m)&&e(f)});var h=R(d,2);q(h,17,()=>Z.commandsOf(t.id),([e,t])=>e,(e,n)=>{var r=M(()=>v(B(n),2));let i=()=>B(r)[0],a=()=>B(r)[1],o=M(()=>({app:t.id,appName:t.data.name,key:i(),command:a()}));var s=wx(),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?px.command?.open(B(o)):Cc(B(o)).then(e=>{e&&$.show(e,`warning`)})}),W(e,s)});var g=R(h,2),_=e=>{var n=Tx();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=Ex();z(()=>Y(n,`aria-label`,`Hot reload ${t.data.name??``}`)),H(`click`,n,e=>void D(e.shiftKey)),W(e,n)};K(b,e=>{B(p)?.kind===`flutter`&&t.data.run===`cli`&&B(T)&&e(x)});var S=R(b,2),C=e=>{var n=Dx();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 Ic},size:14}),Ae(),k(w);var ee=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(ee,`aria-label`,`Remove ${t.data.name??``}`)}),V(`pointerenter`,r,i),V(`pointerleave`,r,a),H(`click`,w,()=>void px.settings?.open({title:t.data.name,path:`apps.${t.id}`})),H(`click`,ee,()=>{Z.remove(t.id)}),W(e,r)},$$slots:{default:!0}})}var fe=R(de,2);let pe,me;var he=F(fe),ge=F(he);Ua(F(ge),{get of(){return wb},size:14}),k(ge);var _e=R(ge,2),ve=e=>{var n=kx();z(e=>{Y(n,`data-on`,B(T)),Y(n,`data-state`,B(E)?.state),Y(n,`aria-label`,B(E)?gc[B(E).state]:B(T)?`Running`:`Not answering`),Y(n,`title`,e)},[()=>B(te)||Q.about(t.id)]),W(e,n)};K(_e,e=>{(B(T)!==null||B(E))&&e(ve)});var ye=R(_e,2),be=L(ye,!0),xe=R(ye,2),Se=e=>{var t=Ax();Ua(F(t),{get of(){return fb},size:12}),k(t),W(e,t)};K(xe,e=>{t.data.watch&&t.data.run===`cli`&&e(Se)});var Ce=L(R(xe,2),!0);k(he);var we=R(he,2),Te=e=>{var n=Px(),r=F(n),i=L(r,!0),a=R(r,2),o=e=>{var t=jx(),n=L(t,!0);z(()=>G(n,B(w))),W(e,t)};K(a,e=>{B(w)&&e(o)});var s=R(a,2),c=e=>{W(e,Mx())};K(s,e=>{B(_)&&e(c)});var l=R(s,2),u=e=>{W(e,Nx())};K(l,e=>{t.data.hideTunnels&&B(h).length&&e(u)}),k(n),z(()=>{Y(r,`title`,`Branch: ${(t.data.branch||B(m))??``}`),G(i,t.data.branch||B(m))}),W(e,n)},Ee=e=>{$b(e,{get id(){return t.id}})};K(we,e=>{B(u)?e(Te):e(Ee,-1)});var De=R(we,2),Oe=e=>{var t=Fx(),n=L(t,!0);z(e=>{Y(t,`data-on`,!!B(T)),G(n,e)},[()=>B(T)?`${String(B(b))} ${B(b)===1?`line`:`lines`} changed · undone on Stop`:`Will change ${String(B(b))} ${B(b)===1?`line`:`lines`}`]),W(e,t)};K(De,e=>{B(b)&&e(Oe)});var ke=R(De,2),je=e=>{var t=Ix(),n=L(t,!0);z(()=>{Y(t,`data-on`,B(T)??`other`),G(n,B(ee))}),W(e,t)},Me=e=>{var t=Ix(),n=L(t,!0);z(()=>{Y(t,`data-state`,B(E)?.state),G(n,B(te))}),W(e,t)};K(ke,e=>{B(ee)?e(je):B(te)&&e(Me,1)});var Ne=R(ke,2),Pe=e=>{var t=Hx(),n=I(t),r=F(n);q(r,21,()=>B(O),Ti,(e,t)=>{var n=Lx();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=Rx(),n=L(t,!0);z(()=>G(n,B(oe).detail)),W(e,t)};K(s,e=>{B(oe)?.detail&&!B(se)&&e(c)});var l=R(s,2),u=e=>{var t=Vx();q(t,21,()=>B(O),Ti,(e,t)=>{var n=Bx(),r=F(n),i=F(r),a=e=>{Ua(e,{get of(){return mb},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=zx(),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=>{zc(e,{get command(){return B(t).copy}})};K(d,e=>{B(t).copy&&e(f)}),k(n),z(()=>{Y(n,`data-state`,B(t).state),G(c,B(t).label)}),W(e,n)}),k(t),W(e,t)};K(l,e=>{B(se)&&e(u)}),z(()=>{Y(n,`data-tone`,B(ie)),Y(n,`aria-expanded`,B(se)),G(a,B(ae)),G(o,B(se)?`Hide`:`Details`)}),H(`click`,n,()=>P(se,!B(se))),W(e,t)};K(Ne,e=>{B(O).length&&e(Pe)});var Fe=R(Ne,2),Ie=e=>{var n=Ux(),r=F(n),i=L(r,!0);k(n),z(()=>{r.disabled=B(ce),G(i,B(ce)?`Sent to the agent`:`Ask the agent to fix`)}),H(`click`,r,async()=>{P(ce,await bx.askToFix(t.id,`${B(oe).label}${B(oe).detail?`: ${B(oe).detail}`:``}`),!0)}),W(e,n)};K(Fe,e=>{B(oe)&&e(Ie)});var Le=R(Fe,2),Re=e=>{var n=Gx(),r=F(n),i=L(r);q(R(r,2),17,()=>B(y),e=>e.id,(e,n)=>{let r=M(()=>Z.cards.some(e=>e.id===B(n).id)),i=M(()=>B(r)||B(n).cloned);var a=Wx(),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(),()=>x(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(Le,e=>{B(y).length&&e(Re)});var ze=R(Le,2);d_(ze,{type:`source`,get position(){return Nm.Top},isConnectable:!1,class:`anchor`}),q(R(ze,2),16,()=>s,e=>e,(e,n)=>{var r=Kx();let i;z(e=>{i=J(r,1,`port ${n??``} nodrag nopan`,`svelte-byllhq`,i,{on:e}),Y(r,`aria-label`,`Draw a cable from the ${n??``} of ${t.data.name??``}`)},[()=>le(n)]),H(`pointerdown`,r,e=>{e.button===0&&(e.stopPropagation(),tx.start(t.id,n))}),W(e,r)}),k(fe),z((e,n)=>{pe=J(fe,1,`card kind-${t.data.kind??``}`,`svelte-byllhq`,pe,{selected:t.selected,dimmed:e,short:B(u),far:B(l),reading:Z.live,"drop-ok":tx.drop?.id===t.id&&tx.drop.ok,"drop-bad":tx.drop?.id===t.id&&!tx.drop.ok,wiring:!!tx.draft}),me=Ji(fe,``,me,{width:n}),Y(ye,`title`,t.data.name),G(be,t.data.name),G(Ce,t.data.kindLabel)},[()=>Z.dimmed(t.id),()=>B(u)&&B(f)?`${String(B(f))}px`:void 0]),V(`pointerenter`,fe,i),V(`pointerleave`,fe,a),Oa(fe,`offsetWidth`,e=>P(d,e)),W(e,ue),j()}Xr([`click`,`pointerdown`]);var Yx=ai(`<g class="cut nodrag svelte-1f6oz0q" role="button" tabindex="-1"><circle r="8" class="svelte-1f6oz0q"></circle><path d="M-3,-3 L3,3 M3,-3 L-3,3" class="svelte-1f6oz0q"></path></g>`),Xx=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 Zx(e,t){A(t,!0);let n=ky(),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(()=>tx.endPoint(B(a),`from`)),s=M(()=>tx.endPoint(B(a),`to`)),c=M(()=>!B(o)||!B(s)||!B(i)?``:B(i).points?.length?ls(B(o),B(i).fromSide,B(s),B(i).toSide,B(i).points):cs(B(o),B(i).fromSide,B(s),B(i).toSide)),l=M(()=>{if(!B(s)||!B(i))return``;let[e,t]=ts[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=Xx();let i;var a=F(n),o=L(a),s=R(a);let f;var p=R(s),m=R(p),h=R(m),g=R(h),_=e=>{var n=Yx();z((e,t)=>{Y(n,`transform`,B(d)),Y(n,`aria-label`,`Unplug ${e??``} from ${t??``}`)},[()=>u(t.source),()=>u(t.target)]),H(`click`,n,e=>{e.stopPropagation(),Z.cut(t.source,t.target)}),H(`keydown`,n,e=>{(e.key===`Enter`||e.key===` `)&&Z.cut(t.source,t.target)}),W(e,n)};K(g,e=>{B(d)&&e(_)}),k(n),z((e,t,a,u,d,g)=>{i=J(n,0,`svelte-1f6oz0q`,null,i,{idle:e,dimmed:t,lit:a,snapped:u}),G(o,`${d??``} calls local ${g??``}. Click to pick it; the × in its middle unplugs it.`),Y(s,`d`,B(c)),f=Ji(s,``,f,{"stroke-width":`${16*B(r)}px`}),Y(p,`d`,B(c)),Y(m,`d`,B(c)),Y(h,`transform`,B(l))},[()=>!Q.up(t.source)||!Q.up(t.target),()=>Z.dimmedLink(t.source,t.target),()=>Z.lit(t.source,t.target),()=>Z.snapped.includes(t.id),()=>u(t.source),()=>u(t.target)]),V(`pointerenter`,n,()=>Z.hovered=t.id),V(`pointerleave`,n,()=>Z.hovered=null),W(e,n)};K(p,e=>{B(c)&&e(m)}),W(e,f),j()}Xr([`click`,`keydown`]);var Qx=U(`<span class="led"></span>`),$x=U(`<button class="nodrag svelte-1dgo2s3" type="button"><!></button>`),eS=U(`<div class="body svelte-1dgo2s3"><!></div>`),tS=U(`<div class="foot stack svelte-1dgo2s3"><!></div>`),nS=U(`<button class="link nodrag svelte-1dgo2s3" type="button"> </button>`),rS=U(`<p class="foot svelte-1dgo2s3"><span> </span> <!></p>`),iS=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 aS(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=iS();let l;var u=F(c);Pi(u,()=>t.band??f);var d=R(u,2),p=F(d),m=e=>{var r=Qx();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=$x(),r=F(n),i=e=>{Lc(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=eS();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=tS();Pi(F(n),()=>t.foot),k(n),W(e,n)},T=e=>{var n=rS(),r=F(n),a=L(r,!0),o=R(r,2),s=e=>{var n=nS(),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 oS=U(`<span class="where svelte-o6r0zw"> </span>`);function sS(e,t){A(t,!0);{let n=M(()=>t.data.about.join(`
17
- `)),r=M(()=>[{label:`Settings for ${t.data.name}`,title:`Settings: its addresses, and the apps it calls`,icon:`cog`,run:()=>void px.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)}}]);aS(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=oS(),i=L(r,!0);z(()=>G(i,t.data.where)),W(e,r)},$$slots:{default:!0}})}j()}var cS=new Set([`$$slots`,`$$events`,`$$legacy`]);function lS(e,t){let n=La(t,cS),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 uS=U(`<span class="band svelte-1k105m0">PROD DATABASE</span>`),dS=U(`<button class="link nodrag" type="button"> </button>`),fS=U(`<span class="state svelte-1k105m0"><span class="led"></span><b class="svelte-1k105m0"> </b><!></span> <span class="then svelte-1k105m0"> </span>`,1),pS=U(`<span> </span>`),mS=U(`<span class="address svelte-1k105m0"> </span>`),hS=U(`<span class="mac svelte-1k105m0"><!>On this Mac</span> <!>`,1),gS=U(`<span class="via svelte-1k105m0"> </span> <span class="address deployed svelte-1k105m0"> </span>`,1),_S=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),vS=U(`<p> </p>`),yS=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>`),bS=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>`),xS=U(`<!> <!> <!>`,1);function SS(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(()=>mx.addresses[t.data.database]),a=M(()=>mx.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);mx.load().then(()=>{t.data.local&&mx.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 mx.test(t.data.database,_());P(typeof e==`string`?m:h,e,!0)},y=async()=>{let e=await mx.keep(t.data.database,_());e?P(m,e,!0):(P(l,!1),Z.setDatabase(t.data.database,!0),mx.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),mx.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 ${hx(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 mx.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=xS(),T=I(w);{let e=e=>{var t=si(),n=I(t),r=e=>{W(e,uS())};K(n,e=>{B(c)&&e(r)}),W(e,t)},a=e=>{var t=fS(),n=I(t),r=F(n),i=R(r),a=L(i,!0),o=R(i),s=e=>{var t=dS(),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 px.settings?.open({title:t.data.name,path:`databases.${t.data.database}`})}]);aS(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=_S(),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=pS();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=hS(),n=I(t);Ua(F(n),{get of(){return lS},size:14}),Ae(),k(n);var r=R(n,2),a=e=>{var t=mS(),n=L(t,!0);z(e=>G(n,e),[()=>hx(B(i))]),W(e,t)};K(r,e=>{B(i)&&e(a)}),W(e,t)},v=e=>{var n=gS(),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),E=e=>{var n=yS(),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=vS();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(E)});var D=R(ee,2),te=e=>{var n=bS(),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(D,e=>{B(u)&&e(te)}),W(e,w),j()}Xr([`click`,`change`]);var CS=new Set([`$$slots`,`$$events`,`$$legacy`]);function wS(e,t){let n=La(t,CS),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 TS=U(`<span class="warn svelte-1jmpek8" role="img"><!></span>`),ES=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 DS(e,t){A(t,!0);let n=M(()=>Z.env.toUpperCase()),r=ky(),i=M(()=>r.current.zoom<ac);{let r=e=>{var n=si(),r=I(n),a=e=>{var n=TS();Ua(F(n),{get of(){return wS},size:13}),k(n),z(e=>{Y(n,`aria-label`,t.data.shares),Y(n,`title`,e)},[()=>t.data.about.slice(1).join(`
18
- `)]),W(e,n)};K(r,e=>{t.data.shares&&!B(i)&&e(a)}),W(e,n)},a=M(()=>t.data.upstream?`Stays deployed`:t.data.local?`Runs on your Mac`:`Uses the deployed queue`),o=M(()=>t.data.about.join(`
19
- `)),s=M(()=>[{label:`Settings for ${t.data.name}`,title:`Settings: the queue's name and its queue on each environment`,icon:`cog`,run:()=>void px.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)}}]);aS(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=ES(),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 OS=U(`<li class="svelte-s23l4l"><span class="svelte-s23l4l"> </span><span class="use svelte-s23l4l"> </span></li>`),kS=U(`<ul class="rows svelte-s23l4l" aria-label="Databases behind it"></ul>`),AS=U(`<span class="label">Local port</span> <span> </span> <span class="label">Goes to</span> <span class="host svelte-s23l4l"> </span> <!>`,1);function jS(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?Ao({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 px.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(`
20
- `)),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:fb,run:()=>void l()});aS(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=AS(),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=kS();q(n,21,()=>t.data.rows,e=>e.database,(e,t)=>{var n=OS(),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 MS=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)}},NS={ok:!1,unsure:!0,text:`Cannot test`,detail:`Testing needs the Koppler canvas running (koppler canvas).`},PS=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(()=>NS):NS;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)))}},FS=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>`),IS=U(`<button class="tool svelte-ibqofz" type="button" role="radio"><!></button>`),LS=U(`<button class="clear svelte-ibqofz" title="Remove every card from this board. Undo brings them back.">Clear</button>`),RS=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>`),zS=ai(`<path></path><path class="hit svelte-ibqofz" role="presentation"></path>`,1),BS=ai(`<path class="hit svelte-ibqofz" role="presentation"></path>`),VS=ai(`<text class="via svelte-ibqofz"> </text>`),HS=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>`),US=ai(`<svg class="links svelte-ibqofz" aria-hidden="true"><!><!></svg>`),WS=ai(`<circle role="presentation" r="5"></circle>`),GS=ai(`<title class="svelte-ibqofz"> </title>`),KS=ai(`<circle r="7"><!></circle><circle class="light svelte-ibqofz" r="3.4"></circle>`,1),qS=ai(`<!><!>`,1),JS=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),YS=ai(`<path class="draft svelte-ibqofz"></path>`),XS=ai(`<svg role="group" aria-label="Cable ends"><!><!><!></svg>`),ZS=U(`<!> <!> <!> <!> <!> <!>`,1),QS=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>`),$S=U(`<ul aria-label="Or open a board" class="svelte-ibqofz"></ul>`),eC=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>`),tC=U(`<div class="line-menu svelte-ibqofz" role="menu" aria-label="Line"><button type="button" role="menuitem" class="svelte-ibqofz"> </button></div>`),nC=U(`<div class="area svelte-ibqofz" role="presentation"><!> <!> <!></div>`);function rC(e,t){A(t,!0);let n=Bv();Z.toFlow=e=>n.screenToFlowPosition(e,{snapToGrid:!1}),Z.zoom=()=>n.getZoom();let r=ky(),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(()=>{PS.follow(B(ae))});let m=M(()=>{let e=tx.draft;return e?e.points.length?ls(e.a,e.side,e.b,e.bSide,e.points):cs(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`,qy],[`hand`,`Hand (H): drag to move around. Or hold Space while dragging`,Ly]],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?MS.redo():MS.undo()}else t===`f`?fe():t===`p`||t===`escape`&&Z.present?de():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}:{},E=!1;Fn(()=>{if(E||!Z.nodes.length||Z.boxes.size<Z.nodes.length)return;E=!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})||fe(0)});let D=(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=os(t,o),c=os(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:cs(c,a,s,o),end:s}},te=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,...D(r,i),idle:!Q.up(e)}]})),O=Z.nameOf,ne=N(null),re=(e,t,n,r)=>{e.preventDefault(),P(ne,{x:e.clientX,y:e.clientY,app:t,host:n,show:r},!0)},ie=(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}.`,ae=M(()=>[...Z.edges.map(({id:e,source:t,target:n})=>({key:e,apps:[t,n],payload:{from:t,to:n}})),...B(te).map(({key:e,from:t,payload:n})=>({key:e,apps:[t],payload:n}))]),oe=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?os(o,d[0]):{x:d[0]===`right`?o.x+o.w:o.x,y:o.y+m},os(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]=[os(o,e),os(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?ls(h,d[0],g,d[1],[y]):cs(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`}:ts[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`}}]})),se=M(()=>new Map(Z.nodes.map((e,t)=>[e.id,(e.selected?Z.nodes.length:0)+t]))),ce=(e,t)=>{let n=B(se).get(t)??0;return[...Z.boxes].some(([r,i])=>r!==t&&(B(se).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)},le=()=>new Promise(requestAnimationFrame);Fn(()=>{Z.brief=r.current.zoom<.6||Z.live});let ue=!1,de=async()=>{if(Z.present=!Z.present,!ue){for(ue=!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,ue=!1}await le(),await le(),await fe()},fe=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 hh({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,...pe[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 le();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 le(),await le()),await n.setViewport(t(i(),ac-.01),{duration:e})}},pe={};Fn(()=>{if(r.current.zoom<.6||Z.live)return;for(let[e,{w:t,h:n}]of Z.boxes)pe[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 me=async()=>{!Z.live&&r.current.zoom<.6&&!Z.nodes.every(e=>pe[e.id])&&(await n.setZoom(1,{duration:0}),await le(),await le()),Z.arrange(e=>{let t=Z.boxes.get(e)??{w:260,h:160};return pe[e]??{w:t.w,h:Z.fullHeights[e]??t.h}}),requestAnimationFrame(()=>void fe())};Fn(()=>{let e=Z.opened;e&&Z.nodes.every(e=>e.measured?.width)&&(Z.opened=null,e===`arrange`?me():requestAnimationFrame(()=>void fe()))});var he=nC();V(`keydown`,hn,e=>{e.key===`Escape`&&P(ne,null),C(e),y(e),T(e)}),V(`keyup`,hn,e=>{C(e),y(e)}),V(`blur`,hn,()=>{P(g,!1),P(ne,null)}),V(`pointermove`,hn,w,!0),V(`pointerdown`,hn,e=>{a={x:e.clientX,y:e.clientY},e.target.closest(`.line-menu`)||P(ne,null)},!0),V(`pointerup`,hn,()=>a=null,!0);var ge=F(he),_e=()=>Z.flowNodes(),ve=e=>{Z.fromFlow(e,`${String(r.current.zoom<.6)} ${String(Z.live)}`,Q.asked)&&MS.adopt()};{let e=M(()=>({app:Jx,tunnel:jS,queue:DS,outside:sS,database:SS})),t=M(()=>({cable:Zx})),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(()=>rb(ub.now.scheme)?`light`:`dark`);ry(ge,za({get nodes(){return _e()},set nodes(e){ve(e)},get nodeTypes(){return B(e)},get edgeTypes(){return B(t)},get connectionMode(){return Dm.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 km.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=ZS(),a=I(i);hy(a,{get variant(){return cy.Dots},gap:20,size:1.4,bgColor:`var(--desk)`,patternColor:`var(--line)`});var o=R(a,2);Jv(o,{position:`top-left`,children:(e,t)=>{var n=FS(),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);Jv(s,{position:`bottom-center`,children:(e,t)=>{var i=RS(),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=IS();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 $y},size:16}),k(o);var s=R(o,2);Ua(F(s),{get of(){return Zy},size:16}),k(s);var c=R(s,2);Ua(F(c),{get of(){return zy},size:16}),k(c);var l=R(c,2);Ua(F(l),{get of(){return Vy},size:16}),k(l);var u=R(l,2),f=F(u),p=M(()=>d(1/1.2));Ua(F(f),{get of(){return Gy},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 Yy},size:16}),k(_),k(u);var x=R(u,2);Ua(F(x),{get of(){return Uy},size:16}),k(x);var S=R(x,2),C=e=>{var t=LS();z(()=>t.disabled=!Z.nodes.length),H(`click`,t,()=>{let e=Z.nodes.length;bx.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=!MS.canUndo,s.disabled=!MS.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,()=>{MS.undo()}),H(`click`,s,()=>{MS.redo()}),H(`click`,c,()=>void me()),H(`click`,l,()=>void fe()),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 de()),W(e,i)},$$slots:{default:!0}});var c=R(s,2);Ty(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);sy(l,{target:`back`,children:(e,t)=>{var n=US(),r=F(n);q(r,17,()=>B(te),e=>e.key,(e,t)=>{var n=zS(),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)&&re(e,B(t).from,B(t).host,!1)}),W(e,n)}),q(R(r),17,()=>B(oe),e=>e.key,(e,t,n,r)=>{var i=HS();let a;var o=F(i),s=R(o),c=R(s),l=e=>{let n=M(()=>B(t).tunnel);var r=BS();z(()=>Y(r,`d`,B(t).d)),H(`contextmenu`,r,e=>{re(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=VS(),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}}),sy(R(l,2),{target:`front`,style:`position: absolute; z-index: 1001`,children:(e,t)=>{var n=XS();let r;var i=F(n);q(i,19,()=>Z.edges,e=>e.id,(e,t,n)=>{let r=M(()=>tx.endPoint(B(n),`from`)),i=M(()=>tx.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(()=>PS.results[B(t).id]);var o=qS(),s=I(o),c=e=>{var n=WS();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:tx.grabbed?.id===B(t).id&&tx.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=>{tx.grabEnd(e,B(t).id,`from`)}),W(e,n)},l=M(()=>!ce(B(r),B(t).source));K(s,e=>{B(l)&&e(c)});var u=R(s),d=e=>{var r=KS(),o=I(r);let s;var c=F(o),l=e=>{var n=GS(),r=L(n,!0);z(e=>G(r,e),[()=>ie(B(a),`local ${O(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:tx.grabbed?.id===B(t).id&&tx.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 ${O(B(t).target)} answers ${O(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(),PS.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},tx.grabEnd(e,B(t).id,`to`)}),H(`click`,o,e=>{B(n)&&Math.hypot(e.clientX-p.x,e.clientY-p.y)<6&&PS.test({key:B(t).id,payload:{from:B(t).source,to:B(t).target}})}),W(e,r)},f=M(()=>!ce(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(te),e=>e.key,(e,t)=>{var n=si(),r=I(n),i=e=>{let n=M(()=>PS.results[B(t).key]);var r=JS(),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)},[()=>O(B(t).from),()=>B(t).what.toLowerCase(),()=>ie(B(n),`${O(B(t).from)} reaches its ${B(t).what.toLowerCase()} through the tunnel`)]),H(`keydown`,i,e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),PS.test(B(t)))}),H(`pointerdown`,i,e=>{e.stopPropagation()}),H(`click`,i,()=>void PS.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=YS();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:!!tx.grabbed,still:Z.live})),W(e,n)},$$slots:{default:!0}}),W(e,i)},$$slots:{default:!0}}))}var ye=R(ge,2),be=e=>{var t=eC(),n=R(F(t),2),r=e=>{var t=$S();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=QS(),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 ${fx(i())}`:``]),H(`click`,o,()=>{cx(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(ye,e=>{Z.nodes.length||e(be)});var xe=R(ye,2),Se=e=>{let t=M(()=>B(ne));var n=tC();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??``}`)},[()=>O(B(t).app)]),H(`click`,i,()=>{Z.showTunnelFor(B(t).app,B(t).host,B(t).show),P(ne,null)}),W(e,n)};K(xe,e=>{B(ne)&&e(Se)}),k(he),Aa(he,e=>P(c,e),()=>B(c)),V(`dragover`,he,e=>{e.dataTransfer?.types.includes(`text/app`)&&e.preventDefault()}),V(`drop`,he,e=>{let t=e.dataTransfer?.getData(`text/app`);t&&!Z.live&&(e.preventDefault(),Z.add(t,{x:e.clientX,y:e.clientY}))}),H(`focusin`,he,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,he),j()}Xr([`focusin`,`change`,`click`,`contextmenu`,`pointerdown`,`keydown`]);var iC=new Set([`$$slots`,`$$events`,`$$legacy`]);function aC(e,t){let n=La(t,iC),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 oC=new Set([`$$slots`,`$$events`,`$$legacy`]);function sC(e,t){let n=La(t,oC),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 cC=U(`<button class="i svelte-1ixstkt" type="button"><!></button>`),lC=U(`<p class="result svelte-1ixstkt"> </p>`),uC=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>`),dC=U(`<button type="button" class="svelte-1ixstkt">Test</button> <button type="button" class="svelte-1ixstkt">Remove</button>`,1),fC=U(`<button type="button" title="A command for your own terminal that fetches and stores it without showing it" class="svelte-1ixstkt"> </button>`),pC=U(`<p class="nohow svelte-1ixstkt"> </p>`),mC=U(`<div class="cmd svelte-1ixstkt"><p class="svelte-1ixstkt">This command comes from the stack file, so read it before you run it, in your own terminal. It should
21
- fetch the value and store it without showing it.</p> <!></div>`),hC=U(`<div class="acts svelte-1ixstkt"><button type="button" class="svelte-1ixstkt"> </button> <!></div> <!> <!>`,1),gC=U(`<dt class="svelte-1ixstkt">When</dt> <dd class="svelte-1ixstkt"> </dd>`,1),_C=U(`<li> </li>`),vC=U(`<ol class="svelte-1ixstkt"></ol>`),yC=U(`<dt class="svelte-1ixstkt">Where</dt> <dd class="svelte-1ixstkt"><!></dd>`,1),bC=U(`<dl class="svelte-1ixstkt"><!> <!></dl>`),xC=U(`<div class="cred svelte-1ixstkt"><div class="head svelte-1ixstkt"><code class="svelte-1ixstkt"> </code> <!> <span class="state svelte-1ixstkt"> </span></div> <!> <!> <!></div>`),SC=U(`<section class="svelte-1ixstkt"><h3 class="svelte-1ixstkt"> </h3> <!></section>`),CC=U(`<p class="none svelte-1ixstkt"> </p>`),wC=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 TC(e,t){let n=ci();A(t,!0);let r={missing:`Missing`,stored:`Stored`,ok:`Works`,failed:`Does not work`},i=N(void 0),a=N(void 0),o=N(!1),s=new V_,c=M(()=>Z.env.toUpperCase()),l=(e,t)=>`${e}|${Z.env}|${t}`,u=(e,t)=>s.get(l(e,t))??{},d=(e,t,n)=>s.set(l(e,t),{...u(e,t),...n}),f=(e,t)=>{let n=u(e,t.name);return n.until&&n.until>Date.now()?!!n.stored:!!t.stored},p=M(()=>Z.cards.map(e=>({id:e.id,name:e.data.name,list:Q.status?.secrets?.[e.id]?.[Z.env]??[]})).filter(e=>e.list.length)),m=e=>!e.when||/^always\b/i.test(e.when.trim()),h=M(()=>B(p).flatMap(e=>e.list.filter(t=>!f(e.id,t)&&m(t))).length),g=(e,t)=>{let n=u(e,t.name);return f(e,t)?n.tested?n.ok?`ok`:`failed`:`stored`:`missing`},_=e=>e.split(/\s*(?:→|->|=>)\s*/).map(e=>e.trim()).filter(Boolean),v=()=>{let e=B(i)?.getBoundingClientRect();e&&B(a)&&(B(a).style.top=`${String(e.bottom+6)}px`,B(a).style.right=`${String(Math.max(12,innerWidth-e.right))}px`)},y=async(e,t,n)=>{e.preventDefault();let r=e.currentTarget.querySelector(`input`);if(!r?.value.trim())return;let i=await oo(`secret`,{app:t,env:Z.env,name:n,value:r.value});r.value=``;let a=`error`in i?i.error:``;d(t,n,{form:!!a,tested:!1,ok:!a,message:a}),a||d(t,n,{stored:!0,until:Date.now()+8e3})},b=async(e,t)=>{d(e,t,{message:`Testing…`,tested:!1});let n=await oo(`secret-test`,{app:e,env:Z.env,name:t});if(`error`in n){d(e,t,{message:n.error,ok:!1});return}let r=/^cannot test/.test(n.message??``),i=(n.message??``).replace(/^failed: /,``).replace(/^cannot test: /,`Cannot be tested: `);d(e,t,{tested:!r,ok:!!n.ok,message:n.ok?``:i.replace(/^./,e=>e.toUpperCase())})},x=async(e,t)=>{let n=await oo(`secret-remove`,{app:e,env:Z.env,name:t}),r=`error`in n?n.error:``;d(e,t,{tested:!1,ok:!r,message:r}),r||d(e,t,{stored:!1,until:Date.now()+8e3})};var S=wC(),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=SC(),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=xC(),l=F(s),p=F(l),h=L(p,!0),v=R(p,2),S=e=>{var r=cC();Ua(F(r),{get of(){return aC},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=lC(),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 E=R(T,2),D=e=>{var r=uC(),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)},te=e=>{var r=hC(),o=I(r),s=F(o),l=L(s,!0),u=R(s,2),f=e=>{var r=dC(),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=fC(),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=pC(),r=L(n);z(()=>G(r,`The stack says nothing about where to get it on ${B(c)??``}. Ask whoever owns ${B(t).name??``}, or ask the agent to
22
- find it in the repo and add the steps to the stack.`)),W(e,n)};K(m,e=>{!B(a)&&!B(n).fetchCli&&!B(n).fetchUi&&e(h)});var g=R(m,2),_=e=>{var t=mC();zc(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(E,e=>{B(i).form?e(D):e(te,-1)});var O=R(E,2),ne=e=>{var t=bC(),r=F(t),i=e=>{var t=gC(),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=yC(),r=R(I(t),2),i=F(r),a=e=>{var t=vC();q(t,20,()=>_(B(n).fetchUi),e=>e,(e,t)=>{var n=_C(),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(O,e=>{B(i).info&&e(ne)}),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=CC(),n=L(t);z(()=>G(n,`No app on the board needs a stored credential on ${B(c)??``}.`)),W(e,t)});var E=R(ee,2);Ua(F(E),{get of(){return sC},size:13}),Ae(),k(E),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 EC=U(`<li class="svelte-14dfga3"><span class="mark svelte-14dfga3">!</span><span class="what svelte-14dfga3"> </span></li>`),DC=U(`<li class="svelte-14dfga3"><span class="mark svelte-14dfga3"></span><span class="what svelte-14dfga3">Working out what is needed…</span></li>`),OC=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>`),kC=U(`<small class="for svelte-14dfga3"> </small>`),AC=U(`<small class="svelte-14dfga3"> </small>`),jC=U(`<!> <!>`,1),MC=U(`<!> <!> <!> <!>`,1),NC=U(`<li><span class="mark svelte-14dfga3"><!></span> <span class="what svelte-14dfga3"> <!> <!></span></li>`),PC=U(`<button class="ok svelte-14dfga3" type="button"> </button>`),FC=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 IC(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 bx.askFacts(Z.env,e),!0)};var l={open:s},u=FC(),d=F(u),f=L(d),p=R(d,4),m=F(p),h=e=>{var t=EC(),n=L(R(F(t)),!0);k(t),z(()=>G(n,B(i))),W(e,t)},g=e=>{W(e,DC())},_=e=>{var t=OC(),n=F(t);Ua(F(n),{get of(){return mb},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=NC();let i;var a=F(r),o=F(a),s=e=>{Ua(e,{get of(){return mb},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=kC(),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=MC(),r=I(n),i=e=>{var n=AC(),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=jC(),r=I(n);zc(r,{get command(){return B(t).command}});var i=R(r,2),a=e=>{var n=AC(),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=AC(),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=AC(),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=PC(),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 LC=U(`"<strong> </strong>" in the repos means <strong> </strong>`,1),RC=U(`<strong> </strong> calls <strong> </strong>`,1),zC=U(`<strong> </strong> <code class="svelte-cao9th"> </code>`,1),BC=U(`<label class="svelte-cao9th"><input type="checkbox"/> <span><!> <small class="svelte-cao9th"> </small></span></label>`),VC=U(`<section class="svelte-cao9th"><h3 class="svelte-cao9th"> <span class="svelte-cao9th"> </span></h3> <p class="svelte-cao9th"> </p> <!></section>`),HC=U(`<dialog aria-labelledby="findings-title" class="svelte-cao9th"><h2 id="findings-title" class="svelte-cao9th"> </h2> <p class="sub svelte-cao9th">Keep what looks right. It goes into the stack, so the canvas can show calls and Koppler can start and connect the
23
- apps. Nothing else changes.</p> <div class="list svelte-cao9th"></div> <div class="acts svelte-cao9th"><button type="button" class="svelte-cao9th"> </button> <button class="go svelte-cao9th" type="button"> </button></div></dialog>`);function UC(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 B_,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=HC(),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=VC(),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=BC(),i=F(n);fa(i);var a=R(i,2),o=F(a),u=e=>{var n=LC(),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=RC(),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=zC(),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=zC(),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 WC=Z.nameOf,GC=(e,t,n)=>`${String(e)} ${e===1?t:n}`,KC=e=>e.to?`${e.from} to ${e.to}`:e.from,qC=e=>`tunnel:${e.host}:${String(e.original)}`,JC=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:`${WC(n)} is starting`}):Q.up(n)===!1?t.push({level:`bad`,id:n,down:!0,text:`${WC(n)} is not running`}):r?t.push({level:`bad`,id:n,text:`${WC(n)}: ${r.label.toLowerCase()} failed`}):e.some(e=>e.state===`user`)&&t.push({level:`warn`,id:n,text:`${WC(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(PS.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:`${WC(i)}${a?` to ${WC(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:WC(e),payload:{node:e}})),...Z.edges.map(({id:e,source:t,target:n})=>({kind:`cable`,key:e,id:t,from:WC(t),to:`local ${WC(n)}`,payload:{from:t,to:n}})),...Z.links.map(({from:e,tunnel:t})=>({kind:`tunnel`,key:`${e}>${qC(t)}`,id:e,from:WC(e),to:t.what,payload:{app:e,host:t.bind,port:t.port,original:t.original}}))]}result(e){return PS.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));PS.forget(e.map(e=>e.key));for(let n of e){let e=t(n);e&&(PS.results[n.key]={state:`warn`,text:`Not started`,detail:`${WC(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=>PS.test(e,!0)))}async askToFix(){let e=(this.flow??[]).filter(e=>this.result(e).state===`bad`).map(e=>({connection:KC(e),result:this.result(e).text??``,detail:this.result(e).detail??``,...e.payload}));if(!e.length)return;let t=[`Fix what the Koppler flow check found, using the koppler-run skill.`,`ENV ${Z.env.toUpperCase()}`,`FAILED:`,...e.map(e=>` ${e.connection}: ${e.result}. ${e.detail}`),`Find the cause of each, say what you would change, and ask before you start, stop or restart anything.`].join(`
24
- `),n=(Q.status?.agent?.state??`none`)===`none`;this.asked=await bx.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(WC).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?WC(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?WC(s[0]??``):`${String(s.length)} apps`} running, not on this board`,title:`${s.map(WC).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:`${GC(c,`thing is`,`things are`)} off`,title:d}:u?{state:`warn`,label:`${String(u)} not started`,title:`${GC(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)}},YC=U(`<p class="sum svelte-6gc4ih">Nothing is running</p> <p class="idle svelte-6gc4ih">Press Run to start the apps on your board. Flow check then tests every connection between them: apps, cables,
25
- databases and caches.</p>`,1),XC=U(`<progress aria-label="Connections checked" class="svelte-6gc4ih"></progress>`),ZC=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>`),QC=U(`<button class="row svelte-6gc4ih" type="button"><span class="route"> </span> <span class="verdict svelte-6gc4ih"> </span></button>`),$C=U(`<details class="svelte-6gc4ih"><summary class="svelte-6gc4ih"> <span class="tally svelte-6gc4ih"> </span></summary> <!></details>`),ew=U(`<div class="fix svelte-6gc4ih"><p class="svelte-6gc4ih">The agent can find the cause of each failure and tell you what it would change. It asks before it starts,
26
- stops or restarts anything.</p> <button class="go svelte-6gc4ih" type="button"> </button></div>`),tw=U(`<header class="svelte-6gc4ih"><p class="sum svelte-6gc4ih"> </p> <button type="button" class="svelte-6gc4ih">Check again</button></header> <!> <!> <!> <!>`,1),nw=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 rw(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(()=>JC.chip),c=M(()=>(JC.flow??[]).map(e=>({job:e,result:JC.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(()=>JC.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=nw(),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=YC();Ae(2),W(e,t)},C=e=>{var t=tw(),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=XC();z(()=>{Y(t,`max`,B(c).length),pa(t,B(u))}),W(e,t)};K(s,e=>{JC.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=ZC(),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=$C(),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=QC(),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=ew(),n=R(F(t),2),r=L(n,!0);k(t),z(()=>{n.disabled=JC.asked,G(r,JC.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 JC.askToFix()),W(e,t)};K(_,e=>{B(l).length&&!JC.busy&&e(y)}),z(()=>{G(a,B(f)),o.disabled=JC.busy}),H(`click`,o,()=>void JC.check()),W(e,t)};K(x,e=>{!JC.sent.length&&!JC.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(),!JC.flow&&JC.sent.length&&JC.check())}),W(e,t)};K(_,e=>{Q.status&&e(y)}),W(e,g),j()}Xr([`click`]);var iw=U(`<button class="open svelte-zovg1u" type="button" popovertarget="help" aria-label="Shortcuts and legend" title="Shortcuts and legend (?)">?</button> <div class="sheet svelte-zovg1u" id="help" popover="" aria-label="Shortcuts and legend"><h2 class="svelte-zovg1u">Shortcuts</h2> <dl class="svelte-zovg1u"><dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">F</kbd></dt> <dd class="svelte-zovg1u">Fit the whole board in view</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">P</kbd>, <kbd class="svelte-zovg1u">Esc</kbd> to stop</dt> <dd class="svelte-zovg1u">Present: the board alone, full screen</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">E</kbd> / <kbd class="svelte-zovg1u">L</kbd></dt> <dd class="svelte-zovg1u">Edit view / Live view</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">V</kbd> / <kbd class="svelte-zovg1u">H</kbd>, hold <kbd class="svelte-zovg1u">Space</kbd></dt> <dd class="svelte-zovg1u">Select / move around the board</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">Cmd</kbd> or <kbd class="svelte-zovg1u">Ctrl</kbd> + <kbd class="svelte-zovg1u">Z</kbd></dt> <dd class="svelte-zovg1u">Undo (add <kbd class="svelte-zovg1u">Shift</kbd> to redo)</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">Cmd</kbd> or <kbd class="svelte-zovg1u">Ctrl</kbd> + <kbd class="svelte-zovg1u">A</kbd></dt> <dd class="svelte-zovg1u">Select every card</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">Tab</kbd>, then arrow keys</dt> <dd class="svelte-zovg1u">Move to a card, then move it</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">Delete</kbd></dt> <dd class="svelte-zovg1u">Remove the selected cards</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">?</kbd></dt> <dd class="svelte-zovg1u">This sheet</dd></dl> <h2 class="svelte-zovg1u">On the board</h2> <dl class="svelte-zovg1u"><dt class="svelte-zovg1u"><span class="cable svelte-zovg1u"></span></dt> <dd class="svelte-zovg1u">A cable: the app at its start calls your local copy of the app at its end. Drag from the ring on a card's edge, or
27
- use the card's Cables field.</dd> <dt class="svelte-zovg1u"><span class="card svelte-zovg1u"></span></dt> <dd class="svelte-zovg1u">A tunnel to a database or cache the app uses</dd> <dt class="svelte-zovg1u"><span class="cable queue svelte-zovg1u"></span></dt> <dd class="svelte-zovg1u">A queue between apps: dashed while it is the deployed one, solid once its switch runs it locally</dd> <dt class="svelte-zovg1u"><span class="card outside svelte-zovg1u"></span></dt> <dd class="svelte-zovg1u">An outside system, such as a payment provider: it never runs here</dd> <dt class="svelte-zovg1u"><span class="protected svelte-zovg1u">Protected</span></dt> <dd class="svelte-zovg1u">A protected environment (production, usually): red marks only the frame. Red on the board always means something
28
- failed.</dd> <dt class="svelte-zovg1u"><span class="calls svelte-zovg1u">Calls QA</span></dt> <dd class="svelte-zovg1u">Apps this one still calls in the deployed environment. Click one to run it locally too.</dd> <dt class="svelte-zovg1u">Zoomed out</dt> <dd class="svelte-zovg1u">Cards show only their state; zoom in to change them</dd></dl></div>`,1);function aw(e){let t=N(void 0),n=e=>{e.key!==`?`||e.target.closest(`input, select, textarea`)||B(t)?.togglePopover()};var r=iw();V(`keydown`,hn,n),Aa(R(I(r),2),e=>P(t,e),()=>B(t)),W(e,r)}var ow=U(`<p class="svelte-146fxte"> </p>`),sw=U(`<h4 class="svelte-146fxte"> </h4>`),cw=U(`<li> </li>`),lw=U(`<ul class="svelte-146fxte"></ul>`),uw=U(`<!> <!> <!>`,1),dw=U(`<span class="svelte-146fxte"> </span>`),fw=U(`<button class="choice svelte-146fxte" type="button"><strong> </strong><!></button>`),pw=U(`<div class="choices svelte-146fxte"></div>`),mw=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),hw=U(`<p class="answered svelte-146fxte"> </p>`),gw=U(`<article><div class="meta svelte-146fxte"><span class="kind svelte-146fxte"> </span><time> </time></div> <h3 class="svelte-146fxte"> </h3> <!> <!> <!> <!></article>`);function _w(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&&My.answer(t,{text:n})};var s=gw();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=ow(),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=uw(),r=I(n),i=e=>{var n=sw(),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)=>{zc(e,{get command(){return t}})});var o=R(a,2),s=e=>{var n=lw();q(n,21,()=>B(t).items,Ti,(e,t)=>{var n=cw(),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=mw(),r=I(n),i=e=>{var n=pw();q(n,21,()=>t.one.choices,e=>e.id,(e,n)=>{var r=fw(),i=F(r),a=L(i,!0),o=R(i),s=e=>{var t=dw(),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 My.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 My.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=hw(),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 vw=U(`<button type="button" class="svelte-1ekufpr">Clear</button>`),yw=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>`),bw=U(`<section class="waiting svelte-1ekufpr" aria-labelledby="waiting-title"><h3 id="waiting-title" class="svelte-1ekufpr"> </h3> <p class="svelte-1ekufpr">Sent while no agent was connected. Of several runs and Stops only the newest is acted on. One gets them when
29
- you run this in your agent session:</p> <!> <ul class="svelte-1ekufpr"></ul></section>`),xw=U(`<p class="none svelte-1ekufpr">The agent has said nothing yet.</p>`),Sw=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>`),Cw=U(`<p class="none svelte-1ekufpr">Nothing since the canvas started.</p>`),ww=U(`<details class="svelte-1ekufpr"><summary class="svelte-1ekufpr"> </summary> <!></details>`),Tw=U(`<!> <!>`,1),Ew=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 Dw(e,t){A(t,!0);let n=N(void 0),r=M(()=>My.messages),i=e=>e.kind===`question`&&!e.answered,a=e=>e.from===`koppler`&&!!e.answered,o=e=>!a(e)&&(!Q.status?.startedAt||(e.at??``)>=Q.status.startedAt||i(e)),s=M(()=>B(r).filter(o)),c=M(()=>B(r).filter(e=>!o(e))),l=e=>!i(e)&&(B(r)[0]!==e||e.answered?.via===`dismissed`||e.answered?.via===`replaced`);Fn(()=>{My.open&&(B(n)?.querySelector(`.choice`)??B(n)?.querySelector(`.close`))?.focus()});var u=si(),d=I(u),f=e=>{var t=Ew(),a=F(t),o=R(F(a),2),u=L(o,!0),d=R(o,2),f=e=>{var t=vw();H(`click`,t,()=>void My.clear()),W(e,t)},p=M(()=>B(r).some(e=>!i(e)));K(d,e=>{B(p)&&e(f)});var m=R(d,2);Ua(F(m),{get of(){return to},size:14}),k(m),k(a);var h=R(a,2),g=F(h),_=e=>{var t=bw(),n=F(t),r=L(n),i=R(n,4);zc(i,{command:`/koppler-run connect`});var a=R(i,2);q(a,21,()=>My.waiting,e=>e.key,(e,t)=>{var n=yw(),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??``}`)},[()=>fx(B(t).at)]),H(`click`,o,()=>void My.drop(B(t).key)),W(e,n)}),k(a),k(t),z(()=>G(r,`Waiting for an agent (${My.waiting.length??``})`)),W(e,t)};K(g,e=>{My.waiting.length&&e(_)});var v=R(g,2),y=e=>{W(e,xw())},b=e=>{W(e,Sw())},x=e=>{var t=Tw(),n=I(t);q(n,17,()=>B(s),e=>e.id,(e,t)=>{{let n=M(()=>l(B(t)));_w(e,{get one(){return B(t)},get past(){return B(n)}})}},e=>{W(e,Cw())});var r=R(n,2),i=e=>{var t=ww(),n=F(t),r=L(n);q(R(n,2),17,()=>B(c),e=>e.id,(e,t)=>{{let n=M(()=>l(B(t)));_w(e,{get one(){return B(t)},get past(){return B(n)}})}}),k(t),z(()=>G(r,`Earlier (${B(c).length??``})`)),W(e,t)};K(r,e=>{B(c).length&&e(i)}),W(e,t)};K(v,e=>{!B(r).length&&My.waiting.length?e(y):B(r).length?e(x,-1):e(b,1)}),k(h),k(t),Aa(t,e=>P(n,e),()=>B(n)),z(()=>G(u,My.question?`Waiting for your answer`:``)),H(`keydown`,t,e=>{e.key===`Escape`&&(My.open=!1)}),H(`click`,m,()=>My.open=!1),W(e,t)};K(d,e=>{My.open&&e(f)}),W(e,u),j()}Xr([`keydown`,`click`]);var Ow=new Set([`$$slots`,`$$events`,`$$legacy`]);function kw(e,t){let n=La(t,Ow),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 Aw=new Set([`$$slots`,`$$events`,`$$legacy`]);function jw(e,t){let n=La(t,Aw),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 Mw=U(`<small class="svelte-i7whuv"> </small>`),Nw=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>`),Pw=U(`<span class="changes svelte-i7whuv" title="Code changes Koppler made in your repos"> </span>`),Fw=U(`<p class="reason svelte-i7whuv"> </p>`),Iw=U(`<span> <!></span>`),Lw=U(`<li class="svelte-i7whuv"><span class="verb svelte-i7whuv"> </span> <span class="apps svelte-i7whuv"></span></li>`),Rw=U(`<span class="del svelte-i7whuv"><b aria-hidden="true" class="svelte-i7whuv">-</b><span class="sr svelte-i7whuv">removed: </span> </span>`),zw=U(`<span class="add svelte-i7whuv"><b aria-hidden="true" class="svelte-i7whuv">+</b><span class="sr svelte-i7whuv">added: </span> </span>`),Bw=U(`<span class="svelte-i7whuv">No lines recorded.</span>`),Vw=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>`),Hw=U(`<h4 class="svelte-i7whuv"> </h4> <!>`,1),Uw=U(`<div class="diffs svelte-i7whuv"><h3 class="svelte-i7whuv">Code changes in your repos</h3> <!></div>`),Ww=U(`<button type="button" class="svelte-i7whuv"> </button>`),Gw=U(`<div class="logs svelte-i7whuv"><h3 class="svelte-i7whuv">Logs</h3> <!> <button class="pin svelte-i7whuv" type="button"><!> </button></div>`),Kw=U(`<button class="back svelte-i7whuv" type="button">Put this board back</button>`),qw=U(`<ul class="plan svelte-i7whuv"></ul> <!> <!> <!>`,1),Jw=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 Yw(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=Nw(),s=F(r),c=F(s),l=F(c,!0),u=R(l),d=e=>{var t=Mw(),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=Jw(),l=F(c),u=F(l),d=F(u,!0),f=R(d),p=e=>{var t=Mw(),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=Pw(),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=Fw(),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=Lw(),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=Iw(),r=F(n,!0),i=R(r),o=e=>{var n=Mw(),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=Uw();q(R(F(n),2),16,()=>B(s),e=>e,(e,n)=>{var r=Hw(),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=Vw(),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=Rw(),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=zw(),r=R(F(n),2,!0);k(n),z(()=>G(r,B(t))),W(e,n)});var u=R(l),d=e=>{W(e,Bw())};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=Gw(),i=R(F(r),2);q(i,16,()=>t.run.logs,e=>e,(e,t)=>{var r=Ww(),i=L(r,!0);z(e=>G(i,e),[()=>a(t)]),H(`click`,r,()=>{ox.open(t,B(n))}),W(e,r)});var o=R(i,2),s=F(o);{let e=M(()=>t.run.pinned?jw:kw);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=Kw();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 Xw=U(`<p class="none svelte-16dstxb">No runs yet. Each run and Stop shows up here with how it ended.</p>`),Zw=U(`<p class="none svelte-16dstxb">No runs since the canvas started.</p>`),Qw=U(`<details class="svelte-16dstxb"><summary class="svelte-16dstxb"> </summary> <!></details>`),$w=U(`<!> <!>`,1),eT=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 tT(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(),cx({name:`Run from ${f(e.at)}`,version:1,nodes:e.nodes??{},edges:e.edges??[]})};var h=eT(),g=I(h);let _;Aa(g,e=>P(r,e),()=>B(r));var v=R(g,2),y=F(v),b=e=>{W(e,Xw())},x=e=>{var t=$w(),n=I(t);q(n,17,()=>B(u),e=>e.id??e.at,(e,t)=>{{let n=M(()=>B(o)===B(t).id);Yw(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,Zw())});var r=R(n,2),i=e=>{var t=Qw(),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);Yw(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 nT=U(`<button class="open svelte-1la1tzd" type="button">Traces</button>`);function rT(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=nT();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 iT=new Set([`$$slots`,`$$events`,`$$legacy`]);function aT(e,t){let n=La(t,iT),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 oT={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`},sT=e=>e==null?``:typeof e==`string`?e:JSON.stringify(e),cT=e=>oT[sT(e).toLowerCase()]??`info`;function lT(e){let t=/T?(\d{2}:\d{2}:\d{2})/.exec(sT(e))?.[1];if(!t)return``;let n=new Date(sT(e));return Number.isNaN(n.getTime())?t:n.toTimeString().slice(0,8)}var uT=(e,t)=>sT(e).replace(/\{[@$]?([\w.]+)(?:[,:][^}]*)?\}/g,(e,n)=>n in t?sT(t[n]):e);function dT(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:lT(n[`@t`]),level:cT(n[`@l`]??`Information`),text:sT(n[`@m`]??uT(n[`@mt`],n)),detail:sT(n[`@x`])};if(`Timestamp`in n||`MessageTemplate`in n||`RenderedMessage`in n){let e=n.Properties??{};return{time:lT(n.Timestamp),level:cT(n.Level),text:sT(n.RenderedMessage??uT(n.MessageTemplate,e)),detail:sT(n.Exception)}}return null}var fT=/\\?\^?\[\[?\d+m|\x1b\[[0-9;]*m/g,pT=[[/^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z?)\s+(INF|ERR|WRN|DBG)\s+(.*)$/,e=>({time:lT(e[1]),level:cT(e[2]),text:e[3]??``,detail:``})],[/^\[(\d{2}:\d{2}:\d{2})\s+(\w+)\]\s*(.*)$/,e=>({time:e[1]??``,level:cT(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(fT,``),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 mT(e){let t=e.trim(),n=dT(t);if(n)return n;for(let[e,n]of pT){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 hT=/^flutter: (#\d+\s|<asynchronous suspension>|\s*-- \S)/,gT=(e,t)=>hT.test(e)&&t.level===`error`||/^\s+(at |---|\.\.\.)/.test(e)||/^\s{2,}\S/.test(e);function _T(e,t,n,r){if(!t.trim())return;let i=e.at(-1);if(i&&r(i)&&gT(t,i)){i.detail+=(i.detail?`
30
- `:``)+t.replace(/^flutter: /,``).trim();return}let a=mT(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 vT(e){let t=[];for(let{app:n,at:r,approx:i,line:a}of e)_T(t,a,e=>({...e,app:n,at:r,approx:i}),e=>e.app===n);return t}function yT(e){let t=[];for(let n of(e??``).split(`
31
- `))_T(t,n,e=>e,()=>!0);return t}var bT=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>`),xT=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),ST=U(`<input maxlength="24"/>`),CT=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>`),wT=U(`<label class="svelte-1feoaw6"><input type="radio"/> </label>`),TT=U(`<span class="opt-label svelte-1feoaw6" aria-hidden="true"> </span> <span class="seg svelte-1feoaw6" role="radiogroup"></span>`,1),ET=U(`<div class="apps svelte-1feoaw6" role="group" aria-label="Apps in this log"><!> <span class="opts svelte-1feoaw6"></span></div>`),DT=U(`<p class="empty svelte-1feoaw6"> </p>`),OT=U(`<div><button type="button" class="n svelte-1feoaw6"> </button></div>`),kT=U(`<button type="button"> </button>`),AT=U(`<details class="m svelte-1feoaw6"><summary class="svelte-1feoaw6"> </summary><span class="x svelte-1feoaw6"> </span></details>`),jT=U(`<span class="x svelte-1feoaw6"> </span>`),MT=U(`<span class="m svelte-1feoaw6"> </span> <!>`,1),NT=U(`<!> <div class="row svelte-1feoaw6"><span> </span><span class="l svelte-1feoaw6"> </span> <!> <!></div>`,1),PT=U(`<!> <!>`,1),FT=U(`<div class="row svelte-1feoaw6"><span class="t svelte-1feoaw6"> </span><span class="l svelte-1feoaw6"> </span> <!></div>`),IT=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 LT(e,t){A(t,!0);let n={debug:`DEBUG`,warn:`WARN`,error:`ERROR`,koppler:`KOPPLER`,start:`START`},r=M(()=>ox.active),i=M(()=>B(r)?ox.text(B(r)):``),a=M(()=>{let e={};return(ox.raw?[]:yT(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:ox.names,choices:o,set:e=>{ox.setNames(e)}},{label:`Show`,value:ox.since,choices:s,set:e=>{ox.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(()=>ox.names===`change`),m=M(()=>Object.fromEntries(Z.nodes.map(e=>[e.id,e.data.kind]))),h=M(()=>{if(!B(l))return[];let e={};return vT(ox.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=ox.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))},E=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})},D=e=>{(e.key===`ArrowUp`||e.key===`ArrowDown`)&&(e.preventDefault(),C(w()+(e.key===`ArrowUp`?40:-40)))},te=null;Fn(()=>{Q.status&&ox.refresh()}),Fn(()=>{ox.reload()}),Ln(()=>{if(!B(g))return;let e=B(l)?B(h).length:B(i),t=te!==B(r)||!e||B(g).scrollHeight-B(g).scrollTop-B(g).clientHeight<24;te=B(r);let n=B(g);t&&requestAnimationFrame(()=>{n.scrollTop=n.scrollHeight})});var O=si(),ne=I(O),re=e=>{var t=IT();let o,s;var y=F(t),S=R(y,2),C=F(S),w=F(C);let te;var O=F(w),ne=L(O,!0);k(w),q(R(w,2),16,()=>ox.tabs,e=>e,(e,t)=>{let n=M(()=>ox.past(t)?null:Q.up(t));var i=bT();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`)},[()=>ox.label(t),()=>ox.label(t)]),H(`click`,o,()=>{ox.active=t}),H(`click`,l,()=>{ox.close(t)}),W(e,i)}),k(C);var re=R(C,2),ie=L(re,!0),ae=R(re,2),oe=e=>{},se=e=>{var t=xT(),n=I(t),r=R(n,2);z(()=>Y(r,`aria-pressed`,ox.raw)),H(`click`,n,()=>{ox.clear()}),H(`click`,r,()=>ox.raw=!ox.raw),W(e,t)};K(ae,e=>{B(l)?e(oe):e(se,-1)});var ce=R(ae,2),le=L(ce,!0),ue=R(ce,2);k(S);var de=R(S,2),fe=e=>{var t=ET(),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=ST();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=CT();let i;var a=F(r),o=L(a,!0),s=R(a);Ua(F(s),{get of(){return aT},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=TT(),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=wT(),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(de,e=>{B(l)&&e(fe)});var pe=R(de,2);let me,he;var ge=F(pe),_e=e=>{var t=PT(),r=I(t),i=e=>{var t=DT(),n=L(t,!0);z(e=>G(n,e),[()=>ox.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=NT(),i=I(r),a=e=>{var n=OT(),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=kT(),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=AT(),r=F(n),i=L(r,!0),a=L(R(r),!0);k(n),z(e=>{G(i,B(t).text),G(a,e)},[()=>B(t).items.join(`
32
- `)]),W(e,n)},b=e=>{var n=MT(),r=I(n),i=L(r,!0),a=R(r,2),o=e=>{var n=jT(),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)},ve=e=>{var t=DT(),n=L(t,!0);z(()=>G(n,ox.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)},ye=e=>{var t=oi();z(()=>G(t,B(i))),W(e,t)},be=e=>{var t=si();q(I(t),17,()=>B(a),e=>e.key,(e,t)=>{var r=FT(),i=F(r),a=L(i,!0),o=R(i),s=L(o,!0),c=R(o,2),l=e=>{var n=AT(),r=F(n),i=L(r,!0),a=L(R(r),!0);k(n),z(e=>{G(i,B(t).text),G(a,e)},[()=>B(t).items.join(`
33
- `)]),W(e,n)},u=e=>{var n=MT(),r=I(n),i=L(r,!0),a=R(r,2),o=e=>{var n=jT(),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(ge,e=>{B(l)?e(_e):B(i)?ox.raw?e(ye,2):e(be,-1):e(ve,1)}),k(pe),Aa(pe,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}),te=J(w,1,`tab svelte-1feoaw6`,null,te,{on:B(l)}),Y(O,`aria-selected`,B(l)),G(ne,n),G(ie,r),G(le,B(T)?`Shrink`:`Expand`),me=J(pe,1,`body svelte-1feoaw6`,null,me,{raw:ox.raw&&!B(l),all:B(l),"by-change":B(l)&&B(p),"no-time":i}),he=Ji(pe,``,he,{"--name":a})},[()=>B(b)?`${String(B(b)*100)}%`:void 0,()=>ox.label(`*`),()=>B(l)||(ox.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,E),H(`dblclick`,y,ee),H(`keydown`,y,D),H(`click`,O,()=>{ox.active=`*`}),H(`click`,ce,ee),H(`click`,ue,()=>{ox.closeAll()}),W(e,t)};K(ne,e=>{B(r)&&e(re)}),W(e,O),j()}Xr([`pointerdown`,`dblclick`,`keydown`,`click`,`change`]);var RT=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 zT(e,t){let n=X(t,`size`,3,24),r=M(()=>n()<=20?8:6);var i=RT(),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 BT=U(`<button class="open svelte-1skvv7i" type="button" title="The log of every app on the board, in one stream">Logs</button>`);function VT(e,t){A(t,!0);let n=M(()=>ox.active===`*`);var r=BT();z(()=>Y(r,`aria-pressed`,B(n))),H(`click`,r,()=>{ox.active=B(n)?null:`*`}),W(e,r),j()}Xr([`click`]);var HT=U(`<div class="tip svelte-1k9t7z2" popover="manual" role="tooltip"> </div>`);function UT(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=HT();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 WT=new Set([`$$slots`,`$$events`,`$$legacy`]);function GT(e,t){let n=La(t,WT),r={name:`chevron-down`,size:24,node:[[`path`,{d:`m6 9 6 6 6-6`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var KT=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 JT(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 GT},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=KT();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 YT=new Set([`$$slots`,`$$events`,`$$legacy`]);function XT(e,t){let n=La(t,YT),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 ZT=new Set([`$$slots`,`$$events`,`$$legacy`]);function QT(e,t){let n=La(t,ZT),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 $T=U(`<button class="text svelte-r1euo8" type="button">Copy</button> <button class="text svelte-r1euo8" type="button">Clear</button>`,1),eE=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),tE=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),nE=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>`),rE=U(`<span class="group svelte-r1euo8"> </span> <div class="schemes svelte-r1euo8"></div>`,1),iE=U(`<button class="link svelte-r1euo8" type="button">Scheme default</button>`),aE=U(`<button type="button" role="radio" class="svelte-r1euo8"></button>`),oE=U(`<div class="picks-head svelte-r1euo8"><h2 class="svelte-r1euo8"> </h2> <!></div> <div class="picks svelte-r1euo8" role="radiogroup"></div>`,1),sE=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 cE(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 Sc.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(eb),o=[[`Dark`,a.filter(([e])=>!rb(e))],[`Light`,a.filter(([e])=>rb(e))]],s=M(()=>[[`Local`,ib(ub.now.scheme).locals,ub.local,e=>{ub.pickLocal(e)}],[`Deployed`,ib(ub.now.scheme).deployeds,ub.deployed,e=>{ub.pickDeployed(e)}]]),c=M(()=>!!(ub.now.local??ub.now.deployed));var l=sE(),u=I(l);Ua(F(u),{get of(){return Ic},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=$T(),n=I(t),r=R(n,2);H(`click`,n,i),H(`click`,r,()=>{Sc.clear(),$.show(`Debug log cleared`)}),W(e,t)};K(h,e=>{Sc.on&&e(g)}),k(f);var _=R(f,2),y=F(_),b=e=>{var t=eE(),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=tE();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=rE(),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=nE(),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`,ub.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,()=>{ub.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=oE(),l=I(s),u=F(l),d=L(u,!0),f=R(u,2),p=e=>{var t=iE();H(`click`,t,()=>{ub.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=aE();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`,Sc.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=Sc.forced}),Ca(m,()=>Sc.on,e=>Sc.on=e),W(e,l),j()}Xr([`click`]);var lE=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>`),uE=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 dE(e,t){A(t,!0);let n=M(()=>(Q.status?.checks??[]).some(e=>e.state!==`ok`));var r=uE();let i;var a=F(r),o=F(a);Ua(o,{get of(){return QT},size:16});var s=L(R(o,2),!0);k(a);var c=R(a,2),l=F(c);Ua(l,{get of(){return XT},size:16});var u=L(R(l,2));k(c);var d=R(c,2),f=F(d),p=e=>{var n=lE();Ua(F(n),{get of(){return wS},size:15}),k(n),H(`click`,n,()=>{t.open()}),W(e,n)};K(f,e=>{B(n)&&e(p)}),cE(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 fE=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>`),pE=U(`<dialog aria-labelledby="outside-title" class="svelte-1vz4hzd"><button class="x svelte-1vz4hzd" type="button" aria-label="Close"><!></button> <h2 id="outside-title" class="svelte-1vz4hzd">Add an outside system</h2> <p class="sub svelte-1vz4hzd">A service that never runs on this Mac, such as a payment provider or a SaaS API: your apps call it, or it calls them
34
- (a webhook).</p> <form class="svelte-1vz4hzd"><label class="svelte-1vz4hzd">Name <input required="" maxlength="80" placeholder="Stripe" class="svelte-1vz4hzd"/></label> <label class="svelte-1vz4hzd"><span>Address <span class="opt svelte-1vz4hzd">optional</span></span> <input type="url" placeholder="https://api.stripe.com" class="svelte-1vz4hzd"/></label> <label class="svelte-1vz4hzd"><span>What it is <span class="opt svelte-1vz4hzd">optional</span></span> <input maxlength="200" placeholder="Payment provider" class="svelte-1vz4hzd"/></label> <fieldset class="svelte-1vz4hzd"><legend class="svelte-1vz4hzd">Your apps</legend> <div class="callers svelte-1vz4hzd"><span class="head svelte-1vz4hzd" aria-hidden="true"><span class="svelte-1vz4hzd"></span><span class="svelte-1vz4hzd">Calls it</span><span class="svelte-1vz4hzd">Gets its calls</span></span> <!></div></fieldset> <p class="error svelte-1vz4hzd" role="alert"> </p> <div class="acts svelte-1vz4hzd"><button type="button" class="svelte-1vz4hzd">Cancel</button> <button class="go svelte-1vz4hzd" type="submit"> </button></div></form></dialog>`);function mE(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=pE(),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=fE(),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),E=L(ee,!0),D=R(ee,2),te=F(D),O=R(te,2),ne=L(O,!0);return k(D),k(_),k(h),Aa(h,e=>P(n,e),()=>B(n)),z(()=>{G(E,B(c)),O.disabled=B(l),G(ne,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`,te,()=>B(n)?.close()),W(e,h),j(m)}Xr([`click`,`change`]);var hE=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 gE(e,t){A(t,!0);let n=M(()=>Z.panelCard);var r=si(),i=I(r),a=e=>{var t=hE();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=>{$b(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 _E=new Set([`$$slots`,`$$events`,`$$legacy`]);function vE(e,t){let n=La(t,_E),r={name:`chevron-right`,size:24,node:[[`path`,{d:`m9 18 6-6-6-6`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var yE=U(`<p class="bad svelte-1kcafyk"> </p>`),bE=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>`),xE=U(`<span class="mono svelte-1kcafyk"> </span>`),SE=U(`<span class="none svelte-1kcafyk">Not set. Asked the first time you switch to Local.</span>`),CE=U(`<button class="link" type="button">Forget</button>`),wE=U(`<span class="at svelte-1kcafyk"><!> <button class="link" type="button"> </button> <!></span>`),TE=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 EE(e,t){A(t,!0),mx.load();let n=M(()=>mx.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 mx.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=TE(),d=R(F(u),2),f=e=>{var t=bE(),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=yE(),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=wE(),i=F(r),a=e=>{var t=xE(),r=L(t,!0);z(e=>G(r,e),[()=>hx(B(n))]),W(e,t)},o=e=>{W(e,SE())};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=CE();H(`click`,n,()=>void mx.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 DE=[`postgres`,`mysql`,`redis`],OE=/^[A-Za-z0-9_][\w.-]*$/,kE=new Set([`__proto__`,`prototype`,`constructor`]);function AE(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`&&(kE.has(e)||!OE.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 jE=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function ME(e,t){let n=e;for(let e of t){if(typeof e==`number`?!Array.isArray(n):!jE(n)||!Object.hasOwn(n,e))return;n=n[e]}return n}function NE(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]=NE(t[r],i,n),t}if(Array.isArray(e))throw Error(`${r} is not a place in a list`);let a=jE(e)?e:{};return!i.length&&n===void 0?Object.fromEntries(Object.entries(a).filter(([e])=>e!==r)):{...a,[r]:NE(a[r],i,n)}}var PE=U(`<label class="svelte-s22te4"><input type="checkbox" class="svelte-s22te4"/> <span class="svelte-s22te4"> </span></label>`),FE=U(`<div class="checks svelte-s22te4" role="group"></div>`),IE=U(`<span class="none svelte-s22te4"> </span>`);function LE(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=FE();q(i,21,()=>B(r),e=>e.value,(e,r)=>{var i=PE(),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=IE(),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 RE=new Set([`$$slots`,`$$events`,`$$legacy`]);function zE(e,t){let n=La(t,RE),r={name:`chevron-left`,size:24,node:[[`path`,{d:`m15 18-6-6 6-6`}]]};$a(e,za(()=>n,{get icon(){return r}}))}var BE=U(`<button type="button" title="Move earlier" class="svelte-1iop5lw"><!></button>`),VE=U(`<span class="tag svelte-1iop5lw"> </span>`),HE=U(`<button type="button" title="Remove" class="svelte-1iop5lw"><!></button>`),UE=U(`<li><!> <span class="word svelte-1iop5lw"> </span> <!> <!></li>`),WE=U(`<li class="new svelte-1iop5lw"><input class="svelte-1iop5lw"/></li>`),GE=U(`<ul class="chips svelte-1iop5lw"><!> <!></ul>`);function KE(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=GE(),u=F(l);q(u,18,()=>t.value,e=>e,(e,i,o)=>{var s=UE();let l;var u=F(s),d=e=>{var t=BE();Ua(F(t),{get of(){return zE},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=VE(),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=HE();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=WE(),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 JE(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 YE=new Set([`$$slots`,`$$events`,`$$legacy`]);function XE(e,t){let n=La(t,YE),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 ZE=`<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>`,QE=`</title><path d="`,$E=`"/></svg>`,eD={title:`.NET`,slug:`dotnet`,get svg(){return ZE+`.NET`+QE+this.path+$E},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`}},tD={title:`Docker`,slug:`docker`,get svg(){return ZE+`Docker`+QE+this.path+$E},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`},nD={title:`Flutter`,slug:`flutter`,get svg(){return ZE+`Flutter`+QE+this.path+$E},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`},rD={title:`Go`,slug:`go`,get svg(){return ZE+`Go`+QE+this.path+$E},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`},iD={title:`Node.js`,slug:`nodedotjs`,get svg(){return ZE+`Node.js`+QE+this.path+$E},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`},aD={title:`OpenJDK`,slug:`openjdk`,get svg(){return ZE+`OpenJDK`+QE+this.path+$E},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`}},oD={title:`PHP`,slug:`php`,get svg(){return ZE+`PHP`+QE+this.path+$E},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`}},sD={title:`Python`,slug:`python`,get svg(){return ZE+`Python`+QE+this.path+$E},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/`},cD={title:`React`,slug:`react`,get svg(){return ZE+`React`+QE+this.path+$E},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`},lD={title:`Ruby`,slug:`ruby`,get svg(){return ZE+`Ruby`+QE+this.path+$E},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`}},uD={title:`Rust`,slug:`rust`,get svg(){return ZE+`Rust`+QE+this.path+$E},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`}},dD=`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`,fD={dotnet:{logo:eD.path},flutter:{logo:nD.path},node:{logo:iD.path},lambda:{logo:dD},sam:{logo:dD},web:{icon:JE},reactnative:{logo:cD.path},go:{logo:rD.path},rust:{logo:uD.path},java:{logo:aD.path},python:{logo:sD.path},ruby:{logo:lD.path},php:{logo:oD.path},compose:{logo:tD.path}},pD=e=>(Object.hasOwn(fD,e)?fD[e]:void 0)??{icon:XE},mD=ai(`<title> </title>`),hD=ai(`<svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor"><!><path></path></svg>`);function gD(e,t){A(t,!0);let n=M(()=>pD(t.kind));var r=si(),i=I(r),a=e=>{var r=hD();let i;var a=F(r),o=e=>{var n=mD(),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 _D=U(`<!> <span class="label svelte-npi4py"> </span>`,1),vD=U(`<span class="label unset svelte-npi4py">Choose a kind…</span>`),yD=U(`<button type="button" role="option" class="svelte-npi4py"><!> <span class="label svelte-npi4py"> </span></button>`),bD=U(`<div class="list svelte-npi4py" role="listbox" aria-label="Kind"></div>`),xD=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 SD(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=xD();V(`pointerdown`,hn,e=>{B(r)&&!B(i)?.contains(e.target)&&l(!1)});var d=F(u),f=F(d),p=e=>{var t=_D(),n=I(t);gD(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,vD())};K(f,e=>{B(o)?e(p):e(m,-1)});var h=R(f,2);Ua(F(h),{get of(){return GT},size:10}),k(h),k(d);var g=R(d,2),_=e=>{var n=bD();q(n,21,()=>B(a),e=>e.value,(e,n)=>{var r=yD(),i=F(r);gD(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 CD=U(`<option class="svelte-1uxsjsg"> </option>`),wD=U(`<datalist class="svelte-1uxsjsg"></datalist>`),TD=U(`<input class="svelte-1uxsjsg"/> <!>`,1),ED=U(`<input class="svelte-1uxsjsg"/>`),DD=U(`<option class="svelte-1uxsjsg">Other…</option>`),OD=U(`<select class="svelte-1uxsjsg"><!><!><!></select>`);function kD(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=TD(),i=I(r);fa(i);var s=R(i,2),l=e=>{var r=wD();q(r,21,()=>t.options,e=>e.value,(e,t)=>{var n=CD(),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=ED();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=OD(),o=F(n),u=e=>{var t=CD(),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=CD(),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=DD();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 AD=new Set([`$$slots`,`$$events`,`$$legacy`]);function jD(e,t){let n=La(t,AD),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 MD=new Set([`$$slots`,`$$events`,`$$legacy`]);function ND(e,t){let n=La(t,MD),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 PD=new Set([`$$slots`,`$$events`,`$$legacy`]);function FD(e,t){let n=La(t,PD),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 ID=new Set([`$$slots`,`$$events`,`$$legacy`]);function LD(e,t){let n=La(t,ID),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 RD=new Set([`$$slots`,`$$events`,`$$legacy`]);function zD(e,t){let n=La(t,RD),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 BD=new Set([`$$slots`,`$$events`,`$$legacy`]);function VD(e,t){let n=La(t,BD),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 HD=new Set([`$$slots`,`$$events`,`$$legacy`]);function UD(e,t){let n=La(t,HD),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 WD=e=>[e.type??[]].flat();function GD(e,t){if(e.enum)return`choice`;if(e.anyOf)return(t===void 0||typeof t==`string`)&&e.anyOf.some(e=>WD(e).includes(`string`))?`text`:`json`;let n=WD(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 KD(e){if(typeof e!=`object`)return{};let t=WD(e);return t.includes(`array`)?[]:t.includes(`string`)||e.anyOf?``:t.includes(`object`)||!t.length?{}:``}var qD=e=>!!e?.required?.length,JD=/^[A-Za-z0-9_][\w-]*$/,YD=(e,t)=>typeof t==`number`?`${e}[${String(t)}]`:JD.test(t)?e?`${e}.${t}`:t:`${e}["${t}"]`,XD={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 ZD(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 QD={envs:`Environments`,protected:`Protected`,presets:`Team boards`,checks:`Checks on this Mac`};function $D(e,t=!1){if(t&&Object.hasOwn(QD,e))return QD[e]??e;if(Object.hasOwn(XD,e))return XD[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 eO=(e,t)=>e.some(e=>t===e||t.startsWith(`${e}.`)||t.startsWith(`${e}[`)),tO=[`name`,`kind`,`slug`],nO=`What it uses differently per environment`,rO=`Fields with no tab of their own`,iO={dotnet:[`project`,`launchSettings`,`baseProfile`],node:[`script`],web:[`script`],flutter:[`flutter`,`mobile`],lambda:[`lambda`,`sam`]},aO=[...new Set(Object.values(iO).flat())],oO=[{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:nO,keys:[`envs`],view:`envs`}],sO=[{name:`Deployed`,about:`Where it is and what it is`,keys:[`outside`,`deployedUrl`]},{name:`Calls`,about:`What it calls`,keys:[`consumes`]},{name:`Environments`,about:nO,keys:[`envs`],view:`envs`}],cO=[`name`],lO=[{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`]}],uO=[`deployedUrl`,`start`,`prereqs`,`secrets`];function dO(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 fO=(e,t)=>!t||e===t||e.startsWith(`${t}.`)||e.startsWith(`${t}[`);function pO(e){return e===void 0?`not set`:typeof e==`string`?e:Array.isArray(e)?e.length?e.map((e,t)=>ZD(e,`#${String(t+1)}`)).join(`, `):`none`:typeof e==`object`&&e?Object.keys(e).join(`, `)||`empty`:JSON.stringify(e)}function mO(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+mO(r[t],i[t]),0)}var hO=e=>typeof e==`object`&&e&&!Array.isArray(e)?e:{},gO=e=>typeof e==`string`||typeof e==`number`?String(e):``,_O={tunnel:jD,cloud:FD,laptop:lS,signIn:zD,shield:UD,box:VD,key:LD,other:ND},vO=[{id:`tunnel`,label:`Tunnel`,about:`A database or service reached through a tunnel`,icon:_O.tunnel,fields:[`tunnel`,`port`,`env`,`what`,`connectsAs`,`cmd`,`note`],start:{},say:e=>{let t=[gO(e.tunnel),gO(e.port)].filter(Boolean).join(`:`),n=gO(e.what),r=gO(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:_O.cloud,fields:[`sso`,`account`,`note`],start:{},say:e=>`${gO(e.sso)}${e.account?`, account ${gO(e.account)}`:``}`},{id:`hosts`,label:`Hosts entry`,about:`A name that has to lead to this Mac`,icon:_O.laptop,fields:[`hosts`,`note`],start:{},say:e=>e.hosts?`${gO(e.hosts)} leads to this Mac`:``},{id:`signIn`,label:`Stack sign-in`,about:`A sign-in this stack defines`,icon:_O.signIn,fields:[`signIn`,`note`],start:{},say:(e,t)=>{let n=gO(e.signIn),r=gO(hO(hO(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:_O.shield,fields:[`note`],own:[`devCerts`],start:{devCerts:!0},say:e=>gO(e.note)||`The local certificate must be trusted`},{id:`nuget`,label:`Private package feed`,about:`It downloads company packages while it builds`,icon:_O.box,fields:[`note`],own:[`nuget`],start:{nuget:!0},say:e=>gO(e.note)||`Packages come from a private feed`}],yO=(e,t)=>vO.find(n=>t?n.id===t:e[n.id]!==void 0&&e[n.id]!==!1),bO=[{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`}],xO={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`]},SO=e=>{let t=[e.env??[]].flat().map(gO).filter(Boolean).join(`, `),n=gO(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 ${gO(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 ${gO(e.key)||`a key`} in its secret`:`how it finds it is not known yet`},CO=/(?:^|\.)(prereqs|secrets|localChanges)\[\d+\]$|(?:^|\.)(consumes)(?:\.[\w-]+|\["[^"]+"\])$|(?:^|\.)(ready)$/,wO=/(?:^|\.)(prereqs|secrets|localChanges|consumes)$/;function TO(e,t,n,r){let i=CO.exec(e),a=i?.[1]??i?.[2]??i?.[3];if(!a)return;let o=hO(t),s=hO(n);if(a===`prereqs`){let e=yO(o,r);if(!e)return{label:`Something else`,say:pO(t),icon:_O.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=gO(o.type),t=gO(o.when);return{label:gO(o.env)||gO(o.file)||`Secret`,say:[e&&$D(e),t&&`needed ${t}`].filter(Boolean).join(`, `),icon:_O.key,fields:[`env`,`type`,`file`,`when`,`fetch`,`note`]}}if(a===`localChanges`)return{label:gO(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=hO(hO(s.apps)[c]),u=gO(o.how);return{label:gO(l.name)||c,say:SO(o),kind:gO(l.kind)||`other`,fields:(Object.hasOwn(xO,u)?xO[u]:void 0)??xO.unknown??[]}}var EO={path:`/health`,status:`200`,timeout:`30 s`,file:`src/config.ts`,find:`the text as it is`,replace:`the text for local runs`};function DO(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 OO(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=>WD(e).includes(`array`)&&WD(e.items??{}).includes(`string`);if(i(t)||Array.isArray(n)&&t.anyOf?.some(i))return`chips`}var kO={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.`},AO=U(`<button class="words svelte-gtai80" type="button"> </button>`),jO=U(`<button class="words remove svelte-gtai80" type="button">Remove</button>`),MO=U(`<span><!> <button type="button"> </button></span>`),NO=U(`<!> <!>`,1),PO=U(`<span class="none svelte-gtai80"> </span>`),FO=U(`<option class="svelte-gtai80"> </option>`),IO=U(`<select class="svelte-gtai80"><option class="svelte-gtai80"> </option><!></select>`),LO=U(`<input placeholder="New key" class="svelte-gtai80"/>`),RO=U(`<!> <!> <span class="add svelte-gtai80"><!> <button type="button" class="svelte-gtai80">Add</button></span>`,1),zO=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>`),BO=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>`),VO=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>`),HO=U(`<span class="add svelte-gtai80"><button type="button" class="svelte-gtai80"> </button></span>`),UO=U(`<!> <!> <!>`,1),WO=U(`<span class="error svelte-gtai80" role="alert"> </span>`),GO=U(`<span class="name svelte-gtai80"> </span>`),KO=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>`),JO=U(`<span class="about svelte-gtai80"> </span>`),YO=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>`),XO=U(`<span class="glyph svelte-gtai80"><!></span>`),ZO=U(`<span class="name svelte-gtai80"><span class="what svelte-gtai80"> </span><span class="say svelte-gtai80"> </span></span>`),QO=U(`<span class="unset svelte-gtai80">Not set</span>`),$O=U(`<span class="name svelte-gtai80"> </span> <!>`,1),ek=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>`),tk=U(`<input type="checkbox" role="switch" class="svelte-gtai80"/>`),nk=U(`<select class="svelte-gtai80"><option class="svelte-gtai80">Not set</option><!></select>`),rk=U(`<input inputmode="numeric" class="svelte-gtai80"/>`),ik=U(`<input class="svelte-gtai80"/>`),ak=U(`<textarea rows="3" class="svelte-gtai80"></textarea>`),ok=U(`<textarea class="mono svelte-gtai80"></textarea>`),sk=U(`<span class="note warn svelte-gtai80"> </span>`),ck=U(`<span class="note svelte-gtai80"> </span>`),lk=U(`<div><label> </label> <!> <!> <!> <!></div>`);function uk(e,t){let n=ci();A(t,!0);let r=e=>{var n=MO();let r;var i=F(n),o=e=>{var n=AO(),r=L(n,!0);z(()=>G(r,t.drop)),H(`click`,n,()=>void h(void 0)),W(e,n)},s=e=>{var t=jO();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=NO(),r=I(n),i=e=>{var n=NO(),r=I(n);q(r,16,()=>B(x),e=>e,(e,n)=>{{let r=M(()=>YD(t.path,n)),i=M(()=>$D(n,t.path===``)),a=M(()=>t.schema.properties?.[n]??{}),s=M(()=>!!t.schema.required?.includes(n)),c=M(()=>o()+1);uk(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(()=>YD(t.path,n)),i=M(()=>$D(n)),a=M(()=>t.schema.properties?.[n]??{}),s=M(()=>o()+1);uk(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=RO(),r=I(n);q(r,16,()=>Object.keys(B(g)),e=>e,(e,n)=>{{let r=M(()=>YD(t.path,n)),i=M(()=>o()+1);uk(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=PO(),n=L(t,!0);z(()=>G(n,kO[B(D)])),W(e,t)},s=M(()=>B(D)&&!Object.keys(B(g)).length);K(i,e=>{B(s)&&e(a)});var c=R(i,2),l=F(c),u=e=>{var n=IO(),r=F(n),i=L(r,!0);r.value=r.__value=``,q(R(r),16,()=>B(T),e=>e,(e,n)=>{var r=FO(),i=L(r,!0),a={};z(e=>{G(i,e),a!==(a=n)&&(r.value=(r.__value=a)??``)},[()=>TO(YD(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(D)&&fe[B(D)]||`Add…`)}),ea(n,()=>B(ie),e=>P(ie,e)),W(e,n)},d=M(()=>t.ctx.keys(t.path)),f=e=>{var n=LO();fa(n),z(()=>Y(n,`aria-label`,`New key in ${t.name??``}`)),ba(n,()=>B(ie),e=>P(ie,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(ie).trim()]),H(`click`,p,()=>void de()),W(e,n)},s=e=>{var n=UO(),r=I(n);Ci(r,()=>B(_).length,e=>{var n=si();q(I(n),17,()=>B(_),Ti,(e,n,r)=>{{let i=M(()=>YD(t.path,r)),a=M(()=>ZD(B(n),`${t.name} ${String(r+1)}`)),s=M(()=>t.schema.items??{}),c=M(()=>o()+1);uk(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=PO(),n=L(t,!0);z(()=>G(n,kO[B(D)])),W(e,t)};K(i,e=>{B(D)&&!B(_).length&&!B(ae)&&!B(se)&&e(a)});var s=R(i,2),c=e=>{var n=zO(),r=F(n);{let e=M(()=>YD(t.path,B(_).length)),n=M(()=>t.schema.items??{}),i=M(()=>o()+1);uk(r,{get path(){return B(e)},name:`New`,get schema(){return B(n)},get value(){return B(ae)},get ctx(){return B(le)},get as(){return B(oe)},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(YD(t.path,B(_).length),B(ae))??``,!0),B(p)||P(ae,null)}),H(`click`,s,()=>P(ae,null)),W(e,n)},l=e=>{var t=VO(),n=F(t);q(n,17,()=>vO,e=>e.id,(e,t)=>{let n=M(()=>B(t).id===`signIn`&&!B(re));var r=BO(),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,()=>ue(B(t))),W(e,r)});var r=L(R(n,2));k(t),H(`click`,r,()=>P(se,!1)),W(e,t)},u=e=>{var t=HO(),n=F(t),r=L(n,!0);k(t),z(()=>G(r,B(D)&&fe[B(D)]||`Add`)),H(`click`,n,()=>void de()),W(e,t)};K(s,e=>{B(ae)?e(c):B(se)?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=WO(),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(()=>GD(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(()=>OO(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(()=>TO(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??``),E=M(()=>B(d)===`address`?DO(t.value):{}),D=M(()=>wO.exec(t.path)?.[1]),te=e=>typeof e==`string`?e:``,O=M(()=>B(_).filter(e=>typeof e==`string`)),ne=M(()=>t.ctx.stack()),re=M(()=>Object.keys(t.ctx.stack()?.signIns??{}).length),ie=N(``),ae=N(null),oe=N(void 0),se=N(!1),ce=N(fn(Mr(()=>t.open??(!B(v)&&t.value!==void 0&&o()<2)))),le=M(()=>({...t.ctx,save:(e,n)=>{let r=AE(e.slice(YD(t.path,B(_).length).length).replace(/^\./,``));return`error`in r||P(ae,NE(B(ae),r,n),!0),Promise.resolve(null)},locked:()=>!1,fresh:!0})),ue=e=>{P(se,!1),P(oe,e?.id,!0),P(ae,{...e?.start},!0)},de=async()=>{if(B(c)===`list`){B(D)===`prereqs`?P(se,!0):B(D)||qD(t.schema.items)?ue():P(p,await t.ctx.save(YD(t.path,B(_).length),KD(t.schema.items))??``,!0);return}let e=B(ie).trim();e&&(P(p,await t.ctx.save(YD(t.path,e),KD(t.schema.additionalProperties))??``,!0),B(p)||P(ie,``))},fe={prereqs:`Add a need`,secrets:`Add a secret`,localChanges:`Add a change`,consumes:`Add an app it calls…`};var pe=si(),me=I(pe),he=e=>{var n=qO();let i;var a=F(n),c=e=>{var n=GO(),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=KO(),i=F(r),a=L(i,!0),s=R(i,2);{let e=M(()=>YD(t.path,n)),r=M(()=>$D(n)),i=M(()=>t.schema.properties?.[n]??{}),a=M(()=>o()+1);uk(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=WO(),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)},ge=e=>{var n=YO(),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=JO(),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)},_e=e=>{var n=ek();let a;var o=F(n),s=F(o);Ua(F(s),{get of(){return vE},size:10}),k(s);var c=R(s,2),l=e=>{gD(e,{get kind(){return B(v).kind},label:``})},u=e=>{var t=XO();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=ZO(),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=$O(),r=I(n),i=L(r,!0),a=R(r,2),o=e=>{W(e,QO())};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=JO(),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(ce,e),()=>B(ce)),W(e,n)},ve=e=>{var i=lk();let o;var l=F(i);let p;var _=L(l,!0),v=R(l,2),y=e=>{{let r=M(()=>te(t.value));SD(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(()=>te(t.value)),i=M(()=>!!B(u).other),o=M(()=>s()?EO[t.path.split(`.`).at(-1)??``]??t.name:B(ee));kD(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`:``);KE(e,{get value(){return B(O)},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(ne)?.envs??[]);{let r=M(()=>B(n).map(e=>({value:e,label:e.toUpperCase()}))),i=M(()=>t.value===void 0?B(n).slice(1):B(O));LE(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(O);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(ne)?.apps??{}).filter(([e,t])=>e!==B(n)&&!t.outside).map(([e,t])=>({value:e,label:t.name??e})));LE(e,{get options(){return B(r)},get picked(){return B(O)},get label(){return t.name},get disabled(){return B(f)},none:`The stack has no other apps.`,ontoggle:(e,t)=>{let n=t?[...B(O),e]:B(O).filter(t=>t!==e);h(n.length?n:void 0)}})}},T=e=>{{let n=M(()=>Object.entries(B(ne)?.queues??{}).map(([e,t])=>({value:e,label:t.name??e}))),r=M(()=>Object.keys(B(g)));LE(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)}})}},D=e=>{var r=tk();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)},re=e=>{var r=nk(),i=F(r);i.value=i.__value=``,q(R(i),16,()=>t.schema.enum??[],e=>e,(e,t)=>{var n=FO(),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)},ie=e=>{var r=rk();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()?EO[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)},ae=e=>{var r=ik();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(E).warn?!0:void 0),Y(r,`placeholder`,e),pa(r,typeof t.value==`string`?t.value:``)},[()=>s()?EO[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)},oe=M(()=>B(c)===`text`&&!(typeof t.value==`string`&&(t.value.length>60||t.value.includes(`
35
- `))&&!s())),se=e=>{var r=ak();_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)},ce=e=>{var r=ok();_t(r),z((e,t)=>{Y(r,`id`,n),Y(r,`rows`,e),r.disabled=B(f),Y(r,`placeholder`,B(ee)||`JSON`),pa(r,t)},[()=>Math.min(10,w(t.value).split(`
36
- `).length+1),()=>w(t.value)]),H(`change`,r,e=>{let t=e.currentTarget.value.trim();if(!t)h(void 0);else try{h(JSON.parse(t))}catch{h(t)}}),W(e,r)};K(v,e=>{B(d)===`kind`&&B(u)?e(y):B(d)===`pick`&&B(u)?e(b,1):B(d)===`ordered`||B(d)===`chips`?e(x,2):B(d)===`envs`?e(S,3):B(d)===`apps`?e(C,4):B(d)===`queues`?e(T,5):B(c)===`switch`?e(D,6):B(c)===`choice`?e(re,7):B(c)===`number`?e(ie,8):B(oe)?e(ae,9):B(c)===`text`?e(se,10):e(ce,-1)});var le=R(v,2),ue=e=>{r(e)};K(le,e=>{s()||e(ue)});var de=R(le,2),fe=e=>{var t=sk(),n=L(t,!0);z(()=>G(n,B(E).warn)),W(e,t)},pe=e=>{var t=ck(),n=L(t,!0);z(()=>G(n,B(E).note)),W(e,t)};K(de,e=>{B(E).warn?e(fe):B(E).note&&e(pe,1)});var me=R(de,2),he=e=>{var t=WO(),n=L(t,!0);z(()=>G(n,B(m))),W(e,t)};K(me,e=>{B(m)&&e(he)}),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(me,e=>{B(S)?e(he):B(l)&&!B(d)&&o()===0?e(ge,1):B(l)&&!B(d)?e(_e,2):e(ve,-1)}),W(e,pe),j()}Xr([`click`,`change`]);var dk=U(`<p class="none svelte-orrnu3"> </p>`),fk=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>`),pk=U(`<option> </option>`),mk=U(`<select class="svelte-orrnu3"><option>Its own value for another field…</option><!></select>`),hk=U(`<section class="env svelte-orrnu3"><h3 class="svelte-orrnu3"> </h3> <!> <!></section>`),gk=U(`<!> <!>`,1);function _k(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([...uO,...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?KD(s(e)):JSON.parse(JSON.stringify(n))},f=(e,n)=>YD(YD(YD(t.path,`envs`),e),n);var p=gk(),m=I(p),h=e=>{var t=dk(),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=hk(),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(()=>$D(r)),l=M(()=>s(r)),u=M(()=>a(n)[r]);uk(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=fk(),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)??``}`)},[()=>$D(r),()=>pO(t.app[r]),()=>pO(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=mk(),i=F(r);i.value=i.__value=``,q(R(i),16,()=>u(n),e=>e,(e,t)=>{var n=pk(),r=L(n,!0),i={};z(e=>{G(r,e),i!==(i=t)&&(n.value=(n.__value=i)??``)},[()=>$D(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 vk=U(`<span class="led svelte-6g11qq" title="Running"></span>`),yk=U(`<span class="tag svelte-6g11qq"> </span>`),bk=U(`<span class="slug svelte-6g11qq"> </span>`),xk=U(`<span class="sub svelte-6g11qq"><!> <!></span>`),Sk=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>`),Ck=U(`<span class="mark bad svelte-6g11qq"> </span>`),wk=U(`<span class="mark svelte-6g11qq"> </span>`),Tk=U(`<button type="button" role="tab"><span class="marker svelte-6g11qq" aria-hidden="true"></span> <!></button>`),Ek=U(`<div class="tabs svelte-6g11qq" role="tablist" aria-orientation="vertical"></div>`),Dk=U(`<span class="about svelte-6g11qq"> </span>`),Ok=U(`<div class="sec svelte-6g11qq"><span class="title svelte-6g11qq"> </span><!></div>`),kk=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>`),Ak=U(`<ul class="apps svelte-6g11qq"></ul>`),jk=U(`<details class="others svelte-6g11qq"><summary class="svelte-6g11qq"><span class="chev svelte-6g11qq"><!></span>Fields for other kinds of app</summary> <!></details>`),Mk=U(`<!> <!>`,1),Nk=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),Pk=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),Fk=U(`<div><!> <div class="body svelte-6g11qq" role="tabpanel"><!> <!> <!></div></div> <footer><!></footer>`,1),Ik=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 Lk(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=AE(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)?ME(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)?tO:B(i)?[]:cO),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)?sO:oO]:B(i)?[]:[e,...lO],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)?TO(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:rO,keys:a}]:t:[{name:`Settings`,keys:a}]}),E=M(()=>B(ee)[Math.min(B(u),B(ee).length-1)]),D=M(()=>mO(B(a),B(o))),te=(e,t)=>t?ME(e,y(t)):e,O=e=>mO(te(B(a),e),te(B(o),e))>0,ne=e=>e.filter(e=>O(YD(B(i),e))),re=M(()=>{let e=te(B(a),B(i))??{};return ne([...new Set([...Object.keys(e),...Object.keys(B(S)??{})])]).map(e=>$D(e,!B(i)))}),ie=e=>[...B(l).keys()].filter(t=>e.some(e=>fO(t,YD(B(i),e)))).length,ae=M(()=>{let e=B(C)&&typeof B(S)?.kind==`string`?B(S).kind:``;return(Object.hasOwn(bs,e)?bs[e]?.label:null)??e}),oe=M(()=>B(C)&&typeof B(S)?.slug==`string`?B(S).slug:``);async function se(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 ce=e=>e.map(e=>({value:e,label:e})),le=(e,t=!0)=>({options:ce(e),other:t}),ue=e=>B(_).files.filter(t=>e.test(t)),de={save:(e,t)=>(P(o,NE(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=>eO(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(ME(B(o),[`databases`])??{}):/(^|\.)(publishes|reads)$/.test(e)?Object.keys(ME(B(o),[`queues`])??{}):null,problem:e=>B(l).get(e),changed:O,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(bs).map(([e,t])=>({value:e,label:t.label,kind:e})),...Object.entries(n.kinds??{}).filter(([e])=>!Object.hasOwn(bs,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 le(B(_).awsProfiles);if(t===`signIn`)return le(Object.keys(n.signIns??{}),!1);if(t===`how`&&/consumes/.test(e))return{options:bO};if(t===`type`&&/secrets\[\d+\]\.type$/.test(e))return{options:DE.map(e=>({value:e,label:$D(e)})),other:!0};if(!B(C))return null;if(t===`project`&&!/lambda\.project$/.test(e)){let e=ue(/\.(cs|fs|vb)proj$/);return le([...new Set(e.map(e=>e.split(`/`).slice(0,-1).join(`/`)||`.`)),...e])}if(t===`launchSettings`)return le(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 le(t)}return t===`script`?le(B(_).scripts[`package.json`]??Object.values(B(_).scripts)[0]??[]):t===`defineFile`?le(ue(/\.(json|env)$/).filter(e=>!/(^|\/)package(-lock)?\.json$/.test(e))):t===`template`?le(ue(/\.ya?ml$/)):t===`file`?le(B(_).files):null},stack:()=>B(o)},fe=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?dO(t):new Map([[``,e.error]]),!0);let n=B(ee).findIndex(e=>ie(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},pe=()=>{P(o,JSON.parse(JSON.stringify(B(a)))),P(l,new Map,!0)},me=()=>{B(D)&&!B(f)?P(f,!0):(B(n)?.close(),m&&Z.reload())};var he={open:se},ge=Ik(),_e=F(ge),ve=F(_e),ye=e=>{W(e,vk())},be=M(()=>B(C)&&Q.up(B(C)));K(ve,e=>{B(be)&&e(ye)});var xe=R(ve,2),Se=F(xe),Ce=L(Se,!0),we=R(Se,2),Te=e=>{var t=xk(),n=F(t),r=e=>{var t=yk(),n=L(t,!0);z(()=>G(n,B(ae))),W(e,t)};K(n,e=>{B(ae)&&e(r)});var i=R(n,2),a=e=>{var t=bk(),n=L(t,!0);z(()=>G(n,B(oe))),W(e,t)};K(i,e=>{B(oe)&&e(a)}),k(t),W(e,t)};K(we,e=>{(B(ae)||B(oe))&&e(Te)}),k(xe);var Ee=R(xe,2),De=e=>{var t=Sk(),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 bx.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(_e);var ke=R(_e,2),je=e=>{var t=Fk(),n=I(t);let a;var o=F(n),s=e=>{var t=Ek();q(t,23,()=>B(ee),e=>e.name,(e,t,n)=>{let r=M(()=>ie(B(t).keys)),i=M(()=>ne(B(t).keys).length);var a=Tk();let o;var s=R(F(a),1,!0),c=R(s),l=e=>{var t=Ck(),n=L(t);z(()=>G(n,`${B(r)??``} to fix`)),W(e,t)},d=e=>{var t=wk(),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(E)===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=Ok(),n=F(t),r=L(n,!0),i=R(n),a=e=>{var t=Dk(),n=L(t,!0);z(()=>G(n,B(E).about)),W(e,t)};K(i,e=>{B(E).about&&e(a)}),k(t),z(()=>G(r,B(E).name)),W(e,t)};K(m,e=>{B(ee).length>1&&B(E)&&e(h)});var g=R(m,2),_=e=>{{let t=M(()=>B(i).slice(10));EE(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=>{_k(e,{get path(){return B(i)},get app(){return B(S)},get schema(){return B(x)},get envs(){return Z.envs},get ctx(){return de}})},T=e=>{var t=Ak();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=kk(),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(D)>0,Y(u,`title`,B(D)?`Save or discard your changes first`:void 0)},[()=>(Object.hasOwn(bs,i().kind??``)?bs[i().kind??``]?.label:null)??i().kind??``]),H(`click`,u,()=>void se({title:i().name??r(),path:`apps.${r()}`})),W(e,a)}),k(t),W(e,t)},te=e=>{let t=M(()=>typeof B(S)?.kind==`string`?B(S).kind:``),n=M(()=>iO[B(t)]??[]),r=M(()=>B(E).keys.filter(e=>aO.includes(e)&&!B(n).includes(e)&&B(S)?.[e]===void 0));var a=Mk(),o=I(a);q(o,16,()=>B(E).keys.filter(e=>!B(r).includes(e)),e=>e,(e,t)=>{{let n=M(()=>YD(B(i),t)),r=M(()=>$D(t,!B(i))),a=M(()=>B(x).properties?.[t]??{}),o=M(()=>B(S)?.[t]),s=M(()=>!!B(x).required?.includes(t)),c=M(()=>B(E).keys.length===1?0:1);uk(e,{get path(){return B(n)},get name(){return B(r)},get schema(){return B(a)},get value(){return B(o)},get ctx(){return de},get required(){return B(s)},get depth(){return B(c)}})}});var s=R(o,2),c=e=>{var t=jk(),n=F(t),a=F(n);Ua(F(a),{get of(){return vE},size:10}),k(a),Ae(),k(n),q(R(n,2),16,()=>B(r),e=>e,(e,t)=>{{let n=M(()=>YD(B(i),t)),r=M(()=>$D(t)),a=M(()=>B(x).properties?.[t]??{}),o=M(()=>B(S)?.[t]);uk(e,{get path(){return B(n)},get name(){return B(r)},get schema(){return B(a)},get value(){return B(o)},get ctx(){return de},depth:1})}}),k(t),W(e,t)};K(s,e=>{B(r).length&&e(c)}),W(e,a)};K(b,e=>{B(E)?.view===`envs`&&B(C)&&B(S)?e(w):B(E)?.view===`apps`?e(T,1):B(E)&&e(te,2)}),k(c),k(n);var O=R(n,2);let ae;var oe=F(O),ce=e=>{var t=Nk(),n=I(t),r=L(n),i=R(n,2),a=R(i,2);z(()=>G(r,`Close without saving ${B(D)??``} ${B(D)===1?`change`:`changes`}?`)),H(`click`,i,()=>P(f,!1)),H(`click`,a,()=>{pe(),me()}),W(e,t)},le=e=>{var t=Pk(),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(D)??``} ${B(D)===1?`change`:`changes`}${e??``}`),[()=>B(re).length?` · ${B(re).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(D)?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(D)||B(d),u.disabled=!B(D)||B(d),G(f,B(d)?`Saving…`:`Save`)}),H(`click`,c,pe),H(`click`,u,()=>void fe()),W(e,t)};K(oe,e=>{B(f)&&B(D)?e(ce):e(le,-1)}),k(O),z(()=>{a=J(n,1,`main svelte-6g11qq`,null,a,{single:B(ee).length<2}),Y(c,`aria-label`,B(E)?.name),ae=J(O,1,`svelte-6g11qq`,null,ae,{dirty:B(D)>0})}),W(e,t)};return K(ke,e=>{B(s)&&B(o)&&e(je)}),k(ge),Aa(ge,e=>P(n,e),()=>B(n)),z(()=>G(Ce,B(r))),V(`cancel`,ge,e=>{e.preventDefault(),me()}),H(`click`,ge,e=>{e.target===B(n)&&me()}),H(`click`,Oe,me),W(e,ge),j(he)}Xr([`click`]);var Rk=U(`<span> </span>`),zk=U(`<option> </option>`),Bk=U(`<select class="svelte-1psun92"><option>Kind?</option><!></select>`),Vk=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>`),Hk=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>`),Uk=U(`<p class="none svelte-1psun92"> </p>`),Wk=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 Gk(e,t){A(t,!0);let n=N(void 0),r=N(null),i=N(``),a=N(``),o=N(!1),s=new V_,c=M(()=>(B(r)?.repos??[]).filter(e=>!e.inStack)),l=M(()=>B(c).filter(e=>`${e.name} ${e.slug} ${e.folder}`.toLowerCase().includes(B(i).trim().toLowerCase()))),u=M(()=>[...new Set(B(l).map(e=>e.folder))]),d=(e,t)=>`${String(e)} ${t}${e===1?``:`s`}`;async function f(){s.clear(),P(i,``),P(a,``),P(r,await so()),B(n)?.showModal()}let p=(e,t,n={})=>{P(a,``),t?s.set(e.slug,{name:e.name,kind:e.kind??``,...s.get(e.slug),...n}):s.delete(e.slug)},m=e=>{let t=B(c).filter(t=>t.folder===e),n=t.every(e=>s.has(e.slug));for(let e of t)p(e,!n)},h=async()=>{let e=B(c).find(e=>s.has(e.slug)&&!s.get(e.slug)?.kind);if(e){P(a,`Choose what kind of app ${e.name} is.`);return}P(o,!0);let t=await oo(`apps`,{apps:[...s].map(([e,{name:t,kind:n}])=>({slug:e,name:t.trim()||e,kind:n}))});P(o,!1),`error`in t?P(a,t.error,!0):(B(n)?.close(),px.findings?px.findings.open({afterAdding:!0}):location.reload())};var g={open:f},_=Wk(),y=F(_);Ua(F(y),{get of(){return to},size:14}),k(y);var b=R(y,2),x=L(b),S=R(b,2),C=F(S),w=e=>{var t=oi();z(e=>G(t,`Tick every repo you might want to run in ${Z.stack??``}: this is the full list you will choose from. Which ones run
37
- together is decided later on the board. Koppler found ${B(c).length??``} on this Mac, under ${e??``}.`),[()=>B(r).roots.join(`, `)]),W(e,t)},T=e=>{W(e,oi(`No scan of your repos yet. Run koppler init.`))};K(C,e=>{B(r)?e(w):e(T,-1)}),k(S);var ee=R(S,2);fa(ee);var E=R(ee,2);q(E,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=Hk(),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=Vk();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=Rk(),r=L(n,!0);z(e=>{J(n,1,`kind kind-${B(t).kind??``}`,`svelte-1psun92`),G(r,e)},[()=>Ns({kind:B(t).kind}).label]),W(e,n)},m=e=>{var r=Bk(),i=F(r);i.value=i.__value=``,q(R(i),17,()=>Object.entries(bs),([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=zk(),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=Uk(),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(E);var D=R(E,2),te=L(D,!0),O=R(D,2),ne=F(O),re=L(ne,!0),ie=R(ne,2),ae=R(ie,2),oe=L(ae,!0);return k(O),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(te,B(a)),G(re,e),ae.disabled=!s.size||B(o),G(oe,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`,ie,()=>B(n)?.close()),H(`click`,ae,h),W(e,_),j(g)}Xr([`click`,`change`,`input`]);var Kk=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>`),Jk=U(`<label class="branch svelte-yroiop">Branch <!></label>`),Yk=U(`<label class="svelte-yroiop"> <select class="svelte-yroiop"><option>Set aside until Stop</option><option>Take along</option></select></label>`),Xk=U(`<label class="svelte-yroiop"><input type="radio"/> </label>`),Zk=U(`<span class="started svelte-yroiop">Started by <span class="seg svelte-yroiop" role="radiogroup" aria-label="Started by"></span></span>`),Qk=U(`<label class="check svelte-yroiop"><input type="checkbox" role="switch" class="svelte-yroiop"/> Tunnels</label>`),$k=U(`<!> <span class="controls svelte-yroiop"><!> <!> <!> <!></span>`,1);function eA(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),bx.again()},s=e=>{Z.set(t.id,e),bx.again()};var c=si(),l=I(c),u=e=>{var c=$k(),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=Kk(),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=Kk(),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,()=>{bx.onItsOwn[t.id]=!0}),H(`click`,d,()=>{bx.leftOut[t.id]=!0,bx.again()}),W(e,r)};K(l,e=>{(B(i).length||B(a).length)&&!bx.onItsOwn[t.id]&&e(u)});var d=R(l,2),f=F(d),p=e=>{var t=Jk();Ab(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=Yk(),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=Zk(),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=Xk(),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,ic[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=Qk(),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 tA=U(`<p class="stripes svelte-pzq2er" aria-hidden="true"> </p>`),nA=U(`<button class="mini svelte-pzq2er" type="button"> </button>`),rA=U(`<p> <!></p>`),iA=U(`<small> </small>`),aA=U(`<span> <!> <!> <!></span>`),oA=U(`<ul class="lines svelte-pzq2er"><li class="svelte-pzq2er"><span class="verb svelte-pzq2er"> </span> <span class="apps svelte-pzq2er"></span></li></ul>`),sA=U(`<button class="back svelte-pzq2er" type="button"> </button>`),cA=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),lA=U(`<dialog aria-labelledby="review-title"><!></dialog>`);function uA(e,t){A(t,!0);let n=N(void 0),r=M(()=>bx.review);Fn(()=>{B(r)&&!B(n)?.open?B(n)?.showModal():!B(r)&&B(n)?.open&&B(n).close()});var i=lA();let a;var o=F(i),s=e=>{var t=cA(),n=I(t),i=e=>{var t=tA(),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=rA();let r;var i=F(n),a=R(i),o=e=>{var n=nA(),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=oA(),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=aA();let a;var o=F(i),s=R(o),c=e=>{var n=nA(),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=iA(),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=>{eA(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=sA(),n=L(t,!0);z(()=>G(n,B(r).back.label)),H(`click`,t,()=>{let{back:e}=B(r);bx.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,()=>{bx.review=null}),H(`click`,h,()=>{bx.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||(bx.review=null)}),W(e,i),j()}Xr([`click`]);var dA=new class{#e=N(null);get switching(){return B(this.#e)}set switching(e){P(this.#e,e,!0)}useStack(e){bx.idle?this.#n(e.dir):bx.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:[]}))}];bx.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:()=>{bx.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){bx.idle?e():bx.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()}},fA=U(`<button class="x svelte-8d6d0q" type="button" aria-label="Close"><!></button>`),pA=U(`<!> <h2 id="setup-title" class="svelte-8d6d0q">Set up Koppler</h2> <p class="sub svelte-8d6d0q">Koppler runs the apps you pick on this Mac and connects them to each other. Everything else keeps calling the
38
- deployed environment.</p> <ol class="concept svelte-8d6d0q" aria-label="How it fits together"><li class="svelte-8d6d0q"><strong>Stack</strong><span class="svelte-8d6d0q">Every app you might run. Added once.</span></li> <li class="svelte-8d6d0q"><strong>Board</strong><span class="svelte-8d6d0q">The few you run now, wired together. Saved as you go; keep as many as you like.</span></li></ol> <div class="choices svelte-8d6d0q"><button type="button" class="svelte-8d6d0q"><strong class="svelte-8d6d0q">Use a shared stack</strong> <span class="svelte-8d6d0q"> </span></button> <button type="button" class="svelte-8d6d0q"><strong class="svelte-8d6d0q">Start a new stack</strong><span class="svelte-8d6d0q">Name it, then pick your repos.</span></button></div>`,1),mA=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>`),hA=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),gA=U(`<small class="svelte-8d6d0q">default</small>`),_A=U(`<span class="tag svelte-8d6d0q"> <!> <button type="button" class="svelte-8d6d0q"><!></button></span>`),vA=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),yA=U(`<dialog aria-labelledby="setup-title" class="svelte-8d6d0q"><!> <p class="error svelte-8d6d0q" role="alert"> </p></dialog>`);function bA(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=yA(),y=F(v),b=e=>{var t=pA(),r=I(t),i=e=>{var t=fA();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=hA(),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=mA(),r=F(n),i=F(r),o=L(i,!0),s=R(i,2),c=L(s),l=R(s,2),u=L(l,!0);k(r);var d=R(r,2);k(n),z(e=>{G(o,B(t).name),G(c,`${B(t).linked?`from GitHub`:B(t).shared?`shared`:`private`}, ${B(t).apps??``}
39
- ${B(t).apps===1?`app`:`apps`}, ${e??``}`),Y(l,`title`,B(t).path),G(u,B(t).path),d.disabled=B(a),Y(d,`aria-label`,`Use ${B(t).name??``}`)},[()=>B(t).envs.join(` / `)]),H(`click`,d,()=>void p({use:B(t).dir})),W(e,n)});var c=R(s,2),l=F(c);fa(l);var d=R(l,2);k(c),z(e=>{G(i,B(u).length?`Found on this Mac, or paste a link to one on GitHub. Koppler never changes the original.`:`Paste a link to its stack.json on GitHub. Koppler keeps a copy here and never changes the original.`),d.disabled=e},[()=>B(a)||!B(o).trim()]),H(`click`,n,()=>{f(`start`)}),V(`submit`,c,e=>{e.preventDefault(),B(o).trim()&&p({link:B(o).trim()})}),ba(l,()=>B(o),e=>P(o,e)),W(e,t)},S=e=>{var t=vA(),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=_A(),i=F(r,!0),a=R(i),o=e=>{W(e,gA())};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 xA=new Set([`$$slots`,`$$events`,`$$legacy`]);function SA(e,t){let n=La(t,xA),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 CA=U(`<p class="svelte-ujai35"> </p>`),wA=U(`<button class="act svelte-ujai35" type="button">Reload</button>`),TA=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),EA=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>`),DA=U(`<!> <!>`,1),OA=U(`<p class="none svelte-ujai35">No boards yet. A board is kept as soon as it has an app.</p>`),kA=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>`),AA=U(`<button type="submit" class="svelte-ujai35">Open</button>`),jA=U(`<button type="button" class="svelte-ujai35">Open a file…</button>`),MA=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>`),NA=U(`<details class="svelte-ujai35"><summary class="svelte-ujai35"> </summary> <!></details>`),PA=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 FA(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 ux(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&&cx(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);bx.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;bx.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}`)}}},E=async e=>{if(e.preventDefault(),!B(l).trim()||B(d))return;P(d,!0),P(u,{text:`Opening…`,warn:!1},!0);let t=await ux(B(l).trim());P(d,!1),t?P(u,{text:t,warn:!0},!0):_()};var D=PA(),te=I(D);let O;var ne=L(F(te),!0);k(te),Aa(te,e=>P(i,e),()=>B(i));var re=R(te,2),ie=F(re);q(ie,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=DA(),o=I(a),s=e=>{var t=CA(),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=EA(),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=wA();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=TA(),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 ae=R(ie,2),oe=e=>{W(e,OA())};K(ae,e=>{!Z.team.length&&!Z.own.length&&e(oe)});var se=R(ae,2),ce=F(se),le=F(ce),ue=R(le,2);k(ce);var de=R(ce,2),fe=e=>{var t=kA(),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(de,e=>{B(f)&&e(fe)});var pe=R(de,2),me=F(pe);fa(me);var he=R(me,2),ge=e=>{var t=AA();z(()=>t.disabled=B(d)),W(e,t)},_e=M(()=>B(l).trim()),ve=e=>{var t=jA();H(`click`,t,()=>B(o)?.click()),W(e,t)};K(he,e=>{B(_e)?e(ge):e(ve,-1)}),k(pe);var ye=R(pe,2);Aa(ye,e=>P(o,e),()=>B(o));var be=R(ye,2);let xe;var Se=L(be,!0);k(se);var Ce=R(se,2),we=e=>{var t=NA(),n=F(t),r=L(n);q(R(n,2),17,()=>Z.trash,e=>e.name+e.deleted,(e,t)=>{var n=MA(),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??``}`)},[()=>fx(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(Ce,e=>{Z.trash.length&&e(we)}),k(re),Aa(re,e=>P(a,e),()=>B(a)),z(()=>{O=J(te,1,`picker svelte-ujai35`,null,O,{chosen:!!Z.name}),Y(te,`aria-label`,`Board: ${B(h)??``}`),Y(te,`aria-expanded`,B(s)),Y(te,`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(te,`popovertarget`,n),G(ne,B(h)),Y(re,`id`,n),ue.disabled=!Z.nodes.length,xe=J(be,1,`hint svelte-ujai35`,null,xe,{warn:B(u).warn}),G(Se,B(u).text)}),H(`keydown`,re,x),V(`beforetoggle`,re,b),V(`toggle`,re,e=>{P(s,e.newState===`open`),B(s)&&y()}),H(`click`,le,()=>{_(),Z.newBoard()}),H(`click`,ue,()=>{_(),Z.duplicate()}),V(`submit`,pe,E),ba(me,()=>B(l),e=>P(l,e)),H(`change`,ye,()=>{_(),lx(B(o)?.files?.[0]),B(o)&&(B(o).value=``)}),W(e,D),j()}Xr([`keydown`,`click`,`change`]);var IA=U(`<li class="svelte-3tqys6"><strong> </strong> <small class="svelte-3tqys6"> </small> <!></li>`),LA=U(`<small class="svelte-3tqys6"> </small>`),RA=U(`<div class="gap svelte-3tqys6"><strong> </strong> <!> <button type="button" class="svelte-3tqys6"> </button></div>`),zA=U(`<button class="all svelte-3tqys6" type="button"> </button>`),BA=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>`),VA=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 HA(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 bx.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=VA(),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=IA(),i=F(r),a=L(i,!0),o=R(i,2),s=L(o,!0),c=R(o,2),l=e=>{zc(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=BA(),r=F(n),i=L(r),o=R(r,4);q(o,16,()=>g(t),e=>e,(e,n)=>{var r=RA(),i=F(r),o=L(i,!0),s=R(i,2);q(s,17,()=>_(t,n),e=>e.detail,(e,t)=>{var n=LA(),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=zA(),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 UA=U(`<button class="do svelte-159ihlv" type="button">Connect</button>`),WA=U(`<div class="note svelte-159ihlv" role="note"><span> </span> <button class="x svelte-159ihlv" type="button" aria-label="Dismiss this note"><!></button> <!></div>`),GA=U(`<div class="notes svelte-159ihlv" role="group" aria-label="About this board"></div>`);function KA(e,t){A(t,!0);let n=Z.nameOf,r=M(()=>No(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=GA();q(t,21,()=>B(o),e=>e.key,(e,t)=>{let n=M(()=>B(t).cable);var r=WA(),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=UA();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>`),JA=U(`<span class="led svelte-1vh52u" role="img"></span>`),YA=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),XA=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),ZA=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),QA=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),$A=U(`<div role="listitem"><span class="kind svelte-1vh52u"> </span> <!></div>`),ej=U(`<p class="empty svelte-1vh52u"> </p>`),tj=U(`<p class="unsaved svelte-1vh52u" role="alert">Not saved: the canvas server is not answering. Changes stay on this page.</p>`),nj=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>`),rj=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>`),ij=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 aj(e,t){A(t,!0);let n=N(fn((()=>{try{return localStorage.getItem(`koppler-sort`)===`added`?`added`:`name`}catch{return`name`}})())),r=N(``),i=N(``),a=M(()=>[...Z.cards.map(e=>e.id),...Z.infra.filter(e=>e.type===`outside`).map(e=>e.id.slice(8))]),o=e=>{let t=B(r).trim().toLowerCase(),n=e=>e.toLowerCase().replace(/^\./,``);return!t||e.name.toLowerCase().includes(t)||n(e.kindLabel).startsWith(n(t))},s=M(()=>{let e=e=>B(a).includes(e.id)?B(a).indexOf(e.id):Z.apps.indexOf(e),t=(t,r)=>B(n)===`name`?t.name.localeCompare(r.name):e(t)-e(r),r=e=>+!B(a).includes(e.id);return Z.apps.filter(o).sort((e,n)=>r(e)-r(n)||t(e,n))}),c=M(()=>B(s).find(e=>!B(a).includes(e.id))),l=M(()=>B(n)===`name`?`Sorted by name. Click to sort by when each was added.`:`Sorted by when each was added. Click to sort by name.`),u=()=>{P(n,B(n)===`name`?`added`:`name`,!0);try{localStorage.setItem(`koppler-sort`,B(n))}catch{}},d=M(()=>Z.roots.map(e=>e.replace(/^\/Users\/[^/]+/,`~`)).join(`, `)),f=M(()=>Z.apps.filter(e=>!e.cloned&&!e.outside)),p=M(()=>B(f).length>3?`${B(f).slice(0,2).map(e=>e.name).join(`, `)} and ${String(B(f).length-2)} more`:new Intl.ListFormat(`en`,{type:`conjunction`}).format(B(f).map(e=>e.name))),m=N(!1),h=async()=>{let e=B(f).map(y).join(`
40
- `);try{await navigator.clipboard.writeText(e),P(m,!0),setTimeout(()=>P(m,!1),2e3)}catch{P(i,`Copy is blocked here: ${e}`)}},g=N(!1),_=async()=>{P(g,!0);let e=await oo(`rescan`);P(g,!1),`error`in e?$.show(e.error,`warning`):location.reload()},v=e=>{bx.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=ij();let S;var C=F(x);FA(F(C),{}),k(C);var w=R(C,2),T=F(w),ee=R(F(T)),E=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(E)});var D=R(ee,2),te=L(D);k(T);var O=R(T,2);fa(O);var ne=R(O,2);q(ne,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=$A();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=YA(),i=I(r),a=L(F(i),!0);k(i);var o=R(i,2),s=e=>{var t=JA();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=XA(),r=I(n),i=L(F(r),!0);k(r);var a=R(r,4);Ua(F(a),{get of(){return SA},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=ZA(),r=I(n),i=L(F(r),!0);k(r);var a=R(r,4);Ua(F(a),{get of(){return SA},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=QA(),r=I(n),i=L(F(r),!0);k(r);var a=R(r,2);Ua(F(a),{get of(){return SA},size:12}),k(a);var o=R(a,2);Ua(F(o),{get of(){return vb},size:12,filled:!0}),k(o);var s=R(o,2);Ua(F(s),{get of(){return Yy},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,()=>{bx.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=ej(),n=L(t,!0);z(()=>G(n,Z.apps.length?`No app matches.`:`No apps in this stack yet.`)),W(e,t)}),k(ne);var re=R(ne,2),ie=F(re),ae=R(ie,2);k(re);var oe=R(re,2),se=L(oe,!0);KA(R(oe,2),{}),k(w);var ce=R(w,2),le=F(ce),ue=e=>{W(e,tj())};K(le,e=>{Z.unsaved&&e(ue)});var de=R(le,2),fe=e=>{var t=nj();zc(R(F(t)),{get command(){return Q.status.restart},label:`Copy restart command`}),k(t),W(e,t)};K(de,e=>{Q.status?.restart&&e(fe)});var pe=R(de,2),me=e=>{var t=rj(),n=F(t),r=L(n),i=R(n,2),a=F(i),o=L(a,!0),s=R(a,2),c=L(s,!0);k(i),k(t),z(()=>{G(r,`${B(p)??``}
41
- ${B(f).length===1?`is`:`are`} not cloned on this Mac, so ${B(f).length===1?`it`:`they`} cannot
42
- run here. Koppler looks for clones in ${B(d)??``}.`),G(o,B(m)?`Copied`:B(f).length===1?`Copy clone command`:`Copy clone commands`),s.disabled=B(g),G(c,B(g)?`Looking…`:`Look again`)}),H(`click`,a,()=>void h()),H(`click`,s,()=>void _()),W(e,t)};K(pe,e=>{B(f).length&&e(me)});var he=R(pe,2);HA(he,{}),cE(R(he,2),{}),k(ce),k(x),z(()=>{S=J(x,1,`svelte-1vh52u`,null,S,{protected:Z.protected}),Y(D,`title`,B(l)),Y(D,`aria-label`,B(l)),G(te,`Sort: ${B(n)===`name`?`A–Z`:`Added`}`),G(se,B(i))}),H(`click`,D,u),ba(O,()=>B(r),e=>P(r,e)),H(`click`,ie,()=>void px.repos?.open()),H(`click`,ae,()=>px.outside?.open()),W(e,x),j()}Xr([`click`]);var oj=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>`),sj=U(`<span class="meta svelte-njiuyh"> </span>`),cj=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>`),lj=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 uj(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 dA.updateStack()}]:[],...B(s)?.changes.length?[{icon:`●`,label:`Changes not shared yet`,count:B(s).changes.length,run:()=>{dA.shareChanges()}}]:[],...Z.apps.length?[{icon:`⌕`,label:`Look through the repos again`,count:0,run:()=>void px.findings?.open()}]:[],{icon:`+`,label:`Add a stack: new, or from GitHub`,count:0,run:()=>{dA.addStack(()=>px.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=lj(),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=oj(),o=R(F(a),2),s=L(o,!0),c=L(R(o,2));k(a),z(()=>{Y(a,`aria-checked`,B(n)),a.disabled=B(n),Y(a,`title`,B(t).path),G(s,B(t).name),G(c,`${B(t).linked?`from GitHub`:B(t).shared?`shared`:`private`}, ${B(r)??``}
43
- ${B(r)===1?`app`:`apps`}`)}),H(`click`,a,()=>{B(i)?.hidePopover(),dA.useStack(B(t))}),W(e,a)});var _=R(g,2);q(_,21,()=>B(c),e=>e.label,(e,t)=>{var n=cj(),r=F(n),a=L(r,!0),o=R(r,2),s=L(o,!0),c=R(o,2),l=e=>{var n=sj(),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 dj=U(`<button class="action svelte-ieajqw" type="button"> </button>`),fj=U(`<div><span class="text svelte-ieajqw"> </span> <!> <!> <button class="close svelte-ieajqw" type="button" aria-label="Dismiss"><!></button></div>`);function pj(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=fj();let a;var o=F(i),s=L(o,!0),c=R(o,2),l=e=>{var n=dj(),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=dj(),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 mj=U(`<label><input type="radio" name="env" class="svelte-1jciobo"/> </label>`),hj=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),gj=U(`<!><!>`,1),_j=U(`<!><!><!><!>`,1),vj=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),yj=U(`<div class="dropping svelte-1jciobo">Drop to open this board</div>`),bj=U(`<div class="banner svelte-1jciobo" role="alert"> </div> <div class="frame svelte-1jciobo" aria-hidden="true"></div>`,1),xj=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>`),Sj=U(`<!> <div class="stage svelte-1jciobo"><div class="work svelte-1jciobo"><div class="board svelte-1jciobo"><!> <!></div> <!></div> <!></div>`,1),Cj=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>`),wj=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 Tj(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),lx(e.dataTransfer?.files[0]))},l=N(void 0),u=N(``);Fn(()=>{My.follow()});let d=M(()=>dA.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?px.setup?.open():(!Z.apps.length||location.hash===`#pick`)&&(history.replaceState(null,``,location.pathname+location.search),px.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}: ${rc(t.edit,e)}.`);oo(`board-edit-done`,{id:t.id})}})}),Fn(()=>{Z.stack&&MS.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&&!bx.review&&(e.preventDefault(),bx.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 E=()=>{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 D=async e=>{E(),e&&(await kr(),document.querySelector(`aside button[aria-label^="Board:"]`)?.focus())};var te=wj();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 O=I(te);let ne;var re=F(O);Ua(F(re),{get of(){return Pc},size:16}),k(re);var ie=R(re,2);zT(F(ie),{size:22}),Ae(),k(ie);var ae=R(ie,2),oe=e=>{var t=hj(),r=R(I(t),2);uj(r,{});var i=R(r,2);Lc(F(i),{size:16}),Ae(),k(i);var a=R(i,2);q(a,20,()=>Z.envs,e=>e,(e,t)=>{var r=mj();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 px.settings?.open({title:`${Z.stack} settings`,path:``})),W(e,t)};K(ae,e=>{Z.stack&&e(oe)});var se=R(ae,4),ce=e=>{var t=gj(),n=I(t);rw(n,{}),Fy(R(n),{}),W(e,t)};K(se,e=>{Z.stack&&e(ce)});var le=R(se,2),ue=F(le),de=e=>{var t=_j(),n=I(t);VT(n,{});var r=R(n);tT(r,{});var i=R(r);rT(i,{}),TC(R(i),{}),W(e,t)};K(ue,e=>{Z.stack&&e(de)}),aw(R(ue,2),{}),k(le);var fe=R(le,2),pe=e=>{var t=vj(),n=I(t),r=F(n),i=R(r,2);{let e=M(()=>[{label:`Stop apps, keep changes`,about:bx.started.length?`Stops every app, API and tunnel; branches and code changes stay until you revert`:`Nothing is running`,off:!bx.started.length,run:()=>{bx.stopApps()}},{label:`Revert temporary changes`,about:bx.left.length?`Undoes what the last run left: branches back, temporary edits gone`:`Nothing to revert`,off:!bx.left.length,run:()=>{bx.stop()}},{label:`Shut down Koppler`,about:`Stops the agent listener and this canvas server; apps and tunnels keep running`,danger:!0,run:()=>{bx.shutDown()}}]);JT(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=>{JT(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:()=>{bx.start({manual:!0})}}]})};K(s,e=>{Z.nodes.length&&e(c)}),k(a),z(()=>{n.inert=!!B(d),r.disabled=!bx.started.length,Y(r,`title`,bx.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,()=>{bx.stop()}),H(`click`,o,()=>{bx.start()}),W(e,t)};K(fe,e=>{Z.stack&&e(pe)}),k(O),Aa(O,e=>P(T,e),()=>B(T));var me=R(O,2),he=e=>{W(e,yj())};K(me,e=>{B(r)&&e(he)});var ge=R(me,2);uA(ge,{});var _e=R(ge,2);Aa(bA(_e,{}),e=>px.setup=e,()=>px?.setup);var ve=R(_e,2);Aa(Gk(ve,{}),e=>px.repos=e,()=>px?.repos);var ye=R(ve,2);Aa(mE(ye,{}),e=>px.outside=e,()=>px?.outside);var be=R(ye,2);Aa(Lk(be,{}),e=>px.settings=e,()=>px?.settings);var xe=R(be,2);Aa(UC(xe,{}),e=>px.findings=e,()=>px?.findings);var Se=R(xe,2);Aa(IC(Se,{}),e=>px.checklist=e,()=>px?.checklist);var Ce=R(Se,2);Aa(Mc(Ce,{}),e=>px.command=e,()=>px?.command);var we=R(Ce,2),Te=F(we),Ee=R(F(Te),2);_t(Ee);var De=R(Ee,2),Oe=F(De);Ae(2),k(De),k(Te),k(we),Aa(we,e=>P(l,e),()=>B(l));var ke=R(we,2),je=e=>{var t=bj(),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=xj(),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=Sj(),n=I(t),r=e=>{},i=e=>{aj(e,{})},a=e=>{dE(e,{open:D})};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);iy(l,{children:(e,t)=>{rC(e,{})},$$slots:{default:!0}}),pj(R(l,2),{}),k(c);var u=R(c,2),d=e=>{gE(e,{})};K(u,e=>{Z.present||e(d)}),k(s);var f=R(s,2),p=e=>{LT(e,{})};K(f,e=>{Z.present||e(p)}),k(o),W(e,t)},a=e=>{var t=Cj();zc(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=>{Dw(e,{})};K(Ie,e=>{Z.present||e(Le)}),k(Me),UT(R(Me,2),{}),z(()=>{Y(O,`hidden`,Z.present),ne=J(O,1,`svelte-1jciobo`,null,ne,{protected:Z.protected}),Y(re,`aria-expanded`,B(C)),Y(re,`aria-label`,B(C)?`Hide the side pane`:`Show the side pane`),Y(re,`title`,B(C)?`Hide the side pane`:`Show the side pane`),Fe.inert=!!B(d)}),H(`click`,re,E),V(`close`,we,()=>P(u,``)),V(`submit`,Te,()=>{bx.start({note:B(u).trim()})}),ba(Ee,()=>B(u),e=>P(u,e)),H(`click`,Oe,()=>B(l)?.close()),W(e,te),j()}Xr([`click`]),Sc.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 Ej=document.getElementById(`app`);Ej&&pi(Tj,{target:Ej});