diff --git a/packages/opal-web/.svelte-kit/generated/server/internal.js b/packages/opal-web/.svelte-kit/generated/server/internal.js index f9d77b2..abb82a8 100644 --- a/packages/opal-web/.svelte-kit/generated/server/internal.js +++ b/packages/opal-web/.svelte-kit/generated/server/internal.js @@ -25,7 +25,7 @@ export const options = { app: ({ head, body, assets, nonce, env }) => "\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\n\t\t\n\t\tOpal\n\t\t\n\t\t\n\t\t\n\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\n\t\t\n\t\t\n\t\t\n\t\t\n\n\t\t" + head + "\n\t\n\t\n\t\t
" + body + "
\n\t\n\n", error: ({ status, message }) => "\n\n\t\n\t\t\n\t\t" + message + "\n\n\t\t\n\t\n\t\n\t\t
\n\t\t\t" + status + "\n\t\t\t
\n\t\t\t\t

" + message + "

\n\t\t\t
\n\t\t
\n\t\n\n" }, - version_hash: "6h672v" + version_hash: "1v99u1l" }; export async function get_hooks() { diff --git a/packages/opal-web/.svelte-kit/output/client/.vite/manifest.json b/packages/opal-web/.svelte-kit/output/client/.vite/manifest.json index 0bd9b24..b5876ff 100644 --- a/packages/opal-web/.svelte-kit/output/client/.vite/manifest.json +++ b/packages/opal-web/.svelte-kit/output/client/.vite/manifest.json @@ -1,15 +1,15 @@ { "../../node_modules/.pnpm/@sveltejs+kit@2.57.1_@sveltejs+vite-plugin-svelte@6.2.4_svelte@5.55.4_vite@7.3.2_@types_9d65024e7a78cf414f4c7352cd0c96d8/node_modules/@sveltejs/kit/src/runtime/client/entry.js": { - "file": "_app/immutable/entry/start.Pw0JximK.js", + "file": "_app/immutable/entry/start.DGxgsefr.js", "name": "entry/start", "src": "../../node_modules/.pnpm/@sveltejs+kit@2.57.1_@sveltejs+vite-plugin-svelte@6.2.4_svelte@5.55.4_vite@7.3.2_@types_9d65024e7a78cf414f4c7352cd0c96d8/node_modules/@sveltejs/kit/src/runtime/client/entry.js", "isEntry": true, "imports": [ - "_Cf0F0xk3.js" + "_B4kNhNlA.js" ] }, ".svelte-kit/generated/client-optimized/app.js": { - "file": "_app/immutable/entry/app.CwJugxOn.js", + "file": "_app/immutable/entry/app.CiOJ5aSh.js", "name": "entry/app", "src": ".svelte-kit/generated/client-optimized/app.js", "isEntry": true, @@ -46,7 +46,7 @@ ] }, ".svelte-kit/generated/client-optimized/nodes/1.js": { - "file": "_app/immutable/nodes/1.9OPHrp2H.js", + "file": "_app/immutable/nodes/1.8t4lX9Eb.js", "name": "nodes/1", "src": ".svelte-kit/generated/client-optimized/nodes/1.js", "isEntry": true, @@ -54,7 +54,7 @@ "imports": [ "_DdeFJgsq.js", "_9VeCAWtE.js", - "_Cf0F0xk3.js" + "_B4kNhNlA.js" ] }, ".svelte-kit/generated/client-optimized/nodes/2.js": { @@ -98,6 +98,14 @@ "file": "_app/immutable/chunks/9VeCAWtE.js", "name": "runtime" }, + "_B4kNhNlA.js": { + "file": "_app/immutable/chunks/B4kNhNlA.js", + "name": "entry", + "imports": [ + "_9VeCAWtE.js", + "_DhRmkkCw.js" + ] + }, "_BKqvpmVb.js": { "file": "_app/immutable/chunks/BKqvpmVb.js", "name": "svelte-component", @@ -120,14 +128,6 @@ "_9VeCAWtE.js" ] }, - "_Cf0F0xk3.js": { - "file": "_app/immutable/chunks/Cf0F0xk3.js", - "name": "entry", - "imports": [ - "_9VeCAWtE.js", - "_DhRmkkCw.js" - ] - }, "_DSyLvQQK.js": { "file": "_app/immutable/chunks/DSyLvQQK.js", "name": "LandingPage.svelte_svelte_type_style_lang", diff --git a/packages/opal-web/.svelte-kit/output/client/_app/immutable/chunks/B4kNhNlA.js b/packages/opal-web/.svelte-kit/output/client/_app/immutable/chunks/B4kNhNlA.js new file mode 100644 index 0000000..68db78b --- /dev/null +++ b/packages/opal-web/.svelte-kit/output/client/_app/immutable/chunks/B4kNhNlA.js @@ -0,0 +1 @@ +import{b5 as me,bf as mt,am as U,g as A,U as T,al as re,bg as vt}from"./9VeCAWtE.js";import{o as Be}from"./DhRmkkCw.js";const V=[];function xe(e,t=me){let n=null;const r=new Set;function a(o){if(mt(e,o)&&(e=o,n)){const l=!V.length;for(const c of r)c[1](),V.push(c,e);if(l){for(let c=0;c{r.delete(c),r.size===0&&n&&(n(),n=null)}}return{set:a,update:i,subscribe:s}}class Le{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class Ue{constructor(t,n){try{new Headers({location:n})}catch{throw new Error(`Invalid redirect location ${JSON.stringify(n)}: this string contains characters that cannot be used in HTTP headers`)}this.status=t,this.location=n}}class Ae extends Error{constructor(t,n,r){super(r),this.status=t,this.text=n}}new URL("sveltekit-internal://");function wt(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function yt(e){return e.split("%25").map(decodeURI).join("%25")}function bt(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function ve({href:e}){return e.split("#")[0]}function $(){}function kt(...e){let t=5381;for(const n of e)if(typeof n=="string"){let r=n.length;for(;r;)t=t*33^n.charCodeAt(--r)}else if(ArrayBuffer.isView(n)){const r=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let a=r.length;for(;a;)t=t*33^r[--a]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;new TextDecoder;function Et(e){const t=atob(e),n=new Uint8Array(t.length);for(let r=0;r((e instanceof Request?e.method:t?.method||"GET")!=="GET"&&W.delete(Te(e)),St(e,t));const W=new Map;function Rt(e,t){const n=Te(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:a,...i}=JSON.parse(r.textContent);const s=r.getAttribute("data-ttl");return s&&W.set(n,{body:a,init:i,ttl:1e3*Number(s)}),r.getAttribute("data-b64")!==null&&(a=Et(a)),Promise.resolve(new Response(a,i))}return window.fetch(e,t)}function xt(e,t,n){if(W.size>0){const r=Te(e,n),a=W.get(r);if(a){if(performance.now(){const a=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(r);if(a)return t.push({name:a[1],matcher:a[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const i=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(r);if(i)return t.push({name:i[1],matcher:i[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!r)return;const s=r.split(/\[(.+?)\](?!\])/);return"/"+s.map((l,c)=>{if(c%2){if(l.startsWith("x+"))return we(String.fromCharCode(parseInt(l.slice(2),16)));if(l.startsWith("u+"))return we(String.fromCharCode(...l.slice(2).split("-").map(_=>parseInt(_,16))));const f=Lt.exec(l),[,p,v,h,u]=f;return t.push({name:h,matcher:u,optional:!!p,rest:!!v,chained:v?c===1&&s[0]==="":!1}),v?"([^]*?)":p?"([^/]*)?":"([^/]+?)"}return we(l)}).join("")}).join("")}/?$`),params:t}}function At(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function Tt(e){return e.slice(1).split("/").filter(At)}function It(e,t,n){const r={},a=e.slice(1),i=a.filter(o=>o!==void 0);let s=0;for(let o=0;of).join("/"),s=0),c===void 0)if(l.rest)c="";else continue;if(!l.matcher||n[l.matcher](c)){r[l.name]=c;const f=t[o+1],p=a[o+1];f&&!f.rest&&f.optional&&p&&l.chained&&(s=0),!f&&!p&&Object.keys(r).length===i.length&&(s=0);continue}if(l.optional&&l.chained){s++;continue}return}if(!s)return r}function we(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function Ot({nodes:e,server_loads:t,dictionary:n,matchers:r}){const a=new Set(t);return Object.entries(n).map(([o,[l,c,f]])=>{const{pattern:p,params:v}=Ut(o),h={id:o,exec:u=>{const _=p.exec(u);if(_)return It(_,v,r)},errors:[1,...f||[]].map(u=>e[u]),layouts:[0,...c||[]].map(s),leaf:i(l)};return h.errors.length=h.layouts.length=Math.max(h.errors.length,h.layouts.length),h});function i(o){const l=o<0;return l&&(o=~o),[l,e[o]]}function s(o){return o===void 0?o:[a.has(o),e[o]]}}function Je(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function Ke(e,t,n=JSON.stringify){const r=n(t);try{sessionStorage[e]=r}catch{}}const L=globalThis.__sveltekit_1v99u1l?.base??"",Pt=globalThis.__sveltekit_1v99u1l?.assets??L??"",$t="1778338476989",Ye="sveltekit:snapshot",Xe="sveltekit:scroll",Qe="sveltekit:states",Ct="sveltekit:pageurl",K="sveltekit:history",Y="sveltekit:navigation",N={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},Ie=location.origin;function Ze(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function D(){return{x:pageXOffset,y:pageYOffset}}function B(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const Me={...N,"":N.hover};function et(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function tt(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=et(e)}}function ke(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){const o=location.hash.split("#")[1]||"/";r.hash=`#${o}${r.hash}`}}catch{}const a=e instanceof SVGAElement?e.target.baseVal:e.target,i=!r||!!a||he(r,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),s=r?.origin===Ie&&e.hasAttribute("download");return{url:r,external:i,target:a,download:s}}function ae(e){let t=null,n=null,r=null,a=null,i=null,s=null,o=e;for(;o&&o!==document.documentElement;)r===null&&(r=B(o,"preload-code")),a===null&&(a=B(o,"preload-data")),t===null&&(t=B(o,"keepfocus")),n===null&&(n=B(o,"noscroll")),i===null&&(i=B(o,"reload")),s===null&&(s=B(o,"replacestate")),o=et(o);function l(c){switch(c){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:Me[r??"off"],preload_data:Me[a??"off"],keepfocus:l(t),noscroll:l(n),reload:l(i),replace_state:l(s)}}function ze(e){const t=xe(e);let n=!0;function r(){n=!0,t.update(s=>s)}function a(s){n=!1,t.set(s)}function i(s){let o;return t.subscribe(l=>{(o===void 0||n&&l!==o)&&s(o=l)})}return{notify:r,set:a,subscribe:i}}const nt={v:$};function jt(){const{set:e,subscribe:t}=xe(!1);let n;async function r(){clearTimeout(n);try{const a=await fetch(`${Pt}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!a.ok)return!1;const s=(await a.json()).version!==$t;return s&&(e(!0),nt.v(),clearTimeout(n)),s}catch{return!1}}return{subscribe:t,check:r}}function he(e,t,n){return e.origin!==Ie||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function fn(e){}const rt=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...rt];const Nt=new Set([...rt]);[...Nt];function qt(e){return e.filter(t=>t!=null)}function Oe(e){return e instanceof Le||e instanceof Ae?e.status:500}function Dt(e){return e instanceof Ae?e.text:"Internal Error"}let E,X,ye;const Vt=Be.toString().includes("$$")||/function \w+\(\) \{\}/.test(Be.toString()),Fe="a:";Vt?(E={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(Fe)},X={current:null},ye={current:!1}):(E=new class{#e=U({});get data(){return A(this.#e)}set data(t){T(this.#e,t)}#t=U(null);get form(){return A(this.#t)}set form(t){T(this.#t,t)}#n=U(null);get error(){return A(this.#n)}set error(t){T(this.#n,t)}#r=U({});get params(){return A(this.#r)}set params(t){T(this.#r,t)}#a=U({id:null});get route(){return A(this.#a)}set route(t){T(this.#a,t)}#o=U({});get state(){return A(this.#o)}set state(t){T(this.#o,t)}#s=U(-1);get status(){return A(this.#s)}set status(t){T(this.#s,t)}#i=U(new URL(Fe));get url(){return A(this.#i)}set url(t){T(this.#i,t)}},X=new class{#e=U(null);get current(){return A(this.#e)}set current(t){T(this.#e,t)}},ye=new class{#e=U(!1);get current(){return A(this.#e)}set current(t){T(this.#e,t)}},nt.v=()=>ye.current=!0);function Bt(e){Object.assign(E,e)}const Kt=new Set(["icon","shortcut icon","apple-touch-icon"]);let G=null;const j=Je(Xe)??{},Q=Je(Ye)??{},C={url:ze({}),page:ze({}),navigating:xe(null),updated:jt()};function Pe(e){j[e]=D()}function Mt(e,t){let n=e+1;for(;j[n];)delete j[n],n+=1;for(n=t+1;Q[n];)delete Q[n],n+=1}function Z(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise($)}async function at(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(L||"/");e&&await e.update()}}let $e,Ee,oe,I,Se,y;const se=[],ie=[];let R=null;function le(){R?.fork?.then(e=>e?.discard()),R=null}const ne=new Map,ot=new Set,zt=new Set,J=new Set;let m={branch:[],error:null,url:null},st=!1,ce=!1,Ge=!0,ee=!1,H=!1,it=!1,Ce=!1,lt,w,x,q;const ue=new Set,He=new Map;async function gn(e,t,n){globalThis.__sveltekit_1v99u1l&&(globalThis.__sveltekit_1v99u1l.query,globalThis.__sveltekit_1v99u1l.prerender),document.URL!==location.href&&(location.href=location.href),y=e,await e.hooks.init?.(),$e=Ot(e),I=document.documentElement,Se=t,Ee=e.nodes[0],oe=e.nodes[1],Ee(),oe(),w=history.state?.[K],x=history.state?.[Y],w||(w=x=Date.now(),history.replaceState({...history.state,[K]:w,[Y]:x},""));const r=j[w];function a(){r&&(history.scrollRestoration="manual",scrollTo(r.x,r.y))}n?(a(),await an(Se,n)):(await M({type:"enter",url:Ze(y.hash?ln(new URL(location.href)):location.href),replace_state:!0}),a()),rn()}function Ft(){se.length=0,Ce=!1}function ct(e){ie.some(t=>t?.snapshot)&&(Q[e]=ie.map(t=>t?.snapshot?.capture()))}function ut(e){Q[e]?.forEach((t,n)=>{ie[n]?.snapshot?.restore(t)})}function We(){Pe(w),Ke(Xe,j),ct(x),Ke(Ye,Q)}async function Gt(e,t,n,r){let a;t.invalidateAll&&le(),await M({type:"goto",url:Ze(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:r,accept:()=>{t.invalidateAll&&(Ce=!0,a=[],He.forEach((i,s)=>{for(const o of i.keys())a.push(s+"/"+o)})),t.invalidate&&t.invalidate.forEach(nn)}}),t.invalidateAll&&re().then(re).then(()=>{He.forEach((i,s)=>{i.forEach(({resource:o},l)=>{a?.includes(s+"/"+l)&&o.refresh?.()})})})}async function Ht(e){if(e.id!==R?.id){le();const t={};ue.add(t),R={id:e.id,token:t,promise:dt({...e,preload:t}).then(n=>(ue.delete(t),n.type==="loaded"&&n.state.error&&le(),n)),fork:null}}return R.promise}async function be(e){const t=(await pe(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(n=>n[1]()))}async function ft(e,t,n){const r={params:m.params,route:{id:m.route?.id??null},url:new URL(location.href)};m={...e.state,nav:r};const a=document.querySelector("style[data-sveltekit]");if(a&&a.remove(),Object.assign(E,e.props.page),lt=new y.root({target:t,props:{...e.props,stores:C,components:ie},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),ut(x),n){const i={from:null,to:{...r,scroll:j[w]??D()},willUnload:!1,type:"enter",complete:Promise.resolve()};J.forEach(s=>s(i))}ce=!0}async function fe({url:e,params:t,branch:n,errors:r,status:a,error:i,route:s,form:o}){let l="never";if(L&&(e.pathname===L||e.pathname===L+"/"))l="always";else for(const u of n)u?.slash!==void 0&&(l=u.slash);e.pathname=wt(e.pathname,l),e.search=e.search;const c={type:"loaded",state:{url:e,params:t,branch:n,error:i,route:s},props:{constructors:qt(n).map(u=>u.node.component),page:Ve(E)}};o!==void 0&&(c.props.form=o);let f={},p=!E,v=0;for(let u=0;uo(new URL(s))))return!0;return!1}function Ne(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());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const r of n){const a=e.searchParams.getAll(r),i=t.searchParams.getAll(r);a.every(s=>i.includes(s))&&i.every(s=>a.includes(s))&&n.delete(r)}return n}function Xt({error:e,url:t,route:n,params:r}){return{type:"loaded",state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:Ve(E),constructors:[]}}}async function dt({id:e,invalidating:t,url:n,params:r,route:a,preload:i}){if(R?.id===e)return ue.delete(R.token),R.promise;const{errors:s,layouts:o,leaf:l}=a,c=[...o,l];s.forEach(g=>g?.().catch($)),c.forEach(g=>g?.[1]().catch($));const f=m.url?e!==de(m.url):!1,p=m.route?a.id!==m.route.id:!1,v=Yt(m.url,n);let h=!1;const u=c.map(async(g,d)=>{if(!g)return;const b=m.branch[d];return g[1]===b?.loader&&!Jt(h,p,f,v,b.universal?.uses,r)?b:(h=!0,je({loader:g[1],url:n,params:r,route:a,parent:async()=>{const O={};for(let P=0;PPromise.resolve({}),server_data_node:Ne(i)}),o={node:await oe(),loader:oe,universal:null,server:null,data:null};return fe({url:n,params:a,branch:[s,o],status:e,error:t,errors:[],route:null})}catch(s){if(s instanceof Ue)return Gt(new URL(s.location,location.href),{},0);throw s}}async function Zt(e){const t=e.href;if(ne.has(t))return ne.get(t);let n;try{const r=(async()=>{let a=await y.hooks.reroute({url:new URL(e),fetch:async(i,s)=>Wt(i,s,e).promise})??e;if(typeof a=="string"){const i=new URL(e);y.hash?i.hash=a:i.pathname=a,a=i}return a})();ne.set(t,r),n=await r}catch{ne.delete(t);return}return n}async function pe(e,t){if(e&&!he(e,L,y.hash)){const n=await Zt(e);if(!n)return;const r=en(n);for(const a of $e){const i=a.exec(r);if(i)return{id:de(e),invalidating:t,route:a,params:bt(i),url:e}}}}function en(e){return yt(y.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(L.length))||"/"}function de(e){return(y.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function ht({url:e,type:t,intent:n,delta:r,event:a,scroll:i}){let s=!1;const o=De(m,n,e,t,i??null);r!==void 0&&(o.navigation.delta=r),a!==void 0&&(o.navigation.event=a);const l={...o.navigation,cancel:()=>{s=!0,o.reject(new Error("navigation cancelled"))}};return ee||ot.forEach(c=>c(l)),s?null:o}async function M({type:e,url:t,popped:n,keepfocus:r,noscroll:a,replace_state:i,state:s={},redirect_count:o=0,nav_token:l={},accept:c=$,block:f=$,event:p}){const v=q;q=l;const h=await pe(t,!1),u=e==="enter"?De(m,h,t,e):ht({url:t,type:e,delta:n?.delta,intent:h,scroll:n?.scroll,event:p});if(!u){f(),q===l&&(q=v);return}const _=w,g=x;c(),ee=!0,ce&&u.navigation.type!=="enter"&&C.navigating.set(X.current=u.navigation);let d=h&&await dt(h);if(!d){if(he(t,L,y.hash))return await Z(t,i);d=await pt(t,{id:null},await te(new Ae(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,i)}if(t=h?.url||t,q!==l)return u.reject(new Error("navigation aborted")),!1;if(d.type==="redirect"){if(o<20){await M({type:e,url:new URL(d.location,t),popped:n,keepfocus:r,noscroll:a,replace_state:i,state:s,redirect_count:o+1,nav_token:l}),u.fulfil(void 0);return}d=await qe({status:500,error:await te(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else d.props.page.status>=400&&await C.updated.check()&&(await at(),await Z(t,i));if(Ft(),Pe(_),ct(g),d.props.page.url.pathname!==t.pathname&&(t.pathname=d.props.page.url.pathname),s=n?n.state:s,!n){const k=i?0:1,z={[K]:w+=k,[Y]:x+=k,[Qe]:s};(i?history.replaceState:history.pushState).call(history,z,"",t),i||Mt(w,x)}const b=h&&R?.id===h.id?R.fork:null;R?.fork&&!b&&le(),R=null,d.props.page.state=s;let S;if(ce){const k=(await Promise.all(Array.from(zt,F=>F(u.navigation)))).filter(F=>typeof F=="function");if(k.length>0){let F=function(){k.forEach(_e=>{J.delete(_e)})};k.push(F),k.forEach(_e=>{J.add(_e)})}const z=u.navigation.to;m={...d.state,nav:{params:z.params,route:z.route,url:z.url}},d.props.page&&(d.props.page.url=t);const ge=b&&await b;ge?S=ge.commit():(G=null,lt.$set(d.props),G&&Object.assign(d.props.page,G),Bt(d.props.page),S=vt?.()),it=!0}else await ft(d,Se,!1);const{activeElement:O}=document;await S,await re(),await re();let P=null;if(Ge){const k=n?n.scroll:a?D():null;k?scrollTo(k.x,k.y):(P=t.hash&&document.getElementById(gt(t)))?P.scrollIntoView():scrollTo(0,0)}const _t=document.activeElement!==O&&document.activeElement!==document.body;!r&&!_t&&sn(t,!P),Ge=!0,d.props.page&&(G&&Object.assign(d.props.page,G),Object.assign(E,d.props.page)),ee=!1,e==="popstate"&&ut(x),u.fulfil(void 0),u.navigation.to&&(u.navigation.to.scroll=D()),J.forEach(k=>k(u.navigation)),C.navigating.set(X.current=null)}async function pt(e,t,n,r,a){return e.origin===Ie&&e.pathname===location.pathname&&!st?await qe({status:r,error:n,url:e,route:t}):await Z(e,a)}function tn(){let e,t={element:void 0,href:void 0},n;I.addEventListener("mousemove",o=>{const l=o.target;clearTimeout(e),e=setTimeout(()=>{i(l,N.hover)},20)});function r(o){o.defaultPrevented||i(o.composedPath()[0],N.tap)}I.addEventListener("mousedown",r),I.addEventListener("touchstart",r,{passive:!0});const a=new IntersectionObserver(o=>{for(const l of o)l.isIntersecting&&(be(new URL(l.target.href)),a.unobserve(l.target))},{threshold:0});async function i(o,l){const c=tt(o,I),f=c===t.element&&c?.href===t.href&&l>=n;if(!c||f)return;const{url:p,external:v,download:h}=ke(c,L,y.hash);if(v||h)return;const u=ae(c),_=p&&de(m.url)===de(p);if(!(u.reload||_))if(l<=u.preload_data){t={element:c,href:c.href},n=N.tap;const g=await pe(p,!1);if(!g)return;Ht(g)}else l<=u.preload_code&&(t={element:c,href:c.href},n=l,be(p))}function s(){a.disconnect();for(const o of I.querySelectorAll("a")){const{url:l,external:c,download:f}=ke(o,L,y.hash);if(c||f)continue;const p=ae(o);p.reload||(p.preload_code===N.viewport&&a.observe(o),p.preload_code===N.eager&&be(l))}}J.add(s),s()}function te(e,t){if(e instanceof Le)return e.body;const n=Oe(e),r=Dt(e);return y.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function nn(e){if(typeof e=="function")se.push(e);else{const{href:t}=new URL(e,location.href);se.push(n=>n.href===t)}}function rn(){history.scrollRestoration="manual",addEventListener("beforeunload",t=>{let n=!1;if(We(),!ee){const r=De(m,void 0,null,"leave"),a={...r.navigation,cancel:()=>{n=!0,r.reject(new Error("navigation cancelled"))}};ot.forEach(i=>i(a))}n?(t.preventDefault(),t.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&We()}),navigator.connection?.saveData||tn(),I.addEventListener("click",async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;const n=tt(t.composedPath()[0],I);if(!n)return;const{url:r,external:a,target:i,download:s}=ke(n,L,y.hash);if(!r)return;if(i==="_parent"||i==="_top"){if(window.parent!==window)return}else if(i&&i!=="_self")return;const o=ae(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol==="https:"||r.protocol==="http:")||s)return;const[c,f]=(y.hash?r.hash.replace(/^#/,""):r.href).split("#"),p=c===ve(location);if(a||o.reload&&(!p||!f)){ht({url:r,type:"link",event:t})?ee=!0:t.preventDefault();return}if(f!==void 0&&p){const[,v]=m.url.href.split("#");if(v===f){if(t.preventDefault(),f===""||f==="top"&&n.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const h=n.ownerDocument.getElementById(decodeURIComponent(f));h&&(h.scrollIntoView(),h.focus())}return}if(H=!0,Pe(w),e(r),!o.replace_state)return;H=!1}t.preventDefault(),await new Promise(v=>{requestAnimationFrame(()=>{setTimeout(v,0)}),setTimeout(v,100)}),await M({type:"link",url:r,keepfocus:o.keepfocus,noscroll:o.noscroll,replace_state:o.replace_state??r.href===location.href,event:t})}),I.addEventListener("submit",t=>{if(t.defaultPrevented)return;const n=HTMLFormElement.prototype.cloneNode.call(t.target),r=t.submitter;if((r?.formTarget||n.target)==="_blank"||(r?.formMethod||n.method)!=="get")return;const s=new URL(r?.hasAttribute("formaction")&&r?.formAction||n.action);if(he(s,L,!1))return;const o=t.target,l=ae(o);if(l.reload)return;t.preventDefault(),t.stopPropagation();const c=new FormData(o,r);s.search=new URLSearchParams(c).toString(),M({type:"form",url:s,keepfocus:l.keepfocus,noscroll:l.noscroll,replace_state:l.replace_state??s.href===location.href,event:t})}),addEventListener("popstate",async t=>{if(!Re){if(t.state?.[K]){const n=t.state[K];if(q={},n===w)return;const r=j[n],a=t.state[Qe]??{},i=new URL(t.state[Ct]??location.href),s=t.state[Y],o=m.url?ve(location)===ve(m.url):!1;if(s===x&&(it||o)){a!==E.state&&(E.state=a),e(i),j[w]=D(),r&&scrollTo(r.x,r.y),w=n;return}const c=n-w;await M({type:"popstate",url:i,popped:{state:a,scroll:r,delta:c},accept:()=>{w=n,x=s},block:()=>{history.go(-c)},nav_token:q,event:t})}else if(!H){const n=new URL(location.href);e(n),y.hash&&location.reload()}}}),addEventListener("hashchange",()=>{H&&(H=!1,history.replaceState({...history.state,[K]:++w,[Y]:x},"",location.href))});for(const t of document.querySelectorAll("link"))Kt.has(t.rel)&&(t.href=t.href);addEventListener("pageshow",t=>{t.persisted&&C.navigating.set(X.current=null)});function e(t){m.url=E.url=t,C.page.set(Ve(E)),C.page.notify()}}async function an(e,{status:t=200,error:n,node_ids:r,params:a,route:i,server_route:s,data:o,form:l}){st=!0;const c=new URL(location.href);let f;({params:a={},route:i={id:null}}=await pe(c,!1)||{}),f=$e.find(({id:h})=>h===i.id);let p,v=!0;try{const h=r.map(async(_,g)=>{const d=o[g];return d?.uses&&(d.uses=on(d.uses)),je({loader:y.nodes[_],url:c,params:a,route:i,parent:async()=>{const b={};for(let S=0;S{const o=history.state;Re=!0,location.replace(new URL(`#${r}`,location.href)),history.replaceState(o,"",e),t&&scrollTo(i,s),Re=!1})}else{const i=document.body,s=i.getAttribute("tabindex");i.tabIndex=-1,i.focus({preventScroll:!0,focusVisible:!1}),s!==null?i.setAttribute("tabindex",s):i.removeAttribute("tabindex")}const a=getSelection();if(a&&a.type!=="None"){const i=[];for(let s=0;s{if(a.rangeCount===i.length){for(let s=0;s{i=c,s=f});return o.catch($),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:D()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:a},willUnload:!t,type:r,complete:o},fulfil:i,reject:s}}function Ve(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 ln(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function gt(e){let t;if(y.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{gn as a,fn as l,E as p,C as s}; diff --git a/packages/opal-web/.svelte-kit/output/client/_app/immutable/chunks/Cf0F0xk3.js b/packages/opal-web/.svelte-kit/output/client/_app/immutable/chunks/Cf0F0xk3.js deleted file mode 100644 index 062d334..0000000 --- a/packages/opal-web/.svelte-kit/output/client/_app/immutable/chunks/Cf0F0xk3.js +++ /dev/null @@ -1 +0,0 @@ -import{b5 as me,bf as mt,am as U,g as A,U as T,al as re,bg as vt}from"./9VeCAWtE.js";import{o as Be}from"./DhRmkkCw.js";const V=[];function xe(e,t=me){let n=null;const r=new Set;function a(o){if(mt(e,o)&&(e=o,n)){const l=!V.length;for(const c of r)c[1](),V.push(c,e);if(l){for(let c=0;c{r.delete(c),r.size===0&&n&&(n(),n=null)}}return{set:a,update:i,subscribe:s}}class Le{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class Ue{constructor(t,n){try{new Headers({location:n})}catch{throw new Error(`Invalid redirect location ${JSON.stringify(n)}: this string contains characters that cannot be used in HTTP headers`)}this.status=t,this.location=n}}class Ae extends Error{constructor(t,n,r){super(r),this.status=t,this.text=n}}new URL("sveltekit-internal://");function wt(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function yt(e){return e.split("%25").map(decodeURI).join("%25")}function bt(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function ve({href:e}){return e.split("#")[0]}function $(){}function kt(...e){let t=5381;for(const n of e)if(typeof n=="string"){let r=n.length;for(;r;)t=t*33^n.charCodeAt(--r)}else if(ArrayBuffer.isView(n)){const r=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let a=r.length;for(;a;)t=t*33^r[--a]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;new TextDecoder;function Et(e){const t=atob(e),n=new Uint8Array(t.length);for(let r=0;r((e instanceof Request?e.method:t?.method||"GET")!=="GET"&&W.delete(Te(e)),St(e,t));const W=new Map;function Rt(e,t){const n=Te(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:a,...i}=JSON.parse(r.textContent);const s=r.getAttribute("data-ttl");return s&&W.set(n,{body:a,init:i,ttl:1e3*Number(s)}),r.getAttribute("data-b64")!==null&&(a=Et(a)),Promise.resolve(new Response(a,i))}return window.fetch(e,t)}function xt(e,t,n){if(W.size>0){const r=Te(e,n),a=W.get(r);if(a){if(performance.now(){const a=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(r);if(a)return t.push({name:a[1],matcher:a[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const i=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(r);if(i)return t.push({name:i[1],matcher:i[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!r)return;const s=r.split(/\[(.+?)\](?!\])/);return"/"+s.map((l,c)=>{if(c%2){if(l.startsWith("x+"))return we(String.fromCharCode(parseInt(l.slice(2),16)));if(l.startsWith("u+"))return we(String.fromCharCode(...l.slice(2).split("-").map(_=>parseInt(_,16))));const f=Lt.exec(l),[,p,v,h,u]=f;return t.push({name:h,matcher:u,optional:!!p,rest:!!v,chained:v?c===1&&s[0]==="":!1}),v?"([^]*?)":p?"([^/]*)?":"([^/]+?)"}return we(l)}).join("")}).join("")}/?$`),params:t}}function At(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function Tt(e){return e.slice(1).split("/").filter(At)}function It(e,t,n){const r={},a=e.slice(1),i=a.filter(o=>o!==void 0);let s=0;for(let o=0;of).join("/"),s=0),c===void 0)if(l.rest)c="";else continue;if(!l.matcher||n[l.matcher](c)){r[l.name]=c;const f=t[o+1],p=a[o+1];f&&!f.rest&&f.optional&&p&&l.chained&&(s=0),!f&&!p&&Object.keys(r).length===i.length&&(s=0);continue}if(l.optional&&l.chained){s++;continue}return}if(!s)return r}function we(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function Ot({nodes:e,server_loads:t,dictionary:n,matchers:r}){const a=new Set(t);return Object.entries(n).map(([o,[l,c,f]])=>{const{pattern:p,params:v}=Ut(o),h={id:o,exec:u=>{const _=p.exec(u);if(_)return It(_,v,r)},errors:[1,...f||[]].map(u=>e[u]),layouts:[0,...c||[]].map(s),leaf:i(l)};return h.errors.length=h.layouts.length=Math.max(h.errors.length,h.layouts.length),h});function i(o){const l=o<0;return l&&(o=~o),[l,e[o]]}function s(o){return o===void 0?o:[a.has(o),e[o]]}}function Je(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function Ke(e,t,n=JSON.stringify){const r=n(t);try{sessionStorage[e]=r}catch{}}const L=globalThis.__sveltekit_6h672v?.base??"",Pt=globalThis.__sveltekit_6h672v?.assets??L??"",$t="1778337883258",Ye="sveltekit:snapshot",Xe="sveltekit:scroll",Qe="sveltekit:states",Ct="sveltekit:pageurl",K="sveltekit:history",Y="sveltekit:navigation",N={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},Ie=location.origin;function Ze(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function D(){return{x:pageXOffset,y:pageYOffset}}function B(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const Me={...N,"":N.hover};function et(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function tt(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=et(e)}}function ke(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){const o=location.hash.split("#")[1]||"/";r.hash=`#${o}${r.hash}`}}catch{}const a=e instanceof SVGAElement?e.target.baseVal:e.target,i=!r||!!a||he(r,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),s=r?.origin===Ie&&e.hasAttribute("download");return{url:r,external:i,target:a,download:s}}function ae(e){let t=null,n=null,r=null,a=null,i=null,s=null,o=e;for(;o&&o!==document.documentElement;)r===null&&(r=B(o,"preload-code")),a===null&&(a=B(o,"preload-data")),t===null&&(t=B(o,"keepfocus")),n===null&&(n=B(o,"noscroll")),i===null&&(i=B(o,"reload")),s===null&&(s=B(o,"replacestate")),o=et(o);function l(c){switch(c){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:Me[r??"off"],preload_data:Me[a??"off"],keepfocus:l(t),noscroll:l(n),reload:l(i),replace_state:l(s)}}function ze(e){const t=xe(e);let n=!0;function r(){n=!0,t.update(s=>s)}function a(s){n=!1,t.set(s)}function i(s){let o;return t.subscribe(l=>{(o===void 0||n&&l!==o)&&s(o=l)})}return{notify:r,set:a,subscribe:i}}const nt={v:$};function jt(){const{set:e,subscribe:t}=xe(!1);let n;async function r(){clearTimeout(n);try{const a=await fetch(`${Pt}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!a.ok)return!1;const s=(await a.json()).version!==$t;return s&&(e(!0),nt.v(),clearTimeout(n)),s}catch{return!1}}return{subscribe:t,check:r}}function he(e,t,n){return e.origin!==Ie||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function fn(e){}const rt=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...rt];const Nt=new Set([...rt]);[...Nt];function qt(e){return e.filter(t=>t!=null)}function Oe(e){return e instanceof Le||e instanceof Ae?e.status:500}function Dt(e){return e instanceof Ae?e.text:"Internal Error"}let E,X,ye;const Vt=Be.toString().includes("$$")||/function \w+\(\) \{\}/.test(Be.toString()),Fe="a:";Vt?(E={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(Fe)},X={current:null},ye={current:!1}):(E=new class{#e=U({});get data(){return A(this.#e)}set data(t){T(this.#e,t)}#t=U(null);get form(){return A(this.#t)}set form(t){T(this.#t,t)}#n=U(null);get error(){return A(this.#n)}set error(t){T(this.#n,t)}#r=U({});get params(){return A(this.#r)}set params(t){T(this.#r,t)}#a=U({id:null});get route(){return A(this.#a)}set route(t){T(this.#a,t)}#o=U({});get state(){return A(this.#o)}set state(t){T(this.#o,t)}#s=U(-1);get status(){return A(this.#s)}set status(t){T(this.#s,t)}#i=U(new URL(Fe));get url(){return A(this.#i)}set url(t){T(this.#i,t)}},X=new class{#e=U(null);get current(){return A(this.#e)}set current(t){T(this.#e,t)}},ye=new class{#e=U(!1);get current(){return A(this.#e)}set current(t){T(this.#e,t)}},nt.v=()=>ye.current=!0);function Bt(e){Object.assign(E,e)}const Kt=new Set(["icon","shortcut icon","apple-touch-icon"]);let G=null;const j=Je(Xe)??{},Q=Je(Ye)??{},C={url:ze({}),page:ze({}),navigating:xe(null),updated:jt()};function Pe(e){j[e]=D()}function Mt(e,t){let n=e+1;for(;j[n];)delete j[n],n+=1;for(n=t+1;Q[n];)delete Q[n],n+=1}function Z(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise($)}async function at(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(L||"/");e&&await e.update()}}let $e,Ee,oe,I,Se,y;const se=[],ie=[];let R=null;function le(){R?.fork?.then(e=>e?.discard()),R=null}const ne=new Map,ot=new Set,zt=new Set,J=new Set;let m={branch:[],error:null,url:null},st=!1,ce=!1,Ge=!0,ee=!1,H=!1,it=!1,Ce=!1,lt,w,x,q;const ue=new Set,He=new Map;async function gn(e,t,n){globalThis.__sveltekit_6h672v&&(globalThis.__sveltekit_6h672v.query,globalThis.__sveltekit_6h672v.prerender),document.URL!==location.href&&(location.href=location.href),y=e,await e.hooks.init?.(),$e=Ot(e),I=document.documentElement,Se=t,Ee=e.nodes[0],oe=e.nodes[1],Ee(),oe(),w=history.state?.[K],x=history.state?.[Y],w||(w=x=Date.now(),history.replaceState({...history.state,[K]:w,[Y]:x},""));const r=j[w];function a(){r&&(history.scrollRestoration="manual",scrollTo(r.x,r.y))}n?(a(),await an(Se,n)):(await M({type:"enter",url:Ze(y.hash?ln(new URL(location.href)):location.href),replace_state:!0}),a()),rn()}function Ft(){se.length=0,Ce=!1}function ct(e){ie.some(t=>t?.snapshot)&&(Q[e]=ie.map(t=>t?.snapshot?.capture()))}function ut(e){Q[e]?.forEach((t,n)=>{ie[n]?.snapshot?.restore(t)})}function We(){Pe(w),Ke(Xe,j),ct(x),Ke(Ye,Q)}async function Gt(e,t,n,r){let a;t.invalidateAll&&le(),await M({type:"goto",url:Ze(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:r,accept:()=>{t.invalidateAll&&(Ce=!0,a=[],He.forEach((i,s)=>{for(const o of i.keys())a.push(s+"/"+o)})),t.invalidate&&t.invalidate.forEach(nn)}}),t.invalidateAll&&re().then(re).then(()=>{He.forEach((i,s)=>{i.forEach(({resource:o},l)=>{a?.includes(s+"/"+l)&&o.refresh?.()})})})}async function Ht(e){if(e.id!==R?.id){le();const t={};ue.add(t),R={id:e.id,token:t,promise:dt({...e,preload:t}).then(n=>(ue.delete(t),n.type==="loaded"&&n.state.error&&le(),n)),fork:null}}return R.promise}async function be(e){const t=(await pe(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(n=>n[1]()))}async function ft(e,t,n){const r={params:m.params,route:{id:m.route?.id??null},url:new URL(location.href)};m={...e.state,nav:r};const a=document.querySelector("style[data-sveltekit]");if(a&&a.remove(),Object.assign(E,e.props.page),lt=new y.root({target:t,props:{...e.props,stores:C,components:ie},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),ut(x),n){const i={from:null,to:{...r,scroll:j[w]??D()},willUnload:!1,type:"enter",complete:Promise.resolve()};J.forEach(s=>s(i))}ce=!0}async function fe({url:e,params:t,branch:n,errors:r,status:a,error:i,route:s,form:o}){let l="never";if(L&&(e.pathname===L||e.pathname===L+"/"))l="always";else for(const u of n)u?.slash!==void 0&&(l=u.slash);e.pathname=wt(e.pathname,l),e.search=e.search;const c={type:"loaded",state:{url:e,params:t,branch:n,error:i,route:s},props:{constructors:qt(n).map(u=>u.node.component),page:Ve(E)}};o!==void 0&&(c.props.form=o);let f={},p=!E,v=0;for(let u=0;uo(new URL(s))))return!0;return!1}function Ne(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());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const r of n){const a=e.searchParams.getAll(r),i=t.searchParams.getAll(r);a.every(s=>i.includes(s))&&i.every(s=>a.includes(s))&&n.delete(r)}return n}function Xt({error:e,url:t,route:n,params:r}){return{type:"loaded",state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:Ve(E),constructors:[]}}}async function dt({id:e,invalidating:t,url:n,params:r,route:a,preload:i}){if(R?.id===e)return ue.delete(R.token),R.promise;const{errors:s,layouts:o,leaf:l}=a,c=[...o,l];s.forEach(g=>g?.().catch($)),c.forEach(g=>g?.[1]().catch($));const f=m.url?e!==de(m.url):!1,p=m.route?a.id!==m.route.id:!1,v=Yt(m.url,n);let h=!1;const u=c.map(async(g,d)=>{if(!g)return;const b=m.branch[d];return g[1]===b?.loader&&!Jt(h,p,f,v,b.universal?.uses,r)?b:(h=!0,je({loader:g[1],url:n,params:r,route:a,parent:async()=>{const O={};for(let P=0;PPromise.resolve({}),server_data_node:Ne(i)}),o={node:await oe(),loader:oe,universal:null,server:null,data:null};return fe({url:n,params:a,branch:[s,o],status:e,error:t,errors:[],route:null})}catch(s){if(s instanceof Ue)return Gt(new URL(s.location,location.href),{},0);throw s}}async function Zt(e){const t=e.href;if(ne.has(t))return ne.get(t);let n;try{const r=(async()=>{let a=await y.hooks.reroute({url:new URL(e),fetch:async(i,s)=>Wt(i,s,e).promise})??e;if(typeof a=="string"){const i=new URL(e);y.hash?i.hash=a:i.pathname=a,a=i}return a})();ne.set(t,r),n=await r}catch{ne.delete(t);return}return n}async function pe(e,t){if(e&&!he(e,L,y.hash)){const n=await Zt(e);if(!n)return;const r=en(n);for(const a of $e){const i=a.exec(r);if(i)return{id:de(e),invalidating:t,route:a,params:bt(i),url:e}}}}function en(e){return yt(y.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(L.length))||"/"}function de(e){return(y.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function ht({url:e,type:t,intent:n,delta:r,event:a,scroll:i}){let s=!1;const o=De(m,n,e,t,i??null);r!==void 0&&(o.navigation.delta=r),a!==void 0&&(o.navigation.event=a);const l={...o.navigation,cancel:()=>{s=!0,o.reject(new Error("navigation cancelled"))}};return ee||ot.forEach(c=>c(l)),s?null:o}async function M({type:e,url:t,popped:n,keepfocus:r,noscroll:a,replace_state:i,state:s={},redirect_count:o=0,nav_token:l={},accept:c=$,block:f=$,event:p}){const v=q;q=l;const h=await pe(t,!1),u=e==="enter"?De(m,h,t,e):ht({url:t,type:e,delta:n?.delta,intent:h,scroll:n?.scroll,event:p});if(!u){f(),q===l&&(q=v);return}const _=w,g=x;c(),ee=!0,ce&&u.navigation.type!=="enter"&&C.navigating.set(X.current=u.navigation);let d=h&&await dt(h);if(!d){if(he(t,L,y.hash))return await Z(t,i);d=await pt(t,{id:null},await te(new Ae(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,i)}if(t=h?.url||t,q!==l)return u.reject(new Error("navigation aborted")),!1;if(d.type==="redirect"){if(o<20){await M({type:e,url:new URL(d.location,t),popped:n,keepfocus:r,noscroll:a,replace_state:i,state:s,redirect_count:o+1,nav_token:l}),u.fulfil(void 0);return}d=await qe({status:500,error:await te(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else d.props.page.status>=400&&await C.updated.check()&&(await at(),await Z(t,i));if(Ft(),Pe(_),ct(g),d.props.page.url.pathname!==t.pathname&&(t.pathname=d.props.page.url.pathname),s=n?n.state:s,!n){const k=i?0:1,z={[K]:w+=k,[Y]:x+=k,[Qe]:s};(i?history.replaceState:history.pushState).call(history,z,"",t),i||Mt(w,x)}const b=h&&R?.id===h.id?R.fork:null;R?.fork&&!b&&le(),R=null,d.props.page.state=s;let S;if(ce){const k=(await Promise.all(Array.from(zt,F=>F(u.navigation)))).filter(F=>typeof F=="function");if(k.length>0){let F=function(){k.forEach(_e=>{J.delete(_e)})};k.push(F),k.forEach(_e=>{J.add(_e)})}const z=u.navigation.to;m={...d.state,nav:{params:z.params,route:z.route,url:z.url}},d.props.page&&(d.props.page.url=t);const ge=b&&await b;ge?S=ge.commit():(G=null,lt.$set(d.props),G&&Object.assign(d.props.page,G),Bt(d.props.page),S=vt?.()),it=!0}else await ft(d,Se,!1);const{activeElement:O}=document;await S,await re(),await re();let P=null;if(Ge){const k=n?n.scroll:a?D():null;k?scrollTo(k.x,k.y):(P=t.hash&&document.getElementById(gt(t)))?P.scrollIntoView():scrollTo(0,0)}const _t=document.activeElement!==O&&document.activeElement!==document.body;!r&&!_t&&sn(t,!P),Ge=!0,d.props.page&&(G&&Object.assign(d.props.page,G),Object.assign(E,d.props.page)),ee=!1,e==="popstate"&&ut(x),u.fulfil(void 0),u.navigation.to&&(u.navigation.to.scroll=D()),J.forEach(k=>k(u.navigation)),C.navigating.set(X.current=null)}async function pt(e,t,n,r,a){return e.origin===Ie&&e.pathname===location.pathname&&!st?await qe({status:r,error:n,url:e,route:t}):await Z(e,a)}function tn(){let e,t={element:void 0,href:void 0},n;I.addEventListener("mousemove",o=>{const l=o.target;clearTimeout(e),e=setTimeout(()=>{i(l,N.hover)},20)});function r(o){o.defaultPrevented||i(o.composedPath()[0],N.tap)}I.addEventListener("mousedown",r),I.addEventListener("touchstart",r,{passive:!0});const a=new IntersectionObserver(o=>{for(const l of o)l.isIntersecting&&(be(new URL(l.target.href)),a.unobserve(l.target))},{threshold:0});async function i(o,l){const c=tt(o,I),f=c===t.element&&c?.href===t.href&&l>=n;if(!c||f)return;const{url:p,external:v,download:h}=ke(c,L,y.hash);if(v||h)return;const u=ae(c),_=p&&de(m.url)===de(p);if(!(u.reload||_))if(l<=u.preload_data){t={element:c,href:c.href},n=N.tap;const g=await pe(p,!1);if(!g)return;Ht(g)}else l<=u.preload_code&&(t={element:c,href:c.href},n=l,be(p))}function s(){a.disconnect();for(const o of I.querySelectorAll("a")){const{url:l,external:c,download:f}=ke(o,L,y.hash);if(c||f)continue;const p=ae(o);p.reload||(p.preload_code===N.viewport&&a.observe(o),p.preload_code===N.eager&&be(l))}}J.add(s),s()}function te(e,t){if(e instanceof Le)return e.body;const n=Oe(e),r=Dt(e);return y.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function nn(e){if(typeof e=="function")se.push(e);else{const{href:t}=new URL(e,location.href);se.push(n=>n.href===t)}}function rn(){history.scrollRestoration="manual",addEventListener("beforeunload",t=>{let n=!1;if(We(),!ee){const r=De(m,void 0,null,"leave"),a={...r.navigation,cancel:()=>{n=!0,r.reject(new Error("navigation cancelled"))}};ot.forEach(i=>i(a))}n?(t.preventDefault(),t.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&We()}),navigator.connection?.saveData||tn(),I.addEventListener("click",async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;const n=tt(t.composedPath()[0],I);if(!n)return;const{url:r,external:a,target:i,download:s}=ke(n,L,y.hash);if(!r)return;if(i==="_parent"||i==="_top"){if(window.parent!==window)return}else if(i&&i!=="_self")return;const o=ae(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol==="https:"||r.protocol==="http:")||s)return;const[c,f]=(y.hash?r.hash.replace(/^#/,""):r.href).split("#"),p=c===ve(location);if(a||o.reload&&(!p||!f)){ht({url:r,type:"link",event:t})?ee=!0:t.preventDefault();return}if(f!==void 0&&p){const[,v]=m.url.href.split("#");if(v===f){if(t.preventDefault(),f===""||f==="top"&&n.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const h=n.ownerDocument.getElementById(decodeURIComponent(f));h&&(h.scrollIntoView(),h.focus())}return}if(H=!0,Pe(w),e(r),!o.replace_state)return;H=!1}t.preventDefault(),await new Promise(v=>{requestAnimationFrame(()=>{setTimeout(v,0)}),setTimeout(v,100)}),await M({type:"link",url:r,keepfocus:o.keepfocus,noscroll:o.noscroll,replace_state:o.replace_state??r.href===location.href,event:t})}),I.addEventListener("submit",t=>{if(t.defaultPrevented)return;const n=HTMLFormElement.prototype.cloneNode.call(t.target),r=t.submitter;if((r?.formTarget||n.target)==="_blank"||(r?.formMethod||n.method)!=="get")return;const s=new URL(r?.hasAttribute("formaction")&&r?.formAction||n.action);if(he(s,L,!1))return;const o=t.target,l=ae(o);if(l.reload)return;t.preventDefault(),t.stopPropagation();const c=new FormData(o,r);s.search=new URLSearchParams(c).toString(),M({type:"form",url:s,keepfocus:l.keepfocus,noscroll:l.noscroll,replace_state:l.replace_state??s.href===location.href,event:t})}),addEventListener("popstate",async t=>{if(!Re){if(t.state?.[K]){const n=t.state[K];if(q={},n===w)return;const r=j[n],a=t.state[Qe]??{},i=new URL(t.state[Ct]??location.href),s=t.state[Y],o=m.url?ve(location)===ve(m.url):!1;if(s===x&&(it||o)){a!==E.state&&(E.state=a),e(i),j[w]=D(),r&&scrollTo(r.x,r.y),w=n;return}const c=n-w;await M({type:"popstate",url:i,popped:{state:a,scroll:r,delta:c},accept:()=>{w=n,x=s},block:()=>{history.go(-c)},nav_token:q,event:t})}else if(!H){const n=new URL(location.href);e(n),y.hash&&location.reload()}}}),addEventListener("hashchange",()=>{H&&(H=!1,history.replaceState({...history.state,[K]:++w,[Y]:x},"",location.href))});for(const t of document.querySelectorAll("link"))Kt.has(t.rel)&&(t.href=t.href);addEventListener("pageshow",t=>{t.persisted&&C.navigating.set(X.current=null)});function e(t){m.url=E.url=t,C.page.set(Ve(E)),C.page.notify()}}async function an(e,{status:t=200,error:n,node_ids:r,params:a,route:i,server_route:s,data:o,form:l}){st=!0;const c=new URL(location.href);let f;({params:a={},route:i={id:null}}=await pe(c,!1)||{}),f=$e.find(({id:h})=>h===i.id);let p,v=!0;try{const h=r.map(async(_,g)=>{const d=o[g];return d?.uses&&(d.uses=on(d.uses)),je({loader:y.nodes[_],url:c,params:a,route:i,parent:async()=>{const b={};for(let S=0;S{const o=history.state;Re=!0,location.replace(new URL(`#${r}`,location.href)),history.replaceState(o,"",e),t&&scrollTo(i,s),Re=!1})}else{const i=document.body,s=i.getAttribute("tabindex");i.tabIndex=-1,i.focus({preventScroll:!0,focusVisible:!1}),s!==null?i.setAttribute("tabindex",s):i.removeAttribute("tabindex")}const a=getSelection();if(a&&a.type!=="None"){const i=[];for(let s=0;s{if(a.rangeCount===i.length){for(let s=0;s{i=c,s=f});return o.catch($),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:D()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:a},willUnload:!t,type:r,complete:o},fulfil:i,reject:s}}function Ve(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 ln(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function gt(e){let t;if(y.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{gn as a,fn as l,E as p,C as s}; diff --git a/packages/opal-web/.svelte-kit/output/client/_app/immutable/entry/app.CwJugxOn.js b/packages/opal-web/.svelte-kit/output/client/_app/immutable/entry/app.CiOJ5aSh.js similarity index 96% rename from packages/opal-web/.svelte-kit/output/client/_app/immutable/entry/app.CwJugxOn.js rename to packages/opal-web/.svelte-kit/output/client/_app/immutable/entry/app.CiOJ5aSh.js index 485818b..bf39ce5 100644 --- a/packages/opal-web/.svelte-kit/output/client/_app/immutable/entry/app.CwJugxOn.js +++ b/packages/opal-web/.svelte-kit/output/client/_app/immutable/entry/app.CiOJ5aSh.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.BBK5tPNV.js","../chunks/DdeFJgsq.js","../chunks/9VeCAWtE.js","../chunks/DSyLvQQK.js","../chunks/CQmILjMx.js","../assets/LandingPage.B30L2Q2O.css","../chunks/Dk4Xg81N.js","../chunks/C_hTd_0H.js","../assets/0.DlyWNk37.css","../nodes/1.9OPHrp2H.js","../chunks/Cf0F0xk3.js","../chunks/DhRmkkCw.js","../nodes/2.DdA0VN84.js","../chunks/isM9luo4.js","../chunks/pv6okbAF.js","../chunks/BKqvpmVb.js","../nodes/3.CyCzSqlR.js","../assets/3.DszxsmSB.css"])))=>i.map(i=>d[i]); -import{a6 as G,af as W,ag as z,Y as F,W as H,ah as J,a2 as K,U as k,a3 as Q,g as m,ai as X,aj as Z,x as $,a7 as tt,ak as et,a5 as rt,al as st,a8 as O,ad as at,aa as nt,am as x,ab as ot,ac as ct,a9 as it,an as S}from"../chunks/9VeCAWtE.js";import{h as lt,m as ut,u as ft,a as w,c as L,f as N,t as dt,s as mt}from"../chunks/DdeFJgsq.js";import{o as ht}from"../chunks/DhRmkkCw.js";import{i as j}from"../chunks/isM9luo4.js";import{c as A}from"../chunks/BKqvpmVb.js";import{p as T}from"../chunks/C_hTd_0H.js";function I(a,t){return a===t||a?.[K]===t}function C(a={},t,n,l){var i=G.r,s=H;return W(()=>{var e,r;return z(()=>{e=r,r=[],F(()=>{a!==n(...r)&&(t(a,...r),e&&I(n(...e),a)&&t(null,...e))})}),()=>{let u=s;for(;u!==i&&u.parent!==null&&u.parent.f&J;)u=u.parent;const E=()=>{r&&I(n(...r),a)&&t(null,...r)},c=u.teardown;u.teardown=()=>{E(),c?.()}}}),a}function _t(a){return class extends vt{constructor(t){super({component:a,...t})}}}class vt{#e;#t;constructor(t){var n=new Map,l=(s,e)=>{var r=$(e,!1,!1);return n.set(s,r),r};const i=new Proxy({...t.props||{},$$events:{}},{get(s,e){return m(n.get(e)??l(e,Reflect.get(s,e)))},has(s,e){return e===Q?!0:(m(n.get(e)??l(e,Reflect.get(s,e))),Reflect.has(s,e))},set(s,e,r){return k(n.get(e)??l(e,r),r),Reflect.set(s,e,r)}});this.#t=(t.hydrate?lt:ut)(t.component,{target:t.target,anchor:t.anchor,props:i,context:t.context,intro:t.intro??!1,recover:t.recover,transformError:t.transformError}),(!t?.props?.$$host||t.sync===!1)&&X(),this.#e=i.$$events;for(const s of Object.keys(this.#t))s==="$set"||s==="$destroy"||s==="$on"||Z(this,s,{get(){return this.#t[s]},set(e){this.#t[s]=e},enumerable:!0});this.#t.$set=s=>{Object.assign(i,s)},this.#t.$destroy=()=>{ft(this.#t)}}$set(t){this.#t.$set(t)}$on(t,n){this.#e[t]=this.#e[t]||[];const l=(...i)=>n.call(this,...i);return this.#e[t].push(l),()=>{this.#e[t]=this.#e[t].filter(i=>i!==l)}}$destroy(){this.#t.$destroy()}}const gt="modulepreload",yt=function(a,t){return new URL(a,t).href},M={},R=function(t,n,l){let i=Promise.resolve();if(n&&n.length>0){let E=function(c){return Promise.all(c.map(d=>Promise.resolve(d).then(h=>({status:"fulfilled",value:h}),h=>({status:"rejected",reason:h}))))};const e=document.getElementsByTagName("link"),r=document.querySelector("meta[property=csp-nonce]"),u=r?.nonce||r?.getAttribute("nonce");i=E(n.map(c=>{if(c=yt(c,l),c in M)return;M[c]=!0;const d=c.endsWith(".css"),h=d?'[rel="stylesheet"]':"";if(l)for(let _=e.length-1;_>=0;_--){const o=e[_];if(o.href===c&&(!d||o.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${c}"]${h}`))return;const f=document.createElement("link");if(f.rel=d?"stylesheet":gt,d||(f.as="script"),f.crossOrigin="",f.href=c,u&&f.setAttribute("nonce",u),document.head.appendChild(f),d)return new Promise((_,o)=>{f.addEventListener("load",_),f.addEventListener("error",()=>o(new Error(`Unable to preload CSS for ${c}`)))})}))}function s(e){const r=new Event("vite:preloadError",{cancelable:!0});if(r.payload=e,window.dispatchEvent(r),!r.defaultPrevented)throw e}return i.then(e=>{for(const r of e||[])r.status==="rejected"&&s(r.reason);return t().catch(s)})},jt={};var Et=N('
'),bt=N(" ",1);function wt(a,t){tt(t,!0);let n=T(t,"components",23,()=>[]),l=T(t,"data_0",3,null),i=T(t,"data_1",3,null);et(()=>t.stores.page.set(t.page)),rt(()=>{t.stores,t.page,t.constructors,n(),t.form,l(),i(),t.stores.page.notify()});let s=x(!1),e=x(!1),r=x(null);ht(()=>{const o=t.stores.page.subscribe(()=>{m(s)&&(k(e,!0),st().then(()=>{k(r,document.title||"untitled page",!0)}))});return k(s,!0),o});const u=S(()=>t.constructors[1]);var E=bt(),c=O(E);{var d=o=>{const v=S(()=>t.constructors[0]);var g=L(),P=O(g);A(P,()=>m(v),(y,b)=>{C(b(y,{get data(){return l()},get form(){return t.form},get params(){return t.page.params},children:(p,pt)=>{var D=L(),Y=O(D);A(Y,()=>m(u),(U,q)=>{C(q(U,{get data(){return i()},get form(){return t.form},get params(){return t.page.params}}),B=>n()[1]=B,()=>n()?.[1])}),w(p,D)},$$slots:{default:!0}}),p=>n()[0]=p,()=>n()?.[0])}),w(o,g)},h=o=>{const v=S(()=>t.constructors[0]);var g=L(),P=O(g);A(P,()=>m(v),(y,b)=>{C(b(y,{get data(){return l()},get form(){return t.form},get params(){return t.page.params}}),p=>n()[0]=p,()=>n()?.[0])}),w(o,g)};j(c,o=>{t.constructors[1]?o(d):o(h,-1)})}var f=at(c,2);{var _=o=>{var v=Et(),g=ot(v);{var P=y=>{var b=dt();it(()=>mt(b,m(r))),w(y,b)};j(g,y=>{m(e)&&y(P)})}ct(v),w(o,v)};j(f,o=>{m(s)&&o(_)})}w(a,E),nt()}const At=_t(wt),Tt=[()=>R(()=>import("../nodes/0.BBK5tPNV.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8]),import.meta.url),()=>R(()=>import("../nodes/1.9OPHrp2H.js"),__vite__mapDeps([9,1,2,10,11]),import.meta.url),()=>R(()=>import("../nodes/2.DdA0VN84.js"),__vite__mapDeps([12,1,2,6,3,4,5,13,14,15,7]),import.meta.url),()=>R(()=>import("../nodes/3.CyCzSqlR.js"),__vite__mapDeps([16,1,2,11,13,4,14,6,17]),import.meta.url)],Ct=[],Dt={"/":[2],"/import":[3]},V={handleError:(({error:a})=>{console.error(a)}),reroute:(()=>{}),transport:{}},Pt=Object.fromEntries(Object.entries(V.transport).map(([a,t])=>[a,t.decode])),It=Object.fromEntries(Object.entries(V.transport).map(([a,t])=>[a,t.encode])),Mt=!1,Nt=(a,t)=>Pt[a](t);export{Nt as decode,Pt as decoders,Dt as dictionary,It as encoders,Mt as hash,V as hooks,jt as matchers,Tt as nodes,At as root,Ct as server_loads}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.BBK5tPNV.js","../chunks/DdeFJgsq.js","../chunks/9VeCAWtE.js","../chunks/DSyLvQQK.js","../chunks/CQmILjMx.js","../assets/LandingPage.B30L2Q2O.css","../chunks/Dk4Xg81N.js","../chunks/C_hTd_0H.js","../assets/0.DlyWNk37.css","../nodes/1.8t4lX9Eb.js","../chunks/B4kNhNlA.js","../chunks/DhRmkkCw.js","../nodes/2.DdA0VN84.js","../chunks/isM9luo4.js","../chunks/pv6okbAF.js","../chunks/BKqvpmVb.js","../nodes/3.CyCzSqlR.js","../assets/3.DszxsmSB.css"])))=>i.map(i=>d[i]); +import{a6 as G,af as W,ag as z,Y as F,W as H,ah as J,a2 as K,U as k,a3 as Q,g as m,ai as X,aj as Z,x as $,a7 as tt,ak as et,a5 as rt,al as st,a8 as O,ad as at,aa as nt,am as x,ab as ot,ac as ct,a9 as it,an as S}from"../chunks/9VeCAWtE.js";import{h as lt,m as ut,u as ft,a as w,c as L,f as N,t as dt,s as mt}from"../chunks/DdeFJgsq.js";import{o as ht}from"../chunks/DhRmkkCw.js";import{i as j}from"../chunks/isM9luo4.js";import{c as A}from"../chunks/BKqvpmVb.js";import{p as T}from"../chunks/C_hTd_0H.js";function I(a,t){return a===t||a?.[K]===t}function C(a={},t,n,l){var i=G.r,s=H;return W(()=>{var e,r;return z(()=>{e=r,r=[],F(()=>{a!==n(...r)&&(t(a,...r),e&&I(n(...e),a)&&t(null,...e))})}),()=>{let u=s;for(;u!==i&&u.parent!==null&&u.parent.f&J;)u=u.parent;const E=()=>{r&&I(n(...r),a)&&t(null,...r)},c=u.teardown;u.teardown=()=>{E(),c?.()}}}),a}function _t(a){return class extends vt{constructor(t){super({component:a,...t})}}}class vt{#e;#t;constructor(t){var n=new Map,l=(s,e)=>{var r=$(e,!1,!1);return n.set(s,r),r};const i=new Proxy({...t.props||{},$$events:{}},{get(s,e){return m(n.get(e)??l(e,Reflect.get(s,e)))},has(s,e){return e===Q?!0:(m(n.get(e)??l(e,Reflect.get(s,e))),Reflect.has(s,e))},set(s,e,r){return k(n.get(e)??l(e,r),r),Reflect.set(s,e,r)}});this.#t=(t.hydrate?lt:ut)(t.component,{target:t.target,anchor:t.anchor,props:i,context:t.context,intro:t.intro??!1,recover:t.recover,transformError:t.transformError}),(!t?.props?.$$host||t.sync===!1)&&X(),this.#e=i.$$events;for(const s of Object.keys(this.#t))s==="$set"||s==="$destroy"||s==="$on"||Z(this,s,{get(){return this.#t[s]},set(e){this.#t[s]=e},enumerable:!0});this.#t.$set=s=>{Object.assign(i,s)},this.#t.$destroy=()=>{ft(this.#t)}}$set(t){this.#t.$set(t)}$on(t,n){this.#e[t]=this.#e[t]||[];const l=(...i)=>n.call(this,...i);return this.#e[t].push(l),()=>{this.#e[t]=this.#e[t].filter(i=>i!==l)}}$destroy(){this.#t.$destroy()}}const gt="modulepreload",yt=function(a,t){return new URL(a,t).href},M={},R=function(t,n,l){let i=Promise.resolve();if(n&&n.length>0){let E=function(c){return Promise.all(c.map(d=>Promise.resolve(d).then(h=>({status:"fulfilled",value:h}),h=>({status:"rejected",reason:h}))))};const e=document.getElementsByTagName("link"),r=document.querySelector("meta[property=csp-nonce]"),u=r?.nonce||r?.getAttribute("nonce");i=E(n.map(c=>{if(c=yt(c,l),c in M)return;M[c]=!0;const d=c.endsWith(".css"),h=d?'[rel="stylesheet"]':"";if(l)for(let _=e.length-1;_>=0;_--){const o=e[_];if(o.href===c&&(!d||o.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${c}"]${h}`))return;const f=document.createElement("link");if(f.rel=d?"stylesheet":gt,d||(f.as="script"),f.crossOrigin="",f.href=c,u&&f.setAttribute("nonce",u),document.head.appendChild(f),d)return new Promise((_,o)=>{f.addEventListener("load",_),f.addEventListener("error",()=>o(new Error(`Unable to preload CSS for ${c}`)))})}))}function s(e){const r=new Event("vite:preloadError",{cancelable:!0});if(r.payload=e,window.dispatchEvent(r),!r.defaultPrevented)throw e}return i.then(e=>{for(const r of e||[])r.status==="rejected"&&s(r.reason);return t().catch(s)})},jt={};var Et=N('
'),bt=N(" ",1);function wt(a,t){tt(t,!0);let n=T(t,"components",23,()=>[]),l=T(t,"data_0",3,null),i=T(t,"data_1",3,null);et(()=>t.stores.page.set(t.page)),rt(()=>{t.stores,t.page,t.constructors,n(),t.form,l(),i(),t.stores.page.notify()});let s=x(!1),e=x(!1),r=x(null);ht(()=>{const o=t.stores.page.subscribe(()=>{m(s)&&(k(e,!0),st().then(()=>{k(r,document.title||"untitled page",!0)}))});return k(s,!0),o});const u=S(()=>t.constructors[1]);var E=bt(),c=O(E);{var d=o=>{const v=S(()=>t.constructors[0]);var g=L(),P=O(g);A(P,()=>m(v),(y,b)=>{C(b(y,{get data(){return l()},get form(){return t.form},get params(){return t.page.params},children:(p,pt)=>{var D=L(),Y=O(D);A(Y,()=>m(u),(U,q)=>{C(q(U,{get data(){return i()},get form(){return t.form},get params(){return t.page.params}}),B=>n()[1]=B,()=>n()?.[1])}),w(p,D)},$$slots:{default:!0}}),p=>n()[0]=p,()=>n()?.[0])}),w(o,g)},h=o=>{const v=S(()=>t.constructors[0]);var g=L(),P=O(g);A(P,()=>m(v),(y,b)=>{C(b(y,{get data(){return l()},get form(){return t.form},get params(){return t.page.params}}),p=>n()[0]=p,()=>n()?.[0])}),w(o,g)};j(c,o=>{t.constructors[1]?o(d):o(h,-1)})}var f=at(c,2);{var _=o=>{var v=Et(),g=ot(v);{var P=y=>{var b=dt();it(()=>mt(b,m(r))),w(y,b)};j(g,y=>{m(e)&&y(P)})}ct(v),w(o,v)};j(f,o=>{m(s)&&o(_)})}w(a,E),nt()}const At=_t(wt),Tt=[()=>R(()=>import("../nodes/0.BBK5tPNV.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8]),import.meta.url),()=>R(()=>import("../nodes/1.8t4lX9Eb.js"),__vite__mapDeps([9,1,2,10,11]),import.meta.url),()=>R(()=>import("../nodes/2.DdA0VN84.js"),__vite__mapDeps([12,1,2,6,3,4,5,13,14,15,7]),import.meta.url),()=>R(()=>import("../nodes/3.CyCzSqlR.js"),__vite__mapDeps([16,1,2,11,13,4,14,6,17]),import.meta.url)],Ct=[],Dt={"/":[2],"/import":[3]},V={handleError:(({error:a})=>{console.error(a)}),reroute:(()=>{}),transport:{}},Pt=Object.fromEntries(Object.entries(V.transport).map(([a,t])=>[a,t.decode])),It=Object.fromEntries(Object.entries(V.transport).map(([a,t])=>[a,t.encode])),Mt=!1,Nt=(a,t)=>Pt[a](t);export{Nt as decode,Pt as decoders,Dt as dictionary,It as encoders,Mt as hash,V as hooks,jt as matchers,Tt as nodes,At as root,Ct as server_loads}; diff --git a/packages/opal-web/.svelte-kit/output/client/_app/immutable/entry/start.DGxgsefr.js b/packages/opal-web/.svelte-kit/output/client/_app/immutable/entry/start.DGxgsefr.js new file mode 100644 index 0000000..7f7cbde --- /dev/null +++ b/packages/opal-web/.svelte-kit/output/client/_app/immutable/entry/start.DGxgsefr.js @@ -0,0 +1 @@ +import{l as o,a as r}from"../chunks/B4kNhNlA.js";export{o as load_css,r as start}; diff --git a/packages/opal-web/.svelte-kit/output/client/_app/immutable/entry/start.Pw0JximK.js b/packages/opal-web/.svelte-kit/output/client/_app/immutable/entry/start.Pw0JximK.js deleted file mode 100644 index c17582e..0000000 --- a/packages/opal-web/.svelte-kit/output/client/_app/immutable/entry/start.Pw0JximK.js +++ /dev/null @@ -1 +0,0 @@ -import{l as o,a as r}from"../chunks/Cf0F0xk3.js";export{o as load_css,r as start}; diff --git a/packages/opal-web/.svelte-kit/output/client/_app/immutable/nodes/1.9OPHrp2H.js b/packages/opal-web/.svelte-kit/output/client/_app/immutable/nodes/1.8t4lX9Eb.js similarity index 86% rename from packages/opal-web/.svelte-kit/output/client/_app/immutable/nodes/1.9OPHrp2H.js rename to packages/opal-web/.svelte-kit/output/client/_app/immutable/nodes/1.8t4lX9Eb.js index a806fb2..f6da46e 100644 --- a/packages/opal-web/.svelte-kit/output/client/_app/immutable/nodes/1.9OPHrp2H.js +++ b/packages/opal-web/.svelte-kit/output/client/_app/immutable/nodes/1.8t4lX9Eb.js @@ -1 +1 @@ -import{a as h,f as i,s as e}from"../chunks/DdeFJgsq.js";import{a7 as g,a8 as d,a9 as v,aa as l,ab as s,ac as o,ad as _}from"../chunks/9VeCAWtE.js";import{s as x,p}from"../chunks/Cf0F0xk3.js";const $={get error(){return p.error},get status(){return p.status}};x.updated.check;const c=$;var b=i("

",1);function q(m,n){g(n,!0);var r=b(),a=d(r),u=s(a,!0);o(a);var t=_(a,2),f=s(t,!0);o(t),v(()=>{e(u,c.status),e(f,c.error?.message)}),h(m,r),l()}export{q as component}; +import{a as h,f as i,s as e}from"../chunks/DdeFJgsq.js";import{a7 as g,a8 as d,a9 as v,aa as l,ab as s,ac as o,ad as _}from"../chunks/9VeCAWtE.js";import{s as x,p}from"../chunks/B4kNhNlA.js";const $={get error(){return p.error},get status(){return p.status}};x.updated.check;const c=$;var b=i("

",1);function q(m,n){g(n,!0);var r=b(),a=d(r),u=s(a,!0);o(a);var t=_(a,2),f=s(t,!0);o(t),v(()=>{e(u,c.status),e(f,c.error?.message)}),h(m,r),l()}export{q as component}; diff --git a/packages/opal-web/.svelte-kit/output/client/_app/version.json b/packages/opal-web/.svelte-kit/output/client/_app/version.json index 2db6c59..3406608 100644 --- a/packages/opal-web/.svelte-kit/output/client/_app/version.json +++ b/packages/opal-web/.svelte-kit/output/client/_app/version.json @@ -1 +1 @@ -{"version":"1778337883258"} \ No newline at end of file +{"version":"1778338476989"} \ No newline at end of file diff --git a/packages/opal-web/.svelte-kit/output/server/chunks/internal.js b/packages/opal-web/.svelte-kit/output/server/chunks/internal.js index 563710f..fc67a80 100644 --- a/packages/opal-web/.svelte-kit/output/server/chunks/internal.js +++ b/packages/opal-web/.svelte-kit/output/server/chunks/internal.js @@ -102,7 +102,7 @@ const options = {
` + status + '\n
\n

' + message + "

\n
\n
\n \n\n" }, - version_hash: "6h672v" + version_hash: "1v99u1l" }; async function get_hooks() { let handle; diff --git a/packages/opal-web/.svelte-kit/output/server/manifest-full.js b/packages/opal-web/.svelte-kit/output/server/manifest-full.js index 279b91f..f1be343 100644 --- a/packages/opal-web/.svelte-kit/output/server/manifest-full.js +++ b/packages/opal-web/.svelte-kit/output/server/manifest-full.js @@ -10,7 +10,7 @@ return { assets: new Set(["client-metadata.json","logo/Opal.svg","robots.txt"]), mimeTypes: {".json":"application/json",".svg":"image/svg+xml",".txt":"text/plain"}, _: { - client: {start:"_app/immutable/entry/start.Pw0JximK.js",app:"_app/immutable/entry/app.CwJugxOn.js",imports:["_app/immutable/entry/start.Pw0JximK.js","_app/immutable/chunks/Cf0F0xk3.js","_app/immutable/chunks/9VeCAWtE.js","_app/immutable/chunks/DhRmkkCw.js","_app/immutable/entry/app.CwJugxOn.js","_app/immutable/chunks/9VeCAWtE.js","_app/immutable/chunks/DdeFJgsq.js","_app/immutable/chunks/DhRmkkCw.js","_app/immutable/chunks/isM9luo4.js","_app/immutable/chunks/CQmILjMx.js","_app/immutable/chunks/BKqvpmVb.js","_app/immutable/chunks/C_hTd_0H.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false}, + client: {start:"_app/immutable/entry/start.DGxgsefr.js",app:"_app/immutable/entry/app.CiOJ5aSh.js",imports:["_app/immutable/entry/start.DGxgsefr.js","_app/immutable/chunks/B4kNhNlA.js","_app/immutable/chunks/9VeCAWtE.js","_app/immutable/chunks/DhRmkkCw.js","_app/immutable/entry/app.CiOJ5aSh.js","_app/immutable/chunks/9VeCAWtE.js","_app/immutable/chunks/DdeFJgsq.js","_app/immutable/chunks/DhRmkkCw.js","_app/immutable/chunks/isM9luo4.js","_app/immutable/chunks/CQmILjMx.js","_app/immutable/chunks/BKqvpmVb.js","_app/immutable/chunks/C_hTd_0H.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false}, nodes: [ __memo(() => import('./nodes/0.js')), __memo(() => import('./nodes/1.js')), diff --git a/packages/opal-web/.svelte-kit/output/server/manifest.js b/packages/opal-web/.svelte-kit/output/server/manifest.js index 279b91f..f1be343 100644 --- a/packages/opal-web/.svelte-kit/output/server/manifest.js +++ b/packages/opal-web/.svelte-kit/output/server/manifest.js @@ -10,7 +10,7 @@ return { assets: new Set(["client-metadata.json","logo/Opal.svg","robots.txt"]), mimeTypes: {".json":"application/json",".svg":"image/svg+xml",".txt":"text/plain"}, _: { - client: {start:"_app/immutable/entry/start.Pw0JximK.js",app:"_app/immutable/entry/app.CwJugxOn.js",imports:["_app/immutable/entry/start.Pw0JximK.js","_app/immutable/chunks/Cf0F0xk3.js","_app/immutable/chunks/9VeCAWtE.js","_app/immutable/chunks/DhRmkkCw.js","_app/immutable/entry/app.CwJugxOn.js","_app/immutable/chunks/9VeCAWtE.js","_app/immutable/chunks/DdeFJgsq.js","_app/immutable/chunks/DhRmkkCw.js","_app/immutable/chunks/isM9luo4.js","_app/immutable/chunks/CQmILjMx.js","_app/immutable/chunks/BKqvpmVb.js","_app/immutable/chunks/C_hTd_0H.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false}, + client: {start:"_app/immutable/entry/start.DGxgsefr.js",app:"_app/immutable/entry/app.CiOJ5aSh.js",imports:["_app/immutable/entry/start.DGxgsefr.js","_app/immutable/chunks/B4kNhNlA.js","_app/immutable/chunks/9VeCAWtE.js","_app/immutable/chunks/DhRmkkCw.js","_app/immutable/entry/app.CiOJ5aSh.js","_app/immutable/chunks/9VeCAWtE.js","_app/immutable/chunks/DdeFJgsq.js","_app/immutable/chunks/DhRmkkCw.js","_app/immutable/chunks/isM9luo4.js","_app/immutable/chunks/CQmILjMx.js","_app/immutable/chunks/BKqvpmVb.js","_app/immutable/chunks/C_hTd_0H.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false}, nodes: [ __memo(() => import('./nodes/0.js')), __memo(() => import('./nodes/1.js')), diff --git a/packages/opal-web/.svelte-kit/output/server/nodes/1.js b/packages/opal-web/.svelte-kit/output/server/nodes/1.js index f0029ca..c89725a 100644 --- a/packages/opal-web/.svelte-kit/output/server/nodes/1.js +++ b/packages/opal-web/.svelte-kit/output/server/nodes/1.js @@ -3,6 +3,6 @@ export const index = 1; let component_cache; export const component = async () => component_cache ??= (await import('../entries/fallbacks/error.svelte.js')).default; -export const imports = ["_app/immutable/nodes/1.9OPHrp2H.js","_app/immutable/chunks/DdeFJgsq.js","_app/immutable/chunks/9VeCAWtE.js","_app/immutable/chunks/Cf0F0xk3.js","_app/immutable/chunks/DhRmkkCw.js"]; +export const imports = ["_app/immutable/nodes/1.8t4lX9Eb.js","_app/immutable/chunks/DdeFJgsq.js","_app/immutable/chunks/9VeCAWtE.js","_app/immutable/chunks/B4kNhNlA.js","_app/immutable/chunks/DhRmkkCw.js"]; export const stylesheets = []; export const fonts = []; diff --git a/packages/opal-web/.svelte-kit/vercel-tmp/manifest.js b/packages/opal-web/.svelte-kit/vercel-tmp/manifest.js index 743e2e0..989c537 100644 --- a/packages/opal-web/.svelte-kit/vercel-tmp/manifest.js +++ b/packages/opal-web/.svelte-kit/vercel-tmp/manifest.js @@ -10,7 +10,7 @@ return { assets: new Set(["client-metadata.json","logo/Opal.svg","robots.txt"]), mimeTypes: {".json":"application/json",".svg":"image/svg+xml",".txt":"text/plain"}, _: { - client: {start:"_app/immutable/entry/start.Pw0JximK.js",app:"_app/immutable/entry/app.CwJugxOn.js",imports:["_app/immutable/entry/start.Pw0JximK.js","_app/immutable/chunks/Cf0F0xk3.js","_app/immutable/chunks/9VeCAWtE.js","_app/immutable/chunks/DhRmkkCw.js","_app/immutable/entry/app.CwJugxOn.js","_app/immutable/chunks/9VeCAWtE.js","_app/immutable/chunks/DdeFJgsq.js","_app/immutable/chunks/DhRmkkCw.js","_app/immutable/chunks/isM9luo4.js","_app/immutable/chunks/CQmILjMx.js","_app/immutable/chunks/BKqvpmVb.js","_app/immutable/chunks/C_hTd_0H.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false}, + client: {start:"_app/immutable/entry/start.DGxgsefr.js",app:"_app/immutable/entry/app.CiOJ5aSh.js",imports:["_app/immutable/entry/start.DGxgsefr.js","_app/immutable/chunks/B4kNhNlA.js","_app/immutable/chunks/9VeCAWtE.js","_app/immutable/chunks/DhRmkkCw.js","_app/immutable/entry/app.CiOJ5aSh.js","_app/immutable/chunks/9VeCAWtE.js","_app/immutable/chunks/DdeFJgsq.js","_app/immutable/chunks/DhRmkkCw.js","_app/immutable/chunks/isM9luo4.js","_app/immutable/chunks/CQmILjMx.js","_app/immutable/chunks/BKqvpmVb.js","_app/immutable/chunks/C_hTd_0H.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false}, nodes: [ __memo(() => import('../output/server/nodes/0.js')), __memo(() => import('../output/server/nodes/1.js')), diff --git a/packages/ui/src/lib/config/themes.config.ts b/packages/ui/src/lib/config/themes.config.ts index e4fd47e..0157d42 100644 --- a/packages/ui/src/lib/config/themes.config.ts +++ b/packages/ui/src/lib/config/themes.config.ts @@ -8,18 +8,11 @@ export interface ThemeDefinition { label: string; description: string; color: string; - category: 'neutral' | 'warm' | 'cool' | 'vibrant'; + category: 'neutral' | 'warm' | 'cool' | 'vibrant' | 'seasonal'; } export const THEMES: readonly ThemeDefinition[] = [ - // Neutral themes - { - value: 'sage', - label: 'Sage', - description: 'Calm green-blue', - color: 'oklch(77.77% 0.182 127.42)', - category: 'neutral' - }, + // ── Neutral ──────────────────────────────────────────────────── { value: 'monochrome', label: 'Monochrome', @@ -27,14 +20,7 @@ export const THEMES: readonly ThemeDefinition[] = [ color: 'oklch(78% 0 0)', category: 'neutral' }, - { - value: 'slate', - label: 'Slate', - description: 'Blue-grey', - color: 'oklch(78.5% 0.095 230)', - category: 'neutral' - }, - // Warm themes + // ── Warm ────────────────────────────────────────────────────── { value: 'ruby', label: 'Ruby', @@ -42,13 +28,6 @@ export const THEMES: readonly ThemeDefinition[] = [ color: 'oklch(81.5% 0.228 10)', category: 'warm' }, - { - value: 'coral', - label: 'Coral', - description: 'Orange-pink', - color: 'oklch(81.8% 0.212 20)', - category: 'warm' - }, { value: 'sunset', label: 'Sunset', @@ -57,13 +36,13 @@ export const THEMES: readonly ThemeDefinition[] = [ category: 'warm' }, { - value: 'amber', - label: 'Amber', - description: 'Bright yellow', - color: 'oklch(82.8% 0.195 85)', - category: 'warm' + value: 'lavender', + label: 'Lavender', + description: 'Soft purple', + color: 'oklch(82% 0.215 295)', + category: 'vibrant' }, - // Cool themes + // ── Cool ────────────────────────────────────────────────────── { value: 'forest', label: 'Forest', @@ -78,27 +57,71 @@ export const THEMES: readonly ThemeDefinition[] = [ color: 'oklch(79% 0.205 195)', category: 'cool' }, + // ── Vibrant ─────────────────────────────────────────────────── + { + value: 'rose', + label: 'Rose', + description: 'Pink-red', + color: 'oklch(83.5% 0.230 350)', + category: 'vibrant' + }, + // ── Seasonal: Wheel of the Year ──────────────────────────────── + // The Wheel flows: dark half → deep winter → frost → new life → fire → peak light → harvest → dark half { value: 'ocean', label: 'Ocean', - description: 'Deep blue', - color: 'oklch(78.2% 0.188 240)', - category: 'cool' + description: 'Samhain · deep, the veil thins', + color: 'oklch(42% 0.18 240)', + category: 'seasonal' }, - // Vibrant themes { - value: 'lavender', - label: 'Lavender', - description: 'Soft purple', - color: 'oklch(82% 0.215 295)', - category: 'vibrant' + value: 'slate', + label: 'Slate', + description: 'Yule · deepest dark, winter solstice', + color: 'oklch(60% 0.06 230)', + category: 'seasonal' }, { - value: 'rose', - label: 'Rose', - description: 'Pink-red', - color: 'oklch(83.5% 0.230 350)', - category: 'vibrant' + value: 'frost', + label: 'Frost', + description: 'Imbolc · pale, candlelit, stirrings', + color: 'oklch(86% 0.04 250)', + category: 'seasonal' + }, + { + value: 'sage', + label: 'Sage', + description: 'Ostara · green, new life, growth', + color: 'oklch(77.77% 0.182 127.42)', + category: 'seasonal' + }, + { + value: 'ember', + label: 'Ember', + description: 'Beltane · fire, summer begins', + color: 'oklch(70% 0.20 35)', + category: 'seasonal' + }, + { + value: 'amber', + label: 'Amber', + description: 'Litha · peak light, abundance', + color: 'oklch(82.8% 0.195 85)', + category: 'seasonal' + }, + { + value: 'copper', + label: 'Copper', + description: 'Lughnasadh · first harvest, grain', + color: 'oklch(68% 0.17 50)', + category: 'seasonal' + }, + { + value: 'rust', + label: 'Rust', + description: 'Mabon · autumn equinox, reflection', + color: 'oklch(55% 0.20 40)', + category: 'seasonal' } ] as const; @@ -109,7 +132,8 @@ export const CATEGORY_LABELS = { neutral: 'Neutral', warm: 'Warm', cool: 'Cool', - vibrant: 'Vibrant' + vibrant: 'Vibrant', + seasonal: 'Wheel of the Year' } as const; export const getThemesByCategory = () => { @@ -117,7 +141,8 @@ export const getThemesByCategory = () => { neutral: [], warm: [], cool: [], - vibrant: [] + vibrant: [], + seasonal: [] }; THEMES.forEach((theme) => { grouped[theme.category].push(theme); @@ -127,4 +152,4 @@ export const getThemesByCategory = () => { export const getTheme = (value: string): ThemeDefinition | undefined => { return THEMES.find((theme) => theme.value === value); -}; +}; \ No newline at end of file diff --git a/packages/ui/src/lib/stores/colorTheme.ts b/packages/ui/src/lib/stores/colorTheme.ts index 0a34acf..da85dc5 100644 --- a/packages/ui/src/lib/stores/colorTheme.ts +++ b/packages/ui/src/lib/stores/colorTheme.ts @@ -11,70 +11,77 @@ interface ColorThemeState { const STORAGE_KEY = 'color-theme'; +// Helper to find a theme by value +function tv(value: string): ThemeDefinition { + return THEMES.find((t) => t.value === value) ?? THEMES[0]; +} + /** * Wheel of the Year — northern hemisphere, traditional neopagan fixed dates. - * The eight sabbats: four solar (solstices/equinoxes) and four cross-quarter fire festivals. * - * | Sabbat | Traditional dates | Theme | - * |-------------|----------------------------|----------------| - * | Samhain | Oct 31 – Nov 1 | ocean (deep) | - * | Yule | Dec 20–23 | slate (cold) | - * | Imbolc | Feb 1–2 | sage (stirring)| - * | Ostara | Mar 19–21 | sage (growth) | - * | Beltane | Apr 30 – May 1 | amber (fire) | - * | Litha | Jun 20–22 | amber (light) | - * | Lughnasadh | Aug 1–2 | coral (harvest)| - * | Mabon | Sep 21–24 | coral (reflect)| + * Eight sabbats each have their own seasonal theme. Between sabbats, the + * theme follows the season in force, creating a smooth arc through the year: + * + * | Sabbat | Dates | Theme | Character | + * |-------------|--------------------|--------|-------------------------| + * | Samhain | Oct 31 – Nov 1 | ocean | dark half begins | + * | Yule | Dec 20–23 | slate | deepest dark | + * | Imbolc | Feb 1–2 | frost | candlelit stirrings | + * | Ostara | Mar 19–21 | sage | new life, growth | + * | Beltane | Apr 30 – May 1 | ember | fire, summer begins | + * | Litha | Jun 20–22 | amber | peak light, abundance | + * | Lughnasadh | Aug 1–2 | copper | first harvest | + * | Mabon | Sep 21–24 | rust | autumn equinox | * - * Between sabbats, the season in force applies (see the period table below). + * Between sabbats: + * - Nov 2 – Dec 19: dark half (ocean) + * - Dec 24 – Feb 18: deep winter (slate) + * - Mar 22 – Apr 29: spring (sage) + * - May 2 – Jun 19: early summer (ember) + * - Jun 23 – Aug 31: high summer (amber) + * - Sep 1 – Sep 20: late harvest (copper) + * - Sep 25 – Oct 30: autumn darkening (rust) */ function getSeasonalTheme(): ThemeDefinition { const now = new Date(); const month = now.getMonth(); // 0 = Jan const day = now.getDate(); - // ── Solar sabbats (solstice/equinox dates) ───────────────────── - if (month === 11 && day >= 20 && day <= 23) return THEMES.find((t) => t.value === 'slate') ?? THEMES[0]; // Yule - if (month === 2 && day >= 19 && day <= 21) return THEMES.find((t) => t.value === 'sage') ?? THEMES[0]; // Ostara - if (month === 5 && day >= 20 && day <= 22) return THEMES.find((t) => t.value === 'amber') ?? THEMES[0]; // Litha - if (month === 8 && day >= 21 && day <= 24) return THEMES.find((t) => t.value === 'coral') ?? THEMES[0]; // Mabon + // ── Solar sabbats ─────────────────────────────────────────── + if (month === 11 && day >= 20 && day <= 23) return tv('slate'); // Yule + if (month === 2 && day >= 19 && day <= 21) return tv('sage'); // Ostara + if (month === 5 && day >= 20 && day <= 22) return tv('amber'); // Litha + if (month === 8 && day >= 21 && day <= 24) return tv('rust'); // Mabon - // ── Cross-quarter fire festivals ──────────────────────────────── - if (month === 1 && day >= 1 && day <= 2) return THEMES.find((t) => t.value === 'sage') ?? THEMES[0]; // Imbolc - if (month === 3 && day === 30) return THEMES.find((t) => t.value === 'amber') ?? THEMES[0]; // Beltane eve - if (month === 4 && day === 1) return THEMES.find((t) => t.value === 'amber') ?? THEMES[0]; // Beltane - if (month === 7 && day >= 1 && day <= 2) return THEMES.find((t) => t.value === 'coral') ?? THEMES[0]; // Lughnasadh - if (month === 9 && day === 31) return THEMES.find((t) => t.value === 'ocean') ?? THEMES[0]; // Samhain - if (month === 10 && day === 1) return THEMES.find((t) => t.value === 'ocean') ?? THEMES[0]; // Samhain + // ── Cross-quarter fire festivals ────────────────────────── + if (month === 1 && day >= 1 && day <= 2) return tv('frost'); // Imbolc + if (month === 3 && day === 30) return tv('ember'); // Beltane eve + if (month === 4 && day === 1) return tv('ember'); // Beltane + if (month === 7 && day >= 1 && day <= 2) return tv('copper'); // Lughnasadh + if (month === 9 && day === 31) return tv('ocean'); // Samhain + if (month === 10 && day === 1) return tv('ocean'); // Samhain - // ── Between-sabbat periods ────────────────────────────────────── - // Jan 3 – Mar 18: deep winter — slate - if ((month === 0 && day > 2) || (month === 1 && day < 19) || (month === 2 && day < 19)) { - return THEMES.find((t) => t.value === 'slate') ?? THEMES[0]; - } - // Mar 22 – Apr 29: spring — sage - if ((month === 2 && day > 21) || month === 3) { - return THEMES.find((t) => t.value === 'sage') ?? THEMES[0]; - } - // May 2 – Jun 19: early summer — amber - if (month === 4 || (month === 5 && day < 20)) { - return THEMES.find((t) => t.value === 'amber') ?? THEMES[0]; - } - // Jun 23 – Sep 20: summer and harvest — coral - if ((month === 5 && day > 22) || month === 6 || month === 7 || (month === 8 && day < 21)) { - return THEMES.find((t) => t.value === 'coral') ?? THEMES[0]; - } - // Sep 25 – Oct 30: autumn darkening — coral - if (month === 8 || (month === 9 && day < 31)) { - return THEMES.find((t) => t.value === 'coral') ?? THEMES[0]; - } - // Nov 2 – Dec 19 + Dec 24+: the dark half — ocean - if (month === 10 || (month === 11 && day > 23)) { - return THEMES.find((t) => t.value === 'ocean') ?? THEMES[0]; - } + // ── Between-sabbat periods ─────────────────────────────────── + // Ordered by calendar position, no overlaps + // Nov 2 – Dec 19: the dark half + if (month === 10 || (month === 11 && day >= 2 && day < 20)) return tv('ocean'); + // Dec 24 – Feb 18: deep winter + if ((month === 11 && day >= 24) || month === 0 || (month === 1 && day < 1)) return tv('slate'); + // Feb 3 – Mar 18: winter waning toward spring + if (month === 1 || (month === 2 && day < 19)) return tv('slate'); + // Mar 22 – Apr 29: spring + if ((month === 2 && day > 21) || month === 3) return tv('sage'); + // May 2 – Jun 19: early summer + if (month === 4 || (month === 5 && day < 20)) return tv('ember'); + // Jun 23 – Aug 31: high summer + if ((month === 5 && day > 22) || month === 6 || month === 7) return tv('amber'); + // Sep 1 – Sep 20: late harvest + if (month === 7 || (month === 8 && day < 21)) return tv('copper'); + // Sep 25 – Oct 30: autumn darkening + if (month === 8 || (month === 9 && day < 31)) return tv('rust'); // Fallback - return THEMES.find((t) => t.value === DEFAULT_THEME) ?? THEMES[0]; + return tv(DEFAULT_THEME); } function createColorThemeStore() { @@ -90,9 +97,8 @@ function createColorThemeStore() { if (!browser) return; const stored = localStorage.getItem(STORAGE_KEY) as ColorTheme | null; - const hasUserChoice = stored !== null; - if (hasUserChoice) { + if (stored) { update((state) => ({ ...state, current: stored as ColorTheme, mounted: true })); applyTheme(stored as ColorTheme); } else {