{"version":3,"file":"BaseSelect.cjs","sources":["../../../../../../packages/vue-components/vc-select/src/BaseSelect.tsx"],"sourcesContent":["import type { FocusEventHandler, Key, KeyboardEventHandler, MouseEventHandler, VueNode } from '@antdv/types';\nimport type { CSSProperties, ExtractPropTypes, PropType } from 'vue';\nimport type { AlignType } from '../../vc-trigger/src/interface';\nimport type { ScrollConfig, ScrollTo } from '../../vc-virtual-list/src/List';\nimport type { BaseSelectContextProps } from './hooks/useBaseProps';\nimport type { BaseOptionType } from './Select';\nimport type { RefSelectorProps } from './Selector';\nimport type { RefTriggerProps } from './SelectTrigger';\nimport {\n  classNames,\n  cloneElement,\n  createRef,\n  initDefaultProps,\n  isMobile,\n  isValidElement,\n  KeyCode,\n  PropTypes,\n  toReactive,\n} from '@antdv/utils';\nimport {\n  computed,\n  defineComponent,\n  onBeforeUnmount,\n  onMounted,\n  provide,\n  ref,\n  shallowRef,\n  toRefs,\n  watch,\n  watchEffect,\n} from 'vue';\nimport useInjectLegacySelectContext from '../../vc-tree-select/src/LegacyContext';\nimport { useProvideBaseSelectProps } from './hooks/useBaseProps';\nimport useDelayReset from './hooks/useDelayReset';\nimport useLock from './hooks/useLock';\nimport useSelectTriggerControl from './hooks/useSelectTriggerControl';\nimport Selector from './Selector';\nimport SelectTrigger from './SelectTrigger';\nimport TransBtn from './TransBtn';\nimport { getSeparatedContent } from './utils/valueUtil';\n\nconst DEFAULT_OMIT_PROPS = [\n  'value',\n  'onChange',\n  'removeIcon',\n  'placeholder',\n  'autofocus',\n  'maxTagCount',\n  'maxTagTextLength',\n  'maxTagPlaceholder',\n  'choiceTransitionName',\n  'onInputKeyDown',\n  'onPopupScroll',\n  'tabindex',\n  'OptionList',\n  'notFoundContent',\n] as const;\n\nexport type RenderNode = VueNode | ((props: any) => VueNode);\n\nexport type RenderDOMFunc = (props: any) => HTMLElement;\n\nexport type Mode = 'multiple' | 'tags' | 'combobox';\n\nexport type Placement = 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topRight';\n\nexport type RawValueType = string | number;\n\nexport interface RefOptionListProps {\n  onKeydown: KeyboardEventHandler;\n  onKeyup: KeyboardEventHandler;\n  scrollTo?: (index: number | ScrollConfig) => void;\n}\n\nexport interface CustomTagProps {\n  label: any;\n  value: any;\n  disabled: boolean;\n  onClose: (event?: MouseEvent) => void;\n  closable: boolean;\n  option: BaseOptionType;\n}\n\nexport interface DisplayValueType {\n  key?: Key;\n  value?: RawValueType;\n  label?: any;\n  disabled?: boolean;\n  option?: BaseOptionType;\n}\n\nexport interface BaseSelectRef {\n  focus: () => void;\n  blur: () => void;\n  scrollTo: ScrollTo;\n}\n\nfunction baseSelectPrivateProps() {\n  return {\n    prefixCls: String,\n    id: String,\n    omitDomProps: Array as PropType<string[]>,\n\n    // >>> Value\n    displayValues: Array as PropType<DisplayValueType[]>,\n    onDisplayValuesChange: Function as PropType<\n      (\n        values: DisplayValueType[],\n        info: {\n          type: 'add' | 'remove' | 'clear';\n          values: DisplayValueType[];\n        },\n      ) => void\n    >,\n\n    // >>> Active\n    /** Current dropdown list active item string value */\n    activeValue: String,\n    /** Link search input with target element */\n    activeDescendantId: String,\n    onActiveValueChange: Function as PropType<(value: string | null) => void>,\n\n    // >>> Search\n    searchValue: String,\n    /** Trigger onSearch, return false to prevent trigger open event */\n    onSearch: Function as PropType<\n      (\n        searchValue: string,\n        info: {\n          source:\n            | 'typing' // User typing\n            | 'effect' // Code logic trigger\n            | 'submit' // tag mode only\n            | 'blur'; // Not trigger event\n        },\n      ) => void\n    >,\n    /** Trigger when search text match the `tokenSeparators`. Will provide split content */\n    onSearchSplit: Function as PropType<(words: string[]) => void>,\n    maxLength: Number,\n\n    OptionList: PropTypes.any,\n\n    /** Tell if provided `options` is empty */\n    emptyOptions: Boolean,\n  };\n}\n\nexport interface DropdownObject {\n  menuNode?: VueNode;\n  props?: Record<string, any>;\n}\n\nexport type DropdownRender = (opt?: DropdownObject) => VueNode;\nexport function baseSelectPropsWithoutPrivate() {\n  return {\n    showSearch: { type: Boolean, default: undefined },\n    tagRender: { type: Function as PropType<(props: CustomTagProps) => any> },\n    optionLabelRender: { type: Function as PropType<(option: Record<string, any>) => any> },\n    direction: { type: String as PropType<'ltr' | 'rtl'> },\n\n    // MISC\n    tabindex: Number,\n    autofocus: Boolean,\n    notFoundContent: PropTypes.any,\n    placeholder: PropTypes.any,\n    onClear: Function as PropType<() => void>,\n\n    choiceTransitionName: String,\n\n    // >>> Mode\n    mode: String as PropType<Mode>,\n\n    // >>> Status\n    disabled: { type: Boolean, default: undefined },\n    loading: { type: Boolean, default: undefined },\n\n    // >>> Open\n    open: { type: Boolean, default: undefined },\n    defaultOpen: { type: Boolean, default: undefined },\n    onDropdownVisibleChange: { type: Function as PropType<(open: boolean) => void> },\n\n    // >>> Customize Input\n    /** @private Internal usage. Do not use in your production. */\n    getInputElement: { type: Function as PropType<() => any> },\n    /** @private Internal usage. Do not use in your production. */\n    getRawInputElement: { type: Function as PropType<() => any> },\n\n    // >>> Selector\n    maxTagTextLength: Number,\n    maxTagCount: { type: [String, Number] as PropType<number | 'responsive'> },\n    maxTagPlaceholder: PropTypes.any,\n\n    // >>> Search\n    tokenSeparators: { type: Array as PropType<string[]> },\n\n    // >>> Icons\n    allowClear: { type: Boolean, default: undefined },\n    showArrow: { type: Boolean, default: undefined },\n    inputIcon: PropTypes.any,\n    /** Clear all icon */\n    clearIcon: PropTypes.any,\n    /** Selector remove icon */\n    removeIcon: PropTypes.any,\n\n    // >>> Dropdown\n    animation: String,\n    transitionName: String,\n    dropdownStyle: { type: Object as PropType<CSSProperties> },\n    dropdownClassName: String,\n    dropdownMatchSelectWidth: {\n      type: [Boolean, Number] as PropType<boolean | number>,\n      default: undefined,\n    },\n    dropdownRender: { type: Function as PropType<DropdownRender> },\n    dropdownAlign: Object as PropType<AlignType>,\n    placement: {\n      type: String as PropType<Placement>,\n    },\n    getPopupContainer: { type: Function as PropType<RenderDOMFunc> },\n\n    // >>> Focus\n    showAction: { type: Array as PropType<Array<'focus' | 'click'>> },\n    onBlur: { type: Function as PropType<(e: FocusEvent) => void> },\n    onFocus: { type: Function as PropType<(e: FocusEvent) => void> },\n\n    // >>> Rest Events\n    onKeyup: Function as PropType<(e: KeyboardEvent) => void>,\n    onKeydown: Function as PropType<(e: KeyboardEvent) => void>,\n    onMousedown: Function as PropType<(e: MouseEvent) => void>,\n    onPopupScroll: Function as PropType<(e: UIEvent) => void>,\n    onInputKeyDown: Function as PropType<(e: KeyboardEvent) => void>,\n    onMouseenter: Function as PropType<(e: MouseEvent) => void>,\n    onMouseleave: Function as PropType<(e: MouseEvent) => void>,\n    onClick: Function as PropType<(e: MouseEvent) => void>,\n  };\n}\nfunction baseSelectProps() {\n  return {\n    ...baseSelectPrivateProps(),\n    ...baseSelectPropsWithoutPrivate(),\n  };\n}\n\nexport type BaseSelectPrivateProps = Partial<\n  ExtractPropTypes<ReturnType<typeof baseSelectPrivateProps>>\n>;\n\nexport type BaseSelectProps = Partial<ExtractPropTypes<ReturnType<typeof baseSelectProps>>>;\n\nexport type BaseSelectPropsWithoutPrivate = Omit<BaseSelectProps, keyof BaseSelectPrivateProps>;\n\nexport function isMultiple(mode: Mode) {\n  return mode === 'tags' || mode === 'multiple';\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'BaseSelect',\n  inheritAttrs: false,\n  props: initDefaultProps(baseSelectProps(), { showAction: [], notFoundContent: 'Not Found' }),\n  setup(props, { attrs, expose, slots }) {\n    const multiple = computed(() => isMultiple(props.mode));\n\n    const mergedShowSearch = computed(() =>\n      props.showSearch !== undefined\n        ? props.showSearch\n        : multiple.value || props.mode === 'combobox',\n    );\n    const mobile = shallowRef(false);\n    onMounted(() => {\n      mobile.value = isMobile();\n    });\n    const legacyTreeSelectContext = useInjectLegacySelectContext();\n    // ============================== Refs ==============================\n    const containerRef = shallowRef<HTMLDivElement>(null);\n    const selectorDomRef = createRef();\n    const triggerRef = shallowRef<RefTriggerProps>(null);\n    const selectorRef = shallowRef<RefSelectorProps>(null);\n    const listRef = shallowRef<RefOptionListProps>(null);\n    const blurRef = ref<boolean>(false);\n\n    /** Used for component focused management */\n    const [mockFocused, setMockFocused, cancelSetMockFocused] = useDelayReset();\n\n    const focus = () => {\n      selectorRef.value?.focus();\n    };\n    const blur = () => {\n      selectorRef.value?.blur();\n    };\n    expose({\n      focus,\n      blur,\n      scrollTo: arg => listRef.value?.scrollTo(arg),\n    });\n\n    const mergedSearchValue = computed(() => {\n      if (props.mode !== 'combobox')\n        return props.searchValue;\n\n      const val = props.displayValues[0]?.value;\n\n      return typeof val === 'string' || typeof val === 'number' ? String(val) : '';\n    });\n\n    // ============================== Open ==============================\n    const initOpen = props.open !== undefined ? props.open : props.defaultOpen;\n    const innerOpen = shallowRef(initOpen);\n    const mergedOpen = shallowRef(initOpen);\n    const setInnerOpen = (val: boolean) => {\n      innerOpen.value = props.open !== undefined ? props.open : val;\n      mergedOpen.value = innerOpen.value;\n    };\n    watch(\n      () => props.open,\n      () => {\n        setInnerOpen(props.open);\n      },\n    );\n\n    // Not trigger `open` in `combobox` when `notFoundContent` is empty\n    const emptyListContent = computed(() => !props.notFoundContent && props.emptyOptions);\n\n    watchEffect(() => {\n      mergedOpen.value = innerOpen.value;\n      if (\n        props.disabled\n        || (emptyListContent.value && mergedOpen.value && props.mode === 'combobox')\n      ) {\n        mergedOpen.value = false;\n      }\n    });\n\n    const triggerOpen = computed(() => (emptyListContent.value ? false : mergedOpen.value));\n\n    const onToggleOpen = (newOpen?: boolean) => {\n      const nextOpen = newOpen !== undefined ? newOpen : !mergedOpen.value;\n\n      if (mergedOpen.value !== nextOpen && !props.disabled) {\n        setInnerOpen(nextOpen);\n        props.onDropdownVisibleChange && props.onDropdownVisibleChange(nextOpen);\n        if (!nextOpen && popupFocused.value) {\n          popupFocused.value = false;\n          setMockFocused(false, () => {\n            focusRef.value = false;\n            blurRef.value = false;\n          });\n        }\n      }\n    };\n\n    const tokenWithEnter = computed(() =>\n      (props.tokenSeparators || []).some(tokenSeparator => ['\\n', '\\r\\n'].includes(tokenSeparator)),\n    );\n\n    const onInternalSearch = (searchText: string, fromTyping: boolean, isCompositing: boolean) => {\n      let ret = true;\n      let newSearchText = searchText;\n      props.onActiveValueChange?.(null);\n\n      // Check if match the `tokenSeparators`\n      const patchLabels: string[] = isCompositing\n        ? null\n        : getSeparatedContent(searchText, props.tokenSeparators);\n\n      // Ignore combobox since it's not split-able\n      if (props.mode !== 'combobox' && patchLabels) {\n        newSearchText = '';\n\n        props.onSearchSplit?.(patchLabels);\n\n        // Should close when paste finish\n        onToggleOpen(false);\n\n        // Tell Selector that break next actions\n        ret = false;\n      }\n\n      if (props.onSearch && mergedSearchValue.value !== newSearchText) {\n        props.onSearch(newSearchText, {\n          source: fromTyping ? 'typing' : 'effect',\n        });\n      }\n\n      return ret;\n    };\n\n    // Only triggered when menu is closed & mode is tags\n    // If menu is open, OptionList will take charge\n    // If mode isn't tags, press enter is not meaningful when you can't see any option\n    const onInternalSearchSubmit = (searchText: string) => {\n      // prevent empty tags from appearing when you click the Enter button\n      if (!searchText || !searchText.trim())\n        return;\n\n      props.onSearch?.(searchText, { source: 'submit' });\n    };\n\n    // Close will clean up single mode search text\n    watch(\n      mergedOpen,\n      () => {\n        if (!mergedOpen.value && !multiple.value && props.mode !== 'combobox')\n          onInternalSearch('', false, false);\n      },\n      { immediate: true, flush: 'post' },\n    );\n\n    // ============================ Disabled ============================\n    // Close dropdown & remove focus state when disabled change\n    watch(\n      () => props.disabled,\n      () => {\n        if (innerOpen.value && !!props.disabled)\n          setInnerOpen(false);\n\n        if (props.disabled && !blurRef.value)\n          setMockFocused(false);\n      },\n      { immediate: true },\n    );\n\n    // ============================ Keyboard ============================\n    /**\n     * We record input value here to check if can press to clean up by backspace\n     * - null: Key is not down, this is reset by key up\n     * - true: Search text is empty when first time backspace down\n     * - false: Search text is not empty when first time backspace down\n     */\n    const [getClearLock, setClearLock] = useLock();\n\n    // KeyDown\n    const onInternalKeyDown: KeyboardEventHandler = (event, ...rest) => {\n      const clearLock = getClearLock();\n      const { which } = event;\n\n      if (which === KeyCode.ENTER) {\n        // Do not submit form when type in the input\n        if (props.mode !== 'combobox')\n          event.preventDefault();\n\n        // We only manage open state here, close logic should handle by list component\n        if (!mergedOpen.value)\n          onToggleOpen(true);\n      }\n\n      setClearLock(!!mergedSearchValue.value);\n\n      // Remove value by `backspace`\n      if (\n        which === KeyCode.BACKSPACE\n        && !clearLock\n        && multiple.value\n        && !mergedSearchValue.value\n        && props.displayValues.length\n      ) {\n        const cloneDisplayValues = [...props.displayValues];\n        let removedDisplayValue = null;\n\n        for (let i = cloneDisplayValues.length - 1; i >= 0; i -= 1) {\n          const current = cloneDisplayValues[i];\n\n          if (!current.disabled) {\n            cloneDisplayValues.splice(i, 1);\n            removedDisplayValue = current;\n            break;\n          }\n        }\n\n        if (removedDisplayValue) {\n          props.onDisplayValuesChange(cloneDisplayValues, {\n            type: 'remove',\n            values: [removedDisplayValue],\n          });\n        }\n      }\n\n      if (mergedOpen.value && listRef.value)\n        listRef.value.onKeydown(event, ...rest);\n\n      props.onKeydown?.(event, ...rest);\n    };\n\n    // KeyUp\n    const onInternalKeyUp: KeyboardEventHandler = (event: KeyboardEvent, ...rest) => {\n      if (mergedOpen.value && listRef.value)\n        listRef.value.onKeyup(event, ...rest);\n\n      if (props.onKeyup)\n        props.onKeyup(event, ...rest);\n    };\n\n    // ============================ Selector ============================\n    const onSelectorRemove = (val: DisplayValueType) => {\n      const newValues = props.displayValues.filter(i => i !== val);\n\n      props.onDisplayValuesChange(newValues, {\n        type: 'remove',\n        values: [val],\n      });\n    };\n\n    // ========================== Focus / Blur ==========================\n    /** Record real focus status */\n    const focusRef = shallowRef(false);\n    const onContainerFocus: FocusEventHandler = (...args) => {\n      setMockFocused(true);\n\n      if (!props.disabled) {\n        if (props.onFocus && !focusRef.value)\n          props.onFocus(...args);\n\n        // `showAction` should handle `focus` if set\n        if (props.showAction && props.showAction.includes('focus'))\n          onToggleOpen(true);\n      }\n\n      focusRef.value = true;\n    };\n    const popupFocused = ref(false);\n    const onContainerBlur: FocusEventHandler = (...args) => {\n      if (popupFocused.value)\n        return;\n\n      blurRef.value = true;\n      setMockFocused(false, () => {\n        focusRef.value = false;\n        blurRef.value = false;\n        onToggleOpen(false);\n      });\n\n      if (props.disabled)\n        return;\n\n      const searchVal = mergedSearchValue.value;\n      if (searchVal) {\n        // `tags` mode should move `searchValue` into values\n        if (props.mode === 'tags') {\n          props.onSearch(searchVal, { source: 'submit' });\n        } else if (props.mode === 'multiple') {\n          // `multiple` mode only clean the search value but not trigger event\n          props.onSearch('', {\n            source: 'blur',\n          });\n        }\n      }\n\n      if (props.onBlur)\n        props.onBlur(...args);\n    };\n    const onPopupFocusin = () => {\n      popupFocused.value = true;\n    };\n    const onPopupFocusout = () => {\n      setMockFocused(false);\n      popupFocused.value = false;\n    };\n    provide('VCSelectContainerEvent', {\n      focus: onContainerFocus,\n      blur: onContainerBlur,\n    });\n\n    // Give focus back of Select\n    const activeTimeoutIds: any[] = [];\n\n    onMounted(() => {\n      activeTimeoutIds.forEach(timeoutId => clearTimeout(timeoutId));\n      activeTimeoutIds.splice(0, activeTimeoutIds.length);\n    });\n    onBeforeUnmount(() => {\n      activeTimeoutIds.forEach(timeoutId => clearTimeout(timeoutId));\n      activeTimeoutIds.splice(0, activeTimeoutIds.length);\n    });\n\n    const onInternalMouseDown: MouseEventHandler = (event, ...restArgs) => {\n      const { target } = event;\n      const popupElement: HTMLDivElement = triggerRef.value?.getPopupElement();\n\n      // We should give focus back to selector if clicked item is not focusable\n      if (popupElement && popupElement.contains(target as HTMLElement)) {\n        const timeoutId: any = setTimeout(() => {\n          const index = activeTimeoutIds.indexOf(timeoutId);\n          if (index !== -1)\n            activeTimeoutIds.splice(index, 1);\n\n          cancelSetMockFocused();\n\n          if (!mobile.value && !popupElement.contains(document.activeElement))\n            selectorRef.value?.focus();\n        });\n\n        activeTimeoutIds.push(timeoutId);\n      }\n\n      props.onMousedown?.(event, ...restArgs);\n    };\n\n    // ============================= Dropdown ==============================\n    const containerWidth = shallowRef<number>(null);\n    // const instance = getCurrentInstance();\n    const onPopupMouseEnter = () => {\n      // We need force update here since popup dom is render async\n      // instance.update();\n    };\n    onMounted(() => {\n      watch(\n        triggerOpen,\n        () => {\n          if (triggerOpen.value) {\n            const newWidth = Math.ceil(containerRef.value?.offsetWidth);\n            if (containerWidth.value !== newWidth && !Number.isNaN(newWidth))\n              containerWidth.value = newWidth;\n          }\n        },\n        { immediate: true, flush: 'post' },\n      );\n    });\n\n    // Close when click on non-select element\n    useSelectTriggerControl([containerRef, triggerRef], triggerOpen, onToggleOpen);\n    useProvideBaseSelectProps(\n      toReactive({\n        ...toRefs(props),\n        open: mergedOpen,\n        triggerOpen,\n        showSearch: mergedShowSearch,\n        multiple,\n        toggleOpen: onToggleOpen,\n      } as unknown as BaseSelectContextProps),\n    );\n    return () => {\n      const {\n        prefixCls,\n        id,\n\n        open,\n        defaultOpen,\n\n        mode,\n\n        // Search related\n        showSearch,\n        searchValue,\n        onSearch,\n\n        // Icons\n        allowClear,\n        clearIcon,\n        showArrow,\n        inputIcon,\n\n        // Others\n        disabled,\n        loading,\n        getInputElement,\n        getPopupContainer,\n        placement,\n\n        // Dropdown\n        animation,\n        transitionName,\n        dropdownStyle,\n        dropdownClassName,\n        dropdownMatchSelectWidth,\n        dropdownRender,\n        dropdownAlign,\n        showAction,\n        direction,\n\n        // Tags\n        tokenSeparators,\n        tagRender,\n        optionLabelRender,\n\n        // Events\n        onPopupScroll,\n        onDropdownVisibleChange,\n        onFocus,\n        onBlur,\n        onKeyup,\n        onKeydown,\n        onMousedown,\n\n        onClear,\n        omitDomProps,\n        getRawInputElement,\n        displayValues,\n        onDisplayValuesChange,\n        emptyOptions,\n        activeDescendantId,\n        activeValue,\n        OptionList,\n\n        ...restProps\n      } = { ...props, ...attrs } as BaseSelectProps;\n      // ============================= Input ==============================\n      // Only works in `combobox`\n      const customizeInputElement: any\n        = (mode === 'combobox' && getInputElement && getInputElement()) || null;\n\n      // Used for customize replacement for `vc-cascader`\n      const customizeRawInputElement: any\n        = typeof getRawInputElement === 'function' && getRawInputElement();\n      const domProps = {\n        ...restProps,\n      } as Omit<keyof typeof restProps, (typeof DEFAULT_OMIT_PROPS)[number]>;\n\n      // Used for raw custom input trigger\n      let onTriggerVisibleChange: null | ((newOpen: boolean) => void);\n      if (customizeRawInputElement) {\n        onTriggerVisibleChange = (newOpen: boolean) => {\n          onToggleOpen(newOpen);\n        };\n      }\n\n      DEFAULT_OMIT_PROPS.forEach((propName) => {\n        delete domProps[propName];\n      });\n\n      omitDomProps?.forEach((propName) => {\n        delete domProps[propName];\n      });\n\n      // ============================= Arrow ==============================\n      const mergedShowArrow\n        = showArrow !== undefined ? showArrow : loading || (!multiple.value && mode !== 'combobox');\n      let arrowNode: VueNode;\n\n      if (mergedShowArrow) {\n        arrowNode = (\n          <TransBtn\n            class={classNames(`${prefixCls}-arrow`, {\n              [`${prefixCls}-arrow-loading`]: loading,\n            })}\n            customizeIcon={inputIcon}\n            customizeIconProps={{\n              loading,\n              searchValue: mergedSearchValue.value,\n              open: mergedOpen.value,\n              focused: mockFocused.value,\n              showSearch: mergedShowSearch.value,\n            }}\n          />\n        );\n      }\n\n      // ============================= Clear ==============================\n      let clearNode: VueNode;\n      const onClearMouseDown: MouseEventHandler = () => {\n        onClear?.();\n\n        onDisplayValuesChange([], {\n          type: 'clear',\n          values: displayValues,\n        });\n        onInternalSearch('', false, false);\n      };\n\n      if (!disabled && allowClear && (displayValues.length || mergedSearchValue.value)) {\n        clearNode = (\n          <TransBtn\n            class={`${prefixCls}-clear`}\n            onMousedown={onClearMouseDown}\n            customizeIcon={clearIcon}\n          >\n            ×\n          </TransBtn>\n        );\n      }\n\n      // =========================== OptionList ===========================\n      const optionList = (\n        <OptionList\n          ref={listRef}\n          v-slots={{ ...legacyTreeSelectContext.customSlots, option: slots.option }}\n        />\n      );\n\n      // ============================= Select =============================\n      const mergedClassName = classNames(prefixCls, attrs.class, {\n        [`${prefixCls}-focused`]: mockFocused.value,\n        [`${prefixCls}-multiple`]: multiple.value,\n        [`${prefixCls}-single`]: !multiple.value,\n        [`${prefixCls}-allow-clear`]: allowClear,\n        [`${prefixCls}-show-arrow`]: mergedShowArrow,\n        [`${prefixCls}-disabled`]: disabled,\n        [`${prefixCls}-loading`]: loading,\n        [`${prefixCls}-open`]: mergedOpen.value,\n        [`${prefixCls}-customize-input`]: customizeInputElement,\n        [`${prefixCls}-show-search`]: mergedShowSearch.value,\n      });\n\n      // >>> Selector\n      const selectorNode = (\n        <SelectTrigger\n          ref={triggerRef}\n          disabled={disabled}\n          prefixCls={prefixCls}\n          visible={triggerOpen.value}\n          popupElement={optionList}\n          containerWidth={containerWidth.value}\n          animation={animation}\n          transitionName={transitionName}\n          dropdownStyle={dropdownStyle}\n          dropdownClassName={dropdownClassName}\n          direction={direction}\n          dropdownMatchSelectWidth={dropdownMatchSelectWidth}\n          dropdownRender={dropdownRender}\n          dropdownAlign={dropdownAlign}\n          placement={placement}\n          getPopupContainer={getPopupContainer}\n          empty={emptyOptions}\n          getTriggerDOMNode={() => selectorDomRef.current}\n          onPopupVisibleChange={onTriggerVisibleChange}\n          onPopupMouseEnter={onPopupMouseEnter}\n          onPopupFocusin={onPopupFocusin}\n          onPopupFocusout={onPopupFocusout}\n          v-slots={{\n            default: () => {\n              return customizeRawInputElement\n                ? (\n                    isValidElement(customizeRawInputElement)\n                  && cloneElement(\n                    customizeRawInputElement,\n                    {\n                      ref: selectorDomRef,\n                    },\n                    false,\n                    true,\n                  )\n                  )\n                : (\n                    <Selector\n                      {...props}\n                      domRef={selectorDomRef}\n                      prefixCls={prefixCls}\n                      inputElement={customizeInputElement}\n                      ref={selectorRef}\n                      id={id}\n                      showSearch={mergedShowSearch.value}\n                      mode={mode}\n                      activeDescendantId={activeDescendantId}\n                      tagRender={tagRender}\n                      optionLabelRender={optionLabelRender}\n                      values={displayValues}\n                      open={mergedOpen.value}\n                      onToggleOpen={onToggleOpen}\n                      activeValue={activeValue}\n                      searchValue={mergedSearchValue.value}\n                      onSearch={onInternalSearch}\n                      onSearchSubmit={onInternalSearchSubmit}\n                      onRemove={onSelectorRemove}\n                      tokenWithEnter={tokenWithEnter.value}\n                    />\n                  );\n            },\n          }}\n        >\n        </SelectTrigger>\n      );\n      // >>> Render\n      let renderNode: VueNode;\n\n      // Render raw\n      if (customizeRawInputElement) {\n        renderNode = selectorNode;\n      } else {\n        renderNode = (\n          <div\n            {...domProps}\n            class={mergedClassName}\n            ref={containerRef}\n            onMousedown={onInternalMouseDown}\n            onKeydown={onInternalKeyDown}\n            onKeyup={onInternalKeyUp}\n            // onFocus={onContainerFocus}\n            // onBlur={onContainerBlur}\n          >\n            {mockFocused.value && !mergedOpen.value && (\n              <span\n                style={{\n                  width: 0,\n                  height: 0,\n                  position: 'absolute',\n                  overflow: 'hidden',\n                  opacity: 0,\n                }}\n                aria-live=\"polite\"\n              >\n                {/* Merge into one string to make screen reader work as expect */}\n                {`${displayValues\n                  .map(({ label, value }) =>\n                    ['number', 'string'].includes(typeof label) ? label : value,\n                  )\n                  .join(', ')}`}\n              </span>\n            )}\n            {selectorNode}\n\n            {arrowNode}\n            {clearNode}\n          </div>\n        );\n      }\n      return renderNode;\n    };\n  },\n});\n"],"names":["DEFAULT_OMIT_PROPS","baseSelectPrivateProps","prefixCls","String","id","omitDomProps","Array","displayValues","onDisplayValuesChange","Function","activeValue","activeDescendantId","onActiveValueChange","searchValue","onSearch","onSearchSplit","maxLength","Number","OptionList","PropTypes","any","emptyOptions","Boolean","baseSelectPropsWithoutPrivate","showSearch","type","default","undefined","tagRender","optionLabelRender","direction","tabindex","autofocus","notFoundContent","placeholder","onClear","choiceTransitionName","mode","disabled","loading","open","defaultOpen","onDropdownVisibleChange","getInputElement","getRawInputElement","maxTagTextLength","maxTagCount","maxTagPlaceholder","tokenSeparators","allowClear","showArrow","inputIcon","clearIcon","removeIcon","animation","transitionName","dropdownStyle","Object","dropdownClassName","dropdownMatchSelectWidth","dropdownRender","dropdownAlign","placement","getPopupContainer","showAction","onBlur","onFocus","onKeyup","onKeydown","onMousedown","onPopupScroll","onInputKeyDown","onMouseenter","onMouseleave","onClick","baseSelectProps","isMultiple","defineComponent","compatConfig","MODE","name","inheritAttrs","props","initDefaultProps","setup","attrs","expose","slots","multiple","computed","mergedShowSearch","value","mobile","shallowRef","onMounted","isMobile","legacyTreeSelectContext","useInjectLegacySelectContext","containerRef","selectorDomRef","createRef","triggerRef","selectorRef","listRef","blurRef","ref","mockFocused","setMockFocused","cancelSetMockFocused","useDelayReset","focus","blur","scrollTo","arg","mergedSearchValue","val","initOpen","innerOpen","mergedOpen","setInnerOpen","watch","emptyListContent","watchEffect","triggerOpen","onToggleOpen","newOpen","nextOpen","popupFocused","focusRef","tokenWithEnter","some","tokenSeparator","includes","onInternalSearch","searchText","fromTyping","isCompositing","ret","newSearchText","patchLabels","getSeparatedContent","source","onInternalSearchSubmit","trim","immediate","flush","getClearLock","setClearLock","useLock","onInternalKeyDown","event","rest","clearLock","which","KeyCode","ENTER","preventDefault","BACKSPACE","length","cloneDisplayValues","removedDisplayValue","i","current","splice","values","onInternalKeyUp","onSelectorRemove","newValues","filter","onContainerFocus","args","onContainerBlur","searchVal","onPopupFocusin","onPopupFocusout","provide","activeTimeoutIds","forEach","timeoutId","clearTimeout","onBeforeUnmount","onInternalMouseDown","restArgs","target","popupElement","getPopupElement","contains","setTimeout","index","indexOf","document","activeElement","push","containerWidth","onPopupMouseEnter","newWidth","Math","ceil","offsetWidth","isNaN","useSelectTriggerControl","useProvideBaseSelectProps","toReactive","toRefs","toggleOpen","restProps","customizeInputElement","customizeRawInputElement","domProps","onTriggerVisibleChange","propName","mergedShowArrow","arrowNode","_createVNode","TransBtn","classNames","focused","clearNode","onClearMouseDown","_createTextVNode","optionList","customSlots","option","mergedClassName","class","selectorNode","SelectTrigger","getTriggerDOMNode","isValidElement","cloneElement","Selector","renderNode","width","height","position","overflow","opacity","map","label","join"],"mappings":"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"}