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 +5 -5
- package/dist/xote.cjs +1 -1
- package/dist/xote.mjs +523 -613
- package/dist/xote.umd.js +1 -1
- package/package.json +7 -9
- package/rescript.json +30 -0
- package/src/Xote.res +23 -0
- package/src/Xote.res.mjs +88 -0
- package/src/Xote__Component.res +495 -0
- package/src/Xote__Component.res.mjs +487 -0
- package/src/Xote__JSX.res +305 -0
- package/src/Xote__JSX.res.mjs +244 -0
- package/src/Xote__Route.res +62 -0
- package/src/Xote__Route.res.mjs +56 -0
- package/src/Xote__Router.res +130 -0
- package/src/Xote__Router.res.mjs +116 -0
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
|
|
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
|
-
##
|
|
37
|
+
## Why Xote?
|
|
38
38
|
|
|
39
|
-
|
|
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;
|