UNPKG

tivex

Version:

A Small, JSX library for creating Reactive-UIs.

3 lines (2 loc) 6.98 kB
const e=null,t="undefined"!=typeof document,r="dangerouslySetInnerHTML",n=e=>"function"==typeof e,c=Array.isArray,o=e=>"number"==typeof e,i=e=>"string"==typeof e,s=Object.keys,a=Object.assign,l=Array.from,d=t=>t!=e,f=e=>d(e)&&"object"==typeof e&&!c(e),u=e=>f(e)&&i(e.nodeName)&&o(e.nodeType),h=/^(ref|key|children)$/,p=/^(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,$=w("$frag"),b=w("$clean"),C=w("$cleanFrag"),v=w("$brand"),_=(e,t)=>e.length===t.length,x=(e,t)=>{if(e===t)return!0;if(u(e))return u(t)&&e.isEqualNode(t);if(c(e)&&c(t)&&_(e,t))return e.every(((e,r)=>x(e,t[r])));if(f(e)&&f(t)){const r=s(e);return _(r,s(t))&&r.every((r=>x(e[r],t[r])))}return!1},E=e=>e(),S=(e,t)=>{e&&(e.forEach(t||E),e.clear())},L=e=>{u(e)&&(S(e[b]),S(e[C]),e.children&&l(e.children).forEach(L))},A={acceptCharset:"accept-charset",httpEquiv:"http-equiv",htmlFor:"for",className:"class"},N="http://www.w3.org",T=N+"/1999/xhtml",k={svg:N+"/2000/svg",math:N+"/1998/Math/MathML"};let M,F;const O=t=>{let r,n=new Set;const c=()=>t,o=()=>(!r&&F&&F.add(n.add(F.cb)),c());return o.peek=c,o.clear=()=>n.clear(),o.set=c=>{if(c===t)return;const o=t;t=c,r=!M,n.forEach((e=>{e._w?e(c,o):M?M.add(e):e()})),r=e},o.watch=e=>{e._w=1,n.add(e)},o[v]=!0,o},j=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()=>a({},n);if("$reset"===o)return()=>R((()=>{for(let r in t)t[r].set(e[r])}));if("$set"===o)return e=>R((()=>{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},q=e=>j({current:e}),D=e=>{const t=new Set;return t.cb=e,t._v=Math.random(),t.clean=()=>{n(t._c)&&(t._c(),ue&&ue.delete(t.bye))},t.bye=()=>{t.clean(),S(t,(e=>e.delete(t.cb)))},t.isCycle=()=>F&&t._v===F._v,t},I=(e,t,r)=>{r=F,F=e;try{return t()}finally{F=r}},P=t=>I(e,t),W=e=>{const t=D((()=>{t.isCycle()||(t.clean(),t._c=I(t,e),n(t._c)&&ue&&ue.add(t.bye))}));return t.cb(),t.bye},z=(e,t={})=>{const r=O();let o,i,s;const a=()=>{let r=e();return c(r)?r:(n(r)&&0===r.length&&(r=r()),x(r,i)||(s=de(r)?P((()=>he(r,t))):r),i=r,s)},l=()=>(o||(o=D((()=>{if(o.isCycle())return o.bye();try{r.set(I(o,a))}catch(e){if(t.err)return t.err(e);throw e}})),o.cb()),r());return l[v]=1,l.watch=r.watch,l},H=e=>e,R=t=>{let r=M;!r&&(M=new Set);try{t()}finally{!r&&(r=M,M=e,r.forEach(E))}},B=e=>t&&requestAnimationFrame(e)||0,X=e=>W((()=>e)),Z=e=>{let t;return r=>t||e(r).then((e=>t=ae(e.default||e,r)))},G=e=>{const t=r=>{const n=new Map(fe._ctx),c=fe._err;return n.set(t,r.state||e),he(r.children,{ctx:n,err:c})};return t},J=e=>fe._ctx.get(e),K=e=>document.createTextNode(e),Q=e=>document.createComment(e),U=(t,c,i,s)=>{if(!h.test(c)&&c!==r){const r=A[c]||c.toLowerCase();if(r.startsWith("bind:")){let e=r.slice(5);n(a=i)&&a[v]&&oe(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&&d(t)&&""!==t&&(t=parseInt(t)),i.set(t)})),U(t,e,i,s)}else if(n(i))i[v]?(i.watch((e=>U(t,r,e,s))),U(t,r,i(),s)):(e=>"o"==e[0]&&"n"==e[1])(r)?oe(t,c,i):i.length||U(t,r,z(i,s),s);else if(f(i))U(t,r,((e,t)=>{let r="";for(let n in e){let c=e[n];if(d(c)&&""!==c){let e=n.replace(/[A-Z]/g,"-$&").toLowerCase(),i=";";"style"!==t||!o(c)||e.startsWith("--")||g.test(e)||(i="px;"),r=r+e+":"+c+i}}return r})(i,r),s);else{const n=t.nodeName,c=r in t;if("value"===r){const o=i==e||!1===i?e:i;"SELECT"===n?V(l(t.children),o):"TEXTAREA"===n?(t[r]=o,t.textContent=o):c&&(t[r]=o)}else!y.test(r)&&c&&(t[r]=i);if(d(i)&&!1!==i){const e=!0===i?"":i;"style"===r?t.style.cssText=e:t.setAttribute(r,e)}}}var a},V=(t=[],r)=>{r!=e&&(n(r)&&(r=r()),t.forEach((e=>{let t,n;de(e)?(t=e.type,n=e.props||{}):(t=e.nodeName.toLowerCase(),n=e),"option"!==t?V(l(n.children||[]),r):n.selected=c(r)?-1!==r.indexOf(n.value):r===n.value})))},Y=e=>{if(ee(e)){const t=Q("");t.$f=1;const r=Q(""),n=e.firstChild;return(!n||n&&!n.$f)&&(e.prepend(t),e.append(r)),{start:e.firstChild,end:e.lastChild,[$]:1}}return e},ee=e=>e instanceof DocumentFragment,te=(e,t)=>{const r=ce(e(),t);return e.watch(((r,n)=>{if(fe.arrDiff&&fe.arrDiff(r,n))return;const c=ce(r,t),o=e._n;o[$]?((e,{start:t,end:r})=>{const n=document.createRange();n.setStartAfter(t),n.setEndBefore(r),L(n.extractContents()),n.deleteContents(),n.insertNode(e)})(c,o):(e._n=Y(c),L(o),o.replaceWith(c))})),e._n=Y(r),r},re=(e,...t)=>n(e)?e(...t):e,ne=(e={})=>new Proxy(e,{get:(t,r)=>"$props"===r?e:"$set"===r?e=>{const r=(e,r)=>{const n=t[e];t[e]=()=>re(r,re(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])}:"children"===r&&c(t[r])?t[r].map((e=>re(e))):re(t[r]),set:(e,t,r)=>(e[t]=()=>r,!0)});function ce(t,s={}){if(t==e||"boolean"==typeof t)return K("");if(n(t))return t[v]?te(t,s):te(z(t,s),s);if(i(t)||o(t))return K(t.toString());if(c(t)){const e=document.createDocumentFragment();return t.forEach((t=>e.append(ce(t,s)))),e}if(de(t)){let e,{type:c,props:o}=t;if(n(c))return o=ne(o),ce(c(o),s);if(s.hyd){const{nodes:t,i:r}=s.hyd;e=t[r],s.hyd.i++}e||(e=document.createElementNS(s.ns||(s.ns=k[c])||T,c,o.is&&o)),"select"===c&&V(o.children,o["bind:value"]||o.value);for(let t in o)U(e,t,o[t],s);if(f(o.ref)&&(o.ref.current=e),p.test(c))return e;if(d(o[r]))e.innerHTML=o[r].__html;else if(d(o.children))if(s.hyd){const t=a({},s);t.hyd={nodes:l(e.children),i:0},e.replaceChildren(ce(o.children,t))}else e.append(ce(o.children,s));return e}return u(t)?t:K(String(t))}const oe=(e,t,r)=>{let n=t!==(t=t.replace(m,"$1"));t=t.toLowerCase().slice(2),e.addEventListener(t,r,n),X((()=>e.removeEventListener(t,r,n)))};function ie(e,t){if(t){const r=ce(e);if(t.hasChildNodes())return t.replaceChildren(r);t.appendChild(r)}}function se(e,t){t&&ce(e,{hyd:{nodes:l(t.children),i:0}})}function ae(e,t,...r){return t||(t={}),{type:e,props:r.length>0?a(a({},t),{children:r}):t,$$tivex:!0}}const le=e=>e.children;ae.Fragment=le;const de=e=>f(e)&&e.$$tivex,fe={};let ue;const he=(r,n={})=>{const c=fe._err,o=fe._ctx;n.clean==e&&(n.clean=!0),n.err&&(fe._err=n.err),n.ctx&&(fe._ctx=new Map(n.ctx));try{if(t)return n.clean?((t,r,n,c)=>{if(c=ue,ue=new Set,(n=ce(t,r))[b]=ue,ue=c,ee(n)&&n[b].size){const t=n.firstChild;t&&(t[C]=n[b],n[b]=e)}return n})(r,n):ce(r,n);const c=fe.renderToString;return c?c(r):r}finally{fe._err=c,fe._ctx=o}};export{R as $batch,H as $computed,J as $context,W as $effect,Z as $lazy,B as $mount,q as $ref,j as $state,X as $unmount,P as $untrack,le as Fragment,L as cleanup,G as createContext,ae as h,se as hydrate,u as isElem,de as isValidElement,he as jsxRender,fe as options,ne as propsToProxy,ie as render,ce as renderToElement}; //# sourceMappingURL=index.js.map