{"version":3,"file":"useSelect.mjs","sources":["../../../../../../packages/components/select/src/useSelect.ts"],"sourcesContent":["import {\n  computed,\n  nextTick,\n  reactive,\n  ref,\n  shallowRef,\n  triggerRef,\n  watch,\n} from 'vue'\nimport {\n  findLastIndex,\n  isArray,\n  isEqual,\n  isNil,\n  debounce as lodashDebounce,\n} from 'lodash-unified'\nimport { EVENT_CODE, UPDATE_MODEL_EVENT } from '@vuesax-alpha/constants'\nimport {\n  isBoolean,\n  isClient,\n  isFunction,\n  isKorean,\n  isObject,\n  removeStyle,\n  scrollIntoView,\n  setStyle,\n} from '@vuesax-alpha/utils'\nimport { useId, useLocale, useNamespace } from '@vuesax-alpha/hooks'\nimport type { PopperExpose } from '@vuesax-alpha/components/popper'\nimport type { SelectEmitsFn, SelectProps } from './select'\n\nimport type {\n  SelectOptionContext,\n  SelectOptionValue,\n  SelectStates,\n  SelectTargetElement,\n  SelectValue,\n} from './tokens'\n\nexport function useSelectStates(props: SelectProps): SelectStates {\n  return reactive({\n    options: new Map(),\n    cachedOptions: new Map(),\n    selected: new Map(),\n    disabledOptions: new Map(),\n    createdLabel: null,\n    targetOnElement: null,\n    createdSelected: false,\n    optionsCount: 0,\n    filteredOptionsCount: 0,\n    visible: false,\n    softFocus: false,\n    selectedLabel: '',\n    hoverIndex: -1,\n    query: '',\n    previousQuery: null,\n    cachedPlaceHolder: '',\n    currentPlaceholder: props.placeholder,\n    menuVisibleOnFocus: false,\n    isOnComposition: false,\n    isSilentBlur: false,\n    mouseEnter: false,\n  })\n}\n\nexport const useSelect = (\n  props: SelectProps,\n  states: SelectStates,\n  emit: SelectEmitsFn\n) => {\n  const ns = useNamespace('select')\n  const { t } = useLocale()\n\n  // template refs\n  const reference = ref<HTMLInputElement>()\n  const input = ref<HTMLInputElement>()\n  const popperRef = ref<PopperExpose>()\n  const chips = ref<HTMLElement>()\n  const selectWrapper = ref<HTMLElement>()\n  const scrollbar = ref<{\n    handleScroll: () => void\n  }>()\n  const hoverOption = ref<SelectOptionContext>()\n  const inputId = useId(props.id)\n  const queryChange = shallowRef<string>('')\n  const debounce = ref(0)\n  const readonly = computed(\n    () => !props.filter || props.multiple || !states.visible\n  )\n\n  const selectDisabled = computed(() => props.disabled)\n\n  const showClose = computed(() => {\n    const hasValue = props.multiple\n      ? Array.isArray(props.modelValue) && props.modelValue.length > 0\n      : props.modelValue !== undefined &&\n        props.modelValue !== null &&\n        props.modelValue !== ''\n\n    const criteria =\n      props.clearable && !selectDisabled.value && states.mouseEnter && hasValue\n    return criteria\n  })\n\n  const optionsArray = computed(() => Array.from(states.options.values()))\n\n  const cachedOptionsArray = computed(() =>\n    Array.from(states.cachedOptions.values())\n  )\n\n  const selectedArray = computed(() => Array.from(states.selected.values()))\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.query\n      })\n    return (\n      props.filter &&\n      props.allowCreate &&\n      states.query !== '' &&\n      !hasExistingOption\n    )\n  })\n\n  const dropMenuVisible = computed({\n    get() {\n      return states.visible\n    },\n    set(val: boolean) {\n      states.visible = val\n    },\n  })\n\n  const emptyText = computed(() => {\n    if (props.loading) {\n      return props.loadingText || t('vs.select.loading')\n    }\n\n    if (\n      props.filter &&\n      states.query &&\n      states.options.size > 0 &&\n      states.filteredOptionsCount === 0\n    ) {\n      return props.noMatchText || t('vs.select.noMatch')\n    }\n    if (states.options.size === 0) {\n      return props.noDataText || t('vs.select.noData')\n    }\n    return null\n  })\n\n  watch(\n    () => props.placeholder,\n    (val) => {\n      states.cachedPlaceHolder = states.currentPlaceholder = val\n\n      const hasValue =\n        props.multiple &&\n        Array.isArray(props.modelValue) &&\n        props.modelValue.length > 0\n\n      if (hasValue) {\n        states.currentPlaceholder = ''\n      }\n    }\n  )\n\n  watch(\n    () => props.modelValue,\n    (val) => {\n      if (props.multiple) {\n        if (\n          // @ts-ignore\n          (val && val.length > 0) ||\n          (input.value && states.query !== '')\n        ) {\n          states.currentPlaceholder = ''\n        } else {\n          states.currentPlaceholder = states.cachedPlaceHolder\n        }\n        if (props.filter) {\n          states.query = ''\n          handleQueryChange(states.query)\n        }\n\n        nextTick(() => {\n          if (reference.value && chips.value) {\n            reference.value.style.height = `${chips.value.scrollHeight - 1}px`\n          }\n        })\n      }\n      setSelected()\n      nextTick(() => {\n        popperRef.value?.updatePopper()\n      })\n    },\n    {\n      flush: 'post',\n      deep: true,\n    }\n  )\n\n  watch(\n    () => states.visible,\n    (val) => {\n      if (!val) {\n        input.value && input.value.blur()\n        handleQueryChange('')\n        states.query = ''\n        states.previousQuery = null\n        states.selectedLabel = ''\n        states.menuVisibleOnFocus = false\n        resetHoverIndex()\n\n        nextTick(() => {\n          if (\n            input.value &&\n            input.value.value === '' &&\n            selectedArray.value.length === 0\n          ) {\n            states.currentPlaceholder = states.cachedPlaceHolder\n          }\n        })\n\n        if (!props.multiple) {\n          if (selectedArray.value.length) {\n            if (\n              props.filter &&\n              props.allowCreate &&\n              states.createdSelected &&\n              states.createdLabel\n            ) {\n              states.selectedLabel = states.createdLabel\n            } else {\n              states.selectedLabel = selectedArray.value[0].currentLabel\n            }\n            if (props.filter) states.query = states.selectedLabel\n          }\n\n          if (props.filter) {\n            states.currentPlaceholder = states.cachedPlaceHolder\n          }\n        }\n      } else {\n        popperRef.value?.updatePopper()\n\n        if (props.filter) {\n          states.filteredOptionsCount = states.optionsCount\n          states.query = states.selectedLabel\n          if (props.multiple) {\n            input.value?.focus()\n          } else {\n            if (states.selectedLabel) {\n              states.currentPlaceholder = `${states.selectedLabel}`\n              states.selectedLabel = ''\n            }\n          }\n\n          states.query && handleQueryChange(states.query)\n          if (!props.multiple) {\n            queryChange.value = ''\n\n            triggerRef(queryChange)\n          }\n        }\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      popperRef.value?.updatePopper()\n\n      const inputs = selectWrapper.value?.querySelectorAll('input') || []\n      if (\n        !Array.from(inputs).includes(document.activeElement as HTMLInputElement)\n      ) {\n        setSelected()\n      }\n      if (\n        props.defaultFirstOption &&\n        props.filter &&\n        states.filteredOptionsCount\n      ) {\n        checkDefaultFirstOption()\n      }\n    },\n    {\n      flush: 'post',\n    }\n  )\n\n  watch(\n    () => states.hoverIndex,\n    (val) => {\n      if (val > -1) {\n        hoverOption.value = optionsArray.value[val]\n      } else {\n        hoverOption.value = undefined\n      }\n      optionsArray.value.forEach((option) => {\n        option.hover = isEqual(hoverOption.value, option)\n      })\n    }\n  )\n\n  const showTagList = computed(() => {\n    if (!props.multiple) {\n      return []\n    }\n    return props.collapseChips\n      ? selectedArray.value.slice(0, props.maxCollapseChips)\n      : selectedArray.value\n  })\n\n  const collapseTagList = computed(() => {\n    if (!props.multiple) {\n      return []\n    }\n    return props.collapseChips\n      ? selectedArray.value.slice(props.maxCollapseChips)\n      : []\n  })\n\n  const handleQueryChange = (val: string) => {\n    if (states.previousQuery === val || states.isOnComposition) return\n    if (states.previousQuery === null && isFunction(props.filterMethod)) {\n      states.previousQuery = val\n      return\n    }\n    states.previousQuery = val\n    nextTick(() => {\n      if (states.visible) popperRef.value?.updatePopper()\n    })\n    states.hoverIndex = -1\n    if (props.multiple && props.filter) {\n      nextTick(() => {\n        managePlaceholder()\n      })\n    }\n    if (isFunction(props.filterMethod)) {\n      props.filterMethod(val)\n    } else {\n      states.filteredOptionsCount = states.optionsCount\n      queryChange.value = val\n\n      triggerRef(queryChange)\n    }\n    if (\n      props.defaultFirstOption &&\n      props.filter &&\n      states.filteredOptionsCount\n    ) {\n      nextTick(() => {\n        checkDefaultFirstOption()\n      })\n    }\n  }\n\n  const managePlaceholder = () => {\n    if (states.currentPlaceholder !== '') {\n      states.currentPlaceholder = input.value?.value\n        ? ''\n        : states.cachedPlaceHolder\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 queryChange)\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.isDisabled && !n.groupDisabled\n    )\n    const userCreatedOption = optionsInDropdown.find((n) => n.created)\n    const firstOriginOption = optionsInDropdown[0]\n    states.hoverIndex = getValueIndex(\n      optionsArray.value,\n      firstOriginOption || userCreatedOption\n    )\n  }\n\n  const setSelected = () => {\n    states.selected.clear()\n\n    if (!props.multiple) {\n      const option = getOption(props.modelValue as SelectOptionValue)\n      if (option.created) {\n        states.createdLabel = `${option.value}`\n        states.createdSelected = true\n      } else {\n        states.createdSelected = false\n      }\n      states.selectedLabel = option.currentLabel\n      states.selected.set(option.value, option)\n      if (props.filter) states.query = states.selectedLabel\n      return\n    }\n\n    states.selectedLabel = ''\n\n    if (Array.isArray(props.modelValue)) {\n      props.modelValue.forEach((value) => {\n        const option = getOption(value)\n        states.selected.set(option.value, option)\n      })\n    }\n  }\n\n  const getOption = (value: SelectOptionValue): SelectOptionContext => {\n    let option: SelectOptionContext | null = null\n\n    for (let i = states.cachedOptions.size - 1; i >= 0; i--) {\n      const cachedOption = cachedOptionsArray.value[i]\n\n      const isEqualValue = isObject(value)\n        ? isEqual(cachedOption.value, value)\n        : cachedOption.value === value\n      if (isEqualValue) {\n        option = cachedOption\n        break\n      }\n    }\n\n    if (option) return option\n\n    const label: string | any[] = isObject(value)\n      ? ''\n      : !isNil(value)\n      ? String(value)\n      : ''\n\n    const newOption = {\n      value,\n      currentLabel: label,\n      label,\n      hit: true,\n    } as SelectOptionContext\n\n    if (props.multiple) {\n      newOption.hit = false\n    }\n\n    return newOption\n  }\n\n  const resetHoverIndex = () => {\n    setTimeout(() => {\n      if (!props.multiple) {\n        states.hoverIndex = optionsArray.value.findIndex((item) => {\n          return isEqual(item, selectedArray.value[0])\n        })\n        return\n      }\n\n      if (selectedArray.value.length > 0) {\n        states.hoverIndex = Math.min.apply(\n          null,\n          selectedArray.value.map((selected) => {\n            return optionsArray.value.findIndex((item) => {\n              return isEqual(item.value, selected.value)\n            })\n          })\n        )\n        return\n      }\n\n      states.hoverIndex = -1\n    }, 300)\n  }\n\n  const handleResize = () => {\n    if (reference.value && chips.value) {\n      reference.value.style.height = `${chips.value.scrollHeight}px`\n    }\n    popperRef.value?.updatePopper()\n  }\n\n  const onInputChange = () => {\n    if (props.filter && states.query !== states.selectedLabel) {\n      states.query = states.selectedLabel\n      handleQueryChange(states.selectedLabel || '')\n    }\n  }\n\n  const debouncedOnInputChange = lodashDebounce(() => {\n    onInputChange()\n  }, debounce.value)\n\n  const debouncedQueryChange = lodashDebounce((e) => {\n    handleQueryChange(e.target.value)\n  }, debounce.value)\n\n  const emitChange = (val: SelectValue) => {\n    if (!isEqual(props.modelValue, val)) {\n      emit('change', val)\n    }\n  }\n\n  const getLastNotDisabledIndex = (value: SelectOptionValue[]) =>\n    findLastIndex(\n      value,\n      (it: SelectOptionValue) => !states.disabledOptions.has(it)\n    )\n\n  const deletePrevTag = (e: KeyboardEvent) => {\n    if (!props.multiple) return\n    if (e.code === EVENT_CODE.delete) return\n\n    const value = (e.target as HTMLInputElement).value\n\n    if (value.length <= 0 && !toggleLastOptionHitState()) {\n      // @ts-ignore\n      const value = props.modelValue.slice()\n      const lastNotDisabledIndex = getLastNotDisabledIndex(value)\n      if (lastNotDisabledIndex < 0) return\n      value.splice(lastNotDisabledIndex, 1)\n      emit(UPDATE_MODEL_EVENT, value)\n      emitChange(value)\n    }\n\n    // @ts-ignore\n    if (value.length === 1 && props.modelValue.length === 0) {\n      states.currentPlaceholder = states.cachedPlaceHolder\n    }\n  }\n\n  const deleteTag = (tag: SelectOptionValue) => {\n    const hasTag = states.cachedOptions.get(tag)\n    if (!hasTag) return\n    const index = getValueIndex(selectedArray.value, hasTag)\n    if (index > -1 && !selectDisabled.value) {\n      // @ts-ignore\n      const value = props.modelValue.slice()\n      value.splice(index, 1)\n      emit(UPDATE_MODEL_EVENT, value)\n      emitChange(value)\n      emit('remove-tag', tag)\n    }\n    focus()\n  }\n\n  const deleteSelected = () => {\n    const value: SelectOptionValue | any[] = props.multiple\n      ? []\n      : props.notValue\n    if (isArray(value)) {\n      for (const item of selectedArray.value) {\n        if (item.isDisabled) value.push(item.value)\n      }\n    }\n    emit(UPDATE_MODEL_EVENT, value)\n    emitChange(value)\n    states.hoverIndex = -1\n    states.visible = false\n    emit('clear')\n    focus()\n  }\n\n  const handleOptionSelect = (\n    option: SelectOptionContext,\n    byClick: boolean\n  ) => {\n    if (props.multiple) {\n      let modelValue: SelectOptionValue[] = props.modelValue as any\n      if (!isArray(props.modelValue)) {\n        if (states.options.has(modelValue)) {\n          modelValue = [modelValue]\n        } else {\n          modelValue = []\n        }\n      }\n\n      const value = modelValue.slice()\n      const optionIndex = getValueIndex(selectedArray.value, option)\n\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        states.query = ''\n        handleQueryChange('')\n      }\n      if (props.filter) input.value?.focus()\n    } else {\n      emit(UPDATE_MODEL_EVENT, option.value)\n      emitChange(option.value)\n      states.visible = false\n    }\n    states.isSilentBlur = byClick\n    setSoftFocus()\n    if (states.visible) return\n    nextTick(() => {\n      scrollToOption(option)\n    })\n  }\n\n  const getValueIndex = (\n    arr: SelectOptionContext[],\n    option: SelectOptionContext\n  ) => {\n    let index = -1\n    arr.some((item, i) => {\n      if (isEqual(item.value, option.value)) {\n        index = i\n        return true\n      }\n      return false\n    })\n    return index\n  }\n\n  const setSoftFocus = () => {\n    states.softFocus = true\n    const _input = input.value || reference.value\n    if (_input) {\n      _input?.focus()\n    }\n  }\n\n  const scrollToOption = (option: SelectOptionContext) => {\n    let target\n\n    if (option?.value) {\n      const options = optionsArray.value.filter(\n        (item) => item.value === option.value\n      )\n      if (options.length > 0) {\n        target = options[0].el\n      }\n    }\n\n    if (popperRef.value && target) {\n      const menu: HTMLElement | null | undefined =\n        popperRef.value?.contentRef?.querySelector?.(`.${ns.e('options')}`)\n      if (menu) {\n        setStyle(menu, 'scroll-behavior', 'smooth')\n        scrollIntoView(menu as HTMLElement, target)\n        removeStyle(menu, 'scroll-behavior')\n      }\n    }\n    scrollbar.value?.handleScroll()\n  }\n\n  const onOptionCreate = (\n    value: SelectOptionValue,\n    option: SelectOptionContext\n  ) => {\n    states.optionsCount++\n    states.filteredOptionsCount++\n    states.options.set(value, option)\n    states.cachedOptions.set(value, option)\n    option.isDisabled && states.disabledOptions.set(value, option)\n  }\n\n  const onOptionDestroy = (\n    value: SelectOptionValue,\n    option: SelectOptionContext\n  ) => {\n    if (states.options.get(value) === option) {\n      states.optionsCount--\n      states.filteredOptionsCount--\n      states.options.delete(value)\n    }\n  }\n\n  const resetInputState = (e: KeyboardEvent) => {\n    if (e.code !== EVENT_CODE.backspace) toggleLastOptionHitState(false)\n  }\n\n  const toggleLastOptionHitState = (hit?: boolean) => {\n    if (!selectedArray.value.length) return\n\n    const lastNotDisabledIndex = getLastNotDisabledIndex(\n      selectedArray.value.map((it) => it.value)\n    )\n    const option = selectedArray.value[lastNotDisabledIndex]\n    if (!option) return\n\n    if (isBoolean(hit)) {\n      option.hit = hit\n      return hit\n    }\n\n    option.hit = !option.hit\n    return option.hit\n  }\n\n  const handleComposition = (event: Event) => {\n    const text = (event.target as HTMLInputElement)?.value\n    if (event.type === 'compositionend') {\n      states.isOnComposition = false\n      nextTick(() => handleQueryChange(text))\n    } else {\n      const lastCharacter = text[text.length - 1] || ''\n      states.isOnComposition = !isKorean(lastCharacter)\n    }\n  }\n\n  const handleTarget = (\n    target: SelectTargetElement | null,\n    condition = true\n  ) => {\n    if (condition) states.targetOnElement = target\n  }\n\n  const handleMenuEnter = () => {\n    nextTick(() => scrollToOption(selectedArray.value[0]))\n  }\n\n  const focus = () => {\n    states.visible = true\n    reference.value?.focus()\n  }\n\n  const handleFocus = (event: FocusEvent) => {\n    if (!states.softFocus) {\n      if (props.filter) {\n        if (!states.visible) {\n          states.menuVisibleOnFocus = true\n        }\n        // states.visible = true\n      }\n      emit('focus', event)\n    } else {\n      states.softFocus = false\n    }\n  }\n\n  const blur = () => {\n    states.visible = false\n    reference.value?.blur()\n  }\n\n  const handleBlur = (event: FocusEvent) => {\n    // https://github.com/ElemeFE/element/pull/10822\n    nextTick(() => {\n      if (states.isSilentBlur) {\n        states.isSilentBlur = false\n      } else {\n        emit('blur', event)\n      }\n    })\n    states.softFocus = false\n  }\n\n  const handleClearClick = () => {\n    deleteSelected()\n  }\n\n  const showClearable = computed(() => {\n    if (!props.clearable || props.disabled || props.loading) return false\n    if (optionsArray.value.length === 0) return false\n\n    const ignoreDisabledOptions = optionsArray.value.filter(\n      (e) => e.isDisabled === false\n    )\n    if (ignoreDisabledOptions.length === 0) return false\n\n    return states.mouseEnter\n  })\n\n  const handleClose = () => {\n    states.visible = false\n  }\n\n  const handleKeydownEscape = (event: Event | KeyboardEvent) => {\n    if (states.visible) {\n      event.preventDefault()\n      event.stopPropagation()\n      states.visible = false\n    }\n  }\n\n  const toggleMenu = (e?: MouseEvent) => {\n    if (e && !states.mouseEnter) return\n\n    if (!selectDisabled.value) {\n      if (states.menuVisibleOnFocus) {\n        states.menuVisibleOnFocus = false\n      } else {\n        if (!popperRef.value || !popperRef.value.isFocusInsideContent) {\n          states.visible = !states.visible\n        }\n      }\n      if (states.visible) {\n        ;(input.value || reference.value)?.focus()\n      }\n    }\n  }\n\n  const selectOption = () => {\n    if (!states.visible) {\n      toggleMenu()\n    } else {\n      if (optionsArray.value[states.hoverIndex]) {\n        handleOptionSelect(optionsArray.value[states.hoverIndex], false)\n      }\n    }\n  }\n\n  const optionsAllDisabled = computed(() =>\n    optionsArray.value\n      .filter((option) => option.visible)\n      .every((option) => option.isDisabled)\n  )\n\n  const navigateOptions = (direction: string = 'next' || 'prev') => {\n    if (!states.visible) {\n      states.visible = true\n      return\n    }\n    if (states.options.size === 0 || states.filteredOptionsCount === 0) return\n    if (states.isOnComposition) return\n\n    if (!optionsAllDisabled.value) {\n      if (direction === 'next') {\n        states.hoverIndex++\n        if (states.hoverIndex === states.options.size) {\n          states.hoverIndex = 0\n        }\n      } else if (direction === 'prev') {\n        states.hoverIndex--\n        if (states.hoverIndex < 0) {\n          states.hoverIndex = states.options.size - 1\n        }\n      }\n      const option = optionsArray.value[states.hoverIndex]\n      if (\n        option.isDisabled === true ||\n        option.groupDisabled === true ||\n        !option.visible\n      ) {\n        navigateOptions(direction)\n      }\n\n      nextTick(\n        () => !isNil(hoverOption.value) && scrollToOption(hoverOption.value)\n      )\n    }\n  }\n\n  const handleMouseEnter = () => {\n    states.mouseEnter = true\n  }\n\n  const handleMouseLeave = () => {\n    states.mouseEnter = false\n  }\n\n  const processBeforeOpen = () => true\n\n  const processBeforeClose = () => {\n    if (states.targetOnElement == null) return true\n    return !['chip-close', 'input-filter'].includes(states.targetOnElement)\n  }\n\n  return {\n    showNewOption,\n    inputId,\n    optionsArray,\n    cachedOptionsArray,\n    selectedArray,\n    handleResize,\n    debouncedOnInputChange,\n    debouncedQueryChange,\n    deletePrevTag,\n    deleteTag,\n    deleteSelected,\n    handleOptionSelect,\n    scrollToOption,\n    readonly,\n    showClose,\n    handleTarget,\n    setSelected,\n    managePlaceholder,\n    selectDisabled,\n    toggleLastOptionHitState,\n    resetInputState,\n    handleComposition,\n    onOptionCreate,\n    onOptionDestroy,\n    handleMenuEnter,\n    focus,\n    handleFocus,\n    blur,\n    handleBlur,\n    handleClearClick,\n    showClearable,\n    handleClose,\n    handleKeydownEscape,\n    toggleMenu,\n    selectOption,\n    navigateOptions,\n    dropMenuVisible,\n    queryChange,\n    showTagList,\n    collapseTagList,\n\n    // DOM ref\n    reference,\n    input,\n    popperRef,\n    chips,\n    selectWrapper,\n    scrollbar,\n\n    // Mouser Event\n    handleMouseEnter,\n    handleMouseLeave,\n\n    processBeforeOpen,\n    processBeforeClose,\n\n    emptyText,\n\n    resetHoverIndex,\n  }\n}\n"],"names":["debounce","lodashDebounce","value"],"mappings":"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"}