{"version":3,"file":"useSelect.mjs","sources":["../../../../../../../packages/components/select/src/useSelect.ts"],"sourcesContent":["import {\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  getEventCode,\n  isArray,\n  isClient,\n  isFunction,\n  isIOS,\n  isNumber,\n  isObject,\n  isPlainObject,\n  isUndefined,\n  scrollIntoView,\n} from '@hd-front-end/utils'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  MINIMUM_INPUT_WIDTH,\n  UPDATE_MODEL_EVENT,\n} from '@hd-front-end/constants'\nimport {\n  useComposition,\n  useEmptyValues,\n  useFocusController,\n  useId,\n  useLocale,\n  useNamespace,\n} from '@hd-front-end/hooks'\nimport {\n  useFormItem,\n  useFormItemInputId,\n  useFormSize,\n} from '@hd-front-end/components/form'\n\nimport type { Component } from 'vue'\nimport type { TooltipInstance } from '@hd-front-end/components/tooltip'\nimport type { ScrollbarInstance } from '@hd-front-end/components/scrollbar'\nimport type { SelectEmits, SelectProps } from './select'\nimport type {\n  OptionBasic,\n  OptionPublicInstance,\n  OptionValue,\n  SelectStates,\n} from './type'\n\nexport const useSelect = (props: SelectProps, emit: SelectEmits) => {\n  const { t } = useLocale()\n  const contentId = useId()\n  const nsSelect = useNamespace('select')\n  const nsInput = useNamespace('input')\n\n  const states = reactive<SelectStates>({\n    inputValue: '',\n    options: new Map(),\n    cachedOptions: new Map(),\n    optionValues: [], // sorted value of options\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\n  // template refs\n  const selectRef = ref<HTMLElement>()\n  const selectionRef = ref<HTMLElement>()\n  const tooltipRef = ref<TooltipInstance>()\n  const tagTooltipRef = ref<TooltipInstance>()\n  const inputRef = ref<HTMLInputElement>()\n  const prefixRef = ref<HTMLElement>()\n  const suffixRef = ref<HTMLElement>()\n  const menuRef = ref<HTMLElement>()\n  const tagMenuRef = ref<HTMLElement>()\n  const collapseItemRef = ref<HTMLElement>()\n  const scrollbarRef = ref<ScrollbarInstance>()\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 {\n    isComposing,\n    handleCompositionStart,\n    handleCompositionUpdate,\n    handleCompositionEnd,\n  } = useComposition({\n    afterComposition: (e) => onInput(e),\n  })\n\n  const selectDisabled = computed(() => props.disabled || !!form?.disabled)\n\n  const { wrapperRef, isFocused, handleBlur } = useFocusController(inputRef, {\n    disabled: selectDisabled,\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      if (props.validateEvent) {\n        formItem?.validate?.('blur').catch((err) => debugWarn(err))\n      }\n    },\n  })\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 showClearBtn = computed(() => {\n    return (\n      props.clearable &&\n      !selectDisabled.value &&\n      hasModelValue.value &&\n      (isFocused.value || states.inputHovering)\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    () =>\n      validateState.value &&\n      (ValidateComponentsMap[validateState.value] as Component)\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: OptionPublicInstance[] = []\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([() => states.hoveringIndex, optionsArray], ([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  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: SelectStates['selected'] = []\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: OptionValue) => {\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          index: optionsArray.value\n            .filter((opt) => !opt.created)\n            .indexOf(cachedOption),\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      index: -1,\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 = Number.parseFloat(\n      window.getComputedStyle(selectionRef.value!).width\n    )\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: Event) => {\n    states.inputValue = (event.target as HTMLInputElement).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: OptionValue | OptionValue[]) => {\n    if (!isEqual(props.modelValue, val)) {\n      emit(CHANGE_EVENT, val)\n    }\n  }\n\n  const getLastNotDisabledIndex = (value: OptionValue[]) =>\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: KeyboardEvent) => {\n    const code = getEventCode(e)\n    if (!props.multiple) return\n    if (code === EVENT_CODE.delete) return\n    if ((e.target as HTMLInputElement).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: MouseEvent, tag: OptionBasic) => {\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: 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\n  const handleOptionSelect = (option: OptionPublicInstance) => {\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      !isEqual(props.modelValue, option.value) &&\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: OptionValue[], option: OptionPublicInstance) => {\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 = (\n    option:\n      | OptionPublicInstance\n      | OptionPublicInstance[]\n      | SelectStates['selected']\n  ) => {\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: OptionPublicInstance) => {\n    states.options.set(vm.value, vm)\n    states.cachedOptions.set(vm.value, vm)\n  }\n\n  const onOptionDestroy = (key: OptionValue, vm: OptionPublicInstance) => {\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(() => {\n      scrollbarRef.value?.update()\n      scrollToOption(states.selected)\n    })\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('blur', 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 = (\n    item: OptionPublicInstance | SelectStates['selected'][0]\n  ) => {\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: 'prev' | 'next') => {\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 inputSlotWidth = props.filterable ? gapWidth + MINIMUM_INPUT_WIDTH : 0\n    const maxWidth =\n      collapseItemRef.value && props.maxCollapseTags === 1\n        ? states.selectionWidth -\n          states.collapseItemWidth -\n          gapWidth -\n          inputSlotWidth\n        : states.selectionWidth - inputSlotWidth\n    return { maxWidth: `${maxWidth}px` }\n  })\n\n  const collapseTagStyle = computed(() => {\n    return { maxWidth: `${states.selectionWidth}px` }\n  })\n\n  const popupScroll = (data: { scrollTop: number; scrollLeft: number }) => {\n    emit('popup-scroll', data)\n  }\n\n  useResizeObserver(selectionRef, resetSelectionWidth)\n  useResizeObserver(wrapperRef, updateTooltip)\n  useResizeObserver(tagMenuRef, updateTagTooltip)\n  useResizeObserver(collapseItemRef, resetCollapseItemWidth)\n\n  // #21498\n  let stop: (() => void) | undefined\n  watch(\n    () => dropdownMenuVisible.value,\n    (newVal) => {\n      if (newVal) {\n        stop = useResizeObserver(menuRef, updateTooltip).stop\n      } else {\n        stop?.()\n        stop = undefined\n      }\n    }\n  )\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    showClearBtn,\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    popupScroll,\n    getOption,\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"],"names":["debounce","ensureArray","lodashDebounce","_a"],"mappings":"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"}