UNPKG

@anywhichway/trui

Version:
1 lines 2.56 kB
let _d_;const dM=new Map,rM=new WeakMap,ctx=Object.defineProperty({},"_d_",{get:()=>_d_,set:e=>_d_=e}),dp=Object.defineProperty,doc=document,observe=e=>rctr((()=>{const t=_d_;_d_=e;const r=e();return _d_=t,r})),rctr=e=>{let t=e.valueOf();const r=Reflect,n=e=>{const t=dM.get(e);if(t){for(let e of[...t])"function"==typeof e?e():e.isConnected?e.isConnected&&e!==this&&rM.get(e)?.call(e):t.delete(e);0===t.size&&dM.delete(e)}},o=()=>"function"==typeof t?t():t,c=new Proxy(e,{get(e,t){if("toJSON"===t||"valueOf"===t)return()=>o();if("toString"===t)return()=>o().toString();if("isReactor"===t)return!0;if("peek"===t||"rawVal"==t)return o();_d_&&dM.set(e,(dM.get(e)||new Set).add(_d_));const n="value"===t||"val"==t?o():r.get(e,t);return n?.isReactor?n:n&&"object"==typeof value?e[t]=rctr(n):n},set:(e,o,c)=>(t!==c&&("value"===o?t=c:r.set(e,o,c),n(e)),!0),deleteProperty(e,o){let c=!0;"value"===o?t=void 0:r.deleteProperty(e,o,v),n(e)}});return"function"==typeof e&&o(),c},state=e=>({object:e=>e?rctr(e):e,function:e=>rctr(e),boolean:e=>rctr(new Boolean(e)),number:e=>rctr(new Number(e)),string:e=>rctr(new String(e)),bigint:e=>rctr(new BigInt(e)),undefined(e){}}[typeof e](e)),tags=new Proxy({},{get:(e,t)=>(e,...r)=>function n(){e?(n.attrs=e,r&&(n.children=r),"function"==typeof e&&(e=e())):(e="function"==typeof n.attrs?n.attrs():n.attrs||{},r=n.children);const o=_d_,c=doc.createElement(t);("object"!=typeof e||e&&"Object"!==e.constructor.name)&&(r=[e,...r],e={}),r=r.flat(),rM.set(c,n),_d_=c,!e.oncreate||e.oncreate(dp(new Event("create",{bubbles:!0,cancelable:!1}),"target",{value:c}));for(let t in e){if(!isNaN(parseInt(t)))continue;if(t.startsWith("on")){c.addEventListener(t.slice(2),(async r=>{const n=_d_;_d_=r,await e[t](r),_d_=n}));continue}if(trui.xon&&t.startsWith("x-on")){trui.xon(c,t,ctx);continue}const r="function"==typeof e[t]?e[t].call(c):e[t],n=typeof r;["style","dataset"].includes(t)&&"object"===n?Object.assign(c[t],r):"value"===t?c.value=r:c.setAttribute(t,r&&"object"===n?JSON.stringify(r):r),"href"===t&&trui.load&&dp(c,"load",{configurable:!0,value:trui.load})}for(let e of r)"function"==typeof e&&(e=e()),e.nodeType===Node.TEXT_NODE||e&&"object"==typeof e&&e instanceof Node?c.appendChild(e):c.appendChild(doc.createTextNode(e+""));return _d_=o,this instanceof Node&&(rM.delete(this),dM.forEach(((e,t,r)=>{e.delete(this),0===e.size&&r.delete(t)})),this.replaceWith(c)),c}()}),trui=(e={})=>Object.assign(trui,e),derive=observe;Object.assign(trui,{tags:tags,state:state,observe:observe,derive:derive,ctx:ctx});export{trui,trui as default};