xote 4.4.0 → 4.4.2
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 +1 -1
- package/dist/xote.mjs +311 -297
- package/dist/xote.umd.js +1 -1
- package/package.json +1 -1
- package/src/Xote__Component.res +15 -5
- package/src/Xote__Component.res.mjs +22 -7
- package/src/Xote__JSX.res +114 -24
- package/src/Xote__JSX.res.mjs +95 -82
package/dist/xote.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(g,T){typeof exports=="object"&&typeof module<"u"?T(exports):typeof define=="function"&&define.amd?define(["exports"],T):(g=typeof globalThis<"u"?globalThis:g||self,T(g.xote={}))})(this,(function(g){"use strict";let T={contents:0};function X(){return T.contents=T.contents+1|0,T.contents}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 Ce(e){if(e!=null)return Ae(e)}function re(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 q(e,t){return e!==void 0?re(e):t}function Ne(e,t,n){return e.reduce(n,t)}function Ie(e,t){let n=e.length,r=new Array(n),l=0;for(let u=0;u<n;++u){let a=e[u],c=t(a);c!==void 0&&(r[l]=re(c),l=l+1|0)}return r.length=l,r}function Me(e,t){let n=0;for(;;){let r=n;if(r===e.length)return;let l=t(e[r]);if(l!==void 0)return l;n=r+1|0}}let h=new Map,C=new Map,F=new Map,p={contents:void 0},N=new Set,O={contents:!1},b={contents:!1};function H(e){if(C.get(e)===void 0){C.set(e,new Set);return}}function je(e,t){let n=C.get(e);if(n!==void 0){n.forEach(t);return}}function Re(e,t){let n=C.get(e);if(n!==void 0){n.add(t);return}}function Pe(e,t){let n=C.get(e);if(n!==void 0){n.delete(t);return}}function De(e){return Array.from(q(C.get(e),new Set).values())}function le(e,t){let n=p.contents;p.contents=e;try{let r=t();return p.contents=n,r}catch(r){throw p.contents=n,r}}function Fe(e){let t=p.contents;p.contents=void 0;try{let n=e();return p.contents=t,n}catch(n){throw p.contents=t,n}}function Le(e){let t=p.contents;return t!==void 0?t===e:!1}function xe(e){if(!O.contents){O.contents=!0;try{e(),O.contents=!1;return}catch(t){throw O.contents=!1,t}}}function Ge(e,t){H(t);let n=Le(e),r=h.get(e);if(n&&r!==void 0&&!r.deps.has(t))return r.deps.add(t),Re(t,e)}function I(e){e.deps.forEach(t=>Pe(t,e.id)),e.deps.clear()}function Be(e){let t=F.get(e);if(t===void 0)return;F.delete(e);let n=h.get(t);if(n!==void 0){I(n),h.delete(t);return}}function ue(e){return Ne(e,0,(t,n)=>n>t?n:t)}function Ve(e){let t=[];return e.deps.forEach(n=>je(n,r=>{if(r===e.id)return;let l=h.get(r);if(l===void 0)return;if(typeof l.kind=="object"){t.push(l.level);return}})),ue(t)+1|0}function ze(e){let t=[];return e.deps.forEach(n=>{let r=F.get(n);if(r===void 0||r===e.id)return;let l=h.get(r);if(l!==void 0){t.push(l.level);return}}),ue(t)+1|0}function V(e){return typeof e.kind=="object"?ze(e):Ve(e)}function We(e,t){let n=h.get(e),r=h.get(t);if(n===void 0)return r!==void 0?1:0;if(r===void 0)return-1;let u=typeof n.kind=="object"?0:1,c=typeof r.kind=="object"?0:1,d=u-c|0;return d!==0?d:n.level-r.level|0}function Ke(e){b.contents=!0,I(e),le(e.id,()=>{e.run(),b.contents=!1}),e.level=V(e)}function ie(){for(;N.size>0;){let e=Array.from(N.values());N.clear(),e.sort(We),e.forEach(t=>{let n=h.get(t);if(n!==void 0)return Ke(n)})}}function oe(e){if(H(e),De(e).forEach(t=>{let n=h.get(t);if(n===void 0)return;let r=n.kind;if(typeof r=="object")return n.dirty?void 0:(n.dirty=!0,oe(r.VAL));N.add(t)}),N.size>0)return xe(ie)}function ce(e){let t=F.get(e);if(t===void 0)return;let n=h.get(t);if(n!==void 0&&n.dirty){b.contents=!0,I(n),le(t,()=>{n.run(),n.dirty=!1,b.contents=!1}),n.level=V(n);return}}function Xe(e){let t=O.contents;O.contents=!0;try{let n=e();return t||(O.contents=!1,N.size>0&&ie()),n}catch(n){throw t||(O.contents=!1),n}}let qe=Fe,He=H;function de(e,t,n){let r=X();return He(r),{id:r,value:{contents:e},version:{contents:0},equals:q(n,(l,u)=>l===u),name:t}}function Ue(e){ce(e.id);let t=p.contents;return t!==void 0&&Ge(t,e.id),e.value.contents}function Je(e){return ce(e.id),e.value.contents}function se(e,t){let n;try{n=!e.equals(e.value.contents,t)}catch{n=!0}if(n)return e.value.contents=t,e.version.contents=e.version.contents+1|0,oe(e.id)}function Qe(e,t){se(e,t(e.value.contents))}const Ye=Object.freeze(Object.defineProperty({__proto__:null,Id:void 0,Scheduler:void 0,batch:Xe,get:Ue,make:de,peek:Je,set:se,untrack:qe,update:Qe},Symbol.toStringTag,{value:"Module"}));function ae(e,t,n,r){return{id:e,kind:t,run:n,deps:new Set,level:0,dirty:!0,name:r}}function Ze(e,t){let n=X(),r={contents:void 0},u=ae(n,"Effect",()=>{let d=r.contents;d!==void 0&&d(),r.contents=e()},t);h.set(n,u),b.contents=!0,I(u);let a=p.contents;p.contents=n;try{u.run(),b.contents=!1}catch(d){throw p.contents=a,b.contents=!1,d}return p.contents=a,u.level=V(u),{dispose:()=>{let d=h.get(n);if(d===void 0)return;let x=r.contents;x!==void 0&&x(),I(d),h.delete(n)}}}const et=Object.freeze(Object.defineProperty({__proto__:null,Id:void 0,Observer:void 0,Scheduler:void 0,run:Ze},Symbol.toStringTag,{value:"Module"}));function tt(e,t){let n=de(void 0,t,void 0),r=X(),l=()=>{let c=e();n.value.contents=c},u=ae(r,{NAME:"Computed",VAL:n.id},l,void 0);h.set(r,u),b.contents=!0,I(u);let a=p.contents;p.contents=r;try{u.run(),u.dirty=!1,b.contents=!1}catch(c){throw p.contents=a,b.contents=!1,c}return p.contents=a,u.level=V(u),F.set(n.id,r),n}function nt(e){Be(e.id)}const rt=Object.freeze(Object.defineProperty({__proto__:null,Id:void 0,Observer:void 0,Scheduler:void 0,Signal:void 0,dispose:nt,make:tt},Symbol.toStringTag,{value:"Module"}));let o=Ye,S=rt,w=et;function fe(e){return Ie(e.split("/"),t=>{if(t!=="")return t.startsWith(":")?{TAG:"Param",_0:t.slice(1)}:{TAG:"Static",_0:t}})}function pe(e,t){let n=t.split("/").filter(u=>u!=="");if(e.length!==n.length)return"NoMatch";let r={};return e.every((u,a)=>{let c=n[a];return u.TAG==="Static"?c===u._0:(r[u._0]=c,!0)})?{TAG:"Match",_0:r}:"NoMatch"}function U(e,t){return pe(fe(e),t)}const lt=Object.freeze(Object.defineProperty({__proto__:null,match:U,matchPath:pe,parsePattern:fe},Symbol.toStringTag,{value:"Module"}));function ut(e,t){delete e[t]}let it={},z={contents:void 0};function ot(){return{disposers:[],computeds:[]}}function M(e,t){let n=z.contents;z.contents=e;let r=t();return z.contents=n,r}function j(e,t){e.disposers.push(t)}function me(e){e.disposers.forEach(t=>t.dispose()),e.computeds.forEach(t=>S.dispose(t))}function R(e,t){e.__xote_owner__=t}function he(e){return Ce(e.__xote_owner__)}let ct={currentOwner:z,createOwner:ot,runWithOwner:M,addDisposer:j,disposeOwner:me,setOwner:R,getOwner:he};function _e(e,t){return[e,{TAG:"Static",_0:t}]}function ge(e,t){return[e,{TAG:"SignalValue",_0:t}]}function Se(e,t){return[e,{TAG:"Compute",_0:t}]}let dt={$$static:_e,signal:ge,computed:Se};function L(e){let t=he(e);t!==void 0&&me(t),Array.from(e.childNodes||[]).forEach(L)}function k(e){switch(e.TAG){case"Element":let t=e.children,n=e.events,r=e.attrs,l=document.createElement(e.tag),u={disposers:[],computeds:[]};return R(l,u),M(u,()=>{r.forEach(i=>{let m=i[1],E=i[0];switch(m.TAG){case"Static":l.setAttribute(E,m._0);return;case"SignalValue":let v=m._0;l.setAttribute(E,o.peek(v));let y=w.run(()=>{l.setAttribute(E,o.get(v))},void 0);return j(u,y);case"Compute":let B=m._0;l.setAttribute(E,B());let D=w.run(()=>{l.setAttribute(E,B())},void 0);return j(u,D)}}),n.forEach(i=>{l.addEventListener(i[0],i[1])}),t.forEach(i=>{let m=k(i);l.appendChild(m)})}),l;case"Text":return document.createTextNode(e._0);case"SignalText":let a=e._0,c=document.createTextNode(o.peek(a)),d={disposers:[],computeds:[]};return R(c,d),M(d,()=>{let i=w.run(()=>{c.textContent=o.get(a)},void 0);j(d,i)}),c;case"Fragment":let x=document.createDocumentFragment();return e._0.forEach(i=>{let m=k(i);x.appendChild(m)}),x;case"SignalFragment":let un=e._0,Y={disposers:[],computeds:[]},P=document.createElement("div");return P.setAttribute("style","display: contents"),R(P,Y),M(Y,()=>{let i=w.run(()=>{let m=o.get(un);Array.from(P.childNodes||[]).forEach(L),P.innerHTML="",m.forEach(v=>{let y=k(v);P.appendChild(y)})},void 0);j(Y,i)}),P;case"LazyComponent":let we={disposers:[],computeds:[]},on=M(we,e._0),ke=k(on);return R(ke,we),ke;case"KeyedList":let Z=e.renderItem,ee=e.keyFn,Oe=e.signal,te={disposers:[],computeds:[]},ne=document.createComment(" keyed-list-start "),G=document.createComment(" keyed-list-end ");R(ne,te);let A={},cn=()=>{let i=G.parentNode;if(i==null)return;let m=o.get(Oe),E={};m.forEach(s=>{E[ee(s)]=s});let v=[];Object.keys(A).forEach(s=>{if(E[s]===void 0){v.push(s);return}}),v.forEach(s=>{let f=A[s];if(f!==void 0){L(f.element),f.element.remove(),ut(A,s);return}});let y=[],B={};m.forEach(s=>{let f=ee(s),K=A[f];if(K!==void 0){if(K.item!==s){B[f]=!0;let an=Z(s),fn=k(an),$e={key:f,item:s,element:fn};y.push($e),A[f]=$e;return}y.push(K);return}let dn=Z(s),sn=k(dn),Te={key:f,item:s,element:sn};y.push(Te),A[f]=Te});let D={contents:ne.nextSibling};y.forEach(s=>{let f=D.contents;if(f==null){i.insertBefore(s.element,G);return}if(f===G){i.insertBefore(s.element,G);return}if(f===s.element){D.contents=f.nextSibling;return}q(B[s.key],!1)?(L(f),i.replaceChild(s.element,f),D.contents=s.element.nextSibling):(i.insertBefore(s.element,f),D.contents=s.element.nextSibling)})},W=document.createDocumentFragment();return W.appendChild(ne),o.peek(Oe).forEach(i=>{let m=ee(i),E=Z(i),v=k(E),y={key:m,item:i,element:v};A[m]=y,W.appendChild(v)}),W.appendChild(G),M(te,()=>{let i=w.run(()=>{cn()},void 0);j(te,i)}),W}}let st={disposeElement:L,render:k};function at(e){return{TAG:"Text",_0:e}}function ft(e){return{TAG:"SignalText",_0:S.make(e,void 0)}}function pt(e){return{TAG:"Fragment",_0:e}}function J(e){return{TAG:"SignalFragment",_0:e}}function mt(e,t){return{TAG:"SignalFragment",_0:S.make(()=>o.get(e).map(t),void 0)}}function ht(e,t,n){return{TAG:"KeyedList",signal:e,keyFn:t,renderItem:n}}function _(e,t,n,r,l){let u=t!==void 0?t:[].map(d=>d),a=n!==void 0?n:[].map(d=>d),c=r!==void 0?r:[].map(d=>d);return{TAG:"Element",tag:e,attrs:u,events:a,children:c}}function _t(e,t,n,r){return _("div",e,t,n)}function gt(e,t,n,r){return _("span",e,t,n)}function St(e,t,n,r){return _("button",e,t,n)}function Et(e,t,n){return _("input",e,t,void 0)}function bt(e,t,n,r){return _("h1",e,t,n)}function vt(e,t,n,r){return _("h2",e,t,n)}function yt(e,t,n,r){return _("h3",e,t,n)}function wt(e,t,n,r){return _("p",e,t,n)}function kt(e,t,n,r){return _("ul",e,t,n)}function Ot(e,t,n,r){return _("li",e,t,n)}function Ee(e,t,n,r){return _("a",e,t,n)}function be(e,t){let n=k(e);t.appendChild(n)}function Tt(e,t){let n=document.getElementById(t);if(n==null){console.error("Container element not found: "+t);return}else return be(e,n)}let ve=_e;const $t=Object.freeze(Object.defineProperty({__proto__:null,Attributes:dt,DOM:it,Reactivity:ct,Render:st,a:Ee,attr:ve,button:St,computedAttr:Se,div:_t,element:_,fragment:pt,h1:bt,h2:vt,h3:yt,input:Et,keyedList:ht,li:Ot,list:mt,mount:be,mountById:Tt,p:wt,signalAttr:ge,signalFragment:J,span:gt,text:at,textSignal:ft,ul:kt},Symbol.toStringTag,{value:"Module"}));let $=o.make({pathname:"/",search:"",hash:""},void 0,void 0);function Q(){return{pathname:window.location.pathname,search:window.location.search,hash:window.location.hash}}function At(){o.set($,Q());let e=t=>o.set($,Q());window.addEventListener("popstate",e)}function ye(e,t,n,r){let l=t!==void 0?t:"",u=n!==void 0?n:"",a={pathname:e,search:l,hash:u},c=e+l+u,d={};window.history.pushState(d,"",c),o.set($,a)}function Ct(e,t,n,r){let l=t!==void 0?t:"",u=n!==void 0?n:"",a={pathname:e,search:l,hash:u},c=e+l+u,d={};window.history.replaceState(d,"",c),o.set($,a)}function Nt(e,t){return J(S.make(()=>{let n=o.get($),r=U(e,n.pathname);return typeof r!="object"?[]:[t(r._0)]},void 0))}function It(e){return J(S.make(()=>{let t=o.get($),n=Me(e,r=>{let l=U(r.pattern,t.pathname);if(typeof l=="object")return r.render(l._0)});return n!==void 0?[n]:[]},void 0))}function Mt(e,t,n,r){let l=t!==void 0?t:[],u=n!==void 0?n:[],a=c=>{c.preventDefault(),ye(e,void 0,void 0)};return Ee(l.concat([ve("href",e)]),[["click",a]],u)}const jt=Object.freeze(Object.defineProperty({__proto__:null,Component:void 0,Route:void 0,getCurrentLocation:Q,init:At,link:Mt,location:$,push:ye,replace:Ct,route:Nt,routes:It},Symbol.toStringTag,{value:"Module"}));let Rt=o.Id,Pt=o.Scheduler,Dt=o.make,Ft=o.get,Lt=o.peek,xt=o.set,Gt=o.update,Bt=o.batch,Vt=o.untrack,zt={Id:Rt,Scheduler:Pt,make:Dt,get:Ft,peek:Lt,set:xt,update:Gt,batch:Bt,untrack:Vt},Wt=S.Id,Kt=S.Signal,Xt=S.Observer,qt=S.Scheduler,Ht=S.make,Ut=S.dispose,Jt={Id:Wt,Signal:Kt,Observer:Xt,Scheduler:qt,make:Ht,dispose:Ut},Qt=w.Id,Yt=w.Observer,Zt=w.Scheduler,en=w.run,tn={Id:Qt,Observer:Yt,Scheduler:Zt,run:en},nn=$t,rn=lt,ln=jt;g.Component=nn,g.Computed=Jt,g.Effect=tn,g.Route=rn,g.Router=ln,g.Signal=zt,Object.defineProperty(g,Symbol.toStringTag,{value:"Module"})}));
|
|
1
|
+
(function(g,T){typeof exports=="object"&&typeof module<"u"?T(exports):typeof define=="function"&&define.amd?define(["exports"],T):(g=typeof globalThis<"u"?globalThis:g||self,T(g.xote={}))})(this,(function(g){"use strict";let T={contents:0};function q(){return T.contents=T.contents+1|0,T.contents}function Ce(e){return e===void 0?{BS_PRIVATE_NESTED_SOME_NONE:0}:e!==null&&e.BS_PRIVATE_NESTED_SOME_NONE!==void 0?{BS_PRIVATE_NESTED_SOME_NONE:e.BS_PRIVATE_NESTED_SOME_NONE+1|0}:e}function Ne(e){if(e!=null)return Ce(e)}function le(e){if(e===null||e.BS_PRIVATE_NESTED_SOME_NONE===void 0)return e;let t=e.BS_PRIVATE_NESTED_SOME_NONE;if(t!==0)return{BS_PRIVATE_NESTED_SOME_NONE:t-1|0}}function H(e,t){return e!==void 0?le(e):t}function Ie(e,t,n){return e.reduce(n,t)}function Me(e,t){let n=e.length,r=new Array(n),l=0;for(let u=0;u<n;++u){let a=e[u],c=t(a);c!==void 0&&(r[l]=le(c),l=l+1|0)}return r.length=l,r}function je(e,t){let n=0;for(;;){let r=n;if(r===e.length)return;let l=t(e[r]);if(l!==void 0)return l;n=r+1|0}}let h=new Map,C=new Map,L=new Map,p={contents:void 0},N=new Set,k={contents:!1},v={contents:!1};function U(e){if(C.get(e)===void 0){C.set(e,new Set);return}}function Re(e,t){let n=C.get(e);if(n!==void 0){n.forEach(t);return}}function Pe(e,t){let n=C.get(e);if(n!==void 0){n.add(t);return}}function De(e,t){let n=C.get(e);if(n!==void 0){n.delete(t);return}}function Fe(e){return Array.from(H(C.get(e),new Set).values())}function ue(e,t){let n=p.contents;p.contents=e;try{let r=t();return p.contents=n,r}catch(r){throw p.contents=n,r}}function Le(e){let t=p.contents;p.contents=void 0;try{let n=e();return p.contents=t,n}catch(n){throw p.contents=t,n}}function xe(e){let t=p.contents;return t!==void 0?t===e:!1}function Ge(e){if(!k.contents){k.contents=!0;try{e(),k.contents=!1;return}catch(t){throw k.contents=!1,t}}}function Be(e,t){U(t);let n=xe(e),r=h.get(e);if(n&&r!==void 0&&!r.deps.has(t))return r.deps.add(t),Pe(t,e)}function I(e){e.deps.forEach(t=>De(t,e.id)),e.deps.clear()}function Ve(e){let t=L.get(e);if(t===void 0)return;L.delete(e);let n=h.get(t);if(n!==void 0){I(n),h.delete(t);return}}function ie(e){return Ie(e,0,(t,n)=>n>t?n:t)}function ze(e){let t=[];return e.deps.forEach(n=>Re(n,r=>{if(r===e.id)return;let l=h.get(r);if(l===void 0)return;if(typeof l.kind=="object"){t.push(l.level);return}})),ie(t)+1|0}function We(e){let t=[];return e.deps.forEach(n=>{let r=L.get(n);if(r===void 0||r===e.id)return;let l=h.get(r);if(l!==void 0){t.push(l.level);return}}),ie(t)+1|0}function z(e){return typeof e.kind=="object"?We(e):ze(e)}function Ke(e,t){let n=h.get(e),r=h.get(t);if(n===void 0)return r!==void 0?1:0;if(r===void 0)return-1;let u=typeof n.kind=="object"?0:1,c=typeof r.kind=="object"?0:1,d=u-c|0;return d!==0?d:n.level-r.level|0}function Xe(e){v.contents=!0,I(e),ue(e.id,()=>{e.run(),v.contents=!1}),e.level=z(e)}function oe(){for(;N.size>0;){let e=Array.from(N.values());N.clear(),e.sort(Ke),e.forEach(t=>{let n=h.get(t);if(n!==void 0)return Xe(n)})}}function ce(e){if(U(e),Fe(e).forEach(t=>{let n=h.get(t);if(n===void 0)return;let r=n.kind;if(typeof r=="object")return n.dirty?void 0:(n.dirty=!0,ce(r.VAL));N.add(t)}),N.size>0)return Ge(oe)}function de(e){let t=L.get(e);if(t===void 0)return;let n=h.get(t);if(n!==void 0&&n.dirty){v.contents=!0,I(n),ue(t,()=>{n.run(),n.dirty=!1,v.contents=!1}),n.level=z(n);return}}function qe(e){let t=k.contents;k.contents=!0;try{let n=e();return t||(k.contents=!1,N.size>0&&oe()),n}catch(n){throw t||(k.contents=!1),n}}let He=Le,Ue=U;function se(e,t,n){let r=q();return Ue(r),{id:r,value:{contents:e},version:{contents:0},equals:H(n,(l,u)=>l===u),name:t}}function Je(e){de(e.id);let t=p.contents;return t!==void 0&&Be(t,e.id),e.value.contents}function Qe(e){return de(e.id),e.value.contents}function ae(e,t){let n;try{n=!e.equals(e.value.contents,t)}catch{n=!0}if(n)return e.value.contents=t,e.version.contents=e.version.contents+1|0,ce(e.id)}function Ye(e,t){ae(e,t(e.value.contents))}const Ze=Object.freeze(Object.defineProperty({__proto__:null,Id:void 0,Scheduler:void 0,batch:qe,get:Je,make:se,peek:Qe,set:ae,untrack:He,update:Ye},Symbol.toStringTag,{value:"Module"}));function fe(e,t,n,r){return{id:e,kind:t,run:n,deps:new Set,level:0,dirty:!0,name:r}}function et(e,t){let n=q(),r={contents:void 0},u=fe(n,"Effect",()=>{let d=r.contents;d!==void 0&&d(),r.contents=e()},t);h.set(n,u),v.contents=!0,I(u);let a=p.contents;p.contents=n;try{u.run(),v.contents=!1}catch(d){throw p.contents=a,v.contents=!1,d}return p.contents=a,u.level=z(u),{dispose:()=>{let d=h.get(n);if(d===void 0)return;let G=r.contents;G!==void 0&&G(),I(d),h.delete(n)}}}const tt=Object.freeze(Object.defineProperty({__proto__:null,Id:void 0,Observer:void 0,Scheduler:void 0,run:et},Symbol.toStringTag,{value:"Module"}));function nt(e,t){let n=se(void 0,t,void 0),r=q(),l=()=>{let c=e();n.value.contents=c},u=fe(r,{NAME:"Computed",VAL:n.id},l,void 0);h.set(r,u),v.contents=!0,I(u);let a=p.contents;p.contents=r;try{u.run(),u.dirty=!1,v.contents=!1}catch(c){throw p.contents=a,v.contents=!1,c}return p.contents=a,u.level=z(u),L.set(n.id,r),n}function rt(e){Ve(e.id)}const lt=Object.freeze(Object.defineProperty({__proto__:null,Id:void 0,Observer:void 0,Scheduler:void 0,Signal:void 0,dispose:rt,make:nt},Symbol.toStringTag,{value:"Module"}));let o=Ze,S=lt,w=tt;function pe(e){return Me(e.split("/"),t=>{if(t!=="")return t.startsWith(":")?{TAG:"Param",_0:t.slice(1)}:{TAG:"Static",_0:t}})}function me(e,t){let n=t.split("/").filter(u=>u!=="");if(e.length!==n.length)return"NoMatch";let r={};return e.every((u,a)=>{let c=n[a];return u.TAG==="Static"?c===u._0:(r[u._0]=c,!0)})?{TAG:"Match",_0:r}:"NoMatch"}function J(e,t){return me(pe(e),t)}const ut=Object.freeze(Object.defineProperty({__proto__:null,match:J,matchPath:me,parsePattern:pe},Symbol.toStringTag,{value:"Module"}));function it(e,t){delete e[t]}function M(e,t,n){switch(t){case"checked":e.checked=n==="true";return;case"value":e.value=n;return;default:e.setAttribute(t,n);return}}let ot={setAttrOrProp:M},W={contents:void 0};function ct(){return{disposers:[],computeds:[]}}function j(e,t){let n=W.contents;W.contents=e;let r=t();return W.contents=n,r}function R(e,t){e.disposers.push(t)}function he(e){e.disposers.forEach(t=>t.dispose()),e.computeds.forEach(t=>S.dispose(t))}function P(e,t){e.__xote_owner__=t}function _e(e){return Ne(e.__xote_owner__)}let dt={currentOwner:W,createOwner:ct,runWithOwner:j,addDisposer:R,disposeOwner:he,setOwner:P,getOwner:_e};function ge(e,t){return[e,{TAG:"Static",_0:t}]}function Se(e,t){return[e,{TAG:"SignalValue",_0:t}]}function Ee(e,t){return[e,{TAG:"Compute",_0:t}]}let st={$$static:ge,signal:Se,computed:Ee};function x(e){let t=_e(e);t!==void 0&&he(t),Array.from(e.childNodes||[]).forEach(x)}function O(e){switch(e.TAG){case"Element":let t=e.children,n=e.events,r=e.attrs,l=document.createElement(e.tag),u={disposers:[],computeds:[]};return P(l,u),j(u,()=>{r.forEach(i=>{let m=i[1],E=i[0];switch(m.TAG){case"Static":return M(l,E,m._0);case"SignalValue":let y=m._0;M(l,E,o.peek(y));let b=w.run(()=>{M(l,E,o.get(y))},void 0);return R(u,b);case"Compute":let V=m._0;M(l,E,V());let F=w.run(()=>{M(l,E,V())},void 0);return R(u,F)}}),n.forEach(i=>{l.addEventListener(i[0],i[1])}),t.forEach(i=>{let m=O(i);l.appendChild(m)})}),l;case"Text":return document.createTextNode(e._0);case"SignalText":let a=e._0,c=document.createTextNode(o.peek(a)),d={disposers:[],computeds:[]};return P(c,d),j(d,()=>{let i=w.run(()=>{c.textContent=o.get(a)},void 0);R(d,i)}),c;case"Fragment":let G=document.createDocumentFragment();return e._0.forEach(i=>{let m=O(i);G.appendChild(m)}),G;case"SignalFragment":let on=e._0,Z={disposers:[],computeds:[]},D=document.createElement("div");return D.setAttribute("style","display: contents"),P(D,Z),j(Z,()=>{let i=w.run(()=>{let m=o.get(on);Array.from(D.childNodes||[]).forEach(x),D.innerHTML="",m.forEach(y=>{let b=O(y);D.appendChild(b)})},void 0);R(Z,i)}),D;case"LazyComponent":let Oe={disposers:[],computeds:[]},cn=j(Oe,e._0),ke=O(cn);return P(ke,Oe),ke;case"KeyedList":let ee=e.renderItem,te=e.keyFn,Te=e.signal,ne={disposers:[],computeds:[]},re=document.createComment(" keyed-list-start "),B=document.createComment(" keyed-list-end ");P(re,ne);let A={},dn=()=>{let i=B.parentNode;if(i==null)return;let m=o.get(Te),E={};m.forEach(s=>{E[te(s)]=s});let y=[];Object.keys(A).forEach(s=>{if(E[s]===void 0){y.push(s);return}}),y.forEach(s=>{let f=A[s];if(f!==void 0){x(f.element),f.element.remove(),it(A,s);return}});let b=[],V={};m.forEach(s=>{let f=te(s),X=A[f];if(X!==void 0){if(X.item!==s){V[f]=!0;let fn=ee(s),pn=O(fn),Ae={key:f,item:s,element:pn};b.push(Ae),A[f]=Ae;return}b.push(X);return}let sn=ee(s),an=O(sn),$e={key:f,item:s,element:an};b.push($e),A[f]=$e});let F={contents:re.nextSibling};b.forEach(s=>{let f=F.contents;if(f==null){i.insertBefore(s.element,B);return}if(f===B){i.insertBefore(s.element,B);return}if(f===s.element){F.contents=f.nextSibling;return}H(V[s.key],!1)?(x(f),i.replaceChild(s.element,f),F.contents=s.element.nextSibling):(i.insertBefore(s.element,f),F.contents=s.element.nextSibling)})},K=document.createDocumentFragment();return K.appendChild(re),o.peek(Te).forEach(i=>{let m=te(i),E=ee(i),y=O(E),b={key:m,item:i,element:y};A[m]=b,K.appendChild(y)}),K.appendChild(B),j(ne,()=>{let i=w.run(()=>{dn()},void 0);R(ne,i)}),K}}let at={disposeElement:x,render:O};function ft(e){return{TAG:"Text",_0:e}}function pt(e){return{TAG:"SignalText",_0:S.make(e,void 0)}}function mt(e){return{TAG:"Fragment",_0:e}}function Q(e){return{TAG:"SignalFragment",_0:e}}function ht(e,t){return{TAG:"SignalFragment",_0:S.make(()=>o.get(e).map(t),void 0)}}function _t(e,t,n){return{TAG:"KeyedList",signal:e,keyFn:t,renderItem:n}}function _(e,t,n,r,l){let u=t!==void 0?t:[].map(d=>d),a=n!==void 0?n:[].map(d=>d),c=r!==void 0?r:[].map(d=>d);return{TAG:"Element",tag:e,attrs:u,events:a,children:c}}function gt(e,t,n,r){return _("div",e,t,n)}function St(e,t,n,r){return _("span",e,t,n)}function Et(e,t,n,r){return _("button",e,t,n)}function vt(e,t,n){return _("input",e,t,void 0)}function yt(e,t,n,r){return _("h1",e,t,n)}function bt(e,t,n,r){return _("h2",e,t,n)}function wt(e,t,n,r){return _("h3",e,t,n)}function Ot(e,t,n,r){return _("p",e,t,n)}function kt(e,t,n,r){return _("ul",e,t,n)}function Tt(e,t,n,r){return _("li",e,t,n)}function ve(e,t,n,r){return _("a",e,t,n)}function ye(e,t){let n=O(e);t.appendChild(n)}function $t(e,t){let n=document.getElementById(t);if(n==null){console.error("Container element not found: "+t);return}else return ye(e,n)}let be=ge;const At=Object.freeze(Object.defineProperty({__proto__:null,Attributes:st,DOM:ot,Reactivity:dt,Render:at,a:ve,attr:be,button:Et,computedAttr:Ee,div:gt,element:_,fragment:mt,h1:yt,h2:bt,h3:wt,input:vt,keyedList:_t,li:Tt,list:ht,mount:ye,mountById:$t,p:Ot,signalAttr:Se,signalFragment:Q,span:St,text:ft,textSignal:pt,ul:kt},Symbol.toStringTag,{value:"Module"}));let $=o.make({pathname:"/",search:"",hash:""},void 0,void 0);function Y(){return{pathname:window.location.pathname,search:window.location.search,hash:window.location.hash}}function Ct(){o.set($,Y());let e=t=>o.set($,Y());window.addEventListener("popstate",e)}function we(e,t,n,r){let l=t!==void 0?t:"",u=n!==void 0?n:"",a={pathname:e,search:l,hash:u},c=e+l+u,d={};window.history.pushState(d,"",c),o.set($,a)}function Nt(e,t,n,r){let l=t!==void 0?t:"",u=n!==void 0?n:"",a={pathname:e,search:l,hash:u},c=e+l+u,d={};window.history.replaceState(d,"",c),o.set($,a)}function It(e,t){return Q(S.make(()=>{let n=o.get($),r=J(e,n.pathname);return typeof r!="object"?[]:[t(r._0)]},void 0))}function Mt(e){return Q(S.make(()=>{let t=o.get($),n=je(e,r=>{let l=J(r.pattern,t.pathname);if(typeof l=="object")return r.render(l._0)});return n!==void 0?[n]:[]},void 0))}function jt(e,t,n,r){let l=t!==void 0?t:[],u=n!==void 0?n:[],a=c=>{c.preventDefault(),we(e,void 0,void 0)};return ve(l.concat([be("href",e)]),[["click",a]],u)}const Rt=Object.freeze(Object.defineProperty({__proto__:null,Component:void 0,Route:void 0,getCurrentLocation:Y,init:Ct,link:jt,location:$,push:we,replace:Nt,route:It,routes:Mt},Symbol.toStringTag,{value:"Module"}));let Pt=o.Id,Dt=o.Scheduler,Ft=o.make,Lt=o.get,xt=o.peek,Gt=o.set,Bt=o.update,Vt=o.batch,zt=o.untrack,Wt={Id:Pt,Scheduler:Dt,make:Ft,get:Lt,peek:xt,set:Gt,update:Bt,batch:Vt,untrack:zt},Kt=S.Id,Xt=S.Signal,qt=S.Observer,Ht=S.Scheduler,Ut=S.make,Jt=S.dispose,Qt={Id:Kt,Signal:Xt,Observer:qt,Scheduler:Ht,make:Ut,dispose:Jt},Yt=w.Id,Zt=w.Observer,en=w.Scheduler,tn=w.run,nn={Id:Yt,Observer:Zt,Scheduler:en,run:tn},rn=At,ln=ut,un=Rt;g.Component=rn,g.Computed=Qt,g.Effect=nn,g.Route=ln,g.Router=un,g.Signal=Wt,Object.defineProperty(g,Symbol.toStringTag,{value:"Module"})}));
|
package/package.json
CHANGED
package/src/Xote__Component.res
CHANGED
|
@@ -29,6 +29,16 @@ module DOM = {
|
|
|
29
29
|
@send external insertBefore: (Dom.element, Dom.element, Dom.element) => unit = "insertBefore"
|
|
30
30
|
@set external setTextContent: (Dom.element, string) => unit = "textContent"
|
|
31
31
|
@set external setValue: (Dom.element, string) => unit = "value"
|
|
32
|
+
@set external setChecked: (Dom.element, bool) => unit = "checked"
|
|
33
|
+
|
|
34
|
+
/* Set attribute or property depending on attribute name */
|
|
35
|
+
let setAttrOrProp = (el: Dom.element, key: string, value: string): unit => {
|
|
36
|
+
switch key {
|
|
37
|
+
| "value" => setValue(el, value)
|
|
38
|
+
| "checked" => setChecked(el, value == "true")
|
|
39
|
+
| _ => setAttribute(el, key, value)
|
|
40
|
+
}
|
|
41
|
+
}
|
|
32
42
|
}
|
|
33
43
|
|
|
34
44
|
/* ============================================================================
|
|
@@ -238,22 +248,22 @@ module Render = {
|
|
|
238
248
|
/* Set attributes */
|
|
239
249
|
attrs->Array.forEach(((key, value)) => {
|
|
240
250
|
switch value {
|
|
241
|
-
| Static(v) => DOM.
|
|
251
|
+
| Static(v) => DOM.setAttrOrProp(el, key, v)
|
|
242
252
|
| SignalValue(signal) => {
|
|
243
|
-
DOM.
|
|
253
|
+
DOM.setAttrOrProp(el, key, Signal.peek(signal))
|
|
244
254
|
let disposer = Effect.run(
|
|
245
255
|
() => {
|
|
246
|
-
DOM.
|
|
256
|
+
DOM.setAttrOrProp(el, key, Signal.get(signal))
|
|
247
257
|
None
|
|
248
258
|
},
|
|
249
259
|
)
|
|
250
260
|
addDisposer(owner, disposer)
|
|
251
261
|
}
|
|
252
262
|
| Compute(compute) => {
|
|
253
|
-
DOM.
|
|
263
|
+
DOM.setAttrOrProp(el, key, compute())
|
|
254
264
|
let disposer = Effect.run(
|
|
255
265
|
() => {
|
|
256
|
-
DOM.
|
|
266
|
+
DOM.setAttrOrProp(el, key, compute())
|
|
257
267
|
None
|
|
258
268
|
},
|
|
259
269
|
)
|
|
@@ -5,7 +5,23 @@ import * as Core__Dict from "@rescript/core/src/Core__Dict.res.mjs";
|
|
|
5
5
|
import * as Core__Option from "@rescript/core/src/Core__Option.res.mjs";
|
|
6
6
|
import * as Primitive_option from "@rescript/runtime/lib/es6/Primitive_option.js";
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
function setAttrOrProp(el, key, value) {
|
|
9
|
+
switch (key) {
|
|
10
|
+
case "checked" :
|
|
11
|
+
el.checked = value === "true";
|
|
12
|
+
return;
|
|
13
|
+
case "value" :
|
|
14
|
+
el.value = value;
|
|
15
|
+
return;
|
|
16
|
+
default:
|
|
17
|
+
el.setAttribute(key, value);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
let DOM = {
|
|
23
|
+
setAttrOrProp: setAttrOrProp
|
|
24
|
+
};
|
|
9
25
|
|
|
10
26
|
let currentOwner = {
|
|
11
27
|
contents: undefined
|
|
@@ -116,20 +132,19 @@ function render(node) {
|
|
|
116
132
|
let key = param[0];
|
|
117
133
|
switch (value.TAG) {
|
|
118
134
|
case "Static" :
|
|
119
|
-
el
|
|
120
|
-
return;
|
|
135
|
+
return setAttrOrProp(el, key, value._0);
|
|
121
136
|
case "SignalValue" :
|
|
122
137
|
let signal = value._0;
|
|
123
|
-
el
|
|
138
|
+
setAttrOrProp(el, key, Signals.Signal.peek(signal));
|
|
124
139
|
let disposer = Signals.Effect.run(() => {
|
|
125
|
-
el
|
|
140
|
+
setAttrOrProp(el, key, Signals.Signal.get(signal));
|
|
126
141
|
}, undefined);
|
|
127
142
|
return addDisposer(owner, disposer);
|
|
128
143
|
case "Compute" :
|
|
129
144
|
let compute = value._0;
|
|
130
|
-
el
|
|
145
|
+
setAttrOrProp(el, key, compute());
|
|
131
146
|
let disposer$1 = Signals.Effect.run(() => {
|
|
132
|
-
el
|
|
147
|
+
setAttrOrProp(el, key, compute());
|
|
133
148
|
}, undefined);
|
|
134
149
|
return addDisposer(owner, disposer$1);
|
|
135
150
|
}
|
package/src/Xote__JSX.res
CHANGED
|
@@ -65,6 +65,7 @@ module Elements = {
|
|
|
65
65
|
|
|
66
66
|
/* Props type for HTML elements - supports common attributes and events
|
|
67
67
|
* String-like attributes use polymorphic types to accept strings, signals, or computed functions
|
|
68
|
+
* Boolean attributes also use polymorphic types to accept bools, signals, or computed functions
|
|
68
69
|
*/
|
|
69
70
|
type props<
|
|
70
71
|
'id,
|
|
@@ -89,6 +90,14 @@ module Elements = {
|
|
|
89
90
|
'height,
|
|
90
91
|
'role,
|
|
91
92
|
'ariaLabel,
|
|
93
|
+
'disabled,
|
|
94
|
+
'checked,
|
|
95
|
+
'required,
|
|
96
|
+
'readOnly,
|
|
97
|
+
'multiple,
|
|
98
|
+
'ariaHidden,
|
|
99
|
+
'ariaExpanded,
|
|
100
|
+
'ariaSelected,
|
|
92
101
|
> = {
|
|
93
102
|
/* Standard attributes - can be static strings, signals, or computed values */
|
|
94
103
|
id?: 'id,
|
|
@@ -99,10 +108,10 @@ module Elements = {
|
|
|
99
108
|
name?: 'name,
|
|
100
109
|
value?: 'value,
|
|
101
110
|
placeholder?: 'placeholder,
|
|
102
|
-
disabled?:
|
|
103
|
-
checked?:
|
|
104
|
-
required?:
|
|
105
|
-
readOnly?:
|
|
111
|
+
disabled?: 'disabled,
|
|
112
|
+
checked?: 'checked,
|
|
113
|
+
required?: 'required,
|
|
114
|
+
readOnly?: 'readOnly,
|
|
106
115
|
maxLength?: int,
|
|
107
116
|
minLength?: int,
|
|
108
117
|
min?: 'min,
|
|
@@ -110,7 +119,7 @@ module Elements = {
|
|
|
110
119
|
step?: 'step,
|
|
111
120
|
pattern?: 'pattern,
|
|
112
121
|
autoComplete?: 'autoComplete,
|
|
113
|
-
multiple?:
|
|
122
|
+
multiple?: 'multiple,
|
|
114
123
|
accept?: 'accept,
|
|
115
124
|
rows?: int,
|
|
116
125
|
cols?: int,
|
|
@@ -128,9 +137,9 @@ module Elements = {
|
|
|
128
137
|
role?: 'role,
|
|
129
138
|
tabIndex?: int,
|
|
130
139
|
@as("aria-label") ariaLabel?: 'ariaLabel,
|
|
131
|
-
@as("aria-hidden") ariaHidden?:
|
|
132
|
-
@as("aria-expanded") ariaExpanded?:
|
|
133
|
-
@as("aria-selected") ariaSelected?:
|
|
140
|
+
@as("aria-hidden") ariaHidden?: 'ariaHidden,
|
|
141
|
+
@as("aria-expanded") ariaExpanded?: 'ariaExpanded,
|
|
142
|
+
@as("aria-selected") ariaSelected?: 'ariaSelected,
|
|
134
143
|
/* Data attributes */
|
|
135
144
|
data?: Obj.t,
|
|
136
145
|
/* Event handlers */
|
|
@@ -169,6 +178,26 @@ module Elements = {
|
|
|
169
178
|
}
|
|
170
179
|
}
|
|
171
180
|
|
|
181
|
+
/* Helper to convert boolean attribute values (static bool, signal, or computed) to Component.attrValue */
|
|
182
|
+
let convertBoolAttrValue = (key: string, value: 'a): (string, Component.attrValue) => {
|
|
183
|
+
// Check if it's a function (computed)
|
|
184
|
+
if typeof(value) == #function {
|
|
185
|
+
// It's a computed function that returns bool
|
|
186
|
+
let f: unit => bool = Obj.magic(value)
|
|
187
|
+
Component.computedAttr(key, () => f() ? "true" : "false")
|
|
188
|
+
} else if typeof(value) == #object && hasId(value)->Option.isSome {
|
|
189
|
+
// It's a signal of bool
|
|
190
|
+
let sig: Signal.t<bool> = Obj.magic(value)
|
|
191
|
+
// Create a computed signal that converts bool to string
|
|
192
|
+
let strSignal = Computed.make(() => Signal.get(sig) ? "true" : "false")
|
|
193
|
+
Component.signalAttr(key, strSignal)
|
|
194
|
+
} else {
|
|
195
|
+
// It's a static bool
|
|
196
|
+
let b: bool = Obj.magic(value)
|
|
197
|
+
Component.attr(key, b ? "true" : "false")
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
172
201
|
/* Convert props to attrs array */
|
|
173
202
|
let propsToAttrs = (
|
|
174
203
|
props: props<
|
|
@@ -194,6 +223,14 @@ module Elements = {
|
|
|
194
223
|
'height,
|
|
195
224
|
'role,
|
|
196
225
|
'ariaLabel,
|
|
226
|
+
'disabled,
|
|
227
|
+
'checked,
|
|
228
|
+
'required,
|
|
229
|
+
'readOnly,
|
|
230
|
+
'multiple,
|
|
231
|
+
'ariaHidden,
|
|
232
|
+
'ariaExpanded,
|
|
233
|
+
'ariaSelected,
|
|
197
234
|
>,
|
|
198
235
|
): array<(string, Component.attrValue)> => {
|
|
199
236
|
let attrs = []
|
|
@@ -236,23 +273,23 @@ module Elements = {
|
|
|
236
273
|
}
|
|
237
274
|
|
|
238
275
|
switch props.disabled {
|
|
239
|
-
| Some(
|
|
240
|
-
|
|
|
276
|
+
| Some(v) => attrs->Array.push(convertBoolAttrValue("disabled", v))
|
|
277
|
+
| None => ()
|
|
241
278
|
}
|
|
242
279
|
|
|
243
280
|
switch props.checked {
|
|
244
|
-
| Some(
|
|
245
|
-
|
|
|
281
|
+
| Some(v) => attrs->Array.push(convertBoolAttrValue("checked", v))
|
|
282
|
+
| None => ()
|
|
246
283
|
}
|
|
247
284
|
|
|
248
285
|
switch props.required {
|
|
249
|
-
| Some(
|
|
250
|
-
|
|
|
286
|
+
| Some(v) => attrs->Array.push(convertBoolAttrValue("required", v))
|
|
287
|
+
| None => ()
|
|
251
288
|
}
|
|
252
289
|
|
|
253
290
|
switch props.readOnly {
|
|
254
|
-
| Some(
|
|
255
|
-
|
|
|
291
|
+
| Some(v) => attrs->Array.push(convertBoolAttrValue("readonly", v))
|
|
292
|
+
| None => ()
|
|
256
293
|
}
|
|
257
294
|
|
|
258
295
|
switch props.maxLength {
|
|
@@ -291,8 +328,8 @@ module Elements = {
|
|
|
291
328
|
}
|
|
292
329
|
|
|
293
330
|
switch props.multiple {
|
|
294
|
-
| Some(
|
|
295
|
-
|
|
|
331
|
+
| Some(v) => attrs->Array.push(convertBoolAttrValue("multiple", v))
|
|
332
|
+
| None => ()
|
|
296
333
|
}
|
|
297
334
|
|
|
298
335
|
switch props.accept {
|
|
@@ -365,20 +402,17 @@ module Elements = {
|
|
|
365
402
|
}
|
|
366
403
|
|
|
367
404
|
switch props.ariaHidden {
|
|
368
|
-
| Some(
|
|
369
|
-
| Some(false) => attrs->Array.push(Component.attr("aria-hidden", "false"))
|
|
405
|
+
| Some(v) => attrs->Array.push(convertBoolAttrValue("aria-hidden", v))
|
|
370
406
|
| None => ()
|
|
371
407
|
}
|
|
372
408
|
|
|
373
409
|
switch props.ariaExpanded {
|
|
374
|
-
| Some(
|
|
375
|
-
| Some(false) => attrs->Array.push(Component.attr("aria-expanded", "false"))
|
|
410
|
+
| Some(v) => attrs->Array.push(convertBoolAttrValue("aria-expanded", v))
|
|
376
411
|
| None => ()
|
|
377
412
|
}
|
|
378
413
|
|
|
379
414
|
switch props.ariaSelected {
|
|
380
|
-
| Some(
|
|
381
|
-
| Some(false) => attrs->Array.push(Component.attr("aria-selected", "false"))
|
|
415
|
+
| Some(v) => attrs->Array.push(convertBoolAttrValue("aria-selected", v))
|
|
382
416
|
| None => ()
|
|
383
417
|
}
|
|
384
418
|
|
|
@@ -422,6 +456,14 @@ module Elements = {
|
|
|
422
456
|
'height,
|
|
423
457
|
'role,
|
|
424
458
|
'ariaLabel,
|
|
459
|
+
'disabled,
|
|
460
|
+
'checked,
|
|
461
|
+
'required,
|
|
462
|
+
'readOnly,
|
|
463
|
+
'multiple,
|
|
464
|
+
'ariaHidden,
|
|
465
|
+
'ariaExpanded,
|
|
466
|
+
'ariaSelected,
|
|
425
467
|
>,
|
|
426
468
|
): array<(string, Dom.event => unit)> => {
|
|
427
469
|
let events = []
|
|
@@ -504,6 +546,14 @@ module Elements = {
|
|
|
504
546
|
'height,
|
|
505
547
|
'role,
|
|
506
548
|
'ariaLabel,
|
|
549
|
+
'disabled,
|
|
550
|
+
'checked,
|
|
551
|
+
'required,
|
|
552
|
+
'readOnly,
|
|
553
|
+
'multiple,
|
|
554
|
+
'ariaHidden,
|
|
555
|
+
'ariaExpanded,
|
|
556
|
+
'ariaSelected,
|
|
507
557
|
>,
|
|
508
558
|
): array<element> => {
|
|
509
559
|
switch props.children {
|
|
@@ -539,6 +589,14 @@ module Elements = {
|
|
|
539
589
|
'height,
|
|
540
590
|
'role,
|
|
541
591
|
'ariaLabel,
|
|
592
|
+
'disabled,
|
|
593
|
+
'checked,
|
|
594
|
+
'required,
|
|
595
|
+
'readOnly,
|
|
596
|
+
'multiple,
|
|
597
|
+
'ariaHidden,
|
|
598
|
+
'ariaExpanded,
|
|
599
|
+
'ariaSelected,
|
|
542
600
|
>,
|
|
543
601
|
): element => {
|
|
544
602
|
Component.Element({
|
|
@@ -575,6 +633,14 @@ module Elements = {
|
|
|
575
633
|
'height,
|
|
576
634
|
'role,
|
|
577
635
|
'ariaLabel,
|
|
636
|
+
'disabled,
|
|
637
|
+
'checked,
|
|
638
|
+
'required,
|
|
639
|
+
'readOnly,
|
|
640
|
+
'multiple,
|
|
641
|
+
'ariaHidden,
|
|
642
|
+
'ariaExpanded,
|
|
643
|
+
'ariaSelected,
|
|
578
644
|
>,
|
|
579
645
|
): element => createElement(tag, props)
|
|
580
646
|
|
|
@@ -603,6 +669,14 @@ module Elements = {
|
|
|
603
669
|
'height,
|
|
604
670
|
'role,
|
|
605
671
|
'ariaLabel,
|
|
672
|
+
'disabled,
|
|
673
|
+
'checked,
|
|
674
|
+
'required,
|
|
675
|
+
'readOnly,
|
|
676
|
+
'multiple,
|
|
677
|
+
'ariaHidden,
|
|
678
|
+
'ariaExpanded,
|
|
679
|
+
'ariaSelected,
|
|
606
680
|
>,
|
|
607
681
|
): element => createElement(tag, props)
|
|
608
682
|
|
|
@@ -631,6 +705,14 @@ module Elements = {
|
|
|
631
705
|
'height,
|
|
632
706
|
'role,
|
|
633
707
|
'ariaLabel,
|
|
708
|
+
'disabled,
|
|
709
|
+
'checked,
|
|
710
|
+
'required,
|
|
711
|
+
'readOnly,
|
|
712
|
+
'multiple,
|
|
713
|
+
'ariaHidden,
|
|
714
|
+
'ariaExpanded,
|
|
715
|
+
'ariaSelected,
|
|
634
716
|
>,
|
|
635
717
|
~key: option<string>=?,
|
|
636
718
|
_: unit,
|
|
@@ -664,6 +746,14 @@ module Elements = {
|
|
|
664
746
|
'height,
|
|
665
747
|
'role,
|
|
666
748
|
'ariaLabel,
|
|
749
|
+
'disabled,
|
|
750
|
+
'checked,
|
|
751
|
+
'required,
|
|
752
|
+
'readOnly,
|
|
753
|
+
'multiple,
|
|
754
|
+
'ariaHidden,
|
|
755
|
+
'ariaExpanded,
|
|
756
|
+
'ariaSelected,
|
|
667
757
|
>,
|
|
668
758
|
~key: option<string>=?,
|
|
669
759
|
_: unit,
|