@skirtle/vue-vnode-utils
Version:
Utilities for manipulating Vue 3 VNodes
1 lines • 2.79 kB
JavaScript
var VueVNodeUtils=(function(e,t){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let n=e=>d(e)===`comment`,r=e=>d(e)===`component`,i=e=>d(e)===`element`,a=e=>d(e)===`fragment`,o=e=>r(e)&&typeof e.type==`function`,s=e=>r(e)&&typeof e.type==`object`,c=e=>d(e)===`static`,l=e=>d(e)===`text`,u=e=>{if(typeof e==`string`)return e;if(typeof e==`number`)return String(e);if((0,t.isVNode)(e)&&e.type===t.Text)return String(e.children)},d=e=>{let n=typeof e;if(e==null||n===`boolean`)return`comment`;if(n===`string`||n===`number`)return`text`;if(Array.isArray(e))return`fragment`;if((0,t.isVNode)(e)){let{type:n}=e,r=typeof n;if(r===`symbol`){if(n===t.Fragment)return`fragment`;if(n===t.Text)return`text`;if(n===t.Comment)return`comment`;if(n===t.Static)return`static`}else if(r===`string`)return`element`;else if(r===`object`||r===`function`)return`component`}},f=e=>{for(let t in e)return!1;return!0},p=e=>{if(Array.isArray(e))return e;let{children:t}=e;return Array.isArray(t)?t:[]};function m(e){return e}let h=m({element:!0,component:!0}),g=m({element:!0,component:!0,text:!0,static:!0}),_=m({element:!0,component:!0,text:!0,static:!0,comment:!0}),v=(e,n)=>{let r=d(e);return!r||r===`fragment`||!n[r]?null:(0,t.isVNode)(e)?e:r===`text`?(0,t.createTextVNode)(u(e)):(0,t.createCommentVNode)()},y=(e,n,r=h)=>x(e,e=>{let r=n(e);if(r&&!f(r))return(0,t.cloneVNode)(e,r,!0)},r),b=(e,t,n=g)=>x(e,t,n),x=(e,n,r)=>{var i;let o=null;for(let i=0;i<e.length;++i){let c=e[i];if(a(c)){let a=p(c),s=x(a,n,r),l=c;a!==s&&(o!=null||(o=e.slice(0,i)),Array.isArray(c)?l=s:(l=(0,t.cloneVNode)(c),l.children=s)),o&&o.push(l)}else{let t=v(c,r);if(t){var s;let r=(s=n(t))==null?t:s;r!==c&&(o!=null||(o=e.slice(0,i))),Array.isArray(r)?o&&o.push(...r):o&&o.push(r)}else o&&o.push(c)}}return(i=o)==null?e:i},S=(e,t,n=g)=>{let r=null;return x(e,e=>{let n;if(r&&(n=t(r,e)),r=e,!(n==null||Array.isArray(n)&&n.length===0))return Array.isArray(n)?[...n,e]:[n,e]},n)},C=(e,t,n=_)=>w(e,t,n),w=(e,t,n)=>{for(let r of e)if(a(r)){if(C(p(r),t,n))return!0}else{let e=v(r,n);if(e&&t(e))return!0}return!1},T=(e,t,n=_)=>!w(e,e=>!t(e),n),E=(e,t,n=_)=>{w(e,e=>{t(e)},n)},D=(e,t,n=_)=>{let r;return w(e,e=>{if(t(e))return r=e,!0},n),r},O=(e,t,n,r=_)=>(w(e,e=>{n=t(n,e)},r),n),k=/\S|\u00a0/;return e.ALL_VNODES=_,e.COMPONENTS_AND_ELEMENTS=h,e.SKIP_COMMENTS=g,e.addProps=y,e.betweenChildren=S,e.countChildren=(e,t=_)=>{let n=0;return w(e,()=>{++n},t),n},e.eachChild=E,e.everyChild=T,e.extractSingleChild=e=>D(e,()=>!0,h),e.findChild=D,e.getText=u,e.getType=d,e.isComment=n,e.isComponent=r,e.isElement=i,e.isEmpty=e=>!w(e,e=>{if(l(e)){let t=u(e)||``;return k.test(t)}return!0},g),e.isFragment=a,e.isFunctionalComponent=o,e.isStatefulComponent=s,e.isStatic=c,e.isText=l,e.reduceChildren=O,e.replaceChildren=b,e.someChild=C,e})({},Vue);