UNPKG

uhtml-ssr

Version:

uhtml for Service Worker, Web Worker, NodeJS, and other SSR cases

3 lines (2 loc) 3.18 kB
self.uhtml=function(e){"use strict";class t extends WeakMap{set(e,t){return super.set(e,t),t}} /*! (c) Andrea Giammarchi - ISC */const n=/^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i,r=/<([a-z]+[a-z0-9:._-]*)([^>]*?)(\/?)>/g,s=/([^\s\\>"'=]+)\s*=\s*(['"]?)\x01/g,c=/[\x01\x02]/g;const{replace:a}="",o=/[&<>'"]/g,i={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#39;",'"':"&quot;"},l=e=>i[e],u=e=>a.call(e,o,l);const{isArray:f}=Array,{toString:p}=Function,{keys:g}=Object,h=(e=>{let t;return n=>{t!==n&&(t=n,"function"==typeof n?n(e):n.current=e)}})(null),$="isµ"+Date.now(),b=/([^\s>]+)[\s\S]*$/,w=new RegExp(`(\x3c!--${$}(\\d+)--\x3e|\\s*${$}(\\d+)=([^\\s>]))`,"g"),m=(e,t,n)=>` ${e}=${t}${u(n)}${t}`,d=e=>{switch(typeof e){case"string":return u(e);case"boolean":case"number":return String(e);case"object":switch(!0){case f(e):return e.map(d).join("");case e instanceof y:return e.toString()}break;case"function":return d(e())}return null==e?"":u(String(e))};let k=!1;class x{constructor(e,t){this._=(...n)=>e(...n,t)}}class y extends String{}const j=(e,t,a)=>{const o=((e,t,a)=>{let o=0;return e.join("").trim().replace(r,((e,t,r,c)=>{let o=t+r.replace(s,"=$2$1").trimEnd();return c.length&&(o+=a||n.test(t)?" /":"></"+t),"<"+o+">"})).replace(c,(e=>""===e?"\x3c!--"+t+o+++"--\x3e":t+o++))})(e,$,a),i=[];let l=0,u=null;for(;u=w.exec(o);){const e=o.slice(l,u.index);if(l=u.index+u[0].length,u[2])i.push((t=>e+d(t)));else{let t="",n=u[4];switch(n){case'"':case"'":const e=o.indexOf(n,l);t=o.slice(l,e),l=e+1;break;default:t=o.slice(--l).replace(b,"$1"),l+=t.length,n='"'}switch(!0){case"aria"===t:i.push((t=>e+g(t).map(S,t).join("")));break;case"ref"===t:i.push((t=>(h(t),e)));break;case"?"===t[0]:const r=t.slice(1).toLowerCase();i.push((t=>{let n=e;return t&&(n+=` ${r}`),n}));break;case"."===t[0]:const s=t.slice(1).toLowerCase();i.push("dataset"===s?t=>e+g(t).filter((e=>null!=t[e])).map(A,t).join(""):t=>{let r=e;return null!=t&&!1!==t&&(r+=!0===t?` ${s}`:m(s,n,t)),r});break;case"@"===t[0]:t="on"+t.slice(1);case"o"===t[0]&&"n"===t[1]:i.push((r=>{let s=e;switch(typeof r){case"object":if(!(t in r))break;if("function"!=typeof(r=r[t]))break;case"function":if(r.toString===p)break;case"string":s+=m(t,n,r)}return s}));break;default:i.push((r=>{let s=e;if(null!=r){if(k&&r instanceof x&&null==(r=r._(null,t)))return s;s+=m(t,n,r)}return s}))}}}const{length:f}=i;if(f!==t)throw new Error(`invalid template ${e}`);if(f){const e=i[f-1],t=o.slice(l);i[f-1]=n=>e(n)+t}else i.push((()=>o));return i};function S(e){const t=u(this[e]);return"role"===e?` role="${t}"`:` aria-${e.toLowerCase()}="${t}"`}function A(e){return` data-${t=e,t.replace(/(([A-Z0-9])([A-Z0-9][a-z]))|(([a-z])([A-Z]))/g,"$2$5-$3$6").toLowerCase()}="${u(this[e])}"`;var t}const v=new t,z=e=>{const t=(t,...n)=>{const{length:r}=n,s=v.get(t)||v.set(t,j(t,r,e));return new y(r?n.map(E,s).join(""):s[0]())};return t.node=t,t.for=()=>t,t},C=z(!1),L=z(!0);function E(e,t){return this[t](e)}return e.Hole=y,e.foreign=(e,t)=>(k=!0,new x(e,t)),e.html=C,e.render=(e,t)=>{const n=("function"==typeof t?t():t).toString();return"function"==typeof e?e(n):(e.write(n),e)},e.svg=L,e}({});