xote 6.0.0 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/xote.umd.js CHANGED
@@ -1,17 +1,17 @@
1
- (function(A,oe){typeof exports=="object"&&typeof module<"u"?oe(exports):typeof define=="function"&&define.amd?define(["exports"],oe):(A=typeof globalThis<"u"?globalThis:A||self,oe(A.xote={}))})(this,(function(A){"use strict";let oe={contents:0};function Oe(){return oe.contents=oe.contents+1|0,oe.contents}function st(){return{first:void 0,last:void 0,version:0,compute:void 0,firstDep:void 0,lastDep:void 0,flags:0,level:0}}function $n(e){return{first:void 0,last:void 0,version:0,compute:e,firstDep:void 0,lastDep:void 0,flags:1,level:0}}function An(e,t,n,r,l){return{id:e,kind:t,run:n,firstDep:void 0,lastDep:void 0,flags:1,level:0,name:r,backingSubs:l}}function ft(e){e.flags=e.flags&-2}function xn(e){return(e.flags&2)!==0}function kn(e){e.flags=e.flags|2}function On(e){e.flags=e.flags&-3}function ht(e){return(e.flags&1)!==0}function Dn(e){e.flags=e.flags|1}function We(e){e.flags=e.flags&-2}function Cn(e){e.flags=e.flags&-3}function De(e){return e.compute!==void 0}function mt(e,t){return{subs:e,observer:t,nextDep:void 0,prevDep:void 0,nextSub:void 0,prevSub:void 0}}function Ce(e,t){t.prevSub=e.last,t.nextSub=void 0;let n=e.last;n!==void 0?n.nextSub=t:e.first=t,e.last=t}function pt(e,t){t.prevDep=e.lastDep,t.nextDep=void 0;let n=e.lastDep;n!==void 0?n.nextDep=t:e.firstDep=t,e.lastDep=t}function gt(e){let t=e.subs,n=e.prevSub;n!==void 0?n.nextSub=e.nextSub:t.first=e.nextSub;let r=e.nextSub;r!==void 0?r.prevSub=e.prevSub:t.last=e.prevSub,e.prevSub=void 0,e.nextSub=void 0}function yt(e){let t=e.firstDep;for(;t!==void 0;){let n=t;if(n!==void 0){let r=n.nextDep;gt(n),t=r}}e.firstDep=void 0,e.lastDep=void 0}function Ve(e){let t=e.firstDep;for(;t!==void 0;){let n=t;if(n!==void 0){let r=n.nextDep;gt(n),t=r}}e.firstDep=void 0,e.lastDep=void 0}function St(e,t){t.prevDep=e.lastDep,t.nextDep=void 0;let n=e.lastDep;n!==void 0?n.nextDep=t:e.firstDep=t,e.lastDep=t}let D={contents:void 0},F={contents:void 0},ee=[],de=[],te={contents:!1},je=[],_t=(function(e){e.length=0});function jn(e){if(!xn(e)){kn(e),ee.push(e);return}}function Pn(e,t){if(e.firstDep===void 0){let i={subs:t,observer:e,nextDep:void 0,prevDep:void 0,nextSub:void 0,prevSub:void 0};return St(e,i),Ce(t,i)}let n=!1,r=e.firstDep;for(;r!==void 0&&!n;){let i=r;i!==void 0&&(i.subs===t?n=!0:r=i.nextDep)}if(n)return;let l={subs:t,observer:e,nextDep:void 0,prevDep:void 0,nextSub:void 0,prevSub:void 0};St(e,l),Ce(t,l)}function Mn(e,t){if(e.firstDep===void 0){let i=mt(t,e);return pt(e,i),Ce(t,i)}let n=!1,r=e.firstDep;for(;r!==void 0&&!n;){let i=r;i!==void 0&&(i.subs===t?n=!0:r=i.nextDep)}if(n)return;let l=mt(t,e);pt(e,l),Ce(t,l)}function Rn(e){let t=D.contents;if(t!==void 0)return Pn(t,e);let n=F.contents;if(n!==void 0)return Mn(n,e)}function Gn(e,t){return e.level-t.level|0}function Ln(e,t){return e.level-t.level|0}function bt(e){let t=0,n=e.firstDep;for(;n!==void 0;){let r=n;r!==void 0&&(De(r.subs)&&r.subs.level>t&&(t=r.subs.level),n=r.nextDep)}return t+1|0}function Et(e){let t=0,n=e.firstDep;for(;n!==void 0;){let r=n;r!==void 0&&(De(r.subs)&&r.subs.level>t&&(t=r.subs.level),n=r.nextDep)}return t+1|0}function Fn(e){let t=e.level;Ve(e),Cn(e);let n=D.contents;D.contents=e;try{let r=e.compute;r!==void 0&&r(),We(e),D.contents=n}catch(r){throw D.contents=n,r}if(t===0){e.level=bt(e);return}}function Nn(e){let t=e.level;yt(e),On(e);let n=F.contents;F.contents=e;try{e.run(),ft(e),F.contents=n}catch(r){throw F.contents=n,r}if(t===0){e.level=Et(e);return}}function wt(){te.contents=!0;try{for(;ee.length!==0||de.length!==0;){if(de.length!==0){de.sort(Ln);let e=de.slice();_t(de),e.forEach(Fn)}if(ee.length!==0){ee.sort(Gn);let e=ee.slice();_t(ee),e.forEach(Nn)}}te.contents=!1;return}catch(e){throw te.contents=!1,e}}function zn(e){for(je.push(e);je.length!==0;){let t=je.pop();if(t!==void 0){let n=t.first;for(;n!==void 0;){let r=n;if(r!==void 0){let l=r.observer;De(l)?ht(l)||(Dn(l),je.push(l)):jn(r.observer),n=r.nextSub}}}}if((ee.length!==0||de.length!==0)&&!te.contents)return wt()}function Tt(e){if(!(De(e)&&ht(e)))return;let t=e.level;Ve(e);let n=D.contents;D.contents=e;try{let r=e.compute;r!==void 0&&r(),We(e),D.contents=n}catch(r){throw D.contents=n,r}if(t===0){e.level=bt(e);return}}function Bn(e){let t=te.contents;te.contents=!0;try{let n=e();return t||(te.contents=!1,(ee.length!==0||de.length!==0)&&wt()),n}catch(n){throw t||(te.contents=!1),n}}function In(e){let t=D.contents,n=F.contents;D.contents=void 0,F.contents=void 0;try{let r=e();return D.contents=t,F.contents=n,r}catch(r){throw D.contents=t,F.contents=n,r}}function vt(e,t){let n=Oe(),r={contents:void 0},i=An(n,"Effect",()=>{let y=r.contents;y!==void 0&&y(),r.contents=e()},t,void 0),u=F.contents;F.contents=i;try{i.run(),ft(i),F.contents=u}catch(y){throw F.contents=u,y}i.level=Et(i);let o={contents:!1};return{dispose:()=>{if(o.contents)return;o.contents=!0;let y=r.contents;y!==void 0&&y(),yt(i)}}}function Kn(e,t){vt(e,t)}let j=vt;const Wn=Object.freeze(Object.defineProperty({__proto__:null,run:Kn,runWithDisposer:j},Symbol.toStringTag,{value:"Module"}));function ae(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 He(e){if(e!=null)return ae(e)}function h(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 Vn(e,t){if(e!==void 0)return ae(t(h(e)))}function Y(e,t){return e!==void 0?h(e):t}function Xe(e){return e!==void 0}function Hn(e,t,n){return{id:Oe(),value:e,equals:Y(n,(l,i)=>l===i),name:t,subs:st()}}function Xn(e,t){return{id:Oe(),value:e,equals:(r,l)=>!1,name:t,subs:st()}}function qn(e){return Tt(e.subs),Rn(e.subs),e.value}function Un(e){return Tt(e.subs),e.value}function $t(e,t){let n;try{n=!e.equals(e.value,t)}catch{n=!0}if(n)return e.value=t,e.subs.version=e.subs.version+1|0,zn(e.subs)}function Yn(e,t){$t(e,t(e.value))}let Jn=Bn,Qn=In,qe=Hn,Zn=Xn,x=qn,H=Un,ce=$t;const er=Object.freeze(Object.defineProperty({__proto__:null,batch:Jn,get:x,make:qe,makeForComputed:Zn,peek:H,set:ce,untrack:Qn,update:Yn},Symbol.toStringTag,{value:"Module"}));function Ue(e,t){delete e[t]}function tr(e,t){let n=Oe(),r={contents:void 0},i=$n(()=>{r.contents.value=e()}),u=D.contents;D.contents=i;let o=e();D.contents=u;let c={id:n,value:o,equals:(y,C)=>!1,name:t,subs:i};return r.contents=c,We(i),c}function nr(e){Ve(e.subs)}let J=tr,At=nr;const rr=Object.freeze(Object.defineProperty({__proto__:null,dispose:At,make:J},Symbol.toStringTag,{value:"Module"}));let xt="http://www.w3.org/2000/svg",kt=["svg","path","circle","ellipse","line","polygon","polyline","rect","g","defs","clipPath","mask","pattern","marker","symbol","use","text","tspan","image","foreignObject","linearGradient","radialGradient","stop","filter","feBlend","feColorMatrix","feComposite","feFlood","feGaussianBlur","feMerge","feMergeNode","feOffset","animate","animateTransform","desc","title","metadata"],Pe={};kt.forEach(e=>{Pe[e]=!0});function ir(e){return Xe(Pe[e])}function we(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 Te={setAttrOrProp:we},Me={contents:void 0};function lr(){return{disposers:[],computeds:[]}}function me(e,t){let n=Me.contents;Me.contents=e;let r=t();return Me.contents=n,r}function pe(e,t){e.disposers.push(t)}function Ot(e){e.disposers.forEach(t=>t.dispose()),e.computeds.forEach(At)}function ge(e,t){e.__xote_owner__=t}function Dt(e){return He(e.__xote_owner__)}let a={currentOwner:Me,createOwner:lr,runWithOwner:me,addDisposer:pe,disposeOwner:Ot,setOwner:ge,getOwner:Dt};function Ct(e,t){return[e,{TAG:"Static",_0:t}]}function jt(e,t){return[e,{TAG:"SignalValue",_0:t}]}function Pt(e,t){return[e,{TAG:"Compute",_0:t}]}let ur={$$static:Ct,signal:jt,computed:Pt};function ve(e){let t=Dt(e);t!==void 0&&Ot(t),Array.from(e.childNodes||[]).forEach(ve)}function Q(e){switch(e.TAG){case"Element":let t=e.children,n=e.events,r=e.attrs,l=e.tag,i=Xe(Pe[l])?document.createElementNS(xt,l):document.createElement(l),u={disposers:[],computeds:[]};return ge(i,u),me(u,()=>{r.forEach(d=>{let m=d[1],$=d[0];switch(m.TAG){case"Static":return we(i,$,m._0);case"SignalValue":let O=m._0;we(i,$,H(O));let L=j(()=>{we(i,$,x(O))},void 0);return pe(u,L);case"Compute":let p=m._0,S=j(()=>{we(i,$,p())},void 0);return pe(u,S)}}),n.forEach(d=>{i.addEventListener(d[0],d[1])}),t.forEach(d=>{let m=Q(d);i.appendChild(m)})}),i;case"Text":return document.createTextNode(e._0);case"SignalText":let o=e._0,c=document.createTextNode(H(o)),y={disposers:[],computeds:[]};return ge(c,y),me(y,()=>{let d=j(()=>{c.textContent=x(o)},void 0);pe(y,d)}),c;case"Fragment":let C=document.createDocumentFragment();return e._0.forEach(d=>{let m=Q(d);C.appendChild(m)}),C;case"SignalFragment":let B=e._0,I={disposers:[],computeds:[]},M=document.createElement("div");return M.setAttribute("style","display: contents"),ge(M,I),me(I,()=>{let d=j(()=>{let m=x(B);Array.from(M.childNodes||[]).forEach(ve),M.innerHTML="",m.forEach(O=>{let L=Q(O);M.appendChild(L)})},void 0);pe(I,d)}),M;case"LazyComponent":let k={disposers:[],computeds:[]},q=me(k,e._0),W=Q(q);return ge(W,k),W;case"KeyedList":let V=e.renderItem,R=e.keyFn,U=e.signal,be={disposers:[],computeds:[]},v=document.createComment(" keyed-list-start "),_=document.createComment(" keyed-list-end ");ge(v,be);let s={},b=()=>{let d=_.parentNode;if(d==null)return;let m=x(U),$={};m.forEach(g=>{$[R(g)]=g});let O=[];Object.keys(s).forEach(g=>{if($[g]===void 0){O.push(g);return}}),O.forEach(g=>{let T=s[g];if(T!==void 0){ve(T.element),T.element.remove(),Ue(s,g);return}});let L=[],p={};m.forEach(g=>{let T=R(g),Ee=s[T];if(Ee!==void 0){if(Ee.item!==g){p[T]=!0;let Ke=V(g),Bi=Q(Ke),vn={key:T,item:g,element:Bi};L.push(vn),s[T]=vn;return}L.push(Ee);return}let Be=V(g),ct=Q(Be),Ie={key:T,item:g,element:ct};L.push(Ie),s[T]=Ie});let S={contents:v.nextSibling};L.forEach(g=>{let T=S.contents;if(T==null){d.insertBefore(g.element,_);return}if(T===_){d.insertBefore(g.element,_);return}if(T===g.element){S.contents=T.nextSibling;return}Y(p[g.key],!1)?(ve(T),d.replaceChild(g.element,T),S.contents=g.element.nextSibling):(d.insertBefore(g.element,T),S.contents=g.element.nextSibling)})},w=document.createDocumentFragment();return w.appendChild(v),H(U).forEach(d=>{let m=R(d),$=V(d),O=Q($),L={key:m,item:d,element:O};s[m]=L,w.appendChild(O)}),w.appendChild(_),me(be,()=>{let d=j(()=>{b()},void 0);pe(be,d)}),w}}let ne={disposeElement:ve,render:Q};function Mt(e){return{TAG:"Text",_0:e}}function or(e){return{TAG:"SignalText",_0:J(e,void 0)}}function dr(e){return{TAG:"SignalText",_0:J(()=>e().toString(),void 0)}}function ar(e){return{TAG:"SignalText",_0:J(()=>e().toString(),void 0)}}function cr(e){return{TAG:"Text",_0:e.toString()}}function sr(e){return{TAG:"Text",_0:e.toString()}}function Ye(e){return{TAG:"Fragment",_0:e}}function Je(e){return{TAG:"SignalFragment",_0:e}}function fr(e,t){return{TAG:"SignalFragment",_0:J(()=>x(e).map(t),void 0)}}function hr(e,t,n){return{TAG:"KeyedList",signal:e,keyFn:t,renderItem:n}}function K(e,t,n,r,l){let i=t!==void 0?t:[].map(c=>c),u=n!==void 0?n:[].map(c=>c),o=r!==void 0?r:[].map(c=>c);return{TAG:"Element",tag:e,attrs:i,events:u,children:o}}function mr(){return{TAG:"Text",_0:""}}function Rt(e,t){let n=Q(e);t.appendChild(n)}function pr(e,t){let n=document.getElementById(t);if(n==null){console.error("Container element not found: "+t);return}else return Rt(e,n)}let gr=Pe,X=Ct,se=jt,Re=Pt;const yr=Object.freeze(Object.defineProperty({__proto__:null,$$null:mr,Attributes:ur,DOM:Te,Reactivity:a,Render:ne,attr:X,computedAttr:Re,element:K,float:sr,fragment:Ye,int:cr,isSvgTag:ir,keyedList:hr,list:fr,mount:Rt,mountById:pr,signalAttr:se,signalFloat:ar,signalFragment:Je,signalInt:dr,signalText:or,svgNamespace:xt,svgTagSet:gr,svgTags:kt,text:Mt},Symbol.toStringTag,{value:"Module"}));function Sr(e,t,n,r){return K("div",e,t,n)}function _r(e,t,n,r){return K("span",e,t,n)}function br(e,t,n,r){return K("button",e,t,n)}function Er(e,t,n){return K("input",e,t,void 0)}function wr(e,t,n,r){return K("h1",e,t,n)}function Tr(e,t,n,r){return K("h2",e,t,n)}function vr(e,t,n,r){return K("h3",e,t,n)}function $r(e,t,n,r){return K("p",e,t,n)}function Ar(e,t,n,r){return K("ul",e,t,n)}function xr(e,t,n,r){return K("li",e,t,n)}function Qe(e,t,n,r){return K("a",e,t,n)}const kr=Object.freeze(Object.defineProperty({__proto__:null,a:Qe,button:br,div:Sr,h1:wr,h2:Tr,h3:vr,input:Er,li:xr,p:$r,span:_r,ul:Ar},Symbol.toStringTag,{value:"Module"}));function Gt(e,t){return{TAG:"LazyComponent",_0:()=>e(t)}}function Lt(e,t,n,r){return{TAG:"LazyComponent",_0:()=>e(t)}}function Or(e){let t=e.children;return t!==void 0?t:Ye([])}let Dr=Ye;function Cr(){return Mt("")}function Ze(e){return e&&typeof e=="object"&&"TAG"in e&&(e.TAG==="Static"||e.TAG==="Reactive")}function E(e,t){return Ze(t)?t.TAG==="Reactive"?se(e,t._0):X(e,t._0):typeof t=="function"?Re(e,t):typeof t=="object"?se(e,t):X(e,t)}function Z(e,t){if(Ze(t)){if(t.TAG!=="Reactive")return X(e,t._0?"true":"false");let r=t._0,l=J(()=>x(r)?"true":"false",void 0);return se(e,l)}if(typeof t=="function")return Re(e,()=>t()?"true":"false");if(typeof t!="object")return X(e,t?"true":"false");let n=J(()=>x(t)?"true":"false",void 0);return se(e,n)}function f(e,t,n,r){if(t!==void 0){e.push(r(n,h(t)));return}}function ye(e,t,n){if(t!==void 0){e.push(X(n,t.toString()));return}}function Ft(e){let t=[];f(t,e.id,"id",E),f(t,e.class,"class",E),f(t,e.style,"style",E),f(t,e.type,"type",E),f(t,e.name,"name",E),f(t,e.value,"value",E),f(t,e.placeholder,"placeholder",E),f(t,e.disabled,"disabled",Z),f(t,e.checked,"checked",Z),f(t,e.required,"required",Z),f(t,e.readOnly,"readonly",Z),ye(t,e.maxLength,"maxlength"),ye(t,e.minLength,"minlength"),f(t,e.min,"min",E),f(t,e.max,"max",E),f(t,e.step,"step",E),f(t,e.pattern,"pattern",E),f(t,e.autoComplete,"autocomplete",E),f(t,e.multiple,"multiple",Z),f(t,e.accept,"accept",E),ye(t,e.rows,"rows"),ye(t,e.cols,"cols"),f(t,e.for,"for",E),f(t,e.href,"href",E),f(t,e.target,"target",E),f(t,e.src,"src",E),f(t,e.alt,"alt",E),f(t,e.width,"width",E),f(t,e.height,"height",E),f(t,e.role,"role",E),ye(t,e.tabIndex,"tabindex"),f(t,e["aria-label"],"aria-label",E),f(t,e["aria-hidden"],"aria-hidden",Z),f(t,e["aria-expanded"],"aria-expanded",Z),f(t,e["aria-selected"],"aria-selected",Z);let n=e.data;return n!==void 0&&Object.entries(n).forEach(([r,l])=>{t.push(E("data-"+r,l))}),t}function P(e,t,n){if(t!==void 0){e.push([n,h(t)]);return}}function Nt(e){let t=[];return P(t,e.onClick,"click"),P(t,e.onInput,"input"),P(t,e.onChange,"change"),P(t,e.onSubmit,"submit"),P(t,e.onFocus,"focus"),P(t,e.onBlur,"blur"),P(t,e.onKeyDown,"keydown"),P(t,e.onKeyUp,"keyup"),P(t,e.onMouseEnter,"mouseenter"),P(t,e.onMouseLeave,"mouseleave"),P(t,e.onMouseDown,"mousedown"),P(t,e.onMouseMove,"mousemove"),P(t,e.onMouseUp,"mouseup"),P(t,e.onContextMenu,"contextmenu"),t}function zt(e){let t=e.children;return t!==void 0?t.TAG==="Fragment"?t._0:[t]:[]}function et(e,t){return{TAG:"Element",tag:e,attrs:Ft(t),events:Nt(t),children:zt(t)}}let Bt=et;function It(e,t,n,r){return et(e,t)}const jr=Object.freeze(Object.defineProperty({__proto__:null,$$null:Cr,Elements:{isReactiveProp:Ze,convertAttrValue:E,convertBoolAttrValue:Z,addAttr:f,addIntAttr:ye,propsToAttrs:Ft,addEvent:P,propsToEvents:Nt,getChildren:zt,createElement:et,jsx:Bt,jsxs:Bt,jsxKeyed:It,jsxsKeyed:It},ReactiveProp:void 0,array:Dr,jsx:Gt,jsxFragment:Or,jsxKeyed:Lt,jsxs:Gt,jsxsKeyed:Lt},Symbol.toStringTag,{value:"Module"}));function Pr(e){return e.TAG==="Reactive"?x(e._0):e._0}function Mr(e){return{TAG:"Static",_0:e}}function Rr(e){return{TAG:"Reactive",_0:e}}const Gr=Object.freeze(Object.defineProperty({__proto__:null,$$static:Mr,get:Pr,reactive:Rr},Symbol.toStringTag,{value:"Module"}));function Kt(e,t){let n=e.length,r=new Array(n),l=0;for(let i=0;i<n;++i){let u=e[i],o=t(u);o!==void 0&&(r[l]=h(o),l=l+1|0)}return r.length=l,r}function Lr(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 Wt(e){return Kt(e.split("/"),t=>{if(t!=="")return t.startsWith(":")?{TAG:"Param",_0:t.slice(1)}:{TAG:"Static",_0:t}})}function Vt(e,t){let n=t.split("/").filter(i=>i!=="");if(e.length!==n.length)return"NoMatch";let r={};return e.every((i,u)=>{let o=n[u];return i.TAG==="Static"?o===i._0:(r[i._0]=o,!0)})?{TAG:"Match",_0:r}:"NoMatch"}function tt(e,t){return Vt(Wt(e),t)}const Fr=Object.freeze(Object.defineProperty({__proto__:null,match:tt,matchPath:Vt,parsePattern:Wt},Symbol.toStringTag,{value:"Module"}));function Nr(){return Symbol.for("xote.router.state")}function N(){let e=globalThis[Symbol.for("xote.router.state")];if(e!==void 0)return e;let t={location:qe({pathname:"/",search:"",hash:""},void 0,void 0),basePath:{contents:"/"},initialized:!1,popStateHandler:void 0};return globalThis[Symbol.for("xote.router.state")]=t,t}function zr(){return N().location}function Br(){return N().basePath}function fe(e){if(!N().initialized){console.warn("[Xote Router] "+e+" called before Router.init(). Make sure to call Router.init() at your app entry point. This may cause incorrect routing behavior.");return}}function nt(e){if(e===""||e==="/")return"/";let t=e.startsWith("/")?e:"/"+e;return t.endsWith("/")?t.slice(0,t.length-1|0):t}function Ht(e){let t=N().basePath.contents;return t==="/"?e:e===t?"/":e.startsWith(t+"/")?e.slice(t.length):e}function $e(e){let t=N().basePath.contents;return t==="/"?e:e==="/"?t:t+e}function Xt(){let e=window.scrollX||window.pageXOffset||0,t=window.scrollY||window.pageYOffset||0;return[e,t]}function Ge(e,t){window.scrollTo(e,t)}function qt(e,t){return{scrollX:e,scrollY:t}}function rt(){return{}}function Ut(e){let t=e&&e.scrollX,n=e&&e.scrollY;if(t!=null&&n!=null)return[t,n]}function Yt(){let e=Xt(),t=qt(e[0],e[1]),n=window.location.href;window.history.replaceState(t,"",n)}function it(){let e=window.location.pathname;return{pathname:Ht(e),search:window.location.search,hash:window.location.hash}}function Ir(e,t){let n=e!==void 0?e:"/",r=N(),l=nt(n);if(r.basePath.contents=l,ce(r.location,it()),r.initialized)return;let i=u=>{ce(N().location,it());let o=window["history.state"];if(o==null)return;let c=Ut(o);if(c!==void 0)return Ge(c[0],c[1])};r.popStateHandler=i,window.addEventListener("popstate",i),r.initialized=!0}function Kr(e,t,n,r,l){let i=e!==void 0?e:"/",u=t!==void 0?t:"/",o=n!==void 0?n:"",c=r!==void 0?r:"",y=N(),C=nt(i);y.basePath.contents=C,ce(y.location,{pathname:u,search:o,hash:c}),y.initialized=!0}function lt(e,t,n,r){let l=t!==void 0?t:"",i=n!==void 0?n:"";fe("Router.push()"),Yt();let u={pathname:e,search:l,hash:i},c=$e(e)+l+i;window.history.pushState(rt(),"",c),ce(N().location,u),Ge(0,0)}function Wr(e,t,n,r){let l=t!==void 0?t:"",i=n!==void 0?n:"";fe("Router.replace()");let u={pathname:e,search:l,hash:i},c=$e(e)+l+i;window.history.replaceState(rt(),"",c),ce(N().location,u),Ge(0,0)}function Vr(e,t){return fe("Router.route()"),Je(J(()=>{let n=x(N().location),r=tt(e,n.pathname);return typeof r!="object"?[]:[t(r._0)]},void 0))}function Hr(e){return fe("Router.routes()"),Je(J(()=>{let t=x(N().location),n=Lr(e,r=>{let l=tt(r.pattern,t.pathname);if(typeof l=="object")return r.render(l._0)});return n!==void 0?[n]:[]},void 0))}function Xr(e,t,n,r){let l=t!==void 0?t:[],i=n!==void 0?n:[];fe("Router.link()");let u=o=>{o.preventDefault(),lt(e,void 0,void 0)};return Qe(l.concat([X("href",$e(e))]),[["click",u]],i)}function Jt(e){return e&&typeof e=="object"&&"TAG"in e&&(e.TAG==="Static"||e.TAG==="Reactive")}function Se(e,t){return Jt(t)?t.TAG==="Reactive"?se(e,t._0):X(e,t._0):typeof t=="function"?Re(e,t):typeof t=="object"?se(e,t):X(e,t)}function Qt(e){let t=[],n=e.class;n!==void 0&&t.push(Se("class",h(n)));let r=e.id;r!==void 0&&t.push(Se("id",h(r)));let l=e.style;l!==void 0&&t.push(Se("style",h(l)));let i=e.target;i!==void 0&&t.push(Se("target",h(i)));let u=e["aria-label"];return u!==void 0&&t.push(Se("aria-label",h(u))),t}function Zt(e){let t=e.children;return t!==void 0?t.TAG==="Fragment"?t._0:[t]:[]}function Le(e){fe("Router.Link");let t=n=>{n.preventDefault(),lt(e.to,void 0,void 0);let r=e.onClick;if(r!==void 0)return r(n)};return Qe(Qt(e).concat([X("href",$e(e.to))]),[["click",t]],Zt(e))}function en(e,t,n){return Le(e)}const qr=Object.freeze(Object.defineProperty({__proto__:null,Link:{ReactiveProp:void 0,isReactiveProp:Jt,convertAttrValue:Se,propsToAttrs:Qt,getChildren:Zt,make:Le,jsx:Le,jsxs:Le,jsxKeyed:en,jsxsKeyed:en},Route:void 0,addBasePath:$e,basePath:Br,emptyHistoryState:rt,getCurrentLocation:it,getGlobalState:N,getScrollFromState:Ut,getScrollPosition:Xt,getSymbolKey:Nr,init:Ir,initSSR:Kr,link:Xr,location:zr,makeHistoryState:qt,normalizeBasePath:nt,push:lt,replace:Wr,route:Vr,routes:Hr,saveScrollPosition:Yt,scrollTo:Ge,stripBasePath:Ht,warnIfNotInitialized:fe},Symbol.toStringTag,{value:"Module"}));function re(e){return e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#x27;")}let ut=["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"];function Ur(e){return ut.includes(e)}let tn={escape:re,voidElements:ut,isVoidElement:Ur},nn="<!--$-->",rn="<!--/$-->",ln="<!--#-->",un="<!--/#-->",on="<!--kl-->",dn="<!--/kl-->";function an(e){return"<!--k:"+e+"-->"}let cn="<!--/k-->",sn="<!--lc-->",fn="<!--/lc-->",Yr={signalTextStart:nn,signalTextEnd:rn,signalFragmentStart:ln,signalFragmentEnd:un,keyedListStart:on,keyedListEnd:dn,keyedItemStart:an,keyedItemEnd:cn,lazyComponentStart:sn,lazyComponentEnd:fn};function hn(e){let t=e[1],n=e[0],r;switch(t.TAG){case"Static":r=t._0;break;case"SignalValue":r=H(t._0);break;case"Compute":r=t._0();break}switch(n){case"aria-expanded":case"aria-hidden":case"aria-selected":case"checked":case"disabled":case"multiple":case"readonly":case"required":break;default:return n+'="'+re(r)+'"'}return r==="true"?n:""}function mn(e){let t=e.map(hn).filter(n=>n!=="");return t.length!==0?" "+t.join(" "):""}let Jr={renderAttr:hn,renderAttrs:mn};function ie(e){switch(e.TAG){case"Element":let t=e.tag,n=mn(e.attrs);if(ut.includes(t))return"<"+t+n+" />";let r=e.children.map(ie).join("");return"<"+t+n+">"+r+"</"+t+">";case"Text":return re(e._0);case"SignalText":let l=H(e._0);return nn+re(l)+rn;case"Fragment":return e._0.map(ie).join("");case"SignalFragment":let u=H(e._0).map(ie).join("");return ln+u+un;case"LazyComponent":let o=e._0();return sn+ie(o)+fn;case"KeyedList":let c=e.renderItem,y=e.keyFn,B=H(e.signal).map(I=>{let M=y(I),k=ie(c(I));return an(M)+k+cn}).join("");return on+B+dn}}function pn(e,t){return ie(e())}function Qr(e,t,n){let r=t!==void 0?t:"root",l=e(),i=ie(l);return"<!--xote-root:"+r+"-->"+i+"<!--/xote-root-->"}function gn(e){return"<script"+(e!==void 0?' nonce="'+re(e)+'"':"")+">window.__XOTE_HYDRATED__=false;<\/script>"}function Zr(e,t,n,r,l,i,u){let o=e!==void 0?e:"",c=t!==void 0?t:"",y=n!==void 0?n:[],C=r!==void 0?r:[],B=l!==void 0?l:"",I=pn(u),M=gn(i),k=C.map(W=>'<link rel="stylesheet" href="'+re(W)+'" />').join(`
2
- `),q=y.map(W=>{let V=i!==void 0?' nonce="'+re(i)+'"':"";return'<script type="module" src="'+re(W)+'"'+V+"><\/script>"}).join(`
1
+ (function(x,oe){typeof exports=="object"&&typeof module<"u"?oe(exports):typeof define=="function"&&define.amd?define(["exports"],oe):(x=typeof globalThis<"u"?globalThis:x||self,oe(x.xote={}))})(this,(function(x){"use strict";let oe={contents:0};function De(){return oe.contents=oe.contents+1|0,oe.contents}function st(){return{first:void 0,last:void 0,version:0,compute:void 0,firstDep:void 0,lastDep:void 0,flags:0,level:0}}function $n(e){return{first:void 0,last:void 0,version:0,compute:e,firstDep:void 0,lastDep:void 0,flags:1,level:0}}function An(e,t,n,r,l){return{id:e,kind:t,run:n,firstDep:void 0,lastDep:void 0,flags:1,level:0,name:r,backingSubs:l}}function ft(e){e.flags=e.flags&-2}function xn(e){return(e.flags&2)!==0}function kn(e){e.flags=e.flags|2}function Dn(e){e.flags=e.flags&-3}function ht(e){return(e.flags&1)!==0}function On(e){e.flags=e.flags|1}function We(e){e.flags=e.flags&-2}function Cn(e){e.flags=e.flags&-3}function Oe(e){return e.compute!==void 0}function mt(e,t){return{subs:e,observer:t,nextDep:void 0,prevDep:void 0,nextSub:void 0,prevSub:void 0}}function Ce(e,t){t.prevSub=e.last,t.nextSub=void 0;let n=e.last;n!==void 0?n.nextSub=t:e.first=t,e.last=t}function pt(e,t){t.prevDep=e.lastDep,t.nextDep=void 0;let n=e.lastDep;n!==void 0?n.nextDep=t:e.firstDep=t,e.lastDep=t}function gt(e){let t=e.subs,n=e.prevSub;n!==void 0?n.nextSub=e.nextSub:t.first=e.nextSub;let r=e.nextSub;r!==void 0?r.prevSub=e.prevSub:t.last=e.prevSub,e.prevSub=void 0,e.nextSub=void 0}function yt(e){let t=e.firstDep;for(;t!==void 0;){let n=t;if(n!==void 0){let r=n.nextDep;gt(n),t=r}}e.firstDep=void 0,e.lastDep=void 0}function Ve(e){let t=e.firstDep;for(;t!==void 0;){let n=t;if(n!==void 0){let r=n.nextDep;gt(n),t=r}}e.firstDep=void 0,e.lastDep=void 0}function St(e,t){t.prevDep=e.lastDep,t.nextDep=void 0;let n=e.lastDep;n!==void 0?n.nextDep=t:e.firstDep=t,e.lastDep=t}let C={contents:void 0},N={contents:void 0},ee=[],ae=[],te={contents:!1},je=[],_t=(function(e){e.length=0});function jn(e){if(!xn(e)){kn(e),ee.push(e);return}}function Pn(e,t){if(e.firstDep===void 0){let i={subs:t,observer:e,nextDep:void 0,prevDep:void 0,nextSub:void 0,prevSub:void 0};return St(e,i),Ce(t,i)}let n=!1,r=e.firstDep;for(;r!==void 0&&!n;){let i=r;i!==void 0&&(i.subs===t?n=!0:r=i.nextDep)}if(n)return;let l={subs:t,observer:e,nextDep:void 0,prevDep:void 0,nextSub:void 0,prevSub:void 0};St(e,l),Ce(t,l)}function Mn(e,t){if(e.firstDep===void 0){let i=mt(t,e);return pt(e,i),Ce(t,i)}let n=!1,r=e.firstDep;for(;r!==void 0&&!n;){let i=r;i!==void 0&&(i.subs===t?n=!0:r=i.nextDep)}if(n)return;let l=mt(t,e);pt(e,l),Ce(t,l)}function Rn(e){let t=C.contents;if(t!==void 0)return Pn(t,e);let n=N.contents;if(n!==void 0)return Mn(n,e)}function Ln(e,t){return e.level-t.level|0}function Gn(e,t){return e.level-t.level|0}function bt(e){let t=0,n=e.firstDep;for(;n!==void 0;){let r=n;r!==void 0&&(Oe(r.subs)&&r.subs.level>t&&(t=r.subs.level),n=r.nextDep)}return t+1|0}function Et(e){let t=0,n=e.firstDep;for(;n!==void 0;){let r=n;r!==void 0&&(Oe(r.subs)&&r.subs.level>t&&(t=r.subs.level),n=r.nextDep)}return t+1|0}function Fn(e){let t=e.level;Ve(e),Cn(e);let n=C.contents;C.contents=e;try{let r=e.compute;r!==void 0&&r(),We(e),C.contents=n}catch(r){throw C.contents=n,r}if(t===0){e.level=bt(e);return}}function Nn(e){let t=e.level;yt(e),Dn(e);let n=N.contents;N.contents=e;try{e.run(),ft(e),N.contents=n}catch(r){throw N.contents=n,r}if(t===0){e.level=Et(e);return}}function wt(){te.contents=!0;try{for(;ee.length!==0||ae.length!==0;){if(ae.length!==0){ae.sort(Gn);let e=ae.slice();_t(ae),e.forEach(Fn)}if(ee.length!==0){ee.sort(Ln);let e=ee.slice();_t(ee),e.forEach(Nn)}}te.contents=!1;return}catch(e){throw te.contents=!1,e}}function zn(e){for(je.push(e);je.length!==0;){let t=je.pop();if(t!==void 0){let n=t.first;for(;n!==void 0;){let r=n;if(r!==void 0){let l=r.observer;Oe(l)?ht(l)||(On(l),je.push(l)):jn(r.observer),n=r.nextSub}}}}if((ee.length!==0||ae.length!==0)&&!te.contents)return wt()}function Tt(e){if(!(Oe(e)&&ht(e)))return;let t=e.level;Ve(e);let n=C.contents;C.contents=e;try{let r=e.compute;r!==void 0&&r(),We(e),C.contents=n}catch(r){throw C.contents=n,r}if(t===0){e.level=bt(e);return}}function Bn(e){let t=te.contents;te.contents=!0;try{let n=e();return t||(te.contents=!1,(ee.length!==0||ae.length!==0)&&wt()),n}catch(n){throw t||(te.contents=!1),n}}function In(e){let t=C.contents,n=N.contents;C.contents=void 0,N.contents=void 0;try{let r=e();return C.contents=t,N.contents=n,r}catch(r){throw C.contents=t,N.contents=n,r}}function vt(e,t){let n=De(),r={contents:void 0},i=An(n,"Effect",()=>{let y=r.contents;y!==void 0&&y(),r.contents=e()},t,void 0),u=N.contents;N.contents=i;try{i.run(),ft(i),N.contents=u}catch(y){throw N.contents=u,y}i.level=Et(i);let o={contents:!1};return{dispose:()=>{if(o.contents)return;o.contents=!0;let y=r.contents;y!==void 0&&y(),yt(i)}}}function Kn(e,t){vt(e,t)}let P=vt;const Wn=Object.freeze(Object.defineProperty({__proto__:null,run:Kn,runWithDisposer:P},Symbol.toStringTag,{value:"Module"}));function de(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 He(e){if(e!=null)return de(e)}function h(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 Vn(e,t){if(e!==void 0)return de(t(h(e)))}function J(e,t){return e!==void 0?h(e):t}function Xe(e){return e!==void 0}function Hn(e,t,n){return{id:De(),value:e,equals:J(n,(l,i)=>l===i),name:t,subs:st()}}function Xn(e,t){return{id:De(),value:e,equals:(r,l)=>!1,name:t,subs:st()}}function qn(e){return Tt(e.subs),Rn(e.subs),e.value}function Un(e){return Tt(e.subs),e.value}function $t(e,t){let n;try{n=!e.equals(e.value,t)}catch{n=!0}if(n)return e.value=t,e.subs.version=e.subs.version+1|0,zn(e.subs)}function Yn(e,t){$t(e,t(e.value))}let Jn=Bn,Qn=In,qe=Hn,Zn=Xn,k=qn,X=Un,ce=$t;const er=Object.freeze(Object.defineProperty({__proto__:null,batch:Jn,get:k,make:qe,makeForComputed:Zn,peek:X,set:ce,untrack:Qn,update:Yn},Symbol.toStringTag,{value:"Module"}));function Ue(e,t){delete e[t]}function tr(e,t){let n=De(),r={contents:void 0},i=$n(()=>{r.contents.value=e()}),u=C.contents;C.contents=i;let o=e();C.contents=u;let s={id:n,value:o,equals:(y,j)=>!1,name:t,subs:i};return r.contents=s,We(i),s}function nr(e){Ve(e.subs)}let Q=tr,At=nr;const rr=Object.freeze(Object.defineProperty({__proto__:null,dispose:At,make:Q},Symbol.toStringTag,{value:"Module"}));let xt="http://www.w3.org/2000/svg",kt=["svg","path","circle","ellipse","line","polygon","polyline","rect","g","defs","clipPath","mask","pattern","marker","symbol","use","text","tspan","image","foreignObject","linearGradient","radialGradient","stop","filter","feBlend","feColorMatrix","feComposite","feFlood","feGaussianBlur","feMerge","feMergeNode","feOffset","animate","animateTransform","desc","title","metadata"],Pe={};kt.forEach(e=>{Pe[e]=!0});function ir(e){return Xe(Pe[e])}function we(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"autofocus":case"contenteditable":case"draggable":case"hidden":case"multiple":case"readonly":case"required":case"spellcheck":break;case"value":e.value=n;return;default:e.setAttribute(t,n);return}n==="true"?e.setAttribute(t,""):e.removeAttribute(t)}let Te={setAttrOrProp:we},Me={contents:void 0};function lr(){return{disposers:[],computeds:[]}}function me(e,t){let n=Me.contents;Me.contents=e;let r=t();return Me.contents=n,r}function pe(e,t){e.disposers.push(t)}function Dt(e){e.disposers.forEach(t=>t.dispose()),e.computeds.forEach(At)}function ge(e,t){e.__xote_owner__=t}function Ot(e){return He(e.__xote_owner__)}let c={currentOwner:Me,createOwner:lr,runWithOwner:me,addDisposer:pe,disposeOwner:Dt,setOwner:ge,getOwner:Ot};function Ct(e,t){return[e,{TAG:"Static",_0:t}]}function jt(e,t){return[e,{TAG:"SignalValue",_0:t}]}function Pt(e,t){return[e,{TAG:"Compute",_0:t}]}let ur={$$static:Ct,signal:jt,computed:Pt};function ve(e){let t=Ot(e);t!==void 0&&Dt(t),Array.from(e.childNodes||[]).forEach(ve)}function Z(e){switch(e.TAG){case"Element":let t=e.children,n=e.events,r=e.attrs,l=e.tag,i=Xe(Pe[l])?document.createElementNS(xt,l):document.createElement(l),u={disposers:[],computeds:[]};return ge(i,u),me(u,()=>{r.forEach(d=>{let m=d[1],A=d[0];switch(m.TAG){case"Static":return we(i,A,m._0);case"SignalValue":let O=m._0;we(i,A,X(O));let G=P(()=>{we(i,A,k(O))},void 0);return pe(u,G);case"Compute":let p=m._0,_=P(()=>{we(i,A,p())},void 0);return pe(u,_)}}),n.forEach(d=>{i.addEventListener(d[0],d[1])}),t.forEach(d=>{let m=Z(d);i.appendChild(m)})}),i;case"Text":return document.createTextNode(e._0);case"SignalText":let o=e._0,s=document.createTextNode(X(o)),y={disposers:[],computeds:[]};return ge(s,y),me(y,()=>{let d=P(()=>{s.textContent=k(o)},void 0);pe(y,d)}),s;case"Fragment":let j=document.createDocumentFragment();return e._0.forEach(d=>{let m=Z(d);j.appendChild(m)}),j;case"SignalFragment":let I=e._0,K={disposers:[],computeds:[]},M=document.createElement("div");return M.setAttribute("style","display: contents"),ge(M,K),me(K,()=>{let d=P(()=>{let m=k(I);Array.from(M.childNodes||[]).forEach(ve),M.innerHTML="",m.forEach(O=>{let G=Z(O);M.appendChild(G)})},void 0);pe(K,d)}),M;case"LazyComponent":let D={disposers:[],computeds:[]},U=me(D,e._0),V=Z(U);return ge(V,D),V;case"KeyedList":let H=e.renderItem,R=e.keyFn,Y=e.signal,be={disposers:[],computeds:[]},$=document.createComment(" keyed-list-start "),b=document.createComment(" keyed-list-end ");ge($,be);let f={},E=()=>{let d=b.parentNode;if(d==null)return;let m=k(Y),A={};m.forEach(g=>{A[R(g)]=g});let O=[];Object.keys(f).forEach(g=>{if(A[g]===void 0){O.push(g);return}}),O.forEach(g=>{let v=f[g];if(v!==void 0){ve(v.element),v.element.remove(),Ue(f,g);return}});let G=[],p={};m.forEach(g=>{let v=R(g),Ee=f[v];if(Ee!==void 0){if(Ee.item!==g){p[v]=!0;let Ke=H(g),Bi=Z(Ke),vn={key:v,item:g,element:Bi};G.push(vn),f[v]=vn;return}G.push(Ee);return}let Be=H(g),ct=Z(Be),Ie={key:v,item:g,element:ct};G.push(Ie),f[v]=Ie});let _={contents:$.nextSibling};G.forEach(g=>{let v=_.contents;if(v==null){d.insertBefore(g.element,b);return}if(v===b){d.insertBefore(g.element,b);return}if(v===g.element){_.contents=v.nextSibling;return}J(p[g.key],!1)?(ve(v),d.replaceChild(g.element,v),_.contents=g.element.nextSibling):(d.insertBefore(g.element,v),_.contents=g.element.nextSibling)})},T=document.createDocumentFragment();return T.appendChild($),X(Y).forEach(d=>{let m=R(d),A=H(d),O=Z(A),G={key:m,item:d,element:O};f[m]=G,T.appendChild(O)}),T.appendChild(b),me(be,()=>{let d=P(()=>{E()},void 0);pe(be,d)}),T}}let ne={disposeElement:ve,render:Z};function Mt(e){return{TAG:"Text",_0:e}}function or(e){return{TAG:"SignalText",_0:Q(e,void 0)}}function ar(e){return{TAG:"SignalText",_0:Q(()=>e().toString(),void 0)}}function dr(e){return{TAG:"SignalText",_0:Q(()=>e().toString(),void 0)}}function cr(e){return{TAG:"Text",_0:e.toString()}}function sr(e){return{TAG:"Text",_0:e.toString()}}function Ye(e){return{TAG:"Fragment",_0:e}}function Je(e){return{TAG:"SignalFragment",_0:e}}function fr(e,t){return{TAG:"SignalFragment",_0:Q(()=>k(e).map(t),void 0)}}function hr(e,t,n){return{TAG:"KeyedList",signal:e,keyFn:t,renderItem:n}}function W(e,t,n,r,l){let i=t!==void 0?t:[].map(s=>s),u=n!==void 0?n:[].map(s=>s),o=r!==void 0?r:[].map(s=>s);return{TAG:"Element",tag:e,attrs:i,events:u,children:o}}function mr(){return{TAG:"Text",_0:""}}function Rt(e,t){let n=Z(e);t.appendChild(n)}function pr(e,t){let n=document.getElementById(t);if(n==null){console.error("Container element not found: "+t);return}else return Rt(e,n)}let gr=Pe,q=Ct,se=jt,Re=Pt;const yr=Object.freeze(Object.defineProperty({__proto__:null,$$null:mr,Attributes:ur,DOM:Te,Reactivity:c,Render:ne,attr:q,computedAttr:Re,element:W,float:sr,fragment:Ye,int:cr,isSvgTag:ir,keyedList:hr,list:fr,mount:Rt,mountById:pr,signalAttr:se,signalFloat:dr,signalFragment:Je,signalInt:ar,signalText:or,svgNamespace:xt,svgTagSet:gr,svgTags:kt,text:Mt},Symbol.toStringTag,{value:"Module"}));function Sr(e,t,n,r){return W("div",e,t,n)}function _r(e,t,n,r){return W("span",e,t,n)}function br(e,t,n,r){return W("button",e,t,n)}function Er(e,t,n){return W("input",e,t,void 0)}function wr(e,t,n,r){return W("h1",e,t,n)}function Tr(e,t,n,r){return W("h2",e,t,n)}function vr(e,t,n,r){return W("h3",e,t,n)}function $r(e,t,n,r){return W("p",e,t,n)}function Ar(e,t,n,r){return W("ul",e,t,n)}function xr(e,t,n,r){return W("li",e,t,n)}function Qe(e,t,n,r){return W("a",e,t,n)}const kr=Object.freeze(Object.defineProperty({__proto__:null,a:Qe,button:br,div:Sr,h1:wr,h2:Tr,h3:vr,input:Er,li:xr,p:$r,span:_r,ul:Ar},Symbol.toStringTag,{value:"Module"}));function Lt(e,t){return{TAG:"LazyComponent",_0:()=>e(t)}}function Gt(e,t,n,r){return{TAG:"LazyComponent",_0:()=>e(t)}}function Dr(e){let t=e.children;return t!==void 0?t:Ye([])}let Or=Ye;function Cr(){return Mt("")}function Ze(e){return e&&typeof e=="object"&&"TAG"in e&&(e.TAG==="Static"||e.TAG==="Reactive")}function S(e,t){return Ze(t)?t.TAG==="Reactive"?se(e,t._0):q(e,t._0):typeof t=="function"?Re(e,t):typeof t=="object"?se(e,t):q(e,t)}function F(e,t){if(Ze(t)){if(t.TAG!=="Reactive")return q(e,t._0?"true":"false");let r=t._0,l=Q(()=>k(r)?"true":"false",void 0);return se(e,l)}if(typeof t=="function")return Re(e,()=>t()?"true":"false");if(typeof t!="object")return q(e,t?"true":"false");let n=Q(()=>k(t)?"true":"false",void 0);return se(e,n)}function a(e,t,n,r){if(t!==void 0){e.push(r(n,h(t)));return}}function ye(e,t,n){if(t!==void 0){e.push(q(n,t.toString()));return}}function Ft(e){let t=[];a(t,e.id,"id",S),a(t,e.class,"class",S),a(t,e.style,"style",S),a(t,e.title,"title",S),a(t,e.type,"type",S),a(t,e.name,"name",S),a(t,e.value,"value",S),a(t,e.placeholder,"placeholder",S),a(t,e.disabled,"disabled",F),a(t,e.checked,"checked",F),a(t,e.required,"required",F),a(t,e.readOnly,"readonly",F),ye(t,e.maxLength,"maxlength"),ye(t,e.minLength,"minlength"),a(t,e.min,"min",S),a(t,e.max,"max",S),a(t,e.step,"step",S),a(t,e.pattern,"pattern",S),a(t,e.autoComplete,"autocomplete",S),a(t,e.multiple,"multiple",F),a(t,e.accept,"accept",S),ye(t,e.rows,"rows"),ye(t,e.cols,"cols"),a(t,e.autofocus,"autofocus",F),a(t,e.action,"action",S),a(t,e.method,"method",S),a(t,e.for,"for",S),a(t,e.href,"href",S),a(t,e.target,"target",S),a(t,e.src,"src",S),a(t,e.alt,"alt",S),a(t,e.width,"width",S),a(t,e.height,"height",S),a(t,e.draggable,"draggable",F),a(t,e.hidden,"hidden",F),a(t,e.contentEditable,"contenteditable",F),a(t,e.spellcheck,"spellcheck",F),a(t,e.role,"role",S),ye(t,e.tabIndex,"tabindex"),a(t,e["aria-label"],"aria-label",S),a(t,e["aria-hidden"],"aria-hidden",F),a(t,e["aria-expanded"],"aria-expanded",F),a(t,e["aria-selected"],"aria-selected",F);let n=e.data;return n!==void 0&&Object.entries(n).forEach(([r,l])=>{t.push(S("data-"+r,l))}),t}function w(e,t,n){if(t!==void 0){e.push([n,h(t)]);return}}function Nt(e){let t=[];return w(t,e.onClick,"click"),w(t,e.onInput,"input"),w(t,e.onChange,"change"),w(t,e.onSubmit,"submit"),w(t,e.onFocus,"focus"),w(t,e.onBlur,"blur"),w(t,e.onKeyDown,"keydown"),w(t,e.onKeyUp,"keyup"),w(t,e.onMouseEnter,"mouseenter"),w(t,e.onMouseLeave,"mouseleave"),w(t,e.onMouseDown,"mousedown"),w(t,e.onMouseMove,"mousemove"),w(t,e.onMouseUp,"mouseup"),w(t,e.onContextMenu,"contextmenu"),w(t,e.onDrag,"drag"),w(t,e.onDragStart,"dragstart"),w(t,e.onDragEnd,"dragend"),w(t,e.onDragOver,"dragover"),w(t,e.onDragEnter,"dragenter"),w(t,e.onDragLeave,"dragleave"),w(t,e.onDrop,"drop"),t}function zt(e){let t=e.children;return t!==void 0?t.TAG==="Fragment"?t._0:[t]:[]}function et(e,t){return{TAG:"Element",tag:e,attrs:Ft(t),events:Nt(t),children:zt(t)}}let Bt=et;function It(e,t,n,r){return et(e,t)}const jr=Object.freeze(Object.defineProperty({__proto__:null,$$null:Cr,Elements:{isReactiveProp:Ze,convertAttrValue:S,convertBoolAttrValue:F,addAttr:a,addIntAttr:ye,propsToAttrs:Ft,addEvent:w,propsToEvents:Nt,getChildren:zt,createElement:et,jsx:Bt,jsxs:Bt,jsxKeyed:It,jsxsKeyed:It},ReactiveProp:void 0,array:Or,jsx:Lt,jsxFragment:Dr,jsxKeyed:Gt,jsxs:Lt,jsxsKeyed:Gt},Symbol.toStringTag,{value:"Module"}));function Pr(e){return e.TAG==="Reactive"?k(e._0):e._0}function Mr(e){return{TAG:"Static",_0:e}}function Rr(e){return{TAG:"Reactive",_0:e}}const Lr=Object.freeze(Object.defineProperty({__proto__:null,$$static:Mr,get:Pr,reactive:Rr},Symbol.toStringTag,{value:"Module"}));function Kt(e,t){let n=e.length,r=new Array(n),l=0;for(let i=0;i<n;++i){let u=e[i],o=t(u);o!==void 0&&(r[l]=h(o),l=l+1|0)}return r.length=l,r}function Gr(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 Wt(e){return Kt(e.split("/"),t=>{if(t!=="")return t.startsWith(":")?{TAG:"Param",_0:t.slice(1)}:{TAG:"Static",_0:t}})}function Vt(e,t){let n=t.split("/").filter(i=>i!=="");if(e.length!==n.length)return"NoMatch";let r={};return e.every((i,u)=>{let o=n[u];return i.TAG==="Static"?o===i._0:(r[i._0]=o,!0)})?{TAG:"Match",_0:r}:"NoMatch"}function tt(e,t){return Vt(Wt(e),t)}const Fr=Object.freeze(Object.defineProperty({__proto__:null,match:tt,matchPath:Vt,parsePattern:Wt},Symbol.toStringTag,{value:"Module"}));function Nr(){return Symbol.for("xote.router.state")}function z(){let e=globalThis[Symbol.for("xote.router.state")];if(e!==void 0)return e;let t={location:qe({pathname:"/",search:"",hash:""},void 0,void 0),basePath:{contents:"/"},initialized:!1,popStateHandler:void 0};return globalThis[Symbol.for("xote.router.state")]=t,t}function zr(){return z().location}function Br(){return z().basePath}function fe(e){if(!z().initialized){console.warn("[Xote Router] "+e+" called before Router.init(). Make sure to call Router.init() at your app entry point. This may cause incorrect routing behavior.");return}}function nt(e){if(e===""||e==="/")return"/";let t=e.startsWith("/")?e:"/"+e;return t.endsWith("/")?t.slice(0,t.length-1|0):t}function Ht(e){let t=z().basePath.contents;return t==="/"?e:e===t?"/":e.startsWith(t+"/")?e.slice(t.length):e}function $e(e){let t=z().basePath.contents;return t==="/"?e:e==="/"?t:t+e}function Xt(){let e=window.scrollX||window.pageXOffset||0,t=window.scrollY||window.pageYOffset||0;return[e,t]}function Le(e,t){window.scrollTo(e,t)}function qt(e,t){return{scrollX:e,scrollY:t}}function rt(){return{}}function Ut(e){let t=e&&e.scrollX,n=e&&e.scrollY;if(t!=null&&n!=null)return[t,n]}function Yt(){let e=Xt(),t=qt(e[0],e[1]),n=window.location.href;window.history.replaceState(t,"",n)}function it(){let e=window.location.pathname;return{pathname:Ht(e),search:window.location.search,hash:window.location.hash}}function Ir(e,t){let n=e!==void 0?e:"/",r=z(),l=nt(n);if(r.basePath.contents=l,ce(r.location,it()),r.initialized)return;let i=u=>{ce(z().location,it());let o=window["history.state"];if(o==null)return;let s=Ut(o);if(s!==void 0)return Le(s[0],s[1])};r.popStateHandler=i,window.addEventListener("popstate",i),r.initialized=!0}function Kr(e,t,n,r,l){let i=e!==void 0?e:"/",u=t!==void 0?t:"/",o=n!==void 0?n:"",s=r!==void 0?r:"",y=z(),j=nt(i);y.basePath.contents=j,ce(y.location,{pathname:u,search:o,hash:s}),y.initialized=!0}function lt(e,t,n,r){let l=t!==void 0?t:"",i=n!==void 0?n:"";fe("Router.push()"),Yt();let u={pathname:e,search:l,hash:i},s=$e(e)+l+i;window.history.pushState(rt(),"",s),ce(z().location,u),Le(0,0)}function Wr(e,t,n,r){let l=t!==void 0?t:"",i=n!==void 0?n:"";fe("Router.replace()");let u={pathname:e,search:l,hash:i},s=$e(e)+l+i;window.history.replaceState(rt(),"",s),ce(z().location,u),Le(0,0)}function Vr(e,t){return fe("Router.route()"),Je(Q(()=>{let n=k(z().location),r=tt(e,n.pathname);return typeof r!="object"?[]:[t(r._0)]},void 0))}function Hr(e){return fe("Router.routes()"),Je(Q(()=>{let t=k(z().location),n=Gr(e,r=>{let l=tt(r.pattern,t.pathname);if(typeof l=="object")return r.render(l._0)});return n!==void 0?[n]:[]},void 0))}function Xr(e,t,n,r){let l=t!==void 0?t:[],i=n!==void 0?n:[];fe("Router.link()");let u=o=>{o.preventDefault(),lt(e,void 0,void 0)};return Qe(l.concat([q("href",$e(e))]),[["click",u]],i)}function Jt(e){return e&&typeof e=="object"&&"TAG"in e&&(e.TAG==="Static"||e.TAG==="Reactive")}function Se(e,t){return Jt(t)?t.TAG==="Reactive"?se(e,t._0):q(e,t._0):typeof t=="function"?Re(e,t):typeof t=="object"?se(e,t):q(e,t)}function Qt(e){let t=[],n=e.class;n!==void 0&&t.push(Se("class",h(n)));let r=e.id;r!==void 0&&t.push(Se("id",h(r)));let l=e.style;l!==void 0&&t.push(Se("style",h(l)));let i=e.target;i!==void 0&&t.push(Se("target",h(i)));let u=e["aria-label"];return u!==void 0&&t.push(Se("aria-label",h(u))),t}function Zt(e){let t=e.children;return t!==void 0?t.TAG==="Fragment"?t._0:[t]:[]}function Ge(e){fe("Router.Link");let t=n=>{n.preventDefault(),lt(e.to,void 0,void 0);let r=e.onClick;if(r!==void 0)return r(n)};return Qe(Qt(e).concat([q("href",$e(e.to))]),[["click",t]],Zt(e))}function en(e,t,n){return Ge(e)}const qr=Object.freeze(Object.defineProperty({__proto__:null,Link:{ReactiveProp:void 0,isReactiveProp:Jt,convertAttrValue:Se,propsToAttrs:Qt,getChildren:Zt,make:Ge,jsx:Ge,jsxs:Ge,jsxKeyed:en,jsxsKeyed:en},Route:void 0,addBasePath:$e,basePath:Br,emptyHistoryState:rt,getCurrentLocation:it,getGlobalState:z,getScrollFromState:Ut,getScrollPosition:Xt,getSymbolKey:Nr,init:Ir,initSSR:Kr,link:Xr,location:zr,makeHistoryState:qt,normalizeBasePath:nt,push:lt,replace:Wr,route:Vr,routes:Hr,saveScrollPosition:Yt,scrollTo:Le,stripBasePath:Ht,warnIfNotInitialized:fe},Symbol.toStringTag,{value:"Module"}));function re(e){return e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#x27;")}let ut=["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"];function Ur(e){return ut.includes(e)}let tn={escape:re,voidElements:ut,isVoidElement:Ur},nn="<!--$-->",rn="<!--/$-->",ln="<!--#-->",un="<!--/#-->",on="<!--kl-->",an="<!--/kl-->";function dn(e){return"<!--k:"+e+"-->"}let cn="<!--/k-->",sn="<!--lc-->",fn="<!--/lc-->",Yr={signalTextStart:nn,signalTextEnd:rn,signalFragmentStart:ln,signalFragmentEnd:un,keyedListStart:on,keyedListEnd:an,keyedItemStart:dn,keyedItemEnd:cn,lazyComponentStart:sn,lazyComponentEnd:fn};function hn(e){let t=e[1],n=e[0],r;switch(t.TAG){case"Static":r=t._0;break;case"SignalValue":r=X(t._0);break;case"Compute":r=t._0();break}switch(n){case"aria-expanded":case"aria-hidden":case"aria-selected":case"autofocus":case"checked":case"contenteditable":case"disabled":case"draggable":case"hidden":case"multiple":case"readonly":case"required":case"spellcheck":break;default:return n+'="'+re(r)+'"'}return r==="true"?n:""}function mn(e){let t=e.map(hn).filter(n=>n!=="");return t.length!==0?" "+t.join(" "):""}let Jr={renderAttr:hn,renderAttrs:mn};function ie(e){switch(e.TAG){case"Element":let t=e.tag,n=mn(e.attrs);if(ut.includes(t))return"<"+t+n+" />";let r=e.children.map(ie).join("");return"<"+t+n+">"+r+"</"+t+">";case"Text":return re(e._0);case"SignalText":let l=X(e._0);return nn+re(l)+rn;case"Fragment":return e._0.map(ie).join("");case"SignalFragment":let u=X(e._0).map(ie).join("");return ln+u+un;case"LazyComponent":let o=e._0();return sn+ie(o)+fn;case"KeyedList":let s=e.renderItem,y=e.keyFn,I=X(e.signal).map(K=>{let M=y(K),D=ie(s(K));return dn(M)+D+cn}).join("");return on+I+an}}function pn(e,t){return ie(e())}function Qr(e,t,n){let r=t!==void 0?t:"root",l=e(),i=ie(l);return"<!--xote-root:"+r+"-->"+i+"<!--/xote-root-->"}function gn(e){return"<script"+(e!==void 0?' nonce="'+re(e)+'"':"")+">window.__XOTE_HYDRATED__=false;<\/script>"}function Zr(e,t,n,r,l,i,u){let o=e!==void 0?e:"",s=t!==void 0?t:"",y=n!==void 0?n:[],j=r!==void 0?r:[],I=l!==void 0?l:"",K=pn(u),M=gn(i),D=j.map(V=>'<link rel="stylesheet" href="'+re(V)+'" />').join(`
2
+ `),U=y.map(V=>{let H=i!==void 0?' nonce="'+re(i)+'"':"";return'<script type="module" src="'+re(V)+'"'+H+"><\/script>"}).join(`
3
3
  `);return`<!DOCTYPE html>
4
4
  <html>
5
5
  <head>
6
6
  <meta charset="UTF-8" />
7
7
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
8
- `+k+`
8
+ `+D+`
9
9
  `+o+`
10
10
  </head>
11
- <body`+(c!==""?" "+c:"")+`>
12
- <div id="root">`+I+`</div>
13
- `+B+`
11
+ <body`+(s!==""?" "+s:"")+`>
12
+ <div id="root">`+K+`</div>
13
+ `+I+`
14
14
  `+M+`
15
- `+q+`
15
+ `+U+`
16
16
  </body>
17
- </html>`}const ei=Object.freeze(Object.defineProperty({__proto__:null,Attributes:Jr,Html:tn,Markers:Yr,generateHydrationScript:gn,renderDocument:Zr,renderNodeToString:ie,renderToString:pn,renderToStringWithRoot:Qr},Symbol.toStringTag,{value:"Module"}));let Ae=typeof document>"u",Fe=!Ae;function ti(e){if(Ae)return ae(e())}function ni(e){if(Fe)return ae(e())}function yn(e,t){return Ae?e():t()}const ri=Object.freeze(Object.defineProperty({__proto__:null,isClient:Fe,isServer:Ae,match:yn,onClient:ni,onServer:ti},Symbol.toStringTag,{value:"Module"}));function ii(e){if(typeof e=="boolean")return e}function li(e){if(e===null)return null}function ui(e){if(typeof e=="string")return e}function oi(e){if(typeof e=="number")return e}function di(e){if(typeof e=="object"&&e!==null&&!Array.isArray(e))return e}function ai(e){if(Array.isArray(e))return e}let he={bool:ii,$$null:li,string:ui,float:oi,object:di,array:ai};function ci(e){return e}function si(e){let t=he.float(e);if(t!==void 0)return t|0}let fi={encode:ci,decode:si};function hi(e){return e}function mi(e){return he.float(e)}let pi={encode:hi,decode:mi};function gi(e){return e}function yi(e){return he.string(e)}let Si={encode:gi,decode:yi};function _i(e){return e}function bi(e){return he.bool(e)}let Ei={encode:_i,decode:bi};function wi(e){return{encode:t=>t.map(e.encode),decode:t=>{let n=he.array(t);if(n===void 0)return;let r=Kt(n,e.decode);if(r.length===n.length)return r}}}function Ti(e){return{encode:t=>t!==void 0?e.encode(h(t)):null,decode:t=>Xe(he.$$null(t))?ae(void 0):Vn(e.decode(t),n=>ae(n))}}function vi(e,t){return{encode:n=>[e.encode(n[0]),t.encode(n[1])],decode:n=>{let r=Array.isArray(n)?n:void 0;if(r===void 0||r.length!==2)return;let l=r[0],i=r[1],u=e.decode(l),o=t.decode(i);if(u!==void 0&&o!==void 0)return[h(u),h(o)]}}}function $i(e,t,n){return{encode:r=>[e.encode(r[0]),t.encode(r[1]),n.encode(r[2])],decode:r=>{let l=Array.isArray(r)?r:void 0;if(l===void 0||l.length!==3)return;let i=l[0],u=l[1],o=l[2],c=e.decode(i),y=t.decode(u),C=n.decode(o);if(c!==void 0&&y!==void 0&&C!==void 0)return[h(c),h(y),h(C)]}}}function Ai(e){return{encode:t=>{let n={};return Object.entries(t).forEach(r=>{n[r[0]]=e.encode(r[1])}),n},decode:t=>{let n=he.object(t);if(n===void 0)return;let r={},l={contents:!0};if(Object.entries(n).forEach(i=>{let u=e.decode(i[1]);u!==void 0?r[i[0]]=h(u):l.contents=!1}),l.contents)return r}}}function xi(e,t){return{encode:e,decode:t}}let ki={int:fi,float:pi,string:Si,bool:Ei,array:wi,option:Ti,tuple2:vi,tuple3:$i,dict:Ai,make:xi},xe={};function Sn(e,t,n){if(Ae){xe[e]=n.encode(H(t));return}}function Oi(){Object.keys(xe).forEach(e=>{Ue(xe,e)})}function _n(e){return e.replaceAll("<\/script>","<\\/script>").replaceAll("<!--","<\\!--")}function Di(e){let t=Y(JSON.stringify(xe),"{}"),n=_n(t);return"<script"+(e!==void 0?' nonce="'+tn.escape(e)+'"':"")+">window.__XOTE_STATE__="+n+";<\/script>"}function bn(){return Fe?window.__XOTE_STATE__||{}:{}}function En(e,t,n){if(!Fe)return;let l=bn()[e];if(l===void 0)return;let i=n.decode(l);if(i!==void 0)return ce(t,h(i))}function wn(e,t,n){yn(()=>Sn(e,t,n),()=>En(e,t,n))}function Ci(e,t,n){let r=qe(t,void 0,void 0);return wn(e,r,n),r}const ji=Object.freeze(Object.defineProperty({__proto__:null,Codec:ki,clear:Oi,escapeForScript:_n,generateScript:Di,getClientState:bn,make:Ci,register:Sn,registry:xe,restore:En,sync:wn},Symbol.toStringTag,{value:"Module"}));let ot={};function Pi(e){let t=ot[e];if(t!==void 0){let n=t+1|0;return ot[e]=n,e+("/"+n)}return ot[e]=1,e}function Mi(e){return Array.from(e.childNodes||[])}function ke(e,t){if(e.nodeType!==8)return!1;let n=e.nodeValue;return n==null?!1:n===t}function Ne(e,t){if(e.nodeType!==8)return!1;let n=e.nodeValue;return n==null?!1:n.startsWith(t)}function dt(e){if(e.nodeType!==8)return;let t=e.nodeValue;if(t!=null&&t.startsWith("k:"))return t.slice(2)}function _e(e){return{current:He(e.firstChild),parent:e}}function Ri(e){return e.current}function z(e){let t=e.current;return t!==void 0&&(e.current=He(h(t).nextSibling)),t}function le(e,t){return(()=>{for(;;){let r=e.current;if(r===void 0)return;let l=h(r);if(ke(l,t))return z(e),ae(l);z(e)}})()}function ze(e,t){let n=[];return(()=>{for(;;){let l=e.current;if(l===void 0)return;let i=h(l);if(ke(i,t)){z(e);return}n.push(i),z(e)}})(),n}let Gi={elementNode:1,textNode:3,commentNode:8,getChildNodes:Mi,isMarker:ke,isMarkerPrefix:Ne,extractKey:dt,make:_e,peek:Ri,next:z,skipUntilMarker:le,collectUntilMarker:ze},Li=Pi("Hydration-Xote.HydrationMismatch");function at(e){console.warn("[Xote Hydration] "+e)}function Fi(e,t){for(;;){let n=e;switch(n.TAG){case"Element":let r=n.children,l=n.events,i=n.attrs,u=a.createOwner();return a.setOwner(t,u),a.runWithOwner(u,()=>{i.forEach(_=>{let s=_[1],b=_[0];switch(s.TAG){case"Static":return;case"SignalValue":let w=s._0,G=j(()=>{Te.setAttrOrProp(t,b,x(w))},void 0);return a.addDisposer(u,G);case"Compute":let d=s._0,m=j(()=>{Te.setAttrOrProp(t,b,d())},void 0);return a.addDisposer(u,m)}}),l.forEach(_=>{t.addEventListener(_[0],_[1])});let v=_e(t);r.forEach(_=>ue(_,v))});case"Text":return;case"SignalText":let o=n._0,c=a.createOwner();return a.setOwner(t,c),a.runWithOwner(c,()=>{let v=j(()=>{t.textContent=x(o)},void 0);a.addDisposer(c,v)});case"Fragment":let y=_e(t);n._0.forEach(v=>ue(v,y));return;case"SignalFragment":let C=n._0,B=a.createOwner();return a.setOwner(t,B),a.runWithOwner(B,()=>{let v=j(()=>{let _=x(C);Array.from(t.childNodes||[]).forEach(b=>a.disposeOwner(Y(a.getOwner(b),a.createOwner()))),t.innerHTML="",_.forEach(b=>{let w=ne.render(b);t.appendChild(w)})},void 0);a.addDisposer(B,v)});case"LazyComponent":let I=a.createOwner(),M=a.runWithOwner(I,n._0);a.setOwner(t,I),e=M;continue;case"KeyedList":let k=n.renderItem,q=n.keyFn,W=n.signal,V=a.createOwner();a.setOwner(t,V);let R={},U=_e(t);return le(U,"kl"),(()=>{for(;;){let v=U.current;if(v===void 0)return;let _=h(v);if(!Ne(_,"k:"))if(ke(_,"/kl")){z(U);return}else return;let s=Y(dt(_),"");z(U);let w=ze(U,"/k").find(G=>G.nodeType===1);if(w!==void 0){let G=H(W),d=Y(G.find(m=>q(m)===s),{});R[s]={key:s,item:d,element:h(w)}}}})(),a.runWithOwner(V,()=>{let v=document.createComment(" keyed-list-start "),_=document.createComment(" keyed-list-end "),s=t.firstChild;s==null?t.appendChild(v):t.insertBefore(v,s),t.appendChild(_);let b=()=>{let G=x(W),d={};G.forEach(p=>{d[q(p)]=p});let m=[];Object.keys(R).forEach(p=>{if(d[p]===void 0){m.push(p);return}}),m.forEach(p=>{let S=R[p];if(S!==void 0){ne.disposeElement(S.element),S.element.remove(),Ue(R,p);return}});let $=[],O={};G.forEach(p=>{let S=q(p),g=R[S];if(g!==void 0){if(g.item!==p){O[S]=!0;let ct=k(p),Ie=ne.render(ct),Ke={key:S,item:p,element:Ie};$.push(Ke),R[S]=Ke;return}$.push(g);return}let T=k(p),Ee=ne.render(T),Be={key:S,item:p,element:Ee};$.push(Be),R[S]=Be});let L={contents:v.nextSibling};$.forEach(p=>{let S=L.contents;if(S==null){t.insertBefore(p.element,_);return}if(S===_){t.insertBefore(p.element,_);return}if(S===p.element){L.contents=S.nextSibling;return}Y(O[p.key],!1)?(ne.disposeElement(S),t.replaceChild(p.element,S),L.contents=p.element.nextSibling):(t.insertBefore(p.element,S),L.contents=p.element.nextSibling)})},w=j(()=>{b()},void 0);a.addDisposer(V,w)})}}}function ue(e,t){switch(e.TAG){case"Element":let n=e.children,r=e.events,l=e.attrs,i=z(t);if(i===void 0)return at("Missing DOM element for Element node");let u=h(i),o=a.createOwner();return a.setOwner(u,o),a.runWithOwner(o,()=>{l.forEach(b=>{let w=b[1],G=b[0];switch(w.TAG){case"Static":return;case"SignalValue":let d=w._0,m=j(()=>{Te.setAttrOrProp(u,G,x(d))},void 0);return a.addDisposer(o,m);case"Compute":let $=w._0,O=j(()=>{Te.setAttrOrProp(u,G,$())},void 0);return a.addDisposer(o,O)}}),r.forEach(b=>{u.addEventListener(b[0],b[1])});let s=_e(u);n.forEach(b=>ue(b,s))});case"Text":z(t);return;case"SignalText":let c=e._0;le(t,"$");let y=z(t);if(y===void 0)return at("Missing text node for SignalText");let C=h(y),B=a.createOwner();a.setOwner(C,B),a.runWithOwner(B,()=>{let s=j(()=>{C.textContent=x(c)},void 0);a.addDisposer(B,s)}),le(t,"/$");return;case"Fragment":e._0.forEach(s=>ue(s,t));return;case"SignalFragment":let I=e._0;le(t,"#");let M=ze(t,"/#"),k=document.createElement("div");k.setAttribute("style","display: contents");let q=M[0],W=q!==void 0?q.parentNode:void 0;M.forEach(s=>{k.appendChild(s)});let V=t.current;if(W!==void 0){let s=h(W);V!==void 0?s.insertBefore(k,h(V)):s.appendChild(k)}let R=a.createOwner();return a.setOwner(k,R),a.runWithOwner(R,()=>{let s=j(()=>{let b=x(I);Array.from(k.childNodes||[]).forEach(ne.disposeElement),k.innerHTML="",b.forEach(G=>{let d=ne.render(G);k.appendChild(d)})},void 0);a.addDisposer(R,s)});case"LazyComponent":le(t,"lc");let U=e._0();ue(U,t),le(t,"/lc");return;case"KeyedList":let be=e.keyFn,v=e.signal;return le(t,"kl"),(()=>{for(;;){let s=t.current;if(s===void 0)return;let b=h(s);if(!Ne(b,"k:"))if(ke(b,"/kl")){z(t);return}else return;let w=Y(dt(b),"");z(t);let d=ze(t,"/k").find(m=>m.nodeType===1);if(d!==void 0){let m=H(v),$=Y(m.find(O=>be(O)===w),{});h(d)}}})()}}function Tn(e,t,n){let r=n!==void 0?n:{},l=e(),i=_e(t),u=i.current;u!==void 0&&Ne(h(u),"xote-root:")&&z(i),ue(l,i),window.__XOTE_HYDRATED__=!0;let o=r.onHydrated;if(o!==void 0)return o()}function Ni(e,t,n){let r=n!==void 0?n:{},l=document.getElementById(t);if(l==null){console.error("[Xote Hydration] Container element not found: "+t);return}else return Tn(e,l,r)}const zi=Object.freeze(Object.defineProperty({__proto__:null,DOM:void 0,DOMWalker:Gi,HydrationMismatch:Li,Reactivity:void 0,hydrate:Tn,hydrateById:Ni,hydrateNode:Fi,hydrateNodeWithWalker:ue,logHydrationWarning:at},Symbol.toStringTag,{value:"Module"}));A.Computed=rr,A.Effect=Wn,A.Html=kr,A.Hydration=zi,A.Node=yr,A.ReactiveProp=Gr,A.Route=Fr,A.Router=qr,A.SSR=ei,A.SSRContext=ri,A.SSRState=ji,A.Signal=er,A.XoteJSX=jr,Object.defineProperty(A,Symbol.toStringTag,{value:"Module"})}));
17
+ </html>`}const ei=Object.freeze(Object.defineProperty({__proto__:null,Attributes:Jr,Html:tn,Markers:Yr,generateHydrationScript:gn,renderDocument:Zr,renderNodeToString:ie,renderToString:pn,renderToStringWithRoot:Qr},Symbol.toStringTag,{value:"Module"}));let Ae=typeof document>"u",Fe=!Ae;function ti(e){if(Ae)return de(e())}function ni(e){if(Fe)return de(e())}function yn(e,t){return Ae?e():t()}const ri=Object.freeze(Object.defineProperty({__proto__:null,isClient:Fe,isServer:Ae,match:yn,onClient:ni,onServer:ti},Symbol.toStringTag,{value:"Module"}));function ii(e){if(typeof e=="boolean")return e}function li(e){if(e===null)return null}function ui(e){if(typeof e=="string")return e}function oi(e){if(typeof e=="number")return e}function ai(e){if(typeof e=="object"&&e!==null&&!Array.isArray(e))return e}function di(e){if(Array.isArray(e))return e}let he={bool:ii,$$null:li,string:ui,float:oi,object:ai,array:di};function ci(e){return e}function si(e){let t=he.float(e);if(t!==void 0)return t|0}let fi={encode:ci,decode:si};function hi(e){return e}function mi(e){return he.float(e)}let pi={encode:hi,decode:mi};function gi(e){return e}function yi(e){return he.string(e)}let Si={encode:gi,decode:yi};function _i(e){return e}function bi(e){return he.bool(e)}let Ei={encode:_i,decode:bi};function wi(e){return{encode:t=>t.map(e.encode),decode:t=>{let n=he.array(t);if(n===void 0)return;let r=Kt(n,e.decode);if(r.length===n.length)return r}}}function Ti(e){return{encode:t=>t!==void 0?e.encode(h(t)):null,decode:t=>Xe(he.$$null(t))?de(void 0):Vn(e.decode(t),n=>de(n))}}function vi(e,t){return{encode:n=>[e.encode(n[0]),t.encode(n[1])],decode:n=>{let r=Array.isArray(n)?n:void 0;if(r===void 0||r.length!==2)return;let l=r[0],i=r[1],u=e.decode(l),o=t.decode(i);if(u!==void 0&&o!==void 0)return[h(u),h(o)]}}}function $i(e,t,n){return{encode:r=>[e.encode(r[0]),t.encode(r[1]),n.encode(r[2])],decode:r=>{let l=Array.isArray(r)?r:void 0;if(l===void 0||l.length!==3)return;let i=l[0],u=l[1],o=l[2],s=e.decode(i),y=t.decode(u),j=n.decode(o);if(s!==void 0&&y!==void 0&&j!==void 0)return[h(s),h(y),h(j)]}}}function Ai(e){return{encode:t=>{let n={};return Object.entries(t).forEach(r=>{n[r[0]]=e.encode(r[1])}),n},decode:t=>{let n=he.object(t);if(n===void 0)return;let r={},l={contents:!0};if(Object.entries(n).forEach(i=>{let u=e.decode(i[1]);u!==void 0?r[i[0]]=h(u):l.contents=!1}),l.contents)return r}}}function xi(e,t){return{encode:e,decode:t}}let ki={int:fi,float:pi,string:Si,bool:Ei,array:wi,option:Ti,tuple2:vi,tuple3:$i,dict:Ai,make:xi},xe={};function Sn(e,t,n){if(Ae){xe[e]=n.encode(X(t));return}}function Di(){Object.keys(xe).forEach(e=>{Ue(xe,e)})}function _n(e){return e.replaceAll("<\/script>","<\\/script>").replaceAll("<!--","<\\!--")}function Oi(e){let t=J(JSON.stringify(xe),"{}"),n=_n(t);return"<script"+(e!==void 0?' nonce="'+tn.escape(e)+'"':"")+">window.__XOTE_STATE__="+n+";<\/script>"}function bn(){return Fe?window.__XOTE_STATE__||{}:{}}function En(e,t,n){if(!Fe)return;let l=bn()[e];if(l===void 0)return;let i=n.decode(l);if(i!==void 0)return ce(t,h(i))}function wn(e,t,n){yn(()=>Sn(e,t,n),()=>En(e,t,n))}function Ci(e,t,n){let r=qe(t,void 0,void 0);return wn(e,r,n),r}const ji=Object.freeze(Object.defineProperty({__proto__:null,Codec:ki,clear:Di,escapeForScript:_n,generateScript:Oi,getClientState:bn,make:Ci,register:Sn,registry:xe,restore:En,sync:wn},Symbol.toStringTag,{value:"Module"}));let ot={};function Pi(e){let t=ot[e];if(t!==void 0){let n=t+1|0;return ot[e]=n,e+("/"+n)}return ot[e]=1,e}function Mi(e){return Array.from(e.childNodes||[])}function ke(e,t){if(e.nodeType!==8)return!1;let n=e.nodeValue;return n==null?!1:n===t}function Ne(e,t){if(e.nodeType!==8)return!1;let n=e.nodeValue;return n==null?!1:n.startsWith(t)}function at(e){if(e.nodeType!==8)return;let t=e.nodeValue;if(t!=null&&t.startsWith("k:"))return t.slice(2)}function _e(e){return{current:He(e.firstChild),parent:e}}function Ri(e){return e.current}function B(e){let t=e.current;return t!==void 0&&(e.current=He(h(t).nextSibling)),t}function le(e,t){return(()=>{for(;;){let r=e.current;if(r===void 0)return;let l=h(r);if(ke(l,t))return B(e),de(l);B(e)}})()}function ze(e,t){let n=[];return(()=>{for(;;){let l=e.current;if(l===void 0)return;let i=h(l);if(ke(i,t)){B(e);return}n.push(i),B(e)}})(),n}let Li={elementNode:1,textNode:3,commentNode:8,getChildNodes:Mi,isMarker:ke,isMarkerPrefix:Ne,extractKey:at,make:_e,peek:Ri,next:B,skipUntilMarker:le,collectUntilMarker:ze},Gi=Pi("Hydration-Xote.HydrationMismatch");function dt(e){console.warn("[Xote Hydration] "+e)}function Fi(e,t){for(;;){let n=e;switch(n.TAG){case"Element":let r=n.children,l=n.events,i=n.attrs,u=c.createOwner();return c.setOwner(t,u),c.runWithOwner(u,()=>{i.forEach(b=>{let f=b[1],E=b[0];switch(f.TAG){case"Static":return;case"SignalValue":let T=f._0,L=P(()=>{Te.setAttrOrProp(t,E,k(T))},void 0);return c.addDisposer(u,L);case"Compute":let d=f._0,m=P(()=>{Te.setAttrOrProp(t,E,d())},void 0);return c.addDisposer(u,m)}}),l.forEach(b=>{t.addEventListener(b[0],b[1])});let $=_e(t);r.forEach(b=>ue(b,$))});case"Text":return;case"SignalText":let o=n._0,s=c.createOwner();return c.setOwner(t,s),c.runWithOwner(s,()=>{let $=P(()=>{t.textContent=k(o)},void 0);c.addDisposer(s,$)});case"Fragment":let y=_e(t);n._0.forEach($=>ue($,y));return;case"SignalFragment":let j=n._0,I=c.createOwner();return c.setOwner(t,I),c.runWithOwner(I,()=>{let $=P(()=>{let b=k(j);Array.from(t.childNodes||[]).forEach(E=>c.disposeOwner(J(c.getOwner(E),c.createOwner()))),t.innerHTML="",b.forEach(E=>{let T=ne.render(E);t.appendChild(T)})},void 0);c.addDisposer(I,$)});case"LazyComponent":let K=c.createOwner(),M=c.runWithOwner(K,n._0);c.setOwner(t,K),e=M;continue;case"KeyedList":let D=n.renderItem,U=n.keyFn,V=n.signal,H=c.createOwner();c.setOwner(t,H);let R={},Y=_e(t);return le(Y,"kl"),(()=>{for(;;){let $=Y.current;if($===void 0)return;let b=h($);if(!Ne(b,"k:"))if(ke(b,"/kl")){B(Y);return}else return;let f=J(at(b),"");B(Y);let T=ze(Y,"/k").find(L=>L.nodeType===1);if(T!==void 0){let L=X(V),d=J(L.find(m=>U(m)===f),{});R[f]={key:f,item:d,element:h(T)}}}})(),c.runWithOwner(H,()=>{let $=document.createComment(" keyed-list-start "),b=document.createComment(" keyed-list-end "),f=t.firstChild;f==null?t.appendChild($):t.insertBefore($,f),t.appendChild(b);let E=()=>{let L=k(V),d={};L.forEach(p=>{d[U(p)]=p});let m=[];Object.keys(R).forEach(p=>{if(d[p]===void 0){m.push(p);return}}),m.forEach(p=>{let _=R[p];if(_!==void 0){ne.disposeElement(_.element),_.element.remove(),Ue(R,p);return}});let A=[],O={};L.forEach(p=>{let _=U(p),g=R[_];if(g!==void 0){if(g.item!==p){O[_]=!0;let ct=D(p),Ie=ne.render(ct),Ke={key:_,item:p,element:Ie};A.push(Ke),R[_]=Ke;return}A.push(g);return}let v=D(p),Ee=ne.render(v),Be={key:_,item:p,element:Ee};A.push(Be),R[_]=Be});let G={contents:$.nextSibling};A.forEach(p=>{let _=G.contents;if(_==null){t.insertBefore(p.element,b);return}if(_===b){t.insertBefore(p.element,b);return}if(_===p.element){G.contents=_.nextSibling;return}J(O[p.key],!1)?(ne.disposeElement(_),t.replaceChild(p.element,_),G.contents=p.element.nextSibling):(t.insertBefore(p.element,_),G.contents=p.element.nextSibling)})},T=P(()=>{E()},void 0);c.addDisposer(H,T)})}}}function ue(e,t){switch(e.TAG){case"Element":let n=e.children,r=e.events,l=e.attrs,i=B(t);if(i===void 0)return dt("Missing DOM element for Element node");let u=h(i),o=c.createOwner();return c.setOwner(u,o),c.runWithOwner(o,()=>{l.forEach(E=>{let T=E[1],L=E[0];switch(T.TAG){case"Static":return;case"SignalValue":let d=T._0,m=P(()=>{Te.setAttrOrProp(u,L,k(d))},void 0);return c.addDisposer(o,m);case"Compute":let A=T._0,O=P(()=>{Te.setAttrOrProp(u,L,A())},void 0);return c.addDisposer(o,O)}}),r.forEach(E=>{u.addEventListener(E[0],E[1])});let f=_e(u);n.forEach(E=>ue(E,f))});case"Text":B(t);return;case"SignalText":let s=e._0;le(t,"$");let y=B(t);if(y===void 0)return dt("Missing text node for SignalText");let j=h(y),I=c.createOwner();c.setOwner(j,I),c.runWithOwner(I,()=>{let f=P(()=>{j.textContent=k(s)},void 0);c.addDisposer(I,f)}),le(t,"/$");return;case"Fragment":e._0.forEach(f=>ue(f,t));return;case"SignalFragment":let K=e._0;le(t,"#");let M=ze(t,"/#"),D=document.createElement("div");D.setAttribute("style","display: contents");let U=M[0],V=U!==void 0?U.parentNode:void 0;M.forEach(f=>{D.appendChild(f)});let H=t.current;if(V!==void 0){let f=h(V);H!==void 0?f.insertBefore(D,h(H)):f.appendChild(D)}let R=c.createOwner();return c.setOwner(D,R),c.runWithOwner(R,()=>{let f=P(()=>{let E=k(K);Array.from(D.childNodes||[]).forEach(ne.disposeElement),D.innerHTML="",E.forEach(L=>{let d=ne.render(L);D.appendChild(d)})},void 0);c.addDisposer(R,f)});case"LazyComponent":le(t,"lc");let Y=e._0();ue(Y,t),le(t,"/lc");return;case"KeyedList":let be=e.keyFn,$=e.signal;return le(t,"kl"),(()=>{for(;;){let f=t.current;if(f===void 0)return;let E=h(f);if(!Ne(E,"k:"))if(ke(E,"/kl")){B(t);return}else return;let T=J(at(E),"");B(t);let d=ze(t,"/k").find(m=>m.nodeType===1);if(d!==void 0){let m=X($),A=J(m.find(O=>be(O)===T),{});h(d)}}})()}}function Tn(e,t,n){let r=n!==void 0?n:{},l=e(),i=_e(t),u=i.current;u!==void 0&&Ne(h(u),"xote-root:")&&B(i),ue(l,i),window.__XOTE_HYDRATED__=!0;let o=r.onHydrated;if(o!==void 0)return o()}function Ni(e,t,n){let r=n!==void 0?n:{},l=document.getElementById(t);if(l==null){console.error("[Xote Hydration] Container element not found: "+t);return}else return Tn(e,l,r)}const zi=Object.freeze(Object.defineProperty({__proto__:null,DOM:void 0,DOMWalker:Li,HydrationMismatch:Gi,Reactivity:void 0,hydrate:Tn,hydrateById:Ni,hydrateNode:Fi,hydrateNodeWithWalker:ue,logHydrationWarning:dt},Symbol.toStringTag,{value:"Module"}));x.Computed=rr,x.Effect=Wn,x.Html=kr,x.Hydration=zi,x.Node=yr,x.ReactiveProp=Lr,x.Route=Fr,x.Router=qr,x.SSR=ei,x.SSRContext=ri,x.SSRState=ji,x.Signal=er,x.XoteJSX=jr,Object.defineProperty(x,Symbol.toStringTag,{value:"Module"})}));
package/package.json CHANGED
@@ -1,11 +1,21 @@
1
1
  {
2
2
  "name": "xote",
3
- "version": "6.0.0",
3
+ "version": "6.1.0",
4
4
  "repository": {
5
5
  "url": "https://github.com/brnrdog/xote"
6
6
  },
7
7
  "main": "./dist/xote.cjs",
8
8
  "module": "./dist/xote.mjs",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/xote.mjs",
12
+ "require": "./dist/xote.cjs",
13
+ "default": "./dist/xote.mjs"
14
+ },
15
+ "./src/*": "./src/*",
16
+ "./package.json": "./package.json",
17
+ "./rescript.json": "./rescript.json"
18
+ },
9
19
  "sideEffects": false,
10
20
  "files": [
11
21
  "dist",
@@ -18,6 +28,7 @@
18
28
  "res:build": "rescript",
19
29
  "res:clean": "rescript clean",
20
30
  "res:dev": "rescript -w",
31
+ "format": "rescript format",
21
32
  "dev": "vite",
22
33
  "build": "vite build",
23
34
  "preview": "vite preview",
package/src/Hydration.res CHANGED
@@ -1,4 +1,3 @@
1
-
2
1
  module DOM = Node.DOM
3
2
  module Reactivity = Node.Reactivity
4
3
 
package/src/Node.res CHANGED
@@ -1,4 +1,3 @@
1
-
2
1
  /* ============================================================================
3
2
  * DOM Bindings
4
3
  * ============================================================================ */
@@ -89,7 +88,17 @@ module DOM = {
89
88
  | "checked" => setChecked(el, value == "true")
90
89
  | "disabled" => setDisabled(el, value == "true")
91
90
  /* Boolean attributes that should be added/removed based on value */
92
- | "required" | "readonly" | "multiple" | "aria-hidden" | "aria-expanded" | "aria-selected" =>
91
+ | "required"
92
+ | "readonly"
93
+ | "multiple"
94
+ | "aria-hidden"
95
+ | "aria-expanded"
96
+ | "aria-selected"
97
+ | "draggable"
98
+ | "hidden"
99
+ | "contenteditable"
100
+ | "spellcheck"
101
+ | "autofocus" =>
93
102
  if value == "true" {
94
103
  setAttribute(el, key, "")
95
104
  } else {
package/src/Node.res.mjs CHANGED
@@ -70,9 +70,14 @@ function setAttrOrProp(el, key, value) {
70
70
  case "aria-expanded" :
71
71
  case "aria-hidden" :
72
72
  case "aria-selected" :
73
+ case "autofocus" :
74
+ case "contenteditable" :
75
+ case "draggable" :
76
+ case "hidden" :
73
77
  case "multiple" :
74
78
  case "readonly" :
75
79
  case "required" :
80
+ case "spellcheck" :
76
81
  break;
77
82
  case "value" :
78
83
  el.value = value;
@@ -1,4 +1,3 @@
1
-
2
1
  /* Defines a property that can either be a signal (Reactive) or a static value
3
2
  (Static) */
4
3
  type t<'a> = Reactive(Signal.t<'a>) | Static('a)
package/src/Router.res CHANGED
@@ -253,7 +253,13 @@ let init = (~basePath as basePathArg: string="/", ()): unit => {
253
253
  // Initialize router for server-side rendering
254
254
  // Sets the base path and location signal without accessing browser APIs
255
255
  // pathname: The app-relative path being rendered (e.g., "/docs/core-concepts/signals")
256
- let initSSR = (~basePath as basePathArg: string="/", ~pathname: string="/", ~search: string="", ~hash: string="", ()): unit => {
256
+ let initSSR = (
257
+ ~basePath as basePathArg: string="/",
258
+ ~pathname: string="/",
259
+ ~search: string="",
260
+ ~hash: string="",
261
+ (),
262
+ ): unit => {
257
263
  let state = getGlobalState()
258
264
  let normalizedBasePath = normalizeBasePath(basePathArg)
259
265
  state.basePath := normalizedBasePath
package/src/SSR.res CHANGED
@@ -1,5 +1,3 @@
1
-
2
-
3
1
  /* ============================================================================
4
2
  * HTML Utilities
5
3
  * ============================================================================ */
@@ -91,7 +89,12 @@ module Attributes = {
91
89
  | "multiple"
92
90
  | "aria-hidden"
93
91
  | "aria-expanded"
94
- | "aria-selected" =>
92
+ | "aria-selected"
93
+ | "draggable"
94
+ | "hidden"
95
+ | "contenteditable"
96
+ | "spellcheck"
97
+ | "autofocus" =>
95
98
  if attrValue == "true" {
96
99
  key
97
100
  } else {
package/src/SSR.res.mjs CHANGED
@@ -87,11 +87,16 @@ function renderAttr(param) {
87
87
  case "aria-expanded" :
88
88
  case "aria-hidden" :
89
89
  case "aria-selected" :
90
+ case "autofocus" :
90
91
  case "checked" :
92
+ case "contenteditable" :
91
93
  case "disabled" :
94
+ case "draggable" :
95
+ case "hidden" :
92
96
  case "multiple" :
93
97
  case "readonly" :
94
98
  case "required" :
99
+ case "spellcheck" :
95
100
  break;
96
101
  default:
97
102
  return key + `="` + escape(attrValue) + `"`;
package/src/SSRState.res CHANGED
@@ -1,4 +1,3 @@
1
-
2
1
  /* ============================================================================
3
2
  * SSR State Serialization
4
3
  *
package/src/XoteJSX.res CHANGED
@@ -11,8 +11,9 @@ type componentLike<'props, 'return> = 'props => 'return
11
11
  * This ensures component functions (which may create effects/computeds) are not
12
12
  * evaluated during a Computed context, which would incorrectly track their
13
13
  * dependencies as belonging to the outer computed. */
14
- let jsx = (component: component<'props>, props: 'props): element =>
15
- Node.LazyComponent(() => component(props))
14
+ let jsx = (component: component<'props>, props: 'props): element => Node.LazyComponent(
15
+ () => component(props),
16
+ )
16
17
 
17
18
  let jsxs = jsx
18
19
 
@@ -79,11 +80,20 @@ module Elements = {
79
80
  'ariaHidden,
80
81
  'ariaExpanded,
81
82
  'ariaSelected,
83
+ 'draggable,
84
+ 'hidden,
85
+ 'title,
86
+ 'contentEditable,
87
+ 'spellcheck,
88
+ 'autofocus,
89
+ 'action,
90
+ 'method,
82
91
  > = {
83
92
  /* Standard attributes - accept raw strings or ReactiveProp.t<string> */
84
93
  id?: 'id,
85
94
  class?: 'class,
86
95
  style?: 'style,
96
+ title?: 'title,
87
97
  /* Form/Input attributes */
88
98
  @as("type") type_?: 'typ,
89
99
  name?: 'name,
@@ -104,6 +114,9 @@ module Elements = {
104
114
  accept?: 'accept,
105
115
  rows?: int,
106
116
  cols?: int,
117
+ autofocus?: 'autofocus,
118
+ action?: 'action,
119
+ method?: 'method,
107
120
  /* Label attributes */
108
121
  @as("for") for_?: 'forAttr,
109
122
  /* Link attributes */
@@ -114,6 +127,11 @@ module Elements = {
114
127
  alt?: 'alt,
115
128
  width?: 'width,
116
129
  height?: 'height,
130
+ /* Global attributes */
131
+ draggable?: 'draggable,
132
+ hidden?: 'hidden,
133
+ contentEditable?: 'contentEditable,
134
+ spellcheck?: 'spellcheck,
117
135
  /* Accessibility attributes */
118
136
  role?: 'role,
119
137
  tabIndex?: int,
@@ -138,6 +156,14 @@ module Elements = {
138
156
  onMouseMove?: Dom.event => unit,
139
157
  onMouseUp?: Dom.event => unit,
140
158
  onContextMenu?: Dom.event => unit,
159
+ /* Drag-and-drop event handlers */
160
+ onDrag?: Dom.event => unit,
161
+ onDragStart?: Dom.event => unit,
162
+ onDragEnd?: Dom.event => unit,
163
+ onDragOver?: Dom.event => unit,
164
+ onDragEnter?: Dom.event => unit,
165
+ onDragLeave?: Dom.event => unit,
166
+ onDrop?: Dom.event => unit,
141
167
  /* Children */
142
168
  children?: element,
143
169
  }
@@ -249,6 +275,14 @@ module Elements = {
249
275
  _,
250
276
  _,
251
277
  _,
278
+ _,
279
+ _,
280
+ _,
281
+ _,
282
+ _,
283
+ _,
284
+ _,
285
+ _,
252
286
  >,
253
287
  ): array<(string, Node.attrValue)> => {
254
288
  let attrs = []
@@ -257,6 +291,7 @@ module Elements = {
257
291
  addAttr(attrs, props.id, "id", convertAttrValue)
258
292
  addAttr(attrs, props.class, "class", convertAttrValue)
259
293
  addAttr(attrs, props.style, "style", convertAttrValue)
294
+ addAttr(attrs, props.title, "title", convertAttrValue)
260
295
 
261
296
  /* Form/Input attributes */
262
297
  addAttr(attrs, props.type_, "type", convertAttrValue)
@@ -278,6 +313,9 @@ module Elements = {
278
313
  addAttr(attrs, props.accept, "accept", convertAttrValue)
279
314
  addIntAttr(attrs, props.rows, "rows")
280
315
  addIntAttr(attrs, props.cols, "cols")
316
+ addAttr(attrs, props.autofocus, "autofocus", convertBoolAttrValue)
317
+ addAttr(attrs, props.action, "action", convertAttrValue)
318
+ addAttr(attrs, props.method, "method", convertAttrValue)
281
319
 
282
320
  /* Label attributes */
283
321
  addAttr(attrs, props.for_, "for", convertAttrValue)
@@ -292,6 +330,12 @@ module Elements = {
292
330
  addAttr(attrs, props.width, "width", convertAttrValue)
293
331
  addAttr(attrs, props.height, "height", convertAttrValue)
294
332
 
333
+ /* Global attributes */
334
+ addAttr(attrs, props.draggable, "draggable", convertBoolAttrValue)
335
+ addAttr(attrs, props.hidden, "hidden", convertBoolAttrValue)
336
+ addAttr(attrs, props.contentEditable, "contenteditable", convertBoolAttrValue)
337
+ addAttr(attrs, props.spellcheck, "spellcheck", convertBoolAttrValue)
338
+
295
339
  /* Accessibility attributes */
296
340
  addAttr(attrs, props.role, "role", convertAttrValue)
297
341
  addIntAttr(attrs, props.tabIndex, "tabindex")
@@ -356,6 +400,14 @@ module Elements = {
356
400
  _,
357
401
  _,
358
402
  _,
403
+ _,
404
+ _,
405
+ _,
406
+ _,
407
+ _,
408
+ _,
409
+ _,
410
+ _,
359
411
  >,
360
412
  ): array<(string, Dom.event => unit)> => {
361
413
  let events = []
@@ -374,6 +426,13 @@ module Elements = {
374
426
  addEvent(events, props.onMouseMove, "mousemove")
375
427
  addEvent(events, props.onMouseUp, "mouseup")
376
428
  addEvent(events, props.onContextMenu, "contextmenu")
429
+ addEvent(events, props.onDrag, "drag")
430
+ addEvent(events, props.onDragStart, "dragstart")
431
+ addEvent(events, props.onDragEnd, "dragend")
432
+ addEvent(events, props.onDragOver, "dragover")
433
+ addEvent(events, props.onDragEnter, "dragenter")
434
+ addEvent(events, props.onDragLeave, "dragleave")
435
+ addEvent(events, props.onDrop, "drop")
377
436
 
378
437
  events
379
438
  }
@@ -411,6 +470,14 @@ module Elements = {
411
470
  _,
412
471
  _,
413
472
  _,
473
+ _,
474
+ _,
475
+ _,
476
+ _,
477
+ _,
478
+ _,
479
+ _,
480
+ _,
414
481
  >,
415
482
  ): array<element> => {
416
483
  switch props.children {
@@ -454,6 +521,14 @@ module Elements = {
454
521
  _,
455
522
  _,
456
523
  _,
524
+ _,
525
+ _,
526
+ _,
527
+ _,
528
+ _,
529
+ _,
530
+ _,
531
+ _,
457
532
  >,
458
533
  ): element => {
459
534
  Node.Element({
@@ -498,6 +573,14 @@ module Elements = {
498
573
  _,
499
574
  _,
500
575
  _,
576
+ _,
577
+ _,
578
+ _,
579
+ _,
580
+ _,
581
+ _,
582
+ _,
583
+ _,
501
584
  >,
502
585
  ): element => createElement(tag, props)
503
586
 
@@ -536,6 +619,14 @@ module Elements = {
536
619
  _,
537
620
  _,
538
621
  _,
622
+ _,
623
+ _,
624
+ _,
625
+ _,
626
+ _,
627
+ _,
628
+ _,
629
+ _,
539
630
  >,
540
631
  ~key: option<string>=?,
541
632
  _: unit,
@@ -110,6 +110,7 @@ function propsToAttrs(props) {
110
110
  addAttr(attrs, props.id, "id", convertAttrValue);
111
111
  addAttr(attrs, props.class, "class", convertAttrValue);
112
112
  addAttr(attrs, props.style, "style", convertAttrValue);
113
+ addAttr(attrs, props.title, "title", convertAttrValue);
113
114
  addAttr(attrs, props.type, "type", convertAttrValue);
114
115
  addAttr(attrs, props.name, "name", convertAttrValue);
115
116
  addAttr(attrs, props.value, "value", convertAttrValue);
@@ -129,6 +130,9 @@ function propsToAttrs(props) {
129
130
  addAttr(attrs, props.accept, "accept", convertAttrValue);
130
131
  addIntAttr(attrs, props.rows, "rows");
131
132
  addIntAttr(attrs, props.cols, "cols");
133
+ addAttr(attrs, props.autofocus, "autofocus", convertBoolAttrValue);
134
+ addAttr(attrs, props.action, "action", convertAttrValue);
135
+ addAttr(attrs, props.method, "method", convertAttrValue);
132
136
  addAttr(attrs, props.for, "for", convertAttrValue);
133
137
  addAttr(attrs, props.href, "href", convertAttrValue);
134
138
  addAttr(attrs, props.target, "target", convertAttrValue);
@@ -136,6 +140,10 @@ function propsToAttrs(props) {
136
140
  addAttr(attrs, props.alt, "alt", convertAttrValue);
137
141
  addAttr(attrs, props.width, "width", convertAttrValue);
138
142
  addAttr(attrs, props.height, "height", convertAttrValue);
143
+ addAttr(attrs, props.draggable, "draggable", convertBoolAttrValue);
144
+ addAttr(attrs, props.hidden, "hidden", convertBoolAttrValue);
145
+ addAttr(attrs, props.contentEditable, "contenteditable", convertBoolAttrValue);
146
+ addAttr(attrs, props.spellcheck, "spellcheck", convertBoolAttrValue);
139
147
  addAttr(attrs, props.role, "role", convertAttrValue);
140
148
  addIntAttr(attrs, props.tabIndex, "tabindex");
141
149
  addAttr(attrs, props["aria-label"], "aria-label", convertAttrValue);
@@ -177,6 +185,13 @@ function propsToEvents(props) {
177
185
  addEvent(events, props.onMouseMove, "mousemove");
178
186
  addEvent(events, props.onMouseUp, "mouseup");
179
187
  addEvent(events, props.onContextMenu, "contextmenu");
188
+ addEvent(events, props.onDrag, "drag");
189
+ addEvent(events, props.onDragStart, "dragstart");
190
+ addEvent(events, props.onDragEnd, "dragend");
191
+ addEvent(events, props.onDragOver, "dragover");
192
+ addEvent(events, props.onDragEnter, "dragenter");
193
+ addEvent(events, props.onDragLeave, "dragleave");
194
+ addEvent(events, props.onDrop, "drop");
180
195
  return events;
181
196
  }
182
197