@salutejs/plasma-new-hope 0.340.0-canary.2314.18974837629.0 → 0.340.0-canary.2314.19038910206.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/components/Combobox/ComboboxNew/Combobox.js +20 -4
 - package/cjs/components/Combobox/ComboboxNew/Combobox.js.map +1 -1
 - package/cjs/components/Combobox/ComboboxNew/hooks/useKeyboardNavigation.js +319 -1
 - package/cjs/components/Combobox/ComboboxNew/hooks/useKeyboardNavigation.js.map +1 -1
 - package/cjs/components/Combobox/ComboboxNew/reducers/focusedPathReducer.js +7 -0
 - package/cjs/components/Combobox/ComboboxNew/reducers/focusedPathReducer.js.map +1 -1
 - package/cjs/components/Combobox/ComboboxNew/reducers/treePathReducer.js +14 -2
 - package/cjs/components/Combobox/ComboboxNew/reducers/treePathReducer.js.map +1 -1
 - package/cjs/components/Combobox/ComboboxNew/ui/TreeList/TreeList.js +3 -3
 - package/cjs/components/Combobox/ComboboxNew/ui/TreeList/TreeList.js.map +1 -1
 - package/cjs/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.js +22 -5
 - package/cjs/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.js.map +1 -1
 - package/cjs/components/Select/Select.js +2 -1
 - package/cjs/components/Select/Select.js.map +1 -1
 - package/cjs/components/Select/hooks/useKeyboardNavigation.js +127 -38
 - package/cjs/components/Select/hooks/useKeyboardNavigation.js.map +1 -1
 - package/cjs/components/Select/reducers/focusedPathReducer.js +7 -0
 - package/cjs/components/Select/reducers/focusedPathReducer.js.map +1 -1
 - package/cjs/components/Select/reducers/treePathReducer.js +12 -0
 - package/cjs/components/Select/reducers/treePathReducer.js.map +1 -1
 - package/cjs/components/Select/ui/TreeList/TreeList.js +3 -3
 - package/cjs/components/Select/ui/TreeList/TreeList.js.map +1 -1
 - package/cjs/components/Select/ui/TreeList/ui/Item/Item.js +22 -5
 - package/cjs/components/Select/ui/TreeList/ui/Item/Item.js.map +1 -1
 - package/cjs/index.js +2 -0
 - package/cjs/index.js.map +1 -1
 - package/cjs/utils/index.js.map +1 -1
 - package/cjs/utils/isArraysEqual.js +12 -0
 - package/cjs/utils/isArraysEqual.js.map +1 -0
 - package/emotion/cjs/components/Combobox/ComboboxNew/Combobox.js +16 -3
 - package/emotion/cjs/components/Combobox/ComboboxNew/hooks/useKeyboardNavigation.js +312 -0
 - package/emotion/cjs/components/Combobox/ComboboxNew/reducers/focusedPathReducer.js +7 -0
 - package/emotion/cjs/components/Combobox/ComboboxNew/reducers/treePathReducer.js +14 -2
 - package/emotion/cjs/components/Combobox/ComboboxNew/ui/TreeList/TreeList.js +7 -3
 - package/emotion/cjs/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.js +49 -5
 - package/emotion/cjs/components/Select/Select.js +2 -1
 - package/emotion/cjs/components/Select/hooks/useKeyboardNavigation.js +156 -44
 - package/emotion/cjs/components/Select/reducers/focusedPathReducer.js +7 -0
 - package/emotion/cjs/components/Select/reducers/treePathReducer.js +12 -0
 - package/emotion/cjs/components/Select/ui/TreeList/TreeList.js +7 -3
 - package/emotion/cjs/components/Select/ui/TreeList/ui/Item/Item.js +49 -5
 - package/emotion/cjs/examples/components/Combobox/Combobox.js +15 -0
 - package/emotion/cjs/utils/index.js +4 -0
 - package/emotion/cjs/utils/isArraysEqual.js +15 -0
 - package/emotion/es/components/Combobox/ComboboxNew/Combobox.js +16 -3
 - package/emotion/es/components/Combobox/ComboboxNew/hooks/useKeyboardNavigation.js +313 -0
 - package/emotion/es/components/Combobox/ComboboxNew/reducers/focusedPathReducer.js +7 -0
 - package/emotion/es/components/Combobox/ComboboxNew/reducers/treePathReducer.js +14 -2
 - package/emotion/es/components/Combobox/ComboboxNew/ui/TreeList/TreeList.js +7 -3
 - package/emotion/es/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.js +50 -6
 - package/emotion/es/components/Select/Select.js +2 -1
 - package/emotion/es/components/Select/hooks/useKeyboardNavigation.js +157 -44
 - package/emotion/es/components/Select/reducers/focusedPathReducer.js +7 -0
 - package/emotion/es/components/Select/reducers/treePathReducer.js +12 -0
 - package/emotion/es/components/Select/ui/TreeList/TreeList.js +7 -3
 - package/emotion/es/components/Select/ui/TreeList/ui/Item/Item.js +50 -6
 - package/emotion/es/utils/index.js +1 -0
 - package/emotion/es/utils/isArraysEqual.js +5 -0
 - package/es/components/Combobox/ComboboxNew/Combobox.js +20 -4
 - package/es/components/Combobox/ComboboxNew/Combobox.js.map +1 -1
 - package/es/components/Combobox/ComboboxNew/hooks/useKeyboardNavigation.js +319 -1
 - package/es/components/Combobox/ComboboxNew/hooks/useKeyboardNavigation.js.map +1 -1
 - package/es/components/Combobox/ComboboxNew/reducers/focusedPathReducer.js +7 -0
 - package/es/components/Combobox/ComboboxNew/reducers/focusedPathReducer.js.map +1 -1
 - package/es/components/Combobox/ComboboxNew/reducers/treePathReducer.js +14 -2
 - package/es/components/Combobox/ComboboxNew/reducers/treePathReducer.js.map +1 -1
 - package/es/components/Combobox/ComboboxNew/ui/TreeList/TreeList.js +3 -3
 - package/es/components/Combobox/ComboboxNew/ui/TreeList/TreeList.js.map +1 -1
 - package/es/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.js +23 -6
 - package/es/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.js.map +1 -1
 - package/es/components/Select/Select.js +2 -1
 - package/es/components/Select/Select.js.map +1 -1
 - package/es/components/Select/hooks/useKeyboardNavigation.js +127 -38
 - package/es/components/Select/hooks/useKeyboardNavigation.js.map +1 -1
 - package/es/components/Select/reducers/focusedPathReducer.js +7 -0
 - package/es/components/Select/reducers/focusedPathReducer.js.map +1 -1
 - package/es/components/Select/reducers/treePathReducer.js +12 -0
 - package/es/components/Select/reducers/treePathReducer.js.map +1 -1
 - package/es/components/Select/ui/TreeList/TreeList.js +3 -3
 - package/es/components/Select/ui/TreeList/TreeList.js.map +1 -1
 - package/es/components/Select/ui/TreeList/ui/Item/Item.js +23 -6
 - package/es/components/Select/ui/TreeList/ui/Item/Item.js.map +1 -1
 - package/es/index.js +1 -0
 - package/es/index.js.map +1 -1
 - package/es/utils/index.js.map +1 -1
 - package/es/utils/isArraysEqual.js +8 -0
 - package/es/utils/isArraysEqual.js.map +1 -0
 - package/package.json +2 -2
 - package/styled-components/cjs/components/Combobox/ComboboxNew/Combobox.js +16 -3
 - package/styled-components/cjs/components/Combobox/ComboboxNew/hooks/useKeyboardNavigation.js +312 -0
 - package/styled-components/cjs/components/Combobox/ComboboxNew/reducers/focusedPathReducer.js +7 -0
 - package/styled-components/cjs/components/Combobox/ComboboxNew/reducers/treePathReducer.js +14 -2
 - package/styled-components/cjs/components/Combobox/ComboboxNew/ui/TreeList/TreeList.js +7 -3
 - package/styled-components/cjs/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.js +49 -5
 - package/styled-components/cjs/components/Select/Select.js +2 -1
 - package/styled-components/cjs/components/Select/hooks/useKeyboardNavigation.js +156 -44
 - package/styled-components/cjs/components/Select/reducers/focusedPathReducer.js +7 -0
 - package/styled-components/cjs/components/Select/reducers/treePathReducer.js +12 -0
 - package/styled-components/cjs/components/Select/ui/TreeList/TreeList.js +7 -3
 - package/styled-components/cjs/components/Select/ui/TreeList/ui/Item/Item.js +49 -5
 - package/styled-components/cjs/utils/index.js +4 -0
 - package/styled-components/cjs/utils/isArraysEqual.js +15 -0
 - package/styled-components/es/components/Combobox/ComboboxNew/Combobox.js +16 -3
 - package/styled-components/es/components/Combobox/ComboboxNew/hooks/useKeyboardNavigation.js +313 -0
 - package/styled-components/es/components/Combobox/ComboboxNew/reducers/focusedPathReducer.js +7 -0
 - package/styled-components/es/components/Combobox/ComboboxNew/reducers/treePathReducer.js +14 -2
 - package/styled-components/es/components/Combobox/ComboboxNew/ui/TreeList/TreeList.js +7 -3
 - package/styled-components/es/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.js +50 -6
 - package/styled-components/es/components/Select/Select.js +2 -1
 - package/styled-components/es/components/Select/hooks/useKeyboardNavigation.js +157 -44
 - package/styled-components/es/components/Select/reducers/focusedPathReducer.js +7 -0
 - package/styled-components/es/components/Select/reducers/treePathReducer.js +12 -0
 - package/styled-components/es/components/Select/ui/TreeList/TreeList.js +7 -3
 - package/styled-components/es/components/Select/ui/TreeList/ui/Item/Item.js +50 -6
 - package/styled-components/es/examples/components/Combobox/Combobox.js +0 -7
 - package/styled-components/es/utils/index.js +1 -0
 - package/styled-components/es/utils/isArraysEqual.js +5 -0
 - package/types/components/Combobox/ComboboxNew/Combobox.d.ts.map +1 -1
 - package/types/components/Combobox/ComboboxNew/hooks/useKeyboardNavigation.d.ts +7 -2
 - package/types/components/Combobox/ComboboxNew/hooks/useKeyboardNavigation.d.ts.map +1 -1
 - package/types/components/Combobox/ComboboxNew/reducers/focusedPathReducer.d.ts +3 -0
 - package/types/components/Combobox/ComboboxNew/reducers/focusedPathReducer.d.ts.map +1 -1
 - package/types/components/Combobox/ComboboxNew/reducers/treePathReducer.d.ts +6 -0
 - package/types/components/Combobox/ComboboxNew/reducers/treePathReducer.d.ts.map +1 -1
 - package/types/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.d.ts.map +1 -1
 - package/types/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.types.d.ts +1 -1
 - package/types/components/Combobox/ComboboxNew/ui/TreeList/ui/Item/Item.types.d.ts.map +1 -1
 - package/types/components/Select/Select.d.ts.map +1 -1
 - package/types/components/Select/hooks/useKeyboardNavigation.d.ts +2 -1
 - package/types/components/Select/hooks/useKeyboardNavigation.d.ts.map +1 -1
 - package/types/components/Select/reducers/focusedPathReducer.d.ts +3 -0
 - package/types/components/Select/reducers/focusedPathReducer.d.ts.map +1 -1
 - package/types/components/Select/reducers/treePathReducer.d.ts +6 -0
 - package/types/components/Select/reducers/treePathReducer.d.ts.map +1 -1
 - package/types/components/Select/ui/TreeList/ui/Item/Item.d.ts.map +1 -1
 - package/types/components/Select/ui/TreeList/ui/Item/Item.types.d.ts +1 -1
 - package/types/components/Select/ui/TreeList/ui/Item/Item.types.d.ts.map +1 -1
 - package/types/utils/index.d.ts +1 -0
 - package/types/utils/index.d.ts.map +1 -1
 - package/types/utils/isArraysEqual.d.ts +2 -0
 - package/types/utils/isArraysEqual.d.ts.map +1 -0
 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"Combobox.js","sources":["../../../../src/components/Combobox/ComboboxNew/Combobox.tsx"],"sourcesContent":["import React, { forwardRef, useState, useReducer, useMemo, useLayoutEffect, useRef } from 'react';\nimport type { ChangeEvent, ForwardedRef, MouseEvent } from 'react';\nimport { useForkRef } from '@salutejs/plasma-core';\nimport { safeUseId, isEmpty } from 'src/utils';\nimport { RootProps } from 'src/engines';\nimport { useOutsideClick, useDidMountLayoutEffect } from 'src/hooks';\n\nimport { sizeToIconSize } from '../../Select/utils';\n\nimport { classes } from './Combobox.tokens';\nimport { FloatingPopover } from './FloatingPopover';\nimport { useKeyNavigation, getItemByFocused } from './hooks/useKeyboardNavigation';\nimport {\n    initialItemsTransform,\n    updateAncestors,\n    updateDescendants,\n    updateSingleAncestors,\n    filterItems,\n    getItemId,\n    getTextValue,\n} from './utils';\nimport { Inner, StyledTextField, VirtualList, SelectAll, TreeList } from './ui';\nimport { pathReducer, focusedPathReducer, treePathReducer } from './reducers';\nimport { getPathMap, getTreeMaps } from './hooks/getPathMaps';\nimport {\n    Ul,\n    base,\n    StyledArrow,\n    IconArrowWrapper,\n    StyledEmptyState,\n    StyledLeftHelper,\n    ListWrapper,\n} from './Combobox.styles';\nimport type { ComboboxProps } from './Combobox.types';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as sizeCSS } from './variations/_size/base';\nimport type { ItemOptionTransformed, ItemOption } from './ui/Inner/ui/Item/Item.types';\nimport { SelectNative } from './ui/SelectNative/SelectNative';\nimport { Context } from './Combobox.context';\n\n/**\n * Поле ввода с выпадающим списком и возможностью фильтрации и выбора элементов.\n */\n\nexport const comboboxRoot = (Root: RootProps<HTMLInputElement, Omit<ComboboxProps, 'items' | 'chipClickArea'>>) =>\n    forwardRef<HTMLInputElement, ComboboxProps>((props, ref) => {\n        const {\n            name,\n            multiple,\n            value: outerValue,\n            onChange: outerOnChange,\n            defaultValue,\n            isTargetAmount,\n            targetAmount,\n            items,\n            treeView = false,\n            arrowPlacement = 'left',\n            placement = 'bottom-start',\n            label,\n            placeholder,\n            helperText,\n            contentLeft,\n            textBefore,\n            textAfter,\n            variant = 'normal',\n            listOverflow,\n            listHeight,\n            listMaxHeight,\n            listWidth,\n            portal,\n            renderItem,\n            view,\n            size,\n            labelPlacement,\n            keepPlaceholder,\n            readOnly = false,\n            disabled = false,\n            alwaysOpened = false,\n            filter,\n            closeAfterSelect: outerCloseAfterSelect,\n            renderValue,\n            zIndex,\n            beforeList,\n            afterList,\n            virtual = false,\n            hintView,\n            hintSize,\n            emptyStateDescription,\n            onChangeValue,\n            onScroll,\n            onToggle,\n            mode = 'default',\n            chipClickArea = 'full',\n            // @ts-ignore\n            _offset,\n            ...rest\n        } = props;\n\n        const transformedItems = useMemo(() => initialItemsTransform(items || []), [items]);\n\n        // Создаем структуры для быстрой работы с деревом\n        const [valueToCheckedMap, valueToItemMap, valueToPathMap] = useMemo(() => getTreeMaps(transformedItems), [\n            items,\n        ]);\n\n        const [textValue, setTextValue] = useState(getTextValue(multiple, outerValue, valueToItemMap, renderValue));\n\n        const [internalValue, setInternalValue] = useState<string | string[]>(multiple ? [] : '');\n\n        const value = outerValue !== null && outerValue !== undefined ? outerValue : internalValue;\n\n        const rootRef = useRef<HTMLInputElement>(null);\n        const inputRef = useRef<HTMLInputElement>(null);\n        const floatingPopoverRef = useRef<HTMLDivElement>(null);\n        const inputForkRef = useForkRef(inputRef, ref);\n        const listWrapperRef = useRef<HTMLDivElement>(null);\n        const treeId = safeUseId();\n\n        const filteredItems = useMemo(\n            () =>\n                filterItems(\n                    transformedItems,\n                    textValue,\n                    getTextValue(multiple, value, valueToItemMap, renderValue),\n                    filter,\n                ),\n            [transformedItems, textValue, filter],\n        );\n\n        const [pathMap, focusedToValueMap] = useMemo(() => getPathMap(filteredItems), [filteredItems, textValue]);\n\n        const initialPath = alwaysOpened ? ['root'] : [];\n\n        // Состояния дерева элементов\n        const [path, dispatchPath] = useReducer(pathReducer, initialPath);\n        const [focusedPath, dispatchFocusedPath] = useReducer(focusedPathReducer, []);\n        const [checked, setChecked] = useState(valueToCheckedMap);\n        const [treePath, dispatchTreePath] = useReducer(treePathReducer, {});\n\n        const isCurrentListOpen = Boolean(path[0]);\n        const activeDescendantItemValue = getItemByFocused(focusedPath, focusedToValueMap)?.value || '';\n        const withArrowInverse = isCurrentListOpen ? classes.arrowInverse : undefined;\n        const closeAfterSelect = outerCloseAfterSelect ?? !multiple;\n\n        /* Логика работы при клике за пределами выпадающего списка */\n        useOutsideClick(() => {\n            if (!isCurrentListOpen || alwaysOpened) {\n                return;\n            }\n\n            handleListToggle(false);\n\n            // Возвращаем актуальное значение поля ввода после закрытия выпадающего списка.\n            setTextValue(getTextValue(multiple, value, valueToItemMap, renderValue));\n        }, [floatingPopoverRef, listWrapperRef]);\n\n        // Эта функция срабатывает при изменении Combobox и\n        // при изменении нативного Select для формы (срабатывает только после изменения internalValue и рендера).\n        const onChange = (\n            newValue: string | Array<string> | ChangeEvent<HTMLSelectElement> | null,\n            item?: ItemOption | null,\n        ) => {\n            // Условие для отправки изменений наружу\n            if (props.onChange) {\n                // Условие для отправки, если комбобокс используется без формы.\n                if (!props.name && (typeof newValue === 'string' || Array.isArray(newValue))) {\n                    props.onChange(newValue as any, item || null);\n                }\n\n                // Условие для отправки, если комбобокс используется с формой.\n                if (props.name && typeof newValue === 'object' && !Array.isArray(newValue)) {\n                    props.onChange(newValue as any);\n                }\n            }\n\n            // Условие для изменения внутреннего значения (только если newValue строка или массив строк).\n            if (typeof newValue === 'string' || Array.isArray(newValue)) {\n                setInternalValue(newValue);\n            }\n        };\n\n        const handleClickArrow = (e: MouseEvent<HTMLElement>) => {\n            handleListToggle(!isCurrentListOpen);\n\n            // При клике на иконку закрытия фокус не должен становиться в инпут.\n            e.stopPropagation();\n        };\n\n        // Обработчик изменения значения в инпуте\n        const handleTextValueChange = (e: ChangeEvent<HTMLInputElement>) => {\n            setTextValue(e.target.value);\n            dispatchPath({ type: 'opened_first_level' });\n            dispatchFocusedPath({ type: 'reset' });\n\n            if (onChangeValue) {\n                onChangeValue(e.target.value);\n            }\n        };\n\n        // Обработчик чипов\n        const handleChipClick = (chip: { value: string; label: string; disabled: boolean }) => {\n            if (!Array.isArray(value)) return;\n\n            if (isTargetAmount) {\n                // При закрытии чипа в режиме isTargetAmount в value оставляем только disabled-элементы\n                onChange(value.filter((val) => valueToItemMap?.get(val)?.disabled));\n            } else {\n                onChange(\n                    value.filter((val) => val !== chip.value),\n                    valueToItemMap.get(chip.value) || null,\n                );\n            }\n        };\n\n        // Обработчик открытия/закрытия выпадающего списка\n        const handleListToggle = (opened: boolean) => {\n            if (disabled || readOnly) {\n                return;\n            }\n\n            if (opened) {\n                dispatchPath({ type: 'opened_first_level' });\n            } else {\n                dispatchFocusedPath({ type: 'reset' });\n                dispatchPath({ type: 'reset' });\n                dispatchTreePath({ type: 'reset' });\n\n                // Скроллим чипы к левому краю при закрытии компонента\n                const el = rootRef?.current?.querySelector('.input-scrollable-wrapper');\n                if (multiple && value.length > 0 && el) {\n                    el.scrollLeft = 0;\n                }\n            }\n\n            if (onToggle) {\n                onToggle(opened);\n            }\n        };\n\n        // Обработчик выбора чекбоксов (только при multiple)\n        const handleCheckboxChange = (item: ItemOptionTransformed) => {\n            if (!multiple) {\n                return;\n            }\n\n            const checkedCopy = new Map(checked);\n\n            switch (checkedCopy.get(item.value)) {\n                // Если чекбокс в состоянии indeterminate\n                case 'indeterminate': {\n                    updateDescendants(item, checkedCopy, true, valueToItemMap);\n                    break;\n                }\n                // Если чекбокс в состоянии checked\n                case true: {\n                    updateDescendants(item, checkedCopy, false, valueToItemMap);\n                    checkedCopy.set(item.value, false);\n                    break;\n                }\n                // Если чекбокс в состоянии unchecked\n                case false: {\n                    updateDescendants(item, checkedCopy, true, valueToItemMap);\n                    checkedCopy.set(item.value, true);\n                    break;\n                }\n                default: {\n                    break;\n                }\n            }\n\n            const newValues: Array<string> = [];\n\n            valueToItemMap.forEach((item, key) => {\n                if (checkedCopy.get(key)) {\n                    newValues.push(item.value);\n                }\n            });\n\n            // Оставляем values, которых нет в items.\n            if (Array.isArray(value)) {\n                value.forEach((val: string) => {\n                    if (!valueToItemMap.has(val)) {\n                        newValues.push(val);\n                    }\n                });\n            }\n\n            if (!alwaysOpened && closeAfterSelect) {\n                dispatchPath({ type: 'reset' });\n                dispatchFocusedPath({ type: 'reset' });\n                dispatchTreePath({ type: 'reset' });\n            }\n\n            if (onChange) {\n                onChange(newValues, item);\n            }\n        };\n\n        // Обработчик клика по айтему выпадающего списка\n        const handleItemClick = (item: ItemOptionTransformed, e?: MouseEvent<HTMLElement>) => {\n            if (!isEmpty(item?.items)) {\n                return;\n            }\n\n            if (multiple) {\n                handleCheckboxChange(item);\n                return;\n            }\n\n            if (e) {\n                e.stopPropagation();\n            }\n\n            const isCurrentChecked = checked.get(item.value);\n\n            if (!alwaysOpened && closeAfterSelect) {\n                dispatchPath({ type: 'reset' });\n                dispatchFocusedPath({ type: 'reset' });\n                dispatchTreePath({ type: 'reset' });\n            }\n\n            // Закрываем список, если элемент уже выбран.\n            if (mode === 'radio' && isCurrentChecked) {\n                return;\n            }\n\n            if (onChange) {\n                onChange(isCurrentChecked ? '' : item.value, item);\n            }\n        };\n\n        // Обработчик клика на таргет\n        const handleTargetClick = () => {\n            if (!isCurrentListOpen) {\n                handleListToggle(true);\n            }\n        };\n\n        const getChips = (): { value: string; label: string; disabled: boolean }[] => {\n            if (multiple && Array.isArray(value)) {\n                if (value.length === 0) return [];\n\n                if (isTargetAmount) {\n                    return [\n                        {\n                            value: '_removeAll',\n                            label: `Выбрано ${targetAmount || value.length}`,\n                            disabled: value.every((val) => valueToItemMap?.get(val)?.disabled),\n                        },\n                    ];\n                }\n\n                return value.map((value) => {\n                    const currentLabel = renderValue\n                        ? renderValue(valueToItemMap.get(value) || { value, label: value })\n                        : valueToItemMap.get(value)?.label || value.toString();\n\n                    return {\n                        value,\n                        label: currentLabel,\n                        disabled: valueToItemMap.get(value)?.disabled || false,\n                    };\n                });\n            }\n\n            return [];\n        };\n\n        const handlePressDown = (item: ItemOptionTransformed, e?: MouseEvent<HTMLElement>) => {\n            if (isEmpty(item.items)) {\n                handleItemClick(item, e);\n            } else if (multiple) {\n                handleCheckboxChange(item);\n            }\n        };\n\n        const helperTextStopPropagation = (event: MouseEvent<HTMLDivElement>) => {\n            event.stopPropagation();\n        };\n\n        const { onKeyDown } = useKeyNavigation({\n            focusedPath,\n            dispatchFocusedPath,\n            path,\n            dispatchPath,\n            pathMap,\n            focusedToValueMap,\n            handleListToggle,\n            handlePressDown,\n            setTextValue,\n            multiple,\n            value,\n            textValue,\n            valueToItemMap,\n        });\n\n        // В данном эффекте мы следим за изменениями value снаружи и вносим коррективы в дерево чекбоксов.\n        // Пример: когда юзер очистил value извне, тогда нужно пройтись по элементам и выключить все чекбоксы.\n        useLayoutEffect(() => {\n            const checkedCopy = new Map(valueToCheckedMap);\n\n            checkedCopy.forEach((_, key) => {\n                checkedCopy.set(key, false);\n            });\n\n            if (!isEmpty(value)) {\n                if (Array.isArray(value)) {\n                    value.forEach((val) => {\n                        // Только если value находится в items, т.к. value может и не существовать в items.\n                        if (valueToItemMap.has(val)) {\n                            checkedCopy.set(val, true);\n                            updateDescendants(valueToItemMap.get(val)!, checkedCopy, true);\n                            updateAncestors(valueToItemMap.get(val)!, checkedCopy);\n                        }\n                    });\n                } else {\n                    // Только если value находится в items, т.к. value может и не существовать в items.\n                    // eslint-disable-next-line no-lonely-if\n                    if (valueToItemMap.has(value)) {\n                        checkedCopy.set(value, 'done');\n                        updateSingleAncestors(valueToItemMap.get(value)!, checkedCopy, 'dot');\n                    }\n                }\n            }\n\n            setChecked(checkedCopy);\n\n            // В deps мы кладем именно outerValue и internalValue, а не просто value.\n            // Т.к. вначале нужно отфильтровать и провалидировать outerValue и результат положить в переменную.\n            // А переменную, содержащую сложные типы данных, нельзя помещать в deps.\n        }, [outerValue, internalValue, items]);\n\n        // Эффект для исключительных случаев, когда нужно обновить значение textValue при изменении items,\n        // но только если значение textValue совпадает с value в item.\n        useLayoutEffect(() => {\n            if (!multiple && value && valueToItemMap.get(value as string)?.value === textValue) {\n                setTextValue(valueToItemMap.get(value as string)?.label || value.toString());\n            }\n        }, [items]);\n\n        // При изменении value нужно возвращать значение в инпуте к исходному.\n        useDidMountLayoutEffect(() => {\n            setTextValue(getTextValue(multiple, value, valueToItemMap, renderValue));\n        }, [outerValue, internalValue]);\n\n        useLayoutEffect(() => {\n            if (defaultValue) {\n                setInternalValue(defaultValue);\n            }\n        }, [defaultValue]);\n\n        // Эффект для раскрытия дерева при поиске.\n        useLayoutEffect(() => {\n            if (treeView) {\n                if (textValue === '') {\n                    dispatchTreePath({ type: 'reset' });\n                } else {\n                    dispatchTreePath({ type: 'expand_all', value: filteredItems });\n                }\n            }\n        }, [textValue]);\n\n        return (\n            <Root\n                size={size}\n                view={view}\n                labelPlacement={labelPlacement}\n                disabled={disabled}\n                readOnly={readOnly}\n                name={name}\n                hintView={hintView}\n                hintSize={hintSize}\n                ref={rootRef}\n            >\n                {name && (\n                    <SelectNative\n                        items={valueToItemMap}\n                        name={name}\n                        value={internalValue}\n                        multiple={multiple}\n                        onChange={onChange}\n                        onSetValue={setInternalValue}\n                        ref={ref as ForwardedRef<HTMLInputElement>}\n                    />\n                )}\n                <div>\n                    <Context.Provider\n                        value={{\n                            focusedPath,\n                            checked,\n                            multiple,\n                            size,\n                            handleCheckboxChange,\n                            handleItemClick,\n                            variant,\n                            renderItem,\n                            treeId,\n                            // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n                            // @ts-ignore\n                            // eslint-disable-next-line no-underscore-dangle\n                            _checkboxAppearance: (rest as any)._checkboxAppearance,\n                            treePath,\n                            dispatchTreePath,\n                            arrowPlacement,\n                            valueToPathMap,\n                        }}\n                    >\n                        <FloatingPopover\n                            ref={floatingPopoverRef}\n                            opened={isCurrentListOpen}\n                            placement={placement}\n                            portal={portal}\n                            listWidth={listWidth}\n                            offset={_offset}\n                            target={(referenceRef) => (\n                                <div onClick={handleTargetClick}>\n                                    <StyledTextField\n                                        ref={name ? inputRef : (inputForkRef as ForwardedRef<HTMLInputElement>)}\n                                        inputWrapperRef={referenceRef}\n                                        value={textValue}\n                                        onChange={handleTextValueChange}\n                                        size={size}\n                                        view={view}\n                                        disabled={disabled}\n                                        readOnly={readOnly}\n                                        label={label}\n                                        placeholder={placeholder}\n                                        contentLeft={contentLeft}\n                                        contentRight={\n                                            <IconArrowWrapper\n                                                disabled={disabled}\n                                                onClick={handleClickArrow}\n                                                className={classes.comboboxTargetArrow}\n                                            >\n                                                <StyledArrow\n                                                    color=\"inherit\"\n                                                    size={sizeToIconSize(size)}\n                                                    className={withArrowInverse}\n                                                />\n                                            </IconArrowWrapper>\n                                        }\n                                        textBefore={textBefore}\n                                        textAfter={textAfter}\n                                        onKeyDown={onKeyDown}\n                                        leftHelper={\n                                            helperText && (\n                                                <StyledLeftHelper onClick={helperTextStopPropagation}>\n                                                    {helperText}\n                                                </StyledLeftHelper>\n                                            )\n                                        }\n                                        role=\"combobox\"\n                                        aria-autocomplete=\"list\"\n                                        aria-controls={`${treeId}_tree_level_1`}\n                                        aria-expanded={isCurrentListOpen}\n                                        aria-activedescendant={\n                                            activeDescendantItemValue\n                                                ? getItemId(treeId, activeDescendantItemValue)\n                                                : ''\n                                        }\n                                        labelPlacement={labelPlacement}\n                                        keepPlaceholder={keepPlaceholder}\n                                        {...(multiple\n                                            ? {\n                                                  enumerationType: 'chip',\n                                                  _chipClickArea: chipClickArea,\n                                                  _chips: getChips(),\n                                                  _onChipCloseClick: handleChipClick,\n                                              }\n                                            : { enumerationType: 'plain' })}\n                                        {...rest}\n                                        _onEnterDisabled // Пропс для отключения обработчика Enter внутри Textfield\n                                    />\n                                </div>\n                            )}\n                            zIndex={zIndex}\n                            isInner={false}\n                        >\n                            <Root\n                                size={size}\n                                view={view}\n                                labelPlacement={labelPlacement}\n                                disabled={disabled}\n                                readOnly={readOnly}\n                                name={name}\n                            >\n                                {isEmpty(filteredItems) ? (\n                                    <StyledEmptyState\n                                        className={classes.emptyStateWrapper}\n                                        size={size}\n                                        description={emptyStateDescription || 'Ничего не найдено'}\n                                    />\n                                ) : (\n                                    <>\n                                        {treeView ? (\n                                            <TreeList\n                                                items={filteredItems}\n                                                listMaxHeight={listMaxHeight || listHeight}\n                                                onScroll={virtual ? undefined : onScroll}\n                                                virtual={virtual}\n                                                beforeList={beforeList}\n                                                afterList={afterList}\n                                            />\n                                        ) : (\n                                            <ListWrapper ref={listWrapperRef} listWidth={listWidth}>\n                                                <Ul\n                                                    role=\"tree\"\n                                                    id={`${treeId}_tree_level_1`}\n                                                    aria-multiselectable={Boolean(multiple)}\n                                                    listMaxHeight={listMaxHeight || listHeight}\n                                                    virtual={virtual}\n                                                    onScroll={virtual ? undefined : onScroll}\n                                                >\n                                                    {beforeList}\n\n                                                    {props.multiple && props.selectAllOptions && (\n                                                        // TODO: #2004\n                                                        <SelectAll\n                                                            selectAllOptions={props.selectAllOptions}\n                                                            variant={variant}\n                                                        />\n                                                    )}\n\n                                                    {virtual ? (\n                                                        <VirtualList\n                                                            items={filteredItems}\n                                                            listMaxHeight={listMaxHeight || listHeight}\n                                                            onScroll={onScroll}\n                                                        />\n                                                    ) : (\n                                                        filteredItems.map((item, index) => (\n                                                            <Inner\n                                                                key={`${index}/0`}\n                                                                item={item}\n                                                                currentLevel={0}\n                                                                path={path}\n                                                                dispatchPath={dispatchPath}\n                                                                index={index}\n                                                                listWidth={listWidth}\n                                                                portal={listWrapperRef}\n                                                            />\n                                                        ))\n                                                    )}\n\n                                                    {afterList}\n                                                </Ul>\n                                            </ListWrapper>\n                                        )}\n                                    </>\n                                )}\n                            </Root>\n                        </FloatingPopover>\n                    </Context.Provider>\n                </div>\n            </Root>\n        );\n    });\n\nexport const comboboxConfig = {\n    name: 'Select',\n    tag: 'div',\n    layout: comboboxRoot,\n    base,\n    variations: {\n        view: {\n            css: viewCSS,\n        },\n        size: {\n            css: sizeCSS,\n        },\n        readOnly: {\n            css: sizeCSS,\n        },\n    },\n    defaults: {\n        view: 'default',\n        size: 'm',\n        labelPlacement: 'outer',\n    },\n};\n"],"names":["comboboxRoot","Root","forwardRef","props","ref","_getItemByFocused","_StyledLeftHelper","name","multiple","outerValue","value","defaultValue","isTargetAmount","targetAmount","items","_props$treeView","treeView","_props$arrowPlacement","arrowPlacement","_props$placement","placement","label","placeholder","helperText","contentLeft","textBefore","textAfter","_props$variant","variant","listHeight","listMaxHeight","listWidth","portal","renderItem","view","size","labelPlacement","keepPlaceholder","_props$readOnly","readOnly","_props$disabled","disabled","_props$alwaysOpened","alwaysOpened","filter","outerCloseAfterSelect","closeAfterSelect","renderValue","zIndex","beforeList","afterList","_props$virtual","virtual","hintView","hintSize","emptyStateDescription","onChangeValue","onScroll","onToggle","_props$mode","mode","_props$chipClickArea","chipClickArea","_offset","rest","_objectWithoutProperties","_excluded","transformedItems","useMemo","initialItemsTransform","_useMemo","getTreeMaps","_useMemo2","_slicedToArray","valueToCheckedMap","valueToItemMap","valueToPathMap","_useState","useState","getTextValue","_useState2","textValue","setTextValue","_useState3","_useState4","internalValue","setInternalValue","undefined","rootRef","useRef","inputRef","floatingPopoverRef","inputForkRef","useForkRef","listWrapperRef","treeId","safeUseId","filteredItems","filterItems","_useMemo3","getPathMap","_useMemo4","pathMap","focusedToValueMap","initialPath","_useReducer","useReducer","pathReducer","_useReducer2","path","dispatchPath","_useReducer3","focusedPathReducer","_useReducer4","focusedPath","dispatchFocusedPath","_useState5","_useState6","checked","setChecked","_useReducer5","treePathReducer","_useReducer6","treePath","dispatchTreePath","isCurrentListOpen","Boolean","activeDescendantItemValue","getItemByFocused","withArrowInverse","classes","arrowInverse","useOutsideClick","handleListToggle","onChange","newValue","item","Array","isArray","_typeof","handleClickArrow","e","stopPropagation","handleTextValueChange","target","type","handleChipClick","chip","val","_valueToItemMap$get","get","opened","_rootRef$current","el","current","querySelector","length","scrollLeft","handleCheckboxChange","checkedCopy","Map","updateDescendants","set","newValues","forEach","key","push","has","handleItemClick","isEmpty","isCurrentChecked","handleTargetClick","getChips","concat","every","_valueToItemMap$get2","map","_valueToItemMap$get3","_valueToItemMap$get4","currentLabel","toString","handlePressDown","helperTextStopPropagation","event","_useKeyNavigation","useKeyNavigation","onKeyDown","useLayoutEffect","_","updateAncestors","updateSingleAncestors","_valueToItemMap$get5","_valueToItemMap$get6","useDidMountLayoutEffect","React","createElement","SelectNative","onSetValue","Context","Provider","_checkboxAppearance","FloatingPopover","offset","referenceRef","onClick","StyledTextField","_extends","inputWrapperRef","contentRight","IconArrowWrapper","className","comboboxTargetArrow","StyledArrow","color","sizeToIconSize","leftHelper","StyledLeftHelper","role","getItemId","enumerationType","_chipClickArea","_chips","_onChipCloseClick","_onEnterDisabled","isInner","StyledEmptyState","emptyStateWrapper","description","Fragment","TreeList","ListWrapper","Ul","id","selectAllOptions","SelectAll","VirtualList","index","Inner","currentLevel","comboboxConfig","tag","layout","base","variations","css","viewCSS","sizeCSS","defaults"],"mappings":"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"}
         
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"Combobox.js","sources":["../../../../src/components/Combobox/ComboboxNew/Combobox.tsx"],"sourcesContent":["import React, { forwardRef, useState, useReducer, useMemo, useLayoutEffect, useRef } from 'react';\nimport type { ChangeEvent, ForwardedRef, MouseEvent } from 'react';\nimport { useForkRef } from '@salutejs/plasma-core';\nimport { safeUseId, isEmpty } from 'src/utils';\nimport { RootProps } from 'src/engines';\nimport { useOutsideClick, useDidMountLayoutEffect } from 'src/hooks';\n\nimport { sizeToIconSize } from '../../Select/utils';\n\nimport { classes } from './Combobox.tokens';\nimport { FloatingPopover } from './FloatingPopover';\nimport { useKeyNavigation, getItemByFocused } from './hooks/useKeyboardNavigation';\nimport {\n    initialItemsTransform,\n    updateAncestors,\n    updateDescendants,\n    updateSingleAncestors,\n    filterItems,\n    getItemId,\n    getTextValue,\n} from './utils';\nimport { Inner, StyledTextField, VirtualList, SelectAll, TreeList } from './ui';\nimport { pathReducer, focusedPathReducer, treePathReducer } from './reducers';\nimport { getPathMap, getTreeMaps } from './hooks/getPathMaps';\nimport {\n    Ul,\n    base,\n    StyledArrow,\n    IconArrowWrapper,\n    StyledEmptyState,\n    StyledLeftHelper,\n    ListWrapper,\n} from './Combobox.styles';\nimport type { ComboboxProps } from './Combobox.types';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as sizeCSS } from './variations/_size/base';\nimport type { ItemOptionTransformed, ItemOption } from './ui/Inner/ui/Item/Item.types';\nimport { SelectNative } from './ui/SelectNative/SelectNative';\nimport { Context } from './Combobox.context';\n\n/**\n * Поле ввода с выпадающим списком и возможностью фильтрации и выбора элементов.\n */\n\nexport const comboboxRoot = (Root: RootProps<HTMLInputElement, Omit<ComboboxProps, 'items' | 'chipClickArea'>>) =>\n    forwardRef<HTMLInputElement, ComboboxProps>((props, ref) => {\n        const {\n            name,\n            multiple,\n            value: outerValue,\n            onChange: outerOnChange,\n            defaultValue,\n            isTargetAmount,\n            targetAmount,\n            items,\n            treeView = false,\n            arrowPlacement = 'left',\n            placement = 'bottom-start',\n            label,\n            placeholder,\n            helperText,\n            contentLeft,\n            textBefore,\n            textAfter,\n            variant = 'normal',\n            listOverflow,\n            listHeight,\n            listMaxHeight,\n            listWidth,\n            portal,\n            renderItem,\n            view,\n            size,\n            labelPlacement,\n            keepPlaceholder,\n            readOnly = false,\n            disabled = false,\n            alwaysOpened = false,\n            filter,\n            closeAfterSelect: outerCloseAfterSelect,\n            renderValue,\n            zIndex,\n            beforeList,\n            afterList,\n            virtual = false,\n            hintView,\n            hintSize,\n            emptyStateDescription,\n            onChangeValue,\n            onScroll,\n            onToggle,\n            mode = 'default',\n            chipClickArea = 'full',\n            // @ts-ignore\n            _offset,\n            ...rest\n        } = props;\n\n        const transformedItems = useMemo(() => initialItemsTransform(items || []), [items]);\n\n        // Создаем структуры для быстрой работы с деревом\n        const [valueToCheckedMap, valueToItemMap, valueToPathMap] = useMemo(() => getTreeMaps(transformedItems), [\n            items,\n        ]);\n\n        // Состояние поля поиска в target\n        const [textValue, setTextValue] = useState(getTextValue(multiple, outerValue, valueToItemMap, renderValue));\n\n        // Внутреннее состояние выбранных элементов\n        const [internalValue, setInternalValue] = useState<string | string[]>(multiple ? [] : '');\n\n        const value = outerValue !== null && outerValue !== undefined ? outerValue : internalValue;\n\n        const rootRef = useRef<HTMLInputElement>(null);\n        const inputRef = useRef<HTMLInputElement>(null);\n        const floatingPopoverRef = useRef<HTMLDivElement>(null);\n        const inputForkRef = useForkRef(inputRef, ref);\n        const listWrapperRef = useRef<HTMLDivElement>(null);\n        const treeId = safeUseId();\n\n        const filteredItems = useMemo(\n            () =>\n                filterItems(\n                    transformedItems,\n                    textValue,\n                    getTextValue(multiple, value, valueToItemMap, renderValue),\n                    filter,\n                ),\n            [transformedItems, textValue, filter],\n        );\n\n        const [pathMap, focusedToValueMap] = useMemo(() => getPathMap(filteredItems), [filteredItems, textValue]);\n\n        const initialPath = alwaysOpened ? ['root'] : [];\n\n        // Состояния дерева элементов\n        const [path, dispatchPath] = useReducer(pathReducer, initialPath);\n        const [focusedPath, dispatchFocusedPath] = useReducer(focusedPathReducer, []);\n        const [checked, setChecked] = useState(valueToCheckedMap);\n        const [treePath, dispatchTreePath] = useReducer(treePathReducer, {});\n\n        const isCurrentListOpen = Boolean(path[0]);\n        const activeDescendantItemValue = getItemByFocused(focusedPath, focusedToValueMap)?.value || '';\n        const withArrowInverse = isCurrentListOpen ? classes.arrowInverse : undefined;\n        const closeAfterSelect = outerCloseAfterSelect ?? !multiple;\n\n        /* Логика работы при клике за пределами выпадающего списка */\n        useOutsideClick(() => {\n            if (!isCurrentListOpen || alwaysOpened) {\n                return;\n            }\n\n            handleListToggle(false);\n        }, [floatingPopoverRef, listWrapperRef]);\n\n        // Эта функция срабатывает при изменении Combobox и\n        // при изменении нативного Select для формы (срабатывает только после изменения internalValue и рендера).\n        const onChange = (\n            newValue: string | Array<string> | ChangeEvent<HTMLSelectElement> | null,\n            item?: ItemOption | null,\n        ) => {\n            // Условие для отправки изменений наружу\n            if (props.onChange) {\n                // Условие для отправки, если комбобокс используется без формы.\n                if (!props.name && (typeof newValue === 'string' || Array.isArray(newValue))) {\n                    props.onChange(newValue as any, item || null);\n                }\n\n                // Условие для отправки, если комбобокс используется с формой.\n                if (props.name && typeof newValue === 'object' && !Array.isArray(newValue)) {\n                    props.onChange(newValue as any);\n                }\n            }\n\n            // Условие для изменения внутреннего значения (только если newValue строка или массив строк).\n            if (typeof newValue === 'string' || Array.isArray(newValue)) {\n                setInternalValue(newValue);\n            }\n        };\n\n        const handleClickArrow = (e: MouseEvent<HTMLElement>) => {\n            handleListToggle(!isCurrentListOpen);\n\n            // При клике на иконку закрытия фокус не должен становиться в инпут.\n            e.stopPropagation();\n        };\n\n        // Обработчик изменения значения в инпуте\n        const handleTextValueChange = (e: ChangeEvent<HTMLInputElement>) => {\n            setTextValue(e.target.value);\n            dispatchPath({ type: 'opened_first_level' });\n            dispatchFocusedPath({ type: 'reset' });\n\n            if (onChangeValue) {\n                onChangeValue(e.target.value);\n            }\n        };\n\n        // Обработчик чипов\n        const handleChipClick = (chip: { value: string; label: string; disabled: boolean }) => {\n            if (!Array.isArray(value)) return;\n\n            if (isTargetAmount) {\n                // При закрытии чипа в режиме isTargetAmount в value оставляем только disabled-элементы\n                onChange(value.filter((val) => valueToItemMap?.get(val)?.disabled));\n            } else {\n                onChange(\n                    value.filter((val) => val !== chip.value),\n                    valueToItemMap.get(chip.value) || null,\n                );\n            }\n        };\n\n        // Обработчик открытия/закрытия выпадающего списка\n        const handleListToggle = (opened: boolean) => {\n            if (disabled || readOnly) {\n                return;\n            }\n\n            if (opened) {\n                dispatchPath({ type: 'opened_first_level' });\n            } else {\n                dispatchFocusedPath({ type: 'reset' });\n                dispatchPath({ type: 'reset' });\n                dispatchTreePath({ type: 'reset' });\n\n                // Возвращаем актуальное значение поля ввода после закрытия выпадающего списка.\n                setTextValue(getTextValue(multiple, value, valueToItemMap, renderValue));\n\n                // Скроллим чипы к левому краю при закрытии компонента\n                const el = rootRef?.current?.querySelector('.input-scrollable-wrapper');\n                if (multiple && value.length > 0 && el) {\n                    el.scrollLeft = 0;\n                }\n            }\n\n            if (onToggle) {\n                onToggle(opened);\n            }\n        };\n\n        // Обработчик выбора чекбоксов (только при multiple)\n        const handleCheckboxChange = (item: ItemOptionTransformed) => {\n            if (!multiple) {\n                return;\n            }\n\n            const checkedCopy = new Map(checked);\n\n            switch (checkedCopy.get(item.value)) {\n                // Если чекбокс в состоянии indeterminate\n                case 'indeterminate': {\n                    updateDescendants(item, checkedCopy, true, valueToItemMap);\n                    break;\n                }\n                // Если чекбокс в состоянии checked\n                case true: {\n                    updateDescendants(item, checkedCopy, false, valueToItemMap);\n                    checkedCopy.set(item.value, false);\n                    break;\n                }\n                // Если чекбокс в состоянии unchecked\n                case false: {\n                    updateDescendants(item, checkedCopy, true, valueToItemMap);\n                    checkedCopy.set(item.value, true);\n                    break;\n                }\n                default: {\n                    break;\n                }\n            }\n\n            const newValues: Array<string> = [];\n\n            valueToItemMap.forEach((item, key) => {\n                if (checkedCopy.get(key)) {\n                    newValues.push(item.value);\n                }\n            });\n\n            // Оставляем values, которых нет в items.\n            if (Array.isArray(value)) {\n                value.forEach((val: string) => {\n                    if (!valueToItemMap.has(val)) {\n                        newValues.push(val);\n                    }\n                });\n            }\n\n            if (!alwaysOpened && closeAfterSelect) {\n                dispatchPath({ type: 'reset' });\n                dispatchFocusedPath({ type: 'reset' });\n                dispatchTreePath({ type: 'reset' });\n            }\n\n            if (onChange) {\n                onChange(newValues, item);\n            }\n        };\n\n        // Обработчик клика по айтему выпадающего списка\n        const handleItemClick = (item: ItemOptionTransformed, e?: MouseEvent<HTMLElement>) => {\n            if (!isEmpty(item?.items)) {\n                return;\n            }\n\n            if (multiple) {\n                handleCheckboxChange(item);\n                return;\n            }\n\n            if (e) {\n                e.stopPropagation();\n            }\n\n            const isCurrentChecked = checked.get(item.value);\n\n            if (!alwaysOpened && closeAfterSelect) {\n                dispatchPath({ type: 'reset' });\n                dispatchFocusedPath({ type: 'reset' });\n                dispatchTreePath({ type: 'reset' });\n            }\n\n            // Закрываем список, если элемент уже выбран.\n            if (mode === 'radio' && isCurrentChecked) {\n                return;\n            }\n\n            if (onChange) {\n                onChange(isCurrentChecked ? '' : item.value, item);\n            }\n        };\n\n        // Обработчик клика на таргет\n        const handleTargetClick = () => {\n            if (!isCurrentListOpen) {\n                handleListToggle(true);\n            }\n        };\n\n        const getChips = (): { value: string; label: string; disabled: boolean }[] => {\n            if (multiple && Array.isArray(value)) {\n                if (value.length === 0) return [];\n\n                if (isTargetAmount) {\n                    return [\n                        {\n                            value: '_removeAll',\n                            label: `Выбрано ${targetAmount || value.length}`,\n                            disabled: value.every((val) => valueToItemMap?.get(val)?.disabled),\n                        },\n                    ];\n                }\n\n                return value.map((value) => {\n                    const currentLabel = renderValue\n                        ? renderValue(valueToItemMap.get(value) || { value, label: value })\n                        : valueToItemMap.get(value)?.label || value.toString();\n\n                    return {\n                        value,\n                        label: currentLabel,\n                        disabled: valueToItemMap.get(value)?.disabled || false,\n                    };\n                });\n            }\n\n            return [];\n        };\n\n        const handlePressDown = (item: ItemOptionTransformed, e?: MouseEvent<HTMLElement>) => {\n            if (isEmpty(item.items)) {\n                handleItemClick(item, e);\n            } else if (multiple) {\n                handleCheckboxChange(item);\n            }\n        };\n\n        const helperTextStopPropagation = (event: MouseEvent<HTMLDivElement>) => {\n            event.stopPropagation();\n        };\n\n        const { onKeyDown } = useKeyNavigation({\n            focusedPath,\n            dispatchFocusedPath,\n            path,\n            dispatchPath,\n            pathMap,\n            focusedToValueMap,\n            handleListToggle,\n            handlePressDown,\n            setTextValue,\n            multiple,\n            value,\n            textValue,\n            valueToItemMap,\n            treePath,\n            dispatchTreePath,\n            treeView,\n            valueToPathMap,\n            items: filteredItems,\n        });\n\n        // В данном эффекте мы следим за изменениями value снаружи и вносим коррективы в дерево чекбоксов.\n        // Пример: когда юзер очистил value извне, тогда нужно пройтись по элементам и выключить все чекбоксы.\n        useLayoutEffect(() => {\n            const checkedCopy = new Map(valueToCheckedMap);\n\n            checkedCopy.forEach((_, key) => {\n                checkedCopy.set(key, false);\n            });\n\n            if (!isEmpty(value)) {\n                if (Array.isArray(value)) {\n                    value.forEach((val) => {\n                        // Только если value находится в items, т.к. value может и не существовать в items.\n                        if (valueToItemMap.has(val)) {\n                            checkedCopy.set(val, true);\n                            updateDescendants(valueToItemMap.get(val)!, checkedCopy, true);\n                            updateAncestors(valueToItemMap.get(val)!, checkedCopy);\n                        }\n                    });\n                } else {\n                    // Только если value находится в items, т.к. value может и не существовать в items.\n                    // eslint-disable-next-line no-lonely-if\n                    if (valueToItemMap.has(value)) {\n                        checkedCopy.set(value, 'done');\n                        updateSingleAncestors(valueToItemMap.get(value)!, checkedCopy, 'dot');\n                    }\n                }\n            }\n\n            setChecked(checkedCopy);\n\n            // В deps мы кладем именно outerValue и internalValue, а не просто value.\n            // Т.к. вначале нужно отфильтровать и провалидировать outerValue и результат положить в переменную.\n            // А переменную, содержащую сложные типы данных, нельзя помещать в deps.\n        }, [outerValue, internalValue, items]);\n\n        // Эффект для исключительных случаев, когда нужно обновить значение textValue при изменении items,\n        // но только если значение textValue совпадает с value в item.\n        useLayoutEffect(() => {\n            if (!multiple && value && valueToItemMap.get(value as string)?.value === textValue) {\n                setTextValue(valueToItemMap.get(value as string)?.label || value.toString());\n            }\n        }, [items]);\n\n        // При изменении value нужно возвращать значение в инпуте к исходному.\n        useDidMountLayoutEffect(() => {\n            setTextValue(getTextValue(multiple, value, valueToItemMap, renderValue));\n        }, [outerValue, internalValue]);\n\n        useLayoutEffect(() => {\n            if (defaultValue) {\n                setInternalValue(defaultValue);\n            }\n        }, [defaultValue]);\n\n        // Эффект для раскрытия дерева при поиске.\n        useLayoutEffect(() => {\n            if (treeView) {\n                // Если пользователь выбирает элемент, то выходим из эффекта.\n                if (textValue === getTextValue(multiple, value, valueToItemMap, renderValue)) {\n                    return;\n                }\n\n                // Если поле ввода стало пустым, то скрывает все узлы дерева.\n                if (textValue === '') {\n                    dispatchTreePath({ type: 'reset' });\n                } else {\n                    // Иначе раскрываем все узлы, когда пользователь начинает вводить текст в поле ввода.\n                    dispatchTreePath({ type: 'expand_all', value: filteredItems });\n                }\n            }\n        }, [textValue]);\n\n        return (\n            <Root\n                size={size}\n                view={view}\n                labelPlacement={labelPlacement}\n                disabled={disabled}\n                readOnly={readOnly}\n                name={name}\n                hintView={hintView}\n                hintSize={hintSize}\n                ref={rootRef}\n            >\n                {name && (\n                    <SelectNative\n                        items={valueToItemMap}\n                        name={name}\n                        value={internalValue}\n                        multiple={multiple}\n                        onChange={onChange}\n                        onSetValue={setInternalValue}\n                        ref={ref as ForwardedRef<HTMLInputElement>}\n                    />\n                )}\n                <div>\n                    <Context.Provider\n                        value={{\n                            focusedPath,\n                            checked,\n                            multiple,\n                            size,\n                            handleCheckboxChange,\n                            handleItemClick,\n                            variant,\n                            renderItem,\n                            treeId,\n                            // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n                            // @ts-ignore\n                            // eslint-disable-next-line no-underscore-dangle\n                            _checkboxAppearance: (rest as any)._checkboxAppearance,\n                            treePath,\n                            dispatchTreePath,\n                            arrowPlacement,\n                            valueToPathMap,\n                        }}\n                    >\n                        <FloatingPopover\n                            ref={floatingPopoverRef}\n                            opened={isCurrentListOpen}\n                            placement={placement}\n                            portal={portal}\n                            listWidth={listWidth}\n                            offset={_offset}\n                            target={(referenceRef) => (\n                                <div onClick={handleTargetClick}>\n                                    <StyledTextField\n                                        ref={name ? inputRef : (inputForkRef as ForwardedRef<HTMLInputElement>)}\n                                        inputWrapperRef={referenceRef}\n                                        value={textValue}\n                                        onChange={handleTextValueChange}\n                                        size={size}\n                                        view={view}\n                                        disabled={disabled}\n                                        readOnly={readOnly}\n                                        label={label}\n                                        placeholder={placeholder}\n                                        contentLeft={contentLeft}\n                                        contentRight={\n                                            <IconArrowWrapper\n                                                disabled={disabled}\n                                                onClick={handleClickArrow}\n                                                className={classes.comboboxTargetArrow}\n                                            >\n                                                <StyledArrow\n                                                    color=\"inherit\"\n                                                    size={sizeToIconSize(size)}\n                                                    className={withArrowInverse}\n                                                />\n                                            </IconArrowWrapper>\n                                        }\n                                        textBefore={textBefore}\n                                        textAfter={textAfter}\n                                        onKeyDown={onKeyDown}\n                                        leftHelper={\n                                            helperText && (\n                                                <StyledLeftHelper onClick={helperTextStopPropagation}>\n                                                    {helperText}\n                                                </StyledLeftHelper>\n                                            )\n                                        }\n                                        role=\"combobox\"\n                                        aria-autocomplete=\"list\"\n                                        aria-controls={`${treeId}_tree_level_1`}\n                                        aria-expanded={isCurrentListOpen}\n                                        aria-activedescendant={\n                                            activeDescendantItemValue\n                                                ? getItemId(treeId, activeDescendantItemValue)\n                                                : ''\n                                        }\n                                        labelPlacement={labelPlacement}\n                                        keepPlaceholder={keepPlaceholder}\n                                        {...(multiple\n                                            ? {\n                                                  enumerationType: 'chip',\n                                                  _chipClickArea: chipClickArea,\n                                                  _chips: getChips(),\n                                                  _onChipCloseClick: handleChipClick,\n                                              }\n                                            : { enumerationType: 'plain' })}\n                                        {...rest}\n                                        _onEnterDisabled // Пропс для отключения обработчика Enter внутри Textfield\n                                    />\n                                </div>\n                            )}\n                            zIndex={zIndex}\n                            isInner={false}\n                        >\n                            <Root\n                                size={size}\n                                view={view}\n                                labelPlacement={labelPlacement}\n                                disabled={disabled}\n                                readOnly={readOnly}\n                                name={name}\n                            >\n                                {isEmpty(filteredItems) ? (\n                                    <StyledEmptyState\n                                        className={classes.emptyStateWrapper}\n                                        size={size}\n                                        description={emptyStateDescription || 'Ничего не найдено'}\n                                    />\n                                ) : (\n                                    <>\n                                        {treeView ? (\n                                            <TreeList\n                                                items={filteredItems}\n                                                listMaxHeight={listMaxHeight || listHeight}\n                                                onScroll={virtual ? undefined : onScroll}\n                                                virtual={virtual}\n                                                beforeList={beforeList}\n                                                afterList={afterList}\n                                            />\n                                        ) : (\n                                            <ListWrapper ref={listWrapperRef} listWidth={listWidth}>\n                                                <Ul\n                                                    role=\"tree\"\n                                                    id={`${treeId}_tree_level_1`}\n                                                    aria-multiselectable={Boolean(multiple)}\n                                                    listMaxHeight={listMaxHeight || listHeight}\n                                                    virtual={virtual}\n                                                    onScroll={virtual ? undefined : onScroll}\n                                                >\n                                                    {beforeList}\n\n                                                    {props.multiple && props.selectAllOptions && (\n                                                        // TODO: #2004\n                                                        <SelectAll\n                                                            selectAllOptions={props.selectAllOptions}\n                                                            variant={variant}\n                                                        />\n                                                    )}\n\n                                                    {virtual ? (\n                                                        <VirtualList\n                                                            items={filteredItems}\n                                                            listMaxHeight={listMaxHeight || listHeight}\n                                                            onScroll={onScroll}\n                                                        />\n                                                    ) : (\n                                                        filteredItems.map((item, index) => (\n                                                            <Inner\n                                                                key={`${index}/0`}\n                                                                item={item}\n                                                                currentLevel={0}\n                                                                path={path}\n                                                                dispatchPath={dispatchPath}\n                                                                index={index}\n                                                                listWidth={listWidth}\n                                                                portal={listWrapperRef}\n                                                            />\n                                                        ))\n                                                    )}\n\n                                                    {afterList}\n                                                </Ul>\n                                            </ListWrapper>\n                                        )}\n                                    </>\n                                )}\n                            </Root>\n                        </FloatingPopover>\n                    </Context.Provider>\n                </div>\n            </Root>\n        );\n    });\n\nexport const comboboxConfig = {\n    name: 'Select',\n    tag: 'div',\n    layout: comboboxRoot,\n    base,\n    variations: {\n        view: {\n            css: viewCSS,\n        },\n        size: {\n            css: sizeCSS,\n        },\n        readOnly: {\n            css: sizeCSS,\n        },\n    },\n    defaults: {\n        view: 'default',\n        size: 'm',\n        labelPlacement: 'outer',\n    },\n};\n"],"names":["comboboxRoot","Root","forwardRef","props","ref","_getItemByFocused","_StyledLeftHelper","name","multiple","outerValue","value","defaultValue","isTargetAmount","targetAmount","items","_props$treeView","treeView","_props$arrowPlacement","arrowPlacement","_props$placement","placement","label","placeholder","helperText","contentLeft","textBefore","textAfter","_props$variant","variant","listHeight","listMaxHeight","listWidth","portal","renderItem","view","size","labelPlacement","keepPlaceholder","_props$readOnly","readOnly","_props$disabled","disabled","_props$alwaysOpened","alwaysOpened","filter","outerCloseAfterSelect","closeAfterSelect","renderValue","zIndex","beforeList","afterList","_props$virtual","virtual","hintView","hintSize","emptyStateDescription","onChangeValue","onScroll","onToggle","_props$mode","mode","_props$chipClickArea","chipClickArea","_offset","rest","_objectWithoutProperties","_excluded","transformedItems","useMemo","initialItemsTransform","_useMemo","getTreeMaps","_useMemo2","_slicedToArray","valueToCheckedMap","valueToItemMap","valueToPathMap","_useState","useState","getTextValue","_useState2","textValue","setTextValue","_useState3","_useState4","internalValue","setInternalValue","undefined","rootRef","useRef","inputRef","floatingPopoverRef","inputForkRef","useForkRef","listWrapperRef","treeId","safeUseId","filteredItems","filterItems","_useMemo3","getPathMap","_useMemo4","pathMap","focusedToValueMap","initialPath","_useReducer","useReducer","pathReducer","_useReducer2","path","dispatchPath","_useReducer3","focusedPathReducer","_useReducer4","focusedPath","dispatchFocusedPath","_useState5","_useState6","checked","setChecked","_useReducer5","treePathReducer","_useReducer6","treePath","dispatchTreePath","isCurrentListOpen","Boolean","activeDescendantItemValue","getItemByFocused","withArrowInverse","classes","arrowInverse","useOutsideClick","handleListToggle","onChange","newValue","item","Array","isArray","_typeof","handleClickArrow","e","stopPropagation","handleTextValueChange","target","type","handleChipClick","chip","val","_valueToItemMap$get","get","opened","_rootRef$current","el","current","querySelector","length","scrollLeft","handleCheckboxChange","checkedCopy","Map","updateDescendants","set","newValues","forEach","key","push","has","handleItemClick","isEmpty","isCurrentChecked","handleTargetClick","getChips","concat","every","_valueToItemMap$get2","map","_valueToItemMap$get3","_valueToItemMap$get4","currentLabel","toString","handlePressDown","helperTextStopPropagation","event","_useKeyNavigation","useKeyNavigation","onKeyDown","useLayoutEffect","_","updateAncestors","updateSingleAncestors","_valueToItemMap$get5","_valueToItemMap$get6","useDidMountLayoutEffect","React","createElement","SelectNative","onSetValue","Context","Provider","_checkboxAppearance","FloatingPopover","offset","referenceRef","onClick","StyledTextField","_extends","inputWrapperRef","contentRight","IconArrowWrapper","className","comboboxTargetArrow","StyledArrow","color","sizeToIconSize","leftHelper","StyledLeftHelper","role","getItemId","enumerationType","_chipClickArea","_chips","_onChipCloseClick","_onEnterDisabled","isInner","StyledEmptyState","emptyStateWrapper","description","Fragment","TreeList","ListWrapper","Ul","id","selectAllOptions","SelectAll","VirtualList","index","Inner","currentLevel","comboboxConfig","tag","layout","base","variations","css","viewCSS","sizeCSS","defaults"],"mappings":"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"}
         
     | 
| 
         @@ -1,4 +1,6 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            import { toConsumableArray as _toConsumableArray, createForOfIteratorHelper as _createForOfIteratorHelper } from '../../../../_virtual/_rollupPluginBabelHelpers.js';
         
     | 
| 
       1 
2 
     | 
    
         
             
            import { isEmpty } from '../../../../utils/isEmpty.js';
         
     | 
| 
      
 3 
     | 
    
         
            +
            import { keyExists } from '../../../Select/reducers/treePathReducer.js';
         
     | 
| 
       2 
4 
     | 
    
         | 
| 
       3 
5 
     | 
    
         
             
            var JUMP_SIZE = 10;
         
     | 
| 
       4 
6 
     | 
    
         
             
            var keys = {
         
     | 
| 
         @@ -22,6 +24,7 @@ var getItemByFocused = function getItemByFocused(focusedPath, focusedToValueMap) 
     | 
|
| 
       22 
24 
     | 
    
         
             
              }, '').replace(/^(\/)/, '');
         
     | 
| 
       23 
25 
     | 
    
         
             
              return focusedToValueMap.get(focusedPathAsString);
         
     | 
| 
       24 
26 
     | 
    
         
             
            };
         
     | 
| 
      
 27 
     | 
    
         
            +
            // #TODO: подумать над идеей выноса логики фокуса непосредственно в focusedPathReducer.
         
     | 
| 
       25 
28 
     | 
    
         
             
            var useKeyNavigation = function useKeyNavigation(_ref) {
         
     | 
| 
       26 
29 
     | 
    
         
             
              var focusedPath = _ref.focusedPath,
         
     | 
| 
       27 
30 
     | 
    
         
             
                dispatchFocusedPath = _ref.dispatchFocusedPath,
         
     | 
| 
         @@ -35,7 +38,69 @@ var useKeyNavigation = function useKeyNavigation(_ref) { 
     | 
|
| 
       35 
38 
     | 
    
         
             
                multiple = _ref.multiple,
         
     | 
| 
       36 
39 
     | 
    
         
             
                value = _ref.value,
         
     | 
| 
       37 
40 
     | 
    
         
             
                textValue = _ref.textValue,
         
     | 
| 
       38 
     | 
    
         
            -
                valueToItemMap = _ref.valueToItemMap 
     | 
| 
      
 41 
     | 
    
         
            +
                valueToItemMap = _ref.valueToItemMap,
         
     | 
| 
      
 42 
     | 
    
         
            +
                treePath = _ref.treePath,
         
     | 
| 
      
 43 
     | 
    
         
            +
                dispatchTreePath = _ref.dispatchTreePath,
         
     | 
| 
      
 44 
     | 
    
         
            +
                treeView = _ref.treeView,
         
     | 
| 
      
 45 
     | 
    
         
            +
                valueToPathMap = _ref.valueToPathMap,
         
     | 
| 
      
 46 
     | 
    
         
            +
                items = _ref.items;
         
     | 
| 
      
 47 
     | 
    
         
            +
              if (treeView) {
         
     | 
| 
      
 48 
     | 
    
         
            +
                return keyboardNavigationTree({
         
     | 
| 
      
 49 
     | 
    
         
            +
                  focusedPath: focusedPath,
         
     | 
| 
      
 50 
     | 
    
         
            +
                  dispatchFocusedPath: dispatchFocusedPath,
         
     | 
| 
      
 51 
     | 
    
         
            +
                  path: path,
         
     | 
| 
      
 52 
     | 
    
         
            +
                  dispatchPath: dispatchPath,
         
     | 
| 
      
 53 
     | 
    
         
            +
                  pathMap: pathMap,
         
     | 
| 
      
 54 
     | 
    
         
            +
                  focusedToValueMap: focusedToValueMap,
         
     | 
| 
      
 55 
     | 
    
         
            +
                  handleListToggle: handleListToggle,
         
     | 
| 
      
 56 
     | 
    
         
            +
                  handlePressDown: handlePressDown,
         
     | 
| 
      
 57 
     | 
    
         
            +
                  setTextValue: setTextValue,
         
     | 
| 
      
 58 
     | 
    
         
            +
                  multiple: multiple,
         
     | 
| 
      
 59 
     | 
    
         
            +
                  value: value,
         
     | 
| 
      
 60 
     | 
    
         
            +
                  textValue: textValue,
         
     | 
| 
      
 61 
     | 
    
         
            +
                  valueToItemMap: valueToItemMap,
         
     | 
| 
      
 62 
     | 
    
         
            +
                  treePath: treePath,
         
     | 
| 
      
 63 
     | 
    
         
            +
                  dispatchTreePath: dispatchTreePath,
         
     | 
| 
      
 64 
     | 
    
         
            +
                  treeView: treeView,
         
     | 
| 
      
 65 
     | 
    
         
            +
                  valueToPathMap: valueToPathMap,
         
     | 
| 
      
 66 
     | 
    
         
            +
                  items: items
         
     | 
| 
      
 67 
     | 
    
         
            +
                });
         
     | 
| 
      
 68 
     | 
    
         
            +
              }
         
     | 
| 
      
 69 
     | 
    
         
            +
              return keyboardNavigationDefault({
         
     | 
| 
      
 70 
     | 
    
         
            +
                focusedPath: focusedPath,
         
     | 
| 
      
 71 
     | 
    
         
            +
                dispatchFocusedPath: dispatchFocusedPath,
         
     | 
| 
      
 72 
     | 
    
         
            +
                path: path,
         
     | 
| 
      
 73 
     | 
    
         
            +
                dispatchPath: dispatchPath,
         
     | 
| 
      
 74 
     | 
    
         
            +
                pathMap: pathMap,
         
     | 
| 
      
 75 
     | 
    
         
            +
                focusedToValueMap: focusedToValueMap,
         
     | 
| 
      
 76 
     | 
    
         
            +
                handleListToggle: handleListToggle,
         
     | 
| 
      
 77 
     | 
    
         
            +
                handlePressDown: handlePressDown,
         
     | 
| 
      
 78 
     | 
    
         
            +
                setTextValue: setTextValue,
         
     | 
| 
      
 79 
     | 
    
         
            +
                multiple: multiple,
         
     | 
| 
      
 80 
     | 
    
         
            +
                value: value,
         
     | 
| 
      
 81 
     | 
    
         
            +
                textValue: textValue,
         
     | 
| 
      
 82 
     | 
    
         
            +
                valueToItemMap: valueToItemMap,
         
     | 
| 
      
 83 
     | 
    
         
            +
                treePath: treePath,
         
     | 
| 
      
 84 
     | 
    
         
            +
                dispatchTreePath: dispatchTreePath,
         
     | 
| 
      
 85 
     | 
    
         
            +
                treeView: treeView,
         
     | 
| 
      
 86 
     | 
    
         
            +
                valueToPathMap: valueToPathMap,
         
     | 
| 
      
 87 
     | 
    
         
            +
                items: items
         
     | 
| 
      
 88 
     | 
    
         
            +
              });
         
     | 
| 
      
 89 
     | 
    
         
            +
            };
         
     | 
| 
      
 90 
     | 
    
         
            +
            var keyboardNavigationDefault = function keyboardNavigationDefault(_ref2) {
         
     | 
| 
      
 91 
     | 
    
         
            +
              var focusedPath = _ref2.focusedPath,
         
     | 
| 
      
 92 
     | 
    
         
            +
                dispatchFocusedPath = _ref2.dispatchFocusedPath,
         
     | 
| 
      
 93 
     | 
    
         
            +
                path = _ref2.path,
         
     | 
| 
      
 94 
     | 
    
         
            +
                dispatchPath = _ref2.dispatchPath,
         
     | 
| 
      
 95 
     | 
    
         
            +
                pathMap = _ref2.pathMap,
         
     | 
| 
      
 96 
     | 
    
         
            +
                focusedToValueMap = _ref2.focusedToValueMap,
         
     | 
| 
      
 97 
     | 
    
         
            +
                handleListToggle = _ref2.handleListToggle,
         
     | 
| 
      
 98 
     | 
    
         
            +
                handlePressDown = _ref2.handlePressDown,
         
     | 
| 
      
 99 
     | 
    
         
            +
                setTextValue = _ref2.setTextValue,
         
     | 
| 
      
 100 
     | 
    
         
            +
                multiple = _ref2.multiple,
         
     | 
| 
      
 101 
     | 
    
         
            +
                value = _ref2.value,
         
     | 
| 
      
 102 
     | 
    
         
            +
                textValue = _ref2.textValue,
         
     | 
| 
      
 103 
     | 
    
         
            +
                valueToItemMap = _ref2.valueToItemMap;
         
     | 
| 
       39 
104 
     | 
    
         
             
              var currentIndex = (focusedPath === null || focusedPath === void 0 ? void 0 : focusedPath[focusedPath.length - 1]) || 0;
         
     | 
| 
       40 
105 
     | 
    
         
             
              var currentLength = pathMap.get(path === null || path === void 0 ? void 0 : path[focusedPath.length - 1]) || 0;
         
     | 
| 
       41 
106 
     | 
    
         
             
              var onKeyDown = function onKeyDown(event) {
         
     | 
| 
         @@ -289,6 +354,259 @@ var useKeyNavigation = function useKeyNavigation(_ref) { 
     | 
|
| 
       289 
354 
     | 
    
         
             
                onKeyDown: onKeyDown
         
     | 
| 
       290 
355 
     | 
    
         
             
              };
         
     | 
| 
       291 
356 
     | 
    
         
             
            };
         
     | 
| 
      
 357 
     | 
    
         
            +
            var keyboardNavigationTree = function keyboardNavigationTree(_ref3) {
         
     | 
| 
      
 358 
     | 
    
         
            +
              var _currentItem$parent;
         
     | 
| 
      
 359 
     | 
    
         
            +
              var focusedPath = _ref3.focusedPath,
         
     | 
| 
      
 360 
     | 
    
         
            +
                dispatchFocusedPath = _ref3.dispatchFocusedPath,
         
     | 
| 
      
 361 
     | 
    
         
            +
                path = _ref3.path,
         
     | 
| 
      
 362 
     | 
    
         
            +
                dispatchPath = _ref3.dispatchPath,
         
     | 
| 
      
 363 
     | 
    
         
            +
                pathMap = _ref3.pathMap,
         
     | 
| 
      
 364 
     | 
    
         
            +
                focusedToValueMap = _ref3.focusedToValueMap,
         
     | 
| 
      
 365 
     | 
    
         
            +
                handleListToggle = _ref3.handleListToggle,
         
     | 
| 
      
 366 
     | 
    
         
            +
                handlePressDown = _ref3.handlePressDown,
         
     | 
| 
      
 367 
     | 
    
         
            +
                setTextValue = _ref3.setTextValue,
         
     | 
| 
      
 368 
     | 
    
         
            +
                multiple = _ref3.multiple,
         
     | 
| 
      
 369 
     | 
    
         
            +
                value = _ref3.value,
         
     | 
| 
      
 370 
     | 
    
         
            +
                textValue = _ref3.textValue,
         
     | 
| 
      
 371 
     | 
    
         
            +
                valueToItemMap = _ref3.valueToItemMap,
         
     | 
| 
      
 372 
     | 
    
         
            +
                treePath = _ref3.treePath,
         
     | 
| 
      
 373 
     | 
    
         
            +
                dispatchTreePath = _ref3.dispatchTreePath,
         
     | 
| 
      
 374 
     | 
    
         
            +
                valueToPathMap = _ref3.valueToPathMap,
         
     | 
| 
      
 375 
     | 
    
         
            +
                items = _ref3.items;
         
     | 
| 
      
 376 
     | 
    
         
            +
              var currentItem = getItemByFocused(focusedPath, focusedToValueMap);
         
     | 
| 
      
 377 
     | 
    
         
            +
              var currentIndex = (focusedPath === null || focusedPath === void 0 ? void 0 : focusedPath[focusedPath.length - 1]) || 0;
         
     | 
| 
      
 378 
     | 
    
         
            +
              var currentLength = (currentItem === null || currentItem === void 0 || (_currentItem$parent = currentItem.parent) === null || _currentItem$parent === void 0 || (_currentItem$parent = _currentItem$parent.items) === null || _currentItem$parent === void 0 ? void 0 : _currentItem$parent.length) || pathMap.get('root') || 0;
         
     | 
| 
      
 379 
     | 
    
         
            +
              var isValidFocus = function isValidFocus(focusCandidate) {
         
     | 
| 
      
 380 
     | 
    
         
            +
                if (!Array.isArray(items) || !Array.isArray(focusCandidate)) return false;
         
     | 
| 
      
 381 
     | 
    
         
            +
                var currentLevel = items;
         
     | 
| 
      
 382 
     | 
    
         
            +
                var _iterator = _createForOfIteratorHelper(focusCandidate),
         
     | 
| 
      
 383 
     | 
    
         
            +
                  _step;
         
     | 
| 
      
 384 
     | 
    
         
            +
                try {
         
     | 
| 
      
 385 
     | 
    
         
            +
                  for (_iterator.s(); !(_step = _iterator.n()).done;) {
         
     | 
| 
      
 386 
     | 
    
         
            +
                    var index = _step.value;
         
     | 
| 
      
 387 
     | 
    
         
            +
                    if (!Array.isArray(currentLevel) || index >= currentLevel.length) {
         
     | 
| 
      
 388 
     | 
    
         
            +
                      return false;
         
     | 
| 
      
 389 
     | 
    
         
            +
                    }
         
     | 
| 
      
 390 
     | 
    
         
            +
                    var node = currentLevel[index];
         
     | 
| 
      
 391 
     | 
    
         
            +
                    currentLevel = node.items || [];
         
     | 
| 
      
 392 
     | 
    
         
            +
                  }
         
     | 
| 
      
 393 
     | 
    
         
            +
                } catch (err) {
         
     | 
| 
      
 394 
     | 
    
         
            +
                  _iterator.e(err);
         
     | 
| 
      
 395 
     | 
    
         
            +
                } finally {
         
     | 
| 
      
 396 
     | 
    
         
            +
                  _iterator.f();
         
     | 
| 
      
 397 
     | 
    
         
            +
                }
         
     | 
| 
      
 398 
     | 
    
         
            +
                return true;
         
     | 
| 
      
 399 
     | 
    
         
            +
              };
         
     | 
| 
      
 400 
     | 
    
         
            +
              var onKeyDown = function onKeyDown(event) {
         
     | 
| 
      
 401 
     | 
    
         
            +
                switch (event.code) {
         
     | 
| 
      
 402 
     | 
    
         
            +
                  case keys.ArrowUp:
         
     | 
| 
      
 403 
     | 
    
         
            +
                    {
         
     | 
| 
      
 404 
     | 
    
         
            +
                      if (path[0]) {
         
     | 
| 
      
 405 
     | 
    
         
            +
                        event.stopPropagation();
         
     | 
| 
      
 406 
     | 
    
         
            +
                        event.preventDefault();
         
     | 
| 
      
 407 
     | 
    
         
            +
                      }
         
     | 
| 
      
 408 
     | 
    
         
            +
             
     | 
| 
      
 409 
     | 
    
         
            +
                      /**
         
     | 
| 
      
 410 
     | 
    
         
            +
                       * Если список открыт и фокус уже установлен на каком-либо элементе.
         
     | 
| 
      
 411 
     | 
    
         
            +
                       * */
         
     | 
| 
      
 412 
     | 
    
         
            +
                      if (focusedPath.length) {
         
     | 
| 
      
 413 
     | 
    
         
            +
                        /**
         
     | 
| 
      
 414 
     | 
    
         
            +
                         * Если это не первый элемент, то нужно вначале найти элемент для фокуса.
         
     | 
| 
      
 415 
     | 
    
         
            +
                         * Т.к. если верхний элемент раскрыт, то и перемещаться нужно не на него,
         
     | 
| 
      
 416 
     | 
    
         
            +
                         * а на его самый нижний дочерний элемент.
         
     | 
| 
      
 417 
     | 
    
         
            +
                         * */
         
     | 
| 
      
 418 
     | 
    
         
            +
                        if (currentIndex > 0) {
         
     | 
| 
      
 419 
     | 
    
         
            +
                          var nextFocus = [].concat(_toConsumableArray(focusedPath.slice(0, -1)), [currentIndex - 1]);
         
     | 
| 
      
 420 
     | 
    
         
            +
                          for (var i = 0; i <= focusedPath.length; i++) {
         
     | 
| 
      
 421 
     | 
    
         
            +
                            var focusedPathAsString = nextFocus.reduce(function (acc, n) {
         
     | 
| 
      
 422 
     | 
    
         
            +
                              return "".concat(acc, "/").concat(n);
         
     | 
| 
      
 423 
     | 
    
         
            +
                            }, '').replace(/^(\/)/, '');
         
     | 
| 
      
 424 
     | 
    
         
            +
                            var item = focusedToValueMap.get(focusedPathAsString);
         
     | 
| 
      
 425 
     | 
    
         
            +
                            var isLevelOpened = keyExists(treePath, valueToPathMap.get(item === null || item === void 0 ? void 0 : item.value.toString()) || []);
         
     | 
| 
      
 426 
     | 
    
         
            +
                            if (isLevelOpened) {
         
     | 
| 
      
 427 
     | 
    
         
            +
                              var _item$items;
         
     | 
| 
      
 428 
     | 
    
         
            +
                              nextFocus = [].concat(_toConsumableArray(nextFocus), [((item === null || item === void 0 || (_item$items = item.items) === null || _item$items === void 0 ? void 0 : _item$items.length) || 0) - 1]);
         
     | 
| 
      
 429 
     | 
    
         
            +
                            } else {
         
     | 
| 
      
 430 
     | 
    
         
            +
                              break;
         
     | 
| 
      
 431 
     | 
    
         
            +
                            }
         
     | 
| 
      
 432 
     | 
    
         
            +
                          }
         
     | 
| 
      
 433 
     | 
    
         
            +
                          dispatchFocusedPath({
         
     | 
| 
      
 434 
     | 
    
         
            +
                            type: 'set_focus',
         
     | 
| 
      
 435 
     | 
    
         
            +
                            value: nextFocus
         
     | 
| 
      
 436 
     | 
    
         
            +
                          });
         
     | 
| 
      
 437 
     | 
    
         
            +
                        } else {
         
     | 
| 
      
 438 
     | 
    
         
            +
                          /**
         
     | 
| 
      
 439 
     | 
    
         
            +
                           * Если элемент первый, то нужно лишь подняться к его родителю.
         
     | 
| 
      
 440 
     | 
    
         
            +
                           * */
         
     | 
| 
      
 441 
     | 
    
         
            +
                          dispatchFocusedPath({
         
     | 
| 
      
 442 
     | 
    
         
            +
                            type: 'return_prev_focus'
         
     | 
| 
      
 443 
     | 
    
         
            +
                          });
         
     | 
| 
      
 444 
     | 
    
         
            +
                        }
         
     | 
| 
      
 445 
     | 
    
         
            +
                      } else {
         
     | 
| 
      
 446 
     | 
    
         
            +
                        /**
         
     | 
| 
      
 447 
     | 
    
         
            +
                         * Если список закрыт, то нужно его открыть и установить фокус на первый элемент.
         
     | 
| 
      
 448 
     | 
    
         
            +
                         * */
         
     | 
| 
      
 449 
     | 
    
         
            +
                        dispatchPath({
         
     | 
| 
      
 450 
     | 
    
         
            +
                          type: 'opened_first_level'
         
     | 
| 
      
 451 
     | 
    
         
            +
                        });
         
     | 
| 
      
 452 
     | 
    
         
            +
                        dispatchFocusedPath({
         
     | 
| 
      
 453 
     | 
    
         
            +
                          type: 'set_initial_focus'
         
     | 
| 
      
 454 
     | 
    
         
            +
                        });
         
     | 
| 
      
 455 
     | 
    
         
            +
                        handleListToggle(true);
         
     | 
| 
      
 456 
     | 
    
         
            +
                      }
         
     | 
| 
      
 457 
     | 
    
         
            +
                      break;
         
     | 
| 
      
 458 
     | 
    
         
            +
                    }
         
     | 
| 
      
 459 
     | 
    
         
            +
                  case keys.ArrowDown:
         
     | 
| 
      
 460 
     | 
    
         
            +
                    {
         
     | 
| 
      
 461 
     | 
    
         
            +
                      if (path[0]) {
         
     | 
| 
      
 462 
     | 
    
         
            +
                        event.stopPropagation();
         
     | 
| 
      
 463 
     | 
    
         
            +
                        event.preventDefault();
         
     | 
| 
      
 464 
     | 
    
         
            +
                      }
         
     | 
| 
      
 465 
     | 
    
         
            +
             
     | 
| 
      
 466 
     | 
    
         
            +
                      /**
         
     | 
| 
      
 467 
     | 
    
         
            +
                       * Если список открыт и фокус уже установлен на каком-либо элементе.
         
     | 
| 
      
 468 
     | 
    
         
            +
                       * */
         
     | 
| 
      
 469 
     | 
    
         
            +
                      if (focusedPath.length) {
         
     | 
| 
      
 470 
     | 
    
         
            +
                        /**
         
     | 
| 
      
 471 
     | 
    
         
            +
                         * Заходим сюда если у элемента есть другие вложенные элементы.
         
     | 
| 
      
 472 
     | 
    
         
            +
                         * */
         
     | 
| 
      
 473 
     | 
    
         
            +
                        if (currentItem !== null && currentItem !== void 0 && currentItem.items && currentItem !== null && currentItem !== void 0 && currentItem.items.length) {
         
     | 
| 
      
 474 
     | 
    
         
            +
                          var isCurrentLevelOpened = keyExists(treePath, valueToPathMap.get(currentItem.value.toString()) || []);
         
     | 
| 
      
 475 
     | 
    
         
            +
             
     | 
| 
      
 476 
     | 
    
         
            +
                          /**
         
     | 
| 
      
 477 
     | 
    
         
            +
                           * Если у этого элемента открыт его дочерний список,
         
     | 
| 
      
 478 
     | 
    
         
            +
                           * то устанавливаем фокус на первый элемент из этого списка
         
     | 
| 
      
 479 
     | 
    
         
            +
                           * и сразу же выходим из обработчика события.
         
     | 
| 
      
 480 
     | 
    
         
            +
                           * */
         
     | 
| 
      
 481 
     | 
    
         
            +
                          if (isCurrentLevelOpened) {
         
     | 
| 
      
 482 
     | 
    
         
            +
                            dispatchFocusedPath({
         
     | 
| 
      
 483 
     | 
    
         
            +
                              type: 'add_focus',
         
     | 
| 
      
 484 
     | 
    
         
            +
                              value: 0
         
     | 
| 
      
 485 
     | 
    
         
            +
                            });
         
     | 
| 
      
 486 
     | 
    
         
            +
                            break;
         
     | 
| 
      
 487 
     | 
    
         
            +
                          }
         
     | 
| 
      
 488 
     | 
    
         
            +
                        }
         
     | 
| 
      
 489 
     | 
    
         
            +
             
     | 
| 
      
 490 
     | 
    
         
            +
                        /**
         
     | 
| 
      
 491 
     | 
    
         
            +
                         * Если мы еще не достигли конца списка, то движемся к следующему элементу.
         
     | 
| 
      
 492 
     | 
    
         
            +
                         * */
         
     | 
| 
      
 493 
     | 
    
         
            +
                        if (currentIndex + 1 < currentLength) {
         
     | 
| 
      
 494 
     | 
    
         
            +
                          dispatchFocusedPath({
         
     | 
| 
      
 495 
     | 
    
         
            +
                            type: 'change_last_focus',
         
     | 
| 
      
 496 
     | 
    
         
            +
                            value: currentIndex + 1
         
     | 
| 
      
 497 
     | 
    
         
            +
                          });
         
     | 
| 
      
 498 
     | 
    
         
            +
                        } else {
         
     | 
| 
      
 499 
     | 
    
         
            +
                          /**
         
     | 
| 
      
 500 
     | 
    
         
            +
                           * Если же достигли последнего элемента на текущем уровне, то нужно определить,
         
     | 
| 
      
 501 
     | 
    
         
            +
                           * на какой из элементов ниже мы перейдем.
         
     | 
| 
      
 502 
     | 
    
         
            +
                           * Переход фокуса отсюда может быть только на уровни выше, при чем сразу на несколько.
         
     | 
| 
      
 503 
     | 
    
         
            +
                           * */
         
     | 
| 
      
 504 
     | 
    
         
            +
                          var focusCandidate = _toConsumableArray(focusedPath);
         
     | 
| 
      
 505 
     | 
    
         
            +
                          var _nextFocus = null;
         
     | 
| 
      
 506 
     | 
    
         
            +
                          while (focusCandidate.length > 1) {
         
     | 
| 
      
 507 
     | 
    
         
            +
                            focusCandidate = [].concat(_toConsumableArray(focusCandidate.slice(0, -2)), [(focusCandidate.at(-2) || 0) + 1]);
         
     | 
| 
      
 508 
     | 
    
         
            +
                            if (isValidFocus(focusCandidate)) {
         
     | 
| 
      
 509 
     | 
    
         
            +
                              _nextFocus = focusCandidate;
         
     | 
| 
      
 510 
     | 
    
         
            +
                              break;
         
     | 
| 
      
 511 
     | 
    
         
            +
                            }
         
     | 
| 
      
 512 
     | 
    
         
            +
                          }
         
     | 
| 
      
 513 
     | 
    
         
            +
                          if (_nextFocus) {
         
     | 
| 
      
 514 
     | 
    
         
            +
                            dispatchFocusedPath({
         
     | 
| 
      
 515 
     | 
    
         
            +
                              type: 'set_focus',
         
     | 
| 
      
 516 
     | 
    
         
            +
                              value: _nextFocus
         
     | 
| 
      
 517 
     | 
    
         
            +
                            });
         
     | 
| 
      
 518 
     | 
    
         
            +
                          } else {
         
     | 
| 
      
 519 
     | 
    
         
            +
                            break;
         
     | 
| 
      
 520 
     | 
    
         
            +
                          }
         
     | 
| 
      
 521 
     | 
    
         
            +
                        }
         
     | 
| 
      
 522 
     | 
    
         
            +
                      } else {
         
     | 
| 
      
 523 
     | 
    
         
            +
                        /**
         
     | 
| 
      
 524 
     | 
    
         
            +
                         * Если список закрыт, то нужно его открыть и установить фокус на первый элемент.
         
     | 
| 
      
 525 
     | 
    
         
            +
                         * */
         
     | 
| 
      
 526 
     | 
    
         
            +
                        dispatchPath({
         
     | 
| 
      
 527 
     | 
    
         
            +
                          type: 'opened_first_level'
         
     | 
| 
      
 528 
     | 
    
         
            +
                        });
         
     | 
| 
      
 529 
     | 
    
         
            +
                        dispatchFocusedPath({
         
     | 
| 
      
 530 
     | 
    
         
            +
                          type: 'set_initial_focus'
         
     | 
| 
      
 531 
     | 
    
         
            +
                        });
         
     | 
| 
      
 532 
     | 
    
         
            +
                        handleListToggle(true);
         
     | 
| 
      
 533 
     | 
    
         
            +
                      }
         
     | 
| 
      
 534 
     | 
    
         
            +
                      break;
         
     | 
| 
      
 535 
     | 
    
         
            +
                    }
         
     | 
| 
      
 536 
     | 
    
         
            +
                  case keys.ArrowLeft:
         
     | 
| 
      
 537 
     | 
    
         
            +
                    {
         
     | 
| 
      
 538 
     | 
    
         
            +
                      if (path[0]) {
         
     | 
| 
      
 539 
     | 
    
         
            +
                        event.stopPropagation();
         
     | 
| 
      
 540 
     | 
    
         
            +
                        event.preventDefault();
         
     | 
| 
      
 541 
     | 
    
         
            +
                        if (focusedPath.length) {
         
     | 
| 
      
 542 
     | 
    
         
            +
                          dispatchTreePath({
         
     | 
| 
      
 543 
     | 
    
         
            +
                            type: 'close_level',
         
     | 
| 
      
 544 
     | 
    
         
            +
                            value: valueToPathMap.get((currentItem === null || currentItem === void 0 ? void 0 : currentItem.value.toString()) || '') || []
         
     | 
| 
      
 545 
     | 
    
         
            +
                          });
         
     | 
| 
      
 546 
     | 
    
         
            +
                        }
         
     | 
| 
      
 547 
     | 
    
         
            +
                      }
         
     | 
| 
      
 548 
     | 
    
         
            +
                      break;
         
     | 
| 
      
 549 
     | 
    
         
            +
                    }
         
     | 
| 
      
 550 
     | 
    
         
            +
                  case keys.ArrowRight:
         
     | 
| 
      
 551 
     | 
    
         
            +
                    {
         
     | 
| 
      
 552 
     | 
    
         
            +
                      if (path[0]) {
         
     | 
| 
      
 553 
     | 
    
         
            +
                        event.stopPropagation();
         
     | 
| 
      
 554 
     | 
    
         
            +
                        event.preventDefault();
         
     | 
| 
      
 555 
     | 
    
         
            +
                        if (!focusedPath.length || currentItem !== null && currentItem !== void 0 && currentItem.disabled || !(currentItem !== null && currentItem !== void 0 && currentItem.items)) {
         
     | 
| 
      
 556 
     | 
    
         
            +
                          break;
         
     | 
| 
      
 557 
     | 
    
         
            +
                        }
         
     | 
| 
      
 558 
     | 
    
         
            +
                        dispatchTreePath({
         
     | 
| 
      
 559 
     | 
    
         
            +
                          type: 'open_level',
         
     | 
| 
      
 560 
     | 
    
         
            +
                          value: valueToPathMap.get(currentItem.value.toString()) || []
         
     | 
| 
      
 561 
     | 
    
         
            +
                        });
         
     | 
| 
      
 562 
     | 
    
         
            +
                      }
         
     | 
| 
      
 563 
     | 
    
         
            +
                      break;
         
     | 
| 
      
 564 
     | 
    
         
            +
                    }
         
     | 
| 
      
 565 
     | 
    
         
            +
                  case keys.Enter:
         
     | 
| 
      
 566 
     | 
    
         
            +
                    {
         
     | 
| 
      
 567 
     | 
    
         
            +
                      event.preventDefault();
         
     | 
| 
      
 568 
     | 
    
         
            +
                      if (!currentItem || currentItem !== null && currentItem !== void 0 && currentItem.disabled) {
         
     | 
| 
      
 569 
     | 
    
         
            +
                        break;
         
     | 
| 
      
 570 
     | 
    
         
            +
                      }
         
     | 
| 
      
 571 
     | 
    
         
            +
                      if (!path[0]) {
         
     | 
| 
      
 572 
     | 
    
         
            +
                        dispatchPath({
         
     | 
| 
      
 573 
     | 
    
         
            +
                          type: 'opened_first_level'
         
     | 
| 
      
 574 
     | 
    
         
            +
                        });
         
     | 
| 
      
 575 
     | 
    
         
            +
                        dispatchFocusedPath({
         
     | 
| 
      
 576 
     | 
    
         
            +
                          type: 'set_initial_focus'
         
     | 
| 
      
 577 
     | 
    
         
            +
                        });
         
     | 
| 
      
 578 
     | 
    
         
            +
                        break;
         
     | 
| 
      
 579 
     | 
    
         
            +
                      }
         
     | 
| 
      
 580 
     | 
    
         
            +
                      handlePressDown(currentItem);
         
     | 
| 
      
 581 
     | 
    
         
            +
                      break;
         
     | 
| 
      
 582 
     | 
    
         
            +
                    }
         
     | 
| 
      
 583 
     | 
    
         
            +
                  case keys.Tab:
         
     | 
| 
      
 584 
     | 
    
         
            +
                  case keys.Escape:
         
     | 
| 
      
 585 
     | 
    
         
            +
                    {
         
     | 
| 
      
 586 
     | 
    
         
            +
                      if (path[0]) {
         
     | 
| 
      
 587 
     | 
    
         
            +
                        handleListToggle(false);
         
     | 
| 
      
 588 
     | 
    
         
            +
                      }
         
     | 
| 
      
 589 
     | 
    
         
            +
                      if (multiple) {
         
     | 
| 
      
 590 
     | 
    
         
            +
                        setTextValue('');
         
     | 
| 
      
 591 
     | 
    
         
            +
                      } else if (textValue !== value) {
         
     | 
| 
      
 592 
     | 
    
         
            +
                        // Проверяем, отличается ли значение в инпуте от выбранного value после нажатия Tab/Enter.
         
     | 
| 
      
 593 
     | 
    
         
            +
                        // Если изменилось, то возвращаем label выбранного айтема.
         
     | 
| 
      
 594 
     | 
    
         
            +
                        // Если нет выбранного элемента, то стираем значение инпута.
         
     | 
| 
      
 595 
     | 
    
         
            +
                        if (isEmpty(value)) {
         
     | 
| 
      
 596 
     | 
    
         
            +
                          setTextValue('');
         
     | 
| 
      
 597 
     | 
    
         
            +
                        } else {
         
     | 
| 
      
 598 
     | 
    
         
            +
                          var _valueToItemMap$get2;
         
     | 
| 
      
 599 
     | 
    
         
            +
                          setTextValue(((_valueToItemMap$get2 = valueToItemMap.get(value)) === null || _valueToItemMap$get2 === void 0 ? void 0 : _valueToItemMap$get2.label) || '');
         
     | 
| 
      
 600 
     | 
    
         
            +
                        }
         
     | 
| 
      
 601 
     | 
    
         
            +
                      }
         
     | 
| 
      
 602 
     | 
    
         
            +
                      break;
         
     | 
| 
      
 603 
     | 
    
         
            +
                    }
         
     | 
| 
      
 604 
     | 
    
         
            +
                }
         
     | 
| 
      
 605 
     | 
    
         
            +
              };
         
     | 
| 
      
 606 
     | 
    
         
            +
              return {
         
     | 
| 
      
 607 
     | 
    
         
            +
                onKeyDown: onKeyDown
         
     | 
| 
      
 608 
     | 
    
         
            +
              };
         
     | 
| 
      
 609 
     | 
    
         
            +
            };
         
     | 
| 
       292 
610 
     | 
    
         | 
| 
       293 
611 
     | 
    
         
             
            export { getItemByFocused, keys, useKeyNavigation };
         
     | 
| 
       294 
612 
     | 
    
         
             
            //# sourceMappingURL=useKeyboardNavigation.js.map
         
     |