{"version":3,"file":"item2.mjs","sources":["../../../../../../packages/components/steps/src/item.vue"],"sourcesContent":["<template>\n  <div\n    :style=\"style\"\n    :class=\"[\n      ns.b(),\n      ns.is('simple', isSimple),\n      ns.is(isVertical ? 'vertical' : 'horizontal'),\n      ns.is('flex', isLast && !space && !isCenter),\n      ns.is('center', isCenter && !isVertical && !isSimple),\n    ]\"\n    data-test-name=\"space-item\"\n    data-test-variant=\"\"\n    data-test-state=\"\"\n  >\n    <!-- icon & line -->\n    <div :class=\"[ns.e('head'), ns.is(currentStatus)]\">\n      <div v-if=\"!isSimple\" :class=\"ns.e('line')\">\n        <i :class=\"ns.e('line-inner')\" :style=\"lineStyle\" />\n      </div>\n\n      <div :class=\"[ns.e('icon'), ns.is(icon ? 'icon' : 'text')]\">\n        <slot\n          v-if=\"currentStatus !== 'success' && currentStatus !== 'error'\"\n          name=\"icon\"\n        >\n          <b-icon v-if=\"icon\" :class=\"ns.e('icon-inner')\">\n            <component :is=\"icon\" />\n          </b-icon>\n          <div v-if=\"!icon && !isSimple\" :class=\"ns.e('icon-inner')\">\n            {{ index + 1 }}\n          </div>\n        </slot>\n        <b-icon v-else :class=\"[ns.e('icon-inner'), ns.is('status')]\">\n          <Check v-if=\"currentStatus === 'success'\" />\n          <Close v-else />\n        </b-icon>\n      </div>\n    </div>\n    <!-- title & description -->\n    <div :class=\"ns.e('main')\">\n      <div :class=\"[ns.e('title'), ns.is(currentStatus)]\">\n        <slot name=\"title\">{{ title }}</slot>\n      </div>\n      <div v-if=\"isSimple\" :class=\"ns.e('arrow')\" />\n      <div v-else :class=\"[ns.e('description'), ns.is(currentStatus)]\">\n        <slot name=\"description\">{{ description }}</slot>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  getCurrentInstance,\n  inject,\n  onBeforeUnmount,\n  onMounted,\n  reactive,\n  ref,\n  watch,\n} from 'vue'\nimport { useNamespace } from '@bigin/hooks'\nimport { BIcon } from '@bigin/components/icon'\nimport { Check, Close } from '@bigin/icons-vue'\nimport { stepProps } from './item'\n\nimport type { CSSProperties, Ref } from 'vue'\n\nexport interface IStepsProps {\n  space: number | string\n  active: number\n  direction: string\n  vertical: boolean\n  alignCenter: boolean\n  simple: boolean\n  finishStatus: string\n  processStatus: string\n}\n\nexport interface StepItemState {\n  uid: number | undefined\n  currentStatus: string\n  setIndex: (val: number) => void\n  calcProgress: (status: string) => void\n}\n\nexport interface IStepsInject {\n  props: IStepsProps\n  steps: Ref<StepItemState[]>\n}\n\ndefineOptions({\n  name: 'BStep',\n})\n\nconst props = defineProps(stepProps)\nconst ns = useNamespace('step')\nconst index = ref(-1)\nconst lineStyle = ref({})\nconst internalStatus = ref('')\nconst parent = inject('BSteps') as IStepsInject\nconst currentInstance = getCurrentInstance()\n\nonMounted(() => {\n  watch(\n    [\n      () => parent.props.active,\n      () => parent.props.processStatus,\n      () => parent.props.finishStatus,\n    ],\n    ([active]) => {\n      updateStatus(active)\n    },\n    { immediate: true }\n  )\n})\n\nonBeforeUnmount(() => {\n  parent.steps.value = parent.steps.value.filter(\n    (instance) => instance.uid !== currentInstance?.uid\n  )\n})\n\nconst currentStatus = computed(() => {\n  return props.status || internalStatus.value\n})\n\nconst prevStatus = computed(() => {\n  const prevStep = parent.steps.value[index.value - 1]\n  return prevStep ? prevStep.currentStatus : 'wait'\n})\n\nconst isCenter = computed(() => {\n  return parent.props.alignCenter\n})\n\nconst isVertical = computed(() => {\n  return parent.props.vertical === true || parent.props.direction === 'vertical'\n})\n\nconst isSimple = computed(() => {\n  return parent.props.simple\n})\n\nconst stepsCount = computed(() => {\n  return parent.steps.value.length\n})\n\nconst isLast = computed(() => {\n  return parent.steps.value[stepsCount.value - 1]?.uid === currentInstance?.uid\n})\n\nconst space = computed(() => {\n  return isSimple.value ? '' : parent.props.space\n})\n\nconst style = computed(() => {\n  const style: CSSProperties = {\n    flexBasis:\n      typeof space.value === 'number'\n        ? `${space.value}px`\n        : space.value\n        ? space.value\n        : `${100 / (stepsCount.value - (isCenter.value ? 0 : 1))}%`,\n  }\n  if (isVertical.value) return style\n  if (isLast.value) {\n    style.maxWidth = `${100 / stepsCount.value}%`\n  }\n  return style\n})\n\nconst setIndex = (val: number) => {\n  index.value = val\n}\n\nconst calcProgress = (status: string) => {\n  let step = 100\n  const style: CSSProperties = {}\n  style.transitionDelay = `${150 * index.value}ms`\n  if (status === parent.props.processStatus) {\n    step = 0\n  } else if (status === 'wait') {\n    step = 0\n    style.transitionDelay = `${-150 * index.value}ms`\n  }\n  style.borderWidth = step && !isSimple.value ? '1px' : 0\n  style[parent.props.direction === 'vertical' ? 'height' : 'width'] = `${step}%`\n  lineStyle.value = style\n}\n\nconst updateStatus = (activeIndex: number) => {\n  if (activeIndex > index.value) {\n    internalStatus.value = parent.props.finishStatus\n  } else if (activeIndex === index.value && prevStatus.value !== 'error') {\n    internalStatus.value = parent.props.processStatus\n  } else {\n    internalStatus.value = 'wait'\n  }\n  const prevChild = parent.steps.value[index.value - 1]\n  if (prevChild) prevChild.calcProgress(internalStatus.value)\n}\n\nconst stepItemState = reactive({\n  uid: computed(() => currentInstance?.uid),\n  currentStatus,\n  setIndex,\n  calcProgress,\n})\n\nparent.steps.value = [...parent.steps.value, stepItemState]\n</script>\n"],"names":["style"],"mappings":"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"}