{"version":3,"file":"option.mjs","sources":["../../../components/select/option.tsx"],"sourcesContent":["import { defineComponent, ref, computed, inject, onMounted, onBeforeUnmount, getCurrentInstance } from 'vue';\n\nimport props from './option-props';\nimport Checkbox from '../checkbox/index';\n\n// hooks\nimport { useDisabled } from '../hooks/useDisabled';\nimport useRipple from '../hooks/useRipple';\nimport { useContent } from '../hooks/tnode';\nimport { usePrefixClass, useCommonClassName } from '../hooks/useConfig';\nimport { getNewMultipleValue } from './utils';\nimport { selectInjectKey } from './consts';\nimport { SelectValue } from './type';\n\nexport default defineComponent({\n  name: 'TOption',\n  props: {\n    ...props,\n    createAble: Boolean,\n    multiple: Boolean,\n    index: Number,\n    rowIndex: Number,\n    trs: Map,\n    scrollType: String,\n    isVirtual: Boolean,\n    bufferSize: Number,\n    checkAll: Boolean,\n  },\n  emits: ['row-mounted'],\n\n  setup(props, context) {\n    const selectProvider = inject(selectInjectKey);\n    const formDisabled = useDisabled();\n    const { vnode } = getCurrentInstance();\n\n    const isReachMax = computed(\n      () =>\n        selectProvider.value.max !== 0 &&\n        selectProvider.value.max <= (selectProvider.value.selectValue as SelectValue[]).length,\n    );\n    const disabled = computed(\n      () =>\n        formDisabled.value ||\n        (props.multiple && isReachMax.value && !isSelected.value && !selectProvider.value.isCheckAll),\n    );\n\n    const renderContent = useContent();\n\n    const selectName = usePrefixClass('select');\n    const { STATUS, SIZE } = useCommonClassName();\n    const liRef = ref<HTMLElement>();\n\n    const isHover = ref(false);\n\n    const isSelected = computed(() => {\n      if (selectProvider.value.isCheckAll && !props.disabled) return true;\n      return !props.multiple\n        ? selectProvider.value.selectValue === props.value\n        : (selectProvider.value.selectValue as SelectValue[]).includes(props.value);\n    });\n\n    const isIndeterminate = computed(() => {\n      if (!props.checkAll) return false;\n      return selectProvider.value.indeterminate;\n    });\n\n    const classes = computed(() => [\n      `${selectName.value}-option`,\n      [SIZE.value[selectProvider.value.size]],\n      {\n        [STATUS.value.disabled]: disabled.value,\n        [STATUS.value.selected]: isSelected.value,\n        [`${selectName.value}-option__hover`]:\n          (isHover.value || selectProvider.value.hoverIndex === props.index) && !disabled.value,\n      },\n    ]);\n\n    const labelText = computed(() => props.label || props.value);\n\n    const handleClick = (e: MouseEvent | KeyboardEvent) => {\n      if (props.disabled || disabled.value) return;\n      if (props.multiple) {\n        handleCheckboxClick(!isSelected.value, { e });\n        e.preventDefault();\n        return;\n      }\n\n      if (props.createAble) {\n        selectProvider.value.handleCreate?.(props.value);\n        if (selectProvider.value.multiple) {\n          selectProvider.value.handleValueChange(\n            [...(selectProvider.value.selectValue as SelectValue[]), props.value],\n            {\n              selectedOptions: selectProvider.value.getSelectedOptions(),\n              trigger: 'check',\n              e,\n            },\n          );\n          return;\n        }\n      }\n      const selectedOptions = selectProvider.value.getSelectedOptions(props.value);\n      selectProvider.value.handleValueChange(props.value, {\n        option: selectedOptions?.[0],\n        selectedOptions: selectedOptions,\n        trigger: 'check',\n        e,\n      });\n      selectProvider.value.handlePopupVisibleChange(false, { e });\n      selectProvider.value.emitBlur(e);\n    };\n\n    const handleCheckboxClick = (val: boolean, context: { e: MouseEvent | KeyboardEvent }) => {\n      if (props.checkAll) {\n        selectProvider.value.onCheckAllChange(val);\n        return;\n      }\n      const newValue = getNewMultipleValue(selectProvider.value.selectValue as SelectValue[], props.value);\n      const selectedOptions = selectProvider.value.getSelectedOptions(newValue.value);\n\n      selectProvider.value.handleValueChange(newValue.value, {\n        option: selectedOptions.find((v) => v.value === props.value),\n        selectedOptions,\n        trigger: val ? 'check' : 'uncheck',\n        e: context.e,\n      });\n    };\n\n    const renderTitle = () => {\n      const vProps = vnode.props || {};\n      // 如果设置了title 说明希望自己控制title的展示\n      if (Reflect.has(vProps, 'title')) {\n        return props.title;\n      }\n      if (typeof labelText.value === 'string') return labelText.value;\n\n      return null;\n    };\n\n    // 处理虚拟滚动节点挂载\n    onMounted(() => {\n      const { trs, rowIndex, isVirtual } = props;\n      if (isVirtual) {\n        trs.set(rowIndex, liRef.value);\n        context.emit('row-mounted');\n      }\n    });\n\n    // 处理虚拟滚动节点移除\n    onBeforeUnmount(() => {\n      if (props.isVirtual) {\n        const { trs, rowIndex } = props;\n        trs.delete(rowIndex);\n      }\n    });\n\n    useRipple(liRef);\n\n    return () => {\n      const optionChild = renderContent('default', 'content') || labelText.value;\n\n      return (\n        <li\n          ref={liRef}\n          class={classes.value}\n          title={renderTitle()}\n          onMouseenter={() => (isHover.value = true)}\n          onMouseleave={() => (isHover.value = false)}\n          onClick={handleClick}\n        >\n          {selectProvider && props.multiple ? (\n            <Checkbox\n              checked={isSelected.value}\n              disabled={disabled.value}\n              onChange={handleCheckboxClick}\n              indeterminate={isIndeterminate.value}\n            >\n              {optionChild}\n            </Checkbox>\n          ) : (\n            <span>{optionChild}</span>\n          )}\n        </li>\n      );\n    };\n  },\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","defineComponent","name","props","_objectSpread","createAble","Boolean","multiple","index","Number","rowIndex","trs","Map","scrollType","String","isVirtual","bufferSize","checkAll","emits","setup","context","selectProvider","inject","selectInjectKey","formDisabled","useDisabled","_getCurrentInstance","getCurrentInstance","vnode","isReachMax","computed","value","max","selectValue","length","disabled","isSelected","isCheckAll","renderContent","useContent","selectName","usePrefixClass","_useCommonClassName","useCommonClassName","STATUS","SIZE","liRef","ref","isHover","includes","isIndeterminate","indeterminate","classes","concat","size","_defineProperty","selected","hoverIndex","labelText","label","handleClick","e","handleCheckboxClick","preventDefault","_selectProvider$value","_selectProvider$value2","handleCreate","handleValueChange","_toConsumableArray","selectedOptions","getSelectedOptions","trigger","option","handlePopupVisibleChange","emitBlur","val","onCheckAllChange","newValue","getNewMultipleValue","find","v","renderTitle","vProps","Reflect","has","title","onMounted","set","emit","onBeforeUnmount","useRipple","optionChild","_createVNode","onMouseenter","onMouseleave","Checkbox"],"mappings":"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"}