tivex
Version:
A Small, JSX library for creating Reactive-UIs.
3 lines (2 loc) • 6.64 kB
JavaScript
const e=null,t="undefined"!=typeof document,r="dangerouslySetInnerHTML",n=e=>"function"==typeof e,c=Array.isArray,o=e=>"number"==typeof e,s=e=>"string"==typeof e,a=Object.keys,i=Object.assign,l=Array.from,f=t=>t!=e,u=e=>f(e)&&"object"==typeof e&&!c(e),d=e=>u(e)&&s(e.nodeName)&&o(e.nodeType),p=/^(ref|key|children)$/,h=/^(area|base|br|col|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/,y=/^(style|width|height|href|list|form|tabindex|download|rowspan|colspan|role|popover)$/,m=/(PointerCapture)$|Capture$/i,g=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,w=Symbol,b=w("$jsx"),$=w("$frag"),_=w("$clean"),v=w("$cleanFrag"),C=w("$brand"),x=(e,t)=>e.length===t.length,E=(e,t)=>{if(e===t)return!0;if(d(e))return d(t)&&e.isEqualNode(t);if(c(e)&&c(t)&&x(e,t))return e.every(((e,r)=>E(e,t[r])));if(u(e)&&u(t)){const r=a(e);return x(r,a(t))&&r.every((r=>E(e[r],t[r])))}return!1},S=e=>e(),L=(e,t)=>{e&&(e.forEach(t||S),e.clear())},A=e=>{d(e)&&(L(e[_]),L(e[v]),e.children&&l(e.children).forEach(A))},T={acceptCharset:"accept-charset",httpEquiv:"http-equiv",htmlFor:"for",className:"class"},k="http://www.w3.org",M=k+"/1999/xhtml",N={svg:k+"/2000/svg",math:k+"/1998/Math/MathML"};let F,j;const O=t=>{let r,n=new Set;const c=()=>t,o=()=>(!r&&j&&j.add(n.add(j.cb)),c());return o.peek=c,o.clear=()=>n.clear(),o.set=c=>{if(c===t)return;const o=t;t=c,r=!F,n.forEach((e=>{e._w?e(c,o):F?F.add(e):e()})),r=e},o.watch=e=>{e._w=1,n.add(e)},o[C]=!0,o},q=e=>{const t={};for(let r in e)t[r]=O(e[r]);const r=(e,t)=>e[t]||(()=>{throw new Error(`Cannot find ${t} in $state.`)})(),n=new Proxy(t,{get(c,o){if("$peek"===o)return e=>r(c,e).peek();if("$signal"===o)return e=>r(c,e);if("$json"===o)return()=>i({},n);if("$reset"===o)return()=>B((()=>{for(let r in t)t[r].set(e[r])}));if("$set"===o)return e=>B((()=>{for(let n in e)r(t,n).set(e[n])}));return r(c,o)()},set:(e,t,n)=>(r(e,t).set(n),!0)});return n},D=e=>q({current:e}),I=e=>{const t=new Set;return t.cb=e,t._v=Math.random(),t.clean=()=>{n(t._c)&&(t._c(),de&&de.delete(t.bye))},t.bye=()=>{t.clean(),L(t,(e=>e.delete(t.cb)))},t.isCycle=()=>j&&t._v===j._v,t},P=(e,t,r)=>{r=j,j=e;try{return t()}finally{j=r}},W=t=>P(e,t),z=e=>{const t=I((()=>{t.isCycle()||(t.clean(),t._c=P(t,e),n(t._c)&&de&&de.add(t.bye))}));return t.cb(),t.bye},H=(e,t={})=>{const r=O();let o,s,a;const i=()=>{let r=e();return c(r)?r:(n(r)&&0===r.length&&(r=r()),E(r,s)||(a=fe(r)?W((()=>pe(r,t))):r),s=r,a)},l=()=>(o||(o=I((()=>{if(o.isCycle())return o.bye();try{r.set(P(o,i))}catch(e){if(t.err)return t.err(e);throw e}})),o.cb()),r());return l[C]=1,l.watch=r.watch,l},R=e=>e,B=t=>{let r=F;!r&&(F=new Set);try{t()}finally{!r&&(r=F,F=e,r.forEach(S))}},X=e=>t&&requestAnimationFrame(e)||0,Z=e=>z((()=>e)),G=e=>{let t;return r=>t||e(r).then((e=>t=ie(e.default||e,r)))},J=e=>{const t=r=>{const n=new Map(ue._ctx),c=ue._err;return n.set(t,r.state||e),pe(r.children,{ctx:n,err:c})};return t},K=e=>ue._ctx.get(e),Q=e=>document.createTextNode(e),U=e=>document.createComment(e),V=(t,c,s,a)=>{if(!p.test(c)&&c!==r){const r=T[c]||c.toLowerCase();if(r.startsWith("bind:")){let e=r.slice(5);n(i=s)&&i[C]&&se(t,"value"===e?"onInput":"onChange",(({target:e})=>{let t=e.multiple&&e.selectedOptions?l(e.selectedOptions).map((e=>e.value)):e.value;"number"===e.type&&f(t)&&""!==t&&(t=parseInt(t)),s.set(t)})),V(t,e,s,a)}else if(n(s))s[C]?(s.watch((e=>V(t,r,e,a))),V(t,r,s(),a)):(e=>"o"==e[0]&&"n"==e[1])(r)?se(t,c,s):s.length||V(t,r,H(s,a),a);else if(u(s))V(t,r,((e,t)=>{let r="";for(let n in e){let c=e[n];if(f(c)&&""!==c){let e=n.replace(/[A-Z]/g,"-$&").toLowerCase(),s=";";"style"!==t||!o(c)||e.startsWith("--")||g.test(e)||(s="px;"),r=r+e+":"+c+s}}return r})(s,r),a);else{const n=t.nodeName,c=r in t;if("value"===r){const o=s==e||!1===s?e:s;"SELECT"===n?Y(l(t.children),o):"TEXTAREA"===n?(t[r]=o,t.textContent=o):c&&(t[r]=o)}else!y.test(r)&&c&&(t[r]=s);if(f(s)&&!1!==s){const e=!0===s?"":s;"style"===r?t.style.cssText=e:t.setAttribute(r,e)}}}var i},Y=(t=[],r)=>{r!=e&&(n(r)&&(r=r()),t.forEach((e=>{let t,n;fe(e)?(t=e.type,n=e.props||{}):(t=e.nodeName.toLowerCase(),n=e),"option"!==t?Y(l(n.children||[]),r):n.selected=c(r)?-1!==r.indexOf(n.value):r===n.value})))},ee=e=>{if(te(e)){const t=U("");t.$f=1;const r=U(""),n=e.firstChild;return(!n||n&&!n.$f)&&(e.prepend(t),e.append(r)),{start:e.firstChild,end:e.lastChild,[$]:1}}return e},te=e=>e instanceof DocumentFragment,re=(e,t)=>{const r=oe(e(),t);return e.watch(((r,n)=>{if(ue.arrDiff&&ue.arrDiff(r,n))return;const c=oe(r,t),o=e._n;o[$]?((e,{start:t,end:r})=>{const n=document.createRange();n.setStartAfter(t),n.setEndBefore(r),A(n.extractContents()),n.deleteContents(),n.insertNode(e)})(c,o):(e._n=ee(c),A(o),o.replaceWith(c))})),e._n=ee(r),r},ne=(e,...t)=>n(e)?e(...t):e,ce=(e={})=>new Proxy(e,{get:(t,r)=>"$props"===r?e:"$set"===r?e=>{const r=(e,r)=>{const n=t[e];t[e]=()=>ne(r,ne(n))};for(let t in e)r(t,e[t])}:"$default"===r?t=>{for(let r in t)r in e||(e[r]=t[r])}:ne(t[r]),set:(e,t,r)=>(e[t]=()=>r,!0)});function oe(t,a={}){if(t==e||"boolean"==typeof t)return Q("");if(n(t))return t[C]?re(t,a):re(H(t,a),a);if(s(t)||o(t))return Q(t.toString());if(c(t)){const e=document.createDocumentFragment();return t.forEach((t=>e.append(oe(t,a)))),e}if(fe(t)){let{type:e,props:c}=t;if(n(e))return c=ce(c),oe(e(c),a);const o=document.createElementNS(a.ns||(a.ns=N[e])||M,e,c.is&&c);"select"===e&&Y(c.children,c["bind:value"]||c.value);for(let e in c)V(o,e,c[e],a);return u(c.ref)&&(c.ref.current=o),h.test(e)?o:(f(c[r])?o.innerHTML=c[r].__html:f(c.children)&&o.append(oe(c.children,a)),o)}return d(t)?t:Q(String(t))}const se=(e,t,r)=>{let n=t!==(t=t.replace(m,"$1"));t=t.toLowerCase().slice(2),e.addEventListener(t,r,n),Z((()=>e.removeEventListener(t,r,n)))};function ae(e,t){t&&t.appendChild(oe(e))}function ie(e,t,...r){return t||(t={}),{type:e,props:r.length>0?i(i({},t),{children:r}):t,[b]:1}}const le=e=>e.children;ie.Fragment=le;const fe=e=>u(e)&&f(e[b]),ue={};let de;const pe=(r,n={})=>{const c=ue._err,o=ue._ctx;n.clean==e&&(n.clean=!0),n.err&&(ue._err=n.err),n.ctx&&(ue._ctx=new Map(n.ctx));try{if(t)return n.clean?((t,r,n,c)=>{if(c=de,de=new Set,(n=oe(t,r))[_]=de,de=c,te(n)&&n[_].size){const t=n.firstChild;t&&(t[v]=n[_],n[_]=e)}return n})(r,n):oe(r,n);const c=ue.renderToString;return c?c(r):r}finally{ue._err=c,ue._ctx=o}};export{B as $batch,R as $computed,K as $context,z as $effect,G as $lazy,X as $mount,D as $ref,q as $state,Z as $unmount,W as $untrack,le as Fragment,A as cleanup,J as createContext,ie as h,d as isElem,fe as isValidElement,pe as jsxRender,ue as options,ce as propsToProxy,ae as render,oe as renderToElement};
//# sourceMappingURL=index.js.map