xote 4.15.2 → 4.16.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.cjs +5 -5
- package/dist/xote.mjs +504 -495
- package/dist/xote.umd.js +6 -6
- package/package.json +4 -7
- package/rescript.json +0 -5
- package/src/Xote__JSX.res +6 -2
- package/src/Xote__JSX.res.mjs +8 -2
- package/src/Xote__Router.res +11 -0
- package/src/Xote__Router.res.mjs +17 -0
package/dist/xote.umd.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
(function(A,ee){typeof exports=="object"&&typeof module<"u"?ee(exports):typeof define=="function"&&define.amd?define(["exports"],ee):(A=typeof globalThis<"u"?globalThis:A||self,ee(A.xote={}))})(this,(function(A){"use strict";let ee={contents:0};function be(){return ee.contents=ee.contents+1|0,ee.contents}function
|
|
2
|
-
`),B=
|
|
1
|
+
(function(A,ee){typeof exports=="object"&&typeof module<"u"?ee(exports):typeof define=="function"&&define.amd?define(["exports"],ee):(A=typeof globalThis<"u"?globalThis:A||self,ee(A.xote={}))})(this,(function(A){"use strict";let ee={contents:0};function be(){return ee.contents=ee.contents+1|0,ee.contents}function Je(){return{first:void 0,last:void 0,version:0,compute:void 0,firstDep:void 0,lastDep:void 0,flags:0,level:0}}function Zt(e){return{first:void 0,last:void 0,version:0,compute:e,firstDep:void 0,lastDep:void 0,flags:1,level:0}}function en(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 Qe(e){e.flags=e.flags&-2}function tn(e){return(e.flags&2)!==0}function nn(e){e.flags=e.flags|2}function rn(e){e.flags=e.flags&-3}function Ze(e){return(e.flags&1)!==0}function ln(e){e.flags=e.flags|1}function Re(e){e.flags=e.flags&-2}function un(e){e.flags=e.flags&-3}function Ee(e){return e.compute!==void 0}function et(e,t){return{subs:e,observer:t,nextDep:void 0,prevDep:void 0,nextSub:void 0,prevSub:void 0}}function we(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 tt(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 nt(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 rt(e){let t=e.firstDep;for(;t!==void 0;){let n=t;if(n!==void 0){let r=n.nextDep;nt(n),t=r}}e.firstDep=void 0,e.lastDep=void 0}function Me(e){let t=e.firstDep;for(;t!==void 0;){let n=t;if(n!==void 0){let r=n.nextDep;nt(n),t=r}}e.firstDep=void 0,e.lastDep=void 0}function lt(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 te(e){return e===void 0?{BS_PRIVATE_NESTED_SOME_NONE:0}:e!==null&&e.BS_PRIVATE_NESTED_SOME_NONE!==void 0?{BS_PRIVATE_NESTED_SOME_NONE:e.BS_PRIVATE_NESTED_SOME_NONE+1|0}:e}function je(e){if(e!=null)return te(e)}function g(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 on(e,t){if(e!==void 0)return te(t(g(e)))}function H(e,t){return e!==void 0?g(e):t}function dn(e){return e!==void 0}let x={contents:void 0},j={contents:void 0},K=[],ne=[],Y={contents:!1},ke=[],it=(function(e){e.length=0});function an(e){if(!tn(e)){nn(e),K.push(e);return}}function cn(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 lt(e,i),we(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};lt(e,l),we(t,l)}function sn(e,t){if(e.firstDep===void 0){let i=et(t,e);return tt(e,i),we(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=et(t,e);tt(e,l),we(t,l)}function fn(e){let t=x.contents;if(t!==void 0)return cn(t,e);let n=j.contents;if(n!==void 0)return sn(n,e)}function pn(e,t){return e.level-t.level|0}function mn(e,t){return e.level-t.level|0}function ut(e){let t=0,n=e.firstDep;for(;n!==void 0;){let r=n;r!==void 0&&(Ee(r.subs)&&r.subs.level>t&&(t=r.subs.level),n=r.nextDep)}return t+1|0}function ot(e){let t=0,n=e.firstDep;for(;n!==void 0;){let r=n;r!==void 0&&(Ee(r.subs)&&r.subs.level>t&&(t=r.subs.level),n=r.nextDep)}return t+1|0}function hn(e){let t=e.level;Me(e),un(e);let n=x.contents;x.contents=e;try{let r=e.compute;r!==void 0&&r(),Re(e),x.contents=n}catch(r){throw x.contents=n,r}if(t===0){e.level=ut(e);return}}function gn(e){let t=e.level;rt(e),rn(e);let n=j.contents;j.contents=e;try{e.run(),Qe(e),j.contents=n}catch(r){throw j.contents=n,r}if(t===0){e.level=ot(e);return}}function dt(){Y.contents=!0;try{for(;K.length!==0||ne.length!==0;){if(ne.length!==0){ne.sort(mn);let e=ne.slice();it(ne),e.forEach(hn)}if(K.length!==0){K.sort(pn);let e=K.slice();it(K),e.forEach(gn)}}Y.contents=!1;return}catch(e){throw Y.contents=!1,e}}function Sn(e){for(ke.push(e);ke.length!==0;){let t=ke.pop();if(t!==void 0){let n=t.first;for(;n!==void 0;){let r=n;if(r!==void 0){let l=r.observer;Ee(l)?Ze(l)||(ln(l),ke.push(l)):an(r.observer),n=r.nextSub}}}}if((K.length!==0||ne.length!==0)&&!Y.contents)return dt()}function at(e){if(!(Ee(e)&&Ze(e)))return;let t=e.level;Me(e);let n=x.contents;x.contents=e;try{let r=e.compute;r!==void 0&&r(),Re(e),x.contents=n}catch(r){throw x.contents=n,r}if(t===0){e.level=ut(e);return}}function _n(e){let t=Y.contents;Y.contents=!0;try{let n=e();return t||(Y.contents=!1,(K.length!==0||ne.length!==0)&&dt()),n}catch(n){throw t||(Y.contents=!1),n}}function yn(e){let t=x.contents,n=j.contents;x.contents=void 0,j.contents=void 0;try{let r=e();return x.contents=t,j.contents=n,r}catch(r){throw x.contents=t,j.contents=n,r}}function bn(e,t,n){return{id:be(),value:e,equals:H(n,(l,i)=>l===i),name:t,subs:Je()}}function En(e,t){return{id:be(),value:e,equals:(r,l)=>!1,name:t,subs:Je()}}function wn(e){return at(e.subs),fn(e.subs),e.value}function kn(e){return at(e.subs),e.value}function ct(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,Sn(e.subs)}function Tn(e,t){ct(e,t(e.value))}const vn=Object.freeze(Object.defineProperty({__proto__:null,Core:void 0,Id:void 0,Scheduler:void 0,batch:_n,get:wn,make:bn,makeForComputed:En,peek:kn,set:ct,untrack:yn,update:Tn},Symbol.toStringTag,{value:"Module"}));function $n(e,t){let n=be(),r={contents:void 0},i=en(n,"Effect",()=>{let _=r.contents;_!==void 0&&_(),r.contents=e()},t,void 0),u=j.contents;j.contents=i;try{i.run(),Qe(i),j.contents=u}catch(_){throw j.contents=u,_}i.level=ot(i);let d={contents:!1};return{dispose:()=>{if(d.contents)return;d.contents=!0;let _=r.contents;_!==void 0&&_(),rt(i)}}}const Cn=Object.freeze(Object.defineProperty({__proto__:null,Core:void 0,Id:void 0,Scheduler:void 0,run:$n},Symbol.toStringTag,{value:"Module"}));function An(e,t){let n=be(),r={contents:void 0},i=Zt(()=>{r.contents.value=e()}),u=x.contents;x.contents=i;let d=e();x.contents=u;let f={id:n,value:d,equals:(_,O)=>!1,name:t,subs:i};return r.contents=f,Re(i),f}function xn(e){Me(e.subs)}const Dn=Object.freeze(Object.defineProperty({__proto__:null,Core:void 0,Id:void 0,Scheduler:void 0,Signal:void 0,dispose:xn,make:An},Symbol.toStringTag,{value:"Module"}));let o=vn,R=Dn,T=Cn;function q(e){return e.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""").replaceAll("'","'")}let Fe=["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"];function On(e){return Fe.includes(e)}let st={escape:q,voidElements:Fe,isVoidElement:On},ft="<!--$-->",pt="<!--/$-->",mt="<!--#-->",ht="<!--/#-->",gt="<!--kl-->",St="<!--/kl-->";function _t(e){return"<!--k:"+e+"-->"}let yt="<!--/k-->",bt="<!--lc-->",Et="<!--/lc-->",Pn={signalTextStart:ft,signalTextEnd:pt,signalFragmentStart:mt,signalFragmentEnd:ht,keyedListStart:gt,keyedListEnd:St,keyedItemStart:_t,keyedItemEnd:yt,lazyComponentStart:bt,lazyComponentEnd:Et};function wt(e){let t=e[1],n=e[0],r;switch(t.TAG){case"Static":r=t._0;break;case"SignalValue":r=o.peek(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+'="'+q(r)+'"'}return r==="true"?n:""}function kt(e){let t=e.map(wt).filter(n=>n!=="");return t.length!==0?" "+t.join(" "):""}let Rn={renderAttr:wt,renderAttrs:kt};function U(e){switch(e.TAG){case"Element":let t=e.tag,n=kt(e.attrs);if(Fe.includes(t))return"<"+t+n+" />";let r=e.children.map(U).join("");return"<"+t+n+">"+r+"</"+t+">";case"Text":return q(e._0);case"SignalText":let l=o.peek(e._0);return ft+q(l)+pt;case"Fragment":return e._0.map(U).join("");case"SignalFragment":let u=o.peek(e._0).map(U).join("");return mt+u+ht;case"LazyComponent":let d=e._0();return bt+U(d)+Et;case"KeyedList":let f=e.renderItem,_=e.keyFn,P=o.peek(e.signal).map(D=>{let z=_(D),v=U(f(D));return _t(z)+v+yt}).join("");return gt+P+St}}function Tt(e,t){return U(e())}function Mn(e,t,n){let r=t!==void 0?t:"root",l=e(),i=U(l);return"<!--xote-root:"+r+"-->"+i+"<!--/xote-root-->"}function vt(e){return"<script"+(e!==void 0?' nonce="'+q(e)+'"':"")+">window.__XOTE_HYDRATED__=false;<\/script>"}function jn(e,t,n,r,l,i,u){let d=e!==void 0?e:"",f=t!==void 0?t:"",_=n!==void 0?n:[],O=r!==void 0?r:[],P=l!==void 0?l:"",D=Tt(u),z=vt(i),v=O.map(L=>'<link rel="stylesheet" href="'+q(L)+'" />').join(`
|
|
2
|
+
`),B=_.map(L=>{let G=i!==void 0?' nonce="'+q(i)+'"':"";return'<script type="module" src="'+q(L)+'"'+G+"><\/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
8
|
`+v+`
|
|
9
|
-
`+
|
|
9
|
+
`+d+`
|
|
10
10
|
</head>
|
|
11
11
|
<body`+(f!==""?" "+f:"")+`>
|
|
12
|
-
<div id="root">`+
|
|
13
|
-
`+
|
|
12
|
+
<div id="root">`+D+`</div>
|
|
13
|
+
`+P+`
|
|
14
14
|
`+z+`
|
|
15
15
|
`+B+`
|
|
16
16
|
</body>
|
|
17
|
-
</html>`}const Fn=Object.freeze(Object.defineProperty({__proto__:null,Attributes:Pn,Component:void 0,Html:at,Markers:Rn,generateHydrationScript:Tt,renderDocument:jn,renderNodeToString:U,renderToString:kt,renderToStringWithRoot:Mn},Symbol.toStringTag,{value:"Module"}));function vt(e,t){let n=e.length,r=new Array(n),l=0;for(let i=0;i<n;++i){let u=e[i],c=t(u);c!==void 0&&(r[l]=g(c),l=l+1|0)}return r.length=l,r}function In(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 $t(e){return vt(e.split("/"),t=>{if(t!=="")return t.startsWith(":")?{TAG:"Param",_0:t.slice(1)}:{TAG:"Static",_0:t}})}function Ct(e,t){let n=t.split("/").filter(i=>i!=="");if(e.length!==n.length)return"NoMatch";let r={};return e.every((i,u)=>{let c=n[u];return i.TAG==="Static"?c===i._0:(r[i._0]=c,!0)})?{TAG:"Match",_0:r}:"NoMatch"}function Ie(e,t){return Ct($t(e),t)}const Ln=Object.freeze(Object.defineProperty({__proto__:null,match:Ie,matchPath:Ct,parsePattern:$t},Symbol.toStringTag,{value:"Module"}));function Le(e,t){delete e[t]}function fe(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 pe={setAttrOrProp:fe},Te={contents:void 0};function Nn(){return{disposers:[],computeds:[]}}function ie(e,t){let n=Te.contents;Te.contents=e;let r=t();return Te.contents=n,r}function ue(e,t){e.disposers.push(t)}function At(e){e.disposers.forEach(t=>t.dispose()),e.computeds.forEach(t=>R.dispose(t))}function oe(e,t){e.__xote_owner__=t}function xt(e){return je(e.__xote_owner__)}let s={currentOwner:Te,createOwner:Nn,runWithOwner:ie,addDisposer:ue,disposeOwner:At,setOwner:oe,getOwner:xt};function Ot(e,t){return[e,{TAG:"Static",_0:t}]}function Dt(e,t){return[e,{TAG:"SignalValue",_0:t}]}function Rt(e,t){return[e,{TAG:"Compute",_0:t}]}let Gn={$$static:Ot,signal:Dt,computed:Rt};function me(e){let t=xt(e);t!==void 0&&At(t),Array.from(e.childNodes||[]).forEach(me)}function X(e){switch(e.TAG){case"Element":let t=e.children,n=e.events,r=e.attrs,l=document.createElement(e.tag),i={disposers:[],computeds:[]};return oe(l,i),ie(i,()=>{r.forEach(a=>{let m=a[1],E=a[0];switch(m.TAG){case"Static":return fe(l,E,m._0);case"SignalValue":let k=m._0;fe(l,E,d.peek(k));let C=T.run(()=>{fe(l,E,d.get(k))},void 0);return ue(i,C);case"Compute":let V=m._0,p=T.run(()=>{fe(l,E,V())},void 0);return ue(i,p)}}),n.forEach(a=>{l.addEventListener(a[0],a[1])}),t.forEach(a=>{let m=X(a);l.appendChild(m)})}),l;case"Text":return document.createTextNode(e._0);case"SignalText":let u=e._0,c=document.createTextNode(d.peek(u)),f={disposers:[],computeds:[]};return oe(c,f),ie(f,()=>{let a=T.run(()=>{c.textContent=d.get(u)},void 0);ue(f,a)}),c;case"Fragment":let b=document.createDocumentFragment();return e._0.forEach(a=>{let m=X(a);b.appendChild(m)}),b;case"SignalFragment":let F=e._0,D={disposers:[],computeds:[]},O=document.createElement("div");return O.setAttribute("style","display: contents"),oe(O,D),ie(D,()=>{let a=T.run(()=>{let m=d.get(F);Array.from(O.childNodes||[]).forEach(me),O.innerHTML="",m.forEach(k=>{let C=X(k);O.appendChild(C)})},void 0);ue(D,a)}),O;case"LazyComponent":let z={disposers:[],computeds:[]},v=ie(z,e._0),B=X(v);return oe(B,z),B;case"KeyedList":let I=e.renderItem,G=e.keyFn,P=e.signal,W={disposers:[],computeds:[]},ae=document.createComment(" keyed-list-start "),w=document.createComment(" keyed-list-end ");oe(ae,W);let _={},h=()=>{let a=w.parentNode;if(a==null)return;let m=d.get(P),E={};m.forEach(o=>{E[G(o)]=o});let k=[];Object.keys(_).forEach(o=>{if(E[o]===void 0){k.push(o);return}}),k.forEach(o=>{let y=_[o];if(y!==void 0){me(y.element),y.element.remove(),Le(_,o);return}});let C=[],V={};m.forEach(o=>{let y=G(o),se=_[y];if(se!==void 0){if(se.item!==o){V[y]=!0;let qe=I(o),Re=X(qe),Qt={key:y,item:o,element:Re};C.push(Qt),_[y]=Qt;return}C.push(se);return}let Ye=I(o),Oe=X(Ye),De={key:y,item:o,element:Oe};C.push(De),_[y]=De});let p={contents:ae.nextSibling};C.forEach(o=>{let y=p.contents;if(y==null){a.insertBefore(o.element,w);return}if(y===w){a.insertBefore(o.element,w);return}if(y===o.element){p.contents=y.nextSibling;return}H(V[o.key],!1)?(me(y),a.replaceChild(o.element,y),p.contents=o.element.nextSibling):(a.insertBefore(o.element,y),p.contents=o.element.nextSibling)})},S=document.createDocumentFragment();return S.appendChild(ae),d.peek(P).forEach(a=>{let m=G(a),E=I(a),k=X(E),C={key:m,item:a,element:k};_[m]=C,S.appendChild(k)}),S.appendChild(w),ie(W,()=>{let a=T.run(()=>{h()},void 0);ue(W,a)}),S}}let J={disposeElement:me,render:X};function zn(e){return{TAG:"Text",_0:e}}function Bn(e){return{TAG:"SignalText",_0:R.make(e,void 0)}}function Wn(e){return{TAG:"SignalText",_0:R.make(e,void 0)}}function Hn(e){return{TAG:"SignalText",_0:R.make(()=>e().toString(),void 0)}}function Xn(e){return{TAG:"SignalText",_0:R.make(()=>e().toString(),void 0)}}function Vn(e){return{TAG:"Text",_0:e.toString()}}function Kn(e){return{TAG:"Text",_0:e.toString()}}function Yn(e){return{TAG:"Fragment",_0:e}}function Ne(e){return{TAG:"SignalFragment",_0:e}}function qn(e,t){return{TAG:"SignalFragment",_0:R.make(()=>d.get(e).map(t),void 0)}}function Un(e,t,n){return{TAG:"KeyedList",signal:e,keyFn:t,renderItem:n}}function L(e,t,n,r,l){let i=t!==void 0?t:[].map(f=>f),u=n!==void 0?n:[].map(f=>f),c=r!==void 0?r:[].map(f=>f);return{TAG:"Element",tag:e,attrs:i,events:u,children:c}}function Jn(e,t,n,r){return L("div",e,t,n)}function Qn(e,t,n,r){return L("span",e,t,n)}function Zn(e,t,n,r){return L("button",e,t,n)}function er(e,t,n){return L("input",e,t,void 0)}function tr(e,t,n,r){return L("h1",e,t,n)}function nr(e,t,n,r){return L("h2",e,t,n)}function rr(e,t,n,r){return L("h3",e,t,n)}function lr(e,t,n,r){return L("p",e,t,n)}function ir(e,t,n,r){return L("ul",e,t,n)}function ur(e,t,n,r){return L("li",e,t,n)}function Ge(e,t,n,r){return L("a",e,t,n)}function or(){return{TAG:"Text",_0:""}}function Pt(e,t){let n=X(e);t.appendChild(n)}function dr(e,t){let n=document.getElementById(t);if(n==null){console.error("Container element not found: "+t);return}else return Pt(e,n)}let he=Ot,ze=Dt,Mt=Rt;const cr=Object.freeze(Object.defineProperty({__proto__:null,$$null:or,Attributes:Gn,DOM:pe,Reactivity:s,Render:J,a:Ge,attr:he,button:Zn,computedAttr:Mt,div:Jn,element:L,float:Kn,fragment:Yn,h1:tr,h2:nr,h3:rr,input:er,int:Vn,keyedList:Un,li:ur,list:qn,mount:Pt,mountById:dr,p:lr,reactiveFloat:Xn,reactiveInt:Hn,reactiveString:Wn,signalAttr:ze,signalFragment:Ne,span:Qn,text:zn,textSignal:Bn,ul:ir},Symbol.toStringTag,{value:"Module"}));function ar(){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:d.make({pathname:"/",search:"",hash:""},void 0,void 0),basePath:{contents:"/"},initialized:!1,popStateHandler:void 0};return globalThis[Symbol.for("xote.router.state")]=t,t}function sr(){return N().location}function fr(){return N().basePath}function re(e){if(!N().initialized)return 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.")}function jt(e){if(e===""||e==="/")return"/";let t=e.startsWith("/")?e:"/"+e;return t.endsWith("/")?t.slice(0,t.length-1|0):t}function Ft(e){let t=N().basePath.contents;return t==="/"?e:e===t?"/":e.startsWith(t+"/")?e.slice(t.length):e}function ge(e){let t=N().basePath.contents;return t==="/"?e:e==="/"?t:t+e}function It(){let e=window.scrollX||window.pageXOffset||0,t=window.scrollY||window.pageYOffset||0;return[e,t]}function ve(e,t){window.scrollTo(e,t)}function Lt(e,t){return{scrollX:e,scrollY:t}}function Be(){return{}}function Nt(e){let t=e&&e.scrollX,n=e&&e.scrollY;if(t!=null&&n!=null)return[t,n]}function Gt(){let e=It(),t=Lt(e[0],e[1]),n=window.location.href;window.history.replaceState(t,"",n)}function We(){let e=window.location.pathname;return{pathname:Ft(e),search:window.location.search,hash:window.location.hash}}function pr(e,t){let n=e!==void 0?e:"/",r=N(),l=jt(n);if(r.basePath.contents=l,d.set(r.location,We()),r.initialized)return;let i=u=>{d.set(N().location,We());let c=window["history.state"];if(c==null)return;let f=Nt(c);if(f!==void 0)return ve(f[0],f[1])};r.popStateHandler=i,window.addEventListener("popstate",i),r.initialized=!0}function He(e,t,n,r){let l=t!==void 0?t:"",i=n!==void 0?n:"";re("Router.push()"),Gt();let u={pathname:e,search:l,hash:i},f=ge(e)+l+i;window.history.pushState(Be(),"",f),d.set(N().location,u),ve(0,0)}function mr(e,t,n,r){let l=t!==void 0?t:"",i=n!==void 0?n:"";re("Router.replace()");let u={pathname:e,search:l,hash:i},f=ge(e)+l+i;window.history.replaceState(Be(),"",f),d.set(N().location,u),ve(0,0)}function hr(e,t){return re("Router.route()"),Ne(R.make(()=>{let n=d.get(N().location),r=Ie(e,n.pathname);return typeof r!="object"?[]:[t(r._0)]},void 0))}function gr(e){return re("Router.routes()"),Ne(R.make(()=>{let t=d.get(N().location),n=In(e,r=>{let l=Ie(r.pattern,t.pathname);if(typeof l=="object")return r.render(l._0)});return n!==void 0?[n]:[]},void 0))}function Sr(e,t,n,r){let l=t!==void 0?t:[],i=n!==void 0?n:[];re("Router.link()");let u=c=>{c.preventDefault(),He(e,void 0,void 0)};return Ge(l.concat([he("href",ge(e))]),[["click",u]],i)}function zt(e){return e&&typeof e=="object"&&"TAG"in e&&(e.TAG==="Static"||e.TAG==="Reactive")}function de(e,t){return zt(t)?t.TAG==="Reactive"?ze(e,t._0):he(e,t._0):typeof t=="function"?Mt(e,t):typeof t=="object"?ze(e,t):he(e,t)}function Bt(e){let t=[],n=e.class;n!==void 0&&t.push(de("class",g(n)));let r=e.id;r!==void 0&&t.push(de("id",g(r)));let l=e.style;l!==void 0&&t.push(de("style",g(l)));let i=e.target;i!==void 0&&t.push(de("target",g(i)));let u=e["aria-label"];return u!==void 0&&t.push(de("aria-label",g(u))),t}function Wt(e){let t=e.children;return t!==void 0?t.TAG==="Fragment"?t._0:[t]:[]}function $e(e){re("Router.Link");let t=n=>{n.preventDefault(),He(e.to,void 0,void 0);let r=e.onClick;if(r!==void 0)return r(n)};return Ge(Bt(e).concat([he("href",ge(e.to))]),[["click",t]],Wt(e))}function Ht(e,t,n){return $e(e)}const _r=Object.freeze(Object.defineProperty({__proto__:null,Component:void 0,Link:{ReactiveProp:void 0,isReactiveProp:zt,convertAttrValue:de,propsToAttrs:Bt,getChildren:Wt,make:$e,jsx:$e,jsxs:$e,jsxKeyed:Ht,jsxsKeyed:Ht},Route:void 0,addBasePath:ge,basePath:fr,emptyHistoryState:Be,getCurrentLocation:We,getGlobalState:N,getScrollFromState:Nt,getScrollPosition:It,getSymbolKey:ar,init:pr,link:Sr,location:sr,makeHistoryState:Lt,normalizeBasePath:jt,push:He,replace:mr,route:hr,routes:gr,saveScrollPosition:Gt,scrollTo:ve,stripBasePath:Ft,warnIfNotInitialized:re},Symbol.toStringTag,{value:"Module"}));function yr(e){if(typeof e=="boolean")return e}function br(e){if(e===null)return null}function Er(e){if(typeof e=="string")return e}function wr(e){if(typeof e=="number")return e}function kr(e){if(typeof e=="object"&&e!==null&&!Array.isArray(e))return e}function Tr(e){if(Array.isArray(e))return e}let le={bool:yr,$$null:br,string:Er,float:wr,object:kr,array:Tr},Se=typeof document>"u",Ce=!Se;function vr(e){if(Se)return te(e())}function $r(e){if(Ce)return te(e())}function Xt(e,t){return Se?e():t()}const Cr=Object.freeze(Object.defineProperty({__proto__:null,isClient:Ce,isServer:Se,match:Xt,onClient:$r,onServer:vr},Symbol.toStringTag,{value:"Module"}));function Ar(e){return e}function xr(e){let t=le.float(e);if(t!==void 0)return t|0}let Or={encode:Ar,decode:xr};function Dr(e){return e}function Rr(e){return le.float(e)}let Pr={encode:Dr,decode:Rr};function Mr(e){return e}function jr(e){return le.string(e)}let Fr={encode:Mr,decode:jr};function Ir(e){return e}function Lr(e){return le.bool(e)}let Nr={encode:Ir,decode:Lr};function Gr(e){return{encode:t=>t.map(e.encode),decode:t=>{let n=le.array(t);if(n===void 0)return;let r=vt(n,e.decode);if(r.length===n.length)return r}}}function zr(e){return{encode:t=>t!==void 0?e.encode(g(t)):null,decode:t=>dn(le.$$null(t))?te(void 0):on(e.decode(t),n=>te(n))}}function Br(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),c=t.decode(i);if(u!==void 0&&c!==void 0)return[g(u),g(c)]}}}function Wr(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],c=l[2],f=e.decode(i),b=t.decode(u),F=n.decode(c);if(f!==void 0&&b!==void 0&&F!==void 0)return[g(f),g(b),g(F)]}}}function Hr(e){return{encode:t=>{let n={};return Object.entries(t).forEach(r=>{n[r[0]]=e.encode(r[1])}),n},decode:t=>{let n=le.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]]=g(u):l.contents=!1}),l.contents)return r}}}function Xr(e,t){return{encode:e,decode:t}}let Vr={int:Or,float:Pr,string:Fr,bool:Nr,array:Gr,option:zr,tuple2:Br,tuple3:Wr,dict:Hr,make:Xr},_e={};function Vt(e,t,n){if(Se){_e[e]=n.encode(d.peek(t));return}}function Kr(){Object.keys(_e).forEach(e=>{Le(_e,e)})}function Kt(e){return e.replaceAll("<\/script>","<\\/script>").replaceAll("<!--","<\\!--")}function Yr(e){let t=H(JSON.stringify(_e),"{}"),n=Kt(t);return"<script"+(e!==void 0?' nonce="'+at.escape(e)+'"':"")+">window.__XOTE_STATE__="+n+";<\/script>"}function Yt(){return Ce?window.__XOTE_STATE__||{}:{}}function qt(e,t,n){if(!Ce)return;let l=Yt()[e];if(l===void 0)return;let i=n.decode(l);if(i!==void 0)return d.set(t,g(i))}function Ut(e,t,n){Xt(()=>Vt(e,t,n),()=>qt(e,t,n))}function qr(e,t,n){let r=d.make(t,void 0,void 0);return Ut(e,r,n),r}const Ur=Object.freeze(Object.defineProperty({__proto__:null,Codec:Vr,clear:Kr,escapeForScript:Kt,generateScript:Yr,getClientState:Yt,make:qr,register:Vt,registry:_e,restore:qt,sync:Ut},Symbol.toStringTag,{value:"Module"}));let Xe={};function Jr(e){let t=Xe[e];if(t!==void 0){let n=t+1|0;return Xe[e]=n,e+("/"+n)}return Xe[e]=1,e}function Qr(e){return Array.from(e.childNodes||[])}function ye(e,t){if(e.nodeType!==8)return!1;let n=e.nodeValue;return n==null?!1:n===t}function Ae(e,t){if(e.nodeType!==8)return!1;let n=e.nodeValue;return n==null?!1:n.startsWith(t)}function Ve(e){if(e.nodeType!==8)return;let t=e.nodeValue;if(t!=null&&t.startsWith("k:"))return t.slice(2)}function ce(e){return{current:je(e.firstChild),parent:e}}function Zr(e){return e.current}function j(e){let t=e.current;return t!==void 0&&(e.current=je(g(t).nextSibling)),t}function Q(e,t){return(()=>{for(;;){let r=e.current;if(r===void 0)return;let l=g(r);if(ye(l,t))return j(e),te(l);j(e)}})()}function xe(e,t){let n=[];return(()=>{for(;;){let l=e.current;if(l===void 0)return;let i=g(l);if(ye(i,t)){j(e);return}n.push(i),j(e)}})(),n}let el={elementNode:1,textNode:3,commentNode:8,getChildNodes:Qr,isMarker:ye,isMarkerPrefix:Ae,extractKey:Ve,make:ce,peek:Zr,next:j,skipUntilMarker:Q,collectUntilMarker:xe},tl=Jr("Xote__Hydration.HydrationMismatch");function Ke(e){console.warn("[Xote Hydration] "+e)}function nl(e,t){for(;;){let n=e;switch(n.TAG){case"Element":let r=n.children,l=n.events,i=n.attrs,u=s.createOwner();return s.setOwner(t,u),s.runWithOwner(u,()=>{i.forEach(_=>{let h=_[1],S=_[0];switch(h.TAG){case"Static":return;case"SignalValue":let $=h._0,a=T.run(()=>{pe.setAttrOrProp(t,S,d.get($))},void 0);return s.addDisposer(u,a);case"Compute":let m=h._0,E=T.run(()=>{pe.setAttrOrProp(t,S,m())},void 0);return s.addDisposer(u,E)}}),l.forEach(_=>{t.addEventListener(_[0],_[1])});let w=ce(t);r.forEach(_=>Z(_,w))});case"Text":return;case"SignalText":let c=n._0,f=s.createOwner();return s.setOwner(t,f),s.runWithOwner(f,()=>{let w=T.run(()=>{t.textContent=d.get(c)},void 0);s.addDisposer(f,w)});case"Fragment":let b=ce(t);n._0.forEach(w=>Z(w,b));return;case"SignalFragment":let F=n._0,D=s.createOwner();return s.setOwner(t,D),s.runWithOwner(D,()=>{let w=T.run(()=>{let _=d.get(F);Array.from(t.childNodes||[]).forEach(S=>s.disposeOwner(H(s.getOwner(S),s.createOwner()))),t.innerHTML="",_.forEach(S=>{let $=J.render(S);t.appendChild($)})},void 0);s.addDisposer(D,w)});case"LazyComponent":let O=s.createOwner(),z=s.runWithOwner(O,n._0);s.setOwner(t,O),e=z;continue;case"KeyedList":let v=n.renderItem,B=n.keyFn,I=n.signal,G=s.createOwner();s.setOwner(t,G);let P={},W=ce(t);return Q(W,"kl"),(()=>{for(;;){let w=W.current;if(w===void 0)return;let _=g(w);if(!Ae(_,"k:"))if(ye(_,"/kl")){j(W);return}else return;let h=H(Ve(_),"");j(W);let $=xe(W,"/k").find(a=>a.nodeType===1);if($!==void 0){let a=d.peek(I),m=H(a.find(E=>B(E)===h),{});P[h]={key:h,item:m,element:g($)}}}})(),s.runWithOwner(G,()=>{let w=document.createComment(" keyed-list-start "),_=document.createComment(" keyed-list-end "),h=t.firstChild;h==null?t.appendChild(w):t.insertBefore(w,h),t.appendChild(_);let S=()=>{let a=d.get(I),m={};a.forEach(p=>{m[B(p)]=p});let E=[];Object.keys(P).forEach(p=>{if(m[p]===void 0){E.push(p);return}}),E.forEach(p=>{let o=P[p];if(o!==void 0){J.disposeElement(o.element),o.element.remove(),Le(P,p);return}});let k=[],C={};a.forEach(p=>{let o=B(p),y=P[o];if(y!==void 0){if(y.item!==p){C[o]=!0;let De=v(p),qe=J.render(De),Re={key:o,item:p,element:qe};k.push(Re),P[o]=Re;return}k.push(y);return}let se=v(p),Ye=J.render(se),Oe={key:o,item:p,element:Ye};k.push(Oe),P[o]=Oe});let V={contents:w.nextSibling};k.forEach(p=>{let o=V.contents;if(o==null){t.insertBefore(p.element,_);return}if(o===_){t.insertBefore(p.element,_);return}if(o===p.element){V.contents=o.nextSibling;return}H(C[p.key],!1)?(J.disposeElement(o),t.replaceChild(p.element,o),V.contents=p.element.nextSibling):(t.insertBefore(p.element,o),V.contents=p.element.nextSibling)})},$=T.run(()=>{S()},void 0);s.addDisposer(G,$)})}}}function Z(e,t){switch(e.TAG){case"Element":let n=e.children,r=e.events,l=e.attrs,i=j(t);if(i===void 0)return Ke("Missing DOM element for Element node");let u=g(i),c=s.createOwner();return s.setOwner(u,c),s.runWithOwner(c,()=>{l.forEach(S=>{let $=S[1],a=S[0];switch($.TAG){case"Static":return;case"SignalValue":let m=$._0,E=T.run(()=>{pe.setAttrOrProp(u,a,d.get(m))},void 0);return s.addDisposer(c,E);case"Compute":let k=$._0,C=T.run(()=>{pe.setAttrOrProp(u,a,k())},void 0);return s.addDisposer(c,C)}}),r.forEach(S=>{u.addEventListener(S[0],S[1])});let h=ce(u);n.forEach(S=>Z(S,h))});case"Text":j(t);return;case"SignalText":let f=e._0;Q(t,"$");let b=j(t);if(b===void 0)return Ke("Missing text node for SignalText");let F=g(b),D=s.createOwner();s.setOwner(F,D),s.runWithOwner(D,()=>{let h=T.run(()=>{F.textContent=d.get(f)},void 0);s.addDisposer(D,h)}),Q(t,"/$");return;case"Fragment":e._0.forEach(h=>Z(h,t));return;case"SignalFragment":let O=e._0;Q(t,"#");let z=xe(t,"/#"),v=document.createElement("div");v.setAttribute("style","display: contents");let B=z[0],I=B!==void 0?B.parentNode:void 0;z.forEach(h=>{v.appendChild(h)});let G=t.current;if(I!==void 0){let h=g(I);G!==void 0?h.insertBefore(v,g(G)):h.appendChild(v)}let P=s.createOwner();return s.setOwner(v,P),s.runWithOwner(P,()=>{let h=T.run(()=>{let S=d.get(O);Array.from(v.childNodes||[]).forEach(J.disposeElement),v.innerHTML="",S.forEach(a=>{let m=J.render(a);v.appendChild(m)})},void 0);s.addDisposer(P,h)});case"LazyComponent":Q(t,"lc");let W=e._0();Z(W,t),Q(t,"/lc");return;case"KeyedList":let ae=e.keyFn,w=e.signal;return Q(t,"kl"),(()=>{for(;;){let h=t.current;if(h===void 0)return;let S=g(h);if(!Ae(S,"k:"))if(ye(S,"/kl")){j(t);return}else return;let $=H(Ve(S),"");j(t);let m=xe(t,"/k").find(E=>E.nodeType===1);if(m!==void 0){let E=d.peek(w),k=H(E.find(C=>ae(C)===$),{});g(m)}}})()}}function Jt(e,t,n){let r=n!==void 0?n:{},l=e(),i=ce(t),u=i.current;u!==void 0&&Ae(g(u),"xote-root:")&&j(i),Z(l,i),window.__XOTE_HYDRATED__=!0;let c=r.onHydrated;if(c!==void 0)return c()}function rl(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 Jt(e,l,r)}const ll=Object.freeze(Object.defineProperty({__proto__:null,Component:void 0,DOM:void 0,DOMWalker:el,HydrationMismatch:tl,Reactivity:void 0,hydrate:Jt,hydrateById:rl,hydrateNode:nl,hydrateNodeWithWalker:Z,logHydrationWarning:Ke},Symbol.toStringTag,{value:"Module"}));function il(e){return e.TAG==="Reactive"?d.get(e._0):e._0}function ul(e){return{TAG:"Static",_0:e}}function ol(e){return{TAG:"Reactive",_0:e}}const dl=Object.freeze(Object.defineProperty({__proto__:null,$$static:ul,get:il,reactive:ol},Symbol.toStringTag,{value:"Module"}));let cl=d.Id,al=d.Scheduler,sl=d.Core,fl=d.make,pl=d.makeForComputed,ml=d.get,hl=d.peek,gl=d.set,Sl=d.update,_l=d.batch,yl=d.untrack,bl={Id:cl,Scheduler:al,Core:sl,make:fl,makeForComputed:pl,get:ml,peek:hl,set:gl,update:Sl,batch:_l,untrack:yl},El=R.Id,wl=R.Signal,kl=R.Core,Tl=R.Scheduler,vl=R.make,$l=R.dispose,Cl={Id:El,Signal:wl,Core:kl,Scheduler:Tl,make:vl,dispose:$l},Al=T.Id,xl=T.Core,Ol=T.Scheduler,Dl=T.run,Rl={Id:Al,Core:xl,Scheduler:Ol,run:Dl},Pl=cr,Ml=Ln,jl=_r,Fl=dl,Il=Fn,Ll=Cr,Nl=Ur,Gl=ll;A.Component=Pl,A.Computed=Cl,A.Effect=Rl,A.Hydration=Gl,A.ReactiveProp=Fl,A.Route=Ml,A.Router=jl,A.SSR=Il,A.SSRContext=Ll,A.SSRState=Nl,A.Signal=bl,Object.defineProperty(A,Symbol.toStringTag,{value:"Module"})}));
|
|
17
|
+
</html>`}const Fn=Object.freeze(Object.defineProperty({__proto__:null,Attributes:Rn,Component:void 0,Html:st,Markers:Pn,generateHydrationScript:vt,renderDocument:jn,renderNodeToString:U,renderToString:Tt,renderToStringWithRoot:Mn},Symbol.toStringTag,{value:"Module"}));function $t(e,t){let n=e.length,r=new Array(n),l=0;for(let i=0;i<n;++i){let u=e[i],d=t(u);d!==void 0&&(r[l]=g(d),l=l+1|0)}return r.length=l,r}function In(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 Ct(e){return $t(e.split("/"),t=>{if(t!=="")return t.startsWith(":")?{TAG:"Param",_0:t.slice(1)}:{TAG:"Static",_0:t}})}function At(e,t){let n=t.split("/").filter(i=>i!=="");if(e.length!==n.length)return"NoMatch";let r={};return e.every((i,u)=>{let d=n[u];return i.TAG==="Static"?d===i._0:(r[i._0]=d,!0)})?{TAG:"Match",_0:r}:"NoMatch"}function Ie(e,t){return At(Ct(e),t)}const Ln=Object.freeze(Object.defineProperty({__proto__:null,match:Ie,matchPath:At,parsePattern:Ct},Symbol.toStringTag,{value:"Module"}));function Le(e,t){delete e[t]}function fe(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 pe={setAttrOrProp:fe},Te={contents:void 0};function Nn(){return{disposers:[],computeds:[]}}function ie(e,t){let n=Te.contents;Te.contents=e;let r=t();return Te.contents=n,r}function ue(e,t){e.disposers.push(t)}function xt(e){e.disposers.forEach(t=>t.dispose()),e.computeds.forEach(t=>R.dispose(t))}function oe(e,t){e.__xote_owner__=t}function Dt(e){return je(e.__xote_owner__)}let s={currentOwner:Te,createOwner:Nn,runWithOwner:ie,addDisposer:ue,disposeOwner:xt,setOwner:oe,getOwner:Dt};function Ot(e,t){return[e,{TAG:"Static",_0:t}]}function Pt(e,t){return[e,{TAG:"SignalValue",_0:t}]}function Rt(e,t){return[e,{TAG:"Compute",_0:t}]}let Gn={$$static:Ot,signal:Pt,computed:Rt};function me(e){let t=Dt(e);t!==void 0&&xt(t),Array.from(e.childNodes||[]).forEach(me)}function X(e){switch(e.TAG){case"Element":let t=e.children,n=e.events,r=e.attrs,l=document.createElement(e.tag),i={disposers:[],computeds:[]};return oe(l,i),ie(i,()=>{r.forEach(c=>{let m=c[1],E=c[0];switch(m.TAG){case"Static":return fe(l,E,m._0);case"SignalValue":let k=m._0;fe(l,E,o.peek(k));let C=T.run(()=>{fe(l,E,o.get(k))},void 0);return ue(i,C);case"Compute":let V=m._0,p=T.run(()=>{fe(l,E,V())},void 0);return ue(i,p)}}),n.forEach(c=>{l.addEventListener(c[0],c[1])}),t.forEach(c=>{let m=X(c);l.appendChild(m)})}),l;case"Text":return document.createTextNode(e._0);case"SignalText":let u=e._0,d=document.createTextNode(o.peek(u)),f={disposers:[],computeds:[]};return oe(d,f),ie(f,()=>{let c=T.run(()=>{d.textContent=o.get(u)},void 0);ue(f,c)}),d;case"Fragment":let _=document.createDocumentFragment();return e._0.forEach(c=>{let m=X(c);_.appendChild(m)}),_;case"SignalFragment":let O=e._0,P={disposers:[],computeds:[]},D=document.createElement("div");return D.setAttribute("style","display: contents"),oe(D,P),ie(P,()=>{let c=T.run(()=>{let m=o.get(O);Array.from(D.childNodes||[]).forEach(me),D.innerHTML="",m.forEach(k=>{let C=X(k);D.appendChild(C)})},void 0);ue(P,c)}),D;case"LazyComponent":let z={disposers:[],computeds:[]},v=ie(z,e._0),B=X(v);return oe(B,z),B;case"KeyedList":let L=e.renderItem,G=e.keyFn,M=e.signal,W={disposers:[],computeds:[]},ce=document.createComment(" keyed-list-start "),w=document.createComment(" keyed-list-end ");oe(ce,W);let y={},h=()=>{let c=w.parentNode;if(c==null)return;let m=o.get(M),E={};m.forEach(a=>{E[G(a)]=a});let k=[];Object.keys(y).forEach(a=>{if(E[a]===void 0){k.push(a);return}}),k.forEach(a=>{let b=y[a];if(b!==void 0){me(b.element),b.element.remove(),Le(y,a);return}});let C=[],V={};m.forEach(a=>{let b=G(a),se=y[b];if(se!==void 0){if(se.item!==a){V[b]=!0;let Ue=L(a),Pe=X(Ue),Qt={key:b,item:a,element:Pe};C.push(Qt),y[b]=Qt;return}C.push(se);return}let qe=L(a),De=X(qe),Oe={key:b,item:a,element:De};C.push(Oe),y[b]=Oe});let p={contents:ce.nextSibling};C.forEach(a=>{let b=p.contents;if(b==null){c.insertBefore(a.element,w);return}if(b===w){c.insertBefore(a.element,w);return}if(b===a.element){p.contents=b.nextSibling;return}H(V[a.key],!1)?(me(b),c.replaceChild(a.element,b),p.contents=a.element.nextSibling):(c.insertBefore(a.element,b),p.contents=a.element.nextSibling)})},S=document.createDocumentFragment();return S.appendChild(ce),o.peek(M).forEach(c=>{let m=G(c),E=L(c),k=X(E),C={key:m,item:c,element:k};y[m]=C,S.appendChild(k)}),S.appendChild(w),ie(W,()=>{let c=T.run(()=>{h()},void 0);ue(W,c)}),S}}let J={disposeElement:me,render:X};function zn(e){return{TAG:"Text",_0:e}}function Bn(e){return{TAG:"SignalText",_0:R.make(e,void 0)}}function Wn(e){return{TAG:"SignalText",_0:R.make(e,void 0)}}function Hn(e){return{TAG:"SignalText",_0:R.make(()=>e().toString(),void 0)}}function Xn(e){return{TAG:"SignalText",_0:R.make(()=>e().toString(),void 0)}}function Vn(e){return{TAG:"Text",_0:e.toString()}}function Kn(e){return{TAG:"Text",_0:e.toString()}}function Yn(e){return{TAG:"Fragment",_0:e}}function Ne(e){return{TAG:"SignalFragment",_0:e}}function qn(e,t){return{TAG:"SignalFragment",_0:R.make(()=>o.get(e).map(t),void 0)}}function Un(e,t,n){return{TAG:"KeyedList",signal:e,keyFn:t,renderItem:n}}function N(e,t,n,r,l){let i=t!==void 0?t:[].map(f=>f),u=n!==void 0?n:[].map(f=>f),d=r!==void 0?r:[].map(f=>f);return{TAG:"Element",tag:e,attrs:i,events:u,children:d}}function Jn(e,t,n,r){return N("div",e,t,n)}function Qn(e,t,n,r){return N("span",e,t,n)}function Zn(e,t,n,r){return N("button",e,t,n)}function er(e,t,n){return N("input",e,t,void 0)}function tr(e,t,n,r){return N("h1",e,t,n)}function nr(e,t,n,r){return N("h2",e,t,n)}function rr(e,t,n,r){return N("h3",e,t,n)}function lr(e,t,n,r){return N("p",e,t,n)}function ir(e,t,n,r){return N("ul",e,t,n)}function ur(e,t,n,r){return N("li",e,t,n)}function Ge(e,t,n,r){return N("a",e,t,n)}function or(){return{TAG:"Text",_0:""}}function Mt(e,t){let n=X(e);t.appendChild(n)}function dr(e,t){let n=document.getElementById(t);if(n==null){console.error("Container element not found: "+t);return}else return Mt(e,n)}let he=Ot,ze=Pt,jt=Rt;const ar=Object.freeze(Object.defineProperty({__proto__:null,$$null:or,Attributes:Gn,DOM:pe,Reactivity:s,Render:J,a:Ge,attr:he,button:Zn,computedAttr:jt,div:Jn,element:N,float:Kn,fragment:Yn,h1:tr,h2:nr,h3:rr,input:er,int:Vn,keyedList:Un,li:ur,list:qn,mount:Mt,mountById:dr,p:lr,reactiveFloat:Xn,reactiveInt:Hn,reactiveString:Wn,signalAttr:ze,signalFragment:Ne,span:Qn,text:zn,textSignal:Bn,ul:ir},Symbol.toStringTag,{value:"Module"}));function cr(){return Symbol.for("xote.router.state")}function F(){let e=globalThis[Symbol.for("xote.router.state")];if(e!==void 0)return e;let t={location:o.make({pathname:"/",search:"",hash:""},void 0,void 0),basePath:{contents:"/"},initialized:!1,popStateHandler:void 0};return globalThis[Symbol.for("xote.router.state")]=t,t}function sr(){return F().location}function fr(){return F().basePath}function re(e){if(!F().initialized)return 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.")}function Be(e){if(e===""||e==="/")return"/";let t=e.startsWith("/")?e:"/"+e;return t.endsWith("/")?t.slice(0,t.length-1|0):t}function Ft(e){let t=F().basePath.contents;return t==="/"?e:e===t?"/":e.startsWith(t+"/")?e.slice(t.length):e}function ge(e){let t=F().basePath.contents;return t==="/"?e:e==="/"?t:t+e}function It(){let e=window.scrollX||window.pageXOffset||0,t=window.scrollY||window.pageYOffset||0;return[e,t]}function ve(e,t){window.scrollTo(e,t)}function Lt(e,t){return{scrollX:e,scrollY:t}}function We(){return{}}function Nt(e){let t=e&&e.scrollX,n=e&&e.scrollY;if(t!=null&&n!=null)return[t,n]}function Gt(){let e=It(),t=Lt(e[0],e[1]),n=window.location.href;window.history.replaceState(t,"",n)}function He(){let e=window.location.pathname;return{pathname:Ft(e),search:window.location.search,hash:window.location.hash}}function pr(e,t){let n=e!==void 0?e:"/",r=F(),l=Be(n);if(r.basePath.contents=l,o.set(r.location,He()),r.initialized)return;let i=u=>{o.set(F().location,He());let d=window["history.state"];if(d==null)return;let f=Nt(d);if(f!==void 0)return ve(f[0],f[1])};r.popStateHandler=i,window.addEventListener("popstate",i),r.initialized=!0}function mr(e,t,n,r,l){let i=e!==void 0?e:"/",u=t!==void 0?t:"/",d=n!==void 0?n:"",f=r!==void 0?r:"",_=F(),O=Be(i);_.basePath.contents=O,o.set(_.location,{pathname:u,search:d,hash:f}),_.initialized=!0}function Xe(e,t,n,r){let l=t!==void 0?t:"",i=n!==void 0?n:"";re("Router.push()"),Gt();let u={pathname:e,search:l,hash:i},f=ge(e)+l+i;window.history.pushState(We(),"",f),o.set(F().location,u),ve(0,0)}function hr(e,t,n,r){let l=t!==void 0?t:"",i=n!==void 0?n:"";re("Router.replace()");let u={pathname:e,search:l,hash:i},f=ge(e)+l+i;window.history.replaceState(We(),"",f),o.set(F().location,u),ve(0,0)}function gr(e,t){return re("Router.route()"),Ne(R.make(()=>{let n=o.get(F().location),r=Ie(e,n.pathname);return typeof r!="object"?[]:[t(r._0)]},void 0))}function Sr(e){return re("Router.routes()"),Ne(R.make(()=>{let t=o.get(F().location),n=In(e,r=>{let l=Ie(r.pattern,t.pathname);if(typeof l=="object")return r.render(l._0)});return n!==void 0?[n]:[]},void 0))}function _r(e,t,n,r){let l=t!==void 0?t:[],i=n!==void 0?n:[];re("Router.link()");let u=d=>{d.preventDefault(),Xe(e,void 0,void 0)};return Ge(l.concat([he("href",ge(e))]),[["click",u]],i)}function zt(e){return e&&typeof e=="object"&&"TAG"in e&&(e.TAG==="Static"||e.TAG==="Reactive")}function de(e,t){return zt(t)?t.TAG==="Reactive"?ze(e,t._0):he(e,t._0):typeof t=="function"?jt(e,t):typeof t=="object"?ze(e,t):he(e,t)}function Bt(e){let t=[],n=e.class;n!==void 0&&t.push(de("class",g(n)));let r=e.id;r!==void 0&&t.push(de("id",g(r)));let l=e.style;l!==void 0&&t.push(de("style",g(l)));let i=e.target;i!==void 0&&t.push(de("target",g(i)));let u=e["aria-label"];return u!==void 0&&t.push(de("aria-label",g(u))),t}function Wt(e){let t=e.children;return t!==void 0?t.TAG==="Fragment"?t._0:[t]:[]}function $e(e){re("Router.Link");let t=n=>{n.preventDefault(),Xe(e.to,void 0,void 0);let r=e.onClick;if(r!==void 0)return r(n)};return Ge(Bt(e).concat([he("href",ge(e.to))]),[["click",t]],Wt(e))}function Ht(e,t,n){return $e(e)}const yr=Object.freeze(Object.defineProperty({__proto__:null,Component:void 0,Link:{ReactiveProp:void 0,isReactiveProp:zt,convertAttrValue:de,propsToAttrs:Bt,getChildren:Wt,make:$e,jsx:$e,jsxs:$e,jsxKeyed:Ht,jsxsKeyed:Ht},Route:void 0,addBasePath:ge,basePath:fr,emptyHistoryState:We,getCurrentLocation:He,getGlobalState:F,getScrollFromState:Nt,getScrollPosition:It,getSymbolKey:cr,init:pr,initSSR:mr,link:_r,location:sr,makeHistoryState:Lt,normalizeBasePath:Be,push:Xe,replace:hr,route:gr,routes:Sr,saveScrollPosition:Gt,scrollTo:ve,stripBasePath:Ft,warnIfNotInitialized:re},Symbol.toStringTag,{value:"Module"}));function br(e){if(typeof e=="boolean")return e}function Er(e){if(e===null)return null}function wr(e){if(typeof e=="string")return e}function kr(e){if(typeof e=="number")return e}function Tr(e){if(typeof e=="object"&&e!==null&&!Array.isArray(e))return e}function vr(e){if(Array.isArray(e))return e}let le={bool:br,$$null:Er,string:wr,float:kr,object:Tr,array:vr},Se=typeof document>"u",Ce=!Se;function $r(e){if(Se)return te(e())}function Cr(e){if(Ce)return te(e())}function Xt(e,t){return Se?e():t()}const Ar=Object.freeze(Object.defineProperty({__proto__:null,isClient:Ce,isServer:Se,match:Xt,onClient:Cr,onServer:$r},Symbol.toStringTag,{value:"Module"}));function xr(e){return e}function Dr(e){let t=le.float(e);if(t!==void 0)return t|0}let Or={encode:xr,decode:Dr};function Pr(e){return e}function Rr(e){return le.float(e)}let Mr={encode:Pr,decode:Rr};function jr(e){return e}function Fr(e){return le.string(e)}let Ir={encode:jr,decode:Fr};function Lr(e){return e}function Nr(e){return le.bool(e)}let Gr={encode:Lr,decode:Nr};function zr(e){return{encode:t=>t.map(e.encode),decode:t=>{let n=le.array(t);if(n===void 0)return;let r=$t(n,e.decode);if(r.length===n.length)return r}}}function Br(e){return{encode:t=>t!==void 0?e.encode(g(t)):null,decode:t=>dn(le.$$null(t))?te(void 0):on(e.decode(t),n=>te(n))}}function Wr(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),d=t.decode(i);if(u!==void 0&&d!==void 0)return[g(u),g(d)]}}}function Hr(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],d=l[2],f=e.decode(i),_=t.decode(u),O=n.decode(d);if(f!==void 0&&_!==void 0&&O!==void 0)return[g(f),g(_),g(O)]}}}function Xr(e){return{encode:t=>{let n={};return Object.entries(t).forEach(r=>{n[r[0]]=e.encode(r[1])}),n},decode:t=>{let n=le.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]]=g(u):l.contents=!1}),l.contents)return r}}}function Vr(e,t){return{encode:e,decode:t}}let Kr={int:Or,float:Mr,string:Ir,bool:Gr,array:zr,option:Br,tuple2:Wr,tuple3:Hr,dict:Xr,make:Vr},_e={};function Vt(e,t,n){if(Se){_e[e]=n.encode(o.peek(t));return}}function Yr(){Object.keys(_e).forEach(e=>{Le(_e,e)})}function Kt(e){return e.replaceAll("<\/script>","<\\/script>").replaceAll("<!--","<\\!--")}function qr(e){let t=H(JSON.stringify(_e),"{}"),n=Kt(t);return"<script"+(e!==void 0?' nonce="'+st.escape(e)+'"':"")+">window.__XOTE_STATE__="+n+";<\/script>"}function Yt(){return Ce?window.__XOTE_STATE__||{}:{}}function qt(e,t,n){if(!Ce)return;let l=Yt()[e];if(l===void 0)return;let i=n.decode(l);if(i!==void 0)return o.set(t,g(i))}function Ut(e,t,n){Xt(()=>Vt(e,t,n),()=>qt(e,t,n))}function Ur(e,t,n){let r=o.make(t,void 0,void 0);return Ut(e,r,n),r}const Jr=Object.freeze(Object.defineProperty({__proto__:null,Codec:Kr,clear:Yr,escapeForScript:Kt,generateScript:qr,getClientState:Yt,make:Ur,register:Vt,registry:_e,restore:qt,sync:Ut},Symbol.toStringTag,{value:"Module"}));let Ve={};function Qr(e){let t=Ve[e];if(t!==void 0){let n=t+1|0;return Ve[e]=n,e+("/"+n)}return Ve[e]=1,e}function Zr(e){return Array.from(e.childNodes||[])}function ye(e,t){if(e.nodeType!==8)return!1;let n=e.nodeValue;return n==null?!1:n===t}function Ae(e,t){if(e.nodeType!==8)return!1;let n=e.nodeValue;return n==null?!1:n.startsWith(t)}function Ke(e){if(e.nodeType!==8)return;let t=e.nodeValue;if(t!=null&&t.startsWith("k:"))return t.slice(2)}function ae(e){return{current:je(e.firstChild),parent:e}}function el(e){return e.current}function I(e){let t=e.current;return t!==void 0&&(e.current=je(g(t).nextSibling)),t}function Q(e,t){return(()=>{for(;;){let r=e.current;if(r===void 0)return;let l=g(r);if(ye(l,t))return I(e),te(l);I(e)}})()}function xe(e,t){let n=[];return(()=>{for(;;){let l=e.current;if(l===void 0)return;let i=g(l);if(ye(i,t)){I(e);return}n.push(i),I(e)}})(),n}let tl={elementNode:1,textNode:3,commentNode:8,getChildNodes:Zr,isMarker:ye,isMarkerPrefix:Ae,extractKey:Ke,make:ae,peek:el,next:I,skipUntilMarker:Q,collectUntilMarker:xe},nl=Qr("Xote__Hydration.HydrationMismatch");function Ye(e){console.warn("[Xote Hydration] "+e)}function rl(e,t){for(;;){let n=e;switch(n.TAG){case"Element":let r=n.children,l=n.events,i=n.attrs,u=s.createOwner();return s.setOwner(t,u),s.runWithOwner(u,()=>{i.forEach(y=>{let h=y[1],S=y[0];switch(h.TAG){case"Static":return;case"SignalValue":let $=h._0,c=T.run(()=>{pe.setAttrOrProp(t,S,o.get($))},void 0);return s.addDisposer(u,c);case"Compute":let m=h._0,E=T.run(()=>{pe.setAttrOrProp(t,S,m())},void 0);return s.addDisposer(u,E)}}),l.forEach(y=>{t.addEventListener(y[0],y[1])});let w=ae(t);r.forEach(y=>Z(y,w))});case"Text":return;case"SignalText":let d=n._0,f=s.createOwner();return s.setOwner(t,f),s.runWithOwner(f,()=>{let w=T.run(()=>{t.textContent=o.get(d)},void 0);s.addDisposer(f,w)});case"Fragment":let _=ae(t);n._0.forEach(w=>Z(w,_));return;case"SignalFragment":let O=n._0,P=s.createOwner();return s.setOwner(t,P),s.runWithOwner(P,()=>{let w=T.run(()=>{let y=o.get(O);Array.from(t.childNodes||[]).forEach(S=>s.disposeOwner(H(s.getOwner(S),s.createOwner()))),t.innerHTML="",y.forEach(S=>{let $=J.render(S);t.appendChild($)})},void 0);s.addDisposer(P,w)});case"LazyComponent":let D=s.createOwner(),z=s.runWithOwner(D,n._0);s.setOwner(t,D),e=z;continue;case"KeyedList":let v=n.renderItem,B=n.keyFn,L=n.signal,G=s.createOwner();s.setOwner(t,G);let M={},W=ae(t);return Q(W,"kl"),(()=>{for(;;){let w=W.current;if(w===void 0)return;let y=g(w);if(!Ae(y,"k:"))if(ye(y,"/kl")){I(W);return}else return;let h=H(Ke(y),"");I(W);let $=xe(W,"/k").find(c=>c.nodeType===1);if($!==void 0){let c=o.peek(L),m=H(c.find(E=>B(E)===h),{});M[h]={key:h,item:m,element:g($)}}}})(),s.runWithOwner(G,()=>{let w=document.createComment(" keyed-list-start "),y=document.createComment(" keyed-list-end "),h=t.firstChild;h==null?t.appendChild(w):t.insertBefore(w,h),t.appendChild(y);let S=()=>{let c=o.get(L),m={};c.forEach(p=>{m[B(p)]=p});let E=[];Object.keys(M).forEach(p=>{if(m[p]===void 0){E.push(p);return}}),E.forEach(p=>{let a=M[p];if(a!==void 0){J.disposeElement(a.element),a.element.remove(),Le(M,p);return}});let k=[],C={};c.forEach(p=>{let a=B(p),b=M[a];if(b!==void 0){if(b.item!==p){C[a]=!0;let Oe=v(p),Ue=J.render(Oe),Pe={key:a,item:p,element:Ue};k.push(Pe),M[a]=Pe;return}k.push(b);return}let se=v(p),qe=J.render(se),De={key:a,item:p,element:qe};k.push(De),M[a]=De});let V={contents:w.nextSibling};k.forEach(p=>{let a=V.contents;if(a==null){t.insertBefore(p.element,y);return}if(a===y){t.insertBefore(p.element,y);return}if(a===p.element){V.contents=a.nextSibling;return}H(C[p.key],!1)?(J.disposeElement(a),t.replaceChild(p.element,a),V.contents=p.element.nextSibling):(t.insertBefore(p.element,a),V.contents=p.element.nextSibling)})},$=T.run(()=>{S()},void 0);s.addDisposer(G,$)})}}}function Z(e,t){switch(e.TAG){case"Element":let n=e.children,r=e.events,l=e.attrs,i=I(t);if(i===void 0)return Ye("Missing DOM element for Element node");let u=g(i),d=s.createOwner();return s.setOwner(u,d),s.runWithOwner(d,()=>{l.forEach(S=>{let $=S[1],c=S[0];switch($.TAG){case"Static":return;case"SignalValue":let m=$._0,E=T.run(()=>{pe.setAttrOrProp(u,c,o.get(m))},void 0);return s.addDisposer(d,E);case"Compute":let k=$._0,C=T.run(()=>{pe.setAttrOrProp(u,c,k())},void 0);return s.addDisposer(d,C)}}),r.forEach(S=>{u.addEventListener(S[0],S[1])});let h=ae(u);n.forEach(S=>Z(S,h))});case"Text":I(t);return;case"SignalText":let f=e._0;Q(t,"$");let _=I(t);if(_===void 0)return Ye("Missing text node for SignalText");let O=g(_),P=s.createOwner();s.setOwner(O,P),s.runWithOwner(P,()=>{let h=T.run(()=>{O.textContent=o.get(f)},void 0);s.addDisposer(P,h)}),Q(t,"/$");return;case"Fragment":e._0.forEach(h=>Z(h,t));return;case"SignalFragment":let D=e._0;Q(t,"#");let z=xe(t,"/#"),v=document.createElement("div");v.setAttribute("style","display: contents");let B=z[0],L=B!==void 0?B.parentNode:void 0;z.forEach(h=>{v.appendChild(h)});let G=t.current;if(L!==void 0){let h=g(L);G!==void 0?h.insertBefore(v,g(G)):h.appendChild(v)}let M=s.createOwner();return s.setOwner(v,M),s.runWithOwner(M,()=>{let h=T.run(()=>{let S=o.get(D);Array.from(v.childNodes||[]).forEach(J.disposeElement),v.innerHTML="",S.forEach(c=>{let m=J.render(c);v.appendChild(m)})},void 0);s.addDisposer(M,h)});case"LazyComponent":Q(t,"lc");let W=e._0();Z(W,t),Q(t,"/lc");return;case"KeyedList":let ce=e.keyFn,w=e.signal;return Q(t,"kl"),(()=>{for(;;){let h=t.current;if(h===void 0)return;let S=g(h);if(!Ae(S,"k:"))if(ye(S,"/kl")){I(t);return}else return;let $=H(Ke(S),"");I(t);let m=xe(t,"/k").find(E=>E.nodeType===1);if(m!==void 0){let E=o.peek(w),k=H(E.find(C=>ce(C)===$),{});g(m)}}})()}}function Jt(e,t,n){let r=n!==void 0?n:{},l=e(),i=ae(t),u=i.current;u!==void 0&&Ae(g(u),"xote-root:")&&I(i),Z(l,i),window.__XOTE_HYDRATED__=!0;let d=r.onHydrated;if(d!==void 0)return d()}function ll(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 Jt(e,l,r)}const il=Object.freeze(Object.defineProperty({__proto__:null,Component:void 0,DOM:void 0,DOMWalker:tl,HydrationMismatch:nl,Reactivity:void 0,hydrate:Jt,hydrateById:ll,hydrateNode:rl,hydrateNodeWithWalker:Z,logHydrationWarning:Ye},Symbol.toStringTag,{value:"Module"}));function ul(e){return e.TAG==="Reactive"?o.get(e._0):e._0}function ol(e){return{TAG:"Static",_0:e}}function dl(e){return{TAG:"Reactive",_0:e}}const al=Object.freeze(Object.defineProperty({__proto__:null,$$static:ol,get:ul,reactive:dl},Symbol.toStringTag,{value:"Module"}));let cl=o.Id,sl=o.Scheduler,fl=o.Core,pl=o.make,ml=o.makeForComputed,hl=o.get,gl=o.peek,Sl=o.set,_l=o.update,yl=o.batch,bl=o.untrack,El={Id:cl,Scheduler:sl,Core:fl,make:pl,makeForComputed:ml,get:hl,peek:gl,set:Sl,update:_l,batch:yl,untrack:bl},wl=R.Id,kl=R.Signal,Tl=R.Core,vl=R.Scheduler,$l=R.make,Cl=R.dispose,Al={Id:wl,Signal:kl,Core:Tl,Scheduler:vl,make:$l,dispose:Cl},xl=T.Id,Dl=T.Core,Ol=T.Scheduler,Pl=T.run,Rl={Id:xl,Core:Dl,Scheduler:Ol,run:Pl},Ml=ar,jl=Ln,Fl=yr,Il=al,Ll=Fn,Nl=Ar,Gl=Jr,zl=il;A.Component=Ml,A.Computed=Al,A.Effect=Rl,A.Hydration=zl,A.ReactiveProp=Il,A.Route=jl,A.Router=Fl,A.SSR=Ll,A.SSRContext=Nl,A.SSRState=Gl,A.Signal=El,Object.defineProperty(A,Symbol.toStringTag,{value:"Module"})}));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xote",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.16.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"url": "https://github.com/brnrdog/xote"
|
|
6
6
|
},
|
|
@@ -21,12 +21,9 @@
|
|
|
21
21
|
"dev": "vite",
|
|
22
22
|
"build": "vite build",
|
|
23
23
|
"preview": "vite preview",
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"docs:start": "npm run prepare:demos && cd docs-website && npm start",
|
|
28
|
-
"docs:build": "npm run prepare:demos && cd docs-website && npm run build",
|
|
29
|
-
"docs:serve": "cd docs-website && npm run serve",
|
|
24
|
+
"docs:start": "cd docs-website && npm run dev",
|
|
25
|
+
"docs:build": "cd docs-website && npm run build",
|
|
26
|
+
"docs:serve": "cd docs-website && npm run preview",
|
|
30
27
|
"test": "npx rescript && node tests/Tests.res.mjs"
|
|
31
28
|
},
|
|
32
29
|
"keywords": [
|
package/rescript.json
CHANGED
package/src/Xote__JSX.res
CHANGED
|
@@ -9,8 +9,12 @@ type component<'props> = 'props => element
|
|
|
9
9
|
|
|
10
10
|
type componentLike<'props, 'return> = 'props => 'return
|
|
11
11
|
|
|
12
|
-
/* JSX functions for component creation -
|
|
13
|
-
|
|
12
|
+
/* JSX functions for component creation - wrap in LazyComponent to defer evaluation.
|
|
13
|
+
* This ensures component functions (which may create effects/computeds) are not
|
|
14
|
+
* evaluated during a Computed context, which would incorrectly track their
|
|
15
|
+
* dependencies as belonging to the outer computed. */
|
|
16
|
+
let jsx = (component: component<'props>, props: 'props): element =>
|
|
17
|
+
Component.LazyComponent(() => component(props))
|
|
14
18
|
|
|
15
19
|
let jsxs = jsx
|
|
16
20
|
|
package/src/Xote__JSX.res.mjs
CHANGED
|
@@ -5,11 +5,17 @@ import * as Xote__Component from "./Xote__Component.res.mjs";
|
|
|
5
5
|
import * as Primitive_option from "@rescript/runtime/lib/es6/Primitive_option.js";
|
|
6
6
|
|
|
7
7
|
function jsx(component, props) {
|
|
8
|
-
return
|
|
8
|
+
return {
|
|
9
|
+
TAG: "LazyComponent",
|
|
10
|
+
_0: () => component(props)
|
|
11
|
+
};
|
|
9
12
|
}
|
|
10
13
|
|
|
11
14
|
function jsxKeyed(component, props, key, param) {
|
|
12
|
-
return
|
|
15
|
+
return {
|
|
16
|
+
TAG: "LazyComponent",
|
|
17
|
+
_0: () => component(props)
|
|
18
|
+
};
|
|
13
19
|
}
|
|
14
20
|
|
|
15
21
|
function jsxFragment(props) {
|
package/src/Xote__Router.res
CHANGED
|
@@ -245,6 +245,17 @@ let init = (~basePath as basePathArg: string="/", ()): unit => {
|
|
|
245
245
|
// The popstate listener lives for the entire app lifetime
|
|
246
246
|
}
|
|
247
247
|
|
|
248
|
+
// Initialize router for server-side rendering
|
|
249
|
+
// Sets the base path and location signal without accessing browser APIs
|
|
250
|
+
// pathname: The app-relative path being rendered (e.g., "/docs/core-concepts/signals")
|
|
251
|
+
let initSSR = (~basePath as basePathArg: string="/", ~pathname: string="/", ~search: string="", ~hash: string="", ()): unit => {
|
|
252
|
+
let state = getGlobalState()
|
|
253
|
+
let normalizedBasePath = normalizeBasePath(basePathArg)
|
|
254
|
+
state.basePath := normalizedBasePath
|
|
255
|
+
Signal.set(state.location, {pathname, search, hash})
|
|
256
|
+
state.initialized = true
|
|
257
|
+
}
|
|
258
|
+
|
|
248
259
|
// Imperative navigation - push new history entry
|
|
249
260
|
// pathname: App-relative path (will have base path added automatically)
|
|
250
261
|
let push = (pathname: string, ~search: string="", ~hash: string="", ()): unit => {
|
package/src/Xote__Router.res.mjs
CHANGED
|
@@ -159,6 +159,22 @@ function init(basePathArgOpt, param) {
|
|
|
159
159
|
state.initialized = true;
|
|
160
160
|
}
|
|
161
161
|
|
|
162
|
+
function initSSR(basePathArgOpt, pathnameOpt, searchOpt, hashOpt, param) {
|
|
163
|
+
let basePathArg = basePathArgOpt !== undefined ? basePathArgOpt : "/";
|
|
164
|
+
let pathname = pathnameOpt !== undefined ? pathnameOpt : "/";
|
|
165
|
+
let search = searchOpt !== undefined ? searchOpt : "";
|
|
166
|
+
let hash = hashOpt !== undefined ? hashOpt : "";
|
|
167
|
+
let state = getGlobalState();
|
|
168
|
+
let normalizedBasePath = normalizeBasePath(basePathArg);
|
|
169
|
+
state.basePath.contents = normalizedBasePath;
|
|
170
|
+
Signals.Signal.set(state.location, {
|
|
171
|
+
pathname: pathname,
|
|
172
|
+
search: search,
|
|
173
|
+
hash: hash
|
|
174
|
+
});
|
|
175
|
+
state.initialized = true;
|
|
176
|
+
}
|
|
177
|
+
|
|
162
178
|
function push(pathname, searchOpt, hashOpt, param) {
|
|
163
179
|
let search = searchOpt !== undefined ? searchOpt : "";
|
|
164
180
|
let hash = hashOpt !== undefined ? hashOpt : "";
|
|
@@ -353,6 +369,7 @@ export {
|
|
|
353
369
|
saveScrollPosition,
|
|
354
370
|
getCurrentLocation,
|
|
355
371
|
init,
|
|
372
|
+
initSSR,
|
|
356
373
|
push,
|
|
357
374
|
replace,
|
|
358
375
|
route,
|