{"version":3,"file":"Segmented.mjs","sources":["../../../../../../packages/components/segmented/src/Segmented.tsx"],"sourcesContent":["import type { ChangeEvent, CustomSlotsType } from '@antdv/types';\nimport type { SegmentedBaseOption, SegmentedOptionType, SegmentedValue } from './interface';\nimport { classNames, initDefaultProps } from '@antdv/utils';\nimport { computed, defineComponent, shallowRef } from 'vue';\nimport useConfigInject from '../../config-provider/src/hooks/useConfigInject';\nimport useStyle from '../style';\nimport MotionThumb from './MotionThumb';\nimport SegmentedOption from './Options';\nimport { segmentedProps } from './props';\n\nfunction normalizeOptions(options: Array<SegmentedOptionType | string | number>) {\n  return options.map((option) => {\n    if (typeof option === 'object' && option !== null)\n      return option;\n\n    return {\n      label: option?.toString(),\n      title: option?.toString(),\n      value: option as unknown as SegmentedBaseOption['value'],\n    };\n  });\n}\n\nexport default defineComponent({\n  name: 'ASegmented',\n  inheritAttrs: false,\n  props: initDefaultProps(segmentedProps(), {\n    options: [],\n    motionName: 'thumb-motion',\n  }),\n  slots: Object as CustomSlotsType<{\n    label: SegmentedBaseOption\n  }>,\n  setup(props, { emit, slots, attrs }) {\n    const { prefixCls, direction, size } = useConfigInject('segmented', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const rootRef = shallowRef<HTMLDivElement>();\n    const thumbShow = shallowRef(false);\n\n    const segmentedOptions = computed(() => normalizeOptions(props.options));\n    const handleChange = (_event: ChangeEvent, val: SegmentedValue) => {\n      if (props.disabled)\n        return;\n\n      emit('update:value', val);\n      emit('change', val);\n    };\n    return () => {\n      const pre = prefixCls.value;\n      return wrapSSR(\n        <div\n          {...attrs}\n          class={classNames(\n            pre,\n            {\n              [hashId.value]: true,\n              [`${pre}-block`]: props.block,\n              [`${pre}-disabled`]: props.disabled,\n              [`${pre}-lg`]: size.value === 'large',\n              [`${pre}-sm`]: size.value === 'small',\n              [`${pre}-rtl`]: direction.value === 'rtl',\n            },\n            attrs.class,\n          )}\n          ref={rootRef}\n        >\n          <div class={`${pre}-group`}>\n            <MotionThumb\n              containerRef={rootRef}\n              prefixCls={pre}\n              value={props.value}\n              motionName={`${pre}-${props.motionName}`}\n              direction={direction.value}\n              getValueIndex={val => segmentedOptions.value.findIndex(n => n.value === val)}\n              onMotionStart={() => {\n                thumbShow.value = true;\n              }}\n              onMotionEnd={() => {\n                thumbShow.value = false;\n              }}\n            />\n            {segmentedOptions.value.map(segmentedOption => (\n              <SegmentedOption\n                key={segmentedOption.value}\n                prefixCls={pre}\n                checked={segmentedOption.value === props.value}\n                onChange={handleChange}\n                {...segmentedOption}\n                className={classNames(segmentedOption.className, `${pre}-item`, {\n                  [`${pre}-item-selected`]:\n                    segmentedOption.value === props.value && !thumbShow.value,\n                })}\n                disabled={!!props.disabled || !!segmentedOption.disabled}\n                v-slots={slots}\n              />\n            ))}\n          </div>\n        </div>,\n      );\n    };\n  },\n});\n"],"names":["normalizeOptions","options","map","option","label","toString","title","value","name","inheritAttrs","props","initDefaultProps","segmentedProps","motionName","slots","Object","setup","emit","attrs","prefixCls","direction","size","useConfigInject","wrapSSR","hashId","useStyle","rootRef","shallowRef","thumbShow","segmentedOptions","computed","handleChange","_event","val","disabled","pre","_createVNode","classNames","block","class","MotionThumb","findIndex","n","onMotionStart","onMotionEnd","segmentedOption","SegmentedOption","className"],"mappings":"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"}