{"version":3,"file":"VStepper.mjs","names":["VStepperSymbol","makeVStepperActionsProps","VStepperActions","VStepperHeader","VStepperItem","VStepperWindow","VStepperWindowItem","VDivider","makeVSheetProps","VSheet","provideDefaults","makeDisplayProps","useDisplay","makeGroupProps","useGroup","computed","toRefs","genericComponent","getPropertyFromItem","only","propsFactory","useRender","makeStepperProps","altLabels","Boolean","bgColor","String","completeIcon","editIcon","editable","errorIcon","hideActions","items","type","Array","default","itemTitle","itemValue","nonLinear","flat","makeVStepperProps","mandatory","selectedClass","VStepper","name","props","emits","v","setup","_ref","slots","_items","next","prev","selected","displayClasses","mobile","color","prevText","nextText","map","item","index","title","value","raw","activeIndex","findIndex","includes","id","disabled","length","sheetProps","filterProps","hasHeader","header","hasWindow","hasActions","actions","_createVNode","_mergeProps","class","style","_ref2","_Fragment","icon","subtitle"],"sources":["../../../src/components/VStepper/VStepper.tsx"],"sourcesContent":["// Styles\nimport './VStepper.sass'\n\n// Components\nimport { VStepperSymbol } from './shared'\nimport { makeVStepperActionsProps, VStepperActions } from './VStepperActions'\nimport { VStepperHeader } from './VStepperHeader'\nimport { VStepperItem } from './VStepperItem'\nimport { VStepperWindow } from './VStepperWindow'\nimport { VStepperWindowItem } from './VStepperWindowItem'\nimport { VDivider } from '@/components/VDivider'\nimport { makeVSheetProps, VSheet } from '@/components/VSheet/VSheet'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { makeGroupProps, useGroup } from '@/composables/group'\n\n// Utilities\nimport { computed, toRefs } from 'vue'\nimport { genericComponent, getPropertyFromItem, only, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { StepperItem, StepperItemSlot } from './VStepperItem'\n\nexport type VStepperSlot = {\n  prev: () => void\n  next: () => void\n}\n\nexport type VStepperSlots = {\n  actions: VStepperSlot\n  default: VStepperSlot\n  header: StepperItem\n  'header-item': StepperItemSlot\n  icon: StepperItemSlot\n  title: StepperItemSlot\n  subtitle: StepperItemSlot\n  item: StepperItem\n  prev: never\n  next: never\n} & {\n  [key: `header-item.${string}`]: StepperItemSlot\n  [key: `item.${string}`]: StepperItem\n}\n\nexport const makeStepperProps = propsFactory({\n  altLabels: Boolean,\n  bgColor: String,\n  completeIcon: String,\n  editIcon: String,\n  editable: Boolean,\n  errorIcon: String,\n  hideActions: Boolean,\n  items: {\n    type: Array as PropType<readonly StepperItem[]>,\n    default: () => ([]),\n  },\n  itemTitle: {\n    type: String,\n    default: 'title',\n  },\n  itemValue: {\n    type: String,\n    default: 'value',\n  },\n  nonLinear: Boolean,\n  flat: Boolean,\n\n  ...makeDisplayProps(),\n}, 'Stepper')\n\nexport const makeVStepperProps = propsFactory({\n  ...makeStepperProps(),\n  ...makeGroupProps({\n    mandatory: 'force' as const,\n    selectedClass: 'v-stepper-item--selected',\n  }),\n  ...makeVSheetProps(),\n  ...only(makeVStepperActionsProps(), ['prevText', 'nextText']),\n}, 'VStepper')\n\nexport const VStepper = genericComponent<VStepperSlots>()({\n  name: 'VStepper',\n\n  props: makeVStepperProps(),\n\n  emits: {\n    'update:modelValue': (v: unknown) => true,\n  },\n\n  setup (props, { slots }) {\n    const { items: _items, next, prev, selected } = useGroup(props, VStepperSymbol)\n    const { displayClasses, mobile } = useDisplay(props)\n    const { completeIcon, editIcon, errorIcon, color, editable, prevText, nextText } = toRefs(props)\n\n    const items = computed(() => props.items.map((item, index) => {\n      const title = getPropertyFromItem(item, props.itemTitle, item)\n      const value = getPropertyFromItem(item, props.itemValue, index + 1)\n\n      return {\n        title,\n        value,\n        raw: item,\n      }\n    }))\n    const activeIndex = computed(() => {\n      return _items.value.findIndex(item => selected.value.includes(item.id))\n    })\n    const disabled = computed(() => {\n      if (props.disabled) return props.disabled\n      if (activeIndex.value === 0) return 'prev'\n      if (activeIndex.value === _items.value.length - 1) return 'next'\n\n      return false\n    })\n\n    provideDefaults({\n      VStepperItem: {\n        editable,\n        errorIcon,\n        completeIcon,\n        editIcon,\n        prevText,\n        nextText,\n      },\n      VStepperActions: {\n        color,\n        disabled,\n        prevText,\n        nextText,\n      },\n    })\n\n    useRender(() => {\n      const sheetProps = VSheet.filterProps(props)\n\n      const hasHeader = !!(slots.header || props.items.length)\n      const hasWindow = props.items.length > 0\n      const hasActions = !props.hideActions && !!(hasWindow || slots.actions)\n\n      return (\n        <VSheet\n          { ...sheetProps }\n          color={ props.bgColor }\n          class={[\n            'v-stepper',\n            {\n              'v-stepper--alt-labels': props.altLabels,\n              'v-stepper--flat': props.flat,\n              'v-stepper--non-linear': props.nonLinear,\n              'v-stepper--mobile': mobile.value,\n            },\n            displayClasses.value,\n            props.class,\n          ]}\n          style={ props.style }\n        >\n          { hasHeader && (\n            <VStepperHeader key=\"stepper-header\">\n              { items.value.map(({ raw, ...item }, index) => (\n                <>\n                  { !!index && (<VDivider />) }\n\n                  <VStepperItem\n                    { ...item }\n                    v-slots={{\n                      default: slots[`header-item.${item.value}`] ?? slots.header,\n                      icon: slots.icon,\n                      title: slots.title,\n                      subtitle: slots.subtitle,\n                    }}\n                  />\n                </>\n              ))}\n            </VStepperHeader>\n          )}\n\n          { hasWindow && (\n            <VStepperWindow key=\"stepper-window\">\n              { items.value.map(item => (\n                <VStepperWindowItem\n                  value={ item.value }\n                  v-slots={{\n                    default: () => slots[`item.${item.value}`]?.(item) ?? slots.item?.(item),\n                  }}\n                />\n              ))}\n            </VStepperWindow>\n          )}\n\n          { slots.default?.({ prev, next }) }\n\n          { hasActions && (\n            slots.actions?.({ next, prev }) ?? (\n              <VStepperActions\n                key=\"stepper-actions\"\n                onClick:prev={ prev }\n                onClick:next={ next }\n                v-slots={ slots }\n              />\n            )\n          )}\n        </VSheet>\n      )\n    })\n\n    return {\n      prev,\n      next,\n    }\n  },\n})\n\nexport type VStepper = InstanceType<typeof VStepper>\n"],"mappings":"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","ignoreList":[]}