xote 4.0.0 → 4.1.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 +30 -16
- package/dist/xote.cjs +1 -1
- package/dist/xote.mjs +612 -443
- package/dist/xote.umd.js +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,19 +1,18 @@
|
|
|
1
|
-
# xote
|
|
1
|
+
# xote
|
|
2
2
|

|
|
3
3
|

|
|
4
4
|

|
|
5
5
|
|
|
6
|
-
Xote is a lightweight
|
|
6
|
+
Xote is a lightweight UI library for ReScript that combines fine-grained reactivity with a minimal component system. Built on [rescript-signals](https://github.com/brnrdog/rescript-signals), it provides declarative components, JSX support, and signal-based routing for building reactive web applications.
|
|
7
7
|
|
|
8
8
|
## Features
|
|
9
9
|
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
- Signal-based router: SPA navigation with pattern matching and dynamic parameters
|
|
10
|
+
- **Reactive Components**: Declarative UI building with JSX support and direct DOM updates
|
|
11
|
+
- **Signal-based Reactivity**: Powered by [rescript-signals](https://github.com/brnrdog/rescript-signals) for automatic dependency tracking
|
|
12
|
+
- **Fine-grained Updates**: Direct DOM manipulation without virtual DOM diffing
|
|
13
|
+
- **Signal-based Router**: SPA navigation with pattern matching and dynamic parameters
|
|
14
|
+
- **Lightweight**: Minimal runtime footprint (~18kb minified)
|
|
15
|
+
- **Type-safe**: Full ReScript type safety throughout
|
|
17
16
|
|
|
18
17
|
## Getting Started
|
|
19
18
|
|
|
@@ -35,9 +34,17 @@ Then, add it to your ReScript project’s dependencies in `rescript.json`:
|
|
|
35
34
|
}
|
|
36
35
|
```
|
|
37
36
|
|
|
38
|
-
##
|
|
37
|
+
## What Makes Xote Unique?
|
|
39
38
|
|
|
40
|
-
Xote
|
|
39
|
+
While Xote uses **rescript-signals** for reactive primitives (Signal, Computed, Effect), it adds:
|
|
40
|
+
|
|
41
|
+
- **Component System**: A minimal but powerful component model with JSX support
|
|
42
|
+
- **Direct DOM Updates**: Fine-grained reactivity that updates DOM elements directly, no virtual DOM
|
|
43
|
+
- **Signal-based Router**: Client-side routing with pattern matching and reactive location state
|
|
44
|
+
- **Reactive Attributes**: Support for static, signal-based, and computed attributes on elements
|
|
45
|
+
- **Automatic Cleanup**: Effect disposal and memory management built into the component lifecycle
|
|
46
|
+
|
|
47
|
+
Xote focuses on clarity, control, and performance. The goal is to offer precise, fine-grained updates and predictable behavior with minimal abstractions.
|
|
41
48
|
|
|
42
49
|
### Quick Example
|
|
43
50
|
|
|
@@ -73,11 +80,18 @@ Component.mountById(<App />, "app")
|
|
|
73
80
|
|
|
74
81
|
## Core Concepts
|
|
75
82
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
- **
|
|
79
|
-
- **
|
|
80
|
-
- **
|
|
83
|
+
### Reactive Primitives (from rescript-signals)
|
|
84
|
+
|
|
85
|
+
- **Signal**: Reactive state container - `Signal.make(value)`
|
|
86
|
+
- **Computed**: Derived reactive value that updates automatically - `Computed.make(() => ...)`
|
|
87
|
+
- **Effect**: Side-effect functions that re-run when dependencies change - `Effect.run(() => ...)`
|
|
88
|
+
|
|
89
|
+
All reactive primitives feature automatic dependency tracking - no manual subscriptions needed.
|
|
90
|
+
|
|
91
|
+
### Xote Features
|
|
92
|
+
|
|
93
|
+
- **Component**: Declarative UI builder with JSX syntax and function-based APIs
|
|
94
|
+
- **Router**: Signal-based navigation for SPAs with pattern matching and dynamic routes
|
|
81
95
|
|
|
82
96
|
### Component Features
|
|
83
97
|
|
package/dist/xote.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});let w={contents:0};function j(){return w.contents=w.contents+1|0,w.contents}function te(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 ne(e){if(e!=null)return te(e)}function L(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 V(e,t){return e!==void 0?L(e):t}let F=(function(e,t){for(var n in e)t(n)});function C(e,t){if(e===t)return!0;let n=typeof e;if(n==="string"||n==="number"||n==="bigint"||n==="boolean"||n==="undefined"||e===null)return!1;let r=typeof t;if(n==="function"||r==="function")throw{RE_EXN_ID:"Invalid_argument",_1:"equal: functional value",Error:new Error};if(r==="number"||r==="bigint"||r==="undefined"||t===null)return!1;let l=e.TAG,o=t.TAG;if(l!==o)return!1;let i=e.length|0,u=t.length|0;if(i===u)if(Array.isArray(e)){let c=0;for(;;){let s=c;if(s===i)return!0;if(!C(e[s],t[s]))return!1;c=s+1|0}}else{if(e instanceof Date&&t instanceof Date)return!(e>t||e<t);{let c={contents:!0},s=f=>{if(!Object.prototype.hasOwnProperty.call(t,f)){c.contents=!1;return}},h=f=>{if(!Object.prototype.hasOwnProperty.call(e,f)||!C(t[f],e[f])){c.contents=!1;return}};return F(e,s),c.contents&&F(t,h),c.contents}}else return!1}let p=new Map,E=new Map,M=new Map,d={contents:void 0},O=new Set,N={contents:!1},S={contents:!1};function P(e){if(E.get(e)===void 0){E.set(e,new Set);return}}function re(e,t){P(t);let n=d.contents,r=p.get(e);if(n===void 0||r===void 0||n!==e||r.deps.has(t))return;r.deps.add(t);let l=E.get(t);if(l!==void 0){l.add(e);return}}function z(e){let t=M.get(e);if(t===void 0)return;M.delete(e);let n=p.get(t);if(n!==void 0){y(n),p.delete(t);return}}function y(e){e.deps.forEach(t=>{let n=E.get(t);if(n!==void 0)return n.delete(e.id),n.size===0&&!S.contents?z(t):void 0}),e.deps.clear()}function D(e){if(typeof e.kind=="object"){let r={contents:0};return e.deps.forEach(l=>{let o=E.get(l);if(o!==void 0){o.forEach(i=>{if(i===e.id)return;let u=p.get(i);if(u===void 0)return;if(typeof u.kind=="object"&&u.level>r.contents){r.contents=u.level;return}});return}}),r.contents+1|0}let n={contents:0};return e.deps.forEach(r=>{let l=E.get(r);if(l!==void 0){l.forEach(o=>{let i=p.get(o);if(i!==void 0&&i.level>n.contents){n.contents=i.level;return}});return}}),n.contents+1e3|0}function le(){for(;O.size>0;){let e=Array.from(O.values());O.clear(),e.sort((t,n)=>{let r=p.get(t),l=p.get(n);return r!==void 0?l!==void 0?r.level-l.level|0:-1:l!==void 0?1:0}),e.forEach(t=>{let n=p.get(t);if(n===void 0)return;S.contents=!0,y(n);let r=d.contents;d.contents=t;try{n.run(),S.contents=!1}catch(l){throw d.contents=r,S.contents=!1,l}d.contents=r,n.level=D(n)})}}function ue(e){P(e);let t=E.get(e);if(t!==void 0){if(t.forEach(n=>{O.add(n)}),N.contents)return;N.contents=!0,le(),N.contents=!1;return}}function q(e,t,n){let r=j();return P(r),{id:r,value:{contents:e},version:{contents:0},equals:V(n,C),name:t}}function oe(e){let t=d.contents;return t!==void 0&&re(t,e.id),e.value.contents}function ie(e){return e.value.contents}function I(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,ue(e.id)}function ce(e,t){I(e,t(e.value.contents))}let ae,se;const de=Object.freeze(Object.defineProperty({__proto__:null,Id:ae,Scheduler:se,get:oe,make:q,peek:ie,set:I,update:ce},Symbol.toStringTag,{value:"Module"}));function X(e,t,n){return{id:e,kind:t,run:n,deps:new Set,level:0}}function fe(e){let t=j(),n={contents:void 0},l=X(t,"Effect",()=>{let u=n.contents;u!==void 0&&u(),n.contents=e()});p.set(t,l),S.contents=!0,y(l);let o=d.contents;d.contents=t;try{l.run(),S.contents=!1}catch(u){throw d.contents=o,S.contents=!1,u}return d.contents=o,l.level=D(l),{dispose:()=>{let u=p.get(t);if(u===void 0)return;let c=n.contents;c!==void 0&&c(),y(u),p.delete(t)}}}let pe,_e,he;const me=Object.freeze(Object.defineProperty({__proto__:null,Id:pe,Observer:_e,Scheduler:he,run:fe},Symbol.toStringTag,{value:"Module"}));function Se(e){let t=q(void 0,void 0,void 0),n=j(),r=()=>{let i=e();I(t,i)},l=X(n,{NAME:"Computed",VAL:t.id},r);p.set(n,l),S.contents=!0,y(l);let o=d.contents;d.contents=n;try{l.run(),S.contents=!1}catch(i){throw d.contents=o,S.contents=!1,i}return d.contents=o,l.level=D(l),M.set(t.id,n),t}function ge(e){z(e.id)}let Ee,ve,be,Te;const ye=Object.freeze(Object.defineProperty({__proto__:null,Id:Ee,Observer:be,Scheduler:Te,Signal:ve,dispose:ge,make:Se},Symbol.toStringTag,{value:"Module"}));let a=de,m=ye,g=me;function Ae(e,t){let n=e.length,r=new Array(n),l=0;for(let o=0;o<n;++o){let i=e[o],u=t(i);u!==void 0&&(r[l]=L(u),l=l+1|0)}return r.length=l,r}function Oe(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 W(e){return Ae(e.split("/"),t=>{if(t!=="")return t.startsWith(":")?{TAG:"Param",_0:t.slice(1)}:{TAG:"Static",_0:t}})}function H(e,t){let n=t.split("/").filter(o=>o!=="");if(e.length!==n.length)return"NoMatch";let r={};return e.every((o,i)=>{let u=n[i];return o.TAG==="Static"?u===o._0:(r[o._0]=u,!0)})?{TAG:"Match",_0:r}:"NoMatch"}function G(e,t){return H(W(e),t)}const ke=Object.freeze(Object.defineProperty({__proto__:null,match:G,matchPath:H,parsePattern:W},Symbol.toStringTag,{value:"Module"}));function U(e,t){return[e,{TAG:"Static",_0:t}]}function we(e,t){return[e,{TAG:"SignalValue",_0:t}]}function Ne(e,t){return[e,{TAG:"Compute",_0:t}]}function Ce(e){return{TAG:"Text",_0:e}}function Me(e){return{TAG:"SignalText",_0:m.make(e)}}function $e(e){return{TAG:"Fragment",_0:e}}function R(e){return{TAG:"SignalFragment",_0:e}}function je(e,t){return{TAG:"SignalFragment",_0:m.make(()=>a.get(e).map(t))}}function _(e,t,n,r,l){let o=t!==void 0?t:[].map(c=>c),i=n!==void 0?n:[].map(c=>c),u=r!==void 0?r:[].map(c=>c);return{TAG:"Element",tag:e,attrs:o,events:i,children:u}}function Pe(e,t,n,r){return _("div",e,t,n)}function De(e,t,n,r){return _("span",e,t,n)}function Ie(e,t,n,r){return _("button",e,t,n)}function Ge(e,t,n){return _("input",e,t,void 0)}function Re(e,t,n,r){return _("h1",e,t,n)}function xe(e,t,n,r){return _("h2",e,t,n)}function Be(e,t,n,r){return _("h3",e,t,n)}function Fe(e,t,n,r){return _("p",e,t,n)}function Le(e,t,n,r){return _("ul",e,t,n)}function Ve(e,t,n,r){return _("li",e,t,n)}function J(e,t,n,r){return _("a",e,t,n)}function b(e,t){let n=V(ne(e.__xote_disposers),[]);e.__xote_disposers=n.concat([t])}function x(e){let t=e.__xote_disposers;t!=null&&(t.forEach(r=>r.dispose()),e.__xote_disposers=[]),Array.from(e.childNodes||[]).forEach(x)}function T(e){switch(e.TAG){case"Element":let t=document.createElement(e.tag);return e.attrs.forEach(s=>{let h=s[1],f=s[0];switch(h.TAG){case"Static":t.setAttribute(f,h._0);return;case"SignalValue":let A=h._0;t.setAttribute(f,a.peek(A));let Y=g.run(()=>{let k=a.get(A);t.setAttribute(f,k)});return b(t,Y);case"Compute":let Z=h._0,B=m.make(()=>Z());t.setAttribute(f,a.peek(B));let ee=g.run(()=>{let k=a.get(B);t.setAttribute(f,k)});return b(t,ee)}}),e.events.forEach(s=>{t.addEventListener(s[0],s[1])}),e.children.forEach(s=>{let h=T(s);t.appendChild(h)}),t;case"Text":return document.createTextNode(e._0);case"SignalText":let n=e._0,r=document.createTextNode(a.peek(n)),l=g.run(()=>{let s=a.get(n);r.textContent=s});return b(r,l),r;case"Fragment":let o=document.createDocumentFragment();return e._0.forEach(s=>{let h=T(s);o.appendChild(h)}),o;case"SignalFragment":let i=e._0,u=document.createElement("div");u.setAttribute("data-signal-fragment","true"),u.setAttribute("style","display: contents");let c=g.run(()=>{let s=a.get(i);Array.from(u.childNodes||[]).forEach(x),u.innerHTML="",s.forEach(f=>{let A=T(f);u.appendChild(A)})});return b(u,c),u}}function K(e,t){let n=T(e);t.appendChild(n)}function ze(e,t){let n=document.getElementById(t);if(n==null){console.error("Container element not found: "+t);return}else return K(e,n)}const qe=Object.freeze(Object.defineProperty({__proto__:null,a:J,addDisposer:b,attr:U,button:Ie,computedAttr:Ne,disposeElement:x,div:Pe,element:_,fragment:$e,h1:Re,h2:xe,h3:Be,input:Ge,li:Ve,list:je,mount:K,mountById:ze,p:Fe,render:T,signalAttr:we,signalFragment:R,span:De,text:Ce,textSignal:Me,ul:Le},Symbol.toStringTag,{value:"Module"}));let v=a.make({pathname:"/",search:"",hash:""},void 0,void 0);function $(){return{pathname:window.location.pathname,search:window.location.search,hash:window.location.hash}}function Xe(){a.set(v,$());let e=t=>a.set(v,$());window.addEventListener("popstate",e)}function Q(e,t,n,r){let l=t!==void 0?t:"",o=n!==void 0?n:"",i={pathname:e,search:l,hash:o},u=e+l+o,c={};window.history.pushState(c,"",u),a.set(v,i)}function We(e,t,n,r){let l=t!==void 0?t:"",o=n!==void 0?n:"",i={pathname:e,search:l,hash:o},u=e+l+o,c={};window.history.replaceState(c,"",u),a.set(v,i)}function He(e,t){return R(m.make(()=>{let n=a.get(v),r=G(e,n.pathname);return typeof r!="object"?[]:[t(r._0)]}))}function Ue(e){return R(m.make(()=>{let t=a.get(v),n=Oe(e,r=>{let l=G(r.pattern,t.pathname);if(typeof l=="object")return r.render(l._0)});return n!==void 0?[n]:[]}))}function Je(e,t,n,r){let l=t!==void 0?t:[],o=n!==void 0?n:[],i=u=>{u.preventDefault(),Q(e,void 0,void 0)};return J(l.concat([U("href",e)]),[["click",i]],o)}let Ke,Qe;const Ye=Object.freeze(Object.defineProperty({__proto__:null,Component:Ke,Route:Qe,getCurrentLocation:$,init:Xe,link:Je,location:v,push:Q,replace:We,route:He,routes:Ue},Symbol.toStringTag,{value:"Module"}));let Ze=a.Id,et=a.Scheduler,tt=a.make,nt=a.get,rt=a.peek,lt=a.set,ut=a.update,ot={Id:Ze,Scheduler:et,make:tt,get:nt,peek:rt,set:lt,update:ut},it=m.Id,ct=m.Signal,at=m.Observer,st=m.Scheduler,dt=m.make,ft=m.dispose,pt={Id:it,Signal:ct,Observer:at,Scheduler:st,make:dt,dispose:ft},_t=g.Id,ht=g.Observer,mt=g.Scheduler,St=g.run,gt={Id:_t,Observer:ht,Scheduler:mt,run:St},Et=qe,vt=ke,bt=Ye;exports.Component=Et;exports.Computed=pt;exports.Effect=gt;exports.Route=vt;exports.Router=bt;exports.Signal=ot;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});let R={contents:0};function z(){return R.contents=R.contents+1|0,R.contents}function ge(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 Se(e){if(e!=null)return ge(e)}function Q(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 V(e,t){return e!==void 0?Q(e):t}function ve(e,t,n){return e.reduce(n,t)}function Ee(e,t){let n=e.length,r=new Array(n),l=0;for(let o=0;o<n;++o){let u=e[o],s=t(u);s!==void 0&&(r[l]=Q(s),l=l+1|0)}return r.length=l,r}function we(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 d=new Map,N=new Map,M=new Map,a={contents:void 0},C=new Set,E={contents:!1},g={contents:!1};function B(e){if(N.get(e)===void 0){N.set(e,new Set);return}}function be(e,t){let n=N.get(e);if(n!==void 0){n.forEach(t);return}}function ye(e,t){let n=N.get(e);if(n!==void 0){n.add(t);return}}function ke(e,t){let n=N.get(e);if(n!==void 0){n.delete(t);return}}function Te(e){return Array.from(V(N.get(e),new Set).values())}function Y(e,t){let n=a.contents;a.contents=e;try{let r=t();return a.contents=n,r}catch(r){throw a.contents=n,r}}function Ae(e){let t=a.contents;a.contents=void 0;try{let n=e();return a.contents=t,n}catch(n){throw a.contents=t,n}}function Oe(e){let t=a.contents;return t!==void 0?t===e:!1}function Ce(e){if(!E.contents){E.contents=!0;try{e(),E.contents=!1;return}catch(t){throw E.contents=!1,t}}}function Ne(e,t){B(t);let n=Oe(e),r=d.get(e);if(n&&r!==void 0&&!r.deps.has(t))return r.deps.add(t),ye(t,e)}function $(e){e.deps.forEach(t=>ke(t,e.id)),e.deps.clear()}function $e(e){let t=M.get(e);if(t===void 0)return;M.delete(e);let n=d.get(t);if(n!==void 0){$(n),d.delete(t);return}}function Z(e){return ve(e,0,(t,n)=>n>t?n:t)}function Me(e){let t=[];return e.deps.forEach(n=>be(n,r=>{if(r===e.id)return;let l=d.get(r);if(l===void 0)return;if(typeof l.kind=="object"){t.push(l.level);return}})),Z(t)+1|0}function xe(e){let t=[];return e.deps.forEach(n=>{let r=M.get(n);if(r===void 0||r===e.id)return;let l=d.get(r);if(l!==void 0){t.push(l.level);return}}),Z(t)+1|0}function P(e){return typeof e.kind=="object"?xe(e):Me(e)}function Ie(e,t){let n=d.get(e),r=d.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,s=typeof r.kind=="object"?0:1,c=o-s|0;return c!==0?c:n.level-r.level|0}function je(e){g.contents=!0,$(e),Y(e.id,()=>{e.run(),g.contents=!1}),e.level=P(e)}function ee(){for(;C.size>0;){let e=Array.from(C.values());C.clear(),e.sort(Ie),e.forEach(t=>{let n=d.get(t);if(n!==void 0)return je(n)})}}function te(e){if(B(e),Te(e).forEach(t=>{let n=d.get(t);if(n===void 0)return;let r=n.kind;if(typeof r=="object")return n.dirty?void 0:(n.dirty=!0,te(r.VAL));C.add(t)}),C.size>0)return Ce(ee)}function ne(e){let t=M.get(e);if(t===void 0)return;let n=d.get(t);if(n!==void 0&&n.dirty){g.contents=!0,$(n),Y(t,()=>{n.run(),n.dirty=!1,g.contents=!1}),n.level=P(n);return}}function De(e){let t=E.contents;E.contents=!0;try{let n=e();return t||(E.contents=!1,C.size>0&&ee()),n}catch(n){throw t||(E.contents=!1),n}}let Pe=Ae,Ge=B;function re(e,t,n){let r=z();return Ge(r),{id:r,value:{contents:e},version:{contents:0},equals:V(n,(l,o)=>l===o),name:t}}function Re(e){ne(e.id);let t=a.contents;return t!==void 0&&Ne(t,e.id),e.value.contents}function Le(e){return ne(e.id),e.value.contents}function le(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,te(e.id)}function Fe(e,t){le(e,t(e.value.contents))}let ze,Ve,Be=De,We=Pe;const Xe=Object.freeze(Object.defineProperty({__proto__:null,Id:ze,Scheduler:Ve,batch:Be,get:Re,make:re,peek:Le,set:le,untrack:We,update:Fe},Symbol.toStringTag,{value:"Module"}));function ue(e,t,n){return{id:e,kind:t,run:n,deps:new Set,level:0,dirty:!0}}function qe(e){let t=z(),n={contents:void 0},l=ue(t,"Effect",()=>{let s=n.contents;s!==void 0&&s(),n.contents=e()});d.set(t,l),g.contents=!0,$(l);let o=a.contents;a.contents=t;try{l.run(),g.contents=!1}catch(s){throw a.contents=o,g.contents=!1,s}return a.contents=o,l.level=P(l),{dispose:()=>{let s=d.get(t);if(s===void 0)return;let c=n.contents;c!==void 0&&c(),$(s),d.delete(t)}}}let He,Ue,Je;const Ke=Object.freeze(Object.defineProperty({__proto__:null,Id:He,Observer:Ue,Scheduler:Je,run:qe},Symbol.toStringTag,{value:"Module"}));function Qe(e){let t=re(void 0,void 0,void 0),n=z(),r=()=>{let u=e();t.value.contents=u},l=ue(n,{NAME:"Computed",VAL:t.id},r);d.set(n,l),g.contents=!0,$(l);let o=a.contents;a.contents=n;try{l.run(),l.dirty=!1,g.contents=!1}catch(u){throw a.contents=o,g.contents=!1,u}return a.contents=o,l.level=P(l),M.set(t.id,n),t}function Ye(e){$e(e.id)}let Ze,et,tt,nt;const rt=Object.freeze(Object.defineProperty({__proto__:null,Id:Ze,Observer:tt,Scheduler:nt,Signal:et,dispose:Ye,make:Qe},Symbol.toStringTag,{value:"Module"}));let i=Xe,h=rt,_=Ke;function oe(e){return Ee(e.split("/"),t=>{if(t!=="")return t.startsWith(":")?{TAG:"Param",_0:t.slice(1)}:{TAG:"Static",_0:t}})}function ie(e,t){let n=t.split("/").filter(o=>o!=="");if(e.length!==n.length)return"NoMatch";let r={};return e.every((o,u)=>{let s=n[u];return o.TAG==="Static"?s===o._0:(r[o._0]=s,!0)})?{TAG:"Match",_0:r}:"NoMatch"}function W(e,t){return ie(oe(e),t)}const lt=Object.freeze(Object.defineProperty({__proto__:null,match:W,matchPath:ie,parsePattern:oe},Symbol.toStringTag,{value:"Module"}));function se(e,t){return[e,{TAG:"Static",_0:t}]}function ut(e,t){return[e,{TAG:"SignalValue",_0:t}]}function ot(e,t){return[e,{TAG:"Compute",_0:t}]}function it(e){return{TAG:"Text",_0:e}}function st(e){return{TAG:"SignalText",_0:h.make(e)}}function ct(e){return{TAG:"Fragment",_0:e}}function X(e){return{TAG:"SignalFragment",_0:e}}function at(e,t){return{TAG:"SignalFragment",_0:h.make(()=>i.get(e).map(t))}}function m(e,t,n,r,l){let o=t!==void 0?t:[].map(c=>c),u=n!==void 0?n:[].map(c=>c),s=r!==void 0?r:[].map(c=>c);return{TAG:"Element",tag:e,attrs:o,events:u,children:s}}function dt(e,t,n,r){return m("div",e,t,n)}function ft(e,t,n,r){return m("span",e,t,n)}function pt(e,t,n,r){return m("button",e,t,n)}function ht(e,t,n){return m("input",e,t,void 0)}function mt(e,t,n,r){return m("h1",e,t,n)}function _t(e,t,n,r){return m("h2",e,t,n)}function gt(e,t,n,r){return m("h3",e,t,n)}function St(e,t,n,r){return m("p",e,t,n)}function vt(e,t,n,r){return m("ul",e,t,n)}function Et(e,t,n,r){return m("li",e,t,n)}function ce(e,t,n,r){return m("a",e,t,n)}let w={contents:void 0};function wt(){return{disposers:[],signals:[],computeds:[]}}function A(e,t){let n=w.contents;w.contents=e;let r=t();return w.contents=n,r}function bt(e){let t=w.contents;if(t!==void 0){t.signals.push(e);return}}function yt(e){let t=w.contents;if(t!==void 0){t.computeds.push(e);return}}function kt(e){let t=w.contents;if(t!==void 0){t.disposers.push(e);return}}function y(e,t){let n=V(Se(e.__xote_disposers),[]);e.__xote_disposers=n.concat([t]);let r=w.contents;if(r!==void 0){r.disposers.push(t);return}}let L=(function(e){e.__devtoolsId&&window.__xoteDevToolsMarkAsDisposed&&window.__xoteDevToolsMarkAsDisposed(e.__devtoolsId)});function D(e){e.disposers.forEach(t=>t.dispose()),e.computeds.forEach(t=>{h.dispose(t),L(t)}),e.signals.forEach(t=>L(t))}function Tt(e){let t={disposers:[],signals:[],computeds:[]};return A(t,()=>e(()=>D(t))),()=>D(t)}function At(e){return{TAG:"LazyComponent",_0:e}}function q(e){let t=e.__xote_owner;t!=null&&(D(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(q)}function O(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,A(o,()=>{r.forEach(f=>{let p=f[1],S=f[0];switch(p.TAG){case"Static":let I=p._0;S==="value"&&l==="input"?u.value=I:u.setAttribute(S,I);return;case"SignalValue":let T=p._0;if(S==="value"&&l==="input"){u.value=i.peek(T);let b=_.run(()=>{let G=i.get(T);u.value=G});return y(u,b)}u.setAttribute(S,i.peek(T));let he=_.run(()=>{let b=i.get(T);u.setAttribute(S,b)});return y(u,he);case"Compute":let me=p._0,j=h.make(()=>me());if(S==="value"&&l==="input"){u.value=i.peek(j);let b=_.run(()=>{let G=i.get(j);u.value=G});return y(u,b)}u.setAttribute(S,i.peek(j));let _e=_.run(()=>{let b=i.get(j);u.setAttribute(S,b)});return y(u,_e)}}),n.forEach(f=>{u.addEventListener(f[0],f[1])}),t.forEach(f=>{let p=O(f);u.appendChild(p)})}),u;case"Text":return document.createTextNode(e._0);case"SignalText":let s=e._0,c={disposers:[],signals:[],computeds:[]},x=document.createTextNode(i.peek(s));return x.__xote_owner=c,A(c,()=>{let f=_.run(()=>{let p=i.get(s);x.textContent=p});y(x,f)}),x;case"Fragment":let H=document.createDocumentFragment();return e._0.forEach(f=>{let p=O(f);H.appendChild(p)}),H;case"SignalFragment":let fe=e._0,U={disposers:[],signals:[],computeds:[]},v=document.createElement("div");return v.setAttribute("data-signal-fragment","true"),v.setAttribute("style","display: contents"),v.__xote_owner=U,A(U,()=>{let f=_.run(()=>{let p=i.get(fe);Array.from(v.childNodes||[]).forEach(q),v.innerHTML="",p.forEach(I=>{let T=O(I);v.appendChild(T)})});y(v,f)}),v;case"LazyComponent":let J={disposers:[],signals:[],computeds:[]},pe=A(J,e._0),K=O(pe);return K.__xote_owner=J,K}}function ae(e,t){let n=O(e);t.appendChild(n)}function Ot(e,t){let n=document.getElementById(t);if(n==null){console.error("Container element not found: "+t);return}else return ae(e,n)}const Ct=Object.freeze(Object.defineProperty({__proto__:null,a:ce,addDisposer:y,attr:se,button:pt,component:At,computedAttr:ot,createOwner:wt,createRoot:Tt,currentOwner:w,disposeElement:q,disposeOwner:D,div:dt,element:m,fragment:ct,h1:mt,h2:_t,h3:gt,input:ht,li:Et,list:at,markAsDisposedInDevTools:L,mount:ae,mountById:Ot,p:St,registerComputed:yt,registerEffectDisposer:kt,registerSignal:bt,render:O,runWithOwner:A,signalAttr:ut,signalFragment:X,span:ft,text:it,textSignal:st,ul:vt},Symbol.toStringTag,{value:"Module"}));let k=i.make({pathname:"/",search:"",hash:""},void 0,void 0);function F(){return{pathname:window.location.pathname,search:window.location.search,hash:window.location.hash}}function Nt(){i.set(k,F());let e=t=>i.set(k,F());window.addEventListener("popstate",e)}function de(e,t,n,r){let l=t!==void 0?t:"",o=n!==void 0?n:"",u={pathname:e,search:l,hash:o},s=e+l+o,c={};window.history.pushState(c,"",s),i.set(k,u)}function $t(e,t,n,r){let l=t!==void 0?t:"",o=n!==void 0?n:"",u={pathname:e,search:l,hash:o},s=e+l+o,c={};window.history.replaceState(c,"",s),i.set(k,u)}function Mt(e,t){return X(h.make(()=>{let n=i.get(k),r=W(e,n.pathname);return typeof r!="object"?[]:[t(r._0)]}))}function xt(e){return X(h.make(()=>{let t=i.get(k),n=we(e,r=>{let l=W(r.pattern,t.pathname);if(typeof l=="object")return r.render(l._0)});return n!==void 0?[n]:[]}))}function It(e,t,n,r){let l=t!==void 0?t:[],o=n!==void 0?n:[],u=s=>{s.preventDefault(),de(e,void 0,void 0)};return ce(l.concat([se("href",e)]),[["click",u]],o)}let jt,Dt;const Pt=Object.freeze(Object.defineProperty({__proto__:null,Component:jt,Route:Dt,getCurrentLocation:F,init:Nt,link:It,location:k,push:de,replace:$t,route:Mt,routes:xt},Symbol.toStringTag,{value:"Module"}));let Gt=i.Id,Rt=i.Scheduler,Lt=i.make,Ft=i.get,zt=i.peek,Vt=i.set,Bt=i.update,Wt=i.batch,Xt=i.untrack,qt={Id:Gt,Scheduler:Rt,make:Lt,get:Ft,peek:zt,set:Vt,update:Bt,batch:Wt,untrack:Xt},Ht=h.Id,Ut=h.Signal,Jt=h.Observer,Kt=h.Scheduler,Qt=h.make,Yt=h.dispose,Zt={Id:Ht,Signal:Ut,Observer:Jt,Scheduler:Kt,make:Qt,dispose:Yt},en=_.Id,tn=_.Observer,nn=_.Scheduler,rn=_.run,ln={Id:en,Observer:tn,Scheduler:nn,run:rn},un=Ct,on=lt,sn=Pt;exports.Component=un;exports.Computed=Zt;exports.Effect=ln;exports.Route=on;exports.Router=sn;exports.Signal=qt;
|