UNPKG

uhtml

Version:
5 lines (4 loc) • 8.33 kB
/*! (c) Andrea Giammarchi */ let e=null;const t=t=>{let n=e;n||(e=new Set);try{t()}finally{if(!n){[e,n]=[null,e];for(const e of n)e._()}}},n=e=>{const t=[...e];return e.clear(),t};class r extends Set{constructor(e){super()._=e}dispose(){for(const e of n(this))e.delete(this),e.dispose?.()}}let s=null;const l=e=>{const t=new r((()=>{const n=s;s=t;try{e()}finally{s=n}}));return t},o=e=>{let t,n=l((()=>{t?.call?.(),t=e()}));return s&&s.add(n),n._(),()=>(t?.call?.(),n.dispose())},i=e=>{let t,n=s;return s=null,t=e(),s=n,t};class c extends Set{constructor(e){super()._=e}get value(){return s&&s.add(this.add(s)),this._}set value(t){if(this._!==t){this._=t;const r=!e;for(const t of n(this))r?t._():e.add(t)}}peek(){return this._}toJSON(){return this.value}valueOf(){return this.value}toString(){return String(this.value)}}const a=e=>new c(e);class u extends c{constructor(e,t){super(t).f=e,this.e=null}get value(){return this.e||(this.e=l((()=>{super.value=this.f(this._)})))._(),super.value}set value(e){throw new Error("computed is read-only")}}const d=(e,t)=>new u(e,t);const{isArray:h}=Array,{getPrototypeOf:f,getOwnPropertyDescriptor:p}=Object,g=[],v=()=>document.createRange(),m=(e,t,n)=>(e.set(t,n),n),b=(e,t)=>t.reduceRight(w,e),w=(e,t)=>e.childNodes[t],{setPrototypeOf:C}=Object;let x;var y=(e,t,n)=>(x||(x=v()),n?x.setStartAfter(e):x.setStartBefore(e),x.setEndAfter(t),x.deleteContents(),e);const $=({firstChild:e,lastChild:t},n)=>y(e,t,n);let N=!1;const k=(e,t)=>N&&11===e.nodeType?1/t<0?t?$(e,!0):e.lastChild:t?e.valueOf():e.firstChild:e,O=e=>document.createComment(e);class S extends((e=>{function t(e){return C(e,new.target.prototype)}return t.prototype=e.prototype,t})(DocumentFragment)){#e=O("<>");#t=O("</>");#n=g;constructor(e){super(e),this.replaceChildren(this.#e,...e.childNodes,this.#t),N=!0}get firstChild(){return this.#e}get lastChild(){return this.#t}get parentNode(){return this.#e.parentNode}remove(){$(this,!1)}replaceWith(e){$(this,!0).replaceWith(e)}valueOf(){const{parentNode:e}=this;if(e===this)this.#n===g&&(this.#n=[...this.childNodes]);else{if(e){let{firstChild:e,lastChild:t}=this;for(this.#n=[e];e!==t;)this.#n.push(e=e.nextSibling)}this.replaceChildren(...this.#n)}return this}}const W=(e,t,n)=>e.setAttribute(t,n),M=(e,t)=>e.removeAttribute(t);let _;const A=(e,t,n)=>{n=n.slice(1),_||(_=new WeakMap);const r=_.get(e)||m(_,e,{});let s=r[n];return s&&s[0]&&e.removeEventListener(n,...s),s=h(t)?t:[t,!1],r[n]=s,s[0]&&e.addEventListener(n,...s),t},E=(e,t)=>{const{t:n,n:r}=e;let s=!1;switch(typeof t){case"object":if(null!==t){(r||n).replaceWith(e.n=t.valueOf());break}case"undefined":s=!0;default:n.data=s?"":t,r&&(e.n=null,r.replaceWith(n))}return t},T=(e,t,n)=>e[n]=t,j=(e,t,n)=>T(e,t,n.slice(1)),B=(e,t,n)=>null==t?(M(e,n),t):T(e,t,n),D=(e,t)=>("function"==typeof t?t(e):t.current=e,t),P=(e,t,n)=>(null==t?M(e,n):W(e,n,t),t),R=(e,t,n)=>(e.toggleAttribute(n.slice(1),t),t),z=(e,t,n)=>{const{length:r}=t;if(e.data=`[${r}]`,r)return((e,t,n,r,s)=>{const l=n.length;let o=t.length,i=l,c=0,a=0,u=null;for(;c<o||a<i;)if(o===c){const t=i<l?a?r(n[a-1],-0).nextSibling:r(n[i],0):s;for(;a<i;)e.insertBefore(r(n[a++],1),t)}else if(i===a)for(;c<o;)u&&u.has(t[c])||e.removeChild(r(t[c],-1)),c++;else if(t[c]===n[a])c++,a++;else if(t[o-1]===n[i-1])o--,i--;else if(t[c]===n[i-1]&&n[a]===t[o-1]){const s=r(t[--o],-0).nextSibling;e.insertBefore(r(n[a++],1),r(t[c++],-0).nextSibling),e.insertBefore(r(n[--i],1),s),t[o]=n[i]}else{if(!u){u=new Map;let e=a;for(;e<i;)u.set(n[e],e++)}if(u.has(t[c])){const s=u.get(t[c]);if(a<s&&s<i){let l=c,d=1;for(;++l<o&&l<i&&u.get(t[l])===s+d;)d++;if(d>s-a){const l=r(t[c],0);for(;a<s;)e.insertBefore(r(n[a++],1),l)}else e.replaceChild(r(n[a++],1),r(t[c++],-1))}else c++}else e.removeChild(r(t[c++],-1))}return n})(e.parentNode,n,t,k,e);switch(n.length){case 1:n[0].remove();case 0:break;default:y(k(n[0],0),k(n.at(-1),-0),!1)}return g},F=new Map([["aria",(e,t)=>{for(const n in t){const r=t[n],s="role"===n?n:`aria-${n}`;null==r?M(e,s):W(e,s,r)}return t}],["class",(e,t)=>B(e,t,null==t?"class":"className")],["data",(e,t)=>{const{dataset:n}=e;for(const e in t)null==t[e]?delete n[e]:n[e]=t[e];return t}],["ref",D],["style",(e,t)=>null==t?B(e,t,"style"):T(e.style,t,"cssText")]]),L=(e,t,n)=>{switch(t[0]){case".":return j;case"?":return R;case"@":return A;default:return n||"ownerSVGElement"in e?"ref"===t?D:P:F.get(t)||(t in e?t.startsWith("on")?T:((e,t)=>{let n;do{n=p(e,t)}while(!n&&(e=f(e)));return n})(e,t)?.set?B:P:P)}},Z=(e,t)=>(e.textContent=null==t?"":t,t),G=(e,t,n)=>({a:e,b:t,c:n}),H=()=>G(null,null,g);var J=e=>(t,n)=>{const{a:r,b:s,c:l}=e(t,n),o=document.importNode(r,!0);let i=g;if(s!==g){i=[];for(let e,t,n=0;n<s.length;n++){const{a:r,b:l,c:h}=s[n],f=r===t?e:e=b(o,t=r);i[n]=(c=l,a=f,u=h,d=l===z?[]:l===E?H():null,{v:g,u:c,t:a,n:u,c:d})}}var c,a,u,d;return((e,t)=>({b:e,c:t}))(l?o.firstChild:new S(o),i)};const V=/^(?:plaintext|script|style|textarea|title|xmp)$/i,q=/^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i,I=/<([a-zA-Z0-9]+[a-zA-Z0-9:._-]*)([^>]*?)(\/?)>/g,K=/([^\s\\>"'=]+)\s*=\s*(['"]?)\x01/g,Q=/[\x01\x02]/g;let U,X,Y=document.createElement("template");var ee=(e,t)=>{if(t)return U||(U=document.createElementNS("http://www.w3.org/2000/svg","svg"),X=v(),X.selectNodeContents(U)),X.createContextualFragment(e);Y.innerHTML=e;const{content:n}=Y;return Y=Y.cloneNode(!1),n};const te=e=>{const t=[];let n;for(;n=e.parentNode;)t.push(t.indexOf.call(n.childNodes,e)),e=n;return t},ne=()=>document.createTextNode(""),re=(e,t,n)=>{const r=ee(((e,t,n)=>{let r=0;return e.join("").trim().replace(I,((e,t,r,s)=>`<${t}${r.replace(K,"=$2$1").trimEnd()}${s?n||q.test(t)?" /":`></${t}`:""}>`)).replace(Q,(e=>""===e?`\x3c!--${t+r++}--\x3e`:t+r++))})(e,le,n),n),{length:s}=e;let l=g;if(s>1){const e=[],o=document.createTreeWalker(r,129);let i=0,c=`${le}${i++}`;for(l=[];i<s;){const r=o.nextNode();if(8===r.nodeType){if(r.data===c){const n=h(t[i-1])?z:E;n===E&&e.push(r),l.push(G(te(r),n,null)),c=`${le}${i++}`}}else{let e;for(;r.hasAttribute(c);){e||(e=te(r));const t=r.getAttribute(c);l.push(G(e,L(r,t,n),t)),M(r,c),c=`${le}${i++}`}!n&&V.test(r.localName)&&r.textContent.trim()===`\x3c!--${c}--\x3e`&&(l.push(G(e||te(r),Z,null)),c=`${le}${i++}`)}}for(i=0;i<e.length;i++)e[i].replaceWith(ne())}const{childNodes:o}=r;let{length:i}=o;return i<1?(i=1,r.appendChild(ne())):1===i&&1!==s&&1!==o[0].nodeType&&(i=0),m(se,e,G(r,l,1===i))},se=new WeakMap,le="isµ";var oe=e=>(t,n)=>se.get(t)||re(t,n,e);const ie=J(oe(!1)),ce=J(oe(!0)),ae=(e,{s:t,t:n,v:r})=>{if(e.a!==n){const{b:s,c:l}=(t?ce:ie)(n,r);e.a=n,e.b=s,e.c=l}for(let{c:t}=e,n=0;n<t.length;n++){const e=r[n],s=t[n];switch(s.u){case z:s.v=z(s.t,ue(s.c,e),s.v);break;case E:const t=e instanceof de?ae(s.c||(s.c=H()),e):(s.c=null,e);t!==s.v&&(s.v=E(s,t));break;default:e!==s.v&&(s.v=s.u(s.t,e,s.n,s.v))}}return e.b},ue=(e,t)=>{let n=0,{length:r}=t;for(r<e.length&&e.splice(r);n<r;n++){const r=t[n];r instanceof de?t[n]=ae(e[n]||(e[n]=H()),r):e[n]=null}return t};class de{constructor(e,t,n){this.s=e,this.t=t,this.v=n}toDOM(e=H()){return ae(e,this)}} /*! (c) Andrea Giammarchi - MIT */const he=e=>(t,...n)=>new de(e,t,n),fe=he(!1),pe=he(!0),ge=new WeakMap;var ve=(e,t,n)=>{const r=ge.get(e)||m(ge,e,H()),{b:s}=r,l=t,o=l instanceof de?l.toDOM(r):l;return s!==o&&e.replaceChildren((r.b=o).valueOf()),e}; /*! (c) Andrea Giammarchi - MIT */const me=new WeakMap,be=e=>(t,n)=>{const r=me.get(t)||m(me,t,new Map);return r.get(n)||m(r,n,function(t,...n){return new de(e,t,n).toDOM(this)}.bind(H()))},we=be(!1),Ce=be(!0),xe=new FinalizationRegistry((([e,t,n])=>{n&&console.debug(`%c${String(t)}`,"font-weight:bold","collected"),e(t)})),ye=Object.create(null),$e=new WeakMap,Ne=e=>e();let ke=!0;const Oe=e=>{const t=$e.get(e);var n;t&&(ke&&$e.delete(e),n=t,xe.unregister(n),t())},Se=(e=>(t,n)=>{if(ke="function"!=typeof n,Oe(t),ke)return ve(t,n);ke=!0;const r=new WeakRef(t),s=e((()=>{ve(r.deref(),n())}));return $e.set(t,s),((e,t,{debug:n,handler:r,return:s,token:l=e}=ye)=>{const o=s||new Proxy(e,r||ye),i=[o,[t,e,!!n]];return!1!==l&&i.push(l),xe.register(...i),o})(s,Ne,{return:t})})(o);export{u as Computed,de as Hole,c as Signal,F as attr,t as batch,d as computed,Oe as detach,o as effect,fe as html,we as htmlFor,Se as render,a as signal,pe as svg,Ce as svgFor,i as untracked};