xote 4.13.0 → 4.15.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,16 +1,17 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});let $e={contents:0};function we(){return $e.contents=$e.contents+1|0,$e.contents}function Qe(){return{first:void 0,last:void 0,version:0,compute:void 0,firstDep:void 0,lastDep:void 0,flags:0,level:0}}function Bt(e){return{first:void 0,last:void 0,version:0,compute:e,firstDep:void 0,lastDep:void 0,flags:1,level:0}}function Wt(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 Je(e){e.flags=e.flags&-2}function Ht(e){return(e.flags&2)!==0}function Vt(e){e.flags=e.flags|2}function Xt(e){e.flags=e.flags&-3}function Ze(e){return(e.flags&1)!==0}function Kt(e){e.flags=e.flags|1}function Fe(e){e.flags=e.flags&-2}function Yt(e){e.flags=e.flags&-3}function ke(e){return e.compute!==void 0}function Xe(e,t){return{subs:e,observer:t,nextDep:void 0,prevDep:void 0,nextSub:void 0,prevSub:void 0}}function Ee(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 Ke(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 et(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 tt(e){let t=e.firstDep;for(;t!==void 0;){let n=t;if(n!==void 0){let r=n.nextDep;et(n),t=r}}e.firstDep=void 0,e.lastDep=void 0}function Le(e){let t=e.firstDep;for(;t!==void 0;){let n=t;if(n!==void 0){let r=n.nextDep;et(n),t=r}}e.firstDep=void 0,e.lastDep=void 0}function Ye(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 ve(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 Ie(e){if(e!=null)return ve(e)}function w(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 qt(e,t){return e!==void 0?w(e):t}let C={contents:void 0},R={contents:void 0},X=[],J=[],q={contents:!1},Se=[],qe=(function(e){e.length=0});function Ut(e){if(!Ht(e)){Vt(e),X.push(e);return}}function Qt(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 Ye(e,i),Ee(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};Ye(e,l),Ee(t,l)}function Jt(e,t){if(e.firstDep===void 0){let i=Xe(t,e);return Ke(e,i),Ee(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=Xe(t,e);Ke(e,l),Ee(t,l)}function Zt(e){let t=C.contents;if(t!==void 0)return Qt(t,e);let n=R.contents;if(n!==void 0)return Jt(n,e)}function en(e,t){return e.level-t.level|0}function tn(e,t){return e.level-t.level|0}function nt(e){let t=0,n=e.firstDep;for(;n!==void 0;){let r=n;r!==void 0&&(ke(r.subs)&&r.subs.level>t&&(t=r.subs.level),n=r.nextDep)}return t+1|0}function rt(e){let t=0,n=e.firstDep;for(;n!==void 0;){let r=n;r!==void 0&&(ke(r.subs)&&r.subs.level>t&&(t=r.subs.level),n=r.nextDep)}return t+1|0}function nn(e){let t=e.level;Le(e),Yt(e);let n=C.contents;C.contents=e;try{let r=e.compute;r!==void 0&&r(),Fe(e),C.contents=n}catch(r){throw C.contents=n,r}if(t===0){e.level=nt(e);return}}function rn(e){let t=e.level;tt(e),Xt(e);let n=R.contents;R.contents=e;try{e.run(),Je(e),R.contents=n}catch(r){throw R.contents=n,r}if(t===0){e.level=rt(e);return}}function lt(){q.contents=!0;try{for(;X.length!==0||J.length!==0;){if(J.length!==0){J.sort(tn);let e=J.slice();qe(J),e.forEach(nn)}if(X.length!==0){X.sort(en);let e=X.slice();qe(X),e.forEach(rn)}}q.contents=!1;return}catch(e){throw q.contents=!1,e}}function ln(e){for(Se.push(e);Se.length!==0;){let t=Se.pop();if(t!==void 0){let n=t.first;for(;n!==void 0;){let r=n;if(r!==void 0){let l=r.observer;ke(l)?Ze(l)||(Kt(l),Se.push(l)):Ut(r.observer),n=r.nextSub}}}}if((X.length!==0||J.length!==0)&&!q.contents)return lt()}function it(e){if(!(ke(e)&&Ze(e)))return;let t=e.level;Le(e);let n=C.contents;C.contents=e;try{let r=e.compute;r!==void 0&&r(),Fe(e),C.contents=n}catch(r){throw C.contents=n,r}if(t===0){e.level=nt(e);return}}function un(e){let t=q.contents;q.contents=!0;try{let n=e();return t||(q.contents=!1,(X.length!==0||J.length!==0)&&lt()),n}catch(n){throw t||(q.contents=!1),n}}function on(e){let t=C.contents,n=R.contents;C.contents=void 0,R.contents=void 0;try{let r=e();return C.contents=t,R.contents=n,r}catch(r){throw C.contents=t,R.contents=n,r}}function an(e,t,n){return{id:we(),value:e,equals:qt(n,(l,i)=>l===i),name:t,subs:Qe()}}function sn(e,t){return{id:we(),value:e,equals:(r,l)=>!1,name:t,subs:Qe()}}function dn(e){return it(e.subs),Zt(e.subs),e.value}function cn(e){return it(e.subs),e.value}function ut(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,ln(e.subs)}function fn(e,t){ut(e,t(e.value))}let pn,mn,hn,gn=un,Sn=on;const _n=Object.freeze(Object.defineProperty({__proto__:null,Core:hn,Id:pn,Scheduler:mn,batch:gn,get:dn,make:an,makeForComputed:sn,peek:cn,set:ut,untrack:Sn,update:fn},Symbol.toStringTag,{value:"Module"}));function yn(e,t){let n=we(),r={contents:void 0},i=Wt(n,"Effect",()=>{let E=r.contents;E!==void 0&&E(),r.contents=e()},t,void 0),o=R.contents;R.contents=i;try{i.run(),Je(i),R.contents=o}catch(E){throw R.contents=o,E}i.level=rt(i);let c={contents:!1};return{dispose:()=>{if(c.contents)return;c.contents=!0;let E=r.contents;E!==void 0&&E(),tt(i)}}}let En,bn,wn;const kn=Object.freeze(Object.defineProperty({__proto__:null,Core:bn,Id:En,Scheduler:wn,run:yn},Symbol.toStringTag,{value:"Module"}));function vn(e,t){let n=we(),r={contents:void 0},i=Bt(()=>{r.contents.value=e()}),o=C.contents;C.contents=i;let c=e();C.contents=o;let m={id:n,value:c,equals:(E,N)=>!1,name:t,subs:i};return r.contents=m,Fe(i),m}function Tn(e){Le(e.subs)}let xn,Cn,An,Dn;const $n=Object.freeze(Object.defineProperty({__proto__:null,Core:An,Id:xn,Scheduler:Dn,Signal:Cn,dispose:Tn,make:vn},Symbol.toStringTag,{value:"Module"}));let d=_n,$=$n,v=kn;function U(e){return e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#x27;")}let je=["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"];function On(e){return je.includes(e)}let Pn={escape:U,voidElements:je,isVoidElement:On},ot="<!--$-->",at="<!--/$-->",st="<!--#-->",dt="<!--/#-->",ct="<!--kl-->",ft="<!--/kl-->";function pt(e){return"<!--k:"+e+"-->"}let mt="<!--/k-->",ht="<!--lc-->",gt="<!--/lc-->",Rn={signalTextStart:ot,signalTextEnd:at,signalFragmentStart:st,signalFragmentEnd:dt,keyedListStart:ct,keyedListEnd:ft,keyedItemStart:pt,keyedItemEnd:mt,lazyComponentStart:ht,lazyComponentEnd:gt};function St(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+'="'+U(r)+'"'}return r==="true"?n:""}function _t(e){let t=e.map(St).filter(n=>n!=="");return t.length>0?" "+t.join(" "):""}let Mn={renderAttr:St,renderAttrs:_t};function K(e){switch(e.TAG){case"Element":let t=e.tag,n=_t(e.attrs);if(je.includes(t))return"<"+t+n+" />";let r=e.children.map(K).join("");return"<"+t+n+">"+r+"</"+t+">";case"Text":return U(e._0);case"SignalText":let l=d.peek(e._0);return ot+U(l)+at;case"Fragment":return e._0.map(K).join("");case"SignalFragment":let o=d.peek(e._0).map(K).join("");return st+o+dt;case"LazyComponent":let c=e._0();return ht+K(c)+gt;case"KeyedList":let m=e.renderItem,E=e.keyFn,A=d.peek(e.signal).map(T=>{let G=E(T),k=K(m(T));return pt(G)+k+mt}).join("");return ct+A+ft}}function yt(e,t){return K(e())}function Fn(e,t,n){let r=t!==void 0?t:"root",l=e(),i=K(l);return"<!--xote-root:"+r+"-->"+i+"<!--/xote-root-->"}function Et(e){return"<script"+(e!==void 0?' nonce="'+U(e)+'"':"")+">window.__XOTE_HYDRATED__=false;<\/script>"}function Ln(e,t,n,r,l,i){let o=e!==void 0?e:"",c=t!==void 0?t:"",m=n!==void 0?n:[],E=r!==void 0?r:[],N=yt(i),A=Et(l),T=E.map(k=>'<link rel="stylesheet" href="'+U(k)+'" />').join(`
2
- `),G=m.map(k=>{let M=l!==void 0?' nonce="'+U(l)+'"':"";return'<script type="module" src="'+U(k)+'"'+M+"><\/script>"}).join(`
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
3
  `);return`<!DOCTYPE html>
4
4
  <html>
5
5
  <head>
6
6
  <meta charset="UTF-8" />
7
7
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
8
- `+T+`
9
- `+o+`
8
+ `+v+`
9
+ `+c+`
10
10
  </head>
11
- <body`+(c!==""?" "+c:"")+`>
12
- <div id="root">`+N+`</div>
13
- `+A+`
11
+ <body`+(f!==""?" "+f:"")+`>
12
+ <div id="root">`+x+`</div>
13
+ `+O+`
14
14
  `+G+`
15
+ `+z+`
15
16
  </body>
16
- </html>`}let In;const jn=Object.freeze(Object.defineProperty({__proto__:null,Attributes:Mn,Component:In,Html:Pn,Markers:Rn,generateHydrationScript:Et,renderDocument:Ln,renderNodeToString:K,renderToString:yt,renderToStringWithRoot:Fn},Symbol.toStringTag,{value:"Module"}));function Nn(e,t){let n=e.length,r=new Array(n),l=0;for(let i=0;i<n;++i){let o=e[i],c=t(o);c!==void 0&&(r[l]=w(c),l=l+1|0)}return r.length=l,r}function Gn(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 bt(e){return Nn(e.split("/"),t=>{if(t!=="")return t.startsWith(":")?{TAG:"Param",_0:t.slice(1)}:{TAG:"Static",_0:t}})}function wt(e,t){let n=t.split("/").filter(i=>i!=="");if(e.length!==n.length)return"NoMatch";let r={};return e.every((i,o)=>{let c=n[o];return i.TAG==="Static"?c===i._0:(r[i._0]=c,!0)})?{TAG:"Match",_0:r}:"NoMatch"}function Ne(e,t){return wt(bt(e),t)}const zn=Object.freeze(Object.defineProperty({__proto__:null,match:Ne,matchPath:wt,parsePattern:bt},Symbol.toStringTag,{value:"Module"}));function kt(e,t){delete e[t]}function Z(e,t){return e!==void 0?w(e):t}function ne(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 de={setAttrOrProp:ne},_e={contents:void 0};function Bn(){return{disposers:[],computeds:[]}}function re(e,t){let n=_e.contents;_e.contents=e;let r=t();return _e.contents=n,r}function le(e,t){e.disposers.push(t)}function vt(e){e.disposers.forEach(t=>t.dispose()),e.computeds.forEach(t=>$.dispose(t))}function ie(e,t){e.__xote_owner__=t}function Tt(e){return Ie(e.__xote_owner__)}let f={currentOwner:_e,createOwner:Bn,runWithOwner:re,addDisposer:le,disposeOwner:vt,setOwner:ie,getOwner:Tt};function xt(e,t){return[e,{TAG:"Static",_0:t}]}function Ct(e,t){return[e,{TAG:"SignalValue",_0:t}]}function At(e,t){return[e,{TAG:"Compute",_0:t}]}let Wn={$$static:xt,signal:Ct,computed:At};function se(e){let t=Tt(e);t!==void 0&&vt(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 ie(l,i),re(i,()=>{r.forEach(s=>{let g=s[1],_=s[0];switch(g.TAG){case"Static":return ne(l,_,g._0);case"SignalValue":let D=g._0;ne(l,_,d.peek(D));let O=v.run(()=>{ne(l,_,d.get(D))},void 0);return le(i,O);case"Compute":let B=g._0;ne(l,_,B());let h=v.run(()=>{ne(l,_,B())},void 0);return le(i,h)}}),n.forEach(s=>{l.addEventListener(s[0],s[1])}),t.forEach(s=>{let g=H(s);l.appendChild(g)})}),l;case"Text":return document.createTextNode(e._0);case"SignalText":let o=e._0,c=document.createTextNode(d.peek(o)),m={disposers:[],computeds:[]};return ie(c,m),re(m,()=>{let s=v.run(()=>{c.textContent=d.get(o)},void 0);le(m,s)}),c;case"Fragment":let E=document.createDocumentFragment();return e._0.forEach(s=>{let g=H(s);E.appendChild(g)}),E;case"SignalFragment":let N=e._0,A={disposers:[],computeds:[]},T=document.createElement("div");return T.setAttribute("style","display: contents"),ie(T,A),re(A,()=>{let s=v.run(()=>{let g=d.get(N);Array.from(T.childNodes||[]).forEach(se),T.innerHTML="",g.forEach(D=>{let O=H(D);T.appendChild(O)})},void 0);le(A,s)}),T;case"LazyComponent":let G={disposers:[],computeds:[]},k=re(G,e._0),M=H(k);return ie(M,G),M;case"KeyedList":let z=e.renderItem,W=e.keyFn,F=e.signal,j={disposers:[],computeds:[]},ae=document.createComment(" keyed-list-start "),p=document.createComment(" keyed-list-end ");ie(ae,j);let a={},y=()=>{let s=p.parentNode;if(s==null)return;let g=d.get(F),_={};g.forEach(u=>{_[W(u)]=u});let D=[];Object.keys(a).forEach(u=>{if(_[u]===void 0){D.push(u);return}}),D.forEach(u=>{let S=a[u];if(S!==void 0){se(S.element),S.element.remove(),kt(a,u);return}});let O=[],B={};g.forEach(u=>{let S=W(u),te=a[S];if(te!==void 0){if(te.item!==u){B[S]=!0;let De=z(u),ge=H(De),Ve={key:S,item:u,element:ge};O.push(Ve),a[S]=Ve;return}O.push(te);return}let Ae=z(u),me=H(Ae),he={key:S,item:u,element:me};O.push(he),a[S]=he});let h={contents:ae.nextSibling};O.forEach(u=>{let S=h.contents;if(S==null){s.insertBefore(u.element,p);return}if(S===p){s.insertBefore(u.element,p);return}if(S===u.element){h.contents=S.nextSibling;return}Z(B[u.key],!1)?(se(S),s.replaceChild(u.element,S),h.contents=u.element.nextSibling):(s.insertBefore(u.element,S),h.contents=u.element.nextSibling)})},b=document.createDocumentFragment();return b.appendChild(ae),d.peek(F).forEach(s=>{let g=W(s),_=z(s),D=H(_),O={key:g,item:s,element:D};a[g]=O,b.appendChild(D)}),b.appendChild(p),re(j,()=>{let s=v.run(()=>{y()},void 0);le(j,s)}),b}}let Y={disposeElement:se,render:H};function Hn(e){return{TAG:"Text",_0:e}}function Vn(e){return{TAG:"SignalText",_0:$.make(e,void 0)}}function Xn(e){return{TAG:"SignalText",_0:$.make(e,void 0)}}function Kn(e){return{TAG:"SignalText",_0:$.make(()=>e().toString(),void 0)}}function Yn(e){return{TAG:"SignalText",_0:$.make(()=>e().toString(),void 0)}}function qn(e){return{TAG:"Text",_0:e.toString()}}function Un(e){return{TAG:"Text",_0:e.toString()}}function Qn(e){return{TAG:"Fragment",_0:e}}function Ge(e){return{TAG:"SignalFragment",_0:e}}function Jn(e,t){return{TAG:"SignalFragment",_0:$.make(()=>d.get(e).map(t),void 0)}}function Zn(e,t,n){return{TAG:"KeyedList",signal:e,keyFn:t,renderItem:n}}function I(e,t,n,r,l){let i=t!==void 0?t:[].map(m=>m),o=n!==void 0?n:[].map(m=>m),c=r!==void 0?r:[].map(m=>m);return{TAG:"Element",tag:e,attrs:i,events:o,children:c}}function er(e,t,n,r){return I("div",e,t,n)}function tr(e,t,n,r){return I("span",e,t,n)}function nr(e,t,n,r){return I("button",e,t,n)}function rr(e,t,n){return I("input",e,t,void 0)}function lr(e,t,n,r){return I("h1",e,t,n)}function ir(e,t,n,r){return I("h2",e,t,n)}function ur(e,t,n,r){return I("h3",e,t,n)}function or(e,t,n,r){return I("p",e,t,n)}function ar(e,t,n,r){return I("ul",e,t,n)}function sr(e,t,n,r){return I("li",e,t,n)}function ze(e,t,n,r){return I("a",e,t,n)}function dr(){return{TAG:"Text",_0:""}}function Dt(e,t){let n=H(e);t.appendChild(n)}function cr(e,t){let n=document.getElementById(t);if(n==null){console.error("Container element not found: "+t);return}else return Dt(e,n)}let ce=xt,Pe=Ct,$t=At;const fr=Object.freeze(Object.defineProperty({__proto__:null,$$null:dr,Attributes:Wn,DOM:de,Reactivity:f,Render:Y,a:ze,attr:ce,button:nr,computedAttr:$t,div:er,element:I,float:Un,fragment:Qn,h1:lr,h2:ir,h3:ur,input:rr,int:qn,keyedList:Zn,li:sr,list:Jn,mount:Dt,mountById:cr,p:or,reactiveFloat:Yn,reactiveInt:Kn,reactiveString:Xn,signalAttr:Pe,signalFragment:Ge,span:tr,text:Hn,textSignal:Vn,ul:ar},Symbol.toStringTag,{value:"Module"}));function pr(){return Symbol.for("xote.router.state")}function L(){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 mr(){return L().location}function hr(){return L().basePath}function ee(e){if(!L().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 Ot(e){if(e===""||e==="/")return"/";let t=e.startsWith("/")?e:"/"+e;return t.endsWith("/")?t.slice(0,t.length-1|0):t}function Pt(e){let t=L().basePath.contents;return t==="/"?e:e===t?"/":e.startsWith(t+"/")?e.slice(t.length):e}function fe(e){let t=L().basePath.contents;return t==="/"?e:e==="/"?t:t+e}function Rt(){let e=window.scrollX||window.pageXOffset||0,t=window.scrollY||window.pageYOffset||0;return[e,t]}function Te(e,t){window.scrollTo(e,t)}function Mt(e,t){return{scrollX:e,scrollY:t}}function Be(){return{}}function Ft(e){let t=e&&e.scrollX,n=e&&e.scrollY;if(t!=null&&n!=null)return[t,n]}function Lt(){let e=Rt(),t=Mt(e[0],e[1]),n=window.location.href;window.history.replaceState(t,"",n)}function Re(){let e=window.location.pathname;return{pathname:Pt(e),search:window.location.search,hash:window.location.hash}}function gr(e,t){let n=e!==void 0?e:"/",r=L(),l=Ot(n);if(r.basePath.contents=l,d.set(r.location,Re()),r.initialized)return;let i=o=>{d.set(L().location,Re());let c=window["history.state"];if(c==null)return;let m=Ft(c);if(m!==void 0)return Te(m[0],m[1])};r.popStateHandler=i,window.addEventListener("popstate",i),r.initialized=!0}function We(e,t,n,r){let l=t!==void 0?t:"",i=n!==void 0?n:"";ee("Router.push()"),Lt();let o={pathname:e,search:l,hash:i},m=fe(e)+l+i;window.history.pushState(Be(),"",m),d.set(L().location,o),Te(0,0)}function Sr(e,t,n,r){let l=t!==void 0?t:"",i=n!==void 0?n:"";ee("Router.replace()");let o={pathname:e,search:l,hash:i},m=fe(e)+l+i;window.history.replaceState(Be(),"",m),d.set(L().location,o),Te(0,0)}function _r(e,t){return ee("Router.route()"),Ge($.make(()=>{let n=d.get(L().location),r=Ne(e,n.pathname);return typeof r!="object"?[]:[t(r._0)]},void 0))}function yr(e){return ee("Router.routes()"),Ge($.make(()=>{let t=d.get(L().location),n=Gn(e,r=>{let l=Ne(r.pattern,t.pathname);if(typeof l=="object")return r.render(l._0)});return n!==void 0?[n]:[]},void 0))}function Er(e,t,n,r){let l=t!==void 0?t:[],i=n!==void 0?n:[];ee("Router.link()");let o=c=>{c.preventDefault(),We(e,void 0,void 0)};return ze(l.concat([ce("href",fe(e))]),[["click",o]],i)}function It(e){return e&&typeof e=="object"&&"TAG"in e&&(e.TAG==="Static"||e.TAG==="Reactive")}function ue(e,t){return It(t)?t.TAG==="Reactive"?Pe(e,t._0):ce(e,t._0):typeof t=="function"?$t(e,t):typeof t=="object"?Pe(e,t):ce(e,t)}function jt(e){let t=[],n=e.class;n!==void 0&&t.push(ue("class",w(n)));let r=e.id;r!==void 0&&t.push(ue("id",w(r)));let l=e.style;l!==void 0&&t.push(ue("style",w(l)));let i=e.target;i!==void 0&&t.push(ue("target",w(i)));let o=e["aria-label"];return o!==void 0&&t.push(ue("aria-label",w(o))),t}function Nt(e){let t=e.children;return t!==void 0?t.TAG==="Fragment"?t._0:[t]:[]}function ye(e){ee("Router.Link");let t=n=>{n.preventDefault(),We(e.to,void 0,void 0);let r=e.onClick;if(r!==void 0)return r(n)};return ze(jt(e).concat([ce("href",fe(e.to))]),[["click",t]],Nt(e))}function Ue(e,t,n){return ye(e)}let br={ReactiveProp:void 0,isReactiveProp:It,convertAttrValue:ue,propsToAttrs:jt,getChildren:Nt,make:ye,jsx:ye,jsxs:ye,jsxKeyed:Ue,jsxsKeyed:Ue},wr,kr;const vr=Object.freeze(Object.defineProperty({__proto__:null,Component:wr,Link:br,Route:kr,addBasePath:fe,basePath:hr,emptyHistoryState:Be,getCurrentLocation:Re,getGlobalState:L,getScrollFromState:Ft,getScrollPosition:Rt,getSymbolKey:pr,init:gr,link:Er,location:mr,makeHistoryState:Mt,normalizeBasePath:Ot,push:We,replace:Sr,route:_r,routes:yr,saveScrollPosition:Lt,scrollTo:Te,stripBasePath:Pt,warnIfNotInitialized:ee},Symbol.toStringTag,{value:"Module"}));let Oe={};function Tr(e){let t=Oe[e];if(t!==void 0){let n=t+1|0;return Oe[e]=n,e+("/"+n)}return Oe[e]=1,e}function xr(e){return Array.from(e.childNodes||[])}function pe(e,t){if(e.nodeType!==8)return!1;let n=e.nodeValue;return n==null?!1:n===t}function xe(e,t){if(e.nodeType!==8)return!1;let n=e.nodeValue;return n==null?!1:n.startsWith(t)}function He(e){if(e.nodeType!==8)return;let t=e.nodeValue;if(t!=null&&t.startsWith("k:"))return t.slice(2)}function oe(e){return{current:Ie(e.firstChild),parent:e}}function Cr(e){return e.current}function P(e){let t=e.current;return t!==void 0&&(e.current=Ie(w(t).nextSibling)),t}function V(e,t){return(()=>{for(;;){let r=e.current;if(r===void 0)return;let l=w(r);if(pe(l,t))return P(e),ve(l);P(e)}})()}function be(e,t){let n=[];return(()=>{for(;;){let l=e.current;if(l===void 0)return;let i=w(l);if(pe(i,t)){P(e);return}n.push(i),P(e)}})(),n}let Ar={elementNode:1,textNode:3,commentNode:8,getChildNodes:xr,isMarker:pe,isMarkerPrefix:xe,extractKey:He,make:oe,peek:Cr,next:P,skipUntilMarker:V,collectUntilMarker:be},Dr=Tr("Xote__Hydration.HydrationMismatch");function Me(e){console.warn("[Xote Hydration] "+e)}function $r(e,t){for(;;){let n=e;switch(n.TAG){case"Element":let r=n.children,l=n.events,i=n.attrs,o=f.createOwner();return f.setOwner(t,o),f.runWithOwner(o,()=>{i.forEach(a=>{let y=a[1],b=a[0];switch(y.TAG){case"Static":return;case"SignalValue":let x=y._0,s=v.run(()=>{de.setAttrOrProp(t,b,d.get(x))},void 0);return f.addDisposer(o,s);case"Compute":let g=y._0,_=v.run(()=>{de.setAttrOrProp(t,b,g())},void 0);return f.addDisposer(o,_)}}),l.forEach(a=>{t.addEventListener(a[0],a[1])});let p=oe(t);r.forEach(a=>Q(a,p))});case"Text":return;case"SignalText":let c=n._0,m=f.createOwner();return f.setOwner(t,m),f.runWithOwner(m,()=>{let p=v.run(()=>{t.textContent=d.get(c)},void 0);f.addDisposer(m,p)});case"Fragment":let E=oe(t);n._0.forEach(p=>Q(p,E));return;case"SignalFragment":let N=n._0,A=f.createOwner();return f.setOwner(t,A),f.runWithOwner(A,()=>{let p=v.run(()=>{let a=d.get(N);Array.from(t.childNodes||[]).forEach(b=>f.disposeOwner(Z(f.getOwner(b),f.createOwner()))),t.innerHTML="",a.forEach(b=>{let x=Y.render(b);t.appendChild(x)})},void 0);f.addDisposer(A,p)});case"LazyComponent":let T=f.createOwner(),G=f.runWithOwner(T,n._0);f.setOwner(t,T),e=G;continue;case"KeyedList":let k=n.renderItem,M=n.keyFn,z=n.signal,W=f.createOwner();f.setOwner(t,W);let F={},j=oe(t);return V(j,"kl"),(()=>{for(;;){let p=j.current;if(p===void 0)return;let a=w(p);if(!xe(a,"k:"))if(pe(a,"/kl")){P(j);return}else return;let y=Z(He(a),"");P(j);let x=be(j,"/k").find(s=>s.nodeType===1);if(x!==void 0){let s=d.peek(z),g=Z(s.find(_=>M(_)===y),{});F[y]={key:y,item:g,element:w(x)}}}})(),f.runWithOwner(W,()=>{let p=document.createComment(" keyed-list-start "),a=document.createComment(" keyed-list-end "),y=t.firstChild;y==null?t.appendChild(p):t.insertBefore(p,y),t.appendChild(a);let b=()=>{let s=d.get(z),g={};s.forEach(h=>{g[M(h)]=h});let _=[];Object.keys(F).forEach(h=>{if(g[h]===void 0){_.push(h);return}}),_.forEach(h=>{let u=F[h];if(u!==void 0){Y.disposeElement(u.element),u.element.remove(),kt(F,h);return}});let D=[],O={};s.forEach(h=>{let u=M(h),S=F[u];if(S!==void 0){if(S.item!==h){O[u]=!0;let he=k(h),De=Y.render(he),ge={key:u,item:h,element:De};D.push(ge),F[u]=ge;return}D.push(S);return}let te=k(h),Ae=Y.render(te),me={key:u,item:h,element:Ae};D.push(me),F[u]=me});let B={contents:p.nextSibling};D.forEach(h=>{let u=B.contents;if(u==null){t.insertBefore(h.element,a);return}if(u===a){t.insertBefore(h.element,a);return}if(u===h.element){B.contents=u.nextSibling;return}Z(O[h.key],!1)?(Y.disposeElement(u),t.replaceChild(h.element,u),B.contents=h.element.nextSibling):(t.insertBefore(h.element,u),B.contents=h.element.nextSibling)})},x=v.run(()=>{b()},void 0);f.addDisposer(W,x)})}}}function Q(e,t){switch(e.TAG){case"Element":let n=e.children,r=e.events,l=e.attrs,i=P(t);if(i===void 0)return Me("Missing DOM element for Element node");let o=w(i),c=f.createOwner();return f.setOwner(o,c),f.runWithOwner(c,()=>{l.forEach(a=>{let y=a[1],b=a[0];switch(y.TAG){case"Static":return;case"SignalValue":let x=y._0,s=v.run(()=>{de.setAttrOrProp(o,b,d.get(x))},void 0);return f.addDisposer(c,s);case"Compute":let g=y._0,_=v.run(()=>{de.setAttrOrProp(o,b,g())},void 0);return f.addDisposer(c,_)}}),r.forEach(a=>{o.addEventListener(a[0],a[1])});let p=oe(o);n.forEach(a=>Q(a,p))});case"Text":P(t);return;case"SignalText":let m=e._0;V(t,"$");let E=P(t);if(E===void 0)return Me("Missing text node for SignalText");let N=w(E),A=f.createOwner();f.setOwner(N,A),f.runWithOwner(A,()=>{let p=v.run(()=>{N.textContent=d.get(m)},void 0);f.addDisposer(A,p)}),V(t,"/$");return;case"Fragment":e._0.forEach(p=>Q(p,t));return;case"SignalFragment":let T=e._0;V(t,"#");let G=be(t,"/#"),k=document.createElement("div");k.setAttribute("style","display: contents"),G.forEach(p=>{k.appendChild(p)});let M=t.current;M!==void 0&&M.parentNode.insertBefore(k,w(M));let z=f.createOwner();return f.setOwner(k,z),f.runWithOwner(z,()=>{let p=v.run(()=>{let a=d.get(T);Array.from(k.childNodes||[]).forEach(Y.disposeElement),k.innerHTML="",a.forEach(b=>{let x=Y.render(b);k.appendChild(x)})},void 0);f.addDisposer(z,p)});case"LazyComponent":V(t,"lc");let W=e._0();Q(W,t),V(t,"/lc");return;case"KeyedList":let F=e.keyFn,j=e.signal;return V(t,"kl"),(()=>{for(;;){let p=t.current;if(p===void 0)return;let a=w(p);if(!xe(a,"k:"))if(pe(a,"/kl")){P(t);return}else return;let y=Z(He(a),"");P(t);let x=be(t,"/k").find(s=>s.nodeType===1);if(x!==void 0){let s=d.peek(j),g=Z(s.find(_=>F(_)===y),{});w(x)}}})()}}function Gt(e,t,n){let r=n!==void 0?n:{},l=e(),i=oe(t),o=i.current;o!==void 0&&xe(w(o),"xote-root:")&&P(i),Q(l,i),window.__XOTE_HYDRATED__=!0;let c=r.onHydrated;if(c!==void 0)return c()}function Or(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 Gt(e,l,r)}let Pr,Rr,Mr;const Fr=Object.freeze(Object.defineProperty({__proto__:null,Component:Pr,DOM:Rr,DOMWalker:Ar,HydrationMismatch:Dr,Reactivity:Mr,hydrate:Gt,hydrateById:Or,hydrateNode:$r,hydrateNodeWithWalker:Q,logHydrationWarning:Me},Symbol.toStringTag,{value:"Module"}));let Ce=typeof document>"u",zt=!Ce;function Lr(e){if(Ce)return ve(e())}function Ir(e){if(zt)return ve(e())}function jr(e,t){return Ce?e():t()}const Nr=Object.freeze(Object.defineProperty({__proto__:null,isClient:zt,isServer:Ce,match:jr,onClient:Ir,onServer:Lr},Symbol.toStringTag,{value:"Module"}));function Gr(e){return e.TAG==="Reactive"?d.get(e._0):e._0}function zr(e){return{TAG:"Static",_0:e}}function Br(e){return{TAG:"Reactive",_0:e}}const Wr=Object.freeze(Object.defineProperty({__proto__:null,$$static:zr,get:Gr,reactive:Br},Symbol.toStringTag,{value:"Module"}));let Hr=d.Id,Vr=d.Scheduler,Xr=d.Core,Kr=d.make,Yr=d.makeForComputed,qr=d.get,Ur=d.peek,Qr=d.set,Jr=d.update,Zr=d.batch,el=d.untrack,tl={Id:Hr,Scheduler:Vr,Core:Xr,make:Kr,makeForComputed:Yr,get:qr,peek:Ur,set:Qr,update:Jr,batch:Zr,untrack:el},nl=$.Id,rl=$.Signal,ll=$.Core,il=$.Scheduler,ul=$.make,ol=$.dispose,al={Id:nl,Signal:rl,Core:ll,Scheduler:il,make:ul,dispose:ol},sl=v.Id,dl=v.Core,cl=v.Scheduler,fl=v.run,pl={Id:sl,Core:dl,Scheduler:cl,run:fl},ml=fr,hl=zn,gl=vr,Sl=Wr,_l=jn,yl=Nr,El=Fr;exports.Component=ml;exports.Computed=al;exports.Effect=pl;exports.Hydration=El;exports.ReactiveProp=Sl;exports.Route=hl;exports.Router=gl;exports.SSR=_l;exports.SSRContext=yl;exports.Signal=tl;
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;