| import { VNode, VNodeArrayChildren, Fragment, isVNode } from 'vue'; | 
| import { isArray } from 'lodash'; | 
|   | 
| export function isFragment(node: VNode): boolean; | 
| export function isFragment(node: unknown): node is VNode; | 
| export function isFragment(node: unknown): node is VNode { | 
|   return isVNode(node) && node.type === Fragment; | 
| } | 
|   | 
| export function isComment(node: VNode): boolean; | 
| export function isComment(node: unknown): node is VNode; | 
| export function isComment(node: unknown): node is VNode { | 
|   return isVNode(node) && node.type === Comment; | 
| } | 
|   | 
| export function isValidElementNode(node: VNode): boolean; | 
| export function isValidElementNode(node: unknown): node is VNode; | 
| export function isValidElementNode(node: unknown): node is VNode { | 
|   return isVNode(node) && !isFragment(node) && !isComment(node); | 
| } | 
|   | 
| export function extractChildren( | 
|   children: VNodeArrayChildren, | 
|   parentKey = '', | 
|   extractedChildren: VNode[] = [] | 
| ) { | 
|   children.forEach((child) => { | 
|     if (isFragment(child)) { | 
|       if (isArray(child.children)) { | 
|         child.children.forEach((nested, key) => { | 
|           if (isFragment(nested) && isArray(nested.children)) { | 
|             extractChildren(nested.children, `${parentKey + key}-`, extractedChildren); | 
|           } else { | 
|             extractedChildren.push(nested as any); | 
|           } | 
|         }); | 
|       } | 
|     } else if (isValidElementNode(child)) { | 
|       extractedChildren.push(child); | 
|     } | 
|   }); | 
|   | 
|   return extractedChildren; | 
| } |