{"version":3,"file":"steps.vue2.mjs","sources":["../../../../../packages/components/steps/src/steps.vue"],"sourcesContent":["<script lang=\"tsx\">\nimport {\n  provide,\n  defineComponent,\n  useSlots,\n  shallowRef,\n  watch,\n  type ShallowReactive,\n  nextTick,\n  type VNodeArrayChildren,\n  isVNode\n} from 'vue'\nimport { CHANGE_EVENT } from '@element-ultra/shared'\nimport { useNamespace } from '@element-ultra/hooks'\nimport { stepsProps, type StepState } from './steps'\nimport { stepsInjectionKey } from './token'\nimport { isFragment, isTemplate } from '@element-ultra/utils'\n\nexport default defineComponent({\n  name: 'ElSteps',\n\n  props: stepsProps,\n\n  emits: {\n    [CHANGE_EVENT]: () => true\n  },\n\n  setup(props) {\n    const slots = useSlots()\n\n    const ns = useNamespace('steps')\n\n    let stepsMap: Record<string, StepState> = {}\n    let activeIndex = shallowRef(0)\n    let stepsCount = shallowRef(0)\n    let steps: StepState[] = []\n\n    /** 新增步骤 */\n    const addStep = (step: ShallowReactive<StepState>) => {\n      stepsMap[step.uid] = step\n      stepsCount.value++\n    }\n\n    const removeStep = (step: StepState) => {\n      delete stepsMap[step.uid]\n      stepsCount.value--\n    }\n\n    provide(stepsInjectionKey, {\n      stepsProps: props,\n      addStep,\n      removeStep,\n      stepsCount,\n      activeIndex\n    })\n\n    const calcStatus = (active: number) => {\n      const { finishStatus, processStatus } = props\n\n      steps.forEach(step => {\n        // 完成状态\n        if (step.index < active) {\n          step.status = finishStatus\n        }\n        // 激活状态\n        else if (step.index === active) {\n          step.status = processStatus\n        } else {\n          step.status = 'wait'\n        }\n      })\n    }\n\n    nextTick(() => {\n      calcStatus(activeIndex.value)\n    })\n\n    // 变化时计算每个step的状态\n    watch(\n      [activeIndex, () => props.processStatus, () => props.finishStatus],\n      ([active]) => {\n        calcStatus(active)\n      }\n    )\n\n    let namesMapToIndex: Record<string, number> = {}\n    // 给step编号\n    const numberStep = async (\n      nodeList: VNodeArrayChildren,\n      arr: StepState[] = []\n    ) => {\n      await nextTick()\n\n      nodeList.forEach((child, index) => {\n        if (!isVNode(child)) return\n        if (isFragment(child) || isTemplate(child)) {\n          return (\n            Array.isArray(child.children) && numberStep(child.children, arr)\n          )\n        }\n\n        if (child.component?.uid) {\n          let stepState = stepsMap[child.component.uid]\n          stepState.index = arr.length\n          arr.push(stepState)\n        }\n        if (child.props) {\n          namesMapToIndex[child.props.name ?? index] = index\n        }\n      })\n      steps = arr\n      if (props.active !== undefined) {\n        activeIndex.value = namesMapToIndex[props.active]\n      }\n    }\n\n    return () => {\n      const { direction } = props\n      const children = slots.default?.() || []\n\n      numberStep(children)\n\n      return <div class={[ns.b(), ns.m(direction)]}>{children}</div>\n    }\n  }\n})\n</script>\n"],"names":["name","props","stepsProps","emits","CHANGE_EVENT","setup","slots","useSlots","ns","useNamespace","stepsMap","activeIndex","shallowRef","stepsCount","steps","addStep","step","uid","value","removeStep","provide","stepsInjectionKey","calcStatus","active","finishStatus","processStatus","forEach","index","status","nextTick","watch","namesMapToIndex","numberStep","nodeList","arr","child","isVNode","isFragment","isTemplate","Array","isArray","children","component","stepState","length","push","undefined","direction","default","_createVNode","b","m"],"mappings":"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"}