unspaghettit 0.1.6 → 0.1.7
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/build/client/_app/immutable/chunks/{C9wMWZPw.js → B-lvxr_Y.js} +1 -1
- package/build/client/_app/immutable/chunks/B-lvxr_Y.js.br +0 -0
- package/build/client/_app/immutable/chunks/B-lvxr_Y.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B4Mul34I.js +1 -0
- package/build/client/_app/immutable/chunks/B4Mul34I.js.br +2 -0
- package/build/client/_app/immutable/chunks/B4Mul34I.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{ukQsznpL.js → Buny4Lxq.js} +1 -1
- package/build/client/_app/immutable/chunks/Buny4Lxq.js.br +0 -0
- package/build/client/_app/immutable/chunks/Buny4Lxq.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{DCBZib_A.js → DHnrY7Sb.js} +1 -1
- package/build/client/_app/immutable/chunks/DHnrY7Sb.js.br +0 -0
- package/build/client/_app/immutable/chunks/DHnrY7Sb.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BujhrE7B.js → K3JxBPSQ.js} +1 -1
- package/build/client/_app/immutable/chunks/K3JxBPSQ.js.br +0 -0
- package/build/client/_app/immutable/chunks/K3JxBPSQ.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.BJkqYzOZ.js → app.DdaNJvmo.js} +2 -2
- package/build/client/_app/immutable/entry/app.DdaNJvmo.js.br +0 -0
- package/build/client/_app/immutable/entry/app.DdaNJvmo.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.Cu21IWs-.js +1 -0
- package/build/client/_app/immutable/entry/start.Cu21IWs-.js.br +0 -0
- package/build/client/_app/immutable/entry/start.Cu21IWs-.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{0.Bud6oSWn.js → 0.C1BTEwKm.js} +1 -1
- package/build/client/_app/immutable/nodes/0.C1BTEwKm.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.C1BTEwKm.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.B1uyXFNL.js → 1.C3Ve_ouq.js} +1 -1
- package/build/client/_app/immutable/nodes/1.C3Ve_ouq.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.C3Ve_ouq.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{2.CZtr6HKf.js → 2.CRcsCTzc.js} +1 -1
- package/build/client/_app/immutable/nodes/2.CRcsCTzc.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.CRcsCTzc.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{3.je2f5AIU.js → 3.rv7UrHHg.js} +1 -1
- package/build/client/_app/immutable/nodes/3.rv7UrHHg.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.rv7UrHHg.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{4.DwMLak-H.js → 4.Cev4WT4u.js} +1 -1
- package/build/client/_app/immutable/nodes/4.Cev4WT4u.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.Cev4WT4u.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{6.zU_m9WQH.js → 6.DCJwg-TV.js} +1 -1
- package/build/client/_app/immutable/nodes/6.DCJwg-TV.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.DCJwg-TV.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{7.DBbBpQEF.js → 7.BFdt4Nqg.js} +1 -1
- package/build/client/_app/immutable/nodes/7.BFdt4Nqg.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.BFdt4Nqg.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{8.DuUPz1b5.js → 8.aFYV9MSb.js} +1 -1
- package/build/client/_app/immutable/nodes/8.aFYV9MSb.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.aFYV9MSb.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/server/chunks/{0-_26TGxLT.js → 0-XDHB9lbZ.js} +3 -3
- package/build/server/chunks/{0-_26TGxLT.js.map → 0-XDHB9lbZ.js.map} +1 -1
- package/build/server/chunks/1-BM_rl7Bx.js +9 -0
- package/build/server/chunks/{1-DG3JBpXP.js.map → 1-BM_rl7Bx.js.map} +1 -1
- package/build/server/chunks/{2-Bjb9OZPF.js → 2-DmFhuHKK.js} +3 -3
- package/build/server/chunks/{2-Bjb9OZPF.js.map → 2-DmFhuHKK.js.map} +1 -1
- package/build/server/chunks/{3-CWF3auyO.js → 3-B3Ro5GyH.js} +3 -3
- package/build/server/chunks/{3-CWF3auyO.js.map → 3-B3Ro5GyH.js.map} +1 -1
- package/build/server/chunks/{4-DFM5JKnC.js → 4-cj58VJgj.js} +3 -3
- package/build/server/chunks/{4-DFM5JKnC.js.map → 4-cj58VJgj.js.map} +1 -1
- package/build/server/chunks/{6-SokDibOE.js → 6-Bj0uWvDK.js} +3 -3
- package/build/server/chunks/{6-SokDibOE.js.map → 6-Bj0uWvDK.js.map} +1 -1
- package/build/server/chunks/{7-DJ1X7xac.js → 7-DiKTsjh1.js} +3 -3
- package/build/server/chunks/{7-DJ1X7xac.js.map → 7-DiKTsjh1.js.map} +1 -1
- package/build/server/chunks/{8-D0b62Rsu.js → 8-CZiwFSj3.js} +3 -3
- package/build/server/chunks/{8-D0b62Rsu.js.map → 8-CZiwFSj3.js.map} +1 -1
- package/build/server/chunks/{ProjectsIndex-DBeO53ni.js → ProjectsIndex-Boeoj8Zh.js} +2 -2
- package/build/server/chunks/{ProjectsIndex-DBeO53ni.js.map → ProjectsIndex-Boeoj8Zh.js.map} +1 -1
- package/build/server/chunks/{_layout.svelte-CZVtRopT.js → _layout.svelte-BV7JjoXo.js} +4 -4
- package/build/server/chunks/{_layout.svelte-CZVtRopT.js.map → _layout.svelte-BV7JjoXo.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-DSKqcluH.js → _page.svelte-AXKie8xV.js} +4 -4
- package/build/server/chunks/{_page.svelte-DSKqcluH.js.map → _page.svelte-AXKie8xV.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-BcU1fMeo.js → _page.svelte-B0w194rX.js} +3 -3
- package/build/server/chunks/{_page.svelte-BcU1fMeo.js.map → _page.svelte-B0w194rX.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-Ca25RuDB.js → _page.svelte-BSo9Np-N.js} +4 -4
- package/build/server/chunks/{_page.svelte-Ca25RuDB.js.map → _page.svelte-BSo9Np-N.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-6RPWu9p2.js → _page.svelte-D-CofieG.js} +4 -4
- package/build/server/chunks/{_page.svelte-6RPWu9p2.js.map → _page.svelte-D-CofieG.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-Cx-QUBgi.js → _page.svelte-D4bCUYdF.js} +4 -4
- package/build/server/chunks/{_page.svelte-Cx-QUBgi.js.map → _page.svelte-D4bCUYdF.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-DDkJ5lzm.js → _page.svelte-DDOUOH7d.js} +3 -3
- package/build/server/chunks/{_page.svelte-DDkJ5lzm.js.map → _page.svelte-DDOUOH7d.js.map} +1 -1
- package/build/server/chunks/{client-CIJDr6ez.js → client-f1rhU0pP.js} +2 -2
- package/build/server/chunks/{client-CIJDr6ez.js.map → client-f1rhU0pP.js.map} +1 -1
- package/build/server/chunks/{error.svelte-2dtjoLhc.js → error.svelte-Sw2nazu6.js} +4 -4
- package/build/server/chunks/{error.svelte-2dtjoLhc.js.map → error.svelte-Sw2nazu6.js.map} +1 -1
- package/build/server/chunks/{internal-DmuWWHX1.js → internal-cdqLNkR1.js} +2 -2
- package/build/server/chunks/{internal-DmuWWHX1.js.map → internal-cdqLNkR1.js.map} +1 -1
- package/build/server/chunks/{reconcile-98UZBEr6.js → reconcile-BIZjLR73.js} +2 -2
- package/build/server/chunks/{reconcile-98UZBEr6.js.map → reconcile-BIZjLR73.js.map} +1 -1
- package/build/server/chunks/{state-CL1NqWTd.js → state-CxL934Yr.js} +2 -2
- package/build/server/chunks/{state-CL1NqWTd.js.map → state-CxL934Yr.js.map} +1 -1
- package/build/server/index.js +1 -1
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +9 -9
- package/build/server/manifest.js.map +1 -1
- package/package.json +1 -1
- package/build/client/_app/immutable/chunks/BkrS-jAt.js +0 -1
- package/build/client/_app/immutable/chunks/BkrS-jAt.js.br +0 -2
- package/build/client/_app/immutable/chunks/BkrS-jAt.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BujhrE7B.js.br +0 -0
- package/build/client/_app/immutable/chunks/BujhrE7B.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C9wMWZPw.js.br +0 -0
- package/build/client/_app/immutable/chunks/C9wMWZPw.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DCBZib_A.js.br +0 -0
- package/build/client/_app/immutable/chunks/DCBZib_A.js.gz +0 -0
- package/build/client/_app/immutable/chunks/ukQsznpL.js.br +0 -0
- package/build/client/_app/immutable/chunks/ukQsznpL.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.BJkqYzOZ.js.br +0 -0
- package/build/client/_app/immutable/entry/app.BJkqYzOZ.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.Cka7FVYO.js +0 -1
- package/build/client/_app/immutable/entry/start.Cka7FVYO.js.br +0 -0
- package/build/client/_app/immutable/entry/start.Cka7FVYO.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.Bud6oSWn.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.Bud6oSWn.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.B1uyXFNL.js.br +0 -2
- package/build/client/_app/immutable/nodes/1.B1uyXFNL.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.CZtr6HKf.js.br +0 -1
- package/build/client/_app/immutable/nodes/2.CZtr6HKf.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.je2f5AIU.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.je2f5AIU.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.DwMLak-H.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.DwMLak-H.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.zU_m9WQH.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.zU_m9WQH.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.DBbBpQEF.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.DBbBpQEF.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.DuUPz1b5.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.DuUPz1b5.js.gz +0 -0
- package/build/server/chunks/1-DG3JBpXP.js +0 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./DF6QYH3p.js";import{a as e,i as t,r as n}from"./
|
|
1
|
+
import"./DF6QYH3p.js";import{a as e,i as t,r as n}from"./K3JxBPSQ.js";var r={get data(){return e.data},get error(){return e.error},get form(){return e.form},get params(){return e.params},get route(){return e.route},get state(){return e.state},get status(){return e.status},get url(){return e.url}};Object.defineProperty({get from(){return t.current?t.current.from:null},get to(){return t.current?t.current.to:null},get type(){return t.current?t.current.type:null},get willUnload(){return t.current?t.current.willUnload:null},get delta(){return t.current?t.current.delta:null},get complete(){return t.current?t.current.complete:null}},"current",{get(){throw Error(`Replace navigating.current.<prop> with navigating.<prop>`)}}),n.updated.check;var i=r;export{i as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./K3JxBPSQ.js";
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./DF6QYH3p.js";import{r as e}from"./
|
|
1
|
+
import"./DF6QYH3p.js";import{r as e}from"./K3JxBPSQ.js";import{u as t}from"./Dv09pO87.js";var n=()=>{let t=e;return{page:{subscribe:t.page.subscribe},navigating:{subscribe:t.navigating.subscribe},updated:t.updated}},r={subscribe(e){return n().page.subscribe(e)}},i=e=>e.length===0?e:e.charAt(0).toUpperCase()+e.slice(1),a=e=>{let t=e.split(`.`);return t.length<=1?e:t[t.length-1]},o=e=>{let n=new Map;for(let t of e.surfaces)for(let e of t.stateDefinitions){let r=e.path.split(`.`)[0]??e.path,i=n.get(r);i||(i={fields:new Map,surfaces:new Set},n.set(r,i)),i.fields.has(e.path)||i.fields.set(e.path,{name:a(e.path),path:e.path,type:e.type,source:`deduced`}),i.surfaces.add(t.name)}let r=new Map;for(let t of e.entities)r.set(t.namespace,t);let o=new Set([...n.keys(),...r.keys()]),s=[];for(let e of o){let a=r.get(e),o=n.get(e),c=new Map;if(o)for(let[e,t]of o.fields)c.set(e,t);if(a)for(let e of a.fields)e.path&&c.set(String(e.path),{id:e.id,name:e.name,path:e.path,type:e.type,source:`declared`,fields:e.fields,items:e.items});let l=Array.from(c.values()).sort((e,t)=>e.path.localeCompare(t.path));s.push({id:a?.id,name:i(t(e)),namespace:e,description:a?.description,resourceId:a?.resourceId,fields:l,isMaterialized:a!==void 0,usedBySurfaces:o?Array.from(o.surfaces).sort():[]})}return s.sort((e,t)=>e.namespace.localeCompare(t.namespace)),s},s=(e,t)=>e.fields.map(e=>({id:e.id??t(),name:e.name,path:e.path,type:e.type,fields:e.fields,items:e.items})),c=e=>{let t=e.split(`.`)[0];return t&&t.length>0?t:`_root`},l=e=>{let t=new Map,n=(e,n)=>{let r=t.get(e);r||(r=[],t.set(e,r)),r.push(n)};for(let t of e.surfaces){for(let e of t.actions){for(let r of e.emittedEvents)n(String(r),{surfaceId:t.id,surfaceName:t.name,actionId:e.id,actionName:e.name,origin:`action_default`});for(let r of e.effects)r.type===`emit_event`&&n(String(r.event),{surfaceId:t.id,surfaceName:t.name,actionId:e.id,actionName:e.name,origin:`action_effect`,description:r.description});for(let r of e.rules)r.effect.type===`emit_event`&&n(String(r.effect.event),{surfaceId:t.id,surfaceName:t.name,actionId:e.id,actionName:e.name,origin:`action_rule_effect`,description:r.description})}for(let e of t.rules)e.effect.type===`emit_event`&&n(String(e.effect.event),{surfaceId:t.id,surfaceName:t.name,origin:`surface_rule_effect`,description:e.description})}let r=[];for(let[e,n]of t)r.push({name:e,group:c(e),emissions:n});return r.sort((e,t)=>e.group===t.group?String(e.name).localeCompare(String(t.name)):e.group.localeCompare(t.group)),r},u=e=>{let t=new Map;for(let n of e){let e=t.get(n.group);e||(e=[],t.set(n.group,e)),e.push(n)}return Array.from(t.entries()).map(([e,t])=>({group:e,events:t})).sort((e,t)=>e.group.localeCompare(t.group))},d=e=>{let t=new Map;e.surfaces.forEach((e,n)=>{t.set(e.id,{name:e.name,index:n})});let n=new Map,r=e=>e!==void 0&&t.has(e),i=(e,i,a)=>{if(!r(i))return;let o=`${e}__${i}`,s=n.get(o);s||(s={sources:[],fromIndex:t.get(e)?.index??0},n.set(o,s)),s.sources.push(a)};for(let t of e.surfaces){let e=t.id,n=t.name;for(let r of t.transitions)i(e,r.target,{surfaceId:e,surfaceName:n,origin:`declared`,description:r.label??r.description});for(let r of t.actions){for(let t of r.effects)t.type===`transition_surface`&&i(e,t.target,{surfaceId:e,surfaceName:n,actionId:r.id,actionName:r.name,origin:`action_effect`,description:t.description});for(let t of r.rules)t.effect.type===`transition_surface`&&i(e,t.effect.target,{surfaceId:e,surfaceName:n,actionId:r.id,actionName:r.name,origin:`action_rule_effect`,description:t.description})}for(let r of t.rules)r.effect.type===`transition_surface`&&i(e,r.effect.target,{surfaceId:e,surfaceName:n,origin:`surface_rule_effect`,description:r.description})}let a=[];for(let[e,r]of n){let[n,i]=e.split(`__`),o=t.get(n),s=t.get(i);!o||!s||a.push({fromSurfaceId:n,fromSurfaceName:o.name,toSurfaceId:i,toSurfaceName:s.name,sources:r.sources})}return a.sort((e,n)=>{let r=t.get(e.fromSurfaceId)?.index??0,i=t.get(n.fromSurfaceId)?.index??0;return r===i?(t.get(e.toSurfaceId)?.index??0)-(t.get(n.toSurfaceId)?.index??0):r-i}),a},f=e=>{let t=new Map;for(let n of e){let e=t.get(n.fromSurfaceId);e||(e={fromSurfaceId:n.fromSurfaceId,fromSurfaceName:n.fromSurfaceName,transitions:[]},t.set(n.fromSurfaceId,e)),e.transitions.push(n)}return Array.from(t.values())};export{o as a,u as i,f as n,s as o,l as r,r as s,d as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$ as e,D as t,F as n,H as r,I as i,J as a,L as o,N as s,O as c,P as l,Q as u,U as d,X as f,Y as p,a as m,c as h,ft as g,j as _,k as v,l as y,m as b,n as x,ot as S,p as C,q as w,r as T,s as E,st as D,tt as O,u as k,w as A,z as j}from"./DF6QYH3p.js";import{t as M}from"./BujhrE7B.js";import"./xihTtKlq.js";import{at as N,dt as P,ft as ee,gt as te,it as ne,mt as re,nt as ie,t as F,tt as ae}from"./Dv09pO87.js";import{t as oe}from"./BTLTzKaZ.js";import"./BkrS-jAt.js";import{t as I}from"./CvxLPre7.js";import{t as L}from"./1_r1S7Ly.js";import{t as se}from"./D9BWIMZD.js";import{r as ce,t as R}from"./gQ3oD_Dm.js";import{t as le}from"./Dhqg7r_2.js";import{a as ue,i as de,r as fe,s as pe}from"./Q8pmKDJe.js";import{t as me}from"./DC_h2his.js";import{t as he}from"./lHLL3RmT.js";var z=_(`<a class="block"><p class="line-clamp-3 text-sm leading-6 text-slate-600"> </p></a>`),B=_(`<p class="text-sm leading-6 text-slate-500">No description yet. Add a note so collaborators know what belongs here.</p>`),ge=_(`<article data-tour="project-card" class="group relative flex h-full min-h-52 flex-col justify-between overflow-hidden rounded-xl border border-cyan-100 bg-white p-5 shadow-sm shadow-cyan-950/5 transition duration-150 hover:-translate-y-0.5 hover:border-cyan-200 hover:bg-cyan-50/20 hover:shadow-md hover:shadow-cyan-950/10 focus-within:border-cyan-300"><div class="absolute inset-x-0 top-0 h-1 bg-gradient-to-r from-brand-500 via-brand-mint to-violet-400"></div> <div class="space-y-3"><div class="flex items-start justify-between gap-3"><a class="block min-w-0 flex-1"><h3 class="truncate text-base font-semibold text-slate-950 group-hover:text-brand-800"> </h3></a> <span class="shrink-0 rounded-md border border-cyan-100 bg-cyan-50 px-2 py-0.5 text-xs font-medium text-brand-800" title="Features in project"> </span></div> <!></div> <div class="mt-5 flex items-end justify-between gap-3 border-t border-hairline pt-3 text-xs text-slate-500"><div class="min-w-0 flex-1 space-y-2"><!> <span class="block truncate"> </span></div> <div class="flex shrink-0 items-center gap-1"><button type="button" class="rounded px-2 py-1 text-slate-400 opacity-0 transition group-hover:opacity-100 group-focus-within:opacity-100 hover:bg-red-50 hover:text-red-600"> </button></div></div></article>`);function _e(e,i){D(i,!0);let o=m(i,`tagTypeOptions`,19,()=>[]),s=m(i,`deleteLabel`,3,`Delete`);function l(){L.openProject(String(i.summary.id))}var u=ge(),d=f(a(u),2),p=a(d),h=a(p),_=a(h),y=a(_,!0);g(_),g(h);var b=f(h,2),x=a(b);g(b),g(p);var C=f(p,2),w=e=>{var t=z(),o=a(t),s=a(o,!0);g(o),g(t),r(()=>{k(t,`href`,`/projects/${i.summary.id}`),c(s,i.summary.description)}),n(`click`,t,l),v(e,t)},T=e=>{v(e,B())};t(C,e=>{i.summary.description?e(w):e(T,-1)}),g(d);var E=f(d,2),O=a(E),A=a(O);R(A,{get tags(){return i.summary.tags},get onAddTag(){return i.onAddTag},get onRemoveTag(){return i.onRemoveTag},get typeOptions(){return o()}});var j=f(A,2),M=a(j);g(j),g(O);var N=f(O,2),P=a(N),ee=a(P,!0);g(P),g(N),g(E),g(u),r(e=>{k(h,`href`,`/projects/${i.summary.id}`),c(y,i.summary.name),c(x,`${i.summary.featureCount??``} feature${i.summary.featureCount===1?``:`s`}`),c(M,`Updated ${e??``}`),c(ee,s())},[()=>new Date(i.summary.updatedAt).toLocaleDateString()]),n(`click`,h,l),n(`click`,P,function(...e){i.onDelete?.apply(this,e)}),v(e,u),S()}l([`click`]);var ve=_(`<form data-tour="new-project-form" class="grid gap-3 rounded-xl border border-cyan-100 bg-cyan-50/40 p-4 md:grid-cols-[1fr_1.6fr_auto] md:items-end"><div><label for="proj-name" class="mb-1.5 block text-xs font-medium text-slate-700">Project name</label> <input id="proj-name" type="text" placeholder="e.g. Acme Platform" class="h-10 w-full rounded-md border border-cyan-100 bg-white px-3 text-sm outline-none focus:border-brand-700 focus:ring-2 focus:ring-brand-100" required=""/></div> <div><label for="proj-desc" class="mb-1.5 block text-xs font-medium text-slate-700">Description</label> <input id="proj-desc" data-tour="new-project-description" type="text" placeholder="What product or initiative does this group?" class="h-10 w-full rounded-md border border-cyan-100 bg-white px-3 text-sm outline-none focus:border-brand-700 focus:ring-2 focus:ring-brand-100" required=""/></div> <button type="submit" class="h-10 rounded-md bg-brand-800 px-4 text-sm font-medium text-white hover:bg-brand-900 disabled:cursor-not-allowed disabled:opacity-50"> </button></form>`);function ye(t,n){D(n,!0);let s=e(``),l=e(``),p=e(!1),m=e(null),_=O(()=>le(I.currentStep,`new-project`,o(s)));d(()=>{o(m)&&j().then(()=>o(m)?.focus())});async function b(e){if(e.preventDefault(),!o(p)&&o(s).trim().length!==0&&o(l).trim().length!==0){u(p,!0);try{await n.onSubmit(o(s).trim(),o(l).trim()),u(s,``),u(l,``)}finally{u(p,!1)}}}var x=ve(),C=a(x),w=f(a(C),2);y(w),E(w,e=>u(m,e),()=>o(m)),g(C);var T=f(C,2),A=f(a(T),2);y(A),g(T);var M=f(T,2),N=a(M,!0);g(M),g(x),r(e=>{k(M,`title`,o(_).blocked?`Tutorial: name must be exactly "${o(_).requiredValue}"`:void 0),M.disabled=e,c(N,o(p)?`Creating...`:`New project`)},[()=>o(p)||o(s).trim().length===0||o(l).trim().length===0||o(_).blocked]),i(`submit`,x,b),h(w,()=>o(s),e=>u(s,e)),h(A,()=>o(l),e=>u(l,e)),v(t,x),S()}var be=_(`<button type="button" class="h-8 rounded-md px-2 text-xs font-medium text-slate-500 hover:bg-slate-50 hover:text-slate-900">Clear</button>`),xe=_(`<div class="rounded-lg border border-dashed border-hairline bg-white p-8 text-center text-sm text-slate-500">Loading projects...</div>`),Se=_(`<div class="rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-700"> </div>`),Ce=_(`<div class="space-y-3"><p>No projects yet.</p> <button type="button" class="rounded-md bg-slate-900 px-4 py-2 text-sm font-medium text-white">Create first project</button></div>`),we=_(`<div class="rounded-lg border border-dashed border-hairline bg-white p-8 text-center text-sm text-slate-500"><!></div>`),Te=_(`<li><!></li>`),Ee=_(`<ul class="grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3"></ul>`),De=_(`<div class="fixed inset-0 z-40 flex items-start justify-center bg-slate-950/30 px-4 py-24 backdrop-blur-sm" role="presentation"><div class="w-full max-w-3xl rounded-xl border border-hairline bg-white shadow-xl" role="dialog" aria-modal="true" aria-labelledby="new-project-title"><header class="flex items-start justify-between gap-4 border-b border-hairline px-5 py-4"><div><h2 id="new-project-title" class="text-base font-semibold text-slate-950">New project</h2> <p class="mt-1 text-sm text-slate-500">Create a project for related behavior models.</p></div> <button type="button" class="rounded-md px-2 py-1 text-sm text-slate-500 hover:bg-slate-100 hover:text-slate-900" aria-label="Close">x</button></header> <div class="p-5"><!></div></div></div>`),Oe=_(`<div class="mx-auto max-w-7xl px-4 py-8 sm:px-6"><header class="mb-6 border-b border-slate-200 pb-6"><div class="flex items-center justify-between gap-3"><p class="text-xs font-semibold uppercase tracking-wide text-brand-700">Home</p> <button type="button" class="inline-flex items-center gap-1.5 rounded-md border border-slate-300 bg-white px-3 py-1.5 text-xs font-medium text-slate-700 transition hover:border-brand-300 hover:bg-cyan-50 hover:text-brand-800 disabled:opacity-50" title="Restore a project from a .unspa file"><span aria-hidden="true">⬆</span> </button> <input type="file" accept=".unspa,application/octet-stream,application/json" class="hidden"/></div> <div class="mt-2 max-w-3xl"><h1 class="text-4xl font-semibold tracking-tight text-slate-950">Projects</h1> <p class="mt-2 max-w-2xl text-sm leading-6 text-slate-600">Group related behavior models and inspect their resources, data, events, and transitions together.</p></div> <div class="mt-6 flex flex-col gap-3 rounded-xl border border-slate-200 bg-white p-3 shadow-sm shadow-slate-950/5 lg:flex-row lg:items-center lg:justify-between"><div class="flex min-w-0 items-center rounded-lg border border-hairline bg-white p-1 lg:flex-1"><label for="project-search" class="sr-only">Search projects</label> <input id="project-search" type="search" placeholder="Search projects..." class="h-9 w-full min-w-0 rounded-md border-0 bg-transparent px-3 text-sm outline-none placeholder:text-slate-400"/> <!></div> <div class="flex flex-col gap-2 sm:flex-row sm:items-center"><!> <label class="flex h-10 items-center gap-2 rounded-lg border border-hairline bg-white px-3 text-sm text-slate-600"><span class="text-xs font-medium">Sort</span> <select class="bg-transparent text-sm font-medium text-slate-800 outline-none"><option>Updated</option><option>Name</option><option>Features</option></select></label> <button type="button" data-tour="new-project-button" class="inline-flex h-10 items-center justify-center gap-2 rounded-md bg-slate-900 px-4 text-sm font-medium text-white hover:bg-slate-800"><span class="text-base leading-none" aria-hidden="true">+</span> New project</button></div></div></header> <section aria-labelledby="projects-list-title"><div class="mb-3 flex flex-col gap-1 sm:flex-row sm:items-end sm:justify-between"><div><h2 id="projects-list-title" class="text-base font-semibold text-slate-950">Your projects</h2> <p class="text-sm text-slate-500">Open a project to inspect the features it groups.</p></div> <p class="text-xs text-slate-500"> </p></div> <!></section></div> <!> <!>`,1);function ke(l,m){D(m,!0);let h=null,_=e(`all`),k=e(!1),j=e(!1),I=e(`updated`);T(()=>{L.refresh(),ce.refresh(),h=oe(e=>{(e.kind===`project`||e.kind===`feature`)&&L.refreshSilent()})}),x(()=>{h?.(),h=null});function R(e){let t=[...e.tags??[]];return e.customTag?.trim()&&t.push({type:e.customTagType?.trim()||`Tag`,value:e.customTag.trim()}),t}async function le(e,t){await M(`/projects/${await L.create(e,t)}`)}let z=e(!1),B=e(null);function ge(){o(z)||o(B)?.click()}async function ve(e){let t=e.target,n=t.files?.[0];if(t.value=``,n){u(z,!0);try{let e=await de(n),t=await te({title:`Import .unspa file`,message:`Enter the passphrase used when "${n.name}" was exported. A wrong passphrase will not corrupt anything — the file just stays encrypted.`,inputLabel:`Passphrase`,password:!0,confirmLabel:`Import`,tone:`info`});if(t===null)return;let r=await fe(e,t);await L.refreshSilent(),await P({title:`Import complete`,message:`Restored project with ${r.featuresImported} feature(s) and ${r.statusesImported} implementation-status sidecar(s).`,tone:`success`}),await M(`/projects/${r.projectId}`)}catch(e){await P({title:`Import failed`,message:e instanceof ue?`That file is not a valid .unspa bundle: ${e.message}`:e instanceof pe?e.message:`Import failed: ${e.message}`,tone:`danger`})}finally{u(z,!1)}}}async function ke(e){L.stagePendingDelete(e);let t=L.summaries.find(t=>String(t.id)===String(e))?.name??`this project`,n=await F(),r=((await n.useCases.getProject(e))?.featureIds??[]).map(String),i=[];if(r.length===0){if(!await re({title:`Delete "${t}"?`,message:`This project has no linked features. Removing it cannot be undone.`,confirmLabel:`Delete project`,tone:`danger`})){L.clearPendingDelete();return}}else{let e=await Promise.all(r.map(async e=>({id:e,label:(await n.useCases.getFeatureCard(e))?.name??e,defaultChecked:!0}))),a=await ee({title:`Delete "${t}"?`,message:`This project links to ${r.length} feature${r.length===1?``:`s`}. Tick the ones you want to delete in the same batch. Anything left unchecked stays available as an unassigned feature.`,items:e,confirmLabel:`Delete project + selected`,cancelLabel:`Cancel`,tone:`danger`});if(!a.confirmed){L.clearPendingDelete();return}i=a.selectedIds}for(let e of i)await n.useCases.deleteFeature(e);await L.remove(e),i.length>0&&await se.refreshSilent()}function Ae(e){e.key===`Escape`&&u(k,!1)}let V=O(()=>(L.search.trim().length===0?[...L.summaries]:L.summaries.filter(e=>{let t=L.search.toLowerCase();return e.name.toLowerCase().includes(t)||(e.description??``).toLowerCase().includes(t)})).filter(e=>je(e,o(_))).sort((e,t)=>o(I)===`name`?e.name.localeCompare(t.name):o(I)===`count`?t.featureCount-e.featureCount:new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime()));function je(e,t){let n=R(e);if(t===`all`)return!0;if(t===`untagged`)return n.length===0;let r=N(t);return n.some(e=>N(e)===r)}let H=O(()=>{let e=[];for(let t of L.summaries)for(let n of R(t))e.push(n);return e});d(()=>{ce.registerTypes(o(H).map(e=>e.type))});let Me=O(()=>[...new Set(o(H).map(e=>ie(e.type)))].sort((e,t)=>e.localeCompare(t)));function Ne(e){return L.summaries.filter(t=>je(t,e)).length}async function Pe(e,t,n){let r=await F(),i=await r.useCases.getProject(e);i&&(await r.useCases.saveProject({...i,tags:ae(R(i),{type:t,value:n})}),await L.refreshSilent())}async function Fe(e,t,n){let r=await F(),i=await r.useCases.getProject(e);if(!i)return;let a=ne(R(i),{type:t,value:n});await r.useCases.saveProject({...i,tags:a,customTagType:void 0,customTag:void 0}),o(_)!==`all`&&o(_)!==`untagged`&&N(o(_))===N({type:t,value:n})&&u(_,`all`),await L.refreshSilent()}var Ie=Oe();i(`keydown`,w,Ae);var U=p(Ie),W=a(U),G=a(W),K=f(a(G),2),Le=f(a(K));g(K);var Re=f(K,2);E(Re,e=>u(B,e),()=>o(B)),g(G);var ze=f(G,4),q=a(ze),J=f(a(q),2);y(J);var Be=f(J,2),Ve=e=>{var t=be();n(`click`,t,()=>L.setSearch(``)),v(e,t)},He=O(()=>L.search.trim().length>0);t(Be,e=>{o(He)&&e(Ve)}),g(q);var Ue=f(q,2),We=a(Ue);me(We,{get tags(){return o(H)},get value(){return o(_)},onChange:e=>u(_,e,!0),onManage:()=>u(j,!0),countLabel:Ne});var Y=f(We,2),X=f(a(Y),2),Z=a(X);Z.value=Z.__value=`updated`;var Q=f(Z);Q.value=Q.__value=`name`;var Ge=f(Q);Ge.value=Ge.__value=`count`,g(X),g(Y);var Ke=f(Y,2);g(Ue),g(ze),g(W);var qe=f(W,2),$=a(qe),Je=f(a($),2),Ye=a(Je);g(Je),g($);var Xe=f($,2),Ze=e=>{v(e,xe())},Qe=e=>{var t=Se(),n=a(t,!0);g(t),r(()=>c(n,L.error)),v(e,t)},$e=e=>{var r=we(),i=a(r),o=e=>{var t=Ce(),r=f(a(t),2);g(t),n(`click`,r,()=>u(k,!0)),v(e,t)},c=e=>{v(e,s(`No projects match your search.`))};t(i,e=>{L.summaries.length===0?e(o):e(c,-1)}),g(r),v(e,r)},et=e=>{var t=Ee();A(t,21,()=>o(V),e=>e.id,(e,t)=>{var n=Te();_e(a(n),{get summary(){return o(t)},get tagTypeOptions(){return o(Me)},onAddTag:(e,n)=>Pe(o(t).id,e,n),onRemoveTag:(e,n)=>Fe(o(t).id,e,n),onDelete:()=>ke(o(t).id)}),g(n),v(e,n)}),g(t),v(e,t)};t(Xe,e=>{L.loading?e(Ze):L.error?e(Qe,1):o(V).length===0?e($e,2):e(et,-1)}),g(qe),g(U);var tt=f(U,2),nt=e=>{var t=De(),r=a(t),i=a(r),o=f(a(i),2);g(i);var s=f(i,2);ye(a(s),{onSubmit:le}),g(s),g(r),g(t),n(`click`,t,e=>{e.currentTarget===e.target&&u(k,!1)}),n(`click`,o,()=>u(k,!1)),v(e,t)};t(tt,e=>{o(k)&&e(nt)}),he(f(tt,2),{get open(){return o(j)},get tags(){return o(H)},onClose:()=>u(j,!1),onRenamed:()=>L.refreshSilent()}),r(()=>{K.disabled=o(z),c(Le,` ${o(z)?`Importing...`:`Import .unspa`}`),C(J,L.search),c(Ye,`${o(V).length??``} shown`)}),n(`click`,K,ge),n(`change`,Re,ve),n(`input`,J,e=>L.setSearch(e.target.value)),b(X,()=>o(I),e=>u(I,e)),n(`click`,Ke,()=>u(k,!0)),v(l,Ie),S()}l([`click`,`change`,`input`]);export{ke as t};
|
|
1
|
+
import{$ as e,D as t,F as n,H as r,I as i,J as a,L as o,N as s,O as c,P as l,Q as u,U as d,X as f,Y as p,a as m,c as h,ft as g,j as _,k as v,l as y,m as b,n as x,ot as S,p as C,q as w,r as T,s as E,st as D,tt as O,u as k,w as A,z as j}from"./DF6QYH3p.js";import{t as M}from"./K3JxBPSQ.js";import"./xihTtKlq.js";import{at as N,dt as P,ft as ee,gt as te,it as ne,mt as re,nt as ie,t as F,tt as ae}from"./Dv09pO87.js";import{t as oe}from"./BTLTzKaZ.js";import"./B4Mul34I.js";import{t as I}from"./CvxLPre7.js";import{t as L}from"./1_r1S7Ly.js";import{t as se}from"./D9BWIMZD.js";import{r as ce,t as R}from"./gQ3oD_Dm.js";import{t as le}from"./Dhqg7r_2.js";import{a as ue,i as de,r as fe,s as pe}from"./Q8pmKDJe.js";import{t as me}from"./DC_h2his.js";import{t as he}from"./lHLL3RmT.js";var z=_(`<a class="block"><p class="line-clamp-3 text-sm leading-6 text-slate-600"> </p></a>`),B=_(`<p class="text-sm leading-6 text-slate-500">No description yet. Add a note so collaborators know what belongs here.</p>`),ge=_(`<article data-tour="project-card" class="group relative flex h-full min-h-52 flex-col justify-between overflow-hidden rounded-xl border border-cyan-100 bg-white p-5 shadow-sm shadow-cyan-950/5 transition duration-150 hover:-translate-y-0.5 hover:border-cyan-200 hover:bg-cyan-50/20 hover:shadow-md hover:shadow-cyan-950/10 focus-within:border-cyan-300"><div class="absolute inset-x-0 top-0 h-1 bg-gradient-to-r from-brand-500 via-brand-mint to-violet-400"></div> <div class="space-y-3"><div class="flex items-start justify-between gap-3"><a class="block min-w-0 flex-1"><h3 class="truncate text-base font-semibold text-slate-950 group-hover:text-brand-800"> </h3></a> <span class="shrink-0 rounded-md border border-cyan-100 bg-cyan-50 px-2 py-0.5 text-xs font-medium text-brand-800" title="Features in project"> </span></div> <!></div> <div class="mt-5 flex items-end justify-between gap-3 border-t border-hairline pt-3 text-xs text-slate-500"><div class="min-w-0 flex-1 space-y-2"><!> <span class="block truncate"> </span></div> <div class="flex shrink-0 items-center gap-1"><button type="button" class="rounded px-2 py-1 text-slate-400 opacity-0 transition group-hover:opacity-100 group-focus-within:opacity-100 hover:bg-red-50 hover:text-red-600"> </button></div></div></article>`);function _e(e,i){D(i,!0);let o=m(i,`tagTypeOptions`,19,()=>[]),s=m(i,`deleteLabel`,3,`Delete`);function l(){L.openProject(String(i.summary.id))}var u=ge(),d=f(a(u),2),p=a(d),h=a(p),_=a(h),y=a(_,!0);g(_),g(h);var b=f(h,2),x=a(b);g(b),g(p);var C=f(p,2),w=e=>{var t=z(),o=a(t),s=a(o,!0);g(o),g(t),r(()=>{k(t,`href`,`/projects/${i.summary.id}`),c(s,i.summary.description)}),n(`click`,t,l),v(e,t)},T=e=>{v(e,B())};t(C,e=>{i.summary.description?e(w):e(T,-1)}),g(d);var E=f(d,2),O=a(E),A=a(O);R(A,{get tags(){return i.summary.tags},get onAddTag(){return i.onAddTag},get onRemoveTag(){return i.onRemoveTag},get typeOptions(){return o()}});var j=f(A,2),M=a(j);g(j),g(O);var N=f(O,2),P=a(N),ee=a(P,!0);g(P),g(N),g(E),g(u),r(e=>{k(h,`href`,`/projects/${i.summary.id}`),c(y,i.summary.name),c(x,`${i.summary.featureCount??``} feature${i.summary.featureCount===1?``:`s`}`),c(M,`Updated ${e??``}`),c(ee,s())},[()=>new Date(i.summary.updatedAt).toLocaleDateString()]),n(`click`,h,l),n(`click`,P,function(...e){i.onDelete?.apply(this,e)}),v(e,u),S()}l([`click`]);var ve=_(`<form data-tour="new-project-form" class="grid gap-3 rounded-xl border border-cyan-100 bg-cyan-50/40 p-4 md:grid-cols-[1fr_1.6fr_auto] md:items-end"><div><label for="proj-name" class="mb-1.5 block text-xs font-medium text-slate-700">Project name</label> <input id="proj-name" type="text" placeholder="e.g. Acme Platform" class="h-10 w-full rounded-md border border-cyan-100 bg-white px-3 text-sm outline-none focus:border-brand-700 focus:ring-2 focus:ring-brand-100" required=""/></div> <div><label for="proj-desc" class="mb-1.5 block text-xs font-medium text-slate-700">Description</label> <input id="proj-desc" data-tour="new-project-description" type="text" placeholder="What product or initiative does this group?" class="h-10 w-full rounded-md border border-cyan-100 bg-white px-3 text-sm outline-none focus:border-brand-700 focus:ring-2 focus:ring-brand-100" required=""/></div> <button type="submit" class="h-10 rounded-md bg-brand-800 px-4 text-sm font-medium text-white hover:bg-brand-900 disabled:cursor-not-allowed disabled:opacity-50"> </button></form>`);function ye(t,n){D(n,!0);let s=e(``),l=e(``),p=e(!1),m=e(null),_=O(()=>le(I.currentStep,`new-project`,o(s)));d(()=>{o(m)&&j().then(()=>o(m)?.focus())});async function b(e){if(e.preventDefault(),!o(p)&&o(s).trim().length!==0&&o(l).trim().length!==0){u(p,!0);try{await n.onSubmit(o(s).trim(),o(l).trim()),u(s,``),u(l,``)}finally{u(p,!1)}}}var x=ve(),C=a(x),w=f(a(C),2);y(w),E(w,e=>u(m,e),()=>o(m)),g(C);var T=f(C,2),A=f(a(T),2);y(A),g(T);var M=f(T,2),N=a(M,!0);g(M),g(x),r(e=>{k(M,`title`,o(_).blocked?`Tutorial: name must be exactly "${o(_).requiredValue}"`:void 0),M.disabled=e,c(N,o(p)?`Creating...`:`New project`)},[()=>o(p)||o(s).trim().length===0||o(l).trim().length===0||o(_).blocked]),i(`submit`,x,b),h(w,()=>o(s),e=>u(s,e)),h(A,()=>o(l),e=>u(l,e)),v(t,x),S()}var be=_(`<button type="button" class="h-8 rounded-md px-2 text-xs font-medium text-slate-500 hover:bg-slate-50 hover:text-slate-900">Clear</button>`),xe=_(`<div class="rounded-lg border border-dashed border-hairline bg-white p-8 text-center text-sm text-slate-500">Loading projects...</div>`),Se=_(`<div class="rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-700"> </div>`),Ce=_(`<div class="space-y-3"><p>No projects yet.</p> <button type="button" class="rounded-md bg-slate-900 px-4 py-2 text-sm font-medium text-white">Create first project</button></div>`),we=_(`<div class="rounded-lg border border-dashed border-hairline bg-white p-8 text-center text-sm text-slate-500"><!></div>`),Te=_(`<li><!></li>`),Ee=_(`<ul class="grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3"></ul>`),De=_(`<div class="fixed inset-0 z-40 flex items-start justify-center bg-slate-950/30 px-4 py-24 backdrop-blur-sm" role="presentation"><div class="w-full max-w-3xl rounded-xl border border-hairline bg-white shadow-xl" role="dialog" aria-modal="true" aria-labelledby="new-project-title"><header class="flex items-start justify-between gap-4 border-b border-hairline px-5 py-4"><div><h2 id="new-project-title" class="text-base font-semibold text-slate-950">New project</h2> <p class="mt-1 text-sm text-slate-500">Create a project for related behavior models.</p></div> <button type="button" class="rounded-md px-2 py-1 text-sm text-slate-500 hover:bg-slate-100 hover:text-slate-900" aria-label="Close">x</button></header> <div class="p-5"><!></div></div></div>`),Oe=_(`<div class="mx-auto max-w-7xl px-4 py-8 sm:px-6"><header class="mb-6 border-b border-slate-200 pb-6"><div class="flex items-center justify-between gap-3"><p class="text-xs font-semibold uppercase tracking-wide text-brand-700">Home</p> <button type="button" class="inline-flex items-center gap-1.5 rounded-md border border-slate-300 bg-white px-3 py-1.5 text-xs font-medium text-slate-700 transition hover:border-brand-300 hover:bg-cyan-50 hover:text-brand-800 disabled:opacity-50" title="Restore a project from a .unspa file"><span aria-hidden="true">⬆</span> </button> <input type="file" accept=".unspa,application/octet-stream,application/json" class="hidden"/></div> <div class="mt-2 max-w-3xl"><h1 class="text-4xl font-semibold tracking-tight text-slate-950">Projects</h1> <p class="mt-2 max-w-2xl text-sm leading-6 text-slate-600">Group related behavior models and inspect their resources, data, events, and transitions together.</p></div> <div class="mt-6 flex flex-col gap-3 rounded-xl border border-slate-200 bg-white p-3 shadow-sm shadow-slate-950/5 lg:flex-row lg:items-center lg:justify-between"><div class="flex min-w-0 items-center rounded-lg border border-hairline bg-white p-1 lg:flex-1"><label for="project-search" class="sr-only">Search projects</label> <input id="project-search" type="search" placeholder="Search projects..." class="h-9 w-full min-w-0 rounded-md border-0 bg-transparent px-3 text-sm outline-none placeholder:text-slate-400"/> <!></div> <div class="flex flex-col gap-2 sm:flex-row sm:items-center"><!> <label class="flex h-10 items-center gap-2 rounded-lg border border-hairline bg-white px-3 text-sm text-slate-600"><span class="text-xs font-medium">Sort</span> <select class="bg-transparent text-sm font-medium text-slate-800 outline-none"><option>Updated</option><option>Name</option><option>Features</option></select></label> <button type="button" data-tour="new-project-button" class="inline-flex h-10 items-center justify-center gap-2 rounded-md bg-slate-900 px-4 text-sm font-medium text-white hover:bg-slate-800"><span class="text-base leading-none" aria-hidden="true">+</span> New project</button></div></div></header> <section aria-labelledby="projects-list-title"><div class="mb-3 flex flex-col gap-1 sm:flex-row sm:items-end sm:justify-between"><div><h2 id="projects-list-title" class="text-base font-semibold text-slate-950">Your projects</h2> <p class="text-sm text-slate-500">Open a project to inspect the features it groups.</p></div> <p class="text-xs text-slate-500"> </p></div> <!></section></div> <!> <!>`,1);function ke(l,m){D(m,!0);let h=null,_=e(`all`),k=e(!1),j=e(!1),I=e(`updated`);T(()=>{L.refresh(),ce.refresh(),h=oe(e=>{(e.kind===`project`||e.kind===`feature`)&&L.refreshSilent()})}),x(()=>{h?.(),h=null});function R(e){let t=[...e.tags??[]];return e.customTag?.trim()&&t.push({type:e.customTagType?.trim()||`Tag`,value:e.customTag.trim()}),t}async function le(e,t){await M(`/projects/${await L.create(e,t)}`)}let z=e(!1),B=e(null);function ge(){o(z)||o(B)?.click()}async function ve(e){let t=e.target,n=t.files?.[0];if(t.value=``,n){u(z,!0);try{let e=await de(n),t=await te({title:`Import .unspa file`,message:`Enter the passphrase used when "${n.name}" was exported. A wrong passphrase will not corrupt anything — the file just stays encrypted.`,inputLabel:`Passphrase`,password:!0,confirmLabel:`Import`,tone:`info`});if(t===null)return;let r=await fe(e,t);await L.refreshSilent(),await P({title:`Import complete`,message:`Restored project with ${r.featuresImported} feature(s) and ${r.statusesImported} implementation-status sidecar(s).`,tone:`success`}),await M(`/projects/${r.projectId}`)}catch(e){await P({title:`Import failed`,message:e instanceof ue?`That file is not a valid .unspa bundle: ${e.message}`:e instanceof pe?e.message:`Import failed: ${e.message}`,tone:`danger`})}finally{u(z,!1)}}}async function ke(e){L.stagePendingDelete(e);let t=L.summaries.find(t=>String(t.id)===String(e))?.name??`this project`,n=await F(),r=((await n.useCases.getProject(e))?.featureIds??[]).map(String),i=[];if(r.length===0){if(!await re({title:`Delete "${t}"?`,message:`This project has no linked features. Removing it cannot be undone.`,confirmLabel:`Delete project`,tone:`danger`})){L.clearPendingDelete();return}}else{let e=await Promise.all(r.map(async e=>({id:e,label:(await n.useCases.getFeatureCard(e))?.name??e,defaultChecked:!0}))),a=await ee({title:`Delete "${t}"?`,message:`This project links to ${r.length} feature${r.length===1?``:`s`}. Tick the ones you want to delete in the same batch. Anything left unchecked stays available as an unassigned feature.`,items:e,confirmLabel:`Delete project + selected`,cancelLabel:`Cancel`,tone:`danger`});if(!a.confirmed){L.clearPendingDelete();return}i=a.selectedIds}for(let e of i)await n.useCases.deleteFeature(e);await L.remove(e),i.length>0&&await se.refreshSilent()}function Ae(e){e.key===`Escape`&&u(k,!1)}let V=O(()=>(L.search.trim().length===0?[...L.summaries]:L.summaries.filter(e=>{let t=L.search.toLowerCase();return e.name.toLowerCase().includes(t)||(e.description??``).toLowerCase().includes(t)})).filter(e=>je(e,o(_))).sort((e,t)=>o(I)===`name`?e.name.localeCompare(t.name):o(I)===`count`?t.featureCount-e.featureCount:new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime()));function je(e,t){let n=R(e);if(t===`all`)return!0;if(t===`untagged`)return n.length===0;let r=N(t);return n.some(e=>N(e)===r)}let H=O(()=>{let e=[];for(let t of L.summaries)for(let n of R(t))e.push(n);return e});d(()=>{ce.registerTypes(o(H).map(e=>e.type))});let Me=O(()=>[...new Set(o(H).map(e=>ie(e.type)))].sort((e,t)=>e.localeCompare(t)));function Ne(e){return L.summaries.filter(t=>je(t,e)).length}async function Pe(e,t,n){let r=await F(),i=await r.useCases.getProject(e);i&&(await r.useCases.saveProject({...i,tags:ae(R(i),{type:t,value:n})}),await L.refreshSilent())}async function Fe(e,t,n){let r=await F(),i=await r.useCases.getProject(e);if(!i)return;let a=ne(R(i),{type:t,value:n});await r.useCases.saveProject({...i,tags:a,customTagType:void 0,customTag:void 0}),o(_)!==`all`&&o(_)!==`untagged`&&N(o(_))===N({type:t,value:n})&&u(_,`all`),await L.refreshSilent()}var Ie=Oe();i(`keydown`,w,Ae);var U=p(Ie),W=a(U),G=a(W),K=f(a(G),2),Le=f(a(K));g(K);var Re=f(K,2);E(Re,e=>u(B,e),()=>o(B)),g(G);var ze=f(G,4),q=a(ze),J=f(a(q),2);y(J);var Be=f(J,2),Ve=e=>{var t=be();n(`click`,t,()=>L.setSearch(``)),v(e,t)},He=O(()=>L.search.trim().length>0);t(Be,e=>{o(He)&&e(Ve)}),g(q);var Ue=f(q,2),We=a(Ue);me(We,{get tags(){return o(H)},get value(){return o(_)},onChange:e=>u(_,e,!0),onManage:()=>u(j,!0),countLabel:Ne});var Y=f(We,2),X=f(a(Y),2),Z=a(X);Z.value=Z.__value=`updated`;var Q=f(Z);Q.value=Q.__value=`name`;var Ge=f(Q);Ge.value=Ge.__value=`count`,g(X),g(Y);var Ke=f(Y,2);g(Ue),g(ze),g(W);var qe=f(W,2),$=a(qe),Je=f(a($),2),Ye=a(Je);g(Je),g($);var Xe=f($,2),Ze=e=>{v(e,xe())},Qe=e=>{var t=Se(),n=a(t,!0);g(t),r(()=>c(n,L.error)),v(e,t)},$e=e=>{var r=we(),i=a(r),o=e=>{var t=Ce(),r=f(a(t),2);g(t),n(`click`,r,()=>u(k,!0)),v(e,t)},c=e=>{v(e,s(`No projects match your search.`))};t(i,e=>{L.summaries.length===0?e(o):e(c,-1)}),g(r),v(e,r)},et=e=>{var t=Ee();A(t,21,()=>o(V),e=>e.id,(e,t)=>{var n=Te();_e(a(n),{get summary(){return o(t)},get tagTypeOptions(){return o(Me)},onAddTag:(e,n)=>Pe(o(t).id,e,n),onRemoveTag:(e,n)=>Fe(o(t).id,e,n),onDelete:()=>ke(o(t).id)}),g(n),v(e,n)}),g(t),v(e,t)};t(Xe,e=>{L.loading?e(Ze):L.error?e(Qe,1):o(V).length===0?e($e,2):e(et,-1)}),g(qe),g(U);var tt=f(U,2),nt=e=>{var t=De(),r=a(t),i=a(r),o=f(a(i),2);g(i);var s=f(i,2);ye(a(s),{onSubmit:le}),g(s),g(r),g(t),n(`click`,t,e=>{e.currentTarget===e.target&&u(k,!1)}),n(`click`,o,()=>u(k,!1)),v(e,t)};t(tt,e=>{o(k)&&e(nt)}),he(f(tt,2),{get open(){return o(j)},get tags(){return o(H)},onClose:()=>u(j,!1),onRenamed:()=>L.refreshSilent()}),r(()=>{K.disabled=o(z),c(Le,` ${o(z)?`Importing...`:`Import .unspa`}`),C(J,L.search),c(Ye,`${o(V).length??``} shown`)}),n(`click`,K,ge),n(`change`,Re,ve),n(`input`,J,e=>L.setSearch(e.target.value)),b(X,()=>o(I),e=>u(I,e)),n(`click`,Ke,()=>u(k,!0)),v(l,Ie),S()}l([`click`,`change`,`input`]);export{ke as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$ as e,L as t,Q as n,R as r,it as i,r as a,t as o,z as s}from"./DF6QYH3p.js";var c=class{constructor(e,t){this.status=e,typeof t==`string`?this.body={message:t}:t?this.body=t:this.body={message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}},l=class{constructor(e,t){try{new Headers({location:t})}catch{throw Error(`Invalid redirect location ${JSON.stringify(t)}: this string contains characters that cannot be used in HTTP headers`)}this.status=e,this.location=t}},u=class extends Error{constructor(e,t,n){super(n),this.status=e,this.text=t}};new URL(`sveltekit-internal://`);function d(e,t){return e===`/`||t===`ignore`?e:t===`never`?e.endsWith(`/`)?e.slice(0,-1):e:t===`always`&&!e.endsWith(`/`)?e+`/`:e}function f(e){return e.split(`%25`).map(decodeURI).join(`%25`)}function p(e){for(let t in e)e[t]=decodeURIComponent(e[t]);return e}function m({href:e}){return e.split(`#`)[0]}function h(e,t,n,r=!1){let i=new URL(e);Object.defineProperty(i,"searchParams",{value:new Proxy(i.searchParams,{get(e,r){if(r===`get`||r===`getAll`||r===`has`)return(t,...i)=>(n(t),e[r](t,...i));t();let i=Reflect.get(e,r);return typeof i==`function`?i.bind(e):i}}),enumerable:!0,configurable:!0});let a=[`href`,`pathname`,`search`,`toString`,`toJSON`];r&&a.push(`hash`);for(let n of a)Object.defineProperty(i,n,{get(){return t(),e[n]},enumerable:!0,configurable:!0});return i}function g(){}function _(...e){let t=5381;for(let n of e)if(typeof n==`string`){let e=n.length;for(;e;)t=t*33^n.charCodeAt(--e)}else if(ArrayBuffer.isView(n)){let e=new Uint8Array(n.buffer,n.byteOffset,n.byteLength),r=e.length;for(;r;)t=t*33^e[--r]}else throw TypeError(`value must be a string or TypedArray`);return(t>>>0).toString(36)}new TextEncoder;function v(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}var ee=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||`GET`)!==`GET`&&y.delete(S(e)),ee(e,t));var y=new Map;function b(e,t){let n=S(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:e,...t}=JSON.parse(r.textContent),i=r.getAttribute(`data-ttl`);return i&&y.set(n,{body:e,init:t,ttl:1e3*Number(i)}),r.getAttribute(`data-b64`)!==null&&(e=v(e)),Promise.resolve(new Response(e,t))}return window.fetch(e,t)}function x(e,t,n){if(y.size>0){let t=S(e,n),r=y.get(t);if(r){if(performance.now()<r.ttl&&[`default`,`force-cache`,`only-if-cached`,void 0].includes(n?.cache))return new Response(r.body,r.init);y.delete(t)}}return window.fetch(t,n)}function S(e,t){let n=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t?.headers||t?.body){let e=[];t.headers&&e.push([...new Headers(t.headers)].join(`,`)),t.body&&(typeof t.body==`string`||ArrayBuffer.isView(t.body))&&e.push(t.body),n+=`[data-hash="${_(...e)}"]`}return n}var te=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/,C=/^\/\((?:.+)\)$/;function ne(e){let t=[];return{pattern:e===`/`||C.test(e)?/^\/$/:RegExp(`^${ie(e).map(e=>{let n=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(e);if(n)return t.push({name:n[1],matcher:n[2],optional:!1,rest:!0,chained:!0}),`(?:/([^]*))?`;let r=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(e);if(r)return t.push({name:r[1],matcher:r[2],optional:!0,rest:!1,chained:!0}),`(?:/([^/]+))?`;if(!e)return;let i=e.split(/\[(.+?)\](?!\])/);return`/`+i.map((e,n)=>{if(n%2){if(e.startsWith(`x+`))return oe(String.fromCharCode(parseInt(e.slice(2),16)));if(e.startsWith(`u+`))return oe(String.fromCharCode(...e.slice(2).split(`-`).map(e=>parseInt(e,16))));let[,r,a,o,s]=te.exec(e);return t.push({name:o,matcher:s,optional:!!r,rest:!!a,chained:a?n===1&&i[0]===``:!1}),a?`([^]*?)`:r?`([^/]*)?`:`([^/]+?)`}return oe(e)}).join(``)}).join(``)}/?$`),params:t}}function re(e){return e!==``&&!/^\([^)]+\)$/.test(e)}function ie(e){return e.slice(1).split(`/`).filter(re)}function ae(e,t,n){let r={},i=e.slice(1),a=i.filter(e=>e!==void 0),o=0;for(let e=0;e<t.length;e+=1){let s=t[e],c=i[e-o];if(s.chained&&s.rest&&o&&(c=i.slice(e-o,e+1).filter(e=>e).join(`/`),o=0),c===void 0)if(s.rest)c=``;else continue;if(!s.matcher||n[s.matcher](c)){r[s.name]=c;let n=t[e+1],l=i[e+1];n&&!n.rest&&n.optional&&l&&s.chained&&(o=0),!n&&!l&&Object.keys(r).length===a.length&&(o=0);continue}if(s.optional&&s.chained){o++;continue}return}if(!o)return r}function oe(e){return e.normalize().replace(/[[\]]/g,`\\$&`).replace(/%/g,`%25`).replace(/\//g,`%2[Ff]`).replace(/\?/g,`%3[Ff]`).replace(/#/g,`%23`).replace(/[.*+?^${}()|\\]/g,`\\$&`)}function se({nodes:e,server_loads:t,dictionary:n,matchers:r}){let i=new Set(t);return Object.entries(n).map(([t,[n,i,s]])=>{let{pattern:c,params:l}=ne(t),u={id:t,exec:e=>{let t=c.exec(e);if(t)return ae(t,l,r)},errors:[1,...s||[]].map(t=>e[t]),layouts:[0,...i||[]].map(o),leaf:a(n)};return u.errors.length=u.layouts.length=Math.max(u.errors.length,u.layouts.length),u});function a(t){let n=t<0;return n&&(t=~t),[n,e[t]]}function o(t){return t===void 0?t:[i.has(t),e[t]]}}function ce(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function le(e,t,n=JSON.stringify){let r=n(t);try{sessionStorage[e]=r}catch{}}var w=globalThis.__sveltekit_pfoimq?.base??``,ue=globalThis.__sveltekit_pfoimq?.assets??w??``,de=`1779836848897`,fe=`sveltekit:snapshot`,pe=`sveltekit:scroll`,me=`sveltekit:states`,T=`sveltekit:history`,E=`sveltekit:navigation`,D={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},O=location.origin;function he(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){let e=document.getElementsByTagName(`base`);t=e.length?e[0].href:document.URL}return new URL(e,t)}function k(){return{x:pageXOffset,y:pageYOffset}}function A(e,t){return e.getAttribute(`data-sveltekit-${t}`)}var ge={...D,"":D.hover};function _e(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function ve(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()===`A`&&e.hasAttribute(`href`))return e;e=_e(e)}}function ye(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){let e=location.hash.split(`#`)[1]||`/`;r.hash=`#${e}${r.hash}`}}catch{}let i=e instanceof SVGAElement?e.target.baseVal:e.target,a=!r||!!i||Ce(r,t,n)||(e.getAttribute(`rel`)||``).split(/\s+/).includes(`external`),o=r?.origin===O&&e.hasAttribute(`download`);return{url:r,external:a,target:i,download:o}}function j(e){let t=null,n=null,r=null,i=null,a=null,o=null,s=e;for(;s&&s!==document.documentElement;)r===null&&(r=A(s,`preload-code`)),i===null&&(i=A(s,`preload-data`)),t===null&&(t=A(s,`keepfocus`)),n===null&&(n=A(s,`noscroll`)),a===null&&(a=A(s,`reload`)),o===null&&(o=A(s,`replacestate`)),s=_e(s);function c(e){switch(e){case``:case`true`:return!0;case`off`:case`false`:return!1;default:return}}return{preload_code:ge[r??`off`],preload_data:ge[i??`off`],keepfocus:c(t),noscroll:c(n),reload:c(a),replace_state:c(o)}}function be(e){let t=i(e),n=!0;function r(){n=!0,t.update(e=>e)}function a(e){n=!1,t.set(e)}function o(e){let r;return t.subscribe(t=>{(r===void 0||n&&t!==r)&&e(r=t)})}return{notify:r,set:a,subscribe:o}}var xe={v:g};function Se(){let{set:e,subscribe:t}=i(!1);async function n(){clearTimeout(void 0);try{let t=await fetch(`${ue}/_app/version.json`,{headers:{pragma:`no-cache`,"cache-control":`no-cache`}});if(!t.ok)return!1;let n=(await t.json()).version!==de;return n&&(e(!0),xe.v(),clearTimeout(void 0)),n}catch{return!1}}return{subscribe:t,check:n}}function Ce(e,t,n){return e.origin!==O||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function we(e){}var Te=new Set([`load`,`prerender`,`csr`,`ssr`,`trailingSlash`,`config`]);new Set([...Te,`entries`]);var Ee=new Set([...Te]);new Set([...Ee,`actions`,`entries`]),new Set([`GET`,`POST`,`PATCH`,`PUT`,`DELETE`,`OPTIONS`,`HEAD`,`fallback`,`prerender`,`trailingSlash`,`config`,`entries`]);function De(e){return e.filter(e=>e!=null)}function Oe(e,t){return e+`/`+t}function ke(e){return e instanceof c||e instanceof u?e.status:500}function Ae(e){return e instanceof u?e.text:`Internal Error`}var M,N,je,Me=a.toString().includes(`$$`)||/function \w+\(\) \{\}/.test(a.toString()),Ne=`a:`;Me?(M={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(Ne)},N={current:null},je={current:!1}):(M=new class{#e=e({});get data(){return t(this.#e)}set data(e){n(this.#e,e)}#t=e(null);get form(){return t(this.#t)}set form(e){n(this.#t,e)}#n=e(null);get error(){return t(this.#n)}set error(e){n(this.#n,e)}#r=e({});get params(){return t(this.#r)}set params(e){n(this.#r,e)}#i=e({id:null});get route(){return t(this.#i)}set route(e){n(this.#i,e)}#a=e({});get state(){return t(this.#a)}set state(e){n(this.#a,e)}#o=e(-1);get status(){return t(this.#o)}set status(e){n(this.#o,e)}#s=e(new URL(Ne));get url(){return t(this.#s)}set url(e){n(this.#s,e)}},N=new class{#e=e(null);get current(){return t(this.#e)}set current(e){n(this.#e,e)}},je=new class{#e=e(!1);get current(){return t(this.#e)}set current(e){n(this.#e,e)}},xe.v=()=>je.current=!0);function Pe(e){Object.assign(M,e)}var Fe={spanContext(){return Ie},setAttribute(){return this},setAttributes(){return this},addEvent(){return this},setStatus(){return this},updateName(){return this},end(){return this},isRecording(){return!1},recordException(){return this},addLink(){return this},addLinks(){return this}},Ie={traceId:``,spanId:``,traceFlags:0},{onMount:Le,tick:Re}=o,ze=new Set([`icon`,`shortcut icon`,`apple-touch-icon`]),P=null,F=ce(`sveltekit:scroll`)??{},I=ce(`sveltekit:snapshot`)??{},L={url:be({}),page:be({}),navigating:i(null),updated:Se()};function Be(e){F[e]=k()}function Ve(e,t){let n=e+1;for(;F[n];)delete F[n],n+=1;for(n=t+1;I[n];)delete I[n],n+=1}function R(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(g)}async function He(){if(`serviceWorker`in navigator){let e=await navigator.serviceWorker.getRegistration(w||`/`);e&&await e.update()}}var Ue,We,z,B,Ge,V,H=[],U=[],W=null;function Ke(){W?.fork?.then(e=>e?.discard()),W=null}var qe=new Map,Je=new Set,Ye=new Set,G=new Set,K={branch:[],error:null,url:null,nav:null},Xe=!1,Ze=!1,Qe=!0,q=!1,J=!1,$e=!1,et=!1,tt,Y,X,Z,nt=new Set,rt=new Map,it=new Map;async function at(e,t,n){globalThis.__sveltekit_pfoimq&&(globalThis.__sveltekit_pfoimq.query,globalThis.__sveltekit_pfoimq.prerender),document.URL!==location.href&&(location.href=location.href),V=e,await e.hooks.init?.(),Ue=se(e),B=document.documentElement,Ge=t,We=e.nodes[0],z=e.nodes[1],We(),z(),Y=history.state?.[T],X=history.state?.[E],Y||(Y=X=Date.now(),history.replaceState({...history.state,[T]:Y,[E]:X},``));let r=F[Y];function i(){r&&(history.scrollRestoration=`manual`,scrollTo(r.x,r.y))}n?(i(),await Pt(Ge,n)):(await Q({type:`enter`,url:he(V.hash?Bt(new URL(location.href)):location.href),replace_state:!0}),i()),Nt()}function ot(){H.length=0,et=!1}function st(e){U.some(e=>e?.snapshot)&&(I[e]=U.map(e=>e?.snapshot?.capture()))}function ct(e){I[e]?.forEach((e,t)=>{U[t]?.snapshot?.restore(e)})}function lt(){Be(Y),le(pe,F),st(X),le(fe,I)}async function ut(e,t,n,r){let i,a;t.invalidateAll&&Ke(),await Q({type:`goto`,url:he(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:r,accept:()=>{if(t.invalidateAll){et=!0,i=new Set;for(let[e,t]of rt)for(let n of t.keys())i.add(Oe(e,n));a=new Set;for(let[e,t]of it)for(let n of t.keys())a.add(Oe(e,n))}t.invalidate&&t.invalidate.forEach(Mt)}}),t.invalidateAll&&s().then(s).then(()=>{for(let[e,t]of rt)for(let[n,{resource:r}]of t)i?.has(Oe(e,n))&&r.refresh();for(let[e,t]of it)for(let[n,{resource:r}]of t)a?.has(Oe(e,n))&&r.reconnect()})}async function dt(e){if(e.id!==W?.id){Ke();let t={};nt.add(t),W={id:e.id,token:t,promise:xt({...e,preload:t}).then(e=>(nt.delete(t),e.type===`loaded`&&e.state.error&&Ke(),e)),fork:null}}return W.promise}async function ft(e){let t=(await Tt(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(e=>e[1]()))}async function pt(e,t,n){let r={params:K.params,route:{id:K.route?.id??null},url:new URL(location.href)};if(K={...e.state,nav:r},Pe(e.props.page),tt=new V.root({target:t,props:{...e.props,stores:L,components:U},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),ct(X),n){let e={from:null,to:{...r,scroll:F[Y]??k()},willUnload:!1,type:`enter`,complete:Promise.resolve()};G.forEach(t=>t(e))}Ze=!0}async function mt({url:e,params:t,branch:n,errors:r,status:i,error:a,route:o,form:s}){let c=`never`;if(w&&(e.pathname===w||e.pathname===w+`/`))c=`always`;else for(let e of n)e?.slash!==void 0&&(c=e.slash);e.pathname=d(e.pathname,c),e.search=e.search;let l={type:`loaded`,state:{url:e,params:t,branch:n,error:a,route:o},props:{constructors:De(n).map(e=>e.node.component),page:zt(M)}};s!==void 0&&(l.props.form=s);let u={},f=!M,p=0;for(let e=0;e<Math.max(n.length,K.branch.length);e+=1){let t=n[e],r=K.branch[e];t?.data!==r?.data&&(f=!0),t&&(u={...u,...t.data},f&&(l.props[`data_${p}`]=u),p+=1)}return(!K.url||e.href!==K.url.href||K.error!==a||s!==void 0&&s!==M.form||f)&&(l.props.page={error:a,params:t,route:{id:o?.id??null},state:{},status:i,url:new URL(e),form:s??null,data:f?u:M.data}),l}async function ht({loader:e,parent:t,url:n,params:r,route:i,server_data_node:a}){let o=null,s=!0,c={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},l=await e();if(l.universal?.load){function e(...e){for(let t of e){let{href:e}=new URL(t,n);c.dependencies.add(e)}}let u={tracing:{enabled:!1,root:Fe,current:Fe},route:new Proxy(i,{get:(e,t)=>(s&&(c.route=!0),e[t])}),params:new Proxy(r,{get:(e,t)=>(s&&c.params.add(t),e[t])}),data:a?.data??null,url:h(n,()=>{s&&(c.url=!0)},e=>{s&&c.search_params.add(e)},V.hash),async fetch(t,r){t instanceof Request&&(r={body:t.method===`GET`||t.method===`HEAD`?void 0:await t.blob(),cache:t.cache,credentials:t.credentials,headers:[...t.headers].length>0?t?.headers:void 0,integrity:t.integrity,keepalive:t.keepalive,method:t.method,mode:t.mode,redirect:t.redirect,referrer:t.referrer,referrerPolicy:t.referrerPolicy,signal:t.signal,...r});let{resolved:i,promise:a}=gt(t,r,n);return s&&e(i.href),a},setHeaders:g,depends:e,parent(){return s&&(c.parent=!0),t()},untrack(e){s=!1;try{return e()}finally{s=!0}}};o=await l.universal.load.call(null,u)??null}return{node:l,loader:e,server:a,universal:l.universal?.load?{type:`data`,data:o,uses:c}:null,data:o??a?.data??null,slash:l.universal?.trailingSlash??a?.slash}}function gt(e,t,n){let r=e instanceof Request?e.url:e,i=new URL(r,n);return i.origin===n.origin&&(r=i.href.slice(n.origin.length)),{resolved:i,promise:Ze?x(r,i.href,t):b(r,t)}}function _t(e,t,n,r,i,a){if(et)return!0;if(!i)return!1;if(i.parent&&e||i.route&&t||i.url&&n)return!0;for(let e of i.search_params)if(r.has(e))return!0;for(let e of i.params)if(a[e]!==K.params[e])return!0;for(let e of i.dependencies)if(H.some(t=>t(new URL(e))))return!0;return!1}function vt(e,t){return e?.type===`data`?e:e?.type===`skip`?t??null:null}function yt(e,t){if(!e)return new Set(t.searchParams.keys());let n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(let r of n){let i=e.searchParams.getAll(r),a=t.searchParams.getAll(r);i.every(e=>a.includes(e))&&a.every(e=>i.includes(e))&&n.delete(r)}return n}function bt({error:e,url:t,route:n,params:r}){return{type:`loaded`,state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:zt(M),constructors:[]}}}async function xt({id:e,invalidating:t,url:n,params:r,route:i,preload:a}){if(W?.id===e)return nt.delete(W.token),W.promise;let{errors:o,layouts:s,leaf:u}=i,d=[...s,u];o.forEach(e=>e?.().catch(g)),d.forEach(e=>e?.[1]().catch(g));let f=K.url?e!==Dt(K.url):!1,p=K.route?i.id!==K.route.id:!1,m=yt(K.url,n),h=!1,_=d.map(async(e,t)=>{if(!e)return;let a=K.branch[t];return e[1]===a?.loader&&!_t(h,p,f,m,a.universal?.uses,r)?a:(h=!0,ht({loader:e[1],url:n,params:r,route:i,parent:async()=>{let e={};for(let n=0;n<t;n+=1)Object.assign(e,(await _[n])?.data);return e},server_data_node:vt(e[0]?{type:`skip`}:null,e[0]?a?.server:void 0)}))});for(let e of _)e.catch(g);let v=[];for(let e=0;e<d.length;e+=1)if(d[e])try{v.push(await _[e])}catch(t){if(t instanceof l)return{type:`redirect`,location:t.location};if(nt.has(a))return bt({error:await $(t,{params:r,url:n,route:{id:i.id}}),url:n,params:r,route:i});let s=ke(t),u;if(t instanceof c)u=t.body;else{if(await L.updated.check())return await He(),await R(n);u=await $(t,{params:r,url:n,route:{id:i.id}})}let d=await St(e,v,o);return d?mt({url:n,params:r,branch:v.slice(0,d.idx).concat(d.node),errors:o,status:s,error:u,route:i}):await kt(n,{id:i.id},u,s)}else v.push(void 0);return mt({url:n,params:r,branch:v,errors:o,status:200,error:null,route:i,form:t?void 0:null})}async function St(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)--r;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function Ct({status:e,error:t,url:n,route:r}){let i={};try{return mt({url:n,params:i,branch:[await ht({loader:We,url:n,params:i,route:r,parent:()=>Promise.resolve({}),server_data_node:vt(null)}),{node:await z(),loader:z,universal:null,server:null,data:null}],status:e,error:t,errors:[],route:null})}catch(e){if(e instanceof l)return ut(new URL(e.location,location.href),{},0);throw e}}async function wt(e){let t=e.href;if(qe.has(t))return qe.get(t);let n;try{let r=(async()=>{let t=await V.hooks.reroute({url:new URL(e),fetch:async(t,n)=>gt(t,n,e).promise})??e;if(typeof t==`string`){let n=new URL(e);V.hash?n.hash=t:n.pathname=t,t=n}return t})();qe.set(t,r),n=await r}catch{qe.delete(t);return}return n}async function Tt(e,t){if(e&&!Ce(e,w,V.hash)){let n=await wt(e);if(!n)return;let r=Et(n);for(let n of Ue){let i=n.exec(r);if(i)return{id:Dt(e),invalidating:t,route:n,params:p(i),url:e}}}}function Et(e){return f(V.hash?e.hash.replace(/^#/,``).replace(/[?#].+/,``):e.pathname.slice(w.length))||`/`}function Dt(e){return(V.hash?e.hash.replace(/^#/,``):e.pathname)+e.search}function Ot({url:e,type:t,intent:n,delta:r,event:i,scroll:a}){let o=!1,s=Rt(K,n,e,t,a??null);r!==void 0&&(s.navigation.delta=r),i!==void 0&&(s.navigation.event=i);let c={...s.navigation,cancel:()=>{o=!0,s.reject(Error(`navigation cancelled`))}};return q||Je.forEach(e=>e(c)),o?null:s}async function Q({type:e,url:t,popped:n,keepfocus:i,noscroll:a,replace_state:o,state:c={},redirect_count:l=0,nav_token:d={},accept:f=g,block:p=g,event:m}){let h=Z;Z=d;let _=await Tt(t,!1),v=e===`enter`?Rt(K,_,t,e):Ot({url:t,type:e,delta:n?.delta,intent:_,scroll:n?.scroll,event:m});if(!v){p(),Z===d&&(Z=h);return}let ee=Y,y=X;f(),q=!0,Ze&&v.navigation.type!==`enter`&&L.navigating.set(N.current=v.navigation);let b=_&&await xt(_);if(!b){if(Ce(t,w,V.hash))return await R(t,o);b=await kt(t,{id:null},await $(new u(404,`Not Found`,`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,o)}if(t=_?.url||t,Z!==d)return v.reject(Error(`navigation aborted`)),!1;if(b.type===`redirect`){if(l<20){await Q({type:e,url:new URL(b.location,t),popped:n,keepfocus:i,noscroll:a,replace_state:o,state:c,redirect_count:l+1,nav_token:d}),v.fulfil(void 0);return}b=await Ct({status:500,error:await $(Error(`Redirect loop`),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else b.props.page.status>=400&&await L.updated.check()&&(await He(),await R(t,o));if(ot(),Be(ee),st(y),b.props.page.url.pathname!==t.pathname&&(t.pathname=b.props.page.url.pathname),c=n?n.state:c,!n){let e=+!o,n={[T]:Y+=e,[E]:X+=e,[me]:c};(o?history.replaceState:history.pushState).call(history,n,``,t),o||Ve(Y,X)}let x=_&&W?.id===_.id?W.fork:null;W?.fork&&!x&&Ke(),W=null,b.props.page.state=c;let S;if(Ze){let e=(await Promise.all(Array.from(Ye,e=>e(v.navigation)))).filter(e=>typeof e==`function`);if(e.length>0){function t(){e.forEach(e=>{G.delete(e)})}e.push(t),e.forEach(e=>{G.add(e)})}let n=v.navigation.to;K={...b.state,nav:{params:n.params,route:n.route,url:n.url}},b.props.page&&(b.props.page.url=t);let i=x&&await x;i?S=i.commit():(P=null,tt.$set(b.props),P&&Object.assign(b.props.page,P),Pe(b.props.page),S=r?.()),$e=!0}else await pt(b,Ge,!1);let{activeElement:te}=document;if(await S,await s(),await s(),Z!==d)return v.reject(Error(`navigation aborted`)),!1;b.props.page&&P&&Object.assign(b.props.page,P);let C=null;if(Qe){let e=n?n.scroll:a?k():null;e?scrollTo(e.x,e.y):(C=t.hash&&document.getElementById(Vt(t)))?C.scrollIntoView():scrollTo(0,0)}let ne=document.activeElement!==te&&document.activeElement!==document.body;!i&&!ne&&Lt(t,!C),Qe=!0,q=!1,e===`popstate`&&ct(X),v.fulfil(void 0),v.navigation.to&&(v.navigation.to.scroll=k()),G.forEach(e=>e(v.navigation)),L.navigating.set(N.current=null)}async function kt(e,t,n,r,i){return e.origin===O&&e.pathname===location.pathname&&!Xe?await Ct({status:r,error:n,url:e,route:t}):await R(e,i)}function At(){let e,t={element:void 0,href:void 0},n;B.addEventListener(`mousemove`,t=>{let n=t.target;clearTimeout(e),e=setTimeout(()=>{a(n,D.hover)},20)});function r(e){e.defaultPrevented||a(e.composedPath()[0],D.tap)}B.addEventListener(`mousedown`,r),B.addEventListener(`touchstart`,r,{passive:!0});let i=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&(ft(new URL(t.target.href)),i.unobserve(t.target))},{threshold:0});async function a(e,r){let i=ve(e,B),a=i===t.element&&i?.href===t.href&&r>=n;if(!i||a)return;let{url:o,external:s,download:c}=ye(i,w,V.hash);if(s||c)return;let l=j(i),u=o&&Dt(K.url)===Dt(o);if(!(l.reload||u))if(r<=l.preload_data){t={element:i,href:i.href},n=D.tap;let e=await Tt(o,!1);if(!e)return;dt(e)}else r<=l.preload_code&&(t={element:i,href:i.href},n=r,ft(o))}function o(){i.disconnect();for(let e of B.querySelectorAll(`a`)){let{url:t,external:n,download:r}=ye(e,w,V.hash);if(n||r)continue;let a=j(e);a.reload||(a.preload_code===D.viewport&&i.observe(e),a.preload_code===D.eager&&ft(t))}}G.add(o),o()}function $(e,t){if(e instanceof c)return e.body;let n=ke(e),r=Ae(e);return V.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function jt(e,t={}){return e=new URL(he(e)),e.origin===O?ut(e,t,0):Promise.reject(Error(`goto: invalid URL`))}function Mt(e){if(typeof e==`function`)H.push(e);else{let{href:t}=new URL(e,location.href);H.push(e=>e.href===t)}}function Nt(){history.scrollRestoration=`manual`,addEventListener(`beforeunload`,e=>{let t=!1;if(lt(),!q){let e=Rt(K,void 0,null,`leave`),n={...e.navigation,cancel:()=>{t=!0,e.reject(Error(`navigation cancelled`))}};Je.forEach(e=>e(n))}t?(e.preventDefault(),e.returnValue=``):history.scrollRestoration=`auto`}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&<()}),!navigator.connection?.saveData&&!/2g/.test(navigator.connection?.effectiveType)&&At(),B.addEventListener(`click`,async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;let n=ve(t.composedPath()[0],B);if(!n)return;let{url:r,external:i,target:a,download:o}=ye(n,w,V.hash);if(!r)return;if(a===`_parent`||a===`_top`){if(window.parent!==window)return}else if(a&&a!==`_self`)return;let s=j(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol===`https:`||r.protocol===`http:`)||o)return;let[c,l]=(V.hash?r.hash.replace(/^#/,``):r.href).split(`#`),u=c===m(location);if(i||s.reload&&(!u||!l)){Ot({url:r,type:`link`,event:t})?q=!0:t.preventDefault();return}if(l!==void 0&&u){let[,i]=K.url.href.split(`#`);if(i===l){if(t.preventDefault(),l===``||l===`top`&&n.ownerDocument.getElementById(`top`)===null)scrollTo({top:0});else{let e=n.ownerDocument.getElementById(decodeURIComponent(l));e&&(e.scrollIntoView(),e.focus())}return}if(J=!0,Be(Y),e(r),!s.replace_state)return;J=!1}t.preventDefault(),await new Promise(e=>{requestAnimationFrame(()=>{setTimeout(e,0)}),setTimeout(e,100)}),await Q({type:`link`,url:r,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??r.href===location.href,event:t})}),B.addEventListener(`submit`,e=>{if(e.defaultPrevented)return;let t=HTMLFormElement.prototype.cloneNode.call(e.target),n=e.submitter;if((n?.formTarget||t.target)===`_blank`||(n?.formMethod||t.method)!==`get`)return;let r=new URL(n?.hasAttribute(`formaction`)&&n?.formAction||t.action);if(Ce(r,w,!1))return;let i=e.target,a=j(i);if(a.reload)return;e.preventDefault(),e.stopPropagation();let o=new FormData(i,n);r.search=new URLSearchParams(o).toString(),Q({type:`form`,url:r,keepfocus:a.keepfocus,noscroll:a.noscroll,replace_state:a.replace_state??r.href===location.href,event:e})}),addEventListener(`popstate`,async t=>{if(!It)if(t.state?.[`sveltekit:history`]){let n=t.state[T];if(Z={},n===Y)return;let r=F[n],i=t.state[`sveltekit:states`]??{},a=new URL(t.state[`sveltekit:pageurl`]??location.href),o=t.state[E],s=K.url?m(location)===m(K.url):!1;if(o===X&&($e||s)){i!==M.state&&(M.state=i),e(a),F[Y]=k(),r&&scrollTo(r.x,r.y),Y=n;return}let c=n-Y;await Q({type:`popstate`,url:a,popped:{state:i,scroll:r,delta:c},accept:()=>{Y=n,X=o},block:()=>{history.go(-c)},nav_token:Z,event:t})}else J||(e(new URL(location.href)),V.hash&&location.reload())}),addEventListener(`hashchange`,()=>{J&&(J=!1,history.replaceState({...history.state,[T]:++Y,[E]:X},``,location.href))});for(let e of document.querySelectorAll(`link`))ze.has(e.rel)&&(e.href=e.href);addEventListener(`pageshow`,e=>{e.persisted&&L.navigating.set(N.current=null)});function e(e){K.url=M.url=e,L.page.set(zt(M)),L.page.notify()}}async function Pt(e,{status:t=200,error:n,node_ids:r,params:i,route:a,server_route:o,data:s,form:c}){Xe=!0;let u=new URL(location.href),d;({params:i={},route:a={id:null}}=await Tt(u,!1)||{}),d=Ue.find(({id:e})=>e===a.id);let f,p=!0;try{let e=r.map(async(t,n)=>{let r=s[n];return r?.uses&&(r.uses=Ft(r.uses)),ht({loader:V.nodes[t],url:u,params:i,route:a,parent:async()=>{let t={};for(let r=0;r<n;r+=1)Object.assign(t,(await e[r]).data);return t},server_data_node:vt(r)})}),o=await Promise.all(e);if(d){let e=d.layouts;for(let t=0;t<e.length;t++)e[t]||o.splice(t,0,void 0)}f=await mt({url:u,params:i,branch:o,status:t,error:n,errors:d?.errors,form:c,route:d??null})}catch(t){if(t instanceof l){await R(new URL(t.location,location.href));return}f=await Ct({status:ke(t),error:await $(t,{url:u,params:i,route:a}),url:u,route:a}),e.textContent=``,p=!1}f.props.page&&(f.props.page.state={}),await pt(f,e,p)}function Ft(e){return{dependencies:new Set(e?.dependencies??[]),params:new Set(e?.params??[]),parent:!!e?.parent,route:!!e?.route,url:!!e?.url,search_params:new Set(e?.search_params??[])}}var It=!1;function Lt(e,t=!0){let n=document.querySelector(`[autofocus]`);if(n)n.focus();else{let n=Vt(e);if(n&&document.getElementById(n)){let{x:r,y:i}=k();setTimeout(()=>{let a=history.state;It=!0,location.replace(new URL(`#${n}`,location.href)),history.replaceState(a,``,e),t&&scrollTo(r,i),It=!1})}else{let e=document.body,t=e.getAttribute(`tabindex`);e.tabIndex=-1,e.focus({preventScroll:!0,focusVisible:!1}),t===null?e.removeAttribute(`tabindex`):e.setAttribute(`tabindex`,t)}let r=getSelection();if(r&&r.type!==`None`){let e=[];for(let t=0;t<r.rangeCount;t+=1)e.push(r.getRangeAt(t));setTimeout(()=>{if(r.rangeCount===e.length){for(let t=0;t<r.rangeCount;t+=1){let n=e[t],i=r.getRangeAt(t);if(n.commonAncestorContainer!==i.commonAncestorContainer||n.startContainer!==i.startContainer||n.endContainer!==i.endContainer||n.startOffset!==i.startOffset||n.endOffset!==i.endOffset)return}r.removeAllRanges()}})}}}function Rt(e,t,n,r,i=null){let a,o,s=new Promise((e,t)=>{a=e,o=t});return s.catch(g),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:k()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:i},willUnload:!t,type:r,complete:s},fulfil:a,reject:o}}function zt(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function Bt(e){let t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function Vt(e){let t;if(V.hash){let[,,n]=e.hash.split(`#`,3);t=n??``}else t=e.hash.slice(1);return decodeURIComponent(t)}export{M as a,l as c,N as i,at as n,je as o,L as r,we as s,jt as t};
|
|
1
|
+
import{$ as e,L as t,Q as n,R as r,it as i,r as a,t as o,z as s}from"./DF6QYH3p.js";var c=class{constructor(e,t){this.status=e,typeof t==`string`?this.body={message:t}:t?this.body=t:this.body={message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}},l=class{constructor(e,t){try{new Headers({location:t})}catch{throw Error(`Invalid redirect location ${JSON.stringify(t)}: this string contains characters that cannot be used in HTTP headers`)}this.status=e,this.location=t}},u=class extends Error{constructor(e,t,n){super(n),this.status=e,this.text=t}};new URL(`sveltekit-internal://`);function d(e,t){return e===`/`||t===`ignore`?e:t===`never`?e.endsWith(`/`)?e.slice(0,-1):e:t===`always`&&!e.endsWith(`/`)?e+`/`:e}function f(e){return e.split(`%25`).map(decodeURI).join(`%25`)}function p(e){for(let t in e)e[t]=decodeURIComponent(e[t]);return e}function m({href:e}){return e.split(`#`)[0]}function h(e,t,n,r=!1){let i=new URL(e);Object.defineProperty(i,"searchParams",{value:new Proxy(i.searchParams,{get(e,r){if(r===`get`||r===`getAll`||r===`has`)return(t,...i)=>(n(t),e[r](t,...i));t();let i=Reflect.get(e,r);return typeof i==`function`?i.bind(e):i}}),enumerable:!0,configurable:!0});let a=[`href`,`pathname`,`search`,`toString`,`toJSON`];r&&a.push(`hash`);for(let n of a)Object.defineProperty(i,n,{get(){return t(),e[n]},enumerable:!0,configurable:!0});return i}function g(){}function _(...e){let t=5381;for(let n of e)if(typeof n==`string`){let e=n.length;for(;e;)t=t*33^n.charCodeAt(--e)}else if(ArrayBuffer.isView(n)){let e=new Uint8Array(n.buffer,n.byteOffset,n.byteLength),r=e.length;for(;r;)t=t*33^e[--r]}else throw TypeError(`value must be a string or TypedArray`);return(t>>>0).toString(36)}new TextEncoder;function v(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}var ee=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||`GET`)!==`GET`&&y.delete(S(e)),ee(e,t));var y=new Map;function b(e,t){let n=S(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:e,...t}=JSON.parse(r.textContent),i=r.getAttribute(`data-ttl`);return i&&y.set(n,{body:e,init:t,ttl:1e3*Number(i)}),r.getAttribute(`data-b64`)!==null&&(e=v(e)),Promise.resolve(new Response(e,t))}return window.fetch(e,t)}function x(e,t,n){if(y.size>0){let t=S(e,n),r=y.get(t);if(r){if(performance.now()<r.ttl&&[`default`,`force-cache`,`only-if-cached`,void 0].includes(n?.cache))return new Response(r.body,r.init);y.delete(t)}}return window.fetch(t,n)}function S(e,t){let n=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t?.headers||t?.body){let e=[];t.headers&&e.push([...new Headers(t.headers)].join(`,`)),t.body&&(typeof t.body==`string`||ArrayBuffer.isView(t.body))&&e.push(t.body),n+=`[data-hash="${_(...e)}"]`}return n}var te=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/,C=/^\/\((?:.+)\)$/;function ne(e){let t=[];return{pattern:e===`/`||C.test(e)?/^\/$/:RegExp(`^${ie(e).map(e=>{let n=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(e);if(n)return t.push({name:n[1],matcher:n[2],optional:!1,rest:!0,chained:!0}),`(?:/([^]*))?`;let r=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(e);if(r)return t.push({name:r[1],matcher:r[2],optional:!0,rest:!1,chained:!0}),`(?:/([^/]+))?`;if(!e)return;let i=e.split(/\[(.+?)\](?!\])/);return`/`+i.map((e,n)=>{if(n%2){if(e.startsWith(`x+`))return oe(String.fromCharCode(parseInt(e.slice(2),16)));if(e.startsWith(`u+`))return oe(String.fromCharCode(...e.slice(2).split(`-`).map(e=>parseInt(e,16))));let[,r,a,o,s]=te.exec(e);return t.push({name:o,matcher:s,optional:!!r,rest:!!a,chained:a?n===1&&i[0]===``:!1}),a?`([^]*?)`:r?`([^/]*)?`:`([^/]+?)`}return oe(e)}).join(``)}).join(``)}/?$`),params:t}}function re(e){return e!==``&&!/^\([^)]+\)$/.test(e)}function ie(e){return e.slice(1).split(`/`).filter(re)}function ae(e,t,n){let r={},i=e.slice(1),a=i.filter(e=>e!==void 0),o=0;for(let e=0;e<t.length;e+=1){let s=t[e],c=i[e-o];if(s.chained&&s.rest&&o&&(c=i.slice(e-o,e+1).filter(e=>e).join(`/`),o=0),c===void 0)if(s.rest)c=``;else continue;if(!s.matcher||n[s.matcher](c)){r[s.name]=c;let n=t[e+1],l=i[e+1];n&&!n.rest&&n.optional&&l&&s.chained&&(o=0),!n&&!l&&Object.keys(r).length===a.length&&(o=0);continue}if(s.optional&&s.chained){o++;continue}return}if(!o)return r}function oe(e){return e.normalize().replace(/[[\]]/g,`\\$&`).replace(/%/g,`%25`).replace(/\//g,`%2[Ff]`).replace(/\?/g,`%3[Ff]`).replace(/#/g,`%23`).replace(/[.*+?^${}()|\\]/g,`\\$&`)}function se({nodes:e,server_loads:t,dictionary:n,matchers:r}){let i=new Set(t);return Object.entries(n).map(([t,[n,i,s]])=>{let{pattern:c,params:l}=ne(t),u={id:t,exec:e=>{let t=c.exec(e);if(t)return ae(t,l,r)},errors:[1,...s||[]].map(t=>e[t]),layouts:[0,...i||[]].map(o),leaf:a(n)};return u.errors.length=u.layouts.length=Math.max(u.errors.length,u.layouts.length),u});function a(t){let n=t<0;return n&&(t=~t),[n,e[t]]}function o(t){return t===void 0?t:[i.has(t),e[t]]}}function ce(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function le(e,t,n=JSON.stringify){let r=n(t);try{sessionStorage[e]=r}catch{}}var w=globalThis.__sveltekit_lebd2t?.base??``,ue=globalThis.__sveltekit_lebd2t?.assets??w??``,de=`1779838255494`,fe=`sveltekit:snapshot`,pe=`sveltekit:scroll`,me=`sveltekit:states`,T=`sveltekit:history`,E=`sveltekit:navigation`,D={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},O=location.origin;function he(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){let e=document.getElementsByTagName(`base`);t=e.length?e[0].href:document.URL}return new URL(e,t)}function k(){return{x:pageXOffset,y:pageYOffset}}function A(e,t){return e.getAttribute(`data-sveltekit-${t}`)}var ge={...D,"":D.hover};function _e(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function ve(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()===`A`&&e.hasAttribute(`href`))return e;e=_e(e)}}function ye(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){let e=location.hash.split(`#`)[1]||`/`;r.hash=`#${e}${r.hash}`}}catch{}let i=e instanceof SVGAElement?e.target.baseVal:e.target,a=!r||!!i||Ce(r,t,n)||(e.getAttribute(`rel`)||``).split(/\s+/).includes(`external`),o=r?.origin===O&&e.hasAttribute(`download`);return{url:r,external:a,target:i,download:o}}function j(e){let t=null,n=null,r=null,i=null,a=null,o=null,s=e;for(;s&&s!==document.documentElement;)r===null&&(r=A(s,`preload-code`)),i===null&&(i=A(s,`preload-data`)),t===null&&(t=A(s,`keepfocus`)),n===null&&(n=A(s,`noscroll`)),a===null&&(a=A(s,`reload`)),o===null&&(o=A(s,`replacestate`)),s=_e(s);function c(e){switch(e){case``:case`true`:return!0;case`off`:case`false`:return!1;default:return}}return{preload_code:ge[r??`off`],preload_data:ge[i??`off`],keepfocus:c(t),noscroll:c(n),reload:c(a),replace_state:c(o)}}function be(e){let t=i(e),n=!0;function r(){n=!0,t.update(e=>e)}function a(e){n=!1,t.set(e)}function o(e){let r;return t.subscribe(t=>{(r===void 0||n&&t!==r)&&e(r=t)})}return{notify:r,set:a,subscribe:o}}var xe={v:g};function Se(){let{set:e,subscribe:t}=i(!1);async function n(){clearTimeout(void 0);try{let t=await fetch(`${ue}/_app/version.json`,{headers:{pragma:`no-cache`,"cache-control":`no-cache`}});if(!t.ok)return!1;let n=(await t.json()).version!==de;return n&&(e(!0),xe.v(),clearTimeout(void 0)),n}catch{return!1}}return{subscribe:t,check:n}}function Ce(e,t,n){return e.origin!==O||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function we(e){}var Te=new Set([`load`,`prerender`,`csr`,`ssr`,`trailingSlash`,`config`]);new Set([...Te,`entries`]);var Ee=new Set([...Te]);new Set([...Ee,`actions`,`entries`]),new Set([`GET`,`POST`,`PATCH`,`PUT`,`DELETE`,`OPTIONS`,`HEAD`,`fallback`,`prerender`,`trailingSlash`,`config`,`entries`]);function De(e){return e.filter(e=>e!=null)}function Oe(e,t){return e+`/`+t}function ke(e){return e instanceof c||e instanceof u?e.status:500}function Ae(e){return e instanceof u?e.text:`Internal Error`}var M,N,je,Me=a.toString().includes(`$$`)||/function \w+\(\) \{\}/.test(a.toString()),Ne=`a:`;Me?(M={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(Ne)},N={current:null},je={current:!1}):(M=new class{#e=e({});get data(){return t(this.#e)}set data(e){n(this.#e,e)}#t=e(null);get form(){return t(this.#t)}set form(e){n(this.#t,e)}#n=e(null);get error(){return t(this.#n)}set error(e){n(this.#n,e)}#r=e({});get params(){return t(this.#r)}set params(e){n(this.#r,e)}#i=e({id:null});get route(){return t(this.#i)}set route(e){n(this.#i,e)}#a=e({});get state(){return t(this.#a)}set state(e){n(this.#a,e)}#o=e(-1);get status(){return t(this.#o)}set status(e){n(this.#o,e)}#s=e(new URL(Ne));get url(){return t(this.#s)}set url(e){n(this.#s,e)}},N=new class{#e=e(null);get current(){return t(this.#e)}set current(e){n(this.#e,e)}},je=new class{#e=e(!1);get current(){return t(this.#e)}set current(e){n(this.#e,e)}},xe.v=()=>je.current=!0);function Pe(e){Object.assign(M,e)}var Fe={spanContext(){return Ie},setAttribute(){return this},setAttributes(){return this},addEvent(){return this},setStatus(){return this},updateName(){return this},end(){return this},isRecording(){return!1},recordException(){return this},addLink(){return this},addLinks(){return this}},Ie={traceId:``,spanId:``,traceFlags:0},{onMount:Le,tick:Re}=o,ze=new Set([`icon`,`shortcut icon`,`apple-touch-icon`]),P=null,F=ce(`sveltekit:scroll`)??{},I=ce(`sveltekit:snapshot`)??{},L={url:be({}),page:be({}),navigating:i(null),updated:Se()};function Be(e){F[e]=k()}function Ve(e,t){let n=e+1;for(;F[n];)delete F[n],n+=1;for(n=t+1;I[n];)delete I[n],n+=1}function R(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(g)}async function He(){if(`serviceWorker`in navigator){let e=await navigator.serviceWorker.getRegistration(w||`/`);e&&await e.update()}}var Ue,We,z,B,Ge,V,H=[],U=[],W=null;function Ke(){W?.fork?.then(e=>e?.discard()),W=null}var qe=new Map,Je=new Set,Ye=new Set,G=new Set,K={branch:[],error:null,url:null,nav:null},Xe=!1,Ze=!1,Qe=!0,q=!1,J=!1,$e=!1,et=!1,tt,Y,X,Z,nt=new Set,rt=new Map,it=new Map;async function at(e,t,n){globalThis.__sveltekit_lebd2t&&(globalThis.__sveltekit_lebd2t.query,globalThis.__sveltekit_lebd2t.prerender),document.URL!==location.href&&(location.href=location.href),V=e,await e.hooks.init?.(),Ue=se(e),B=document.documentElement,Ge=t,We=e.nodes[0],z=e.nodes[1],We(),z(),Y=history.state?.[T],X=history.state?.[E],Y||(Y=X=Date.now(),history.replaceState({...history.state,[T]:Y,[E]:X},``));let r=F[Y];function i(){r&&(history.scrollRestoration=`manual`,scrollTo(r.x,r.y))}n?(i(),await Pt(Ge,n)):(await Q({type:`enter`,url:he(V.hash?Bt(new URL(location.href)):location.href),replace_state:!0}),i()),Nt()}function ot(){H.length=0,et=!1}function st(e){U.some(e=>e?.snapshot)&&(I[e]=U.map(e=>e?.snapshot?.capture()))}function ct(e){I[e]?.forEach((e,t)=>{U[t]?.snapshot?.restore(e)})}function lt(){Be(Y),le(pe,F),st(X),le(fe,I)}async function ut(e,t,n,r){let i,a;t.invalidateAll&&Ke(),await Q({type:`goto`,url:he(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:r,accept:()=>{if(t.invalidateAll){et=!0,i=new Set;for(let[e,t]of rt)for(let n of t.keys())i.add(Oe(e,n));a=new Set;for(let[e,t]of it)for(let n of t.keys())a.add(Oe(e,n))}t.invalidate&&t.invalidate.forEach(Mt)}}),t.invalidateAll&&s().then(s).then(()=>{for(let[e,t]of rt)for(let[n,{resource:r}]of t)i?.has(Oe(e,n))&&r.refresh();for(let[e,t]of it)for(let[n,{resource:r}]of t)a?.has(Oe(e,n))&&r.reconnect()})}async function dt(e){if(e.id!==W?.id){Ke();let t={};nt.add(t),W={id:e.id,token:t,promise:xt({...e,preload:t}).then(e=>(nt.delete(t),e.type===`loaded`&&e.state.error&&Ke(),e)),fork:null}}return W.promise}async function ft(e){let t=(await Tt(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(e=>e[1]()))}async function pt(e,t,n){let r={params:K.params,route:{id:K.route?.id??null},url:new URL(location.href)};if(K={...e.state,nav:r},Pe(e.props.page),tt=new V.root({target:t,props:{...e.props,stores:L,components:U},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),ct(X),n){let e={from:null,to:{...r,scroll:F[Y]??k()},willUnload:!1,type:`enter`,complete:Promise.resolve()};G.forEach(t=>t(e))}Ze=!0}async function mt({url:e,params:t,branch:n,errors:r,status:i,error:a,route:o,form:s}){let c=`never`;if(w&&(e.pathname===w||e.pathname===w+`/`))c=`always`;else for(let e of n)e?.slash!==void 0&&(c=e.slash);e.pathname=d(e.pathname,c),e.search=e.search;let l={type:`loaded`,state:{url:e,params:t,branch:n,error:a,route:o},props:{constructors:De(n).map(e=>e.node.component),page:zt(M)}};s!==void 0&&(l.props.form=s);let u={},f=!M,p=0;for(let e=0;e<Math.max(n.length,K.branch.length);e+=1){let t=n[e],r=K.branch[e];t?.data!==r?.data&&(f=!0),t&&(u={...u,...t.data},f&&(l.props[`data_${p}`]=u),p+=1)}return(!K.url||e.href!==K.url.href||K.error!==a||s!==void 0&&s!==M.form||f)&&(l.props.page={error:a,params:t,route:{id:o?.id??null},state:{},status:i,url:new URL(e),form:s??null,data:f?u:M.data}),l}async function ht({loader:e,parent:t,url:n,params:r,route:i,server_data_node:a}){let o=null,s=!0,c={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},l=await e();if(l.universal?.load){function e(...e){for(let t of e){let{href:e}=new URL(t,n);c.dependencies.add(e)}}let u={tracing:{enabled:!1,root:Fe,current:Fe},route:new Proxy(i,{get:(e,t)=>(s&&(c.route=!0),e[t])}),params:new Proxy(r,{get:(e,t)=>(s&&c.params.add(t),e[t])}),data:a?.data??null,url:h(n,()=>{s&&(c.url=!0)},e=>{s&&c.search_params.add(e)},V.hash),async fetch(t,r){t instanceof Request&&(r={body:t.method===`GET`||t.method===`HEAD`?void 0:await t.blob(),cache:t.cache,credentials:t.credentials,headers:[...t.headers].length>0?t?.headers:void 0,integrity:t.integrity,keepalive:t.keepalive,method:t.method,mode:t.mode,redirect:t.redirect,referrer:t.referrer,referrerPolicy:t.referrerPolicy,signal:t.signal,...r});let{resolved:i,promise:a}=gt(t,r,n);return s&&e(i.href),a},setHeaders:g,depends:e,parent(){return s&&(c.parent=!0),t()},untrack(e){s=!1;try{return e()}finally{s=!0}}};o=await l.universal.load.call(null,u)??null}return{node:l,loader:e,server:a,universal:l.universal?.load?{type:`data`,data:o,uses:c}:null,data:o??a?.data??null,slash:l.universal?.trailingSlash??a?.slash}}function gt(e,t,n){let r=e instanceof Request?e.url:e,i=new URL(r,n);return i.origin===n.origin&&(r=i.href.slice(n.origin.length)),{resolved:i,promise:Ze?x(r,i.href,t):b(r,t)}}function _t(e,t,n,r,i,a){if(et)return!0;if(!i)return!1;if(i.parent&&e||i.route&&t||i.url&&n)return!0;for(let e of i.search_params)if(r.has(e))return!0;for(let e of i.params)if(a[e]!==K.params[e])return!0;for(let e of i.dependencies)if(H.some(t=>t(new URL(e))))return!0;return!1}function vt(e,t){return e?.type===`data`?e:e?.type===`skip`?t??null:null}function yt(e,t){if(!e)return new Set(t.searchParams.keys());let n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(let r of n){let i=e.searchParams.getAll(r),a=t.searchParams.getAll(r);i.every(e=>a.includes(e))&&a.every(e=>i.includes(e))&&n.delete(r)}return n}function bt({error:e,url:t,route:n,params:r}){return{type:`loaded`,state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:zt(M),constructors:[]}}}async function xt({id:e,invalidating:t,url:n,params:r,route:i,preload:a}){if(W?.id===e)return nt.delete(W.token),W.promise;let{errors:o,layouts:s,leaf:u}=i,d=[...s,u];o.forEach(e=>e?.().catch(g)),d.forEach(e=>e?.[1]().catch(g));let f=K.url?e!==Dt(K.url):!1,p=K.route?i.id!==K.route.id:!1,m=yt(K.url,n),h=!1,_=d.map(async(e,t)=>{if(!e)return;let a=K.branch[t];return e[1]===a?.loader&&!_t(h,p,f,m,a.universal?.uses,r)?a:(h=!0,ht({loader:e[1],url:n,params:r,route:i,parent:async()=>{let e={};for(let n=0;n<t;n+=1)Object.assign(e,(await _[n])?.data);return e},server_data_node:vt(e[0]?{type:`skip`}:null,e[0]?a?.server:void 0)}))});for(let e of _)e.catch(g);let v=[];for(let e=0;e<d.length;e+=1)if(d[e])try{v.push(await _[e])}catch(t){if(t instanceof l)return{type:`redirect`,location:t.location};if(nt.has(a))return bt({error:await $(t,{params:r,url:n,route:{id:i.id}}),url:n,params:r,route:i});let s=ke(t),u;if(t instanceof c)u=t.body;else{if(await L.updated.check())return await He(),await R(n);u=await $(t,{params:r,url:n,route:{id:i.id}})}let d=await St(e,v,o);return d?mt({url:n,params:r,branch:v.slice(0,d.idx).concat(d.node),errors:o,status:s,error:u,route:i}):await kt(n,{id:i.id},u,s)}else v.push(void 0);return mt({url:n,params:r,branch:v,errors:o,status:200,error:null,route:i,form:t?void 0:null})}async function St(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)--r;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function Ct({status:e,error:t,url:n,route:r}){let i={};try{return mt({url:n,params:i,branch:[await ht({loader:We,url:n,params:i,route:r,parent:()=>Promise.resolve({}),server_data_node:vt(null)}),{node:await z(),loader:z,universal:null,server:null,data:null}],status:e,error:t,errors:[],route:null})}catch(e){if(e instanceof l)return ut(new URL(e.location,location.href),{},0);throw e}}async function wt(e){let t=e.href;if(qe.has(t))return qe.get(t);let n;try{let r=(async()=>{let t=await V.hooks.reroute({url:new URL(e),fetch:async(t,n)=>gt(t,n,e).promise})??e;if(typeof t==`string`){let n=new URL(e);V.hash?n.hash=t:n.pathname=t,t=n}return t})();qe.set(t,r),n=await r}catch{qe.delete(t);return}return n}async function Tt(e,t){if(e&&!Ce(e,w,V.hash)){let n=await wt(e);if(!n)return;let r=Et(n);for(let n of Ue){let i=n.exec(r);if(i)return{id:Dt(e),invalidating:t,route:n,params:p(i),url:e}}}}function Et(e){return f(V.hash?e.hash.replace(/^#/,``).replace(/[?#].+/,``):e.pathname.slice(w.length))||`/`}function Dt(e){return(V.hash?e.hash.replace(/^#/,``):e.pathname)+e.search}function Ot({url:e,type:t,intent:n,delta:r,event:i,scroll:a}){let o=!1,s=Rt(K,n,e,t,a??null);r!==void 0&&(s.navigation.delta=r),i!==void 0&&(s.navigation.event=i);let c={...s.navigation,cancel:()=>{o=!0,s.reject(Error(`navigation cancelled`))}};return q||Je.forEach(e=>e(c)),o?null:s}async function Q({type:e,url:t,popped:n,keepfocus:i,noscroll:a,replace_state:o,state:c={},redirect_count:l=0,nav_token:d={},accept:f=g,block:p=g,event:m}){let h=Z;Z=d;let _=await Tt(t,!1),v=e===`enter`?Rt(K,_,t,e):Ot({url:t,type:e,delta:n?.delta,intent:_,scroll:n?.scroll,event:m});if(!v){p(),Z===d&&(Z=h);return}let ee=Y,y=X;f(),q=!0,Ze&&v.navigation.type!==`enter`&&L.navigating.set(N.current=v.navigation);let b=_&&await xt(_);if(!b){if(Ce(t,w,V.hash))return await R(t,o);b=await kt(t,{id:null},await $(new u(404,`Not Found`,`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,o)}if(t=_?.url||t,Z!==d)return v.reject(Error(`navigation aborted`)),!1;if(b.type===`redirect`){if(l<20){await Q({type:e,url:new URL(b.location,t),popped:n,keepfocus:i,noscroll:a,replace_state:o,state:c,redirect_count:l+1,nav_token:d}),v.fulfil(void 0);return}b=await Ct({status:500,error:await $(Error(`Redirect loop`),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else b.props.page.status>=400&&await L.updated.check()&&(await He(),await R(t,o));if(ot(),Be(ee),st(y),b.props.page.url.pathname!==t.pathname&&(t.pathname=b.props.page.url.pathname),c=n?n.state:c,!n){let e=+!o,n={[T]:Y+=e,[E]:X+=e,[me]:c};(o?history.replaceState:history.pushState).call(history,n,``,t),o||Ve(Y,X)}let x=_&&W?.id===_.id?W.fork:null;W?.fork&&!x&&Ke(),W=null,b.props.page.state=c;let S;if(Ze){let e=(await Promise.all(Array.from(Ye,e=>e(v.navigation)))).filter(e=>typeof e==`function`);if(e.length>0){function t(){e.forEach(e=>{G.delete(e)})}e.push(t),e.forEach(e=>{G.add(e)})}let n=v.navigation.to;K={...b.state,nav:{params:n.params,route:n.route,url:n.url}},b.props.page&&(b.props.page.url=t);let i=x&&await x;i?S=i.commit():(P=null,tt.$set(b.props),P&&Object.assign(b.props.page,P),Pe(b.props.page),S=r?.()),$e=!0}else await pt(b,Ge,!1);let{activeElement:te}=document;if(await S,await s(),await s(),Z!==d)return v.reject(Error(`navigation aborted`)),!1;b.props.page&&P&&Object.assign(b.props.page,P);let C=null;if(Qe){let e=n?n.scroll:a?k():null;e?scrollTo(e.x,e.y):(C=t.hash&&document.getElementById(Vt(t)))?C.scrollIntoView():scrollTo(0,0)}let ne=document.activeElement!==te&&document.activeElement!==document.body;!i&&!ne&&Lt(t,!C),Qe=!0,q=!1,e===`popstate`&&ct(X),v.fulfil(void 0),v.navigation.to&&(v.navigation.to.scroll=k()),G.forEach(e=>e(v.navigation)),L.navigating.set(N.current=null)}async function kt(e,t,n,r,i){return e.origin===O&&e.pathname===location.pathname&&!Xe?await Ct({status:r,error:n,url:e,route:t}):await R(e,i)}function At(){let e,t={element:void 0,href:void 0},n;B.addEventListener(`mousemove`,t=>{let n=t.target;clearTimeout(e),e=setTimeout(()=>{a(n,D.hover)},20)});function r(e){e.defaultPrevented||a(e.composedPath()[0],D.tap)}B.addEventListener(`mousedown`,r),B.addEventListener(`touchstart`,r,{passive:!0});let i=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&(ft(new URL(t.target.href)),i.unobserve(t.target))},{threshold:0});async function a(e,r){let i=ve(e,B),a=i===t.element&&i?.href===t.href&&r>=n;if(!i||a)return;let{url:o,external:s,download:c}=ye(i,w,V.hash);if(s||c)return;let l=j(i),u=o&&Dt(K.url)===Dt(o);if(!(l.reload||u))if(r<=l.preload_data){t={element:i,href:i.href},n=D.tap;let e=await Tt(o,!1);if(!e)return;dt(e)}else r<=l.preload_code&&(t={element:i,href:i.href},n=r,ft(o))}function o(){i.disconnect();for(let e of B.querySelectorAll(`a`)){let{url:t,external:n,download:r}=ye(e,w,V.hash);if(n||r)continue;let a=j(e);a.reload||(a.preload_code===D.viewport&&i.observe(e),a.preload_code===D.eager&&ft(t))}}G.add(o),o()}function $(e,t){if(e instanceof c)return e.body;let n=ke(e),r=Ae(e);return V.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function jt(e,t={}){return e=new URL(he(e)),e.origin===O?ut(e,t,0):Promise.reject(Error(`goto: invalid URL`))}function Mt(e){if(typeof e==`function`)H.push(e);else{let{href:t}=new URL(e,location.href);H.push(e=>e.href===t)}}function Nt(){history.scrollRestoration=`manual`,addEventListener(`beforeunload`,e=>{let t=!1;if(lt(),!q){let e=Rt(K,void 0,null,`leave`),n={...e.navigation,cancel:()=>{t=!0,e.reject(Error(`navigation cancelled`))}};Je.forEach(e=>e(n))}t?(e.preventDefault(),e.returnValue=``):history.scrollRestoration=`auto`}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&<()}),!navigator.connection?.saveData&&!/2g/.test(navigator.connection?.effectiveType)&&At(),B.addEventListener(`click`,async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;let n=ve(t.composedPath()[0],B);if(!n)return;let{url:r,external:i,target:a,download:o}=ye(n,w,V.hash);if(!r)return;if(a===`_parent`||a===`_top`){if(window.parent!==window)return}else if(a&&a!==`_self`)return;let s=j(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol===`https:`||r.protocol===`http:`)||o)return;let[c,l]=(V.hash?r.hash.replace(/^#/,``):r.href).split(`#`),u=c===m(location);if(i||s.reload&&(!u||!l)){Ot({url:r,type:`link`,event:t})?q=!0:t.preventDefault();return}if(l!==void 0&&u){let[,i]=K.url.href.split(`#`);if(i===l){if(t.preventDefault(),l===``||l===`top`&&n.ownerDocument.getElementById(`top`)===null)scrollTo({top:0});else{let e=n.ownerDocument.getElementById(decodeURIComponent(l));e&&(e.scrollIntoView(),e.focus())}return}if(J=!0,Be(Y),e(r),!s.replace_state)return;J=!1}t.preventDefault(),await new Promise(e=>{requestAnimationFrame(()=>{setTimeout(e,0)}),setTimeout(e,100)}),await Q({type:`link`,url:r,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??r.href===location.href,event:t})}),B.addEventListener(`submit`,e=>{if(e.defaultPrevented)return;let t=HTMLFormElement.prototype.cloneNode.call(e.target),n=e.submitter;if((n?.formTarget||t.target)===`_blank`||(n?.formMethod||t.method)!==`get`)return;let r=new URL(n?.hasAttribute(`formaction`)&&n?.formAction||t.action);if(Ce(r,w,!1))return;let i=e.target,a=j(i);if(a.reload)return;e.preventDefault(),e.stopPropagation();let o=new FormData(i,n);r.search=new URLSearchParams(o).toString(),Q({type:`form`,url:r,keepfocus:a.keepfocus,noscroll:a.noscroll,replace_state:a.replace_state??r.href===location.href,event:e})}),addEventListener(`popstate`,async t=>{if(!It)if(t.state?.[`sveltekit:history`]){let n=t.state[T];if(Z={},n===Y)return;let r=F[n],i=t.state[`sveltekit:states`]??{},a=new URL(t.state[`sveltekit:pageurl`]??location.href),o=t.state[E],s=K.url?m(location)===m(K.url):!1;if(o===X&&($e||s)){i!==M.state&&(M.state=i),e(a),F[Y]=k(),r&&scrollTo(r.x,r.y),Y=n;return}let c=n-Y;await Q({type:`popstate`,url:a,popped:{state:i,scroll:r,delta:c},accept:()=>{Y=n,X=o},block:()=>{history.go(-c)},nav_token:Z,event:t})}else J||(e(new URL(location.href)),V.hash&&location.reload())}),addEventListener(`hashchange`,()=>{J&&(J=!1,history.replaceState({...history.state,[T]:++Y,[E]:X},``,location.href))});for(let e of document.querySelectorAll(`link`))ze.has(e.rel)&&(e.href=e.href);addEventListener(`pageshow`,e=>{e.persisted&&L.navigating.set(N.current=null)});function e(e){K.url=M.url=e,L.page.set(zt(M)),L.page.notify()}}async function Pt(e,{status:t=200,error:n,node_ids:r,params:i,route:a,server_route:o,data:s,form:c}){Xe=!0;let u=new URL(location.href),d;({params:i={},route:a={id:null}}=await Tt(u,!1)||{}),d=Ue.find(({id:e})=>e===a.id);let f,p=!0;try{let e=r.map(async(t,n)=>{let r=s[n];return r?.uses&&(r.uses=Ft(r.uses)),ht({loader:V.nodes[t],url:u,params:i,route:a,parent:async()=>{let t={};for(let r=0;r<n;r+=1)Object.assign(t,(await e[r]).data);return t},server_data_node:vt(r)})}),o=await Promise.all(e);if(d){let e=d.layouts;for(let t=0;t<e.length;t++)e[t]||o.splice(t,0,void 0)}f=await mt({url:u,params:i,branch:o,status:t,error:n,errors:d?.errors,form:c,route:d??null})}catch(t){if(t instanceof l){await R(new URL(t.location,location.href));return}f=await Ct({status:ke(t),error:await $(t,{url:u,params:i,route:a}),url:u,route:a}),e.textContent=``,p=!1}f.props.page&&(f.props.page.state={}),await pt(f,e,p)}function Ft(e){return{dependencies:new Set(e?.dependencies??[]),params:new Set(e?.params??[]),parent:!!e?.parent,route:!!e?.route,url:!!e?.url,search_params:new Set(e?.search_params??[])}}var It=!1;function Lt(e,t=!0){let n=document.querySelector(`[autofocus]`);if(n)n.focus();else{let n=Vt(e);if(n&&document.getElementById(n)){let{x:r,y:i}=k();setTimeout(()=>{let a=history.state;It=!0,location.replace(new URL(`#${n}`,location.href)),history.replaceState(a,``,e),t&&scrollTo(r,i),It=!1})}else{let e=document.body,t=e.getAttribute(`tabindex`);e.tabIndex=-1,e.focus({preventScroll:!0,focusVisible:!1}),t===null?e.removeAttribute(`tabindex`):e.setAttribute(`tabindex`,t)}let r=getSelection();if(r&&r.type!==`None`){let e=[];for(let t=0;t<r.rangeCount;t+=1)e.push(r.getRangeAt(t));setTimeout(()=>{if(r.rangeCount===e.length){for(let t=0;t<r.rangeCount;t+=1){let n=e[t],i=r.getRangeAt(t);if(n.commonAncestorContainer!==i.commonAncestorContainer||n.startContainer!==i.startContainer||n.endContainer!==i.endContainer||n.startOffset!==i.startOffset||n.endOffset!==i.endOffset)return}r.removeAllRanges()}})}}}function Rt(e,t,n,r,i=null){let a,o,s=new Promise((e,t)=>{a=e,o=t});return s.catch(g),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:k()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:i},willUnload:!t,type:r,complete:s},fulfil:a,reject:o}}function zt(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function Bt(e){let t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function Vt(e){let t;if(V.hash){let[,,n]=e.hash.split(`#`,3);t=n??``}else t=e.hash.slice(1);return decodeURIComponent(t)}export{M as a,l as c,N as i,at as n,je as o,L as r,we as s,jt as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.
|
|
2
|
-
import{$ as e,A as t,D as n,H as r,J as i,L as a,N as o,O as s,Q as c,S as l,U as u,W as d,X as f,Y as p,a as m,ft as h,i as g,j as _,k as v,ot as y,r as b,s as x,st as S,tt as C,z as w}from"../chunks/DF6QYH3p.js";import{t as T}from"../chunks/kNaey6uv.js";import"../chunks/xihTtKlq.js";var E={},D=_(`<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>`),O=_(`<!> <!>`,1);function k(g,_){S(_,!0);let T=m(_,`components`,23,()=>[]),E=m(_,`data_0`,3,null),k=m(_,`data_1`,3,null);d(()=>_.stores.page.set(_.page)),u(()=>{_.stores,_.page,_.constructors,T(),_.form,E(),k(),_.stores.page.notify()});let A=e(!1),j=e(!1),M=e(null);b(()=>{let e=_.stores.page.subscribe(()=>{a(A)&&(c(j,!0),w().then(()=>{c(M,document.title||`untitled page`,!0)}))});return c(A,!0),e});let N=C(()=>_.constructors[1]);var P=O(),F=p(P),I=e=>{let n=C(()=>_.constructors[0]);var r=t();l(p(r),()=>a(n),(e,n)=>{x(n(e,{get data(){return E()},get form(){return _.form},get params(){return _.page.params},children:(e,n)=>{var r=t();l(p(r),()=>a(N),(e,t)=>{x(t(e,{get data(){return k()},get form(){return _.form},get params(){return _.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),v(e,r)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),v(e,r)},L=e=>{let n=C(()=>_.constructors[0]);var r=t();l(p(r),()=>a(n),(e,t)=>{x(t(e,{get data(){return E()},get form(){return _.form},get params(){return _.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),v(e,r)};n(F,e=>{_.constructors[1]?e(I):e(L,-1)});var R=f(F,2),z=e=>{var t=D(),c=i(t),l=e=>{var t=o();r(()=>s(t,a(M))),v(e,t)};n(c,e=>{a(j)&&e(l)}),h(t),v(e,t)};n(R,e=>{a(A)&&e(z)}),v(g,P),y()}var A=g(k),j=[()=>T(()=>import(`../nodes/0.
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.C1BTEwKm.js","../chunks/DF6QYH3p.js","../chunks/K3JxBPSQ.js","../chunks/B4Mul34I.js","../chunks/B-lvxr_Y.js","../chunks/CM5qK71w.js","../chunks/xihTtKlq.js","../chunks/Dvd8XBNO.js","../chunks/Dv09pO87.js","../chunks/1_r1S7Ly.js","../chunks/CvxLPre7.js","../chunks/BTLTzKaZ.js","../chunks/CKUA0lwj.js","../assets/0.BgNAkMzG.css","../nodes/1.C3Ve_ouq.js","../nodes/2.CRcsCTzc.js","../chunks/DHnrY7Sb.js","../chunks/D9BWIMZD.js","../chunks/Q8pmKDJe.js","../chunks/lHLL3RmT.js","../chunks/gQ3oD_Dm.js","../chunks/DC_h2his.js","../chunks/Dhqg7r_2.js","../chunks/BzLd0mTH.js","../nodes/3.rv7UrHHg.js","../chunks/BiHfqo9Y.js","../chunks/BQQLoxQo.js","../chunks/BQ9GodWX.js","../nodes/4.Cev4WT4u.js","../chunks/Buny4Lxq.js","../chunks/-s9hRK72.js","../chunks/CDgx1pP22.js","../chunks/BY81EmU42.js","../nodes/5.0DKVfFv2.js","../nodes/6.DCJwg-TV.js","../nodes/7.BFdt4Nqg.js","../nodes/8.aFYV9MSb.js","../assets/8.nv0I59TU.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{$ as e,A as t,D as n,H as r,J as i,L as a,N as o,O as s,Q as c,S as l,U as u,W as d,X as f,Y as p,a as m,ft as h,i as g,j as _,k as v,ot as y,r as b,s as x,st as S,tt as C,z as w}from"../chunks/DF6QYH3p.js";import{t as T}from"../chunks/kNaey6uv.js";import"../chunks/xihTtKlq.js";var E={},D=_(`<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>`),O=_(`<!> <!>`,1);function k(g,_){S(_,!0);let T=m(_,`components`,23,()=>[]),E=m(_,`data_0`,3,null),k=m(_,`data_1`,3,null);d(()=>_.stores.page.set(_.page)),u(()=>{_.stores,_.page,_.constructors,T(),_.form,E(),k(),_.stores.page.notify()});let A=e(!1),j=e(!1),M=e(null);b(()=>{let e=_.stores.page.subscribe(()=>{a(A)&&(c(j,!0),w().then(()=>{c(M,document.title||`untitled page`,!0)}))});return c(A,!0),e});let N=C(()=>_.constructors[1]);var P=O(),F=p(P),I=e=>{let n=C(()=>_.constructors[0]);var r=t();l(p(r),()=>a(n),(e,n)=>{x(n(e,{get data(){return E()},get form(){return _.form},get params(){return _.page.params},children:(e,n)=>{var r=t();l(p(r),()=>a(N),(e,t)=>{x(t(e,{get data(){return k()},get form(){return _.form},get params(){return _.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),v(e,r)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),v(e,r)},L=e=>{let n=C(()=>_.constructors[0]);var r=t();l(p(r),()=>a(n),(e,t)=>{x(t(e,{get data(){return E()},get form(){return _.form},get params(){return _.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),v(e,r)};n(F,e=>{_.constructors[1]?e(I):e(L,-1)});var R=f(F,2),z=e=>{var t=D(),c=i(t),l=e=>{var t=o();r(()=>s(t,a(M))),v(e,t)};n(c,e=>{a(j)&&e(l)}),h(t),v(e,t)};n(R,e=>{a(A)&&e(z)}),v(g,P),y()}var A=g(k),j=[()=>T(()=>import(`../nodes/0.C1BTEwKm.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13]),import.meta.url),()=>T(()=>import(`../nodes/1.C3Ve_ouq.js`),__vite__mapDeps([14,1,4,2,6]),import.meta.url),()=>T(()=>import(`../nodes/2.CRcsCTzc.js`),__vite__mapDeps([15,1,6,7,16,2,3,8,17,9,18,19,20,21,22,23,10,11]),import.meta.url),()=>T(()=>import(`../nodes/3.rv7UrHHg.js`),__vite__mapDeps([24,1,2,3,6,8,17,9,25,20,26,27,19,21]),import.meta.url),()=>T(()=>import(`../nodes/4.Cev4WT4u.js`),__vite__mapDeps([28,1,2,3,4,29,8,30,12,5,6,7,31,32,20,22,23,10,26]),import.meta.url),()=>T(()=>import(`../nodes/5.0DKVfFv2.js`),__vite__mapDeps([33,1,6,8,31,17,9]),import.meta.url),()=>T(()=>import(`../nodes/6.DCJwg-TV.js`),__vite__mapDeps([34,1,6,7,16,2,3,8,17,9,18,19,20,21,22,23,10,11]),import.meta.url),()=>T(()=>import(`../nodes/7.BFdt4Nqg.js`),__vite__mapDeps([35,1,2,3,29,8,30,12,5,6,7,17,9,25,20,26,18,21,22,23,10,11]),import.meta.url),()=>T(()=>import(`../nodes/8.aFYV9MSb.js`),__vite__mapDeps([36,1,2,3,6,8,17,9,27,32,30,12,23,10,37]),import.meta.url)],M=[],N={"/":[2],"/features":[3],"/features/[id]":[4],"/mcp":[5],"/projects":[6],"/projects/[id]":[7],"/tutorial":[8]},P={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},F=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.decode])),I=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.encode])),L=!1,R=(e,t)=>F[e](t);export{R as decode,F as decoders,N as dictionary,I as encoders,L as hash,P as hooks,E as matchers,j as nodes,A as root,M as server_loads};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e,s as t}from"../chunks/K3JxBPSQ.js";export{t as load_css,e as start};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{$ as e,A as t,C as n,D as r,E as i,F as a,H as o,I as s,J as c,L as l,M as u,O as d,P as f,Q as p,T as m,U as h,X as g,Y as _,Z as v,_ as y,c as b,d as x,dt as S,et as C,ft as w,j as T,k as E,l as D,o as O,ot as k,pt as A,q as j,r as M,s as ee,st as N,tt as P,u as F,v as I,w as L,x as R}from"../chunks/DF6QYH3p.js";import{t as z}from"../chunks/BujhrE7B.js";import"../chunks/xihTtKlq.js";import{t as B}from"../chunks/C9wMWZPw.js";import{i as V,n as H,r as U,t as W}from"../chunks/CM5qK71w.js";import{gt as te,ht as G,mt as K,ut as q}from"../chunks/Dv09pO87.js";import"../chunks/Dvd8XBNO.js";import{t as J}from"../chunks/BTLTzKaZ.js";import"../chunks/BkrS-jAt.js";import{t as Y}from"../chunks/CvxLPre7.js";import{t as ne}from"../chunks/1_r1S7Ly.js";import{t as X}from"../chunks/CKUA0lwj.js";var Z=A({prerender:()=>!1,ssr:()=>!1,trailingSlash:()=>Q}),Q=`never`,re=T(`<span class="mt-1 block text-xs leading-relaxed opacity-80"> </span>`),ie=T(`<li class="flex"><button type="button"><span class="min-w-0 flex-1"><span class="block text-sm"> </span> <!></span> <span aria-hidden="true" class="shrink-0 text-base transition group-hover:translate-x-1">→</span></button></li>`),ae=T(`<div class="px-7 pt-2 pb-5"><ul class="flex max-h-80 flex-col gap-3 overflow-y-auto"></ul></div>`),oe=T(`<p class="mt-2 text-xs font-medium text-red-700"> </p>`),se=T(`<div class="px-7 pt-1 pb-4"><label class="block text-xs font-medium text-slate-700"> <input autocorrect="off" autocapitalize="off" spellcheck="false" class="mono mt-1 h-10 w-full rounded-md border border-slate-300 bg-white px-3 text-sm outline-none focus:border-brand-700 focus:ring-2 focus:ring-brand-100"/></label> <!></div>`),ce=T(`<span class="mt-0.5 block text-xs text-slate-500"> </span>`),le=T(`<li><label class="flex cursor-pointer items-start gap-3 rounded-md px-2 py-2 transition hover:bg-white"><input type="checkbox"/> <span class="min-w-0 flex-1"><span class="block text-sm font-medium text-slate-900"> </span> <!></span></label></li>`),ue=T(`<div class="border-t border-hairline px-6 py-3"><div class="mb-2 flex items-center justify-between"><span class="text-xs font-medium uppercase tracking-wide text-slate-500"> </span> <div class="flex gap-2 text-xs"><button type="button" class="font-medium text-slate-600 hover:text-slate-950">Select all</button> <span class="text-slate-300">·</span> <button type="button" class="font-medium text-slate-600 hover:text-slate-950">Select none</button></div></div> <ul class="max-h-72 space-y-1.5 overflow-y-auto rounded-lg border border-hairline bg-slate-50 p-2"></ul></div>`),de=T(`<button type="button"> </button>`),fe=T(`<button type="button" class="rounded-md px-3 py-2 text-sm text-slate-600 transition hover:text-slate-950"> </button>`),pe=T(`<button type="button" class="rounded-md border border-slate-300 bg-white px-4 py-2 text-sm text-slate-700 transition hover:bg-slate-100"> </button> <button type="button"> </button>`,1),me=T(`<div class="fixed inset-0 z-100 flex items-center justify-center px-4" role="presentation"><button type="button" aria-label="Dismiss" class="absolute inset-0 bg-slate-950/40 backdrop-blur-sm"></button> <div role="dialog" aria-modal="true" aria-labelledby="app-dialog-title" aria-describedby="app-dialog-message"><div class="flex gap-4 px-7 pt-7 pb-5"><div> </div> <div class="min-w-0 flex-1 pt-1"><h2 id="app-dialog-title" class="text-lg leading-tight text-slate-950"> </h2> <p id="app-dialog-message" class="mt-2 whitespace-pre-line text-sm leading-relaxed text-slate-600"> </p></div></div> <!> <div class="flex justify-end gap-2 border-t border-hairline bg-slate-50 px-7 py-3"><!></div></div></div>`);function he(n,i){N(i,!0);let u=P(()=>G.current),f=e(v(new Set)),m=e(``),y=e(null),C=e(null);h(()=>{l(u)?.kind===`checklist`?p(f,new Set(l(u).opts.items.filter(e=>e.defaultChecked).map(e=>e.id)),!0):p(f,new Set,!0),l(u)?.kind===`prompt`?(p(m,l(u).opts.defaultValue??``,!0),p(y,null),queueMicrotask(()=>l(C)?.focus())):(p(m,``),p(y,null))});function T(e){let t=new Set(l(f));t.has(e)?t.delete(e):t.add(e),p(f,t,!0)}function O(){l(u)?.kind===`checklist`&&p(f,new Set(l(u).opts.items.map(e=>e.id)),!0)}function A(){p(f,new Set,!0)}function M(){l(u)?.kind===`prompt`?G.resolvePrompt(null):G.resolveCurrent(!1)}function z(){if(l(u)?.kind===`checklist`)G.resolveCurrent(!0,Array.from(l(f)));else if(l(u)?.kind===`prompt`){let e=l(m),t=l(u).opts.validate?l(u).opts.validate(e):null;if(t){p(y,t,!0);return}G.resolvePrompt(e)}else G.resolveCurrent(!0)}function B(e){l(u)&&(e.key===`Escape`?(e.preventDefault(),M()):e.key===`Enter`&&l(u).kind!==`checklist`&&(e.preventDefault(),z()))}let U={default:{icon:`?`,iconBg:`bg-slate-100`,iconColor:`text-slate-700`,confirmBtn:`bg-slate-900 hover:bg-slate-800 text-white`,check:`accent-slate-700`},danger:{icon:`!`,iconBg:`bg-rose-50`,iconColor:`text-rose-600`,confirmBtn:`bg-rose-600 hover:bg-rose-500 text-white`,check:`accent-rose-600`},info:{icon:`i`,iconBg:`bg-brand-50`,iconColor:`text-brand-700`,confirmBtn:`bg-brand-700 hover:bg-brand-600 text-white`,check:`accent-brand-700`},success:{icon:`✓`,iconBg:`bg-emerald-50`,iconColor:`text-emerald-600`,confirmBtn:`bg-emerald-600 hover:bg-emerald-500 text-white`,check:`accent-emerald-600`},warning:{icon:`!`,iconBg:`bg-amber-50`,iconColor:`text-amber-600`,confirmBtn:`bg-amber-600 hover:bg-amber-500 text-white`,check:`accent-amber-600`}},te=P(()=>l(u)?.opts.tone??(l(u)?.kind===`alert`?`info`:`default`)),K=P(()=>U[l(te)]);var q=t();s(`keydown`,j,B);var J=_(q),Y=e=>{var t=me(),n=c(t),i=g(n,2),s=c(i),h=c(s),v=c(h,!0);w(h);var k=g(h,2),j=c(k),N=c(j,!0);w(j);var P=g(j,2),B=c(P,!0);w(P),w(k),w(s);var U=g(s,2),te=e=>{var t=ae(),n=c(t);L(n,21,()=>l(u).opts.options,e=>e.id,(e,t)=>{var n=ie(),i=c(n),s=c(i),u=c(s),f=c(u,!0);w(u);var p=g(u,2),m=e=>{var n=re(),r=c(n,!0);w(n),o(()=>d(r,l(t).description)),E(e,n)};r(p,e=>{l(t).description&&e(m)}),w(s),S(2),w(i),w(n),o(()=>{I(i,1,`group flex w-full items-center justify-between gap-4 rounded-xl px-5 py-4 text-left shadow-sm shadow-slate-950/5 transition hover:shadow-md focus:ring-2 focus:ring-offset-2 focus:outline-none ${l(K).confirmBtn}`),d(f,l(t).label)}),a(`click`,i,()=>G.resolveChoice(l(t).id)),E(e,n)}),w(n),w(t),E(e,t)},q=e=>{var t=se(),n=c(t),i=c(n),s=g(i);D(s),ee(s,e=>p(C,e),()=>l(C)),w(n);var f=g(n,2),h=e=>{var t=oe(),n=c(t,!0);w(t),o(()=>d(n,l(y))),E(e,t)};r(f,e=>{l(y)&&e(h)}),w(t),o(()=>{d(i,`${l(u).opts.inputLabel??`Value`??``} `),F(s,`type`,l(u).opts.password?`password`:`text`),F(s,`autocomplete`,l(u).opts.password?`new-password`:`off`),F(s,`placeholder`,l(u).opts.placeholder??``)}),a(`input`,s,()=>p(y,null)),b(s,()=>l(m),e=>p(m,e)),E(e,t)},J=e=>{var t=ue(),n=c(t),i=c(n),s=c(i);w(i);var p=g(i,2),m=c(p),h=g(m,4);w(p),w(n);var _=g(n,2);L(_,21,()=>l(u).opts.items,e=>e.id,(e,t)=>{var n=le(),i=c(n),s=c(i);D(s);var u=g(s,2),p=c(u),m=c(p,!0);w(p);var h=g(p,2),_=e=>{var n=ce(),r=c(n,!0);w(n),o(()=>d(r,l(t).description)),E(e,n)};r(h,e=>{l(t).description&&e(_)}),w(u),w(i),w(n),o(e=>{I(s,1,`mt-0.5 h-4 w-4 rounded ${l(K).check}`),x(s,e),d(m,l(t).label)},[()=>l(f).has(l(t).id)]),a(`change`,s,()=>T(l(t).id)),E(e,n)}),w(_),w(t),o(()=>d(s,`${l(f).size??``} of ${l(u).opts.items.length??``} selected`)),a(`click`,m,O),a(`click`,h,A),E(e,t)};r(U,e=>{l(u).kind===`choice`?e(te):l(u).kind===`prompt`?e(q,1):l(u).kind===`checklist`&&e(J,2)});var Y=g(U,2),ne=c(Y),X=e=>{var t=de(),n=c(t,!0);w(t),o(()=>{I(t,1,`rounded-md px-4 py-2 text-sm transition ${l(K).confirmBtn}`),d(n,l(u).opts.buttonLabel??`OK`)}),a(`click`,t,M),E(e,t)},Z=e=>{var t=fe(),n=c(t,!0);w(t),o(()=>d(n,l(u).opts.cancelLabel??`Close`)),a(`click`,t,M),E(e,t)},Q=e=>{var t=pe(),n=_(t),r=c(n,!0);w(n);var i=g(n,2),s=c(i,!0);w(i),o(()=>{d(r,l(u).opts.cancelLabel??`Cancel`),I(i,1,`rounded-md px-4 py-2 text-sm transition focus:ring-2 focus:ring-offset-2 focus:outline-none ${l(K).confirmBtn}`),d(s,l(u).opts.confirmLabel??`Confirm`)}),a(`click`,n,M),a(`click`,i,z),E(e,t)};r(ne,e=>{l(u).kind===`alert`?e(X):l(u).kind===`choice`?e(Z,1):e(Q,-1)}),w(Y),w(i),w(t),o(()=>{I(i,1,`relative w-full ${l(u).kind===`checklist`||l(u).kind===`choice`?`max-w-lg`:`max-w-md`} overflow-hidden rounded-2xl border border-hairline bg-white shadow-2xl shadow-slate-950/20`),I(h,1,`flex h-11 w-11 shrink-0 items-center justify-center rounded-full text-lg ${l(K).iconBg} ${l(K).iconColor}`),d(v,l(K).icon),d(N,l(u).opts.title),d(B,l(u).opts.message)}),a(`click`,n,M),R(3,i,()=>V,()=>({duration:140,start:.96,easing:W})),R(3,t,()=>H,()=>({duration:120,easing:W})),E(e,t)};r(J,e=>{l(u)&&e(Y)}),E(n,q),k()}f([`click`,`input`,`change`]);var ge=T(`<div class="untangler-sky svelte-dds6m1" aria-hidden="true"><div class="untangler svelte-dds6m1"><svg viewBox="0 0 240 110" role="img" class="svelte-dds6m1"><g class="tangle tangle-outline svelte-dds6m1"><path d="M5 55 C 32 12, 48 95, 72 32 S 116 80, 148 42 S 196 22, 232 62" class="svelte-dds6m1"></path><path d="M5 70 C 28 32, 52 95, 78 22 S 124 72, 156 44 S 200 30, 232 76" class="svelte-dds6m1"></path><path d="M5 40 C 36 82, 60 12, 92 70 S 118 30, 150 52 S 196 70, 230 30" class="svelte-dds6m1"></path><path d="M5 88 C 30 60, 48 100, 80 65 S 130 95, 165 70 S 210 88, 232 60" class="svelte-dds6m1"></path></g><g class="tangle tangle-fill svelte-dds6m1"><path d="M5 55 C 32 12, 48 95, 72 32 S 116 80, 148 42 S 196 22, 232 62" class="svelte-dds6m1"></path><path d="M5 70 C 28 32, 52 95, 78 22 S 124 72, 156 44 S 200 30, 232 76" class="svelte-dds6m1"></path><path d="M5 40 C 36 82, 60 12, 92 70 S 118 30, 150 52 S 196 70, 230 30" class="svelte-dds6m1"></path><path d="M5 88 C 30 60, 48 100, 80 65 S 130 95, 165 70 S 210 88, 232 60" class="svelte-dds6m1"></path></g><g class="clean clean-outline svelte-dds6m1"><line x1="5" y1="30" x2="232" y2="30" class="svelte-dds6m1"></line><line x1="5" y1="50" x2="232" y2="50" class="svelte-dds6m1"></line><line x1="5" y1="70" x2="232" y2="70" class="svelte-dds6m1"></line><line x1="5" y1="90" x2="232" y2="90" class="svelte-dds6m1"></line></g><g class="clean clean-fill svelte-dds6m1"><line x1="5" y1="30" x2="232" y2="30" class="svelte-dds6m1"></line><line x1="5" y1="50" x2="232" y2="50" class="svelte-dds6m1"></line><line x1="5" y1="70" x2="232" y2="70" class="svelte-dds6m1"></line><line x1="5" y1="90" x2="232" y2="90" class="svelte-dds6m1"></line></g><g class="glint svelte-dds6m1"><rect x="-18" y="18" width="14" height="78" rx="3" class="svelte-dds6m1"></rect></g></svg></div></div>`);function _e(n,i){N(i,!0);let a=[`arrowup`,`arrowup`,`arrowdown`,`arrowdown`,`arrowleft`,`arrowright`,`arrowleft`,`arrowright`,`b`,`a`],o=e(!1),c=``,u=0,d=null;function f(e){return e instanceof HTMLElement?e.isContentEditable?!0:!!e.closest(`input, textarea, select, [contenteditable='true']`):!1}function m(){p(o,!1),d&&clearTimeout(d),requestAnimationFrame(()=>{p(o,!0),d=setTimeout(()=>{p(o,!1)},5200)})}function g(e){return e===a[u]?(u+=1,u<a.length?!1:(u=0,!0)):(u=+(e===a[0]),!1)}function v(e){return e.length!==1||(c=(c+e).slice(-9),c!==`spaghetti`)?!1:(c=``,!0)}function y(e){if(f(e.target))return;let t=e.key.toLowerCase();(g(t)||v(t))&&m()}h(()=>()=>{d&&clearTimeout(d)});var b=t();s(`keydown`,j,y);var x=_(b),S=e=>{E(e,ge())};r(x,e=>{l(o)&&e(S)}),E(n,b),k()}var ve=4,ye=5e3,be=e=>{if(e.op!==`delete`)switch(e.kind){case`feature`:return`/features/${e.id}`;case`project`:return`/projects/${e.id}`;case`implementation-status`:return`/features/${e.id}`}},xe=800,$=new class{#e=e(v([]));get toasts(){return l(this.#e)}set toasts(e){p(this.#e,e,!0)}nextId=1;subscribed=!1;unsubscribe=null;timers=new Map;recentKeys=new Map;start(){this.subscribed||(this.subscribed=!0,this.unsubscribe=J(e=>this.handle(e)))}dismiss(e){let t=this.timers.get(e);t&&(clearTimeout(t),this.timers.delete(e)),this.toasts=this.toasts.filter(t=>t.id!==e)}reset(){for(let e of this.timers.values())clearTimeout(e);this.timers.clear(),this.toasts=[],this.recentKeys.clear(),this.unsubscribe&&this.unsubscribe(),this.unsubscribe=null,this.subscribed=!1}handle(e){let t=`${e.kind}:${e.id}:${e.op??`save`}`,n=Date.now(),r=this.recentKeys.get(t);if(r!==void 0&&n-r<xe){this.recentKeys.set(t,n);return}this.recentKeys.set(t,n);let i=this.nextId++,a=[{id:i,kind:e.kind,entityId:e.id,name:e.name,projectName:e.projectName,op:e.op??`save`,changeOp:e.changeOp,changePath:e.changePath,previousName:e.previousName,actingFor:e.actingFor,...be(e)?{href:be(e)}:{}},...this.toasts].slice(0,ve),o=new Set(a.map(e=>e.id));for(let[e,t]of this.timers)o.has(e)||(clearTimeout(t),this.timers.delete(e));this.toasts=a;let s=setTimeout(()=>this.dismiss(i),ye);this.timers.set(i,s)}},Se=T(`<span class="rounded bg-purple-100 px-1.5 py-0.5 text-[9px] text-purple-800"> </span>`),Ce=T(`<span class="shrink-0 text-slate-400" aria-hidden="true">›</span>`),we=T(`<!> <span> </span>`,1),Te=T(`<div class="mt-0.5 truncate text-[11px] text-slate-500"> </div>`),Ee=T(`<a class="rounded-md bg-white/70 px-2 py-1 text-xs font-medium text-slate-700 hover:bg-white hover:text-brand-800">View</a>`),De=T(`<div><div class="min-w-0 flex-1"><div class="flex flex-wrap items-center gap-x-1.5 gap-y-0.5 text-[10px] font-semibold uppercase tracking-wide"><span class="text-slate-500"> </span> <!></div> <div class="mt-0.5 flex min-w-0 flex-wrap items-center gap-x-1 text-sm text-slate-900"></div> <!></div> <div class="flex shrink-0 items-center gap-1"><!> <button type="button" class="rounded-md px-1.5 py-1 text-xs text-slate-500 hover:bg-white/70 hover:text-slate-900" aria-label="Dismiss">✕</button></div></div>`),Oe=T(`<div class="pointer-events-none fixed top-20 right-4 z-50 flex w-full max-w-md flex-col gap-2" role="status" aria-live="polite"></div>`);function ke(e,n){N(n,!1),M(()=>{$.start()});function i(e){switch(e){case`feature`:return`feature`;case`project`:return`project`;case`implementation-status`:return`status`}}function s(e){switch(e){case`feature`:return`border-cyan-200 bg-cyan-50`;case`project`:return`border-violet-200 bg-violet-50`;case`implementation-status`:return`border-emerald-200 bg-emerald-50`}}function u(e){if(e.op===`delete`)return`deleted`;switch(e.changeOp){case`added`:return`added`;case`removed`:return`removed`;case`renamed`:return`renamed`;case`edited`:return`edited`;case`queued`:return`queued`;case`unqueued`:return`unqueued`;case`created`:return`created`;case`deleted`:return`deleted`;default:return`saved`}}function f(e){let t=[];e.projectName&&t.push(e.projectName);let n=e.changePath?.[0],r=n!==void 0&&(e.name===n||!e.name);if(e.name&&!r&&t.push(e.name),e.changePath&&e.changePath.length>0)for(let n of e.changePath)t.push(n);else e.name&&t[t.length-1]!==e.name&&t.push(e.name);let i=[];for(let e of t)e!==`unknown`&&i[i.length-1]!==e&&i.push(e);return i.length===0&&i.push(e.entityId),i}O();var p=t(),h=_(p),v=e=>{var t=Oe();L(t,5,()=>$.toasts,e=>e.id,(e,t)=>{let n=C(()=>f(l(t)));var p=De(),h=c(p),v=c(h),y=c(v),b=c(y);w(y);var x=g(y,2),S=e=>{var n=Se(),r=c(n);w(n),o(()=>d(r,`for ${l(t).actingFor??``}`)),E(e,n)};r(x,e=>{l(t).actingFor&&e(S)}),w(v);var T=g(v,2);L(T,5,()=>l(n),m,(e,t,i)=>{var a=we(),s=_(a),u=e=>{E(e,Ce())};r(s,e=>{i>0&&e(u)});var f=g(s,2),p=c(f,!0);w(f),o(()=>{I(f,1,`truncate ${i===l(n).length-1?`font-semibold`:`text-slate-600`}`),d(p,l(t))}),E(e,a)}),w(T);var D=g(T,2),O=e=>{var n=Te(),r=c(n);w(n),o(()=>d(r,`was “${l(t).previousName??``}”`)),E(e,n)};r(D,e=>{l(t).changeOp===`renamed`&&l(t).previousName&&e(O)}),w(h);var k=g(h,2),A=c(k),j=e=>{var n=Ee();o(()=>F(n,`href`,l(t).href)),a(`click`,n,()=>$.dismiss(l(t).id)),E(e,n)};r(A,e=>{l(t).href&&e(j)});var M=g(A,2);w(k),w(p),o((e,t,n)=>{I(p,1,`pointer-events-auto flex items-start gap-3 rounded-lg border px-3 py-2 shadow-md shadow-slate-950/10 ${e??``}`),d(b,`MCP · ${t??``} ${n??``}`)},[()=>s(l(t).kind),()=>u(l(t)),()=>i(l(t).kind)]),a(`click`,M,()=>$.dismiss(l(t).id)),R(1,p,()=>U,()=>({x:24,duration:180,easing:W})),R(2,p,()=>H,()=>({duration:140})),E(e,p)}),w(t),E(e,t)};r(h,e=>{$.toasts.length>0&&e(v)}),E(e,p),k()}f([`click`]);var Ae=t=>{let n=e(null),r=e(null);if(!t)return{get element(){return l(n)},get rect(){return l(r)},dispose(){}};let i=null,a=e=>{p(r,e?e.getBoundingClientRect():null,!0)},o=()=>{let e=document.querySelector(t);e!==i&&(i=e,p(n,e,!0)),a(e)};o();let s=new MutationObserver(o);s.observe(document.body,{childList:!0,subtree:!0});let c=0,u=()=>{c||=requestAnimationFrame(()=>{c=0,i&&a(i)})},d=new ResizeObserver(u);i&&d.observe(i);let f=new MutationObserver(()=>{d.disconnect(),i&&d.observe(i)});f.observe(document.body,{childList:!0,subtree:!0});let m=()=>u(),h=()=>u();return window.addEventListener(`scroll`,m,!0),window.addEventListener(`resize`,h),{get element(){return l(n)},get rect(){return l(r)},dispose(){c&&cancelAnimationFrame(c),s.disconnect(),f.disconnect(),d.disconnect(),window.removeEventListener(`scroll`,m,!0),window.removeEventListener(`resize`,h)}}},je=(e,t)=>{let n=e instanceof HTMLTextAreaElement?HTMLTextAreaElement.prototype:HTMLInputElement.prototype,r=Object.getOwnPropertyDescriptor(n,`value`)?.set;r?r.call(e,t):e.value=t,e.dispatchEvent(new Event(`input`,{bubbles:!0})),e.dispatchEvent(new Event(`change`,{bubbles:!0}))},Me=e=>{let t=[];for(let n of e){let e=document.querySelector(n.selector);if(!e){t.push(n);continue}e.value.length===0&&je(e,n.value)}return t},Ne=e=>{let t=new WeakSet,n=()=>{e.matches(`:popover-open`)&&e.hidePopover(),e.showPopover()},r=new MutationObserver(r=>{if(!e.matches(`:popover-open`))return;let i=!1;for(let e of r){if(e.type!==`attributes`||e.attributeName!==`open`)continue;let n=e.target;n instanceof HTMLDialogElement&&(n.hasAttribute(`open`)?t.has(n)||(t.add(n),i=!0):t.delete(n))}i&&n()});return r.observe(document.body,{subtree:!0,attributes:!0,attributeFilter:[`open`]}),{dispose(){r.disconnect()}}},Pe=T(`<div class="mt-3 rounded-md border border-amber-200 bg-amber-50 px-2.5 py-2 text-[11px] text-amber-900"><p class="mb-1.5 font-medium">First, head to the right page.</p> <button type="button" class="rounded-md bg-slate-900 px-2.5 py-1 text-[11px] font-medium text-white hover:bg-slate-800"> </button></div>`),Fe=T(`<p class="mt-3 text-[10px] italic text-slate-500">Click the highlighted element to continue.</p>`),Ie=T(`<p class="mt-3 text-[10px] italic text-slate-500">Do the action above to continue.</p>`),Le=T(`<p class="mt-3 text-[10px] italic text-amber-700">Finish the action above first, then click Next.</p>`),Re=T(`<aside popover="manual" class="fixed z-1010 m-0 w-80 max-w-[calc(100vw-3rem)] rounded-xl border border-brand-200 bg-white p-4 shadow-2xl shadow-slate-950/20 transition-[top,left,bottom,right] duration-200" aria-label="Interactive tutorial"><header class="mb-2 flex items-start justify-between gap-3"><div class="min-w-0"><p class="text-[10px] font-semibold uppercase tracking-wide text-brand-700"> </p> <h3 class="mt-0.5 text-sm font-semibold text-slate-950"> </h3></div> <button type="button" class="rounded-md px-1.5 py-0.5 text-xs text-slate-400 hover:bg-slate-100 hover:text-slate-700" aria-label="Exit tutorial" title="Exit tutorial">x</button></header> <p class="whitespace-pre-line text-xs leading-5 text-slate-700"> </p> <!> <footer class="mt-3 flex items-center justify-between gap-2"><button type="button" class="rounded-md p-1 text-slate-500 hover:bg-slate-100 hover:text-slate-800 disabled:cursor-not-allowed disabled:opacity-30" aria-label="Previous step" title="Back">←</button> <button type="button" class="rounded-md border border-slate-300 bg-white px-2.5 py-1 text-[11px] font-medium text-slate-600 hover:bg-slate-50">Exit</button> <button type="button" class="rounded-md bg-brand-700 px-3 py-1 text-[11px] font-semibold text-white hover:bg-brand-800 disabled:cursor-not-allowed disabled:bg-slate-300"> </button></footer></aside>`);function ze(t,n){N(n,!0);let i=e(null);h(()=>{n.panelEl?.(l(i))});let s=P(()=>n.stepNumber===1),u=P(()=>n.stepNumber===n.totalSteps),f=P(()=>{switch(n.placement.kind){case`bottom-right`:return`bottom: 1.5rem; right: 1.5rem; left: auto; top: auto;`;case`bottom-left`:return`bottom: 1.5rem; left: 1.5rem; right: auto; top: auto;`;case`absolute`:return`top: ${n.placement.top}px; left: ${n.placement.left}px; bottom: auto; right: auto;`}});var m=Re(),_=c(m),v=c(_),b=c(v),x=c(b);w(b);var S=g(b,2),C=c(S,!0);w(S),w(v);var T=g(v,2);w(_);var D=g(_,2),O=c(D,!0);w(D);var A=g(D,2),j=e=>{var t=Pe(),r=g(c(t),2),i=c(r);w(r),w(t),o(()=>d(i,`${n.step.route.label??``} →`)),a(`click`,r,function(...e){n.onGoToRoute?.apply(this,e)}),E(e,t)},M=e=>{E(e,Fe())},I=e=>{E(e,Ie())},L=e=>{E(e,Le())};r(A,e=>{!n.onCorrectRoute&&n.step.route?e(j):n.step.advance.kind===`click`?e(M,1):n.step.advance.kind===`event`?e(I,2):n.step.advance.kind===`manual`&&!n.nextEnabled&&e(L,3)});var R=g(A,2),z=c(R),B=g(z,2),V=g(B,2),H=c(V);w(V),w(R),w(m),ee(m,e=>p(i,e),()=>l(i)),o(()=>{y(m,l(f)),d(x,`Tutorial · step ${n.stepNumber??``} of ${n.totalSteps??``}`),d(C,n.step.title),d(O,n.step.body),z.disabled=l(s),V.disabled=!n.nextEnabled,F(V,`title`,n.nextEnabled?l(u)?`Finish the tour`:`Next step`:`Finish the current action first`),d(H,`${l(u)?`Finish`:`Next`} →`)}),a(`click`,T,function(...e){n.onExit?.apply(this,e)}),a(`click`,z,function(...e){n.onPrev?.apply(this,e)}),a(`click`,B,function(...e){n.onExit?.apply(this,e)}),a(`click`,V,function(...e){n.onNext?.apply(this,e)}),E(t,m),k()}f([`click`]);var Be=T(`<div class="pointer-events-none fixed z-20 rounded-lg ring-4 ring-brand-400 ring-offset-2 ring-offset-transparent" aria-hidden="true"></div>`),Ve=T(`<div class="pointer-events-none fixed inset-0 z-20 bg-slate-950/55" aria-hidden="true"></div> <button type="button" class="pointer-events-auto fixed left-1/2 top-20 z-1015 inline-flex -translate-x-1/2 items-center gap-2 rounded-full border border-brand-300 bg-white px-4 py-2 text-xs font-semibold text-brand-800 shadow-lg shadow-slate-950/30 animate-pulse hover:bg-brand-50" aria-label="Scroll up to see highlighted element"><span aria-hidden="true">↑</span> <span>Highlight is above — click to scroll up</span></button>`,1),He=T(`<div class="pointer-events-none fixed inset-0 z-20 bg-slate-950/55" aria-hidden="true"></div> <button type="button" class="pointer-events-auto fixed left-1/2 bottom-24 z-1015 inline-flex -translate-x-1/2 items-center gap-2 rounded-full border border-brand-300 bg-white px-4 py-2 text-xs font-semibold text-brand-800 shadow-lg shadow-slate-950/30 animate-pulse hover:bg-brand-50" aria-label="Scroll down to see highlighted element"><span>Highlight is below — click to scroll down</span> <span aria-hidden="true">↓</span></button>`,1),Ue=T(`<div class="pointer-events-none fixed inset-0 z-20 bg-slate-950/55" aria-hidden="true"></div>`);function We(n,i){N(i,!0);let s=e(0);h(()=>{let e=()=>{p(s,window.innerHeight,!0)};return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)});let c=P(()=>i.rect?{top:i.rect.top-10,left:i.rect.left-10,width:i.rect.width+20,height:i.rect.height+20}:null),u=P(()=>!i.rect||l(s)===0?null:i.rect.bottom<64?`above`:i.rect.top>l(s)?`below`:`visible`);var d=t(),f=_(d),m=e=>{var t=Be();o(()=>y(t,`top: ${l(c).top??``}px; left: ${l(c).left??``}px; width: ${l(c).width??``}px; height: ${l(c).height??``}px; box-shadow: 0 0 0 9999px rgba(15, 23, 42, 0.55);`)),E(e,t)},v=e=>{var t=Ve();a(`click`,g(_(t),2),()=>window.scrollBy({top:-window.innerHeight*.7,behavior:`smooth`})),E(e,t)},b=e=>{var t=He();a(`click`,g(_(t),2),()=>window.scrollBy({top:window.innerHeight*.7,behavior:`smooth`})),E(e,t)},x=e=>{E(e,Ue())};r(f,e=>{l(c)&&l(u)===`visible`?e(m):l(c)&&l(u)===`above`?e(v,1):l(c)&&l(u)===`below`?e(b,2):e(x,-1)}),E(n,d),k()}f([`click`]);var Ge=T(`<!> <!>`,1);function Ke(n,i){N(i,!0);let a=P(()=>Y.currentStep),o=P(()=>l(a)?.route?B.url?.pathname===l(a).route.pathname:!0),s=e(null);h(()=>{let e=Ae(l(o)?l(a)?.target??null:null);return p(s,e,!0),()=>e.dispose()});let c=P(()=>l(s)?.rect??null),u=P(()=>{if(typeof window>`u`)return{kind:`bottom-right`};let e=l(a)?.panelPosition??`bottom-right`;if(e===`avoid-target`)return l(c)&&l(c).left+l(c).width/2>window.innerWidth/2?{kind:`bottom-left`}:{kind:`bottom-right`};if(e===`below-target`&&l(c)){let e=l(c).bottom+16;if(e+220>window.innerHeight-16)return{kind:`bottom-right`};let t=l(c).left+l(c).width/2-320/2;return{kind:`absolute`,top:e,left:Math.max(16,Math.min(t,window.innerWidth-320-16))}}return{kind:`bottom-right`}}),d=P(()=>!l(a)||l(a).advance.kind!==`manual`?!1:l(a).canAdvance?l(a).canAdvance():!0);h(()=>{let e=l(s)?.element;e&&e.scrollIntoView({behavior:`smooth`,block:`center`})}),h(()=>{let e=l(a);if(!e?.focusSelector||!l(o))return;let t=e.focusSelector,n=!1,r=0,i=()=>{if(n||r++>60)return;let e=document.querySelector(t);if(e){e.focus(),(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)&&e.select();return}requestAnimationFrame(i)};return requestAnimationFrame(i),()=>{n=!0}}),h(()=>{if(!l(a)?.lockScroll)return;let e=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=e}}),h(()=>{if(!l(a)?.target||Y.stepIndex===0)return;let e=!1,t=null,n=!1,r=setInterval(()=>{n||(l(s)?.element==null?e&&!t&&(t=setTimeout(()=>Y.previous(),500)):(e=!0,t&&=(clearTimeout(t),null)))},150);return()=>{n=!0,clearInterval(r),t&&clearTimeout(t)}}),h(()=>{let e=l(a);if(!e||e.advance.kind!==`click`)return;let t=e.advance.selector,n=e=>{let n=e.target;n instanceof Element&&n.closest(t)&&setTimeout(()=>Y.next(),0)};return document.addEventListener(`click`,n,!0),()=>document.removeEventListener(`click`,n,!0)}),h(()=>{let e=l(a);if(!e?.prefill||e.prefill.length===0||!l(o))return;let t=[...e.prefill],n=0,r=!1,i=()=>{r||(t=Me(t),t.length>0&&(n=requestAnimationFrame(i)))};return i(),()=>{r=!0,n&&cancelAnimationFrame(n)}});let f=e(null);h(()=>{l(f)&&(l(a)&&!l(f).matches(`:popover-open`)&&l(f).showPopover(),!l(a)&&l(f).matches(`:popover-open`)&&l(f).hidePopover())}),h(()=>{if(!l(f))return;let e=Ne(l(f));return()=>e.dispose()});function m(){l(a)?.route&&z(l(a).route.pathname)}var v=t(),y=_(v),b=e=>{var t=Ge(),n=_(t),i=e=>{We(e,{get rect(){return l(c)}})};r(n,e=>{l(o)&&e(i)});var s=g(n,2);{let e=P(()=>Y.stepIndex+1);ze(s,{get step(){return l(a)},get stepNumber(){return l(e)},get totalSteps(){return Y.totalSteps},get onCorrectRoute(){return l(o)},get placement(){return l(u)},get nextEnabled(){return l(d)},panelEl:e=>p(f,e,!0),onGoToRoute:m,onPrev:()=>Y.previous(),onNext:()=>Y.next(),onExit:()=>Y.cancel()})}E(e,t)};r(y,e=>{l(a)&&e(b)}),E(n,v),k()}var qe=T(`<a> </a>`),Je=T(`<span aria-hidden="true"> </span>`),Ye=u(`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" class="h-5 w-5" aria-hidden="true"><circle cx="12" cy="8" r="3.5"></circle><path d="M5 20c1.2-3.6 4-5.5 7-5.5s5.8 1.9 7 5.5"></path></svg>`),Xe=T(`<p class="px-3 pt-2 pb-1 text-[10px] font-semibold uppercase tracking-wide text-slate-400">Signed in as</p> <p class="truncate px-3 pb-2 text-sm font-medium text-slate-800"> </p> <div class="my-1 h-px bg-slate-100"></div>`,1),Ze=T(`<div role="menu" class="absolute right-0 top-12 z-40 w-60 overflow-hidden rounded-lg border border-slate-200 bg-white p-1 shadow-lg shadow-slate-950/10"><!> <button type="button" role="menuitem" class="flex w-full items-start gap-3 rounded-md px-3 py-2 text-left text-sm text-slate-700 hover:bg-slate-50"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" class="mt-0.5 h-4 w-4 shrink-0 text-slate-400" aria-hidden="true"><path d="M12 20h9"></path><path d="M16.5 3.5a2.121 2.121 0 1 1 3 3L7 19l-4 1 1-4 12.5-12.5z"></path></svg> <span class="min-w-0 flex-1"><span class="block font-medium"> </span> <span class="block text-[11px] text-slate-500">Shown on every history entry you create.</span></span></button> <button type="button" role="menuitem" class="flex w-full items-start gap-3 rounded-md px-3 py-2 text-left text-sm text-rose-700 hover:bg-rose-50 hover:text-rose-800"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" class="mt-0.5 h-4 w-4 shrink-0 text-rose-500" aria-hidden="true"><path d="M3 6h18"></path><path d="M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path><path d="M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"></path><line x1="10" y1="11" x2="10" y2="17"></line><line x1="14" y1="11" x2="14" y2="17"></line></svg> <span class="min-w-0 flex-1"><span class="block font-semibold">Reset local data</span> <span class="block text-[11px] text-rose-600/80">Wipes display name + browser settings. Projects on disk are kept.</span></span></button></div>`),Qe=T(`<div class="motion-reduce:animate-none! motion-reduce:opacity-100!"><!></div>`),$e=T(`<div class="flex min-h-full flex-col bg-[linear-gradient(180deg,#f0fdfa_0%,#f8fafc_220px,#f8fafc_100%)] text-ink"><header class="sticky top-0 z-30 border-b border-slate-200 bg-white/95 backdrop-blur"><div class="mx-auto flex h-16 max-w-6xl items-center justify-between px-4 sm:px-6"><a href="/" class="flex items-center gap-2"><img src="/unspaghettit_logo.png" alt="Unspaghettit" class="h-12 w-auto"/> <span class="relative hidden font-brand text-3xl font-semibold leading-none sm:inline-block">Unspaghettit <span class="font-grotesk absolute right-0 -bottom-2 text-[10px] font-medium tracking-wide text-slate-500">by Lyriks.io</span></span></a> <div class="flex items-center gap-3"><nav aria-label="Primary" class="flex items-center rounded-lg border border-slate-200 bg-white p-1 text-sm font-medium text-slate-600 shadow-sm shadow-slate-950/5"></nav> <div class="relative"><button type="button" aria-haspopup="menu"><!> <span aria-hidden="true"></span></button> <!></div></div></div></header> <main class="flex-1"><!></main></div> <!> <!> <!> <!>`,1);function et(t,u){N(u,!0),M(async()=>{X.init(),q.init(),!X.name&&!X.hasBeenAsked&&(X.markAsked(),queueMicrotask(()=>{f()}));try{await ne.reconcileOrphanFeatures()}catch(e){console.warn(`Orphan reconciliation failed:`,e)}});async function f(){let e=await te({title:`Your display name`,message:`Shown on every history entry you create. Stored locally in this browser — never sent off-machine. Leave empty to stay anonymous.`,inputLabel:`Display name`,defaultValue:X.name,placeholder:`e.g. John`,confirmLabel:`Save`,tone:`info`});e!==null&&X.setName(e)}let h=P(()=>X.name.trim().charAt(0).toUpperCase()),v=e(!1),y=e(null);function b(e){if(!l(v))return;let t=l(y);t&&(t.contains(e.target)||p(v,!1))}async function x(){p(v,!1),await f()}async function C(){p(v,!1),await T()}async function T(){if(await K({title:`Reset local browser data?`,message:`Clears your display name, the dashboard's local preferences, and any cached per-tab state in this browser. Your projects, features, history, and queue stay on disk untouched. The page will reload to apply a fresh state.`,confirmLabel:`Reset everything`,cancelLabel:`Cancel`,tone:`danger`})){try{localStorage.clear()}catch{}try{sessionStorage.clear()}catch{}location.reload()}}let D=[{href:`/projects`,label:`Projects`,match:e=>e===`/`||e.startsWith(`/projects`)},{href:`/mcp`,label:`MCP`,match:e=>e.startsWith(`/mcp`)},{href:`/tutorial`,label:`Tutorial`,match:e=>e.startsWith(`/tutorial`)}],O=P(()=>B.url.pathname);var A=$e();s(`mousedown`,j,b),s(`keydown`,j,e=>{e.key===`Escape`&&l(v)&&p(v,!1)});var z=_(A),V=c(z),U=c(V),G=g(c(U),2),J=c(G);L(J,21,()=>D,m,(e,t)=>{let n=P(()=>l(t).match(B.url.pathname));var r=qe(),i=c(r,!0);w(r),o(e=>{F(r,`href`,l(t).href),F(r,`data-tour`,e),I(r,1,`rounded-md px-3 py-1.5 transition ${l(n)?`bg-slate-900 text-white`:`hover:bg-slate-100 hover:text-slate-950`}`),d(i,l(t).label)},[()=>`nav-${l(t).href.replace(/^\//,``)}`]),E(e,r)}),w(J);var Y=g(J,2),Z=c(Y),Q=c(Z),re=e=>{var t=Je(),n=c(t,!0);w(t),o(()=>d(n,l(h))),E(e,t)},ie=e=>{E(e,Ye())};r(Q,e=>{X.name?e(re):e(ie,-1)});var ae=g(Q,2);w(Z);var oe=g(Z,2),se=e=>{var t=Ze(),n=c(t),i=e=>{var t=Xe(),n=g(_(t),2),r=c(n,!0);w(n),S(2),o(()=>d(r,X.name)),E(e,t)};r(n,e=>{X.name&&e(i)});var s=g(n,2),l=g(c(s),2),u=c(l),f=c(u,!0);w(u),S(2),w(l),w(s);var p=g(s,2);w(t),o(()=>d(f,X.name?`Change display name`:`Set display name`)),a(`click`,s,x),a(`click`,p,C),E(e,t)};r(oe,e=>{l(v)&&e(se)}),w(Y),ee(Y,e=>p(y,e),()=>l(y)),w(G),w(U),w(V);var ce=g(V,2);i(c(ce),()=>l(O),e=>{var t=Qe();n(c(t),()=>u.children),w(t),R(1,t,()=>H,()=>({duration:160,easing:W})),E(e,t)}),w(ce),w(z);var le=g(z,2);he(le,{});var ue=g(le,2);_e(ue,{});var de=g(ue,2);ke(de,{}),Ke(g(de,2),{}),o(()=>{F(Z,`aria-expanded`,l(v)),F(Z,`aria-label`,X.name?`Signed in as ${X.name}. Open identity menu.`:`Set your display name`),F(Z,`title`,X.name?`Signed in as ${X.name}`:`Set a display name so your edits are recognisable in history`),I(Z,1,`group relative flex h-10 w-10 shrink-0 items-center justify-center rounded-full text-sm font-semibold shadow-sm shadow-slate-950/5 ring-1 ring-transparent transition focus:outline-none focus-visible:ring-2 focus-visible:ring-brand-300
|
|
1
|
+
import{$ as e,A as t,C as n,D as r,E as i,F as a,H as o,I as s,J as c,L as l,M as u,O as d,P as f,Q as p,T as m,U as h,X as g,Y as _,Z as v,_ as y,c as b,d as x,dt as S,et as C,ft as w,j as T,k as E,l as D,o as O,ot as k,pt as A,q as j,r as M,s as ee,st as N,tt as P,u as F,v as I,w as L,x as R}from"../chunks/DF6QYH3p.js";import{t as z}from"../chunks/K3JxBPSQ.js";import"../chunks/xihTtKlq.js";import{t as B}from"../chunks/B-lvxr_Y.js";import{i as V,n as H,r as U,t as W}from"../chunks/CM5qK71w.js";import{gt as te,ht as G,mt as K,ut as q}from"../chunks/Dv09pO87.js";import"../chunks/Dvd8XBNO.js";import{t as J}from"../chunks/BTLTzKaZ.js";import"../chunks/B4Mul34I.js";import{t as Y}from"../chunks/CvxLPre7.js";import{t as ne}from"../chunks/1_r1S7Ly.js";import{t as X}from"../chunks/CKUA0lwj.js";var Z=A({prerender:()=>!1,ssr:()=>!1,trailingSlash:()=>Q}),Q=`never`,re=T(`<span class="mt-1 block text-xs leading-relaxed opacity-80"> </span>`),ie=T(`<li class="flex"><button type="button"><span class="min-w-0 flex-1"><span class="block text-sm"> </span> <!></span> <span aria-hidden="true" class="shrink-0 text-base transition group-hover:translate-x-1">→</span></button></li>`),ae=T(`<div class="px-7 pt-2 pb-5"><ul class="flex max-h-80 flex-col gap-3 overflow-y-auto"></ul></div>`),oe=T(`<p class="mt-2 text-xs font-medium text-red-700"> </p>`),se=T(`<div class="px-7 pt-1 pb-4"><label class="block text-xs font-medium text-slate-700"> <input autocorrect="off" autocapitalize="off" spellcheck="false" class="mono mt-1 h-10 w-full rounded-md border border-slate-300 bg-white px-3 text-sm outline-none focus:border-brand-700 focus:ring-2 focus:ring-brand-100"/></label> <!></div>`),ce=T(`<span class="mt-0.5 block text-xs text-slate-500"> </span>`),le=T(`<li><label class="flex cursor-pointer items-start gap-3 rounded-md px-2 py-2 transition hover:bg-white"><input type="checkbox"/> <span class="min-w-0 flex-1"><span class="block text-sm font-medium text-slate-900"> </span> <!></span></label></li>`),ue=T(`<div class="border-t border-hairline px-6 py-3"><div class="mb-2 flex items-center justify-between"><span class="text-xs font-medium uppercase tracking-wide text-slate-500"> </span> <div class="flex gap-2 text-xs"><button type="button" class="font-medium text-slate-600 hover:text-slate-950">Select all</button> <span class="text-slate-300">·</span> <button type="button" class="font-medium text-slate-600 hover:text-slate-950">Select none</button></div></div> <ul class="max-h-72 space-y-1.5 overflow-y-auto rounded-lg border border-hairline bg-slate-50 p-2"></ul></div>`),de=T(`<button type="button"> </button>`),fe=T(`<button type="button" class="rounded-md px-3 py-2 text-sm text-slate-600 transition hover:text-slate-950"> </button>`),pe=T(`<button type="button" class="rounded-md border border-slate-300 bg-white px-4 py-2 text-sm text-slate-700 transition hover:bg-slate-100"> </button> <button type="button"> </button>`,1),me=T(`<div class="fixed inset-0 z-100 flex items-center justify-center px-4" role="presentation"><button type="button" aria-label="Dismiss" class="absolute inset-0 bg-slate-950/40 backdrop-blur-sm"></button> <div role="dialog" aria-modal="true" aria-labelledby="app-dialog-title" aria-describedby="app-dialog-message"><div class="flex gap-4 px-7 pt-7 pb-5"><div> </div> <div class="min-w-0 flex-1 pt-1"><h2 id="app-dialog-title" class="text-lg leading-tight text-slate-950"> </h2> <p id="app-dialog-message" class="mt-2 whitespace-pre-line text-sm leading-relaxed text-slate-600"> </p></div></div> <!> <div class="flex justify-end gap-2 border-t border-hairline bg-slate-50 px-7 py-3"><!></div></div></div>`);function he(n,i){N(i,!0);let u=P(()=>G.current),f=e(v(new Set)),m=e(``),y=e(null),C=e(null);h(()=>{l(u)?.kind===`checklist`?p(f,new Set(l(u).opts.items.filter(e=>e.defaultChecked).map(e=>e.id)),!0):p(f,new Set,!0),l(u)?.kind===`prompt`?(p(m,l(u).opts.defaultValue??``,!0),p(y,null),queueMicrotask(()=>l(C)?.focus())):(p(m,``),p(y,null))});function T(e){let t=new Set(l(f));t.has(e)?t.delete(e):t.add(e),p(f,t,!0)}function O(){l(u)?.kind===`checklist`&&p(f,new Set(l(u).opts.items.map(e=>e.id)),!0)}function A(){p(f,new Set,!0)}function M(){l(u)?.kind===`prompt`?G.resolvePrompt(null):G.resolveCurrent(!1)}function z(){if(l(u)?.kind===`checklist`)G.resolveCurrent(!0,Array.from(l(f)));else if(l(u)?.kind===`prompt`){let e=l(m),t=l(u).opts.validate?l(u).opts.validate(e):null;if(t){p(y,t,!0);return}G.resolvePrompt(e)}else G.resolveCurrent(!0)}function B(e){l(u)&&(e.key===`Escape`?(e.preventDefault(),M()):e.key===`Enter`&&l(u).kind!==`checklist`&&(e.preventDefault(),z()))}let U={default:{icon:`?`,iconBg:`bg-slate-100`,iconColor:`text-slate-700`,confirmBtn:`bg-slate-900 hover:bg-slate-800 text-white`,check:`accent-slate-700`},danger:{icon:`!`,iconBg:`bg-rose-50`,iconColor:`text-rose-600`,confirmBtn:`bg-rose-600 hover:bg-rose-500 text-white`,check:`accent-rose-600`},info:{icon:`i`,iconBg:`bg-brand-50`,iconColor:`text-brand-700`,confirmBtn:`bg-brand-700 hover:bg-brand-600 text-white`,check:`accent-brand-700`},success:{icon:`✓`,iconBg:`bg-emerald-50`,iconColor:`text-emerald-600`,confirmBtn:`bg-emerald-600 hover:bg-emerald-500 text-white`,check:`accent-emerald-600`},warning:{icon:`!`,iconBg:`bg-amber-50`,iconColor:`text-amber-600`,confirmBtn:`bg-amber-600 hover:bg-amber-500 text-white`,check:`accent-amber-600`}},te=P(()=>l(u)?.opts.tone??(l(u)?.kind===`alert`?`info`:`default`)),K=P(()=>U[l(te)]);var q=t();s(`keydown`,j,B);var J=_(q),Y=e=>{var t=me(),n=c(t),i=g(n,2),s=c(i),h=c(s),v=c(h,!0);w(h);var k=g(h,2),j=c(k),N=c(j,!0);w(j);var P=g(j,2),B=c(P,!0);w(P),w(k),w(s);var U=g(s,2),te=e=>{var t=ae(),n=c(t);L(n,21,()=>l(u).opts.options,e=>e.id,(e,t)=>{var n=ie(),i=c(n),s=c(i),u=c(s),f=c(u,!0);w(u);var p=g(u,2),m=e=>{var n=re(),r=c(n,!0);w(n),o(()=>d(r,l(t).description)),E(e,n)};r(p,e=>{l(t).description&&e(m)}),w(s),S(2),w(i),w(n),o(()=>{I(i,1,`group flex w-full items-center justify-between gap-4 rounded-xl px-5 py-4 text-left shadow-sm shadow-slate-950/5 transition hover:shadow-md focus:ring-2 focus:ring-offset-2 focus:outline-none ${l(K).confirmBtn}`),d(f,l(t).label)}),a(`click`,i,()=>G.resolveChoice(l(t).id)),E(e,n)}),w(n),w(t),E(e,t)},q=e=>{var t=se(),n=c(t),i=c(n),s=g(i);D(s),ee(s,e=>p(C,e),()=>l(C)),w(n);var f=g(n,2),h=e=>{var t=oe(),n=c(t,!0);w(t),o(()=>d(n,l(y))),E(e,t)};r(f,e=>{l(y)&&e(h)}),w(t),o(()=>{d(i,`${l(u).opts.inputLabel??`Value`??``} `),F(s,`type`,l(u).opts.password?`password`:`text`),F(s,`autocomplete`,l(u).opts.password?`new-password`:`off`),F(s,`placeholder`,l(u).opts.placeholder??``)}),a(`input`,s,()=>p(y,null)),b(s,()=>l(m),e=>p(m,e)),E(e,t)},J=e=>{var t=ue(),n=c(t),i=c(n),s=c(i);w(i);var p=g(i,2),m=c(p),h=g(m,4);w(p),w(n);var _=g(n,2);L(_,21,()=>l(u).opts.items,e=>e.id,(e,t)=>{var n=le(),i=c(n),s=c(i);D(s);var u=g(s,2),p=c(u),m=c(p,!0);w(p);var h=g(p,2),_=e=>{var n=ce(),r=c(n,!0);w(n),o(()=>d(r,l(t).description)),E(e,n)};r(h,e=>{l(t).description&&e(_)}),w(u),w(i),w(n),o(e=>{I(s,1,`mt-0.5 h-4 w-4 rounded ${l(K).check}`),x(s,e),d(m,l(t).label)},[()=>l(f).has(l(t).id)]),a(`change`,s,()=>T(l(t).id)),E(e,n)}),w(_),w(t),o(()=>d(s,`${l(f).size??``} of ${l(u).opts.items.length??``} selected`)),a(`click`,m,O),a(`click`,h,A),E(e,t)};r(U,e=>{l(u).kind===`choice`?e(te):l(u).kind===`prompt`?e(q,1):l(u).kind===`checklist`&&e(J,2)});var Y=g(U,2),ne=c(Y),X=e=>{var t=de(),n=c(t,!0);w(t),o(()=>{I(t,1,`rounded-md px-4 py-2 text-sm transition ${l(K).confirmBtn}`),d(n,l(u).opts.buttonLabel??`OK`)}),a(`click`,t,M),E(e,t)},Z=e=>{var t=fe(),n=c(t,!0);w(t),o(()=>d(n,l(u).opts.cancelLabel??`Close`)),a(`click`,t,M),E(e,t)},Q=e=>{var t=pe(),n=_(t),r=c(n,!0);w(n);var i=g(n,2),s=c(i,!0);w(i),o(()=>{d(r,l(u).opts.cancelLabel??`Cancel`),I(i,1,`rounded-md px-4 py-2 text-sm transition focus:ring-2 focus:ring-offset-2 focus:outline-none ${l(K).confirmBtn}`),d(s,l(u).opts.confirmLabel??`Confirm`)}),a(`click`,n,M),a(`click`,i,z),E(e,t)};r(ne,e=>{l(u).kind===`alert`?e(X):l(u).kind===`choice`?e(Z,1):e(Q,-1)}),w(Y),w(i),w(t),o(()=>{I(i,1,`relative w-full ${l(u).kind===`checklist`||l(u).kind===`choice`?`max-w-lg`:`max-w-md`} overflow-hidden rounded-2xl border border-hairline bg-white shadow-2xl shadow-slate-950/20`),I(h,1,`flex h-11 w-11 shrink-0 items-center justify-center rounded-full text-lg ${l(K).iconBg} ${l(K).iconColor}`),d(v,l(K).icon),d(N,l(u).opts.title),d(B,l(u).opts.message)}),a(`click`,n,M),R(3,i,()=>V,()=>({duration:140,start:.96,easing:W})),R(3,t,()=>H,()=>({duration:120,easing:W})),E(e,t)};r(J,e=>{l(u)&&e(Y)}),E(n,q),k()}f([`click`,`input`,`change`]);var ge=T(`<div class="untangler-sky svelte-dds6m1" aria-hidden="true"><div class="untangler svelte-dds6m1"><svg viewBox="0 0 240 110" role="img" class="svelte-dds6m1"><g class="tangle tangle-outline svelte-dds6m1"><path d="M5 55 C 32 12, 48 95, 72 32 S 116 80, 148 42 S 196 22, 232 62" class="svelte-dds6m1"></path><path d="M5 70 C 28 32, 52 95, 78 22 S 124 72, 156 44 S 200 30, 232 76" class="svelte-dds6m1"></path><path d="M5 40 C 36 82, 60 12, 92 70 S 118 30, 150 52 S 196 70, 230 30" class="svelte-dds6m1"></path><path d="M5 88 C 30 60, 48 100, 80 65 S 130 95, 165 70 S 210 88, 232 60" class="svelte-dds6m1"></path></g><g class="tangle tangle-fill svelte-dds6m1"><path d="M5 55 C 32 12, 48 95, 72 32 S 116 80, 148 42 S 196 22, 232 62" class="svelte-dds6m1"></path><path d="M5 70 C 28 32, 52 95, 78 22 S 124 72, 156 44 S 200 30, 232 76" class="svelte-dds6m1"></path><path d="M5 40 C 36 82, 60 12, 92 70 S 118 30, 150 52 S 196 70, 230 30" class="svelte-dds6m1"></path><path d="M5 88 C 30 60, 48 100, 80 65 S 130 95, 165 70 S 210 88, 232 60" class="svelte-dds6m1"></path></g><g class="clean clean-outline svelte-dds6m1"><line x1="5" y1="30" x2="232" y2="30" class="svelte-dds6m1"></line><line x1="5" y1="50" x2="232" y2="50" class="svelte-dds6m1"></line><line x1="5" y1="70" x2="232" y2="70" class="svelte-dds6m1"></line><line x1="5" y1="90" x2="232" y2="90" class="svelte-dds6m1"></line></g><g class="clean clean-fill svelte-dds6m1"><line x1="5" y1="30" x2="232" y2="30" class="svelte-dds6m1"></line><line x1="5" y1="50" x2="232" y2="50" class="svelte-dds6m1"></line><line x1="5" y1="70" x2="232" y2="70" class="svelte-dds6m1"></line><line x1="5" y1="90" x2="232" y2="90" class="svelte-dds6m1"></line></g><g class="glint svelte-dds6m1"><rect x="-18" y="18" width="14" height="78" rx="3" class="svelte-dds6m1"></rect></g></svg></div></div>`);function _e(n,i){N(i,!0);let a=[`arrowup`,`arrowup`,`arrowdown`,`arrowdown`,`arrowleft`,`arrowright`,`arrowleft`,`arrowright`,`b`,`a`],o=e(!1),c=``,u=0,d=null;function f(e){return e instanceof HTMLElement?e.isContentEditable?!0:!!e.closest(`input, textarea, select, [contenteditable='true']`):!1}function m(){p(o,!1),d&&clearTimeout(d),requestAnimationFrame(()=>{p(o,!0),d=setTimeout(()=>{p(o,!1)},5200)})}function g(e){return e===a[u]?(u+=1,u<a.length?!1:(u=0,!0)):(u=+(e===a[0]),!1)}function v(e){return e.length!==1||(c=(c+e).slice(-9),c!==`spaghetti`)?!1:(c=``,!0)}function y(e){if(f(e.target))return;let t=e.key.toLowerCase();(g(t)||v(t))&&m()}h(()=>()=>{d&&clearTimeout(d)});var b=t();s(`keydown`,j,y);var x=_(b),S=e=>{E(e,ge())};r(x,e=>{l(o)&&e(S)}),E(n,b),k()}var ve=4,ye=5e3,be=e=>{if(e.op!==`delete`)switch(e.kind){case`feature`:return`/features/${e.id}`;case`project`:return`/projects/${e.id}`;case`implementation-status`:return`/features/${e.id}`}},xe=800,$=new class{#e=e(v([]));get toasts(){return l(this.#e)}set toasts(e){p(this.#e,e,!0)}nextId=1;subscribed=!1;unsubscribe=null;timers=new Map;recentKeys=new Map;start(){this.subscribed||(this.subscribed=!0,this.unsubscribe=J(e=>this.handle(e)))}dismiss(e){let t=this.timers.get(e);t&&(clearTimeout(t),this.timers.delete(e)),this.toasts=this.toasts.filter(t=>t.id!==e)}reset(){for(let e of this.timers.values())clearTimeout(e);this.timers.clear(),this.toasts=[],this.recentKeys.clear(),this.unsubscribe&&this.unsubscribe(),this.unsubscribe=null,this.subscribed=!1}handle(e){let t=`${e.kind}:${e.id}:${e.op??`save`}`,n=Date.now(),r=this.recentKeys.get(t);if(r!==void 0&&n-r<xe){this.recentKeys.set(t,n);return}this.recentKeys.set(t,n);let i=this.nextId++,a=[{id:i,kind:e.kind,entityId:e.id,name:e.name,projectName:e.projectName,op:e.op??`save`,changeOp:e.changeOp,changePath:e.changePath,previousName:e.previousName,actingFor:e.actingFor,...be(e)?{href:be(e)}:{}},...this.toasts].slice(0,ve),o=new Set(a.map(e=>e.id));for(let[e,t]of this.timers)o.has(e)||(clearTimeout(t),this.timers.delete(e));this.toasts=a;let s=setTimeout(()=>this.dismiss(i),ye);this.timers.set(i,s)}},Se=T(`<span class="rounded bg-purple-100 px-1.5 py-0.5 text-[9px] text-purple-800"> </span>`),Ce=T(`<span class="shrink-0 text-slate-400" aria-hidden="true">›</span>`),we=T(`<!> <span> </span>`,1),Te=T(`<div class="mt-0.5 truncate text-[11px] text-slate-500"> </div>`),Ee=T(`<a class="rounded-md bg-white/70 px-2 py-1 text-xs font-medium text-slate-700 hover:bg-white hover:text-brand-800">View</a>`),De=T(`<div><div class="min-w-0 flex-1"><div class="flex flex-wrap items-center gap-x-1.5 gap-y-0.5 text-[10px] font-semibold uppercase tracking-wide"><span class="text-slate-500"> </span> <!></div> <div class="mt-0.5 flex min-w-0 flex-wrap items-center gap-x-1 text-sm text-slate-900"></div> <!></div> <div class="flex shrink-0 items-center gap-1"><!> <button type="button" class="rounded-md px-1.5 py-1 text-xs text-slate-500 hover:bg-white/70 hover:text-slate-900" aria-label="Dismiss">✕</button></div></div>`),Oe=T(`<div class="pointer-events-none fixed top-20 right-4 z-50 flex w-full max-w-md flex-col gap-2" role="status" aria-live="polite"></div>`);function ke(e,n){N(n,!1),M(()=>{$.start()});function i(e){switch(e){case`feature`:return`feature`;case`project`:return`project`;case`implementation-status`:return`status`}}function s(e){switch(e){case`feature`:return`border-cyan-200 bg-cyan-50`;case`project`:return`border-violet-200 bg-violet-50`;case`implementation-status`:return`border-emerald-200 bg-emerald-50`}}function u(e){if(e.op===`delete`)return`deleted`;switch(e.changeOp){case`added`:return`added`;case`removed`:return`removed`;case`renamed`:return`renamed`;case`edited`:return`edited`;case`queued`:return`queued`;case`unqueued`:return`unqueued`;case`created`:return`created`;case`deleted`:return`deleted`;default:return`saved`}}function f(e){let t=[];e.projectName&&t.push(e.projectName);let n=e.changePath?.[0],r=n!==void 0&&(e.name===n||!e.name);if(e.name&&!r&&t.push(e.name),e.changePath&&e.changePath.length>0)for(let n of e.changePath)t.push(n);else e.name&&t[t.length-1]!==e.name&&t.push(e.name);let i=[];for(let e of t)e!==`unknown`&&i[i.length-1]!==e&&i.push(e);return i.length===0&&i.push(e.entityId),i}O();var p=t(),h=_(p),v=e=>{var t=Oe();L(t,5,()=>$.toasts,e=>e.id,(e,t)=>{let n=C(()=>f(l(t)));var p=De(),h=c(p),v=c(h),y=c(v),b=c(y);w(y);var x=g(y,2),S=e=>{var n=Se(),r=c(n);w(n),o(()=>d(r,`for ${l(t).actingFor??``}`)),E(e,n)};r(x,e=>{l(t).actingFor&&e(S)}),w(v);var T=g(v,2);L(T,5,()=>l(n),m,(e,t,i)=>{var a=we(),s=_(a),u=e=>{E(e,Ce())};r(s,e=>{i>0&&e(u)});var f=g(s,2),p=c(f,!0);w(f),o(()=>{I(f,1,`truncate ${i===l(n).length-1?`font-semibold`:`text-slate-600`}`),d(p,l(t))}),E(e,a)}),w(T);var D=g(T,2),O=e=>{var n=Te(),r=c(n);w(n),o(()=>d(r,`was “${l(t).previousName??``}”`)),E(e,n)};r(D,e=>{l(t).changeOp===`renamed`&&l(t).previousName&&e(O)}),w(h);var k=g(h,2),A=c(k),j=e=>{var n=Ee();o(()=>F(n,`href`,l(t).href)),a(`click`,n,()=>$.dismiss(l(t).id)),E(e,n)};r(A,e=>{l(t).href&&e(j)});var M=g(A,2);w(k),w(p),o((e,t,n)=>{I(p,1,`pointer-events-auto flex items-start gap-3 rounded-lg border px-3 py-2 shadow-md shadow-slate-950/10 ${e??``}`),d(b,`MCP · ${t??``} ${n??``}`)},[()=>s(l(t).kind),()=>u(l(t)),()=>i(l(t).kind)]),a(`click`,M,()=>$.dismiss(l(t).id)),R(1,p,()=>U,()=>({x:24,duration:180,easing:W})),R(2,p,()=>H,()=>({duration:140})),E(e,p)}),w(t),E(e,t)};r(h,e=>{$.toasts.length>0&&e(v)}),E(e,p),k()}f([`click`]);var Ae=t=>{let n=e(null),r=e(null);if(!t)return{get element(){return l(n)},get rect(){return l(r)},dispose(){}};let i=null,a=e=>{p(r,e?e.getBoundingClientRect():null,!0)},o=()=>{let e=document.querySelector(t);e!==i&&(i=e,p(n,e,!0)),a(e)};o();let s=new MutationObserver(o);s.observe(document.body,{childList:!0,subtree:!0});let c=0,u=()=>{c||=requestAnimationFrame(()=>{c=0,i&&a(i)})},d=new ResizeObserver(u);i&&d.observe(i);let f=new MutationObserver(()=>{d.disconnect(),i&&d.observe(i)});f.observe(document.body,{childList:!0,subtree:!0});let m=()=>u(),h=()=>u();return window.addEventListener(`scroll`,m,!0),window.addEventListener(`resize`,h),{get element(){return l(n)},get rect(){return l(r)},dispose(){c&&cancelAnimationFrame(c),s.disconnect(),f.disconnect(),d.disconnect(),window.removeEventListener(`scroll`,m,!0),window.removeEventListener(`resize`,h)}}},je=(e,t)=>{let n=e instanceof HTMLTextAreaElement?HTMLTextAreaElement.prototype:HTMLInputElement.prototype,r=Object.getOwnPropertyDescriptor(n,`value`)?.set;r?r.call(e,t):e.value=t,e.dispatchEvent(new Event(`input`,{bubbles:!0})),e.dispatchEvent(new Event(`change`,{bubbles:!0}))},Me=e=>{let t=[];for(let n of e){let e=document.querySelector(n.selector);if(!e){t.push(n);continue}e.value.length===0&&je(e,n.value)}return t},Ne=e=>{let t=new WeakSet,n=()=>{e.matches(`:popover-open`)&&e.hidePopover(),e.showPopover()},r=new MutationObserver(r=>{if(!e.matches(`:popover-open`))return;let i=!1;for(let e of r){if(e.type!==`attributes`||e.attributeName!==`open`)continue;let n=e.target;n instanceof HTMLDialogElement&&(n.hasAttribute(`open`)?t.has(n)||(t.add(n),i=!0):t.delete(n))}i&&n()});return r.observe(document.body,{subtree:!0,attributes:!0,attributeFilter:[`open`]}),{dispose(){r.disconnect()}}},Pe=T(`<div class="mt-3 rounded-md border border-amber-200 bg-amber-50 px-2.5 py-2 text-[11px] text-amber-900"><p class="mb-1.5 font-medium">First, head to the right page.</p> <button type="button" class="rounded-md bg-slate-900 px-2.5 py-1 text-[11px] font-medium text-white hover:bg-slate-800"> </button></div>`),Fe=T(`<p class="mt-3 text-[10px] italic text-slate-500">Click the highlighted element to continue.</p>`),Ie=T(`<p class="mt-3 text-[10px] italic text-slate-500">Do the action above to continue.</p>`),Le=T(`<p class="mt-3 text-[10px] italic text-amber-700">Finish the action above first, then click Next.</p>`),Re=T(`<aside popover="manual" class="fixed z-1010 m-0 w-80 max-w-[calc(100vw-3rem)] rounded-xl border border-brand-200 bg-white p-4 shadow-2xl shadow-slate-950/20 transition-[top,left,bottom,right] duration-200" aria-label="Interactive tutorial"><header class="mb-2 flex items-start justify-between gap-3"><div class="min-w-0"><p class="text-[10px] font-semibold uppercase tracking-wide text-brand-700"> </p> <h3 class="mt-0.5 text-sm font-semibold text-slate-950"> </h3></div> <button type="button" class="rounded-md px-1.5 py-0.5 text-xs text-slate-400 hover:bg-slate-100 hover:text-slate-700" aria-label="Exit tutorial" title="Exit tutorial">x</button></header> <p class="whitespace-pre-line text-xs leading-5 text-slate-700"> </p> <!> <footer class="mt-3 flex items-center justify-between gap-2"><button type="button" class="rounded-md p-1 text-slate-500 hover:bg-slate-100 hover:text-slate-800 disabled:cursor-not-allowed disabled:opacity-30" aria-label="Previous step" title="Back">←</button> <button type="button" class="rounded-md border border-slate-300 bg-white px-2.5 py-1 text-[11px] font-medium text-slate-600 hover:bg-slate-50">Exit</button> <button type="button" class="rounded-md bg-brand-700 px-3 py-1 text-[11px] font-semibold text-white hover:bg-brand-800 disabled:cursor-not-allowed disabled:bg-slate-300"> </button></footer></aside>`);function ze(t,n){N(n,!0);let i=e(null);h(()=>{n.panelEl?.(l(i))});let s=P(()=>n.stepNumber===1),u=P(()=>n.stepNumber===n.totalSteps),f=P(()=>{switch(n.placement.kind){case`bottom-right`:return`bottom: 1.5rem; right: 1.5rem; left: auto; top: auto;`;case`bottom-left`:return`bottom: 1.5rem; left: 1.5rem; right: auto; top: auto;`;case`absolute`:return`top: ${n.placement.top}px; left: ${n.placement.left}px; bottom: auto; right: auto;`}});var m=Re(),_=c(m),v=c(_),b=c(v),x=c(b);w(b);var S=g(b,2),C=c(S,!0);w(S),w(v);var T=g(v,2);w(_);var D=g(_,2),O=c(D,!0);w(D);var A=g(D,2),j=e=>{var t=Pe(),r=g(c(t),2),i=c(r);w(r),w(t),o(()=>d(i,`${n.step.route.label??``} →`)),a(`click`,r,function(...e){n.onGoToRoute?.apply(this,e)}),E(e,t)},M=e=>{E(e,Fe())},I=e=>{E(e,Ie())},L=e=>{E(e,Le())};r(A,e=>{!n.onCorrectRoute&&n.step.route?e(j):n.step.advance.kind===`click`?e(M,1):n.step.advance.kind===`event`?e(I,2):n.step.advance.kind===`manual`&&!n.nextEnabled&&e(L,3)});var R=g(A,2),z=c(R),B=g(z,2),V=g(B,2),H=c(V);w(V),w(R),w(m),ee(m,e=>p(i,e),()=>l(i)),o(()=>{y(m,l(f)),d(x,`Tutorial · step ${n.stepNumber??``} of ${n.totalSteps??``}`),d(C,n.step.title),d(O,n.step.body),z.disabled=l(s),V.disabled=!n.nextEnabled,F(V,`title`,n.nextEnabled?l(u)?`Finish the tour`:`Next step`:`Finish the current action first`),d(H,`${l(u)?`Finish`:`Next`} →`)}),a(`click`,T,function(...e){n.onExit?.apply(this,e)}),a(`click`,z,function(...e){n.onPrev?.apply(this,e)}),a(`click`,B,function(...e){n.onExit?.apply(this,e)}),a(`click`,V,function(...e){n.onNext?.apply(this,e)}),E(t,m),k()}f([`click`]);var Be=T(`<div class="pointer-events-none fixed z-20 rounded-lg ring-4 ring-brand-400 ring-offset-2 ring-offset-transparent" aria-hidden="true"></div>`),Ve=T(`<div class="pointer-events-none fixed inset-0 z-20 bg-slate-950/55" aria-hidden="true"></div> <button type="button" class="pointer-events-auto fixed left-1/2 top-20 z-1015 inline-flex -translate-x-1/2 items-center gap-2 rounded-full border border-brand-300 bg-white px-4 py-2 text-xs font-semibold text-brand-800 shadow-lg shadow-slate-950/30 animate-pulse hover:bg-brand-50" aria-label="Scroll up to see highlighted element"><span aria-hidden="true">↑</span> <span>Highlight is above — click to scroll up</span></button>`,1),He=T(`<div class="pointer-events-none fixed inset-0 z-20 bg-slate-950/55" aria-hidden="true"></div> <button type="button" class="pointer-events-auto fixed left-1/2 bottom-24 z-1015 inline-flex -translate-x-1/2 items-center gap-2 rounded-full border border-brand-300 bg-white px-4 py-2 text-xs font-semibold text-brand-800 shadow-lg shadow-slate-950/30 animate-pulse hover:bg-brand-50" aria-label="Scroll down to see highlighted element"><span>Highlight is below — click to scroll down</span> <span aria-hidden="true">↓</span></button>`,1),Ue=T(`<div class="pointer-events-none fixed inset-0 z-20 bg-slate-950/55" aria-hidden="true"></div>`);function We(n,i){N(i,!0);let s=e(0);h(()=>{let e=()=>{p(s,window.innerHeight,!0)};return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)});let c=P(()=>i.rect?{top:i.rect.top-10,left:i.rect.left-10,width:i.rect.width+20,height:i.rect.height+20}:null),u=P(()=>!i.rect||l(s)===0?null:i.rect.bottom<64?`above`:i.rect.top>l(s)?`below`:`visible`);var d=t(),f=_(d),m=e=>{var t=Be();o(()=>y(t,`top: ${l(c).top??``}px; left: ${l(c).left??``}px; width: ${l(c).width??``}px; height: ${l(c).height??``}px; box-shadow: 0 0 0 9999px rgba(15, 23, 42, 0.55);`)),E(e,t)},v=e=>{var t=Ve();a(`click`,g(_(t),2),()=>window.scrollBy({top:-window.innerHeight*.7,behavior:`smooth`})),E(e,t)},b=e=>{var t=He();a(`click`,g(_(t),2),()=>window.scrollBy({top:window.innerHeight*.7,behavior:`smooth`})),E(e,t)},x=e=>{E(e,Ue())};r(f,e=>{l(c)&&l(u)===`visible`?e(m):l(c)&&l(u)===`above`?e(v,1):l(c)&&l(u)===`below`?e(b,2):e(x,-1)}),E(n,d),k()}f([`click`]);var Ge=T(`<!> <!>`,1);function Ke(n,i){N(i,!0);let a=P(()=>Y.currentStep),o=P(()=>l(a)?.route?B.url?.pathname===l(a).route.pathname:!0),s=e(null);h(()=>{let e=Ae(l(o)?l(a)?.target??null:null);return p(s,e,!0),()=>e.dispose()});let c=P(()=>l(s)?.rect??null),u=P(()=>{if(typeof window>`u`)return{kind:`bottom-right`};let e=l(a)?.panelPosition??`bottom-right`;if(e===`avoid-target`)return l(c)&&l(c).left+l(c).width/2>window.innerWidth/2?{kind:`bottom-left`}:{kind:`bottom-right`};if(e===`below-target`&&l(c)){let e=l(c).bottom+16;if(e+220>window.innerHeight-16)return{kind:`bottom-right`};let t=l(c).left+l(c).width/2-320/2;return{kind:`absolute`,top:e,left:Math.max(16,Math.min(t,window.innerWidth-320-16))}}return{kind:`bottom-right`}}),d=P(()=>!l(a)||l(a).advance.kind!==`manual`?!1:l(a).canAdvance?l(a).canAdvance():!0);h(()=>{let e=l(s)?.element;e&&e.scrollIntoView({behavior:`smooth`,block:`center`})}),h(()=>{let e=l(a);if(!e?.focusSelector||!l(o))return;let t=e.focusSelector,n=!1,r=0,i=()=>{if(n||r++>60)return;let e=document.querySelector(t);if(e){e.focus(),(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)&&e.select();return}requestAnimationFrame(i)};return requestAnimationFrame(i),()=>{n=!0}}),h(()=>{if(!l(a)?.lockScroll)return;let e=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=e}}),h(()=>{if(!l(a)?.target||Y.stepIndex===0)return;let e=!1,t=null,n=!1,r=setInterval(()=>{n||(l(s)?.element==null?e&&!t&&(t=setTimeout(()=>Y.previous(),500)):(e=!0,t&&=(clearTimeout(t),null)))},150);return()=>{n=!0,clearInterval(r),t&&clearTimeout(t)}}),h(()=>{let e=l(a);if(!e||e.advance.kind!==`click`)return;let t=e.advance.selector,n=e=>{let n=e.target;n instanceof Element&&n.closest(t)&&setTimeout(()=>Y.next(),0)};return document.addEventListener(`click`,n,!0),()=>document.removeEventListener(`click`,n,!0)}),h(()=>{let e=l(a);if(!e?.prefill||e.prefill.length===0||!l(o))return;let t=[...e.prefill],n=0,r=!1,i=()=>{r||(t=Me(t),t.length>0&&(n=requestAnimationFrame(i)))};return i(),()=>{r=!0,n&&cancelAnimationFrame(n)}});let f=e(null);h(()=>{l(f)&&(l(a)&&!l(f).matches(`:popover-open`)&&l(f).showPopover(),!l(a)&&l(f).matches(`:popover-open`)&&l(f).hidePopover())}),h(()=>{if(!l(f))return;let e=Ne(l(f));return()=>e.dispose()});function m(){l(a)?.route&&z(l(a).route.pathname)}var v=t(),y=_(v),b=e=>{var t=Ge(),n=_(t),i=e=>{We(e,{get rect(){return l(c)}})};r(n,e=>{l(o)&&e(i)});var s=g(n,2);{let e=P(()=>Y.stepIndex+1);ze(s,{get step(){return l(a)},get stepNumber(){return l(e)},get totalSteps(){return Y.totalSteps},get onCorrectRoute(){return l(o)},get placement(){return l(u)},get nextEnabled(){return l(d)},panelEl:e=>p(f,e,!0),onGoToRoute:m,onPrev:()=>Y.previous(),onNext:()=>Y.next(),onExit:()=>Y.cancel()})}E(e,t)};r(y,e=>{l(a)&&e(b)}),E(n,v),k()}var qe=T(`<a> </a>`),Je=T(`<span aria-hidden="true"> </span>`),Ye=u(`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" class="h-5 w-5" aria-hidden="true"><circle cx="12" cy="8" r="3.5"></circle><path d="M5 20c1.2-3.6 4-5.5 7-5.5s5.8 1.9 7 5.5"></path></svg>`),Xe=T(`<p class="px-3 pt-2 pb-1 text-[10px] font-semibold uppercase tracking-wide text-slate-400">Signed in as</p> <p class="truncate px-3 pb-2 text-sm font-medium text-slate-800"> </p> <div class="my-1 h-px bg-slate-100"></div>`,1),Ze=T(`<div role="menu" class="absolute right-0 top-12 z-40 w-60 overflow-hidden rounded-lg border border-slate-200 bg-white p-1 shadow-lg shadow-slate-950/10"><!> <button type="button" role="menuitem" class="flex w-full items-start gap-3 rounded-md px-3 py-2 text-left text-sm text-slate-700 hover:bg-slate-50"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" class="mt-0.5 h-4 w-4 shrink-0 text-slate-400" aria-hidden="true"><path d="M12 20h9"></path><path d="M16.5 3.5a2.121 2.121 0 1 1 3 3L7 19l-4 1 1-4 12.5-12.5z"></path></svg> <span class="min-w-0 flex-1"><span class="block font-medium"> </span> <span class="block text-[11px] text-slate-500">Shown on every history entry you create.</span></span></button> <button type="button" role="menuitem" class="flex w-full items-start gap-3 rounded-md px-3 py-2 text-left text-sm text-rose-700 hover:bg-rose-50 hover:text-rose-800"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" class="mt-0.5 h-4 w-4 shrink-0 text-rose-500" aria-hidden="true"><path d="M3 6h18"></path><path d="M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path><path d="M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"></path><line x1="10" y1="11" x2="10" y2="17"></line><line x1="14" y1="11" x2="14" y2="17"></line></svg> <span class="min-w-0 flex-1"><span class="block font-semibold">Reset local data</span> <span class="block text-[11px] text-rose-600/80">Wipes display name + browser settings. Projects on disk are kept.</span></span></button></div>`),Qe=T(`<div class="motion-reduce:animate-none! motion-reduce:opacity-100!"><!></div>`),$e=T(`<div class="flex min-h-full flex-col bg-[linear-gradient(180deg,#f0fdfa_0%,#f8fafc_220px,#f8fafc_100%)] text-ink"><header class="sticky top-0 z-30 border-b border-slate-200 bg-white/95 backdrop-blur"><div class="mx-auto flex h-16 max-w-6xl items-center justify-between px-4 sm:px-6"><a href="/" class="flex items-center gap-2"><img src="/unspaghettit_logo.png" alt="Unspaghettit" class="h-12 w-auto"/> <span class="relative hidden font-brand text-3xl font-semibold leading-none sm:inline-block">Unspaghettit <span class="font-grotesk absolute right-0 -bottom-2 text-[10px] font-medium tracking-wide text-slate-500">by Lyriks.io</span></span></a> <div class="flex items-center gap-3"><nav aria-label="Primary" class="flex items-center rounded-lg border border-slate-200 bg-white p-1 text-sm font-medium text-slate-600 shadow-sm shadow-slate-950/5"></nav> <div class="relative"><button type="button" aria-haspopup="menu"><!> <span aria-hidden="true"></span></button> <!></div></div></div></header> <main class="flex-1"><!></main></div> <!> <!> <!> <!>`,1);function et(t,u){N(u,!0),M(async()=>{X.init(),q.init(),!X.name&&!X.hasBeenAsked&&(X.markAsked(),queueMicrotask(()=>{f()}));try{await ne.reconcileOrphanFeatures()}catch(e){console.warn(`Orphan reconciliation failed:`,e)}});async function f(){let e=await te({title:`Your display name`,message:`Shown on every history entry you create. Stored locally in this browser — never sent off-machine. Leave empty to stay anonymous.`,inputLabel:`Display name`,defaultValue:X.name,placeholder:`e.g. John`,confirmLabel:`Save`,tone:`info`});e!==null&&X.setName(e)}let h=P(()=>X.name.trim().charAt(0).toUpperCase()),v=e(!1),y=e(null);function b(e){if(!l(v))return;let t=l(y);t&&(t.contains(e.target)||p(v,!1))}async function x(){p(v,!1),await f()}async function C(){p(v,!1),await T()}async function T(){if(await K({title:`Reset local browser data?`,message:`Clears your display name, the dashboard's local preferences, and any cached per-tab state in this browser. Your projects, features, history, and queue stay on disk untouched. The page will reload to apply a fresh state.`,confirmLabel:`Reset everything`,cancelLabel:`Cancel`,tone:`danger`})){try{localStorage.clear()}catch{}try{sessionStorage.clear()}catch{}location.reload()}}let D=[{href:`/projects`,label:`Projects`,match:e=>e===`/`||e.startsWith(`/projects`)},{href:`/mcp`,label:`MCP`,match:e=>e.startsWith(`/mcp`)},{href:`/tutorial`,label:`Tutorial`,match:e=>e.startsWith(`/tutorial`)}],O=P(()=>B.url.pathname);var A=$e();s(`mousedown`,j,b),s(`keydown`,j,e=>{e.key===`Escape`&&l(v)&&p(v,!1)});var z=_(A),V=c(z),U=c(V),G=g(c(U),2),J=c(G);L(J,21,()=>D,m,(e,t)=>{let n=P(()=>l(t).match(B.url.pathname));var r=qe(),i=c(r,!0);w(r),o(e=>{F(r,`href`,l(t).href),F(r,`data-tour`,e),I(r,1,`rounded-md px-3 py-1.5 transition ${l(n)?`bg-slate-900 text-white`:`hover:bg-slate-100 hover:text-slate-950`}`),d(i,l(t).label)},[()=>`nav-${l(t).href.replace(/^\//,``)}`]),E(e,r)}),w(J);var Y=g(J,2),Z=c(Y),Q=c(Z),re=e=>{var t=Je(),n=c(t,!0);w(t),o(()=>d(n,l(h))),E(e,t)},ie=e=>{E(e,Ye())};r(Q,e=>{X.name?e(re):e(ie,-1)});var ae=g(Q,2);w(Z);var oe=g(Z,2),se=e=>{var t=Ze(),n=c(t),i=e=>{var t=Xe(),n=g(_(t),2),r=c(n,!0);w(n),S(2),o(()=>d(r,X.name)),E(e,t)};r(n,e=>{X.name&&e(i)});var s=g(n,2),l=g(c(s),2),u=c(l),f=c(u,!0);w(u),S(2),w(l),w(s);var p=g(s,2);w(t),o(()=>d(f,X.name?`Change display name`:`Set display name`)),a(`click`,s,x),a(`click`,p,C),E(e,t)};r(oe,e=>{l(v)&&e(se)}),w(Y),ee(Y,e=>p(y,e),()=>l(y)),w(G),w(U),w(V);var ce=g(V,2);i(c(ce),()=>l(O),e=>{var t=Qe();n(c(t),()=>u.children),w(t),R(1,t,()=>H,()=>({duration:160,easing:W})),E(e,t)}),w(ce),w(z);var le=g(z,2);he(le,{});var ue=g(le,2);_e(ue,{});var de=g(ue,2);ke(de,{}),Ke(g(de,2),{}),o(()=>{F(Z,`aria-expanded`,l(v)),F(Z,`aria-label`,X.name?`Signed in as ${X.name}. Open identity menu.`:`Set your display name`),F(Z,`title`,X.name?`Signed in as ${X.name}`:`Set a display name so your edits are recognisable in history`),I(Z,1,`group relative flex h-10 w-10 shrink-0 items-center justify-center rounded-full text-sm font-semibold shadow-sm shadow-slate-950/5 ring-1 ring-transparent transition focus:outline-none focus-visible:ring-2 focus-visible:ring-brand-300
|
|
2
2
|
${X.name?`bg-linear-to-br from-brand-600 to-brand-800 text-white hover:from-brand-500 hover:to-brand-700`:`border border-dashed border-slate-300 bg-white text-slate-400 hover:border-brand-400 hover:text-brand-700`}`),I(ae,1,`absolute -right-0.5 -bottom-0.5 inline-flex h-3 w-3 items-center justify-center rounded-full ring-2 ring-white
|
|
3
3
|
${X.name?`bg-emerald-500`:`bg-amber-400`}`)}),a(`click`,Z,()=>p(v,!l(v))),E(t,A),k()}f([`click`]);export{et as component,Z as universal};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{H as e,J as t,O as n,X as r,Y as i,ft as a,j as o,k as s,ot as c,st as l}from"../chunks/DF6QYH3p.js";import"../chunks/xihTtKlq.js";import{t as u}from"../chunks/
|
|
1
|
+
import{H as e,J as t,O as n,X as r,Y as i,ft as a,j as o,k as s,ot as c,st as l}from"../chunks/DF6QYH3p.js";import"../chunks/xihTtKlq.js";import{t as u}from"../chunks/B-lvxr_Y.js";var d=o(`<h1> </h1> <p> </p>`,1);function f(o,f){l(f,!0);var p=d(),m=i(p),h=t(m,!0);a(m);var g=r(m,2),_=t(g,!0);a(g),e(()=>{n(h,u.status),n(_,u.error?.message)}),s(o,p),c()}export{f as component};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{K as e,V as t,b as n}from"../chunks/DF6QYH3p.js";import"../chunks/xihTtKlq.js";import"../chunks/Dvd8XBNO.js";import{t as r}from"../chunks/
|
|
1
|
+
import{K as e,V as t,b as n}from"../chunks/DF6QYH3p.js";import"../chunks/xihTtKlq.js";import"../chunks/Dvd8XBNO.js";import{t as r}from"../chunks/DHnrY7Sb.js";function i(i){n(`1uha8ag`,n=>{t(()=>{e.title=`Projects / Unspaghettit`})}),r(i,{})}export{i as component};
|
|
Binary file
|
|
Binary file
|