UNPKG

vanjs-htm

Version:

HTM with VanJS for JSX-like syntax in vanilla JavaScript using VanJS reactivity.

2 lines 1.55 kB
'use strict';var S=b=>{let {htm:y,van:h,vanX:v}=b,u=document,f,g=t=>typeof t=="function",c=t=>typeof t=="string",r=Object.hasOwn,a={f:{e:"for:each"},p:{m:"portal:mount"},s:{f:"show:fallback",w:"show:when"},svg:"vh:svg"},d=(t,e)=>{let o=t[e];return delete t[e],o},p=t=>r(t,a.s.w),T=(t,e,o,l=true)=>{let n=d(e,a.s.f)??"",i=d(e,a.s.w);return ()=>(i&&typeof i=="object"&&"val"in i?i.val:g(i)?i():i)?l?t(e,...o):t():g(n)?n():n},w=0,D=(t,e,o)=>{let l=d(e,a.f.e),n=()=>v.list(t(e),l,o);return p(e)?T(n,e,f,false):n()},E=(t,e,o)=>{let l=d(e,a.p.m),n=c(l)?u.querySelector(l):l,i=`p-${w++}`,m=()=>{var C;let s=t(e,...o);return (C=s==null?void 0:s.setAttribute)==null||C.call(s,"p:id",i),s};return h.add(n,p(e)?T(m,e,f,false):m()),u.createComment(i)},P=new Set(["circle","clipPath","defs","desc","ellipse","filter","foreignObject","g","line","linearGradient","marker","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","symbol","text","textPath","tspan","use"]);function F(t,e,...o){this[0]=3;let l=c(t)?(e&&r(e,a.svg)?d(e,a.svg):P.has(t))?h.tags("http://www.w3.org/2000/svg")[t]:h.tags[t]:t,n=o;if(e){if(r(e,a.f.e))return D(l,e,n[0]);if(r(e,a.p.m))return E(l,e,n);if(r(e,a.s.w))return T(l,e,n)}return l(e,...n)}return {html:y.bind(F),rmPortals:(t,e=u.body)=>{var i;let o=c(e)?u.querySelector(e):e;if(!o)return;let l=[],n=t.firstChild;for(;n;)n.nodeType===Node.COMMENT_NODE&&n.data.startsWith("p-")&&l.push(n.data),n=n.nextSibling;for(let m of l)(i=o.querySelector(`[p\\:id="${m}"]`))==null||i.remove();}}},x=S; module.exports=x;