import type { VNode } from 'vue'; import { Fragment } from 'vue'; const extractNodes = (nodes: VNode | VNode[]): VNode[] => { if (!nodes) { return []; } if (Array.isArray(nodes)) { return nodes.flatMap(node => (node.type === Fragment ? extractNodes(node.children as VNode[]) : node)); } return [nodes]; }; const getUnwrappedArr = (slots: VNode[]) => { return slots.flatMap(node => (node.type === Fragment ? extractNodes(node.children as VNode[]) : node)); }; export function slotUnwrapper(slots: VNode[], type?: string): VNode[] { if (type != null) { return getUnwrappedArr(slots).filter(p => (p as any)?.type?.__vfdConstructor?.$fwName == type); } else { return getUnwrappedArr(slots); } }