{"version":3,"file":"slot.mjs","sources":["../../src/hooks/slot.ts"],"sourcesContent":["import {\n  Slots,\n  VNode,\n  Component,\n  getCurrentInstance,\n  Fragment,\n  Comment,\n  RendererNode,\n  VNodeArrayChildren,\n  RendererElement,\n  VNodeChild,\n} from 'vue';\nimport isArray from 'lodash/isArray';\n\n/**\n * 渲染default slot，获取子组件VNode。处理多种子组件创建场景\n * 使用场景：<t-steps> <t-steps-item /> </t-steps>, <t-steps> <t-steps-item v-for=\"(item, index)\" :key=\"index\" /> </t-steps>\n * @returns {function(childComponentName: string, slots: Slots): VNode[]}\n * @param childComponentName\n * @param slots\n * @example const getChildByName = useChildComponentSlots()\n * @example getChildComponentByName('TStepItem')\n */\nexport function useChildComponentSlots() {\n  const instance = getCurrentInstance();\n  return (childComponentName: string, slots?: Slots): VNode[] => {\n    if (!slots) {\n      slots = instance.slots;\n    }\n    const content = slots?.default?.() || [];\n\n    // 满足基于基础组件封装场景，递归找到子组件\n    const childList: VNode[] = [];\n    const getChildren = (content: VNode[]) => {\n      if (!isArray(content)) return;\n      content.forEach((item: VNode) => {\n        if (item.children && isArray(item.children)) {\n          if (item.type !== Fragment) return;\n          getChildren(item.children as VNode[]);\n        } else {\n          childList.push(item);\n        }\n      });\n      return childList;\n    };\n\n    return getChildren(content).filter((item: VNode) =>\n      (item.type as Component).name?.endsWith(childComponentName),\n    ) as VNode[];\n  };\n}\n\n/**\n * 渲染default slot，获取slot child\n * @param childComponentName\n * @param slots\n * @example const getChildSlots = useChildSlots()\n * @example getChildSlots()\n */\nexport function useChildSlots(): () => (\n  | VNode<\n      RendererNode,\n      RendererElement,\n      {\n        [key: string]: any;\n      }\n    >\n  | VNodeArrayChildren\n  | VNodeChild\n)[] {\n  const instance = getCurrentInstance();\n  return () => {\n    const { slots } = instance;\n    const content = slots?.default?.() || [];\n\n    return content\n      .filter((item) => {\n        if (typeof item.type === 'symbol' && !item.children) {\n          return false;\n        }\n        return item.type !== Comment;\n      })\n      .map((item) => {\n        if (item.children && isArray(item.children) && item.type === Fragment) return item.children;\n        return item;\n      })\n      .flat();\n  };\n}\n"],"names":["useChildComponentSlots","instance","getCurrentInstance","childComponentName","slots","_slots","_slots$default","content","call","childList","getChildren","isArray","forEach","item","children","type","Fragment","push","filter","_item$type$name","name","endsWith","useChildSlots","_slots$default2","_typeof","Comment","map","flat"],"mappings":";;;;;;;;;;;AAuBO,SAASA,sBAAyBA,GAAA;AACvC,EAAA,IAAMC,WAAWC,kBAAmB,EAAA,CAAA;AAC7B,EAAA,OAAA,UAACC,oBAA4BC,KAA2B,EAAA;IAAA,IAAAC,MAAA,EAAAC,cAAA,CAAA;IAC7D,IAAI,CAACF,KAAO,EAAA;MACVA,KAAA,GAAQH,QAAS,CAAAG,KAAA,CAAA;AACnB,KAAA;IACA,IAAMG,OAAU,GAAA,CAAAF,CAAAA,MAAA,GAAAD,KAAA,MAAA,IAAA,IAAAC,MAAA,KAAA,KAAA,CAAA,IAAA,CAAAC,cAAA,GAAAD,MAAA,CAAiB,SAAA,CAAA,MAAA,IAAA,IAAAC,cAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAjBA,cAAA,CAAAE,IAAA,CAAAH,MAAiB,CAAA,KAAK,EAAC,CAAA;IAGvC,IAAMI,YAAqB,EAAC,CAAA;AACtB,IAAA,IAAAC,YAAA,GAAc,SAAdA,WAAAA,CAAeH,QAAqB,EAAA;AACpC,MAAA,IAAA,CAACI,UAAQJ,QAAO,CAAA,EAAG,OAAA;AACvBA,MAAAA,QAAAA,CAAQK,OAAQ,CAAA,UAACC,IAAgB,EAAA;QAC/B,IAAIA,IAAK,CAAAC,QAAA,IAAYH,SAAQ,CAAAE,IAAA,CAAKC,QAAQ,CAAG,EAAA;AAC3C,UAAA,IAAID,KAAKE,IAAS,KAAAC,QAAA,EAAU,OAAA;AAC5BN,UAAAA,YAAA,CAAYG,KAAKC,QAAmB,CAAA,CAAA;AACtC,SAAO,MAAA;AACLL,UAAAA,SAAA,CAAUQ,KAAKJ,IAAI,CAAA,CAAA;AACrB,SAAA;AACF,OAAC,CAAA,CAAA;AACM,MAAA,OAAAJ,SAAA,CAAA;KACT,CAAA;IAEO,OAAAC,YAAA,CAAYH,OAAO,CAAE,CAAAW,MAAA,CAAO,UAACL,IACjC,EAAA;AAAA,MAAA,IAAAM,eAAA,CAAA;AAAA,MAAA,OAAA,CAAAA,eAAA,GAAAN,IAAA,CAAKE,IAAmB,CAAAK,IAAA,MAAAD,IAAAA,IAAAA,eAAA,uBAAxBA,eAAA,CAA8BE,SAASlB,kBAAkB,CAAA,CAAA;AAAA,KAC5D,CAAA,CAAA;GACF,CAAA;AACF,CAAA;AASO,SAASmB,aAUZA,GAAA;AACF,EAAA,IAAMrB,WAAWC,kBAAmB,EAAA,CAAA;AACpC,EAAA,OAAO,YAAM;AAAA,IAAA,IAAAqB,eAAA,CAAA;AACL,IAAA,IAAEnB,QAAUH,QAAA,CAAVG;IACR,IAAMG,OAAU,GAAA,CAAAH,KAAA,aAAAA,KAAA,KAAA,KAAA,CAAA,IAAA,CAAAmB,eAAA,GAAAnB,KAAA,WAAiB,MAAAmB,IAAAA,IAAAA,eAAA,uBAAjBA,eAAA,CAAAf,IAAA,CAAAJ,KAAiB,CAAA,KAAK,EAAC,CAAA;AAEhC,IAAA,OAAAG,OAAA,CACJW,MAAO,CAAA,UAACL,IAAS,EAAA;AAChB,MAAA,IAAIW,OAAA,CAAOX,IAAK,CAAAE,IAAA,CAAA,KAAS,QAAY,IAAA,CAACF,KAAKC,QAAU,EAAA;AAC5C,QAAA,OAAA,KAAA,CAAA;AACT,OAAA;AACA,MAAA,OAAOD,KAAKE,IAAS,KAAAU,OAAA,CAAA;AACvB,KAAC,CAAA,CACAC,GAAI,CAAA,UAACb,IAAS,EAAA;MACb,IAAIA,KAAKC,QAAY,IAAAH,SAAA,CAAQE,KAAKC,QAAQ,CAAA,IAAKD,KAAKE,IAAS,KAAAC,QAAA,EAAU,OAAOH,IAAK,CAAAC,QAAA,CAAA;AAC5E,MAAA,OAAAD,IAAA,CAAA;AACT,KAAC,EACAc,IAAK,EAAA,CAAA;GACV,CAAA;AACF;;;;"}