8537a8ef7f4961165e6bab12d33db86b.json 101 KB
{"ast":null,"code":"import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\n/**\n * To match accessibility requirement, we always provide an input in the component.\n * Other element will not set `tabIndex` to avoid `onBlur` sequence problem.\n * For focused select, we set `aria-live=\"polite\"` to update the accessibility content.\n *\n * ref:\n * - keyboard: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/listbox_role#Keyboard_interactions\n */\n\nimport * as React from 'react';\nimport { useState, useRef, useEffect, useMemo } from 'react';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport classNames from 'classnames';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport Selector from './Selector';\nimport SelectTrigger from './SelectTrigger';\nimport { INTERNAL_PROPS_MARK } from './interface/generator';\nimport { toInnerValue, toOuterValues, removeLastEnabledValue, getUUID } from './utils/commonUtil';\nimport TransBtn from './TransBtn';\nimport useLock from './hooks/useLock';\nimport useDelayReset from './hooks/useDelayReset';\nimport useLayoutEffect from './hooks/useLayoutEffect';\nimport { getSeparatedContent } from './utils/valueUtil';\nimport useSelectTriggerControl from './hooks/useSelectTriggerControl';\nimport useCacheDisplayValue from './hooks/useCacheDisplayValue';\nimport useCacheOptions from './hooks/useCacheOptions';\nvar DEFAULT_OMIT_PROPS = ['removeIcon', 'placeholder', 'autoFocus', 'maxTagCount', 'maxTagTextLength', 'maxTagPlaceholder', 'choiceTransitionName', 'onInputKeyDown'];\n/**\n * This function is in internal usage.\n * Do not use it in your prod env since we may refactor this.\n */\n\nexport default function generateSelector(config) {\n  var defaultPrefixCls = config.prefixCls,\n      OptionList = config.components.optionList,\n      convertChildrenToData = config.convertChildrenToData,\n      flattenOptions = config.flattenOptions,\n      getLabeledValue = config.getLabeledValue,\n      filterOptions = config.filterOptions,\n      isValueDisabled = config.isValueDisabled,\n      findValueOption = config.findValueOption,\n      warningProps = config.warningProps,\n      fillOptionsWithMissingValue = config.fillOptionsWithMissingValue,\n      omitDOMProps = config.omitDOMProps; // Use raw define since `React.FC` not support generic\n\n  function Select(props, ref) {\n    var _classNames2;\n\n    var _props$prefixCls = props.prefixCls,\n        prefixCls = _props$prefixCls === void 0 ? defaultPrefixCls : _props$prefixCls,\n        className = props.className,\n        id = props.id,\n        open = props.open,\n        defaultOpen = props.defaultOpen,\n        options = props.options,\n        children = props.children,\n        mode = props.mode,\n        value = props.value,\n        defaultValue = props.defaultValue,\n        labelInValue = props.labelInValue,\n        showSearch = props.showSearch,\n        inputValue = props.inputValue,\n        searchValue = props.searchValue,\n        filterOption = props.filterOption,\n        filterSort = props.filterSort,\n        _props$optionFilterPr = props.optionFilterProp,\n        optionFilterProp = _props$optionFilterPr === void 0 ? 'value' : _props$optionFilterPr,\n        _props$autoClearSearc = props.autoClearSearchValue,\n        autoClearSearchValue = _props$autoClearSearc === void 0 ? true : _props$autoClearSearc,\n        onSearch = props.onSearch,\n        allowClear = props.allowClear,\n        clearIcon = props.clearIcon,\n        showArrow = props.showArrow,\n        inputIcon = props.inputIcon,\n        menuItemSelectedIcon = props.menuItemSelectedIcon,\n        disabled = props.disabled,\n        loading = props.loading,\n        defaultActiveFirstOption = props.defaultActiveFirstOption,\n        _props$notFoundConten = props.notFoundContent,\n        notFoundContent = _props$notFoundConten === void 0 ? 'Not Found' : _props$notFoundConten,\n        optionLabelProp = props.optionLabelProp,\n        backfill = props.backfill,\n        getInputElement = props.getInputElement,\n        getPopupContainer = props.getPopupContainer,\n        _props$listHeight = props.listHeight,\n        listHeight = _props$listHeight === void 0 ? 200 : _props$listHeight,\n        _props$listItemHeight = props.listItemHeight,\n        listItemHeight = _props$listItemHeight === void 0 ? 20 : _props$listItemHeight,\n        animation = props.animation,\n        transitionName = props.transitionName,\n        virtual = props.virtual,\n        dropdownStyle = props.dropdownStyle,\n        dropdownClassName = props.dropdownClassName,\n        dropdownMatchSelectWidth = props.dropdownMatchSelectWidth,\n        dropdownRender = props.dropdownRender,\n        dropdownAlign = props.dropdownAlign,\n        _props$showAction = props.showAction,\n        showAction = _props$showAction === void 0 ? [] : _props$showAction,\n        direction = props.direction,\n        tokenSeparators = props.tokenSeparators,\n        tagRender = props.tagRender,\n        onPopupScroll = props.onPopupScroll,\n        onDropdownVisibleChange = props.onDropdownVisibleChange,\n        onFocus = props.onFocus,\n        onBlur = props.onBlur,\n        onKeyUp = props.onKeyUp,\n        onKeyDown = props.onKeyDown,\n        onMouseDown = props.onMouseDown,\n        onChange = props.onChange,\n        onSelect = props.onSelect,\n        onDeselect = props.onDeselect,\n        onClear = props.onClear,\n        _props$internalProps = props.internalProps,\n        internalProps = _props$internalProps === void 0 ? {} : _props$internalProps,\n        restProps = _objectWithoutProperties(props, [\"prefixCls\", \"className\", \"id\", \"open\", \"defaultOpen\", \"options\", \"children\", \"mode\", \"value\", \"defaultValue\", \"labelInValue\", \"showSearch\", \"inputValue\", \"searchValue\", \"filterOption\", \"filterSort\", \"optionFilterProp\", \"autoClearSearchValue\", \"onSearch\", \"allowClear\", \"clearIcon\", \"showArrow\", \"inputIcon\", \"menuItemSelectedIcon\", \"disabled\", \"loading\", \"defaultActiveFirstOption\", \"notFoundContent\", \"optionLabelProp\", \"backfill\", \"getInputElement\", \"getPopupContainer\", \"listHeight\", \"listItemHeight\", \"animation\", \"transitionName\", \"virtual\", \"dropdownStyle\", \"dropdownClassName\", \"dropdownMatchSelectWidth\", \"dropdownRender\", \"dropdownAlign\", \"showAction\", \"direction\", \"tokenSeparators\", \"tagRender\", \"onPopupScroll\", \"onDropdownVisibleChange\", \"onFocus\", \"onBlur\", \"onKeyUp\", \"onKeyDown\", \"onMouseDown\", \"onChange\", \"onSelect\", \"onDeselect\", \"onClear\", \"internalProps\"]);\n\n    var useInternalProps = internalProps.mark === INTERNAL_PROPS_MARK;\n    var domProps = omitDOMProps ? omitDOMProps(restProps) : restProps;\n    DEFAULT_OMIT_PROPS.forEach(function (prop) {\n      delete domProps[prop];\n    });\n    var containerRef = useRef(null);\n    var triggerRef = useRef(null);\n    var selectorRef = useRef(null);\n    var listRef = useRef(null);\n    var tokenWithEnter = useMemo(function () {\n      return (tokenSeparators || []).some(function (tokenSeparator) {\n        return ['\\n', '\\r\\n'].includes(tokenSeparator);\n      });\n    }, [tokenSeparators]);\n    /** Used for component focused management */\n\n    var _useDelayReset = useDelayReset(),\n        _useDelayReset2 = _slicedToArray(_useDelayReset, 3),\n        mockFocused = _useDelayReset2[0],\n        setMockFocused = _useDelayReset2[1],\n        cancelSetMockFocused = _useDelayReset2[2]; // Inner id for accessibility usage. Only work in client side\n\n\n    var _useState = useState(),\n        _useState2 = _slicedToArray(_useState, 2),\n        innerId = _useState2[0],\n        setInnerId = _useState2[1];\n\n    useEffect(function () {\n      setInnerId(\"rc_select_\".concat(getUUID()));\n    }, []);\n    var mergedId = id || innerId; // optionLabelProp\n\n    var mergedOptionLabelProp = optionLabelProp;\n\n    if (mergedOptionLabelProp === undefined) {\n      mergedOptionLabelProp = options ? 'label' : 'children';\n    } // labelInValue\n\n\n    var mergedLabelInValue = mode === 'combobox' ? false : labelInValue;\n    var isMultiple = mode === 'tags' || mode === 'multiple';\n    var mergedShowSearch = showSearch !== undefined ? showSearch : isMultiple || mode === 'combobox'; // ============================== Ref ===============================\n\n    var selectorDomRef = useRef(null);\n    React.useImperativeHandle(ref, function () {\n      return {\n        focus: selectorRef.current.focus,\n        blur: selectorRef.current.blur\n      };\n    }); // ============================= Value ==============================\n\n    var _useMergedState = useMergedState(defaultValue, {\n      value: value\n    }),\n        _useMergedState2 = _slicedToArray(_useMergedState, 2),\n        mergedValue = _useMergedState2[0],\n        setMergedValue = _useMergedState2[1];\n    /** Unique raw values */\n\n\n    var mergedRawValue = useMemo(function () {\n      return toInnerValue(mergedValue, {\n        labelInValue: mergedLabelInValue,\n        combobox: mode === 'combobox'\n      });\n    }, [mergedValue, mergedLabelInValue]);\n    /** We cache a set of raw values to speed up check */\n\n    var rawValues = useMemo(function () {\n      return new Set(mergedRawValue);\n    }, [mergedRawValue]); // ============================= Option =============================\n    // Set by option list active, it will merge into search input when mode is `combobox`\n\n    var _useState3 = useState(null),\n        _useState4 = _slicedToArray(_useState3, 2),\n        activeValue = _useState4[0],\n        setActiveValue = _useState4[1];\n\n    var _useState5 = useState(''),\n        _useState6 = _slicedToArray(_useState5, 2),\n        innerSearchValue = _useState6[0],\n        setInnerSearchValue = _useState6[1];\n\n    var mergedSearchValue = innerSearchValue;\n\n    if (mode === 'combobox' && mergedValue !== undefined) {\n      mergedSearchValue = mergedValue;\n    } else if (searchValue !== undefined) {\n      mergedSearchValue = searchValue;\n    } else if (inputValue) {\n      mergedSearchValue = inputValue;\n    }\n\n    var mergedOptions = useMemo(function () {\n      var newOptions = options;\n\n      if (newOptions === undefined) {\n        newOptions = convertChildrenToData(children);\n      }\n      /**\n       * `tags` should fill un-list item.\n       * This is not cool here since TreeSelect do not need this\n       */\n\n\n      if (mode === 'tags' && fillOptionsWithMissingValue) {\n        newOptions = fillOptionsWithMissingValue(newOptions, mergedValue, mergedOptionLabelProp, labelInValue);\n      }\n\n      return newOptions || [];\n    }, [options, children, mode, mergedValue]);\n    var mergedFlattenOptions = useMemo(function () {\n      return flattenOptions(mergedOptions, props);\n    }, [mergedOptions]);\n    var getValueOption = useCacheOptions(mergedRawValue, mergedFlattenOptions); // Display options for OptionList\n\n    var displayOptions = useMemo(function () {\n      if (!mergedSearchValue || !mergedShowSearch) {\n        return _toConsumableArray(mergedOptions);\n      }\n\n      var filteredOptions = filterOptions(mergedSearchValue, mergedOptions, {\n        optionFilterProp: optionFilterProp,\n        filterOption: mode === 'combobox' && filterOption === undefined ? function () {\n          return true;\n        } : filterOption\n      });\n\n      if (mode === 'tags' && filteredOptions.every(function (opt) {\n        return opt[optionFilterProp] !== mergedSearchValue;\n      })) {\n        filteredOptions.unshift({\n          value: mergedSearchValue,\n          label: mergedSearchValue,\n          key: '__RC_SELECT_TAG_PLACEHOLDER__'\n        });\n      }\n\n      if (filterSort && Array.isArray(filteredOptions)) {\n        return _toConsumableArray(filteredOptions).sort(filterSort);\n      }\n\n      return filteredOptions;\n    }, [mergedOptions, mergedSearchValue, mode, mergedShowSearch, filterSort]);\n    var displayFlattenOptions = useMemo(function () {\n      return flattenOptions(displayOptions, props);\n    }, [displayOptions]);\n    useEffect(function () {\n      if (listRef.current && listRef.current.scrollTo) {\n        listRef.current.scrollTo(0);\n      }\n    }, [mergedSearchValue]); // ============================ Selector ============================\n\n    var displayValues = useMemo(function () {\n      var tmpValues = mergedRawValue.map(function (val) {\n        var valueOptions = getValueOption([val]);\n        var displayValue = getLabeledValue(val, {\n          options: valueOptions,\n          prevValue: mergedValue,\n          labelInValue: mergedLabelInValue,\n          optionLabelProp: mergedOptionLabelProp\n        });\n        return _objectSpread(_objectSpread({}, displayValue), {}, {\n          disabled: isValueDisabled(val, valueOptions)\n        });\n      });\n\n      if (!mode && tmpValues.length === 1 && tmpValues[0].value === null && tmpValues[0].label === null) {\n        return [];\n      }\n\n      return tmpValues;\n    }, [mergedValue, mergedOptions, mode]); // Polyfill with cache label\n\n    displayValues = useCacheDisplayValue(displayValues);\n\n    var triggerSelect = function triggerSelect(newValue, isSelect, source) {\n      var newValueOption = getValueOption([newValue]);\n      var outOption = findValueOption([newValue], newValueOption)[0];\n\n      if (!internalProps.skipTriggerSelect) {\n        // Skip trigger `onSelect` or `onDeselect` if configured\n        var selectValue = mergedLabelInValue ? getLabeledValue(newValue, {\n          options: newValueOption,\n          prevValue: mergedValue,\n          labelInValue: mergedLabelInValue,\n          optionLabelProp: mergedOptionLabelProp\n        }) : newValue;\n\n        if (isSelect && onSelect) {\n          onSelect(selectValue, outOption);\n        } else if (!isSelect && onDeselect) {\n          onDeselect(selectValue, outOption);\n        }\n      } // Trigger internal event\n\n\n      if (useInternalProps) {\n        if (isSelect && internalProps.onRawSelect) {\n          internalProps.onRawSelect(newValue, outOption, source);\n        } else if (!isSelect && internalProps.onRawDeselect) {\n          internalProps.onRawDeselect(newValue, outOption, source);\n        }\n      }\n    }; // We need cache options here in case user update the option list\n\n\n    var _useState7 = useState([]),\n        _useState8 = _slicedToArray(_useState7, 2),\n        prevValueOptions = _useState8[0],\n        setPrevValueOptions = _useState8[1];\n\n    var triggerChange = function triggerChange(newRawValues) {\n      if (useInternalProps && internalProps.skipTriggerChange) {\n        return;\n      }\n\n      var newRawValuesOptions = getValueOption(newRawValues);\n      var outValues = toOuterValues(Array.from(newRawValues), {\n        labelInValue: mergedLabelInValue,\n        options: newRawValuesOptions,\n        getLabeledValue: getLabeledValue,\n        prevValue: mergedValue,\n        optionLabelProp: mergedOptionLabelProp\n      });\n      var outValue = isMultiple ? outValues : outValues[0]; // Skip trigger if prev & current value is both empty\n\n      if (onChange && (mergedRawValue.length !== 0 || outValues.length !== 0)) {\n        var outOptions = findValueOption(newRawValues, newRawValuesOptions, {\n          prevValueOptions: prevValueOptions\n        }); // We will cache option in case it removed by ajax\n\n        setPrevValueOptions(outOptions.map(function (option, index) {\n          var clone = _objectSpread({}, option);\n\n          Object.defineProperty(clone, '_INTERNAL_OPTION_VALUE_', {\n            get: function get() {\n              return newRawValues[index];\n            }\n          });\n          return clone;\n        }));\n        onChange(outValue, isMultiple ? outOptions : outOptions[0]);\n      }\n\n      setMergedValue(outValue);\n    };\n\n    var onInternalSelect = function onInternalSelect(newValue, _ref) {\n      var selected = _ref.selected,\n          source = _ref.source;\n\n      if (disabled) {\n        return;\n      }\n\n      var newRawValue;\n\n      if (isMultiple) {\n        newRawValue = new Set(mergedRawValue);\n\n        if (selected) {\n          newRawValue.add(newValue);\n        } else {\n          newRawValue.delete(newValue);\n        }\n      } else {\n        newRawValue = new Set();\n        newRawValue.add(newValue);\n      } // Multiple always trigger change and single should change if value changed\n\n\n      if (isMultiple || !isMultiple && Array.from(mergedRawValue)[0] !== newValue) {\n        triggerChange(Array.from(newRawValue));\n      } // Trigger `onSelect`. Single mode always trigger select\n\n\n      triggerSelect(newValue, !isMultiple || selected, source); // Clean search value if single or configured\n\n      if (mode === 'combobox') {\n        setInnerSearchValue(String(newValue));\n        setActiveValue('');\n      } else if (!isMultiple || autoClearSearchValue) {\n        setInnerSearchValue('');\n        setActiveValue('');\n      }\n    };\n\n    var onInternalOptionSelect = function onInternalOptionSelect(newValue, info) {\n      onInternalSelect(newValue, _objectSpread(_objectSpread({}, info), {}, {\n        source: 'option'\n      }));\n    };\n\n    var onInternalSelectionSelect = function onInternalSelectionSelect(newValue, info) {\n      onInternalSelect(newValue, _objectSpread(_objectSpread({}, info), {}, {\n        source: 'selection'\n      }));\n    }; // ============================= Input ==============================\n    // Only works in `combobox`\n\n\n    var customizeInputElement = mode === 'combobox' && getInputElement && getInputElement() || null; // ============================== Open ==============================\n\n    var _useMergedState3 = useMergedState(undefined, {\n      defaultValue: defaultOpen,\n      value: open\n    }),\n        _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n        innerOpen = _useMergedState4[0],\n        setInnerOpen = _useMergedState4[1];\n\n    var mergedOpen = innerOpen; // Not trigger `open` in `combobox` when `notFoundContent` is empty\n\n    var emptyListContent = !notFoundContent && !displayOptions.length;\n\n    if (disabled || emptyListContent && mergedOpen && mode === 'combobox') {\n      mergedOpen = false;\n    }\n\n    var triggerOpen = emptyListContent ? false : mergedOpen;\n\n    var onToggleOpen = function onToggleOpen(newOpen) {\n      var nextOpen = newOpen !== undefined ? newOpen : !mergedOpen;\n\n      if (innerOpen !== nextOpen && !disabled) {\n        setInnerOpen(nextOpen);\n\n        if (onDropdownVisibleChange) {\n          onDropdownVisibleChange(nextOpen);\n        }\n      }\n    };\n\n    useSelectTriggerControl([containerRef.current, triggerRef.current && triggerRef.current.getPopupElement()], triggerOpen, onToggleOpen); // ============================= Search =============================\n\n    var triggerSearch = function triggerSearch(searchText, fromTyping, isCompositing) {\n      var ret = true;\n      var newSearchText = searchText;\n      setActiveValue(null); // Check if match the `tokenSeparators`\n\n      var patchLabels = isCompositing ? null : getSeparatedContent(searchText, tokenSeparators);\n      var patchRawValues = patchLabels;\n\n      if (mode === 'combobox') {\n        // Only typing will trigger onChange\n        if (fromTyping) {\n          triggerChange([newSearchText]);\n        }\n      } else if (patchLabels) {\n        newSearchText = '';\n\n        if (mode !== 'tags') {\n          patchRawValues = patchLabels.map(function (label) {\n            var item = mergedFlattenOptions.find(function (_ref2) {\n              var data = _ref2.data;\n              return data[mergedOptionLabelProp] === label;\n            });\n            return item ? item.data.value : null;\n          }).filter(function (val) {\n            return val !== null;\n          });\n        }\n\n        var newRawValues = Array.from(new Set([].concat(_toConsumableArray(mergedRawValue), _toConsumableArray(patchRawValues))));\n        triggerChange(newRawValues);\n        newRawValues.forEach(function (newRawValue) {\n          triggerSelect(newRawValue, true, 'input');\n        }); // Should close when paste finish\n\n        onToggleOpen(false); // Tell Selector that break next actions\n\n        ret = false;\n      }\n\n      setInnerSearchValue(newSearchText);\n\n      if (onSearch && mergedSearchValue !== newSearchText) {\n        onSearch(newSearchText);\n      }\n\n      return ret;\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\n\n    var onSearchSubmit = function onSearchSubmit(searchText) {\n      var newRawValues = Array.from(new Set([].concat(_toConsumableArray(mergedRawValue), [searchText])));\n      triggerChange(newRawValues);\n      newRawValues.forEach(function (newRawValue) {\n        triggerSelect(newRawValue, true, 'input');\n      });\n      setInnerSearchValue('');\n    }; // Close dropdown when disabled change\n\n\n    useEffect(function () {\n      if (innerOpen && !!disabled) {\n        setInnerOpen(false);\n      }\n    }, [disabled]); // Close will clean up single mode search text\n\n    useEffect(function () {\n      if (!mergedOpen && !isMultiple && mode !== 'combobox') {\n        triggerSearch('', false, false);\n      }\n    }, [mergedOpen]); // ============================ Keyboard ============================\n\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\n    var _useLock = useLock(),\n        _useLock2 = _slicedToArray(_useLock, 2),\n        getClearLock = _useLock2[0],\n        setClearLock = _useLock2[1]; // KeyDown\n\n\n    var onInternalKeyDown = function onInternalKeyDown(event) {\n      var clearLock = getClearLock();\n      var which = event.which; // We only manage open state here, close logic should handle by list component\n\n      if (!mergedOpen && which === KeyCode.ENTER) {\n        onToggleOpen(true);\n      }\n\n      setClearLock(!!mergedSearchValue); // Remove value by `backspace`\n\n      if (which === KeyCode.BACKSPACE && !clearLock && isMultiple && !mergedSearchValue && mergedRawValue.length) {\n        var removeInfo = removeLastEnabledValue(displayValues, mergedRawValue);\n\n        if (removeInfo.removedValue !== null) {\n          triggerChange(removeInfo.values);\n          triggerSelect(removeInfo.removedValue, false, 'input');\n        }\n      }\n\n      for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        rest[_key - 1] = arguments[_key];\n      }\n\n      if (mergedOpen && listRef.current) {\n        var _listRef$current;\n\n        (_listRef$current = listRef.current).onKeyDown.apply(_listRef$current, [event].concat(rest));\n      }\n\n      if (onKeyDown) {\n        onKeyDown.apply(void 0, [event].concat(rest));\n      }\n    }; // KeyUp\n\n\n    var onInternalKeyUp = function onInternalKeyUp(event) {\n      for (var _len2 = arguments.length, rest = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        rest[_key2 - 1] = arguments[_key2];\n      }\n\n      if (mergedOpen && listRef.current) {\n        var _listRef$current2;\n\n        (_listRef$current2 = listRef.current).onKeyUp.apply(_listRef$current2, [event].concat(rest));\n      }\n\n      if (onKeyUp) {\n        onKeyUp.apply(void 0, [event].concat(rest));\n      }\n    }; // ========================== Focus / Blur ==========================\n\n    /** Record real focus status */\n\n\n    var focusRef = useRef(false);\n\n    var onContainerFocus = function onContainerFocus() {\n      setMockFocused(true);\n\n      if (!disabled) {\n        if (onFocus && !focusRef.current) {\n          onFocus.apply(void 0, arguments);\n        } // `showAction` should handle `focus` if set\n\n\n        if (showAction.includes('focus')) {\n          onToggleOpen(true);\n        }\n      }\n\n      focusRef.current = true;\n    };\n\n    var onContainerBlur = function onContainerBlur() {\n      setMockFocused(false, function () {\n        focusRef.current = false;\n        onToggleOpen(false);\n      });\n\n      if (disabled) {\n        return;\n      }\n\n      if (mergedSearchValue) {\n        // `tags` mode should move `searchValue` into values\n        if (mode === 'tags') {\n          triggerSearch('', false, false);\n          triggerChange(Array.from(new Set([].concat(_toConsumableArray(mergedRawValue), [mergedSearchValue]))));\n        } else if (mode === 'multiple') {\n          // `multiple` mode only clean the search value but not trigger event\n          setInnerSearchValue('');\n        }\n      }\n\n      if (onBlur) {\n        onBlur.apply(void 0, arguments);\n      }\n    };\n\n    var activeTimeoutIds = [];\n    useEffect(function () {\n      return function () {\n        activeTimeoutIds.forEach(function (timeoutId) {\n          return clearTimeout(timeoutId);\n        });\n        activeTimeoutIds.splice(0, activeTimeoutIds.length);\n      };\n    }, []);\n\n    var onInternalMouseDown = function onInternalMouseDown(event) {\n      var target = event.target;\n      var popupElement = triggerRef.current && triggerRef.current.getPopupElement(); // We should give focus back to selector if clicked item is not focusable\n\n      if (popupElement && popupElement.contains(target)) {\n        var timeoutId = setTimeout(function () {\n          var index = activeTimeoutIds.indexOf(timeoutId);\n\n          if (index !== -1) {\n            activeTimeoutIds.splice(index, 1);\n          }\n\n          cancelSetMockFocused();\n\n          if (!popupElement.contains(document.activeElement)) {\n            selectorRef.current.focus();\n          }\n        });\n        activeTimeoutIds.push(timeoutId);\n      }\n\n      if (onMouseDown) {\n        for (var _len3 = arguments.length, restArgs = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n          restArgs[_key3 - 1] = arguments[_key3];\n        }\n\n        onMouseDown.apply(void 0, [event].concat(restArgs));\n      }\n    }; // ========================= Accessibility ==========================\n\n\n    var _useState9 = useState(0),\n        _useState10 = _slicedToArray(_useState9, 2),\n        accessibilityIndex = _useState10[0],\n        setAccessibilityIndex = _useState10[1];\n\n    var mergedDefaultActiveFirstOption = defaultActiveFirstOption !== undefined ? defaultActiveFirstOption : mode !== 'combobox';\n\n    var onActiveValue = function onActiveValue(active, index) {\n      var _ref3 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n          _ref3$source = _ref3.source,\n          source = _ref3$source === void 0 ? 'keyboard' : _ref3$source;\n\n      setAccessibilityIndex(index);\n\n      if (backfill && mode === 'combobox' && active !== null && source === 'keyboard') {\n        setActiveValue(String(active));\n      }\n    }; // ============================= Popup ==============================\n\n\n    var _useState11 = useState(null),\n        _useState12 = _slicedToArray(_useState11, 2),\n        containerWidth = _useState12[0],\n        setContainerWidth = _useState12[1];\n\n    var _useState13 = useState({}),\n        _useState14 = _slicedToArray(_useState13, 2),\n        forceUpdate = _useState14[1]; // We need force update here since popup dom is render async\n\n\n    function onPopupMouseEnter() {\n      forceUpdate({});\n    }\n\n    useLayoutEffect(function () {\n      if (triggerOpen) {\n        var newWidth = Math.ceil(containerRef.current.offsetWidth);\n\n        if (containerWidth !== newWidth) {\n          setContainerWidth(newWidth);\n        }\n      }\n    }, [triggerOpen]);\n    var popupNode = React.createElement(OptionList, {\n      ref: listRef,\n      prefixCls: prefixCls,\n      id: mergedId,\n      open: mergedOpen,\n      childrenAsData: !options,\n      options: displayOptions,\n      flattenOptions: displayFlattenOptions,\n      multiple: isMultiple,\n      values: rawValues,\n      height: listHeight,\n      itemHeight: listItemHeight,\n      onSelect: onInternalOptionSelect,\n      onToggleOpen: onToggleOpen,\n      onActiveValue: onActiveValue,\n      defaultActiveFirstOption: mergedDefaultActiveFirstOption,\n      notFoundContent: notFoundContent,\n      onScroll: onPopupScroll,\n      searchValue: mergedSearchValue,\n      menuItemSelectedIcon: menuItemSelectedIcon,\n      virtual: virtual !== false && dropdownMatchSelectWidth !== false,\n      onMouseEnter: onPopupMouseEnter\n    }); // ============================= Clear ==============================\n\n    var clearNode;\n\n    var onClearMouseDown = function onClearMouseDown() {\n      // Trigger internal `onClear` event\n      if (useInternalProps && internalProps.onClear) {\n        internalProps.onClear();\n      }\n\n      if (onClear) {\n        onClear();\n      }\n\n      triggerChange([]);\n      triggerSearch('', false, false);\n    };\n\n    if (!disabled && allowClear && (mergedRawValue.length || mergedSearchValue)) {\n      clearNode = React.createElement(TransBtn, {\n        className: \"\".concat(prefixCls, \"-clear\"),\n        onMouseDown: onClearMouseDown,\n        customizeIcon: clearIcon\n      }, \"\\xD7\");\n    } // ============================= Arrow ==============================\n\n\n    var mergedShowArrow = showArrow !== undefined ? showArrow : loading || !isMultiple && mode !== 'combobox';\n    var arrowNode;\n\n    if (mergedShowArrow) {\n      arrowNode = React.createElement(TransBtn, {\n        className: classNames(\"\".concat(prefixCls, \"-arrow\"), _defineProperty({}, \"\".concat(prefixCls, \"-arrow-loading\"), loading)),\n        customizeIcon: inputIcon,\n        customizeIconProps: {\n          loading: loading,\n          searchValue: mergedSearchValue,\n          open: mergedOpen,\n          focused: mockFocused,\n          showSearch: mergedShowSearch\n        }\n      });\n    } // ============================ Warning =============================\n\n\n    if (process.env.NODE_ENV !== 'production' && warningProps) {\n      warningProps(props);\n    } // ============================= Render =============================\n\n\n    var mergedClassName = classNames(prefixCls, className, (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-focused\"), mockFocused), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-multiple\"), isMultiple), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-single\"), !isMultiple), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-allow-clear\"), allowClear), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-show-arrow\"), mergedShowArrow), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-disabled\"), disabled), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-loading\"), loading), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-open\"), mergedOpen), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-customize-input\"), customizeInputElement), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-show-search\"), mergedShowSearch), _classNames2));\n    return React.createElement(\"div\", Object.assign({\n      className: mergedClassName\n    }, domProps, {\n      ref: containerRef,\n      onMouseDown: onInternalMouseDown,\n      onKeyDown: onInternalKeyDown,\n      onKeyUp: onInternalKeyUp,\n      onFocus: onContainerFocus,\n      onBlur: onContainerBlur\n    }), mockFocused && !mergedOpen && React.createElement(\"span\", {\n      style: {\n        width: 0,\n        height: 0,\n        display: 'flex',\n        overflow: 'hidden',\n        opacity: 0\n      },\n      \"aria-live\": \"polite\"\n    }, \"\".concat(mergedRawValue.join(', '))), React.createElement(SelectTrigger, {\n      ref: triggerRef,\n      disabled: disabled,\n      prefixCls: prefixCls,\n      visible: triggerOpen,\n      popupElement: popupNode,\n      containerWidth: containerWidth,\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      getPopupContainer: getPopupContainer,\n      empty: !mergedOptions.length,\n      getTriggerDOMNode: function getTriggerDOMNode() {\n        return selectorDomRef.current;\n      }\n    }, React.createElement(Selector, Object.assign({}, props, {\n      domRef: selectorDomRef,\n      prefixCls: prefixCls,\n      inputElement: customizeInputElement,\n      ref: selectorRef,\n      id: mergedId,\n      showSearch: mergedShowSearch,\n      mode: mode,\n      accessibilityIndex: accessibilityIndex,\n      multiple: isMultiple,\n      tagRender: tagRender,\n      values: displayValues,\n      open: mergedOpen,\n      onToggleOpen: onToggleOpen,\n      searchValue: mergedSearchValue,\n      activeValue: activeValue,\n      onSearch: triggerSearch,\n      onSearchSubmit: onSearchSubmit,\n      onSelect: onInternalSelectionSelect,\n      tokenWithEnter: tokenWithEnter\n    }))), arrowNode, clearNode);\n  }\n\n  var RefSelect = React.forwardRef(Select);\n  return RefSelect;\n}","map":{"version":3,"sources":["C:/Users/kkwan_000/Desktop/git/2017110269/minsung/node_modules/rc-select/es/generate.js"],"names":["_defineProperty","_objectSpread","_toConsumableArray","_slicedToArray","_objectWithoutProperties","React","useState","useRef","useEffect","useMemo","KeyCode","classNames","useMergedState","Selector","SelectTrigger","INTERNAL_PROPS_MARK","toInnerValue","toOuterValues","removeLastEnabledValue","getUUID","TransBtn","useLock","useDelayReset","useLayoutEffect","getSeparatedContent","useSelectTriggerControl","useCacheDisplayValue","useCacheOptions","DEFAULT_OMIT_PROPS","generateSelector","config","defaultPrefixCls","prefixCls","OptionList","components","optionList","convertChildrenToData","flattenOptions","getLabeledValue","filterOptions","isValueDisabled","findValueOption","warningProps","fillOptionsWithMissingValue","omitDOMProps","Select","props","ref","_classNames2","_props$prefixCls","className","id","open","defaultOpen","options","children","mode","value","defaultValue","labelInValue","showSearch","inputValue","searchValue","filterOption","filterSort","_props$optionFilterPr","optionFilterProp","_props$autoClearSearc","autoClearSearchValue","onSearch","allowClear","clearIcon","showArrow","inputIcon","menuItemSelectedIcon","disabled","loading","defaultActiveFirstOption","_props$notFoundConten","notFoundContent","optionLabelProp","backfill","getInputElement","getPopupContainer","_props$listHeight","listHeight","_props$listItemHeight","listItemHeight","animation","transitionName","virtual","dropdownStyle","dropdownClassName","dropdownMatchSelectWidth","dropdownRender","dropdownAlign","_props$showAction","showAction","direction","tokenSeparators","tagRender","onPopupScroll","onDropdownVisibleChange","onFocus","onBlur","onKeyUp","onKeyDown","onMouseDown","onChange","onSelect","onDeselect","onClear","_props$internalProps","internalProps","restProps","useInternalProps","mark","domProps","forEach","prop","containerRef","triggerRef","selectorRef","listRef","tokenWithEnter","some","tokenSeparator","includes","_useDelayReset","_useDelayReset2","mockFocused","setMockFocused","cancelSetMockFocused","_useState","_useState2","innerId","setInnerId","concat","mergedId","mergedOptionLabelProp","undefined","mergedLabelInValue","isMultiple","mergedShowSearch","selectorDomRef","useImperativeHandle","focus","current","blur","_useMergedState","_useMergedState2","mergedValue","setMergedValue","mergedRawValue","combobox","rawValues","Set","_useState3","_useState4","activeValue","setActiveValue","_useState5","_useState6","innerSearchValue","setInnerSearchValue","mergedSearchValue","mergedOptions","newOptions","mergedFlattenOptions","getValueOption","displayOptions","filteredOptions","every","opt","unshift","label","key","Array","isArray","sort","displayFlattenOptions","scrollTo","displayValues","tmpValues","map","val","valueOptions","displayValue","prevValue","length","triggerSelect","newValue","isSelect","source","newValueOption","outOption","skipTriggerSelect","selectValue","onRawSelect","onRawDeselect","_useState7","_useState8","prevValueOptions","setPrevValueOptions","triggerChange","newRawValues","skipTriggerChange","newRawValuesOptions","outValues","from","outValue","outOptions","option","index","clone","Object","defineProperty","get","onInternalSelect","_ref","selected","newRawValue","add","delete","String","onInternalOptionSelect","info","onInternalSelectionSelect","customizeInputElement","_useMergedState3","_useMergedState4","innerOpen","setInnerOpen","mergedOpen","emptyListContent","triggerOpen","onToggleOpen","newOpen","nextOpen","getPopupElement","triggerSearch","searchText","fromTyping","isCompositing","ret","newSearchText","patchLabels","patchRawValues","item","find","_ref2","data","filter","onSearchSubmit","_useLock","_useLock2","getClearLock","setClearLock","onInternalKeyDown","event","clearLock","which","ENTER","BACKSPACE","removeInfo","removedValue","values","_len","arguments","rest","_key","_listRef$current","apply","onInternalKeyUp","_len2","_key2","_listRef$current2","focusRef","onContainerFocus","onContainerBlur","activeTimeoutIds","timeoutId","clearTimeout","splice","onInternalMouseDown","target","popupElement","contains","setTimeout","indexOf","document","activeElement","push","_len3","restArgs","_key3","_useState9","_useState10","accessibilityIndex","setAccessibilityIndex","mergedDefaultActiveFirstOption","onActiveValue","active","_ref3","_ref3$source","_useState11","_useState12","containerWidth","setContainerWidth","_useState13","_useState14","forceUpdate","onPopupMouseEnter","newWidth","Math","ceil","offsetWidth","popupNode","createElement","childrenAsData","multiple","height","itemHeight","onScroll","onMouseEnter","clearNode","onClearMouseDown","customizeIcon","mergedShowArrow","arrowNode","customizeIconProps","focused","process","env","NODE_ENV","mergedClassName","assign","style","width","display","overflow","opacity","join","visible","empty","getTriggerDOMNode","domRef","inputElement","RefSelect","forwardRef"],"mappings":"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","sourcesContent":["import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\n\n/**\n * To match accessibility requirement, we always provide an input in the component.\n * Other element will not set `tabIndex` to avoid `onBlur` sequence problem.\n * For focused select, we set `aria-live=\"polite\"` to update the accessibility content.\n *\n * ref:\n * - keyboard: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/listbox_role#Keyboard_interactions\n */\nimport * as React from 'react';\nimport { useState, useRef, useEffect, useMemo } from 'react';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport classNames from 'classnames';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport Selector from './Selector';\nimport SelectTrigger from './SelectTrigger';\nimport { INTERNAL_PROPS_MARK } from './interface/generator';\nimport { toInnerValue, toOuterValues, removeLastEnabledValue, getUUID } from './utils/commonUtil';\nimport TransBtn from './TransBtn';\nimport useLock from './hooks/useLock';\nimport useDelayReset from './hooks/useDelayReset';\nimport useLayoutEffect from './hooks/useLayoutEffect';\nimport { getSeparatedContent } from './utils/valueUtil';\nimport useSelectTriggerControl from './hooks/useSelectTriggerControl';\nimport useCacheDisplayValue from './hooks/useCacheDisplayValue';\nimport useCacheOptions from './hooks/useCacheOptions';\nvar DEFAULT_OMIT_PROPS = ['removeIcon', 'placeholder', 'autoFocus', 'maxTagCount', 'maxTagTextLength', 'maxTagPlaceholder', 'choiceTransitionName', 'onInputKeyDown'];\n/**\n * This function is in internal usage.\n * Do not use it in your prod env since we may refactor this.\n */\n\nexport default function generateSelector(config) {\n  var defaultPrefixCls = config.prefixCls,\n      OptionList = config.components.optionList,\n      convertChildrenToData = config.convertChildrenToData,\n      flattenOptions = config.flattenOptions,\n      getLabeledValue = config.getLabeledValue,\n      filterOptions = config.filterOptions,\n      isValueDisabled = config.isValueDisabled,\n      findValueOption = config.findValueOption,\n      warningProps = config.warningProps,\n      fillOptionsWithMissingValue = config.fillOptionsWithMissingValue,\n      omitDOMProps = config.omitDOMProps; // Use raw define since `React.FC` not support generic\n\n  function Select(props, ref) {\n    var _classNames2;\n\n    var _props$prefixCls = props.prefixCls,\n        prefixCls = _props$prefixCls === void 0 ? defaultPrefixCls : _props$prefixCls,\n        className = props.className,\n        id = props.id,\n        open = props.open,\n        defaultOpen = props.defaultOpen,\n        options = props.options,\n        children = props.children,\n        mode = props.mode,\n        value = props.value,\n        defaultValue = props.defaultValue,\n        labelInValue = props.labelInValue,\n        showSearch = props.showSearch,\n        inputValue = props.inputValue,\n        searchValue = props.searchValue,\n        filterOption = props.filterOption,\n        filterSort = props.filterSort,\n        _props$optionFilterPr = props.optionFilterProp,\n        optionFilterProp = _props$optionFilterPr === void 0 ? 'value' : _props$optionFilterPr,\n        _props$autoClearSearc = props.autoClearSearchValue,\n        autoClearSearchValue = _props$autoClearSearc === void 0 ? true : _props$autoClearSearc,\n        onSearch = props.onSearch,\n        allowClear = props.allowClear,\n        clearIcon = props.clearIcon,\n        showArrow = props.showArrow,\n        inputIcon = props.inputIcon,\n        menuItemSelectedIcon = props.menuItemSelectedIcon,\n        disabled = props.disabled,\n        loading = props.loading,\n        defaultActiveFirstOption = props.defaultActiveFirstOption,\n        _props$notFoundConten = props.notFoundContent,\n        notFoundContent = _props$notFoundConten === void 0 ? 'Not Found' : _props$notFoundConten,\n        optionLabelProp = props.optionLabelProp,\n        backfill = props.backfill,\n        getInputElement = props.getInputElement,\n        getPopupContainer = props.getPopupContainer,\n        _props$listHeight = props.listHeight,\n        listHeight = _props$listHeight === void 0 ? 200 : _props$listHeight,\n        _props$listItemHeight = props.listItemHeight,\n        listItemHeight = _props$listItemHeight === void 0 ? 20 : _props$listItemHeight,\n        animation = props.animation,\n        transitionName = props.transitionName,\n        virtual = props.virtual,\n        dropdownStyle = props.dropdownStyle,\n        dropdownClassName = props.dropdownClassName,\n        dropdownMatchSelectWidth = props.dropdownMatchSelectWidth,\n        dropdownRender = props.dropdownRender,\n        dropdownAlign = props.dropdownAlign,\n        _props$showAction = props.showAction,\n        showAction = _props$showAction === void 0 ? [] : _props$showAction,\n        direction = props.direction,\n        tokenSeparators = props.tokenSeparators,\n        tagRender = props.tagRender,\n        onPopupScroll = props.onPopupScroll,\n        onDropdownVisibleChange = props.onDropdownVisibleChange,\n        onFocus = props.onFocus,\n        onBlur = props.onBlur,\n        onKeyUp = props.onKeyUp,\n        onKeyDown = props.onKeyDown,\n        onMouseDown = props.onMouseDown,\n        onChange = props.onChange,\n        onSelect = props.onSelect,\n        onDeselect = props.onDeselect,\n        onClear = props.onClear,\n        _props$internalProps = props.internalProps,\n        internalProps = _props$internalProps === void 0 ? {} : _props$internalProps,\n        restProps = _objectWithoutProperties(props, [\"prefixCls\", \"className\", \"id\", \"open\", \"defaultOpen\", \"options\", \"children\", \"mode\", \"value\", \"defaultValue\", \"labelInValue\", \"showSearch\", \"inputValue\", \"searchValue\", \"filterOption\", \"filterSort\", \"optionFilterProp\", \"autoClearSearchValue\", \"onSearch\", \"allowClear\", \"clearIcon\", \"showArrow\", \"inputIcon\", \"menuItemSelectedIcon\", \"disabled\", \"loading\", \"defaultActiveFirstOption\", \"notFoundContent\", \"optionLabelProp\", \"backfill\", \"getInputElement\", \"getPopupContainer\", \"listHeight\", \"listItemHeight\", \"animation\", \"transitionName\", \"virtual\", \"dropdownStyle\", \"dropdownClassName\", \"dropdownMatchSelectWidth\", \"dropdownRender\", \"dropdownAlign\", \"showAction\", \"direction\", \"tokenSeparators\", \"tagRender\", \"onPopupScroll\", \"onDropdownVisibleChange\", \"onFocus\", \"onBlur\", \"onKeyUp\", \"onKeyDown\", \"onMouseDown\", \"onChange\", \"onSelect\", \"onDeselect\", \"onClear\", \"internalProps\"]);\n\n    var useInternalProps = internalProps.mark === INTERNAL_PROPS_MARK;\n    var domProps = omitDOMProps ? omitDOMProps(restProps) : restProps;\n    DEFAULT_OMIT_PROPS.forEach(function (prop) {\n      delete domProps[prop];\n    });\n    var containerRef = useRef(null);\n    var triggerRef = useRef(null);\n    var selectorRef = useRef(null);\n    var listRef = useRef(null);\n    var tokenWithEnter = useMemo(function () {\n      return (tokenSeparators || []).some(function (tokenSeparator) {\n        return ['\\n', '\\r\\n'].includes(tokenSeparator);\n      });\n    }, [tokenSeparators]);\n    /** Used for component focused management */\n\n    var _useDelayReset = useDelayReset(),\n        _useDelayReset2 = _slicedToArray(_useDelayReset, 3),\n        mockFocused = _useDelayReset2[0],\n        setMockFocused = _useDelayReset2[1],\n        cancelSetMockFocused = _useDelayReset2[2]; // Inner id for accessibility usage. Only work in client side\n\n\n    var _useState = useState(),\n        _useState2 = _slicedToArray(_useState, 2),\n        innerId = _useState2[0],\n        setInnerId = _useState2[1];\n\n    useEffect(function () {\n      setInnerId(\"rc_select_\".concat(getUUID()));\n    }, []);\n    var mergedId = id || innerId; // optionLabelProp\n\n    var mergedOptionLabelProp = optionLabelProp;\n\n    if (mergedOptionLabelProp === undefined) {\n      mergedOptionLabelProp = options ? 'label' : 'children';\n    } // labelInValue\n\n\n    var mergedLabelInValue = mode === 'combobox' ? false : labelInValue;\n    var isMultiple = mode === 'tags' || mode === 'multiple';\n    var mergedShowSearch = showSearch !== undefined ? showSearch : isMultiple || mode === 'combobox'; // ============================== Ref ===============================\n\n    var selectorDomRef = useRef(null);\n    React.useImperativeHandle(ref, function () {\n      return {\n        focus: selectorRef.current.focus,\n        blur: selectorRef.current.blur\n      };\n    }); // ============================= Value ==============================\n\n    var _useMergedState = useMergedState(defaultValue, {\n      value: value\n    }),\n        _useMergedState2 = _slicedToArray(_useMergedState, 2),\n        mergedValue = _useMergedState2[0],\n        setMergedValue = _useMergedState2[1];\n    /** Unique raw values */\n\n\n    var mergedRawValue = useMemo(function () {\n      return toInnerValue(mergedValue, {\n        labelInValue: mergedLabelInValue,\n        combobox: mode === 'combobox'\n      });\n    }, [mergedValue, mergedLabelInValue]);\n    /** We cache a set of raw values to speed up check */\n\n    var rawValues = useMemo(function () {\n      return new Set(mergedRawValue);\n    }, [mergedRawValue]); // ============================= Option =============================\n    // Set by option list active, it will merge into search input when mode is `combobox`\n\n    var _useState3 = useState(null),\n        _useState4 = _slicedToArray(_useState3, 2),\n        activeValue = _useState4[0],\n        setActiveValue = _useState4[1];\n\n    var _useState5 = useState(''),\n        _useState6 = _slicedToArray(_useState5, 2),\n        innerSearchValue = _useState6[0],\n        setInnerSearchValue = _useState6[1];\n\n    var mergedSearchValue = innerSearchValue;\n\n    if (mode === 'combobox' && mergedValue !== undefined) {\n      mergedSearchValue = mergedValue;\n    } else if (searchValue !== undefined) {\n      mergedSearchValue = searchValue;\n    } else if (inputValue) {\n      mergedSearchValue = inputValue;\n    }\n\n    var mergedOptions = useMemo(function () {\n      var newOptions = options;\n\n      if (newOptions === undefined) {\n        newOptions = convertChildrenToData(children);\n      }\n      /**\n       * `tags` should fill un-list item.\n       * This is not cool here since TreeSelect do not need this\n       */\n\n\n      if (mode === 'tags' && fillOptionsWithMissingValue) {\n        newOptions = fillOptionsWithMissingValue(newOptions, mergedValue, mergedOptionLabelProp, labelInValue);\n      }\n\n      return newOptions || [];\n    }, [options, children, mode, mergedValue]);\n    var mergedFlattenOptions = useMemo(function () {\n      return flattenOptions(mergedOptions, props);\n    }, [mergedOptions]);\n    var getValueOption = useCacheOptions(mergedRawValue, mergedFlattenOptions); // Display options for OptionList\n\n    var displayOptions = useMemo(function () {\n      if (!mergedSearchValue || !mergedShowSearch) {\n        return _toConsumableArray(mergedOptions);\n      }\n\n      var filteredOptions = filterOptions(mergedSearchValue, mergedOptions, {\n        optionFilterProp: optionFilterProp,\n        filterOption: mode === 'combobox' && filterOption === undefined ? function () {\n          return true;\n        } : filterOption\n      });\n\n      if (mode === 'tags' && filteredOptions.every(function (opt) {\n        return opt[optionFilterProp] !== mergedSearchValue;\n      })) {\n        filteredOptions.unshift({\n          value: mergedSearchValue,\n          label: mergedSearchValue,\n          key: '__RC_SELECT_TAG_PLACEHOLDER__'\n        });\n      }\n\n      if (filterSort && Array.isArray(filteredOptions)) {\n        return _toConsumableArray(filteredOptions).sort(filterSort);\n      }\n\n      return filteredOptions;\n    }, [mergedOptions, mergedSearchValue, mode, mergedShowSearch, filterSort]);\n    var displayFlattenOptions = useMemo(function () {\n      return flattenOptions(displayOptions, props);\n    }, [displayOptions]);\n    useEffect(function () {\n      if (listRef.current && listRef.current.scrollTo) {\n        listRef.current.scrollTo(0);\n      }\n    }, [mergedSearchValue]); // ============================ Selector ============================\n\n    var displayValues = useMemo(function () {\n      var tmpValues = mergedRawValue.map(function (val) {\n        var valueOptions = getValueOption([val]);\n        var displayValue = getLabeledValue(val, {\n          options: valueOptions,\n          prevValue: mergedValue,\n          labelInValue: mergedLabelInValue,\n          optionLabelProp: mergedOptionLabelProp\n        });\n        return _objectSpread(_objectSpread({}, displayValue), {}, {\n          disabled: isValueDisabled(val, valueOptions)\n        });\n      });\n\n      if (!mode && tmpValues.length === 1 && tmpValues[0].value === null && tmpValues[0].label === null) {\n        return [];\n      }\n\n      return tmpValues;\n    }, [mergedValue, mergedOptions, mode]); // Polyfill with cache label\n\n    displayValues = useCacheDisplayValue(displayValues);\n\n    var triggerSelect = function triggerSelect(newValue, isSelect, source) {\n      var newValueOption = getValueOption([newValue]);\n      var outOption = findValueOption([newValue], newValueOption)[0];\n\n      if (!internalProps.skipTriggerSelect) {\n        // Skip trigger `onSelect` or `onDeselect` if configured\n        var selectValue = mergedLabelInValue ? getLabeledValue(newValue, {\n          options: newValueOption,\n          prevValue: mergedValue,\n          labelInValue: mergedLabelInValue,\n          optionLabelProp: mergedOptionLabelProp\n        }) : newValue;\n\n        if (isSelect && onSelect) {\n          onSelect(selectValue, outOption);\n        } else if (!isSelect && onDeselect) {\n          onDeselect(selectValue, outOption);\n        }\n      } // Trigger internal event\n\n\n      if (useInternalProps) {\n        if (isSelect && internalProps.onRawSelect) {\n          internalProps.onRawSelect(newValue, outOption, source);\n        } else if (!isSelect && internalProps.onRawDeselect) {\n          internalProps.onRawDeselect(newValue, outOption, source);\n        }\n      }\n    }; // We need cache options here in case user update the option list\n\n\n    var _useState7 = useState([]),\n        _useState8 = _slicedToArray(_useState7, 2),\n        prevValueOptions = _useState8[0],\n        setPrevValueOptions = _useState8[1];\n\n    var triggerChange = function triggerChange(newRawValues) {\n      if (useInternalProps && internalProps.skipTriggerChange) {\n        return;\n      }\n\n      var newRawValuesOptions = getValueOption(newRawValues);\n      var outValues = toOuterValues(Array.from(newRawValues), {\n        labelInValue: mergedLabelInValue,\n        options: newRawValuesOptions,\n        getLabeledValue: getLabeledValue,\n        prevValue: mergedValue,\n        optionLabelProp: mergedOptionLabelProp\n      });\n      var outValue = isMultiple ? outValues : outValues[0]; // Skip trigger if prev & current value is both empty\n\n      if (onChange && (mergedRawValue.length !== 0 || outValues.length !== 0)) {\n        var outOptions = findValueOption(newRawValues, newRawValuesOptions, {\n          prevValueOptions: prevValueOptions\n        }); // We will cache option in case it removed by ajax\n\n        setPrevValueOptions(outOptions.map(function (option, index) {\n          var clone = _objectSpread({}, option);\n\n          Object.defineProperty(clone, '_INTERNAL_OPTION_VALUE_', {\n            get: function get() {\n              return newRawValues[index];\n            }\n          });\n          return clone;\n        }));\n        onChange(outValue, isMultiple ? outOptions : outOptions[0]);\n      }\n\n      setMergedValue(outValue);\n    };\n\n    var onInternalSelect = function onInternalSelect(newValue, _ref) {\n      var selected = _ref.selected,\n          source = _ref.source;\n\n      if (disabled) {\n        return;\n      }\n\n      var newRawValue;\n\n      if (isMultiple) {\n        newRawValue = new Set(mergedRawValue);\n\n        if (selected) {\n          newRawValue.add(newValue);\n        } else {\n          newRawValue.delete(newValue);\n        }\n      } else {\n        newRawValue = new Set();\n        newRawValue.add(newValue);\n      } // Multiple always trigger change and single should change if value changed\n\n\n      if (isMultiple || !isMultiple && Array.from(mergedRawValue)[0] !== newValue) {\n        triggerChange(Array.from(newRawValue));\n      } // Trigger `onSelect`. Single mode always trigger select\n\n\n      triggerSelect(newValue, !isMultiple || selected, source); // Clean search value if single or configured\n\n      if (mode === 'combobox') {\n        setInnerSearchValue(String(newValue));\n        setActiveValue('');\n      } else if (!isMultiple || autoClearSearchValue) {\n        setInnerSearchValue('');\n        setActiveValue('');\n      }\n    };\n\n    var onInternalOptionSelect = function onInternalOptionSelect(newValue, info) {\n      onInternalSelect(newValue, _objectSpread(_objectSpread({}, info), {}, {\n        source: 'option'\n      }));\n    };\n\n    var onInternalSelectionSelect = function onInternalSelectionSelect(newValue, info) {\n      onInternalSelect(newValue, _objectSpread(_objectSpread({}, info), {}, {\n        source: 'selection'\n      }));\n    }; // ============================= Input ==============================\n    // Only works in `combobox`\n\n\n    var customizeInputElement = mode === 'combobox' && getInputElement && getInputElement() || null; // ============================== Open ==============================\n\n    var _useMergedState3 = useMergedState(undefined, {\n      defaultValue: defaultOpen,\n      value: open\n    }),\n        _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n        innerOpen = _useMergedState4[0],\n        setInnerOpen = _useMergedState4[1];\n\n    var mergedOpen = innerOpen; // Not trigger `open` in `combobox` when `notFoundContent` is empty\n\n    var emptyListContent = !notFoundContent && !displayOptions.length;\n\n    if (disabled || emptyListContent && mergedOpen && mode === 'combobox') {\n      mergedOpen = false;\n    }\n\n    var triggerOpen = emptyListContent ? false : mergedOpen;\n\n    var onToggleOpen = function onToggleOpen(newOpen) {\n      var nextOpen = newOpen !== undefined ? newOpen : !mergedOpen;\n\n      if (innerOpen !== nextOpen && !disabled) {\n        setInnerOpen(nextOpen);\n\n        if (onDropdownVisibleChange) {\n          onDropdownVisibleChange(nextOpen);\n        }\n      }\n    };\n\n    useSelectTriggerControl([containerRef.current, triggerRef.current && triggerRef.current.getPopupElement()], triggerOpen, onToggleOpen); // ============================= Search =============================\n\n    var triggerSearch = function triggerSearch(searchText, fromTyping, isCompositing) {\n      var ret = true;\n      var newSearchText = searchText;\n      setActiveValue(null); // Check if match the `tokenSeparators`\n\n      var patchLabels = isCompositing ? null : getSeparatedContent(searchText, tokenSeparators);\n      var patchRawValues = patchLabels;\n\n      if (mode === 'combobox') {\n        // Only typing will trigger onChange\n        if (fromTyping) {\n          triggerChange([newSearchText]);\n        }\n      } else if (patchLabels) {\n        newSearchText = '';\n\n        if (mode !== 'tags') {\n          patchRawValues = patchLabels.map(function (label) {\n            var item = mergedFlattenOptions.find(function (_ref2) {\n              var data = _ref2.data;\n              return data[mergedOptionLabelProp] === label;\n            });\n            return item ? item.data.value : null;\n          }).filter(function (val) {\n            return val !== null;\n          });\n        }\n\n        var newRawValues = Array.from(new Set([].concat(_toConsumableArray(mergedRawValue), _toConsumableArray(patchRawValues))));\n        triggerChange(newRawValues);\n        newRawValues.forEach(function (newRawValue) {\n          triggerSelect(newRawValue, true, 'input');\n        }); // Should close when paste finish\n\n        onToggleOpen(false); // Tell Selector that break next actions\n\n        ret = false;\n      }\n\n      setInnerSearchValue(newSearchText);\n\n      if (onSearch && mergedSearchValue !== newSearchText) {\n        onSearch(newSearchText);\n      }\n\n      return ret;\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\n\n    var onSearchSubmit = function onSearchSubmit(searchText) {\n      var newRawValues = Array.from(new Set([].concat(_toConsumableArray(mergedRawValue), [searchText])));\n      triggerChange(newRawValues);\n      newRawValues.forEach(function (newRawValue) {\n        triggerSelect(newRawValue, true, 'input');\n      });\n      setInnerSearchValue('');\n    }; // Close dropdown when disabled change\n\n\n    useEffect(function () {\n      if (innerOpen && !!disabled) {\n        setInnerOpen(false);\n      }\n    }, [disabled]); // Close will clean up single mode search text\n\n    useEffect(function () {\n      if (!mergedOpen && !isMultiple && mode !== 'combobox') {\n        triggerSearch('', false, false);\n      }\n    }, [mergedOpen]); // ============================ Keyboard ============================\n\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\n    var _useLock = useLock(),\n        _useLock2 = _slicedToArray(_useLock, 2),\n        getClearLock = _useLock2[0],\n        setClearLock = _useLock2[1]; // KeyDown\n\n\n    var onInternalKeyDown = function onInternalKeyDown(event) {\n      var clearLock = getClearLock();\n      var which = event.which; // We only manage open state here, close logic should handle by list component\n\n      if (!mergedOpen && which === KeyCode.ENTER) {\n        onToggleOpen(true);\n      }\n\n      setClearLock(!!mergedSearchValue); // Remove value by `backspace`\n\n      if (which === KeyCode.BACKSPACE && !clearLock && isMultiple && !mergedSearchValue && mergedRawValue.length) {\n        var removeInfo = removeLastEnabledValue(displayValues, mergedRawValue);\n\n        if (removeInfo.removedValue !== null) {\n          triggerChange(removeInfo.values);\n          triggerSelect(removeInfo.removedValue, false, 'input');\n        }\n      }\n\n      for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        rest[_key - 1] = arguments[_key];\n      }\n\n      if (mergedOpen && listRef.current) {\n        var _listRef$current;\n\n        (_listRef$current = listRef.current).onKeyDown.apply(_listRef$current, [event].concat(rest));\n      }\n\n      if (onKeyDown) {\n        onKeyDown.apply(void 0, [event].concat(rest));\n      }\n    }; // KeyUp\n\n\n    var onInternalKeyUp = function onInternalKeyUp(event) {\n      for (var _len2 = arguments.length, rest = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        rest[_key2 - 1] = arguments[_key2];\n      }\n\n      if (mergedOpen && listRef.current) {\n        var _listRef$current2;\n\n        (_listRef$current2 = listRef.current).onKeyUp.apply(_listRef$current2, [event].concat(rest));\n      }\n\n      if (onKeyUp) {\n        onKeyUp.apply(void 0, [event].concat(rest));\n      }\n    }; // ========================== Focus / Blur ==========================\n\n    /** Record real focus status */\n\n\n    var focusRef = useRef(false);\n\n    var onContainerFocus = function onContainerFocus() {\n      setMockFocused(true);\n\n      if (!disabled) {\n        if (onFocus && !focusRef.current) {\n          onFocus.apply(void 0, arguments);\n        } // `showAction` should handle `focus` if set\n\n\n        if (showAction.includes('focus')) {\n          onToggleOpen(true);\n        }\n      }\n\n      focusRef.current = true;\n    };\n\n    var onContainerBlur = function onContainerBlur() {\n      setMockFocused(false, function () {\n        focusRef.current = false;\n        onToggleOpen(false);\n      });\n\n      if (disabled) {\n        return;\n      }\n\n      if (mergedSearchValue) {\n        // `tags` mode should move `searchValue` into values\n        if (mode === 'tags') {\n          triggerSearch('', false, false);\n          triggerChange(Array.from(new Set([].concat(_toConsumableArray(mergedRawValue), [mergedSearchValue]))));\n        } else if (mode === 'multiple') {\n          // `multiple` mode only clean the search value but not trigger event\n          setInnerSearchValue('');\n        }\n      }\n\n      if (onBlur) {\n        onBlur.apply(void 0, arguments);\n      }\n    };\n\n    var activeTimeoutIds = [];\n    useEffect(function () {\n      return function () {\n        activeTimeoutIds.forEach(function (timeoutId) {\n          return clearTimeout(timeoutId);\n        });\n        activeTimeoutIds.splice(0, activeTimeoutIds.length);\n      };\n    }, []);\n\n    var onInternalMouseDown = function onInternalMouseDown(event) {\n      var target = event.target;\n      var popupElement = triggerRef.current && triggerRef.current.getPopupElement(); // We should give focus back to selector if clicked item is not focusable\n\n      if (popupElement && popupElement.contains(target)) {\n        var timeoutId = setTimeout(function () {\n          var index = activeTimeoutIds.indexOf(timeoutId);\n\n          if (index !== -1) {\n            activeTimeoutIds.splice(index, 1);\n          }\n\n          cancelSetMockFocused();\n\n          if (!popupElement.contains(document.activeElement)) {\n            selectorRef.current.focus();\n          }\n        });\n        activeTimeoutIds.push(timeoutId);\n      }\n\n      if (onMouseDown) {\n        for (var _len3 = arguments.length, restArgs = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n          restArgs[_key3 - 1] = arguments[_key3];\n        }\n\n        onMouseDown.apply(void 0, [event].concat(restArgs));\n      }\n    }; // ========================= Accessibility ==========================\n\n\n    var _useState9 = useState(0),\n        _useState10 = _slicedToArray(_useState9, 2),\n        accessibilityIndex = _useState10[0],\n        setAccessibilityIndex = _useState10[1];\n\n    var mergedDefaultActiveFirstOption = defaultActiveFirstOption !== undefined ? defaultActiveFirstOption : mode !== 'combobox';\n\n    var onActiveValue = function onActiveValue(active, index) {\n      var _ref3 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n          _ref3$source = _ref3.source,\n          source = _ref3$source === void 0 ? 'keyboard' : _ref3$source;\n\n      setAccessibilityIndex(index);\n\n      if (backfill && mode === 'combobox' && active !== null && source === 'keyboard') {\n        setActiveValue(String(active));\n      }\n    }; // ============================= Popup ==============================\n\n\n    var _useState11 = useState(null),\n        _useState12 = _slicedToArray(_useState11, 2),\n        containerWidth = _useState12[0],\n        setContainerWidth = _useState12[1];\n\n    var _useState13 = useState({}),\n        _useState14 = _slicedToArray(_useState13, 2),\n        forceUpdate = _useState14[1]; // We need force update here since popup dom is render async\n\n\n    function onPopupMouseEnter() {\n      forceUpdate({});\n    }\n\n    useLayoutEffect(function () {\n      if (triggerOpen) {\n        var newWidth = Math.ceil(containerRef.current.offsetWidth);\n\n        if (containerWidth !== newWidth) {\n          setContainerWidth(newWidth);\n        }\n      }\n    }, [triggerOpen]);\n    var popupNode = React.createElement(OptionList, {\n      ref: listRef,\n      prefixCls: prefixCls,\n      id: mergedId,\n      open: mergedOpen,\n      childrenAsData: !options,\n      options: displayOptions,\n      flattenOptions: displayFlattenOptions,\n      multiple: isMultiple,\n      values: rawValues,\n      height: listHeight,\n      itemHeight: listItemHeight,\n      onSelect: onInternalOptionSelect,\n      onToggleOpen: onToggleOpen,\n      onActiveValue: onActiveValue,\n      defaultActiveFirstOption: mergedDefaultActiveFirstOption,\n      notFoundContent: notFoundContent,\n      onScroll: onPopupScroll,\n      searchValue: mergedSearchValue,\n      menuItemSelectedIcon: menuItemSelectedIcon,\n      virtual: virtual !== false && dropdownMatchSelectWidth !== false,\n      onMouseEnter: onPopupMouseEnter\n    }); // ============================= Clear ==============================\n\n    var clearNode;\n\n    var onClearMouseDown = function onClearMouseDown() {\n      // Trigger internal `onClear` event\n      if (useInternalProps && internalProps.onClear) {\n        internalProps.onClear();\n      }\n\n      if (onClear) {\n        onClear();\n      }\n\n      triggerChange([]);\n      triggerSearch('', false, false);\n    };\n\n    if (!disabled && allowClear && (mergedRawValue.length || mergedSearchValue)) {\n      clearNode = React.createElement(TransBtn, {\n        className: \"\".concat(prefixCls, \"-clear\"),\n        onMouseDown: onClearMouseDown,\n        customizeIcon: clearIcon\n      }, \"\\xD7\");\n    } // ============================= Arrow ==============================\n\n\n    var mergedShowArrow = showArrow !== undefined ? showArrow : loading || !isMultiple && mode !== 'combobox';\n    var arrowNode;\n\n    if (mergedShowArrow) {\n      arrowNode = React.createElement(TransBtn, {\n        className: classNames(\"\".concat(prefixCls, \"-arrow\"), _defineProperty({}, \"\".concat(prefixCls, \"-arrow-loading\"), loading)),\n        customizeIcon: inputIcon,\n        customizeIconProps: {\n          loading: loading,\n          searchValue: mergedSearchValue,\n          open: mergedOpen,\n          focused: mockFocused,\n          showSearch: mergedShowSearch\n        }\n      });\n    } // ============================ Warning =============================\n\n\n    if (process.env.NODE_ENV !== 'production' && warningProps) {\n      warningProps(props);\n    } // ============================= Render =============================\n\n\n    var mergedClassName = classNames(prefixCls, className, (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-focused\"), mockFocused), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-multiple\"), isMultiple), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-single\"), !isMultiple), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-allow-clear\"), allowClear), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-show-arrow\"), mergedShowArrow), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-disabled\"), disabled), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-loading\"), loading), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-open\"), mergedOpen), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-customize-input\"), customizeInputElement), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-show-search\"), mergedShowSearch), _classNames2));\n    return React.createElement(\"div\", Object.assign({\n      className: mergedClassName\n    }, domProps, {\n      ref: containerRef,\n      onMouseDown: onInternalMouseDown,\n      onKeyDown: onInternalKeyDown,\n      onKeyUp: onInternalKeyUp,\n      onFocus: onContainerFocus,\n      onBlur: onContainerBlur\n    }), mockFocused && !mergedOpen && React.createElement(\"span\", {\n      style: {\n        width: 0,\n        height: 0,\n        display: 'flex',\n        overflow: 'hidden',\n        opacity: 0\n      },\n      \"aria-live\": \"polite\"\n    }, \"\".concat(mergedRawValue.join(', '))), React.createElement(SelectTrigger, {\n      ref: triggerRef,\n      disabled: disabled,\n      prefixCls: prefixCls,\n      visible: triggerOpen,\n      popupElement: popupNode,\n      containerWidth: containerWidth,\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      getPopupContainer: getPopupContainer,\n      empty: !mergedOptions.length,\n      getTriggerDOMNode: function getTriggerDOMNode() {\n        return selectorDomRef.current;\n      }\n    }, React.createElement(Selector, Object.assign({}, props, {\n      domRef: selectorDomRef,\n      prefixCls: prefixCls,\n      inputElement: customizeInputElement,\n      ref: selectorRef,\n      id: mergedId,\n      showSearch: mergedShowSearch,\n      mode: mode,\n      accessibilityIndex: accessibilityIndex,\n      multiple: isMultiple,\n      tagRender: tagRender,\n      values: displayValues,\n      open: mergedOpen,\n      onToggleOpen: onToggleOpen,\n      searchValue: mergedSearchValue,\n      activeValue: activeValue,\n      onSearch: triggerSearch,\n      onSearchSubmit: onSearchSubmit,\n      onSelect: onInternalSelectionSelect,\n      tokenWithEnter: tokenWithEnter\n    }))), arrowNode, clearNode);\n  }\n\n  var RefSelect = React.forwardRef(Select);\n  return RefSelect;\n}"]},"metadata":{},"sourceType":"module"}