@skirtle/vue-vnode-utils
Version:
Utilities for manipulating Vue 3 VNodes
1 lines • 3.26 kB
JavaScript
import{Comment as e,Fragment as t,Static as n,Text as r,cloneVNode as i,createCommentVNode as a,createTextVNode as o,isVNode as s}from"vue";const c=e=>_(e)===`comment`,l=e=>_(e)===`component`,u=e=>_(e)===`element`,d=e=>_(e)===`fragment`,f=e=>l(e)&&typeof e.type==`function`,p=e=>l(e)&&typeof e.type==`object`,m=e=>_(e)===`static`,h=e=>_(e)===`text`,g=e=>{if(typeof e==`string`)return e;if(typeof e==`number`)return String(e);if(s(e)&&e.type===r)return String(e.children)},_=i=>{let a=typeof i;if(i==null||a===`boolean`)return`comment`;if(a===`string`||a===`number`)return`text`;if(Array.isArray(i))return`fragment`;if(s(i)){let{type:a}=i,o=typeof a;if(o===`symbol`){if(a===t)return`fragment`;if(a===r)return`text`;if(a===e)return`comment`;if(a===n)return`static`}else if(o===`string`)return`element`;else if(o===`object`||o===`function`)return`component`}},v=e=>{for(let t in e)return!1;return!0},y=e=>{if(Array.isArray(e))return e;let{children:t}=e;return Array.isArray(t)?t:[]};function b(e){return e}const x=b({element:!0,component:!0}),S=b({element:!0,component:!0,text:!0,static:!0}),C=b({element:!0,component:!0,text:!0,static:!0,comment:!0}),w=(e,t)=>{let n=_(e);return!n||n===`fragment`||!t[n]?null:s(e)?e:n===`text`?o(g(e)):a()},T=(e,t,n=x)=>D(e,e=>{let n=t(e);if(n&&!v(n))return i(e,n,!0)},n),E=(e,t,n=S)=>D(e,t,n),D=(e,t,n)=>{var r;let a=null;for(let r=0;r<e.length;++r){let s=e[r];if(d(s)){let o=y(s),c=D(o,t,n),l=s;o!==c&&(a!=null||(a=e.slice(0,r)),Array.isArray(s)?l=c:(l=i(s),l.children=c)),a&&a.push(l)}else{let i=w(s,n);if(i){var o;let n=(o=t(i))==null?i:o;n!==s&&(a!=null||(a=e.slice(0,r))),Array.isArray(n)?a&&a.push(...n):a&&a.push(n)}else a&&a.push(s)}}return(r=a)==null?e:r},O=(e,t,n=S)=>{let r=null;return D(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)},k=(e,t,n=C)=>A(e,t,n),A=(e,t,n)=>{for(let r of e)if(d(r)){if(k(y(r),t,n))return!0}else{let e=w(r,n);if(e&&t(e))return!0}return!1},j=(e,t,n=C)=>!A(e,e=>!t(e),n),M=(e,t,n=C)=>{A(e,e=>{t(e)},n)},N=(e,t,n=C)=>{let r;return A(e,e=>{if(t(e))return r=e,!0},n),r},P=(e,t,n,r=C)=>(A(e,e=>{n=t(n,e)},r),n),F=/\S|\u00a0/,I=e=>!A(e,e=>{if(h(e)){let t=g(e)||``;return F.test(t)}return!0},S),L=e=>N(e,()=>!0,x),R=(e,t=C)=>{let n=0;return A(e,()=>{++n},t),n};function z(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0})}function B(e,t){let n=-1,r={get length(){let n=R(e,t);return z(r,`length`,n),n}};return()=>z(Object.create(r),`index`,++n)}function V(e,t,n,r){let i=B(t,r);return e(t,e=>n(e,i()),r)}const H=(e,t,n=x)=>V(T,e,t,n),U=(e,t,n=S)=>V(E,e,t,n),W=(e,t,n=S)=>{let r=B(e,n);return O(e,(e,n)=>t(e,n,r()),n)},G=(e,t,n=C)=>V(k,e,t,n),K=(e,t,n=C)=>V(j,e,t,n),q=(e,t,n=C)=>V(M,e,t,n),J=(e,t,n=C)=>V(N,e,t,n),Y=(e,t,n,r=C)=>{let i=B(e,r);return P(e,(e,n)=>t(e,n,i()),n,r)};export{C as ALL_VNODES,x as COMPONENTS_AND_ELEMENTS,S as SKIP_COMMENTS,H as addProps,W as betweenChildren,R as countChildren,q as eachChild,K as everyChild,L as extractSingleChild,J as findChild,g as getText,_ as getType,c as isComment,l as isComponent,u as isElement,I as isEmpty,d as isFragment,f as isFunctionalComponent,p as isStatefulComponent,m as isStatic,h as isText,Y as reduceChildren,U as replaceChildren,G as someChild};