{"version":3,"file":"picker-item.mjs","sources":["../../src/picker/picker-item.tsx"],"sourcesContent":["import { ref, computed, onMounted, onBeforeUnmount, defineComponent, PropType, watch, inject } from 'vue';\nimport { get as lodashGet } from 'lodash-es';\nimport config from '../config';\nimport Picker from './picker.class';\nimport { KeysType } from '../common';\nimport { PickerColumnItem, PickerValue, PickerWheelConfig, TdPickerProps } from './type';\nimport { usePrefixClass } from '../hooks/useClass';\nimport { DEFAULT_WHEEL_CONFIG } from './constants';\n\nconst { prefix } = config;\n\nexport default defineComponent({\n  name: `${prefix}-picker-item`,\n  props: {\n    options: {\n      type: Array as PropType<PickerColumnItem[]>,\n    },\n    value: {\n      type: [String, Number] as PropType<PickerValue>,\n      default: undefined,\n    },\n    renderLabel: {\n      type: Function,\n      default: undefined,\n    },\n    onPick: {\n      type: Function,\n      default: undefined,\n    },\n    wheelConfig: {\n      type: Object as PropType<Required<PickerWheelConfig>>,\n      default: () => DEFAULT_WHEEL_CONFIG,\n    },\n  },\n  emits: ['pick'],\n  setup(props, context) {\n    const pickerItemClass = usePrefixClass('picker-item');\n\n    const pickerProps: TdPickerProps = inject('picker', undefined);\n\n    const keys = computed(() => pickerProps && (pickerProps.keys?.value as KeysType));\n\n    let picker: Picker | null = null;\n    const root = ref();\n    const getIndexByValue = (val: number | string | undefined) => {\n      let defaultIndex = 0;\n      if (val !== undefined) {\n        defaultIndex = props.options?.findIndex((item: any) => lodashGet(item, keys.value?.value ?? 'value') === val);\n      }\n      return defaultIndex < 0 ? 0 : defaultIndex;\n    };\n\n    const className = computed(() => `${pickerItemClass.value}`);\n\n    const updatePickerIndex = (index: number) => {\n      if (picker) {\n        picker.updateItems();\n        picker.updateIndex(index, { isChange: false });\n      }\n    };\n\n    const setIndex = (index: number) => {\n      updatePickerIndex(index);\n    };\n\n    const setValue = (value: number | string | undefined) => {\n      const index = getIndexByValue(value);\n      updatePickerIndex(index);\n    };\n    const setOptions = () => {\n      picker?.update();\n    };\n    const setUpdateItems = () => {\n      picker?.updateItems();\n    };\n    context.expose({\n      setIndex,\n      setValue,\n      setOptions,\n      setUpdateItems,\n    });\n\n    onMounted(() => {\n      if (root.value) {\n        picker = new Picker({\n          el: root.value,\n          defaultIndex: getIndexByValue(props.value) || 0,\n          keys: keys.value,\n          defaultPickerColumns: props.options,\n          onChange: (index: number) => {\n            const curItem = props.options[index];\n            const changeValue = { value: lodashGet(curItem, keys.value?.value ?? 'value'), index };\n            props.onPick?.(changeValue);\n          },\n          wheelConfig: props.wheelConfig,\n        });\n      }\n    });\n\n    onBeforeUnmount(() => {\n      // 销毁 picker 实例，清理 ResizeObserver 等资源\n      picker?.destroy();\n      picker = null;\n    });\n\n    watch(\n      () => props.options,\n      () => {\n        picker?.updateOptions(props.options);\n        picker?.updateItems();\n      },\n      { flush: 'post', deep: true },\n    );\n\n    return () => {\n      return (\n        <ul ref={root} class={className.value}>\n          {(props.options || []).map((option, index) => (\n            <li\n              key={index}\n              class={[\n                `${pickerItemClass.value}__item`,\n                {\n                  [`${pickerItemClass.value}__item--disabled`]: lodashGet(option, keys.value?.disabled ?? 'disabled'),\n                },\n              ]}\n            >\n              {context.slots.option ? (\n                context.slots.option(option, index)\n              ) : (\n                <>\n                  {props.renderLabel\n                    ? props.renderLabel(option, index)\n                    : lodashGet(option, keys.value?.label ?? 'label')}\n                </>\n              )}\n            </li>\n          ))}\n        </ul>\n      );\n    };\n  },\n});\n"],"names":["prefix","config","defineComponent","name","props","options","type","Array","value","String","Number","default","renderLabel","Function","onPick","wheelConfig","Object","DEFAULT_WHEEL_CONFIG","emits","setup","context","pickerItemClass","usePrefixClass","pickerProps","inject","keys","computed","_pickerProps$keys","picker","root","ref","getIndexByValue","val","defaultIndex","_props$options","findIndex","item","_keys$value$value","_keys$value","lodashGet","className","concat","updatePickerIndex","index","updateItems","updateIndex","isChange","setIndex","setValue","setOptions","_picker","update","setUpdateItems","_picker2","expose","onMounted","Picker","el","defaultPickerColumns","onChange","_keys$value$value2","_keys$value2","_props$onPick","curItem","changeValue","call","onBeforeUnmount","_picker3","destroy","watch","_picker4","_picker5","updateOptions","flush","deep","_createVNode","map","option","_keys$value$disabled","_keys$value3","_keys$value$label","_keys$value4","_defineProperty","disabled","slots","_Fragment","label"],"mappings":"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"}