{"version":3,"file":"vue-utils.mjs","sources":["../../../../packages/utils/vue-utils.ts"],"sourcesContent":["import { cloneVNode } from 'vue'\nimport type { VNodeTypes, VNode, PropType, Component, Slots, App } from 'vue'\nimport type { SFCWithInstall, Data, SFCInstallWithContext } from './types'\nimport { isArray, isFunction } from './is'\n\nexport enum ShapeFlags {\n  ELEMENT = 1,\n  FUNCTIONAL_COMPONENT = 1 << 1,\n  STATEFUL_COMPONENT = 1 << 2,\n  COMPONENT = ShapeFlags.STATEFUL_COMPONENT | ShapeFlags.FUNCTIONAL_COMPONENT,\n  TEXT_CHILDREN = 1 << 3,\n  ARRAY_CHILDREN = 1 << 4,\n  SLOTS_CHILDREN = 1 << 5,\n  TELEPORT = 1 << 6,\n  SUSPENSE = 1 << 7,\n  COMPONENT_SHOULD_KEEP_ALIVE = 1 << 8,\n  COMPONENT_KEPT_ALIVE = 1 << 9\n}\n\nexport const isElement = (vn: VNode) => {\n  return Boolean(vn && vn.shapeFlag & ShapeFlags.ELEMENT)\n}\n\nexport const isComponent = (vn: VNode, type?: VNodeTypes): type is Component => {\n  return Boolean(vn && vn.shapeFlag & ShapeFlags.COMPONENT)\n}\n\nexport const isNamedComponent = (child: VNode, name: string) => {\n  return isComponent(child, child.type) && child.type.name === name\n}\n\nexport const isTextChildren = (child: VNode, children: VNode['children']): children is string => {\n  return Boolean(child && child.shapeFlag & 8)\n}\n\nexport const isArrayChildren = (vn: VNode, children: VNode['children']): children is VNode[] => {\n  return Boolean(vn && vn.shapeFlag & ShapeFlags.ARRAY_CHILDREN)\n}\n\nexport const isSlotsChildren = (vn: VNode, children: VNode['children']): children is Slots => {\n  return Boolean(vn && vn.shapeFlag & ShapeFlags.SLOTS_CHILDREN)\n}\n\nexport const getFirstComponent = (children: VNode[] | undefined): VNode | undefined => {\n  if (!children) {\n    return undefined\n  }\n\n  for (const child of children) {\n    if (isElement(child) || isComponent(child)) {\n      return child\n    }\n    if (isArrayChildren(child, child.children)) {\n      const result = getFirstComponent(child.children)\n      if (result) return result\n    } else if (isSlotsChildren(child, child.children)) {\n      const children = child.children.default?.()\n      if (children) {\n        const result = getFirstComponent(children)\n        if (result) return result\n      }\n    } else if (isArray(child)) {\n      const result = getFirstComponent(child)\n      if (result) return result\n    }\n  }\n\n  return undefined\n}\n\nexport const getAllElements = (children: VNode[] | undefined, includeText = false) => {\n  const results: VNode[] = []\n  for (const item of children ?? []) {\n    if (\n      isElement(item) ||\n      isComponent(item) ||\n      (includeText && isTextChildren(item, item.children))\n    ) {\n      results.push(item)\n    } else if (isArrayChildren(item, item.children)) {\n      results.push(...getAllElements(item.children, includeText))\n    } else if (isSlotsChildren(item, item.children)) {\n      results.push(...getAllElements(item.children.default?.(), includeText))\n    } else if (isArray(item)) {\n      results.push(...getAllElements(item, includeText))\n    }\n  }\n  return results\n}\n\nexport const getChildrenArray = (vn: VNode): VNode[] | undefined => {\n  if (isArrayChildren(vn, vn.children)) {\n    return vn.children\n  }\n  if (isArray(vn)) {\n    return vn\n  }\n  return undefined\n}\n\nexport const getFirstElementFromVNode = (vn: VNode): HTMLElement | undefined => {\n  if (isElement(vn)) {\n    return vn.el as HTMLElement\n  }\n  if (isComponent(vn)) {\n    if ((vn.el as Node)?.nodeType === 1) {\n      return vn.el as HTMLElement\n    }\n    if (vn.component?.subTree) {\n      const ele = getFirstElementFromVNode(vn.component.subTree)\n      if (ele) return ele\n    }\n  } else {\n    const children = getChildrenArray(vn)\n    return getFirstElementFromChildren(children)\n  }\n  return undefined\n}\n\nexport const getFirstElementFromChildren = (\n  children: VNode[] | undefined\n): HTMLElement | undefined => {\n  if (children && children.length > 0) {\n    for (const child of children) {\n      const element = getFirstElementFromVNode(child)\n      if (element) return element\n    }\n  }\n  return undefined\n}\n\nexport const mergeFirstChild = (\n  children: VNode[] | undefined,\n  extraProps: Data | ((vn: VNode) => Data)\n): boolean => {\n  if (children && children.length > 0) {\n    for (let i = 0; i < children.length; i++) {\n      const child = children[i]\n      if (isElement(child) || isComponent(child)) {\n        const props = isFunction(extraProps) ? extraProps(child) : extraProps\n        children[i] = cloneVNode(child, props, true)\n        return true\n      }\n      const _children = getChildrenArray(child)\n      if (_children && _children.length > 0) {\n        const result = mergeFirstChild(_children, extraProps)\n        if (result) return true\n      }\n    }\n  }\n  return false\n}\n\nexport const getFirstElement = (vn: VNode | VNode[]): HTMLElement | null => {\n  if (isArray(vn)) {\n    for (const child of vn) {\n      const result = getFirstElement(child)\n      if (result) return result\n    }\n  } else if (isElement(vn)) {\n    return vn.el as HTMLElement\n  } else if (isComponent(vn)) {\n    if ((vn.el as Node).nodeType === 1) {\n      return vn.el as HTMLElement\n    }\n    if (vn.component) {\n      const result = getFirstElement(vn.component.subTree)\n      if (result) return result\n    }\n  } else if (isArrayChildren(vn, vn.children)) {\n    for (const child of vn.children) {\n      const result = getFirstElement(child)\n      if (result) return result\n    }\n  }\n  return null\n}\n\nexport const withInstall = <T, E extends Record<string, any>>(main: T, extra?: E) => {\n  ;(main as SFCWithInstall<T>).install = (app): void => {\n    for (const comp of [main, ...Object.values(extra ?? {})]) {\n      app.component(comp.name, comp)\n    }\n  }\n\n  if (extra) {\n    for (const [key, comp] of Object.entries(extra)) {\n      ;(main as any)[key] = comp\n    }\n  }\n  return main as SFCWithInstall<T> & E\n}\n\nexport const withInstallFunction = <T>(fn: T, name: string) => {\n  ;(fn as SFCWithInstall<T>).install = (app: App) => {\n    ;(fn as SFCInstallWithContext<T>)._context = app._context\n    app.config.globalProperties[name] = fn\n  }\n\n  return fn as SFCInstallWithContext<T>\n}\n\nexport const withNoopInstall = <T>(component: T) => {\n  ;(component as SFCWithInstall<T>).install = () => {}\n\n  return component as SFCWithInstall<T>\n}\n\nexport const definePropType = <T>(val: any): PropType<T> => val\n\nexport const getComponentsFromVNode = (vn: VNode, name: string) => {\n  const components: number[] = []\n\n  if (isComponent(vn, vn.type)) {\n    if (vn.type.name === name) {\n      if (vn.component) {\n        components.push(vn.component.uid)\n      }\n    } else if (vn.component?.subTree) {\n      components.push(...getComponentsFromVNode(vn.component.subTree, name))\n    }\n  } else {\n    const children = getChildrenArray(vn)\n    if (children) {\n      components.push(...getComponentsFromChildren(children, name))\n    }\n  }\n\n  return components\n}\n\nexport const getComponentsFromChildren = (children: VNode[] | undefined, name: string) => {\n  const components: number[] = []\n\n  if (children && children.length > 0) {\n    for (const child of children) {\n      components.push(...getComponentsFromVNode(child, name))\n    }\n  }\n\n  return components\n}\n"],"names":["ShapeFlags","children"],"mappings":"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"}