{"version":3,"file":"useSelect.mjs","sources":["../../../../../../packages/components/select/src/useSelect.ts"],"sourcesContent":["// @ts-nocheck\n\nimport {\n  computed,\n  inject,\n  nextTick,\n  reactive,\n  ref,\n  shallowRef,\n  triggerRef,\n  watch,\n} from 'vue'\nimport { isObject, toRawType } from '@vue/shared'\nimport { get, isEqual, debounce as lodashDebounce } from 'lodash-unified'\nimport { isClient } from '@vueuse/core'\nimport { CHANGE_EVENT, EVENT_CODE, UPDATE_MODEL_EVENT } from '@bigin/constants'\nimport {\n  debugWarn,\n  getComponentSize,\n  isKorean,\n  scrollIntoView,\n} from '@bigin/utils'\nimport { useLocale, useNamespace, useSize } from '@bigin/hooks'\nimport { formContextKey, formItemContextKey } from '@bigin/tokens'\n\nimport type { ComponentPublicInstance } from 'vue'\nimport type BTooltip from '@bigin/components/tooltip'\nimport type { FormContext, FormItemContext } from '@bigin/tokens'\nimport type { QueryChangeCtx, SelectOptionProxy } from './token'\n\nexport function useSelectStates(props) {\n  const { t } = useLocale()\n  return reactive({\n    options: new Map(),\n    cachedOptions: new Map(),\n    createdLabel: null,\n    createdSelected: false,\n    selected: props.multiple ? [] : ({} as any),\n    inputLength: 20,\n    inputWidth: 0,\n    optionsCount: 0,\n    filteredOptionsCount: 0,\n    visible: false,\n    softFocus: false,\n    selectedLabel: '',\n    hoverIndex: -1,\n    query: '',\n    previousQuery: null,\n    inputHovering: false,\n    cachedPlaceHolder: '',\n    currentPlaceholder: t('b.select.placeholder'),\n    menuVisibleOnFocus: false,\n    isOnComposition: false,\n    isSilentBlur: false,\n    prefixWidth: 11,\n    tagInMultiLine: false,\n  })\n}\n\ntype States = ReturnType<typeof useSelectStates>\n\nexport const useSelect = (props, states: States, ctx) => {\n  const { t } = useLocale()\n  const ns = useNamespace('select')\n\n  // template refs\n  const reference = ref<ComponentPublicInstance<{\n    focus: () => void\n    blur: () => void\n    input: HTMLInputElement\n  }> | null>(null)\n  const input = ref<HTMLInputElement | null>(null)\n  const tooltipRef = ref<InstanceType<typeof BTooltip> | null>(null)\n  const tags = ref<HTMLElement | null>(null)\n  const selectWrapper = ref<HTMLElement | null>(null)\n  const scrollbar = ref<{\n    handleScroll: () => void\n  } | null>(null)\n  const hoverOption = ref(-1)\n  const queryChange = shallowRef<QueryChangeCtx>({ query: '' })\n  const groupQueryChange = shallowRef('')\n\n  // inject\n  const elForm = inject(formContextKey, {} as FormContext)\n  const elFormItem = inject(formItemContextKey, {} as FormItemContext)\n\n  const readonly = computed(\n    () => !props.filterable || props.multiple || !states.visible\n  )\n\n  const selectDisabled = computed(() => props.disabled || elForm.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 &&\n      !selectDisabled.value &&\n      states.inputHovering &&\n      hasValue\n    return criteria\n  })\n  const iconComponent = computed(() => props.suffixIcon)\n  const iconReverse = computed(() =>\n    ns.is('reverse', iconComponent.value && states.visible)\n  )\n\n  const debounce = computed(() => (props.remote ? 300 : 0))\n\n  const emptyText = computed(() => {\n    if (props.loading) {\n      return props.loadingText || t('b.select.loading')\n    } else {\n      if (props.remote && states.query === '' && states.options.size === 0)\n        return false\n      if (\n        props.filterable &&\n        states.query &&\n        states.options.size > 0 &&\n        states.filteredOptionsCount === 0\n      ) {\n        return props.noMatchText || t('b.select.noMatch')\n      }\n      if (states.options.size === 0) {\n        return props.noDataText || t('b.select.noData')\n      }\n    }\n    return null\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 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.filterable &&\n      props.allowCreate &&\n      states.query !== '' &&\n      !hasExistingOption\n    )\n  })\n\n  const selectSize = useSize()\n\n  const collapseTagSize = computed(() =>\n    ['small'].includes(selectSize.value) ? 'small' : 'default'\n  )\n\n  const dropMenuVisible = computed({\n    get() {\n      return states.visible && emptyText.value !== false\n    },\n    set(val: boolean) {\n      states.visible = val\n    },\n  })\n\n  // watch\n  watch(\n    [() => selectDisabled.value, () => selectSize.value, () => elForm.size],\n    () => {\n      nextTick(() => {\n        resetInputHeight()\n      })\n    }\n  )\n\n  watch(\n    () => props.placeholder,\n    (val) => {\n      states.cachedPlaceHolder = states.currentPlaceholder = val\n    }\n  )\n\n  watch(\n    () => props.modelValue,\n    (val, oldVal) => {\n      if (props.multiple) {\n        resetInputHeight()\n        if ((val && val.length > 0) || (input.value && states.query !== '')) {\n          states.currentPlaceholder = ''\n        } else {\n          states.currentPlaceholder = states.cachedPlaceHolder\n        }\n        if (props.filterable && !props.reserveKeyword) {\n          states.query = ''\n          handleQueryChange(states.query)\n        }\n      }\n      setSelected()\n      if (props.filterable && !props.multiple) {\n        states.inputLength = 20\n      }\n      if (!isEqual(val, oldVal)) {\n        elFormItem.validate?.('change').catch((err) => debugWarn(err))\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        states.query = ''\n        states.previousQuery = null\n        states.selectedLabel = ''\n        states.inputLength = 20\n        states.menuVisibleOnFocus = false\n        resetHoverIndex()\n        nextTick(() => {\n          if (\n            input.value &&\n            input.value.value === '' &&\n            states.selected.length === 0\n          ) {\n            states.currentPlaceholder = states.cachedPlaceHolder\n          }\n        })\n\n        if (!props.multiple) {\n          if (states.selected) {\n            if (\n              props.filterable &&\n              props.allowCreate &&\n              states.createdSelected &&\n              states.createdLabel\n            ) {\n              states.selectedLabel = states.createdLabel\n            } else {\n              states.selectedLabel = states.selected.currentLabel\n            }\n            if (props.filterable) states.query = states.selectedLabel\n          }\n\n          if (props.filterable) {\n            states.currentPlaceholder = states.cachedPlaceHolder\n          }\n        }\n      } else {\n        tooltipRef.value?.updatePopper?.()\n\n        if (props.filterable) {\n          states.filteredOptionsCount = states.optionsCount\n          states.query = props.remote ? '' : 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          handleQueryChange(states.query)\n          if (!props.multiple && !props.remote) {\n            queryChange.value.query = ''\n\n            triggerRef(queryChange)\n            triggerRef(groupQueryChange)\n          }\n        }\n      }\n      ctx.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      if (props.multiple) {\n        resetInputHeight()\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.filterable || props.remote) &&\n        states.filteredOptionsCount\n      ) {\n        checkDefaultFirstOption()\n      }\n    },\n    {\n      flush: 'post',\n    }\n  )\n\n  watch(\n    () => states.hoverIndex,\n    (val) => {\n      if (typeof val === 'number' && val > -1) {\n        hoverOption.value = optionsArray.value[val] || {}\n      }\n      optionsArray.value.forEach((option) => {\n        option.hover = hoverOption.value === option\n      })\n    }\n  )\n\n  // methods\n  const resetInputHeight = () => {\n    if (props.collapseTags && !props.filterable) return\n    nextTick(() => {\n      if (!reference.value) return\n      const input = reference.value.$el.querySelector(\n        'input'\n      ) as HTMLInputElement\n      const _tags = tags.value\n\n      const sizeInMap = getComponentSize(selectSize.value || elForm.size)\n      // it's an inner input so reduce it by 2px.\n      input.style.height = `${\n        states.selected.length === 0\n          ? sizeInMap\n          : Math.max(\n              _tags\n                ? _tags.clientHeight + (_tags.clientHeight > sizeInMap ? 6 : 0)\n                : 0,\n              sizeInMap\n            )\n      }px`\n\n      states.tagInMultiLine = Number.parseFloat(input.style.height) >= sizeInMap\n\n      if (states.visible && emptyText.value !== false) {\n        tooltipRef.value?.updatePopper?.()\n      }\n    })\n  }\n\n  const handleQueryChange = (val) => {\n    if (states.previousQuery === val || states.isOnComposition) return\n    if (\n      states.previousQuery === null &&\n      (typeof props.filterMethod === 'function' ||\n        typeof props.remoteMethod === 'function')\n    ) {\n      states.previousQuery = val\n      return\n    }\n    states.previousQuery = val\n    nextTick(() => {\n      if (states.visible) tooltipRef.value?.updatePopper?.()\n    })\n    states.hoverIndex = -1\n    if (props.multiple && props.filterable) {\n      nextTick(() => {\n        const length = input.value!.value.length * 15 + 20\n        states.inputLength = props.collapseTags ? Math.min(50, length) : length\n        managePlaceholder()\n        resetInputHeight()\n      })\n    }\n    if (props.remote && typeof props.remoteMethod === 'function') {\n      states.hoverIndex = -1\n      props.remoteMethod(val)\n    } else if (typeof props.filterMethod === 'function') {\n      props.filterMethod(val)\n      triggerRef(groupQueryChange)\n    } else {\n      states.filteredOptionsCount = states.optionsCount\n      queryChange.value.query = val\n\n      triggerRef(queryChange)\n      triggerRef(groupQueryChange)\n    }\n    if (\n      props.defaultFirstOption &&\n      (props.filterable || props.remote) &&\n      states.filteredOptionsCount\n    ) {\n      checkDefaultFirstOption()\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 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    states.hoverIndex = getValueIndex(\n      optionsArray.value,\n      userCreatedOption || firstOriginOption\n    )\n  }\n\n  const setSelected = () => {\n    if (!props.multiple) {\n      const option = getOption(props.modelValue)\n      if (option.props?.created) {\n        states.createdLabel = option.props.value\n        states.createdSelected = true\n      } else {\n        states.createdSelected = false\n      }\n      states.selectedLabel = option.currentLabel\n      states.selected = option\n      if (props.filterable) states.query = states.selectedLabel\n      return\n    } else {\n      states.selectedLabel = ''\n    }\n    const result: any[] = []\n    if (Array.isArray(props.modelValue)) {\n      props.modelValue.forEach((value) => {\n        result.push(getOption(value))\n      })\n    }\n    states.selected = result\n    nextTick(() => {\n      resetInputHeight()\n    })\n  }\n\n  const getOption = (value) => {\n    let option\n    const isObjectValue = toRawType(value).toLowerCase() === 'object'\n    const isNull = toRawType(value).toLowerCase() === 'null'\n    const isUndefined = toRawType(value).toLowerCase() === 'undefined'\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          isDisabled: cachedOption.isDisabled,\n        }\n        break\n      }\n    }\n    if (option) return option\n    const label = isObjectValue\n      ? value.label\n      : !isNull && !isUndefined\n      ? value\n      : ''\n    const newOption = {\n      value,\n      currentLabel: label,\n    }\n    if (props.multiple) {\n      ;(newOption as any).hitState = false\n    }\n    return newOption\n  }\n\n  const resetHoverIndex = () => {\n    setTimeout(() => {\n      const valueKey = props.valueKey\n      if (!props.multiple) {\n        states.hoverIndex = optionsArray.value.findIndex((item) => {\n          return getValueKey(item) === getValueKey(states.selected)\n        })\n      } else {\n        if (states.selected.length > 0) {\n          states.hoverIndex = Math.min.apply(\n            null,\n            states.selected.map((selected) => {\n              return optionsArray.value.findIndex((item) => {\n                return get(item, valueKey) === get(selected, valueKey)\n              })\n            })\n          )\n        } else {\n          states.hoverIndex = -1\n        }\n      }\n    }, 300)\n  }\n\n  const handleResize = () => {\n    resetInputWidth()\n    tooltipRef.value?.updatePopper?.()\n    if (props.multiple && !props.filterable) resetInputHeight()\n  }\n\n  const resetInputWidth = () => {\n    states.inputWidth = reference.value?.$el.getBoundingClientRect().width\n  }\n\n  const onInputChange = () => {\n    if (props.filterable && states.query !== states.selectedLabel) {\n      states.query = states.selectedLabel\n      handleQueryChange(states.query)\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) => {\n    if (!isEqual(props.modelValue, val)) {\n      ctx.emit(CHANGE_EVENT, val)\n    }\n  }\n\n  const deletePrevTag = (e) => {\n    if (e.target.value.length <= 0 && !toggleLastOptionHitState()) {\n      const value = props.modelValue.slice()\n      value.pop()\n      ctx.emit(UPDATE_MODEL_EVENT, value)\n      emitChange(value)\n    }\n\n    if (e.target.value.length === 1 && props.modelValue.length === 0) {\n      states.currentPlaceholder = states.cachedPlaceHolder\n    }\n  }\n\n  const deleteTag = (event, tag) => {\n    const index = states.selected.indexOf(tag)\n    if (index > -1 && !selectDisabled.value) {\n      const value = props.modelValue.slice()\n      value.splice(index, 1)\n      ctx.emit(UPDATE_MODEL_EVENT, value)\n      emitChange(value)\n      ctx.emit('remove-tag', tag.value)\n    }\n    event.stopPropagation()\n  }\n\n  const deleteSelected = (event) => {\n    event.stopPropagation()\n    const value: string | any[] = props.multiple ? [] : ''\n    if (typeof value !== 'string') {\n      for (const item of states.selected) {\n        if (item.isDisabled) value.push(item.value)\n      }\n    }\n    ctx.emit(UPDATE_MODEL_EVENT, value)\n    emitChange(value)\n    states.visible = false\n    ctx.emit('clear')\n  }\n\n  const handleOptionSelect = (option, byClick) => {\n    if (props.multiple) {\n      const value = (props.modelValue || []).slice()\n      const optionIndex = getValueIndex(value, option.value)\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      ctx.emit(UPDATE_MODEL_EVENT, value)\n      emitChange(value)\n      if (option.created) {\n        states.query = ''\n        handleQueryChange('')\n        states.inputLength = 20\n      }\n      if (props.filterable) input.value?.focus()\n    } else {\n      ctx.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 = (arr: any[] = [], value) => {\n    if (!isObject(value)) return arr.indexOf(value)\n\n    const valueKey = props.valueKey\n    let index = -1\n    arr.some((item, i) => {\n      if (get(item, valueKey) === get(value, valueKey)) {\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) => {\n    const targetOption = Array.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        `.${ns.be('dropdown', 'wrap')}`\n      )\n      if (menu) {\n        scrollIntoView(menu as HTMLElement, target)\n      }\n    }\n    scrollbar.value?.handleScroll()\n  }\n\n  const onOptionCreate = (vm: SelectOptionProxy) => {\n    states.optionsCount++\n    states.filteredOptionsCount++\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.optionsCount--\n      states.filteredOptionsCount--\n      states.options.delete(key)\n    }\n  }\n\n  const resetInputState = (e: KeyboardEvent) => {\n    if (e.code !== EVENT_CODE.backspace) toggleLastOptionHitState(false)\n    states.inputLength = input.value!.value.length * 15 + 20\n    resetInputHeight()\n  }\n\n  const toggleLastOptionHitState = (hit?: boolean) => {\n    if (!Array.isArray(states.selected)) return\n    const option = states.selected[states.selected.length - 1]\n    if (!option) return\n\n    if (hit === true || hit === false) {\n      option.hitState = hit\n      return hit\n    }\n\n    option.hitState = !option.hitState\n    return option.hitState\n  }\n\n  const handleComposition = (event) => {\n    const text = event.target.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 handleMenuEnter = () => {\n    nextTick(() => scrollToOption(states.selected))\n  }\n\n  const handleFocus = (event) => {\n    if (!states.softFocus) {\n      if (props.automaticDropdown || props.filterable) {\n        if (props.filterable && !states.visible) {\n          states.menuVisibleOnFocus = true\n        }\n        states.visible = true\n      }\n      ctx.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: Event) => {\n    // https://github.com/ElemeFE/element/pull/10822\n    nextTick(() => {\n      if (states.isSilentBlur) {\n        states.isSilentBlur = false\n      } else {\n        ctx.emit('blur', event)\n      }\n    })\n    states.softFocus = false\n  }\n\n  const handleClearClick = (event: Event) => {\n    deleteSelected(event)\n  }\n\n  const handleClose = () => {\n    states.visible = false\n  }\n\n  const handleKeydownEscape = (event: KeyboardEvent) => {\n    if (states.visible) {\n      event.preventDefault()\n      event.stopPropagation()\n      states.visible = false\n    }\n  }\n\n  const toggleMenu = () => {\n    if (props.automaticDropdown) return\n    if (!selectDisabled.value) {\n      if (states.menuVisibleOnFocus) {\n        states.menuVisibleOnFocus = false\n      } else {\n        states.visible = !states.visible\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], undefined)\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.disabled)\n  )\n\n  const navigateOptions = (direction) => {\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.disabled === true ||\n        option.states.groupDisabled === true ||\n        !option.visible\n      ) {\n        navigateOptions(direction)\n      }\n      nextTick(() => scrollToOption(hoverOption.value))\n    }\n  }\n\n  return {\n    optionsArray,\n    selectSize,\n    handleResize,\n    debouncedOnInputChange,\n    debouncedQueryChange,\n    deletePrevTag,\n    deleteTag,\n    deleteSelected,\n    handleOptionSelect,\n    scrollToOption,\n    readonly,\n    resetInputHeight,\n    showClose,\n    iconComponent,\n    iconReverse,\n    showNewOption,\n    collapseTagSize,\n    setSelected,\n    managePlaceholder,\n    selectDisabled,\n    emptyText,\n    toggleLastOptionHitState,\n    resetInputState,\n    handleComposition,\n    onOptionCreate,\n    onOptionDestroy,\n    handleMenuEnter,\n    handleFocus,\n    blur,\n    handleBlur,\n    handleClearClick,\n    handleClose,\n    handleKeydownEscape,\n    toggleMenu,\n    selectOption,\n    getValueKey,\n    navigateOptions,\n    dropMenuVisible,\n    queryChange,\n    groupQueryChange,\n\n    // DOM ref\n    reference,\n    input,\n    tooltipRef,\n    tags,\n    selectWrapper,\n    scrollbar,\n  }\n}\n"],"names":["debounce","input","lodashDebounce"],"mappings":"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"}