localdeck 1.6.2 → 1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/README.md +32 -12
- package/dashboard/assets/index-2gSOxBaK.js +21 -0
- package/dashboard/index.html +1 -1
- package/dist/index-jtd14k8h.js +70 -0
- package/dist/index-scnd2pq4.js +135 -0
- package/dist/index.js +16 -1412
- package/dist/mcp-w45qck6z.js +6 -0
- package/dist/quarry-ysrktgjh.js +5 -0
- package/dist/update-2nttbg13.js +1 -0
- package/docs/commands.md +4 -0
- package/docs/configuration.md +1 -1
- package/docs/quarry.md +49 -0
- package/package.json +3 -2
- package/quarry-extension.json +52 -0
- package/dashboard/assets/index-CcN_iA3K.js +0 -21
- package/dist/index-xsyz4cc9.js +0 -9550
- package/dist/mcp-210n1fxv.js +0 -34244
- package/dist/update-hvkw7mkw.js +0 -171
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
var Td=Object.defineProperty;var Ho=t=>{throw TypeError(t)};var Nd=(t,e,r)=>e in t?Td(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var et=(t,e,r)=>Nd(t,typeof e!="symbol"?e+"":e,r),Si=(t,e,r)=>e.has(t)||Ho("Cannot "+r);var D=(t,e,r)=>(Si(t,e,"read from private field"),r?r.call(t):e.get(t)),Pe=(t,e,r)=>e.has(t)?Ho("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),Ie=(t,e,r,s)=>(Si(t,e,"write to private field"),s?s.call(t,r):e.set(t,r),r),Xe=(t,e,r)=>(Si(t,e,"access private method"),r);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))s(a);new MutationObserver(a=>{for(const i of a)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&s(o)}).observe(document,{childList:!0,subtree:!0});function r(a){const i={};return a.integrity&&(i.integrity=a.integrity),a.referrerPolicy&&(i.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?i.credentials="include":a.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function s(a){if(a.ep)return;a.ep=!0;const i=r(a);fetch(a.href,i)}})();const zl=!1;var ui=Array.isArray,Id=Array.prototype.indexOf,Ga=Array.prototype.includes,vi=Array.from,go=Object.defineProperty,jn=Object.getOwnPropertyDescriptor,Ol=Object.getOwnPropertyDescriptors,Md=Object.prototype,Dd=Array.prototype,po=Object.getPrototypeOf,Bo=Object.isExtensible;function $s(t){return typeof t=="function"}const Mt=()=>{};function zd(t){return t()}function Fi(t){for(var e=0;e<t.length;e++)t[e]()}function Ul(){var t,e,r=new Promise((s,a)=>{t=s,e=a});return{promise:r,resolve:t,reject:e}}function fi(t,e){if(Array.isArray(t))return t;if(!(Symbol.iterator in t))return Array.from(t);const r=[];for(const s of t)if(r.push(s),r.length===e)break;return r}const Dt=2,Qn=4,Ra=8,mo=1<<24,Lr=16,br=32,un=64,Vi=128,_o=256,yr=512,At=1024,Et=2048,Nr=4096,Jt=8192,nr=16384,Is=32768,Ya=1<<25,vn=65536,Ja=1<<17,Hl=1<<18,Ms=1<<19,Bl=1<<20,Kr=1<<25,Zn=65536,Xa=1<<21,_s=1<<22,Pn=1<<23,Yr=Symbol("$state"),Fl=Symbol("component"),Vl=Symbol("legacy props"),Od=Symbol(""),Ha=Symbol("attributes"),Wi=Symbol("class"),$i=Symbol("style"),Ys=Symbol("text"),Ba=Symbol("form reset"),qa=new class extends Error{constructor(){super(...arguments);et(this,"name","StaleReactionError");et(this,"message","The reaction that called `getAbortSignal()` was re-run or destroyed")}};var Il;const yo=!!((Il=globalThis.document)!=null&&Il.contentType)&&globalThis.document.contentType.includes("xml"),Ud=1,Hd=2,Wl=4,Bd=8,Fd=16,Vd=1,Wd=2,$d=4,Kd=8,Gd=16,Yd=1,Jd=2,Pt=Symbol("uninitialized"),$l="http://www.w3.org/1999/xhtml",Xd="http://www.w3.org/2000/svg",Qd="@attach";function Zd(){console.warn("https://svelte.dev/e/derived_inert")}function eu(){console.warn("https://svelte.dev/e/select_multiple_invalid_value")}function tu(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}let ru=!1;function Kl(t){return t===this.v}function Gl(t,e){return t!=t?e==e:t!==e||t!==null&&typeof t=="object"||typeof t=="function"}function Yl(t){return!Gl(t,this.v)}function bo(t){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}function nu(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function su(t,e,r){throw new Error("https://svelte.dev/e/each_key_duplicate")}function au(t){throw new Error("https://svelte.dev/e/effect_in_teardown")}function iu(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function ou(t){throw new Error("https://svelte.dev/e/effect_orphan")}function lu(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function cu(t){throw new Error("https://svelte.dev/e/props_invalid_value")}function du(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function uu(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function vu(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function fu(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}let Ds=!1,hu=!1;function gu(){Ds=!0}function pu(t){let e=t.p;for(;e!==null&&e.c===null;)e=e.p;return(e==null?void 0:e.c)??null}function Jl(t,e){return t===null&&bo(),t.c??(t.c=new Map(pu(t)||void 0))}let dt=null;function Es(t){dt=t}function Xl(t){return Jl(dt).get(t)}function mu(t,e){return Jl(dt).set(t,e),e}function ze(t,e=!1,r){dt={p:dt,i:!1,c:null,e:null,s:t,x:null,r:We,l:Ds&&!e?{s:null,u:null,$:[]}:null}}function Oe(t){var e=dt,r=e.e;if(r!==null){e.e=null;for(var s of r)jc(s)}return e.i=!0,dt=e.p,wo(t)}function wo(t={}){return go(t,Fl,{value:!0}),t}function zs(){return!Ds||dt!==null&&dt.l===null}let Bn=[];function Ql(){var t=Bn;Bn=[],Fi(t)}function Gr(t){if(Bn.length===0&&!sa){var e=Bn;queueMicrotask(()=>{e===Bn&&Ql()})}Bn.push(t)}function _u(){for(;Bn.length>0;)Ql()}const yu=-7169;function mt(t,e){t.f=t.f&yu|e}function ko(t){(t.f&yr)!==0||t.deps===null?mt(t,At):mt(t,Nr)}function Zl(t){if(t!==null)for(const e of t)(e.f&Dt)===0||(e.f&Zn)===0||(e.f^=Zn,Zl(e.deps))}function ec(t,e,r){(t.f&Et)!==0?e.add(t):(t.f&Nr)!==0&&r.add(t),Zl(t.deps),mt(t,At)}function tc(t,e,r){if(t==null)return e(void 0),Mt;const s=xr(()=>t.subscribe(e,r));return s.unsubscribe?()=>s.unsubscribe():s}function bu(t){let e;return tc(t,r=>e=r)(),e}let za=!1,Ki=Symbol("unmounted");function rc(t,e,r){const s=r[e]??(r[e]={store:null,source:hc(void 0),unsubscribe:Mt});if(s.store!==t&&!(Ki in r))if(s.unsubscribe(),s.store=t??null,t==null)s.source.v=void 0,s.unsubscribe=Mt;else{var a=!0;s.unsubscribe=tc(t,i=>{a?s.source.v=i:_(s.source,i)}),a=!1}return t&&Ki in r?bu(t):n(s.source)}function nc(){const t={};function e(){Us(()=>{for(var r in t)t[r].unsubscribe();go(t,Ki,{enumerable:!1,value:!0})})}return[t,e]}function wu(t){var e=za;try{return za=!1,[t(),za]}finally{za=e}}function ku(t,e){if(e){const r=document.body;t.autofocus=!0,Gr(()=>{document.activeElement===r&&t.focus()})}}let Fo=!1;function xu(){Fo||(Fo=!0,document.addEventListener("reset",t=>{Promise.resolve().then(()=>{var e;if(!t.defaultPrevented)for(const r of t.target.elements)(e=r[Ba])==null||e.call(r)})},{capture:!0}))}function Os(t){var e=Ye,r=We;wr(null),Qr(null);try{return t()}finally{wr(e),Qr(r)}}function sc(t,e,r,s=r){t.addEventListener(e,()=>Os(r));const a=t[Ba];a?t[Ba]=()=>{a(),s(!0)}:t[Ba]=()=>s(!0),xu()}function xo(t,e,r,s){const a=zs()?Rs:So;var i=t.filter(g=>!g.settled),o=e.map(a);if(r.length===0&&i.length===0){s(o);return}var l=We,c=Su(),d=i.length===1?i[0].promise:i.length>1?Promise.all(i.map(g=>g.promise)):null;function h(g){if((l.f&nr)===0){c();try{s([...o,...g])}catch(m){$r(m,l)}Qa()}}var p=ac();if(r.length===0){d.then(()=>h([])).finally(p);return}function f(){Promise.all(r.map(g=>ju(g))).then(h).catch(g=>$r(g,l)).finally(p)}d?d.then(()=>{c(),f(),Qa()}):f()}function Su(){var t=We,e=Ye,r=dt,s=qe;return function(i=!0){Qr(t),wr(e),Es(r),i&&(t.f&nr)===0&&(s==null||s.activate(),s==null||s.apply())}}function Qa(t=!0){Qr(null),wr(null),Es(null),t&&(qe==null||qe.deactivate())}function ac(){var t=We,e=t.b,r=qe,s=!!(e!=null&&e.is_rendered());return e==null||e.update_pending_count(1,r),r.increment(s,t),()=>{e==null||e.update_pending_count(-1,r),r.decrement(s,t)}}function Rs(t){var e=Dt|Et;return We!==null&&(We.f|=Ms),{ctx:dt,deps:null,effects:null,equals:Kl,f:e,fn:t,reactions:null,rv:0,v:Pt,wv:0,parent:We,ac:null}}const Js=Symbol("obsolete");function ju(t,e,r){let s=We;s===null&&nu();var a=void 0,i=ts(Pt),o=!Ye,l=new Set;return Ou(()=>{var g,m;var c=We,d=Ul();a=d.promise;try{Promise.resolve(t()).then(d.resolve,b=>{b!==qa&&d.reject(b)}).finally(Qa)}catch(b){d.reject(b),Qa()}var h=qe;if(o){if((c.f&Is)!==0)var p=ac();if((g=s.b)!=null&&g.is_rendered())(m=h.async_deriveds.get(c))==null||m.reject(Js);else for(const b of l.values())b.reject(Js);l.add(d),h.async_deriveds.set(c,d)}const f=(b,k=void 0)=>{p==null||p(),l.delete(d),k!==Js&&(h.activate(),k?(i.f|=Pn,qs(i,k)):((i.f&Pn)!==0&&(i.f^=Pn),qs(i,b)),h.deactivate())};d.promise.then(f,b=>f(null,b||"unknown"))}),Us(()=>{for(const c of l)c.reject(Js)}),new Promise(c=>{function d(h){function p(){h===a?c(i):d(a)}h.then(p,p)}d(a)})}function j(t){const e=Rs(t);return Lc(e),e}function So(t){const e=Rs(t);return e.equals=Yl,e}function Pu(t){var e=t.effects;if(e!==null){t.effects=null;for(var r=0;r<e.length;r+=1)Bt(e[r])}}function jo(t){var e,r=We,s=t.parent;if(!fn&&s!==null&&t.v!==Pt&&(s.f&(nr|Jt))!==0)return Zd(),t.v;Qr(s);try{t.f&=~Zn,Pu(t),e=Ic(t)}finally{Qr(r)}return e}function ic(t){var e=jo(t);if(!t.equals(e)&&(t.wv=Tc(),(!(qe!=null&&qe.is_fork)||t.deps===null)&&(qe!==null?(qe.capture(t,e,!0),na==null||na.capture(t,e,!0)):t.v=e,t.deps===null))){mt(t,At);return}fn||(Ut!==null?(Eo()||qe!=null&&qe.is_fork)&&Ut.set(t,e):ko(t))}function Cu(t){var e;if(t.effects!==null)for(const r of t.effects)(r.teardown||r.ac)&&((e=r.teardown)==null||e.call(r),r.ac!==null&&Os(()=>{r.ac.abort(qa),r.ac=null}),r.fn!==null&&(r.teardown=Mt),la(r,0),Ro(r))}function oc(t){if(t.effects!==null)for(const e of t.effects)e.teardown&&e.fn!==null&&Ls(e)}let ji=null,hs=null,qe=null,na=null,Ut=null,Gi=null,sa=!1,Pi=!1,ms=null,Fa=null;var Vo=0;let Eu=1;var ws,xn,Wn,ks,xs,Ss,sn,js,er,ua,an,Rr,Br,Ps,$n,at,Yi,Xs,Ji,lc,cc,gs,Ru,Qs;const li=class li{constructor(){Pe(this,at);et(this,"id",Eu++);Pe(this,ws,!1);et(this,"linked",!0);Pe(this,xn,null);Pe(this,Wn,null);et(this,"async_deriveds",new Map);et(this,"current",new Map);et(this,"previous",new Map);Pe(this,ks,new Set);Pe(this,xs,new Set);Pe(this,Ss,0);Pe(this,sn,new Map);Pe(this,js,null);Pe(this,er,[]);Pe(this,ua,[]);Pe(this,an,new Set);Pe(this,Rr,new Set);Pe(this,Br,new Map);Pe(this,Ps,new Set);et(this,"is_fork",!1);Pe(this,$n,!1);hs===null?ji=hs=this:(Ie(hs,Wn,this),Ie(this,xn,hs)),hs=this}skip_effect(e){D(this,Br).has(e)||D(this,Br).set(e,{d:[],m:[]}),D(this,Ps).delete(e)}unskip_effect(e,r=s=>this.schedule(s)){var s=D(this,Br).get(e);if(s){D(this,Br).delete(e);for(var a of s.d)mt(a,Et),r(a);for(a of s.m)mt(a,Nr),r(a)}D(this,Ps).add(e)}capture(e,r,s=!1){e.v!==Pt&&!this.previous.has(e)&&this.previous.set(e,e.v),(e.f&Pn)===0&&(this.current.set(e,[r,s]),Ut==null||Ut.set(e,r)),this.is_fork||(e.v=r)}activate(){qe=this}deactivate(){qe=null,Ut=null}flush(){try{Pi=!0,qe=this,Xe(this,at,Xs).call(this)}finally{Vo=0,Gi=null,ms=null,Fa=null,Pi=!1,qe=null,Ut=null,Jr.clear()}}discard(){var e;for(const r of D(this,xs))r(this);D(this,xs).clear();for(const r of this.async_deriveds.values())r.reject(Js);Xe(this,at,Qs).call(this),(e=D(this,js))==null||e.resolve()}register_created_effect(e){D(this,ua).push(e)}increment(e,r){if(Ie(this,Ss,D(this,Ss)+1),e){let s=D(this,sn).get(r)??0;D(this,sn).set(r,s+1)}}decrement(e,r){if(Ie(this,Ss,D(this,Ss)-1),e){let s=D(this,sn).get(r)??0;s===1?D(this,sn).delete(r):D(this,sn).set(r,s-1)}D(this,$n)||(Ie(this,$n,!0),Gr(()=>{Ie(this,$n,!1),this.linked&&this.flush()}))}transfer_effects(e,r){for(const s of e)D(this,an).add(s);for(const s of r)D(this,Rr).add(s);e.clear(),r.clear()}oncommit(e){D(this,ks).add(e)}ondiscard(e){D(this,xs).add(e)}settled(){return(D(this,js)??Ie(this,js,Ul())).promise}static ensure(){if(qe===null){const e=qe=new li;!Pi&&!sa&&Gr(()=>{D(e,ws)||e.flush()})}return qe}apply(){{Ut=null;return}}schedule(e){var a;if(Gi=e,(a=e.b)!=null&&a.is_pending&&(e.f&(Qn|Ra|mo))!==0&&(e.f&Is)===0){e.b.defer_effect(e);return}for(var r=e;r.parent!==null;){r=r.parent;var s=r.f;if(ms!==null&&r===We&&(Ye===null||(Ye.f&Dt)===0))return;if((s&(un|br))!==0){if((s&At)===0)return;r.f^=At}}D(this,er).push(r)}};ws=new WeakMap,xn=new WeakMap,Wn=new WeakMap,ks=new WeakMap,xs=new WeakMap,Ss=new WeakMap,sn=new WeakMap,js=new WeakMap,er=new WeakMap,ua=new WeakMap,an=new WeakMap,Rr=new WeakMap,Br=new WeakMap,Ps=new WeakMap,$n=new WeakMap,at=new WeakSet,Yi=function(){if(this.is_fork)return!0;for(const s of D(this,sn).keys()){for(var e=s,r=!1;e.parent!==null;){if(D(this,Br).has(e)){r=!0;break}e=e.parent}if(!r)return!0}return!1},Xs=function(){var c,d,h,p;Ie(this,ws,!0),Vo++>1e3&&(Xe(this,at,Qs).call(this),Lu());for(const f of D(this,an))D(this,Rr).delete(f),mt(f,Et),this.schedule(f);for(const f of D(this,Rr))mt(f,Nr),this.schedule(f);const e=D(this,er);Ie(this,er,[]),this.apply();var r=ms=[],s=[],a=Fa=[];for(const f of e)try{Xe(this,at,Ji).call(this,f,r,s)}catch(g){throw vc(f),Xe(this,at,Yi).call(this)||this.discard(),g}if(qe=null,a.length>0){var i=li.ensure();for(const f of a)i.schedule(f)}if(ms=null,Fa=null,Xe(this,at,Yi).call(this)){Xe(this,at,gs).call(this,s),Xe(this,at,gs).call(this,r);for(const[f,g]of D(this,Br))uc(f,g);a.length>0&&Xe(c=qe,at,Xs).call(c);return}const o=Xe(this,at,lc).call(this);if(o){Xe(this,at,gs).call(this,s),Xe(this,at,gs).call(this,r),Xe(d=o,at,cc).call(d,this);return}D(this,an).clear(),D(this,Rr).clear();for(const f of D(this,ks))f(this);D(this,ks).clear(),na=this,Wo(s),Wo(r),na=null,(h=D(this,js))==null||h.resolve();var l=qe;if(D(this,Ss)===0&&(D(this,er).length===0||l!==null)&&Xe(this,at,Qs).call(this),D(this,er).length>0)if(l!==null){const f=l;D(f,er).push(...D(this,er).filter(g=>!D(f,er).includes(g)))}else l=this;l!==null&&(Jr.clear(),Xe(p=l,at,Xs).call(p))},Ji=function(e,r,s){e.f^=At;for(var a=e.first;a!==null;){var i=a.f,o=(i&(br|un))!==0,l=o&&(i&At)!==0,c=l||(i&Jt)!==0||D(this,Br).has(a);if(!c&&a.fn!==null){o?a.f^=At:(i&Qn)!==0?r.push(a):Aa(a)&&((i&Lr)!==0&&D(this,Rr).add(a),Ls(a));var d=a.first;if(d!==null){a=d;continue}}for(;a!==null;){var h=a.next;if(h!==null){a=h;break}a=a.parent}}},lc=function(){for(var e=D(this,xn);e!==null;){if(!e.is_fork){for(const[r,[,s]]of this.current)if(e.current.has(r)&&!s)return e}e=D(e,xn)}return null},cc=function(e){var s;for(const[a,i]of e.current)!this.previous.has(a)&&e.previous.has(a)&&this.previous.set(a,e.previous.get(a)),this.current.set(a,i);for(const[a,i]of e.async_deriveds){const o=this.async_deriveds.get(a);o&&i.promise.then(o.resolve).catch(o.reject)}e.async_deriveds.clear(),this.transfer_effects(D(e,an),D(e,Rr));const r=a=>{var i=a.reactions;if(i!==null&&!((a.f&Dt)!==0&&(a.f&(Et|Nr))===0))for(const c of i){var o=c.f;if((o&Dt)!==0)r(c);else{var l=c;o&(_s|Lr)&&!this.async_deriveds.has(l)&&(D(this,Rr).delete(l),mt(l,Et),this.schedule(l))}}};for(const a of this.current.keys())r(a);this.oncommit(()=>e.discard()),Xe(s=e,at,Qs).call(s),qe=this,Xe(this,at,Xs).call(this)},gs=function(e){for(var r=0;r<e.length;r+=1)ec(e[r],D(this,an),D(this,Rr))},Ru=function(){var p;for(let f=ji;f!==null;f=D(f,Wn)){var e=f.id<this.id,r=[];for(const[g,[m,b]]of this.current){if(f.current.has(g)){var s=f.current.get(g)[0];if(e&&m!==s)f.current.set(g,[m,b]);else continue}r.push(g)}if(e)for(const[g,m]of this.async_deriveds){const b=f.async_deriveds.get(g);b&&m.promise.then(b.resolve).catch(b.reject)}var a=[...f.current.keys()].filter(g=>!f.current.get(g)[1]);if(!(!D(f,ws)||a.length===0)){var i=a.filter(g=>!this.current.has(g));if(i.length===0)e&&f.discard();else if(r.length>0){if(e)for(const g of D(this,Ps))f.unskip_effect(g,m=>{var b;(m.f&(Lr|_s))!==0?f.schedule(m):Xe(b=f,at,gs).call(b,[m])});f.activate();var o=new Set,l=new Map;for(var c of r)dc(c,i,o,l);l=new Map;var d=[...f.current].filter(([g,m])=>{const b=this.current.get(g);return b?b[0]!==m[0]||b[1]!==m[1]:!0}).map(([g])=>g);if(d.length>0)for(const g of D(this,ua))(g.f&(nr|Jt|Ja))===0&&Po(g,d,l)&&((g.f&(_s|Lr))!==0?(mt(g,Et),f.schedule(g)):D(f,an).add(g));if(D(f,er).length>0&&!D(f,$n)){f.apply();for(var h of D(f,er))Xe(p=f,at,Ji).call(p,h,[],[]);Ie(f,er,[])}f.deactivate()}}}},Qs=function(){if(this.linked){var e=D(this,xn),r=D(this,Wn);e===null?ji=r:Ie(e,Wn,r),r===null?hs=e:Ie(r,xn,e),this.linked=!1}};let es=li;function qu(t){var e=sa;sa=!0;try{for(var r;;){if(_u(),qe===null)return r;qe.flush()}}finally{sa=e}}function Lu(){try{lu()}catch(t){$r(t,Gi)}}let Er=null;function Wo(t){var e=t.length;if(e!==0){for(var r=0;r<e;){var s=t[r++];if((s.f&(nr|Jt))===0&&Aa(s)&&(Er=new Set,Ls(s),s.deps===null&&s.first===null&&s.nodes===null&&s.teardown===null&&s.ac===null&&Ec(s),(Er==null?void 0:Er.size)>0)){Jr.clear();for(const a of Er){if((a.f&(nr|Jt))!==0)continue;const i=[a];let o=a.parent;for(;o!==null;)Er.has(o)&&(Er.delete(o),i.push(o)),o=o.parent;for(let l=i.length-1;l>=0;l--){const c=i[l];(c.f&(nr|Jt))===0&&Ls(c)}}Er.clear()}}Er=null}}function dc(t,e,r,s){if(!r.has(t)&&(r.add(t),t.reactions!==null))for(const a of t.reactions){const i=a.f;(i&Dt)!==0?dc(a,e,r,s):(i&(_s|Lr))!==0&&(i&Et)===0&&Po(a,e,s)&&(mt(a,Et),Co(a))}}function Po(t,e,r){const s=r.get(t);if(s!==void 0)return s;if(t.deps!==null)for(const a of t.deps){if(Ga.call(e,a))return!0;if((a.f&Dt)!==0&&Po(a,e,r))return r.set(a,!0),!0}return r.set(t,!1),!1}function Co(t){qe.schedule(t)}function uc(t,e){if(!((t.f&br)!==0&&(t.f&At)!==0)){(t.f&Et)!==0?e.d.push(t):(t.f&Nr)!==0&&e.m.push(t),mt(t,At);for(var r=t.first;r!==null;)uc(r,e),r=r.next}}function vc(t){mt(t,At);for(var e=t.first;e!==null;)vc(e),e=e.next}let Za=new Set;const Jr=new Map;let fc=!1;function ts(t,e){var r={f:0,v:t,reactions:null,equals:Kl,rv:0,wv:0};return r}function G(t,e){const r=ts(t);return Lc(r),r}function hc(t,e=!1,r=!0){var a;const s=ts(t);return e||(s.equals=Yl),Ds&&r&&dt!==null&&dt.l!==null&&((a=dt.l).s??(a.s=[])).push(s),s}function _(t,e,r=!1){Ye!==null&&(!Ar||(Ye.f&Ja)!==0)&&zs()&&(Ye.f&(Dt|Lr|_s|Ja))!==0&&(Xr===null||!Xr.has(t))&&vu();let s=r?tt(e):e;return qs(t,s,Fa)}function qs(t,e,r=null){if(!t.equals(e)){fn?Jr.set(t,e):Jr.has(t)||Jr.set(t,t.v);var s=es.ensure();if(s.capture(t,e),(t.f&Dt)!==0){const a=t;(t.f&Et)!==0&&jo(a),Ut===null&&ko(a)}t.wv=Tc(),pc(t,Et,r),zs()&&We!==null&&(We.f&At)!==0&&(We.f&(br|un))===0&&(gr===null?Fu([t]):gr.push(t)),!s.is_fork&&Za.size>0&&!fc&&Au()}return e}function Au(){fc=!1;for(const t of Za){(t.f&At)!==0&&mt(t,Nr);let e;try{e=Aa(t)}catch{e=!0}e&&Ls(t)}Za.clear()}function gc(t,e=1){var r=n(t),s=e===1?r++:r--;return _(t,r),s}function aa(t){_(t,t.v+1)}function pc(t,e,r){var s=t.reactions;if(s!==null)for(var a=zs(),i=s.length,o=0;o<i;o++){var l=s[o],c=l.f;if(!(!a&&l===We)){var d=(c&Et)===0;if(d&&mt(l,e),(c&Ja)!==0)Za.add(l);else if((c&Dt)!==0){var h=l;Ut==null||Ut.delete(h),(c&Zn)===0&&(c&yr&&(We===null||(We.f&Xa)===0)&&(l.f|=Zn),pc(h,Nr,r))}else if(d){var p=l;(c&Lr)!==0&&Er!==null&&Er.add(p),r!==null?r.push(p):Co(p)}}}}function tt(t){if(typeof t!="object"||t===null||Yr in t||Fl in t)return t;const e=po(t);if(e!==Md&&e!==Dd)return t;var r=new Map,s=ui(t),a=G(0),i=Xn,o=l=>{if(Xn===i)return l();var c=Ye,d=Xn;wr(null),Go(i);var h=l();return wr(c),Go(d),h};return s&&r.set("length",G(t.length)),new Proxy(t,{defineProperty(l,c,d){(!("value"in d)||d.configurable===!1||d.enumerable===!1||d.writable===!1)&&du();var h=r.get(c);return h===void 0?o(()=>{var p=G(d.value);return r.set(c,p),p}):_(h,d.value,!0),!0},deleteProperty(l,c){var d=r.get(c);if(d===void 0){if(c in l){const h=o(()=>G(Pt));r.set(c,h),aa(a)}}else _(d,Pt),aa(a);return!0},get(l,c,d){var g;if(c===Yr)return t;var h=r.get(c),p=c in l;if(h===void 0&&(!p||(g=jn(l,c))!=null&&g.writable)&&(h=o(()=>{var m=tt(p?l[c]:Pt),b=G(m);return b}),r.set(c,h)),h!==void 0){var f=n(h);return f===Pt?void 0:f}return Reflect.get(l,c,d)},getOwnPropertyDescriptor(l,c){var d=Reflect.getOwnPropertyDescriptor(l,c);if(d&&"value"in d){var h=r.get(c);h&&(d.value=n(h))}else if(d===void 0){var p=r.get(c),f=p==null?void 0:p.v;if(p!==void 0&&f!==Pt)return{enumerable:!0,configurable:!0,value:f,writable:!0}}return d},has(l,c){var f;if(c===Yr)return!0;var d=r.get(c),h=d!==void 0&&d.v!==Pt||Reflect.has(l,c);if(d!==void 0||We!==null&&(!h||(f=jn(l,c))!=null&&f.writable)){d===void 0&&(d=o(()=>{var g=h?tt(l[c]):Pt,m=G(g);return m}),r.set(c,d));var p=n(d);if(p===Pt)return!1}return h},set(l,c,d,h){var x;var p=r.get(c),f=c in l;if(s&&c==="length")for(var g=d;g<p.v;g+=1){var m=r.get(g+"");m!==void 0?_(m,Pt):g in l&&(m=o(()=>G(Pt)),r.set(g+"",m))}if(p===void 0)(!f||(x=jn(l,c))!=null&&x.writable)&&(p=o(()=>G(void 0)),_(p,tt(d)),r.set(c,p));else{f=p.v!==Pt;var b=o(()=>tt(d));_(p,b)}var k=Reflect.getOwnPropertyDescriptor(l,c);if(k!=null&&k.set&&k.set.call(h,d),!f){if(s&&typeof c=="string"){var y=r.get("length"),S=Number(c);Number.isInteger(S)&&S>=y.v&&_(y,S+1)}aa(a)}return!0},ownKeys(l){n(a);var c=Reflect.ownKeys(l).filter(p=>{var f=r.get(p);return f===void 0||f.v!==Pt});for(var[d,h]of r)h.v!==Pt&&!(d in l)&&c.push(d);return c},setPrototypeOf(){uu()}})}function $o(t){try{if(t!==null&&typeof t=="object"&&Yr in t)return t[Yr]}catch{}return t}function mc(t,e){return Object.is($o(t),$o(e))}var ei,_c,yc,bc,wc;function Tu(){if(ei===void 0){ei=window,_c=document,yc=/Firefox/.test(navigator.userAgent);var t=Element.prototype,e=Node.prototype,r=Text.prototype;bc=jn(e,"firstChild").get,wc=jn(e,"nextSibling").get,Bo(t)&&(t[Wi]=void 0,t[Ha]=null,t[$i]=void 0,t.__e=void 0),Bo(r)&&(r[Ys]=void 0)}}function Ir(t=""){return document.createTextNode(t)}function rs(t){return bc.call(t)}function La(t){return wc.call(t)}function E(t,e){return rs(t)}function oe(t,e=!1){{var r=rs(t);return r instanceof Comment&&r.data===""?La(r):r}}function V(t,e=!1){return rs(t)}function v(t,e=1,r=!1){let s=t;for(;e--;)s=La(s);return s}function Nu(t){t.textContent=""}function kc(){return!1}function xc(t,e,r){return e==null||e===$l?r?document.createElement(t,{is:r}):document.createElement(t):r?document.createElementNS(e,t,{is:r}):document.createElementNS(e,t)}function Iu(t){var e=We;if(e===null)return Ye.f|=Pn,t;if((e.f&Is)===0&&(e.f&Qn)===0)throw t;$r(t,e)}function $r(t,e){if(!(e!==null&&(e.f&nr)!==0)){for(;e!==null;){if((e.f&Vi)!==0&&(e.f&(nr|Ya))===0){if((e.f&Is)===0)throw t;try{e.b.error(t);return}catch(r){t=r}}e=e.parent}throw t}}function Sc(t){We===null&&(Ye===null&&ou(),iu()),fn&&au()}function Mu(t,e){var r=e.last;r===null?e.last=e.first=t:(r.next=t,t.prev=r,e.last=t)}function kr(t,e){var r=We;r!==null&&(r.f&Jt)!==0&&(t|=Jt);var s={ctx:dt,deps:null,nodes:null,f:t|Et|yr,first:null,fn:e,last:null,next:null,parent:r,b:r&&r.b,prev:null,teardown:null,wv:0,ac:null};qe==null||qe.register_created_effect(s);var a=s;if((t&Qn)!==0)ms!==null?ms.push(s):es.ensure().schedule(s);else if(e!==null){try{Ls(s)}catch(o){throw Bt(s),o}a.deps===null&&a.teardown===null&&a.nodes===null&&a.first===a.last&&(a.f&Ms)===0&&(a=a.first,(t&Lr)!==0&&(t&vn)!==0&&a!==null&&(a.f|=vn))}if(a!==null&&(a.parent=r,r!==null&&Mu(a,r),Ye!==null&&(Ye.f&Dt)!==0&&(t&un)===0)){var i=Ye;(i.effects??(i.effects=[])).push(a)}return s}function Eo(){return Ye!==null&&!Ar}function Us(t){const e=kr(Ra,null);return mt(e,At),e.teardown=t,e}function xt(t){Sc();var e=We.f,r=!Ye&&(e&br)!==0&&dt!==null&&!dt.i;if(r){var s=dt;(s.e??(s.e=[])).push(t)}else return jc(t)}function jc(t){return kr(Qn|Bl,t)}function Du(t){return Sc(),kr(Ra|Bl,t)}function zu(t){es.ensure();const e=kr(un|Ms,t);return(r={})=>new Promise(s=>{r.outro?Jn(e,()=>{Bt(e),s(void 0)}):(Bt(e),s(void 0))})}function hi(t){return kr(Qn,t)}function Ou(t){return kr(_s|Ms,t)}function Hs(t,e=0){return kr(Ra|e,t)}function M(t,e=[],r=[],s=[]){xo(s,e,r,a=>{kr(Ra,()=>{t(...a.map(n))})})}function Uu(t,e=[],r=[],s=[]){xo(s,e,r,a=>{kr(Qn,()=>t(...a.map(n)))})}function An(t,e=0){var r=kr(Lr|e,t);return r}function Pc(t,e=0){var r=kr(mo|e,t);return r}function Yt(t){return kr(br|Ms,t)}function Cc(t){var e=t.teardown;if(e!==null){const r=fn,s=Ye;Ko(!0),wr(null);try{e.call(null)}catch(a){$r(a,t.parent)}finally{Ko(r),wr(s)}}}function Ro(t,e=!1){var r=t.first;for(t.first=t.last=null;r!==null;){const a=r.ac;a!==null&&Os(()=>{a.abort(qa)});var s=r.next;(r.f&un)!==0?r.parent=null:Bt(r,e),r=s}}function Hu(t){for(var e=t.first;e!==null;){var r=e.next;(e.f&br)===0&&Bt(e),e=r}}function Bt(t,e=!0){var r=!1;(e||(t.f&Hl)!==0)&&t.nodes!==null&&t.nodes.end!==null&&(Bu(t.nodes.start,t.nodes.end),r=!0),t.f|=Ya,Ro(t,e&&!r),la(t,0);var s=t.nodes&&t.nodes.t;if(s!==null)for(const i of s)i.stop();Cc(t),t.f^=Ya,t.f|=nr;var a=t.parent;a!==null&&a.first!==null&&Ec(t),t.next=t.prev=t.teardown=t.ctx=t.deps=t.fn=t.nodes=t.ac=t.b=null}function Bu(t,e){for(;t!==null;){var r=t===e?null:La(t);t.remove(),t=r}}function Ec(t){var e=t.parent,r=t.prev,s=t.next;r!==null&&(r.next=s),s!==null&&(s.prev=r),e!==null&&(e.first===t&&(e.first=s),e.last===t&&(e.last=r))}function Jn(t,e,r=!0){var s=[];t.f|=_o,Rc(t,s,!0);var a=()=>{r&&Bt(t),e&&e()},i=s.length;if(i>0){var o=()=>--i||a();for(var l of s)l.out(o)}else a()}function Rc(t,e,r){if((t.f&Jt)===0){t.f^=Jt;var s=t.nodes&&t.nodes.t;if(s!==null)for(const l of s)(l.is_global||r)&&e.push(l);for(var a=t.first;a!==null;){var i=a.next;if((a.f&un)===0){var o=(a.f&vn)!==0||(a.f&br)!==0&&(t.f&Lr)!==0;Rc(a,e,o?r:!1)}a=i}}}function ti(t){t.f&=~_o,qc(t,!0)}function qc(t,e){if((t.f&_o)===0&&(t.f&Jt)!==0){t.f^=Jt,(t.f&At)===0&&(mt(t,Et),es.ensure().schedule(t));for(var r=t.first;r!==null;){var s=r.next,a=(r.f&vn)!==0||(r.f&br)!==0;qc(r,a?e:!1),r=s}var i=t.nodes&&t.nodes.t;if(i!==null)for(const o of i)(o.is_global||e)&&o.in()}}function qo(t,e){if(t.nodes)for(var r=t.nodes.start,s=t.nodes.end;r!==null;){var a=r===s?null:La(r);e.append(r),r=a}}let Va=!1,fn=!1;function Ko(t){fn=t}let Ye=null,Ar=!1;function wr(t){Ye=t}let We=null;function Qr(t){We=t}let Xr=null;function Lc(t){Ye!==null&&(Xr??(Xr=new Set)).add(t)}let rr=null,dr=0,gr=null;function Fu(t){gr=t}let Ac=1,Fn=0,Xn=Fn;function Go(t){Xn=t}function Tc(){return++Ac}function Aa(t){var e=t.f;if((e&Et)!==0)return!0;if(e&Dt&&(t.f&=~Zn),(e&Nr)!==0){for(var r=t.deps,s=r.length,a=0;a<s;a++){var i=r[a];if(Aa(i)&&ic(i),i.wv>t.wv)return!0}(e&yr)!==0&&Ut===null&&mt(t,At)}return!1}function Nc(t,e,r=!0){var s=t.reactions;if(s!==null&&!(Xr!==null&&Xr.has(t)))for(var a=0;a<s.length;a++){var i=s[a];(i.f&Dt)!==0?Nc(i,e,!1):e===i&&(r?mt(i,Et):(i.f&At)!==0&&mt(i,Nr),Co(i))}}function Ic(t){var e=rr,r=dr,s=gr,a=Ye,i=Xr,o=dt,l=Ar,c=Xn,d=t.f;rr=null,dr=0,gr=null,Ye=(d&(br|un))===0?t:null,Xr=null,Es(t.ctx),Ar=!1,Xn=++Fn,t.ac!==null&&(Os(()=>{t.ac.abort(qa)}),t.ac=null);try{t.f|=Xa;var h=t.fn,p=h();t.f|=Is;var f=Yo(t);if(zs()&&gr!==null&&!Ar&&f!==null&&(t.f&(Dt|Nr|Et))===0)for(var g=0;g<gr.length;g++)Nc(gr[g],t);if(a!==null&&a!==t){if(Fn++,a.deps!==null)for(let m=0;m<r;m+=1)a.deps[m].rv=Fn;if(e!==null)for(const m of e)m.rv=Fn;gr!==null&&(s===null?s=gr:s.push(...gr))}return(t.f&Pn)!==0&&(t.f^=Pn),p}catch(m){return Yo(t),Iu(m)}finally{t.f^=Xa,rr=e,dr=r,gr=s,Ye=a,Xr=i,Es(o),Ar=l,Xn=c}}function Yo(t){var a;var e=t.deps,r=qe==null?void 0:qe.is_fork;if(rr!==null){var s;if(r||la(t,dr),e!==null&&dr>0)for(e.length=dr+rr.length,s=0;s<rr.length;s++)e[dr+s]=rr[s];else t.deps=e=rr;if(Eo()&&(t.f&yr)!==0)for(s=dr;s<e.length;s++)((a=e[s]).reactions??(a.reactions=[])).push(t)}else!r&&e!==null&&dr<e.length&&(la(t,dr),e.length=dr);return e}function Vu(t,e){let r=e.reactions;if(r!==null){var s=Id.call(r,t);if(s!==-1){var a=r.length-1;a===0?r=e.reactions=null:(r[s]=r[a],r.pop())}}if(r===null&&(e.f&Dt)!==0&&(rr===null||!Ga.call(rr,e))){var i=e;(i.f&yr)!==0&&(i.f^=yr,i.f&=~Zn),i.v!==Pt&&ko(i),i.ac!==null&&Os(()=>{i.ac.abort(qa),i.ac=null,mt(i,Et)}),Cu(i),la(i,0)}}function la(t,e){var r=t.deps;if(r!==null)for(var s=e;s<r.length;s++)Vu(t,r[s])}function Ls(t){var e=t.f;if((e&nr)===0){mt(t,At);var r=We,s=Va;We=t,Va=(e&(br|un))===0;try{(e&(Lr|mo))!==0?Hu(t):Ro(t),Cc(t);var a=Ic(t);t.teardown=typeof a=="function"?a:null,t.wv=Ac;var i;zl&&hu&&(t.f&Et)!==0&&t.deps}finally{Va=s,We=r}}}async function En(){await Promise.resolve(),qu()}function n(t){var e=t.f,r=(e&Dt)!==0;if(Ye!==null&&!Ar){var s=We!==null&&(We.f&nr)!==0;if(!s&&(Xr===null||!Xr.has(t))){var a=Ye.deps;if((Ye.f&Xa)!==0)t.rv<Fn&&(t.rv=Fn,rr===null&&a!==null&&a[dr]===t?dr++:rr===null?rr=[t]:rr.push(t));else{Ye.deps??(Ye.deps=[]),Ga.call(Ye.deps,t)||Ye.deps.push(t);var i=t.reactions;i===null?t.reactions=[Ye]:Ga.call(i,Ye)||i.push(Ye)}}}if(fn&&Jr.has(t))return Jr.get(t);if(r){var o=t;if(fn){var l=o.v;return((o.f&At)===0&&o.reactions!==null||Dc(o))&&(l=jo(o)),Jr.set(o,l),l}var c=(o.f&yr)===0&&!Ar&&Ye!==null&&(Va||(Ye.f&yr)!==0),d=(o.f&Is)===0;Aa(o)&&(c&&(o.f|=yr),ic(o)),c&&!d&&(oc(o),Mc(o))}if(Ut!=null&&Ut.has(t))return Ut.get(t);if((t.f&Pn)!==0)throw t.v;return t.v}function Mc(t){if(t.f|=yr,t.deps!==null)for(const e of t.deps)(e.reactions??(e.reactions=[])).push(t),(e.f&Dt)!==0&&(e.f&yr)===0&&(oc(e),Mc(e))}function Dc(t){if(t.v===Pt)return!0;if(t.deps===null)return!1;for(const e of t.deps)if(Jr.has(e)||(e.f&Dt)!==0&&Dc(e))return!0;return!1}function xr(t){var e=Ar;try{return Ar=!0,t()}finally{Ar=e}}function zc(t){if(!(typeof t!="object"||!t||t instanceof EventTarget)){if(Yr in t)Xi(t);else if(!Array.isArray(t))for(let e in t){const r=t[e];typeof r=="object"&&r&&Yr in r&&Xi(r)}}}function Xi(t,e=new Set){if(typeof t=="object"&&t!==null&&!(t instanceof EventTarget)&&!e.has(t)){e.add(t),t instanceof Date&&t.getTime();for(let s in t)try{Xi(t[s],e)}catch{}const r=po(t);if(r!==Object.prototype&&r!==Array.prototype&&r!==Map.prototype&&r!==Set.prototype&&r!==Date.prototype){const s=Ol(r);for(let a in s){const i=s[a].get;if(i)try{i.call(t)}catch{}}}}}function Wu(t){return t.endsWith("capture")&&t!=="gotpointercapture"&&t!=="lostpointercapture"}const $u=["beforeinput","click","change","dblclick","contextmenu","focusin","focusout","input","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","pointerdown","pointermove","pointerout","pointerover","pointerup","touchend","touchmove","touchstart"];function Ku(t){return $u.includes(t)}const Gu={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 Yu(t){return t=t.toLowerCase(),Gu[t]??t}const Ju=["touchstart","touchmove"];function Xu(t){return Ju.includes(t)}const Vn=Symbol("events"),Oc=new Set,Qi=new Set;function Uc(t,e,r,s={}){function a(i){if(s.capture||Zi.call(e,i),!i.cancelBubble)return Os(()=>r==null?void 0:r.call(this,i))}return t.startsWith("pointer")||t.startsWith("touch")||t==="wheel"?Gr(()=>{e.addEventListener(t,a,s)}):e.addEventListener(t,a,s),a}function Ht(t,e,r,s,a){var i={capture:s,passive:a},o=Uc(t,e,r,i);(e===document.body||e===window||e===document||e instanceof HTMLMediaElement)&&Us(()=>{e.removeEventListener(t,o,i)})}function Qe(t,e,r){(e[Vn]??(e[Vn]={}))[t]=r}function ar(t){for(var e=0;e<t.length;e++)Oc.add(t[e]);for(var r of Qi)r(t)}let Ci=null,Ei=!1;function Zi(t){var b,k;var e=this,r=e.ownerDocument,s=t.type,a=((b=t.composedPath)==null?void 0:b.call(t))||[],i=a[0]||t.target;Ci=t,Ei||(Ei=!0,setTimeout(()=>{Ei=!1,Ci=null}));var o=0,l=Ci===t&&t[Vn];if(l){var c=a.indexOf(l);if(c!==-1&&(e===document||e===window)){t[Vn]=e;return}var d=a.indexOf(e);if(d===-1)return;c<=d&&(o=c)}if(i=a[o]||t.target,i!==e){go(t,"currentTarget",{configurable:!0,get(){return i||r}});var h=Ye,p=We;wr(null),Qr(null);try{for(var f,g=[];i!==null&&i!==e;){try{var m=(k=i[Vn])==null?void 0:k[s];m!=null&&(!i.disabled||t.target===i)&&m.call(i,t)}catch(y){f?g.push(y):f=y}if(t.cancelBubble)break;o++,i=o<a.length?a[o]:null}if(f){for(let y of g)queueMicrotask(()=>{throw y});throw f}}finally{t[Vn]=e,delete t.currentTarget,wr(h),Qr(p)}}}var Ml;const Ri=((Ml=globalThis==null?void 0:globalThis.window)==null?void 0:Ml.trustedTypes)&&globalThis.window.trustedTypes.createPolicy("svelte-trusted-html",{createHTML:t=>t});function Qu(t){return(Ri==null?void 0:Ri.createHTML(t))??t}function Hc(t){var e=xc("template");return e.innerHTML=Qu(t.replaceAll("<!>","<!---->")),e.content}function As(t,e){var r=We;r.nodes===null&&(r.nodes={start:t,end:e,a:null,t:null})}function P(t,e){var r=(e&Yd)!==0,s=(e&Jd)!==0,a,i=!t.startsWith("<!>");return()=>{a===void 0&&(a=Hc(i?t:"<!>"+t),r||(a=rs(a)));var o=s||yc?document.importNode(a,!0):a.cloneNode(!0);if(r){var l=rs(o),c=o.lastChild;As(l,c)}else As(o,o);return o}}function Zu(t,e,r="svg"){var s=!t.startsWith("<!>"),a=`<${r}>${s?t:"<!>"+t}</${r}>`,i;return()=>{if(!i){var o=Hc(a),l=rs(o);i=rs(l)}var c=i.cloneNode(!0);return As(c,c),c}}function ev(t,e){return Zu(t,e,"svg")}function ie(t=""){{var e=Ir(t+"");return As(e,e),e}}function Me(){var t=document.createDocumentFragment(),e=document.createComment(""),r=Ir();return t.append(e,r),As(e,r),t}function u(t,e){t!==null&&t.before(e)}function gi(){var t;return(t=window.__svelte??(window.__svelte={})).uid??(t.uid=1),`c${window.__svelte.uid++}`}function tv(t){let e=0,r=ts(0),s;return()=>{Eo()&&(n(r),Hs(()=>(e===0&&(s=xr(()=>t(()=>aa(r)))),e+=1,()=>{Gr(()=>{e-=1,e===0&&(s==null||s(),s=void 0,aa(r))})})))}}var rv=vn|Ms;function nv(t,e,r,s){new sv(t,e,r,s)}var pr,ho,mr,Kn,Kt,or,Gt,lr,Fr,Gn,Sn,Cs,va,fa,on,ci,ut,av,iv,eo,ov,to,Zs,Wa,ro,no;class sv{constructor(e,r,s,a){Pe(this,ut);et(this,"parent");et(this,"is_pending",!1);et(this,"transform_error");Pe(this,pr);Pe(this,ho,null);Pe(this,mr);Pe(this,Kn);Pe(this,Kt);Pe(this,or,null);Pe(this,Gt,null);Pe(this,lr,null);Pe(this,Fr,null);Pe(this,Gn,0);Pe(this,Sn,0);Pe(this,Cs,!1);Pe(this,va,new Set);Pe(this,fa,new Set);Pe(this,on,null);Pe(this,ci,tv(()=>(Ie(this,on,ts(D(this,Gn))),()=>{Ie(this,on,null)})));var i;Ie(this,pr,e),Ie(this,mr,r),Ie(this,Kn,o=>{var l=We;l.b=this,l.f|=Vi,s(o)}),this.parent=We.b,this.transform_error=a??((i=this.parent)==null?void 0:i.transform_error)??(o=>o),Ie(this,Kt,An(()=>{Xe(this,ut,to).call(this)},rv))}defer_effect(e){ec(e,D(this,va),D(this,fa))}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!D(this,mr).pending}update_pending_count(e,r){Xe(this,ut,ro).call(this,e,r),Ie(this,Gn,D(this,Gn)+e),!(!D(this,on)||D(this,Cs))&&(Ie(this,Cs,!0),Gr(()=>{Ie(this,Cs,!1),D(this,on)&&qs(D(this,on),D(this,Gn))}))}get_effect_pending(){return D(this,ci).call(this),n(D(this,on))}error(e){if(!D(this,mr).onerror&&!D(this,mr).failed)throw e;qe!=null&&qe.is_fork?(D(this,or)&&qe.skip_effect(D(this,or)),D(this,Gt)&&qe.skip_effect(D(this,Gt)),D(this,lr)&&qe.skip_effect(D(this,lr)),qe.oncommit(()=>{Xe(this,ut,no).call(this,e)})):Xe(this,ut,no).call(this,e)}}pr=new WeakMap,ho=new WeakMap,mr=new WeakMap,Kn=new WeakMap,Kt=new WeakMap,or=new WeakMap,Gt=new WeakMap,lr=new WeakMap,Fr=new WeakMap,Gn=new WeakMap,Sn=new WeakMap,Cs=new WeakMap,va=new WeakMap,fa=new WeakMap,on=new WeakMap,ci=new WeakMap,ut=new WeakSet,av=function(){try{Ie(this,or,Yt(()=>D(this,Kn).call(this,D(this,pr))))}catch(e){this.error(e)}},iv=function(e){const r=D(this,mr).failed,{reset:s,invoke_onerror:a}=Xe(this,ut,eo).call(this,e);Gr(a),r&&Ie(this,lr,Yt(()=>{r(D(this,pr),()=>e,()=>s)}))},eo=function(e){var r=!1,s=!1;const a=()=>{if(r){tu();return}r=!0,s&&fu(),D(this,lr)!==null&&Jn(D(this,lr),()=>{Ie(this,lr,null)}),Xe(this,ut,Wa).call(this,()=>{Xe(this,ut,to).call(this)})};return{reset:a,invoke_onerror:()=>{var o,l;try{s=!0,(l=(o=D(this,mr)).onerror)==null||l.call(o,e,a),s=!1}catch(c){$r(c,D(this,Kt)&&D(this,Kt).parent)}}}},ov=function(){const e=D(this,mr).pending;e&&(this.is_pending=!0,Ie(this,Gt,Yt(()=>e(D(this,pr)))),Gr(()=>{var r=Ie(this,Fr,document.createDocumentFragment()),s=Ir(),a=!1;if(r.append(s),Ie(this,or,Xe(this,ut,Wa).call(this,()=>{try{return Yt(()=>D(this,Kn).call(this,s))}catch(i){try{this.error(i),a=!0}catch(o){$r(o,D(this,Kt).parent)}return null}})),D(this,or)===null){Ie(this,Fr,null),a&&Xe(this,ut,Zs).call(this,qe);return}D(this,Sn)===0&&(D(this,pr).before(r),Ie(this,Fr,null),Jn(D(this,Gt),()=>{Ie(this,Gt,null)}),Xe(this,ut,Zs).call(this,qe))}))},to=function(){try{if(this.is_pending=this.has_pending_snippet(),Ie(this,Sn,0),Ie(this,Gn,0),Ie(this,or,Yt(()=>{D(this,Kn).call(this,D(this,pr))})),D(this,Sn)>0){var e=Ie(this,Fr,document.createDocumentFragment());qo(D(this,or),e);const r=D(this,mr).pending;Ie(this,Gt,Yt(()=>r(D(this,pr))))}else Xe(this,ut,Zs).call(this,qe)}catch(r){this.error(r)}},Zs=function(e){this.is_pending=!1,e.transfer_effects(D(this,va),D(this,fa))},Wa=function(e){var r=We,s=Ye,a=dt;Qr(D(this,Kt)),wr(D(this,Kt)),Es(D(this,Kt).ctx);try{return es.ensure(),e()}finally{Qr(r),wr(s),Es(a)}},ro=function(e,r){var s;if(!this.has_pending_snippet()){this.parent&&Xe(s=this.parent,ut,ro).call(s,e,r);return}Ie(this,Sn,D(this,Sn)+e),D(this,Sn)===0&&(Xe(this,ut,Zs).call(this,r),D(this,Gt)&&Jn(D(this,Gt),()=>{Ie(this,Gt,null)}),D(this,Fr)&&(D(this,pr).before(D(this,Fr)),Ie(this,Fr,null)))},no=function(e){D(this,or)&&(Bt(D(this,or)),Ie(this,or,null)),D(this,Gt)&&(Bt(D(this,Gt)),Ie(this,Gt,null)),D(this,lr)&&(Bt(D(this,lr)),Ie(this,lr,null));let r=D(this,mr).failed;const s=a=>{const{reset:i,invoke_onerror:o}=Xe(this,ut,eo).call(this,a);o(),r&&Ie(this,lr,Xe(this,ut,Wa).call(this,()=>{try{return Yt(()=>{var l=We;l.b=this,l.f|=Vi,r(D(this,pr),()=>a,()=>i)})}catch(l){return $r(l,D(this,Kt).parent),null}}))};Gr(()=>{var a;try{a=this.transform_error(e)}catch(i){$r(i,D(this,Kt)&&D(this,Kt).parent);return}a!==null&&typeof a=="object"&&typeof a.then=="function"?a.then(s,i=>$r(i,D(this,Kt)&&D(this,Kt).parent)):s(a)})};function L(t,e){var r=e==null?"":typeof e=="object"?`${e}`:e;r!==(t[Ys]??(t[Ys]=t.nodeValue))&&(t[Ys]=r,t.nodeValue=`${r}`)}function lv(t,e){return cv(t,e)}const Oa=new Map;function cv(t,{target:e,anchor:r,props:s={},events:a,context:i,intro:o=!0,transformError:l}){Tu();var c=void 0,d=zu(()=>{var h=r??e.appendChild(Ir());nv(h,{pending:()=>{}},g=>{ze({});var m=dt;i&&(m.c=i),a&&(s.$$events=a),c=t(g,s)||wo(),Oe()},l);var p=new Set,f=g=>{for(var m=0;m<g.length;m++){var b=g[m];if(!p.has(b)){p.add(b);var k=Xu(b);for(const x of[e,document]){var y=Oa.get(x);y===void 0&&(y=new Map,Oa.set(x,y));var S=y.get(b);S===void 0?(x.addEventListener(b,Zi,{passive:k}),y.set(b,1)):y.set(b,S+1)}}}};return f(vi(Oc)),Qi.add(f),()=>{var k;for(var g of p)for(const y of[e,document]){var m=Oa.get(y),b=m.get(g);--b==0?(y.removeEventListener(g,Zi),m.delete(g),m.size===0&&Oa.delete(y)):m.set(g,b)}Qi.delete(f),h!==r&&((k=h.parentNode)==null||k.removeChild(h))}});return dv.set(c,d),c}let dv=new WeakMap;var qr,Vr,cr,Yn,ha,ga,di;class Ta{constructor(e,r=!0){et(this,"anchor");Pe(this,qr,new Map);Pe(this,Vr,new Map);Pe(this,cr,new Map);Pe(this,Yn,new Set);Pe(this,ha,!0);Pe(this,ga,e=>{if(D(this,qr).has(e)){var r=D(this,qr).get(e),s=D(this,Vr).get(r);if(s)ti(s),D(this,Yn).delete(r);else{var a=D(this,cr).get(r);a&&(ti(a.effect),D(this,Vr).set(r,a.effect),D(this,cr).delete(r),a.fragment.lastChild.remove(),this.anchor.before(a.fragment),s=a.effect)}for(const[i,o]of D(this,qr)){if(D(this,qr).delete(i),i===e)break;const l=D(this,cr).get(o);l&&(Bt(l.effect),D(this,cr).delete(o))}for(const[i,o]of D(this,Vr)){if(i===r||D(this,Yn).has(i))continue;const l=()=>{if(Array.from(D(this,qr).values()).includes(i)){var d=document.createDocumentFragment();qo(o,d),d.append(Ir()),D(this,cr).set(i,{effect:o,fragment:d})}else Bt(o);D(this,Yn).delete(i),D(this,Vr).delete(i)};D(this,ha)||!s?(D(this,Yn).add(i),Jn(o,l,!1)):l()}}});Pe(this,di,e=>{D(this,qr).delete(e);const r=Array.from(D(this,qr).values());for(const[s,a]of D(this,cr))r.includes(s)||(Bt(a.effect),D(this,cr).delete(s))});this.anchor=e,Ie(this,ha,r)}ensure(e,r){var s=qe,a=kc();if(r&&!D(this,Vr).has(e)&&!D(this,cr).has(e))if(a){var i=document.createDocumentFragment(),o=Ir();i.append(o),D(this,cr).set(e,{effect:Yt(()=>r(o)),fragment:i})}else D(this,Vr).set(e,Yt(()=>r(this.anchor)));if(D(this,qr).set(s,e),a){for(const[l,c]of D(this,Vr))l===e?s.unskip_effect(c):s.skip_effect(c);for(const[l,c]of D(this,cr))l===e?s.unskip_effect(c.effect):s.skip_effect(c.effect);s.oncommit(D(this,ga)),s.ondiscard(D(this,di))}else D(this,ga).call(this,s)}}qr=new WeakMap,Vr=new WeakMap,cr=new WeakMap,Yn=new WeakMap,ha=new WeakMap,ga=new WeakMap,di=new WeakMap;function H(t,e,r=!1){var s=new Ta(t),a=r?vn:0;function i(o,l){s.ensure(o,l)}An(()=>{var o=!1;e((l,c=0)=>{o=!0,i(c,l)}),o||i(-1,null)},a)}const uv=Symbol("NaN");function Wr(t,e,r){var s=new Ta(t),a=!zs();An(()=>{var i=e();i!==i&&(i=uv),a&&i!==null&&typeof i=="object"&&(i={}),s.ensure(i,r)})}function kt(t,e){return e}function vv(t,e,r){for(var s=[],a=e.length,i,o=e.length,l=0;l<a;l++){let p=e[l];Jn(p,()=>{if(i){if(i.pending.delete(p),i.done.add(p),i.pending.size===0){var f=t.outrogroups;so(t,vi(i.done)),f.delete(i),f.size===0&&(t.outrogroups=null)}}else o-=1},!1)}if(o===0){var c=s.length===0&&r!==null&&t.pending.size===0;if(c){var d=r,h=d.parentNode;Nu(h),h.append(d),t.items.clear()}so(t,e,!c)}else i={pending:new Set(e),done:new Set},(t.outrogroups??(t.outrogroups=new Set)).add(i)}function so(t,e,r=!0){var s;if(t.pending.size>0){s=new Set;for(const o of t.pending.values())for(const l of o)s.add(t.items.get(l).e)}for(var a=0;a<e.length;a++){var i=e[a];if(s!=null&&s.has(i)){i.f|=Kr;const o=document.createDocumentFragment();qo(i,o)}else Bt(e[a],r)}}var Jo;function Ae(t,e,r,s,a,i=null){var o=t,l=new Map,c=(e&Wl)!==0;if(c){var d=t;o=d.appendChild(Ir())}var h=null,p=So(()=>{var x=r();return ui(x)?x:x==null?[]:vi(x)}),f,g=new Map,m=!0;function b(x){(S.effect.f&nr)===0&&(S.pending.delete(x),S.fallback=h,fv(S,f,o,e,s),h!==null&&(f.length===0?(h.f&Kr)===0?ti(h):(h.f^=Kr,ea(h,null,o)):Jn(h,()=>{h=null})))}function k(x){S.pending.delete(x)}var y=An(()=>{f=n(p);for(var x=f.length,w=new Set,q=qe,C=kc(),R=0;R<x;R+=1){var T=f[R],I=s(T,R),O=m?null:l.get(I);O?(O.v&&qs(O.v,T),O.i&&qs(O.i,R),C&&q.unskip_effect(O.e)):(O=hv(l,m?o:Jo??(Jo=Ir()),T,I,R,a,e,r),m||(O.e.f|=Kr),l.set(I,O)),w.add(I)}if(x===0&&i&&!h&&(m?h=Yt(()=>i(o)):(h=Yt(()=>i(Jo??(Jo=Ir()))),h.f|=Kr)),x>w.size&&su(),!m)if(g.set(q,w),C){for(const[$,F]of l)w.has($)||q.skip_effect(F.e);q.oncommit(b),q.ondiscard(k)}else b(q);n(p)}),S={effect:y,items:l,pending:g,outrogroups:null,fallback:h};m=!1}function Ks(t){for(;t!==null&&(t.f&br)===0;)t=t.next;return t}function fv(t,e,r,s,a){var O,$,F,K,N,A,z,W,U;var i=(s&Bd)!==0,o=e.length,l=t.items,c=Ks(t.effect.first),d,h=null,p,f=[],g=[],m,b,k,y;if(i)for(y=0;y<o;y+=1)m=e[y],b=a(m,y),k=l.get(b).e,(k.f&Kr)===0&&(($=(O=k.nodes)==null?void 0:O.a)==null||$.measure(),(p??(p=new Set)).add(k));for(y=0;y<o;y+=1){if(m=e[y],b=a(m,y),k=l.get(b).e,t.outrogroups!==null)for(const Y of t.outrogroups)Y.pending.delete(k),Y.done.delete(k);if((k.f&Jt)!==0&&(ti(k),i&&((K=(F=k.nodes)==null?void 0:F.a)==null||K.unfix(),(p??(p=new Set)).delete(k))),(k.f&Kr)!==0)if(k.f^=Kr,k===c)ea(k,null,r);else{var S=h?h.next:c;k===t.effect.last&&(t.effect.last=k.prev),k.prev&&(k.prev.next=k.next),k.next&&(k.next.prev=k.prev),kn(t,h,k),kn(t,k,S),ea(k,S,r),h=k,f=[],g=[],c=Ks(h.next);continue}if(k!==c){if(d!==void 0&&d.has(k)){if(f.length<g.length){var x=g[0],w;h=x.prev;var q=f[0],C=f[f.length-1];for(w=0;w<f.length;w+=1)ea(f[w],x,r);for(w=0;w<g.length;w+=1)d.delete(g[w]);kn(t,q.prev,C.next),kn(t,h,q),kn(t,C,x),c=x,h=C,y-=1,f=[],g=[]}else d.delete(k),ea(k,c,r),kn(t,k.prev,k.next),kn(t,k,h===null?t.effect.first:h.next),kn(t,h,k),h=k;continue}for(f=[],g=[];c!==null&&c!==k;)(d??(d=new Set)).add(c),g.push(c),c=Ks(c.next);if(c===null)continue}(k.f&Kr)===0&&f.push(k),h=k,c=Ks(k.next)}if(t.outrogroups!==null){for(const Y of t.outrogroups)Y.pending.size===0&&(so(t,vi(Y.done)),(N=t.outrogroups)==null||N.delete(Y));t.outrogroups.size===0&&(t.outrogroups=null)}if(c!==null||d!==void 0){var R=[];if(d!==void 0)for(k of d)(k.f&Jt)===0&&R.push(k);for(;c!==null;)(c.f&Jt)===0&&c!==t.fallback&&R.push(c),c=Ks(c.next);var T=R.length;if(T>0){var I=(s&Wl)!==0&&o===0?r:null;if(i){for(y=0;y<T;y+=1)(z=(A=R[y].nodes)==null?void 0:A.a)==null||z.measure();for(y=0;y<T;y+=1)(U=(W=R[y].nodes)==null?void 0:W.a)==null||U.fix()}vv(t,R,I)}}i&&Gr(()=>{var Y,Z;if(p!==void 0)for(k of p)(Z=(Y=k.nodes)==null?void 0:Y.a)==null||Z.apply()})}function hv(t,e,r,s,a,i,o,l){var c=(o&Ud)!==0?(o&Fd)===0?hc(r,!1,!1):ts(r):null,d=(o&Hd)!==0?ts(a):null;return{v:c,i:d,e:Yt(()=>(i(e,c??r,d??a,l),()=>{t.delete(s)}))}}function ea(t,e,r){if(t.nodes)for(var s=t.nodes.start,a=t.nodes.end,i=e&&(e.f&Kr)===0?e.nodes.start:r;s!==null;){var o=La(s);if(i.before(s),s===a)return;s=o}}function kn(t,e,r){e===null?t.effect.first=r:e.next=r,r===null?t.effect.last=e:r.prev=e}function ct(t,e,...r){var s=new Ta(t);An(()=>{const a=e()??null;s.ensure(a,a&&(i=>a(i,...r)))},vn)}function Tr(t,e,r){var s=new Ta(t);An(()=>{var a=e()??null;s.ensure(a,a&&(i=>r(i,a)))},vn)}function gv(t,e,r,s,a,i){var o=null,l=t,c=new Ta(l,!1);An(()=>{const d=e()||null;var h=Xd;if(d===null){c.ensure(null,null);return}return c.ensure(d,p=>{if(d){if(o=xc(d,h),As(o,o),s){var f=null,g=o.appendChild(Ir());s(o,g),f==null||f.remove()}We.nodes.end=o,p.before(o)}}),()=>{}},vn),Us(()=>{})}function pv(t,e){var r;r=document.head.appendChild(Ir());try{An(()=>{var s=Yt(()=>e(r));s.f|=Hl,ru||(s.nodes===null?s.nodes={start:r,end:r,a:null,t:null}:s.nodes.end=r)})}finally{}}function Xo(t,e,r){hi(()=>{var s=xr(()=>e(t,r==null?void 0:r())||{});if(r&&(s!=null&&s.update)){var a=!1,i={};Hs(()=>{var o=r();zc(o),a&&Gl(i,o)&&(i=o,s.update(o))}),a=!0}if(s!=null&&s.destroy)return()=>s.destroy()})}function mv(t,e){var r=void 0,s;Pc(()=>{r!==(r=e())&&(s&&(Bt(s),s=null),r&&(s=Yt(()=>{hi(()=>r(t))})))})}function Bc(t){var e,r,s="";if(typeof t=="string"||typeof t=="number")s+=t;else if(typeof t=="object")if(Array.isArray(t)){var a=t.length;for(e=0;e<a;e++)t[e]&&(r=Bc(t[e]))&&(s&&(s+=" "),s+=r)}else for(r in t)t[r]&&(s&&(s+=" "),s+=r);return s}function _v(){for(var t,e,r=0,s="",a=arguments.length;r<a;r++)(t=arguments[r])&&(e=Bc(t))&&(s&&(s+=" "),s+=e);return s}function Fc(t){return typeof t=="object"?_v(t):t??""}const Qo=[...`
|
|
2
|
-
\r\f \v\uFEFF`];function yv(t,e,r){var s=t==null?"":""+t;if(e&&(s=s?s+" "+e:e),r){for(var a of Object.keys(r))if(r[a])s=s?s+" "+a:a;else if(s.length)for(var i=a.length,o=0;(o=s.indexOf(a,o))>=0;){var l=o+i;(o===0||Qo.includes(s[o-1]))&&(l===s.length||Qo.includes(s[l]))?s=(o===0?"":s.substring(0,o))+s.substring(l+1):o=l}}return s===""?null:s}function Zo(t,e=!1){var r=e?" !important;":";",s="";for(var a of Object.keys(t)){var i=t[a];i!=null&&i!==""&&(s+=" "+a+": "+i+r)}return s}function qi(t){return t[0]!=="-"||t[1]!=="-"?t.toLowerCase():t}function bv(t,e){if(e){var r="",s,a;if(Array.isArray(e)?(s=e[0],a=e[1]):s=e,t){t=String(t).replaceAll(/\/\*.*?\*\//g,"").trim();var i=!1,o=0,l=!1,c=[];s&&c.push(...Object.keys(s).map(qi)),a&&c.push(...Object.keys(a).map(qi));var d=0,h=-1;const b=t.length;for(var p=0;p<b;p++){var f=t[p];if(l?f==="/"&&t[p-1]==="*"&&(l=!1):i?i===f&&(i=!1):f==="/"&&t[p+1]==="*"?l=!0:f==='"'||f==="'"?i=f:f==="("?o++:f===")"&&o--,!l&&i===!1&&o===0){if(f===":"&&h===-1)h=p;else if(f===";"||p===b-1){if(h!==-1){var g=qi(t.substring(d,h).trim());if(!c.includes(g)){f!==";"&&p++;var m=t.substring(d,p).trim();r+=" "+m+";"}}d=p+1,h=-1}}}}return s&&(r+=Zo(s)),a&&(r+=Zo(a,!0)),r=r.trim(),r===""?null:r}return t==null?null:String(t)}function Ze(t,e,r,s,a,i){var o=t[Wi];if(o!==r||o===void 0){var l=yv(r,s,i);l==null?t.removeAttribute("class"):e?t.className=l:t.setAttribute("class",l),t[Wi]=r}else if(i&&a!==i)for(var c in i){var d=!!i[c];(a==null||d!==!!a[c])&&t.classList.toggle(c,d)}return i}function Li(t,e={},r,s){for(var a in r){var i=r[a];e[a]!==i&&(r[a]==null?t.style.removeProperty(a):t.style.setProperty(a,i,s))}}function Na(t,e,r,s){var a=t[$i];if(a!==e){var i=bv(e,s);i==null?t.removeAttribute("style"):t.style.cssText=i,t[$i]=e}else s&&(Array.isArray(s)?(Li(t,r==null?void 0:r[0],s[0]),Li(t,r==null?void 0:r[1],s[1],"important")):Li(t,r,s));return s}function Vc(t,e){e?t.hasAttribute("selected")||t.setAttribute("selected",""):t.removeAttribute("selected")}function el(t,e){var r=!("__defaultValue"in t);!r&&t.__defaultValue===e||(t.__defaultValue=e,Wc(t,!r||"__value"in t))}function Wc(t,e){var r=t.__defaultValue,s=t.multiple,a=s?r??[]:null;if(!(s&&!ui(a))){var i=t.selectedIndex,o=e&&s?new Set(t.selectedOptions):null;for(var l of t.options){var c=io(l);Vc(l,s?a.includes(c):mc(c,r))}if(e)if(o!==null)for(l of t.options){var d=o.has(l);l.selected!==d&&(l.selected=d)}else t.selectedIndex!==i&&(t.selectedIndex=i)}}function ao(t,e,r=!1){if(t.multiple){if(e==null)return;if(!ui(e))return eu();for(var s of t.options)s.selected=e.includes(io(s));return}for(s of t.options){var a=io(s);if(mc(a,e)){s.selected=!0;return}}(!r||e!==void 0)&&(t.selectedIndex=-1)}function wv(t){var e=new MutationObserver(r=>{r.every(kv)||("__defaultValue"in t&&Wc(t,!1),"__value"in t&&ao(t,t.__value))});e.observe(t,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),Us(()=>{e.disconnect()})}function io(t){return"__value"in t?t.__value:t.value}function kv(t){if(t.target.closest("selectedcontent")!==null)return!0;if(t.type==="childList"){var e=[...t.addedNodes,...t.removedNodes];return e.length>0&&e.every(r=>r.nodeName==="SELECTEDCONTENT")}return!1}const ps=Symbol("class"),Gs=Symbol("style"),$c=Symbol("is custom element"),Kc=Symbol("is html"),xv=yo?"input":"INPUT",Sv=yo?"option":"OPTION",Gc=yo?"select":"SELECT";function de(t,e,r,s){var a=Yc(t);a[e]!==(a[e]=r)&&(e==="loading"&&(t[Od]=r),r==null?t.removeAttribute(e):typeof r!="string"&&Jc(t).has(e)?t[e]=r:t.setAttribute(e,r))}function jv(t,e,r,s,a=!1,i=!1){var o=Yc(t),l=o[$c],c=!o[Kc],d=e||{},h=t.nodeName===Sv,p=t.nodeName===Gc;for(var f in e)!(f in r)&&f[0]+f[1]!=="$$"&&(r[f]=null);r.class?r.class=Fc(r.class):(s||r[ps])&&(r.class=null),r[Gs]&&(r.style??(r.style=null));var g=Jc(t);if(t.nodeName===xv&&"type"in r&&("value"in r||"__value"in r)){var m=r.type;(m!==d.type||m===void 0&&t.hasAttribute("type"))&&(d.type=m,de(t,"type",m))}for(const C in r){let R=r[C];if(h&&C==="value"&&R==null){t.value=t.__value="",d[C]=R;continue}if(C==="class"){var b=t.namespaceURI==="http://www.w3.org/1999/xhtml";Ze(t,b,R,s,e==null?void 0:e[ps],r[ps]),d[C]=R,d[ps]=r[ps];continue}if(C==="style"){Na(t,R,e==null?void 0:e[Gs],r[Gs]),d[C]=R,d[Gs]=r[Gs];continue}var k=d[C];if(!(R===k&&!(R===void 0&&t.hasAttribute(C)))){d[C]=R;var y=C[0]+C[1];if(y!=="$$")if(y==="on"){const T={},I="$$"+C;let O=C.slice(2);var S=Ku(O);if(Wu(O)&&(O=O.slice(0,-7),T.capture=!0),!S&&k){if(R!=null)continue;t.removeEventListener(O,d[I],T),d[I]=null}if(S)Qe(O,t,R),ar([O]);else if(R!=null){let $=function(F){d[C].call(this,F)};var q=$;d[I]=Uc(O,t,$,T)}}else if(C==="style")de(t,C,R);else if(C==="autofocus")ku(t,!!R);else if(!l&&(C==="__value"||C==="value"&&R!=null))t.value=t.__value=R;else if(C==="selected"&&h)Vc(t,R);else{var x=C;c||(x=Yu(x));var w=x==="defaultValue"||x==="defaultChecked";if(p&&x==="defaultValue")continue;if(R==null&&!l&&!w)if(o[C]=null,x==="value"||x==="checked"){let T=t;const I=e===void 0;if(x==="value"){let O=T.defaultValue;T.removeAttribute(x),T.defaultValue=O,T.value=T.__value=I?O:null}else{let O=T.defaultChecked;T.removeAttribute(x),T.defaultChecked=O,T.checked=I?O:!1}}else t.removeAttribute(C);else w||(l||typeof R!="string")&&g.has(x)?(t[x]=R,x in o&&(o[x]=Pt)):typeof R!="function"&&de(t,x,R)}}}return d}function ns(t,e,r=[],s=[],a=[],i,o=!1,l=!1){xo(a,r,s,c=>{var d=void 0,h={},p=t.nodeName===Gc,f=!1;if(Pc(()=>{var m=e(...c.map(n)),b=jv(t,d,m,i,o,l);if(f&&p){var k=t;"defaultValue"in m&&el(k,m.defaultValue),"value"in m&&ao(k,m.value)}for(let S of Object.getOwnPropertySymbols(h))m[S]||Bt(h[S]);for(let S of Object.getOwnPropertySymbols(m)){var y=m[S];S.description===Qd&&(!d||y!==d[S])&&(h[S]&&Bt(h[S]),h[S]=Yt(()=>mv(t,()=>y))),b[S]=y}d=b}),p){var g=t;hi(()=>{var m=d;"defaultValue"in m&&el(g,m.defaultValue),ao(g,m.value,!0),wv(g)})}f=!0})}function Yc(t){return t[Ha]??(t[Ha]={[$c]:t.nodeName.includes("-"),[Kc]:t.namespaceURI===$l})}var tl=new Map;function Jc(t){var e=t.getAttribute("is")||t.nodeName,r=tl.get(e);if(r)return r;tl.set(e,r=new Set);for(var s,a=t,i=Element.prototype;i!==a;){s=Ol(a);for(var o in s)s[o].set&&o!=="innerHTML"&&o!=="textContent"&&o!=="innerText"&&r.add(o);a=po(a)}return r}function Lo(t,e,r=e){var s=new WeakSet;sc(t,"input",async a=>{var i=a?t.defaultValue:t.value;if(i=Ai(t)?Ti(i):i,r(i),qe!==null&&s.add(qe),await En(),i!==(i=e())){var o=t.selectionStart,l=t.selectionEnd,c=t.value.length;if(t.value=i??"",l!==null){var d=t.value.length;o===l&&l===c&&d>c?(t.selectionStart=d,t.selectionEnd=d):(t.selectionStart=o,t.selectionEnd=Math.min(l,d))}}}),xr(e)==null&&t.value&&(r(Ai(t)?Ti(t.value):t.value),qe!==null&&s.add(qe)),Hs(()=>{var a=e();if(t===document.activeElement){var i=qe;if(s.has(i))return}Ai(t)&&a===Ti(t.value)||t.type==="date"&&!a&&!t.value||a!==t.value&&(t.value=a??"")})}function Pv(t,e,r=e){sc(t,"change",s=>{var a=s?t.defaultChecked:t.checked;r(a)}),xr(e)==null&&r(t.checked),Hs(()=>{var s=e();t.checked=!!s})}function Ai(t){var e=t.type;return e==="number"||e==="range"}function Ti(t){return t===""?null:+t}function Ni(t,e){return t===e||(t==null?void 0:t[Yr])===e}function Rn(t=wo(),e,r,s){var a=dt.r,i=We;return hi(()=>{var o,l;return Hs(()=>{o=l,l=[],xr(()=>{Ni(r(...l),t)||(e(t,...l),o&&Ni(r(...o),t)&&e(null,...o))})}),()=>{let c=i;for(;c!==a&&c.parent!==null&&c.parent.f&Ya;)c=c.parent;const d=()=>{l&&Ni(r(...l),t)&&e(null,...l)},h=c.teardown;c.teardown=()=>{d(),h==null||h()}}}),t}function Cv(t,e,r,s,a){var i=()=>{s(r[t])};r.addEventListener(e,i),a?Hs(()=>{r[t]=a()}):i(),(r===document.body||r===window||r===document)&&Us(()=>{r.removeEventListener(e,i)})}function Ev(t=!1){const e=dt,r=e.l.u;if(!r)return;let s=()=>zc(e.s);if(t){let a=0,i={};const o=Rs(()=>{let l=!1;const c=e.s;for(const d in c)c[d]!==i[d]&&(i[d]=c[d],l=!0);return l&&a++,a});s=()=>n(o)}r.b.length&&Du(()=>{rl(e,s),Fi(r.b)}),xt(()=>{const a=xr(()=>r.m.map(zd));return()=>{for(const i of a)typeof i=="function"&&i()}}),r.a.length&&xt(()=>{rl(e,s),Fi(r.a)})}function rl(t,e){if(t.l.s)for(const r of t.l.s)n(r);e()}const Rv={get(t,e){if(!t.exclude.has(e))return t.props[e]},set(t,e){return!1},getOwnPropertyDescriptor(t,e){if(!t.exclude.has(e)&&e in t.props)return{enumerable:!0,configurable:!0,value:t.props[e]}},has(t,e){return t.exclude.has(e)?!1:e in t.props},ownKeys(t){return Reflect.ownKeys(t.props).filter(e=>!t.exclude.has(e))}};function be(t,e,r){return new Proxy({props:t,exclude:e},Rv)}const qv={get(t,e){let r=t.props.length;for(;r--;){let s=t.props[r];if($s(s)&&(s=s()),typeof s=="object"&&s!==null&&e in s)return s[e]}},set(t,e,r){let s=t.props.length;for(;s--;){let a=t.props[s];$s(a)&&(a=a());const i=jn(a,e);if(i&&i.set)return i.set(r),!0}return!1},getOwnPropertyDescriptor(t,e){let r=t.props.length;for(;r--;){let s=t.props[r];if($s(s)&&(s=s()),typeof s=="object"&&s!==null&&e in s){const a=jn(s,e);return a&&!a.configurable&&(a.configurable=!0),a}}},has(t,e){if(e===Yr||e===Vl)return!1;for(let r of t.props)if($s(r)&&(r=r()),r!=null&&e in r)return!0;return!1},ownKeys(t){const e=[];for(let r of t.props)if($s(r)&&(r=r()),!!r){for(const s in r)e.includes(s)||e.push(s);for(const s of Object.getOwnPropertySymbols(r))e.includes(s)||e.push(s)}return e}};function Ce(...t){return new Proxy({props:t},qv)}function ve(t,e,r,s){var w;var a=!Ds||(r&Wd)!==0,i=(r&Kd)!==0,o=(r&Gd)!==0,l=s,c=!0,d=void 0,h=()=>o&&a?(d??(d=Rs(s)),n(d)):(c&&(c=!1,l=o?xr(s):s),l);let p;if(i){var f=Yr in t||Vl in t;p=((w=jn(t,e))==null?void 0:w.set)??(f&&e in t?q=>t[e]=q:void 0)}var g,m=!1;i?[g,m]=wu(()=>t[e]):g=t[e],g===void 0&&s!==void 0&&(g=h(),p&&(a&&cu(),p(g)));var b;if(a?b=()=>{var q=t[e];return q===void 0?h():(c=!0,q)}:b=()=>{var q=t[e];return q!==void 0&&(l=void 0),q===void 0?l:q},a&&(r&$d)===0)return b;if(p){var k=t.$$legacy;return(function(q,C){return arguments.length>0?((!a||!C||k||m)&&p(C?b():q),q):b()})}var y=!1,S=((r&Vd)!==0?Rs:So)(()=>(y=!1,b()));i&&n(S);var x=We;return(function(q,C){if(arguments.length>0){const R=C?n(S):a&&i?tt(q):q;return _(S,R),y=!0,l!==void 0&&(l=R),q}return fn&&y||(x.f&nr)!==0?S.v:n(S)})}function Ia(t){dt===null&&bo(),Ds&&dt.l!==null?Av(dt).m.push(t):xt(()=>{const e=xr(t);if(typeof e=="function")return e})}function Lv(t){dt===null&&bo(),Ia(()=>()=>xr(t))}function Av(t){var e=t.l;return e.u??(e.u={a:[],b:[],m:[]})}const Tv="5";var Dl;typeof window<"u"&&((Dl=window.__svelte??(window.__svelte={})).v??(Dl.v=new Set)).add(Tv);var Nv=P('<span><span class="dot svelte-1m0dk8d" aria-hidden="true"></span><!></span>');function Tn(t,e){let r=ve(e,"tone",3,"neutral");var s=Nv(),a=v(E(s));ct(a,()=>e.children),M(()=>Ze(s,1,`ui-badge ${r()??""}`,"svelte-1m0dk8d")),u(t,s)}/**
|
|
3
|
-
* @file
|
|
4
|
-
* @license @lucide/svelte v1.41.0 - ISC
|
|
5
|
-
*
|
|
6
|
-
* This source code is licensed under the ISC license.
|
|
7
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
8
|
-
*/const Iv={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"};/**
|
|
9
|
-
* @file
|
|
10
|
-
* @license @lucide/svelte v1.41.0 - ISC
|
|
11
|
-
*
|
|
12
|
-
* This source code is licensed under the ISC license.
|
|
13
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
14
|
-
*/const Mv=t=>{for(const e in t)if(e.startsWith("aria-")||e==="role"||e==="title")return!0;return!1};/**
|
|
15
|
-
* @file
|
|
16
|
-
* @license @lucide/svelte v1.41.0 - ISC
|
|
17
|
-
*
|
|
18
|
-
* This source code is licensed under the ISC license.
|
|
19
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
20
|
-
*/const Dv=Symbol("lucide-context"),zv=()=>Xl(Dv);var Ov=new Set(["$$slots","$$events","$$legacy","name","color","size","strokeWidth","absoluteStrokeWidth","iconNode","children"]),Uv=ev("<svg><!><!></svg>");function Re(t,e){ze(e,!0);const r=zv()??{},s=ve(e,"color",19,()=>r.color??"currentColor"),a=ve(e,"size",19,()=>r.size??24),i=ve(e,"strokeWidth",19,()=>r.strokeWidth??2),o=ve(e,"absoluteStrokeWidth",19,()=>r.absoluteStrokeWidth??!1),l=ve(e,"iconNode",19,()=>[]),c=be(e,Ov),d=j(()=>o()?Number(i())*24/Number(a()):i());var h=Uv();ns(h,g=>({...Iv,...g,...c,width:a(),height:a(),stroke:s(),"stroke-width":n(d),class:["lucide-icon lucide",r.class,e.name&&`lucide-${e.name}`,e.class]}),[()=>!e.children&&!Mv(c)&&{"aria-hidden":"true"}]);var p=E(h);Ae(p,17,l,kt,(g,m)=>{var b=j(()=>fi(n(m),2));let k=()=>n(b)[0],y=()=>n(b)[1];var S=Me(),x=oe(S);gv(x,k,!0,(w,q)=>{ns(w,()=>({...y()}))}),u(g,S)});var f=v(p);ct(f,()=>e.children??Mt),u(t,h),Oe()}var Hv=new Set(["$$slots","$$events","$$legacy"]);function Bv(t,e){let r=be(e,Hv);const s=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2"}]];Re(t,Ce({name:"activity"},()=>r,{get iconNode(){return s}}))}var Fv=new Set(["$$slots","$$events","$$legacy"]);function Vv(t,e){let r=be(e,Fv);const s=[["path",{d:"M12 5v14"}],["path",{d:"m19 12-7 7-7-7"}]];Re(t,Ce({name:"arrow-down"},()=>r,{get iconNode(){return s}}))}var Wv=new Set(["$$slots","$$events","$$legacy"]);function Xc(t,e){let r=be(e,Wv);const s=[["path",{d:"M8 3 4 7l4 4"}],["path",{d:"M4 7h16"}],["path",{d:"m16 21 4-4-4-4"}],["path",{d:"M20 17H4"}]];Re(t,Ce({name:"arrow-left-right"},()=>r,{get iconNode(){return s}}))}var $v=new Set(["$$slots","$$events","$$legacy"]);function pi(t,e){let r=be(e,$v);const s=[["path",{d:"M7 7h10v10"}],["path",{d:"M7 17 17 7"}]];Re(t,Ce({name:"arrow-up-right"},()=>r,{get iconNode(){return s}}))}var Kv=new Set(["$$slots","$$events","$$legacy"]);function Qc(t,e){let r=be(e,Kv);const s=[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z"}],["path",{d:"m7 16.5-4.74-2.85"}],["path",{d:"m7 16.5 5-3"}],["path",{d:"M7 16.5v5.17"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z"}],["path",{d:"m17 16.5-5-3"}],["path",{d:"m17 16.5 4.74-2.85"}],["path",{d:"M17 16.5v5.17"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z"}],["path",{d:"M12 8 7.26 5.15"}],["path",{d:"m12 8 4.74-2.85"}],["path",{d:"M12 13.5V8"}]];Re(t,Ce({name:"boxes"},()=>r,{get iconNode(){return s}}))}var Gv=new Set(["$$slots","$$events","$$legacy"]);function Mr(t,e){let r=be(e,Gv);const s=[["path",{d:"M20 6 9 17l-5-5"}]];Re(t,Ce({name:"check"},()=>r,{get iconNode(){return s}}))}var Yv=new Set(["$$slots","$$events","$$legacy"]);function Zc(t,e){let r=be(e,Yv);const s=[["path",{d:"m6 9 6 6 6-6"}]];Re(t,Ce({name:"chevron-down"},()=>r,{get iconNode(){return s}}))}var Jv=new Set(["$$slots","$$events","$$legacy"]);function Xv(t,e){let r=be(e,Jv);const s=[["path",{d:"m18 15-6-6-6 6"}]];Re(t,Ce({name:"chevron-up"},()=>r,{get iconNode(){return s}}))}var Qv=new Set(["$$slots","$$events","$$legacy"]);function ys(t,e){let r=be(e,Qv);const s=[["circle",{cx:"12",cy:"12",r:"10"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16"}]];Re(t,Ce({name:"circle-alert"},()=>r,{get iconNode(){return s}}))}var Zv=new Set(["$$slots","$$events","$$legacy"]);function ef(t,e){let r=be(e,Zv);const s=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"m16 9-5.5 5.5L8 12"}]];Re(t,Ce({name:"circle-check"},()=>r,{get iconNode(){return s}}))}var tf=new Set(["$$slots","$$events","$$legacy"]);function rf(t,e){let r=be(e,tf);const s=[["path",{d:"m16 18 6-6-6-6"}],["path",{d:"m8 6-6 6 6 6"}]];Re(t,Ce({name:"code"},()=>r,{get iconNode(){return s}}))}var nf=new Set(["$$slots","$$events","$$legacy"]);function hn(t,e){let r=be(e,nf);const s=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"}]];Re(t,Ce({name:"copy"},()=>r,{get iconNode(){return s}}))}var sf=new Set(["$$slots","$$events","$$legacy"]);function af(t,e){let r=be(e,sf);const s=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5"}],["path",{d:"M3 12A9 3 0 0 0 21 12"}]];Re(t,Ce({name:"database"},()=>r,{get iconNode(){return s}}))}var of=new Set(["$$slots","$$events","$$legacy"]);function lf(t,e){let r=be(e,of);const s=[["circle",{cx:"12",cy:"12",r:"1"}],["circle",{cx:"19",cy:"12",r:"1"}],["circle",{cx:"5",cy:"12",r:"1"}]];Re(t,Ce({name:"ellipsis"},()=>r,{get iconNode(){return s}}))}var cf=new Set(["$$slots","$$events","$$legacy"]);function df(t,e){let r=be(e,cf);const s=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"}],["circle",{cx:"12",cy:"12",r:"3"}]];Re(t,Ce({name:"eye"},()=>r,{get iconNode(){return s}}))}var uf=new Set(["$$slots","$$events","$$legacy"]);function vf(t,e){let r=be(e,uf);const s=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143"}],["path",{d:"m2 2 20 20"}]];Re(t,Ce({name:"eye-off"},()=>r,{get iconNode(){return s}}))}var ff=new Set(["$$slots","$$events","$$legacy"]);function hf(t,e){let r=be(e,ff);const s=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"}],["path",{d:"M12 17h.01"}],["path",{d:"M9.1 9a3 3 0 0 1 5.82 1c0 2-3 3-3 3"}]];Re(t,Ce({name:"file-question-mark"},()=>r,{get iconNode(){return s}}))}var gf=new Set(["$$slots","$$events","$$legacy"]);function pf(t,e){let r=be(e,gf);const s=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5"}],["circle",{cx:"11.5",cy:"14.5",r:"2.5"}],["path",{d:"M13.3 16.3 15 18"}]];Re(t,Ce({name:"file-search"},()=>r,{get iconNode(){return s}}))}var mf=new Set(["$$slots","$$events","$$legacy"]);function _f(t,e){let r=be(e,mf);const s=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5"}],["path",{d:"M10 9H8"}],["path",{d:"M16 13H8"}],["path",{d:"M16 17H8"}]];Re(t,Ce({name:"file-text"},()=>r,{get iconNode(){return s}}))}var yf=new Set(["$$slots","$$events","$$legacy"]);function nl(t,e){let r=be(e,yf);const s=[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"}]];Re(t,Ce({name:"folder-open"},()=>r,{get iconNode(){return s}}))}var bf=new Set(["$$slots","$$events","$$legacy"]);function sl(t,e){let r=be(e,bf);const s=[["path",{d:"M15 6a9 9 0 0 0-9 9V3"}],["circle",{cx:"18",cy:"6",r:"3"}],["circle",{cx:"6",cy:"18",r:"3"}]];Re(t,Ce({name:"git-branch"},()=>r,{get iconNode(){return s}}))}var wf=new Set(["$$slots","$$events","$$legacy"]);function kf(t,e){let r=be(e,wf);const s=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"}],["path",{d:"M2 12h20"}]];Re(t,Ce({name:"globe"},()=>r,{get iconNode(){return s}}))}var xf=new Set(["$$slots","$$events","$$legacy"]);function Sf(t,e){let r=be(e,xf);const s=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"M12 16v-4"}],["path",{d:"M12 8h.01"}]];Re(t,Ce({name:"info"},()=>r,{get iconNode(){return s}}))}var jf=new Set(["$$slots","$$events","$$legacy"]);function al(t,e){let r=be(e,jf);const s=[["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"}]];Re(t,Ce({name:"key-round"},()=>r,{get iconNode(){return s}}))}var Pf=new Set(["$$slots","$$events","$$legacy"]);function ed(t,e){let r=be(e,Pf);const s=[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17"}]];Re(t,Ce({name:"layers"},()=>r,{get iconNode(){return s}}))}var Cf=new Set(["$$slots","$$events","$$legacy"]);function Ef(t,e){let r=be(e,Cf);const s=[["path",{d:"M9 17H7A5 5 0 0 1 7 7"}],["path",{d:"M15 7h2a5 5 0 0 1 4 8"}],["line",{x1:"8",x2:"12",y1:"12",y2:"12"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22"}]];Re(t,Ce({name:"link-2-off"},()=>r,{get iconNode(){return s}}))}var Rf=new Set(["$$slots","$$events","$$legacy"]);function qf(t,e){let r=be(e,Rf);const s=[["path",{d:"M9 17H7A5 5 0 0 1 7 7h2"}],["path",{d:"M15 7h2a5 5 0 1 1 0 10h-2"}],["line",{x1:"8",x2:"16",y1:"12",y2:"12"}]];Re(t,Ce({name:"link-2"},()=>r,{get iconNode(){return s}}))}var Lf=new Set(["$$slots","$$events","$$legacy"]);function Af(t,e){let r=be(e,Lf);const s=[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}]];Re(t,Ce({name:"link"},()=>r,{get iconNode(){return s}}))}var Tf=new Set(["$$slots","$$events","$$legacy"]);function Nf(t,e){let r=be(e,Tf);const s=[["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"}]];Re(t,Ce({name:"list-checks"},()=>r,{get iconNode(){return s}}))}var If=new Set(["$$slots","$$events","$$legacy"]);function ri(t,e){let r=be(e,If);const s=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56"}]];Re(t,Ce({name:"loader-circle"},()=>r,{get iconNode(){return s}}))}var Mf=new Set(["$$slots","$$events","$$legacy"]);function Df(t,e){let r=be(e,Mf);const s=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}],["path",{d:"M3 15h18"}]];Re(t,Ce({name:"panel-bottom"},()=>r,{get iconNode(){return s}}))}var zf=new Set(["$$slots","$$events","$$legacy"]);function Of(t,e){let r=be(e,zf);const s=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}],["path",{d:"M9 3v18"}],["path",{d:"m16 15-3-3 3-3"}]];Re(t,Ce({name:"panel-left-close"},()=>r,{get iconNode(){return s}}))}var Uf=new Set(["$$slots","$$events","$$legacy"]);function Hf(t,e){let r=be(e,Uf);const s=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}],["path",{d:"M9 3v18"}],["path",{d:"m14 9 3 3-3 3"}]];Re(t,Ce({name:"panel-left-open"},()=>r,{get iconNode(){return s}}))}var Bf=new Set(["$$slots","$$events","$$legacy"]);function Ff(t,e){let r=be(e,Bf);const s=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}],["path",{d:"M3 9h18"}],["path",{d:"M9 21V9"}]];Re(t,Ce({name:"panels-top-left"},()=>r,{get iconNode(){return s}}))}var Vf=new Set(["$$slots","$$events","$$legacy"]);function td(t,e){let r=be(e,Vf);const s=[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1"}]];Re(t,Ce({name:"pause"},()=>r,{get iconNode(){return s}}))}var Wf=new Set(["$$slots","$$events","$$legacy"]);function Bs(t,e){let r=be(e,Wf);const s=[["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"}]];Re(t,Ce({name:"play"},()=>r,{get iconNode(){return s}}))}var $f=new Set(["$$slots","$$events","$$legacy"]);function il(t,e){let r=be(e,$f);const s=[["path",{d:"M5 12h14"}],["path",{d:"M12 5v14"}]];Re(t,Ce({name:"plus"},()=>r,{get iconNode(){return s}}))}var Kf=new Set(["$$slots","$$events","$$legacy"]);function Ao(t,e){let r=be(e,Kf);const s=[["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"}]];Re(t,Ce({name:"refresh-cw"},()=>r,{get iconNode(){return s}}))}var Gf=new Set(["$$slots","$$events","$$legacy"]);function Yf(t,e){let r=be(e,Gf);const s=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"}],["path",{d:"M3 3v5h5"}],["path",{d:"M12 7v5l4 2"}]];Re(t,Ce({name:"rotate-ccw-clock"},()=>r,{get iconNode(){return s}}))}var Jf=new Set(["$$slots","$$events","$$legacy"]);function ni(t,e){let r=be(e,Jf);const s=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"}],["path",{d:"M3 3v5h5"}]];Re(t,Ce({name:"rotate-ccw"},()=>r,{get iconNode(){return s}}))}var Xf=new Set(["$$slots","$$events","$$legacy"]);function Qf(t,e){let r=be(e,Xf);const s=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7"}]];Re(t,Ce({name:"save"},()=>r,{get iconNode(){return s}}))}var Zf=new Set(["$$slots","$$events","$$legacy"]);function rd(t,e){let r=be(e,Zf);const s=[["path",{d:"M15 12h-5"}],["path",{d:"M15 8h-5"}],["path",{d:"M19 17V5a2 2 0 0 0-2-2H4"}],["path",{d:"M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3"}]];Re(t,Ce({name:"scroll-text"},()=>r,{get iconNode(){return s}}))}var eh=new Set(["$$slots","$$events","$$legacy"]);function Fs(t,e){let r=be(e,eh);const s=[["path",{d:"m21 21-4.34-4.34"}],["circle",{cx:"11",cy:"11",r:"8"}]];Re(t,Ce({name:"search"},()=>r,{get iconNode(){return s}}))}var th=new Set(["$$slots","$$events","$$legacy"]);function ol(t,e){let r=be(e,th);const s=[["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"}]];Re(t,Ce({name:"settings"},()=>r,{get iconNode(){return s}}))}var rh=new Set(["$$slots","$$events","$$legacy"]);function nh(t,e){let r=be(e,rh);const s=[["circle",{cx:"18",cy:"5",r:"3"}],["circle",{cx:"6",cy:"12",r:"3"}],["circle",{cx:"18",cy:"19",r:"3"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49"}]];Re(t,Ce({name:"share-2"},()=>r,{get iconNode(){return s}}))}var sh=new Set(["$$slots","$$events","$$legacy"]);function ah(t,e){let r=be(e,sh);const s=[["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:"M12 8v4"}],["path",{d:"M12 16h.01"}]];Re(t,Ce({name:"shield-alert"},()=>r,{get iconNode(){return s}}))}var ih=new Set(["$$slots","$$events","$$legacy"]);function nd(t,e){let r=be(e,ih);const s=[["path",{d:"M10 5H3"}],["path",{d:"M12 19H3"}],["path",{d:"M14 3v4"}],["path",{d:"M16 17v4"}],["path",{d:"M21 12h-9"}],["path",{d:"M21 19h-5"}],["path",{d:"M21 5h-7"}],["path",{d:"M8 10v4"}],["path",{d:"M8 12H3"}]];Re(t,Ce({name:"sliders-horizontal"},()=>r,{get iconNode(){return s}}))}var oh=new Set(["$$slots","$$events","$$legacy"]);function To(t,e){let r=be(e,oh);const s=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}]];Re(t,Ce({name:"square"},()=>r,{get iconNode(){return s}}))}var lh=new Set(["$$slots","$$events","$$legacy"]);function ch(t,e){let r=be(e,lh);const s=[["path",{d:"M12 19h8"}],["path",{d:"m4 17 6-6-6-6"}]];Re(t,Ce({name:"terminal"},()=>r,{get iconNode(){return s}}))}var dh=new Set(["$$slots","$$events","$$legacy"]);function uh(t,e){let r=be(e,dh);const s=[["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"}]];Re(t,Ce({name:"trash"},()=>r,{get iconNode(){return s}}))}var vh=new Set(["$$slots","$$events","$$legacy"]);function fh(t,e){let r=be(e,vh);const s=[["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"}]];Re(t,Ce({name:"triangle-alert"},()=>r,{get iconNode(){return s}}))}var hh=new Set(["$$slots","$$events","$$legacy"]);function ss(t,e){let r=be(e,hh);const s=[["path",{d:"M18 6 6 18"}],["path",{d:"m6 6 12 12"}]];Re(t,Ce({name:"x"},()=>r,{get iconNode(){return s}}))}var gh=new Set(["$$slots","$$events","$$legacy","variant","size","loading","href","target","rel","icon","trailingIcon","children","class","type","disabled"]),ph=P("<a><!><!><!></a>"),mh=P("<button><!><!><!></button>");function we(t,e){let r=ve(e,"variant",3,"secondary"),s=ve(e,"size",3,"md"),a=ve(e,"loading",3,!1),i=ve(e,"class",3,""),o=ve(e,"type",3,"button"),l=be(e,gh);const c=j(()=>s()==="sm"?14:16);var d=Me(),h=oe(d);{var p=g=>{var m=ph();ns(m,()=>({class:`ui-btn ${r()??""} ${s()??""} ${i()??""}`,href:e.href,target:e.target,rel:e.rel??(e.target==="_blank"?"noreferrer":void 0),...l}),void 0,void 0,void 0,"svelte-1j8p21y");var b=E(m);{var k=w=>{var q=Me(),C=oe(q);Tr(C,()=>e.icon,(R,T)=>{T(R,{get size(){return n(c)},"aria-hidden":"true"})}),u(w,q)};H(b,w=>{e.icon&&w(k)})}var y=v(b);ct(y,()=>e.children??Mt);var S=v(y);{var x=w=>{var q=Me(),C=oe(q);Tr(C,()=>e.trailingIcon,(R,T)=>{T(R,{get size(){return n(c)},"aria-hidden":"true",class:"trailing"})}),u(w,q)};H(S,w=>{e.trailingIcon&&w(x)})}u(g,m)},f=g=>{var m=mh();ns(m,()=>({class:`ui-btn ${r()??""} ${s()??""} ${i()??""}`,type:o(),disabled:e.disabled||a(),"aria-busy":a()||void 0,...l}),void 0,void 0,void 0,"svelte-1j8p21y");var b=E(m);{var k=q=>{ri(q,{get size(){return n(c)},class:"spin","aria-hidden":"true"})},y=q=>{var C=Me(),R=oe(C);Tr(R,()=>e.icon,(T,I)=>{I(T,{get size(){return n(c)},"aria-hidden":"true"})}),u(q,C)};H(b,q=>{a()?q(k):e.icon&&q(y,1)})}var S=v(b);ct(S,()=>e.children??Mt);var x=v(S);{var w=q=>{var C=Me(),R=oe(C);Tr(R,()=>e.trailingIcon,(T,I)=>{I(T,{get size(){return n(c)},"aria-hidden":"true",class:"trailing"})}),u(q,C)};H(x,q=>{e.trailingIcon&&q(w)})}u(g,m)};H(h,g=>{e.href?g(p):g(f,-1)})}u(t,d)}var _h=new Set(["$$slots","$$events","$$legacy","checked","indeterminate","children","class"]),yh=P("<span><!></span>"),bh=P("<label><input/> <!></label>");function sd(t,e){ze(e,!0);let r=ve(e,"checked",15,!1),s=ve(e,"indeterminate",15,!1),a=ve(e,"class",3,""),i=be(e,_h);var o=bh(),l=E(o);ns(l,()=>({type:"checkbox",...i}),void 0,void 0,void 0,"svelte-n6wv4x",!0);var c=v(l,2);{var d=h=>{var p=yh(),f=E(p);ct(f,()=>e.children),u(h,p)};H(c,h=>{e.children&&h(d)})}M(()=>Ze(o,1,`ui-check ${a()??""}`,"svelte-n6wv4x")),Pv(l,r),Cv("indeterminate","change",l,s,s),u(t,o),Oe()}var wh=P('<p class="svelte-1v9wgu6"> </p>'),kh=P('<div class="actions svelte-1v9wgu6"><!></div>'),xh=P('<div class="panel svelte-1v9wgu6"><h2 class="svelte-1v9wgu6"> </h2> <!> <!> <!></div>'),Sh=P('<dialog class="svelte-1v9wgu6"><!></dialog>');function No(t,e){const r=gi();ze(e,!0);let s=ve(e,"open",15,!1),a=G(void 0);xt(()=>{n(a)&&(s()&&!n(a).open&&n(a).showModal(),!s()&&n(a).open&&n(a).close())});function i(){var d;s(!1),(d=e.onclose)==null||d.call(e)}var o=Sh(),l=E(o);{var c=d=>{var h=xh(),p=E(h),f=V(p,!0),g=v(p,2);{var m=S=>{var x=wh(),w=V(x,!0);M(()=>{de(x,"id",`${r}-body`),L(w,e.description)}),u(S,x)};H(g,S=>{e.description&&S(m)})}var b=v(g,2);ct(b,()=>e.children??Mt);var k=v(b,2);{var y=S=>{var x=kh(),w=E(x);ct(w,()=>e.actions),u(S,x)};H(k,S=>{e.actions&&S(y)})}M(()=>{de(p,"id",`${r}-title`),L(f,e.title)}),u(d,h)};H(l,d=>{s()&&d(c)})}Rn(o,d=>_(a,d),()=>n(a)),M(()=>{de(o,"aria-labelledby",`${r}-title`),de(o,"aria-describedby",e.description?`${r}-body`:void 0)}),Ht("cancel",o,d=>{d.preventDefault(),i()}),Qe("click",o,d=>{d.target===n(a)&&i()}),u(t,o),Oe()}ar(["click"]);class jh{constructor(){et(this,"queue",[]);et(this,"listeners",new Set)}subscribe(e){return this.listeners.add(e),e(this.queue[0]??null),()=>{this.listeners.delete(e)}}ask(e){return new Promise(r=>{this.queue.push({...e,resolve:r}),this.queue.length===1&&this.emit()})}answer(e){const r=this.queue.shift();r&&(r.resolve(e),this.emit())}emit(){for(const e of this.listeners)e(this.queue[0]??null)}}const ta=new jh,Vs=t=>ta.ask(t);var Ph=P("<!> <!>",1);function Ch(t,e){ze(e,!0);const r=()=>rc(ta,"$confirmQueue",s),[s,a]=nc();let i=G(!1);xt(()=>{_(i,!!r(),!0)});var o=Me(),l=oe(o);{var c=d=>{const h=j(r);No(d,{get title(){return n(h).title},get description(){return n(h).body},onclose:()=>ta.answer(!1),get open(){return n(i)},set open(f){_(i,f,!0)},actions:f=>{var g=Ph(),m=oe(g);we(m,{variant:"ghost",onclick:()=>ta.answer(!1),children:(k,y)=>{var S=ie();M(()=>L(S,n(h).cancelLabel??"Cancel")),u(k,S)},$$slots:{default:!0}});var b=v(m,2);{let k=j(()=>n(h).danger?"danger-solid":"primary");we(b,{get variant(){return n(k)},autofocus:!0,onclick:()=>ta.answer(!0),children:(y,S)=>{var x=ie();M(()=>L(x,n(h).confirmLabel)),u(y,x)},$$slots:{default:!0}})}u(f,g)},$$slots:{actions:!0}})};H(l,d=>{r()&&d(c)})}u(t,o),Oe(),a()}var Eh=P('<span class="icon svelte-1kdgx74" aria-hidden="true"><!></span>'),Rh=P('<p class="svelte-1kdgx74"> </p>'),qh=P('<div class="action svelte-1kdgx74"><!></div>'),Lh=P('<div class="ui-empty svelte-1kdgx74"><!> <h2 class="svelte-1kdgx74"> </h2> <!> <!></div>');function _r(t,e){var r=Lh(),s=E(r);{var a=p=>{var f=Eh(),g=E(f);Tr(g,()=>e.icon,(m,b)=>{b(m,{size:20})}),u(p,f)};H(s,p=>{e.icon&&p(a)})}var i=v(s,2),o=V(i,!0),l=v(i,2);{var c=p=>{var f=Rh(),g=V(f,!0);M(()=>L(g,e.body)),u(p,f)};H(l,p=>{e.body&&p(c)})}var d=v(l,2);{var h=p=>{var f=qh(),g=E(f);ct(g,()=>e.action),u(p,f)};H(d,p=>{e.action&&p(h)})}M(()=>L(o,e.title)),u(t,r)}var Ah=P('<p class="hint svelte-xmes86"> </p>'),Th=P('<p class="error svelte-xmes86" role="alert"> </p>'),Nh=P('<div><label class="svelte-xmes86"> </label> <!> <!> <!></div>');function tr(t,e){const r=gi();ze(e,!0);let s=ve(e,"class",3,"");const a=j(()=>[e.hint?`${r}-hint`:"",e.error?`${r}-error`:""].filter(Boolean).join(" ")||void 0);var i=Nh(),o=E(i),l=V(o,!0),c=v(o,2);{let g=j(()=>({id:r,describedby:n(a),invalid:!!e.error}));ct(c,()=>e.children,()=>n(g))}var d=v(c,2);{var h=g=>{var m=Ah(),b=V(m,!0);M(()=>{de(m,"id",`${r}-hint`),L(b,e.hint)}),u(g,m)};H(d,g=>{e.hint&&g(h)})}var p=v(d,2);{var f=g=>{var m=Th(),b=V(m,!0);M(()=>{de(m,"id",`${r}-error`),L(b,e.error)}),u(g,m)};H(p,g=>{e.error&&g(f)})}M(()=>{Ze(i,1,`ui-field ${s()??""}`,"svelte-xmes86"),de(o,"for",r),L(l,e.label)}),u(t,i),Oe()}var Ih=new Set(["$$slots","$$events","$$legacy","label","icon","variant","size","pressed","class","type"]),Mh=P("<button><!></button>");function ls(t,e){let r=ve(e,"variant",3,"ghost"),s=ve(e,"size",3,"md"),a=ve(e,"class",3,""),i=ve(e,"type",3,"button"),o=be(e,Ih);var l=Mh();ns(l,()=>({class:`ui-icon-btn ${r()??""} ${s()??""} ${a()??""}`,type:i(),"aria-label":e.label,title:e.label,"aria-pressed":e.pressed,...o}),void 0,void 0,void 0,"svelte-1tifdu9");var c=E(l);{let d=j(()=>s()==="sm"?14:16);Tr(c,()=>e.icon,(h,p)=>{p(h,{get size(){return n(d)},"aria-hidden":"true"})})}u(t,l)}var Dh=new Set(["$$slots","$$events","$$legacy","value","mono","invalid","icon","size","class"]),zh=P("<span><!> <input/></span>");function It(t,e){ze(e,!0);let r=ve(e,"value",15),s=ve(e,"mono",3,!1),a=ve(e,"invalid",3,!1),i=ve(e,"size",3,"md"),o=ve(e,"class",3,""),l=be(e,Dh);var c=zh();let d;var h=E(c);{var p=g=>{var m=Me(),b=oe(m);Tr(b,()=>e.icon,(k,y)=>{y(k,{size:16,"aria-hidden":"true",class:"lead"})}),u(g,m)};H(h,g=>{e.icon&&g(p)})}var f=v(h,2);ns(f,()=>({class:`ui-input ${i()??""}`,"aria-invalid":a()||void 0,...l,[ps]:{mono:s()}}),void 0,void 0,void 0,"svelte-120y3by",!0),M(g=>d=Ze(c,1,`ui-input-wrap ${o()??""}`,"svelte-120y3by",d,{"has-icon":g}),[()=>!!e.icon]),Lo(f,r),u(t,c),Oe()}var Oh=P('<div class="ui-list svelte-p8xd1e" role="list"><!></div>');function qn(t,e){var r=Oh(),s=E(r);ct(s,()=>e.children),M(()=>de(r,"aria-label",e.label)),u(t,r)}const Ts=Math.min,cn=Math.max,si=Math.round,Ua=Math.floor,dn=t=>({x:t,y:t}),Uh={left:"right",right:"left",bottom:"top",top:"bottom"};function Hh(t,e,r){return cn(t,Ts(e,r))}function Ma(t,e){return typeof t=="function"?t(e):t}function as(t){return t.split("-")[0]}function Da(t){return t.split("-")[1]}function ad(t){return t==="x"?"y":"x"}function id(t){return t==="y"?"height":"width"}function ln(t){const e=t[0];return e==="t"||e==="b"?"y":"x"}function od(t){return ad(ln(t))}function Bh(t,e,r){r===void 0&&(r=!1);const s=Da(t),a=od(t),i=id(a);let o=a==="x"?s===(r?"end":"start")?"right":"left":s==="start"?"bottom":"top";return e.reference[i]>e.floating[i]&&(o=ai(o)),[o,ai(o)]}function Fh(t){const e=ai(t);return[oo(t),e,oo(e)]}function oo(t){return t.includes("start")?t.replace("start","end"):t.replace("end","start")}const ll=["left","right"],cl=["right","left"],Vh=["top","bottom"],Wh=["bottom","top"];function $h(t,e,r){switch(t){case"top":case"bottom":return r?e?cl:ll:e?ll:cl;case"left":case"right":return e?Vh:Wh;default:return[]}}function Kh(t,e,r,s){const a=Da(t);let i=$h(as(t),r==="start",s);return a&&(i=i.map(o=>o+"-"+a),e&&(i=i.concat(i.map(oo)))),i}function ai(t){const e=as(t);return Uh[e]+t.slice(e.length)}function Gh(t){var e,r,s,a;return{top:(e=t.top)!=null?e:0,right:(r=t.right)!=null?r:0,bottom:(s=t.bottom)!=null?s:0,left:(a=t.left)!=null?a:0}}function Yh(t){return typeof t!="number"?Gh(t):{top:t,right:t,bottom:t,left:t}}function ii(t){const{x:e,y:r,width:s,height:a}=t;return{width:s,height:a,top:r,left:e,right:e+s,bottom:r+a,x:e,y:r}}function dl(t,e,r){let{reference:s,floating:a}=t;const i=ln(e),o=od(e),l=id(o),c=as(e),d=i==="y",h=s.x+s.width/2-a.width/2,p=s.y+s.height/2-a.height/2,f=s[l]/2-a[l]/2;let g;switch(c){case"top":g={x:h,y:s.y-a.height};break;case"bottom":g={x:h,y:s.y+s.height};break;case"right":g={x:s.x+s.width,y:p};break;case"left":g={x:s.x-a.width,y:p};break;default:g={x:s.x,y:s.y}}const m=Da(e);return m&&(g[o]+=f*(m==="end"?1:-1)*(r&&d?-1:1)),g}async function Jh(t,e){var r;e===void 0&&(e={});const{x:s,y:a,platform:i,rects:o,elements:l,strategy:c}=t,{boundary:d="clippingAncestors",rootBoundary:h="viewport",elementContext:p="floating",altBoundary:f=!1,padding:g=0}=Ma(e,t),m=Yh(g),k=l[f?p==="floating"?"reference":"floating":p],y=ii(await i.getClippingRect({element:(r=await(i.isElement==null?void 0:i.isElement(k)))==null||r?k:k.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(l.floating)),boundary:d,rootBoundary:h,strategy:c})),S=p==="floating"?{x:s,y:a,width:o.floating.width,height:o.floating.height}:o.reference,x=await(i.getOffsetParent==null?void 0:i.getOffsetParent(l.floating)),w=await(i.isElement==null?void 0:i.isElement(x))&&await(i.getScale==null?void 0:i.getScale(x))||{x:1,y:1},q=ii(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:l,rect:S,offsetParent:x,strategy:c}):S);return{top:(y.top-q.top+m.top)/w.y,bottom:(q.bottom-y.bottom+m.bottom)/w.y,left:(y.left-q.left+m.left)/w.x,right:(q.right-y.right+m.right)/w.x}}const Xh=50,Qh=async(t,e,r)=>{const{placement:s="bottom",strategy:a="absolute",middleware:i=[],platform:o}=r,l=o.detectOverflow?o:{...o,detectOverflow:Jh},c=await(o.isRTL==null?void 0:o.isRTL(e));let d=await o.getElementRects({reference:t,floating:e,strategy:a}),{x:h,y:p}=dl(d,s,c),f=s,g=0;const m={};for(let b=0;b<i.length;b++){const k=i[b];if(!k)continue;const{name:y,fn:S}=k,{x,y:w,data:q,reset:C}=await S({x:h,y:p,initialPlacement:s,placement:f,strategy:a,middlewareData:m,rects:d,platform:l,elements:{reference:t,floating:e}});h=x??h,p=w??p,m[y]={...m[y],...q},C&&g<Xh&&(g++,typeof C=="object"&&(C.placement&&(f=C.placement),C.rects&&(d=C.rects===!0?await o.getElementRects({reference:t,floating:e,strategy:a}):C.rects),{x:h,y:p}=dl(d,f,c)),b=-1)}return{x:h,y:p,placement:f,strategy:a,middlewareData:m}},Zh=function(t){return t===void 0&&(t={}),{name:"flip",options:t,async fn(e){var r,s;const{placement:a,middlewareData:i,rects:o,initialPlacement:l,platform:c,elements:d}=e,{mainAxis:h=!0,crossAxis:p=!0,fallbackPlacements:f,fallbackStrategy:g="bestFit",fallbackAxisSideDirection:m="none",flipAlignment:b=!0,...k}=Ma(t,e);if((r=i.arrow)!=null&&r.alignmentOffset)return{};const y=as(a),S=ln(l),x=as(l)===l,w=await(c.isRTL==null?void 0:c.isRTL(d.floating)),q=f||(x||!b?[ai(l)]:Fh(l)),C=m!=="none";!f&&C&&q.push(...Kh(l,b,m,w));const R=[l,...q],T=await c.detectOverflow(e,k),I=[];let O=((s=i.flip)==null?void 0:s.overflows)||[];if(h&&I.push(T[y]),p){const N=Bh(a,o,w);I.push(T[N[0]],T[N[1]])}if(O=[...O,{placement:a,overflows:I}],!I.every(N=>N<=0)){var $,F;const N=((($=i.flip)==null?void 0:$.index)||0)+1,A=R[N];if(A&&(!(p==="alignment"?S!==ln(A):!1)||O.every(U=>ln(U.placement)===S?U.overflows[0]>0:!0)))return{data:{index:N,overflows:O},reset:{placement:A}};let z=(F=O.filter(W=>W.overflows[0]<=0).sort((W,U)=>W.overflows[1]-U.overflows[1])[0])==null?void 0:F.placement;if(!z)switch(g){case"bestFit":{var K;const W=(K=O.filter(U=>{if(C){const Y=ln(U.placement);return Y===S||Y==="y"}return!0}).map(U=>[U.placement,U.overflows.filter(Y=>Y>0).reduce((Y,Z)=>Y+Z,0)]).sort((U,Y)=>U[1]-Y[1])[0])==null?void 0:K[0];W&&(z=W);break}case"initialPlacement":z=l;break}if(a!==z)return{reset:{placement:z}}}return{}}}},eg=new Set(["left","top"]);async function tg(t,e){const{placement:r,platform:s,elements:a}=t,i=await(s.isRTL==null?void 0:s.isRTL(a.floating)),o=as(r),l=Da(r),c=ln(r)==="y",d=eg.has(o)?-1:1,h=i&&c?-1:1,p=Ma(e,t);let{mainAxis:f,crossAxis:g,alignmentAxis:m}=typeof p=="number"?{mainAxis:p,crossAxis:0,alignmentAxis:null}:{mainAxis:p.mainAxis||0,crossAxis:p.crossAxis||0,alignmentAxis:p.alignmentAxis};return l&&typeof m=="number"&&(g=l==="end"?m*-1:m),c?{x:g*h,y:f*d}:{x:f*d,y:g*h}}const rg=function(t){return t===void 0&&(t=0),{name:"offset",options:t,async fn(e){var r,s;const{x:a,y:i,placement:o,middlewareData:l}=e,c=await tg(e,t);return o===((r=l.offset)==null?void 0:r.placement)&&(s=l.arrow)!=null&&s.alignmentOffset?{}:{x:a+c.x,y:i+c.y,data:{...c,placement:o}}}}},ng=function(t){return t===void 0&&(t={}),{name:"shift",options:t,async fn(e){const{x:r,y:s,placement:a,platform:i}=e,{mainAxis:o=!0,crossAxis:l=!1,limiter:c={fn:S=>{let{x,y:w}=S;return{x,y:w}}},...d}=Ma(t,e),h={x:r,y:s},p=await i.detectOverflow(e,d),f=ln(a),g=ad(f);let m=h[g],b=h[f];const k=(S,x)=>Hh(x+p[S==="y"?"top":"left"],x,x-p[S==="y"?"bottom":"right"]);o&&(m=k(g,m)),l&&(b=k(f,b));const y=c.fn({...e,[g]:m,[f]:b});return{...y,data:{x:y.x-r,y:y.y-s,enabled:{[g]:o,[f]:l}}}}}},sg=function(t){return t===void 0&&(t={}),{name:"size",options:t,async fn(e){const{placement:r,rects:s,platform:a,elements:i}=e,{apply:o=()=>{},...l}=Ma(t,e),c=await a.detectOverflow(e,l),d=as(r),h=Da(r),p=ln(r)==="y",{width:f,height:g}=s.floating;let m,b;d==="top"||d==="bottom"?(m=d,b=h===(await(a.isRTL==null?void 0:a.isRTL(i.floating))?"start":"end")?"left":"right"):(b=d,m=h==="end"?"top":"bottom");const k=g-c.top-c.bottom,y=f-c.left-c.right,S=Ts(g-c[m],k),x=Ts(f-c[b],y),w=e.middlewareData.shift,q=!w;let C=S,R=x;w!=null&&w.enabled.x&&(R=y),w!=null&&w.enabled.y&&(C=k),q&&!h&&(p?R=f-2*cn(c.left,c.right):C=g-2*cn(c.top,c.bottom)),await o({...e,availableWidth:R,availableHeight:C});const T=await a.getDimensions(i.floating);return f!==T.width||g!==T.height?{reset:{rects:!0}}:{}}}};function mi(){return typeof window<"u"}function Ws(t){return ld(t)?(t.nodeName||"").toLowerCase():"#document"}function sr(t){var e;return(t==null||(e=t.ownerDocument)==null?void 0:e.defaultView)||window}function gn(t){var e;return(e=(ld(t)?t.ownerDocument:t.document)||window.document)==null?void 0:e.documentElement}function ld(t){return mi()?t instanceof Node||t instanceof sr(t).Node:!1}function Zr(t){return mi()?t instanceof Element||t instanceof sr(t).Element:!1}function Nn(t){return mi()?t instanceof HTMLElement||t instanceof sr(t).HTMLElement:!1}function ul(t){return!mi()||typeof ShadowRoot>"u"?!1:t instanceof ShadowRoot||t instanceof sr(t).ShadowRoot}function _i(t){const{overflow:e,overflowX:r,overflowY:s,display:a}=en(t);return/auto|scroll|overlay|hidden|clip/.test(e+s+r)&&a!=="inline"&&a!=="contents"}function ag(t){return/^(table|td|th)$/.test(Ws(t))}function yi(t){try{if(t.matches(":popover-open"))return!0}catch{}try{return t.matches(":modal")}catch{return!1}}const ig=/transform|translate|scale|rotate|perspective|filter/,og=/paint|layout|strict|content/,Un=t=>!!t&&t!=="none";let Ii;function Io(t){const e=Zr(t)?en(t):t;return Un(e.transform)||Un(e.translate)||Un(e.scale)||Un(e.rotate)||Un(e.perspective)||!Mo()&&(Un(e.backdropFilter)||Un(e.filter))||ig.test(e.willChange||"")||og.test(e.contain||"")}function lg(t){let e=is(t);for(;Nn(e)&&!ca(e);){if(Io(e))return e;if(yi(e))return null;e=is(e)}return null}function Mo(){return Ii==null&&(Ii=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),Ii}function ca(t){return/^(html|body|#document)$/.test(Ws(t))}function en(t){return sr(t).getComputedStyle(t)}function bi(t){return Zr(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.scrollX,scrollTop:t.scrollY}}function is(t){if(Ws(t)==="html")return t;const e=t.assignedSlot||t.parentNode||ul(t)&&t.host||gn(t);return ul(e)?e.host:e}function cd(t){const e=is(t);return ca(e)?(t.ownerDocument||t).body:Nn(e)&&_i(e)?e:cd(e)}function da(t,e,r){var s;e===void 0&&(e=[]),r===void 0&&(r=!0);const a=cd(t),i=a===((s=t.ownerDocument)==null?void 0:s.body),o=sr(a);if(i){const l=lo(o);return e.concat(o,o.visualViewport||[],_i(a)?a:[],l&&r?da(l):[])}else return e.concat(a,da(a,[],r))}function lo(t){return t.parent&&Object.getPrototypeOf(t.parent)?t.frameElement:null}function dd(t){const e=en(t);let r=parseFloat(e.width)||0,s=parseFloat(e.height)||0;const a=Nn(t),i=a?t.offsetWidth:r,o=a?t.offsetHeight:s,l=si(r)!==i||si(s)!==o;return l&&(r=i,s=o),{width:r,height:s,$:l}}function Do(t){return Zr(t)?t:t.contextElement}function bs(t){const e=Do(t);if(!Nn(e))return dn(1);const r=e.getBoundingClientRect(),{width:s,height:a,$:i}=dd(e);let o=(i?si(r.width):r.width)/s,l=(i?si(r.height):r.height)/a;return(!o||!Number.isFinite(o))&&(o=1),(!l||!Number.isFinite(l))&&(l=1),{x:o,y:l}}const cg=dn(0);function ud(t){const e=sr(t);return!Mo()||!e.visualViewport?cg:{x:e.visualViewport.offsetLeft,y:e.visualViewport.offsetTop}}function dg(t,e,r){return e===void 0&&(e=!1),!!r&&e&&r===sr(t)}function os(t,e,r,s){e===void 0&&(e=!1),r===void 0&&(r=!1);const a=t.getBoundingClientRect(),i=Do(t);let o=dn(1);e&&(s?Zr(s)&&(o=bs(s)):o=bs(t));const l=dg(i,r,s)?ud(i):dn(0);let c=(a.left+l.x)/o.x,d=(a.top+l.y)/o.y,h=a.width/o.x,p=a.height/o.y;if(i&&s){const f=sr(i),g=Zr(s)?sr(s):s;let m=f,b=lo(m);for(;b&&g!==m;){const k=bs(b),y=b.getBoundingClientRect(),S=en(b),x=y.left+(b.clientLeft+parseFloat(S.paddingLeft))*k.x,w=y.top+(b.clientTop+parseFloat(S.paddingTop))*k.y;c*=k.x,d*=k.y,h*=k.x,p*=k.y,c+=x,d+=w,m=sr(b),b=lo(m)}}return ii({width:h,height:p,x:c,y:d})}function wi(t,e){const r=bi(t).scrollLeft;return e?e.left+r:os(gn(t)).left+r}function vd(t,e){const r=t.getBoundingClientRect(),s=r.left+e.scrollLeft-wi(t,r),a=r.top+e.scrollTop;return{x:s,y:a}}function ug(t){let{elements:e,rect:r,offsetParent:s,strategy:a}=t;const i=a==="fixed",o=gn(s),l=e?yi(e.floating):!1;if(s===o||l&&i)return r;let c={scrollLeft:0,scrollTop:0},d=dn(1);const h=dn(0),p=Nn(s);if((p||!i)&&((Ws(s)!=="body"||_i(o))&&(c=bi(s)),p)){const g=os(s);d=bs(s),h.x=g.x+s.clientLeft,h.y=g.y+s.clientTop}const f=o&&!p&&!i?vd(o,c):dn(0);return{width:r.width*d.x,height:r.height*d.y,x:r.x*d.x-c.scrollLeft*d.x+h.x+f.x,y:r.y*d.y-c.scrollTop*d.y+h.y+f.y}}function vg(t){return t.getClientRects?Array.from(t.getClientRects()):[]}function fg(t){const e=bi(t),r=t.ownerDocument.body,s=cn(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=cn(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let i=-e.scrollLeft+wi(t);const o=-e.scrollTop;return en(r).direction==="rtl"&&(i+=cn(t.clientWidth,r.clientWidth)-s),{width:s,height:a,x:i,y:o}}const hg=25;function gg(t,e,r){r===void 0&&(r="viewport");const s=r==="layoutViewport",a=sr(t),i=gn(t),o=a.visualViewport;let l=i.clientWidth,c=i.clientHeight,d=0,h=0;if(o){const f=!Mo()||e==="fixed";s?f||(d=-o.offsetLeft,h=-o.offsetTop):(l=o.width,c=o.height,f&&(d=o.offsetLeft,h=o.offsetTop))}if(wi(i)<=0){const f=i.ownerDocument,g=f.body,m=getComputedStyle(g),b=f.compatMode==="CSS1Compat"&&parseFloat(m.marginLeft)+parseFloat(m.marginRight)||0,k=Math.abs(i.clientWidth-g.clientWidth-b),y=getComputedStyle(i).scrollbarGutter==="stable both-edges"?k/2:k;y<=hg&&(l-=y)}return{width:l,height:c,x:d,y:h}}function pg(t,e){const r=os(t,!0,e==="fixed"),s=r.top+t.clientTop,a=r.left+t.clientLeft,i=bs(t),o=t.clientWidth*i.x,l=t.clientHeight*i.y,c=a*i.x,d=s*i.y;return{width:o,height:l,x:c,y:d}}function vl(t,e,r){let s;if(e==="viewport"||e==="layoutViewport")s=gg(t,r,e);else if(e==="document")s=fg(gn(t));else if(Zr(e))s=pg(e,r);else{const a=ud(t);s={x:e.x-a.x,y:e.y-a.y,width:e.width,height:e.height}}return ii(s)}function mg(t,e){const r=e.get(t);if(r)return r;let s=da(t,[],!1).filter(l=>Zr(l)&&Ws(l)!=="body"),a=null;const i=en(t).position==="fixed";let o=i?is(t):t;for(;Zr(o)&&!ca(o);){const l=en(o),c=Io(o),d=a?a.position:i?"fixed":"";!c&&(d==="fixed"||d==="absolute"&&l.position==="static")?s=s.filter(p=>p!==o):a=l,o=is(o)}return e.set(t,s),s}function _g(t){let{element:e,boundary:r,rootBoundary:s,strategy:a}=t;const o=[...r==="clippingAncestors"?yi(e)?[]:mg(e,this._c):[].concat(r),s],l=vl(e,o[0],a);let c=l.top,d=l.right,h=l.bottom,p=l.left;for(let f=1;f<o.length;f++){const g=vl(e,o[f],a);c=cn(g.top,c),d=Ts(g.right,d),h=Ts(g.bottom,h),p=cn(g.left,p)}return{width:d-p,height:h-c,x:p,y:c}}function yg(t){const{width:e,height:r}=dd(t);return{width:e,height:r}}function bg(t,e,r){const s=Nn(e),a=gn(e),i=r==="fixed",o=os(t,!0,i,e);let l={scrollLeft:0,scrollTop:0};const c=dn(0);if((s||!i)&&((Ws(e)!=="body"||_i(a))&&(l=bi(e)),s)){const f=os(e,!0,i,e);c.x=f.x+e.clientLeft,c.y=f.y+e.clientTop}!s&&a&&(c.x=wi(a));const d=a&&!s&&!i?vd(a,l):dn(0),h=o.left+l.scrollLeft-c.x-d.x,p=o.top+l.scrollTop-c.y-d.y;return{x:h,y:p,width:o.width,height:o.height}}function Mi(t){return en(t).position==="static"}function fl(t,e){if(!Nn(t)||en(t).position==="fixed")return null;if(e)return e(t);let r=t.offsetParent;return gn(t)===r&&(r=r.ownerDocument.body),r}function fd(t,e){const r=sr(t);if(yi(t))return r;if(!Nn(t)){let a=is(t);for(;a&&!ca(a);){if(Zr(a)&&!Mi(a))return a;a=is(a)}return r}let s=fl(t,e);for(;s&&ag(s)&&Mi(s);)s=fl(s,e);return s&&ca(s)&&Mi(s)&&!Io(s)?r:s||lg(t)||r}const wg=async function(t){const e=this.getOffsetParent||fd,r=this.getDimensions,s=await r(t.floating);return{reference:bg(t.reference,await e(t.floating),t.strategy),floating:{x:0,y:0,width:s.width,height:s.height}}};function kg(t){return en(t).direction==="rtl"}const xg={convertOffsetParentRelativeRectToViewportRelativeRect:ug,getDocumentElement:gn,getClippingRect:_g,getOffsetParent:fd,getElementRects:wg,getClientRects:vg,getDimensions:yg,getScale:bs,isElement:Zr,isRTL:kg};function hd(t,e){return t.x===e.x&&t.y===e.y&&t.width===e.width&&t.height===e.height}function Sg(t,e,r){let s=null,a;const i=gn(t);function o(){var h;clearTimeout(a),(h=s)==null||h.disconnect(),s=null}function l(h,p){h===void 0&&(h=!1),p===void 0&&(p=1),o();const f=t.getBoundingClientRect(),{left:g,top:m,width:b,height:k}=f;if(h||e(),!b||!k)return;const y=Ua(m),S=Ua(i.clientWidth-(g+b)),x=Ua(i.clientHeight-(m+k)),w=Ua(g),C={rootMargin:-y+"px "+-S+"px "+-x+"px "+-w+"px",threshold:cn(0,Ts(1,p))||1};let R=!0;function T(I){const O=I[0].intersectionRatio;if(!hd(f,t.getBoundingClientRect()))return l();if(O!==p){if(!R)return l();O?l(!1,O):a=setTimeout(()=>{l(!1,1e-7)},1e3)}R=!1}try{s=new IntersectionObserver(T,{...C,root:i.ownerDocument})}catch{s=new IntersectionObserver(T,C)}s.observe(t)}const c=sr(t),d=()=>l(r);return c.addEventListener("resize",d),l(!0),()=>{c.removeEventListener("resize",d),o()}}function jg(t,e,r,s){s===void 0&&(s={});const{ancestorScroll:a=!0,ancestorResize:i=!0,elementResize:o=typeof ResizeObserver=="function",layoutShift:l=typeof IntersectionObserver=="function",animationFrame:c=!1}=s,d=Do(t),h=a||i?[...d?da(d):[],...e?da(e):[]]:[];h.forEach(y=>{a&&y.addEventListener("scroll",r),i&&y.addEventListener("resize",r)});const p=d&&l?Sg(d,r,i):null;let f=-1,g=null;o&&(g=new ResizeObserver(y=>{let[S]=y;S&&S.target===d&&g&&e&&(g.unobserve(e),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var x;(x=g)==null||x.observe(e)})),r()}),d&&!c&&g.observe(d),e&&g.observe(e));let m,b=c?os(t):null;c&&k();function k(){const y=os(t);b&&!hd(b,y)&&r(),b=y,m=requestAnimationFrame(k)}return r(),()=>{var y;h.forEach(S=>{a&&S.removeEventListener("scroll",r),i&&S.removeEventListener("resize",r)}),p==null||p(),(y=g)==null||y.disconnect(),g=null,c&&cancelAnimationFrame(m)}}const Pg=rg,Cg=ng,Eg=Zh,Rg=sg,qg=(t,e,r)=>{const s=new Map,a=r??{},i={...xg,...a.platform,_c:s};return Qh(t,e,{...a,platform:i})},co="localdeck:navigate";function Di(t,e){let r=e;const s=r.target??t.ownerDocument,a=r.windowTarget??t.ownerDocument.defaultView??globalThis,i=c=>{const d=c.composedPath(),h=r.anchor();d.includes(t)||h&&d.includes(h)||r.onDismiss("outside")},o=c=>{var d;c.key==="Escape"&&(c.stopPropagation(),r.onDismiss("escape"),(d=r.anchor())==null||d.focus())},l=()=>r.onDismiss("navigate");return s.addEventListener("pointerdown",i,!0),s.addEventListener("keydown",o,!0),a.addEventListener(co,l),{update(c){r=c},destroy(){s.removeEventListener("pointerdown",i,!0),s.removeEventListener("keydown",o,!0),a.removeEventListener(co,l)}}}function zi(t,e){let r=e,s;const a=()=>{s==null||s();const i=r.anchor();i&&(t.style.position="fixed",s=jg(i,t,async()=>{const{x:o,y:l}=await qg(i,t,{strategy:"fixed",placement:r.placement??"bottom-start",middleware:[Pg(r.offset??6),Eg({padding:8}),Cg({padding:8}),Rg({padding:8,apply({rects:c,availableHeight:d}){t.style.maxHeight=`${Math.max(160,d)}px`,r.matchWidth&&(t.style.minWidth=`${c.reference.width}px`)}})]});t.style.left=`${o}px`,t.style.top=`${l}px`}))};return a(),{update(i){r=i,a()},destroy(){s==null||s()}}}var Lg=P('<div tabindex="-1"><!></div>');function Ag(t,e){ze(e,!0);let r=ve(e,"open",15,!1),s=ve(e,"placement",3,"bottom-start"),a=ve(e,"matchWidth",3,!1),i=ve(e,"role",3,"dialog"),o=ve(e,"class",3,"");function l(){var p;r(!1),(p=e.onclose)==null||p.call(e)}var c=Me(),d=oe(c);{var h=p=>{var f=Lg(),g=E(f);ct(g,()=>e.children),Xo(f,(m,b)=>zi==null?void 0:zi(m,b),()=>({anchor:()=>e.anchor,placement:s(),matchWidth:a()})),Xo(f,(m,b)=>Di==null?void 0:Di(m,b),()=>({anchor:()=>e.anchor,onDismiss:l})),M(()=>{Ze(f,1,`ui-popover ${o()??""}`,"svelte-qhlxoj"),de(f,"role",i()),de(f,"aria-label",e.label)}),u(p,f)};H(d,p=>{r()&&p(h)})}u(t,c),Oe()}const gd=Symbol("ui-menu");var Tg=P('<span class="menu-label-text svelte-1kzoi4f"> </span>'),Ng=P('<div class="ui-menu svelte-1kzoi4f"><!></div>'),Ig=P("<span><!></span> <!>",1);function Ln(t,e){ze(e,!0);let r=ve(e,"iconOnly",3,!1),s=ve(e,"variant",19,()=>r()?"ghost":"secondary"),a=ve(e,"size",3,"md"),i=ve(e,"placement",3,"bottom-start"),o=ve(e,"closeOnSelect",3,!0),l=ve(e,"open",15,!1),c=ve(e,"class",3,""),d=G(void 0);const h=()=>{var S;return((S=n(d))==null?void 0:S.querySelector("button, a"))??void 0};mu(gd,{close:()=>{var S;l(!1),(S=h())==null||S.focus()},get closeOnSelect(){return o()}});async function f(){var S;l(!l()),l()&&(await En(),(S=document.querySelector(".ui-popover [role^='menuitem']:not([disabled])"))==null||S.focus())}function g(S){var C,R,T;const x=[...S.currentTarget.querySelectorAll("[role^='menuitem']:not([disabled])")],w=x.indexOf(document.activeElement),q=S.key==="ArrowDown"?1:S.key==="ArrowUp"?-1:0;q&&(S.preventDefault(),(C=x[(w+q+x.length)%x.length])==null||C.focus()),S.key==="Home"&&(S.preventDefault(),(R=x[0])==null||R.focus()),S.key==="End"&&(S.preventDefault(),(T=x.at(-1))==null||T.focus()),S.key==="Tab"&&l(!1)}var m=Ig(),b=oe(m),k=E(b);{let S=j(()=>r()?e.icon??lf:e.icon),x=j(()=>r()?void 0:Zc),w=j(()=>r()?"icon-only":""),q=j(()=>e.ariaLabel??e.label),C=j(()=>r()?e.ariaLabel:void 0);we(k,{get variant(){return s()},get size(){return a()},get icon(){return n(S)},get trailingIcon(){return n(x)},get class(){return n(w)},"aria-haspopup":"menu",get"aria-expanded"(){return l()},get"aria-label"(){return n(q)},get title(){return n(C)},onclick:f,children:(R,T)=>{var I=Me(),O=oe(I);{var $=F=>{var K=Tg(),N=V(K,!0);M(()=>L(N,e.label)),u(F,K)};H(O,F=>{!r()&&e.label&&F($)})}u(R,I)},$$slots:{default:!0}})}Rn(b,S=>_(d,S),()=>n(d));var y=v(b,2);{let S=j(h),x=j(()=>e.ariaLabel??e.label);Ag(y,{get anchor(){return n(S)},get placement(){return i()},role:"menu",get label(){return n(x)},get open(){return l()},set open(w){l(w)},children:(w,q)=>{var C=Ng();let R;var T=E(C);ct(T,()=>e.children),M(()=>R=Na(C,"",R,{width:e.width})),Qe("keydown",C,g),u(w,C)},$$slots:{default:!0}})}M(()=>Ze(b,1,`ui-menu-anchor ${c()??""}`,"svelte-1kzoi4f")),u(t,m),Oe()}ar(["keydown"]);var hl=P('<small class="svelte-1ecuetu"> </small>'),gl=P('<kbd class="svelte-1ecuetu"> </kbd>'),Mg=P('<a role="menuitem" tabindex="-1"><!><span class="body svelte-1ecuetu"><!><!></span><!></a>'),Dg=P('<span aria-hidden="true"><!></span>'),zg=P('<button type="button" tabindex="-1"><!> <span class="body svelte-1ecuetu"><!><!></span> <!></button>');function Ct(t,e){ze(e,!0);let r=ve(e,"danger",3,!1),s=ve(e,"disabled",3,!1);const a=Xl(gd),i=j(()=>e.checked!==void 0);function o(){var p;s()||((p=e.onselect)==null||p.call(e),!n(i)&&(a==null?void 0:a.closeOnSelect)!==!1&&(a==null||a.close()))}var l=Me(),c=oe(l);{var d=p=>{var f=Mg();let g;var m=E(f);{var b=C=>{var R=Me(),T=oe(R);Tr(T,()=>e.icon,(I,O)=>{O(I,{size:16,"aria-hidden":"true"})}),u(C,R)};H(m,C=>{e.icon&&C(b)})}var k=v(m),y=E(k);ct(y,()=>e.children);var S=v(y);{var x=C=>{var R=hl(),T=V(R,!0);M(()=>L(T,e.description)),u(C,R)};H(S,C=>{e.description&&C(x)})}var w=v(k);{var q=C=>{var R=gl(),T=V(R,!0);M(()=>L(T,e.shortcut)),u(C,R)};H(w,C=>{e.shortcut&&C(q)})}M(()=>{g=Ze(f,1,"ui-menu-item svelte-1ecuetu",null,g,{danger:r()}),de(f,"href",e.href)}),Qe("click",f,o),u(p,f)},h=p=>{var f=zg();let g;var m=E(f);{var b=R=>{var T=Dg();let I;var O=E(T);{var $=F=>{Mr(F,{size:12,strokeWidth:3})};H(O,F=>{e.checked&&F($)})}M(()=>I=Ze(T,1,"box svelte-1ecuetu",null,I,{on:e.checked})),u(R,T)},k=R=>{var T=Me(),I=oe(T);Tr(I,()=>e.icon,(O,$)=>{$(O,{size:16,"aria-hidden":"true"})}),u(R,T)};H(m,R=>{n(i)?R(b):e.icon&&R(k,1)})}var y=v(m,2),S=E(y);ct(S,()=>e.children);var x=v(S);{var w=R=>{var T=hl(),I=V(T,!0);M(()=>L(I,e.description)),u(R,T)};H(x,R=>{e.description&&R(w)})}var q=v(y,2);{var C=R=>{var T=gl(),I=V(T,!0);M(()=>L(I,e.shortcut)),u(R,T)};H(q,R=>{e.shortcut&&R(C)})}M(R=>{g=Ze(f,1,"ui-menu-item svelte-1ecuetu",null,g,{danger:r(),tall:R}),de(f,"role",n(i)?"menuitemcheckbox":"menuitem"),de(f,"aria-checked",n(i)?e.checked:void 0),f.disabled=s()},[()=>!!e.description]),Qe("click",f,o),u(p,f)};H(c,p=>{e.href?p(d):p(h,-1)})}u(t,l),Oe()}ar(["click"]);var Og=P('<p class="eyebrow svelte-1aswg5k"> </p>'),Ug=P('<div class="meta svelte-1aswg5k"><!></div>'),Hg=P('<div class="side svelte-1aswg5k"><!><!></div>'),Bg=P('<header class="ui-page-header svelte-1aswg5k"><div class="main svelte-1aswg5k"><!> <div class="title-row svelte-1aswg5k"><h1 tabindex="-1" class="svelte-1aswg5k"> </h1><!></div> <!></div> <!></header>');function ia(t,e){let r=ve(e,"id",3,"page-title");var s=Bg(),a=E(s),i=E(a);{var o=b=>{var k=Og(),y=V(k,!0);M(()=>L(y,e.eyebrow)),u(b,k)};H(i,b=>{e.eyebrow&&b(o)})}var l=v(i,2),c=E(l),d=V(c,!0),h=v(c);ct(h,()=>e.status??Mt);var p=v(l,2);{var f=b=>{var k=Ug(),y=E(k);ct(y,()=>e.meta),u(b,k)};H(p,b=>{e.meta&&b(f)})}var g=v(a,2);{var m=b=>{var k=Hg(),y=E(k);ct(y,()=>e.context??Mt);var S=v(y);ct(S,()=>e.actions??Mt),u(b,k)};H(g,b=>{(e.context||e.actions)&&b(m)})}M(()=>{de(c,"id",r()),L(d,e.title)}),u(t,s)}var Fg=P('<div class="leading svelte-1vuyl2e"><!></div>'),Vg=P('<a class="stretched svelte-1vuyl2e"><!></a>'),Wg=P('<div class="subtitle svelte-1vuyl2e"><!></div>'),$g=P('<div class="meta svelte-1vuyl2e"><!></div>'),Kg=P('<div class="actions svelte-1vuyl2e"><!></div>'),Gg=P('<div class="below svelte-1vuyl2e"><!></div>'),Yg=P('<div role="listitem"><!> <div class="main svelte-1vuyl2e"><div class="title svelte-1vuyl2e"><!></div> <!></div> <!> <!> <!></div>');function Ns(t,e){var r=Yg();let s;var a=E(r);{var i=x=>{var w=Fg(),q=E(w);ct(q,()=>e.leading),u(x,w)};H(a,x=>{e.leading&&x(i)})}var o=v(a,2),l=E(o),c=E(l);{var d=x=>{var w=Vg(),q=E(w);ct(q,()=>e.title),M(()=>de(w,"href",e.href)),Qe("click",w,function(...C){var R;(R=e.onnavigate)==null||R.apply(this,C)}),u(x,w)},h=x=>{var w=Me(),q=oe(w);ct(q,()=>e.title),u(x,w)};H(c,x=>{e.href?x(d):x(h,-1)})}var p=v(l,2);{var f=x=>{var w=Wg(),q=E(w);ct(q,()=>e.subtitle),u(x,w)};H(p,x=>{e.subtitle&&x(f)})}var g=v(o,2);{var m=x=>{var w=$g(),q=E(w);ct(q,()=>e.meta),u(x,w)};H(g,x=>{e.meta&&x(m)})}var b=v(g,2);{var k=x=>{var w=Kg(),q=E(w);ct(q,()=>e.actions),u(x,w)};H(b,x=>{e.actions&&x(k)})}var y=v(b,2);{var S=x=>{var w=Gg(),q=E(w);ct(q,()=>e.below),u(x,w)};H(y,x=>{e.below&&x(S)})}M(x=>s=Ze(r,1,"ui-row svelte-1vuyl2e",null,s,{linked:x}),[()=>!!e.href]),u(t,r)}ar(["click"]);function pd(t,e){ze(e,!0);let r=ve(e,"value",15),s=ve(e,"placeholder",3,"Choose…"),a=ve(e,"size",3,"md"),i=ve(e,"class",3,"");const o=j(()=>e.options.find(l=>l.value===r()));{let l=j(()=>{var d;return((d=n(o))==null?void 0:d.label)??s()}),c=j(()=>{var d;return`${e.ariaLabel}: ${((d=n(o))==null?void 0:d.label)??s()}`});Ln(t,{variant:"field",get size(){return a()},get icon(){return e.icon},get class(){return i()},get label(){return n(l)},get ariaLabel(){return n(c)},children:(d,h)=>{var p=Me(),f=oe(p);Ae(f,17,()=>e.options,g=>g.value,(g,m)=>{{let b=j(()=>n(m).value===r()?Mr:void 0);Ct(g,{get icon(){return n(b)},get description(){return n(m).description},get disabled(){return n(m).disabled},onselect:()=>{var k;n(m).value!==r()&&(r(n(m).value),(k=e.onchange)==null||k.call(e,n(m).value))},children:(k,y)=>{var S=ie();M(()=>L(S,n(m).label)),u(k,S)},$$slots:{default:!0}})}}),u(d,p)},$$slots:{default:!0}})}Oe()}var Jg=P('<span class="label"><!></span>'),Xg=P('<button type="button" class="ui-switch svelte-yuiq8u" role="switch"><span class="track svelte-yuiq8u" aria-hidden="true"><span class="thumb svelte-yuiq8u"></span></span> <!></button>');function Qg(t,e){ze(e,!0);let r=ve(e,"checked",15,!1),s=ve(e,"disabled",3,!1);function a(){var c;s()||(r(!r()),(c=e.onchange)==null||c.call(e,r()))}var i=Xg(),o=v(E(i),2);{var l=c=>{var d=Jg(),h=E(d);ct(h,()=>e.children),u(c,d)};H(o,c=>{e.children&&c(l)})}M(()=>{de(i,"aria-checked",r()),i.disabled=s()}),Qe("click",i,a),u(t,i),Oe()}ar(["click"]);var pl=P('<span class="count svelte-1tjna6q"> </span>'),Zg=P('<a class="tab svelte-1tjna6q"> <!></a>'),ep=P("<nav></nav>"),tp=P('<button type="button" class="tab svelte-1tjna6q" role="tab"> <!></button>'),rp=P('<div role="tablist"></div>');function zo(t,e){ze(e,!0);let r=ve(e,"size",3,"md");const s=j(()=>e.items.every(c=>c.href));var a=Me(),i=oe(a);{var o=c=>{var d=ep();Ae(d,21,()=>e.items,h=>h.id,(h,p)=>{var f=Zg(),g=E(f),m=v(g);{var b=k=>{var y=pl(),S=V(y,!0);M(()=>L(S,n(p).count)),u(k,y)};H(m,k=>{n(p).count!==void 0&&k(b)})}M(()=>{de(f,"href",n(p).href),de(f,"aria-current",n(p).id===e.current?"page":void 0),L(g,n(p).label)}),Qe("click",f,k=>{var y;return(y=e.onselect)==null?void 0:y.call(e,n(p).id,k)}),u(h,f)}),M(()=>{Ze(d,1,`ui-tabs ${r()??""}`,"svelte-1tjna6q"),de(d,"aria-label",e.label)}),u(c,d)},l=c=>{var d=rp();Ae(d,21,()=>e.items,h=>h.id,(h,p)=>{var f=tp(),g=E(f),m=v(g);{var b=k=>{var y=pl(),S=V(y,!0);M(()=>L(S,n(p).count)),u(k,y)};H(m,k=>{n(p).count!==void 0&&k(b)})}M(()=>{de(f,"aria-selected",n(p).id===e.current),L(g,n(p).label)}),Qe("click",f,k=>{var y;return(y=e.onselect)==null?void 0:y.call(e,n(p).id,k)}),u(h,f)}),M(()=>{Ze(d,1,`ui-tabs ${r()??""}`,"svelte-1tjna6q"),de(d,"aria-label",e.label)}),u(c,d)};H(i,c=>{n(s)?c(o):c(l,-1)})}u(t,a),Oe()}ar(["click"]);var np=P("<span><!></span>");function Oo(t,e){let r=ve(e,"tone",3,"share");var s=np(),a=E(s);ct(a,()=>e.children),M(()=>Ze(s,1,`ui-tag ${r()??""}`,"svelte-1mgp7h6")),u(t,s)}gu();class sp{constructor(e={}){et(this,"items",[]);et(this,"listeners",new Set);et(this,"timers",new Map);et(this,"nextId",1);et(this,"schedule");et(this,"cancel");et(this,"max");this.schedule=e.schedule??((r,s)=>setTimeout(r,s)),this.cancel=e.cancel??(r=>clearTimeout(r)),this.max=e.max??4}subscribe(e){return this.listeners.add(e),e(this.items),()=>{this.listeners.delete(e)}}success(e,r={}){return this.push({tone:"success",message:e},r.duration??4e3)}error(e){return this.push({tone:"error",message:e})}undo(e,r){let s=!1;const a=this.nextId;return this.push({tone:"success",message:e,action:{label:"Undo",run:async()=>{s||(s=!0,this.dismiss(a),await r())}}},8e3)}dismiss(e){const r=this.timers.get(e);r!==void 0&&this.cancel(r),this.timers.delete(e),this.set(this.items.filter(s=>s.id!==e))}clear(){for(const e of this.items)this.dismiss(e.id)}push(e,r){const s=this.nextId++,a=[...this.items,{...e,id:s}];for(;a.length>this.max;){const i=a.shift(),o=this.timers.get(i.id);o!==void 0&&this.cancel(o),this.timers.delete(i.id)}return this.set(a),r&&this.timers.set(s,this.schedule(()=>this.dismiss(s),r)),s}set(e){this.items=e;for(const r of this.listeners)r(e)}}const Te=new sp;var ap=P('<button class="action svelte-ofo67a"> </button>'),ip=P('<div class="toast svelte-ofo67a"><span aria-hidden="true"><!></span> <span class="message svelte-ofo67a"> </span> <!> <button class="close svelte-ofo67a" aria-label="Dismiss notification" title="Dismiss"><!></button></div>'),op=P('<section class="toaster svelte-ofo67a" aria-label="Notifications"></section>');function lp(t,e){ze(e,!1);const r=()=>rc(Te,"$toast",s),[s,a]=nc();Ev();var i=op();Ae(i,5,r,o=>o.id,(o,l)=>{var c=ip(),d=E(c),h=E(d);{var p=x=>{ys(x,{size:16})},f=x=>{ef(x,{size:16})};H(h,x=>{n(l).tone==="error"?x(p):x(f,-1)})}var g=v(d,2),m=V(g,!0),b=v(g,2);{var k=x=>{var w=ap(),q=V(w,!0);M(()=>L(q,n(l).action.label)),Qe("click",w,()=>n(l).action.run()),u(x,w)};H(b,x=>{n(l).action&&x(k)})}var y=v(b,2),S=E(y);ss(S,{size:14}),M(()=>{de(c,"role",n(l).tone==="error"?"alert":"status"),Ze(d,1,`icon ${n(l).tone??""}`,"svelte-ofo67a"),L(m,n(l).message)}),Qe("click",y,()=>Te.dismiss(n(l).id)),u(o,c)}),u(t,i),Oe(),a()}ar(["click"]);function _t(t){return t instanceof Error?t.message:String(t)}async function cp({run:t,close:e,success:r,queue:s=Te}){try{await t()}catch(a){return s.error(_t(a)),!1}return e==null||e(),s.success(r),!0}const dp=/^[a-zA-Z0-9_-]+$/,up=/^[a-z0-9][a-z0-9_-]{0,40}$/,vp=["secrets","activity","checks","settings"],fp=["logs","requests","config"];function oa(t,e="logs"){const r=t.lastIndexOf(":");return{page:"service",projectId:t.slice(0,r),serviceName:t.slice(r+1),tab:e}}function uo(t){if(t==="/"||t==="")return{page:"projects"};const e=t.replace(/\/+$/,"").split("/").slice(1);let r;try{r=e.map(c=>decodeURIComponent(c))}catch{return{page:"not-found"}}const[s,a,i,o,l]=r;return r.length===1&&(s==="projects"||s==="services"||s==="settings"||s==="about"||s==="changelog")?{page:s}:s==="services"&&r.length===2&&/^[a-zA-Z0-9_-]+:[a-z0-9_-]+$/.test(a)?oa(a):s!=="projects"||!a||!dp.test(a)?{page:"not-found"}:r.length===2?{page:s,projectId:a}:r.length===3&&vp.includes(i)?{page:s,projectId:a,section:i}:i==="services"&&o&&up.test(o)&&(r.length===4||r.length===5&&(l==="requests"||l==="config"))?{page:"service",projectId:a,serviceName:o,tab:l??"logs"}:{page:"not-found"}}function Cn(t){return t.page==="projects"&&t.projectId?`/projects/${encodeURIComponent(t.projectId)}${t.section?`/${t.section}`:""}`:t.page==="service"?`/projects/${encodeURIComponent(t.projectId)}/services/${encodeURIComponent(t.serviceName)}${t.tab==="logs"?"":`/${t.tab}`}`:`/${t.page}`}const hp={activity:"Activity",checks:"Checks",secrets:"Secrets",settings:"Settings"},md={logs:"Logs",requests:"Requests",config:"Config"},gp={projects:"Projects",services:"All services",settings:"Settings",about:"About",changelog:"Changelog","not-found":"Page not found"};function pp(t,e){const r=e??(t.page==="projects"||t.page==="service"?t.projectId:void 0);let s;return t.page==="service"?s=[t.serviceName,...t.tab==="logs"?[]:[md[t.tab]],r]:t.page==="projects"&&t.projectId?s=[...t.section?[hp[t.section]]:[],r]:s=[gp[t.page]],[...s,"LocalDeck"].join(" · ")}function Oi(t){return new URLSearchParams(t).get("q")??""}function ml(t,e){return e?`${t}?${new URLSearchParams({q:e})}`:t}function mp(t){return t.button===0&&!t.metaKey&&!t.ctrlKey&&!t.shiftKey&&!t.altKey&&!t.defaultPrevented}function _p(t,e,r){if(!e||!mp(t)||e.target&&e.target!=="_self"||e.hasAttribute("download"))return null;let s;try{s=new URL(e.href)}catch{return null}if(s.origin!==r||s.pathname.startsWith("/api/"))return null;const a=uo(s.pathname);return a.page==="not-found"?null:a}const yp=[{id:"overview",label:"Overview"},{id:"activity",label:"Activity"},{id:"checks",label:"Checks"},{id:"secrets",label:"Secrets"},{id:"settings",label:"Settings"}],bp=fp.map(t=>({id:t,label:md[t]}));function ki(t){return!t||t.status==="stopped"?(t==null?void 0:t.readinessStatus)==="failed"?"failed to start":"stopped":t.status==="stopping"?"stopping":t.readinessStatus==="failed"?"check failed":t.readinessStatus==="checking"?"checking readiness":t.upstreamReady?t.readinessStatus==="ready"?"ready":"listening":"starting"}function _d(t){const e=ki(t);return e.charAt(0).toUpperCase()+e.slice(1)}function Dr(t){return!!(t.serviceType&&t.serviceType!=="http")}function wp(t,e){return!!(t&&t.status!=="stopped"&&t.configFingerprint&&e&&t.configFingerprint!==e)}function yd(t,e,r=[]){if(!wp(t,e))return"";const s=t.profiles??[],i=s.length!==r.length||s.some((o,l)=>o!==r[l])?"profile changes":"configuration changes";return t.managedBy==="terminal"?`Restart it in your terminal to apply ${i}`:`Restart to apply ${i}`}function kp(t,e){if(e||(t==null?void 0:t.readinessStatus)==="failed")return"failed";if(!t||t.status==="stopped")return"stopped";const r=ki(t);return r==="ready"||r==="listening"?"ready":"starting"}function xp(t){return Dr(t)?"Database":t.name==="web"?"Website":t.name==="api"?"API":t.name}function Sp(t,e,r,s){const a=o=>t.filter(l=>l.name===o.name).length>1?`${o.name} (${o.id})`:o.name,i=[{id:"projects",label:"Go to projects",detail:"Navigation",action:{type:"navigate",route:{page:"projects"}}},{id:"services",label:"Go to all services",detail:"Navigation",action:{type:"navigate",route:{page:"services"}}},{id:"settings",label:"Go to settings",detail:"Navigation",action:{type:"navigate",route:{page:"settings"}}},...t.map(o=>({id:`project:${o.id}`,label:`Go to ${a(o)}`,detail:"Project",action:{type:"navigate",route:{page:"projects",projectId:o.id}}})),...t.map(o=>({id:`project-settings:${o.id}`,label:`Open ${a(o)} settings`,detail:"Project",action:{type:"navigate",route:{page:"projects",projectId:o.id,section:"settings"}}}))];for(const o of e){const{key:l,name:c,runtime:d,command:h}=o,p=t.find(k=>l.startsWith(`${k.id}:`)),f=`${p?a(p):(d==null?void 0:d.projectName)??"Project"} / ${c}`,g=!!(d&&d.status!=="stopped"),m=!s||(d==null?void 0:d.status)==="stopping"||["start","stop","restart"].some(k=>r.has(`service:${l}:${k}`)),b=(k,y,S=!1)=>i.push({id:`${k}:${l}`,label:`${y} ${c}`,detail:f,disabled:S,action:{type:k,key:l}});g&&(d!=null&&d.upstreamReady)&&d.urls[0]&&!Dr(d)&&i.push({id:`open:${l}`,label:`Open ${c} in browser`,detail:f,action:{type:"open",url:d.urls[0]}}),i.push({id:`logs:${l}`,label:`View logs for ${c}`,detail:f,action:{type:"navigate",route:oa(l,"logs")}}),Dr(d??h??{})||i.push({id:`requests:${l}`,label:`View requests for ${c}`,detail:f,action:{type:"navigate",route:oa(l,"requests")}}),h&&i.push({id:`config:${l}`,label:`Configure ${c}`,detail:f,action:{type:"navigate",route:oa(l,"config")}}),!g&&h&&(p==null?void 0:p.available)!==!1&&b("start","Start",m),g&&b("stop","Stop",m),g&&h&&(p==null?void 0:p.available)!==!1&&(d==null?void 0:d.managedBy)==="daemon"&&b("restart","Restart",m)}return i}function jp(t,e){const r=e.toLowerCase().trim().split(/\s+/).filter(Boolean);return t.filter(s=>r.every(a=>`${s.label} ${s.detail}`.toLowerCase().includes(a)))}var Pp=P('<small class="svelte-vw7b2v">Unavailable</small>'),Cp=P('<button role="option" tabindex="-1"><span><strong class="svelte-vw7b2v"> </strong><small class="svelte-vw7b2v"> </small></span> <!></button>'),Ep=P('<p class="empty svelte-vw7b2v">No matching commands. Try a project or service name.</p>'),Rp=P('<p class="error svelte-vw7b2v" role="alert"> </p>'),qp=P('<div class="load-error svelte-vw7b2v" role="alert"><span> </span><!></div>'),Lp=P('<dialog aria-label="Command palette" class="svelte-vw7b2v"><div class="search-row svelte-vw7b2v"><!> <input role="combobox" aria-label="Search commands" aria-expanded="true" aria-controls="palette-results" aria-autocomplete="list" autocomplete="off" spellcheck="false" placeholder="Search projects, services, and actions…" class="svelte-vw7b2v"/> <button class="close svelte-vw7b2v" aria-label="Close command palette">Esc</button></div> <div class="results svelte-vw7b2v" id="palette-results" role="listbox" aria-label="Commands"></div> <!> <!> <!> <footer class="svelte-vw7b2v"><span role="status"> </span><span>↑ ↓ navigate <span class="separator svelte-vw7b2v">·</span> Enter select</span></footer></dialog>');function Ap(t,e){ze(e,!0);let r=ve(e,"loading",3,!1),s=ve(e,"loadError",3,""),a,i,o=G(""),l=G(""),c=G(!1),d=G(""),h=!1;const p=j(()=>jp(e.commands,n(o))),f=j(()=>n(p).find(A=>A.id===n(l))??n(p)[0]),g=A=>`palette-${encodeURIComponent(A)}`;Ia(()=>{h=!0;const A=document.activeElement;return a.showModal(),i.focus(),()=>{h=!1,a.close(),A instanceof HTMLElement&&A.isConnected&&A.focus()}});async function m(A){if(!(!A||A.disabled||n(c))){_(c,!0),_(d,"");try{const z=await e.onExecute(A);if(z&&typeof z=="object"&&"ok"in z&&z.ok===!1)throw new Error("error"in z&&typeof z.error=="string"?z.error:"Service action failed.");h&&e.onClose()}catch(z){h&&_(d,z instanceof Error?z.message:"Could not run this command.",!0)}finally{h&&_(c,!1)}}}async function b(A){var W;if(A.isComposing||(A.key==="Enter"&&(A.preventDefault(),m(n(f))),A.key!=="ArrowDown"&&A.key!=="ArrowUp")||(A.preventDefault(),!n(p).length))return;const z=n(p).findIndex(U=>{var Y;return U.id===((Y=n(f))==null?void 0:Y.id)});_(l,n(p)[(z+(A.key==="ArrowDown"?1:-1)+n(p).length)%n(p).length].id,!0),await En(),(W=document.getElementById(g(n(l))))==null||W.scrollIntoView({block:"nearest"})}var k=Lp(),y=E(k),S=E(y);Fs(S,{size:18,"aria-hidden":"true"});var x=v(S,2);Rn(x,A=>i=A,()=>i);var w=v(x,2),q=v(y,2);Ae(q,21,()=>n(p),A=>A.id,(A,z)=>{var W=Cp();let U;var Y=E(W),Z=E(Y),re=V(Z,!0),te=v(Z),me=V(te,!0),se=v(Y,2);{var fe=ge=>{var De=Pp();u(ge,De)},pe=ge=>{pi(ge,{size:16})};H(se,ge=>{n(z).disabled?ge(fe):n(z).action.type==="open"&&ge(pe,1)})}M(ge=>{var De,Fe;de(W,"id",ge),de(W,"aria-selected",((De=n(f))==null?void 0:De.id)===n(z).id),de(W,"aria-disabled",n(z).disabled||n(c)),U=Ze(W,1,"svelte-vw7b2v",null,U,{chosen:((Fe=n(f))==null?void 0:Fe.id)===n(z).id}),L(re,n(z).label),L(me,n(z).detail)},[()=>g(n(z).id)]),Qe("click",W,()=>m(n(z))),u(A,W)});var C=v(q,2);{var R=A=>{var z=Ep();u(A,z)};H(C,A=>{n(p).length||A(R)})}var T=v(C,2);{var I=A=>{var z=Rp(),W=V(z,!0);M(()=>L(W,n(d))),u(A,z)};H(T,A=>{n(d)&&A(I)})}var O=v(T,2);{var $=A=>{var z=qp(),W=E(z),U=V(W,!0),Y=v(W);we(Y,{size:"sm",get loading(){return r()},get onclick(){return e.onRetry},children:(Z,re)=>{var te=ie("Retry");u(Z,te)},$$slots:{default:!0}}),M(()=>L(U,s())),u(A,z)};H(O,A=>{s()&&A($)})}var F=v(O,2),K=E(F),N=V(K,!0);Rn(k,A=>a=A,()=>a),M(A=>{de(x,"aria-activedescendant",A),de(q,"aria-busy",n(c)),L(N,n(c)?"Running command…":r()?"Loading services…":`${n(p).length} commands`)},[()=>n(f)?g(n(f).id):void 0]),Ht("cancel",k,A=>{A.preventDefault(),e.onClose()}),Qe("click",k,A=>{if(A.target===a){const z=a.getBoundingClientRect();(A.clientX<z.left||A.clientX>z.right||A.clientY<z.top||A.clientY>z.bottom)&&e.onClose()}}),Qe("input",x,()=>{_(l,""),_(d,"")}),Qe("keydown",x,b),Lo(x,()=>n(o),A=>_(o,A)),Qe("click",w,function(...A){var z;(z=e.onClose)==null||z.apply(this,A)}),u(t,k),Oe()}ar(["click","input","keydown"]);class Tp{constructor(e=typeof sessionStorage>"u"?void 0:sessionStorage,r="localdeck-scroll",s=50){et(this,"memory",new Map);var a;this.storage=e,this.key=r,this.limit=s;try{const i=JSON.parse(((a=this.storage)==null?void 0:a.getItem(this.key))??"[]");Array.isArray(i)&&(this.memory=new Map(i.filter(([o,l])=>typeof o=="string"&&Number.isFinite(l))))}catch{}}save(e,r){var s;for(this.memory.delete(e),this.memory.set(e,Math.max(0,Math.round(r)));this.memory.size>this.limit;)this.memory.delete(this.memory.keys().next().value);try{(s=this.storage)==null||s.setItem(this.key,JSON.stringify([...this.memory]))}catch{}}read(e){return this.memory.get(e)}}function Ui(){return`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}function _l(t,e){return!t.defaultPrevented&&!t.isComposing&&!t.repeat&&!t.altKey&&!t.shiftKey&&(t.metaKey||t.ctrlKey)&&t.key.toLowerCase()===e}function yl(t,e,r=t==null?void 0:t.id){const s=e.filter(o=>!r||o.projectId===r),a=((t==null?void 0:t.commands)??[]).map(o=>({key:`${t.id}:${o.name}`,name:o.name,command:o,runtime:s.find(l=>l.name===o.name)})),i=new Set(a.map(o=>o.key));return[...a,...s.filter(o=>!i.has(o.key)).map(o=>({key:o.key,name:o.name,runtime:o}))]}function Np(t,e){return e?t.replace(/^(http:\/\/[a-z0-9-]+(?:\.[a-z0-9-]+)?\.localhost):\d+(?=\/|$)/i,"$1"):t}async function Ip(t,e=fetch){try{const r=await e("/api/forwarder",{method:t?"POST":"GET",cache:"no-store",...t?{headers:{"content-type":"application/json"},body:JSON.stringify({install:!0})}:{},signal:AbortSignal.timeout(t?135e3:6e3)});if(!r.ok)return{ready:!1,error:"Could not check forwarding. Restart LocalDeck to load the update, then try again."};const s=await r.json();return(s==null?void 0:s.ready)===!0?{ready:!0}:{ready:!1,error:typeof(s==null?void 0:s.error)=="string"?s.error:"Port-80 forwarding is unavailable. Your links still use their original port."}}catch{return{ready:!1,error:"Could not reach LocalDeck. Your links still use their original port."}}}const oi=1e3,bd=100,vo=5e3,wd="localdeck-log-limit";function Uo(t){return Number.isInteger(t)&&t>=bd&&t<=vo}function kd(){try{const t=Number(localStorage.getItem(wd));return Uo(t)?t:oi}catch{return oi}}function ra(t,e){if(t.startsWith("legacy-"))return!1;const[r,s]=t.split("-").map(o=>Number.parseInt(o,36)),[a,i]=e.split("-").map(o=>Number.parseInt(o,36));return r>a||r===a&&s>i}function bl(t,e,r){const s=t.findIndex(l=>l.id===e.id);if(s>=0){if(t[s]===e)return t;t=t.filter((l,c)=>c!==s)}const a=(l,c)=>l.ts-c.ts||l.id.localeCompare(c.id);if(!t.length||a(t[t.length-1],e)<=0)return[...t.slice(Math.max(0,t.length+1-r)),e];let i=0,o=t.length;for(;i<o;){const l=i+o>>>1;a(t[l],e)<0?i=l+1:o=l}return t.length>=r&&i===0?t:[...t.slice(0,i),e,...t.slice(i)].slice(-r)}const Hi=500;function wl(t,e,r){return[...new Map([...t,...e].map(a=>[a.id,a])).values()].sort((a,i)=>a.ts-i.ts||a.id.localeCompare(i.id)).slice(-r)}var pa,ma,_a,ya,ba,wa,ka,xa,Sa,ja,Pa,Ca,Ea;class Mp{constructor(){Pe(this,pa,G(tt(kd())));Pe(this,ma,G(tt([])));Pe(this,_a,G(tt({})));Pe(this,ya,G(tt({})));Pe(this,ba,G(!1));Pe(this,wa,G(null));Pe(this,ka,G(tt([])));Pe(this,xa,G(null));Pe(this,Sa,G(tt({})));Pe(this,ja,G(tt({})));Pe(this,Pa,G(tt({})));Pe(this,Ca,G(tt({})));et(this,"ws");et(this,"connecting");et(this,"catalogRequest",0);et(this,"refreshingProjects");et(this,"catalogGeneration",0);et(this,"detailRequests",{});Pe(this,Ea,G(tt({})));et(this,"historyLoads",new Map);et(this,"liveRevision",0);et(this,"liveVersions",{});et(this,"unshare",e=>this.call(`/api/services/${encodeURIComponent(e)}/share`,{method:"DELETE"}));et(this,"stop",e=>this.call(`/api/services/${encodeURIComponent(e)}/stop`,{method:"POST"}))}get logLimit(){return n(D(this,pa))}set logLimit(e){_(D(this,pa),e,!0)}async setLogLimit(e){var a;if(!Uo(e))throw new Error("Log limit must be an integer between 100 and 5000");const r=this.logLimit;this.logLimit=e;const s=Object.keys(this.logs);for(const i of s)this.logs[i]=(a=this.logs[i])==null?void 0:a.slice(-e);e>r&&await Promise.all(s.map(async i=>{var o;await((o=this.historyLoads.get(i))==null?void 0:o.catch(()=>{})),await this.load(i)}))}get services(){return n(D(this,ma))}set services(e){_(D(this,ma),e,!0)}get logs(){return n(D(this,_a))}set logs(e){_(D(this,_a),e,!0)}get requests(){return n(D(this,ya))}set requests(e){_(D(this,ya),e,!0)}get connected(){return n(D(this,ba))}set connected(e){_(D(this,ba),e,!0)}get selected(){return n(D(this,wa))}set selected(e){_(D(this,wa),e,!0)}get projects(){return n(D(this,ka))}set projects(e){_(D(this,ka),e,!0)}get selectedProjectId(){return n(D(this,xa))}set selectedProjectId(e){_(D(this,xa),e,!0)}get projectDetails(){return n(D(this,Sa))}set projectDetails(e){_(D(this,Sa),e,!0)}get shareErrors(){return n(D(this,ja))}set shareErrors(e){_(D(this,ja),e,!0)}get projectErrors(){return n(D(this,Pa))}set projectErrors(e){_(D(this,Pa),e,!0)}get pendingActions(){return n(D(this,Ca))}set pendingActions(e){_(D(this,Ca),e,!0)}get historyBoundaries(){return n(D(this,Ea))}set historyBoundaries(e){_(D(this,Ea),e,!0)}get current(){return this.services.find(e=>e.key===this.selected)??this.services[0]}connect(){if(this.ws&&this.ws.readyState<2)return Promise.resolve();if(this.connecting)return this.connecting;const e=this.connectAfterProjects();return this.connecting=e,e.then(()=>{this.connecting===e&&(this.connecting=void 0)},()=>{this.connecting===e&&(this.connecting=void 0)}),e}async connectAfterProjects(){try{await this.loadProjects()}catch{}if(this.ws&&this.ws.readyState<2)return;const e=location.protocol==="https:"?"wss":"ws",r=new WebSocket(`${e}://${location.host}/api/events`);this.ws=r,r.onopen=()=>{this.ws===r&&(this.connected=!0)},r.onclose=()=>{this.ws===r&&(this.ws=void 0,this.connected=!1,setTimeout(()=>void this.connect(),1500))},r.onmessage=s=>{try{this.handle(JSON.parse(s.data))}catch{}}}handle(e){switch(e.type){case"snapshot":{const r=new Set(e.services.map(a=>a.key)),s=new Map;for(const a of e.services){const i=s.get(a.projectId);i?i.push(a):s.set(a.projectId,[a])}for(const a of this.services)r.has(a.key)||this.markLive(a.key);this.services=e.services;for(const[a,i]of Object.entries(this.projectDetails))i&&(this.projectDetails[a]={...i,services:s.get(a)??[]});for(const a of e.services)this.markLive(a.key),this.load(a.key).catch(()=>{});break}case"service":{const r=this.services.some(s=>s.key===e.service.key);this.markLive(e.service.key),this.upsertService(e.service),r||this.load(e.service.key).catch(()=>{});break}case"service:removed":this.markLive(e.name),this.services=this.services.filter(r=>r.key!==e.name),this.removeProjectDetailsService(e.name);break;case"history:cleared":{const r=`${e.service}/${e.kind}`,s=this.historyBoundaries[r];(!s||ra(e.beforeId,s))&&(this.historyBoundaries[r]=e.beforeId,e.kind==="logs"?this.logs[e.service]=(this.logs[e.service]??[]).filter(a=>ra(a.id,e.beforeId)):this.requests[e.service]=(this.requests[e.service]??[]).filter(a=>ra(a.id,e.beforeId)));break}case"log":{if(!this.retained(e.log.service,"logs",e.log.id))break;const r=this.logs[e.log.service]??[];this.logs[e.log.service]=bl(r,e.log,this.logLimit);break}case"request":{if(!this.retained(e.request.service,"requests",e.request.id))break;const r=this.requests[e.request.service]??[],s=!r.some(i=>i.id===e.request.id);this.requests[e.request.service]=bl(r,e.request,Hi);const a=this.services.find(i=>i.key===e.request.service);if(a&&s){const i={...a,stats:{...a.stats}};Dp(i,e.request),this.markLive(i.key),this.upsertService(i)}break}}}refreshProjects(){if(this.refreshingProjects)return this.refreshingProjects;const e=this.loadProjects(this.liveRevision,!0);this.refreshingProjects=e;const r=()=>{this.refreshingProjects===e&&(this.refreshingProjects=void 0)};return e.then(r,r),e}async loadProjects(e=this.liveRevision,r=!1){const s=++this.catalogRequest;let a;try{const d=await this.call("/api/projects");if(!Array.isArray(d))throw new Error("projects response must be an array");a=d}catch(d){throw s===this.catalogRequest&&(this.projectErrors.projects=Hn(d)),d}if(s!==this.catalogRequest)return;const i=new Set(a.map(d=>d.id)),o=new Set([...this.projects.filter(d=>!i.has(d.id)).map(d=>d.id),...Object.keys(this.projectDetails).filter(d=>!i.has(d))]);this.catalogGeneration++;for(const d of o)this.invalidateProject(d);if(this.projects=a,delete this.projectErrors.projects,!a.length){this.selectedProjectId=null,this.projectDetails={};return}if(r){await Promise.all(a.map(d=>this.loadProjectDetails(d.id,e).catch(()=>{})));return}const c=a.find(d=>d.id===this.selectedProjectId)??a.find(d=>d.available)??a[0];try{await this.selectProject(c.id,e)}catch{}}async selectProject(e,r=this.liveRevision){return this.selectedProjectId=e,this.loadProjectDetails(e,r)}async loadProjectDetails(e,r=this.liveRevision){const s=(this.detailRequests[e]??0)+1;this.detailRequests[e]=s;const a=this.catalogGeneration,i=r;try{const o=await this.call(`/api/projects/${encodeURIComponent(e)}`);if(!o||!Array.isArray(o.services)||!Array.isArray(o.commands))throw new Error("project details response is invalid");if(!this.isCurrentDetailRequest(e,s,a))return o;const l={...o,services:this.mergeFetchedServices(e,o.services,i)};return this.projectDetails[e]=l,this.projects=this.projects.map(c=>c.id===e?xl(l):c),delete this.projectErrors[e],this.syncProjectServices(e,l.services,i),l}catch(o){if(!this.isCurrentDetailRequest(e,s,a))throw o;const l=Hn(o);if(this.projectErrors[e]=l,o instanceof kl&&o.status===422){const c=this.projects.find(d=>d.id===e);if(c){const d={...c,available:!1,error:l};this.projects=this.projects.map(h=>h.id===e?d:h),this.projectDetails[e]={...d,commands:[],services:this.services.filter(h=>h.projectId===e)}}}throw o}}startService(e,r){return this.serviceAction(e,r,"start")}stopService(e,r){return this.serviceAction(e,r,"stop")}restartService(e,r){return this.serviceAction(e,r,"restart")}startAll(e){return this.bulkAction(e,"start")}stopAll(e){return this.bulkAction(e,"stop")}updateDependencies(e,r,s){const a=`${e}:${r}`;return this.pending(`project:${e}:update-dependencies:${r}`,async()=>{try{const i=await this.call(`/api/projects/${encodeURIComponent(e)}/services/${encodeURIComponent(r)}/dependencies`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify({after:[...new Set(s.map(o=>o.toLowerCase()))]})});if(!i||!Array.isArray(i.services)||!Array.isArray(i.commands))throw new Error("project details response is invalid");return this.hasProject(e)&&(this.projectDetails[e]=i,this.projects=this.projects.map(o=>o.id===e?xl(i):o),this.syncProjectServices(e,i.services,this.liveRevision),delete this.projectErrors[a]),i}catch(i){throw this.hasProject(e)&&(this.projectErrors[a]=Hn(i)),i}})}forgetProject(e){return this.pending(`project:${e}:forget`,async()=>{try{const r=await this.call(`/api/projects/${encodeURIComponent(e)}`,{method:"DELETE"}),s=this.selectedProjectId===e;if(this.catalogRequest++,this.catalogGeneration++,this.projects=this.projects.filter(a=>a.id!==e),this.invalidateProject(e),s){const a=this.projects[0];if(this.selectedProjectId=(a==null?void 0:a.id)??null,a)try{await this.selectProject(a.id)}catch{}}return r}catch(r){throw this.projectErrors[e]=Hn(r),r}})}load(e){const r=this.historyLoads.get(e);if(r)return r;const s=this.loadHistory(e);this.historyLoads.set(e,s);const a=()=>{this.historyLoads.get(e)===s&&this.historyLoads.delete(e)};return s.then(a,a),s}async loadHistory(e){const r=encodeURIComponent(e),[s,a]=await Promise.all([this.call(`/api/services/${r}/logs?limit=${this.logLimit}`,void 0,i=>this.readHistoryBoundary(e,"logs",i)),this.call(`/api/services/${r}/requests?limit=${Hi}`,void 0,i=>this.readHistoryBoundary(e,"requests",i))]);if(!Array.isArray(s)||!Array.isArray(a))throw new Error("history response must be an array");this.logs[e]=wl(s.filter(i=>this.retained(e,"logs",i.id)),this.logs[e]??[],this.logLimit),this.requests[e]=wl(a.filter(i=>this.retained(e,"requests",i.id)),this.requests[e]??[],Hi)}readHistoryBoundary(e,r,s){var i;const a=(i=s.headers)==null?void 0:i.get("x-localdeck-history-boundary");a&&this.handle({type:"history:cleared",eventId:a,service:e,kind:r,beforeId:a})}retained(e,r,s){const a=this.historyBoundaries[`${e}/${r}`];return!a||ra(s,a)}clearHistory(e,r){return this.pending(`history:${e}:${r}:clear`,async()=>{const s=await this.call(`/api/services/${encodeURIComponent(e)}/${r}`,{method:"DELETE"});this.handle(s)})}async share(e,r,s=!1){return this.pending(`service:${e}:share`,async()=>{delete this.shareErrors[e];try{return await this.call(`/api/services/${encodeURIComponent(e)}/share`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(s?{public:!0}:{password:r||void 0})})}catch(a){throw this.shareErrors[e]=Hn(a),a}})}async call(e,r,s){const a=await fetch(e,r),i=await a.json().catch(()=>({}));if(!a.ok)throw new kl(a.status,typeof i.error=="string"?i.error:`request failed (${a.status})`);return s==null||s(a),i}serviceAction(e,r,s){const a=`${e}:${r}`,i=`service:${e}:${r}:${s}`;return this.pending(i,async()=>{const o=this.liveRevision,l=this.hasProject(e);try{const c=await this.call(`/api/projects/${encodeURIComponent(e)}/services/${encodeURIComponent(r)}/${s}`,{method:"POST"});return(!l||this.hasProject(e))&&(c.ok?delete this.projectErrors[a]:this.projectErrors[a]=c.error??`${s} failed`,c.service&&(this.liveVersions[c.service.key]??0)<=o&&this.upsertService(c.service)),await this.refreshAfterAction(e,l,o),c}catch(c){throw(!l||this.hasProject(e))&&(this.projectErrors[a]=Hn(c)),c}})}bulkAction(e,r){return this.pending(`project:${e}:${r}-all`,async()=>{const s=this.liveRevision,a=this.hasProject(e);try{const i=await this.call(`/api/projects/${encodeURIComponent(e)}/${r}`,{method:"POST"});if(!a||this.hasProject(e)){delete this.projectErrors[e];for(const o of i.results)o.ok?delete this.projectErrors[o.key]:this.projectErrors[o.key]=o.error??`${r} failed`,o.service&&(this.liveVersions[o.key]??0)<=s&&this.upsertService(o.service)}return await this.refreshAfterAction(e,a,s),i}catch(i){throw(!a||this.hasProject(e))&&(this.projectErrors[e]=Hn(i)),i}})}pending(e,r){const s=this.pendingActions[e];if(s)return s;const a=r();return this.pendingActions[e]=a,a.then(()=>{this.pendingActions[e]===a&&delete this.pendingActions[e]},()=>{this.pendingActions[e]===a&&delete this.pendingActions[e]}),a}async refreshAfterAction(e,r,s){if(!(r&&!this.hasProject(e)))try{await this.loadProjects(s)}catch{}}markLive(e){this.liveVersions[e]=++this.liveRevision}hasProject(e){return this.projects.some(r=>r.id===e)}isCurrentDetailRequest(e,r,s){return this.detailRequests[e]===r&&this.catalogGeneration===s&&this.hasProject(e)}invalidateProject(e){this.detailRequests[e]=(this.detailRequests[e]??0)+1,delete this.projectDetails[e],delete this.projectErrors[e];for(const s of Object.keys(this.projectErrors))s.startsWith(`${e}:`)&&delete this.projectErrors[s];const r=this.services.find(s=>s.key===this.selected);this.services=this.services.filter(s=>s.projectId!==e),(r==null?void 0:r.projectId)===e&&(this.selected=null)}upsertService(e){const r=this.services.findIndex(s=>s.key===e.key);this.services=r===-1?[...this.services,e]:this.services.map(s=>s.key===e.key?e:s),this.updateProjectDetailsService(e)}updateProjectDetailsService(e){const r=this.projectDetails[e.projectId];if(!r)return;const a=r.services.findIndex(i=>i.key===e.key)===-1?[...r.services,e]:r.services.map(i=>i.key===e.key?e:i);this.projectDetails[e.projectId]={...r,services:a}}removeProjectDetailsService(e){for(const[r,s]of Object.entries(this.projectDetails))s!=null&&s.services.some(a=>a.key===e)&&(this.projectDetails[r]={...s,services:s.services.filter(a=>a.key!==e)})}mergeFetchedServices(e,r,s){const a=new Map(this.services.filter(l=>l.projectId===e).map(l=>[l.key,l])),i=[],o=new Set;for(const l of r){const d=(this.liveVersions[l.key]??0)>s?a.get(l.key):l;d&&(i.push(d),o.add(d.key))}for(const l of a.values())!o.has(l.key)&&(this.liveVersions[l.key]??0)>s&&i.push(l);return i}syncProjectServices(e,r,s){const a=this.services.filter(l=>l.projectId!==e),i=this.services.filter(l=>l.projectId===e&&(this.liveVersions[l.key]??0)>s),o=new Map;for(const l of[...r,...i])o.set(l.key,l);this.services=[...a,...o.values()]}}pa=new WeakMap,ma=new WeakMap,_a=new WeakMap,ya=new WeakMap,ba=new WeakMap,wa=new WeakMap,ka=new WeakMap,xa=new WeakMap,Sa=new WeakMap,ja=new WeakMap,Pa=new WeakMap,Ca=new WeakMap,Ea=new WeakMap;class kl extends Error{constructor(e,r){super(r),this.status=e}}function xl(t){const{commands:e,services:r,...s}=t;return s}function Hn(t){return t instanceof Error?t.message:String(t)}function Dp(t,e){const r=t.stats,s=r.avgLatencyMs*r.requests+e.durationMs;r.requests++,e.error?r.proxyErrors++:e.status>=500?r.serverErrors++:e.status>=400?r.clientErrors++:r.ok++,r.avgLatencyMs=Math.round(s/r.requests),r.lastRequestAt=e.ts}const zp=new Mp;var Op=P('<span class="command svelte-1hauwfi"><code class="svelte-1hauwfi"> </code><!></span>'),Up=P('<p role="alert" class="svelte-1hauwfi"> </p>'),Hp=P('<section aria-labelledby="sharing-setup-title" class="svelte-1hauwfi"><h2 id="sharing-setup-title" class="svelte-1hauwfi">Public HTTPS sharing</h2> <p class="svelte-1hauwfi">Sharing requires <code class="svelte-1hauwfi">cloudflared</code>, installed separately. LocalDeck does not bundle or download it. Local services and Clean URLs work without it.</p> <ul class="svelte-1hauwfi"><li><strong class="svelte-1hauwfi">macOS:</strong> <!></li> <li><strong class="svelte-1hauwfi">Windows:</strong> <!></li> <li><strong class="svelte-1hauwfi">Linux (Debian/Ubuntu, AMD64):</strong> <!></li></ul> <a class="external svelte-1hauwfi" target="_blank" rel="noreferrer">Cloudflare installation instructions <!></a> <p class="svelte-1hauwfi">Check your installation with <!>, then retry sharing. Restart LocalDeck after changing PATH.</p> <!> <span class="sr-only svelte-1hauwfi" role="status"> </span></section>');function xd(t){const e=(C,R=Mt)=>{var T=Op(),I=E(T),O=V(I,!0),$=v(I);{let F=j(()=>n(r)===R()?"Copied":`Copy command: ${R()}`),K=j(()=>n(r)===R()?Mr:hn);ls($,{size:"sm",get label(){return n(F)},get icon(){return n(K)},onclick:()=>a(R())})}M(()=>L(O,R())),u(C,T)};let r=G(""),s=G("");async function a(C){_(s,"");try{await navigator.clipboard.writeText(C),_(r,C,!0)}catch{_(s,"Could not copy. Select the command and copy it manually.")}}const i="https://developers.cloudflare.com/tunnel/downloads/";var o=Hp(),l=v(E(o),4),c=E(l),d=v(E(c),2);e(d,()=>"brew install cloudflared");var h=v(c,2),p=v(E(h),2);e(p,()=>"winget install Cloudflare.cloudflared");var f=v(h,2),g=v(E(f),2);e(g,()=>"curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb && sudo dpkg -i cloudflared.deb");var m=v(l,2);de(m,"href",i);var b=v(E(m));pi(b,{size:14,"aria-hidden":"true"});var k=v(m,2),y=v(E(k));e(y,()=>"cloudflared --version");var S=v(k,2);{var x=C=>{var R=Up(),T=V(R,!0);M(()=>L(T,n(s))),u(C,R)};H(S,C=>{n(s)&&C(x)})}var w=v(S,2),q=V(w,!0);M(()=>L(q,n(r)?"Command copied":"")),u(t,o)}var Bp=P('<div class="svelte-1vwaeio"><dt class="svelte-1vwaeio"><code class="svelte-1vwaeio"> </code></dt><dd class="svelte-1vwaeio"> </dd></div>'),Fp=P('<details class="svelte-1vwaeio"><summary class="svelte-1vwaeio"> <span class="svelte-1vwaeio"> </span></summary> <dl class="svelte-1vwaeio"></dl></details>'),Vp=P('<section class="about page-shell svelte-1vwaeio" aria-labelledby="page-title"><header class="page-heading"><div><h1 id="page-title" tabindex="-1">About LocalDeck</h1> <p class="page-subtitle svelte-1vwaeio">A home for your local development services.</p></div></header> <p class="svelte-1vwaeio">Run your apps in the right order, keep their URLs stable, and inspect logs and HTTP requests in one place. When you need to show someone your work, share a service through a Cloudflare tunnel.</p> <section aria-labelledby="getting-started" class="svelte-1vwaeio"><h2 id="getting-started" class="svelte-1vwaeio">Get started</h2> <p class="svelte-1vwaeio">Open a terminal in your project folder, then:</p> <ol class="steps svelte-1vwaeio"><li class="svelte-1vwaeio"><code class="svelte-1vwaeio">localdeck init</code><span class="svelte-1vwaeio">Create a .localdeck file from your project’s scripts.</span></li> <li class="svelte-1vwaeio"><code class="svelte-1vwaeio">localdeck up</code><span class="svelte-1vwaeio">Start your services and their dependencies.</span></li> <li class="svelte-1vwaeio"><code class="svelte-1vwaeio">localdeck open</code><span class="svelte-1vwaeio">In a second terminal, open the dashboard to see what’s running.</span></li></ol> <p class="note svelte-1vwaeio">Terminal-launched services stop with Ctrl-C. Services started from the dashboard run in the background, managed by the daemon.</p></section> <!> <section aria-labelledby="command-reference" class="svelte-1vwaeio"><h2 id="command-reference" class="svelte-1vwaeio">Command reference</h2> <p class="svelte-1vwaeio">Examples use <code class="svelte-1vwaeio">web</code> and <code class="svelte-1vwaeio">api</code>; replace them with your service names. If names overlap across projects, use <code class="svelte-1vwaeio">my-project/web</code> or the runtime key from <code class="svelte-1vwaeio">localdeck ps</code>.</p> <div class="command-groups svelte-1vwaeio"></div> <p class="note svelte-1vwaeio">Commands shown here are reference examples. Run them in your terminal. Database services use a database client and cannot be shared through an HTTP tunnel.</p></section> <section aria-labelledby="project-file" class="svelte-1vwaeio"><h2 id="project-file" class="svelte-1vwaeio">Your project file</h2> <p class="svelte-1vwaeio"><code class="svelte-1vwaeio">.localdeck</code> stores service commands, ports, dependencies, readiness checks, and your project nickname. Project settings in the dashboard can save the nickname and supported service configuration back to this file.</p> <p class="svelte-1vwaeio">LocalDeck looks for configuration in the current folder and its parents. It also accepts <code class="svelte-1vwaeio">.localdeck.json</code> and <code class="svelte-1vwaeio">localdeck.json</code>. Running services pick up configuration changes when restarted.</p></section></section>');function Wp(t){const e=[{title:"Set up a project",commands:[["localdeck init","Detects package scripts, writes .localdeck, and adds the project to the dashboard. Use --dry-run to preview, or --force to replace an existing configuration."],["localdeck init --name web --command 'npm run dev'","Creates a service with an explicit command. Works for projects without package scripts too."],["localdeck commands","Lists the configured services, commands, ports, tags, and dependencies. Alias: cmds."],["localdeck doctor","Checks configuration, dependencies, tools, and port availability without starting services. Add --json for a machine-readable report. Already-running ports may be reported as occupied."]]},{title:"Run services",commands:[["localdeck up","Starts every configured service, waiting for each service’s prerequisites to become ready."],["localdeck up web api","Starts services matching the supplied names or tags, plus their prerequisites."],["localdeck profile","Lists the project's profiles and shows which are on. Profiles change how services run, for example against a staging API, without renaming them."],["localdeck profile on staging","Turns on the staging profile for this project on this computer. Use off to turn one off and clear to go back to the base services. Running services keep their settings until restarted."],["localdeck web","Starts the configured web service and its prerequisites. Replace web with your service name. localdeck run web does the same."],["localdeck run api -- node server.js","Runs a one-off service without a configuration file. Put the application command after --."],["localdeck run api --port 4000 --upstream 8787 -- node server.js","Uses port 4000 for the stable URL and forwards to an app listening on port 8787. Omit the flags for automatic allocation and detection. Short flags: -p and -u."]]},{title:"Inspect and stop",commands:[["localdeck ps","Lists registered services, their status, ports, runtime keys, and process information. Stopped entries may remain visible. Aliases: ls, ports."],["localdeck port web","Prints only the service’s stable port, useful in scripts."],["localdeck logs web","Shows the latest 100 captured output lines."],["localdeck logs web -f -n 200","Shows 200 lines and follows live output. --follow and --lines are the long flags. Ctrl-C exits the viewer."],["localdeck requests web -n 50","Shows recent HTTP requests that passed through LocalDeck’s proxy, including status and latency. Defaults to 50 requests."],["localdeck stop web","Stops the service and closes its share. Dependencies and dependent services are not automatically stopped."],["localdeck open","Starts the daemon if needed and opens this dashboard. Add a service name, such as localdeck open web, to open that service’s URL."]]},{title:"Share a service",commands:[["localdeck share web","Creates a public Cloudflare HTTPS tunnel with a generated password and prints both. Requires cloudflared."],["localdeck share web --password your-password","Creates a share protected by the password you supply."],["localdeck share web --public","Creates a share without password protection. Cannot be combined with --password."],["localdeck unshare web","Closes the public tunnel while leaving the local service running. Shares also close when the service stops or restarts, or the daemon shuts down."]]},{title:"Coding agents",commands:[["localdeck mcp","Runs a stdio MCP server for inspecting services, logs and requests, controlling services, replaying recorded GET/HEAD requests, and creating or closing quick shares. Configure this command in your MCP client."],["localdeck mcp --project <id>","Restricts every MCP tool to one exact remembered project ID from list_projects. Connecting starts no application services; disconnecting leaves existing services running."],["localdeck mcp --help","Prints MCP usage without starting the daemon."]]},{title:"Daemon and help",commands:[["localdeck daemon status","Shows the daemon’s status, PID, API URL, uptime, and data directory."],["localdeck daemon start","Starts the background daemon, or reuses the one already running."],["localdeck daemon run","Runs the daemon in the foreground for debugging. Ctrl-C shuts it down."],["localdeck daemon stop","Shuts down the daemon and cleans up its managed services and shares."],["localdeck forward","Runs an optional foreground relay from localhost port 80 to daemon port 7777. Add --to-port 8888 for a custom destination. Requires permission to bind port 80; does not start the daemon."],["localdeck help","Shows CLI usage. Also accepts -h or --help. Running localdeck without arguments additionally lists and remembers the current project when configured."],["localdeck --version","Prints the installed CLI version. Aliases: -v and --v."]]}];var r=Vp(),s=v(E(r),6);xd(s);var a=v(s,2),i=v(E(a),4);Ae(i,5,()=>e,kt,(o,l)=>{var c=Fp(),d=E(c),h=E(d),p=v(h),f=V(p),g=v(d,2);Ae(g,5,()=>n(l).commands,kt,(m,b)=>{var k=j(()=>fi(n(b),2));let y=()=>n(k)[0],S=()=>n(k)[1];var x=Bp(),w=E(x),q=E(w),C=V(q,!0),R=v(w),T=V(R,!0);M(()=>{L(C,y()),L(T,S())}),u(m,x)}),M(()=>{L(h,n(l).title),L(f,`${n(l).commands.length??""} commands`)}),u(o,c)}),u(t,r)}var $p=P('<div class="controls svelte-1offp6a"><!> <!></div>'),Kp=P('<form class="log-settings svelte-1offp6a"><!> <p class="note svelte-1offp6a" aria-live="polite"> </p></form>');function Gp(t,e){ze(e,!0);let r=G("");xt(()=>{_(r,String(e.value),!0)});const s=j(()=>Math.min(Number(n(r)),vo)),a=j(()=>n(r).trim()!==""&&Uo(n(s)));function i(h){h.preventDefault(),!(!n(a)||n(s)===e.value)&&(e.onSave(n(s)),Te.success(`Log limit set to ${n(s).toLocaleString()} lines`))}var o=Kp(),l=E(o);{const h=(f,g)=>{let m=()=>(g==null?void 0:g()).id,b=()=>(g==null?void 0:g()).describedby,k=()=>(g==null?void 0:g()).invalid;var y=$p(),S=E(y);It(S,{get id(){return m()},mono:!0,inputmode:"numeric",get"aria-describedby"(){return b()},get invalid(){return k()},get value(){return n(r)},set value(w){_(r,w,!0)}});var x=v(S,2);{let w=j(()=>!n(a)||n(s)===e.value);we(x,{variant:"primary",type:"submit",get disabled(){return n(w)},children:(q,C)=>{var R=ie("Save");u(q,R)},$$slots:{default:!0}})}u(f,y)};let p=j(()=>n(r).trim()&&!n(a)?`Use a whole number from ${bd} to ${vo.toLocaleString()}.`:void 0);tr(l,{label:"Maximum log lines",hint:"100–5,000 lines. Applies to the combined log view and live history per service. Higher limits use more browser memory. Older output is available only while the daemon retains it.",get error(){return n(p)},children:h,$$slots:{default:!0}})}var c=v(l,2),d=V(c);M(h=>L(d,`Current limit: ${h??""} lines. Saved in this browser.`),[()=>e.value.toLocaleString()]),Ht("submit",o,i),u(t,o),Oe()}const Yp=[{version:"1.6.2",title:"Steady project header menus",sections:[{title:"Fixed",changes:["Stop the Environment and Profiles menus in the project header from flickering every few seconds. The worktree list now reloads only when you switch projects or choose Refresh worktrees."]}]},{version:"1.6.1",title:"Dashboard layout fixes",sections:[{title:"Fixed",changes:["Keep long project names inside the sidebar. They now end with an ellipsis instead of adding a sideways scrollbar and cutting off Unavailable.","Let the Secrets, Checks, and Settings tabs use the full page width, lined up with the project header."]}]},{version:"1.6.0",title:"Stackable profiles and a redesigned dashboard",sections:[{title:"Added",changes:["Open any service on its own page with Logs, Requests and Config tabs, at /projects/<project>/services/<service>. Config shows what will run, the ports, readiness and startup order.","Define profiles in .localdeck to change how services run (command, working directory, environment, and secrets) without renaming them. web stays web, with the same port, link, and startup order, while a staging profile points it at a staging API.","Turn on several profiles at once. They apply in file order; when two change the same setting, the one listed later wins and LocalDeck says so.","Switch profiles from the new Profiles menu beside Environment, with localdeck profile on, off, and clear, or with the MCP list_profiles and set_profiles tools. The choice is saved only on this computer and never written to .localdeck.","See which profiles are on next to the project status, with profile tags on the services they change. A running service whose settings changed shows Restart to apply, including after hand edits to its command or environment.","Open a service's Config tab to see What it will run: the resolved command, directory, environment, and secret names, and whether each came from the base service or a profile. Secret values are never shown."]},{title:"Changed",changes:["Redesign the dashboard: IBM Plex Sans for the interface with Plex Mono for commands, ports, URLs and logs; one sidebar with search, sections, your projects and an app menu; a project header with Environment and Profiles menus, tabs and project actions; one consistent set of buttons, fields, menus, badges and dialogs.","Saving shows a short confirmation and closes whatever opened the form; errors stay until dismissed. Forgetting a project, removing a secret, deleting a check, clearing logs and removing the Clean URLs forwarder now ask first.","Every page has its own address, including service pages and project tabs. Back and Forward restore where you were, and search boxes keep their text in the address.","Open the logs and requests panel from the bar at the bottom of the window or with ⌘J (Ctrl+J). Pick sources from its Services menu, or choose Watch in panel from a service's menu.","Share a service from its options menu; the share form opens in a dialog.","Move project Settings into its own tab beside Overview, Activity, Checks, and Secrets, with a direct link at /projects/<id>/settings. The Settings and Secrets buttons next to the project name are gone.","Switching profiles never starts, stops, or restarts services. Terminal launches print the active profiles before starting."]},{title:"Deprecated",changes:['List-style profiles such as "app": ["web"] are now read as tags. Run the group with localdeck up app; localdeck up --profile app still works for now with a notice.']}]},{version:"1.5.0",title:"Debugging workflows: activity, baselines, worktrees, and checks",sections:[{title:"Added",changes:["Inspect a project's Activity timeline, which combines requests, logs, and service lifecycle changes. The Incidents view highlights failures and state changes, with service filters, search, and shareable event links.","Mark a baseline before changing code, then compare later observations for sample counts, error rates, restarts, error signatures, and route latency. Sparse traffic and incomplete history are reported instead of treated as fixed.","Discover existing Git worktrees of a project and switch between them. Each worktree keeps its own project ID and automatic ports, and discovery never starts services.","Preview a sanitized cURL or JSON export of a recorded request. Exports keep only representation headers, remove recognized credentials, and omit unsupported bodies.","Save eligible GET/HEAD requests as checks with an expected status and run them from the project's Checks tab. Saving never sends a request.","Add MCP tools for timelines, baselines, worktree environments, request exports, and saved checks. Project-restricted MCP servers cannot register environments."]},{title:"Fixed",changes:["Keep dashboard state when a project refreshes, and refine the debugging controls."]}]},{version:"1.4.0",title:"Safer sharing and a sturdier daemon",sections:[{title:"Changed",changes:["Protect share links with a password by default. When no password is entered, LocalDeck generates one; reveal it with Show next to the link. Public links now require ticking Public link in the dashboard, --public in the CLI, or public: true in the API and MCP.","Keep Clean URLs off after removing them in Settings, including across later localdeck run and up commands, until you enable them again."]},{title:"Security",changes:["Limit password attempts on shared links to 10 failures per visitor and 100 per share within 15 minutes, then answer with 429 and a retry time.","Keep the share session cookie away from the shared app and out of request records.","Redact Authorization, Cookie, Set-Cookie, and API key headers in MCP get_requests results.","Prevent other sites from embedding the dashboard in a frame."]},{title:"Fixed",changes:["Keep the daemon running when a WebSocket client disconnects while its service is restarting.","Detect stable ports already used on ::1 or wildcard addresses before claiming them.","Explain when a service listens only on an address LocalDeck cannot reach, instead of waiting indefinitely.","Bound in-memory logs and requests to 8 MiB each per service.","Release a project's remembered ports when it is forgotten.","On macOS, remove Clean URLs without an administrator prompt when no system relay is installed, and support account names that contain periods.","Show port-conflict startup guidance for single services as well as prefixed output."]}]},{version:"1.3.0",title:"Clearer requests, logs, and dashboard controls",sections:[{title:"Added",changes:["Add the read-only MCP get_response tool for cached response bodies, with updated capture documentation and agent debugging workflows.","Inspect requests in a dedicated detail pane while keeping the request list visible on desktop.","View JSON request and response bodies with indentation and syntax highlighting, and copy original response text, including replay responses.","Pause and resume displayed logs, copy individual lines, and jump to the latest output while capture continues.","Copy cloudflared installation commands for macOS, Windows, and Debian/Ubuntu AMD64 from the setup instructions."]},{title:"Changed",changes:["Refine the dashboard with charcoal surfaces, monospace typography, lime accents, and consistent title/subtitle headers and page spacing.","Simplify request and log rows with quieter metadata, aligned status and duration columns, and wrapped log messages.","Group the service selector by project with select-all controls. Show only active services in Requests and Logs and remove tabs when services stop.","Integrate clear actions into square service tabs and move background-traffic visibility into the Requests Options menu.","Consolidate project controls into Start project, Start remaining, and Stop project actions."]}]},{version:"1.2.3",title:"Updates for administrator-owned installations",sections:[{title:"Fixed",changes:["Check installation permissions before updating. On macOS and Linux, request administrator access for npm only when needed, while verifying the update and restarting the daemon as the original user.","Keep the daemon running if authentication is cancelled or installation fails. Explain how to update protected installations from non-interactive sessions and Windows.","Disable npm lifecycle scripts during updates and use the administrator's home for elevated npm operations to avoid creating a root-owned cache in the user's home."]}]},{version:"1.2.2",title:"Preserve secret edits during refreshes",sections:[{title:"Fixed",changes:["Prevent background dashboard refreshes from clearing the secret name and value while you type. Reset the secrets editor only when switching projects."]}]},{version:"1.2.1",title:"Automatic port variables and visible runtime ports",sections:[{title:"Fixed",changes:["Supply LocalDeck’s assigned port through custom variables used by --port, such as API_PORT and APP_PORT, so scripts can avoid occupied fallback ports without project edits.","Follow individual npm, pnpm, Yarn, and Bun package scripts, including npm workspace selectors and package directory options, for dashboard and terminal launches. Preserve explicit service environment settings and secrets."]},{title:"Added",changes:["Show ‘Running on port X’ with the actual app port and a separately labeled proxy port in the dashboard.","Distinguish assigned, configured, listening, stopping, and last-used ports so startup and stopped services are not reported as running."]}]},{version:"1.2.0",title:"Command palette",sections:[{title:"Added",changes:["Open the command palette with Cmd+K / Ctrl+K or Search commands in the sidebar.","Search projects and services to open apps, logs, and requests, or start, stop, and restart services.","Keyboard navigation, focus restoration, service availability checks, and retry for incomplete project loading."]}]},{version:"1.1.0",title:"Project secrets, full responses, and simpler controls",sections:[{title:"Added",changes:["Per-project secrets stored locally outside .localdeck and injected into service environments.","A dedicated Secrets page with Add, Replace, and Remove controls.","Missing-secret checks and secret redaction in service output, diagnostics, and MCP responses.","A separate Response section with full captured bodies loaded on demand from a 64 MiB cache.","Per-service buttons to clear requests and logs, with clearing preserved across refreshes and daemon restarts."]},{title:"Changed",changes:["Service rows now show Start/Stop and an Options menu for logs, requests, and sharing.","Project pages include a Secrets button beside Settings.","Updated nickname and secret-name placeholders.","Hide successful Svelte, Vue, Astro, MDX, and Stylus development files by default.","Combine small response chunks to reduce capture memory overhead.","Show when a full response has expired or a transfer is incomplete."]},{title:"Fixed",changes:["Prevent cleared records from returning through delayed history loads or reconnects.","Clarify that direct Wrangler requests and Worker service bindings bypass LocalDeck capture."]},{title:"Removed",changes:["Separate log, request, and share buttons from service rows."]}]},{version:"1.0.3",title:"Cleaner requests and CLI updates",sections:[{title:"Request filtering",changes:["Hide successful asset and development-module requests by default using browser resource types and file extensions, with explicit Vite, Next.js static, and SvelteKit immutable-asset paths.","Keep failures, mutations, page navigations, and recognized API paths visible. Add a saved Show assets & dev traffic toggle and a hidden-request count. Filtering does not discard captured records."]},{title:"CLI updater",changes:["Add localdeck --update to install the latest public npm release into the existing global npm installation prefix.","Verify the updated CLI before stopping the daemon, then restart through the newly installed CLI. Failed installation or validation leaves the running daemon untouched.","Explain that daemon restart stops managed services and public shares; services must be started again afterward.","Support standard global npm installs on macOS, Linux, and Windows, plus custom Unix prefixes. Reject source checkouts, linked builds, local installs, npx caches, and unrecognized layouts.","Report missing npm, permission errors, shutdown timeouts, and restart failures without invoking sudo."]}]},{version:"1.0.2",title:"Request inspection and automatic crash recovery",sections:[{title:"Request inspection",changes:["Restore request inspection and GET/HEAD replay in the dashboard, with separate View requests and View logs actions on services and project pages.","Add persistent Requests and Logs controls to the bottom bar. Switch views directly while retaining selected service sources.","Expand or collapse request details by clicking anywhere on a request row. Add full-row hover and keyboard focus highlights, while retaining keyboard button access.","Organize details in one column with Request headers, Response headers, Query parameters, Cookies, and Body sections, all collapsed by default.","Capture original HTTP request and response headers, preserving duplicate headers and Set-Cookie attributes. Limit each direction to 100 headers or 16 KiB.","Capture original request and response body previews up to 16 KiB per direction without buffering the full transfer. Show incomplete and truncated transfers explicitly.","Decode complete gzip, deflate, and Brotli bodies within the preview limit. Display binary or undecodable compressed data as Base64.","Show request cookies, response cookies, and repeated query parameters. Preserve captured values in local request history; older records explicitly identify missing capture data.","Display replay responses inside Body. Replay remains restricted to GET/HEAD, sends no original cookies, authorization, or body, and keeps response-size and timeout limits."]},{title:"Automatic crash recovery",changes:["Retry unexpectedly exited dashboard-managed and terminal-managed services up to three times, waiting three seconds before each attempt.","Cancel pending retries on Stop, Stop all, Ctrl-C, or daemon shutdown. Require a manual start after the retry budget is exhausted.","Log each retry attempt and preserve the underlying crash error when the restart limit is reached.","Clean up the previous process tree before retrying, guard readiness checks against stale processes, and revalidate upstream ownership when a terminal service changes PID."]},{title:"Documentation and validation",changes:["Document request capture limits, local storage of captured headers and cookies, replay behavior, and automatic restart semantics.","Add coverage for bounded body and header capture, duplicate cookies, compressed and interrupted transfers, retry limits, cancellation, and request metadata rendering."]}]},{version:"1.0.1",title:"Routing and packaging fixes",sections:[{title:"Fixes",changes:["Keep health checks on the detected IPv4 or IPv6 listener, preventing routing to another project using the same port on a different loopback address. Ignore stale health-check results after an upstream change.","Run platform-independent forwarder checks on Linux and macOS; restrict native plutil validation to macOS."]},{title:"Documentation and packaging",changes:["Remove private repository links from npm metadata and the README. Include configuration, command, dashboard, and MCP documentation in the package.","Align the README configuration example with the commands array generated by localdeck init and remove the assumed health endpoint."]}]},{version:"1.0.0",title:"Product launch",sections:[{title:"Project setup and configuration",changes:["Initialize .localdeck from package scripts, preview detection with --dry-run, or define commands explicitly for other languages.","Remember projects by configuration-file identity. Show unavailable projects with recovery errors instead of dropping them from the dashboard.","Configure startup dependencies, service tags, and named profiles. Start prerequisites first and stop project services in reverse dependency order.","Edit project nicknames, public/upstream ports, readiness checks, timing, and dependencies in project settings. Save configuration atomically; apply runtime changes after restart.","Disable nickname Save when its normalized value is unchanged. Expand service configuration to the available page width."]},{title:"Runtime and networking",changes:["Run existing development commands through a background daemon, with stable public ports and automatic upstream listener detection.","Add native Windows process and TCP listener discovery through PowerShell, plus a dedicated Windows networking CI job. Remove built-in Windows/Linux forwarding without invoking the macOS installer.","Provide project-qualified service identities and nickname-based localhost URLs. Reject ambiguous bare service names instead of selecting the wrong project.","Inject PORT and LOCALDECK_URL and resolve service references for local communication. Support TCP and HTTP readiness checks and database endpoints.","Keep terminal-owned and daemon-owned process lifecycles distinct. Clean up child process groups on stop, failed startup, and shutdown.","Offer optional port-free URLs through a verified local forwarder, with macOS setup, retry, removal, and fallback to original port URLs.","Add a Windows UAC installer for a persistent, loopback-only portproxy rule, guarded by a machine-level ownership marker, with verification and administrator-approved removal. Native elevated testing is pending.","Cancel pending public-share startup during shutdown so tunnel startup does not delay service cleanup."]},{title:"Dashboard navigation and controls",changes:["Add dedicated /projects, /services, /settings, /about, and /changelog pages with direct links, refresh, and browser Back/Forward support.","Render the requested page before daemon data loads, eliminating the All Services flash when refreshing Projects.","Search configured and running services across projects. Start and stop services directly in the list; open service output in the Logs panel instead of a separate service page.","Add a collapsible, resizable sidebar with saved preferences and a compact mobile layout.","Align Local runtime, daemon connection, active-service count, and Logs in one footer row.","Show an Enable Clean URLs action above Local runtime when Clean URLs are off. Enable forwarding directly, with pending and retry states.","Center action labels and empty states while keeping service rows full-width and left-aligned. Use neutral keyboard focus indicators, underlined Logs controls, and a borderless close icon.","Dismiss popup menus on outside interaction or Escape. Remove the redundant project Activity section."]},{title:"Logs and troubleshooting",changes:["Start and stop individual services from project pages, open their specific log tabs, and manage sharing with optional passwords, public URL copying, and Stop sharing. Display active public links beneath local service URLs in both service views.","Distinguish sharing lifecycle events and tunnel requests with teal SHARE labels; keep application stdout separate.","Stream service output live. Select multiple services in a bottom Logs panel, merge their output chronologically, or switch to individual service tabs.","Filter retained output, follow new lines, resize the panel with pointer or keyboard, and remember its height.","Configure the log-line limit in Settings from 100 to 5,000, with a default of 1,000. Apply it to live buffering and the combined view, and save the preference in the browser.","Preserve record identity and ordering when merging history with live output. Retry failed history loads and keep removed sources available for deselection.","Explain port conflicts with actionable recovery steps, including Vite strictPort and PORT configuration. Keep raw errors under Technical details and include guidance in startup logs.","Record proxied HTTP requests and expose request inspection through the CLI/API. Support bounded GET/HEAD replay through the API.","Generate local diagnostics with configuration, readiness failures, and recent logs, redacting environment values and recognized credentials."]},{title:"CLI, sharing, and integrations",changes:["Provide init, doctor, commands, up, run, ps, port, logs, requests, stop, open, and daemon-management commands, plus shorthand configured-service launches.","Add --h and --v aliases for help and version alongside the standard flags.","Share local HTTP services over HTTPS using cloudflared, with optional password protection and explicit share cleanup.","Treat incoming public tunnel traffic as reachability confirmation when local DNS probes lag. Add masked share passwords with on-demand reveal and remove input focus outlines.","Verify public tunnel connectivity before marking a share active. Keep tunnel startup and failure status in the daemon so refreshing the dashboard preserves it. Close the Share menu on submission and show the allocated URL beside its verification spinner. Show a spinner in the URL position while connecting and an inline error on failure. Suggest opening the pending link after one minute. Bound startup to two minutes and close unreachable tunnels with retry guidance.","Forward shared HTTP and WebSocket requests using the upstream Host so Vite accepts tunnel traffic. Preserve the public hostname and HTTPS scheme in forwarded headers.","Explain the separate cloudflared installation requirement in Settings, About, and platform-specific sharing errors, with official installation instructions.","Expose project and service tools to MCP clients. Access diagnostics through the daemon package export instead of a relative source import.","Authenticate CLI control and attach requests with an owner-only daemon token and validate browser origins for dashboard control requests."]},{title:"Packaging and release validation",changes:["Prepare one npm package containing the CLI, daemon, and bundled dashboard. Runtime requires Node.js 20 or newer; Bun is used for development and builds.","Bundle self-hosted IBM Plex fonts, the LocalDeck icon, license text, and third-party notices.","Adopt the LocalDeck Free-Use Proprietary License: free personal and commercial use, with restrictions on selling LocalDeck or charging for access to it.","Add TypeScript/Svelte checks, unit and process integration tests, installed-package tests, and clean-build artifact verification."]}]}];var Jp=P("<li> </li>"),Xp=P('<section class="release-section svelte-1tl5wtp"><h3 class="svelte-1tl5wtp"> </h3><ul class="svelte-1tl5wtp"></ul></section>'),Qp=P('<article class="svelte-1tl5wtp"><h2 class="svelte-1tl5wtp"> <span class="svelte-1tl5wtp"> </span></h2> <!></article>'),Zp=P('<section class="page-shell" aria-labelledby="page-title"><header class="page-heading"><div><h1 id="page-title" tabindex="-1">Changelog</h1><p class="page-subtitle">What’s new in LocalDeck.</p></div></header> <!></section>');function em(t){var e=Zp(),r=v(E(e),2);Ae(r,1,()=>Yp,s=>s.version,(s,a)=>{var i=Qp(),o=E(i),l=E(o),c=v(l),d=V(c,!0),h=v(o,2);Ae(h,1,()=>n(a).sections,kt,(p,f)=>{var g=Xp(),m=E(g),b=V(m,!0),k=v(m);Ae(k,5,()=>n(f).changes,kt,(y,S)=>{var x=Jp(),w=V(x,!0);M(()=>L(w,n(S))),u(y,x)}),M(()=>L(b,n(f).title)),u(p,g)}),M(()=>{de(i,"aria-labelledby",`release-${n(a).version}`),de(o,"id",`release-${n(a).version}`),L(l,`v${n(a).version??""} `),L(d,n(a).title)}),u(s,i)}),u(t,e)}var tm=P('<span class="icon svelte-sh54s5"><!></span>'),rm=P('<span class="mono svelte-sh54s5"> </span>'),Sl=P("<!> <!>",1),nm=P('<form class="form svelte-sh54s5"><!> <!></form>'),sm=P('<section class="secrets svelte-sh54s5" aria-label="Project secrets"><div class="heading svelte-sh54s5"><div><h2 class="svelte-sh54s5">Environment secrets</h2> <p class="note svelte-sh54s5"> </p></div> <!></div> <!> <aside class="storage svelte-sh54s5"><!> <div><strong class="svelte-sh54s5">Stored locally · Not encrypted</strong><p class="svelte-sh54s5">Secrets are stored in plaintext on this computer, outside your project. They are not encrypted. Anyone with access to the file can read them.</p></div></aside></section> <!>',1);function am(t,e){const r=gi();ze(e,!0);let s=G(tt([])),a=G(!1),i=G(null),o=G(!1),l=G(""),c=G(""),d=G(!1),h=G(""),p=0;const f=j(()=>e.project.id);async function g(N,A){const z=await fetch(`/api/projects/${encodeURIComponent(N)}/secrets`),W=await z.json();if(A===p){if(!z.ok)throw new Error(W.error??"Couldn't load secrets.");_(s,W.secrets,!0),_(a,!0)}}xt(()=>{const N=n(f),A=++p;_(s,[],!0),_(a,!1),_(o,!1),g(N,A).catch(z=>{A===p&&(_(a,!0),Te.error(_t(z)))})});function m(N){_(i,N?{existing:!0,configured:N.configured,name:N.name}:{existing:!1,configured:!1,name:""},!0),_(l,(N==null?void 0:N.name)??"",!0),_(c,""),_(h,""),_(o,!0)}async function b(N){if(N.preventDefault(),n(d)||!n(l)||!n(c))return;const A=e.project.id,z=p,W=n(l);_(d,!0),_(h,"");try{const U=await fetch(`/api/projects/${encodeURIComponent(A)}/secrets/${encodeURIComponent(W)}`,{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({value:n(c)})}),Y=await U.json();if(!U.ok)throw new Error(Y.error??"Couldn't save the secret.");if(z!==p)return;_(o,!1),_(c,""),Te.success(`${W} saved`),await g(A,z)}catch(U){_(h,_t(U),!0),Te.error(n(h))}finally{_(d,!1)}}async function k(N){if(!await Vs({title:`Remove ${N.name}?`,body:"The saved value is deleted from this computer. Services that need it won't start until you set it again.",confirmLabel:"Remove secret",danger:!0}))return;const A=e.project.id,z=p;try{const W=await fetch(`/api/projects/${encodeURIComponent(A)}/secrets/${encodeURIComponent(N.name)}`,{method:"DELETE"}),U=await W.json();if(!W.ok)throw new Error(U.error??"Couldn't remove the secret.");Te.success(`${N.name} removed`),await g(A,z)}catch(W){Te.error(_t(W))}}var y=sm(),S=oe(y),x=E(S),w=E(x),q=v(E(w),2),C=V(q),R=v(w,2);we(R,{get icon(){return il},onclick:()=>m(),children:(N,A)=>{var z=ie("Add secret");u(N,z)},$$slots:{default:!0}});var T=v(x,2);{var I=N=>{qn(N,{label:"Secrets",children:(A,z)=>{var W=Me(),U=oe(W);Ae(U,17,()=>n(s),Y=>Y.name,(Y,Z)=>{Ns(Y,{leading:fe=>{var pe=tm(),ge=E(pe);al(ge,{size:16,"aria-hidden":"true"}),u(fe,pe)},title:fe=>{var pe=rm(),ge=V(pe,!0);M(()=>L(ge,n(Z).name)),u(fe,pe)},meta:fe=>{{let pe=j(()=>n(Z).configured?"ready":"warn");Tn(fe,{get tone(){return n(pe)},children:(ge,De)=>{var Fe=ie();M(()=>L(Fe,n(Z).configured?"Configured":"Missing value")),u(ge,Fe)},$$slots:{default:!0}})}},actions:fe=>{var pe=Sl(),ge=oe(pe);{let ke=j(()=>`${n(Z).configured?"Replace":"Set value for"} ${n(Z).name}`);we(ge,{size:"sm",get"aria-label"(){return n(ke)},onclick:()=>m(n(Z)),children:(Ee,ce)=>{var _e=ie();M(()=>L(_e,n(Z).configured?"Replace":"Set value")),u(Ee,_e)},$$slots:{default:!0}})}var De=v(ge,2);{var Fe=ke=>{{let Ee=j(()=>`Remove ${n(Z).name}`);we(ke,{size:"sm",variant:"ghost",get"aria-label"(){return n(Ee)},onclick:()=>k(n(Z)),children:(ce,_e)=>{var Ue=ie("Remove");u(ce,Ue)},$$slots:{default:!0}})}};H(De,ke=>{n(Z).configured&&ke(Fe)})}u(fe,pe)}})}),u(A,W)}})},O=N=>{_r(N,{get icon(){return al},title:"No secrets yet",body:"Declare secret names in .localdeck or add one here. Values stay on this computer.",action:z=>{we(z,{variant:"primary",get icon(){return il},onclick:()=>m(),children:(W,U)=>{var Y=ie("Add secret");u(W,Y)},$$slots:{default:!0}})}})};H(T,N=>{n(s).length?N(I):n(a)&&N(O,1)})}var $=v(T,2),F=E($);ah(F,{size:16,"aria-hidden":"true"});var K=v(S,2);{const N=z=>{var W=Sl(),U=oe(W);we(U,{variant:"ghost",onclick:()=>_(o,!1),children:(Z,re)=>{var te=ie("Cancel");u(Z,te)},$$slots:{default:!0}});var Y=v(U,2);{let Z=j(()=>!n(l)||!n(c));we(Y,{variant:"primary",type:"submit",get form(){return r},get loading(){return n(d)},get disabled(){return n(Z)},children:(re,te)=>{var me=ie("Save secret");u(re,me)},$$slots:{default:!0}})}u(z,W)};let A=j(()=>{var z,W;return(z=n(i))!=null&&z.configured?`Replace ${n(i).name}`:(W=n(i))!=null&&W.existing?`Set ${n(i).name}`:"Add secret"});No(K,{get title(){return n(A)},description:"Saved values are never shown again.",get open(){return n(o)},set open(z){_(o,z,!0)},actions:N,children:(z,W)=>{var U=nm(),Y=E(U);tr(Y,{label:"Variable name",children:(te,me)=>{let se=()=>(me==null?void 0:me()).id;{let fe=j(()=>{var pe;return(pe=n(i))==null?void 0:pe.existing});It(te,{get id(){return se()},mono:!0,placeholder:"SECRET_KEY",pattern:"[A-Za-z_][A-Za-z0-9_]*",spellcheck:"false",autocapitalize:"off",get readonly(){return n(fe)},required:!0,get value(){return n(l)},set value(pe){_(l,pe,!0)}})}},$$slots:{default:!0}});var Z=v(Y,2);{const re=(me,se)=>{let fe=()=>(se==null?void 0:se()).id,pe=()=>(se==null?void 0:se()).describedby,ge=()=>(se==null?void 0:se()).invalid;It(me,{get id(){return fe()},type:"password",get"aria-describedby"(){return pe()},get invalid(){return ge()},placeholder:"Enter a value",autocomplete:"new-password",required:!0,get value(){return n(c)},set value(De){_(c,De,!0)}})};let te=j(()=>n(h)||void 0);tr(Z,{label:"Secret value",get error(){return n(te)},children:re,$$slots:{default:!0}})}M(()=>de(U,"id",r)),Ht("submit",U,b),u(z,U)},$$slots:{actions:!0,default:!0}})}M(()=>L(C,`${n(s).length??""} ${n(s).length===1?"variable":"variables"} · Only this project can use them. Changes apply when the service next starts.`)),u(t,y),Oe()}function im(t,e=!1){const r={json:!1,tokens:[{text:t,kind:"plain"}]};if(e||!t.trim())return r;try{JSON.parse(t)}catch{return r}const s=t.match(/"(?:\\.|[^"\\])*"|-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?|true|false|null|[{}\[\],:]/g)??[],a=[];let i=0;const o=(c,d="plain")=>a.push({text:c,kind:d}),l=()=>o(`
|
|
21
|
-
`+" ".repeat(i));return s.forEach((c,d)=>{c==="{"||c==="["?(o(c),i++,s[d+1]!==(c==="{"?"}":"]")&&l()):c==="}"||c==="]"?(i--,s[d-1]!==(c==="}"?"{":"[")&&l(),o(c)):c===","?(o(c),l()):c===":"?o(": "):o(c,c.startsWith('"')?s[d+1]===":"?"key":"string":/^(true|false|null)$/.test(c)?"literal":"number")}),{json:!0,tokens:a}}var om=P('<span aria-live="polite"> </span>'),lm=P("<span> </span>"),cm=P('<code class="svelte-1eh4gal"></code>'),dm=P('<p role="alert" class="svelte-1eh4gal"> </p>'),um=P('<div class="body-viewer svelte-1eh4gal"><div class="body-toolbar svelte-1eh4gal"><span> </span><!></div> <pre role="region" tabindex="0" class="svelte-1eh4gal"><!></pre> <!></div>');function Sd(t,e){ze(e,!0);let r=ve(e,"encoded",3,!1),s=ve(e,"label",3,"response"),a=ve(e,"truncated",3,!1);const i=j(()=>im(e.data,r()));let o=G(!1),l=G("");xt(()=>{e.data,_(o,!1),_(l,"")});async function c(){try{await navigator.clipboard.writeText(e.data),_(o,!0),_(l,"")}catch{_(l,"Could not copy. Select the response text and copy it manually.")}}var d=um(),h=E(d),p=E(h),f=V(p),g=v(p);{let w=j(()=>n(o)?Mr:hn),q=j(()=>`Copy ${s()}`),C=j(()=>a()?"Copy captured portion":`Copy ${s()}`);we(g,{size:"sm",variant:"ghost",get icon(){return n(w)},get"aria-label"(){return n(q)},get title(){return n(C)},onclick:c,children:(R,T)=>{var I=om(),O=V(I,!0);M(()=>L(O,n(o)?"Copied":`Copy ${s()}`)),u(R,I)},$$slots:{default:!0}})}var m=v(h,2),b=E(m);{var k=w=>{var q=cm();Ae(q,21,()=>n(i).tokens,kt,(C,R)=>{var T=lm(),I=V(T,!0);M(()=>{Ze(T,1,Fc(n(R).kind),"svelte-1eh4gal"),L(I,n(R).text)}),u(C,T)}),u(w,q)},y=w=>{var q=ie("(empty body)");u(w,q)};H(b,w=>{e.data?w(k):w(y,-1)})}var S=v(m,2);{var x=w=>{var q=dm(),C=V(q,!0);M(()=>L(C,n(l))),u(w,q)};H(S,w=>{n(l)&&w(x)})}M(()=>{L(f,`${r()?"Base64":n(i).json?"JSON":"Text"}${a()?" · partial":""}`),de(m,"aria-label",`${s()} content`)}),u(t,d),Oe()}const $a=(t,e=Mt,r=Mt)=>{var s=Me(),a=oe(s);{var i=l=>{var c=fm();Ae(c,21,e,kt,(d,h)=>{var p=j(()=>fi(n(h),2));let f=()=>n(p)[0],g=()=>n(p)[1];var m=vm(),b=E(m),k=V(b,!0),y=v(b),S=V(y,!0);M(()=>{L(k,f()),L(S,g()||"(empty)")}),u(d,m)}),u(l,c)},o=l=>{var c=hm(),d=V(c,!0);M(()=>L(d,r())),u(l,c)};H(a,l=>{e().length?l(i):l(o,-1)})}u(t,s)},jl=(t,e=Mt,r=Mt)=>{var s=_m(),a=E(s),i=V(a),o=v(a,2);{var l=d=>{var h=pm(),p=oe(h);$a(p,()=>r().entries,()=>"No headers.");var f=v(p,2);{var g=m=>{var b=gm();u(m,b)};H(f,m=>{r().truncated&&m(g)})}u(d,h)},c=d=>{var h=mm();u(d,h)};H(o,d=>{r()?d(l):d(c,-1)})}M(()=>L(i,`${e()??""}${r()?` (${r().entries.length})`:""}`)),u(t,s)},Bi=(t,e=Mt,r=Mt)=>{var s=wm(),a=oe(s),i=V(a,!0),o=v(a,2);{var l=d=>{var h=ym(),p=oe(h),f=V(p),g=v(p,2);{let m=j(()=>r().encoding==="base64"),b=j(()=>e()==="Request body"?"request body":"response"),k=j(()=>r().truncated||!r().complete);Sd(g,{get data(){return r().data},get encoded(){return n(m)},get label(){return n(b)},get truncated(){return n(k)}})}M(m=>L(f,`${m??""} bytes${r().truncated?" · partial capture":""}${r().complete?"":" · incomplete transfer"}${r().encoding==="base64"?" · Base64":""}${r().contentEncoding?` · ${r().contentEncoding} encoded`:""}`),[()=>r().bytes.toLocaleString()]),u(d,h)},c=d=>{var h=bm();u(d,h)};H(o,d=>{r()?d(l):d(c,-1)})}M(()=>L(i,e())),u(t,s)};var vm=P('<div class="svelte-s74nzf"><dt class="svelte-s74nzf"> </dt><dd class="svelte-s74nzf"> </dd></div>'),fm=P('<dl class="svelte-s74nzf"></dl>'),hm=P('<p class="svelte-s74nzf"> </p>'),gm=P('<p class="svelte-s74nzf">Header capture limit reached; some headers were omitted.</p>'),pm=P("<!> <!>",1),mm=P('<p class="svelte-s74nzf">Headers were not captured for this request.</p>'),_m=P('<details class="svelte-s74nzf"><summary class="svelte-s74nzf"> </summary> <!></details>'),ym=P('<p class="svelte-s74nzf"> </p> <!>',1),bm=P('<p class="svelte-s74nzf">This body was not captured. Make a new request through the LocalDeck URL.</p>'),wm=P('<h4 class="svelte-s74nzf"> </h4> <!>',1),km=P('<p class="svelte-s74nzf">Request cookies were not captured.</p>'),xm=P('<p class="svelte-s74nzf">Response cookies were not captured.</p>'),Sm=P('<p role="status" class="svelte-s74nzf">Loading response…</p>'),jm=P('<p role="alert" class="svelte-s74nzf"> </p><!>',1),Pm=P('<h4 class="svelte-s74nzf">Replay response</h4> <p class="svelte-s74nzf"> </p> <!>',1),Cm=P('<div class="metadata svelte-s74nzf"><!> <!> <details class="svelte-s74nzf"><summary class="svelte-s74nzf"> </summary> <!></details> <details class="svelte-s74nzf"><summary class="svelte-s74nzf">Cookies</summary> <h4 class="svelte-s74nzf">Request cookies</h4> <!> <h4 class="svelte-s74nzf">Response cookies</h4> <!></details> <details class="svelte-s74nzf"><summary class="svelte-s74nzf">Body</summary> <!></details> <details class="svelte-s74nzf"><summary class="svelte-s74nzf">Response</summary> <!> <!></details></div>');function jd(t,e){ze(e,!0);let r=ve(e,"replayResult",3,null),s=G(null),a=G(!1),i=G(""),o;Lv(()=>o==null?void 0:o.abort());async function l(U){if(!(!U.currentTarget.open||n(s)||n(a))){if(!e.record.responseBodyId){_(s,e.record.responseBody??null,!0);return}o=new AbortController,_(a,!0),_(i,"");try{const Y=await fetch(`/api/services/${encodeURIComponent(e.record.service)}/response?requestId=${encodeURIComponent(e.record.id)}`,{signal:o.signal}),Z=await Y.json();if(!Y.ok)throw new Error(Z.error??"Unable to load response");_(s,Z,!0)}catch(Y){o.signal.aborted||_(i,Y instanceof Error?Y.message:"Unable to load response",!0)}finally{_(a,!1)}}}const c=j(()=>{var U;return(((U=e.record.requestHeaders)==null?void 0:U.entries)??[]).filter(([Y])=>Y.toLowerCase()==="cookie").flatMap(([,Y])=>Y.split(";").map(Z=>{const re=Z.indexOf("=");return re<0?[Z.trim(),""]:[Z.slice(0,re).trim(),Z.slice(re+1).trim()]}))}),d=j(()=>{var U;return(((U=e.record.responseHeaders)==null?void 0:U.entries)??[]).filter(([Y])=>Y.toLowerCase()==="set-cookie")}),h=j(()=>[...new URLSearchParams(e.record.path.includes("?")?e.record.path.slice(e.record.path.indexOf("?")+1):"")]);var p=Cm(),f=E(p);jl(f,()=>"Request headers",()=>e.record.requestHeaders);var g=v(f,2);jl(g,()=>"Response headers",()=>e.record.responseHeaders);var m=v(g,2),b=E(m),k=V(b),y=v(b,2);$a(y,()=>n(h),()=>"No query parameters.");var S=v(m,2),x=v(E(S),4);{var w=U=>{$a(U,()=>n(c),()=>e.record.requestHeaders.truncated?"No cookies in the captured headers.":"No cookies sent.")},q=U=>{var Y=km();u(U,Y)};H(x,U=>{e.record.requestHeaders?U(w):U(q,-1)})}var C=v(x,4);{var R=U=>{$a(U,()=>n(d),()=>e.record.responseHeaders.truncated?"No cookies in the captured headers.":"No cookies set.")},T=U=>{var Y=xm();u(U,Y)};H(C,U=>{e.record.responseHeaders?U(R):U(T,-1)})}var I=v(S,2),O=v(E(I),2);Bi(O,()=>"Request body",()=>e.record.requestBody);var $=v(I,2),F=v(E($),2);{var K=U=>{var Y=Sm();u(U,Y)},N=U=>{var Y=jm(),Z=oe(Y),re=V(Z,!0),te=v(Z);Bi(te,()=>"Saved preview",()=>e.record.responseBody),M(()=>L(re,n(i))),u(U,Y)},A=U=>{Bi(U,()=>"Response body",()=>n(s)??e.record.responseBody)};H(F,U=>{n(a)?U(K):n(i)?U(N,1):U(A,-1)})}var z=v(F,2);{var W=U=>{var Y=Pm(),Z=v(oe(Y),2),re=V(Z),te=v(Z,2);Sd(te,{get data(){return r().body},label:"replay response",get truncated(){return r().truncated}}),M(()=>L(re,`HTTP ${r().status??""} · ${r().durationMs??""} ms${r().truncated?" · preview truncated at 64 KiB":""}`)),u(U,Y)};H(z,U=>{r()&&U(W)})}M(()=>L(k,`Query parameters (${n(h).length??""})`)),Ht("toggle",$,l),u(t,p),Oe()}var Em=P("<li> </li>"),Rm=P('<ul class="note svelte-n8kbyu"></ul>'),qm=P('<form class="save svelte-n8kbyu"><!> <!> <div class="submit"><!></div></form>'),Lm=P(`<p class="note svelte-n8kbyu">This request can't be saved as a check. Checks need GET/HEAD without a body or sensitive path values.</p>`),Am=P('<pre role="region" tabindex="0" aria-label="Sanitized cURL preview" class="svelte-n8kbyu"> </pre> <!> <div class="actions svelte-n8kbyu"><!> <!></div> <!>',1),Tm=P(`<section class="reproduction svelte-n8kbyu" aria-label="Request reproduction"><h4 class="svelte-n8kbyu">Reproduce this request</h4> <p class="note svelte-n8kbyu">Review a sanitized export or save an unauthenticated GET/HEAD check. Saving doesn't send a request.</p> <div><!></div> <!></section>`);function Pd(t,e){ze(e,!0);let r=G(null),s=G(!1),a=G(!1),i=G(""),o=G(""),l=G(""),c=G("");xt(()=>{e.record.id,e.record.service,_(r,null),_(i,""),_(o,""),_(l,""),_(c,"")});async function d(){if(n(s))return;const y=e.record;_(s,!0);try{const S=await fetch(`/api/services/${encodeURIComponent(y.service)}/reproduction?requestId=${encodeURIComponent(y.id)}`),x=await S.json();if(!S.ok)throw new Error(x.error??"The export is unavailable.");e.record===y&&_(r,x,!0)}catch(S){e.record===y&&Te.error(_t(S))}finally{_(s,!1)}}async function h(y){if(n(r))try{await navigator.clipboard.writeText(y==="structured"?JSON.stringify(n(r).request,null,2):n(r).curl),_(i,y,!0),setTimeout(()=>{n(i)===y&&_(i,"")},1500)}catch{Te.error("Clipboard unavailable. Select and copy the preview text.")}}async function p(y){var w;y.preventDefault();const S=Number(n(l));if(!e.service||!((w=n(r))!=null&&w.executable)||n(a)||!n(o).trim()||!Number.isInteger(S))return;const x=e.record;_(a,!0),_(c,"");try{const q=await fetch(`/api/projects/${encodeURIComponent(e.service.projectId)}/checks`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({requestId:x.id,serviceKey:x.service,name:n(o),expectedStatus:S})}),C=await q.json();if(!q.ok)throw new Error(C.error??"Couldn't save the check.");e.record===x&&(Te.success("Check saved · run it from Checks"),_(o,""),_(l,""))}catch(q){e.record===x&&(_(c,_t(q),!0),Te.error(n(c)))}finally{_(a,!1)}}var f=Tm(),g=v(E(f),4),m=E(g);we(m,{size:"sm",get icon(){return pf},get loading(){return n(s)},onclick:d,children:(y,S)=>{var x=ie();M(()=>L(x,n(r)?"Refresh preview":"Preview sanitized request")),u(y,x)},$$slots:{default:!0}});var b=v(g,2);{var k=y=>{var S=Am(),x=oe(S),w=V(x,!0),q=v(x,2);{var C=K=>{var N=Rm();Ae(N,21,()=>n(r).omitted,kt,(A,z)=>{var W=Em(),U=V(W,!0);M(()=>L(U,n(z))),u(A,W)}),u(K,N)};H(q,K=>{n(r).omitted.length&&K(C)})}var R=v(q,2),T=E(R);{let K=j(()=>n(i)==="curl"?Mr:hn);we(T,{size:"sm",get icon(){return n(K)},onclick:()=>h("curl"),children:(N,A)=>{var z=ie();M(()=>L(z,n(i)==="curl"?"Copied":"Copy sanitized cURL")),u(N,z)},$$slots:{default:!0}})}var I=v(T,2);{let K=j(()=>n(i)==="structured"?Mr:hn);we(I,{size:"sm",get icon(){return n(K)},onclick:()=>h("structured"),children:(N,A)=>{var z=ie();M(()=>L(z,n(i)==="structured"?"Copied":"Copy structured export")),u(N,z)},$$slots:{default:!0}})}var O=v(R,2);{var $=K=>{var N=qm(),A=E(N);tr(A,{label:"Check name",children:(Z,re)=>{let te=()=>(re==null?void 0:re()).id;It(Z,{get id(){return te()},size:"sm",required:!0,maxlength:120,placeholder:"Homepage responds",get value(){return n(o)},set value(me){_(o,me,!0)}})},$$slots:{default:!0}});var z=v(A,2);{const Y=(re,te)=>{let me=()=>(te==null?void 0:te()).id,se=()=>(te==null?void 0:te()).describedby,fe=()=>(te==null?void 0:te()).invalid;It(re,{get id(){return me()},size:"sm",mono:!0,get"aria-describedby"(){return se()},get invalid(){return fe()},inputmode:"numeric",required:!0,placeholder:"200",get value(){return n(l)},set value(pe){_(l,pe,!0)}})};let Z=j(()=>n(c)||void 0);tr(z,{label:"Expected HTTP status",get error(){return n(Z)},children:Y,$$slots:{default:!0}})}var W=v(z,2),U=E(W);{let Y=j(()=>!n(o).trim()||!n(l));we(U,{size:"sm",variant:"primary",type:"submit",get icon(){return Qf},get loading(){return n(a)},get disabled(){return n(Y)},children:(Z,re)=>{var te=ie("Save as check");u(Z,te)},$$slots:{default:!0}})}Ht("submit",N,p),u(K,N)},F=K=>{var N=Lm();u(K,N)};H(O,K=>{n(r).executable&&e.service?K($):K(F,-1)})}M(()=>L(w,n(r).curl)),u(y,S)};H(b,y=>{n(r)&&y(k)})}u(t,f),Oe()}var Pl=P('<p class="alert error svelte-1vefmtr" role="alert"> </p>'),Nm=P('<p class="note svelte-1vefmtr" role="status">Loading comparison…</p>'),Im=P('<p class="svelte-1vefmtr">Fewer than five requests in at least one window. Generate representative traffic before drawing conclusions.</p>'),Cl=P('<p class="svelte-1vefmtr"> </p>'),Mm=P('<div class="alert svelte-1vefmtr"><strong class="svelte-1vefmtr">Limited evidence — no conclusion yet</strong> <!> <!></div>'),Dm=P('<p class="note warn svelte-1vefmtr">Some summary details were shortened or omitted.</p>'),zm=P('<article class="panel svelte-1vefmtr"><h3 class="svelte-1vefmtr"> <span class="svelte-1vefmtr"> </span></h3> <dl class="metrics svelte-1vefmtr"><div><dt class="svelte-1vefmtr">Request samples</dt><dd class="svelte-1vefmtr"> </dd></div> <div><dt class="svelte-1vefmtr">HTTP error rate</dt><dd class="svelte-1vefmtr"> </dd></div> <div><dt class="svelte-1vefmtr">Error log lines</dt><dd class="svelte-1vefmtr"> </dd></div> <div><dt class="svelte-1vefmtr">Restarts</dt><dd class="svelte-1vefmtr"> </dd></div></dl> <p class="note svelte-1vefmtr"> </p> <!></article>'),Om=P("<li> </li>"),Um=P('<ul class="svelte-1vefmtr"></ul>'),Hm=P('<p class="note svelte-1vefmtr">No matching signatures in retained evidence.</p>'),Bm=P('<article class="panel svelte-1vefmtr"><h3 class="svelte-1vefmtr"> <span class="svelte-1vefmtr"> </span></h3> <!></article>'),Fm=P('<tr><th scope="row" class="svelte-1vefmtr"> </th><td class="svelte-1vefmtr"> </td><td class="svelte-1vefmtr"> </td><td class="svelte-1vefmtr"> </td><td class="svelte-1vefmtr"> </td></tr>'),Vm=P('<details class="routes svelte-1vefmtr"><summary class="svelte-1vefmtr">Route latency and request samples</summary> <div class="table-scroll svelte-1vefmtr"><table class="svelte-1vefmtr"><thead class="svelte-1vefmtr"><tr><th scope="col" class="svelte-1vefmtr">Route</th><th scope="col" class="svelte-1vefmtr">Before samples</th><th scope="col" class="svelte-1vefmtr">Before avg</th><th scope="col" class="svelte-1vefmtr">After samples</th><th scope="col" class="svelte-1vefmtr">After avg</th></tr></thead><tbody class="svelte-1vefmtr"></tbody></table></div></details>'),Wm=P(`<section class="card comparison svelte-1vefmtr" aria-label="Baseline comparison"><header class="card-head svelte-1vefmtr"><div><h2 class="svelte-1vefmtr"> </h2><p class="note svelte-1vefmtr"> </p></div> <!></header> <!> <div class="grid svelte-1vefmtr"></div> <p class="note svelte-1vefmtr">Window lengths and traffic volumes may differ. “Not observed again” doesn't mean an issue is fixed.</p> <div class="grid svelte-1vefmtr"></div> <!></section>`),$m=P('<!> <div class="ui-menu-separator" role="separator"></div> <!>',1),Km=P('<div class="alert svelte-1vefmtr"><strong class="svelte-1vefmtr">Partial history</strong><!></div>'),Gm=P('<div class="empty svelte-1vefmtr"><h2 class="svelte-1vefmtr"> </h2><p class="note svelte-1vefmtr"> </p></div>'),Ym=P('<button><span aria-hidden="true"></span> <span class="copy svelte-1vefmtr"><span class="source svelte-1vefmtr"> <span class="svelte-1vefmtr"> </span></span> <span class="title svelte-1vefmtr"> </span></span> <time class="svelte-1vefmtr"> </time></button>'),Jm=P('<div class="more svelte-1vefmtr"><!></div>'),El=P('<p class="alert svelte-1vefmtr" role="status"> </p>'),Xm=P('<p class="note svelte-1vefmtr" role="status">Loading event…</p>'),Qm=P('<p class="note svelte-1vefmtr"> </p>'),Zm=P('<p class="note svelte-1vefmtr" role="status">Loading captured metadata…</p>'),e1=P("<!><!>",1),t1=P('<section class="evidence svelte-1vefmtr" aria-label="Captured request evidence"><h3 class="svelte-1vefmtr">Captured request evidence</h3> <!></section>'),r1=P('<button class="nearby svelte-1vefmtr"> <span class="svelte-1vefmtr"> </span></button>'),n1=P('<p class="note svelte-1vefmtr">No nearby events in this loaded window.</p>'),s1=P('<dl class="details svelte-1vefmtr"><dt class="svelte-1vefmtr">Timestamp</dt><dd class="svelte-1vefmtr"> </dd> <dt class="svelte-1vefmtr">Source</dt><dd class="svelte-1vefmtr"> </dd> <dt class="svelte-1vefmtr">Type</dt><dd class="svelte-1vefmtr"> </dd> <dt class="svelte-1vefmtr">Event ID</dt><dd class="mono svelte-1vefmtr"> </dd></dl> <pre class="svelte-1vefmtr"> </pre> <!> <!> <h3 class="svelte-1vefmtr">Nearby in time</h3> <p class="note svelte-1vefmtr">Being close in time is context, not proof of cause. These are nearby events in the loaded, filtered results.</p> <!>',1),a1=P('<aside class="card inspector svelte-1vefmtr" aria-label="Event inspector"><header class="card-head svelte-1vefmtr"><h2 tabindex="-1" class="svelte-1vefmtr">Event detail</h2> <!></header> <div><!></div> <!></aside>'),i1=P('<section class="page-shell activity svelte-1vefmtr" aria-label="Activity"><div class="toolbar svelte-1vefmtr"><p class="intro svelte-1vefmtr">Follow incidents across services, then compare the evidence around a change.</p> <div class="live svelte-1vefmtr"><!> <!> <!></div></div> <section class="card baseline svelte-1vefmtr" aria-label="Baseline controls"><div><strong class="svelte-1vefmtr">Before your change</strong><p class="note svelte-1vefmtr">Save a five-minute evidence window to compare later.</p></div> <form class="baseline-form svelte-1vefmtr"><!> <!></form> <!></section> <!> <!> <!> <!> <form class="filters svelte-1vefmtr"><!> <!> <!> <!></form> <div class="meta svelte-1vefmtr"><span> </span><span>Newest first</span></div> <!> <div><div class="timeline svelte-1vefmtr" aria-label="Project activity"><!> <!> <!></div> <!></div></section>');function o1(t,e){ze(e,!0);let r=G(tt([])),s=G(tt([])),a=G(tt([])),i=G("incidents"),o=G(""),l=G(tt([])),c=G(tt({items:[],coverage:{partial:!1,reasons:[]}})),d=G(!0),h=G(!1),p=G(!1),f=G(""),g=G(0),m=G(null),b=G(""),k=G(""),y=G(null),S=G(null),x=G(!1),w=G(""),q=G(!1),C=G(!1),R=G(""),T=G(""),I=G(""),O=G(void 0),$=null,F=0,K=0,N=0,A=0,z;const W=()=>`/api/projects/${encodeURIComponent(e.projectId)}`,U=J=>new Date(J).toLocaleString(),Y=J=>`${Math.max(0,(J.to-J.from)/6e4).toFixed(1)} min`,Z=J=>J===null?"No requests":`${(J*100).toFixed(1)}%`;let re=j(()=>n(m)?n(r).filter(J=>J.id!==n(m).id&&Math.abs(J.ts-n(m).ts)<=3e4).slice(0,5):[]);async function te(J,Q){const le=await fetch(J,{...Q,signal:z==null?void 0:z.signal}),ye=await le.json();if(!le.ok)throw new Error(ye.error??"Activity request failed");return ye}function me(){try{localStorage.setItem(`localdeck.activity.${e.projectId}`,JSON.stringify({filter:n(i),query:n(o),services:n(l)}))}catch{}}function se(){const J=new URLSearchParams({filter:n(i),limit:"100"});return n(o).trim()&&J.set("query",n(o).trim()),n(l).length&&J.set("services",n(l).join(",")),J}async function fe(J=!1){if(n(h)&&J)return;const Q=++K,le=F,ye=W(),Le=se();J&&n(c).nextCursor&&Le.set("cursor",n(c).nextCursor),_(h,!0),_(f,"");try{const je=await te(`${ye}/activity?${Le}`);if(le!==F||Q!==K)return;_(c,je,!0),_(r,J?[...n(r),...je.items.filter(yt=>!n(r).some(qt=>qt.id===yt.id))]:je.items,!0),_(g,Date.now(),!0)}catch(je){le===F&&Q===K&&_(f,je instanceof Error?je.message:"Activity unavailable",!0)}finally{le===F&&Q===K&&_(h,!1)}}async function pe(){const J=F;try{const Q=await te(`${W()}/baselines`);J===F&&_(s,Q.items,!0)}catch(Q){J===F&&_(f,Q instanceof Error?Q.message:"Baselines unavailable",!0)}}async function ge(J,Q=!1){if(Q&&n(q))return;const le=++A,ye=F;if(Q||_(y,null),_(T,""),!J){_(q,!1);return}_(q,!0);try{const Le=await te(`${W()}/baselines/${encodeURIComponent(J)}`);ye===F&&le===A&&_(y,Le,!0)}catch(Le){ye===F&&le===A&&_(T,Le instanceof Error?Le.message:"Baseline expired or unavailable",!0)}finally{ye===F&&le===A&&_(q,!1)}}async function De(J,Q,le){_(x,!0);try{const ye=await te(`${W()}/activity/${encodeURIComponent(J)}/evidence`);if(Q!==F||le!==N)return;_(S,ye,!0),ye.request||_(w,"The original request evidence has expired or was cleared. The timeline summary remains available.")}catch(ye){Q===F&&le===N&&_(w,ye instanceof Error?`Request evidence unavailable: ${ye.message}`:"The original request evidence is no longer available.",!0)}finally{Q===F&&le===N&&_(x,!1)}}async function Fe(J){var ye;const Q=++N,le=F;if(_(b,J,!0),_(m,null),_(S,null),_(x,!1),_(w,""),_(R,""),_(C,!!J),!!J)try{let Le=n(r).find(je=>je.id===J&&(!n(l).length||n(l).includes(je.service)));if(!Le){const je=new URLSearchParams({eventId:J,filter:"all",limit:"1"});n(l).length&&je.set("services",n(l).join(",")),Le=(await te(`${W()}/activity?${je}`)).items[0]}if(le!==F||Q!==N)return;_(m,Le??null,!0),Le||_(R,"This event has expired, was cleared, or is outside the selected service scope."),(Le==null?void 0:Le.kind)==="request"&&De(Le.id,le,Q),await En(),le===F&&Q===N&&((ye=n(O))==null||ye.focus())}catch(Le){le===F&&Q===N&&_(R,Le instanceof Error?Le.message:"Event unavailable",!0)}}async function ke(){try{await navigator.clipboard.writeText(location.href),Te.success("Event link copied")}catch{Te.error("Couldn't copy. Copy the address from your browser.")}}function Ee(){const J=new URLSearchParams(location.hash.slice(1)),Q=J.get("event")??"";Q!==n(b)&&Fe(Q);const le=J.get("baseline")??"";le!==n(k)&&(_(k,le,!0),ge(le))}function ce(J,Q){const le=new URLSearchParams(location.hash.slice(1));Q?le.set(J,Q):le.delete(J),history.pushState(null,"",`${location.pathname}${location.search}${le.size?"#"+le:""}`),Ee()}async function _e(){ce("event",""),await En(),$==null||$.focus()}function Ue(J,Q){Q instanceof HTMLElement&&!Q.closest("aside")&&($=Q),ce("event",J.id)}function Se(){me(),fe(),n(b)&&Fe(n(b))}function ir(J){_(l,n(l).includes(J)?n(l).filter(Q=>Q!==J):[...n(l),J],!0),Se()}async function Xt(){if(n(p))return;const J=F;_(p,!0),_(f,"");try{const Q=await te(`${W()}/baselines`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({label:n(I),...n(l).length?{services:n(l)}:{}})});if(J!==F)return;await pe(),J===F&&(_(I,""),ce("baseline",Q.id))}catch(Q){J===F&&_(f,Q instanceof Error?Q.message:"Baseline could not be saved",!0)}finally{J===F&&_(p,!1)}}async function Rt(){const J=++F;z==null||z.abort(),z=new AbortController,++K,++N,++A,_(S,null),_(x,!1),_(w,""),_(r,[],!0),_(s,[],!0),_(a,[],!0),_(c,{items:[],coverage:{partial:!1,reasons:[]}},!0),_(m,null),_(b,""),_(k,""),_(y,null),_(q,!1),_(C,!1),_(h,!1),_(p,!1),_(g,0),_(f,""),_(I,""),_(R,""),_(T,""),_(d,!0),_(i,"incidents"),_(o,""),_(l,[],!0);try{const Q=JSON.parse(localStorage.getItem(`localdeck.activity.${e.projectId}`)??"null");Q&&(_(i,Q.filter==="all"?"all":"incidents",!0),_(o,typeof Q.query=="string"?Q.query.slice(0,200):"",!0),_(l,Array.isArray(Q.services)?Q.services.filter(le=>typeof le=="string"&&le.startsWith(`${e.projectId}:`)):[],!0))}catch{}try{const Q=await te(W());if(J!==F)return;_(a,[...new Set([...Q.commands.map(le=>`${e.projectId}:${le.name}`),...(Q.services??[]).map(le=>le.key)])],!0),_(l,n(l).filter(le=>n(a).includes(le)),!0)}catch(Q){J===F&&_(f,Q instanceof Error?Q.message:"Services unavailable",!0)}J===F&&(await Promise.all([fe(),pe()]),J===F&&Ee())}const ur=j(()=>e.projectId);xt(()=>{n(ur),xr(()=>void Rt())}),Ia(()=>{const J=()=>Ee(),Q=ye=>{ye.key==="Escape"&&n(C)&&(ye.preventDefault(),_e())};window.addEventListener("keydown",Q),window.addEventListener("hashchange",J),window.addEventListener("popstate",J);const le=setInterval(()=>{e.connected&&n(d)&&!n(C)&&(n(h)||fe(),n(k)&&!n(q)&&ge(n(k),!0))},2500);return()=>{clearInterval(le),window.removeEventListener("keydown",Q),window.removeEventListener("hashchange",J),window.removeEventListener("popstate",J),z==null||z.abort(),++F}});var zr=i1(),tn=E(zr),cs=v(E(tn),2),pn=E(cs);{let J=j(()=>e.connected?n(C)?"warn":n(d)?"ready":"neutral":"failed");Tn(pn,{get tone(){return n(J)},children:(Q,le)=>{var ye=ie();M(()=>L(ye,e.connected?n(C)?"Live paused · inspecting":n(d)?"Live":"Paused":"Disconnected · stale")),u(Q,ye)},$$slots:{default:!0}})}var rn=v(pn,2);{let J=j(()=>n(d)?td:Bs);we(rn,{size:"sm",get icon(){return n(J)},get disabled(){return n(C)},onclick:()=>_(d,!n(d)),children:(Q,le)=>{var ye=ie();M(()=>L(ye,n(d)?"Pause live":"Resume live")),u(Q,ye)},$$slots:{default:!0}})}var mn=v(rn,2);{let J=j(()=>n(h)||!e.connected);we(mn,{size:"sm",get icon(){return Ao},get disabled(){return n(J)},onclick:()=>{fe(),n(k)&&ge(n(k),!0)},children:(Q,le)=>{var ye=ie("Refresh");u(Q,ye)},$$slots:{default:!0}})}var _n=v(tn,2),yn=v(E(_n),2),Sr=E(yn);It(Sr,{size:"sm","aria-label":"Baseline label",placeholder:"Optional baseline label",maxlength:100,get value(){return n(I)},set value(J){_(I,J,!0)}});var ds=v(Sr,2);{let J=j(()=>!e.connected||!n(a).length);we(ds,{size:"sm",variant:"primary",type:"submit",get loading(){return n(p)},get disabled(){return n(J)},children:(Q,le)=>{var ye=ie("Mark baseline");u(Q,ye)},$$slots:{default:!0}})}var In=v(yn,2);{let J=j(()=>[{value:"",label:"No comparison"},...n(s).map(Q=>({value:Q.id,label:Q.label,description:U(Q.ts)}))]);pd(In,{size:"sm",ariaLabel:"Saved baseline",get value(){return n(k)},placeholder:"Compare with a baseline",get options(){return n(J)},onchange:Q=>ce("baseline",Q)})}var bn=v(_n,2);{var Or=J=>{var Q=Pl(),le=V(Q,!0);M(()=>L(le,n(f))),u(J,Q)};H(bn,J=>{n(f)&&J(Or)})}var us=v(bn,2);{var Mn=J=>{var Q=Pl(),le=V(Q,!0);M(()=>L(le,n(T))),u(J,Q)};H(us,J=>{n(T)&&J(Mn)})}var Ur=v(us,2);{var vs=J=>{var Q=Nm();u(J,Q)};H(Ur,J=>{n(k)&&!n(y)&&!n(T)&&J(vs)})}var jr=v(Ur,2);{var fs=J=>{var Q=Wm(),le=E(Q),ye=E(le),Le=E(ye),je=V(Le,!0),yt=v(Le),qt=V(yt),Lt=v(ye,2);we(Lt,{size:"sm",variant:"ghost",get icon(){return ss},onclick:()=>ce("baseline",""),children:(ht,$e)=>{var B=ie("Close comparison");u(ht,B)},$$slots:{default:!0}});var Qt=v(le,2);{var fr=ht=>{var $e=Mm(),B=v(E($e),2);{var X=ae=>{var he=Im();u(ae,he)};H(B,ae=>{n(y).insufficientEvidence&&ae(X)})}var ee=v(B,2);Ae(ee,17,()=>n(y).coverage.reasons,kt,(ae,he)=>{var xe=Cl(),Be=V(xe,!0);M(()=>L(Be,n(he))),u(ae,xe)}),u(ht,$e)};H(Qt,ht=>{(n(y).insufficientEvidence||n(y).coverage.partial)&&ht(fr)})}var gt=v(Qt,2);Ae(gt,21,()=>[{name:"Before",data:n(y).before},{name:"After",data:n(y).after}],kt,(ht,$e)=>{var B=zm(),X=E(B),ee=E(X),ae=v(ee),he=V(ae),xe=v(X,2),Be=E(xe),Ne=v(E(Be)),Ke=V(Ne,!0),ot=v(Be,2),st=v(E(ot)),wt=V(st,!0),Ve=v(ot,2),rt=v(E(Ve)),St=V(rt,!0),Tt=v(Ve,2),lt=v(E(Tt)),nt=V(lt,!0),Ge=v(xe,2),Je=V(Ge),Nt=v(Ge,2);{var jt=Zt=>{var Cr=Dm();u(Zt,Cr)};H(Nt,Zt=>{n($e).data.truncated&&Zt(jt)})}M((Zt,Cr,xi,Ad)=>{L(ee,`${n($e).name??""} `),L(he,`${Zt??""} window`),L(Ke,n($e).data.requests),L(wt,Cr),L(St,n($e).data.errorLines),L(nt,n($e).data.restarts),L(Je,`${n($e).data.requestErrors??""} failed requests · ${xi??""} — ${Ad??""}`)},[()=>Y(n($e).data),()=>Z(n($e).data.errorRate),()=>U(n($e).data.from),()=>U(n($e).data.to)]),u(ht,B)});var bt=v(gt,4);Ae(bt,21,()=>[{title:"Newly observed",items:n(y).newlyObserved},{title:"Not observed again",items:n(y).notObservedAgain}],kt,(ht,$e)=>{var B=Bm(),X=E(B),ee=E(X),ae=v(ee),he=V(ae,!0),xe=v(X,2);{var Be=Ke=>{var ot=Um();Ae(ot,21,()=>n($e).items,kt,(st,wt)=>{var Ve=Om(),rt=V(Ve,!0);M(()=>L(rt,n(wt))),u(st,Ve)}),u(Ke,ot)},Ne=Ke=>{var ot=Hm();u(Ke,ot)};H(xe,Ke=>{n($e).items.length?Ke(Be):Ke(Ne,-1)})}M(()=>{L(ee,`${n($e).title??""} `),L(he,n($e).items.length)}),u(ht,B)});var Ot=v(bt,2);{var hr=ht=>{var $e=Vm(),B=v(E($e),2),X=E(B),ee=v(E(X));Ae(ee,21,()=>[...new Set([...n(y).before.routes,...n(y).after.routes].map(ae=>ae.route))],kt,(ae,he)=>{const xe=j(()=>n(y).before.routes.find(Ge=>Ge.route===n(he))),Be=j(()=>n(y).after.routes.find(Ge=>Ge.route===n(he)));var Ne=Fm(),Ke=E(Ne),ot=V(Ke,!0),st=v(Ke),wt=V(st,!0),Ve=v(st),rt=V(Ve,!0),St=v(Ve),Tt=V(St,!0),lt=v(St),nt=V(lt,!0);M(()=>{var Ge,Je;L(ot,n(he)),L(wt,((Ge=n(xe))==null?void 0:Ge.count)??0),L(rt,n(xe)?`${n(xe).avgLatencyMs} ms`:"—"),L(Tt,((Je=n(Be))==null?void 0:Je.count)??0),L(nt,n(Be)?`${n(Be).avgLatencyMs} ms`:"—")}),u(ae,Ne)}),u(ht,$e)};H(Ot,ht=>{(n(y).before.routes.length||n(y).after.routes.length)&&ht(hr)})}M(ht=>{var $e;L(je,n(y).marker.label),L(qt,`${ht??""}${($e=n(y).marker.git)!=null&&$e.branch?` · ${n(y).marker.git.branch}`:""}`)},[()=>U(n(y).marker.ts)]),u(J,Q)};H(jr,J=>{n(y)&&J(fs)})}var wn=v(jr,2),Dn=E(wn);zo(Dn,{label:"Activity filter",size:"sm",get current(){return n(i)},items:[{id:"incidents",label:"Incidents"},{id:"all",label:"All activity"}],onselect:J=>{_(i,J,!0),Se()}});var zn=v(Dn,2);It(zn,{size:"sm",get icon(){return Fs},"aria-label":"Search activity",placeholder:"Search activity",maxlength:200,get value(){return n(o)},set value(J){_(o,J,!0)}});var On=v(zn,2);we(On,{size:"sm",type:"submit",children:(J,Q)=>{var le=ie("Search");u(J,le)},$$slots:{default:!0}});var ne=v(On,2);{let J=j(()=>`Services · ${n(l).length||"all"}`),Q=j(()=>`Filter services: ${n(l).length?n(l).length:"all"}`);Ln(ne,{size:"sm",variant:"field",closeOnSelect:!1,get label(){return n(J)},get ariaLabel(){return n(Q)},children:(le,ye)=>{var Le=$m(),je=oe(Le);Ct(je,{onselect:()=>{_(l,[],!0),Se()},children:(qt,Lt)=>{var Qt=ie("All services");u(qt,Qt)},$$slots:{default:!0}});var yt=v(je,4);Ae(yt,17,()=>n(a),kt,(qt,Lt)=>{{let Qt=j(()=>n(l).includes(n(Lt)));Ct(qt,{get checked(){return n(Qt)},onselect:()=>ir(n(Lt)),children:(fr,gt)=>{var bt=ie();M(Ot=>L(bt,Ot),[()=>n(Lt).split(":").slice(1).join(":")]),u(fr,bt)},$$slots:{default:!0}})}}),u(le,Le)},$$slots:{default:!0}})}var ue=v(wn,2),He=E(ue),it=V(He),vt=v(ue,2);{var zt=J=>{var Q=Km(),le=v(E(Q));Ae(le,17,()=>n(c).coverage.reasons,kt,(ye,Le)=>{var je=Cl(),yt=V(je,!0);M(()=>L(yt,n(Le))),u(ye,je)}),u(J,Q)};H(vt,J=>{n(c).coverage.partial&&J(zt)})}var pt=v(vt,2);let ft;var Ft=E(pt),vr=E(Ft);{var Vt=J=>{var Q=Gm(),le=E(Q),ye=V(le,!0),Le=v(le),je=V(Le,!0);M(()=>{L(ye,n(h)?"Loading activity…":"No matching activity"),L(je,n(h)?"Reading retained evidence.":"Try all activity, broaden the service selection, or generate traffic. Missing events don't prove recovery.")}),u(J,Q)};H(vr,J=>{n(r).length||J(Vt)})}var Pr=v(vr,2);Ae(Pr,17,()=>n(r),J=>J.id,(J,Q)=>{var le=Ym();let ye;var Le=E(le);let je;var yt=v(Le,2),qt=E(yt),Lt=E(qt),Qt=v(Lt),fr=V(Qt),gt=v(qt,2),bt=V(gt,!0),Ot=v(yt,2),hr=V(Ot,!0);M((ht,$e,B)=>{ye=Ze(le,1,"event svelte-1vefmtr",null,ye,{chosen:n(Q).id===n(b)}),je=Ze(Le,1,"dot svelte-1vefmtr",null,je,{incident:n(Q).severity==="error"}),L(Lt,`${ht??""} `),L(fr,`${n(Q).kind??""}${n(Q).request?` · HTTP ${n(Q).request.status}`:""}`),L(bt,n(Q).title),de(Ot,"datetime",$e),L(hr,B)},[()=>n(Q).service.split(":").slice(1).join(":"),()=>new Date(n(Q).ts).toISOString(),()=>new Date(n(Q).ts).toLocaleTimeString()]),Qe("click",le,ht=>Ue(n(Q),ht.currentTarget)),u(J,le)});var Hr=v(Pr,2);{var nn=J=>{var Q=Jm(),le=E(Q);we(le,{size:"sm",get loading(){return n(h)},onclick:()=>{_(d,!1),fe(!0)},children:(ye,Le)=>{var je=ie("Load older events");u(ye,je)},$$slots:{default:!0}}),u(J,Q)};H(Hr,J=>{n(c).nextCursor&&J(nn)})}var Wt=v(Ft,2);{var $t=J=>{var Q=a1(),le=E(Q),ye=E(le);Rn(ye,gt=>_(O,gt),()=>n(O));var Le=v(ye,2);ls(Le,{size:"sm",label:"Close event detail",get icon(){return ss},onclick:_e});var je=v(le,2),yt=E(je);we(yt,{size:"sm",get icon(){return qf},onclick:ke,children:(gt,bt)=>{var Ot=ie("Copy event link");u(gt,Ot)},$$slots:{default:!0}});var qt=v(je,2);{var Lt=gt=>{var bt=El(),Ot=V(bt,!0);M(()=>L(Ot,n(R))),u(gt,bt)},Qt=gt=>{var bt=Xm();u(gt,bt)},fr=gt=>{var bt=s1(),Ot=oe(bt),hr=v(E(Ot)),ht=V(hr,!0),$e=v(hr,3),B=V($e,!0),X=v($e,3),ee=V(X),ae=v(X,3),he=V(ae,!0),xe=v(Ot,2),Be=V(xe,!0),Ne=v(xe,2);{var Ke=Ve=>{var rt=Qm(),St=V(rt);M(()=>L(St,`HTTP ${n(m).request.status??""} · ${n(m).request.durationMs??""} ms · via ${n(m).request.via??""}`)),u(Ve,rt)};H(Ne,Ve=>{n(m).request&&Ve(Ke)})}var ot=v(Ne,2);{var st=Ve=>{var rt=t1(),St=v(E(rt),2);{var Tt=Ge=>{var Je=Zm();u(Ge,Je)},lt=Ge=>{var Je=El(),Nt=V(Je,!0);M(()=>L(Nt,n(w))),u(Ge,Je)},nt=Ge=>{var Je=Me(),Nt=oe(Je);Wr(Nt,()=>n(m).id,jt=>{var Zt=e1(),Cr=oe(Zt);jd(Cr,{get record(){return n(S).request}});var xi=v(Cr);Pd(xi,{get record(){return n(S).request},get service(){return n(S).service}}),u(jt,Zt)}),u(Ge,Je)};H(St,Ge=>{var Je;n(x)?Ge(Tt):n(w)?Ge(lt,1):(Je=n(S))!=null&&Je.request&&Ge(nt,2)})}u(Ve,rt)};H(ot,Ve=>{n(m).kind==="request"&&Ve(st)})}var wt=v(ot,6);Ae(wt,17,()=>n(re),Ve=>Ve.id,(Ve,rt)=>{var St=r1(),Tt=E(St),lt=v(Tt),nt=V(lt,!0);M(Ge=>{L(Tt,`${Ge??""} · ${n(rt).service??""}`),L(nt,n(rt).title)},[()=>new Date(n(rt).ts).toLocaleTimeString()]),Qe("click",St,Ge=>Ue(n(rt),Ge.currentTarget)),u(Ve,St)},Ve=>{var rt=n1();u(Ve,rt)}),M(Ve=>{L(ht,Ve),L(B,n(m).service),L(ee,`${n(m).kind??""} · ${n(m).severity??""}`),L(he,n(m).id),L(Be,n(m).title)},[()=>U(n(m).ts)]),u(gt,bt)};H(qt,gt=>{n(R)?gt(Lt):n(m)?gt(fr,-1):gt(Qt,1)})}u(J,Q)};H(Wt,J=>{n(C)&&J($t)})}M(J=>{L(it,`${n(r).length??""} retained events${J??""}`),ft=Ze(pt,1,"workspace svelte-1vefmtr",null,ft,{"with-inspector":n(C)}),de(Ft,"aria-busy",n(h))},[()=>n(g)?` · Updated ${new Date(n(g)).toLocaleTimeString()}`:""]),Ht("submit",yn,J=>{J.preventDefault(),Xt()}),Ht("submit",wn,J=>{J.preventDefault(),Se()}),u(t,zr),Oe()}ar(["click"]);var l1=P('<span class="mono svelte-j12vja"> </span><span> </span>',1),c1=P("<!> <!>",1),d1=P('<p class="error svelte-j12vja"> </p>'),u1=P('<p class="svelte-j12vja"> </p>'),v1=P('<p class="run svelte-j12vja" role="status"> </p> <!> <details class="history svelte-j12vja"><summary class="svelte-j12vja"> </summary> <!></details>',1),f1=P('<p class="run svelte-j12vja">Not run yet. Saving a check does not run it.</p>'),h1=P('<p class="note svelte-j12vja" role="status">Loading checks…</p>'),g1=P('<section class="checks svelte-j12vja" aria-label="Saved reproduction checks"><div class="heading svelte-j12vja"><div><h2 class="svelte-j12vja">Reproduction checks</h2> <p class="note svelte-j12vja">Saved GET/HEAD requests for this environment. Each run sends an unauthenticated request and compares its HTTP status.</p></div> <!></div> <!></section>');function p1(t,e){ze(e,!0);let r=G(tt([])),s=G(!1),a=G(!1),i=G(""),o=0;const l=j(()=>e.projectId);xt(()=>{const x=n(l),w=++o;_(r,[],!0),_(a,!1),c(x,w)});async function c(x=e.projectId,w=o){_(s,!0);try{const q=await fetch(`/api/projects/${encodeURIComponent(x)}/checks`),C=await q.json();if(!q.ok)throw new Error(C.error??"Checks are unavailable.");w===o&&_(r,C.items,!0)}catch(q){w===o&&Te.error(_t(q))}finally{w===o&&(_(s,!1),_(a,!0))}}async function d(x){if(n(i))return;const w=e.projectId,q=o;_(i,x.id,!0);try{const C=await fetch(`/api/projects/${encodeURIComponent(w)}/checks/${encodeURIComponent(x.id)}/run`,{method:"POST"}),R=await C.json();if(!C.ok)throw new Error(R.error??"The check couldn't run.");q===o&&await c(w,q)}catch(C){Te.error(`${x.name}: ${_t(C)}`)}finally{_(i,"")}}async function h(x){if(!await Vs({title:`Delete ${x.name}?`,body:"The check and its run history are deleted. Recorded requests are not affected.",confirmLabel:"Delete check",danger:!0}))return;const w=e.projectId,q=o;try{const C=await fetch(`/api/projects/${encodeURIComponent(w)}/checks/${encodeURIComponent(x.id)}`,{method:"DELETE"}),R=await C.json();if(!C.ok)throw new Error(R.error??"Couldn't delete the check.");Te.success(`${x.name} deleted`),q===o&&await c(w,q)}catch(C){Te.error(_t(C))}}const p=x=>x==="passed"?"Passed":x==="status-mismatch"?"Status mismatch":"Transport failure";var f=g1(),g=E(f),m=v(E(g),2);{let x=j(()=>n(s)&&n(a)),w=j(()=>!!n(i));we(m,{get icon(){return Ao},get loading(){return n(x)},get disabled(){return n(w)},onclick:()=>c(),children:(q,C)=>{var R=ie("Refresh");u(q,R)},$$slots:{default:!0}})}var b=v(g,2);{var k=x=>{qn(x,{label:"Checks",children:(w,q)=>{var C=Me(),R=oe(C);Ae(R,17,()=>n(r),T=>T.id,(T,I)=>{const O=j(()=>n(I).runs.at(-1));Ns(T,{title:z=>{var W=ie();M(()=>L(W,n(I).name)),u(z,W)},subtitle:z=>{var W=l1(),U=oe(W),Y=V(U),Z=v(U),re=V(Z);M(te=>{de(U,"title",n(I).path),L(Y,`${n(I).method??""} ${n(I).path??""}`),L(re,`· ${te??""} · Expected HTTP ${n(I).expectedStatus??""}`)},[()=>n(I).serviceKey.split(":").slice(1).join(":")]),u(z,W)},meta:z=>{{let W=j(()=>n(O)?n(O).result==="passed"?"ready":"failed":"neutral");Tn(z,{get tone(){return n(W)},children:(U,Y)=>{var Z=ie();M(re=>L(Z,re),[()=>n(O)?p(n(O).result):"Not run"]),u(U,Z)},$$slots:{default:!0}})}},actions:z=>{var W=c1(),U=oe(W);{let Z=j(()=>n(i)===n(I).id),re=j(()=>!!n(i)&&n(i)!==n(I).id);we(U,{size:"sm",get icon(){return Bs},get loading(){return n(Z)},get disabled(){return n(re)},onclick:()=>d(n(I)),children:(te,me)=>{var se=ie("Run check");u(te,se)},$$slots:{default:!0}})}var Y=v(U,2);{let Z=j(()=>`Delete ${n(I).name}`),re=j(()=>!!n(i));we(Y,{size:"sm",variant:"ghost",get"aria-label"(){return n(Z)},get disabled(){return n(re)},onclick:()=>h(n(I)),children:(te,me)=>{var se=ie("Delete");u(te,se)},$$slots:{default:!0}})}u(z,W)},below:z=>{var W=Me(),U=oe(W);{var Y=re=>{var te=v1(),me=oe(te),se=V(me),fe=v(me,2);{var pe=Ee=>{var ce=d1(),_e=V(ce,!0);M(()=>L(_e,n(O).error)),u(Ee,ce)};H(fe,Ee=>{n(O).error&&Ee(pe)})}var ge=v(fe,2),De=E(ge),Fe=V(De),ke=v(De,2);Ae(ke,17,()=>[...n(I).runs].reverse(),Ee=>Ee.id,(Ee,ce)=>{var _e=u1(),Ue=V(_e);M((Se,ir)=>L(Ue,`${Se??""} · ${ir??""} · ${n(ce).actualStatus?`HTTP ${n(ce).actualStatus}`:"No HTTP response"}`),[()=>new Date(n(ce).ts).toLocaleString(),()=>p(n(ce).result)]),u(Ee,_e)}),M((Ee,ce)=>{L(se,`${n(O).actualStatus?`HTTP ${n(O).actualStatus} · `:""}${Ee??""} ms · ${ce??""}`),L(Fe,`Run history (${n(I).runs.length??""})`)},[()=>Math.round(n(O).durationMs),()=>new Date(n(O).ts).toLocaleString()]),u(re,te)},Z=re=>{var te=f1();u(re,te)};H(U,re=>{n(O)?re(Y):re(Z,-1)})}u(z,W)}})}),u(w,C)}})},y=x=>{var w=h1();u(x,w)},S=x=>{_r(x,{get icon(){return Nf},title:"No saved checks",body:"Inspect a recorded request, choose Preview sanitized request, then Save as check."})};H(b,x=>{n(r).length?x(k):n(s)?x(y,1):x(S,-1)})}u(t,f),Oe()}var m1=P("<!> <!>",1),_1=P('<p class="note svelte-18aq1ni"> </p>'),y1=P('<form class="form svelte-18aq1ni"><!> <!> <!> <p class="note svelte-18aq1ni">Needs <a href="https://developers.cloudflare.com/tunnel/downloads/" target="_blank" rel="noreferrer" class="svelte-18aq1ni">cloudflared</a> on this computer.</p></form>');function b1(t,e){const r=gi();ze(e,!0);let s=ve(e,"open",15,!1),a=G(""),i=G(!1);const o=j(()=>!!(e.runtime&&!Dr(e.runtime)&&e.runtime.status!=="stopped"&&e.runtime.status!=="stopping"&&e.runtime.upstreamReady));async function l(c){if(c.preventDefault(),!n(o))return;const d={password:n(i)?null:n(a)||null,isPublic:n(i)};s(!1),_(a,""),_(i,!1);try{await e.onShare(d.password,d.isPublic),Te.success(`${e.name} is shared`)}catch(h){Te.error(_t(h))}}{const c=h=>{var p=m1(),f=oe(p);we(f,{variant:"ghost",onclick:()=>s(!1),children:(m,b)=>{var k=ie("Cancel");u(m,k)},$$slots:{default:!0}});var g=v(f,2);{let m=j(()=>!n(o));we(g,{variant:"primary",type:"submit",get form(){return r},get disabled(){return n(m)},children:(b,k)=>{var y=ie("Create link");u(b,y)},$$slots:{default:!0}})}u(h,p)};let d=j(()=>`Share ${e.name}`);No(t,{get title(){return n(d)},description:"Creates a public HTTPS link through Cloudflare. The link can take up to two minutes to work.",get open(){return s()},set open(h){s(h)},actions:c,children:(h,p)=>{var f=y1(),g=E(f);{const y=(x,w)=>{let q=()=>(w==null?void 0:w()).id,C=()=>(w==null?void 0:w()).describedby;It(x,{get id(){return q()},type:"password",autocomplete:"new-password",get"aria-describedby"(){return C()},get disabled(){return n(i)},get value(){return n(a)},set value(R){_(a,R,!0)}})};let S=j(()=>n(i)?"Public links have no password.":"Leave empty to generate one. Reveal it next to the link.");tr(g,{label:"Password",get hint(){return n(S)},children:y,$$slots:{default:!0}})}var m=v(g,2);sd(m,{get checked(){return n(i)},set checked(y){_(i,y,!0)},children:(y,S)=>{var x=ie("Public link — anyone with the URL can open it");u(y,x)},$$slots:{default:!0}});var b=v(m,2);{var k=y=>{var S=_1(),x=V(S);M(()=>L(x,`Start ${e.name??""} and wait until it's ready to share.`)),u(y,S)};H(b,y=>{n(o)||y(k)})}M(()=>de(f,"id",r)),Ht("submit",f,l),u(h,f)},$$slots:{actions:!0,default:!0}})}Oe()}var w1=P('<div class="ui-menu-separator" role="separator"></div> <!>',1),k1=P("<!> <!> <!> <!> <!> <!>",1),x1=P("<!> <!>",1);function Cd(t,e){ze(e,!0);let r=ve(e,"busy",3,!1),s=G(!1);const a=j(()=>Dr(e.runtime??{})),i=j(()=>!!(e.runtime&&e.runtime.status!=="stopped")),o=f=>Cn({page:"service",projectId:e.projectId,serviceName:e.name,tab:f});async function l(){if(e.address)try{await navigator.clipboard.writeText(e.address),Te.success("Address copied")}catch{Te.error("Couldn't copy. Select the address and copy it manually.")}}async function c(){try{await e.onUnshare(),Te.success(`Stopped sharing ${e.name}`)}catch(f){Te.error(_t(f))}}var d=x1(),h=oe(d);{let f=j(()=>`Options for ${e.name}`);Ln(h,{iconOnly:!0,size:"sm",get ariaLabel(){return n(f)},placement:"bottom-end",width:"220px",children:(g,m)=>{var b=k1(),k=oe(b);{let $=j(()=>o("logs"));Ct(k,{get href(){return n($)},get icon(){return rd},children:(F,K)=>{var N=ie("View logs");u(F,N)},$$slots:{default:!0}})}var y=v(k,2);{var S=$=>{{let F=j(()=>o("requests"));Ct($,{get href(){return n(F)},get icon(){return Xc},children:(K,N)=>{var A=ie("View requests");u(K,A)},$$slots:{default:!0}})}};H(y,$=>{n(a)||$(S)})}var x=v(y,2);{var w=$=>{{let F=j(()=>o("config"));Ct($,{get href(){return n(F)},get icon(){return nd},children:(K,N)=>{var A=ie("Configure");u(K,A)},$$slots:{default:!0}})}};H(x,$=>{e.configured&&$(w)})}var q=v(x,2);{var C=$=>{Ct($,{get icon(){return Df},onselect:()=>e.onWatch("logs"),children:(F,K)=>{var N=ie("Watch in panel");u(F,N)},$$slots:{default:!0}})};H(q,$=>{e.onWatch&&n(i)&&$(C)})}var R=v(q,2);{var T=$=>{Ct($,{get icon(){return hn},onselect:l,children:(F,K)=>{var N=ie("Copy address");u(F,N)},$$slots:{default:!0}})};H(R,$=>{e.address&&$(T)})}var I=v(R,2);{var O=$=>{var F=w1(),K=v(oe(F),2);{var N=z=>{Ct(z,{get icon(){return Ef},get disabled(){return r()},onselect:c,children:(W,U)=>{var Y=ie("Stop sharing");u(W,Y)},$$slots:{default:!0}})},A=z=>{{let W=j(()=>{var U,Y;return r()||((Y=(U=e.runtime)==null?void 0:U.shareStartup)==null?void 0:Y.status)==="starting"});Ct(z,{get icon(){return nh},get disabled(){return n(W)},onselect:()=>_(s,!0),children:(U,Y)=>{var Z=ie("Share…");u(U,Z)},$$slots:{default:!0}})}};H(K,z=>{var W;(W=e.runtime)!=null&&W.share?z(N):z(A,-1)})}u($,F)};H(I,$=>{n(a)||$(O)})}u(g,b)},$$slots:{default:!0}})}var p=v(h,2);b1(p,{get name(){return e.name},get runtime(){return e.runtime},get onShare(){return e.onShare},get open(){return n(s)},set open(f){_(s,f,!0)}}),u(t,d),Oe()}var S1=P('<a class="link svelte-iodvty" target="_blank" rel="noreferrer"> </a> <!>',1),j1=P('<a class="link svelte-iodvty" target="_blank" rel="noreferrer"> </a><span>Checking…</span>',1),P1=P('<span class="connecting svelte-iodvty" role="status"><!><!></span>'),C1=P('<span class="error svelte-iodvty" role="alert"><!><span> </span></span>'),E1=P('<span class="password svelte-iodvty">Password <span class="mono svelte-iodvty"> </span> <!></span>'),R1=P('<span class="hint svelte-iodvty" role="status">Taking longer than expected. <a target="_blank" rel="noreferrer" class="svelte-iodvty">Open the link to test it.</a></span>'),q1=P('<span class="error svelte-iodvty" role="alert"> </span>'),L1=P('<div class="share-line svelte-iodvty"><!> <!> <!> <!></div>');function Ed(t,e){ze(e,!0);let r=ve(e,"protectedShare",3,!1),s=ve(e,"pending",3,!1),a=ve(e,"error",3,""),i=G(tt(Date.now()));const o=j(()=>s()&&!e.url&&!!e.pendingUrl&&e.startedAt!==void 0&&n(i)-e.startedAt>=6e4);xt(()=>{if(!s()||e.url||e.startedAt===void 0)return;_(i,Date.now(),!0);const I=e.startedAt+6e4-Date.now();if(I<=0)return;const O=setTimeout(()=>{_(i,Date.now(),!0)},I);return()=>clearTimeout(O)});let l=G(null),c=G(!1),d=G(!1),h=G(""),p=G(!1);xt(()=>{e.url,e.pendingUrl,_(l,null),_(c,!1),_(h,""),_(p,!1)});async function f(){if(e.url)try{await navigator.clipboard.writeText(e.url),_(p,!0),setTimeout(()=>_(p,!1),1500)}catch{_(h,"Couldn't copy. Select the link and copy it manually.")}}async function g(){if(n(c)){_(c,!1);return}if(!e.serviceKey||n(d))return;const I=e.url??e.pendingUrl;_(d,!0),_(h,"");try{const O=await fetch(`/api/services/${encodeURIComponent(e.serviceKey)}/share-password`,{method:"POST",cache:"no-store"}),$=await O.json();if(!O.ok)throw new Error($.error??"Could not load password");if(I!==(e.url??e.pendingUrl))return;if(typeof $.password!="string")throw new Error("This share no longer has a password.");_(l,$.password,!0),_(c,!0)}catch(O){_(h,O instanceof Error?O.message:"Could not load password",!0)}finally{_(d,!1)}}var m=L1(),b=E(m);{var k=I=>{var O=S1(),$=oe(O),F=V($,!0),K=v($,2);{let N=j(()=>n(p)?"Copied":`Copy share link for ${e.name}`),A=j(()=>n(p)?Mr:hn);ls(K,{size:"sm",get label(){return n(N)},get icon(){return n(A)},onclick:f})}M(()=>{de($,"href",e.url),de($,"aria-label",`Shared link for ${e.name}`),L(F,e.url)}),u(I,O)},y=I=>{var O=P1(),$=E(O);ri($,{size:14,class:"spin"});var F=v($);{var K=A=>{var z=j1(),W=oe(z),U=V(W,!0);M(()=>{de(W,"href",e.pendingUrl),de(W,"aria-label",`Pending shared link for ${e.name}`),L(U,e.pendingUrl)}),u(A,z)},N=A=>{var z=ie("Creating tunnel… up to two minutes");u(A,z)};H(F,A=>{e.pendingUrl?A(K):A(N,-1)})}u(I,O)},S=I=>{var O=C1(),$=E(O);ss($,{size:14});var F=v($),K=V(F,!0);M(()=>L(K,a())),u(I,O)};H(b,I=>{e.url?I(k):s()?I(y,1):a()&&I(S,2)})}var x=v(b,2);{var w=I=>{var O=E1(),$=v(E(O)),F=V($,!0),K=v($,2);{let N=j(()=>n(c)?vf:df),A=j(()=>`${n(c)?"Hide":"Show"} share password for ${e.name}`);we(K,{variant:"ghost",size:"sm",get icon(){return n(N)},get loading(){return n(d)},get"aria-label"(){return n(A)},onclick:g,children:(z,W)=>{var U=ie();M(()=>L(U,n(c)?"Hide":"Show")),u(z,U)},$$slots:{default:!0}})}M(()=>L(F,n(c)?n(l):"••••••••")),u(I,O)};H(x,I=>{(e.url||s()&&e.pendingUrl)&&r()&&I(w)})}var q=v(x,2);{var C=I=>{var O=R1(),$=v(E(O));M(()=>de($,"href",e.pendingUrl)),u(I,O)};H(q,I=>{n(o)&&I(C)})}var R=v(q,2);{var T=I=>{var O=q1(),$=V(O,!0);M(()=>L($,n(h))),u(I,O)};H(R,I=>{n(h)&&I(T)})}u(t,m),Oe()}var A1=P("<span>Waiting for listener</span>"),T1=P('<span title="Local Deck’s stable port forwards requests to the app">Proxy port <span class="mono svelte-1poq4pf"> </span></span>'),N1=P('<div class="service-port svelte-1poq4pf" aria-label="Service ports"><span title="The port your app process listens on"> <strong class="mono svelte-1poq4pf"> </strong></span> <!> <!></div>');function Rd(t,e){ze(e,!0);const r=j(()=>ki(e.service)),s=j(()=>!e.service||e.service.status==="stopped"?"Last used port":e.service.status==="stopping"?"Stopping on port":n(r)==="ready"||n(r)==="listening"?"Running on port":e.service.upstreamReady?"Listening on port":e.service.upstreamSource==="manual"?"Configured port":"Assigned port");var a=Me(),i=oe(a);{var o=l=>{var c=N1(),d=E(c),h=E(d),p=v(h),f=V(p,!0),g=v(d,2);{var m=S=>{var x=A1();u(S,x)};H(g,S=>{e.service.status!=="stopped"&&e.service.status!=="stopping"&&!e.service.upstreamReady&&S(m)})}var b=v(g,2);{var k=S=>{var x=T1(),w=v(E(x)),q=V(w,!0);M(()=>L(q,e.service.stablePort)),u(S,x)},y=j(()=>!Dr(e.service));H(b,S=>{n(y)&&S(k)})}M(()=>{L(h,`${n(s)??""} `),L(f,e.service.upstreamPort)}),u(l,c)};H(i,l=>{e.service&&l(o)})}u(t,a),Oe()}function I1(t){var o,l;const e=t.replace(/\x1b\[[0-9;]*m/g,"");if(!/\bEADDRINUSE\b|\b(?:port|address)\b[^\n]*already in use/i.test(e))return;const r=((o=/\bport\s+(\d+)\s+is already in use/i.exec(e))==null?void 0:o[1])??((l=/\b(?:listen|address already in use)[^\n]*:(\d+)\b/i.exec(e))==null?void 0:l[1]),s=r&&Number(r)>0&&Number(r)<=65535?r:void 0,a=s?`Port ${s} is already in use.`:"The service’s port is already in use.",i=/\bvite\b|\bhttpServerStart\b/.test(e);return{title:a,steps:i?["Check server.port and server.strictPort in your Vite config. With strictPort: true, Vite exits when that port is occupied.",`To use LocalDeck’s assigned port, set server.port to Number(process.env.PORT) || ${s??"5173"}. You can keep strictPort: true.`,"Alternatively, stop the other instance, or set strictPort: false to let Vite try another port. Automatic port detection must be enabled in LocalDeck (leave upstream unset)."]:["Stop the other instance, or configure the app to listen on the PORT environment variable supplied by LocalDeck.","If the app requires a fixed port, choose an unused port in the app and set LocalDeck’s upstream to match."]}}var M1=P('<li class="svelte-13pnhk8"> </li>'),D1=P('<strong class="svelte-13pnhk8"> </strong> <ul class="svelte-13pnhk8"></ul> <details><summary class="svelte-13pnhk8">Technical details</summary><pre class="svelte-13pnhk8"> </pre></details>',1),z1=P('<p class="svelte-13pnhk8"> </p>'),O1=P('<div class="service-error svelte-13pnhk8" role="alert"><!></div>');function qd(t,e){ze(e,!0);const r=j(()=>I1(e.message));var s=O1(),a=E(s);{var i=l=>{var c=D1(),d=oe(c),h=V(d,!0),p=v(d,2);Ae(p,21,()=>n(r).steps,kt,(b,k)=>{var y=M1(),S=V(y,!0);M(()=>L(S,n(k))),u(b,y)});var f=v(p,2),g=v(E(f)),m=V(g,!0);M(()=>{L(h,n(r).title),L(m,e.message)}),u(l,c)},o=l=>{var c=z1(),d=V(c,!0);M(()=>L(d,e.message)),u(l,c)};H(a,l=>{n(r)?l(i):l(o,-1)})}u(t,s),Oe()}var U1=P('<span class="icon svelte-2pl7hq"><!></span>'),H1=P("<span> </span>"),B1=P('<span class="mono svelte-2pl7hq"> </span>'),F1=P('<a class="address svelte-2pl7hq" target="_blank" rel="noreferrer"> </a>'),V1=P('<span class="mono svelte-2pl7hq"> </span> <!> <!> <!> <!>',1),Rl=P("<!> <!>",1),W1=P('<p class="notice svelte-2pl7hq"><!> </p>'),$1=P("<!> <!> <!>",1);function fo(t,e){ze(e,!0);let r=ve(e,"profiles",19,()=>[]),s=ve(e,"activeProfiles",19,()=>[]),a=ve(e,"shareError",3,""),i=G("");const o=j(()=>`${e.projectId}:${e.name}`),l=j(()=>Dr(e.command??e.runtime??{})),c=j(()=>!e.runtime||e.runtime.status==="stopped"),d=j(()=>{var k;return n(i)||e.error||((k=e.runtime)==null?void 0:k.lastError)||""}),h=j(()=>yd(e.runtime,e.fingerprint,s())),p=j(()=>{var k,y;return n(l)?(k=e.command)!=null&&k.upstream?`localhost:${e.command.upstream}`:void 0:(y=e.runtime)==null?void 0:y.urls[0]}),f=k=>e.pending.has(`service:${n(o)}:${k}`),g=j(()=>f("start")||f("stop")||f("restart")),m=j(()=>n(l)?af:e.name==="web"?kf:rf);async function b(k){_(i,"");try{const y=await k();if(y&&typeof y=="object"&&"ok"in y&&y.ok===!1)throw new Error("error"in y&&typeof y.error=="string"?y.error:"Service action failed")}catch(y){_(i,_t(y),!0),Te.error(`${e.name}: ${n(i)}`)}}{const k=R=>{var T=U1(),I=E(T);Tr(I,()=>n(m),(O,$)=>{$(O,{size:16,"aria-hidden":"true"})}),u(R,T)},y=R=>{var T=ie();M(I=>L(T,I),[()=>{var I;return xp(e.command??{name:e.name,serviceType:(I=e.runtime)==null?void 0:I.serviceType})}]),u(R,T)},S=R=>{var T=V1(),I=oe(T),O=V(I,!0),$=v(I,2);{var F=W=>{var U=H1(),Y=V(U);M(()=>L(Y,`· ${e.projectName??""}`)),u(W,U)};H($,W=>{e.projectName&&W(F)})}var K=v($,2);Ae(K,17,r,kt,(W,U)=>{Oo(W,{children:(Y,Z)=>{var re=ie();M(()=>L(re,n(U))),u(Y,re)},$$slots:{default:!0}})});var N=v(K,2);{var A=W=>{var U=Me(),Y=oe(U);{var Z=te=>{var me=B1(),se=V(me,!0);M(()=>L(se,n(p))),u(te,me)},re=te=>{var me=F1(),se=V(me,!0);M(()=>{de(me,"href",n(p)),L(se,n(p))}),u(te,me)};H(Y,te=>{n(l)?te(Z):te(re,-1)})}u(W,U)};H(N,W=>{n(p)&&W(A)})}var z=v(N,2);Rd(z,{get service(){return e.runtime}}),M(()=>L(O,e.name)),u(R,T)},x=R=>{{let T=j(()=>kp(e.runtime,n(d)));Tn(R,{get tone(){return n(T)},children:(I,O)=>{var $=ie();M(F=>L($,F),[()=>n(d)?"Needs attention":_d(e.runtime)]),u(I,$)},$$slots:{default:!0}})}},w=R=>{var T=Rl(),I=oe(T);{var O=K=>{{let N=j(()=>f("start")),A=j(()=>`Start ${e.name}`);we(K,{size:"sm",variant:"primary",get icon(){return Bs},get loading(){return n(N)},get disabled(){return n(g)},get"aria-label"(){return n(A)},onclick:()=>b(e.onStart),children:(z,W)=>{var U=ie("Start");u(z,U)},$$slots:{default:!0}})}},$=K=>{var N=Rl(),A=oe(N);{var z=U=>{{let Y=j(()=>f("restart")),Z=j(()=>`Restart ${e.name} to apply changes`);we(U,{size:"sm",get icon(){return ni},get loading(){return n(Y)},get disabled(){return n(g)},get"aria-label"(){return n(Z)},onclick:()=>b(e.onRestart),children:(re,te)=>{var me=ie("Restart");u(re,me)},$$slots:{default:!0}})}};H(A,U=>{var Y;n(h)&&((Y=e.runtime)==null?void 0:Y.managedBy)!=="terminal"&&U(z)})}var W=v(A,2);{let U=j(()=>{var Z;return f("stop")||((Z=e.runtime)==null?void 0:Z.status)==="stopping"}),Y=j(()=>`Stop ${e.name}`);we(W,{size:"sm",get icon(){return To},get loading(){return n(U)},get disabled(){return n(g)},get"aria-label"(){return n(Y)},onclick:()=>b(e.onStop),children:(Z,re)=>{var te=ie("Stop");u(Z,te)},$$slots:{default:!0}})}u(K,N)};H(I,K=>{n(c)&&e.configured?K(O):n(c)||K($,1)})}var F=v(I,2);{let K=j(()=>f("share"));Cd(F,{get projectId(){return e.projectId},get name(){return e.name},get runtime(){return e.runtime},get configured(){return e.configured},get address(){return n(p)},get busy(){return n(K)},get onWatch(){return e.onWatch},get onShare(){return e.onShare},get onUnshare(){return e.onUnshare}})}u(R,T)},q=R=>{var T=$1(),I=oe(T);{var O=A=>{{let z=j(()=>{var te;return n(c)||(te=e.runtime.share)==null?void 0:te.url}),W=j(()=>{var te,me;return((te=e.runtime.share)==null?void 0:te.protected)??(((me=e.runtime.shareStartup)==null?void 0:me.status)==="starting"&&e.runtime.shareStartup.protected)??!1}),U=j(()=>{var te;return f("share")||((te=e.runtime.shareStartup)==null?void 0:te.status)==="starting"}),Y=j(()=>{var te;return((te=e.runtime.shareStartup)==null?void 0:te.status)==="starting"?e.runtime.shareStartup.url:void 0}),Z=j(()=>{var te;return((te=e.runtime.shareStartup)==null?void 0:te.status)==="starting"?e.runtime.shareStartup.startedAt:void 0}),re=j(()=>{var te;return((te=e.runtime.shareStartup)==null?void 0:te.status)==="failed"?e.runtime.shareStartup.error:a()});Ed(A,{get name(){return e.name},get serviceKey(){return e.runtime.key},get url(){return n(z)},get protectedShare(){return n(W)},get pending(){return n(U)},get pendingUrl(){return n(Y)},get startedAt(){return n(Z)},get error(){return n(re)}})}};H(I,A=>{e.runtime&&!n(l)&&A(O)})}var $=v(I,2);{var F=A=>{var z=W1(),W=E(z);ni(W,{size:14,"aria-hidden":"true"});var U=v(W,1,!0);M(()=>L(U,n(h))),u(A,z)};H($,A=>{n(h)&&A(F)})}var K=v($,2);{var N=A=>{qd(A,{get message(){return n(d)}})};H(K,A=>{n(d)&&A(N)})}u(R,T)};let C=j(()=>Cn({page:"service",projectId:e.projectId,serviceName:e.name,tab:"logs"}));Ns(t,{get href(){return n(C)},leading:k,title:y,subtitle:S,meta:x,actions:w,below:q})}Oe()}var K1=P('<div class="actions svelte-ueqq6c"><!><!></div>'),G1=P('<h2 class="svelte-ueqq6c">Still running</h2> <p class="note svelte-ueqq6c">These services can still be stopped while the configuration is unavailable.</p> <!>',1),Y1=P("<!> <!>",1),J1=P('<!><a target="_blank" rel="noreferrer" class="svelte-ueqq6c"> </a> <!>',1),X1=P('<span class="note svelte-ueqq6c"> </span>'),Q1=P('<p class="attention svelte-ueqq6c" role="status"><!>Some services need attention. Other services keep running.</p>'),Z1=P('<p class="error svelte-ueqq6c" role="alert"> </p>'),e_=P('<!> <p class="note svelte-ueqq6c"> </p>',1),t_=P('<div class="address svelte-ueqq6c"><!></div> <!> <div class="heading svelte-ueqq6c"><h2 class="svelte-ueqq6c">Services</h2> <!></div> <!> <!>',1),r_=P('<section class="overview page-shell svelte-ueqq6c" aria-label="Services"><!></section>');function n_(t,e){ze(e,!0);let r=G(!1),s=G(!1);const a=j(()=>e.services.filter(w=>w.projectId===e.project.id)),i=j(()=>[...e.project.commands.map(w=>({name:w.name,command:w,runtime:n(a).find(q=>q.name===w.name),configured:!0})),...n(a).filter(w=>!e.project.commands.some(q=>q.name===w.name)).map(w=>({name:w.name,command:void 0,runtime:w,configured:!1}))]),o=j(()=>n(i).filter(w=>w.name.toLowerCase().includes(e.query.toLowerCase()))),l=j(()=>n(a).filter(w=>!Dr(w)&&w.status!=="stopped"&&w.status!=="stopping"&&w.upstreamReady)),c=j(()=>n(l).find(w=>w.name==="web")??n(l)[0]),d=j(()=>n(a).filter(w=>w.readinessStatus==="failed"||w.lastError).length),h=j(()=>n(a).filter(w=>w.status!=="stopped").length),p=w=>(e.project.profiles??[]).filter(q=>q.active&&q.services.includes(w)).map(q=>q.name);async function f(){if(n(c))try{await navigator.clipboard.writeText(n(c).urls[0]),_(r,!0),setTimeout(()=>_(r,!1),1500)}catch{Te.error("Couldn't copy. Select the address and copy it manually.")}}async function g(){_(s,!0);try{await e.onRetry()}catch(w){Te.error(_t(w))}finally{_(s,!1)}}async function m(){if(await Vs({title:`Forget ${e.project.name}?`,body:"LocalDeck stops listing this project and releases its remembered ports. Your files and .localdeck are not changed.",confirmLabel:"Forget project",danger:!0}))try{await e.onForget(),Te.success(`${e.project.name} forgotten`)}catch(w){Te.error(_t(w))}}const b=w=>{var C;const q=`${e.project.id}:${w.name}`;return{projectId:e.project.id,name:w.name,command:w.command,runtime:w.runtime,configured:w.configured,profiles:p(w.name),fingerprint:(C=e.project.fingerprints)==null?void 0:C[w.name],activeProfiles:e.project.activeProfiles??[],pending:e.pending,error:e.errors[q],shareError:e.shareErrors[q]??"",onStart:()=>e.onStartService(w.name),onStop:()=>e.onStopService(w.name),onRestart:()=>e.onRestartService(w.name),onWatch:R=>e.onWatch(q,R),onShare:(R,T)=>e.onShare(q,R,T),onUnshare:()=>e.onUnshare(q)}};var k=r_(),y=E(k);{var S=w=>{var q=Y1(),C=oe(q);{const I=$=>{var F=K1(),K=E(F);we(K,{variant:"primary",get loading(){return n(s)},onclick:g,children:(A,z)=>{var W=ie("Retry");u(A,W)},$$slots:{default:!0}});var N=v(K);{let A=j(()=>e.pending.has(`project:${e.project.id}:forget`));we(N,{variant:"danger",get loading(){return n(A)},onclick:m,children:(z,W)=>{var U=ie("Forget project…");u(z,U)},$$slots:{default:!0}})}u($,F)};let O=j(()=>e.project.error??e.errors[e.project.id]??"The project configuration could not be loaded.");_r(C,{get icon(){return ys},title:"Project unavailable",get body(){return n(O)},action:I})}var R=v(C,2);{var T=I=>{var O=G1(),$=v(oe(O),4);qn($,{label:"Active services",children:(F,K)=>{var N=Me(),A=oe(N);Ae(A,17,()=>n(a),z=>z.key,(z,W)=>{{let U=j(()=>b({name:n(W).name,command:void 0,runtime:n(W),configured:!1}));fo(z,Ce(()=>n(U)))}}),u(F,N)}}),u(I,O)};H(R,I=>{n(a).length&&I(T)})}u(w,q)},x=w=>{var q=t_(),C=oe(q),R=E(C);{var T=Z=>{var re=J1(),te=oe(re);Af(te,{size:16,"aria-hidden":"true"});var me=v(te),se=V(me,!0),fe=v(me,2);{let pe=j(()=>n(r)?"Copied":"Copy app address"),ge=j(()=>n(r)?Mr:hn);ls(fe,{size:"sm",get label(){return n(pe)},get icon(){return n(ge)},onclick:f})}M(pe=>{de(me,"href",n(c).urls[0]),L(se,pe)},[()=>n(c).urls[0].replace(/^https?:\/\//,"").replace(/\/$/,"")]),u(Z,re)},I=Z=>{var re=X1(),te=V(re,!0);M(()=>L(te,n(h)?"Waiting for your app to be ready…":"Start your project to get an app link.")),u(Z,re)};H(R,Z=>{n(c)?Z(T):Z(I,-1)})}var O=v(C,2);{var $=Z=>{var re=Q1(),te=E(re);ys(te,{size:16,"aria-hidden":"true"}),u(Z,re)};H(O,Z=>{n(d)&&Z($)})}var F=v(O,2),K=v(E(F),2);{var N=Z=>{It(Z,{get icon(){return Fs},size:"sm",type:"search","aria-label":"Find a service",placeholder:"Find a service",get value(){return e.query},oninput:re=>e.onQuery(re.currentTarget.value)})};H(K,Z=>{n(i).length>=6&&Z(N)})}var A=v(F,2);{var z=Z=>{var re=Z1(),te=V(re,!0);M(()=>L(te,e.errors[e.project.id])),u(Z,re)};H(A,Z=>{e.errors[e.project.id]&&Z(z)})}var W=v(A,2);{var U=Z=>{var re=e_(),te=oe(re);qn(te,{label:"Services",children:(fe,pe)=>{var ge=Me(),De=oe(ge);Ae(De,17,()=>n(o),Fe=>Fe.name,(Fe,ke)=>{{let Ee=j(()=>b(n(ke)));fo(Fe,Ce(()=>n(Ee)))}}),u(fe,ge)}});var me=v(te,2),se=V(me,!0);M(fe=>L(se,fe),[()=>n(d)?"Some services need attention.":n(i).every(fe=>{var pe;return((pe=fe.runtime)==null?void 0:pe.upstreamReady)&&fe.runtime.status!=="stopped"})?`All ${n(i).length} services are ready`:`${n(h)} of ${n(i).length} services running`]),u(Z,re)},Y=Z=>{{let re=j(()=>e.query?"No matching services":"No configured services"),te=j(()=>e.query?"Try a different name or clear the search.":`Add a service to ${e.project.file}, then retry.`);_r(Z,{get icon(){return Qc},get title(){return n(re)},get body(){return n(te)}})}};H(W,Z=>{n(o).length?Z(U):Z(Y,-1)})}u(w,q)};H(y,w=>{e.project.available?w(x,-1):w(S)})}u(t,k),Oe()}var s_=P('<div class="controls svelte-ruqv4s"><!> <!></div>'),a_=P('<form class="nickname svelte-ruqv4s"><!></form>');function i_(t,e){ze(e,!0);let r=ve(e,"onSaved",3,async()=>{}),s=G(""),a=G(""),i=G(!1),o=G("");const l=j(()=>n(s).trim().toLowerCase());xt(()=>{e.projectId,_(s,e.nickname??"",!0),_(a,(e.nickname??"").trim().toLowerCase(),!0),_(o,"")});async function c(p){if(p.preventDefault(),!(n(i)||n(l)===n(a))){_(i,!0),_(o,"");try{const f=await fetch(`/api/projects/${encodeURIComponent(e.projectId)}/nickname`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify({nickname:n(l)})}),g=await f.json();if(!f.ok)throw new Error(g.error??"Couldn't save the nickname.");_(s,g.nickname??"",!0),_(a,n(s).trim().toLowerCase(),!0),Te.success(n(l)?"Nickname saved":"Nickname removed");try{await r()()}catch{Te.error("Saved, but the links couldn't refresh. Reload the dashboard.")}}catch(f){_(o,_t(f),!0),Te.error(n(o))}finally{_(i,!1)}}}var d=a_(),h=E(d);{const p=(g,m)=>{let b=()=>(m==null?void 0:m()).id,k=()=>(m==null?void 0:m()).describedby,y=()=>(m==null?void 0:m()).invalid;var S=s_(),x=E(S);It(x,{get id(){return b()},get"aria-describedby"(){return k()},get invalid(){return y()},placeholder:"nickname",maxlength:63,pattern:"[A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])?",autocapitalize:"none",spellcheck:"false",get disabled(){return n(i)},get value(){return n(s)},set value(q){_(s,q,!0)}});var w=v(x,2);{let q=j(()=>n(l)===n(a));we(w,{variant:"primary",type:"submit",get loading(){return n(i)},get disabled(){return n(q)},children:(C,R)=>{var T=ie("Save");u(C,T)},$$slots:{default:!0}})}u(g,S)};let f=j(()=>n(o)||void 0);tr(h,{label:"Nickname",hint:"Used in links like platform.web.localhost. Saved in .localdeck; leave empty to remove it.",get error(){return n(f)},children:p,$$slots:{default:!0}})}Ht("submit",d,c),u(t,d),Oe()}var o_=P('<p class="note svelte-1xk5qw3">Review before sharing with your coding assistant. Known secrets are redacted; logs may contain other private data.</p> <label class="report svelte-1xk5qw3"><span>Report to copy</span><textarea rows="10" spellcheck="false" class="svelte-1xk5qw3"></textarea></label> <div><!></div>',1),l_=P('<div class="diagnostics svelte-1xk5qw3"><p class="note svelte-1xk5qw3">For setup problems, run <code class="svelte-1xk5qw3">localdeck doctor</code> in your project folder.</p> <div><!></div> <!></div>');function c_(t,e){ze(e,!0);let r=G(""),s=G(!1),a=G(!1);async function i(){_(s,!0),_(a,!1);try{const f=await fetch(`/api/projects/${encodeURIComponent(e.projectId)}/diagnostics`),g=await f.json();if(!f.ok)throw new Error(g.error??"Couldn't prepare the report.");_(r,g.report,!0)}catch(f){Te.error(_t(f))}finally{_(s,!1)}}async function o(){try{await navigator.clipboard.writeText(n(r)),_(a,!0),setTimeout(()=>_(a,!1),1500)}catch{Te.error("Clipboard unavailable. Select and copy the report.")}}var l=l_(),c=v(E(l),2),d=E(c);we(d,{get icon(){return _f},get loading(){return n(s)},onclick:i,children:(f,g)=>{var m=ie("Preview diagnostic report");u(f,m)},$$slots:{default:!0}});var h=v(c,2);{var p=f=>{var g=o_(),m=v(oe(g),2),b=v(E(m)),k=v(m,2),y=E(k);{let S=j(()=>n(a)?Mr:hn);we(y,{get icon(){return n(S)},onclick:o,children:(x,w)=>{var q=ie();M(()=>L(q,n(a)?"Copied":"Copy diagnostic report")),u(x,q)},$$slots:{default:!0}})}Lo(b,()=>n(r),S=>_(r,S)),u(f,g)};H(h,f=>{n(r)&&f(p)})}u(t,l),Oe()}var d_=P(" <!>",1),u_=P('<span class="mono svelte-19ye27z"> </span>'),v_=P('<span class="note svelte-19ye27z">Configure</span>'),f_=P('<p class="note svelte-19ye27z">Turn profiles on with Profiles at the top of the page, only on this computer. Edit .localdeck to change them.</p> <!>',1),h_=P('<p class="note svelte-19ye27z">No profiles yet. Add a <code class="svelte-19ye27z">profiles</code> object to .localdeck to run services differently, for example against a staging API, without renaming them.</p>'),g_=P('<section class="settings page-shell svelte-19ye27z" aria-label="Project settings"><section class="block svelte-19ye27z"><h2 class="svelte-19ye27z">General</h2><!></section> <section class="block svelte-19ye27z"><h2 class="svelte-19ye27z">Services</h2> <p class="note svelte-19ye27z">Saved to .localdeck. Running services keep their current configuration until restarted.</p> <!></section> <section class="block svelte-19ye27z"><h2 class="svelte-19ye27z">Profiles</h2> <!></section> <section class="block svelte-19ye27z"><h2 class="svelte-19ye27z">Diagnostics</h2><!></section> <section class="block danger svelte-19ye27z"><h2 class="svelte-19ye27z">Danger zone</h2> <div class="danger-row svelte-19ye27z"><div><strong class="svelte-19ye27z">Forget this project</strong><p class="note svelte-19ye27z">Stops listing it here and releases its remembered ports. Files are not changed.</p></div> <!></div></section></section>');function p_(t,e){ze(e,!0);const r=S=>(e.project.profiles??[]).filter(x=>x.active&&x.services.includes(S)).map(x=>x.name);async function s(){if(await Vs({title:`Forget ${e.project.name}?`,body:"LocalDeck stops listing this project and releases its remembered ports. Your files and .localdeck are not changed.",confirmLabel:"Forget project",danger:!0}))try{await e.onForget(),Te.success(`${e.project.name} forgotten`)}catch(S){Te.error(_t(S))}}var a=g_(),i=E(a),o=v(E(i));i_(o,{get projectId(){return e.project.id},get nickname(){return e.project.nickname},get onSaved(){return e.onSaved}});var l=v(i,2),c=v(E(l),4);qn(c,{label:"Service configuration",children:(S,x)=>{var w=Me(),q=oe(w);Ae(q,17,()=>e.project.commands,C=>C.name,(C,R)=>{{const T=F=>{var K=d_(),N=oe(K,!0),A=v(N);Ae(A,17,()=>r(n(R).name),kt,(z,W)=>{Oo(z,{children:(U,Y)=>{var Z=ie();M(()=>L(Z,n(W))),u(U,Z)},$$slots:{default:!0}})}),M(()=>L(N,n(R).name)),u(F,K)},I=F=>{var K=u_(),N=V(K,!0);M(()=>L(N,n(R).run)),u(F,K)},O=F=>{var K=v_();u(F,K)};let $=j(()=>Cn({page:"service",projectId:e.project.id,serviceName:n(R).name,tab:"config"}));Ns(C,{get href(){return n($)},title:T,subtitle:I,meta:O})}}),u(S,w)}});var d=v(l,2),h=v(E(d),2);{var p=S=>{var x=f_(),w=v(oe(x),2);qn(w,{label:"Profiles",children:(q,C)=>{var R=Me(),T=oe(R);Ae(T,17,()=>e.project.profiles,I=>I.name,(I,O)=>{Ns(I,{title:N=>{var A=ie();M(()=>L(A,n(O).name)),u(N,A)},subtitle:N=>{var A=ie();M(z=>L(A,z),[()=>[n(O).description,n(O).services.length?`Changes ${n(O).services.join(", ")}`:"Changes no services"].filter(Boolean).join(" · ")]),u(N,A)},meta:N=>{{let A=j(()=>n(O).active?"ready":"neutral");Tn(N,{get tone(){return n(A)},children:(z,W)=>{var U=ie();M(()=>L(U,n(O).active?"On":"Off")),u(z,U)},$$slots:{default:!0}})}}})}),u(q,R)}}),u(S,x)},f=S=>{var x=h_();u(S,x)};H(h,S=>{var x;(x=e.project.profiles)!=null&&x.length?S(p):S(f,-1)})}var g=v(d,2),m=v(E(g));c_(m,{get projectId(){return e.project.id}});var b=v(g,2),k=v(E(b),2),y=v(E(k),2);we(y,{variant:"danger",onclick:s,children:(S,x)=>{var w=ie("Forget project…");u(S,w)},$$slots:{default:!0}}),u(t,a),Oe()}function m_(t){var s,a;if(!["GET","HEAD"].includes(t.method)||t.status>=400||t.error)return!1;let e=t.path.split("?")[0];try{e=decodeURIComponent(e)}catch{}if(/^\/(?:api|graphql|trpc)(?:\/|$)/i.test(e))return!1;const r=(a=(s=t.requestHeaders)==null?void 0:s.entries.find(([i])=>i.toLowerCase()==="sec-fetch-dest"))==null?void 0:a[1];return r==="document"||r==="iframe"?!1:r&&/^(?:script|style|font|image|worker|sharedworker|serviceworker|audio|video)$/.test(r)||/^\/(?:@fs|@id|@vite|node_modules)(?:\/|$)/.test(e)||e==="/@react-refresh"||/^\/(?:_next\/static|_app\/immutable)(?:\/|$)/.test(e)?!0:/\.(?:[cm]?[jt]sx?|svelte|vue|astro|mdx|css|scss|sass|less|styl(?:us)?|map|woff2?|ttf|otf|eot|png|jpe?g|gif|svg|ico|webp|avif)$/i.test(e)}var __=P('<div class="empty svelte-tqqrb7"><strong class="svelte-tqqrb7">No matching requests</strong><p class="svelte-tqqrb7">Requests through your service’s LocalDeck URL appear here.</p></div>'),y_=P('<th class="service-column svelte-tqqrb7">Service</th>'),b_=P('<td class="service-column svelte-tqqrb7"> </td>'),w_=P('<tr><td class="request-cell svelte-tqqrb7"><button class="svelte-tqqrb7"><span class="disclosure svelte-tqqrb7" aria-hidden="true"> </span><span class="method svelte-tqqrb7"> </span><span class="path svelte-tqqrb7"> </span></button></td><td> </td><td class="numeric duration svelte-tqqrb7"> <span class="unit svelte-tqqrb7">ms</span></td><!></tr>'),k_=P('<p class="error svelte-tqqrb7"> </p>'),x_=P('<span class="svelte-tqqrb7">Only GET and HEAD can be replayed.</span>'),S_=P('<span class="svelte-tqqrb7">Start the service to replay this request.</span>'),j_=P('<p class="error svelte-tqqrb7" role="alert"> </p>'),P_=P('<p role="status" class="svelte-tqqrb7"> </p>'),C_=P('<section class="inspector svelte-tqqrb7" aria-label="Request details"><header class="svelte-tqqrb7"><h3 class="svelte-tqqrb7">Request details</h3><!></header> <strong class="svelte-tqqrb7"> </strong> <p class="svelte-tqqrb7"> </p> <!> <!> <p class="svelte-tqqrb7">Replay sends a new GET/HEAD request without cookies, authorization, or a body.</p> <!> <!> <!> <!> <!></section>'),E_=P('<div class="request-list svelte-tqqrb7" role="region" aria-label="Recorded requests"><table class="svelte-tqqrb7"><thead><tr><th class="svelte-tqqrb7">Request</th><th class="numeric svelte-tqqrb7">Status</th><th class="numeric svelte-tqqrb7">Duration</th><!></tr></thead><tbody></tbody></table></div> <!>',1),R_=P("<div><!></div>");function q_(t,e){ze(e,!0);let r=ve(e,"showService",3,!0),s=G("");const a=j(()=>e.records.find(y=>`${y.service}:${y.id}`===n(s))),i=j(()=>e.services.find(y=>{var S;return y.key===((S=n(a))==null?void 0:S.service)})),o=j(()=>n(a)&&["GET","HEAD"].includes(n(a).method)),l=j(()=>{var y;return((y=n(i))==null?void 0:y.status)==="running"&&n(i).upstreamReady});let c=G(!1),d=G(null),h=G("");xt(()=>{var y,S;(y=n(a))==null||y.id,(S=n(a))==null||S.service,_(d,null),_(h,"")});async function p(){var S,x;if(!n(a)||!n(o)||!n(l)||n(c))return;const y=n(a);_(c,!0),_(d,null),_(h,"");try{const w=await fetch(`/api/services/${encodeURIComponent(y.service)}/replay`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({requestId:y.id})}),q=await w.json();if(!w.ok)throw new Error(q.error??"Replay failed");((S=n(a))==null?void 0:S.id)===y.id&&n(a).service===y.service&&_(d,q,!0)}catch(w){((x=n(a))==null?void 0:x.id)===y.id&&n(a).service===y.service&&(_(h,w instanceof Error?w.message:"Replay failed",!0),Te.error(n(h)))}finally{_(c,!1)}}var f=R_();let g;var m=E(f);{var b=y=>{var S=__();u(y,S)},k=y=>{var S=E_(),x=oe(S),w=E(x),q=E(w),C=E(q),R=v(E(C),3);{var T=F=>{var K=y_();u(F,K)};H(R,F=>{r()&&F(T)})}var I=v(q);Ae(I,21,()=>e.records,F=>`${F.service}:${F.id}`,(F,K)=>{var N=w_();let A;var z=E(N),W=E(z),U=E(W),Y=V(U,!0),Z=v(U),re=V(Z,!0),te=v(Z),me=V(te,!0),se=v(z);let fe;var pe=V(se,!0),ge=v(se),De=E(ge),Fe=v(ge);{var ke=Ee=>{var ce=b_(),_e=V(ce,!0);M((Ue,Se)=>{de(ce,"title",Ue),L(_e,Se)},[()=>e.names.get(n(K).service)??n(K).service,()=>e.names.get(n(K).service)??n(K).service]),u(Ee,ce)};H(Fe,Ee=>{r()&&Ee(ke)})}M((Ee,ce)=>{var _e,Ue,Se,ir,Xt,Rt;A=Ze(N,1,"request-row svelte-tqqrb7",null,A,{selected:((_e=n(a))==null?void 0:_e.service)===n(K).service&&((Ue=n(a))==null?void 0:Ue.id)===n(K).id}),de(W,"aria-label",Ee),de(W,"aria-expanded",((Se=n(a))==null?void 0:Se.service)===n(K).service&&((ir=n(a))==null?void 0:ir.id)===n(K).id),L(Y,((Xt=n(a))==null?void 0:Xt.service)===n(K).service&&((Rt=n(a))==null?void 0:Rt.id)===n(K).id?"▾":"▸"),L(re,n(K).method),de(te,"title",n(K).path),L(me,n(K).path),fe=Ze(se,1,"numeric status svelte-tqqrb7",null,fe,{failed:n(K).status>=400||!!n(K).error||n(K).status===0,redirect:n(K).status>=300&&n(K).status<400}),L(pe,n(K).status||"ERR"),L(De,ce)},[()=>`Inspect ${n(K).method} ${n(K).path} for ${e.names.get(n(K).service)??n(K).service}`,()=>Math.round(n(K).durationMs).toLocaleString()]),Qe("click",N,()=>_(s,n(s)===`${n(K).service}:${n(K).id}`?"":`${n(K).service}:${n(K).id}`,!0)),u(F,N)});var O=v(x,2);{var $=F=>{var K=C_(),N=E(K),A=v(E(N));ls(A,{size:"sm",label:"Close request details",get icon(){return ss},onclick:()=>_(s,"")});var z=v(N,2),W=V(z),U=v(z,2),Y=V(U),Z=v(U,2);{var re=ce=>{var _e=k_(),Ue=V(_e,!0);M(()=>L(Ue,n(a).error)),u(ce,_e)};H(Z,ce=>{n(a).error&&ce(re)})}var te=v(Z,2);Wr(te,()=>`${n(a).service}:${n(a).id}`,ce=>{jd(ce,{get record(){return n(a)},get replayResult(){return n(d)}})});var me=v(te,4);{let ce=j(()=>!n(o)||!n(l));we(me,{size:"sm",get icon(){return ni},get loading(){return n(c)},get disabled(){return n(ce)},onclick:p,children:(_e,Ue)=>{var Se=ie("Replay request");u(_e,Se)},$$slots:{default:!0}})}var se=v(me,2);{var fe=ce=>{var _e=x_();u(ce,_e)},pe=ce=>{var _e=S_();u(ce,_e)};H(se,ce=>{n(o)?n(l)||ce(pe,1):ce(fe)})}var ge=v(se,2);{var De=ce=>{var _e=j_(),Ue=V(_e,!0);M(()=>L(Ue,n(h))),u(ce,_e)};H(ge,ce=>{n(h)&&ce(De)})}var Fe=v(ge,2);{var ke=ce=>{var _e=P_(),Ue=V(_e);M(()=>L(Ue,`Replay complete · HTTP ${n(d).status??""}. Expand Response to view the response.`)),u(ce,_e)};H(Fe,ce=>{n(d)&&ce(ke)})}var Ee=v(Fe,2);Wr(Ee,()=>`${n(a).service}:${n(a).id}`,ce=>{Pd(ce,{get record(){return n(a)},get service(){return n(i)}})}),M((ce,_e,Ue)=>{L(W,`${n(a).method??""} ${n(a).path??""}`),L(Y,`${ce??""} · ${_e??""} · ${n(a).via??""} · HTTP ${n(a).status??""} · ${Ue??""} bytes`)},[()=>e.names.get(n(a).service)??n(a).service,()=>new Date(n(a).ts).toLocaleString(),()=>n(a).bytes.toLocaleString()]),u(F,K)};H(O,F=>{n(a)&&F($)})}u(y,S)};H(m,y=>{e.records.length?y(k,-1):y(b)})}M(()=>g=Ze(f,1,"requests-panel svelte-tqqrb7",null,g,{inspecting:!!n(a)})),u(t,f),Oe()}ar(["click"]);function L_(t,e,r,s=oi,a={}){const i=r.trim().toLowerCase();return[...new Set(e)].flatMap(o=>[...(t[o]??[]).map(l=>l.source||l.stream!=="system"||!/^LocalDeck: (sharing |share for )/.test(l.line)?l:{...l,source:"share"}),...(a[o]??[]).filter(l=>l.via==="share").map(l=>({id:`request:${l.id}`,ts:l.ts,service:l.service,stream:"system",source:"share",line:`${l.method} ${l.path} → ${l.status} · ${Math.round(l.durationMs)} ms`}))]).filter(o=>!i||`${o.line} ${o.service} ${o.stream} ${o.source??""}`.toLowerCase().includes(i)).sort((o,l)=>o.ts-l.ts||o.service.localeCompare(l.service)||o.id.localeCompare(l.id)).slice(-s)}function A_(t,e){return t.includes(e)?t.filter(r=>r!==e):[...new Set([...t,e])]}var T_=P('<div class="resize-handle svelte-147la1m" role="separator" tabindex="0" aria-label="Logs panel height" aria-orientation="horizontal"></div>'),N_=P('<div class="ui-menu-label"> </div> <!> <!>',1),I_=P('<p class="menu-note svelte-147la1m">No active services. Start a service to see it here.</p>'),M_=P('<div class="history-error svelte-147la1m" role="alert"> <!></div>'),ql=P('<div class="history-error svelte-147la1m" role="alert"> </div>'),D_=P('<div><button class="source-select svelte-147la1m"><span role="img"></span><span class="project-name svelte-147la1m"> </span> </button> <button class="clear-source svelte-147la1m"><!></button></div>'),z_=P('<!> <div class="logs-status svelte-147la1m"><span> </span></div>',1),O_=P('<div class="empty svelte-147la1m"><strong class="svelte-147la1m">Select services to view their logs</strong><span class="svelte-147la1m">Use the Services menu to combine output from multiple services.</span></div>'),U_=P('<div class="empty svelte-147la1m"><strong class="svelte-147la1m"> </strong><span class="svelte-147la1m"> </span></div>'),H_=P('<span class="source svelte-147la1m"> </span>'),B_=P('<div><time class="svelte-147la1m"> </time> <!> <span class="stream svelte-147la1m"> </span><span class="line svelte-147la1m"> </span><button class="copy-line svelte-147la1m" aria-label="Copy log line"><!></button></div>'),F_=P('<div class="log-output svelte-147la1m" tabindex="0" role="region" aria-label="Log output"><!></div> <!> <div class="logs-status svelte-147la1m"><span> <span class="record-count svelte-147la1m"> </span></span> <div class="log-controls svelte-147la1m"><!> <!></div></div>',1),V_=P('<section><!> <header class="logs-toolbar svelte-147la1m"><h2 class="svelte-147la1m"><!> </h2> <!> <!> <!> <!></header> <!> <!> <nav class="source-tabs svelte-147la1m"><button>All selected <span class="count svelte-147la1m"> </span></button> <!></nav> <!></section>');function Ld(t,e){ze(e,!0);let r=ve(e,"view",3,"logs"),s=ve(e,"services",19,()=>[]),a=ve(e,"historyBoundaries",19,()=>({})),i=ve(e,"resetView",3,0),o=ve(e,"requestedSource",3,null),l=ve(e,"error",3,""),c=ve(e,"requests",19,()=>({})),d=ve(e,"embedded",3,!1),h=ve(e,"limit",3,oi);xt(()=>{i(),_(k,o()),_(m,"")});let p=G(""),f=G(tt([]));async function g(ne){const ue=r(),He=`${ne}/${ue}`;if(n(f).includes(He))return;const it=n(ce).get(ne)??ne;if(await Vs({title:`Clear ${ue} for ${it}?`,body:`Older ${ue} are hidden from this view. New ${ue} keep appearing, and the service keeps running.`,confirmLabel:`Clear ${ue}`,danger:!0})){_(f,[...n(f),He],!0),_(p,"");try{await e.onClear(ne,ue),ue==="logs"&&_(S,null),Te.success(`Cleared ${ue} for ${it}`)}catch(vt){_(p,_t(vt),!0),Te.error(n(p))}finally{_(f,n(f).filter(vt=>vt!==He),!0)}}}let m=G(""),b=G(!1),k=G(tt(o())),y=G(!0),S=G(null),x=G(""),w=G("");function q(){n(S)?(_(S,null),_(y,!0)):(_(S,[...n(ge)],!0),_(y,!1))}async function C(){_(S,null),_(y,!0),await En(),n(I)&&(n(I).scrollTop=n(I).scrollHeight)}async function R(ne){_(w,"");try{await navigator.clipboard.writeText(ne.line),_(x,`${ne.service}:${ne.id}`)}catch{_(w,"Could not copy. Select the message and copy it manually.")}}const T=j(()=>new Map(s().map(ne=>[ne.key,ne.status])));let I=G(void 0),O,$=G(void 0),F=G(720);const K=j(()=>Math.max(160,n(F)-140)),N=j(()=>Math.min(n(K),Math.max(160,n($)??Math.min(420,Math.max(220,n(F)*.33)))));let A;Ia(()=>{_(F,window.innerHeight,!0);try{_(b,localStorage.getItem("localdeck-show-background-requests")==="true")}catch{}try{const ne=Number(localStorage.getItem("localdeck-logs-height"));Number.isFinite(ne)&&ne>0&&_($,ne,!0)}catch{}});function z(){try{localStorage.setItem("localdeck-logs-height",String(n(N)))}catch{}}function W(ne){ne.button===0&&(ne.preventDefault(),A={y:ne.clientY,height:O.getBoundingClientRect().height},ne.currentTarget.setPointerCapture(ne.pointerId))}function U(ne){!A||!ne.currentTarget.hasPointerCapture(ne.pointerId)||_($,Math.max(160,Math.min(n(K),A.height+A.y-ne.clientY)),!0)}function Y(){A=void 0,z()}function Z(ne){["ArrowUp","ArrowDown","Home","End"].includes(ne.key)&&(ne.preventDefault(),_($,ne.key==="Home"?160:ne.key==="End"?n(K):Math.max(160,Math.min(n(K),n(N)+(ne.key==="ArrowUp"?24:-24))),!0),z())}const re=j(()=>{const ne=new Map;for(const ue of e.sources){const He=ue.key.split(":")[0];let it=ne.get(He);it||(it={id:He,name:ue.projectName,sources:[]},ne.set(He,it)),it.sources.push(ue)}return[...ne.values()]});function te(ne,ue){const He=new Set(ne);e.onSelectionChange(ue?[...new Set([...e.selectedKeys,...ne])]:e.selectedKeys.filter(it=>!He.has(it)))}const me=j(()=>e.sources.filter(ne=>e.selectedKeys.includes(ne.key))),se=j(()=>n(k)&&e.selectedKeys.includes(n(k))?n(k):null),fe=j(()=>Object.fromEntries((n(se)?[n(se)]:e.selectedKeys).map(ne=>{const ue=a()[`${ne}/logs`],He=c()[ne]??[];return[ne,ue?He.filter(it=>ra(it.id,ue)):He]}))),pe=j(()=>L_(e.logs,n(se)?[n(se)]:e.selectedKeys,n(m),h(),n(fe))),ge=j(()=>n(S)??n(pe));xt(()=>{n(se),n(m),r(),e.selectedKeys,_(S,null),_(x,"")});const De=j(()=>(n(se)?[n(se)]:e.selectedKeys).flatMap(ne=>c()[ne]??[]).filter(ne=>`${ne.method} ${ne.path} ${ne.status} ${ne.via}`.toLowerCase().includes(n(m).trim().toLowerCase()))),Fe=j(()=>new Set(n(De).filter(m_))),ke=j(()=>n(De).filter(ne=>n(b)||!n(Fe).has(ne)).sort((ne,ue)=>ue.ts-ne.ts||ne.service.localeCompare(ue.service)||ne.id.localeCompare(ue.id)).slice(0,h()));function Ee(){_(b,!n(b));try{localStorage.setItem("localdeck-show-background-requests",String(n(b)))}catch{}}const ce=j(()=>new Map(e.sources.map(ne=>[ne.key,`${ne.projectName} / ${ne.name}`])));function _e(){n(I)&&!n(S)&&_(y,n(I).scrollHeight-n(I).scrollTop-n(I).clientHeight<32)}xt(()=>{n(ge),n(y)&&En().then(()=>{n(I)&&n(y)&&(n(I).scrollTop=n(I).scrollHeight)})});var Ue=V_();Ht("resize",ei,()=>_(F,window.innerHeight,!0));let Se,ir;var Xt=E(Ue);{var Rt=ne=>{var ue=T_();de(ue,"aria-valuemin",160),M(He=>{de(ue,"aria-valuemax",n(K)),de(ue,"aria-valuenow",He)},[()=>Math.round(n(N))]),Qe("pointerdown",ue,W),Qe("pointermove",ue,U),Qe("pointerup",ue,Y),Ht("pointercancel",ue,Y),Ht("lostpointercapture",ue,Y),Qe("keydown",ue,Z),u(ne,ue)};H(Xt,ne=>{d()||ne(Rt)})}var ur=v(Xt,2),zr=E(ur),tn=E(zr);ch(tn,{size:16,"aria-hidden":"true"});var cs=v(tn,1,!0),pn=v(zr,2);{var rn=ne=>{{let ue=j(()=>`Services · ${e.selectedKeys.length}`);Ln(ne,{variant:"field",size:"sm",get icon(){return ed},get label(){return n(ue)},ariaLabel:"Log sources",closeOnSelect:!1,placement:"top-start",width:"300px",children:(He,it)=>{var vt=Me(),zt=oe(vt);Ae(zt,17,()=>n(re),pt=>pt.id,(pt,ft)=>{const Ft=j(()=>n(ft).sources.filter(Wt=>e.selectedKeys.includes(Wt.key)).length);var vr=N_(),Vt=oe(vr),Pr=V(Vt,!0),Hr=v(Vt,2);{let Wt=j(()=>n(Ft)===n(ft).sources.length),$t=j(()=>n(Ft)>0&&n(Ft)<n(ft).sources.length?`${n(Ft)} of ${n(ft).sources.length} selected`:void 0);Ct(Hr,{get checked(){return n(Wt)},get description(){return n($t)},onselect:()=>te(n(ft).sources.map(J=>J.key),n(Ft)!==n(ft).sources.length),children:(J,Q)=>{var le=ie();M(()=>L(le,`Select all in ${n(ft).name??""}`)),u(J,le)},$$slots:{default:!0}})}var nn=v(Hr,2);Ae(nn,17,()=>n(ft).sources,Wt=>Wt.key,(Wt,$t)=>{{let J=j(()=>e.selectedKeys.includes(n($t).key)),Q=j(()=>n(T).get(n($t).key)??"stopped");Ct(Wt,{get checked(){return n(J)},get description(){return n(Q)},onselect:()=>e.onSelectionChange(A_(e.selectedKeys,n($t).key)),children:(le,ye)=>{var Le=ie();M(()=>L(Le,n($t).name)),u(le,Le)},$$slots:{default:!0}})}}),M(()=>L(Pr,n(ft).name)),u(pt,vr)},pt=>{var ft=I_();u(pt,ft)}),u(He,vt)},$$slots:{default:!0}})}};H(pn,ne=>{d()||ne(rn)})}var mn=v(pn,2);{let ne=j(()=>r()==="logs"?"Filter log output":"Filter requests"),ue=j(()=>r()==="logs"?"Filter output":"Filter requests");It(mn,{size:"sm",get icon(){return Fs},class:"filter",get"aria-label"(){return n(ne)},get placeholder(){return n(ue)},type:"search",get value(){return n(m)},set value(He){_(m,He,!0)}})}var _n=v(mn,2);{var yn=ne=>{Ln(ne,{iconOnly:!0,size:"sm",get icon(){return nd},ariaLabel:"Request options",closeOnSelect:!1,placement:"top-end",children:(ue,He)=>{Ct(ue,{get checked(){return n(b)},onselect:Ee,children:(it,vt)=>{var zt=ie("Show assets & dev traffic");u(it,zt)},$$slots:{default:!0}})},$$slots:{default:!0}})};H(_n,ne=>{r()==="requests"&&ne(yn)})}var Sr=v(_n,2);{var ds=ne=>{{let ue=j(()=>`Close ${r()} panel`);ls(ne,{size:"sm",class:"close",get label(){return n(ue)},get icon(){return ss},get onclick(){return e.onClose}})}};H(Sr,ne=>{d()||ne(ds)})}var In=v(ur,2);{var bn=ne=>{var ue=M_(),He=E(ue),it=v(He);we(it,{size:"sm",get onclick(){return e.onRetry},children:(vt,zt)=>{var pt=ie("Retry logs");u(vt,pt)},$$slots:{default:!0}}),M(()=>L(He,l())),u(ne,ue)};H(In,ne=>{l()&&ne(bn)})}var Or=v(In,2);{var us=ne=>{var ue=ql(),He=V(ue);M(()=>L(He,`Couldn't clear ${r()??""}: ${n(p)??""}`)),u(ne,ue)};H(Or,ne=>{n(p)&&ne(us)})}var Mn=v(Or,2),Ur=E(Mn);let vs;var jr=v(E(Ur)),fs=V(jr,!0),wn=v(Ur,2);Ae(wn,17,()=>n(me),ne=>ne.key,(ne,ue)=>{var He=D_();let it;var vt=E(He),zt=E(vt);let pt;var ft=v(zt),Ft=V(ft),vr=v(ft),Vt=v(vt,2),Pr=E(Vt);uh(Pr,{size:13,"aria-hidden":"true"}),M((Hr,nn,Wt,$t,J)=>{it=Ze(He,1,"tab source-tab svelte-147la1m",null,it,{active:n(se)===n(ue).key}),de(vt,"aria-pressed",n(se)===n(ue).key),de(vt,"title",`${n(ue).projectName} / ${n(ue).name}`),pt=Ze(zt,1,"signal svelte-147la1m",null,pt,{running:Hr,starting:nn}),de(zt,"aria-label",Wt),de(zt,"title",$t),L(Ft,`${n(ue).projectName??""} /`),L(vr,` ${n(ue).name??""}`),Vt.disabled=J,de(Vt,"aria-label",`Clear ${r()} for ${n(ue).projectName} / ${n(ue).name}`),de(Vt,"title",`Clear ${r()} for ${n(ue).projectName} / ${n(ue).name}`)},[()=>n(T).get(n(ue).key)==="running",()=>n(T).get(n(ue).key)==="starting",()=>n(T).get(n(ue).key)??"stopped",()=>n(T).get(n(ue).key)??"stopped",()=>n(f).includes(`${n(ue).key}/${r()}`)]),Qe("click",vt,()=>_(k,n(ue).key,!0)),Qe("click",Vt,()=>void g(n(ue).key)),u(ne,He)});var Dn=v(Mn,2);{var zn=ne=>{var ue=z_(),He=oe(ue);{let pt=j(()=>!n(se)&&e.selectedKeys.length>1);q_(He,{get records(){return n(ke)},get services(){return s()},get names(){return n(ce)},get showService(){return n(pt)}})}var it=v(He,2),vt=E(it),zt=V(vt);M((pt,ft)=>L(zt,`${pt??""} requests${ft??""}`),[()=>n(ke).length.toLocaleString(),()=>!n(b)&&n(Fe).size?` · ${n(Fe).size.toLocaleString()} background requests hidden`:""]),u(ne,ue)},On=ne=>{var ue=F_(),He=oe(ue),it=E(He);{var vt=Q=>{var le=O_();u(Q,le)},zt=Q=>{var le=U_(),ye=E(le),Le=V(ye,!0),je=v(ye),yt=V(je,!0);M((qt,Lt)=>{L(Le,qt),L(yt,Lt)},[()=>n(m).trim()?"No output matches this filter":"Waiting for output",()=>n(m).trim()?"Try another search or clear the filter.":"Output from the selected services will appear here."]),u(Q,le)},pt=Q=>{var le=Me(),ye=oe(le);Ae(ye,17,()=>n(ge),Le=>`${Le.service}:${Le.id}`,(Le,je)=>{var yt=B_();let qt;var Lt=E(yt),Qt=V(Lt,!0),fr=v(Lt,2);{var gt=ae=>{var he=H_(),xe=V(he,!0);M((Be,Ne)=>{de(he,"title",Be),L(xe,Ne)},[()=>n(ce).get(n(je).service)??n(je).service,()=>n(ce).get(n(je).service)??n(je).service]),u(ae,he)};H(fr,ae=>{!n(se)&&e.selectedKeys.length>1&&ae(gt)})}var bt=v(fr,2),Ot=V(bt,!0),hr=v(bt),ht=V(hr,!0),$e=v(hr),B=E($e);{var X=ae=>{Mr(ae,{size:13})},ee=ae=>{hn(ae,{size:13})};H(B,ae=>{n(x)===`${n(je).service}:${n(je).id}`?ae(X):ae(ee,-1)})}M((ae,he)=>{qt=Ze(yt,1,"log-row svelte-147la1m",null,qt,{"single-source":!!n(se)||e.selectedKeys.length<=1,stderr:n(je).stream==="stderr",shared:n(je).source==="share"}),de(Lt,"datetime",ae),L(Qt,he),L(Ot,n(je).source==="share"?"SHARE":n(je).stream),L(ht,n(je).line),de($e,"title",n(x)===`${n(je).service}:${n(je).id}`?"Copied":"Copy log line")},[()=>new Date(n(je).ts).toISOString(),()=>new Date(n(je).ts).toLocaleTimeString([],{hour12:!1})]),Qe("click",$e,()=>R(n(je))),u(Le,yt)}),u(Q,le)};H(it,Q=>{e.selectedKeys.length?n(ge).length?Q(pt,-1):Q(zt,1):Q(vt)})}Rn(He,Q=>_(I,Q),()=>n(I));var ft=v(He,2);{var Ft=Q=>{var le=ql(),ye=V(le,!0);M(()=>L(ye,n(w))),u(Q,le)};H(ft,Q=>{n(w)&&Q(Ft)})}var vr=v(ft,2),Vt=E(vr),Pr=E(Vt),Hr=v(Pr),nn=V(Hr,!0),Wt=v(Vt,2),$t=E(Wt);{let Q=j(()=>n(S)?Bs:td),le=j(()=>!!n(S));we($t,{size:"sm",variant:"ghost",get icon(){return n(Q)},get"aria-pressed"(){return n(le)},onclick:q,children:(ye,Le)=>{var je=ie();M(()=>L(je,n(S)?"Resume":"Pause")),u(ye,je)},$$slots:{default:!0}})}var J=v($t,2);{let Q=j(()=>n(y)&&!n(S));we(J,{size:"sm",variant:"ghost",get icon(){return Vv},get disabled(){return n(Q)},onclick:C,children:(le,ye)=>{var Le=ie("Jump to latest");u(le,Le)},$$slots:{default:!0}})}M(Q=>{L(Pr,n(S)?"Paused · capture continues":"Live output"),L(nn,Q)},[()=>` · ${n(ge).length.toLocaleString()} lines · limit ${h().toLocaleString()}`]),Ht("scroll",He,_e),u(ne,ue)};H(Dn,ne=>{r()==="requests"?ne(zn):ne(On,-1)})}Rn(Ue,ne=>O=ne,()=>O),M(()=>{Se=Ze(Ue,1,"logs-dock svelte-147la1m",null,Se,{embedded:d()}),de(Ue,"aria-label",r()==="logs"?"Multi-service logs":"Service requests"),ir=Na(Ue,"",ir,{height:d()?void 0:`${n(N)}px`,"--logs-height":`${n(N)}px`}),L(cs,r()==="logs"?"Logs":"Requests"),de(Mn,"aria-label",r()==="logs"?"Log source views":"Request source views"),vs=Ze(Ur,1,"tab svelte-147la1m",null,vs,{active:!n(se)}),de(Ur,"aria-pressed",!n(se)),L(fs,e.selectedKeys.length)}),Qe("click",Ur,()=>_(k,null)),u(t,Ue),Oe()}ar(["pointerdown","pointermove","pointerup","keydown","click"]);var W_=P('<span class="meta svelte-1hv280f">Unavailable</span>'),$_=P('<span class="meta svelte-1hv280f"> </span>'),K_=P('<a class="item project svelte-1hv280f"><span aria-hidden="true"></span> <span class="label svelte-1hv280f"> </span> <!></a>'),G_=P('<p class="empty svelte-1hv280f">Run <code>localdeck init</code> in a project to add it.</p>'),Y_=P('<nav class="projects svelte-1hv280f" aria-label="Your projects"><p class="heading svelte-1hv280f">Projects</p> <!></nav>'),J_=P(`<small class="svelte-1hv280f">Couldn't enable. Select to retry.</small>`),X_=P('<button class="notice svelte-1hv280f"><!><span class="label svelte-1hv280f"><strong class="svelte-1hv280f"> </strong><!></span></button>'),Q_=P("<!> <!> <!>",1),Z_=P('<div class="resizer svelte-1hv280f" role="separator" aria-label="Sidebar width" aria-orientation="vertical" tabindex="0"></div>'),ey=P('<aside aria-label="Main navigation"><div class="brand svelte-1hv280f"><span class="identity svelte-1hv280f"><img src="/localdeck-icon.png" alt="" width="28" height="28" class="svelte-1hv280f"/><span class="name svelte-1hv280f">LocalDeck</span></span> <!></div> <button class="search svelte-1hv280f" aria-label="Open command palette" aria-haspopup="dialog" aria-keyshortcuts="Meta+K Control+K"><!><span class="label svelte-1hv280f">Search</span><kbd class="svelte-1hv280f"> </kbd></button> <nav class="primary svelte-1hv280f" aria-label="Sections"><a href="/projects" class="item svelte-1hv280f" title="Projects"><!><span class="label svelte-1hv280f">Projects</span></a> <a href="/services" class="item svelte-1hv280f" title="All services"><!><span class="label svelte-1hv280f">All services</span></a></nav> <!> <div class="footer svelte-1hv280f"><!> <div class="status svelte-1hv280f"><span aria-hidden="true"></span> <span class="label svelte-1hv280f"><span class="state svelte-1hv280f"> </span><small class="svelte-1hv280f"> </small></span> <!></div></div> <!></aside>');function ty(t,e){ze(e,!0);let r=ve(e,"collapsed",15,!1),s=ve(e,"width",15,248),a=ve(e,"cleanUrls",3,null);const i=j(()=>e.route.page==="services"?"services":e.route.page==="projects"&&!e.route.projectId?"projects":"");function o(){r(!r()),e.onPersist()}function l(se){se.currentTarget.setPointerCapture(se.pointerId)}function c(se){se.currentTarget.hasPointerCapture(se.pointerId)&&s(Math.max(200,Math.min(400,se.clientX)))}function d(se){["ArrowLeft","ArrowRight","Home","End"].includes(se.key)&&(se.preventDefault(),s(se.key==="Home"?200:se.key==="End"?400:Math.max(200,Math.min(400,s()+(se.key==="ArrowRight"?16:-16)))),e.onPersist())}var h=ey();let p,f;var g=E(h),m=v(E(g),2);{let se=j(()=>r()?"Expand sidebar":"Collapse sidebar"),fe=j(()=>r()?Hf:Of),pe=j(()=>!r());ls(m,{get label(){return n(se)},get icon(){return n(fe)},get"aria-expanded"(){return n(pe)},onclick:o})}var b=v(g,2),k=E(b);Fs(k,{size:16,"aria-hidden":"true"});var y=v(k,2),S=V(y,!0),x=v(b,2),w=E(x),q=E(w);Ff(q,{size:16,"aria-hidden":"true"});var C=v(w,2),R=E(C);Bv(R,{size:16,"aria-hidden":"true"});var T=v(x,2);{var I=se=>{var fe=Y_(),pe=v(E(fe),2);Ae(pe,17,()=>e.projects,ge=>ge.id,(ge,De)=>{const Fe=j(()=>e.runningByProject[n(De).id]??0);var ke=K_(),Ee=E(ke);let ce;var _e=v(Ee,2),Ue=V(_e,!0),Se=v(_e,2);{var ir=Rt=>{var ur=W_();u(Rt,ur)},Xt=Rt=>{var ur=$_(),zr=V(ur,!0);M(()=>{de(ur,"aria-label",`${n(Fe)} running`),L(zr,n(Fe))}),u(Rt,ur)};H(Se,Rt=>{n(De).available?n(Fe)&&Rt(Xt,1):Rt(ir)})}M(Rt=>{de(ke,"href",Rt),de(ke,"aria-current",n(De).id===e.currentProjectId?"page":void 0),ce=Ze(Ee,1,"dot svelte-1hv280f",null,ce,{running:n(Fe)>0,unavailable:!n(De).available}),L(Ue,n(De).name)},[()=>`/projects/${encodeURIComponent(n(De).id)}`]),u(ge,ke)},ge=>{var De=G_();u(ge,De)}),u(se,fe)};H(T,se=>{r()||se(I)})}var O=v(T,2),$=E(O);{var F=se=>{var fe=X_(),pe=E(fe);fh(pe,{size:16,"aria-hidden":"true"});var ge=v(pe),De=E(ge),Fe=V(De,!0),ke=v(De);{var Ee=ce=>{var _e=J_();u(ce,_e)};H(ke,ce=>{a().error&&!a().busy&&ce(Ee)})}M(()=>{fe.disabled=a().busy,de(fe,"title",a().error||"Enable Clean URLs"),L(Fe,a().busy?"Enabling Clean URLs…":"Enable Clean URLs")}),Qe("click",fe,function(...ce){var _e;(_e=e.onEnableCleanUrls)==null||_e.apply(this,ce)}),u(se,fe)};H($,se=>{a()&&se(F)})}var K=v($,2),N=E(K);let A;var z=v(N,2),W=E(z),U=V(W,!0),Y=v(W),Z=V(Y),re=v(z,2);Ln(re,{iconOnly:!0,get icon(){return ol},ariaLabel:"App menu",placement:"top-end",size:"sm",children:(se,fe)=>{var pe=Q_(),ge=oe(pe);Ct(ge,{href:"/settings",get icon(){return ol},children:(ke,Ee)=>{var ce=ie("Settings");u(ke,ce)},$$slots:{default:!0}});var De=v(ge,2);Ct(De,{href:"/about",get icon(){return Sf},children:(ke,Ee)=>{var ce=ie("About");u(ke,ce)},$$slots:{default:!0}});var Fe=v(De,2);Ct(Fe,{href:"/changelog",get icon(){return Yf},children:(ke,Ee)=>{var ce=ie("Changelog");u(ke,ce)},$$slots:{default:!0}}),u(se,pe)},$$slots:{default:!0}});var te=v(O,2);{var me=se=>{var fe=Z_();de(fe,"aria-valuemin",200),de(fe,"aria-valuemax",400),M(()=>de(fe,"aria-valuenow",s())),Qe("pointerdown",fe,l),Qe("pointermove",fe,c),Qe("pointerup",fe,function(...pe){var ge;(ge=e.onPersist)==null||ge.apply(this,pe)}),Ht("lostpointercapture",fe,function(...pe){var ge;(ge=e.onPersist)==null||ge.apply(this,pe)}),Qe("keydown",fe,d),u(se,fe)};H(te,se=>{r()||se(me)})}M(()=>{p=Ze(h,1,"sidebar svelte-1hv280f",null,p,{collapsed:r()}),f=Na(h,"",f,{"--sidebar-width":`${s()}px`}),de(b,"title",`Search commands (${e.paletteShortcut})`),L(S,e.paletteShortcut),de(w,"aria-current",n(i)==="projects"?"page":void 0),de(C,"aria-current",n(i)==="services"?"page":void 0),A=Ze(N,1,"dot svelte-1hv280f",null,A,{running:e.connected}),L(U,e.connected?"Daemon connected":"Connecting to daemon"),L(Z,`${e.runningCount??""} running`)}),Qe("click",b,function(...se){var fe;(fe=e.onOpenPalette)==null||fe.apply(this,se)}),u(t,h),Oe()}ar(["click","pointerdown","pointermove","pointerup","keydown"]);var ry=P('<button aria-controls="logs-dock"><!> </button>'),ny=P('<div class="dock-bar svelte-1q69iub" role="toolbar" aria-label="Logs and requests panel"><!> <span class="running svelte-1q69iub"> </span> <button class="toggle svelte-1q69iub"><kbd class="svelte-1q69iub"> </kbd><!></button></div>');function sy(t,e){ze(e,!0);const r=[{id:"logs",label:"Logs",icon:rd},{id:"requests",label:"Requests",icon:Xc}];var s=ny(),a=E(s);Ae(a,17,()=>r,g=>g.id,(g,m)=>{const b=j(()=>e.open&&e.view===n(m).id);var k=ry();let y;var S=E(k);Tr(S,()=>n(m).icon,(w,q)=>{q(w,{size:14,"aria-hidden":"true"})});var x=v(S,1,!0);M(()=>{y=Ze(k,1,"tab svelte-1q69iub",null,y,{active:n(b)}),de(k,"aria-expanded",n(b)),L(x,n(m).label)}),Qe("click",k,()=>e.onToggle(n(m).id)),u(g,k)});var i=v(a,2),o=V(i),l=v(i,2),c=E(l),d=V(c,!0),h=v(c);{var p=g=>{Zc(g,{size:14,"aria-hidden":"true"})},f=g=>{Xv(g,{size:14,"aria-hidden":"true"})};H(h,g=>{e.open?g(p):g(f,-1)})}M(()=>{L(o,`${e.runningCount??""} running`),de(l,"aria-label",e.open?"Close panel":"Open panel"),de(l,"title",`${e.open?"Close":"Open"} panel (${e.shortcut})`),L(d,e.shortcut)}),Qe("click",l,()=>e.onToggle(e.view)),u(t,s),Oe()}ar(["click"]);var ay=P(" <!>",1),iy=P('<div class="ui-menu-label">Worktrees</div> <!> <div class="ui-menu-separator" role="separator"></div> <!>',1);function oy(t,e){ze(e,!0);let r=G(tt([])),s=G(!1),a=G(!1),i=G(!1),o=G(0);const l=j(()=>e.projectId);xt(()=>{const b=n(l);n(o);const k=new AbortController;return _(s,!1),(async()=>{try{const y=await fetch(`/api/projects/${encodeURIComponent(b)}/environments`,{signal:k.signal}),S=await y.json();if(!y.ok)throw new Error(S.error??"Couldn't list worktrees.");_(r,S.environments??[],!0),_(a,!n(r).length)}catch(y){if(k.signal.aborted)return;_(r,[],!0),_(a,!0),n(o)&&Te.error(_t(y))}finally{k.signal.aborted||_(s,!0)}})(),()=>k.abort()});const c=j(()=>n(r).find(b=>b.current)),d=b=>{var k;return b.branch??(b.detached?`Detached ${((k=b.head)==null?void 0:k.slice(0,8))??"HEAD"}`:"Unnamed branch")},h=b=>[b.current?"Current":b.registered?"Registered":"Not registered",b.available?b.runningCount?`${b.runningCount} running`:"":"Unavailable",b.directory].filter(Boolean).join(" · ");async function p(b){if(!(n(i)||b.current||!b.available)){_(i,!0);try{if(b.registered&&b.projectId){await e.onSelect(b.projectId);return}const k=await fetch(`/api/projects/${encodeURIComponent(e.projectId)}/environments/${encodeURIComponent(b.id)}/register`,{method:"POST"}),y=await k.json();if(!k.ok)throw new Error(y.error??"Couldn't register the worktree.");const S=y.project??y;await e.onSelect(S.id),Te.success(`Registered ${d(b)}`)}catch(k){Te.error(_t(k))}finally{_(i,!1)}}}var f=Me(),g=oe(f);{var m=b=>{{let k=j(()=>n(i)?"Switching…":n(c)?d(n(c)):"Choose worktree"),y=j(()=>`Environment: ${n(c)?d(n(c)):"none"}`);Ln(b,{variant:"field",size:"sm",get icon(){return sl},get label(){return n(k)},get ariaLabel(){return n(y)},width:"340px",children:(S,x)=>{var w=iy(),q=v(oe(w),2);Ae(q,17,()=>n(r),R=>R.id,(R,T)=>{{let I=j(()=>n(T).current?Mr:sl),O=j(()=>h(n(T))),$=j(()=>!n(T).available||n(i));Ct(R,{get icon(){return n(I)},get description(){return n(O)},get disabled(){return n($)},onselect:()=>p(n(T)),children:(F,K)=>{var N=ay(),A=oe(N,!0),z=v(A);{var W=U=>{var Y=ie("— register and switch");u(U,Y)};H(z,U=>{!n(T).registered&&!n(T).current&&U(W)})}M(U=>L(A,U),[()=>d(n(T))]),u(F,N)},$$slots:{default:!0}})}});var C=v(q,4);Ct(C,{get icon(){return Ao},onselect:()=>gc(o),children:(R,T)=>{var I=ie("Refresh worktrees");u(R,I)},$$slots:{default:!0}}),u(S,w)},$$slots:{default:!0}})}};H(g,b=>{n(s)&&!n(a)&&b(m)})}u(t,f),Oe()}function ly(t,e){const r=e.filter(i=>i.status!=="stopped"),s=e.filter(i=>i.readinessStatus==="failed"||i.lastError).length,a=r.length;return t.available?s?{tone:"failed",label:"Needs attention",running:a,failed:s}:a?r.some(i=>!i.upstreamReady||i.status==="starting")?{tone:"starting",label:"Starting",running:a,failed:s}:{tone:"ready",label:"Running",running:a,failed:s}:{tone:"stopped",label:"Stopped",running:a,failed:s}:{tone:"failed",label:"Unavailable",running:a,failed:s}}function cy(t,e){return e.filter(r=>{var s;return r.projectId===t.id&&r.status!=="stopped"&&r.configFingerprint&&((s=t.fingerprints)==null?void 0:s[r.name])&&r.configFingerprint!==t.fingerprints[r.name]}).map(r=>r.name)}var dy=P('<p class="note warn svelte-18zct7p"> </p>'),uy=P('<p class="note error svelte-18zct7p"> </p>'),vy=P('<div class="ui-menu-separator" role="separator"></div> <!>',1),fy=P('<div class="ui-menu-label">Profiles · only on this computer</div> <!> <!> <!> <!>',1);function hy(t,e){ze(e,!0);let r=G(!1);const s=j(()=>e.project.profiles??[]),a=j(()=>e.project.activeProfiles??[]),i=j(()=>n(a).length?n(a).join(" + "):"None · base services");async function o(h){if(!n(r)){_(r,!0);try{const p=await fetch(`/api/projects/${encodeURIComponent(e.project.id)}/profiles/active`,{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({profiles:h})}),f=await p.json().catch(()=>({}));if(!p.ok)throw new Error(f.error??"Couldn't switch profiles.");const g=await e.onChanged(),m=cy(g,e.services);m.length&&Te.success(`${m.join(", ")} ${m.length===1?"needs":"need"} a restart to apply`)}catch(p){Te.error(_t(p))}finally{_(r,!1)}}}var l=Me(),c=oe(l);{var d=h=>{{let p=j(()=>`Profiles: ${n(i)}`);Ln(h,{variant:"field",size:"sm",get icon(){return ed},get label(){return n(i)},get ariaLabel(){return n(p)},closeOnSelect:!1,width:"320px",children:(f,g)=>{var m=fy(),b=v(oe(m),2);Ae(b,17,()=>n(s),q=>q.name,(q,C)=>{{let R=j(()=>[n(C).description,n(C).services.length?`Changes ${n(C).services.join(", ")}`:"Changes no services"].filter(Boolean).join(" · "));Ct(q,{get checked(){return n(C).active},get disabled(){return n(r)},get description(){return n(R)},onselect:()=>o(n(C).active?n(a).filter(T=>T!==n(C).name):[...n(a),n(C).name]),children:(T,I)=>{var O=ie();M(()=>L(O,n(C).name)),u(T,O)},$$slots:{default:!0}})}});var k=v(b,2);Ae(k,17,()=>e.project.profileClashes??[],kt,(q,C)=>{var R=dy(),T=V(R);M(I=>L(T,`${I??""} both set ${n(C).service??""} ${n(C).field??""}. ${n(C).winner??""} wins because it's listed later.`),[()=>n(C).profiles.join(" and ")]),u(q,R)});var y=v(k,2);{var S=q=>{var C=uy(),R=V(C,!0);M(()=>L(R,e.project.profileError)),u(q,C)};H(y,q=>{e.project.profileError&&q(S)})}var x=v(y,2);{var w=q=>{var C=vy(),R=v(oe(C),2);Ct(R,{get icon(){return ss},get disabled(){return n(r)},onselect:()=>o([]),children:(T,I)=>{var O=ie("Turn all off");u(T,O)},$$slots:{default:!0}}),u(q,C)};H(x,q=>{n(a).length&&q(w)})}u(f,m)},$$slots:{default:!0}})}};H(c,h=>{n(s).length&&h(d)})}u(t,l),Oe()}var gy=P("<!><!>",1),py=P('<div class="actions svelte-1vbbhsz"><!> <!> <!></div>'),my=P('<div class="project-header svelte-1vbbhsz"><!> <div class="bar svelte-1vbbhsz"><!> <!></div></div>');function _y(t,e){ze(e,!0);const r=j(()=>e.services.filter(b=>b.projectId===e.project.id)),s=j(()=>ly(e.project,n(r))),a=j(()=>e.project.commands.filter(b=>!n(r).some(k=>k.name===b.name&&k.status!=="stopped")).length),i=j(()=>[...e.pending].some(b=>b.startsWith(`project:${e.project.id}:start`))),o=j(()=>[...e.pending].some(b=>b.startsWith(`project:${e.project.id}:stop`))),l=j(()=>yp.map(b=>({id:b.id,label:b.label,href:Cn({page:"projects",projectId:e.project.id,...b.id==="overview"?{}:{section:b.id}})})));async function c(b){try{const k=await(b==="start"?e.onStartAll():e.onStopAll()),y=k.results.filter(S=>!S.ok);y.length&&Te.error(`${k.results.length-y.length} of ${k.results.length} ${b==="start"?"started":"stopped"} · ${y.map(S=>`${S.name}: ${S.error??"failed"}`).join("; ")}`)}catch(k){Te.error(_t(k))}}var d=my(),h=E(d);ia(h,{get title(){return e.project.name},status:S=>{Tn(S,{get tone(){return n(s).tone},children:(x,w)=>{var q=ie();M(()=>L(q,n(s).label)),u(x,q)},$$slots:{default:!0}})},meta:S=>{var x=Me(),w=oe(x);Ae(w,17,()=>e.project.activeProfiles??[],kt,(q,C)=>{Oo(q,{children:(R,T)=>{var I=ie();M(()=>L(I,n(C))),u(R,I)},$$slots:{default:!0}})}),u(S,x)},context:S=>{var x=Me(),w=oe(x);{var q=C=>{var R=gy(),T=oe(R);oy(T,{get projectId(){return e.project.id},get onSelect(){return e.onEnvironmentSelect}});var I=v(T);hy(I,{get project(){return e.project},get services(){return e.services},get onChanged(){return e.onProfilesChanged}}),u(C,R)};H(w,C=>{e.project.available&&C(q)})}u(S,x)},$$slots:{status:!0,meta:!0,context:!0}});var p=v(h,2),f=E(p);zo(f,{label:"Project sections",get current(){return e.section},get items(){return n(l)}});var g=v(f,2);{var m=b=>{var k=py(),y=E(k);{var S=R=>{we(R,{get icon(){return To},get loading(){return n(o)},get disabled(){return n(i)},onclick:()=>c("stop"),children:(T,I)=>{var O=ie("Stop project");u(T,O)},$$slots:{default:!0}})};H(y,R=>{n(s).running>0&&R(S)})}var x=v(y,2);{var w=R=>{{let T=j(()=>e.appUrl?"secondary":"primary");we(R,{get icon(){return Bs},get variant(){return n(T)},get loading(){return n(i)},get disabled(){return n(o)},onclick:()=>c("start"),children:(I,O)=>{var $=ie();M(()=>L($,n(s).running?"Start remaining":"Start project")),u(I,$)},$$slots:{default:!0}})}};H(x,R=>{n(a)>0&&R(w)})}var q=v(x,2);{var C=R=>{we(R,{variant:"primary",get href(){return e.appUrl},target:"_blank",get trailingIcon(){return pi},children:(T,I)=>{var O=ie("Open app");u(T,O)},$$slots:{default:!0}})};H(q,R=>{e.appUrl&&R(C)})}u(b,k)};H(g,b=>{e.project.available&&b(m)})}u(t,d),Oe()}var yy=P('<p class="note svelte-1gn57ev">Command readiness is edited in .localdeck.</p>'),Ll=P("<!> <!>",1),by=P('<p class="note svelte-1gn57ev">No other services are configured.</p>'),wy=P('<form class="config svelte-1gn57ev"><div class="grid svelte-1gn57ev"><!> <!> <!> <!> <!></div> <fieldset class="svelte-1gn57ev"><legend class="svelte-1gn57ev">Starts after</legend> <!></fieldset> <div><!></div></form>');function ky(t,e){ze(e,!0);function r(){return{port:e.command.port===void 0?"":String(e.command.port),upstream:e.command.upstream===void 0?"":String(e.command.upstream),type:e.command.ready.type,path:e.command.ready.type==="http"?e.command.ready.path:"/",status:e.command.ready.type==="http"&&e.command.ready.status?String(e.command.ready.status):"",timeout:String(e.command.ready.timeoutMs),interval:String(e.command.ready.intervalMs),after:[...e.command.after]}}let s=tt(r()),a=G(!1);const i=j(()=>e.project.commands.filter(C=>C.name!==e.command.name)),o=C=>C.trim()===""?null:Number(C);async function l(C){C.preventDefault(),_(a,!0),await cp({success:"Saved · applies on the next start",run:async()=>{const R=await fetch(`/api/projects/${encodeURIComponent(e.project.id)}/services/${encodeURIComponent(e.command.name)}/config`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify({port:o(s.port),upstream:o(s.upstream),after:s.after,...s.type==="command"?{}:{ready:{type:s.type,timeoutMs:Number(s.timeout),intervalMs:Number(s.interval),...s.type==="http"?{path:s.path,...s.status?{status:Number(s.status)}:{}}:{}}}})}),T=await R.json();if(!R.ok)throw new Error(T.error??"Couldn't save the configuration.");await e.onSaved()}}),_(a,!1)}function c(C,R){s.after=R?[...s.after,C]:s.after.filter(T=>T!==C)}var d=wy(),h=E(d),p=E(h);tr(p,{label:"Public port",hint:"Leave empty to pick one automatically.",children:(R,T)=>{let I=()=>(T==null?void 0:T()).id,O=()=>(T==null?void 0:T()).describedby;It(R,{get id(){return I()},get"aria-describedby"(){return O()},mono:!0,inputmode:"numeric",placeholder:"Automatic",get value(){return s.port},set value($){s.port=$}})},$$slots:{default:!0}});var f=v(p,2);tr(f,{label:"Upstream port",hint:"Only for tools whose port LocalDeck can't detect.",children:(R,T)=>{let I=()=>(T==null?void 0:T()).id,O=()=>(T==null?void 0:T()).describedby;It(R,{get id(){return I()},get"aria-describedby"(){return O()},mono:!0,inputmode:"numeric",placeholder:"Automatic",get value(){return s.upstream},set value($){s.upstream=$}})},$$slots:{default:!0}});var g=v(f,2);tr(g,{label:"Readiness",children:R=>{var T=Me(),I=oe(T);{var O=F=>{var K=yy();u(F,K)},$=F=>{pd(F,{ariaLabel:"Readiness",options:[{value:"tcp",label:"TCP connection"},{value:"http",label:"HTTP check"}],get value(){return s.type},set value(K){s.type=K}})};H(I,F=>{s.type==="command"?F(O):F($,-1)})}u(R,T)},$$slots:{default:!0}});var m=v(g,2);{var b=C=>{var R=Ll(),T=oe(R);tr(T,{label:"Health path",children:($,F)=>{let K=()=>(F==null?void 0:F()).id;It($,{get id(){return K()},mono:!0,get value(){return s.path},set value(N){s.path=N}})},$$slots:{default:!0}});var I=v(T,2);tr(I,{label:"Expected status",hint:"Any 2xx or 3xx when empty.",children:($,F)=>{let K=()=>(F==null?void 0:F()).id,N=()=>(F==null?void 0:F()).describedby;It($,{get id(){return K()},get"aria-describedby"(){return N()},mono:!0,inputmode:"numeric",get value(){return s.status},set value(A){s.status=A}})},$$slots:{default:!0}}),u(C,R)};H(m,C=>{s.type==="http"&&C(b)})}var k=v(m,2);{var y=C=>{var R=Ll(),T=oe(R);tr(T,{label:"Timeout (ms)",children:($,F)=>{let K=()=>(F==null?void 0:F()).id;It($,{get id(){return K()},mono:!0,inputmode:"numeric",get value(){return s.timeout},set value(N){s.timeout=N}})},$$slots:{default:!0}});var I=v(T,2);tr(I,{label:"Check interval (ms)",children:($,F)=>{let K=()=>(F==null?void 0:F()).id;It($,{get id(){return K()},mono:!0,inputmode:"numeric",get value(){return s.interval},set value(N){s.interval=N}})},$$slots:{default:!0}}),u(C,R)};H(k,C=>{s.type!=="command"&&C(y)})}var S=v(h,2),x=v(E(S),2);Ae(x,17,()=>n(i),C=>C.name,(C,R)=>{{let T=j(()=>s.after.includes(n(R).name)),I=j(()=>`${e.command.name} starts after ${n(R).name}`);sd(C,{get checked(){return n(T)},get"aria-label"(){return n(I)},onchange:O=>c(n(R).name,O.currentTarget.checked),children:(O,$)=>{var F=ie();M(()=>L(F,n(R).name)),u(O,F)},$$slots:{default:!0}})}},C=>{var R=by();u(C,R)});var w=v(S,2),q=E(w);we(q,{variant:"primary",type:"submit",get loading(){return n(a)},children:(C,R)=>{var T=ie("Save configuration");u(C,T)},$$slots:{default:!0}}),Ht("submit",d,l),u(t,d),Oe()}var Al=P('<span class="source svelte-17nz8id"> </span>'),xy=P('<p class="command svelte-17nz8id"> <!></p>'),Sy=P('<tr><td class="mono svelte-17nz8id"> </td><td class="mono svelte-17nz8id"> </td><td> </td></tr>'),jy=P('<tr><td class="mono svelte-17nz8id"> </td><td class="muted svelte-17nz8id">Secret · value hidden</td><td> </td></tr>'),Py=P('<table class="svelte-17nz8id"><thead><tr><th class="svelte-17nz8id">Variable</th><th class="svelte-17nz8id">Value</th><th class="svelte-17nz8id">From</th></tr></thead><tbody><!><!></tbody></table>'),Cy=P('<p class="note svelte-17nz8id"> <code>.localdeck</code>.</p>'),Ey=P('<section class="resolved svelte-17nz8id"><h2 class="svelte-17nz8id">What it will run<!></h2> <p class="command svelte-17nz8id"> <!></p> <!> <!> <!></section>');function Ry(t,e){ze(e,!0);const r=j(()=>{var w;return(w=e.project.provenance)==null?void 0:w[e.command.name]}),s=j(()=>e.project.activeProfiles??[]),a=j(()=>(e.project.profiles??[]).filter(w=>w.active&&w.services.includes(e.command.name)).map(w=>w.name));var i=Ey(),o=E(i),l=v(E(o));{var c=w=>{var q=ie();M(C=>L(q,C),[()=>` · ${n(s).join(" + ")}`]),u(w,q)};H(l,w=>{n(s).length&&w(c)})}var d=v(o,2),h=E(d),p=v(h);{var f=w=>{var q=Al(),C=V(q,!0);M(()=>L(C,n(r).run)),u(w,q)};H(p,w=>{n(r)&&n(r).run!=="base"&&w(f)})}var g=v(d,2);{var m=w=>{var q=xy(),C=E(q),R=v(C);{var T=I=>{var O=Al(),$=V(O,!0);M(()=>L($,n(r).cwd)),u(I,O)};H(R,I=>{n(r)&&n(r).cwd!=="base"&&I(T)})}M(()=>L(C,`in ${e.command.cwd??""}`)),u(w,q)};H(g,w=>{e.command.cwd&&w(m)})}var b=v(g,2);{var k=w=>{var q=Py(),C=v(E(q)),R=E(C);Ae(R,17,()=>Object.entries(e.command.env??{}),([I,O])=>I,(I,O)=>{var $=j(()=>fi(n(O),2));let F=()=>n($)[0],K=()=>n($)[1];var N=Sy(),A=E(N),z=V(A,!0),W=v(A),U=V(W,!0),Y=v(W);let Z;var re=V(Y,!0);M(()=>{var te,me;L(z,F()),L(U,K()),Z=Ze(Y,1,"svelte-17nz8id",null,Z,{"from-profile":((te=n(r))==null?void 0:te.env[F()])&&n(r).env[F()]!=="base"}),L(re,((me=n(r))==null?void 0:me.env[F()])??"base")}),u(I,N)});var T=v(R);Ae(T,16,()=>e.command.secrets??[],I=>I,(I,O)=>{var $=jy(),F=E($),K=V(F,!0),N=v(F,2);let A;var z=V(N,!0);M(()=>{var W,U;L(K,O),A=Ze(N,1,"svelte-17nz8id",null,A,{"from-profile":((W=n(r))==null?void 0:W.secrets[O])&&n(r).secrets[O]!=="base"}),L(z,((U=n(r))==null?void 0:U.secrets[O])??"base")}),u(I,$)}),u(w,q)},y=j(()=>{var w;return Object.keys(e.command.env??{}).length||((w=e.command.secrets)==null?void 0:w.length)});H(b,w=>{n(y)&&w(k)})}var S=v(b,2);{var x=w=>{var q=Cy(),C=E(q);M(R=>L(C,`Changed by ${R??""}. The settings below edit the base service in `),[()=>n(a).join(" + ")]),u(w,q)};H(S,w=>{n(a).length&&w(x)})}M(()=>{de(i,"aria-label",`What ${e.command.name} will run`),L(h,`$ ${e.command.run??""}`)}),u(t,i),Oe()}var qy=P('<a class="address svelte-jhkj23" target="_blank" rel="noreferrer"> </a>'),Ly=P("<!> <!>",1),Ay=P("<!> <!> <!> <!> <!>",1),Ty=P('<p class="terminal-note svelte-jhkj23">Started from a terminal. Restart it there: press Ctrl-C, then run the command again.</p>'),Ny=P('<p class="notice svelte-jhkj23"> </p>'),Iy=P('<!> <section class="editor svelte-jhkj23"><!></section>',1),My=P('<section class="service-page page-shell svelte-jhkj23"><!> <!> <!> <!> <!> <!> <div class="panel svelte-jhkj23"><!></div></section>');function Dy(t,e){ze(e,!0);let r=ve(e,"historyBoundaries",19,()=>({}));const s=j(()=>`${e.projectId}:${e.serviceName}`),a=j(()=>e.services.find(N=>N.key===n(s))),i=j(()=>{var N;return(N=e.project)==null?void 0:N.commands.find(A=>A.name===e.serviceName)}),o=j(()=>!n(a)||n(a).status==="stopped"),l=j(()=>ki(n(a))),c=j(()=>{var N;return e.errors[n(s)]??((N=n(a))==null?void 0:N.lastError)}),d=j(()=>{var N,A,z;return yd(n(a),(A=(N=e.project)==null?void 0:N.fingerprints)==null?void 0:A[e.serviceName],((z=e.project)==null?void 0:z.activeProfiles)??[])}),h=j(()=>n(c)?"failed":n(o)?"stopped":n(l)==="ready"||n(l)==="listening"?"ready":"starting"),p=N=>e.pending.has(`service:${e.projectId}:${e.serviceName}:${N}`),f=j(()=>bp.map(N=>({...N,href:Cn({page:"service",projectId:e.projectId,serviceName:e.serviceName,tab:N.id})}))),g=j(()=>{var N,A;return[{key:n(s),name:e.serviceName,projectName:((N=n(a))==null?void 0:N.projectName)??((A=e.project)==null?void 0:A.name)??e.projectId}]});xt(()=>{n(a)&&e.tab!=="config"&&e.onLoad(n(s)).catch(()=>{})});var m=My(),b=E(m);{const N=U=>{Tn(U,{get tone(){return n(h)},children:(Y,Z)=>{var re=ie();M(te=>L(re,te),[()=>n(c)?"Needs attention":_d(n(a))]),u(Y,re)},$$slots:{default:!0}})},A=U=>{var Y=Ly(),Z=oe(Y);{var re=se=>{var fe=qy(),pe=V(fe,!0);M(()=>{de(fe,"href",n(a).urls[0]),L(pe,n(a).urls[0])}),u(se,fe)},te=j(()=>{var se;return((se=n(a))==null?void 0:se.urls[0])&&!Dr(n(a))});H(Z,se=>{n(te)&&se(re)})}var me=v(Z,2);Rd(me,{get service(){return n(a)}}),u(U,Y)},z=U=>{var Y=Ay(),Z=oe(Y);{var re=ke=>{we(ke,{get href(){return n(a).urls[0]},target:"_blank",get trailingIcon(){return pi},children:(Ee,ce)=>{var _e=ie("Open");u(Ee,_e)},$$slots:{default:!0}})},te=j(()=>{var ke;return((ke=n(a))==null?void 0:ke.urls[0])&&!n(o)&&n(a).upstreamReady&&!Dr(n(a))});H(Z,ke=>{n(te)&&ke(re)})}var me=v(Z,2);{var se=ke=>{{let Ee=j(()=>p("start")),ce=j(()=>`Start ${e.serviceName}`);we(ke,{variant:"primary",get icon(){return Bs},get loading(){return n(Ee)},get"aria-label"(){return n(ce)},get onclick(){return e.onStart},children:(_e,Ue)=>{var Se=ie("Start");u(_e,Se)},$$slots:{default:!0}})}};H(me,ke=>{n(o)&&n(i)&&ke(se)})}var fe=v(me,2);{var pe=ke=>{{let Ee=j(()=>p("restart")),ce=j(()=>`Restart ${e.serviceName}`);we(ke,{get icon(){return ni},get loading(){return n(Ee)},get"aria-label"(){return n(ce)},get onclick(){return e.onRestart},children:(_e,Ue)=>{var Se=ie("Restart");u(_e,Se)},$$slots:{default:!0}})}};H(fe,ke=>{var Ee;!n(o)&&((Ee=n(a))==null?void 0:Ee.managedBy)!=="terminal"&&n(i)&&ke(pe)})}var ge=v(fe,2);{var De=ke=>{{let Ee=j(()=>{var _e;return p("stop")||((_e=n(a))==null?void 0:_e.status)==="stopping"}),ce=j(()=>`Stop ${e.serviceName}`);we(ke,{get icon(){return To},get loading(){return n(Ee)},get"aria-label"(){return n(ce)},get onclick(){return e.onStop},children:(_e,Ue)=>{var Se=ie("Stop");u(_e,Se)},$$slots:{default:!0}})}};H(ge,ke=>{n(o)||ke(De)})}var Fe=v(ge,2);{let ke=j(()=>!!n(i)),Ee=j(()=>{var _e;return(_e=n(a))==null?void 0:_e.urls[0]}),ce=j(()=>e.pending.has(`service:${n(s)}:share`));Cd(Fe,{get projectId(){return e.projectId},get name(){return e.serviceName},get runtime(){return n(a)},get configured(){return n(ke)},get address(){return n(Ee)},get busy(){return n(ce)},get onShare(){return e.onShare},get onUnshare(){return e.onUnshare}})}u(U,Y)};let W=j(()=>{var U,Y;return((U=e.project)==null?void 0:U.name)??((Y=n(a))==null?void 0:Y.projectName)??e.projectId});ia(b,{get title(){return e.serviceName},get eyebrow(){return n(W)},status:N,meta:A,actions:z,$$slots:{status:!0,meta:!0,actions:!0}})}var k=v(b,2);{var y=N=>{{let A=j(()=>{var re;return n(o)||(re=n(a).share)==null?void 0:re.url}),z=j(()=>{var re;return((re=n(a).share)==null?void 0:re.protected)??!1}),W=j(()=>{var re;return e.pending.has(`service:${n(s)}:share`)||((re=n(a).shareStartup)==null?void 0:re.status)==="starting"}),U=j(()=>{var re;return((re=n(a).shareStartup)==null?void 0:re.status)==="starting"?n(a).shareStartup.url:void 0}),Y=j(()=>{var re;return((re=n(a).shareStartup)==null?void 0:re.status)==="starting"?n(a).shareStartup.startedAt:void 0}),Z=j(()=>{var re;return((re=n(a).shareStartup)==null?void 0:re.status)==="failed"?n(a).shareStartup.error:e.shareErrors[n(s)]??""});Ed(N,{get name(){return e.serviceName},get serviceKey(){return n(a).key},get url(){return n(A)},get protectedShare(){return n(z)},get pending(){return n(W)},get pendingUrl(){return n(U)},get startedAt(){return n(Y)},get error(){return n(Z)}})}};H(k,N=>{n(a)&&N(y)})}var S=v(k,2);{var x=N=>{var A=Ty();u(N,A)};H(S,N=>{var A;((A=n(a))==null?void 0:A.managedBy)==="terminal"&&!n(o)&&N(x)})}var w=v(S,2);{var q=N=>{var A=Ny(),z=V(A,!0);M(()=>L(z,n(d))),u(N,A)};H(w,N=>{n(d)&&N(q)})}var C=v(w,2);{var R=N=>{qd(N,{get message(){return n(c)}})};H(C,N=>{n(c)&&N(R)})}var T=v(C,2);zo(T,{label:"Service sections",get current(){return e.tab},get items(){return n(f)}});var I=v(T,2),O=E(I);{var $=N=>{var A=Me(),z=oe(A);{var W=Y=>{var Z=Iy(),re=oe(Z);Ry(re,{get project(){return e.project},get command(){return n(i)}});var te=v(re,2),me=E(te);ky(me,{get project(){return e.project},get command(){return n(i)},get onSaved(){return e.onSaved}}),M(()=>de(te,"aria-label",`Configure ${e.serviceName}`)),u(Y,Z)},U=Y=>{{let Z=j(()=>`${e.serviceName} isn't in a project file, so there is nothing to configure. Add it to .localdeck to manage it here.`);_r(Y,{get icon(){return hf},title:"No configuration",get body(){return n(Z)}})}};H(z,Y=>{e.project&&n(i)?Y(W):Y(U,-1)})}u(N,A)},F=N=>{var A=Me(),z=oe(A);Wr(z,()=>e.tab,W=>{{let U=j(()=>[n(s)]);Ld(W,{embedded:!0,get view(){return e.tab},get sources(){return n(g)},get selectedKeys(){return n(U)},get logs(){return e.logs},get requests(){return e.requests},get services(){return e.services},get historyBoundaries(){return r()},get limit(){return e.logLimit},get requestedSource(){return n(s)},onSelectionChange:()=>{},onClose:()=>{},get onClear(){return e.onClear}})}}),u(N,A)},K=N=>{{let A=j(()=>`Start ${e.serviceName} to see its ${e.tab}.`);_r(N,{title:"Not running yet",get body(){return n(A)}})}};H(O,N=>{e.tab==="config"?N($):n(a)?N(F,1):N(K,-1)})}u(t,m),Oe()}const Ka=t=>t instanceof Error?t.message:String(t);function zy(t,e){return{async selectService(r){const s=t.services.find(i=>i.key===r);t.selected=r;const a=[t.load(r).catch(()=>{})];s&&t.projects.some(i=>i.id===s.projectId)&&!t.projectDetails[s.projectId]&&a.push(t.selectProject(s.projectId).catch(()=>{})),await Promise.all(a)},stopService(r){if(t.projects.some(c=>c.id===r.projectId))return t.stopService(r.projectId,r.name);const s=`service:${r.projectId}:${r.name}:stop`,a=e.pending[s];if(a)return a;delete e.errors[r.key];let i;try{i=t.stop(r.key)}catch(c){i=Promise.reject(c)}const o=i.catch(c=>{throw e.errors[r.key]=Ka(c),c});e.pending[s]=o;const l=()=>{e.pending[s]===o&&delete e.pending[s]};return o.then(l,l),o}}}var Oy=P('<div class="catalog-error svelte-1n46o8q" role="alert"><span> </span> <!></div>'),Uy=P('<div class="page-shell project-top svelte-1n46o8q"><!></div>'),Hy=P('<section class="page-shell"><!></section>'),By=P('<span class="row-icon svelte-1n46o8q"><!></span>'),Fy=P('<p class="muted svelte-1n46o8q" aria-live="polite">Loading projects…</p>'),Vy=P('<section class="page-shell stack svelte-1n46o8q"><!> <!></section>'),Tl=P('<p class="error svelte-1n46o8q" role="alert"> </p>'),Wy=P(`<section class="page-shell stack settings-page svelte-1n46o8q"><!> <section class="block svelte-1n46o8q"><h2 class="svelte-1n46o8q">Logs</h2><!><!></section> <section class="block svelte-1n46o8q"><h2 class="svelte-1n46o8q">Clean URLs</h2> <p class="muted svelte-1n46o8q">LocalDeck sets this up when you start your project. Turn it on here to retry; Windows or macOS may ask for administrator approval once.</p> <!> <p class="muted svelte-1n46o8q" aria-live="polite"> </p> <!> <p class="muted svelte-1n46o8q">Turning this off only changes this browser's links. Installed Windows and macOS forwarding rules survive reboots. The daemon must still be running to serve your apps. Windows forwarding requires the IP Helper service. Built-in forwarding runs with the daemon. Your projects run as your normal user.</p> <div><!></div></section> <section class="block svelte-1n46o8q"><!></section></section>`),$y=P('<p class="error inline svelte-1n46o8q" role="alert"> <!></p>'),Ky=P('<section class="all-services page-shell stack svelte-1n46o8q" aria-labelledby="page-title"><!> <div class="search svelte-1n46o8q"><!></div> <div class="all-service-grid"><!></div> <!></section>'),Gy=P('<section class="checks-page page-shell"><!></section>'),Yy=P('<section class="secrets-page page-shell" aria-label="Project secrets"><!></section>'),Jy=P('<section class="page-shell" role="alert"><!></section>'),Nl=P('<section class="page-shell" aria-live="polite"><!></section>'),Xy=P('<div class="logs-slot svelte-1n46o8q" id="logs-dock"><!></div>'),Qy=P('<!> <div><!> <div class="workspace svelte-1n46o8q"><main tabindex="-1" class="svelte-1n46o8q"><!> <!> <!></main> <!> <!></div></div> <!> <!>',1);function Zy(t,e){var $e;ze(e,!0);let r=ve(e,"deck",7,zp),a=tt(e.fallbackActions??{pending:{},errors:{}}),o=G(tt(uo(e.initialPath??(typeof window>"u"?"/projects":window.location.pathname))));const l=j(()=>n(o).page==="projects"&&n(o).projectId?n(o).section?`project-${n(o).section}`:"overview":n(o).page),c=j(()=>n(o).page==="projects"||n(o).page==="service"?n(o).projectId:void 0),d=j(()=>n(o).page==="service"?`${n(o).projectId}:${n(o).serviceName}`:void 0);let h=G(tt([])),p=G(!1),g=G(tt(r().connected)),m=G(!1),b=G(!1),k=G(248),y=G(tt(typeof window>"u"?"":Oi(window.location.search)));const S=new Tp;let x=G(void 0),w=typeof window>"u"?Ui():(($e=window.history.state)==null?void 0:$e.entry)??Ui(),q=G(tt(kd())),C=G("");function R(B){var X,ee;_(q,B,!0),_(C,"");try{localStorage.setItem(wd,String(B))}catch{_(C,"The limit applies now, but this browser could not save it.")}(ee=(X=r()).setLogLimit)==null||ee.call(X,B).catch(()=>{_(C,"Limit updated. Some older logs could not be loaded; reopen Logs to retry.")})}function T(){try{localStorage.setItem("localdeck-sidebar",JSON.stringify({width:n(k),collapsed:n(b)}))}catch{}}async function I(){await Promise.all(r().projects.map(B=>{var X,ee;return(ee=(X=r()).loadProjectDetails)==null?void 0:ee.call(X,B.id).catch(()=>{})}))}let O=G(""),$=0,F=G(!1),K=G(!1),N=G(!1),A=G(""),z=0,W=!1;const U=j(()=>r().services.map(B=>({...B,urls:B.urls.map(X=>Np(X,n(F)))}))),Y=j(()=>[...r().projects.flatMap(B=>yl(r().projectDetails[B.id],n(U),B.id)),...yl(void 0,n(U).filter(B=>!r().projects.some(X=>X.id===B.projectId)))]),Z=j(()=>n(Y).filter(B=>{var X,ee;return`${B.name} ${((X=B.runtime)==null?void 0:X.projectName)??((ee=r().projects.find(ae=>B.key.startsWith(`${ae.id}:`)))==null?void 0:ee.name)??""}`.toLowerCase().includes(n(y).toLowerCase())})),re=j(()=>zy(r(),a)),te=j(()=>new Set([...Object.keys(r().pendingActions),...Object.keys(a.pending)])),me=j(()=>Sp(r().projects,n(Y),n(te),r().connected));let se=G(!1),fe=G(!1),pe=G(""),ge=G("Ctrl+K"),De=G("Ctrl+J");async function Fe(){n(se)||(_(se,!0),await ke())}async function ke(){if(!n(fe)){_(fe,!0),_(pe,"");try{(await Promise.allSettled(r().projects.map(X=>{var ee,ae;return(ae=(ee=r()).loadProjectDetails)==null?void 0:ae.call(ee,X.id)}))).some(X=>X.status==="rejected")&&_(pe,"Some services could not be loaded. Results may be incomplete.")}finally{_(fe,!1)}}}function Ee(B){if(_l(B,"k")){if(!n(se)&&document.querySelector("dialog[open]"))return;B.preventDefault(),n(se)?_(se,!1):Fe()}else _l(B,"j")&&(B.preventDefault(),fs(n(jr)))}function ce(B){const X=n(me).find(xe=>xe.id===B.id);if(!X||X.disabled)throw new Error("This command is no longer available.");const ee=X.action;if(ee.type==="navigate")return Sr(ee.route);if(ee.type==="open"){window.open(ee.url,"_blank","noopener,noreferrer");return}if(ee.type==="logs"||ee.type==="requests")return Sr(oa(ee.key,ee.type));const ae=n(Y).find(xe=>xe.key===ee.key);if(!ae)throw new Error("Service is no longer available.");if(ee.type==="stop"&&ae.runtime)return n(re).stopService(ae.runtime);const he=ee.key.split(":")[0];if(ee.type==="start")return r().startService(he,ae.name);if(ee.type==="restart")return r().restartService(he,ae.name);throw new Error("Service is no longer available.")}const _e=j(()=>({...r().projectErrors,...a.errors})),Ue=j(()=>r().projects.find(B=>B.id===n(c))),Se=j(()=>n(c)?r().projectDetails[n(c)]:void 0),ir=j(()=>n(o).page==="services"),Xt=j(()=>r().services.filter(B=>B.status!=="stopped")),Rt=j(()=>Object.fromEntries(r().projects.map(B=>[B.id,r().services.filter(X=>X.projectId===B.id&&X.status!=="stopped").length]))),ur=j(()=>{var X;const B=n(U).filter(ee=>ee.projectId===n(c)&&!Dr(ee)&&ee.status!=="stopped"&&ee.status!=="stopping"&&ee.upstreamReady);return(X=B.find(ee=>ee.name==="web")??B[0])==null?void 0:X.urls[0]}),zr=j(()=>r().services.filter(B=>B.status!=="stopped"&&B.status!=="stopping").map(B=>({key:B.key,name:B.name,projectName:B.projectName})));let tn=G(""),cs=G(0),pn=G(null);async function rn(B){_(tn,"");try{await Promise.all(B.filter(X=>r().services.some(ee=>ee.key===X)).map(X=>r().load(X)))}catch(X){_(tn,Ka(X),!0)}}function mn(B){const X=B.filter(ee=>!n(h).includes(ee));_(h,B.filter(ee=>n(zr).some(ae=>ae.key===ee)),!0),rn(X.filter(ee=>n(h).includes(ee)))}let _n=new Set;xt(()=>{if(!r().connected)return;const B=r().services.filter(ee=>ee.status!=="stopped"&&ee.status!=="stopping").map(ee=>ee.key),X=B.filter(ee=>!_n.has(ee));_n=new Set(B),xr(()=>{const ee=[...new Set([...n(h).filter(ae=>B.includes(ae)),...X])];(ee.length!==n(h).length||ee.some((ae,he)=>ae!==n(h)[he]))&&mn(ee)})});async function yn(){var X,ee;const B=$;_(m,!0),_(O,""),r().selected=n(d)??null,n(c)&&(r().selectedProjectId=n(c));try{if(n(o).page==="services")await I();else{const ae=[];n(c)&&r().projects.some(he=>he.id===n(c))&&ae.push(((ee=(X=r()).loadProjectDetails)==null?void 0:ee.call(X,n(c)))??r().selectProject(n(c))),n(d)&&r().services.some(he=>he.key===n(d))&&ae.push(r().load(n(d))),await Promise.all(ae)}}catch(ae){B===$&&_(O,Ka(ae),!0)}finally{B===$&&_(m,!1)}}function Sr(B,X=!0,ee){if(window.dispatchEvent(new Event(co)),n(x)&&S.save(w,n(x).scrollTop),$++,_(o,B,!0),_(O,""),window.matchMedia("(max-width: 760px)").matches&&_(b,!0),_(y,X?"":Oi(window.location.search),!0),X){w=Ui();const he=Cn(B);(window.location.pathname!==he||window.location.search)&&window.history.pushState({entry:w},"",he)}else ee&&(w=ee);n(g)&&yn();const ae=ee?S.read(ee)??0:0;En().then(()=>{var he;n(x)&&(n(x).scrollTop=ae),X&&((he=document.getElementById("page-title")??n(x))==null||he.focus({preventScroll:!0}))})}function ds(B){var ae,he;const X=((he=(ae=B.target)==null?void 0:ae.closest)==null?void 0:he.call(ae,"a"))??null,ee=_p(B,X,window.location.origin);ee&&(B.preventDefault(),Sr(ee))}function In(B){_(y,B,!0),window.history.replaceState(window.history.state,"",ml(window.location.pathname,B))}Ia(()=>{const B=/Mac|iPhone|iPad/.test(navigator.platform);_(ge,B?"⌘K":"Ctrl+K",!0),_(De,B?"⌘J":"Ctrl+J",!0);const X=window.matchMedia("(max-width: 760px)").matches;_(b,X,!0);try{const Be=JSON.parse(localStorage.getItem("localdeck-sidebar")??"null");Be&&(_(k,Math.max(200,Math.min(400,Number(Be.width)||248)),!0),X||_(b,Be.collapsed===!0))}catch{}try{localStorage.getItem("localdeck-clean-urls")!=="false"?Or(!1):_(K,!0)}catch{Or(!1)}"scrollRestoration"in window.history&&(window.history.scrollRestoration="manual"),n(o).page!=="not-found"&&window.history.replaceState({entry:w},"",ml(Cn(n(o)),n(y)));const ee=Be=>{var Ne;window.location.pathname===Cn(n(o))&&Oi(window.location.search)===n(y)||Sr(uo(window.location.pathname),!1,(Ne=Be.state)==null?void 0:Ne.entry)};window.addEventListener("popstate",ee),document.addEventListener("click",ds),r().connect().then(()=>{_(g,!0),yn()}).catch(Be=>{_(O,Ka(Be),!0)});const ae=()=>{var Be,Ne;document.visibilityState==="visible"&&((Ne=(Be=r()).refreshProjects)==null||Ne.call(Be).catch(()=>{}))},he=setInterval(ae,5e3);window.addEventListener("focus",ae),document.addEventListener("visibilitychange",ae);const xe=setInterval(()=>{n(F)&&!n(N)&&!W&&Or(!1)},15e3);return()=>{$++,window.removeEventListener("popstate",ee),document.removeEventListener("click",ds),clearInterval(xe),clearInterval(he),window.removeEventListener("focus",ae),document.removeEventListener("visibilitychange",ae),z++}});function bn(){try{localStorage.setItem("localdeck-clean-urls",String(n(F)))}catch{}}async function Or(B){const X=++z;_(N,B,!0),W=!0,B&&_(A,"");const ee=await Ip(B);W=!1,X===z&&(_(K,!0),_(F,ee.ready,!0),_(A,ee.error??"",!0),_(N,!1),(B||ee.ready)&&bn())}async function us(){_(N,!0);const B=++z;try{const X=await fetch("/api/forwarder",{method:"DELETE",signal:AbortSignal.timeout(135e3)}),ee=await X.json();if(B!==z)return;if(!X.ok||ee.removed!==!0)throw new Error(ee.error??"Could not remove the system forwarder.");_(F,!1),_(A,""),bn()}catch(X){B===z&&_(A,X instanceof Error?X.message:"Removal failed.",!0)}finally{B===z&&_(N,!1)}}function Mn(B){B?(_(F,!1),Or(!0)):(z++,_(F,!1),_(A,""),_(N,!1),bn())}async function Ur(){await Vs({title:"Remove the port-80 forwarder?",body:"Links go back to using port 7777. Windows or macOS may ask for administrator approval.",confirmLabel:"Remove forwarder",danger:!0})&&(await us(),n(A)?Te.error(n(A)):Te.success("Forwarder removed"))}function vs(B){Sr({page:"projects",projectId:B})}let jr=G("logs");function fs(B){_(p,n(jr)!==B||!n(p),!0),_(jr,B,!0),n(p)&&(I(),rn(n(h)))}function wn(B,X="logs"){_(jr,X,!0),mn(n(h).includes(B)?n(h):[...n(h),B]),_(p,!0),_(pn,B,!0),gc(cs),rn([B])}async function Dn(B){const X=$;await r().forgetProject(B),X===$&&Sr({page:"projects"})}var zn=Qy();pv("1n46o8q",B=>{Uu(X=>{_c.title=X??""},[()=>{var X;return pp(n(o),(X=n(Ue))==null?void 0:X.name)}])}),Ht("keydown",ei,Ee);var On=oe(zn);{var ne=B=>{Ap(B,{get commands(){return n(me)},get loading(){return n(fe)},get loadError(){return n(pe)},onRetry:ke,onExecute:ce,onClose:()=>{_(se,!1)}})};H(On,B=>{n(se)&&B(ne)})}var ue=v(On,2);let He,it;var vt=E(ue);{let B=j(()=>n(K)&&!n(F)?{busy:n(N),error:n(A)}:null);ty(vt,{get projects(){return r().projects},get runningByProject(){return n(Rt)},get currentProjectId(){return n(c)},get route(){return n(o)},get connected(){return r().connected},get runningCount(){return n(Xt).length},get paletteShortcut(){return n(ge)},get cleanUrls(){return n(B)},onOpenPalette:()=>Fe(),onEnableCleanUrls:()=>void Or(!0),onPersist:T,get collapsed(){return n(b)},set collapsed(X){_(b,X,!0)},get width(){return n(k)},set width(X){_(k,X,!0)}})}var zt=v(vt,2),pt=E(zt),ft=E(pt);{var Ft=B=>{var X=Oy(),ee=E(X),ae=V(ee,!0),he=v(ee,2);we(he,{size:"sm",onclick:()=>void r().loadProjects().catch(()=>{}),children:(xe,Be)=>{var Ne=ie("Retry projects");u(xe,Ne)},$$slots:{default:!0}}),M(()=>L(ae,r().projectErrors.projects)),u(B,X)};H(ft,B=>{r().projectErrors.projects&&B(Ft)})}var vr=v(ft,2);{var Vt=B=>{var X=Uy(),ee=E(X);{let ae=j(()=>n(o).section??"overview");_y(ee,{get project(){return n(Se)},get services(){return n(U)},get section(){return n(ae)},get appUrl(){return n(ur)},get pending(){return n(te)},onStartAll:()=>r().startAll(n(Se).id),onStopAll:()=>r().stopAll(n(Se).id),onEnvironmentSelect:async he=>{const xe=$;await r().loadProjects(),xe===$&&vs(he)},onProfilesChanged:()=>r().selectProject(n(Se).id)})}u(B,X)};H(vr,B=>{n(o).page==="projects"&&n(o).projectId&&n(Se)&&B(Vt)})}var Pr=v(vr,2);{var Hr=B=>{var X=Hy(),ee=E(X);_r(ee,{get icon(){return ys},title:"Page not found",body:"This address doesn't match a page in LocalDeck.",action:he=>{we(he,{href:"/projects",children:(xe,Be)=>{var Ne=ie("Go to Projects");u(xe,Ne)},$$slots:{default:!0}})}}),u(B,X)},nn=B=>{Wp(B)},Wt=B=>{em(B)},$t=B=>{var X=Vy(),ee=E(X);ia(ee,{title:"Projects",meta:Ke=>{var ot=ie();M(()=>L(ot,`${r().projects.length??""} ${r().projects.length===1?"project":"projects"}`)),u(Ke,ot)},$$slots:{meta:!0}});var ae=v(ee,2);{var he=Ne=>{qn(Ne,{label:"Projects",children:(Ke,ot)=>{var st=Me(),wt=oe(st);Ae(wt,17,()=>r().projects,Ve=>Ve.id,(Ve,rt)=>{{const St=Je=>{var Nt=By(),jt=E(Nt);nl(jt,{size:16,"aria-hidden":"true"}),u(Je,Nt)},Tt=Je=>{var Nt=ie();M(()=>L(Nt,n(rt).name)),u(Je,Nt)},lt=Je=>{var Nt=ie();M(()=>L(Nt,`${n(Rt)[n(rt).id]??0??""} running services`)),u(Je,Nt)},nt=Je=>{{let Nt=j(()=>n(rt).available?(n(Rt)[n(rt).id]??0)>0?"ready":"stopped":"failed");Tn(Je,{get tone(){return n(Nt)},children:(jt,Zt)=>{var Cr=ie();M(()=>L(Cr,n(rt).available?"Available":"Unavailable")),u(jt,Cr)},$$slots:{default:!0}})}};let Ge=j(()=>`/projects/${encodeURIComponent(n(rt).id)}`);Ns(Ve,{get href(){return n(Ge)},leading:St,title:Tt,subtitle:lt,meta:nt})}}),u(Ke,st)}})},xe=Ne=>{var Ke=Fy();u(Ne,Ke)},Be=Ne=>{_r(Ne,{get icon(){return nl},title:"No projects yet",body:"Run localdeck init in your project folder to get started."})};H(ae,Ne=>{r().projects.length?Ne(he):n(g)?Ne(Be,-1):Ne(xe,1)})}u(B,X)},J=B=>{var X=Wy(),ee=E(X);ia(ee,{title:"Settings",meta:Ge=>{var Je=ie();M(()=>L(Je,`${r().connected?"Daemon connected":"Waiting for daemon"} · ${n(Xt).length??""} active`)),u(Ge,Je)},$$slots:{meta:!0}});var ae=v(ee,2),he=v(E(ae));Gp(he,{get value(){return n(q)},onSave:R});var xe=v(he);{var Be=nt=>{var Ge=Tl(),Je=V(Ge,!0);M(()=>L(Je,n(C))),u(nt,Ge)};H(xe,nt=>{n(C)&&nt(Be)})}var Ne=v(ae,2),Ke=v(E(Ne),4);Qg(Ke,{get checked(){return n(F)},get disabled(){return n(N)},onchange:nt=>Mn(nt),children:(nt,Ge)=>{var Je=ie("Use port-80 links");u(nt,Je)},$$slots:{default:!0}});var ot=v(Ke,2),st=V(ot,!0),wt=v(ot,2);{var Ve=nt=>{var Ge=Tl(),Je=V(Ge,!0);M(()=>L(Je,n(A))),u(nt,Ge)};H(wt,nt=>{n(A)&&nt(Ve)})}var rt=v(wt,4),St=E(rt);we(St,{variant:"danger",get loading(){return n(N)},onclick:Ur,children:(nt,Ge)=>{var Je=ie("Remove forwarder…");u(nt,Je)},$$slots:{default:!0}});var Tt=v(Ne,2),lt=E(Tt);xd(lt),M(()=>L(st,n(N)?"Setting up links… Complete the administrator approval prompt if shown.":n(F)?"Forwarding verified. Port-free links are active.":"Using original ports. Your app links remain unchanged.")),u(B,X)},Q=B=>{var X=Ky(),ee=E(X);ia(ee,{title:"All services",meta:wt=>{var Ve=ie();M(()=>L(Ve,`${n(Xt).length??""} active`)),u(wt,Ve)},$$slots:{meta:!0}});var ae=v(ee,2),he=E(ae);It(he,{get icon(){return Fs},type:"search","aria-label":"Find a service",placeholder:"Service or project name",get value(){return n(y)},oninput:st=>In(st.currentTarget.value)});var xe=v(ae,2),Be=E(xe);{var Ne=st=>{qn(st,{label:"All services",children:(wt,Ve)=>{var rt=Me(),St=oe(rt);Ae(St,17,()=>n(Z),Tt=>Tt.key,(Tt,lt)=>{const nt=j(()=>n(lt).key.split(":")[0]);{let Ge=j(()=>{var jt;return!!(n(lt).command&&((jt=r().projectDetails[n(nt)])!=null&&jt.available))}),Je=j(()=>{var jt,Zt;return((jt=n(lt).runtime)==null?void 0:jt.projectName)??((Zt=r().projects.find(Cr=>Cr.id===n(nt)))==null?void 0:Zt.name)??"Project"}),Nt=j(()=>{var jt;return((jt=r().shareErrors)==null?void 0:jt[n(lt).key])??""});fo(Tt,{get projectId(){return n(nt)},get name(){return n(lt).name},get command(){return n(lt).command},get runtime(){return n(lt).runtime},get configured(){return n(Ge)},get projectName(){return n(Je)},get pending(){return n(te)},get error(){return n(_e)[n(lt).key]},get shareError(){return n(Nt)},onStart:()=>r().startService(n(nt),n(lt).name),onStop:()=>n(lt).runtime?n(re).stopService(n(lt).runtime):Promise.resolve(),onRestart:()=>r().restartService(n(nt),n(lt).name),onWatch:jt=>wn(n(lt).key,jt),onShare:(jt,Zt)=>r().share(n(lt).key,jt,Zt),onUnshare:()=>r().unshare(n(lt).key)})}}),u(wt,rt)}})},Ke=st=>{{let wt=j(()=>n(y)?"No matching services":"No active services"),Ve=j(()=>n(y)?"Try another service or project name.":"Start a configured service from a project, or run LocalDeck from your terminal.");_r(st,{get icon(){return Qc},get title(){return n(wt)},get body(){return n(Ve)}})}};H(Be,st=>{n(Z).length?st(Ne):st(Ke,-1)})}var ot=v(xe,2);Ae(ot,17,()=>r().projects.filter(st=>r().projectErrors[st.id]),kt,(st,wt)=>{var Ve=$y(),rt=E(Ve),St=v(rt);we(St,{size:"sm",onclick:I,children:(Tt,lt)=>{var nt=ie("Retry");u(Tt,nt)},$$slots:{default:!0}}),M(()=>L(rt,`${n(wt).name??""}: ${r().projectErrors[n(wt).id]??""} `)),u(st,Ve)}),u(B,X)},le=B=>{const X=j(()=>n(o).projectId),ee=j(()=>n(o).serviceName),ae=j(()=>`${n(X)}:${n(ee)}`);var he=Me(),xe=oe(he);Wr(xe,()=>n(ae),Be=>{{let Ne=j(()=>r().shareErrors??{});Dy(Be,{get projectId(){return n(X)},get serviceName(){return n(ee)},get tab(){return n(o).tab},get project(){return n(Se)},get services(){return n(U)},get logs(){return r().logs},get requests(){return r().requests},get historyBoundaries(){return r().historyBoundaries},get logLimit(){return n(q)},get pending(){return n(te)},get errors(){return n(_e)},get shareErrors(){return n(Ne)},onStart:()=>r().startService(n(X),n(ee)),onStop:()=>{const Ke=r().services.find(ot=>ot.key===n(ae));return Ke?n(re).stopService(Ke):Promise.resolve()},onRestart:()=>r().restartService(n(X),n(ee)),onShare:(Ke,ot)=>r().share(n(ae),Ke,ot),onUnshare:()=>r().unshare(n(ae)),onClear:(Ke,ot)=>r().clearHistory(Ke,ot),onSaved:()=>r().selectProject(n(X)),onLoad:Ke=>r().load(Ke)})}}),u(B,he)},ye=B=>{var X=Me(),ee=oe(X);Wr(ee,()=>n(Se).id,ae=>{o1(ae,{get projectId(){return n(Se).id},get projectName(){return n(Se).name},get connected(){return r().connected}})}),u(B,X)},Le=B=>{var X=Me(),ee=oe(X);Wr(ee,()=>n(Se).id,ae=>{var he=Gy(),xe=E(he);p1(xe,{get projectId(){return n(Se).id}}),u(ae,he)}),u(B,X)},je=B=>{var X=Me(),ee=oe(X);Wr(ee,()=>n(Se).id,ae=>{var he=Yy(),xe=E(he);am(xe,{get project(){return n(Se)}}),u(ae,he)}),u(B,X)},yt=B=>{var X=Me(),ee=oe(X);Wr(ee,()=>n(Se).id,ae=>{{let he=j(()=>r().shareErrors??{});n_(ae,{get project(){return n(Se)},get services(){return n(U)},get pending(){return n(te)},get errors(){return n(_e)},get shareErrors(){return n(he)},get query(){return n(y)},onQuery:In,onStartService:xe=>r().startService(n(Se).id,xe),onStopService:xe=>r().stopService(n(Se).id,xe),onRestartService:xe=>r().restartService(n(Se).id,xe),onRetry:()=>r().selectProject(n(Se).id),onForget:()=>Dn(n(Se).id),onWatch:wn,onShare:(xe,Be,Ne)=>r().share(xe,Be,Ne),onUnshare:xe=>r().unshare(xe)})}}),u(B,X)},qt=B=>{var X=Me(),ee=oe(X);Wr(ee,()=>n(Se).id,ae=>{p_(ae,{get project(){return n(Se)},onSaved:()=>r().selectProject(n(Se).id),onForget:()=>Dn(n(Se).id)})}),u(B,X)},Lt=B=>{var X=Jy(),ee=E(X);{const ae=xe=>{we(xe,{variant:"primary",onclick:()=>void r().selectProject(n(Ue).id).catch(()=>{}),children:(Be,Ne)=>{var Ke=ie("Retry");u(Be,Ke)},$$slots:{default:!0}})};let he=j(()=>`Couldn't load ${n(Ue).name}`);_r(ee,{get icon(){return ys},get title(){return n(he)},get body(){return r().projectErrors[n(Ue).id]},action:ae})}u(B,X)},Qt=B=>{var X=Nl(),ee=E(X);{let ae=j(()=>`Loading ${n(Ue).name}`);_r(ee,{get icon(){return ri},get title(){return n(ae)},body:"Reading the project configuration and current services."})}u(B,X)},fr=B=>{var X=Nl(),ee=E(X);{const ae=Ne=>{we(Ne,{href:"/projects",children:(Ke,ot)=>{var st=ie("Back to Projects");u(Ke,st)},$$slots:{default:!0}})};let he=j(()=>!n(g)||n(m)?ri:ys),xe=j(()=>!n(g)||n(m)?"Loading project…":"Project not found"),Be=j(()=>n(O)||void 0);_r(ee,{get icon(){return n(he)},get title(){return n(xe)},get body(){return n(Be)},action:ae})}u(B,X)};H(Pr,B=>{n(l)==="not-found"?B(Hr):n(l)==="about"?B(nn,1):n(l)==="changelog"?B(Wt,2):n(l)==="projects"?B($t,3):n(l)==="settings"?B(J,4):n(ir)?B(Q,5):n(o).page==="service"?B(le,6):n(l)==="project-activity"&&n(Se)?B(ye,7):n(l)==="project-checks"&&n(Se)?B(Le,8):n(l)==="project-secrets"&&n(Se)?B(je,9):n(l)==="overview"&&n(Se)?B(yt,10):n(l)==="project-settings"&&n(Se)?B(qt,11):n(Ue)&&r().projectErrors[n(Ue).id]?B(Lt,12):n(Ue)?B(Qt,13):B(fr,-1)})}Rn(pt,B=>_(x,B),()=>n(x));var gt=v(pt,2);{var bt=B=>{var X=Xy(),ee=E(X);Ld(ee,{get historyBoundaries(){return r().historyBoundaries},onClear:(ae,he)=>r().clearHistory(ae,he),get view(){return n(jr)},get services(){return n(U)},get limit(){return n(q)},get sources(){return n(zr)},get selectedKeys(){return n(h)},get logs(){return r().logs},get requests(){return r().requests},get resetView(){return n(cs)},get requestedSource(){return n(pn)},get error(){return n(tn)},onRetry:()=>void rn(n(h)),onSelectionChange:mn,onClose:()=>_(p,!1)}),u(B,X)};H(gt,B=>{n(p)&&B(bt)})}var Ot=v(gt,2);sy(Ot,{get open(){return n(p)},get view(){return n(jr)},get runningCount(){return n(Xt).length},get shortcut(){return n(De)},onToggle:fs});var hr=v(ue,2);lp(hr,{});var ht=v(hr,2);Ch(ht,{}),M(()=>{He=Ze(ue,1,"layout svelte-1n46o8q",null,He,{collapsed:n(b)}),it=Na(ue,"",it,{"--sidebar-width":`${n(k)}px`})}),u(t,zn),Oe()}lv(Zy,{target:document.getElementById("app")});
|