You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 lines
73 KiB
1 lines
73 KiB
{"ast":null,"code":"import { reactive, ref, computed, watch, watchEffect, nextTick, onMounted } from 'vue';\nimport { castArray, isEqual, get, debounce, findLastIndex } from 'lodash-unified';\nimport { isIOS, isClient, useResizeObserver } from '@vueuse/core';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\nimport { useId } from '../../../hooks/use-id/index.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useComposition } from '../../../hooks/use-composition/index.mjs';\nimport { useFocusController } from '../../../hooks/use-focus-controller/index.mjs';\nimport { useFormItem, useFormItemInputId } from '../../form/src/hooks/use-form-item.mjs';\nimport { useEmptyValues } from '../../../hooks/use-empty-values/index.mjs';\nimport { isArray, isFunction, isPlainObject, isObject } from '@vue/shared';\nimport { ValidateComponentsMap } from '../../../utils/vue/icon.mjs';\nimport { useFormSize } from '../../form/src/hooks/use-form-common-props.mjs';\nimport { isUndefined, isNumber } from '../../../utils/types.mjs';\nimport { debugWarn } from '../../../utils/error.mjs';\nimport { EVENT_CODE } from '../../../constants/aria.mjs';\nimport { UPDATE_MODEL_EVENT, CHANGE_EVENT } from '../../../constants/event.mjs';\nimport { scrollIntoView } from '../../../utils/dom/scroll.mjs';\nconst useSelect = (props, emit) => {\n const {\n t\n } = useLocale();\n const contentId = useId();\n const nsSelect = useNamespace(\"select\");\n const nsInput = useNamespace(\"input\");\n const states = reactive({\n inputValue: \"\",\n options: /* @__PURE__ */new Map(),\n cachedOptions: /* @__PURE__ */new Map(),\n optionValues: [],\n selected: [],\n selectionWidth: 0,\n collapseItemWidth: 0,\n selectedLabel: \"\",\n hoveringIndex: -1,\n previousQuery: null,\n inputHovering: false,\n menuVisibleOnFocus: false,\n isBeforeHide: false\n });\n const selectRef = ref(null);\n const selectionRef = ref(null);\n const tooltipRef = ref(null);\n const tagTooltipRef = ref(null);\n const inputRef = ref(null);\n const prefixRef = ref(null);\n const suffixRef = ref(null);\n const menuRef = ref(null);\n const tagMenuRef = ref(null);\n const collapseItemRef = ref(null);\n const scrollbarRef = ref(null);\n const {\n isComposing,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd\n } = useComposition({\n afterComposition: e => onInput(e)\n });\n const {\n wrapperRef,\n isFocused,\n handleBlur\n } = useFocusController(inputRef, {\n beforeFocus() {\n return selectDisabled.value;\n },\n afterFocus() {\n if (props.automaticDropdown && !expanded.value) {\n expanded.value = true;\n states.menuVisibleOnFocus = true;\n }\n },\n beforeBlur(event) {\n var _a, _b;\n return ((_a = tooltipRef.value) == null ? void 0 : _a.isFocusInsideContent(event)) || ((_b = tagTooltipRef.value) == null ? void 0 : _b.isFocusInsideContent(event));\n },\n afterBlur() {\n expanded.value = false;\n states.menuVisibleOnFocus = false;\n }\n });\n const expanded = ref(false);\n const hoverOption = ref();\n const {\n form,\n formItem\n } = useFormItem();\n const {\n inputId\n } = useFormItemInputId(props, {\n formItemContext: formItem\n });\n const {\n valueOnClear,\n isEmptyValue\n } = useEmptyValues(props);\n const selectDisabled = computed(() => props.disabled || (form == null ? void 0 : form.disabled));\n const hasModelValue = computed(() => {\n return isArray(props.modelValue) ? props.modelValue.length > 0 : !isEmptyValue(props.modelValue);\n });\n const needStatusIcon = computed(() => {\n var _a;\n return (_a = form == null ? void 0 : form.statusIcon) != null ? _a : false;\n });\n const showClose = computed(() => {\n return props.clearable && !selectDisabled.value && states.inputHovering && hasModelValue.value;\n });\n const iconComponent = computed(() => props.remote && props.filterable && !props.remoteShowSuffix ? \"\" : props.suffixIcon);\n const iconReverse = computed(() => nsSelect.is(\"reverse\", iconComponent.value && expanded.value));\n const validateState = computed(() => (formItem == null ? void 0 : formItem.validateState) || \"\");\n const validateIcon = computed(() => ValidateComponentsMap[validateState.value]);\n const debounce$1 = computed(() => props.remote ? 300 : 0);\n const isRemoteSearchEmpty = computed(() => props.remote && !states.inputValue && states.options.size === 0);\n const emptyText = computed(() => {\n if (props.loading) {\n return props.loadingText || t(\"el.select.loading\");\n } else {\n if (props.filterable && states.inputValue && states.options.size > 0 && filteredOptionsCount.value === 0) {\n return props.noMatchText || t(\"el.select.noMatch\");\n }\n if (states.options.size === 0) {\n return props.noDataText || t(\"el.select.noData\");\n }\n }\n return null;\n });\n const filteredOptionsCount = computed(() => optionsArray.value.filter(option => option.visible).length);\n const optionsArray = computed(() => {\n const list = Array.from(states.options.values());\n const newList = [];\n states.optionValues.forEach(item => {\n const index = list.findIndex(i => i.value === item);\n if (index > -1) {\n newList.push(list[index]);\n }\n });\n return newList.length >= list.length ? newList : list;\n });\n const cachedOptionsArray = computed(() => Array.from(states.cachedOptions.values()));\n const showNewOption = computed(() => {\n const hasExistingOption = optionsArray.value.filter(option => {\n return !option.created;\n }).some(option => {\n return option.currentLabel === states.inputValue;\n });\n return props.filterable && props.allowCreate && states.inputValue !== \"\" && !hasExistingOption;\n });\n const updateOptions = () => {\n if (props.filterable && isFunction(props.filterMethod)) return;\n if (props.filterable && props.remote && isFunction(props.remoteMethod)) return;\n optionsArray.value.forEach(option => {\n var _a;\n (_a = option.updateOption) == null ? void 0 : _a.call(option, states.inputValue);\n });\n };\n const selectSize = useFormSize();\n const collapseTagSize = computed(() => [\"small\"].includes(selectSize.value) ? \"small\" : \"default\");\n const dropdownMenuVisible = computed({\n get() {\n return expanded.value && !isRemoteSearchEmpty.value;\n },\n set(val) {\n expanded.value = val;\n }\n });\n const shouldShowPlaceholder = computed(() => {\n if (props.multiple && !isUndefined(props.modelValue)) {\n return castArray(props.modelValue).length === 0 && !states.inputValue;\n }\n const value = isArray(props.modelValue) ? props.modelValue[0] : props.modelValue;\n return props.filterable || isUndefined(value) ? !states.inputValue : true;\n });\n const currentPlaceholder = computed(() => {\n var _a;\n const _placeholder = (_a = props.placeholder) != null ? _a : t(\"el.select.placeholder\");\n return props.multiple || !hasModelValue.value ? _placeholder : states.selectedLabel;\n });\n const mouseEnterEventName = computed(() => isIOS ? null : \"mouseenter\");\n watch(() => props.modelValue, (val, oldVal) => {\n if (props.multiple) {\n if (props.filterable && !props.reserveKeyword) {\n states.inputValue = \"\";\n handleQueryChange(\"\");\n }\n }\n setSelected();\n if (!isEqual(val, oldVal) && props.validateEvent) {\n formItem == null ? void 0 : formItem.validate(\"change\").catch(err => debugWarn(err));\n }\n }, {\n flush: \"post\",\n deep: true\n });\n watch(() => expanded.value, val => {\n if (val) {\n handleQueryChange(states.inputValue);\n } else {\n states.inputValue = \"\";\n states.previousQuery = null;\n states.isBeforeHide = true;\n }\n emit(\"visible-change\", val);\n });\n watch(() => states.options.entries(), () => {\n if (!isClient) return;\n setSelected();\n if (props.defaultFirstOption && (props.filterable || props.remote) && filteredOptionsCount.value) {\n checkDefaultFirstOption();\n }\n }, {\n flush: \"post\"\n });\n watch(() => states.hoveringIndex, val => {\n if (isNumber(val) && val > -1) {\n hoverOption.value = optionsArray.value[val] || {};\n } else {\n hoverOption.value = {};\n }\n optionsArray.value.forEach(option => {\n option.hover = hoverOption.value === option;\n });\n });\n watchEffect(() => {\n if (states.isBeforeHide) return;\n updateOptions();\n });\n const handleQueryChange = val => {\n if (states.previousQuery === val || isComposing.value) {\n return;\n }\n states.previousQuery = val;\n if (props.filterable && isFunction(props.filterMethod)) {\n props.filterMethod(val);\n } else if (props.filterable && props.remote && isFunction(props.remoteMethod)) {\n props.remoteMethod(val);\n }\n if (props.defaultFirstOption && (props.filterable || props.remote) && filteredOptionsCount.value) {\n nextTick(checkDefaultFirstOption);\n } else {\n nextTick(updateHoveringIndex);\n }\n };\n const checkDefaultFirstOption = () => {\n const optionsInDropdown = optionsArray.value.filter(n => n.visible && !n.disabled && !n.states.groupDisabled);\n const userCreatedOption = optionsInDropdown.find(n => n.created);\n const firstOriginOption = optionsInDropdown[0];\n const valueList = optionsArray.value.map(item => item.value);\n states.hoveringIndex = getValueIndex(valueList, userCreatedOption || firstOriginOption);\n };\n const setSelected = () => {\n if (!props.multiple) {\n const value = isArray(props.modelValue) ? props.modelValue[0] : props.modelValue;\n const option = getOption(value);\n states.selectedLabel = option.currentLabel;\n states.selected = [option];\n return;\n } else {\n states.selectedLabel = \"\";\n }\n const result = [];\n if (!isUndefined(props.modelValue)) {\n castArray(props.modelValue).forEach(value => {\n result.push(getOption(value));\n });\n }\n states.selected = result;\n };\n const getOption = value => {\n let option;\n const isObjectValue = isPlainObject(value);\n for (let i = states.cachedOptions.size - 1; i >= 0; i--) {\n const cachedOption = cachedOptionsArray.value[i];\n const isEqualValue = isObjectValue ? get(cachedOption.value, props.valueKey) === get(value, props.valueKey) : cachedOption.value === value;\n if (isEqualValue) {\n option = {\n value,\n currentLabel: cachedOption.currentLabel,\n get isDisabled() {\n return cachedOption.isDisabled;\n }\n };\n break;\n }\n }\n if (option) return option;\n const label = isObjectValue ? value.label : value != null ? value : \"\";\n const newOption = {\n value,\n currentLabel: label\n };\n return newOption;\n };\n const updateHoveringIndex = () => {\n states.hoveringIndex = optionsArray.value.findIndex(item => states.selected.some(selected => getValueKey(selected) === getValueKey(item)));\n };\n const resetSelectionWidth = () => {\n states.selectionWidth = selectionRef.value.getBoundingClientRect().width;\n };\n const resetCollapseItemWidth = () => {\n states.collapseItemWidth = collapseItemRef.value.getBoundingClientRect().width;\n };\n const updateTooltip = () => {\n var _a, _b;\n (_b = (_a = tooltipRef.value) == null ? void 0 : _a.updatePopper) == null ? void 0 : _b.call(_a);\n };\n const updateTagTooltip = () => {\n var _a, _b;\n (_b = (_a = tagTooltipRef.value) == null ? void 0 : _a.updatePopper) == null ? void 0 : _b.call(_a);\n };\n const onInputChange = () => {\n if (states.inputValue.length > 0 && !expanded.value) {\n expanded.value = true;\n }\n handleQueryChange(states.inputValue);\n };\n const onInput = event => {\n states.inputValue = event.target.value;\n if (props.remote) {\n debouncedOnInputChange();\n } else {\n return onInputChange();\n }\n };\n const debouncedOnInputChange = debounce(() => {\n onInputChange();\n }, debounce$1.value);\n const emitChange = val => {\n if (!isEqual(props.modelValue, val)) {\n emit(CHANGE_EVENT, val);\n }\n };\n const getLastNotDisabledIndex = value => findLastIndex(value, it => {\n const option = states.cachedOptions.get(it);\n return option && !option.disabled && !option.states.groupDisabled;\n });\n const deletePrevTag = e => {\n if (!props.multiple) return;\n if (e.code === EVENT_CODE.delete) return;\n if (e.target.value.length <= 0) {\n const value = castArray(props.modelValue).slice();\n const lastNotDisabledIndex = getLastNotDisabledIndex(value);\n if (lastNotDisabledIndex < 0) return;\n const removeTagValue = value[lastNotDisabledIndex];\n value.splice(lastNotDisabledIndex, 1);\n emit(UPDATE_MODEL_EVENT, value);\n emitChange(value);\n emit(\"remove-tag\", removeTagValue);\n }\n };\n const deleteTag = (event, tag) => {\n const index = states.selected.indexOf(tag);\n if (index > -1 && !selectDisabled.value) {\n const value = castArray(props.modelValue).slice();\n value.splice(index, 1);\n emit(UPDATE_MODEL_EVENT, value);\n emitChange(value);\n emit(\"remove-tag\", tag.value);\n }\n event.stopPropagation();\n focus();\n };\n const deleteSelected = event => {\n event.stopPropagation();\n const value = props.multiple ? [] : valueOnClear.value;\n if (props.multiple) {\n for (const item of states.selected) {\n if (item.isDisabled) value.push(item.value);\n }\n }\n emit(UPDATE_MODEL_EVENT, value);\n emitChange(value);\n states.hoveringIndex = -1;\n expanded.value = false;\n emit(\"clear\");\n focus();\n };\n const handleOptionSelect = option => {\n var _a;\n if (props.multiple) {\n const value = castArray((_a = props.modelValue) != null ? _a : []).slice();\n const optionIndex = getValueIndex(value, option);\n if (optionIndex > -1) {\n value.splice(optionIndex, 1);\n } else if (props.multipleLimit <= 0 || value.length < props.multipleLimit) {\n value.push(option.value);\n }\n emit(UPDATE_MODEL_EVENT, value);\n emitChange(value);\n if (option.created) {\n handleQueryChange(\"\");\n }\n if (props.filterable && !props.reserveKeyword) {\n states.inputValue = \"\";\n }\n } else {\n emit(UPDATE_MODEL_EVENT, option.value);\n emitChange(option.value);\n expanded.value = false;\n }\n focus();\n if (expanded.value) return;\n nextTick(() => {\n scrollToOption(option);\n });\n };\n const getValueIndex = (arr = [], option) => {\n if (isUndefined(option)) return -1;\n if (!isObject(option.value)) return arr.indexOf(option.value);\n return arr.findIndex(item => {\n return isEqual(get(item, props.valueKey), getValueKey(option));\n });\n };\n const scrollToOption = option => {\n var _a, _b, _c, _d, _e;\n const targetOption = isArray(option) ? option[0] : option;\n let target = null;\n if (targetOption == null ? void 0 : targetOption.value) {\n const options = optionsArray.value.filter(item => item.value === targetOption.value);\n if (options.length > 0) {\n target = options[0].$el;\n }\n }\n if (tooltipRef.value && target) {\n const menu = (_d = (_c = (_b = (_a = tooltipRef.value) == null ? void 0 : _a.popperRef) == null ? void 0 : _b.contentRef) == null ? void 0 : _c.querySelector) == null ? void 0 : _d.call(_c, `.${nsSelect.be(\"dropdown\", \"wrap\")}`);\n if (menu) {\n scrollIntoView(menu, target);\n }\n }\n (_e = scrollbarRef.value) == null ? void 0 : _e.handleScroll();\n };\n const onOptionCreate = vm => {\n states.options.set(vm.value, vm);\n states.cachedOptions.set(vm.value, vm);\n };\n const onOptionDestroy = (key, vm) => {\n if (states.options.get(key) === vm) {\n states.options.delete(key);\n }\n };\n const popperRef = computed(() => {\n var _a, _b;\n return (_b = (_a = tooltipRef.value) == null ? void 0 : _a.popperRef) == null ? void 0 : _b.contentRef;\n });\n const handleMenuEnter = () => {\n states.isBeforeHide = false;\n nextTick(() => scrollToOption(states.selected));\n };\n const focus = () => {\n var _a;\n (_a = inputRef.value) == null ? void 0 : _a.focus();\n };\n const blur = () => {\n var _a;\n if (expanded.value) {\n expanded.value = false;\n nextTick(() => {\n var _a2;\n return (_a2 = inputRef.value) == null ? void 0 : _a2.blur();\n });\n return;\n }\n (_a = inputRef.value) == null ? void 0 : _a.blur();\n };\n const handleClearClick = event => {\n deleteSelected(event);\n };\n const handleClickOutside = event => {\n expanded.value = false;\n if (isFocused.value) {\n const _event = new FocusEvent(\"focus\", event);\n nextTick(() => handleBlur(_event));\n }\n };\n const handleEsc = () => {\n if (states.inputValue.length > 0) {\n states.inputValue = \"\";\n } else {\n expanded.value = false;\n }\n };\n const toggleMenu = () => {\n if (selectDisabled.value) return;\n if (isIOS) states.inputHovering = true;\n if (states.menuVisibleOnFocus) {\n states.menuVisibleOnFocus = false;\n } else {\n expanded.value = !expanded.value;\n }\n };\n const selectOption = () => {\n if (!expanded.value) {\n toggleMenu();\n } else {\n const option = optionsArray.value[states.hoveringIndex];\n if (option && !option.isDisabled) {\n handleOptionSelect(option);\n }\n }\n };\n const getValueKey = item => {\n return isObject(item.value) ? get(item.value, props.valueKey) : item.value;\n };\n const optionsAllDisabled = computed(() => optionsArray.value.filter(option => option.visible).every(option => option.isDisabled));\n const showTagList = computed(() => {\n if (!props.multiple) {\n return [];\n }\n return props.collapseTags ? states.selected.slice(0, props.maxCollapseTags) : states.selected;\n });\n const collapseTagList = computed(() => {\n if (!props.multiple) {\n return [];\n }\n return props.collapseTags ? states.selected.slice(props.maxCollapseTags) : [];\n });\n const navigateOptions = direction => {\n if (!expanded.value) {\n expanded.value = true;\n return;\n }\n if (states.options.size === 0 || filteredOptionsCount.value === 0 || isComposing.value) return;\n if (!optionsAllDisabled.value) {\n if (direction === \"next\") {\n states.hoveringIndex++;\n if (states.hoveringIndex === states.options.size) {\n states.hoveringIndex = 0;\n }\n } else if (direction === \"prev\") {\n states.hoveringIndex--;\n if (states.hoveringIndex < 0) {\n states.hoveringIndex = states.options.size - 1;\n }\n }\n const option = optionsArray.value[states.hoveringIndex];\n if (option.isDisabled || !option.visible) {\n navigateOptions(direction);\n }\n nextTick(() => scrollToOption(hoverOption.value));\n }\n };\n const getGapWidth = () => {\n if (!selectionRef.value) return 0;\n const style = window.getComputedStyle(selectionRef.value);\n return Number.parseFloat(style.gap || \"6px\");\n };\n const tagStyle = computed(() => {\n const gapWidth = getGapWidth();\n const maxWidth = collapseItemRef.value && props.maxCollapseTags === 1 ? states.selectionWidth - states.collapseItemWidth - gapWidth : states.selectionWidth;\n return {\n maxWidth: `${maxWidth}px`\n };\n });\n const collapseTagStyle = computed(() => {\n return {\n maxWidth: `${states.selectionWidth}px`\n };\n });\n useResizeObserver(selectionRef, resetSelectionWidth);\n useResizeObserver(menuRef, updateTooltip);\n useResizeObserver(wrapperRef, updateTooltip);\n useResizeObserver(tagMenuRef, updateTagTooltip);\n useResizeObserver(collapseItemRef, resetCollapseItemWidth);\n onMounted(() => {\n setSelected();\n });\n return {\n inputId,\n contentId,\n nsSelect,\n nsInput,\n states,\n isFocused,\n expanded,\n optionsArray,\n hoverOption,\n selectSize,\n filteredOptionsCount,\n updateTooltip,\n updateTagTooltip,\n debouncedOnInputChange,\n onInput,\n deletePrevTag,\n deleteTag,\n deleteSelected,\n handleOptionSelect,\n scrollToOption,\n hasModelValue,\n shouldShowPlaceholder,\n currentPlaceholder,\n mouseEnterEventName,\n needStatusIcon,\n showClose,\n iconComponent,\n iconReverse,\n validateState,\n validateIcon,\n showNewOption,\n updateOptions,\n collapseTagSize,\n setSelected,\n selectDisabled,\n emptyText,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd,\n onOptionCreate,\n onOptionDestroy,\n handleMenuEnter,\n focus,\n blur,\n handleClearClick,\n handleClickOutside,\n handleEsc,\n toggleMenu,\n selectOption,\n getValueKey,\n navigateOptions,\n dropdownMenuVisible,\n showTagList,\n collapseTagList,\n tagStyle,\n collapseTagStyle,\n popperRef,\n inputRef,\n tooltipRef,\n tagTooltipRef,\n prefixRef,\n suffixRef,\n selectRef,\n wrapperRef,\n selectionRef,\n scrollbarRef,\n menuRef,\n tagMenuRef,\n collapseItemRef\n };\n};\nexport { useSelect };","map":{"version":3,"names":["useSelect","props","emit","t","useLocale","contentId","useId","nsSelect","useNamespace","nsInput","states","reactive","inputValue","options","Map","cachedOptions","optionValues","selected","selectionWidth","collapseItemWidth","selectedLabel","hoveringIndex","previousQuery","inputHovering","menuVisibleOnFocus","isBeforeHide","selectRef","ref","selectionRef","tooltipRef","tagTooltipRef","inputRef","prefixRef","suffixRef","menuRef","tagMenuRef","collapseItemRef","scrollbarRef","isComposing","handleCompositionStart","handleCompositionUpdate","handleCompositionEnd","useComposition","afterComposition","e","onInput","wrapperRef","isFocused","handleBlur","useFocusController","beforeFocus","selectDisabled","value","afterFocus","automaticDropdown","expanded","beforeBlur","event","_a","_b","isFocusInsideContent","afterBlur","hoverOption","form","formItem","useFormItem","inputId","useFormItemInputId","formItemContext","valueOnClear","isEmptyValue","useEmptyValues","computed","disabled","hasModelValue","isArray","modelValue","length","needStatusIcon","statusIcon","showClose","clearable","iconComponent","remote","filterable","remoteShowSuffix","suffixIcon","iconReverse","is","validateState","validateIcon","ValidateComponentsMap","debounce$1","isRemoteSearchEmpty","size","emptyText","loading","loadingText","filteredOptionsCount","noMatchText","noDataText","optionsArray","filter","option","visible","list","Array","from","values","newList","forEach","item","index","findIndex","i","push","cachedOptionsArray","showNewOption","hasExistingOption","created","some","currentLabel","allowCreate","updateOptions","isFunction","filterMethod","remoteMethod","updateOption","call","selectSize","useFormSize","collapseTagSize","includes","dropdownMenuVisible","get","set","val","shouldShowPlaceholder","multiple","isUndefined","castArray","currentPlaceholder","_placeholder","placeholder","mouseEnterEventName","isIOS","watch","oldVal","reserveKeyword","handleQueryChange","setSelected","isEqual","validateEvent","validate","catch","err","debugWarn","flush","deep","entries","isClient","defaultFirstOption","checkDefaultFirstOption","isNumber","hover","watchEffect","nextTick","updateHoveringIndex","optionsInDropdown","n","groupDisabled","userCreatedOption","find","firstOriginOption","valueList","map","getValueIndex","getOption","result","isObjectValue","isPlainObject","cachedOption","isEqualValue","valueKey","isDisabled","label","newOption","getValueKey","resetSelectionWidth","getBoundingClientRect","width","resetCollapseItemWidth","updateTooltip","updatePopper","updateTagTooltip","onInputChange","target","debouncedOnInputChange","debounce","emitChange","CHANGE_EVENT","getLastNotDisabledIndex","findLastIndex","it","deletePrevTag","code","EVENT_CODE","delete","slice","lastNotDisabledIndex","removeTagValue","splice","UPDATE_MODEL_EVENT","deleteTag","tag","indexOf","stopPropagation","focus","deleteSelected","handleOptionSelect","optionIndex","multipleLimit","scrollToOption","arr","isObject","_c","_d","_e","targetOption","$el","menu","popperRef","contentRef","querySelector","be","scrollIntoView","handleScroll","onOptionCreate","vm","onOptionDestroy","key","handleMenuEnter","blur","_a2","handleClearClick","handleClickOutside","_event","FocusEvent","handleEsc","toggleMenu","selectOption","optionsAllDisabled","every","showTagList","collapseTags","maxCollapseTags","collapseTagList","navigateOptions","direction","getGapWidth","style","window","getComputedStyle","Number","parseFloat","gap","tagStyle","gapWidth","maxWidth","collapseTagStyle","useResizeObserver","onMounted"],"sources":["../../../../../../packages/components/select/src/useSelect.ts"],"sourcesContent":["// @ts-nocheck\nimport {\n computed,\n nextTick,\n onMounted,\n reactive,\n ref,\n watch,\n watchEffect,\n} from 'vue'\nimport {\n findLastIndex,\n get,\n isEqual,\n debounce as lodashDebounce,\n} from 'lodash-unified'\nimport { useResizeObserver } from '@vueuse/core'\nimport {\n ValidateComponentsMap,\n debugWarn,\n ensureArray,\n isArray,\n isClient,\n isFunction,\n isIOS,\n isNumber,\n isObject,\n isPlainObject,\n isUndefined,\n scrollIntoView,\n} from '@element-plus/utils'\nimport {\n CHANGE_EVENT,\n EVENT_CODE,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport {\n useComposition,\n useEmptyValues,\n useFocusController,\n useId,\n useLocale,\n useNamespace,\n} from '@element-plus/hooks'\nimport {\n useFormItem,\n useFormItemInputId,\n useFormSize,\n} from '@element-plus/components/form'\n\nimport type ElTooltip from '@element-plus/components/tooltip'\nimport type { ISelectProps, SelectOptionProxy } from './token'\n\ntype useSelectType = (\n props: ISelectProps,\n emit: any\n) => {\n inputId: Ref<string | undefined>\n contentId: Ref<string | undefined>\n nsSelect: Ref<string | undefined>\n nsInput: Ref<string | undefined>\n states: Reactive<Record<string, any>>\n isFocused: Ref<boolean>\n expanded: Ref<boolean>\n optionsArray: ComputedRef<any[]>\n hoverOption: Ref<unknown>\n selectSize: ComputedRef<'' | 'default' | 'small' | 'large'>\n filteredOptionsCount: ComputedRef<number>\n resetCalculatorWidth: () => void\n updateTooltip: () => void\n updateTagTooltip: () => void\n debouncedOnInputChange: DebouncedFunc<() => void>\n onInput: (event: Event) => void\n deletePrevTag: (event: Event) => void\n deleteTag: (event: Event, tag: any) => void\n deleteSelected: (event: Event) => void\n handleOptionSelect: (option: any) => void\n scrollToOption: (option: any) => void\n hasModelValue: ComputedRef<boolean>\n shouldShowPlaceholder: ComputedRef<boolean>\n currentPlaceholder: ComputedRef<string>\n mouseEnterEventName: Ref<string | null>\n needStatusIcon: ComputedRef<boolean>\n showClose: ComputedRef<boolean>\n iconComponent: ComputedRef<string>\n iconReverse: ComputedRef<boolean>\n validateState: ComputedRef<string>\n\n validateIcon: ComputedRef<unknown>\n showNewOption: ComputedRef<boolean>\n updateOptions: () => void\n collapseTagSize: ComputedRef<'default' | 'small'>\n setSelected: () => void\n selectDisabled: ComputedRef<boolean>\n emptyText: ComputedRef<string | null>\n handleCompositionStart: (e: Event) => void\n handleCompositionUpdate: (e: Event) => void\n handleCompositionEnd: (e: Event) => void\n onOptionCreate: (vm: SelectOptionProxy) => void\n onOptionDestroy: (key: any, vm: SelectOptionProxy) => void\n handleMenuEnter: () => void\n focus: () => void\n blur: () => void\n handleClearClick: (event: Event) => void\n handleClickOutside: (event: Event) => void\n handleEsc: () => void\n toggleMenu: () => void\n selectOption: () => void\n getValueKey: (item: any) => any\n navigateOptions: (direction: string) => void\n dropdownMenuVisible: WritableComputedRef<boolean>\n showTagList: ComputedRef<unknown[]>\n collapseTagList: ComputedRef<unknown[]>\n tagStyle: ComputedRef<unknown>\n collapseTagStyle: ComputedRef<unknown>\n inputStyle: ComputedRef<unknown>\n popperRef: ComputedRef<unknown>\n inputRef: Ref<HTMLInputElement | null>\n tooltipRef: Ref<InstanceType<typeof ElTooltip> | null>\n tagTooltipRef: Ref<InstanceType<typeof ElTooltip> | null>\n calculatorRef: Ref<HTMLElement>\n prefixRef: Ref<HTMLElement>\n suffixRef: Ref<HTMLElement>\n selectRef: Ref<HTMLElement>\n wrapperRef: Ref<HTMLElement>\n selectionRef: Ref<HTMLElement>\n scrollbarRef: Ref<{\n handleScroll: () => void\n } | null>\n menuRef: Ref<HTMLElement>\n tagMenuRef: Ref<HTMLElement>\n collapseItemRef: Ref<HTMLElement>\n}\n\nexport const useSelect: useSelectType = (props: ISelectProps, emit) => {\n const { t } = useLocale()\n const contentId = useId()\n const nsSelect = useNamespace('select')\n const nsInput = useNamespace('input')\n\n const states = reactive({\n inputValue: '',\n options: new Map(),\n cachedOptions: new Map(),\n optionValues: [] as any[], // sorted value of options\n selected: [] as any[],\n selectionWidth: 0,\n collapseItemWidth: 0,\n selectedLabel: '',\n hoveringIndex: -1,\n previousQuery: null,\n inputHovering: false,\n menuVisibleOnFocus: false,\n isBeforeHide: false,\n })\n\n // template refs\n const selectRef = ref<HTMLElement>(null)\n const selectionRef = ref<HTMLElement>(null)\n const tooltipRef = ref<InstanceType<typeof ElTooltip> | null>(null)\n const tagTooltipRef = ref<InstanceType<typeof ElTooltip> | null>(null)\n const inputRef = ref<HTMLInputElement | null>(null)\n const prefixRef = ref<HTMLElement>(null)\n const suffixRef = ref<HTMLElement>(null)\n const menuRef = ref<HTMLElement>(null)\n const tagMenuRef = ref<HTMLElement>(null)\n const collapseItemRef = ref<HTMLElement>(null)\n const scrollbarRef = ref<{\n handleScroll: () => void\n } | null>(null)\n\n const {\n isComposing,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd,\n } = useComposition({\n afterComposition: (e) => onInput(e),\n })\n\n const { wrapperRef, isFocused, handleBlur } = useFocusController(inputRef, {\n beforeFocus() {\n return selectDisabled.value\n },\n afterFocus() {\n if (props.automaticDropdown && !expanded.value) {\n expanded.value = true\n states.menuVisibleOnFocus = true\n }\n },\n beforeBlur(event) {\n return (\n tooltipRef.value?.isFocusInsideContent(event) ||\n tagTooltipRef.value?.isFocusInsideContent(event)\n )\n },\n afterBlur() {\n expanded.value = false\n states.menuVisibleOnFocus = false\n },\n })\n\n // the controller of the expanded popup\n const expanded = ref(false)\n const hoverOption = ref()\n\n const { form, formItem } = useFormItem()\n const { inputId } = useFormItemInputId(props, {\n formItemContext: formItem,\n })\n const { valueOnClear, isEmptyValue } = useEmptyValues(props)\n\n const selectDisabled = computed(() => props.disabled || form?.disabled)\n\n const hasModelValue = computed(() => {\n return isArray(props.modelValue)\n ? props.modelValue.length > 0\n : !isEmptyValue(props.modelValue)\n })\n\n const needStatusIcon = computed(() => form?.statusIcon ?? false)\n\n const showClose = computed(() => {\n return (\n props.clearable &&\n !selectDisabled.value &&\n states.inputHovering &&\n hasModelValue.value\n )\n })\n const iconComponent = computed(() =>\n props.remote && props.filterable && !props.remoteShowSuffix\n ? ''\n : props.suffixIcon\n )\n const iconReverse = computed(() =>\n nsSelect.is('reverse', iconComponent.value && expanded.value)\n )\n\n const validateState = computed(() => formItem?.validateState || '')\n const validateIcon = computed(\n () => ValidateComponentsMap[validateState.value]\n )\n\n const debounce = computed(() => (props.remote ? 300 : 0))\n\n const isRemoteSearchEmpty = computed(\n () => props.remote && !states.inputValue && states.options.size === 0\n )\n\n const emptyText = computed(() => {\n if (props.loading) {\n return props.loadingText || t('el.select.loading')\n } else {\n if (\n props.filterable &&\n states.inputValue &&\n states.options.size > 0 &&\n filteredOptionsCount.value === 0\n ) {\n return props.noMatchText || t('el.select.noMatch')\n }\n if (states.options.size === 0) {\n return props.noDataText || t('el.select.noData')\n }\n }\n return null\n })\n\n const filteredOptionsCount = computed(\n () => optionsArray.value.filter((option) => option.visible).length\n )\n\n const optionsArray = computed(() => {\n const list = Array.from(states.options.values())\n const newList = []\n states.optionValues.forEach((item) => {\n const index = list.findIndex((i) => i.value === item)\n if (index > -1) {\n newList.push(list[index])\n }\n })\n return newList.length >= list.length ? newList : list\n })\n\n const cachedOptionsArray = computed(() =>\n Array.from(states.cachedOptions.values())\n )\n\n const showNewOption = computed(() => {\n const hasExistingOption = optionsArray.value\n .filter((option) => {\n return !option.created\n })\n .some((option) => {\n return option.currentLabel === states.inputValue\n })\n return (\n props.filterable &&\n props.allowCreate &&\n states.inputValue !== '' &&\n !hasExistingOption\n )\n })\n\n const updateOptions = () => {\n if (props.filterable && isFunction(props.filterMethod)) return\n if (props.filterable && props.remote && isFunction(props.remoteMethod))\n return\n optionsArray.value.forEach((option) => {\n option.updateOption?.(states.inputValue)\n })\n }\n\n const selectSize = useFormSize()\n\n const collapseTagSize = computed(() =>\n ['small'].includes(selectSize.value) ? 'small' : 'default'\n )\n\n const dropdownMenuVisible = computed({\n get() {\n return expanded.value && !isRemoteSearchEmpty.value\n },\n set(val: boolean) {\n expanded.value = val\n },\n })\n\n const shouldShowPlaceholder = computed(() => {\n if (props.multiple && !isUndefined(props.modelValue)) {\n return ensureArray(props.modelValue).length === 0 && !states.inputValue\n }\n const value = isArray(props.modelValue)\n ? props.modelValue[0]\n : props.modelValue\n return props.filterable || isUndefined(value) ? !states.inputValue : true\n })\n\n const currentPlaceholder = computed(() => {\n const _placeholder = props.placeholder ?? t('el.select.placeholder')\n return props.multiple || !hasModelValue.value\n ? _placeholder\n : states.selectedLabel\n })\n\n // iOS Safari does not handle click events when a mouseenter event is registered and a DOM-change happens in a child\n // We use a Vue custom event binding to only register the event on non-iOS devices\n // ref.: https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html\n // Github Issue: https://github.com/vuejs/vue/issues/9859\n const mouseEnterEventName = computed(() => (isIOS ? null : 'mouseenter'))\n\n watch(\n () => props.modelValue,\n (val, oldVal) => {\n if (props.multiple) {\n if (props.filterable && !props.reserveKeyword) {\n states.inputValue = ''\n handleQueryChange('')\n }\n }\n setSelected()\n if (!isEqual(val, oldVal) && props.validateEvent) {\n formItem?.validate('change').catch((err) => debugWarn(err))\n }\n },\n {\n flush: 'post',\n deep: true,\n }\n )\n\n watch(\n () => expanded.value,\n (val) => {\n if (val) {\n handleQueryChange(states.inputValue)\n } else {\n states.inputValue = ''\n states.previousQuery = null\n states.isBeforeHide = true\n }\n emit('visible-change', val)\n }\n )\n\n watch(\n // fix `Array.prototype.push/splice/..` cannot trigger non-deep watcher\n // https://github.com/vuejs/vue-next/issues/2116\n () => states.options.entries(),\n () => {\n if (!isClient) return\n // tooltipRef.value?.updatePopper?.()\n setSelected()\n if (\n props.defaultFirstOption &&\n (props.filterable || props.remote) &&\n filteredOptionsCount.value\n ) {\n checkDefaultFirstOption()\n }\n },\n {\n flush: 'post',\n }\n )\n\n watch(\n () => states.hoveringIndex,\n (val) => {\n if (isNumber(val) && val > -1) {\n hoverOption.value = optionsArray.value[val] || {}\n } else {\n hoverOption.value = {}\n }\n optionsArray.value.forEach((option) => {\n option.hover = hoverOption.value === option\n })\n }\n )\n\n watchEffect(() => {\n // Anything could cause options changed, then update options\n // If you want to control it by condition, write here\n if (states.isBeforeHide) return\n updateOptions()\n })\n\n const handleQueryChange = (val: string) => {\n if (states.previousQuery === val || isComposing.value) {\n return\n }\n states.previousQuery = val\n if (props.filterable && isFunction(props.filterMethod)) {\n props.filterMethod(val)\n } else if (\n props.filterable &&\n props.remote &&\n isFunction(props.remoteMethod)\n ) {\n props.remoteMethod(val)\n }\n if (\n props.defaultFirstOption &&\n (props.filterable || props.remote) &&\n filteredOptionsCount.value\n ) {\n nextTick(checkDefaultFirstOption)\n } else {\n nextTick(updateHoveringIndex)\n }\n }\n\n /**\n * find and highlight first option as default selected\n * @remark\n * - if the first option in dropdown list is user-created,\n * it would be at the end of the optionsArray\n * so find it and set hover.\n * (NOTE: there must be only one user-created option in dropdown list with query)\n * - if there's no user-created option in list, just find the first one as usual\n * (NOTE: exclude options that are disabled or in disabled-group)\n */\n const checkDefaultFirstOption = () => {\n const optionsInDropdown = optionsArray.value.filter(\n (n) => n.visible && !n.disabled && !n.states.groupDisabled\n )\n const userCreatedOption = optionsInDropdown.find((n) => n.created)\n const firstOriginOption = optionsInDropdown[0]\n const valueList = optionsArray.value.map((item) => item.value)\n states.hoveringIndex = getValueIndex(\n valueList,\n userCreatedOption || firstOriginOption\n )\n }\n\n const setSelected = () => {\n if (!props.multiple) {\n const value = isArray(props.modelValue)\n ? props.modelValue[0]\n : props.modelValue\n const option = getOption(value)\n states.selectedLabel = option.currentLabel\n states.selected = [option]\n return\n } else {\n states.selectedLabel = ''\n }\n const result: any[] = []\n if (!isUndefined(props.modelValue)) {\n ensureArray(props.modelValue).forEach((value) => {\n result.push(getOption(value))\n })\n }\n states.selected = result\n }\n\n const getOption = (value) => {\n let option\n const isObjectValue = isPlainObject(value)\n\n for (let i = states.cachedOptions.size - 1; i >= 0; i--) {\n const cachedOption = cachedOptionsArray.value[i]\n const isEqualValue = isObjectValue\n ? get(cachedOption.value, props.valueKey) === get(value, props.valueKey)\n : cachedOption.value === value\n if (isEqualValue) {\n option = {\n value,\n currentLabel: cachedOption.currentLabel,\n get isDisabled() {\n return cachedOption.isDisabled\n },\n }\n break\n }\n }\n if (option) return option\n const label = isObjectValue ? value.label : value ?? ''\n const newOption = {\n value,\n currentLabel: label,\n }\n return newOption\n }\n\n const updateHoveringIndex = () => {\n states.hoveringIndex = optionsArray.value.findIndex((item) =>\n states.selected.some(\n (selected) => getValueKey(selected) === getValueKey(item)\n )\n )\n }\n\n const resetSelectionWidth = () => {\n states.selectionWidth = selectionRef.value.getBoundingClientRect().width\n }\n\n const resetCollapseItemWidth = () => {\n states.collapseItemWidth =\n collapseItemRef.value.getBoundingClientRect().width\n }\n\n const updateTooltip = () => {\n tooltipRef.value?.updatePopper?.()\n }\n\n const updateTagTooltip = () => {\n tagTooltipRef.value?.updatePopper?.()\n }\n\n const onInputChange = () => {\n if (states.inputValue.length > 0 && !expanded.value) {\n expanded.value = true\n }\n handleQueryChange(states.inputValue)\n }\n\n const onInput = (event) => {\n states.inputValue = event.target.value\n if (props.remote) {\n debouncedOnInputChange()\n } else {\n return onInputChange()\n }\n }\n\n const debouncedOnInputChange = lodashDebounce(() => {\n onInputChange()\n }, debounce.value)\n\n const emitChange = (val) => {\n if (!isEqual(props.modelValue, val)) {\n emit(CHANGE_EVENT, val)\n }\n }\n\n const getLastNotDisabledIndex = (value) =>\n findLastIndex(value, (it) => {\n const option = states.cachedOptions.get(it)\n return option && !option.disabled && !option.states.groupDisabled\n })\n\n const deletePrevTag = (e) => {\n if (!props.multiple) return\n if (e.code === EVENT_CODE.delete) return\n if (e.target.value.length <= 0) {\n const value = ensureArray(props.modelValue).slice()\n const lastNotDisabledIndex = getLastNotDisabledIndex(value)\n if (lastNotDisabledIndex < 0) return\n const removeTagValue = value[lastNotDisabledIndex]\n value.splice(lastNotDisabledIndex, 1)\n emit(UPDATE_MODEL_EVENT, value)\n emitChange(value)\n emit('remove-tag', removeTagValue)\n }\n }\n\n const deleteTag = (event, tag) => {\n const index = states.selected.indexOf(tag)\n if (index > -1 && !selectDisabled.value) {\n const value = ensureArray(props.modelValue).slice()\n value.splice(index, 1)\n emit(UPDATE_MODEL_EVENT, value)\n emitChange(value)\n emit('remove-tag', tag.value)\n }\n event.stopPropagation()\n focus()\n }\n\n const deleteSelected = (event) => {\n event.stopPropagation()\n const value: string | any[] = props.multiple ? [] : valueOnClear.value\n if (props.multiple) {\n for (const item of states.selected) {\n if (item.isDisabled) value.push(item.value)\n }\n }\n emit(UPDATE_MODEL_EVENT, value)\n emitChange(value)\n states.hoveringIndex = -1\n expanded.value = false\n emit('clear')\n focus()\n }\n\n const handleOptionSelect = (option) => {\n if (props.multiple) {\n const value = ensureArray(props.modelValue ?? []).slice()\n const optionIndex = getValueIndex(value, option)\n if (optionIndex > -1) {\n value.splice(optionIndex, 1)\n } else if (\n props.multipleLimit <= 0 ||\n value.length < props.multipleLimit\n ) {\n value.push(option.value)\n }\n emit(UPDATE_MODEL_EVENT, value)\n emitChange(value)\n if (option.created) {\n handleQueryChange('')\n }\n if (props.filterable && !props.reserveKeyword) {\n states.inputValue = ''\n }\n } else {\n emit(UPDATE_MODEL_EVENT, option.value)\n emitChange(option.value)\n expanded.value = false\n }\n focus()\n if (expanded.value) return\n nextTick(() => {\n scrollToOption(option)\n })\n }\n\n const getValueIndex = (arr: any[] = [], option) => {\n if (isUndefined(option)) return -1\n if (!isObject(option.value)) return arr.indexOf(option.value)\n\n return arr.findIndex((item) => {\n return isEqual(get(item, props.valueKey), getValueKey(option))\n })\n }\n\n const scrollToOption = (option) => {\n const targetOption = isArray(option) ? option[0] : option\n let target = null\n\n if (targetOption?.value) {\n const options = optionsArray.value.filter(\n (item) => item.value === targetOption.value\n )\n if (options.length > 0) {\n target = options[0].$el\n }\n }\n\n if (tooltipRef.value && target) {\n const menu = tooltipRef.value?.popperRef?.contentRef?.querySelector?.(\n `.${nsSelect.be('dropdown', 'wrap')}`\n )\n if (menu) {\n scrollIntoView(menu as HTMLElement, target)\n }\n }\n scrollbarRef.value?.handleScroll()\n }\n\n const onOptionCreate = (vm: SelectOptionProxy) => {\n states.options.set(vm.value, vm)\n states.cachedOptions.set(vm.value, vm)\n }\n\n const onOptionDestroy = (key, vm: SelectOptionProxy) => {\n if (states.options.get(key) === vm) {\n states.options.delete(key)\n }\n }\n\n const popperRef = computed(() => {\n return tooltipRef.value?.popperRef?.contentRef\n })\n\n const handleMenuEnter = () => {\n states.isBeforeHide = false\n nextTick(() => scrollToOption(states.selected))\n }\n\n const focus = () => {\n inputRef.value?.focus()\n }\n\n const blur = () => {\n if (expanded.value) {\n expanded.value = false\n nextTick(() => inputRef.value?.blur())\n return\n }\n inputRef.value?.blur()\n }\n\n const handleClearClick = (event: Event) => {\n deleteSelected(event)\n }\n\n const handleClickOutside = (event: Event) => {\n expanded.value = false\n\n if (isFocused.value) {\n const _event = new FocusEvent('focus', event)\n nextTick(() => handleBlur(_event))\n }\n }\n\n const handleEsc = () => {\n if (states.inputValue.length > 0) {\n states.inputValue = ''\n } else {\n expanded.value = false\n }\n }\n\n const toggleMenu = () => {\n if (selectDisabled.value) return\n\n // We only set the inputHovering state to true on mouseenter event on iOS devices\n // To keep the state updated we set it here to true\n if (isIOS) states.inputHovering = true\n\n if (states.menuVisibleOnFocus) {\n // controlled by automaticDropdown\n states.menuVisibleOnFocus = false\n } else {\n expanded.value = !expanded.value\n }\n }\n\n const selectOption = () => {\n if (!expanded.value) {\n toggleMenu()\n } else {\n const option = optionsArray.value[states.hoveringIndex]\n if (option && !option.isDisabled) {\n handleOptionSelect(option)\n }\n }\n }\n\n const getValueKey = (item) => {\n return isObject(item.value) ? get(item.value, props.valueKey) : item.value\n }\n\n const optionsAllDisabled = computed(() =>\n optionsArray.value\n .filter((option) => option.visible)\n .every((option) => option.isDisabled)\n )\n\n const showTagList = computed(() => {\n if (!props.multiple) {\n return []\n }\n return props.collapseTags\n ? states.selected.slice(0, props.maxCollapseTags)\n : states.selected\n })\n\n const collapseTagList = computed(() => {\n if (!props.multiple) {\n return []\n }\n return props.collapseTags\n ? states.selected.slice(props.maxCollapseTags)\n : []\n })\n\n const navigateOptions = (direction) => {\n if (!expanded.value) {\n expanded.value = true\n return\n }\n if (\n states.options.size === 0 ||\n filteredOptionsCount.value === 0 ||\n isComposing.value\n )\n return\n\n if (!optionsAllDisabled.value) {\n if (direction === 'next') {\n states.hoveringIndex++\n if (states.hoveringIndex === states.options.size) {\n states.hoveringIndex = 0\n }\n } else if (direction === 'prev') {\n states.hoveringIndex--\n if (states.hoveringIndex < 0) {\n states.hoveringIndex = states.options.size - 1\n }\n }\n const option = optionsArray.value[states.hoveringIndex]\n if (option.isDisabled || !option.visible) {\n navigateOptions(direction)\n }\n nextTick(() => scrollToOption(hoverOption.value))\n }\n }\n\n const getGapWidth = () => {\n if (!selectionRef.value) return 0\n const style = window.getComputedStyle(selectionRef.value)\n return Number.parseFloat(style.gap || '6px')\n }\n\n // computed style\n const tagStyle = computed(() => {\n const gapWidth = getGapWidth()\n const maxWidth =\n collapseItemRef.value && props.maxCollapseTags === 1\n ? states.selectionWidth - states.collapseItemWidth - gapWidth\n : states.selectionWidth\n return { maxWidth: `${maxWidth}px` }\n })\n\n const collapseTagStyle = computed(() => {\n return { maxWidth: `${states.selectionWidth}px` }\n })\n\n useResizeObserver(selectionRef, resetSelectionWidth)\n useResizeObserver(menuRef, updateTooltip)\n useResizeObserver(wrapperRef, updateTooltip)\n useResizeObserver(tagMenuRef, updateTagTooltip)\n useResizeObserver(collapseItemRef, resetCollapseItemWidth)\n\n onMounted(() => {\n setSelected()\n })\n\n return {\n inputId,\n contentId,\n nsSelect,\n nsInput,\n states,\n isFocused,\n expanded,\n optionsArray,\n hoverOption,\n selectSize,\n filteredOptionsCount,\n updateTooltip,\n updateTagTooltip,\n debouncedOnInputChange,\n onInput,\n deletePrevTag,\n deleteTag,\n deleteSelected,\n handleOptionSelect,\n scrollToOption,\n hasModelValue,\n shouldShowPlaceholder,\n currentPlaceholder,\n mouseEnterEventName,\n needStatusIcon,\n showClose,\n iconComponent,\n iconReverse,\n validateState,\n validateIcon,\n showNewOption,\n updateOptions,\n collapseTagSize,\n setSelected,\n selectDisabled,\n emptyText,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd,\n onOptionCreate,\n onOptionDestroy,\n handleMenuEnter,\n focus,\n blur,\n handleClearClick,\n handleClickOutside,\n handleEsc,\n toggleMenu,\n selectOption,\n getValueKey,\n navigateOptions,\n dropdownMenuVisible,\n showTagList,\n collapseTagList,\n\n // computed style\n tagStyle,\n collapseTagStyle,\n\n // DOM ref\n popperRef,\n inputRef,\n tooltipRef,\n tagTooltipRef,\n prefixRef,\n suffixRef,\n selectRef,\n wrapperRef,\n selectionRef,\n scrollbarRef,\n menuRef,\n tagMenuRef,\n collapseItemRef,\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|