xote 4.4.1 → 4.4.3

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/dist/xote.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});let J={contents:0};function Y(){return J.contents=J.contents+1|0,J.contents}function Pe(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 Pe(e)}function ce(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 Z(e,t){return e!==void 0?ce(e):t}function De(e,t,n){return e.reduce(n,t)}function Fe(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]=ce(o),l=l+1|0)}return r.length=l,r}function Le(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,R=new Map,G=new Map,p={contents:void 0},j=new Set,k={contents:!1},y={contents:!1};function ee(e){if(R.get(e)===void 0){R.set(e,new Set);return}}function Ge(e,t){let n=R.get(e);if(n!==void 0){n.forEach(t);return}}function Be(e,t){let n=R.get(e);if(n!==void 0){n.add(t);return}}function Ve(e,t){let n=R.get(e);if(n!==void 0){n.delete(t);return}}function ze(e){return Array.from(Z(R.get(e),new Set).values())}function de(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 We(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 Ke(e){let t=p.contents;return t!==void 0?t===e:!1}function Xe(e){if(!k.contents){k.contents=!0;try{e(),k.contents=!1;return}catch(t){throw k.contents=!1,t}}}function qe(e,t){ee(t);let n=Ke(e),r=h.get(e);if(n&&r!==void 0&&!r.deps.has(t))return r.deps.add(t),Be(t,e)}function P(e){e.deps.forEach(t=>Ve(t,e.id)),e.deps.clear()}function He(e){let t=G.get(e);if(t===void 0)return;G.delete(e);let n=h.get(t);if(n!==void 0){P(n),h.delete(t);return}}function se(e){return De(e,0,(t,n)=>n>t?n:t)}function Ue(e){let t=[];return e.deps.forEach(n=>Ge(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}})),se(t)+1|0}function Je(e){let t=[];return e.deps.forEach(n=>{let r=G.get(n);if(r===void 0||r===e.id)return;let l=h.get(r);if(l!==void 0){t.push(l.level);return}}),se(t)+1|0}function W(e){return typeof e.kind=="object"?Je(e):Ue(e)}function Qe(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 Ye(e){y.contents=!0,P(e),de(e.id,()=>{e.run(),y.contents=!1}),e.level=W(e)}function ae(){for(;j.size>0;){let e=Array.from(j.values());j.clear(),e.sort(Qe),e.forEach(t=>{let n=h.get(t);if(n!==void 0)return Ye(n)})}}function fe(e){if(ee(e),ze(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,fe(r.VAL));j.add(t)}),j.size>0)return Xe(ae)}function pe(e){let t=G.get(e);if(t===void 0)return;let n=h.get(t);if(n!==void 0&&n.dirty){y.contents=!0,P(n),de(t,()=>{n.run(),n.dirty=!1,y.contents=!1}),n.level=W(n);return}}function Ze(e){let t=k.contents;k.contents=!0;try{let n=e();return t||(k.contents=!1,j.size>0&&ae()),n}catch(n){throw t||(k.contents=!1),n}}let et=We,tt=ee;function me(e,t,n){let r=Y();return tt(r),{id:r,value:{contents:e},version:{contents:0},equals:Z(n,(l,u)=>l===u),name:t}}function nt(e){pe(e.id);let t=p.contents;return t!==void 0&&qe(t,e.id),e.value.contents}function rt(e){return pe(e.id),e.value.contents}function he(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,fe(e.id)}function lt(e,t){he(e,t(e.value.contents))}let ut,it,ot=Ze,ct=et;const dt=Object.freeze(Object.defineProperty({__proto__:null,Id:ut,Scheduler:it,batch:ot,get:nt,make:me,peek:rt,set:he,untrack:ct,update:lt},Symbol.toStringTag,{value:"Module"}));function _e(e,t,n,r){return{id:e,kind:t,run:n,deps:new Set,level:0,dirty:!0,name:r}}function st(e,t){let n=Y(),r={contents:void 0},u=_e(n,"Effect",()=>{let c=r.contents;c!==void 0&&c(),r.contents=e()},t);h.set(n,u),y.contents=!0,P(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=W(u),{dispose:()=>{let c=h.get(n);if(c===void 0)return;let x=r.contents;x!==void 0&&x(),P(c),h.delete(n)}}}let at,ft,pt;const mt=Object.freeze(Object.defineProperty({__proto__:null,Id:at,Observer:ft,Scheduler:pt,run:st},Symbol.toStringTag,{value:"Module"}));function ht(e,t){let n=me(void 0,t,void 0),r=Y(),l=()=>{let o=e();n.value.contents=o},u=_e(r,{NAME:"Computed",VAL:n.id},l,void 0);h.set(r,u),y.contents=!0,P(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=W(u),G.set(n.id,r),n}function _t(e){He(e.id)}let gt,St,Et,vt;const yt=Object.freeze(Object.defineProperty({__proto__:null,Id:gt,Observer:Et,Scheduler:vt,Signal:St,dispose:_t,make:ht},Symbol.toStringTag,{value:"Module"}));let s=dt,S=yt,w=mt;function ge(e){return Fe(e.split("/"),t=>{if(t!=="")return t.startsWith(":")?{TAG:"Param",_0:t.slice(1)}:{TAG:"Static",_0:t}})}function Se(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 te(e,t){return Se(ge(e),t)}const bt=Object.freeze(Object.defineProperty({__proto__:null,match:te,matchPath:Se,parsePattern:ge},Symbol.toStringTag,{value:"Module"}));function wt(e,t){delete e[t]}function C(e,t,n){switch(t){case"checked":e.checked=n==="true";return;case"value":e.value=n;return;default:e.setAttribute(t,n);return}}let kt={setAttrOrProp:C},z={contents:void 0};function Ot(){return{disposers:[],computeds:[]}}function N(e,t){let n=z.contents;z.contents=e;let r=t();return z.contents=n,r}function M(e,t){e.disposers.push(t)}function Ee(e){e.disposers.forEach(t=>t.dispose()),e.computeds.forEach(t=>S.dispose(t))}function I(e,t){e.__xote_owner__=t}function ve(e){return xe(e.__xote_owner__)}let Tt={currentOwner:z,createOwner:Ot,runWithOwner:N,addDisposer:M,disposeOwner:Ee,setOwner:I,getOwner:ve};function ye(e,t){return[e,{TAG:"Static",_0:t}]}function be(e,t){return[e,{TAG:"SignalValue",_0:t}]}function we(e,t){return[e,{TAG:"Compute",_0:t}]}let At={$$static:ye,signal:be,computed:we};function L(e){let t=ve(e);t!==void 0&&Ee(t),Array.from(e.childNodes||[]).forEach(L)}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 I(l,u),N(u,()=>{r.forEach(i=>{let m=i[1],g=i[0];switch(m.TAG){case"Static":return C(l,g,m._0);case"SignalValue":let E=m._0;C(l,g,s.peek(E));let v=w.run(()=>{C(l,g,s.get(E))},void 0);return M(u,v);case"Compute":let F=m._0;C(l,g,F());let $=w.run(()=>{C(l,g,F())},void 0);return M(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 I(o,c),N(c,()=>{let i=w.run(()=>{o.textContent=s.get(a)},void 0);M(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 $e=e._0,K={disposers:[],computeds:[]},A=document.createElement("div");return A.setAttribute("style","display: contents"),I(A,K),N(K,()=>{let i=w.run(()=>{let m=s.get($e);Array.from(A.childNodes||[]).forEach(L),A.innerHTML="",m.forEach(E=>{let v=b(E);A.appendChild(v)})},void 0);M(K,i)}),A;case"LazyComponent":let re={disposers:[],computeds:[]},Ce=N(re,e._0),le=b(Ce);return I(le,re),le;case"KeyedList":let X=e.renderItem,q=e.keyFn,ue=e.signal,H={disposers:[],computeds:[]},U=document.createComment(" keyed-list-start "),D=document.createComment(" keyed-list-end ");I(U,H);let O={},Ne=()=>{let i=D.parentNode;if(i==null)return;let m=s.get(ue),g={};m.forEach(d=>{g[q(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){L(f.element),f.element.remove(),wt(O,d);return}});let v=[],F={};m.forEach(d=>{let f=q(d),V=O[f];if(V!==void 0){if(V.item!==d){F[f]=!0;let je=X(d),Re=b(je),oe={key:f,item:d,element:Re};v.push(oe),O[f]=oe;return}v.push(V);return}let Me=X(d),Ie=b(Me),ie={key:f,item:d,element:Ie};v.push(ie),O[f]=ie});let $={contents:U.nextSibling};v.forEach(d=>{let f=$.contents;if(f==null){i.insertBefore(d.element,D);return}if(f===D){i.insertBefore(d.element,D);return}if(f===d.element){$.contents=f.nextSibling;return}Z(F[d.key],!1)?(L(f),i.replaceChild(d.element,f),$.contents=d.element.nextSibling):(i.insertBefore(d.element,f),$.contents=d.element.nextSibling)})},B=document.createDocumentFragment();return B.appendChild(U),s.peek(ue).forEach(i=>{let m=q(i),g=X(i),E=b(g),v={key:m,item:i,element:E};O[m]=v,B.appendChild(E)}),B.appendChild(D),N(H,()=>{let i=w.run(()=>{Ne()},void 0);M(H,i)}),B}}let $t={disposeElement:L,render:b};function Ct(e){return{TAG:"Text",_0:e}}function Nt(e){return{TAG:"SignalText",_0:S.make(e,void 0)}}function Mt(e){return{TAG:"Fragment",_0:e}}function ne(e){return{TAG:"SignalFragment",_0:e}}function It(e,t){return{TAG:"SignalFragment",_0:S.make(()=>s.get(e).map(t),void 0)}}function jt(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 Rt(e,t,n,r){return _("div",e,t,n)}function Pt(e,t,n,r){return _("span",e,t,n)}function xt(e,t,n,r){return _("button",e,t,n)}function Dt(e,t,n){return _("input",e,t,void 0)}function Ft(e,t,n,r){return _("h1",e,t,n)}function Lt(e,t,n,r){return _("h2",e,t,n)}function Gt(e,t,n,r){return _("h3",e,t,n)}function Bt(e,t,n,r){return _("p",e,t,n)}function Vt(e,t,n,r){return _("ul",e,t,n)}function zt(e,t,n,r){return _("li",e,t,n)}function ke(e,t,n,r){return _("a",e,t,n)}function Oe(e,t){let n=b(e);t.appendChild(n)}function Wt(e,t){let n=document.getElementById(t);if(n==null){console.error("Container element not found: "+t);return}else return Oe(e,n)}let Te=ye,Kt=be,Xt=we;const qt=Object.freeze(Object.defineProperty({__proto__:null,Attributes:At,DOM:kt,Reactivity:Tt,Render:$t,a:ke,attr:Te,button:xt,computedAttr:Xt,div:Rt,element:_,fragment:Mt,h1:Ft,h2:Lt,h3:Gt,input:Dt,keyedList:jt,li:zt,list:It,mount:Oe,mountById:Wt,p:Bt,signalAttr:Kt,signalFragment:ne,span:Pt,text:Ct,textSignal:Nt,ul:Vt},Symbol.toStringTag,{value:"Module"}));let T=s.make({pathname:"/",search:"",hash:""},void 0,void 0);function Q(){return{pathname:window.location.pathname,search:window.location.search,hash:window.location.hash}}function Ht(){s.set(T,Q());let e=t=>s.set(T,Q());window.addEventListener("popstate",e)}function Ae(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 Ut(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 Jt(e,t){return ne(S.make(()=>{let n=s.get(T),r=te(e,n.pathname);return typeof r!="object"?[]:[t(r._0)]},void 0))}function Qt(e){return ne(S.make(()=>{let t=s.get(T),n=Le(e,r=>{let l=te(r.pattern,t.pathname);if(typeof l=="object")return r.render(l._0)});return n!==void 0?[n]:[]},void 0))}function Yt(e,t,n,r){let l=t!==void 0?t:[],u=n!==void 0?n:[],a=o=>{o.preventDefault(),Ae(e,void 0,void 0)};return ke(l.concat([Te("href",e)]),[["click",a]],u)}let Zt,en;const tn=Object.freeze(Object.defineProperty({__proto__:null,Component:Zt,Route:en,getCurrentLocation:Q,init:Ht,link:Yt,location:T,push:Ae,replace:Ut,route:Jt,routes:Qt},Symbol.toStringTag,{value:"Module"}));let nn=s.Id,rn=s.Scheduler,ln=s.make,un=s.get,on=s.peek,cn=s.set,dn=s.update,sn=s.batch,an=s.untrack,fn={Id:nn,Scheduler:rn,make:ln,get:un,peek:on,set:cn,update:dn,batch:sn,untrack:an},pn=S.Id,mn=S.Signal,hn=S.Observer,_n=S.Scheduler,gn=S.make,Sn=S.dispose,En={Id:pn,Signal:mn,Observer:hn,Scheduler:_n,make:gn,dispose:Sn},vn=w.Id,yn=w.Observer,bn=w.Scheduler,wn=w.run,kn={Id:vn,Observer:yn,Scheduler:bn,run:wn},On=qt,Tn=bt,An=tn;exports.Component=On;exports.Computed=En;exports.Effect=kn;exports.Route=Tn;exports.Router=An;exports.Signal=fn;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});let J={contents:0};function Y(){return J.contents=J.contents+1|0,J.contents}function Pe(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 Pe(e)}function ce(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 Z(e,t){return e!==void 0?ce(e):t}function De(e,t,n){return e.reduce(n,t)}function Fe(e,t){let n=e.length,r=new Array(n),l=0;for(let u=0;u<n;++u){let s=e[u],o=t(s);o!==void 0&&(r[l]=ce(o),l=l+1|0)}return r.length=l,r}function Le(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,R=new Map,G=new Map,p={contents:void 0},j=new Set,O={contents:!1},v={contents:!1};function ee(e){if(R.get(e)===void 0){R.set(e,new Set);return}}function Ge(e,t){let n=R.get(e);if(n!==void 0){n.forEach(t);return}}function Be(e,t){let n=R.get(e);if(n!==void 0){n.add(t);return}}function Ve(e,t){let n=R.get(e);if(n!==void 0){n.delete(t);return}}function ze(e){return Array.from(Z(R.get(e),new Set).values())}function de(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 We(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 qe(e){let t=p.contents;return t!==void 0?t===e:!1}function Ke(e){if(!O.contents){O.contents=!0;try{e(),O.contents=!1;return}catch(t){throw O.contents=!1,t}}}function Xe(e,t){ee(t);let n=qe(e),r=h.get(e);if(n&&r!==void 0&&!r.deps.has(t))return r.deps.add(t),Be(t,e)}function P(e){e.deps.forEach(t=>Ve(t,e.id)),e.deps.clear()}function He(e){let t=G.get(e);if(t===void 0)return;G.delete(e);let n=h.get(t);if(n!==void 0){P(n),h.delete(t);return}}function ae(e){return De(e,0,(t,n)=>n>t?n:t)}function Ue(e){let t=[];return e.deps.forEach(n=>Ge(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}})),ae(t)+1|0}function Je(e){let t=[];return e.deps.forEach(n=>{let r=G.get(n);if(r===void 0||r===e.id)return;let l=h.get(r);if(l!==void 0){t.push(l.level);return}}),ae(t)+1|0}function W(e){return typeof e.kind=="object"?Je(e):Ue(e)}function Qe(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 Ye(e){v.contents=!0,P(e),de(e.id,()=>{e.run(),v.contents=!1}),e.level=W(e)}function se(){for(;j.size>0;){let e=Array.from(j.values());j.clear(),e.sort(Qe),e.forEach(t=>{let n=h.get(t);if(n!==void 0)return Ye(n)})}}function fe(e){if(ee(e),ze(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,fe(r.VAL));j.add(t)}),j.size>0)return Ke(se)}function pe(e){let t=G.get(e);if(t===void 0)return;let n=h.get(t);if(n!==void 0&&n.dirty){v.contents=!0,P(n),de(t,()=>{n.run(),n.dirty=!1,v.contents=!1}),n.level=W(n);return}}function Ze(e){let t=O.contents;O.contents=!0;try{let n=e();return t||(O.contents=!1,j.size>0&&se()),n}catch(n){throw t||(O.contents=!1),n}}let et=We,tt=ee;function me(e,t,n){let r=Y();return tt(r),{id:r,value:{contents:e},version:{contents:0},equals:Z(n,(l,u)=>l===u),name:t}}function nt(e){pe(e.id);let t=p.contents;return t!==void 0&&Xe(t,e.id),e.value.contents}function rt(e){return pe(e.id),e.value.contents}function he(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,fe(e.id)}function lt(e,t){he(e,t(e.value.contents))}let ut,it,ot=Ze,ct=et;const dt=Object.freeze(Object.defineProperty({__proto__:null,Id:ut,Scheduler:it,batch:ot,get:nt,make:me,peek:rt,set:he,untrack:ct,update:lt},Symbol.toStringTag,{value:"Module"}));function _e(e,t,n,r){return{id:e,kind:t,run:n,deps:new Set,level:0,dirty:!0,name:r}}function at(e,t){let n=Y(),r={contents:void 0},u=_e(n,"Effect",()=>{let c=r.contents;c!==void 0&&c(),r.contents=e()},t);h.set(n,u),v.contents=!0,P(u);let s=p.contents;p.contents=n;try{u.run(),v.contents=!1}catch(c){throw p.contents=s,v.contents=!1,c}return p.contents=s,u.level=W(u),{dispose:()=>{let c=h.get(n);if(c===void 0)return;let x=r.contents;x!==void 0&&x(),P(c),h.delete(n)}}}let st,ft,pt;const mt=Object.freeze(Object.defineProperty({__proto__:null,Id:st,Observer:ft,Scheduler:pt,run:at},Symbol.toStringTag,{value:"Module"}));function ht(e,t){let n=me(void 0,t,void 0),r=Y(),l=()=>{let o=e();n.value.contents=o},u=_e(r,{NAME:"Computed",VAL:n.id},l,void 0);h.set(r,u),v.contents=!0,P(u);let s=p.contents;p.contents=r;try{u.run(),u.dirty=!1,v.contents=!1}catch(o){throw p.contents=s,v.contents=!1,o}return p.contents=s,u.level=W(u),G.set(n.id,r),n}function _t(e){He(e.id)}let gt,St,Et,bt;const vt=Object.freeze(Object.defineProperty({__proto__:null,Id:gt,Observer:Et,Scheduler:bt,Signal:St,dispose:_t,make:ht},Symbol.toStringTag,{value:"Module"}));let a=dt,S=vt,w=mt;function ge(e){return Fe(e.split("/"),t=>{if(t!=="")return t.startsWith(":")?{TAG:"Param",_0:t.slice(1)}:{TAG:"Static",_0:t}})}function Se(e,t){let n=t.split("/").filter(u=>u!=="");if(e.length!==n.length)return"NoMatch";let r={};return e.every((u,s)=>{let o=n[s];return u.TAG==="Static"?o===u._0:(r[u._0]=o,!0)})?{TAG:"Match",_0:r}:"NoMatch"}function te(e,t){return Se(ge(e),t)}const yt=Object.freeze(Object.defineProperty({__proto__:null,match:te,matchPath:Se,parsePattern:ge},Symbol.toStringTag,{value:"Module"}));function wt(e,t){delete e[t]}function C(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 Ot={setAttrOrProp:C},z={contents:void 0};function kt(){return{disposers:[],computeds:[]}}function N(e,t){let n=z.contents;z.contents=e;let r=t();return z.contents=n,r}function M(e,t){e.disposers.push(t)}function Ee(e){e.disposers.forEach(t=>t.dispose()),e.computeds.forEach(t=>S.dispose(t))}function I(e,t){e.__xote_owner__=t}function be(e){return xe(e.__xote_owner__)}let Tt={currentOwner:z,createOwner:kt,runWithOwner:N,addDisposer:M,disposeOwner:Ee,setOwner:I,getOwner:be};function ve(e,t){return[e,{TAG:"Static",_0:t}]}function ye(e,t){return[e,{TAG:"SignalValue",_0:t}]}function we(e,t){return[e,{TAG:"Compute",_0:t}]}let At={$$static:ve,signal:ye,computed:we};function L(e){let t=be(e);t!==void 0&&Ee(t),Array.from(e.childNodes||[]).forEach(L)}function y(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 I(l,u),N(u,()=>{r.forEach(i=>{let m=i[1],g=i[0];switch(m.TAG){case"Static":return C(l,g,m._0);case"SignalValue":let E=m._0;C(l,g,a.peek(E));let b=w.run(()=>{C(l,g,a.get(E))},void 0);return M(u,b);case"Compute":let F=m._0;C(l,g,F());let $=w.run(()=>{C(l,g,F())},void 0);return M(u,$)}}),n.forEach(i=>{l.addEventListener(i[0],i[1])}),t.forEach(i=>{let m=y(i);l.appendChild(m)})}),l;case"Text":return document.createTextNode(e._0);case"SignalText":let s=e._0,o=document.createTextNode(a.peek(s)),c={disposers:[],computeds:[]};return I(o,c),N(c,()=>{let i=w.run(()=>{o.textContent=a.get(s)},void 0);M(c,i)}),o;case"Fragment":let x=document.createDocumentFragment();return e._0.forEach(i=>{let m=y(i);x.appendChild(m)}),x;case"SignalFragment":let $e=e._0,q={disposers:[],computeds:[]},A=document.createElement("div");return A.setAttribute("style","display: contents"),I(A,q),N(q,()=>{let i=w.run(()=>{let m=a.get($e);Array.from(A.childNodes||[]).forEach(L),A.innerHTML="",m.forEach(E=>{let b=y(E);A.appendChild(b)})},void 0);M(q,i)}),A;case"LazyComponent":let re={disposers:[],computeds:[]},Ce=N(re,e._0),le=y(Ce);return I(le,re),le;case"KeyedList":let K=e.renderItem,X=e.keyFn,ue=e.signal,H={disposers:[],computeds:[]},U=document.createComment(" keyed-list-start "),D=document.createComment(" keyed-list-end ");I(U,H);let k={},Ne=()=>{let i=D.parentNode;if(i==null)return;let m=a.get(ue),g={};m.forEach(d=>{g[X(d)]=d});let E=[];Object.keys(k).forEach(d=>{if(g[d]===void 0){E.push(d);return}}),E.forEach(d=>{let f=k[d];if(f!==void 0){L(f.element),f.element.remove(),wt(k,d);return}});let b=[],F={};m.forEach(d=>{let f=X(d),V=k[f];if(V!==void 0){if(V.item!==d){F[f]=!0;let je=K(d),Re=y(je),oe={key:f,item:d,element:Re};b.push(oe),k[f]=oe;return}b.push(V);return}let Me=K(d),Ie=y(Me),ie={key:f,item:d,element:Ie};b.push(ie),k[f]=ie});let $={contents:U.nextSibling};b.forEach(d=>{let f=$.contents;if(f==null){i.insertBefore(d.element,D);return}if(f===D){i.insertBefore(d.element,D);return}if(f===d.element){$.contents=f.nextSibling;return}Z(F[d.key],!1)?(L(f),i.replaceChild(d.element,f),$.contents=d.element.nextSibling):(i.insertBefore(d.element,f),$.contents=d.element.nextSibling)})},B=document.createDocumentFragment();return B.appendChild(U),a.peek(ue).forEach(i=>{let m=X(i),g=K(i),E=y(g),b={key:m,item:i,element:E};k[m]=b,B.appendChild(E)}),B.appendChild(D),N(H,()=>{let i=w.run(()=>{Ne()},void 0);M(H,i)}),B}}let $t={disposeElement:L,render:y};function Ct(e){return{TAG:"Text",_0:e}}function Nt(e){return{TAG:"SignalText",_0:S.make(e,void 0)}}function Mt(e){return{TAG:"Fragment",_0:e}}function ne(e){return{TAG:"SignalFragment",_0:e}}function It(e,t){return{TAG:"SignalFragment",_0:S.make(()=>a.get(e).map(t),void 0)}}function jt(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),s=n!==void 0?n:[].map(c=>c),o=r!==void 0?r:[].map(c=>c);return{TAG:"Element",tag:e,attrs:u,events:s,children:o}}function Rt(e,t,n,r){return _("div",e,t,n)}function Pt(e,t,n,r){return _("span",e,t,n)}function xt(e,t,n,r){return _("button",e,t,n)}function Dt(e,t,n){return _("input",e,t,void 0)}function Ft(e,t,n,r){return _("h1",e,t,n)}function Lt(e,t,n,r){return _("h2",e,t,n)}function Gt(e,t,n,r){return _("h3",e,t,n)}function Bt(e,t,n,r){return _("p",e,t,n)}function Vt(e,t,n,r){return _("ul",e,t,n)}function zt(e,t,n,r){return _("li",e,t,n)}function Oe(e,t,n,r){return _("a",e,t,n)}function ke(e,t){let n=y(e);t.appendChild(n)}function Wt(e,t){let n=document.getElementById(t);if(n==null){console.error("Container element not found: "+t);return}else return ke(e,n)}let Te=ve,qt=ye,Kt=we;const Xt=Object.freeze(Object.defineProperty({__proto__:null,Attributes:At,DOM:Ot,Reactivity:Tt,Render:$t,a:Oe,attr:Te,button:xt,computedAttr:Kt,div:Rt,element:_,fragment:Mt,h1:Ft,h2:Lt,h3:Gt,input:Dt,keyedList:jt,li:zt,list:It,mount:ke,mountById:Wt,p:Bt,signalAttr:qt,signalFragment:ne,span:Pt,text:Ct,textSignal:Nt,ul:Vt},Symbol.toStringTag,{value:"Module"}));let T=a.make({pathname:"/",search:"",hash:""},void 0,void 0);function Q(){return{pathname:window.location.pathname,search:window.location.search,hash:window.location.hash}}function Ht(){a.set(T,Q());let e=t=>a.set(T,Q());window.addEventListener("popstate",e)}function Ae(e,t,n,r){let l=t!==void 0?t:"",u=n!==void 0?n:"",s={pathname:e,search:l,hash:u},o=e+l+u,c={};window.history.pushState(c,"",o),a.set(T,s)}function Ut(e,t,n,r){let l=t!==void 0?t:"",u=n!==void 0?n:"",s={pathname:e,search:l,hash:u},o=e+l+u,c={};window.history.replaceState(c,"",o),a.set(T,s)}function Jt(e,t){return ne(S.make(()=>{let n=a.get(T),r=te(e,n.pathname);return typeof r!="object"?[]:[t(r._0)]},void 0))}function Qt(e){return ne(S.make(()=>{let t=a.get(T),n=Le(e,r=>{let l=te(r.pattern,t.pathname);if(typeof l=="object")return r.render(l._0)});return n!==void 0?[n]:[]},void 0))}function Yt(e,t,n,r){let l=t!==void 0?t:[],u=n!==void 0?n:[],s=o=>{o.preventDefault(),Ae(e,void 0,void 0)};return Oe(l.concat([Te("href",e)]),[["click",s]],u)}let Zt,en;const tn=Object.freeze(Object.defineProperty({__proto__:null,Component:Zt,Route:en,getCurrentLocation:Q,init:Ht,link:Yt,location:T,push:Ae,replace:Ut,route:Jt,routes:Qt},Symbol.toStringTag,{value:"Module"}));let nn=a.Id,rn=a.Scheduler,ln=a.make,un=a.get,on=a.peek,cn=a.set,dn=a.update,an=a.batch,sn=a.untrack,fn={Id:nn,Scheduler:rn,make:ln,get:un,peek:on,set:cn,update:dn,batch:an,untrack:sn},pn=S.Id,mn=S.Signal,hn=S.Observer,_n=S.Scheduler,gn=S.make,Sn=S.dispose,En={Id:pn,Signal:mn,Observer:hn,Scheduler:_n,make:gn,dispose:Sn},bn=w.Id,vn=w.Observer,yn=w.Scheduler,wn=w.run,On={Id:bn,Observer:vn,Scheduler:yn,run:wn},kn=Xt,Tn=yt,An=tn;exports.Component=kn;exports.Computed=En;exports.Effect=On;exports.Route=Tn;exports.Router=An;exports.Signal=fn;
package/dist/xote.mjs CHANGED
@@ -33,7 +33,7 @@ function De(e, t, n) {
33
33
  function Fe(e, t) {
34
34
  let n = e.length, r = new Array(n), l = 0;
35
35
  for (let u = 0; u < n; ++u) {
36
- let a = e[u], o = t(a);
36
+ let s = e[u], o = t(s);
37
37
  o !== void 0 && (r[l] = ce(o), l = l + 1 | 0);
38
38
  }
39
39
  return r.length = l, r;
@@ -54,7 +54,7 @@ let h = /* @__PURE__ */ new Map(), x = /* @__PURE__ */ new Map(), G = /* @__PURE
54
54
  contents: void 0
55
55
  }, j = /* @__PURE__ */ new Set(), k = {
56
56
  contents: !1
57
- }, y = {
57
+ }, v = {
58
58
  contents: !1
59
59
  };
60
60
  function ee(e) {
@@ -107,11 +107,11 @@ function We(e) {
107
107
  throw p.contents = t, n;
108
108
  }
109
109
  }
110
- function Ke(e) {
110
+ function qe(e) {
111
111
  let t = p.contents;
112
112
  return t !== void 0 ? t === e : !1;
113
113
  }
114
- function Xe(e) {
114
+ function Ke(e) {
115
115
  if (!k.contents) {
116
116
  k.contents = !0;
117
117
  try {
@@ -122,9 +122,9 @@ function Xe(e) {
122
122
  }
123
123
  }
124
124
  }
125
- function qe(e, t) {
125
+ function Xe(e, t) {
126
126
  ee(t);
127
- let n = Ke(e), r = h.get(e);
127
+ let n = qe(e), r = h.get(e);
128
128
  if (n && r !== void 0 && !r.deps.has(t))
129
129
  return r.deps.add(t), Be(t, e);
130
130
  }
@@ -142,7 +142,7 @@ function He(e) {
142
142
  return;
143
143
  }
144
144
  }
145
- function se(e) {
145
+ function ae(e) {
146
146
  return De(e, 0, (t, n) => n > t ? n : t);
147
147
  }
148
148
  function Ue(e) {
@@ -157,7 +157,7 @@ function Ue(e) {
157
157
  t.push(l.level);
158
158
  return;
159
159
  }
160
- })), se(t) + 1 | 0;
160
+ })), ae(t) + 1 | 0;
161
161
  }
162
162
  function Je(e) {
163
163
  let t = [];
@@ -170,7 +170,7 @@ function Je(e) {
170
170
  t.push(l.level);
171
171
  return;
172
172
  }
173
- }), se(t) + 1 | 0;
173
+ }), ae(t) + 1 | 0;
174
174
  }
175
175
  function W(e) {
176
176
  return typeof e.kind == "object" ? Je(e) : Ue(e);
@@ -185,11 +185,11 @@ function Qe(e, t) {
185
185
  return c !== 0 ? c : n.level - r.level | 0;
186
186
  }
187
187
  function Ye(e) {
188
- y.contents = !0, P(e), de(e.id, () => {
189
- e.run(), y.contents = !1;
188
+ v.contents = !0, P(e), de(e.id, () => {
189
+ e.run(), v.contents = !1;
190
190
  }), e.level = W(e);
191
191
  }
192
- function ae() {
192
+ function se() {
193
193
  for (; j.size > 0; ) {
194
194
  let e = Array.from(j.values());
195
195
  j.clear(), e.sort(Qe), e.forEach((t) => {
@@ -209,7 +209,7 @@ function fe(e) {
209
209
  return n.dirty ? void 0 : (n.dirty = !0, fe(r.VAL));
210
210
  j.add(t);
211
211
  }), j.size > 0)
212
- return Xe(ae);
212
+ return Ke(se);
213
213
  }
214
214
  function pe(e) {
215
215
  let t = G.get(e);
@@ -217,8 +217,8 @@ function pe(e) {
217
217
  return;
218
218
  let n = h.get(t);
219
219
  if (n !== void 0 && n.dirty) {
220
- y.contents = !0, P(n), de(t, () => {
221
- n.run(), n.dirty = !1, y.contents = !1;
220
+ v.contents = !0, P(n), de(t, () => {
221
+ n.run(), n.dirty = !1, v.contents = !1;
222
222
  }), n.level = W(n);
223
223
  return;
224
224
  }
@@ -228,7 +228,7 @@ function Ze(e) {
228
228
  k.contents = !0;
229
229
  try {
230
230
  let n = e();
231
- return t || (k.contents = !1, j.size > 0 && ae()), n;
231
+ return t || (k.contents = !1, j.size > 0 && se()), n;
232
232
  } catch (n) {
233
233
  throw t || (k.contents = !1), n;
234
234
  }
@@ -251,7 +251,7 @@ function me(e, t, n) {
251
251
  function nt(e) {
252
252
  pe(e.id);
253
253
  let t = p.contents;
254
- return t !== void 0 && qe(t, e.id), e.value.contents;
254
+ return t !== void 0 && Xe(t, e.id), e.value.contents;
255
255
  }
256
256
  function rt(e) {
257
257
  return pe(e.id), e.value.contents;
@@ -293,22 +293,22 @@ function _e(e, t, n, r) {
293
293
  name: r
294
294
  };
295
295
  }
296
- function st(e, t) {
296
+ function at(e, t) {
297
297
  let n = Y(), r = {
298
298
  contents: void 0
299
299
  }, u = _e(n, "Effect", () => {
300
300
  let c = r.contents;
301
301
  c !== void 0 && c(), r.contents = e();
302
302
  }, t);
303
- h.set(n, u), y.contents = !0, P(u);
304
- let a = p.contents;
303
+ h.set(n, u), v.contents = !0, P(u);
304
+ let s = p.contents;
305
305
  p.contents = n;
306
306
  try {
307
- u.run(), y.contents = !1;
307
+ u.run(), v.contents = !1;
308
308
  } catch (c) {
309
- throw p.contents = a, y.contents = !1, c;
309
+ throw p.contents = s, v.contents = !1, c;
310
310
  }
311
- return p.contents = a, u.level = W(u), {
311
+ return p.contents = s, u.level = W(u), {
312
312
  dispose: () => {
313
313
  let c = h.get(n);
314
314
  if (c === void 0)
@@ -318,13 +318,13 @@ function st(e, t) {
318
318
  }
319
319
  };
320
320
  }
321
- let at, ft, pt;
321
+ let st, ft, pt;
322
322
  const mt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
323
323
  __proto__: null,
324
- Id: at,
324
+ Id: st,
325
325
  Observer: ft,
326
326
  Scheduler: pt,
327
- run: st
327
+ run: at
328
328
  }, Symbol.toStringTag, { value: "Module" }));
329
329
  function ht(e, t) {
330
330
  let n = me(void 0, t, void 0), r = Y(), l = () => {
@@ -334,30 +334,30 @@ function ht(e, t) {
334
334
  NAME: "Computed",
335
335
  VAL: n.id
336
336
  }, l, void 0);
337
- h.set(r, u), y.contents = !0, P(u);
338
- let a = p.contents;
337
+ h.set(r, u), v.contents = !0, P(u);
338
+ let s = p.contents;
339
339
  p.contents = r;
340
340
  try {
341
- u.run(), u.dirty = !1, y.contents = !1;
341
+ u.run(), u.dirty = !1, v.contents = !1;
342
342
  } catch (o) {
343
- throw p.contents = a, y.contents = !1, o;
343
+ throw p.contents = s, v.contents = !1, o;
344
344
  }
345
- return p.contents = a, u.level = W(u), G.set(n.id, r), n;
345
+ return p.contents = s, u.level = W(u), G.set(n.id, r), n;
346
346
  }
347
347
  function _t(e) {
348
348
  He(e.id);
349
349
  }
350
- let gt, St, Et, vt;
351
- const yt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
350
+ let gt, St, Et, bt;
351
+ const vt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
352
352
  __proto__: null,
353
353
  Id: gt,
354
354
  Observer: Et,
355
- Scheduler: vt,
355
+ Scheduler: bt,
356
356
  Signal: St,
357
357
  dispose: _t,
358
358
  make: ht
359
359
  }, Symbol.toStringTag, { value: "Module" }));
360
- let s = dt, S = yt, w = mt;
360
+ let a = dt, S = vt, w = mt;
361
361
  function ge(e) {
362
362
  return Fe(e.split("/"), (t) => {
363
363
  if (t !== "")
@@ -375,8 +375,8 @@ function Se(e, t) {
375
375
  if (e.length !== n.length)
376
376
  return "NoMatch";
377
377
  let r = {};
378
- return e.every((u, a) => {
379
- let o = n[a];
378
+ return e.every((u, s) => {
379
+ let o = n[s];
380
380
  return u.TAG === "Static" ? o === u._0 : (r[u._0] = o, !0);
381
381
  }) ? {
382
382
  TAG: "Match",
@@ -386,7 +386,7 @@ function Se(e, t) {
386
386
  function te(e, t) {
387
387
  return Se(ge(e), t);
388
388
  }
389
- const bt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
389
+ const yt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
390
390
  __proto__: null,
391
391
  match: te,
392
392
  matchPath: Se,
@@ -400,6 +400,16 @@ function C(e, t, n) {
400
400
  case "checked":
401
401
  e.checked = n === "true";
402
402
  return;
403
+ case "disabled":
404
+ e.disabled = n === "true";
405
+ return;
406
+ case "aria-expanded":
407
+ case "aria-hidden":
408
+ case "aria-selected":
409
+ case "multiple":
410
+ case "readonly":
411
+ case "required":
412
+ break;
403
413
  case "value":
404
414
  e.value = n;
405
415
  return;
@@ -407,6 +417,7 @@ function C(e, t, n) {
407
417
  e.setAttribute(t, n);
408
418
  return;
409
419
  }
420
+ n === "true" ? e.setAttribute(t, "") : e.removeAttribute(t);
410
421
  }
411
422
  let kt = {
412
423
  setAttrOrProp: C
@@ -434,7 +445,7 @@ function Ee(e) {
434
445
  function I(e, t) {
435
446
  e.__xote_owner__ = t;
436
447
  }
437
- function ve(e) {
448
+ function be(e) {
438
449
  return Re(e.__xote_owner__);
439
450
  }
440
451
  let Tt = {
@@ -444,9 +455,9 @@ let Tt = {
444
455
  addDisposer: M,
445
456
  disposeOwner: Ee,
446
457
  setOwner: I,
447
- getOwner: ve
458
+ getOwner: be
448
459
  };
449
- function ye(e, t) {
460
+ function ve(e, t) {
450
461
  return [
451
462
  e,
452
463
  {
@@ -455,7 +466,7 @@ function ye(e, t) {
455
466
  }
456
467
  ];
457
468
  }
458
- function be(e, t) {
469
+ function ye(e, t) {
459
470
  return [
460
471
  e,
461
472
  {
@@ -474,15 +485,15 @@ function we(e, t) {
474
485
  ];
475
486
  }
476
487
  let At = {
477
- $$static: ye,
478
- signal: be,
488
+ $$static: ve,
489
+ signal: ye,
479
490
  computed: we
480
491
  };
481
492
  function L(e) {
482
- let t = ve(e);
493
+ let t = be(e);
483
494
  t !== void 0 && Ee(t), Array.from(e.childNodes || []).forEach(L);
484
495
  }
485
- function b(e) {
496
+ function y(e) {
486
497
  switch (e.TAG) {
487
498
  case "Element":
488
499
  let t = e.children, n = e.events, r = e.attrs, l = document.createElement(e.tag), u = {
@@ -497,11 +508,11 @@ function b(e) {
497
508
  return C(l, g, m._0);
498
509
  case "SignalValue":
499
510
  let E = m._0;
500
- C(l, g, s.peek(E));
501
- let v = w.run(() => {
502
- C(l, g, s.get(E));
511
+ C(l, g, a.peek(E));
512
+ let b = w.run(() => {
513
+ C(l, g, a.get(E));
503
514
  }, void 0);
504
- return M(u, v);
515
+ return M(u, b);
505
516
  case "Compute":
506
517
  let F = m._0;
507
518
  C(l, g, F());
@@ -513,52 +524,52 @@ function b(e) {
513
524
  }), n.forEach((i) => {
514
525
  l.addEventListener(i[0], i[1]);
515
526
  }), t.forEach((i) => {
516
- let m = b(i);
527
+ let m = y(i);
517
528
  l.appendChild(m);
518
529
  });
519
530
  }), l;
520
531
  case "Text":
521
532
  return document.createTextNode(e._0);
522
533
  case "SignalText":
523
- let a = e._0, o = document.createTextNode(s.peek(a)), c = {
534
+ let s = e._0, o = document.createTextNode(a.peek(s)), c = {
524
535
  disposers: [],
525
536
  computeds: []
526
537
  };
527
538
  return I(o, c), N(c, () => {
528
539
  let i = w.run(() => {
529
- o.textContent = s.get(a);
540
+ o.textContent = a.get(s);
530
541
  }, void 0);
531
542
  M(c, i);
532
543
  }), o;
533
544
  case "Fragment":
534
545
  let R = document.createDocumentFragment();
535
546
  return e._0.forEach((i) => {
536
- let m = b(i);
547
+ let m = y(i);
537
548
  R.appendChild(m);
538
549
  }), R;
539
550
  case "SignalFragment":
540
- let $e = e._0, K = {
551
+ let $e = e._0, q = {
541
552
  disposers: [],
542
553
  computeds: []
543
554
  }, A = document.createElement("div");
544
- return A.setAttribute("style", "display: contents"), I(A, K), N(K, () => {
555
+ return A.setAttribute("style", "display: contents"), I(A, q), N(q, () => {
545
556
  let i = w.run(() => {
546
- let m = s.get($e);
557
+ let m = a.get($e);
547
558
  Array.from(A.childNodes || []).forEach(L), A.innerHTML = "", m.forEach((E) => {
548
- let v = b(E);
549
- A.appendChild(v);
559
+ let b = y(E);
560
+ A.appendChild(b);
550
561
  });
551
562
  }, void 0);
552
- M(K, i);
563
+ M(q, i);
553
564
  }), A;
554
565
  case "LazyComponent":
555
566
  let re = {
556
567
  disposers: [],
557
568
  computeds: []
558
- }, Ce = N(re, e._0), le = b(Ce);
569
+ }, Ce = N(re, e._0), le = y(Ce);
559
570
  return I(le, re), le;
560
571
  case "KeyedList":
561
- let X = e.renderItem, q = e.keyFn, ue = e.signal, H = {
572
+ let K = e.renderItem, X = e.keyFn, ue = e.signal, H = {
562
573
  disposers: [],
563
574
  computeds: []
564
575
  }, U = document.createComment(" keyed-list-start "), D = document.createComment(" keyed-list-end ");
@@ -567,9 +578,9 @@ function b(e) {
567
578
  let i = D.parentNode;
568
579
  if (i == null)
569
580
  return;
570
- let m = s.get(ue), g = {};
581
+ let m = a.get(ue), g = {};
571
582
  m.forEach((d) => {
572
- g[q(d)] = d;
583
+ g[X(d)] = d;
573
584
  });
574
585
  let E = [];
575
586
  Object.keys(O).forEach((d) => {
@@ -584,34 +595,34 @@ function b(e) {
584
595
  return;
585
596
  }
586
597
  });
587
- let v = [], F = {};
598
+ let b = [], F = {};
588
599
  m.forEach((d) => {
589
- let f = q(d), V = O[f];
600
+ let f = X(d), V = O[f];
590
601
  if (V !== void 0) {
591
602
  if (V.item !== d) {
592
603
  F[f] = !0;
593
- let je = X(d), xe = b(je), oe = {
604
+ let je = K(d), xe = y(je), oe = {
594
605
  key: f,
595
606
  item: d,
596
607
  element: xe
597
608
  };
598
- v.push(oe), O[f] = oe;
609
+ b.push(oe), O[f] = oe;
599
610
  return;
600
611
  }
601
- v.push(V);
612
+ b.push(V);
602
613
  return;
603
614
  }
604
- let Me = X(d), Ie = b(Me), ie = {
615
+ let Me = K(d), Ie = y(Me), ie = {
605
616
  key: f,
606
617
  item: d,
607
618
  element: Ie
608
619
  };
609
- v.push(ie), O[f] = ie;
620
+ b.push(ie), O[f] = ie;
610
621
  });
611
622
  let $ = {
612
623
  contents: U.nextSibling
613
624
  };
614
- v.forEach((d) => {
625
+ b.forEach((d) => {
615
626
  let f = $.contents;
616
627
  if (f == null) {
617
628
  i.insertBefore(d.element, D);
@@ -628,13 +639,13 @@ function b(e) {
628
639
  Z(F[d.key], !1) ? (L(f), i.replaceChild(d.element, f), $.contents = d.element.nextSibling) : (i.insertBefore(d.element, f), $.contents = d.element.nextSibling);
629
640
  });
630
641
  }, B = document.createDocumentFragment();
631
- return B.appendChild(U), s.peek(ue).forEach((i) => {
632
- let m = q(i), g = X(i), E = b(g), v = {
642
+ return B.appendChild(U), a.peek(ue).forEach((i) => {
643
+ let m = X(i), g = K(i), E = y(g), b = {
633
644
  key: m,
634
645
  item: i,
635
646
  element: E
636
647
  };
637
- O[m] = v, B.appendChild(E);
648
+ O[m] = b, B.appendChild(E);
638
649
  }), B.appendChild(D), N(H, () => {
639
650
  let i = w.run(() => {
640
651
  Ne();
@@ -645,7 +656,7 @@ function b(e) {
645
656
  }
646
657
  let $t = {
647
658
  disposeElement: L,
648
- render: b
659
+ render: y
649
660
  };
650
661
  function Ct(e) {
651
662
  return {
@@ -674,7 +685,7 @@ function ne(e) {
674
685
  function It(e, t) {
675
686
  return {
676
687
  TAG: "SignalFragment",
677
- _0: S.make(() => s.get(e).map(t), void 0)
688
+ _0: S.make(() => a.get(e).map(t), void 0)
678
689
  };
679
690
  }
680
691
  function jt(e, t, n) {
@@ -686,12 +697,12 @@ function jt(e, t, n) {
686
697
  };
687
698
  }
688
699
  function _(e, t, n, r, l) {
689
- 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);
700
+ let u = t !== void 0 ? t : [].map((c) => c), s = n !== void 0 ? n : [].map((c) => c), o = r !== void 0 ? r : [].map((c) => c);
690
701
  return {
691
702
  TAG: "Element",
692
703
  tag: e,
693
704
  attrs: u,
694
- events: a,
705
+ events: s,
695
706
  children: o
696
707
  };
697
708
  }
@@ -729,7 +740,7 @@ function ke(e, t, n, r) {
729
740
  return _("a", e, t, n);
730
741
  }
731
742
  function Oe(e, t) {
732
- let n = b(e);
743
+ let n = y(e);
733
744
  t.appendChild(n);
734
745
  }
735
746
  function Wt(e, t) {
@@ -740,8 +751,8 @@ function Wt(e, t) {
740
751
  } else
741
752
  return Oe(e, n);
742
753
  }
743
- let Te = ye, Kt = be, Xt = we;
744
- const qt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
754
+ let Te = ve, qt = ye, Kt = we;
755
+ const Xt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
745
756
  __proto__: null,
746
757
  Attributes: At,
747
758
  DOM: kt,
@@ -750,7 +761,7 @@ const qt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
750
761
  a: ke,
751
762
  attr: Te,
752
763
  button: Rt,
753
- computedAttr: Xt,
764
+ computedAttr: Kt,
754
765
  div: xt,
755
766
  element: _,
756
767
  fragment: Mt,
@@ -764,14 +775,14 @@ const qt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
764
775
  mount: Oe,
765
776
  mountById: Wt,
766
777
  p: Bt,
767
- signalAttr: Kt,
778
+ signalAttr: qt,
768
779
  signalFragment: ne,
769
780
  span: Pt,
770
781
  text: Ct,
771
782
  textSignal: Nt,
772
783
  ul: Vt
773
784
  }, Symbol.toStringTag, { value: "Module" }));
774
- let T = s.make({
785
+ let T = a.make({
775
786
  pathname: "/",
776
787
  search: "",
777
788
  hash: ""
@@ -784,35 +795,35 @@ function Q() {
784
795
  };
785
796
  }
786
797
  function Ht() {
787
- s.set(T, Q());
788
- let e = (t) => s.set(T, Q());
798
+ a.set(T, Q());
799
+ let e = (t) => a.set(T, Q());
789
800
  window.addEventListener("popstate", e);
790
801
  }
791
802
  function Ae(e, t, n, r) {
792
- let l = t !== void 0 ? t : "", u = n !== void 0 ? n : "", a = {
803
+ let l = t !== void 0 ? t : "", u = n !== void 0 ? n : "", s = {
793
804
  pathname: e,
794
805
  search: l,
795
806
  hash: u
796
807
  }, o = e + l + u, c = {};
797
- window.history.pushState(c, "", o), s.set(T, a);
808
+ window.history.pushState(c, "", o), a.set(T, s);
798
809
  }
799
810
  function Ut(e, t, n, r) {
800
- let l = t !== void 0 ? t : "", u = n !== void 0 ? n : "", a = {
811
+ let l = t !== void 0 ? t : "", u = n !== void 0 ? n : "", s = {
801
812
  pathname: e,
802
813
  search: l,
803
814
  hash: u
804
815
  }, o = e + l + u, c = {};
805
- window.history.replaceState(c, "", o), s.set(T, a);
816
+ window.history.replaceState(c, "", o), a.set(T, s);
806
817
  }
807
818
  function Jt(e, t) {
808
819
  return ne(S.make(() => {
809
- let n = s.get(T), r = te(e, n.pathname);
820
+ let n = a.get(T), r = te(e, n.pathname);
810
821
  return typeof r != "object" ? [] : [t(r._0)];
811
822
  }, void 0));
812
823
  }
813
824
  function Qt(e) {
814
825
  return ne(S.make(() => {
815
- let t = s.get(T), n = Le(e, (r) => {
826
+ let t = a.get(T), n = Le(e, (r) => {
816
827
  let l = te(r.pattern, t.pathname);
817
828
  if (typeof l == "object")
818
829
  return r.render(l._0);
@@ -821,12 +832,12 @@ function Qt(e) {
821
832
  }, void 0));
822
833
  }
823
834
  function Yt(e, t, n, r) {
824
- let l = t !== void 0 ? t : [], u = n !== void 0 ? n : [], a = (o) => {
835
+ let l = t !== void 0 ? t : [], u = n !== void 0 ? n : [], s = (o) => {
825
836
  o.preventDefault(), Ae(e, void 0, void 0);
826
837
  };
827
838
  return ke(l.concat([Te("href", e)]), [[
828
839
  "click",
829
- a
840
+ s
830
841
  ]], u);
831
842
  }
832
843
  let Zt, en;
@@ -843,7 +854,7 @@ const tn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
843
854
  route: Jt,
844
855
  routes: Qt
845
856
  }, Symbol.toStringTag, { value: "Module" }));
846
- let nn = s.Id, rn = s.Scheduler, ln = s.make, un = s.get, on = s.peek, cn = s.set, dn = s.update, sn = s.batch, an = s.untrack, wn = {
857
+ let nn = a.Id, rn = a.Scheduler, ln = a.make, un = a.get, on = a.peek, cn = a.set, dn = a.update, an = a.batch, sn = a.untrack, wn = {
847
858
  Id: nn,
848
859
  Scheduler: rn,
849
860
  make: ln,
@@ -851,8 +862,8 @@ let nn = s.Id, rn = s.Scheduler, ln = s.make, un = s.get, on = s.peek, cn = s.se
851
862
  peek: on,
852
863
  set: cn,
853
864
  update: dn,
854
- batch: sn,
855
- untrack: an
865
+ batch: an,
866
+ untrack: sn
856
867
  }, fn = S.Id, pn = S.Signal, mn = S.Observer, hn = S.Scheduler, _n = S.make, gn = S.dispose, kn = {
857
868
  Id: fn,
858
869
  Signal: pn,
@@ -860,12 +871,12 @@ let nn = s.Id, rn = s.Scheduler, ln = s.make, un = s.get, on = s.peek, cn = s.se
860
871
  Scheduler: hn,
861
872
  make: _n,
862
873
  dispose: gn
863
- }, Sn = w.Id, En = w.Observer, vn = w.Scheduler, yn = w.run, On = {
874
+ }, Sn = w.Id, En = w.Observer, bn = w.Scheduler, vn = w.run, On = {
864
875
  Id: Sn,
865
876
  Observer: En,
866
- Scheduler: vn,
867
- run: yn
868
- }, Tn = qt, An = bt, $n = tn;
877
+ Scheduler: bn,
878
+ run: vn
879
+ }, Tn = Xt, An = yt, $n = tn;
869
880
  export {
870
881
  Tn as Component,
871
882
  kn as Computed,
package/dist/xote.umd.js CHANGED
@@ -1 +1 @@
1
- (function(g,T){typeof exports=="object"&&typeof module<"u"?T(exports):typeof define=="function"&&define.amd?define(["exports"],T):(g=typeof globalThis<"u"?globalThis:g||self,T(g.xote={}))})(this,(function(g){"use strict";let T={contents:0};function q(){return T.contents=T.contents+1|0,T.contents}function Ce(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 Ce(e)}function le(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 H(e,t){return e!==void 0?le(e):t}function Ie(e,t,n){return e.reduce(n,t)}function Me(e,t){let n=e.length,r=new Array(n),l=0;for(let u=0;u<n;++u){let a=e[u],c=t(a);c!==void 0&&(r[l]=le(c),l=l+1|0)}return r.length=l,r}function je(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,C=new Map,L=new Map,p={contents:void 0},N=new Set,k={contents:!1},v={contents:!1};function U(e){if(C.get(e)===void 0){C.set(e,new Set);return}}function Re(e,t){let n=C.get(e);if(n!==void 0){n.forEach(t);return}}function Pe(e,t){let n=C.get(e);if(n!==void 0){n.add(t);return}}function De(e,t){let n=C.get(e);if(n!==void 0){n.delete(t);return}}function Fe(e){return Array.from(H(C.get(e),new Set).values())}function ue(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 Le(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 xe(e){let t=p.contents;return t!==void 0?t===e:!1}function Ge(e){if(!k.contents){k.contents=!0;try{e(),k.contents=!1;return}catch(t){throw k.contents=!1,t}}}function Be(e,t){U(t);let n=xe(e),r=h.get(e);if(n&&r!==void 0&&!r.deps.has(t))return r.deps.add(t),Pe(t,e)}function I(e){e.deps.forEach(t=>De(t,e.id)),e.deps.clear()}function Ve(e){let t=L.get(e);if(t===void 0)return;L.delete(e);let n=h.get(t);if(n!==void 0){I(n),h.delete(t);return}}function ie(e){return Ie(e,0,(t,n)=>n>t?n:t)}function ze(e){let t=[];return e.deps.forEach(n=>Re(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}})),ie(t)+1|0}function We(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}}),ie(t)+1|0}function z(e){return typeof e.kind=="object"?We(e):ze(e)}function Ke(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,c=typeof r.kind=="object"?0:1,d=u-c|0;return d!==0?d:n.level-r.level|0}function Xe(e){v.contents=!0,I(e),ue(e.id,()=>{e.run(),v.contents=!1}),e.level=z(e)}function oe(){for(;N.size>0;){let e=Array.from(N.values());N.clear(),e.sort(Ke),e.forEach(t=>{let n=h.get(t);if(n!==void 0)return Xe(n)})}}function ce(e){if(U(e),Fe(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,ce(r.VAL));N.add(t)}),N.size>0)return Ge(oe)}function de(e){let t=L.get(e);if(t===void 0)return;let n=h.get(t);if(n!==void 0&&n.dirty){v.contents=!0,I(n),ue(t,()=>{n.run(),n.dirty=!1,v.contents=!1}),n.level=z(n);return}}function qe(e){let t=k.contents;k.contents=!0;try{let n=e();return t||(k.contents=!1,N.size>0&&oe()),n}catch(n){throw t||(k.contents=!1),n}}let He=Le,Ue=U;function se(e,t,n){let r=q();return Ue(r),{id:r,value:{contents:e},version:{contents:0},equals:H(n,(l,u)=>l===u),name:t}}function Je(e){de(e.id);let t=p.contents;return t!==void 0&&Be(t,e.id),e.value.contents}function Qe(e){return de(e.id),e.value.contents}function ae(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,ce(e.id)}function Ye(e,t){ae(e,t(e.value.contents))}const Ze=Object.freeze(Object.defineProperty({__proto__:null,Id:void 0,Scheduler:void 0,batch:qe,get:Je,make:se,peek:Qe,set:ae,untrack:He,update:Ye},Symbol.toStringTag,{value:"Module"}));function fe(e,t,n,r){return{id:e,kind:t,run:n,deps:new Set,level:0,dirty:!0,name:r}}function et(e,t){let n=q(),r={contents:void 0},u=fe(n,"Effect",()=>{let d=r.contents;d!==void 0&&d(),r.contents=e()},t);h.set(n,u),v.contents=!0,I(u);let a=p.contents;p.contents=n;try{u.run(),v.contents=!1}catch(d){throw p.contents=a,v.contents=!1,d}return p.contents=a,u.level=z(u),{dispose:()=>{let d=h.get(n);if(d===void 0)return;let G=r.contents;G!==void 0&&G(),I(d),h.delete(n)}}}const tt=Object.freeze(Object.defineProperty({__proto__:null,Id:void 0,Observer:void 0,Scheduler:void 0,run:et},Symbol.toStringTag,{value:"Module"}));function nt(e,t){let n=se(void 0,t,void 0),r=q(),l=()=>{let c=e();n.value.contents=c},u=fe(r,{NAME:"Computed",VAL:n.id},l,void 0);h.set(r,u),v.contents=!0,I(u);let a=p.contents;p.contents=r;try{u.run(),u.dirty=!1,v.contents=!1}catch(c){throw p.contents=a,v.contents=!1,c}return p.contents=a,u.level=z(u),L.set(n.id,r),n}function rt(e){Ve(e.id)}const lt=Object.freeze(Object.defineProperty({__proto__:null,Id:void 0,Observer:void 0,Scheduler:void 0,Signal:void 0,dispose:rt,make:nt},Symbol.toStringTag,{value:"Module"}));let o=Ze,S=lt,w=tt;function pe(e){return Me(e.split("/"),t=>{if(t!=="")return t.startsWith(":")?{TAG:"Param",_0:t.slice(1)}:{TAG:"Static",_0:t}})}function me(e,t){let n=t.split("/").filter(u=>u!=="");if(e.length!==n.length)return"NoMatch";let r={};return e.every((u,a)=>{let c=n[a];return u.TAG==="Static"?c===u._0:(r[u._0]=c,!0)})?{TAG:"Match",_0:r}:"NoMatch"}function J(e,t){return me(pe(e),t)}const ut=Object.freeze(Object.defineProperty({__proto__:null,match:J,matchPath:me,parsePattern:pe},Symbol.toStringTag,{value:"Module"}));function it(e,t){delete e[t]}function M(e,t,n){switch(t){case"checked":e.checked=n==="true";return;case"value":e.value=n;return;default:e.setAttribute(t,n);return}}let ot={setAttrOrProp:M},W={contents:void 0};function ct(){return{disposers:[],computeds:[]}}function j(e,t){let n=W.contents;W.contents=e;let r=t();return W.contents=n,r}function R(e,t){e.disposers.push(t)}function he(e){e.disposers.forEach(t=>t.dispose()),e.computeds.forEach(t=>S.dispose(t))}function P(e,t){e.__xote_owner__=t}function _e(e){return Ne(e.__xote_owner__)}let dt={currentOwner:W,createOwner:ct,runWithOwner:j,addDisposer:R,disposeOwner:he,setOwner:P,getOwner:_e};function ge(e,t){return[e,{TAG:"Static",_0:t}]}function Se(e,t){return[e,{TAG:"SignalValue",_0:t}]}function Ee(e,t){return[e,{TAG:"Compute",_0:t}]}let st={$$static:ge,signal:Se,computed:Ee};function x(e){let t=_e(e);t!==void 0&&he(t),Array.from(e.childNodes||[]).forEach(x)}function O(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 P(l,u),j(u,()=>{r.forEach(i=>{let m=i[1],E=i[0];switch(m.TAG){case"Static":return M(l,E,m._0);case"SignalValue":let y=m._0;M(l,E,o.peek(y));let b=w.run(()=>{M(l,E,o.get(y))},void 0);return R(u,b);case"Compute":let V=m._0;M(l,E,V());let F=w.run(()=>{M(l,E,V())},void 0);return R(u,F)}}),n.forEach(i=>{l.addEventListener(i[0],i[1])}),t.forEach(i=>{let m=O(i);l.appendChild(m)})}),l;case"Text":return document.createTextNode(e._0);case"SignalText":let a=e._0,c=document.createTextNode(o.peek(a)),d={disposers:[],computeds:[]};return P(c,d),j(d,()=>{let i=w.run(()=>{c.textContent=o.get(a)},void 0);R(d,i)}),c;case"Fragment":let G=document.createDocumentFragment();return e._0.forEach(i=>{let m=O(i);G.appendChild(m)}),G;case"SignalFragment":let on=e._0,Z={disposers:[],computeds:[]},D=document.createElement("div");return D.setAttribute("style","display: contents"),P(D,Z),j(Z,()=>{let i=w.run(()=>{let m=o.get(on);Array.from(D.childNodes||[]).forEach(x),D.innerHTML="",m.forEach(y=>{let b=O(y);D.appendChild(b)})},void 0);R(Z,i)}),D;case"LazyComponent":let Oe={disposers:[],computeds:[]},cn=j(Oe,e._0),ke=O(cn);return P(ke,Oe),ke;case"KeyedList":let ee=e.renderItem,te=e.keyFn,Te=e.signal,ne={disposers:[],computeds:[]},re=document.createComment(" keyed-list-start "),B=document.createComment(" keyed-list-end ");P(re,ne);let A={},dn=()=>{let i=B.parentNode;if(i==null)return;let m=o.get(Te),E={};m.forEach(s=>{E[te(s)]=s});let y=[];Object.keys(A).forEach(s=>{if(E[s]===void 0){y.push(s);return}}),y.forEach(s=>{let f=A[s];if(f!==void 0){x(f.element),f.element.remove(),it(A,s);return}});let b=[],V={};m.forEach(s=>{let f=te(s),X=A[f];if(X!==void 0){if(X.item!==s){V[f]=!0;let fn=ee(s),pn=O(fn),Ae={key:f,item:s,element:pn};b.push(Ae),A[f]=Ae;return}b.push(X);return}let sn=ee(s),an=O(sn),$e={key:f,item:s,element:an};b.push($e),A[f]=$e});let F={contents:re.nextSibling};b.forEach(s=>{let f=F.contents;if(f==null){i.insertBefore(s.element,B);return}if(f===B){i.insertBefore(s.element,B);return}if(f===s.element){F.contents=f.nextSibling;return}H(V[s.key],!1)?(x(f),i.replaceChild(s.element,f),F.contents=s.element.nextSibling):(i.insertBefore(s.element,f),F.contents=s.element.nextSibling)})},K=document.createDocumentFragment();return K.appendChild(re),o.peek(Te).forEach(i=>{let m=te(i),E=ee(i),y=O(E),b={key:m,item:i,element:y};A[m]=b,K.appendChild(y)}),K.appendChild(B),j(ne,()=>{let i=w.run(()=>{dn()},void 0);R(ne,i)}),K}}let at={disposeElement:x,render:O};function ft(e){return{TAG:"Text",_0:e}}function pt(e){return{TAG:"SignalText",_0:S.make(e,void 0)}}function mt(e){return{TAG:"Fragment",_0:e}}function Q(e){return{TAG:"SignalFragment",_0:e}}function ht(e,t){return{TAG:"SignalFragment",_0:S.make(()=>o.get(e).map(t),void 0)}}function _t(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(d=>d),a=n!==void 0?n:[].map(d=>d),c=r!==void 0?r:[].map(d=>d);return{TAG:"Element",tag:e,attrs:u,events:a,children:c}}function gt(e,t,n,r){return _("div",e,t,n)}function St(e,t,n,r){return _("span",e,t,n)}function Et(e,t,n,r){return _("button",e,t,n)}function vt(e,t,n){return _("input",e,t,void 0)}function yt(e,t,n,r){return _("h1",e,t,n)}function bt(e,t,n,r){return _("h2",e,t,n)}function wt(e,t,n,r){return _("h3",e,t,n)}function Ot(e,t,n,r){return _("p",e,t,n)}function kt(e,t,n,r){return _("ul",e,t,n)}function Tt(e,t,n,r){return _("li",e,t,n)}function ve(e,t,n,r){return _("a",e,t,n)}function ye(e,t){let n=O(e);t.appendChild(n)}function $t(e,t){let n=document.getElementById(t);if(n==null){console.error("Container element not found: "+t);return}else return ye(e,n)}let be=ge;const At=Object.freeze(Object.defineProperty({__proto__:null,Attributes:st,DOM:ot,Reactivity:dt,Render:at,a:ve,attr:be,button:Et,computedAttr:Ee,div:gt,element:_,fragment:mt,h1:yt,h2:bt,h3:wt,input:vt,keyedList:_t,li:Tt,list:ht,mount:ye,mountById:$t,p:Ot,signalAttr:Se,signalFragment:Q,span:St,text:ft,textSignal:pt,ul:kt},Symbol.toStringTag,{value:"Module"}));let $=o.make({pathname:"/",search:"",hash:""},void 0,void 0);function Y(){return{pathname:window.location.pathname,search:window.location.search,hash:window.location.hash}}function Ct(){o.set($,Y());let e=t=>o.set($,Y());window.addEventListener("popstate",e)}function we(e,t,n,r){let l=t!==void 0?t:"",u=n!==void 0?n:"",a={pathname:e,search:l,hash:u},c=e+l+u,d={};window.history.pushState(d,"",c),o.set($,a)}function Nt(e,t,n,r){let l=t!==void 0?t:"",u=n!==void 0?n:"",a={pathname:e,search:l,hash:u},c=e+l+u,d={};window.history.replaceState(d,"",c),o.set($,a)}function It(e,t){return Q(S.make(()=>{let n=o.get($),r=J(e,n.pathname);return typeof r!="object"?[]:[t(r._0)]},void 0))}function Mt(e){return Q(S.make(()=>{let t=o.get($),n=je(e,r=>{let l=J(r.pattern,t.pathname);if(typeof l=="object")return r.render(l._0)});return n!==void 0?[n]:[]},void 0))}function jt(e,t,n,r){let l=t!==void 0?t:[],u=n!==void 0?n:[],a=c=>{c.preventDefault(),we(e,void 0,void 0)};return ve(l.concat([be("href",e)]),[["click",a]],u)}const Rt=Object.freeze(Object.defineProperty({__proto__:null,Component:void 0,Route:void 0,getCurrentLocation:Y,init:Ct,link:jt,location:$,push:we,replace:Nt,route:It,routes:Mt},Symbol.toStringTag,{value:"Module"}));let Pt=o.Id,Dt=o.Scheduler,Ft=o.make,Lt=o.get,xt=o.peek,Gt=o.set,Bt=o.update,Vt=o.batch,zt=o.untrack,Wt={Id:Pt,Scheduler:Dt,make:Ft,get:Lt,peek:xt,set:Gt,update:Bt,batch:Vt,untrack:zt},Kt=S.Id,Xt=S.Signal,qt=S.Observer,Ht=S.Scheduler,Ut=S.make,Jt=S.dispose,Qt={Id:Kt,Signal:Xt,Observer:qt,Scheduler:Ht,make:Ut,dispose:Jt},Yt=w.Id,Zt=w.Observer,en=w.Scheduler,tn=w.run,nn={Id:Yt,Observer:Zt,Scheduler:en,run:tn},rn=At,ln=ut,un=Rt;g.Component=rn,g.Computed=Qt,g.Effect=nn,g.Route=ln,g.Router=un,g.Signal=Wt,Object.defineProperty(g,Symbol.toStringTag,{value:"Module"})}));
1
+ (function(g,T){typeof exports=="object"&&typeof module<"u"?T(exports):typeof define=="function"&&define.amd?define(["exports"],T):(g=typeof globalThis<"u"?globalThis:g||self,T(g.xote={}))})(this,(function(g){"use strict";let T={contents:0};function X(){return T.contents=T.contents+1|0,T.contents}function Ce(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 Ce(e)}function le(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 H(e,t){return e!==void 0?le(e):t}function Ie(e,t,n){return e.reduce(n,t)}function Me(e,t){let n=e.length,r=new Array(n),l=0;for(let u=0;u<n;++u){let s=e[u],c=t(s);c!==void 0&&(r[l]=le(c),l=l+1|0)}return r.length=l,r}function je(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,C=new Map,F=new Map,p={contents:void 0},N=new Set,k={contents:!1},b={contents:!1};function U(e){if(C.get(e)===void 0){C.set(e,new Set);return}}function Re(e,t){let n=C.get(e);if(n!==void 0){n.forEach(t);return}}function Pe(e,t){let n=C.get(e);if(n!==void 0){n.add(t);return}}function xe(e,t){let n=C.get(e);if(n!==void 0){n.delete(t);return}}function De(e){return Array.from(H(C.get(e),new Set).values())}function ue(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 Fe(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 Le(e){let t=p.contents;return t!==void 0?t===e:!1}function Ge(e){if(!k.contents){k.contents=!0;try{e(),k.contents=!1;return}catch(t){throw k.contents=!1,t}}}function Be(e,t){U(t);let n=Le(e),r=h.get(e);if(n&&r!==void 0&&!r.deps.has(t))return r.deps.add(t),Pe(t,e)}function I(e){e.deps.forEach(t=>xe(t,e.id)),e.deps.clear()}function Ve(e){let t=F.get(e);if(t===void 0)return;F.delete(e);let n=h.get(t);if(n!==void 0){I(n),h.delete(t);return}}function ie(e){return Ie(e,0,(t,n)=>n>t?n:t)}function ze(e){let t=[];return e.deps.forEach(n=>Re(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}})),ie(t)+1|0}function We(e){let t=[];return e.deps.forEach(n=>{let r=F.get(n);if(r===void 0||r===e.id)return;let l=h.get(r);if(l!==void 0){t.push(l.level);return}}),ie(t)+1|0}function z(e){return typeof e.kind=="object"?We(e):ze(e)}function qe(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,c=typeof r.kind=="object"?0:1,d=u-c|0;return d!==0?d:n.level-r.level|0}function Ke(e){b.contents=!0,I(e),ue(e.id,()=>{e.run(),b.contents=!1}),e.level=z(e)}function oe(){for(;N.size>0;){let e=Array.from(N.values());N.clear(),e.sort(qe),e.forEach(t=>{let n=h.get(t);if(n!==void 0)return Ke(n)})}}function ce(e){if(U(e),De(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,ce(r.VAL));N.add(t)}),N.size>0)return Ge(oe)}function de(e){let t=F.get(e);if(t===void 0)return;let n=h.get(t);if(n!==void 0&&n.dirty){b.contents=!0,I(n),ue(t,()=>{n.run(),n.dirty=!1,b.contents=!1}),n.level=z(n);return}}function Xe(e){let t=k.contents;k.contents=!0;try{let n=e();return t||(k.contents=!1,N.size>0&&oe()),n}catch(n){throw t||(k.contents=!1),n}}let He=Fe,Ue=U;function ae(e,t,n){let r=X();return Ue(r),{id:r,value:{contents:e},version:{contents:0},equals:H(n,(l,u)=>l===u),name:t}}function Je(e){de(e.id);let t=p.contents;return t!==void 0&&Be(t,e.id),e.value.contents}function Qe(e){return de(e.id),e.value.contents}function se(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,ce(e.id)}function Ye(e,t){se(e,t(e.value.contents))}const Ze=Object.freeze(Object.defineProperty({__proto__:null,Id:void 0,Scheduler:void 0,batch:Xe,get:Je,make:ae,peek:Qe,set:se,untrack:He,update:Ye},Symbol.toStringTag,{value:"Module"}));function fe(e,t,n,r){return{id:e,kind:t,run:n,deps:new Set,level:0,dirty:!0,name:r}}function et(e,t){let n=X(),r={contents:void 0},u=fe(n,"Effect",()=>{let d=r.contents;d!==void 0&&d(),r.contents=e()},t);h.set(n,u),b.contents=!0,I(u);let s=p.contents;p.contents=n;try{u.run(),b.contents=!1}catch(d){throw p.contents=s,b.contents=!1,d}return p.contents=s,u.level=z(u),{dispose:()=>{let d=h.get(n);if(d===void 0)return;let G=r.contents;G!==void 0&&G(),I(d),h.delete(n)}}}const tt=Object.freeze(Object.defineProperty({__proto__:null,Id:void 0,Observer:void 0,Scheduler:void 0,run:et},Symbol.toStringTag,{value:"Module"}));function nt(e,t){let n=ae(void 0,t,void 0),r=X(),l=()=>{let c=e();n.value.contents=c},u=fe(r,{NAME:"Computed",VAL:n.id},l,void 0);h.set(r,u),b.contents=!0,I(u);let s=p.contents;p.contents=r;try{u.run(),u.dirty=!1,b.contents=!1}catch(c){throw p.contents=s,b.contents=!1,c}return p.contents=s,u.level=z(u),F.set(n.id,r),n}function rt(e){Ve(e.id)}const lt=Object.freeze(Object.defineProperty({__proto__:null,Id:void 0,Observer:void 0,Scheduler:void 0,Signal:void 0,dispose:rt,make:nt},Symbol.toStringTag,{value:"Module"}));let o=Ze,S=lt,w=tt;function pe(e){return Me(e.split("/"),t=>{if(t!=="")return t.startsWith(":")?{TAG:"Param",_0:t.slice(1)}:{TAG:"Static",_0:t}})}function me(e,t){let n=t.split("/").filter(u=>u!=="");if(e.length!==n.length)return"NoMatch";let r={};return e.every((u,s)=>{let c=n[s];return u.TAG==="Static"?c===u._0:(r[u._0]=c,!0)})?{TAG:"Match",_0:r}:"NoMatch"}function J(e,t){return me(pe(e),t)}const ut=Object.freeze(Object.defineProperty({__proto__:null,match:J,matchPath:me,parsePattern:pe},Symbol.toStringTag,{value:"Module"}));function it(e,t){delete e[t]}function M(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 ot={setAttrOrProp:M},W={contents:void 0};function ct(){return{disposers:[],computeds:[]}}function j(e,t){let n=W.contents;W.contents=e;let r=t();return W.contents=n,r}function R(e,t){e.disposers.push(t)}function he(e){e.disposers.forEach(t=>t.dispose()),e.computeds.forEach(t=>S.dispose(t))}function P(e,t){e.__xote_owner__=t}function _e(e){return Ne(e.__xote_owner__)}let dt={currentOwner:W,createOwner:ct,runWithOwner:j,addDisposer:R,disposeOwner:he,setOwner:P,getOwner:_e};function ge(e,t){return[e,{TAG:"Static",_0:t}]}function Se(e,t){return[e,{TAG:"SignalValue",_0:t}]}function Ee(e,t){return[e,{TAG:"Compute",_0:t}]}let at={$$static:ge,signal:Se,computed:Ee};function L(e){let t=_e(e);t!==void 0&&he(t),Array.from(e.childNodes||[]).forEach(L)}function O(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 P(l,u),j(u,()=>{r.forEach(i=>{let m=i[1],E=i[0];switch(m.TAG){case"Static":return M(l,E,m._0);case"SignalValue":let v=m._0;M(l,E,o.peek(v));let y=w.run(()=>{M(l,E,o.get(v))},void 0);return R(u,y);case"Compute":let V=m._0;M(l,E,V());let D=w.run(()=>{M(l,E,V())},void 0);return R(u,D)}}),n.forEach(i=>{l.addEventListener(i[0],i[1])}),t.forEach(i=>{let m=O(i);l.appendChild(m)})}),l;case"Text":return document.createTextNode(e._0);case"SignalText":let s=e._0,c=document.createTextNode(o.peek(s)),d={disposers:[],computeds:[]};return P(c,d),j(d,()=>{let i=w.run(()=>{c.textContent=o.get(s)},void 0);R(d,i)}),c;case"Fragment":let G=document.createDocumentFragment();return e._0.forEach(i=>{let m=O(i);G.appendChild(m)}),G;case"SignalFragment":let on=e._0,Z={disposers:[],computeds:[]},x=document.createElement("div");return x.setAttribute("style","display: contents"),P(x,Z),j(Z,()=>{let i=w.run(()=>{let m=o.get(on);Array.from(x.childNodes||[]).forEach(L),x.innerHTML="",m.forEach(v=>{let y=O(v);x.appendChild(y)})},void 0);R(Z,i)}),x;case"LazyComponent":let Oe={disposers:[],computeds:[]},cn=j(Oe,e._0),ke=O(cn);return P(ke,Oe),ke;case"KeyedList":let ee=e.renderItem,te=e.keyFn,Te=e.signal,ne={disposers:[],computeds:[]},re=document.createComment(" keyed-list-start "),B=document.createComment(" keyed-list-end ");P(re,ne);let A={},dn=()=>{let i=B.parentNode;if(i==null)return;let m=o.get(Te),E={};m.forEach(a=>{E[te(a)]=a});let v=[];Object.keys(A).forEach(a=>{if(E[a]===void 0){v.push(a);return}}),v.forEach(a=>{let f=A[a];if(f!==void 0){L(f.element),f.element.remove(),it(A,a);return}});let y=[],V={};m.forEach(a=>{let f=te(a),K=A[f];if(K!==void 0){if(K.item!==a){V[f]=!0;let fn=ee(a),pn=O(fn),Ae={key:f,item:a,element:pn};y.push(Ae),A[f]=Ae;return}y.push(K);return}let an=ee(a),sn=O(an),$e={key:f,item:a,element:sn};y.push($e),A[f]=$e});let D={contents:re.nextSibling};y.forEach(a=>{let f=D.contents;if(f==null){i.insertBefore(a.element,B);return}if(f===B){i.insertBefore(a.element,B);return}if(f===a.element){D.contents=f.nextSibling;return}H(V[a.key],!1)?(L(f),i.replaceChild(a.element,f),D.contents=a.element.nextSibling):(i.insertBefore(a.element,f),D.contents=a.element.nextSibling)})},q=document.createDocumentFragment();return q.appendChild(re),o.peek(Te).forEach(i=>{let m=te(i),E=ee(i),v=O(E),y={key:m,item:i,element:v};A[m]=y,q.appendChild(v)}),q.appendChild(B),j(ne,()=>{let i=w.run(()=>{dn()},void 0);R(ne,i)}),q}}let st={disposeElement:L,render:O};function ft(e){return{TAG:"Text",_0:e}}function pt(e){return{TAG:"SignalText",_0:S.make(e,void 0)}}function mt(e){return{TAG:"Fragment",_0:e}}function Q(e){return{TAG:"SignalFragment",_0:e}}function ht(e,t){return{TAG:"SignalFragment",_0:S.make(()=>o.get(e).map(t),void 0)}}function _t(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(d=>d),s=n!==void 0?n:[].map(d=>d),c=r!==void 0?r:[].map(d=>d);return{TAG:"Element",tag:e,attrs:u,events:s,children:c}}function gt(e,t,n,r){return _("div",e,t,n)}function St(e,t,n,r){return _("span",e,t,n)}function Et(e,t,n,r){return _("button",e,t,n)}function bt(e,t,n){return _("input",e,t,void 0)}function vt(e,t,n,r){return _("h1",e,t,n)}function yt(e,t,n,r){return _("h2",e,t,n)}function wt(e,t,n,r){return _("h3",e,t,n)}function Ot(e,t,n,r){return _("p",e,t,n)}function kt(e,t,n,r){return _("ul",e,t,n)}function Tt(e,t,n,r){return _("li",e,t,n)}function be(e,t,n,r){return _("a",e,t,n)}function ve(e,t){let n=O(e);t.appendChild(n)}function $t(e,t){let n=document.getElementById(t);if(n==null){console.error("Container element not found: "+t);return}else return ve(e,n)}let ye=ge;const At=Object.freeze(Object.defineProperty({__proto__:null,Attributes:at,DOM:ot,Reactivity:dt,Render:st,a:be,attr:ye,button:Et,computedAttr:Ee,div:gt,element:_,fragment:mt,h1:vt,h2:yt,h3:wt,input:bt,keyedList:_t,li:Tt,list:ht,mount:ve,mountById:$t,p:Ot,signalAttr:Se,signalFragment:Q,span:St,text:ft,textSignal:pt,ul:kt},Symbol.toStringTag,{value:"Module"}));let $=o.make({pathname:"/",search:"",hash:""},void 0,void 0);function Y(){return{pathname:window.location.pathname,search:window.location.search,hash:window.location.hash}}function Ct(){o.set($,Y());let e=t=>o.set($,Y());window.addEventListener("popstate",e)}function we(e,t,n,r){let l=t!==void 0?t:"",u=n!==void 0?n:"",s={pathname:e,search:l,hash:u},c=e+l+u,d={};window.history.pushState(d,"",c),o.set($,s)}function Nt(e,t,n,r){let l=t!==void 0?t:"",u=n!==void 0?n:"",s={pathname:e,search:l,hash:u},c=e+l+u,d={};window.history.replaceState(d,"",c),o.set($,s)}function It(e,t){return Q(S.make(()=>{let n=o.get($),r=J(e,n.pathname);return typeof r!="object"?[]:[t(r._0)]},void 0))}function Mt(e){return Q(S.make(()=>{let t=o.get($),n=je(e,r=>{let l=J(r.pattern,t.pathname);if(typeof l=="object")return r.render(l._0)});return n!==void 0?[n]:[]},void 0))}function jt(e,t,n,r){let l=t!==void 0?t:[],u=n!==void 0?n:[],s=c=>{c.preventDefault(),we(e,void 0,void 0)};return be(l.concat([ye("href",e)]),[["click",s]],u)}const Rt=Object.freeze(Object.defineProperty({__proto__:null,Component:void 0,Route:void 0,getCurrentLocation:Y,init:Ct,link:jt,location:$,push:we,replace:Nt,route:It,routes:Mt},Symbol.toStringTag,{value:"Module"}));let Pt=o.Id,xt=o.Scheduler,Dt=o.make,Ft=o.get,Lt=o.peek,Gt=o.set,Bt=o.update,Vt=o.batch,zt=o.untrack,Wt={Id:Pt,Scheduler:xt,make:Dt,get:Ft,peek:Lt,set:Gt,update:Bt,batch:Vt,untrack:zt},qt=S.Id,Kt=S.Signal,Xt=S.Observer,Ht=S.Scheduler,Ut=S.make,Jt=S.dispose,Qt={Id:qt,Signal:Kt,Observer:Xt,Scheduler:Ht,make:Ut,dispose:Jt},Yt=w.Id,Zt=w.Observer,en=w.Scheduler,tn=w.run,nn={Id:Yt,Observer:Zt,Scheduler:en,run:tn},rn=At,ln=ut,un=Rt;g.Component=rn,g.Computed=Qt,g.Effect=nn,g.Route=ln,g.Router=un,g.Signal=Wt,Object.defineProperty(g,Symbol.toStringTag,{value:"Module"})}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xote",
3
- "version": "4.4.1",
3
+ "version": "4.4.3",
4
4
  "repository": {
5
5
  "url": "https://github.com/brnrdog/xote"
6
6
  },
@@ -25,17 +25,27 @@ module DOM = {
25
25
  external addEventListener: (Dom.element, string, Dom.event => unit) => unit = "addEventListener"
26
26
  @send external appendChild: (Dom.element, Dom.element) => unit = "appendChild"
27
27
  @send external setAttribute: (Dom.element, string, string) => unit = "setAttribute"
28
+ @send external removeAttribute: (Dom.element, string) => unit = "removeAttribute"
28
29
  @send external replaceChild: (Dom.element, Dom.element, Dom.element) => unit = "replaceChild"
29
30
  @send external insertBefore: (Dom.element, Dom.element, Dom.element) => unit = "insertBefore"
30
31
  @set external setTextContent: (Dom.element, string) => unit = "textContent"
31
32
  @set external setValue: (Dom.element, string) => unit = "value"
32
33
  @set external setChecked: (Dom.element, bool) => unit = "checked"
34
+ @set external setDisabled: (Dom.element, bool) => unit = "disabled"
33
35
 
34
36
  /* Set attribute or property depending on attribute name */
35
37
  let setAttrOrProp = (el: Dom.element, key: string, value: string): unit => {
36
38
  switch key {
37
39
  | "value" => setValue(el, value)
38
40
  | "checked" => setChecked(el, value == "true")
41
+ | "disabled" => setDisabled(el, value == "true")
42
+ /* Boolean attributes that should be added/removed based on value */
43
+ | "required" | "readonly" | "multiple" | "aria-hidden" | "aria-expanded" | "aria-selected" =>
44
+ if value == "true" {
45
+ setAttribute(el, key, "")
46
+ } else {
47
+ removeAttribute(el, key)
48
+ }
39
49
  | _ => setAttribute(el, key, value)
40
50
  }
41
51
  }
@@ -10,6 +10,16 @@ function setAttrOrProp(el, key, value) {
10
10
  case "checked" :
11
11
  el.checked = value === "true";
12
12
  return;
13
+ case "disabled" :
14
+ el.disabled = value === "true";
15
+ return;
16
+ case "aria-expanded" :
17
+ case "aria-hidden" :
18
+ case "aria-selected" :
19
+ case "multiple" :
20
+ case "readonly" :
21
+ case "required" :
22
+ break;
13
23
  case "value" :
14
24
  el.value = value;
15
25
  return;
@@ -17,6 +27,11 @@ function setAttrOrProp(el, key, value) {
17
27
  el.setAttribute(key, value);
18
28
  return;
19
29
  }
30
+ if (value === "true") {
31
+ el.setAttribute(key, "");
32
+ } else {
33
+ el.removeAttribute(key);
34
+ }
20
35
  }
21
36
 
22
37
  let DOM = {
package/src/Xote__JSX.res CHANGED
@@ -65,6 +65,7 @@ module Elements = {
65
65
 
66
66
  /* Props type for HTML elements - supports common attributes and events
67
67
  * String-like attributes use polymorphic types to accept strings, signals, or computed functions
68
+ * Boolean attributes also use polymorphic types to accept bools, signals, or computed functions
68
69
  */
69
70
  type props<
70
71
  'id,
@@ -89,6 +90,14 @@ module Elements = {
89
90
  'height,
90
91
  'role,
91
92
  'ariaLabel,
93
+ 'disabled,
94
+ 'checked,
95
+ 'required,
96
+ 'readOnly,
97
+ 'multiple,
98
+ 'ariaHidden,
99
+ 'ariaExpanded,
100
+ 'ariaSelected,
92
101
  > = {
93
102
  /* Standard attributes - can be static strings, signals, or computed values */
94
103
  id?: 'id,
@@ -99,10 +108,10 @@ module Elements = {
99
108
  name?: 'name,
100
109
  value?: 'value,
101
110
  placeholder?: 'placeholder,
102
- disabled?: bool,
103
- checked?: bool,
104
- required?: bool,
105
- readOnly?: bool,
111
+ disabled?: 'disabled,
112
+ checked?: 'checked,
113
+ required?: 'required,
114
+ readOnly?: 'readOnly,
106
115
  maxLength?: int,
107
116
  minLength?: int,
108
117
  min?: 'min,
@@ -110,7 +119,7 @@ module Elements = {
110
119
  step?: 'step,
111
120
  pattern?: 'pattern,
112
121
  autoComplete?: 'autoComplete,
113
- multiple?: bool,
122
+ multiple?: 'multiple,
114
123
  accept?: 'accept,
115
124
  rows?: int,
116
125
  cols?: int,
@@ -128,9 +137,9 @@ module Elements = {
128
137
  role?: 'role,
129
138
  tabIndex?: int,
130
139
  @as("aria-label") ariaLabel?: 'ariaLabel,
131
- @as("aria-hidden") ariaHidden?: bool,
132
- @as("aria-expanded") ariaExpanded?: bool,
133
- @as("aria-selected") ariaSelected?: bool,
140
+ @as("aria-hidden") ariaHidden?: 'ariaHidden,
141
+ @as("aria-expanded") ariaExpanded?: 'ariaExpanded,
142
+ @as("aria-selected") ariaSelected?: 'ariaSelected,
134
143
  /* Data attributes */
135
144
  data?: Obj.t,
136
145
  /* Event handlers */
@@ -169,6 +178,26 @@ module Elements = {
169
178
  }
170
179
  }
171
180
 
181
+ /* Helper to convert boolean attribute values (static bool, signal, or computed) to Component.attrValue */
182
+ let convertBoolAttrValue = (key: string, value: 'a): (string, Component.attrValue) => {
183
+ // Check if it's a function (computed)
184
+ if typeof(value) == #function {
185
+ // It's a computed function that returns bool
186
+ let f: unit => bool = Obj.magic(value)
187
+ Component.computedAttr(key, () => f() ? "true" : "false")
188
+ } else if typeof(value) == #object && hasId(value)->Option.isSome {
189
+ // It's a signal of bool
190
+ let sig: Signal.t<bool> = Obj.magic(value)
191
+ // Create a computed signal that converts bool to string
192
+ let strSignal = Computed.make(() => Signal.get(sig) ? "true" : "false")
193
+ Component.signalAttr(key, strSignal)
194
+ } else {
195
+ // It's a static bool
196
+ let b: bool = Obj.magic(value)
197
+ Component.attr(key, b ? "true" : "false")
198
+ }
199
+ }
200
+
172
201
  /* Convert props to attrs array */
173
202
  let propsToAttrs = (
174
203
  props: props<
@@ -194,6 +223,14 @@ module Elements = {
194
223
  'height,
195
224
  'role,
196
225
  'ariaLabel,
226
+ 'disabled,
227
+ 'checked,
228
+ 'required,
229
+ 'readOnly,
230
+ 'multiple,
231
+ 'ariaHidden,
232
+ 'ariaExpanded,
233
+ 'ariaSelected,
197
234
  >,
198
235
  ): array<(string, Component.attrValue)> => {
199
236
  let attrs = []
@@ -236,23 +273,23 @@ module Elements = {
236
273
  }
237
274
 
238
275
  switch props.disabled {
239
- | Some(true) => attrs->Array.push(Component.attr("disabled", "true"))
240
- | _ => ()
276
+ | Some(v) => attrs->Array.push(convertBoolAttrValue("disabled", v))
277
+ | None => ()
241
278
  }
242
279
 
243
280
  switch props.checked {
244
- | Some(true) => attrs->Array.push(Component.attr("checked", "true"))
245
- | _ => ()
281
+ | Some(v) => attrs->Array.push(convertBoolAttrValue("checked", v))
282
+ | None => ()
246
283
  }
247
284
 
248
285
  switch props.required {
249
- | Some(true) => attrs->Array.push(Component.attr("required", "true"))
250
- | _ => ()
286
+ | Some(v) => attrs->Array.push(convertBoolAttrValue("required", v))
287
+ | None => ()
251
288
  }
252
289
 
253
290
  switch props.readOnly {
254
- | Some(true) => attrs->Array.push(Component.attr("readonly", "true"))
255
- | _ => ()
291
+ | Some(v) => attrs->Array.push(convertBoolAttrValue("readonly", v))
292
+ | None => ()
256
293
  }
257
294
 
258
295
  switch props.maxLength {
@@ -291,8 +328,8 @@ module Elements = {
291
328
  }
292
329
 
293
330
  switch props.multiple {
294
- | Some(true) => attrs->Array.push(Component.attr("multiple", "true"))
295
- | _ => ()
331
+ | Some(v) => attrs->Array.push(convertBoolAttrValue("multiple", v))
332
+ | None => ()
296
333
  }
297
334
 
298
335
  switch props.accept {
@@ -365,20 +402,17 @@ module Elements = {
365
402
  }
366
403
 
367
404
  switch props.ariaHidden {
368
- | Some(true) => attrs->Array.push(Component.attr("aria-hidden", "true"))
369
- | Some(false) => attrs->Array.push(Component.attr("aria-hidden", "false"))
405
+ | Some(v) => attrs->Array.push(convertBoolAttrValue("aria-hidden", v))
370
406
  | None => ()
371
407
  }
372
408
 
373
409
  switch props.ariaExpanded {
374
- | Some(true) => attrs->Array.push(Component.attr("aria-expanded", "true"))
375
- | Some(false) => attrs->Array.push(Component.attr("aria-expanded", "false"))
410
+ | Some(v) => attrs->Array.push(convertBoolAttrValue("aria-expanded", v))
376
411
  | None => ()
377
412
  }
378
413
 
379
414
  switch props.ariaSelected {
380
- | Some(true) => attrs->Array.push(Component.attr("aria-selected", "true"))
381
- | Some(false) => attrs->Array.push(Component.attr("aria-selected", "false"))
415
+ | Some(v) => attrs->Array.push(convertBoolAttrValue("aria-selected", v))
382
416
  | None => ()
383
417
  }
384
418
 
@@ -422,6 +456,14 @@ module Elements = {
422
456
  'height,
423
457
  'role,
424
458
  'ariaLabel,
459
+ 'disabled,
460
+ 'checked,
461
+ 'required,
462
+ 'readOnly,
463
+ 'multiple,
464
+ 'ariaHidden,
465
+ 'ariaExpanded,
466
+ 'ariaSelected,
425
467
  >,
426
468
  ): array<(string, Dom.event => unit)> => {
427
469
  let events = []
@@ -504,6 +546,14 @@ module Elements = {
504
546
  'height,
505
547
  'role,
506
548
  'ariaLabel,
549
+ 'disabled,
550
+ 'checked,
551
+ 'required,
552
+ 'readOnly,
553
+ 'multiple,
554
+ 'ariaHidden,
555
+ 'ariaExpanded,
556
+ 'ariaSelected,
507
557
  >,
508
558
  ): array<element> => {
509
559
  switch props.children {
@@ -539,6 +589,14 @@ module Elements = {
539
589
  'height,
540
590
  'role,
541
591
  'ariaLabel,
592
+ 'disabled,
593
+ 'checked,
594
+ 'required,
595
+ 'readOnly,
596
+ 'multiple,
597
+ 'ariaHidden,
598
+ 'ariaExpanded,
599
+ 'ariaSelected,
542
600
  >,
543
601
  ): element => {
544
602
  Component.Element({
@@ -575,6 +633,14 @@ module Elements = {
575
633
  'height,
576
634
  'role,
577
635
  'ariaLabel,
636
+ 'disabled,
637
+ 'checked,
638
+ 'required,
639
+ 'readOnly,
640
+ 'multiple,
641
+ 'ariaHidden,
642
+ 'ariaExpanded,
643
+ 'ariaSelected,
578
644
  >,
579
645
  ): element => createElement(tag, props)
580
646
 
@@ -603,6 +669,14 @@ module Elements = {
603
669
  'height,
604
670
  'role,
605
671
  'ariaLabel,
672
+ 'disabled,
673
+ 'checked,
674
+ 'required,
675
+ 'readOnly,
676
+ 'multiple,
677
+ 'ariaHidden,
678
+ 'ariaExpanded,
679
+ 'ariaSelected,
606
680
  >,
607
681
  ): element => createElement(tag, props)
608
682
 
@@ -631,6 +705,14 @@ module Elements = {
631
705
  'height,
632
706
  'role,
633
707
  'ariaLabel,
708
+ 'disabled,
709
+ 'checked,
710
+ 'required,
711
+ 'readOnly,
712
+ 'multiple,
713
+ 'ariaHidden,
714
+ 'ariaExpanded,
715
+ 'ariaSelected,
634
716
  >,
635
717
  ~key: option<string>=?,
636
718
  _: unit,
@@ -664,6 +746,14 @@ module Elements = {
664
746
  'height,
665
747
  'role,
666
748
  'ariaLabel,
749
+ 'disabled,
750
+ 'checked,
751
+ 'required,
752
+ 'readOnly,
753
+ 'multiple,
754
+ 'ariaHidden,
755
+ 'ariaExpanded,
756
+ 'ariaSelected,
667
757
  >,
668
758
  ~key: option<string>=?,
669
759
  _: unit,
@@ -1,5 +1,6 @@
1
1
  // Generated by ReScript, PLEASE EDIT WITH CARE
2
2
 
3
+ import * as Signals from "rescript-signals/src/Signals.res.mjs";
3
4
  import * as Core__Option from "@rescript/core/src/Core__Option.res.mjs";
4
5
  import * as Xote__Component from "./Xote__Component.res.mjs";
5
6
  import * as Primitive_option from "@rescript/runtime/lib/es6/Primitive_option.js";
@@ -53,6 +54,29 @@ function convertAttrValue(key, value) {
53
54
  }
54
55
  }
55
56
 
57
+ function convertBoolAttrValue(key, value) {
58
+ if (typeof value === "function") {
59
+ return Xote__Component.computedAttr(key, () => {
60
+ if (value()) {
61
+ return "true";
62
+ } else {
63
+ return "false";
64
+ }
65
+ });
66
+ }
67
+ if (!(typeof value === "object" && Core__Option.isSome(value.id))) {
68
+ return Xote__Component.attr(key, value ? "true" : "false");
69
+ }
70
+ let strSignal = Signals.Computed.make(() => {
71
+ if (Signals.Signal.get(value)) {
72
+ return "true";
73
+ } else {
74
+ return "false";
75
+ }
76
+ }, undefined);
77
+ return Xote__Component.signalAttr(key, strSignal);
78
+ }
79
+
56
80
  function propsToAttrs(props) {
57
81
  let attrs = [];
58
82
  let v = props.id;
@@ -83,129 +107,117 @@ function propsToAttrs(props) {
83
107
  if (v$6 !== undefined) {
84
108
  attrs.push(convertAttrValue("placeholder", Primitive_option.valFromOption(v$6)));
85
109
  }
86
- let match = props.disabled;
87
- if (match !== undefined && match) {
88
- attrs.push(Xote__Component.attr("disabled", "true"));
89
- }
90
- let match$1 = props.checked;
91
- if (match$1 !== undefined && match$1) {
92
- attrs.push(Xote__Component.attr("checked", "true"));
93
- }
94
- let match$2 = props.required;
95
- if (match$2 !== undefined && match$2) {
96
- attrs.push(Xote__Component.attr("required", "true"));
97
- }
98
- let match$3 = props.readOnly;
99
- if (match$3 !== undefined && match$3) {
100
- attrs.push(Xote__Component.attr("readonly", "true"));
101
- }
102
- let v$7 = props.maxLength;
110
+ let v$7 = props.disabled;
103
111
  if (v$7 !== undefined) {
104
- attrs.push(Xote__Component.attr("maxlength", v$7.toString()));
112
+ attrs.push(convertBoolAttrValue("disabled", Primitive_option.valFromOption(v$7)));
105
113
  }
106
- let v$8 = props.minLength;
114
+ let v$8 = props.checked;
107
115
  if (v$8 !== undefined) {
108
- attrs.push(Xote__Component.attr("minlength", v$8.toString()));
116
+ attrs.push(convertBoolAttrValue("checked", Primitive_option.valFromOption(v$8)));
109
117
  }
110
- let v$9 = props.min;
118
+ let v$9 = props.required;
111
119
  if (v$9 !== undefined) {
112
- attrs.push(convertAttrValue("min", Primitive_option.valFromOption(v$9)));
120
+ attrs.push(convertBoolAttrValue("required", Primitive_option.valFromOption(v$9)));
113
121
  }
114
- let v$10 = props.max;
122
+ let v$10 = props.readOnly;
115
123
  if (v$10 !== undefined) {
116
- attrs.push(convertAttrValue("max", Primitive_option.valFromOption(v$10)));
124
+ attrs.push(convertBoolAttrValue("readonly", Primitive_option.valFromOption(v$10)));
117
125
  }
118
- let v$11 = props.step;
126
+ let v$11 = props.maxLength;
119
127
  if (v$11 !== undefined) {
120
- attrs.push(convertAttrValue("step", Primitive_option.valFromOption(v$11)));
128
+ attrs.push(Xote__Component.attr("maxlength", v$11.toString()));
121
129
  }
122
- let v$12 = props.pattern;
130
+ let v$12 = props.minLength;
123
131
  if (v$12 !== undefined) {
124
- attrs.push(convertAttrValue("pattern", Primitive_option.valFromOption(v$12)));
132
+ attrs.push(Xote__Component.attr("minlength", v$12.toString()));
125
133
  }
126
- let v$13 = props.autoComplete;
134
+ let v$13 = props.min;
127
135
  if (v$13 !== undefined) {
128
- attrs.push(convertAttrValue("autocomplete", Primitive_option.valFromOption(v$13)));
136
+ attrs.push(convertAttrValue("min", Primitive_option.valFromOption(v$13)));
129
137
  }
130
- let match$4 = props.multiple;
131
- if (match$4 !== undefined && match$4) {
132
- attrs.push(Xote__Component.attr("multiple", "true"));
133
- }
134
- let v$14 = props.accept;
138
+ let v$14 = props.max;
135
139
  if (v$14 !== undefined) {
136
- attrs.push(convertAttrValue("accept", Primitive_option.valFromOption(v$14)));
140
+ attrs.push(convertAttrValue("max", Primitive_option.valFromOption(v$14)));
137
141
  }
138
- let v$15 = props.rows;
142
+ let v$15 = props.step;
139
143
  if (v$15 !== undefined) {
140
- attrs.push(Xote__Component.attr("rows", v$15.toString()));
144
+ attrs.push(convertAttrValue("step", Primitive_option.valFromOption(v$15)));
141
145
  }
142
- let v$16 = props.cols;
146
+ let v$16 = props.pattern;
143
147
  if (v$16 !== undefined) {
144
- attrs.push(Xote__Component.attr("cols", v$16.toString()));
148
+ attrs.push(convertAttrValue("pattern", Primitive_option.valFromOption(v$16)));
145
149
  }
146
- let v$17 = props.for;
150
+ let v$17 = props.autoComplete;
147
151
  if (v$17 !== undefined) {
148
- attrs.push(convertAttrValue("for", Primitive_option.valFromOption(v$17)));
152
+ attrs.push(convertAttrValue("autocomplete", Primitive_option.valFromOption(v$17)));
149
153
  }
150
- let v$18 = props.href;
154
+ let v$18 = props.multiple;
151
155
  if (v$18 !== undefined) {
152
- attrs.push(convertAttrValue("href", Primitive_option.valFromOption(v$18)));
156
+ attrs.push(convertBoolAttrValue("multiple", Primitive_option.valFromOption(v$18)));
153
157
  }
154
- let v$19 = props.target;
158
+ let v$19 = props.accept;
155
159
  if (v$19 !== undefined) {
156
- attrs.push(convertAttrValue("target", Primitive_option.valFromOption(v$19)));
160
+ attrs.push(convertAttrValue("accept", Primitive_option.valFromOption(v$19)));
157
161
  }
158
- let v$20 = props.src;
162
+ let v$20 = props.rows;
159
163
  if (v$20 !== undefined) {
160
- attrs.push(convertAttrValue("src", Primitive_option.valFromOption(v$20)));
164
+ attrs.push(Xote__Component.attr("rows", v$20.toString()));
161
165
  }
162
- let v$21 = props.alt;
166
+ let v$21 = props.cols;
163
167
  if (v$21 !== undefined) {
164
- attrs.push(convertAttrValue("alt", Primitive_option.valFromOption(v$21)));
168
+ attrs.push(Xote__Component.attr("cols", v$21.toString()));
165
169
  }
166
- let v$22 = props.width;
170
+ let v$22 = props.for;
167
171
  if (v$22 !== undefined) {
168
- attrs.push(convertAttrValue("width", Primitive_option.valFromOption(v$22)));
172
+ attrs.push(convertAttrValue("for", Primitive_option.valFromOption(v$22)));
169
173
  }
170
- let v$23 = props.height;
174
+ let v$23 = props.href;
171
175
  if (v$23 !== undefined) {
172
- attrs.push(convertAttrValue("height", Primitive_option.valFromOption(v$23)));
176
+ attrs.push(convertAttrValue("href", Primitive_option.valFromOption(v$23)));
173
177
  }
174
- let v$24 = props.role;
178
+ let v$24 = props.target;
175
179
  if (v$24 !== undefined) {
176
- attrs.push(convertAttrValue("role", Primitive_option.valFromOption(v$24)));
180
+ attrs.push(convertAttrValue("target", Primitive_option.valFromOption(v$24)));
177
181
  }
178
- let v$25 = props.tabIndex;
182
+ let v$25 = props.src;
179
183
  if (v$25 !== undefined) {
180
- attrs.push(Xote__Component.attr("tabindex", v$25.toString()));
184
+ attrs.push(convertAttrValue("src", Primitive_option.valFromOption(v$25)));
181
185
  }
182
- let v$26 = props["aria-label"];
186
+ let v$26 = props.alt;
183
187
  if (v$26 !== undefined) {
184
- attrs.push(convertAttrValue("aria-label", Primitive_option.valFromOption(v$26)));
188
+ attrs.push(convertAttrValue("alt", Primitive_option.valFromOption(v$26)));
185
189
  }
186
- let match$5 = props["aria-hidden"];
187
- if (match$5 !== undefined) {
188
- if (match$5) {
189
- attrs.push(Xote__Component.attr("aria-hidden", "true"));
190
- } else {
191
- attrs.push(Xote__Component.attr("aria-hidden", "false"));
192
- }
190
+ let v$27 = props.width;
191
+ if (v$27 !== undefined) {
192
+ attrs.push(convertAttrValue("width", Primitive_option.valFromOption(v$27)));
193
193
  }
194
- let match$6 = props["aria-expanded"];
195
- if (match$6 !== undefined) {
196
- if (match$6) {
197
- attrs.push(Xote__Component.attr("aria-expanded", "true"));
198
- } else {
199
- attrs.push(Xote__Component.attr("aria-expanded", "false"));
200
- }
194
+ let v$28 = props.height;
195
+ if (v$28 !== undefined) {
196
+ attrs.push(convertAttrValue("height", Primitive_option.valFromOption(v$28)));
201
197
  }
202
- let match$7 = props["aria-selected"];
203
- if (match$7 !== undefined) {
204
- if (match$7) {
205
- attrs.push(Xote__Component.attr("aria-selected", "true"));
206
- } else {
207
- attrs.push(Xote__Component.attr("aria-selected", "false"));
208
- }
198
+ let v$29 = props.role;
199
+ if (v$29 !== undefined) {
200
+ attrs.push(convertAttrValue("role", Primitive_option.valFromOption(v$29)));
201
+ }
202
+ let v$30 = props.tabIndex;
203
+ if (v$30 !== undefined) {
204
+ attrs.push(Xote__Component.attr("tabindex", v$30.toString()));
205
+ }
206
+ let v$31 = props["aria-label"];
207
+ if (v$31 !== undefined) {
208
+ attrs.push(convertAttrValue("aria-label", Primitive_option.valFromOption(v$31)));
209
+ }
210
+ let v$32 = props["aria-hidden"];
211
+ if (v$32 !== undefined) {
212
+ attrs.push(convertBoolAttrValue("aria-hidden", Primitive_option.valFromOption(v$32)));
213
+ }
214
+ let v$33 = props["aria-expanded"];
215
+ if (v$33 !== undefined) {
216
+ attrs.push(convertBoolAttrValue("aria-expanded", Primitive_option.valFromOption(v$33)));
217
+ }
218
+ let v$34 = props["aria-selected"];
219
+ if (v$34 !== undefined) {
220
+ attrs.push(convertBoolAttrValue("aria-selected", Primitive_option.valFromOption(v$34)));
209
221
  }
210
222
  let _dataObj = props.data;
211
223
  if (_dataObj !== undefined) {
@@ -330,6 +342,7 @@ let Elements = {
330
342
  signal: signal,
331
343
  computed: computed,
332
344
  convertAttrValue: convertAttrValue,
345
+ convertBoolAttrValue: convertBoolAttrValue,
333
346
  propsToAttrs: propsToAttrs,
334
347
  propsToEvents: propsToEvents,
335
348
  getChildren: getChildren,
@@ -353,4 +366,4 @@ export {
353
366
  $$null,
354
367
  Elements,
355
368
  }
356
- /* Xote__Component Not a pure module */
369
+ /* Signals Not a pure module */