xote 4.2.0 → 4.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -11,7 +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
- - **Lightweight**: Minimal runtime footprint (~18kb minified)
14
+ - **Lightweight**: Minimal runtime footprint
15
15
  - **Type-safe**: Full ReScript type safety throughout
16
16
 
17
17
  ## Getting Started
@@ -34,17 +34,17 @@ Then, add it to your ReScript project’s dependencies in `rescript.json`:
34
34
  }
35
35
  ```
36
36
 
37
- ## What Makes Xote Unique?
37
+ ## Why Xote?
38
38
 
39
- While Xote uses **rescript-signals** for reactive primitives (Signal, Computed, Effect), it adds:
39
+ Xote uses **rescript-signals** for reactive primitives (Signal, Computed, Effect), and it adds:
40
40
 
41
- - **Component System**: A minimal but powerful component model with JSX support
41
+ - **Component System**: A minimal but powerful component model with JSX support for declarative UI
42
42
  - **Direct DOM Updates**: Fine-grained reactivity that updates DOM elements directly, no virtual DOM
43
43
  - **Signal-based Router**: Client-side routing with pattern matching and reactive location state
44
44
  - **Reactive Attributes**: Support for static, signal-based, and computed attributes on elements
45
45
  - **Automatic Cleanup**: Effect disposal and memory management built into the component lifecycle
46
46
 
47
- Xote focuses on clarity, control, and performance. The goal is to offer precise, fine-grained updates and predictable behavior with minimal abstractions.
47
+ Xote focuses on clarity, control, and performance. The goal is to offer precise, fine-grained updates and predictable behavior with minimal abstractions, while leveraging the robust type system from ReScript.
48
48
 
49
49
  ### Quick Example
50
50
 
package/dist/xote.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});let U={contents:0};function Y(){return U.contents=U.contents+1|0,U.contents}function xe(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 xe(e)}function ae(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 K(e,t){return e!==void 0?ae(e):t}function Me(e,t,n){return e.reduce(n,t)}function je(e,t){let n=e.length,r=new Array(n),l=0;for(let o=0;o<n;++o){let u=e[o],c=t(u);c!==void 0&&(r[l]=ae(c),l=l+1|0)}return r.length=l,r}function De(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}}let _=new Map,j=new Map,L=new Map,m={contents:void 0},M=new Set,O={contents:!1},b={contents:!1};function Z(e){if(j.get(e)===void 0){j.set(e,new Set);return}}function Pe(e,t){let n=j.get(e);if(n!==void 0){n.forEach(t);return}}function Re(e,t){let n=j.get(e);if(n!==void 0){n.add(t);return}}function Ge(e,t){let n=j.get(e);if(n!==void 0){n.delete(t);return}}function Le(e){return Array.from(K(j.get(e),new Set).values())}function de(e,t){let n=m.contents;m.contents=e;try{let r=t();return m.contents=n,r}catch(r){throw m.contents=n,r}}function Fe(e){let t=m.contents;m.contents=void 0;try{let n=e();return m.contents=t,n}catch(n){throw m.contents=t,n}}function Be(e){let t=m.contents;return t!==void 0?t===e:!1}function ze(e){if(!O.contents){O.contents=!0;try{e(),O.contents=!1;return}catch(t){throw O.contents=!1,t}}}function Ve(e,t){Z(t);let n=Be(e),r=_.get(e);if(n&&r!==void 0&&!r.deps.has(t))return r.deps.add(t),Re(t,e)}function D(e){e.deps.forEach(t=>Ge(t,e.id)),e.deps.clear()}function We(e){let t=L.get(e);if(t===void 0)return;L.delete(e);let n=_.get(t);if(n!==void 0){D(n),_.delete(t);return}}function fe(e){return Me(e,0,(t,n)=>n>t?n:t)}function Ke(e){let t=[];return e.deps.forEach(n=>Pe(n,r=>{if(r===e.id)return;let l=_.get(r);if(l===void 0)return;if(typeof l.kind=="object"){t.push(l.level);return}})),fe(t)+1|0}function Xe(e){let t=[];return e.deps.forEach(n=>{let r=L.get(n);if(r===void 0||r===e.id)return;let l=_.get(r);if(l!==void 0){t.push(l.level);return}}),fe(t)+1|0}function X(e){return typeof e.kind=="object"?Xe(e):Ke(e)}function qe(e,t){let n=_.get(e),r=_.get(t);if(n===void 0)return r!==void 0?1:0;if(r===void 0)return-1;let o=typeof n.kind=="object"?0:1,c=typeof r.kind=="object"?0:1,f=o-c|0;return f!==0?f:n.level-r.level|0}function He(e){b.contents=!0,D(e),de(e.id,()=>{e.run(),b.contents=!1}),e.level=X(e)}function pe(){for(;M.size>0;){let e=Array.from(M.values());M.clear(),e.sort(qe),e.forEach(t=>{let n=_.get(t);if(n!==void 0)return He(n)})}}function me(e){if(Z(e),Le(e).forEach(t=>{let n=_.get(t);if(n===void 0)return;let r=n.kind;if(typeof r=="object")return n.dirty?void 0:(n.dirty=!0,me(r.VAL));M.add(t)}),M.size>0)return ze(pe)}function he(e){let t=L.get(e);if(t===void 0)return;let n=_.get(t);if(n!==void 0&&n.dirty){b.contents=!0,D(n),de(t,()=>{n.run(),n.dirty=!1,b.contents=!1}),n.level=X(n);return}}function Ue(e){let t=O.contents;O.contents=!0;try{let n=e();return t||(O.contents=!1,M.size>0&&pe()),n}catch(n){throw t||(O.contents=!1),n}}let Je=Fe,Qe=Z;function _e(e,t,n){let r=Y();return Qe(r),{id:r,value:{contents:e},version:{contents:0},equals:K(n,(l,o)=>l===o),name:t}}function Ye(e){he(e.id);let t=m.contents;return t!==void 0&&Ve(t,e.id),e.value.contents}function Ze(e){return he(e.id),e.value.contents}function ge(e,t){let n;try{n=!e.equals(e.value.contents,t)}catch{n=!0}if(n)return e.value.contents=t,e.version.contents=e.version.contents+1|0,me(e.id)}function et(e,t){ge(e,t(e.value.contents))}let tt,nt,rt=Ue,lt=Je;const ut=Object.freeze(Object.defineProperty({__proto__:null,Id:tt,Scheduler:nt,batch:rt,get:Ye,make:_e,peek:Ze,set:ge,untrack:lt,update:et},Symbol.toStringTag,{value:"Module"}));function Se(e,t,n){return{id:e,kind:t,run:n,deps:new Set,level:0,dirty:!0}}function ot(e){let t=Y(),n={contents:void 0},l=Se(t,"Effect",()=>{let c=n.contents;c!==void 0&&c(),n.contents=e()});_.set(t,l),b.contents=!0,D(l);let o=m.contents;m.contents=t;try{l.run(),b.contents=!1}catch(c){throw m.contents=o,b.contents=!1,c}return m.contents=o,l.level=X(l),{dispose:()=>{let c=_.get(t);if(c===void 0)return;let f=n.contents;f!==void 0&&f(),D(c),_.delete(t)}}}let it,st,ct;const at=Object.freeze(Object.defineProperty({__proto__:null,Id:it,Observer:st,Scheduler:ct,run:ot},Symbol.toStringTag,{value:"Module"}));function dt(e){let t=_e(void 0,void 0,void 0),n=Y(),r=()=>{let u=e();t.value.contents=u},l=Se(n,{NAME:"Computed",VAL:t.id},r);_.set(n,l),b.contents=!0,D(l);let o=m.contents;m.contents=n;try{l.run(),l.dirty=!1,b.contents=!1}catch(u){throw m.contents=o,b.contents=!1,u}return m.contents=o,l.level=X(l),L.set(t.id,n),t}function ft(e){We(e.id)}let pt,mt,ht,_t;const gt=Object.freeze(Object.defineProperty({__proto__:null,Id:pt,Observer:ht,Scheduler:_t,Signal:mt,dispose:ft,make:dt},Symbol.toStringTag,{value:"Module"}));let i=ut,v=gt,y=at;function ve(e){return je(e.split("/"),t=>{if(t!=="")return t.startsWith(":")?{TAG:"Param",_0:t.slice(1)}:{TAG:"Static",_0:t}})}function Ee(e,t){let n=t.split("/").filter(o=>o!=="");if(e.length!==n.length)return"NoMatch";let r={};return e.every((o,u)=>{let c=n[u];return o.TAG==="Static"?c===o._0:(r[o._0]=c,!0)})?{TAG:"Match",_0:r}:"NoMatch"}function ee(e,t){return Ee(ve(e),t)}const St=Object.freeze(Object.defineProperty({__proto__:null,match:ee,matchPath:Ee,parsePattern:ve},Symbol.toStringTag,{value:"Module"}));function vt(e,t){delete e[t]}function ye(e,t){return[e,{TAG:"Static",_0:t}]}function Et(e,t){return[e,{TAG:"SignalValue",_0:t}]}function yt(e,t){return[e,{TAG:"Compute",_0:t}]}function wt(e){return{TAG:"Text",_0:e}}function bt(e){return{TAG:"SignalText",_0:v.make(e)}}function kt(e){return{TAG:"Fragment",_0:e}}function te(e){return{TAG:"SignalFragment",_0:e}}function Tt(e,t){return{TAG:"SignalFragment",_0:v.make(()=>i.get(e).map(t))}}function E(e,t,n,r,l){let o=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:o,events:u,children:c}}function At(e,t,n,r){return E("div",e,t,n)}function Ot(e,t,n,r){return E("span",e,t,n)}function Ct(e,t,n,r){return E("button",e,t,n)}function $t(e,t,n){return E("input",e,t,void 0)}function Nt(e,t,n,r){return E("h1",e,t,n)}function xt(e,t,n,r){return E("h2",e,t,n)}function It(e,t,n,r){return E("h3",e,t,n)}function Mt(e,t,n,r){return E("p",e,t,n)}function jt(e,t,n,r){return E("ul",e,t,n)}function Dt(e,t,n,r){return E("li",e,t,n)}function we(e,t,n,r){return E("a",e,t,n)}let C={contents:void 0};function Pt(){return{disposers:[],signals:[],computeds:[]}}function N(e,t){let n=C.contents;C.contents=e;let r=t();return C.contents=n,r}function Rt(e){let t=C.contents;if(t!==void 0){t.signals.push(e);return}}function Gt(e){let t=C.contents;if(t!==void 0){t.computeds.push(e);return}}function Lt(e){let t=C.contents;if(t!==void 0){t.disposers.push(e);return}}function A(e,t){let n=K(Ie(e.__xote_disposers),[]);e.__xote_disposers=n.concat([t]);let r=C.contents;if(r!==void 0){r.disposers.push(t);return}}let J=(function(e){e.__devtoolsId&&window.__xoteDevToolsMarkAsDisposed&&window.__xoteDevToolsMarkAsDisposed(e.__devtoolsId)});function W(e){e.disposers.forEach(t=>t.dispose()),e.computeds.forEach(t=>{v.dispose(t),J(t)}),e.signals.forEach(t=>J(t))}function Ft(e){let t={disposers:[],signals:[],computeds:[]};return N(t,()=>e(()=>W(t))),()=>W(t)}function Bt(e){return{TAG:"LazyComponent",_0:e}}function G(e){let t=e.__xote_owner;t!=null&&(W(t),e.__xote_owner={disposers:[],signals:[],computeds:[]});let n=e.__xote_disposers;n!=null&&(n.forEach(l=>l.dispose()),e.__xote_disposers=[]),Array.from(e.childNodes||[]).forEach(G)}function k(e){switch(e.TAG){case"Element":let t=e.children,n=e.events,r=e.attrs,l=e.tag,o={disposers:[],signals:[],computeds:[]},u;switch(l){case"circle":case"clipPath":case"defs":case"ellipse":case"g":case"line":case"linearGradient":case"marker":case"mask":case"path":case"pattern":case"polygon":case"polyline":case"radialGradient":case"rect":case"stop":case"svg":case"symbol":case"text":case"textPath":case"tspan":case"use":u=document.createElementNS("http://www.w3.org/2000/svg",l);break;default:u=document.createElement(l)}return u.__xote_owner=o,N(o,()=>{r.forEach(a=>{let p=a[1],h=a[0];switch(p.TAG){case"Static":let w=p._0;h==="value"&&l==="input"?u.value=w:u.setAttribute(h,w);return;case"SignalValue":let g=p._0;if(h==="value"&&l==="input"){u.value=i.peek(g);let S=y.run(()=>{let R=i.get(g);u.value=R});return A(u,S)}u.setAttribute(h,i.peek(g));let V=y.run(()=>{let S=i.get(g);u.setAttribute(h,S)});return A(u,V);case"Compute":let I=p._0,s=v.make(()=>I());if(h==="value"&&l==="input"){u.value=i.peek(s);let S=y.run(()=>{let R=i.get(s);u.value=R});return A(u,S)}u.setAttribute(h,i.peek(s));let d=y.run(()=>{let S=i.get(s);u.setAttribute(h,S)});return A(u,d)}}),n.forEach(a=>{u.addEventListener(a[0],a[1])}),t.forEach(a=>{let p=k(a);u.appendChild(p)})}),u;case"Text":return document.createTextNode(e._0);case"SignalText":let c=e._0,f={disposers:[],signals:[],computeds:[]},F=document.createTextNode(i.peek(c));return F.__xote_owner=f,N(f,()=>{let a=y.run(()=>{let p=i.get(c);F.textContent=p});A(F,a)}),F;case"Fragment":let ne=document.createDocumentFragment();return e._0.forEach(a=>{let p=k(a);ne.appendChild(p)}),ne;case"SignalFragment":let Te=e._0,re={disposers:[],signals:[],computeds:[]},T=document.createElement("div");return T.setAttribute("data-signal-fragment","true"),T.setAttribute("style","display: contents"),T.__xote_owner=re,N(re,()=>{let a=y.run(()=>{let p=i.get(Te);Array.from(T.childNodes||[]).forEach(G),T.innerHTML="",p.forEach(w=>{let g=k(w);T.appendChild(g)})});A(T,a)}),T;case"LazyComponent":let le={disposers:[],signals:[],computeds:[]},Ae=N(le,e._0),ue=k(Ae);return ue.__xote_owner=le,ue;case"KeyedList":let q=e.renderItem,H=e.keyFn,oe=e.signal,ie={disposers:[],signals:[],computeds:[]},B=document.createComment(" keyed-list-start "),P=document.createComment(" keyed-list-end ");B.__xote_owner=ie;let $={},Oe=()=>{let a=P.parentNode;if(a==null)return;let p=i.get(oe),h={};p.forEach(s=>{let d=H(s);h[d]=s});let w=[];Object.keys($).forEach(s=>{if(h[s]===void 0){w.push(s);return}}),w.forEach(s=>{let d=$[s];if(d!==void 0){G(d.element),d.element.remove(),vt($,s);return}});let g=[],V={};p.forEach(s=>{let d=H(s),S=$[d];if(S!==void 0){if(S.item!==s){V[d]=!0;let $e=q(s),Ne=k($e),ce={key:d,item:s,element:Ne};g.push(ce),$[d]=ce;return}g.push(S);return}let R=q(s),Ce=k(R),se={key:d,item:s,element:Ce};g.push(se),$[d]=se});let I={contents:B.nextSibling};g.forEach(s=>{let d=I.contents;if(d==null){a.insertBefore(s.element,P);return}if(d===P){a.insertBefore(s.element,P);return}if(d===s.element){I.contents=d.nextSibling;return}K(V[s.key],!1)?(G(d),a.replaceChild(s.element,d),I.contents=s.element.nextSibling):(a.insertBefore(s.element,d),I.contents=s.element.nextSibling)})},z=document.createDocumentFragment();return z.appendChild(B),i.peek(oe).forEach(a=>{let p=H(a),h=q(a),w=k(h),g={key:p,item:a,element:w};$[p]=g,z.appendChild(w)}),z.appendChild(P),N(ie,()=>{let a=y.run(()=>{Oe()});A(B,a)}),z}}function be(e,t){let n=k(e);t.appendChild(n)}function zt(e,t){let n=document.getElementById(t);if(n==null){console.error("Container element not found: "+t);return}else return be(e,n)}function Vt(e,t,n){return{TAG:"KeyedList",signal:e,keyFn:t,renderItem:n}}const Wt=Object.freeze(Object.defineProperty({__proto__:null,a:we,addDisposer:A,attr:ye,button:Ct,component:Bt,computedAttr:yt,createOwner:Pt,createRoot:Ft,currentOwner:C,disposeElement:G,disposeOwner:W,div:At,element:E,fragment:kt,h1:Nt,h2:xt,h3:It,input:$t,keyedList:Vt,li:Dt,list:Tt,markAsDisposedInDevTools:J,mount:be,mountById:zt,p:Mt,registerComputed:Gt,registerEffectDisposer:Lt,registerSignal:Rt,render:k,runWithOwner:N,signalAttr:Et,signalFragment:te,span:Ot,text:wt,textSignal:bt,ul:jt},Symbol.toStringTag,{value:"Module"}));let x=i.make({pathname:"/",search:"",hash:""},void 0,void 0);function Q(){return{pathname:window.location.pathname,search:window.location.search,hash:window.location.hash}}function Kt(){i.set(x,Q());let e=t=>i.set(x,Q());window.addEventListener("popstate",e)}function ke(e,t,n,r){let l=t!==void 0?t:"",o=n!==void 0?n:"",u={pathname:e,search:l,hash:o},c=e+l+o,f={};window.history.pushState(f,"",c),i.set(x,u)}function Xt(e,t,n,r){let l=t!==void 0?t:"",o=n!==void 0?n:"",u={pathname:e,search:l,hash:o},c=e+l+o,f={};window.history.replaceState(f,"",c),i.set(x,u)}function qt(e,t){return te(v.make(()=>{let n=i.get(x),r=ee(e,n.pathname);return typeof r!="object"?[]:[t(r._0)]}))}function Ht(e){return te(v.make(()=>{let t=i.get(x),n=De(e,r=>{let l=ee(r.pattern,t.pathname);if(typeof l=="object")return r.render(l._0)});return n!==void 0?[n]:[]}))}function Ut(e,t,n,r){let l=t!==void 0?t:[],o=n!==void 0?n:[],u=c=>{c.preventDefault(),ke(e,void 0,void 0)};return we(l.concat([ye("href",e)]),[["click",u]],o)}let Jt,Qt;const Yt=Object.freeze(Object.defineProperty({__proto__:null,Component:Jt,Route:Qt,getCurrentLocation:Q,init:Kt,link:Ut,location:x,push:ke,replace:Xt,route:qt,routes:Ht},Symbol.toStringTag,{value:"Module"}));let Zt=i.Id,en=i.Scheduler,tn=i.make,nn=i.get,rn=i.peek,ln=i.set,un=i.update,on=i.batch,sn=i.untrack,cn={Id:Zt,Scheduler:en,make:tn,get:nn,peek:rn,set:ln,update:un,batch:on,untrack:sn},an=v.Id,dn=v.Signal,fn=v.Observer,pn=v.Scheduler,mn=v.make,hn=v.dispose,_n={Id:an,Signal:dn,Observer:fn,Scheduler:pn,make:mn,dispose:hn},gn=y.Id,Sn=y.Observer,vn=y.Scheduler,En=y.run,yn={Id:gn,Observer:Sn,Scheduler:vn,run:En},wn=Wt,bn=St,kn=Yt;exports.Component=wn;exports.Computed=_n;exports.Effect=yn;exports.Route=bn;exports.Router=kn;exports.Signal=cn;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});let U={contents:0};function Q(){return U.contents=U.contents+1|0,U.contents}function Re(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 xe(e){if(e!=null)return Re(e)}function oe(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 Y(e,t){return e!==void 0?oe(e):t}function Pe(e,t,n){return e.reduce(n,t)}function De(e,t){let n=e.length,r=new Array(n),l=0;for(let u=0;u<n;++u){let a=e[u],o=t(a);o!==void 0&&(r[l]=oe(o),l=l+1|0)}return r.length=l,r}function Fe(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}}let h=new Map,j=new Map,L=new Map,p={contents:void 0},I=new Set,k={contents:!1},y={contents:!1};function Z(e){if(j.get(e)===void 0){j.set(e,new Set);return}}function Le(e,t){let n=j.get(e);if(n!==void 0){n.forEach(t);return}}function Ge(e,t){let n=j.get(e);if(n!==void 0){n.add(t);return}}function Be(e,t){let n=j.get(e);if(n!==void 0){n.delete(t);return}}function Ve(e){return Array.from(Y(j.get(e),new Set).values())}function ce(e,t){let n=p.contents;p.contents=e;try{let r=t();return p.contents=n,r}catch(r){throw p.contents=n,r}}function ze(e){let t=p.contents;p.contents=void 0;try{let n=e();return p.contents=t,n}catch(n){throw p.contents=t,n}}function We(e){let t=p.contents;return t!==void 0?t===e:!1}function Ke(e){if(!k.contents){k.contents=!0;try{e(),k.contents=!1;return}catch(t){throw k.contents=!1,t}}}function Xe(e,t){Z(t);let n=We(e),r=h.get(e);if(n&&r!==void 0&&!r.deps.has(t))return r.deps.add(t),Ge(t,e)}function R(e){e.deps.forEach(t=>Be(t,e.id)),e.deps.clear()}function qe(e){let t=L.get(e);if(t===void 0)return;L.delete(e);let n=h.get(t);if(n!==void 0){R(n),h.delete(t);return}}function de(e){return Pe(e,0,(t,n)=>n>t?n:t)}function He(e){let t=[];return e.deps.forEach(n=>Le(n,r=>{if(r===e.id)return;let l=h.get(r);if(l===void 0)return;if(typeof l.kind=="object"){t.push(l.level);return}})),de(t)+1|0}function Ue(e){let t=[];return e.deps.forEach(n=>{let r=L.get(n);if(r===void 0||r===e.id)return;let l=h.get(r);if(l!==void 0){t.push(l.level);return}}),de(t)+1|0}function z(e){return typeof e.kind=="object"?Ue(e):He(e)}function Je(e,t){let n=h.get(e),r=h.get(t);if(n===void 0)return r!==void 0?1:0;if(r===void 0)return-1;let u=typeof n.kind=="object"?0:1,o=typeof r.kind=="object"?0:1,c=u-o|0;return c!==0?c:n.level-r.level|0}function Qe(e){y.contents=!0,R(e),ce(e.id,()=>{e.run(),y.contents=!1}),e.level=z(e)}function se(){for(;I.size>0;){let e=Array.from(I.values());I.clear(),e.sort(Je),e.forEach(t=>{let n=h.get(t);if(n!==void 0)return Qe(n)})}}function ae(e){if(Z(e),Ve(e).forEach(t=>{let n=h.get(t);if(n===void 0)return;let r=n.kind;if(typeof r=="object")return n.dirty?void 0:(n.dirty=!0,ae(r.VAL));I.add(t)}),I.size>0)return Ke(se)}function fe(e){let t=L.get(e);if(t===void 0)return;let n=h.get(t);if(n!==void 0&&n.dirty){y.contents=!0,R(n),ce(t,()=>{n.run(),n.dirty=!1,y.contents=!1}),n.level=z(n);return}}function Ye(e){let t=k.contents;k.contents=!0;try{let n=e();return t||(k.contents=!1,I.size>0&&se()),n}catch(n){throw t||(k.contents=!1),n}}let Ze=ze,et=Z;function pe(e,t,n){let r=Q();return et(r),{id:r,value:{contents:e},version:{contents:0},equals:Y(n,(l,u)=>l===u),name:t}}function tt(e){fe(e.id);let t=p.contents;return t!==void 0&&Xe(t,e.id),e.value.contents}function nt(e){return fe(e.id),e.value.contents}function me(e,t){let n;try{n=!e.equals(e.value.contents,t)}catch{n=!0}if(n)return e.value.contents=t,e.version.contents=e.version.contents+1|0,ae(e.id)}function rt(e,t){me(e,t(e.value.contents))}let lt,ut,it=Ye,ot=Ze;const ct=Object.freeze(Object.defineProperty({__proto__:null,Id:lt,Scheduler:ut,batch:it,get:tt,make:pe,peek:nt,set:me,untrack:ot,update:rt},Symbol.toStringTag,{value:"Module"}));function he(e,t,n,r){return{id:e,kind:t,run:n,deps:new Set,level:0,dirty:!0,name:r}}function dt(e,t){let n=Q(),r={contents:void 0},u=he(n,"Effect",()=>{let c=r.contents;c!==void 0&&c(),r.contents=e()},t);h.set(n,u),y.contents=!0,R(u);let a=p.contents;p.contents=n;try{u.run(),y.contents=!1}catch(c){throw p.contents=a,y.contents=!1,c}return p.contents=a,u.level=z(u),{dispose:()=>{let c=h.get(n);if(c===void 0)return;let x=r.contents;x!==void 0&&x(),R(c),h.delete(n)}}}let st,at,ft;const pt=Object.freeze(Object.defineProperty({__proto__:null,Id:st,Observer:at,Scheduler:ft,run:dt},Symbol.toStringTag,{value:"Module"}));function mt(e,t){let n=pe(void 0,t,void 0),r=Q(),l=()=>{let o=e();n.value.contents=o},u=he(r,{NAME:"Computed",VAL:n.id},l,void 0);h.set(r,u),y.contents=!0,R(u);let a=p.contents;p.contents=r;try{u.run(),u.dirty=!1,y.contents=!1}catch(o){throw p.contents=a,y.contents=!1,o}return p.contents=a,u.level=z(u),L.set(n.id,r),n}function ht(e){qe(e.id)}let _t,gt,St,Et;const vt=Object.freeze(Object.defineProperty({__proto__:null,Id:_t,Observer:St,Scheduler:Et,Signal:gt,dispose:ht,make:mt},Symbol.toStringTag,{value:"Module"}));let s=ct,S=vt,w=pt;function _e(e){return De(e.split("/"),t=>{if(t!=="")return t.startsWith(":")?{TAG:"Param",_0:t.slice(1)}:{TAG:"Static",_0:t}})}function ge(e,t){let n=t.split("/").filter(u=>u!=="");if(e.length!==n.length)return"NoMatch";let r={};return e.every((u,a)=>{let o=n[a];return u.TAG==="Static"?o===u._0:(r[u._0]=o,!0)})?{TAG:"Match",_0:r}:"NoMatch"}function ee(e,t){return ge(_e(e),t)}const yt=Object.freeze(Object.defineProperty({__proto__:null,match:ee,matchPath:ge,parsePattern:_e},Symbol.toStringTag,{value:"Module"}));function bt(e,t){delete e[t]}let wt={},V={contents:void 0};function kt(){return{disposers:[],computeds:[]}}function C(e,t){let n=V.contents;V.contents=e;let r=t();return V.contents=n,r}function N(e,t){e.disposers.push(t)}function Se(e){e.disposers.forEach(t=>t.dispose()),e.computeds.forEach(t=>S.dispose(t))}function M(e,t){e.__xote_owner__=t}function Ee(e){return xe(e.__xote_owner__)}let Ot={currentOwner:V,createOwner:kt,runWithOwner:C,addDisposer:N,disposeOwner:Se,setOwner:M,getOwner:Ee};function ve(e,t){return[e,{TAG:"Static",_0:t}]}function ye(e,t){return[e,{TAG:"SignalValue",_0:t}]}function be(e,t){return[e,{TAG:"Compute",_0:t}]}let Tt={$$static:ve,signal:ye,computed:be};function F(e){let t=Ee(e);t!==void 0&&Se(t),Array.from(e.childNodes||[]).forEach(F)}function b(e){switch(e.TAG){case"Element":let t=e.children,n=e.events,r=e.attrs,l=document.createElement(e.tag),u={disposers:[],computeds:[]};return M(l,u),C(u,()=>{r.forEach(i=>{let m=i[1],g=i[0];switch(m.TAG){case"Static":l.setAttribute(g,m._0);return;case"SignalValue":let E=m._0;l.setAttribute(g,s.peek(E));let v=w.run(()=>{l.setAttribute(g,s.get(E))},void 0);return N(u,v);case"Compute":let D=m._0;l.setAttribute(g,D());let $=w.run(()=>{l.setAttribute(g,D())},void 0);return N(u,$)}}),n.forEach(i=>{l.addEventListener(i[0],i[1])}),t.forEach(i=>{let m=b(i);l.appendChild(m)})}),l;case"Text":return document.createTextNode(e._0);case"SignalText":let a=e._0,o=document.createTextNode(s.peek(a)),c={disposers:[],computeds:[]};return M(o,c),C(c,()=>{let i=w.run(()=>{o.textContent=s.get(a)},void 0);N(c,i)}),o;case"Fragment":let x=document.createDocumentFragment();return e._0.forEach(i=>{let m=b(i);x.appendChild(m)}),x;case"SignalFragment":let Ae=e._0,W={disposers:[],computeds:[]},A=document.createElement("div");return A.setAttribute("style","display: contents"),M(A,W),C(W,()=>{let i=w.run(()=>{let m=s.get(Ae);Array.from(A.childNodes||[]).forEach(F),A.innerHTML="",m.forEach(E=>{let v=b(E);A.appendChild(v)})},void 0);N(W,i)}),A;case"LazyComponent":let ne={disposers:[],computeds:[]},$e=C(ne,e._0),re=b($e);return M(re,ne),re;case"KeyedList":let K=e.renderItem,X=e.keyFn,le=e.signal,q={disposers:[],computeds:[]},H=document.createComment(" keyed-list-start "),P=document.createComment(" keyed-list-end ");M(H,q);let O={},Ce=()=>{let i=P.parentNode;if(i==null)return;let m=s.get(le),g={};m.forEach(d=>{g[X(d)]=d});let E=[];Object.keys(O).forEach(d=>{if(g[d]===void 0){E.push(d);return}}),E.forEach(d=>{let f=O[d];if(f!==void 0){F(f.element),f.element.remove(),bt(O,d);return}});let v=[],D={};m.forEach(d=>{let f=X(d),B=O[f];if(B!==void 0){if(B.item!==d){D[f]=!0;let Ie=K(d),je=b(Ie),ie={key:f,item:d,element:je};v.push(ie),O[f]=ie;return}v.push(B);return}let Ne=K(d),Me=b(Ne),ue={key:f,item:d,element:Me};v.push(ue),O[f]=ue});let $={contents:H.nextSibling};v.forEach(d=>{let f=$.contents;if(f==null){i.insertBefore(d.element,P);return}if(f===P){i.insertBefore(d.element,P);return}if(f===d.element){$.contents=f.nextSibling;return}Y(D[d.key],!1)?(F(f),i.replaceChild(d.element,f),$.contents=d.element.nextSibling):(i.insertBefore(d.element,f),$.contents=d.element.nextSibling)})},G=document.createDocumentFragment();return G.appendChild(H),s.peek(le).forEach(i=>{let m=X(i),g=K(i),E=b(g),v={key:m,item:i,element:E};O[m]=v,G.appendChild(E)}),G.appendChild(P),C(q,()=>{let i=w.run(()=>{Ce()},void 0);N(q,i)}),G}}let At={disposeElement:F,render:b};function $t(e){return{TAG:"Text",_0:e}}function Ct(e){return{TAG:"SignalText",_0:S.make(e,void 0)}}function Nt(e){return{TAG:"Fragment",_0:e}}function te(e){return{TAG:"SignalFragment",_0:e}}function Mt(e,t){return{TAG:"SignalFragment",_0:S.make(()=>s.get(e).map(t),void 0)}}function It(e,t,n){return{TAG:"KeyedList",signal:e,keyFn:t,renderItem:n}}function _(e,t,n,r,l){let u=t!==void 0?t:[].map(c=>c),a=n!==void 0?n:[].map(c=>c),o=r!==void 0?r:[].map(c=>c);return{TAG:"Element",tag:e,attrs:u,events:a,children:o}}function jt(e,t,n,r){return _("div",e,t,n)}function Rt(e,t,n,r){return _("span",e,t,n)}function xt(e,t,n,r){return _("button",e,t,n)}function Pt(e,t,n){return _("input",e,t,void 0)}function Dt(e,t,n,r){return _("h1",e,t,n)}function Ft(e,t,n,r){return _("h2",e,t,n)}function Lt(e,t,n,r){return _("h3",e,t,n)}function Gt(e,t,n,r){return _("p",e,t,n)}function Bt(e,t,n,r){return _("ul",e,t,n)}function Vt(e,t,n,r){return _("li",e,t,n)}function we(e,t,n,r){return _("a",e,t,n)}function ke(e,t){let n=b(e);t.appendChild(n)}function zt(e,t){let n=document.getElementById(t);if(n==null){console.error("Container element not found: "+t);return}else return ke(e,n)}let Oe=ve,Wt=ye,Kt=be;const Xt=Object.freeze(Object.defineProperty({__proto__:null,Attributes:Tt,DOM:wt,Reactivity:Ot,Render:At,a:we,attr:Oe,button:xt,computedAttr:Kt,div:jt,element:_,fragment:Nt,h1:Dt,h2:Ft,h3:Lt,input:Pt,keyedList:It,li:Vt,list:Mt,mount:ke,mountById:zt,p:Gt,signalAttr:Wt,signalFragment:te,span:Rt,text:$t,textSignal:Ct,ul:Bt},Symbol.toStringTag,{value:"Module"}));let T=s.make({pathname:"/",search:"",hash:""},void 0,void 0);function J(){return{pathname:window.location.pathname,search:window.location.search,hash:window.location.hash}}function qt(){s.set(T,J());let e=t=>s.set(T,J());window.addEventListener("popstate",e)}function Te(e,t,n,r){let l=t!==void 0?t:"",u=n!==void 0?n:"",a={pathname:e,search:l,hash:u},o=e+l+u,c={};window.history.pushState(c,"",o),s.set(T,a)}function Ht(e,t,n,r){let l=t!==void 0?t:"",u=n!==void 0?n:"",a={pathname:e,search:l,hash:u},o=e+l+u,c={};window.history.replaceState(c,"",o),s.set(T,a)}function Ut(e,t){return te(S.make(()=>{let n=s.get(T),r=ee(e,n.pathname);return typeof r!="object"?[]:[t(r._0)]},void 0))}function Jt(e){return te(S.make(()=>{let t=s.get(T),n=Fe(e,r=>{let l=ee(r.pattern,t.pathname);if(typeof l=="object")return r.render(l._0)});return n!==void 0?[n]:[]},void 0))}function Qt(e,t,n,r){let l=t!==void 0?t:[],u=n!==void 0?n:[],a=o=>{o.preventDefault(),Te(e,void 0,void 0)};return we(l.concat([Oe("href",e)]),[["click",a]],u)}let Yt,Zt;const en=Object.freeze(Object.defineProperty({__proto__:null,Component:Yt,Route:Zt,getCurrentLocation:J,init:qt,link:Qt,location:T,push:Te,replace:Ht,route:Ut,routes:Jt},Symbol.toStringTag,{value:"Module"}));let tn=s.Id,nn=s.Scheduler,rn=s.make,ln=s.get,un=s.peek,on=s.set,cn=s.update,dn=s.batch,sn=s.untrack,an={Id:tn,Scheduler:nn,make:rn,get:ln,peek:un,set:on,update:cn,batch:dn,untrack:sn},fn=S.Id,pn=S.Signal,mn=S.Observer,hn=S.Scheduler,_n=S.make,gn=S.dispose,Sn={Id:fn,Signal:pn,Observer:mn,Scheduler:hn,make:_n,dispose:gn},En=w.Id,vn=w.Observer,yn=w.Scheduler,bn=w.run,wn={Id:En,Observer:vn,Scheduler:yn,run:bn},kn=Xt,On=yt,Tn=en;exports.Component=kn;exports.Computed=Sn;exports.Effect=wn;exports.Route=On;exports.Router=Tn;exports.Signal=an;