xote 4.12.0 → 4.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -11,6 +11,7 @@ Xote is a lightweight UI library for ReScript that combines fine-grained reactiv
11
11
  - **Signal-based Reactivity**: Powered by [rescript-signals](https://github.com/brnrdog/rescript-signals) for automatic dependency tracking
12
12
  - **Fine-grained Updates**: Direct DOM manipulation without virtual DOM diffing
13
13
  - **Signal-based Router**: SPA navigation with pattern matching and dynamic parameters
14
+ - **Server-Side Rendering**: SSR with hydration and automatic state transfer
14
15
  - **Lightweight**: Minimal runtime footprint
15
16
  - **Type-safe**: Full ReScript type safety throughout
16
17
 
@@ -110,6 +111,94 @@ All reactive primitives feature automatic dependency tracking - no manual subscr
110
111
  - **Navigation links**: Use `Router.link()` for SPA navigation without page reload
111
112
  - **Reactive location**: Access current route via `Router.location` signal
112
113
 
114
+ ## Server-Side Rendering (SSR)
115
+
116
+ Xote supports server-side rendering with hydration. The same component code runs on both server and client, with the server rendering HTML and the client attaching reactivity to the existing DOM.
117
+
118
+ ### Basic SSR Setup
119
+
120
+ **Shared component** (`App.res`):
121
+ ```rescript
122
+ open Xote
123
+
124
+ let makeAppState = () => {
125
+ // SSRState.make creates a signal that syncs between server and client
126
+ let count = SSRState.make("count", 0, SSRState.Codec.int)
127
+ let items = SSRState.make("items", ["Apple", "Banana"], SSRState.Codec.array(SSRState.Codec.string))
128
+ (count, items)
129
+ }
130
+
131
+ let app = (count, items) => () => {
132
+ <div>
133
+ <p> {Component.textSignal(() => `Count: ${Signal.get(count)->Int.toString}`)} </p>
134
+ <button onClick={_ => Signal.update(count, n => n + 1)}>
135
+ {Component.text("+")}
136
+ </button>
137
+ </div>
138
+ }
139
+ ```
140
+
141
+ **Server entry** (`server.res`):
142
+ ```rescript
143
+ open Xote
144
+
145
+ let (count, items) = App.makeAppState()
146
+ let appComponent = App.app(count, items)
147
+
148
+ let html = SSR.renderDocument(
149
+ ~head="<title>My App</title>",
150
+ ~scripts=["./client.res.mjs"],
151
+ ~stateScript=SSRState.generateScript(),
152
+ appComponent,
153
+ )
154
+
155
+ Console.log(html)
156
+ ```
157
+
158
+ **Client entry** (`client.res`):
159
+ ```rescript
160
+ open Xote
161
+
162
+ let (count, items) = App.makeAppState()
163
+ let appComponent = App.app(count, items)
164
+
165
+ Hydration.hydrateById(appComponent, "root")
166
+ ```
167
+
168
+ ### Running the SSR Example
169
+
170
+ ```bash
171
+ # Generate HTML
172
+ node server.res.mjs > index.html
173
+
174
+ # Serve with Vite (or any static server)
175
+ npx vite
176
+ ```
177
+
178
+ ### SSR Features
179
+
180
+ - **`SSR.renderToString`**: Render component to HTML string
181
+ - **`SSR.renderDocument`**: Render full HTML document with head, scripts, styles
182
+ - **`SSRState.make`**: Create signals that automatically sync between server and client
183
+ - **`SSRState.generateScript`**: Generate `<script>` tag with serialized state
184
+ - **`Hydration.hydrate`**: Attach reactivity to server-rendered DOM
185
+ - **`SSRContext.isServer` / `isClient`**: Environment detection for conditional logic
186
+
187
+ ### Built-in Codecs for State Serialization
188
+
189
+ ```rescript
190
+ SSRState.Codec.int
191
+ SSRState.Codec.float
192
+ SSRState.Codec.string
193
+ SSRState.Codec.bool
194
+ SSRState.Codec.array(itemCodec)
195
+ SSRState.Codec.option(itemCodec)
196
+ SSRState.Codec.dict(valueCodec)
197
+ SSRState.Codec.tuple2(codec1, codec2)
198
+ SSRState.Codec.tuple3(codec1, codec2, codec3)
199
+ SSRState.Codec.make(~encode, ~decode) // Custom codec
200
+ ```
201
+
113
202
  ## Examples
114
203
 
115
204
  Check some examples of applications built with Xote at https://brnrdog.github.io/xote/demos/.
package/dist/xote.cjs CHANGED
@@ -1 +1,17 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});let ne={contents:0};function Q(){return ne.contents=ne.contents+1|0,ne.contents}function Te(){return{first:void 0,last:void 0,version:0,compute:void 0,firstDep:void 0,lastDep:void 0,flags:0,level:0}}function Ye(e){return{first:void 0,last:void 0,version:0,compute:e,firstDep:void 0,lastDep:void 0,flags:1,level:0}}function Ze(e,t,n,r,i){return{id:e,kind:t,run:n,firstDep:void 0,lastDep:void 0,flags:1,level:0,name:r,backingSubs:i}}function ye(e){e.flags=e.flags&-2}function et(e){return(e.flags&2)!==0}function tt(e){e.flags=e.flags|2}function nt(e){e.flags=e.flags&-3}function we(e){return(e.flags&1)!==0}function rt(e){e.flags=e.flags|1}function ie(e){e.flags=e.flags&-2}function lt(e){e.flags=e.flags&-3}function U(e){return e.compute!==void 0}function Se(e,t){return{subs:e,observer:t,nextDep:void 0,prevDep:void 0,nextSub:void 0,prevSub:void 0}}function H(e,t){t.prevSub=e.last,t.nextSub=void 0;let n=e.last;n!==void 0?n.nextSub=t:e.first=t,e.last=t}function _e(e,t){t.prevDep=e.lastDep,t.nextDep=void 0;let n=e.lastDep;n!==void 0?n.nextDep=t:e.firstDep=t,e.lastDep=t}function De(e){let t=e.subs,n=e.prevSub;n!==void 0?n.nextSub=e.nextSub:t.first=e.nextSub;let r=e.nextSub;r!==void 0?r.prevSub=e.prevSub:t.last=e.prevSub,e.prevSub=void 0,e.nextSub=void 0}function ke(e){let t=e.firstDep;for(;t!==void 0;){let n=t;if(n!==void 0){let r=n.nextDep;De(n),t=r}}e.firstDep=void 0,e.lastDep=void 0}function ue(e){let t=e.firstDep;for(;t!==void 0;){let n=t;if(n!==void 0){let r=n.nextDep;De(n),t=r}}e.firstDep=void 0,e.lastDep=void 0}function be(e,t){t.prevDep=e.lastDep,t.nextDep=void 0;let n=e.lastDep;n!==void 0?n.nextDep=t:e.firstDep=t,e.lastDep=t}function it(e){return e===void 0?{BS_PRIVATE_NESTED_SOME_NONE:0}:e!==null&&e.BS_PRIVATE_NESTED_SOME_NONE!==void 0?{BS_PRIVATE_NESTED_SOME_NONE:e.BS_PRIVATE_NESTED_SOME_NONE+1|0}:e}function ut(e){if(e!=null)return it(e)}function D(e){if(e===null||e.BS_PRIVATE_NESTED_SOME_NONE===void 0)return e;let t=e.BS_PRIVATE_NESTED_SOME_NONE;if(t!==0)return{BS_PRIVATE_NESTED_SOME_NONE:t-1|0}}function ot(e,t){return e!==void 0?D(e):t}let m={contents:void 0},S={contents:void 0},k=[],A=[],C={contents:!1},K=[],ve=(function(e){e.length=0});function at(e){if(!et(e)){tt(e),k.push(e);return}}function dt(e,t){if(e.firstDep===void 0){let l={subs:t,observer:e,nextDep:void 0,prevDep:void 0,nextSub:void 0,prevSub:void 0};return be(e,l),H(t,l)}let n=!1,r=e.firstDep;for(;r!==void 0&&!n;){let l=r;l!==void 0&&(l.subs===t?n=!0:r=l.nextDep)}if(n)return;let i={subs:t,observer:e,nextDep:void 0,prevDep:void 0,nextSub:void 0,prevSub:void 0};be(e,i),H(t,i)}function ct(e,t){if(e.firstDep===void 0){let l=Se(t,e);return _e(e,l),H(t,l)}let n=!1,r=e.firstDep;for(;r!==void 0&&!n;){let l=r;l!==void 0&&(l.subs===t?n=!0:r=l.nextDep)}if(n)return;let i=Se(t,e);_e(e,i),H(t,i)}function st(e){let t=m.contents;if(t!==void 0)return dt(t,e);let n=S.contents;if(n!==void 0)return ct(n,e)}function ft(e,t){return e.level-t.level|0}function pt(e,t){return e.level-t.level|0}function Ce(e){let t=0,n=e.firstDep;for(;n!==void 0;){let r=n;r!==void 0&&(U(r.subs)&&r.subs.level>t&&(t=r.subs.level),n=r.nextDep)}return t+1|0}function xe(e){let t=0,n=e.firstDep;for(;n!==void 0;){let r=n;r!==void 0&&(U(r.subs)&&r.subs.level>t&&(t=r.subs.level),n=r.nextDep)}return t+1|0}function mt(e){let t=e.level;ue(e),lt(e);let n=m.contents;m.contents=e;try{let r=e.compute;r!==void 0&&r(),ie(e),m.contents=n}catch(r){throw m.contents=n,r}if(t===0){e.level=Ce(e);return}}function ht(e){let t=e.level;ke(e),nt(e);let n=S.contents;S.contents=e;try{e.run(),ye(e),S.contents=n}catch(r){throw S.contents=n,r}if(t===0){e.level=xe(e);return}}function Ae(){C.contents=!0;try{for(;k.length!==0||A.length!==0;){if(A.length!==0){A.sort(pt);let e=A.slice();ve(A),e.forEach(mt)}if(k.length!==0){k.sort(ft);let e=k.slice();ve(k),e.forEach(ht)}}C.contents=!1;return}catch(e){throw C.contents=!1,e}}function gt(e){for(K.push(e);K.length!==0;){let t=K.pop();if(t!==void 0){let n=t.first;for(;n!==void 0;){let r=n;if(r!==void 0){let i=r.observer;U(i)?we(i)||(rt(i),K.push(i)):at(r.observer),n=r.nextSub}}}}if((k.length!==0||A.length!==0)&&!C.contents)return Ae()}function $e(e){if(!(U(e)&&we(e)))return;let t=e.level;ue(e);let n=m.contents;m.contents=e;try{let r=e.compute;r!==void 0&&r(),ie(e),m.contents=n}catch(r){throw m.contents=n,r}if(t===0){e.level=Ce(e);return}}function St(e){let t=C.contents;C.contents=!0;try{let n=e();return t||(C.contents=!1,(k.length!==0||A.length!==0)&&Ae()),n}catch(n){throw t||(C.contents=!1),n}}function _t(e){let t=m.contents,n=S.contents;m.contents=void 0,S.contents=void 0;try{let r=e();return m.contents=t,S.contents=n,r}catch(r){throw m.contents=t,S.contents=n,r}}function bt(e,t,n){return{id:Q(),value:e,equals:ot(n,(i,l)=>i===l),name:t,subs:Te()}}function vt(e,t){return{id:Q(),value:e,equals:(r,i)=>!1,name:t,subs:Te()}}function Et(e){return $e(e.subs),st(e.subs),e.value}function Tt(e){return $e(e.subs),e.value}function Pe(e,t){let n;try{n=!e.equals(e.value,t)}catch{n=!0}if(n)return e.value=t,e.subs.version=e.subs.version+1|0,gt(e.subs)}function yt(e,t){Pe(e,t(e.value))}let wt,Dt,kt,Ct=St,xt=_t;const At=Object.freeze(Object.defineProperty({__proto__:null,Core:kt,Id:wt,Scheduler:Dt,batch:Ct,get:Et,make:bt,makeForComputed:vt,peek:Tt,set:Pe,untrack:xt,update:yt},Symbol.toStringTag,{value:"Module"}));function $t(e,t){let n=Q(),r={contents:void 0},l=Ze(n,"Effect",()=>{let h=r.contents;h!==void 0&&h(),r.contents=e()},t,void 0),d=S.contents;S.contents=l;try{l.run(),ye(l),S.contents=d}catch(h){throw S.contents=d,h}l.level=xe(l);let c={contents:!1};return{dispose:()=>{if(c.contents)return;c.contents=!0;let h=r.contents;h!==void 0&&h(),ke(l)}}}let Pt,Ot,Rt;const Nt=Object.freeze(Object.defineProperty({__proto__:null,Core:Ot,Id:Pt,Scheduler:Rt,run:$t},Symbol.toStringTag,{value:"Module"}));function Gt(e,t){let n=Q(),r={contents:void 0},l=Ye(()=>{r.contents.value=e()}),d=m.contents;m.contents=l;let c=e();m.contents=d;let f={id:n,value:c,equals:(h,se)=>!1,name:t,subs:l};return r.contents=f,ie(l),f}function It(e){ue(e.subs)}let Lt,jt,Ft,Mt;const Bt=Object.freeze(Object.defineProperty({__proto__:null,Core:Ft,Id:Lt,Scheduler:Mt,Signal:jt,dispose:It,make:Gt},Symbol.toStringTag,{value:"Module"}));let u=At,g=Bt,w=Nt;function zt(e,t){let n=e.length,r=new Array(n),i=0;for(let l=0;l<n;++l){let d=e[l],c=t(d);c!==void 0&&(r[i]=D(c),i=i+1|0)}return r.length=i,r}function Vt(e,t){let n=0;for(;;){let r=n;if(r===e.length)return;let i=t(e[r]);if(i!==void 0)return i;n=r+1|0}}function Oe(e){return zt(e.split("/"),t=>{if(t!=="")return t.startsWith(":")?{TAG:"Param",_0:t.slice(1)}:{TAG:"Static",_0:t}})}function Re(e,t){let n=t.split("/").filter(l=>l!=="");if(e.length!==n.length)return"NoMatch";let r={};return e.every((l,d)=>{let c=n[d];return l.TAG==="Static"?c===l._0:(r[l._0]=c,!0)})?{TAG:"Match",_0:r}:"NoMatch"}function oe(e,t){return Re(Oe(e),t)}const Wt=Object.freeze(Object.defineProperty({__proto__:null,match:oe,matchPath:Re,parsePattern:Oe},Symbol.toStringTag,{value:"Module"}));function Kt(e,t){delete e[t]}function qt(e,t){return e!==void 0?D(e):t}function R(e,t,n){switch(t){case"checked":e.checked=n==="true";return;case"disabled":e.disabled=n==="true";return;case"aria-expanded":case"aria-hidden":case"aria-selected":case"multiple":case"readonly":case"required":break;case"value":e.value=n;return;default:e.setAttribute(t,n);return}n==="true"?e.setAttribute(t,""):e.removeAttribute(t)}let Xt={setAttrOrProp:R},q={contents:void 0};function Ht(){return{disposers:[],computeds:[]}}function N(e,t){let n=q.contents;q.contents=e;let r=t();return q.contents=n,r}function G(e,t){e.disposers.push(t)}function Ne(e){e.disposers.forEach(t=>t.dispose()),e.computeds.forEach(t=>g.dispose(t))}function I(e,t){e.__xote_owner__=t}function Ge(e){return ut(e.__xote_owner__)}let Qt={currentOwner:q,createOwner:Ht,runWithOwner:N,addDisposer:G,disposeOwner:Ne,setOwner:I,getOwner:Ge};function Ie(e,t){return[e,{TAG:"Static",_0:t}]}function Le(e,t){return[e,{TAG:"SignalValue",_0:t}]}function je(e,t){return[e,{TAG:"Compute",_0:t}]}let Ut={$$static:Ie,signal:Le,computed:je};function M(e){let t=Ge(e);t!==void 0&&Ne(t),Array.from(e.childNodes||[]).forEach(M)}function y(e){switch(e.TAG){case"Element":let t=e.children,n=e.events,r=e.attrs,i=document.createElement(e.tag),l={disposers:[],computeds:[]};return I(i,l),N(l,()=>{r.forEach(o=>{let p=o[1],v=o[0];switch(p.TAG){case"Static":return R(i,v,p._0);case"SignalValue":let E=p._0;R(i,v,u.peek(E));let T=w.run(()=>{R(i,v,u.get(E))},void 0);return G(l,T);case"Compute":let F=p._0;R(i,v,F());let O=w.run(()=>{R(i,v,F())},void 0);return G(l,O)}}),n.forEach(o=>{i.addEventListener(o[0],o[1])}),t.forEach(o=>{let p=y(o);i.appendChild(p)})}),i;case"Text":return document.createTextNode(e._0);case"SignalText":let d=e._0,c=document.createTextNode(u.peek(d)),f={disposers:[],computeds:[]};return I(c,f),N(f,()=>{let o=w.run(()=>{c.textContent=u.get(d)},void 0);G(f,o)}),c;case"Fragment":let h=document.createDocumentFragment();return e._0.forEach(o=>{let p=y(o);h.appendChild(p)}),h;case"SignalFragment":let se=e._0,J={disposers:[],computeds:[]},P=document.createElement("div");return P.setAttribute("style","display: contents"),I(P,J),N(J,()=>{let o=w.run(()=>{let p=u.get(se);Array.from(P.childNodes||[]).forEach(M),P.innerHTML="",p.forEach(E=>{let T=y(E);P.appendChild(T)})},void 0);G(J,o)}),P;case"LazyComponent":let fe={disposers:[],computeds:[]},qe=N(fe,e._0),pe=y(qe);return I(pe,fe),pe;case"KeyedList":let Y=e.renderItem,Z=e.keyFn,me=e.signal,ee={disposers:[],computeds:[]},te=document.createComment(" keyed-list-start "),j=document.createComment(" keyed-list-end ");I(te,ee);let x={},Xe=()=>{let o=j.parentNode;if(o==null)return;let p=u.get(me),v={};p.forEach(a=>{v[Z(a)]=a});let E=[];Object.keys(x).forEach(a=>{if(v[a]===void 0){E.push(a);return}}),E.forEach(a=>{let s=x[a];if(s!==void 0){M(s.element),s.element.remove(),Kt(x,a);return}});let T=[],F={};p.forEach(a=>{let s=Z(a),W=x[s];if(W!==void 0){if(W.item!==a){F[s]=!0;let Ue=Y(a),Je=y(Ue),ge={key:s,item:a,element:Je};T.push(ge),x[s]=ge;return}T.push(W);return}let He=Y(a),Qe=y(He),he={key:s,item:a,element:Qe};T.push(he),x[s]=he});let O={contents:te.nextSibling};T.forEach(a=>{let s=O.contents;if(s==null){o.insertBefore(a.element,j);return}if(s===j){o.insertBefore(a.element,j);return}if(s===a.element){O.contents=s.nextSibling;return}qt(F[a.key],!1)?(M(s),o.replaceChild(a.element,s),O.contents=a.element.nextSibling):(o.insertBefore(a.element,s),O.contents=a.element.nextSibling)})},V=document.createDocumentFragment();return V.appendChild(te),u.peek(me).forEach(o=>{let p=Z(o),v=Y(o),E=y(v),T={key:p,item:o,element:E};x[p]=T,V.appendChild(E)}),V.appendChild(j),N(ee,()=>{let o=w.run(()=>{Xe()},void 0);G(ee,o)}),V}}let Jt={disposeElement:M,render:y};function Yt(e){return{TAG:"Text",_0:e}}function Zt(e){return{TAG:"SignalText",_0:g.make(e,void 0)}}function en(e){return{TAG:"SignalText",_0:g.make(e,void 0)}}function tn(e){return{TAG:"SignalText",_0:g.make(()=>e().toString(),void 0)}}function nn(e){return{TAG:"SignalText",_0:g.make(()=>e().toString(),void 0)}}function rn(e){return{TAG:"Text",_0:e.toString()}}function ln(e){return{TAG:"Text",_0:e.toString()}}function un(e){return{TAG:"Fragment",_0:e}}function ae(e){return{TAG:"SignalFragment",_0:e}}function on(e,t){return{TAG:"SignalFragment",_0:g.make(()=>u.get(e).map(t),void 0)}}function an(e,t,n){return{TAG:"KeyedList",signal:e,keyFn:t,renderItem:n}}function b(e,t,n,r,i){let l=t!==void 0?t:[].map(f=>f),d=n!==void 0?n:[].map(f=>f),c=r!==void 0?r:[].map(f=>f);return{TAG:"Element",tag:e,attrs:l,events:d,children:c}}function dn(e,t,n,r){return b("div",e,t,n)}function cn(e,t,n,r){return b("span",e,t,n)}function sn(e,t,n,r){return b("button",e,t,n)}function fn(e,t,n){return b("input",e,t,void 0)}function pn(e,t,n,r){return b("h1",e,t,n)}function mn(e,t,n,r){return b("h2",e,t,n)}function hn(e,t,n,r){return b("h3",e,t,n)}function gn(e,t,n,r){return b("p",e,t,n)}function Sn(e,t,n,r){return b("ul",e,t,n)}function _n(e,t,n,r){return b("li",e,t,n)}function de(e,t,n,r){return b("a",e,t,n)}function bn(){return{TAG:"Text",_0:""}}function Fe(e,t){let n=y(e);t.appendChild(n)}function vn(e,t){let n=document.getElementById(t);if(n==null){console.error("Container element not found: "+t);return}else return Fe(e,n)}let B=Ie,re=Le,Me=je;const En=Object.freeze(Object.defineProperty({__proto__:null,$$null:bn,Attributes:Ut,DOM:Xt,Reactivity:Qt,Render:Jt,a:de,attr:B,button:sn,computedAttr:Me,div:dn,element:b,float:ln,fragment:un,h1:pn,h2:mn,h3:hn,input:fn,int:rn,keyedList:an,li:_n,list:on,mount:Fe,mountById:vn,p:gn,reactiveFloat:nn,reactiveInt:tn,reactiveString:en,signalAttr:re,signalFragment:ae,span:cn,text:Yt,textSignal:Zt,ul:Sn},Symbol.toStringTag,{value:"Module"}));function Tn(){return Symbol.for("xote.router.state")}function _(){let e=globalThis[Symbol.for("xote.router.state")];if(e!==void 0)return e;let t={location:u.make({pathname:"/",search:"",hash:""},void 0,void 0),basePath:{contents:"/"},initialized:!1,popStateHandler:void 0};return globalThis[Symbol.for("xote.router.state")]=t,t}function yn(){return _().location}function wn(){return _().basePath}function $(e){if(!_().initialized)return console.warn("[Xote Router] "+e+" called before Router.init(). Make sure to call Router.init() at your app entry point. This may cause incorrect routing behavior.")}function Be(e){if(e===""||e==="/")return"/";let t=e.startsWith("/")?e:"/"+e;return t.endsWith("/")?t.slice(0,t.length-1|0):t}function ze(e){let t=_().basePath.contents;return t==="/"?e:e===t?"/":e.startsWith(t+"/")?e.slice(t.length):e}function z(e){let t=_().basePath.contents;return t==="/"?e:e==="/"?t:t+e}function le(){let e=window.location.pathname;return{pathname:ze(e),search:window.location.search,hash:window.location.hash}}function Dn(e,t){let n=e!==void 0?e:"/",r=_(),i=Be(n);if(r.basePath.contents=i,u.set(r.location,le()),r.initialized)return;let l=d=>u.set(_().location,le());r.popStateHandler=l,window.addEventListener("popstate",l),r.initialized=!0}function ce(e,t,n,r){let i=t!==void 0?t:"",l=n!==void 0?n:"";$("Router.push()");let d={pathname:e,search:i,hash:l},f=z(e)+i+l,h={};window.history.pushState(h,"",f),u.set(_().location,d)}function kn(e,t,n,r){let i=t!==void 0?t:"",l=n!==void 0?n:"";$("Router.replace()");let d={pathname:e,search:i,hash:l},f=z(e)+i+l,h={};window.history.replaceState(h,"",f),u.set(_().location,d)}function Cn(e,t){return $("Router.route()"),ae(g.make(()=>{let n=u.get(_().location),r=oe(e,n.pathname);return typeof r!="object"?[]:[t(r._0)]},void 0))}function xn(e){return $("Router.routes()"),ae(g.make(()=>{let t=u.get(_().location),n=Vt(e,r=>{let i=oe(r.pattern,t.pathname);if(typeof i=="object")return r.render(i._0)});return n!==void 0?[n]:[]},void 0))}function An(e,t,n,r){let i=t!==void 0?t:[],l=n!==void 0?n:[];$("Router.link()");let d=c=>{c.preventDefault(),ce(e,void 0,void 0)};return de(i.concat([B("href",z(e))]),[["click",d]],l)}function Ve(e){return e&&typeof e=="object"&&"TAG"in e&&(e.TAG==="Static"||e.TAG==="Reactive")}function L(e,t){return Ve(t)?t.TAG==="Reactive"?re(e,t._0):B(e,t._0):typeof t=="function"?Me(e,t):typeof t=="object"?re(e,t):B(e,t)}function We(e){let t=[],n=e.class;n!==void 0&&t.push(L("class",D(n)));let r=e.id;r!==void 0&&t.push(L("id",D(r)));let i=e.style;i!==void 0&&t.push(L("style",D(i)));let l=e.target;l!==void 0&&t.push(L("target",D(l)));let d=e["aria-label"];return d!==void 0&&t.push(L("aria-label",D(d))),t}function Ke(e){let t=e.children;return t!==void 0?t.TAG==="Fragment"?t._0:[t]:[]}function X(e){$("Router.Link");let t=n=>{n.preventDefault(),ce(e.to,void 0,void 0);let r=e.onClick;if(r!==void 0)return r(n)};return de(We(e).concat([B("href",z(e.to))]),[["click",t]],Ke(e))}function Ee(e,t,n){return X(e)}let $n={ReactiveProp:void 0,isReactiveProp:Ve,convertAttrValue:L,propsToAttrs:We,getChildren:Ke,make:X,jsx:X,jsxs:X,jsxKeyed:Ee,jsxsKeyed:Ee},Pn,On;const Rn=Object.freeze(Object.defineProperty({__proto__:null,Component:Pn,Link:$n,Route:On,addBasePath:z,basePath:wn,getCurrentLocation:le,getGlobalState:_,getSymbolKey:Tn,init:Dn,link:An,location:yn,normalizeBasePath:Be,push:ce,replace:kn,route:Cn,routes:xn,stripBasePath:ze,warnIfNotInitialized:$},Symbol.toStringTag,{value:"Module"}));function Nn(e){return e.TAG==="Reactive"?u.get(e._0):e._0}function Gn(e){return{TAG:"Static",_0:e}}function In(e){return{TAG:"Reactive",_0:e}}const Ln=Object.freeze(Object.defineProperty({__proto__:null,$$static:Gn,get:Nn,reactive:In},Symbol.toStringTag,{value:"Module"}));let jn=u.Id,Fn=u.Scheduler,Mn=u.Core,Bn=u.make,zn=u.makeForComputed,Vn=u.get,Wn=u.peek,Kn=u.set,qn=u.update,Xn=u.batch,Hn=u.untrack,Qn={Id:jn,Scheduler:Fn,Core:Mn,make:Bn,makeForComputed:zn,get:Vn,peek:Wn,set:Kn,update:qn,batch:Xn,untrack:Hn},Un=g.Id,Jn=g.Signal,Yn=g.Core,Zn=g.Scheduler,er=g.make,tr=g.dispose,nr={Id:Un,Signal:Jn,Core:Yn,Scheduler:Zn,make:er,dispose:tr},rr=w.Id,lr=w.Core,ir=w.Scheduler,ur=w.run,or={Id:rr,Core:lr,Scheduler:ir,run:ur},ar=En,dr=Wt,cr=Rn,sr=Ln;exports.Component=ar;exports.Computed=nr;exports.Effect=or;exports.ReactiveProp=sr;exports.Route=dr;exports.Router=cr;exports.Signal=Qn;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});let Re={contents:0};function $e(){return Re.contents=Re.contents+1|0,Re.contents}function tt(){return{first:void 0,last:void 0,version:0,compute:void 0,firstDep:void 0,lastDep:void 0,flags:0,level:0}}function Qt(e){return{first:void 0,last:void 0,version:0,compute:e,firstDep:void 0,lastDep:void 0,flags:1,level:0}}function Zt(e,t,n,r,l){return{id:e,kind:t,run:n,firstDep:void 0,lastDep:void 0,flags:1,level:0,name:r,backingSubs:l}}function nt(e){e.flags=e.flags&-2}function en(e){return(e.flags&2)!==0}function tn(e){e.flags=e.flags|2}function nn(e){e.flags=e.flags&-3}function rt(e){return(e.flags&1)!==0}function rn(e){e.flags=e.flags|1}function Ie(e){e.flags=e.flags&-2}function ln(e){e.flags=e.flags&-3}function Ae(e){return e.compute!==void 0}function Ue(e,t){return{subs:e,observer:t,nextDep:void 0,prevDep:void 0,nextSub:void 0,prevSub:void 0}}function Te(e,t){t.prevSub=e.last,t.nextSub=void 0;let n=e.last;n!==void 0?n.nextSub=t:e.first=t,e.last=t}function Je(e,t){t.prevDep=e.lastDep,t.nextDep=void 0;let n=e.lastDep;n!==void 0?n.nextDep=t:e.firstDep=t,e.lastDep=t}function lt(e){let t=e.subs,n=e.prevSub;n!==void 0?n.nextSub=e.nextSub:t.first=e.nextSub;let r=e.nextSub;r!==void 0?r.prevSub=e.prevSub:t.last=e.prevSub,e.prevSub=void 0,e.nextSub=void 0}function it(e){let t=e.firstDep;for(;t!==void 0;){let n=t;if(n!==void 0){let r=n.nextDep;lt(n),t=r}}e.firstDep=void 0,e.lastDep=void 0}function Ne(e){let t=e.firstDep;for(;t!==void 0;){let n=t;if(n!==void 0){let r=n.nextDep;lt(n),t=r}}e.firstDep=void 0,e.lastDep=void 0}function Qe(e,t){t.prevDep=e.lastDep,t.nextDep=void 0;let n=e.lastDep;n!==void 0?n.nextDep=t:e.firstDep=t,e.lastDep=t}function ee(e){return e===void 0?{BS_PRIVATE_NESTED_SOME_NONE:0}:e!==null&&e.BS_PRIVATE_NESTED_SOME_NONE!==void 0?{BS_PRIVATE_NESTED_SOME_NONE:e.BS_PRIVATE_NESTED_SOME_NONE+1|0}:e}function Ge(e){if(e!=null)return ee(e)}function g(e){if(e===null||e.BS_PRIVATE_NESTED_SOME_NONE===void 0)return e;let t=e.BS_PRIVATE_NESTED_SOME_NONE;if(t!==0)return{BS_PRIVATE_NESTED_SOME_NONE:t-1|0}}function un(e,t){return e!==void 0?g(e):t}let C={contents:void 0},F={contents:void 0},V=[],Z=[],q={contents:!1},Ee=[],Ze=(function(e){e.length=0});function on(e){if(!en(e)){tn(e),V.push(e);return}}function dn(e,t){if(e.firstDep===void 0){let i={subs:t,observer:e,nextDep:void 0,prevDep:void 0,nextSub:void 0,prevSub:void 0};return Qe(e,i),Te(t,i)}let n=!1,r=e.firstDep;for(;r!==void 0&&!n;){let i=r;i!==void 0&&(i.subs===t?n=!0:r=i.nextDep)}if(n)return;let l={subs:t,observer:e,nextDep:void 0,prevDep:void 0,nextSub:void 0,prevSub:void 0};Qe(e,l),Te(t,l)}function cn(e,t){if(e.firstDep===void 0){let i=Ue(t,e);return Je(e,i),Te(t,i)}let n=!1,r=e.firstDep;for(;r!==void 0&&!n;){let i=r;i!==void 0&&(i.subs===t?n=!0:r=i.nextDep)}if(n)return;let l=Ue(t,e);Je(e,l),Te(t,l)}function an(e){let t=C.contents;if(t!==void 0)return dn(t,e);let n=F.contents;if(n!==void 0)return cn(n,e)}function sn(e,t){return e.level-t.level|0}function fn(e,t){return e.level-t.level|0}function ut(e){let t=0,n=e.firstDep;for(;n!==void 0;){let r=n;r!==void 0&&(Ae(r.subs)&&r.subs.level>t&&(t=r.subs.level),n=r.nextDep)}return t+1|0}function ot(e){let t=0,n=e.firstDep;for(;n!==void 0;){let r=n;r!==void 0&&(Ae(r.subs)&&r.subs.level>t&&(t=r.subs.level),n=r.nextDep)}return t+1|0}function pn(e){let t=e.level;Ne(e),ln(e);let n=C.contents;C.contents=e;try{let r=e.compute;r!==void 0&&r(),Ie(e),C.contents=n}catch(r){throw C.contents=n,r}if(t===0){e.level=ut(e);return}}function mn(e){let t=e.level;it(e),nn(e);let n=F.contents;F.contents=e;try{e.run(),nt(e),F.contents=n}catch(r){throw F.contents=n,r}if(t===0){e.level=ot(e);return}}function dt(){q.contents=!0;try{for(;V.length!==0||Z.length!==0;){if(Z.length!==0){Z.sort(fn);let e=Z.slice();Ze(Z),e.forEach(pn)}if(V.length!==0){V.sort(sn);let e=V.slice();Ze(V),e.forEach(mn)}}q.contents=!1;return}catch(e){throw q.contents=!1,e}}function hn(e){for(Ee.push(e);Ee.length!==0;){let t=Ee.pop();if(t!==void 0){let n=t.first;for(;n!==void 0;){let r=n;if(r!==void 0){let l=r.observer;Ae(l)?rt(l)||(rn(l),Ee.push(l)):on(r.observer),n=r.nextSub}}}}if((V.length!==0||Z.length!==0)&&!q.contents)return dt()}function ct(e){if(!(Ae(e)&&rt(e)))return;let t=e.level;Ne(e);let n=C.contents;C.contents=e;try{let r=e.compute;r!==void 0&&r(),Ie(e),C.contents=n}catch(r){throw C.contents=n,r}if(t===0){e.level=ut(e);return}}function gn(e){let t=q.contents;q.contents=!0;try{let n=e();return t||(q.contents=!1,(V.length!==0||Z.length!==0)&&dt()),n}catch(n){throw t||(q.contents=!1),n}}function Sn(e){let t=C.contents,n=F.contents;C.contents=void 0,F.contents=void 0;try{let r=e();return C.contents=t,F.contents=n,r}catch(r){throw C.contents=t,F.contents=n,r}}function _n(e,t,n){return{id:$e(),value:e,equals:un(n,(l,i)=>l===i),name:t,subs:tt()}}function yn(e,t){return{id:$e(),value:e,equals:(r,l)=>!1,name:t,subs:tt()}}function bn(e){return ct(e.subs),an(e.subs),e.value}function En(e){return ct(e.subs),e.value}function at(e,t){let n;try{n=!e.equals(e.value,t)}catch{n=!0}if(n)return e.value=t,e.subs.version=e.subs.version+1|0,hn(e.subs)}function wn(e,t){at(e,t(e.value))}let kn,Tn,vn,$n=gn,An=Sn;const xn=Object.freeze(Object.defineProperty({__proto__:null,Core:vn,Id:kn,Scheduler:Tn,batch:$n,get:bn,make:_n,makeForComputed:yn,peek:En,set:at,untrack:An,update:wn},Symbol.toStringTag,{value:"Module"}));function Cn(e,t){let n=$e(),r={contents:void 0},i=Zt(n,"Effect",()=>{let E=r.contents;E!==void 0&&E(),r.contents=e()},t,void 0),u=F.contents;F.contents=i;try{i.run(),nt(i),F.contents=u}catch(E){throw F.contents=u,E}i.level=ot(i);let c={contents:!1};return{dispose:()=>{if(c.contents)return;c.contents=!0;let E=r.contents;E!==void 0&&E(),it(i)}}}let On,Dn,Pn;const Rn=Object.freeze(Object.defineProperty({__proto__:null,Core:Dn,Id:On,Scheduler:Pn,run:Cn},Symbol.toStringTag,{value:"Module"}));function Mn(e,t){let n=$e(),r={contents:void 0},i=Qt(()=>{r.contents.value=e()}),u=C.contents;C.contents=i;let c=e();C.contents=u;let f={id:n,value:c,equals:(E,R)=>!1,name:t,subs:i};return r.contents=f,Ie(i),f}function jn(e){Ne(e.subs)}let Fn,Ln,In,Nn;const Gn=Object.freeze(Object.defineProperty({__proto__:null,Core:In,Id:Fn,Scheduler:Nn,Signal:Ln,dispose:jn,make:Mn},Symbol.toStringTag,{value:"Module"}));let d=xn,P=Gn,T=Rn;function J(e){return e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#x27;")}let ze=["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"];function zn(e){return ze.includes(e)}let st={escape:J,voidElements:ze,isVoidElement:zn},ft="<!--$-->",pt="<!--/$-->",mt="<!--#-->",ht="<!--/#-->",gt="<!--kl-->",St="<!--/kl-->";function _t(e){return"<!--k:"+e+"-->"}let yt="<!--/k-->",bt="<!--lc-->",Et="<!--/lc-->",Bn={signalTextStart:ft,signalTextEnd:pt,signalFragmentStart:mt,signalFragmentEnd:ht,keyedListStart:gt,keyedListEnd:St,keyedItemStart:_t,keyedItemEnd:yt,lazyComponentStart:bt,lazyComponentEnd:Et};function wt(e){let t=e[1],n=e[0],r;switch(t.TAG){case"Static":r=t._0;break;case"SignalValue":r=d.peek(t._0);break;case"Compute":r=t._0();break}switch(n){case"aria-expanded":case"aria-hidden":case"aria-selected":case"checked":case"disabled":case"multiple":case"readonly":case"required":break;default:return n+'="'+J(r)+'"'}return r==="true"?n:""}function kt(e){let t=e.map(wt).filter(n=>n!=="");return t.length>0?" "+t.join(" "):""}let Wn={renderAttr:wt,renderAttrs:kt};function K(e){switch(e.TAG){case"Element":let t=e.tag,n=kt(e.attrs);if(ze.includes(t))return"<"+t+n+" />";let r=e.children.map(K).join("");return"<"+t+n+">"+r+"</"+t+">";case"Text":return J(e._0);case"SignalText":let l=d.peek(e._0);return ft+J(l)+pt;case"Fragment":return e._0.map(K).join("");case"SignalFragment":let u=d.peek(e._0).map(K).join("");return mt+u+ht;case"LazyComponent":let c=e._0();return bt+K(c)+Et;case"KeyedList":let f=e.renderItem,E=e.keyFn,O=d.peek(e.signal).map(x=>{let G=E(x),v=K(f(x));return _t(G)+v+yt}).join("");return gt+O+St}}function Tt(e,t){return K(e())}function Hn(e,t,n){let r=t!==void 0?t:"root",l=e(),i=K(l);return"<!--xote-root:"+r+"-->"+i+"<!--/xote-root-->"}function vt(e){return"<script"+(e!==void 0?' nonce="'+J(e)+'"':"")+">window.__XOTE_HYDRATED__=false;<\/script>"}function Xn(e,t,n,r,l,i,u){let c=e!==void 0?e:"",f=t!==void 0?t:"",E=n!==void 0?n:[],R=r!==void 0?r:[],O=l!==void 0?l:"",x=Tt(u),G=vt(i),v=R.map(M=>'<link rel="stylesheet" href="'+J(M)+'" />').join(`
2
+ `),z=E.map(M=>{let L=i!==void 0?' nonce="'+J(i)+'"':"";return'<script type="module" src="'+J(M)+'"'+L+"><\/script>"}).join(`
3
+ `);return`<!DOCTYPE html>
4
+ <html>
5
+ <head>
6
+ <meta charset="UTF-8" />
7
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
8
+ `+v+`
9
+ `+c+`
10
+ </head>
11
+ <body`+(f!==""?" "+f:"")+`>
12
+ <div id="root">`+x+`</div>
13
+ `+O+`
14
+ `+G+`
15
+ `+z+`
16
+ </body>
17
+ </html>`}let Vn;const Kn=Object.freeze(Object.defineProperty({__proto__:null,Attributes:Wn,Component:Vn,Html:st,Markers:Bn,generateHydrationScript:vt,renderDocument:Xn,renderNodeToString:K,renderToString:Tt,renderToStringWithRoot:Hn},Symbol.toStringTag,{value:"Module"}));function $t(e,t){let n=e.length,r=new Array(n),l=0;for(let i=0;i<n;++i){let u=e[i],c=t(u);c!==void 0&&(r[l]=g(c),l=l+1|0)}return r.length=l,r}function Yn(e,t){let n=0;for(;;){let r=n;if(r===e.length)return;let l=t(e[r]);if(l!==void 0)return l;n=r+1|0}}function At(e){return $t(e.split("/"),t=>{if(t!=="")return t.startsWith(":")?{TAG:"Param",_0:t.slice(1)}:{TAG:"Static",_0:t}})}function xt(e,t){let n=t.split("/").filter(i=>i!=="");if(e.length!==n.length)return"NoMatch";let r={};return e.every((i,u)=>{let c=n[u];return i.TAG==="Static"?c===i._0:(r[i._0]=c,!0)})?{TAG:"Match",_0:r}:"NoMatch"}function Be(e,t){return xt(At(e),t)}const qn=Object.freeze(Object.defineProperty({__proto__:null,match:Be,matchPath:xt,parsePattern:At},Symbol.toStringTag,{value:"Module"}));function We(e,t){delete e[t]}function Un(e,t){if(e!==void 0)return ee(t(g(e)))}function U(e,t){return e!==void 0?g(e):t}function Jn(e){return e!==void 0}function ie(e,t,n){switch(t){case"checked":e.checked=n==="true";return;case"disabled":e.disabled=n==="true";return;case"aria-expanded":case"aria-hidden":case"aria-selected":case"multiple":case"readonly":case"required":break;case"value":e.value=n;return;default:e.setAttribute(t,n);return}n==="true"?e.setAttribute(t,""):e.removeAttribute(t)}let fe={setAttrOrProp:ie},we={contents:void 0};function Qn(){return{disposers:[],computeds:[]}}function ue(e,t){let n=we.contents;we.contents=e;let r=t();return we.contents=n,r}function oe(e,t){e.disposers.push(t)}function Ct(e){e.disposers.forEach(t=>t.dispose()),e.computeds.forEach(t=>P.dispose(t))}function de(e,t){e.__xote_owner__=t}function Ot(e){return Ge(e.__xote_owner__)}let s={currentOwner:we,createOwner:Qn,runWithOwner:ue,addDisposer:oe,disposeOwner:Ct,setOwner:de,getOwner:Ot};function Dt(e,t){return[e,{TAG:"Static",_0:t}]}function Pt(e,t){return[e,{TAG:"SignalValue",_0:t}]}function Rt(e,t){return[e,{TAG:"Compute",_0:t}]}let Zn={$$static:Dt,signal:Pt,computed:Rt};function se(e){let t=Ot(e);t!==void 0&&Ct(t),Array.from(e.childNodes||[]).forEach(se)}function H(e){switch(e.TAG){case"Element":let t=e.children,n=e.events,r=e.attrs,l=document.createElement(e.tag),i={disposers:[],computeds:[]};return de(l,i),ue(i,()=>{r.forEach(a=>{let m=a[1],y=a[0];switch(m.TAG){case"Static":return ie(l,y,m._0);case"SignalValue":let k=m._0;ie(l,y,d.peek(k));let A=T.run(()=>{ie(l,y,d.get(k))},void 0);return oe(i,A);case"Compute":let W=m._0;ie(l,y,W());let p=T.run(()=>{ie(l,y,W())},void 0);return oe(i,p)}}),n.forEach(a=>{l.addEventListener(a[0],a[1])}),t.forEach(a=>{let m=H(a);l.appendChild(m)})}),l;case"Text":return document.createTextNode(e._0);case"SignalText":let u=e._0,c=document.createTextNode(d.peek(u)),f={disposers:[],computeds:[]};return de(c,f),ue(f,()=>{let a=T.run(()=>{c.textContent=d.get(u)},void 0);oe(f,a)}),c;case"Fragment":let E=document.createDocumentFragment();return e._0.forEach(a=>{let m=H(a);E.appendChild(m)}),E;case"SignalFragment":let R=e._0,O={disposers:[],computeds:[]},x=document.createElement("div");return x.setAttribute("style","display: contents"),de(x,O),ue(O,()=>{let a=T.run(()=>{let m=d.get(R);Array.from(x.childNodes||[]).forEach(se),x.innerHTML="",m.forEach(k=>{let A=H(k);x.appendChild(A)})},void 0);oe(O,a)}),x;case"LazyComponent":let G={disposers:[],computeds:[]},v=ue(G,e._0),z=H(v);return de(z,G),z;case"KeyedList":let M=e.renderItem,L=e.keyFn,D=e.signal,B={disposers:[],computeds:[]},re=document.createComment(" keyed-list-start "),w=document.createComment(" keyed-list-end ");de(re,B);let _={},h=()=>{let a=w.parentNode;if(a==null)return;let m=d.get(D),y={};m.forEach(o=>{y[L(o)]=o});let k=[];Object.keys(_).forEach(o=>{if(y[o]===void 0){k.push(o);return}}),k.forEach(o=>{let b=_[o];if(b!==void 0){se(b.element),b.element.remove(),We(_,o);return}});let A=[],W={};m.forEach(o=>{let b=L(o),le=_[b];if(le!==void 0){if(le.item!==o){W[b]=!0;let Pe=M(o),be=H(Pe),qe={key:b,item:o,element:be};A.push(qe),_[b]=qe;return}A.push(le);return}let De=M(o),_e=H(De),ye={key:b,item:o,element:_e};A.push(ye),_[b]=ye});let p={contents:re.nextSibling};A.forEach(o=>{let b=p.contents;if(b==null){a.insertBefore(o.element,w);return}if(b===w){a.insertBefore(o.element,w);return}if(b===o.element){p.contents=b.nextSibling;return}U(W[o.key],!1)?(se(b),a.replaceChild(o.element,b),p.contents=o.element.nextSibling):(a.insertBefore(o.element,b),p.contents=o.element.nextSibling)})},S=document.createDocumentFragment();return S.appendChild(re),d.peek(D).forEach(a=>{let m=L(a),y=M(a),k=H(y),A={key:m,item:a,element:k};_[m]=A,S.appendChild(k)}),S.appendChild(w),ue(B,()=>{let a=T.run(()=>{h()},void 0);oe(B,a)}),S}}let Y={disposeElement:se,render:H};function er(e){return{TAG:"Text",_0:e}}function tr(e){return{TAG:"SignalText",_0:P.make(e,void 0)}}function nr(e){return{TAG:"SignalText",_0:P.make(e,void 0)}}function rr(e){return{TAG:"SignalText",_0:P.make(()=>e().toString(),void 0)}}function lr(e){return{TAG:"SignalText",_0:P.make(()=>e().toString(),void 0)}}function ir(e){return{TAG:"Text",_0:e.toString()}}function ur(e){return{TAG:"Text",_0:e.toString()}}function or(e){return{TAG:"Fragment",_0:e}}function He(e){return{TAG:"SignalFragment",_0:e}}function dr(e,t){return{TAG:"SignalFragment",_0:P.make(()=>d.get(e).map(t),void 0)}}function cr(e,t,n){return{TAG:"KeyedList",signal:e,keyFn:t,renderItem:n}}function N(e,t,n,r,l){let i=t!==void 0?t:[].map(f=>f),u=n!==void 0?n:[].map(f=>f),c=r!==void 0?r:[].map(f=>f);return{TAG:"Element",tag:e,attrs:i,events:u,children:c}}function ar(e,t,n,r){return N("div",e,t,n)}function sr(e,t,n,r){return N("span",e,t,n)}function fr(e,t,n,r){return N("button",e,t,n)}function pr(e,t,n){return N("input",e,t,void 0)}function mr(e,t,n,r){return N("h1",e,t,n)}function hr(e,t,n,r){return N("h2",e,t,n)}function gr(e,t,n,r){return N("h3",e,t,n)}function Sr(e,t,n,r){return N("p",e,t,n)}function _r(e,t,n,r){return N("ul",e,t,n)}function yr(e,t,n,r){return N("li",e,t,n)}function Xe(e,t,n,r){return N("a",e,t,n)}function br(){return{TAG:"Text",_0:""}}function Mt(e,t){let n=H(e);t.appendChild(n)}function Er(e,t){let n=document.getElementById(t);if(n==null){console.error("Container element not found: "+t);return}else return Mt(e,n)}let pe=Dt,je=Pt,jt=Rt;const wr=Object.freeze(Object.defineProperty({__proto__:null,$$null:br,Attributes:Zn,DOM:fe,Reactivity:s,Render:Y,a:Xe,attr:pe,button:fr,computedAttr:jt,div:ar,element:N,float:ur,fragment:or,h1:mr,h2:hr,h3:gr,input:pr,int:ir,keyedList:cr,li:yr,list:dr,mount:Mt,mountById:Er,p:Sr,reactiveFloat:lr,reactiveInt:rr,reactiveString:nr,signalAttr:je,signalFragment:He,span:sr,text:er,textSignal:tr,ul:_r},Symbol.toStringTag,{value:"Module"}));function kr(){return Symbol.for("xote.router.state")}function I(){let e=globalThis[Symbol.for("xote.router.state")];if(e!==void 0)return e;let t={location:d.make({pathname:"/",search:"",hash:""},void 0,void 0),basePath:{contents:"/"},initialized:!1,popStateHandler:void 0};return globalThis[Symbol.for("xote.router.state")]=t,t}function Tr(){return I().location}function vr(){return I().basePath}function te(e){if(!I().initialized)return console.warn("[Xote Router] "+e+" called before Router.init(). Make sure to call Router.init() at your app entry point. This may cause incorrect routing behavior.")}function Ft(e){if(e===""||e==="/")return"/";let t=e.startsWith("/")?e:"/"+e;return t.endsWith("/")?t.slice(0,t.length-1|0):t}function Lt(e){let t=I().basePath.contents;return t==="/"?e:e===t?"/":e.startsWith(t+"/")?e.slice(t.length):e}function he(e){let t=I().basePath.contents;return t==="/"?e:e==="/"?t:t+e}function It(){let e=window.scrollX||window.pageXOffset||0,t=window.scrollY||window.pageYOffset||0;return[e,t]}function xe(e,t){window.scrollTo(e,t)}function Nt(e,t){return{scrollX:e,scrollY:t}}function Ve(){return{}}function Gt(e){let t=e&&e.scrollX,n=e&&e.scrollY;if(t!=null&&n!=null)return[t,n]}function zt(){let e=It(),t=Nt(e[0],e[1]),n=window.location.href;window.history.replaceState(t,"",n)}function Fe(){let e=window.location.pathname;return{pathname:Lt(e),search:window.location.search,hash:window.location.hash}}function $r(e,t){let n=e!==void 0?e:"/",r=I(),l=Ft(n);if(r.basePath.contents=l,d.set(r.location,Fe()),r.initialized)return;let i=u=>{d.set(I().location,Fe());let c=window["history.state"];if(c==null)return;let f=Gt(c);if(f!==void 0)return xe(f[0],f[1])};r.popStateHandler=i,window.addEventListener("popstate",i),r.initialized=!0}function Ke(e,t,n,r){let l=t!==void 0?t:"",i=n!==void 0?n:"";te("Router.push()"),zt();let u={pathname:e,search:l,hash:i},f=he(e)+l+i;window.history.pushState(Ve(),"",f),d.set(I().location,u),xe(0,0)}function Ar(e,t,n,r){let l=t!==void 0?t:"",i=n!==void 0?n:"";te("Router.replace()");let u={pathname:e,search:l,hash:i},f=he(e)+l+i;window.history.replaceState(Ve(),"",f),d.set(I().location,u),xe(0,0)}function xr(e,t){return te("Router.route()"),He(P.make(()=>{let n=d.get(I().location),r=Be(e,n.pathname);return typeof r!="object"?[]:[t(r._0)]},void 0))}function Cr(e){return te("Router.routes()"),He(P.make(()=>{let t=d.get(I().location),n=Yn(e,r=>{let l=Be(r.pattern,t.pathname);if(typeof l=="object")return r.render(l._0)});return n!==void 0?[n]:[]},void 0))}function Or(e,t,n,r){let l=t!==void 0?t:[],i=n!==void 0?n:[];te("Router.link()");let u=c=>{c.preventDefault(),Ke(e,void 0,void 0)};return Xe(l.concat([pe("href",he(e))]),[["click",u]],i)}function Bt(e){return e&&typeof e=="object"&&"TAG"in e&&(e.TAG==="Static"||e.TAG==="Reactive")}function ce(e,t){return Bt(t)?t.TAG==="Reactive"?je(e,t._0):pe(e,t._0):typeof t=="function"?jt(e,t):typeof t=="object"?je(e,t):pe(e,t)}function Wt(e){let t=[],n=e.class;n!==void 0&&t.push(ce("class",g(n)));let r=e.id;r!==void 0&&t.push(ce("id",g(r)));let l=e.style;l!==void 0&&t.push(ce("style",g(l)));let i=e.target;i!==void 0&&t.push(ce("target",g(i)));let u=e["aria-label"];return u!==void 0&&t.push(ce("aria-label",g(u))),t}function Ht(e){let t=e.children;return t!==void 0?t.TAG==="Fragment"?t._0:[t]:[]}function ke(e){te("Router.Link");let t=n=>{n.preventDefault(),Ke(e.to,void 0,void 0);let r=e.onClick;if(r!==void 0)return r(n)};return Xe(Wt(e).concat([pe("href",he(e.to))]),[["click",t]],Ht(e))}function et(e,t,n){return ke(e)}let Dr={ReactiveProp:void 0,isReactiveProp:Bt,convertAttrValue:ce,propsToAttrs:Wt,getChildren:Ht,make:ke,jsx:ke,jsxs:ke,jsxKeyed:et,jsxsKeyed:et},Pr,Rr;const Mr=Object.freeze(Object.defineProperty({__proto__:null,Component:Pr,Link:Dr,Route:Rr,addBasePath:he,basePath:vr,emptyHistoryState:Ve,getCurrentLocation:Fe,getGlobalState:I,getScrollFromState:Gt,getScrollPosition:It,getSymbolKey:kr,init:$r,link:Or,location:Tr,makeHistoryState:Nt,normalizeBasePath:Ft,push:Ke,replace:Ar,route:xr,routes:Cr,saveScrollPosition:zt,scrollTo:xe,stripBasePath:Lt,warnIfNotInitialized:te},Symbol.toStringTag,{value:"Module"}));function jr(e){if(typeof e=="boolean")return e}function Fr(e){if(e===null)return null}function Lr(e){if(typeof e=="string")return e}function Ir(e){if(typeof e=="number")return e}function Nr(e){if(typeof e=="object"&&!Array.isArray(e)&&e!==null)return e}function Gr(e){if(Array.isArray(e))return e}let ne={bool:jr,$$null:Fr,string:Lr,float:Ir,object:Nr,array:Gr},ge=typeof document>"u",Ce=!ge;function zr(e){if(ge)return ee(e())}function Br(e){if(Ce)return ee(e())}function Xt(e,t){return ge?e():t()}const Wr=Object.freeze(Object.defineProperty({__proto__:null,isClient:Ce,isServer:ge,match:Xt,onClient:Br,onServer:zr},Symbol.toStringTag,{value:"Module"}));function Hr(e){return e}function Xr(e){let t=ne.float(e);if(t!==void 0)return t|0}let Vr={encode:Hr,decode:Xr};function Kr(e){return e}function Yr(e){return ne.float(e)}let qr={encode:Kr,decode:Yr};function Ur(e){return e}function Jr(e){return ne.string(e)}let Qr={encode:Ur,decode:Jr};function Zr(e){return e}function el(e){return ne.bool(e)}let tl={encode:Zr,decode:el};function nl(e){return{encode:t=>t.map(e.encode),decode:t=>{let n=ne.array(t);if(n===void 0)return;let r=$t(n,e.decode);if(r.length===n.length)return r}}}function rl(e){return{encode:t=>t!==void 0?e.encode(g(t)):null,decode:t=>Jn(ne.$$null(t))?ee(void 0):Un(e.decode(t),n=>ee(n))}}function ll(e,t){return{encode:n=>[e.encode(n[0]),t.encode(n[1])],decode:n=>{let r=Array.isArray(n)?n:void 0;if(r===void 0||r.length!==2)return;let l=r[0],i=r[1],u=e.decode(l),c=t.decode(i);if(u!==void 0&&c!==void 0)return[g(u),g(c)]}}}function il(e,t,n){return{encode:r=>[e.encode(r[0]),t.encode(r[1]),n.encode(r[2])],decode:r=>{let l=Array.isArray(r)?r:void 0;if(l===void 0||l.length!==3)return;let i=l[0],u=l[1],c=l[2],f=e.decode(i),E=t.decode(u),R=n.decode(c);if(f!==void 0&&E!==void 0&&R!==void 0)return[g(f),g(E),g(R)]}}}function ul(e){return{encode:t=>{let n={};return Object.entries(t).forEach(r=>{n[r[0]]=e.encode(r[1])}),n},decode:t=>{let n=ne.object(t);if(n===void 0)return;let r={},l={contents:!0};if(Object.entries(n).forEach(i=>{let u=e.decode(i[1]);u!==void 0?r[i[0]]=g(u):l.contents=!1}),l.contents)return r}}}function ol(e,t){return{encode:e,decode:t}}let dl={int:Vr,float:qr,string:Qr,bool:tl,array:nl,option:rl,tuple2:ll,tuple3:il,dict:ul,make:ol},me={};function Vt(e,t,n){if(ge){me[e]=n.encode(d.peek(t));return}}function cl(){Object.keys(me).forEach(e=>{We(me,e)})}function Kt(e){return e.replaceAll("<\/script>","<\\/script>").replaceAll("<!--","<\\!--")}function al(e){let t=U(JSON.stringify(me),"{}"),n=Kt(t);return"<script"+(e!==void 0?' nonce="'+st.escape(e)+'"':"")+">window.__XOTE_STATE__="+n+";<\/script>"}function Yt(){return Ce?window.__XOTE_STATE__||{}:{}}function qt(e,t,n){if(!Ce)return;let l=Yt()[e];if(l===void 0)return;let i=n.decode(l);if(i!==void 0)return d.set(t,g(i))}function Ut(e,t,n){Xt(()=>Vt(e,t,n),()=>qt(e,t,n))}function sl(e,t,n){let r=d.make(t,void 0,void 0);return Ut(e,r,n),r}const fl=Object.freeze(Object.defineProperty({__proto__:null,Codec:dl,clear:cl,escapeForScript:Kt,generateScript:al,getClientState:Yt,make:sl,register:Vt,registry:me,restore:qt,sync:Ut},Symbol.toStringTag,{value:"Module"}));let Me={};function pl(e){let t=Me[e];if(t!==void 0){let n=t+1|0;return Me[e]=n,e+("/"+n)}return Me[e]=1,e}function ml(e){return Array.from(e.childNodes||[])}function Se(e,t){if(e.nodeType!==8)return!1;let n=e.nodeValue;return n==null?!1:n===t}function Oe(e,t){if(e.nodeType!==8)return!1;let n=e.nodeValue;return n==null?!1:n.startsWith(t)}function Ye(e){if(e.nodeType!==8)return;let t=e.nodeValue;if(t!=null&&t.startsWith("k:"))return t.slice(2)}function ae(e){return{current:Ge(e.firstChild),parent:e}}function hl(e){return e.current}function j(e){let t=e.current;return t!==void 0&&(e.current=Ge(g(t).nextSibling)),t}function X(e,t){return(()=>{for(;;){let r=e.current;if(r===void 0)return;let l=g(r);if(Se(l,t))return j(e),ee(l);j(e)}})()}function ve(e,t){let n=[];return(()=>{for(;;){let l=e.current;if(l===void 0)return;let i=g(l);if(Se(i,t)){j(e);return}n.push(i),j(e)}})(),n}let gl={elementNode:1,textNode:3,commentNode:8,getChildNodes:ml,isMarker:Se,isMarkerPrefix:Oe,extractKey:Ye,make:ae,peek:hl,next:j,skipUntilMarker:X,collectUntilMarker:ve},Sl=pl("Xote__Hydration.HydrationMismatch");function Le(e){console.warn("[Xote Hydration] "+e)}function _l(e,t){for(;;){let n=e;switch(n.TAG){case"Element":let r=n.children,l=n.events,i=n.attrs,u=s.createOwner();return s.setOwner(t,u),s.runWithOwner(u,()=>{i.forEach(_=>{let h=_[1],S=_[0];switch(h.TAG){case"Static":return;case"SignalValue":let $=h._0,a=T.run(()=>{fe.setAttrOrProp(t,S,d.get($))},void 0);return s.addDisposer(u,a);case"Compute":let m=h._0,y=T.run(()=>{fe.setAttrOrProp(t,S,m())},void 0);return s.addDisposer(u,y)}}),l.forEach(_=>{t.addEventListener(_[0],_[1])});let w=ae(t);r.forEach(_=>Q(_,w))});case"Text":return;case"SignalText":let c=n._0,f=s.createOwner();return s.setOwner(t,f),s.runWithOwner(f,()=>{let w=T.run(()=>{t.textContent=d.get(c)},void 0);s.addDisposer(f,w)});case"Fragment":let E=ae(t);n._0.forEach(w=>Q(w,E));return;case"SignalFragment":let R=n._0,O=s.createOwner();return s.setOwner(t,O),s.runWithOwner(O,()=>{let w=T.run(()=>{let _=d.get(R);Array.from(t.childNodes||[]).forEach(S=>s.disposeOwner(U(s.getOwner(S),s.createOwner()))),t.innerHTML="",_.forEach(S=>{let $=Y.render(S);t.appendChild($)})},void 0);s.addDisposer(O,w)});case"LazyComponent":let x=s.createOwner(),G=s.runWithOwner(x,n._0);s.setOwner(t,x),e=G;continue;case"KeyedList":let v=n.renderItem,z=n.keyFn,M=n.signal,L=s.createOwner();s.setOwner(t,L);let D={},B=ae(t);return X(B,"kl"),(()=>{for(;;){let w=B.current;if(w===void 0)return;let _=g(w);if(!Oe(_,"k:"))if(Se(_,"/kl")){j(B);return}else return;let h=U(Ye(_),"");j(B);let $=ve(B,"/k").find(a=>a.nodeType===1);if($!==void 0){let a=d.peek(M),m=U(a.find(y=>z(y)===h),{});D[h]={key:h,item:m,element:g($)}}}})(),s.runWithOwner(L,()=>{let w=document.createComment(" keyed-list-start "),_=document.createComment(" keyed-list-end "),h=t.firstChild;h==null?t.appendChild(w):t.insertBefore(w,h),t.appendChild(_);let S=()=>{let a=d.get(M),m={};a.forEach(p=>{m[z(p)]=p});let y=[];Object.keys(D).forEach(p=>{if(m[p]===void 0){y.push(p);return}}),y.forEach(p=>{let o=D[p];if(o!==void 0){Y.disposeElement(o.element),o.element.remove(),We(D,p);return}});let k=[],A={};a.forEach(p=>{let o=z(p),b=D[o];if(b!==void 0){if(b.item!==p){A[o]=!0;let ye=v(p),Pe=Y.render(ye),be={key:o,item:p,element:Pe};k.push(be),D[o]=be;return}k.push(b);return}let le=v(p),De=Y.render(le),_e={key:o,item:p,element:De};k.push(_e),D[o]=_e});let W={contents:w.nextSibling};k.forEach(p=>{let o=W.contents;if(o==null){t.insertBefore(p.element,_);return}if(o===_){t.insertBefore(p.element,_);return}if(o===p.element){W.contents=o.nextSibling;return}U(A[p.key],!1)?(Y.disposeElement(o),t.replaceChild(p.element,o),W.contents=p.element.nextSibling):(t.insertBefore(p.element,o),W.contents=p.element.nextSibling)})},$=T.run(()=>{S()},void 0);s.addDisposer(L,$)})}}}function Q(e,t){switch(e.TAG){case"Element":let n=e.children,r=e.events,l=e.attrs,i=j(t);if(i===void 0)return Le("Missing DOM element for Element node");let u=g(i),c=s.createOwner();return s.setOwner(u,c),s.runWithOwner(c,()=>{l.forEach(S=>{let $=S[1],a=S[0];switch($.TAG){case"Static":return;case"SignalValue":let m=$._0,y=T.run(()=>{fe.setAttrOrProp(u,a,d.get(m))},void 0);return s.addDisposer(c,y);case"Compute":let k=$._0,A=T.run(()=>{fe.setAttrOrProp(u,a,k())},void 0);return s.addDisposer(c,A)}}),r.forEach(S=>{u.addEventListener(S[0],S[1])});let h=ae(u);n.forEach(S=>Q(S,h))});case"Text":j(t);return;case"SignalText":let f=e._0;X(t,"$");let E=j(t);if(E===void 0)return Le("Missing text node for SignalText");let R=g(E),O=s.createOwner();s.setOwner(R,O),s.runWithOwner(O,()=>{let h=T.run(()=>{R.textContent=d.get(f)},void 0);s.addDisposer(O,h)}),X(t,"/$");return;case"Fragment":e._0.forEach(h=>Q(h,t));return;case"SignalFragment":let x=e._0;X(t,"#");let G=ve(t,"/#"),v=document.createElement("div");v.setAttribute("style","display: contents");let z=G[0],M=z!==void 0?z.parentNode:void 0;G.forEach(h=>{v.appendChild(h)});let L=t.current;if(M!==void 0){let h=g(M);L!==void 0?h.insertBefore(v,g(L)):h.appendChild(v)}let D=s.createOwner();return s.setOwner(v,D),s.runWithOwner(D,()=>{let h=T.run(()=>{let S=d.get(x);Array.from(v.childNodes||[]).forEach(Y.disposeElement),v.innerHTML="",S.forEach(a=>{let m=Y.render(a);v.appendChild(m)})},void 0);s.addDisposer(D,h)});case"LazyComponent":X(t,"lc");let B=e._0();Q(B,t),X(t,"/lc");return;case"KeyedList":let re=e.keyFn,w=e.signal;return X(t,"kl"),(()=>{for(;;){let h=t.current;if(h===void 0)return;let S=g(h);if(!Oe(S,"k:"))if(Se(S,"/kl")){j(t);return}else return;let $=U(Ye(S),"");j(t);let m=ve(t,"/k").find(y=>y.nodeType===1);if(m!==void 0){let y=d.peek(w),k=U(y.find(A=>re(A)===$),{});g(m)}}})()}}function Jt(e,t,n){let r=n!==void 0?n:{},l=e(),i=ae(t),u=i.current;u!==void 0&&Oe(g(u),"xote-root:")&&j(i),Q(l,i),window.__XOTE_HYDRATED__=!0;let c=r.onHydrated;if(c!==void 0)return c()}function yl(e,t,n){let r=n!==void 0?n:{},l=document.getElementById(t);if(l==null){console.error("[Xote Hydration] Container element not found: "+t);return}else return Jt(e,l,r)}let bl,El,wl;const kl=Object.freeze(Object.defineProperty({__proto__:null,Component:bl,DOM:El,DOMWalker:gl,HydrationMismatch:Sl,Reactivity:wl,hydrate:Jt,hydrateById:yl,hydrateNode:_l,hydrateNodeWithWalker:Q,logHydrationWarning:Le},Symbol.toStringTag,{value:"Module"}));function Tl(e){return e.TAG==="Reactive"?d.get(e._0):e._0}function vl(e){return{TAG:"Static",_0:e}}function $l(e){return{TAG:"Reactive",_0:e}}const Al=Object.freeze(Object.defineProperty({__proto__:null,$$static:vl,get:Tl,reactive:$l},Symbol.toStringTag,{value:"Module"}));let xl=d.Id,Cl=d.Scheduler,Ol=d.Core,Dl=d.make,Pl=d.makeForComputed,Rl=d.get,Ml=d.peek,jl=d.set,Fl=d.update,Ll=d.batch,Il=d.untrack,Nl={Id:xl,Scheduler:Cl,Core:Ol,make:Dl,makeForComputed:Pl,get:Rl,peek:Ml,set:jl,update:Fl,batch:Ll,untrack:Il},Gl=P.Id,zl=P.Signal,Bl=P.Core,Wl=P.Scheduler,Hl=P.make,Xl=P.dispose,Vl={Id:Gl,Signal:zl,Core:Bl,Scheduler:Wl,make:Hl,dispose:Xl},Kl=T.Id,Yl=T.Core,ql=T.Scheduler,Ul=T.run,Jl={Id:Kl,Core:Yl,Scheduler:ql,run:Ul},Ql=wr,Zl=qn,ei=Mr,ti=Al,ni=Kn,ri=Wr,li=fl,ii=kl;exports.Component=Ql;exports.Computed=Vl;exports.Effect=Jl;exports.Hydration=ii;exports.ReactiveProp=ti;exports.Route=Zl;exports.Router=ei;exports.SSR=ni;exports.SSRContext=ri;exports.SSRState=li;exports.Signal=Nl;