{"version":3,"file":"timeline.mjs","sources":["../../../../../../packages/components/timeline/src/timeline.tsx"],"sourcesContent":["import { computed, defineComponent, provide, reactive, ref, toRefs } from 'vue'\nimport { getComponentNamespace, getNamespace } from '../../../utils/global-config'\nimport { timelineProps } from './props'\nimport { timelineInjectionKey } from './context'\nconst childrenName = getComponentNamespace('TimelineItem')\n\nexport default defineComponent({\n  name: getComponentNamespace('Timeline'),\n  components: {},\n  props: timelineProps,\n  emits: ['update:current', 'change'],\n  setup(props, { slots }) {\n    // 定义组件命名\n    const ns = getNamespace('timeline')\n    // 组件class\n    const cls = computed(() => [ns, props.reverse && `is-reverse`])\n    // 顺序反转\n    const { reverse: reverseRef, lineType: lineTypeRef } = toRefs(props)\n    const componentCount = ref(0)\n    /**\n     * @description 获取Timeline真实子组件\n     */\n    const getChildren = (slotsDefault: any) => {\n      if (Array.isArray(slotsDefault) && slotsDefault.length > 0) {\n        return slotsDefault.filter((item) => {\n          if (\n            Array.isArray(item.children) &&\n            item.children.length > 0 &&\n            typeof item['type'] === 'symbol'\n          ) {\n            item.children = getChildren(item.children)\n            return item.children.length > 0 ? item : null\n          }\n          if ((item?.type as any)?.name === childrenName) {\n            return item\n          }\n        })\n      }\n      return []\n    }\n    // 获取数组有多少个叶子节点\n    const getLeafCount = (children: any[]) => {\n      let count = 0\n      children.forEach((item) => {\n        if (Array.isArray(item.children)) {\n          count += getLeafCount(item.children)\n        } else {\n          count += 1\n        }\n      })\n      return count\n    }\n\n    const components = (slotsDefault: any) => {\n      const items = getChildren(slotsDefault)\n      componentCount.value = getLeafCount(items)\n      return items\n    }\n    /**\n     * @description 响应式传递\n     */\n    const provideContext = reactive({\n      reverse: reverseRef,\n      parentCls: ns,\n      count: componentCount,\n      lineType: lineTypeRef\n    })\n    provide(timelineInjectionKey, provideContext)\n    return () => {\n      return <div class={cls.value}>{components(slots.default?.())}</div>\n    }\n  }\n})\n"],"names":["childrenName","getComponentNamespace","name","components","props","timelineProps","emits","setup","slots","ns","getNamespace","cls","computed","reverse","reverseRef","lineType","lineTypeRef","toRefs","componentCount","ref","getChildren","slotsDefault","Array","isArray","length","filter","item","children","type","getLeafCount","count","forEach","items","value","provideContext","reactive","parentCls","provide","timelineInjectionKey","_createVNode","default"],"mappings":"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"}