@salutejs/plasma-new-hope 0.174.0-canary.1505.11483510462.0 → 0.174.0-canary.1505.11485998091.0
Sign up to get free protection for your applications and to get access to all the features.
- package/cjs/components/Combobox/ComboboxNew/Combobox.js +9 -2
- package/cjs/components/Combobox/ComboboxNew/Combobox.js.map +1 -1
- package/cjs/components/Combobox/ComboboxNew/utils/getInitialValue.js +27 -0
- package/cjs/components/Combobox/ComboboxNew/utils/getInitialValue.js.map +1 -0
- package/emotion/cjs/components/Combobox/ComboboxNew/Combobox.js +8 -2
- package/emotion/cjs/components/Combobox/ComboboxNew/utils/getInitialValue.js +26 -0
- package/emotion/cjs/components/Combobox/ComboboxNew/utils/index.js +8 -1
- package/emotion/es/components/Combobox/ComboboxNew/Combobox.js +9 -3
- package/emotion/es/components/Combobox/ComboboxNew/utils/getInitialValue.js +20 -0
- package/emotion/es/components/Combobox/ComboboxNew/utils/index.js +2 -1
- package/es/components/Combobox/ComboboxNew/Combobox.js +9 -2
- package/es/components/Combobox/ComboboxNew/Combobox.js.map +1 -1
- package/es/components/Combobox/ComboboxNew/utils/getInitialValue.js +23 -0
- package/es/components/Combobox/ComboboxNew/utils/getInitialValue.js.map +1 -0
- package/package.json +2 -2
- package/styled-components/cjs/components/Combobox/ComboboxNew/Combobox.js +8 -2
- package/styled-components/cjs/components/Combobox/ComboboxNew/utils/getInitialValue.js +26 -0
- package/styled-components/cjs/components/Combobox/ComboboxNew/utils/index.js +8 -1
- package/styled-components/es/components/Combobox/ComboboxNew/Combobox.js +9 -3
- package/styled-components/es/components/Combobox/ComboboxNew/utils/getInitialValue.js +20 -0
- package/styled-components/es/components/Combobox/ComboboxNew/utils/index.js +2 -1
- package/types/components/Combobox/ComboboxNew/Combobox.d.ts.map +1 -1
- package/types/components/Combobox/ComboboxNew/utils/getInitialValue.d.ts +4 -0
- package/types/components/Combobox/ComboboxNew/utils/getInitialValue.d.ts.map +1 -0
- package/types/components/Combobox/ComboboxNew/utils/index.d.ts +1 -0
- package/types/components/Combobox/ComboboxNew/utils/index.d.ts.map +1 -1
@@ -12,6 +12,7 @@ var getPathMaps = require('./hooks/getPathMaps.js');
|
|
12
12
|
var Combobox_styles = require('./Combobox.styles.js');
|
13
13
|
var base = require('./variations/_view/base.js');
|
14
14
|
var base$1 = require('./variations/_size/base.js');
|
15
|
+
var getInitialValue = require('./utils/getInitialValue.js');
|
15
16
|
var initialItemsTransform = require('./utils/initialItemsTransform.js');
|
16
17
|
var filterItems = require('./utils/filterItems.js');
|
17
18
|
var pathReducer = require('./reducers/pathReducer.js');
|
@@ -83,7 +84,7 @@ var comboboxRoot = function comboboxRoot(Root) {
|
|
83
84
|
_useState4 = _rollupPluginBabelHelpers.slicedToArray(_useState3, 2),
|
84
85
|
internalValue = _useState4[0],
|
85
86
|
setInternalValue = _useState4[1];
|
86
|
-
var value = outerValue
|
87
|
+
var value = outerValue !== null && outerValue !== undefined ? getInitialValue.getInitialValue(outerValue, valueToItemMap) : internalValue;
|
87
88
|
var inputRef = React.useRef(null);
|
88
89
|
var floatingPopoverRef = React.useRef(null);
|
89
90
|
var inputForkRef = plasmaCore.useForkRef(inputRef, ref);
|
@@ -315,6 +316,7 @@ var comboboxRoot = function comboboxRoot(Root) {
|
|
315
316
|
// В данном эффекте мы следим за изменениями value снаружи и вносим коррективы в дерево чекбоксов.
|
316
317
|
// Пример: когда юзер очистил value извне, тогда нужно пройтись по элементам и выключить все чекбоксы.
|
317
318
|
React.useLayoutEffect(function () {
|
319
|
+
var _valueToItemMap$get4;
|
318
320
|
var checkedCopy = new Map(checked);
|
319
321
|
checkedCopy.forEach(function (_, key) {
|
320
322
|
checkedCopy.set(key, false);
|
@@ -332,7 +334,12 @@ var comboboxRoot = function comboboxRoot(Root) {
|
|
332
334
|
}
|
333
335
|
}
|
334
336
|
setChecked(checkedCopy);
|
335
|
-
|
337
|
+
setTextValue(((_valueToItemMap$get4 = valueToItemMap.get(outerValue)) === null || _valueToItemMap$get4 === void 0 ? void 0 : _valueToItemMap$get4.label) || '');
|
338
|
+
|
339
|
+
// В deps мы кладем именно outerValue и internalValue, а не просто value.
|
340
|
+
// Т.к. вначале нужно отфильтровать и провалидировать outerValue и результат положить в переменную.
|
341
|
+
// А переменную, содержащую сложные типы данных, нельзя помещать в deps.
|
342
|
+
}, [outerValue, internalValue]);
|
336
343
|
return /*#__PURE__*/React.createElement(Root, {
|
337
344
|
size: size,
|
338
345
|
view: view,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Combobox.js","sources":["../../../../src/components/Combobox/ComboboxNew/Combobox.tsx"],"sourcesContent":["import React, { forwardRef, useState, useReducer, useMemo, createContext, useLayoutEffect, useRef } from 'react';\nimport type { ChangeEvent } from 'react';\nimport { safeUseId, useForkRef } from '@salutejs/plasma-core';\n\nimport { RootProps } from '../../../engines';\nimport { isEmpty } from '../../../utils';\nimport { useOutsideClick } from '../../../hooks';\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} from './utils';\nimport { Inner, StyledTextField } from './ui';\nimport { pathReducer, focusedPathReducer } from './reducers';\nimport { getPathMap, getTreeMaps } from './hooks/getPathMaps';\nimport { Ul, base, StyledArrow, IconArrowWrapper, StyledEmptyState } from './Combobox.styles';\nimport type { ItemContext, ComboboxProps } from './Combobox.types';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as sizeCSS } from './variations/_size/base';\nimport type { ItemOptionTransformed } from './ui/Inner/ui/Item/Item.types';\n\nexport const Context = createContext<ItemContext>({} as ItemContext);\n\n/**\n * Поле ввода с выпадающим списком и возможностью фильтрации и выбора элементов.\n */\nexport const comboboxRoot = (Root: RootProps<HTMLInputElement, Omit<ComboboxProps, 'items'>>) =>\n forwardRef<HTMLInputElement, ComboboxProps>((props, ref) => {\n const {\n multiple,\n value: outerValue,\n onChange: outerOnChange,\n isTargetAmount,\n items,\n placement = 'bottom-start',\n label,\n placeholder,\n helperText,\n contentLeft,\n textBefore,\n textAfter,\n variant = 'normal',\n listOverflow,\n listHeight,\n listWidth,\n portal,\n renderItem,\n view,\n size,\n labelPlacement,\n readOnly = false,\n disabled = false,\n alwaysOpened = false,\n filter,\n closeAfterSelect: outerCloseAfterSelect,\n ...rest\n } = props;\n // Создаем структуры для быстрой работы с деревом\n const [valueToCheckedMap, valueToItemMap, labelToItemMap] = useMemo(() => getTreeMaps(items), [items]);\n\n const [textValue, setTextValue] = useState(valueToItemMap.get(outerValue as string)?.label || '');\n const [internalValue, setInternalValue] = useState<string | string[]>(multiple ? [] : '');\n\n const value = outerValue || internalValue;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const floatingPopoverRef = useRef<HTMLDivElement>(null);\n const inputForkRef = useForkRef(inputRef, ref);\n const treeId = safeUseId();\n\n const transformedItems = useMemo(() => initialItemsTransform(items || []), [items]);\n\n const filteredItems = filterItems(\n transformedItems,\n textValue,\n valueToItemMap.get(value as string)?.label as string,\n filter,\n );\n\n const [pathMap, focusedToValueMap] = useMemo(() => getPathMap(filteredItems), [filteredItems, textValue]);\n\n // Состояния дерева элементов\n const [path, dispatchPath] = useReducer(pathReducer, []);\n const [focusedPath, dispatchFocusedPath] = useReducer(focusedPathReducer, []);\n const [checked, setChecked] = useState(valueToCheckedMap);\n\n const isCurrentListOpen = alwaysOpened || 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 const targetRef = useOutsideClick<HTMLUListElement>(() => {\n if (!isCurrentListOpen) {\n return;\n }\n\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n\n // Проверяем, отличается ли значение в инпуте от выбранного value после закрытия дропдауна.\n // Если изменилось, то возвращаем label выбранного айтема.\n // Если нет выбранного элемента, то стираем значение инпута.\n if (textValue !== value) {\n if (isEmpty(value)) {\n setTextValue('');\n } else {\n setTextValue(valueToItemMap.get(value as string)?.label || '');\n }\n }\n }, floatingPopoverRef);\n\n const onChange = (newValue: string | Array<string>) => {\n if (outerOnChange) {\n outerOnChange(newValue as any);\n }\n\n setInternalValue(newValue);\n };\n\n const handleClickArrow = () => {\n if (disabled || readOnly) {\n return;\n }\n\n if (isCurrentListOpen) {\n dispatchPath({ type: 'reset' });\n } else {\n dispatchPath({ type: 'opened_first_level' });\n }\n\n dispatchFocusedPath({ type: 'reset' });\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\n // Обработчик чипов\n const handleChipsChange = (chipLabels: any[]) => {\n onChange(chipLabels.map((chipLabel) => labelToItemMap.get(chipLabel)!.value));\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 }\n };\n\n // Обработчик выбора чекбоксов (только при multiple)\n const handleCheckboxChange = (item: ItemOptionTransformed) => {\n if (!multiple) {\n return;\n }\n\n const checkedCopy = new Map(checked);\n\n if (!checkedCopy.get(item.value)) {\n checkedCopy.set(item.value, true);\n updateDescendants(item, checkedCopy, true);\n } else {\n checkedCopy.set(item.value, false);\n updateDescendants(item, checkedCopy, false);\n }\n\n updateAncestors(item, checkedCopy);\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 if (!alwaysOpened && closeAfterSelect) {\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n }\n\n if (onChange) {\n onChange(newValues);\n }\n\n // После выбора/снятия чекбокса скроллим к инпуту\n setTimeout(() => {\n if (inputRef.current) {\n inputRef.current.scrollIntoView({\n behavior: 'smooth',\n inline: 'start',\n });\n }\n }, 1);\n };\n\n // Обработчик клика по айтему выпадающего списка\n const handleItemClick = (item: ItemOptionTransformed, e?: React.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 checkedCopy = new Map(checked);\n\n const isCurrentChecked = checkedCopy.get(item.value);\n\n checkedCopy.forEach((_, key) => {\n checkedCopy.set(key, false);\n });\n\n if (!isCurrentChecked) {\n checkedCopy.set(item.value, 'done');\n updateSingleAncestors(item, checkedCopy, 'dot');\n }\n\n setTextValue(isCurrentChecked ? '' : item.label);\n\n if (!alwaysOpened && closeAfterSelect) {\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n }\n\n if (onChange) {\n onChange(isCurrentChecked ? '' : item.value);\n }\n };\n\n const getChips = (): string[] => {\n if (multiple) {\n if (value.length === 0) return [];\n\n if (isTargetAmount) {\n return [`Выбрано ${value.length}`];\n }\n\n return (value as []).map((value) => valueToItemMap.get(value)!.label);\n }\n\n return [];\n };\n\n const handlePressDown = (item: ItemOptionTransformed, e?: React.MouseEvent<HTMLElement>) => {\n if (isEmpty(item.items)) {\n handleItemClick(item, e);\n } else if (multiple) {\n handleCheckboxChange(item);\n }\n };\n\n const { onKeyDown } = useKeyNavigation({\n focusedPath,\n dispatchFocusedPath,\n path,\n dispatchPath,\n pathMap,\n focusedToValueMap,\n handleListToggle,\n handlePressDown,\n multiselect: multiple,\n setTextValue,\n });\n\n // В данном эффекте мы следим за изменениями value снаружи и вносим коррективы в дерево чекбоксов.\n // Пример: когда юзер очистил value извне, тогда нужно пройтись по элементам и выключить все чекбоксы.\n useLayoutEffect(() => {\n const checkedCopy = new Map(checked);\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 checkedCopy.set(val, true);\n updateDescendants(valueToItemMap.get(val)!, checkedCopy, true);\n updateAncestors(valueToItemMap.get(val)!, checkedCopy);\n });\n } else {\n checkedCopy.set(value, 'done');\n updateSingleAncestors(valueToItemMap.get(value)!, checkedCopy, 'dot');\n }\n }\n\n setChecked(checkedCopy);\n }, [value]);\n\n return (\n <Root size={size} view={view} labelPlacement={labelPlacement} disabled={disabled} readOnly={readOnly}>\n <div>\n <Context.Provider\n value={{\n focusedPath,\n checked,\n multiple,\n size,\n handleCheckboxChange,\n handleItemClick,\n variant,\n renderItem,\n valueToItemMap,\n treeId,\n }}\n >\n <FloatingPopover\n ref={floatingPopoverRef}\n opened={isCurrentListOpen}\n onToggle={(opened: boolean) => opened && handleListToggle(true)}\n placement={placement}\n portal={portal}\n target={(referenceRef) => (\n <StyledTextField\n ref={inputForkRef}\n inputWrapperRef={referenceRef}\n value={textValue}\n onChange={handleTextValueChange}\n size={size}\n view={view}\n labelPlacement={labelPlacement}\n disabled={disabled}\n readOnly={readOnly}\n label={label}\n placeholder={placeholder}\n contentLeft={contentLeft}\n contentRight={\n <IconArrowWrapper disabled={disabled} onClick={handleClickArrow}>\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={helperText}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-controls={`${treeId}_tree_level_1`}\n aria-expanded={isCurrentListOpen}\n aria-activedescendant={\n activeDescendantItemValue ? getItemId(treeId, activeDescendantItemValue) : ''\n }\n {...(multiple\n ? {\n enumerationType: 'chip',\n chips: getChips(),\n onChangeChips: handleChipsChange,\n }\n : { enumerationType: 'plain' })}\n {...rest}\n onEnterDisabled // Пропс для отключения обработчика Enter внутри Textfield\n />\n )}\n >\n <Root\n size={size}\n view={view}\n labelPlacement={labelPlacement}\n disabled={disabled}\n readOnly={readOnly}\n >\n <Ul\n role=\"tree\"\n id={`${treeId}_tree_level_1`}\n aria-multiselectable={Boolean(multiple)}\n listHeight={listHeight}\n listOverflow={listOverflow}\n listWidth={listWidth}\n ref={targetRef}\n >\n {isEmpty(filteredItems) ? (\n <StyledEmptyState\n className={classes.emptyStateWrapper}\n size={size}\n description=\"Ничего не найдено\"\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 />\n ))\n )}\n </Ul>\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":["Context","createContext","comboboxRoot","Root","forwardRef","props","ref","_valueToItemMap$get","_valueToItemMap$get2","_getItemByFocused","multiple","outerValue","value","outerOnChange","onChange","isTargetAmount","items","_props$placement","placement","label","placeholder","helperText","contentLeft","textBefore","textAfter","_props$variant","variant","listOverflow","listHeight","listWidth","portal","renderItem","view","size","labelPlacement","_props$readOnly","readOnly","_props$disabled","disabled","_props$alwaysOpened","alwaysOpened","filter","outerCloseAfterSelect","closeAfterSelect","rest","_objectWithoutProperties","_excluded","_useMemo","useMemo","getTreeMaps","_useMemo2","_slicedToArray","valueToCheckedMap","valueToItemMap","labelToItemMap","_useState","useState","get","_useState2","textValue","setTextValue","_useState3","_useState4","internalValue","setInternalValue","inputRef","useRef","floatingPopoverRef","inputForkRef","useForkRef","treeId","safeUseId","transformedItems","initialItemsTransform","filteredItems","filterItems","_useMemo3","getPathMap","_useMemo4","pathMap","focusedToValueMap","_useReducer","useReducer","pathReducer","_useReducer2","path","dispatchPath","_useReducer3","focusedPathReducer","_useReducer4","focusedPath","dispatchFocusedPath","_useState5","_useState6","checked","setChecked","isCurrentListOpen","Boolean","activeDescendantItemValue","getItemByFocused","withArrowInverse","classes","arrowInverse","undefined","targetRef","useOutsideClick","type","isEmpty","_valueToItemMap$get3","newValue","handleClickArrow","handleTextValueChange","e","target","handleChipsChange","chipLabels","map","chipLabel","handleListToggle","opened","handleCheckboxChange","item","checkedCopy","Map","set","updateDescendants","updateAncestors","newValues","forEach","key","push","setTimeout","current","scrollIntoView","behavior","inline","handleItemClick","stopPropagation","isCurrentChecked","_","updateSingleAncestors","getChips","length","concat","handlePressDown","_useKeyNavigation","useKeyNavigation","multiselect","onKeyDown","useLayoutEffect","Array","isArray","val","React","createElement","Provider","FloatingPopover","onToggle","referenceRef","StyledTextField","_extends","inputWrapperRef","contentRight","IconArrowWrapper","onClick","StyledArrow","color","sizeToIconSize","className","leftHelper","role","getItemId","enumerationType","chips","onChangeChips","onEnterDisabled","Ul","id","StyledEmptyState","emptyStateWrapper","description","index","Inner","currentLevel","comboboxConfig","name","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, createContext, useLayoutEffect, useRef } from 'react';\nimport type { ChangeEvent } from 'react';\nimport { safeUseId, useForkRef } from '@salutejs/plasma-core';\n\nimport { RootProps } from '../../../engines';\nimport { isEmpty } from '../../../utils';\nimport { useOutsideClick } from '../../../hooks';\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 getInitialValue,\n} from './utils';\nimport { Inner, StyledTextField } from './ui';\nimport { pathReducer, focusedPathReducer } from './reducers';\nimport { getPathMap, getTreeMaps } from './hooks/getPathMaps';\nimport { Ul, base, StyledArrow, IconArrowWrapper, StyledEmptyState } from './Combobox.styles';\nimport type { ItemContext, ComboboxProps } from './Combobox.types';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as sizeCSS } from './variations/_size/base';\nimport type { ItemOptionTransformed } from './ui/Inner/ui/Item/Item.types';\n\nexport const Context = createContext<ItemContext>({} as ItemContext);\n\n/**\n * Поле ввода с выпадающим списком и возможностью фильтрации и выбора элементов.\n */\nexport const comboboxRoot = (Root: RootProps<HTMLInputElement, Omit<ComboboxProps, 'items'>>) =>\n forwardRef<HTMLInputElement, ComboboxProps>((props, ref) => {\n const {\n multiple,\n value: outerValue,\n onChange: outerOnChange,\n isTargetAmount,\n items,\n placement = 'bottom-start',\n label,\n placeholder,\n helperText,\n contentLeft,\n textBefore,\n textAfter,\n variant = 'normal',\n listOverflow,\n listHeight,\n listWidth,\n portal,\n renderItem,\n view,\n size,\n labelPlacement,\n readOnly = false,\n disabled = false,\n alwaysOpened = false,\n filter,\n closeAfterSelect: outerCloseAfterSelect,\n ...rest\n } = props;\n // Создаем структуры для быстрой работы с деревом\n const [valueToCheckedMap, valueToItemMap, labelToItemMap] = useMemo(() => getTreeMaps(items), [items]);\n\n const [textValue, setTextValue] = useState(valueToItemMap.get(outerValue as string)?.label || '');\n const [internalValue, setInternalValue] = useState<string | string[]>(multiple ? [] : '');\n\n const value =\n outerValue !== null && outerValue !== undefined\n ? getInitialValue(outerValue, valueToItemMap)\n : internalValue;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const floatingPopoverRef = useRef<HTMLDivElement>(null);\n const inputForkRef = useForkRef(inputRef, ref);\n const treeId = safeUseId();\n\n const transformedItems = useMemo(() => initialItemsTransform(items || []), [items]);\n\n const filteredItems = filterItems(\n transformedItems,\n textValue,\n valueToItemMap.get(value as string)?.label as string,\n filter,\n );\n\n const [pathMap, focusedToValueMap] = useMemo(() => getPathMap(filteredItems), [filteredItems, textValue]);\n\n // Состояния дерева элементов\n const [path, dispatchPath] = useReducer(pathReducer, []);\n const [focusedPath, dispatchFocusedPath] = useReducer(focusedPathReducer, []);\n const [checked, setChecked] = useState(valueToCheckedMap);\n\n const isCurrentListOpen = alwaysOpened || 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 const targetRef = useOutsideClick<HTMLUListElement>(() => {\n if (!isCurrentListOpen) {\n return;\n }\n\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n\n // Проверяем, отличается ли значение в инпуте от выбранного value после закрытия дропдауна.\n // Если изменилось, то возвращаем label выбранного айтема.\n // Если нет выбранного элемента, то стираем значение инпута.\n if (textValue !== value) {\n if (isEmpty(value)) {\n setTextValue('');\n } else {\n setTextValue(valueToItemMap.get(value as string)?.label || '');\n }\n }\n }, floatingPopoverRef);\n\n const onChange = (newValue: string | Array<string>) => {\n if (outerOnChange) {\n outerOnChange(newValue as any);\n }\n\n setInternalValue(newValue);\n };\n\n const handleClickArrow = () => {\n if (disabled || readOnly) {\n return;\n }\n\n if (isCurrentListOpen) {\n dispatchPath({ type: 'reset' });\n } else {\n dispatchPath({ type: 'opened_first_level' });\n }\n\n dispatchFocusedPath({ type: 'reset' });\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\n // Обработчик чипов\n const handleChipsChange = (chipLabels: any[]) => {\n onChange(chipLabels.map((chipLabel) => labelToItemMap.get(chipLabel)!.value));\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 }\n };\n\n // Обработчик выбора чекбоксов (только при multiple)\n const handleCheckboxChange = (item: ItemOptionTransformed) => {\n if (!multiple) {\n return;\n }\n\n const checkedCopy = new Map(checked);\n\n if (!checkedCopy.get(item.value)) {\n checkedCopy.set(item.value, true);\n updateDescendants(item, checkedCopy, true);\n } else {\n checkedCopy.set(item.value, false);\n updateDescendants(item, checkedCopy, false);\n }\n\n updateAncestors(item, checkedCopy);\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 if (!alwaysOpened && closeAfterSelect) {\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n }\n\n if (onChange) {\n onChange(newValues);\n }\n\n // После выбора/снятия чекбокса скроллим к инпуту\n setTimeout(() => {\n if (inputRef.current) {\n inputRef.current.scrollIntoView({\n behavior: 'smooth',\n inline: 'start',\n });\n }\n }, 1);\n };\n\n // Обработчик клика по айтему выпадающего списка\n const handleItemClick = (item: ItemOptionTransformed, e?: React.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 checkedCopy = new Map(checked);\n\n const isCurrentChecked = checkedCopy.get(item.value);\n\n checkedCopy.forEach((_, key) => {\n checkedCopy.set(key, false);\n });\n\n if (!isCurrentChecked) {\n checkedCopy.set(item.value, 'done');\n updateSingleAncestors(item, checkedCopy, 'dot');\n }\n\n setTextValue(isCurrentChecked ? '' : item.label);\n\n if (!alwaysOpened && closeAfterSelect) {\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n }\n\n if (onChange) {\n onChange(isCurrentChecked ? '' : item.value);\n }\n };\n\n const getChips = (): string[] => {\n if (multiple) {\n if (value.length === 0) return [];\n\n if (isTargetAmount) {\n return [`Выбрано ${value.length}`];\n }\n\n return (value as []).map((value) => valueToItemMap.get(value)!.label);\n }\n\n return [];\n };\n\n const handlePressDown = (item: ItemOptionTransformed, e?: React.MouseEvent<HTMLElement>) => {\n if (isEmpty(item.items)) {\n handleItemClick(item, e);\n } else if (multiple) {\n handleCheckboxChange(item);\n }\n };\n\n const { onKeyDown } = useKeyNavigation({\n focusedPath,\n dispatchFocusedPath,\n path,\n dispatchPath,\n pathMap,\n focusedToValueMap,\n handleListToggle,\n handlePressDown,\n multiselect: multiple,\n setTextValue,\n });\n\n // В данном эффекте мы следим за изменениями value снаружи и вносим коррективы в дерево чекбоксов.\n // Пример: когда юзер очистил value извне, тогда нужно пройтись по элементам и выключить все чекбоксы.\n useLayoutEffect(() => {\n const checkedCopy = new Map(checked);\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 checkedCopy.set(val, true);\n updateDescendants(valueToItemMap.get(val)!, checkedCopy, true);\n updateAncestors(valueToItemMap.get(val)!, checkedCopy);\n });\n } else {\n checkedCopy.set(value, 'done');\n updateSingleAncestors(valueToItemMap.get(value)!, checkedCopy, 'dot');\n }\n }\n\n setChecked(checkedCopy);\n\n setTextValue(valueToItemMap.get(outerValue as string)?.label || '');\n\n // В deps мы кладем именно outerValue и internalValue, а не просто value.\n // Т.к. вначале нужно отфильтровать и провалидировать outerValue и результат положить в переменную.\n // А переменную, содержащую сложные типы данных, нельзя помещать в deps.\n }, [outerValue, internalValue]);\n\n return (\n <Root size={size} view={view} labelPlacement={labelPlacement} disabled={disabled} readOnly={readOnly}>\n <div>\n <Context.Provider\n value={{\n focusedPath,\n checked,\n multiple,\n size,\n handleCheckboxChange,\n handleItemClick,\n variant,\n renderItem,\n valueToItemMap,\n treeId,\n }}\n >\n <FloatingPopover\n ref={floatingPopoverRef}\n opened={isCurrentListOpen}\n onToggle={(opened: boolean) => opened && handleListToggle(true)}\n placement={placement}\n portal={portal}\n target={(referenceRef) => (\n <StyledTextField\n ref={inputForkRef}\n inputWrapperRef={referenceRef}\n value={textValue}\n onChange={handleTextValueChange}\n size={size}\n view={view}\n labelPlacement={labelPlacement}\n disabled={disabled}\n readOnly={readOnly}\n label={label}\n placeholder={placeholder}\n contentLeft={contentLeft}\n contentRight={\n <IconArrowWrapper disabled={disabled} onClick={handleClickArrow}>\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={helperText}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-controls={`${treeId}_tree_level_1`}\n aria-expanded={isCurrentListOpen}\n aria-activedescendant={\n activeDescendantItemValue ? getItemId(treeId, activeDescendantItemValue) : ''\n }\n {...(multiple\n ? {\n enumerationType: 'chip',\n chips: getChips(),\n onChangeChips: handleChipsChange,\n }\n : { enumerationType: 'plain' })}\n {...rest}\n onEnterDisabled // Пропс для отключения обработчика Enter внутри Textfield\n />\n )}\n >\n <Root\n size={size}\n view={view}\n labelPlacement={labelPlacement}\n disabled={disabled}\n readOnly={readOnly}\n >\n <Ul\n role=\"tree\"\n id={`${treeId}_tree_level_1`}\n aria-multiselectable={Boolean(multiple)}\n listHeight={listHeight}\n listOverflow={listOverflow}\n listWidth={listWidth}\n ref={targetRef}\n >\n {isEmpty(filteredItems) ? (\n <StyledEmptyState\n className={classes.emptyStateWrapper}\n size={size}\n description=\"Ничего не найдено\"\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 />\n ))\n )}\n </Ul>\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":["Context","createContext","comboboxRoot","Root","forwardRef","props","ref","_valueToItemMap$get","_valueToItemMap$get2","_getItemByFocused","multiple","outerValue","value","outerOnChange","onChange","isTargetAmount","items","_props$placement","placement","label","placeholder","helperText","contentLeft","textBefore","textAfter","_props$variant","variant","listOverflow","listHeight","listWidth","portal","renderItem","view","size","labelPlacement","_props$readOnly","readOnly","_props$disabled","disabled","_props$alwaysOpened","alwaysOpened","filter","outerCloseAfterSelect","closeAfterSelect","rest","_objectWithoutProperties","_excluded","_useMemo","useMemo","getTreeMaps","_useMemo2","_slicedToArray","valueToCheckedMap","valueToItemMap","labelToItemMap","_useState","useState","get","_useState2","textValue","setTextValue","_useState3","_useState4","internalValue","setInternalValue","undefined","getInitialValue","inputRef","useRef","floatingPopoverRef","inputForkRef","useForkRef","treeId","safeUseId","transformedItems","initialItemsTransform","filteredItems","filterItems","_useMemo3","getPathMap","_useMemo4","pathMap","focusedToValueMap","_useReducer","useReducer","pathReducer","_useReducer2","path","dispatchPath","_useReducer3","focusedPathReducer","_useReducer4","focusedPath","dispatchFocusedPath","_useState5","_useState6","checked","setChecked","isCurrentListOpen","Boolean","activeDescendantItemValue","getItemByFocused","withArrowInverse","classes","arrowInverse","targetRef","useOutsideClick","type","isEmpty","_valueToItemMap$get3","newValue","handleClickArrow","handleTextValueChange","e","target","handleChipsChange","chipLabels","map","chipLabel","handleListToggle","opened","handleCheckboxChange","item","checkedCopy","Map","set","updateDescendants","updateAncestors","newValues","forEach","key","push","setTimeout","current","scrollIntoView","behavior","inline","handleItemClick","stopPropagation","isCurrentChecked","_","updateSingleAncestors","getChips","length","concat","handlePressDown","_useKeyNavigation","useKeyNavigation","multiselect","onKeyDown","useLayoutEffect","_valueToItemMap$get4","Array","isArray","val","React","createElement","Provider","FloatingPopover","onToggle","referenceRef","StyledTextField","_extends","inputWrapperRef","contentRight","IconArrowWrapper","onClick","StyledArrow","color","sizeToIconSize","className","leftHelper","role","getItemId","enumerationType","chips","onChangeChips","onEnterDisabled","Ul","id","StyledEmptyState","emptyStateWrapper","description","index","Inner","currentLevel","comboboxConfig","name","tag","layout","base","variations","css","viewCSS","sizeCSS","defaults"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8BaA,OAAO,gBAAGC,mBAAa,CAAc,EAAiB,EAAC;;AAEpE;AACA;AACA;IACaC,YAAY,GAAG,SAAfA,YAAYA,CAAIC,IAA+D,EAAA;AAAA,EAAA,oBACxFC,gBAAU,CAAkC,UAACC,KAAK,EAAEC,GAAG,EAAK;AAAA,IAAA,IAAAC,mBAAA,EAAAC,oBAAA,EAAAC,iBAAA,CAAA;AACxD,IAAA,IACIC,QAAQ,GA2BRL,KAAK,CA3BLK,QAAQ;MACDC,UAAU,GA0BjBN,KAAK,CA1BLO,KAAK;MACKC,aAAa,GAyBvBR,KAAK,CAzBLS,QAAQ;MACRC,cAAc,GAwBdV,KAAK,CAxBLU,cAAc;MACdC,KAAK,GAuBLX,KAAK,CAvBLW,KAAK;MAAAC,gBAAA,GAuBLZ,KAAK,CAtBLa,SAAS;AAATA,MAAAA,SAAS,GAAAD,gBAAA,KAAG,KAAA,CAAA,GAAA,cAAc,GAAAA,gBAAA;MAC1BE,KAAK,GAqBLd,KAAK,CArBLc,KAAK;MACLC,WAAW,GAoBXf,KAAK,CApBLe,WAAW;MACXC,UAAU,GAmBVhB,KAAK,CAnBLgB,UAAU;MACVC,WAAW,GAkBXjB,KAAK,CAlBLiB,WAAW;MACXC,UAAU,GAiBVlB,KAAK,CAjBLkB,UAAU;MACVC,SAAS,GAgBTnB,KAAK,CAhBLmB,SAAS;MAAAC,cAAA,GAgBTpB,KAAK,CAfLqB,OAAO;AAAPA,MAAAA,OAAO,GAAAD,cAAA,KAAG,KAAA,CAAA,GAAA,QAAQ,GAAAA,cAAA;MAClBE,YAAY,GAcZtB,KAAK,CAdLsB,YAAY;MACZC,UAAU,GAaVvB,KAAK,CAbLuB,UAAU;MACVC,SAAS,GAYTxB,KAAK,CAZLwB,SAAS;MACTC,MAAM,GAWNzB,KAAK,CAXLyB,MAAM;MACNC,UAAU,GAUV1B,KAAK,CAVL0B,UAAU;MACVC,IAAI,GASJ3B,KAAK,CATL2B,IAAI;MACJC,IAAI,GAQJ5B,KAAK,CARL4B,IAAI;MACJC,cAAc,GAOd7B,KAAK,CAPL6B,cAAc;MAAAC,eAAA,GAOd9B,KAAK,CANL+B,QAAQ;AAARA,MAAAA,QAAQ,GAAAD,eAAA,KAAG,KAAA,CAAA,GAAA,KAAK,GAAAA,eAAA;MAAAE,eAAA,GAMhBhC,KAAK,CALLiC,QAAQ;AAARA,MAAAA,QAAQ,GAAAD,eAAA,KAAG,KAAA,CAAA,GAAA,KAAK,GAAAA,eAAA;MAAAE,mBAAA,GAKhBlC,KAAK,CAJLmC,YAAY;AAAZA,MAAAA,YAAY,GAAAD,mBAAA,KAAG,KAAA,CAAA,GAAA,KAAK,GAAAA,mBAAA;MACpBE,MAAM,GAGNpC,KAAK,CAHLoC,MAAM;MACYC,qBAAqB,GAEvCrC,KAAK,CAFLsC,gBAAgB;AACbC,MAAAA,IAAI,GAAAC,iDAAA,CACPxC,KAAK,EAAAyC,SAAA,CAAA,CAAA;AACT;IACA,IAAAC,QAAA,GAA4DC,aAAO,CAAC,YAAA;QAAA,OAAMC,uBAAW,CAACjC,KAAK,CAAC,CAAA;OAAE,EAAA,CAACA,KAAK,CAAC,CAAC;MAAAkC,SAAA,GAAAC,uCAAA,CAAAJ,QAAA,EAAA,CAAA,CAAA;AAA/FK,MAAAA,iBAAiB,GAAAF,SAAA,CAAA,CAAA,CAAA;AAAEG,MAAAA,cAAc,GAAAH,SAAA,CAAA,CAAA,CAAA;AAAEI,MAAAA,cAAc,GAAAJ,SAAA,CAAA,CAAA,CAAA,CAAA;IAExD,IAAAK,SAAA,GAAkCC,cAAQ,CAAC,EAAAjD,mBAAA,GAAA8C,cAAc,CAACI,GAAG,CAAC9C,UAAoB,CAAC,cAAAJ,mBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAxCA,mBAAA,CAA0CY,KAAK,KAAI,EAAE,CAAC;MAAAuC,UAAA,GAAAP,uCAAA,CAAAI,SAAA,EAAA,CAAA,CAAA;AAA1FI,MAAAA,SAAS,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAEE,MAAAA,YAAY,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;IAC9B,IAAAG,UAAA,GAA0CL,cAAQ,CAAoB9C,QAAQ,GAAG,EAAE,GAAG,EAAE,CAAC;MAAAoD,UAAA,GAAAX,uCAAA,CAAAU,UAAA,EAAA,CAAA,CAAA;AAAlFE,MAAAA,aAAa,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAEE,MAAAA,gBAAgB,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;AAEtC,IAAA,IAAMlD,KAAK,GACPD,UAAU,KAAK,IAAI,IAAIA,UAAU,KAAKsD,SAAS,GACzCC,+BAAe,CAACvD,UAAU,EAAE0C,cAAc,CAAC,GAC3CU,aAAa,CAAA;AAEvB,IAAA,IAAMI,QAAQ,GAAGC,YAAM,CAAmB,IAAI,CAAC,CAAA;AAC/C,IAAA,IAAMC,kBAAkB,GAAGD,YAAM,CAAiB,IAAI,CAAC,CAAA;AACvD,IAAA,IAAME,YAAY,GAAGC,qBAAU,CAACJ,QAAQ,EAAE7D,GAAG,CAAC,CAAA;AAC9C,IAAA,IAAMkE,MAAM,GAAGC,oBAAS,EAAE,CAAA;IAE1B,IAAMC,gBAAgB,GAAG1B,aAAO,CAAC,YAAA;AAAA,MAAA,OAAM2B,2CAAqB,CAAC3D,KAAK,IAAI,EAAE,CAAC,CAAA;KAAE,EAAA,CAACA,KAAK,CAAC,CAAC,CAAA;IAEnF,IAAM4D,aAAa,GAAGC,uBAAW,CAC7BH,gBAAgB,EAChBf,SAAS,EAAA,CAAAnD,oBAAA,GACT6C,cAAc,CAACI,GAAG,CAAC7C,KAAe,CAAC,MAAA,IAAA,IAAAJ,oBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAnCA,oBAAA,CAAqCW,KAAK,EAC1CsB,MACJ,CAAC,CAAA;IAED,IAAAqC,SAAA,GAAqC9B,aAAO,CAAC,YAAA;QAAA,OAAM+B,sBAAU,CAACH,aAAa,CAAC,CAAA;AAAA,OAAA,EAAE,CAACA,aAAa,EAAEjB,SAAS,CAAC,CAAC;MAAAqB,SAAA,GAAA7B,uCAAA,CAAA2B,SAAA,EAAA,CAAA,CAAA;AAAlGG,MAAAA,OAAO,GAAAD,SAAA,CAAA,CAAA,CAAA;AAAEE,MAAAA,iBAAiB,GAAAF,SAAA,CAAA,CAAA,CAAA,CAAA;;AAEjC;AACA,IAAA,IAAAG,WAAA,GAA6BC,gBAAU,CAACC,uBAAW,EAAE,EAAE,CAAC;MAAAC,YAAA,GAAAnC,uCAAA,CAAAgC,WAAA,EAAA,CAAA,CAAA;AAAjDI,MAAAA,IAAI,GAAAD,YAAA,CAAA,CAAA,CAAA;AAAEE,MAAAA,YAAY,GAAAF,YAAA,CAAA,CAAA,CAAA,CAAA;AACzB,IAAA,IAAAG,YAAA,GAA2CL,gBAAU,CAACM,qCAAkB,EAAE,EAAE,CAAC;MAAAC,YAAA,GAAAxC,uCAAA,CAAAsC,YAAA,EAAA,CAAA,CAAA;AAAtEG,MAAAA,WAAW,GAAAD,YAAA,CAAA,CAAA,CAAA;AAAEE,MAAAA,mBAAmB,GAAAF,YAAA,CAAA,CAAA,CAAA,CAAA;AACvC,IAAA,IAAAG,UAAA,GAA8BtC,cAAQ,CAACJ,iBAAiB,CAAC;MAAA2C,UAAA,GAAA5C,uCAAA,CAAA2C,UAAA,EAAA,CAAA,CAAA;AAAlDE,MAAAA,OAAO,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAEE,MAAAA,UAAU,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;IAE1B,IAAMG,iBAAiB,GAAG1D,YAAY,IAAI2D,OAAO,CAACZ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1D,IAAA,IAAMa,yBAAyB,GAAG,CAAA,CAAA3F,iBAAA,GAAA4F,sCAAgB,CAACT,WAAW,EAAEV,iBAAiB,CAAC,cAAAzE,iBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAhDA,iBAAA,CAAkDG,KAAK,KAAI,EAAE,CAAA;IAC/F,IAAM0F,gBAAgB,GAAGJ,iBAAiB,GAAGK,uBAAO,CAACC,YAAY,GAAGvC,SAAS,CAAA;IAC7E,IAAMtB,gBAAgB,GAAGD,qBAAqB,KAAA,IAAA,IAArBA,qBAAqB,KAArBA,KAAAA,CAAAA,GAAAA,qBAAqB,GAAI,CAAChC,QAAQ,CAAA;;AAE3D;AACA,IAAA,IAAM+F,SAAS,GAAGC,+BAAe,CAAmB,YAAM;MACtD,IAAI,CAACR,iBAAiB,EAAE;AACpB,QAAA,OAAA;AACJ,OAAA;AAEAV,MAAAA,YAAY,CAAC;AAAEmB,QAAAA,IAAI,EAAE,OAAA;AAAQ,OAAC,CAAC,CAAA;AAC/Bd,MAAAA,mBAAmB,CAAC;AAAEc,QAAAA,IAAI,EAAE,OAAA;AAAQ,OAAC,CAAC,CAAA;;AAEtC;AACA;AACA;MACA,IAAIhD,SAAS,KAAK/C,KAAK,EAAE;AACrB,QAAA,IAAIgG,eAAO,CAAChG,KAAK,CAAC,EAAE;UAChBgD,YAAY,CAAC,EAAE,CAAC,CAAA;AACpB,SAAC,MAAM;AAAA,UAAA,IAAAiD,oBAAA,CAAA;AACHjD,UAAAA,YAAY,CAAC,CAAAiD,CAAAA,oBAAA,GAAAxD,cAAc,CAACI,GAAG,CAAC7C,KAAe,CAAC,MAAA,IAAA,IAAAiG,oBAAA,KAAnCA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAA,CAAqC1F,KAAK,KAAI,EAAE,CAAC,CAAA;AAClE,SAAA;AACJ,OAAA;KACH,EAAEkD,kBAAkB,CAAC,CAAA;AAEtB,IAAA,IAAMvD,QAAQ,GAAG,SAAXA,QAAQA,CAAIgG,QAAgC,EAAK;AACnD,MAAA,IAAIjG,aAAa,EAAE;QACfA,aAAa,CAACiG,QAAe,CAAC,CAAA;AAClC,OAAA;MAEA9C,gBAAgB,CAAC8C,QAAQ,CAAC,CAAA;KAC7B,CAAA;AAED,IAAA,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAgBA,GAAS;MAC3B,IAAIzE,QAAQ,IAAIF,QAAQ,EAAE;AACtB,QAAA,OAAA;AACJ,OAAA;AAEA,MAAA,IAAI8D,iBAAiB,EAAE;AACnBV,QAAAA,YAAY,CAAC;AAAEmB,UAAAA,IAAI,EAAE,OAAA;AAAQ,SAAC,CAAC,CAAA;AACnC,OAAC,MAAM;AACHnB,QAAAA,YAAY,CAAC;AAAEmB,UAAAA,IAAI,EAAE,oBAAA;AAAqB,SAAC,CAAC,CAAA;AAChD,OAAA;AAEAd,MAAAA,mBAAmB,CAAC;AAAEc,QAAAA,IAAI,EAAE,OAAA;AAAQ,OAAC,CAAC,CAAA;KACzC,CAAA;;AAED;AACA,IAAA,IAAMK,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAIC,CAAgC,EAAK;AAChErD,MAAAA,YAAY,CAACqD,CAAC,CAACC,MAAM,CAACtG,KAAK,CAAC,CAAA;AAC5B4E,MAAAA,YAAY,CAAC;AAAEmB,QAAAA,IAAI,EAAE,oBAAA;AAAqB,OAAC,CAAC,CAAA;AAC5Cd,MAAAA,mBAAmB,CAAC;AAAEc,QAAAA,IAAI,EAAE,OAAA;AAAQ,OAAC,CAAC,CAAA;KACzC,CAAA;;AAED;AACA,IAAA,IAAMQ,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIC,UAAiB,EAAK;AAC7CtG,MAAAA,QAAQ,CAACsG,UAAU,CAACC,GAAG,CAAC,UAACC,SAAS,EAAA;AAAA,QAAA,OAAKhE,cAAc,CAACG,GAAG,CAAC6D,SAAS,CAAC,CAAE1G,KAAK,CAAA;AAAA,OAAA,CAAC,CAAC,CAAA;KAChF,CAAA;;AAED;AACA,IAAA,IAAM2G,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIC,MAAe,EAAK;MAC1C,IAAIlF,QAAQ,IAAIF,QAAQ,EAAE;AACtB,QAAA,OAAA;AACJ,OAAA;AAEA,MAAA,IAAIoF,MAAM,EAAE;AACRhC,QAAAA,YAAY,CAAC;AAAEmB,UAAAA,IAAI,EAAE,oBAAA;AAAqB,SAAC,CAAC,CAAA;AAChD,OAAC,MAAM;AACHd,QAAAA,mBAAmB,CAAC;AAAEc,UAAAA,IAAI,EAAE,OAAA;AAAQ,SAAC,CAAC,CAAA;AACtCnB,QAAAA,YAAY,CAAC;AAAEmB,UAAAA,IAAI,EAAE,OAAA;AAAQ,SAAC,CAAC,CAAA;AACnC,OAAA;KACH,CAAA;;AAED;AACA,IAAA,IAAMc,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAIC,IAA2B,EAAK;MAC1D,IAAI,CAAChH,QAAQ,EAAE;AACX,QAAA,OAAA;AACJ,OAAA;AAEA,MAAA,IAAMiH,WAAW,GAAG,IAAIC,GAAG,CAAC5B,OAAO,CAAC,CAAA;MAEpC,IAAI,CAAC2B,WAAW,CAAClE,GAAG,CAACiE,IAAI,CAAC9G,KAAK,CAAC,EAAE;QAC9B+G,WAAW,CAACE,GAAG,CAACH,IAAI,CAAC9G,KAAK,EAAE,IAAI,CAAC,CAAA;AACjCkH,QAAAA,mCAAiB,CAACJ,IAAI,EAAEC,WAAW,EAAE,IAAI,CAAC,CAAA;AAC9C,OAAC,MAAM;QACHA,WAAW,CAACE,GAAG,CAACH,IAAI,CAAC9G,KAAK,EAAE,KAAK,CAAC,CAAA;AAClCkH,QAAAA,mCAAiB,CAACJ,IAAI,EAAEC,WAAW,EAAE,KAAK,CAAC,CAAA;AAC/C,OAAA;AAEAI,MAAAA,+BAAe,CAACL,IAAI,EAAEC,WAAW,CAAC,CAAA;MAElC,IAAMK,SAAwB,GAAG,EAAE,CAAA;AAEnC3E,MAAAA,cAAc,CAAC4E,OAAO,CAAC,UAACP,IAAI,EAAEQ,GAAG,EAAK;AAClC,QAAA,IAAIP,WAAW,CAAClE,GAAG,CAACyE,GAAG,CAAC,EAAE;AACtBF,UAAAA,SAAS,CAACG,IAAI,CAACT,IAAI,CAAC9G,KAAK,CAAC,CAAA;AAC9B,SAAA;AACJ,OAAC,CAAC,CAAA;AAEF,MAAA,IAAI,CAAC4B,YAAY,IAAIG,gBAAgB,EAAE;AACnC6C,QAAAA,YAAY,CAAC;AAAEmB,UAAAA,IAAI,EAAE,OAAA;AAAQ,SAAC,CAAC,CAAA;AAC/Bd,QAAAA,mBAAmB,CAAC;AAAEc,UAAAA,IAAI,EAAE,OAAA;AAAQ,SAAC,CAAC,CAAA;AAC1C,OAAA;AAEA,MAAA,IAAI7F,QAAQ,EAAE;QACVA,QAAQ,CAACkH,SAAS,CAAC,CAAA;AACvB,OAAA;;AAEA;AACAI,MAAAA,UAAU,CAAC,YAAM;QACb,IAAIjE,QAAQ,CAACkE,OAAO,EAAE;AAClBlE,UAAAA,QAAQ,CAACkE,OAAO,CAACC,cAAc,CAAC;AAC5BC,YAAAA,QAAQ,EAAE,QAAQ;AAClBC,YAAAA,MAAM,EAAE,OAAA;AACZ,WAAC,CAAC,CAAA;AACN,SAAA;OACH,EAAE,CAAC,CAAC,CAAA;KACR,CAAA;;AAED;IACA,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAAIf,IAA2B,EAAET,CAAiC,EAAK;MACxF,IAAI,CAACL,eAAO,CAACc,IAAI,KAAA,IAAA,IAAJA,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJA,IAAI,CAAE1G,KAAK,CAAC,EAAE;AACvB,QAAA,OAAA;AACJ,OAAA;AAEA,MAAA,IAAIN,QAAQ,EAAE;QACV+G,oBAAoB,CAACC,IAAI,CAAC,CAAA;AAC1B,QAAA,OAAA;AACJ,OAAA;AAEA,MAAA,IAAIT,CAAC,EAAE;QACHA,CAAC,CAACyB,eAAe,EAAE,CAAA;AACvB,OAAA;AAEA,MAAA,IAAMf,WAAW,GAAG,IAAIC,GAAG,CAAC5B,OAAO,CAAC,CAAA;MAEpC,IAAM2C,gBAAgB,GAAGhB,WAAW,CAAClE,GAAG,CAACiE,IAAI,CAAC9G,KAAK,CAAC,CAAA;AAEpD+G,MAAAA,WAAW,CAACM,OAAO,CAAC,UAACW,CAAC,EAAEV,GAAG,EAAK;AAC5BP,QAAAA,WAAW,CAACE,GAAG,CAACK,GAAG,EAAE,KAAK,CAAC,CAAA;AAC/B,OAAC,CAAC,CAAA;MAEF,IAAI,CAACS,gBAAgB,EAAE;QACnBhB,WAAW,CAACE,GAAG,CAACH,IAAI,CAAC9G,KAAK,EAAE,MAAM,CAAC,CAAA;AACnCiI,QAAAA,2CAAqB,CAACnB,IAAI,EAAEC,WAAW,EAAE,KAAK,CAAC,CAAA;AACnD,OAAA;MAEA/D,YAAY,CAAC+E,gBAAgB,GAAG,EAAE,GAAGjB,IAAI,CAACvG,KAAK,CAAC,CAAA;AAEhD,MAAA,IAAI,CAACqB,YAAY,IAAIG,gBAAgB,EAAE;AACnC6C,QAAAA,YAAY,CAAC;AAAEmB,UAAAA,IAAI,EAAE,OAAA;AAAQ,SAAC,CAAC,CAAA;AAC/Bd,QAAAA,mBAAmB,CAAC;AAAEc,UAAAA,IAAI,EAAE,OAAA;AAAQ,SAAC,CAAC,CAAA;AAC1C,OAAA;AAEA,MAAA,IAAI7F,QAAQ,EAAE;QACVA,QAAQ,CAAC6H,gBAAgB,GAAG,EAAE,GAAGjB,IAAI,CAAC9G,KAAK,CAAC,CAAA;AAChD,OAAA;KACH,CAAA;AAED,IAAA,IAAMkI,QAAQ,GAAG,SAAXA,QAAQA,GAAmB;AAC7B,MAAA,IAAIpI,QAAQ,EAAE;AACV,QAAA,IAAIE,KAAK,CAACmI,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,CAAA;AAEjC,QAAA,IAAIhI,cAAc,EAAE;AAChB,UAAA,OAAO,+CAAAiI,MAAA,CAAYpI,KAAK,CAACmI,MAAM,CAAG,CAAA,CAAA;AACtC,SAAA;AAEA,QAAA,OAAQnI,KAAK,CAAQyG,GAAG,CAAC,UAACzG,KAAK,EAAA;AAAA,UAAA,OAAKyC,cAAc,CAACI,GAAG,CAAC7C,KAAK,CAAC,CAAEO,KAAK,CAAA;SAAC,CAAA,CAAA;AACzE,OAAA;AAEA,MAAA,OAAO,EAAE,CAAA;KACZ,CAAA;IAED,IAAM8H,eAAe,GAAG,SAAlBA,eAAeA,CAAIvB,IAA2B,EAAET,CAAiC,EAAK;AACxF,MAAA,IAAIL,eAAO,CAACc,IAAI,CAAC1G,KAAK,CAAC,EAAE;AACrByH,QAAAA,eAAe,CAACf,IAAI,EAAET,CAAC,CAAC,CAAA;OAC3B,MAAM,IAAIvG,QAAQ,EAAE;QACjB+G,oBAAoB,CAACC,IAAI,CAAC,CAAA;AAC9B,OAAA;KACH,CAAA;IAED,IAAAwB,iBAAA,GAAsBC,sCAAgB,CAAC;AACnCvD,QAAAA,WAAW,EAAXA,WAAW;AACXC,QAAAA,mBAAmB,EAAnBA,mBAAmB;AACnBN,QAAAA,IAAI,EAAJA,IAAI;AACJC,QAAAA,YAAY,EAAZA,YAAY;AACZP,QAAAA,OAAO,EAAPA,OAAO;AACPC,QAAAA,iBAAiB,EAAjBA,iBAAiB;AACjBqC,QAAAA,gBAAgB,EAAhBA,gBAAgB;AAChB0B,QAAAA,eAAe,EAAfA,eAAe;AACfG,QAAAA,WAAW,EAAE1I,QAAQ;AACrBkD,QAAAA,YAAY,EAAZA,YAAAA;AACJ,OAAC,CAAC;MAXMyF,SAAS,GAAAH,iBAAA,CAATG,SAAS,CAAA;;AAajB;AACA;AACAC,IAAAA,qBAAe,CAAC,YAAM;AAAA,MAAA,IAAAC,oBAAA,CAAA;AAClB,MAAA,IAAM5B,WAAW,GAAG,IAAIC,GAAG,CAAC5B,OAAO,CAAC,CAAA;AAEpC2B,MAAAA,WAAW,CAACM,OAAO,CAAC,UAACW,CAAC,EAAEV,GAAG,EAAK;AAC5BP,QAAAA,WAAW,CAACE,GAAG,CAACK,GAAG,EAAE,KAAK,CAAC,CAAA;AAC/B,OAAC,CAAC,CAAA;AAEF,MAAA,IAAI,CAACtB,eAAO,CAAChG,KAAK,CAAC,EAAE;AACjB,QAAA,IAAI4I,KAAK,CAACC,OAAO,CAAC7I,KAAK,CAAC,EAAE;AACtBA,UAAAA,KAAK,CAACqH,OAAO,CAAC,UAACyB,GAAG,EAAK;AACnB/B,YAAAA,WAAW,CAACE,GAAG,CAAC6B,GAAG,EAAE,IAAI,CAAC,CAAA;YAC1B5B,mCAAiB,CAACzE,cAAc,CAACI,GAAG,CAACiG,GAAG,CAAC,EAAG/B,WAAW,EAAE,IAAI,CAAC,CAAA;YAC9DI,+BAAe,CAAC1E,cAAc,CAACI,GAAG,CAACiG,GAAG,CAAC,EAAG/B,WAAW,CAAC,CAAA;AAC1D,WAAC,CAAC,CAAA;AACN,SAAC,MAAM;AACHA,UAAAA,WAAW,CAACE,GAAG,CAACjH,KAAK,EAAE,MAAM,CAAC,CAAA;UAC9BiI,2CAAqB,CAACxF,cAAc,CAACI,GAAG,CAAC7C,KAAK,CAAC,EAAG+G,WAAW,EAAE,KAAK,CAAC,CAAA;AACzE,SAAA;AACJ,OAAA;MAEA1B,UAAU,CAAC0B,WAAW,CAAC,CAAA;AAEvB/D,MAAAA,YAAY,CAAC,CAAA2F,CAAAA,oBAAA,GAAAlG,cAAc,CAACI,GAAG,CAAC9C,UAAoB,CAAC,MAAA,IAAA,IAAA4I,oBAAA,KAAxCA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAA,CAA0CpI,KAAK,KAAI,EAAE,CAAC,CAAA;;AAEnE;AACA;AACA;AACJ,KAAC,EAAE,CAACR,UAAU,EAAEoD,aAAa,CAAC,CAAC,CAAA;AAE/B,IAAA,oBACI4F,KAAA,CAAAC,aAAA,CAACzJ,IAAI,EAAA;AAAC8B,MAAAA,IAAI,EAAEA,IAAK;AAACD,MAAAA,IAAI,EAAEA,IAAK;AAACE,MAAAA,cAAc,EAAEA,cAAe;AAACI,MAAAA,QAAQ,EAAEA,QAAS;AAACF,MAAAA,QAAQ,EAAEA,QAAAA;KACxFuH,eAAAA,KAAA,CAAAC,aAAA,CACID,KAAAA,EAAAA,IAAAA,eAAAA,KAAA,CAAAC,aAAA,CAAC5J,OAAO,CAAC6J,QAAQ,EAAA;AACbjJ,MAAAA,KAAK,EAAE;AACHgF,QAAAA,WAAW,EAAXA,WAAW;AACXI,QAAAA,OAAO,EAAPA,OAAO;AACPtF,QAAAA,QAAQ,EAARA,QAAQ;AACRuB,QAAAA,IAAI,EAAJA,IAAI;AACJwF,QAAAA,oBAAoB,EAApBA,oBAAoB;AACpBgB,QAAAA,eAAe,EAAfA,eAAe;AACf/G,QAAAA,OAAO,EAAPA,OAAO;AACPK,QAAAA,UAAU,EAAVA,UAAU;AACVsB,QAAAA,cAAc,EAAdA,cAAc;AACdmB,QAAAA,MAAM,EAANA,MAAAA;AACJ,OAAA;AAAE,KAAA,eAEFmF,KAAA,CAAAC,aAAA,CAACE,+BAAe,EAAA;AACZxJ,MAAAA,GAAG,EAAE+D,kBAAmB;AACxBmD,MAAAA,MAAM,EAAEtB,iBAAkB;MAC1B6D,QAAQ,EAAE,SAAAA,QAAAA,CAACvC,MAAe,EAAA;AAAA,QAAA,OAAKA,MAAM,IAAID,gBAAgB,CAAC,IAAI,CAAC,CAAA;OAAC;AAChErG,MAAAA,SAAS,EAAEA,SAAU;AACrBY,MAAAA,MAAM,EAAEA,MAAO;MACfoF,MAAM,EAAE,SAAAA,MAAAA,CAAC8C,YAAY,EAAA;AAAA,QAAA,oBACjBL,KAAA,CAAAC,aAAA,CAACK,6BAAe,EAAAC,iCAAA,CAAA;AACZ5J,UAAAA,GAAG,EAAEgE,YAAa;AAClB6F,UAAAA,eAAe,EAAEH,YAAa;AAC9BpJ,UAAAA,KAAK,EAAE+C,SAAU;AACjB7C,UAAAA,QAAQ,EAAEkG,qBAAsB;AAChC/E,UAAAA,IAAI,EAAEA,IAAK;AACXD,UAAAA,IAAI,EAAEA,IAAK;AACXE,UAAAA,cAAc,EAAEA,cAAe;AAC/BI,UAAAA,QAAQ,EAAEA,QAAS;AACnBF,UAAAA,QAAQ,EAAEA,QAAS;AACnBjB,UAAAA,KAAK,EAAEA,KAAM;AACbC,UAAAA,WAAW,EAAEA,WAAY;AACzBE,UAAAA,WAAW,EAAEA,WAAY;AACzB8I,UAAAA,YAAY,eACRT,KAAA,CAAAC,aAAA,CAACS,gCAAgB,EAAA;AAAC/H,YAAAA,QAAQ,EAAEA,QAAS;AAACgI,YAAAA,OAAO,EAAEvD,gBAAAA;AAAiB,WAAA,eAC5D4C,KAAA,CAAAC,aAAA,CAACW,2BAAW,EAAA;AACRC,YAAAA,KAAK,EAAC,SAAS;AACfvI,YAAAA,IAAI,EAAEwI,6BAAc,CAACxI,IAAI,CAAE;AAC3ByI,YAAAA,SAAS,EAAEpE,gBAAAA;AAAiB,WAC/B,CACa,CACrB;AACD/E,UAAAA,UAAU,EAAEA,UAAW;AACvBC,UAAAA,SAAS,EAAEA,SAAU;AACrB6H,UAAAA,SAAS,EAAEA,SAAU;AACrBsB,UAAAA,UAAU,EAAEtJ,UAAW;AACvBuJ,UAAAA,IAAI,EAAC,UAAU;AACf,UAAA,mBAAA,EAAkB,MAAM;UACxB,eAAA5B,EAAAA,EAAAA,CAAAA,MAAA,CAAkBxE,MAAM,EAAgB,eAAA,CAAA;AACxC,UAAA,eAAA,EAAe0B,iBAAkB;UACjC,uBACIE,EAAAA,yBAAyB,GAAGyE,mBAAS,CAACrG,MAAM,EAAE4B,yBAAyB,CAAC,GAAG,EAAA;AAC9E,SAAA,EACI1F,QAAQ,GACP;AACIoK,UAAAA,eAAe,EAAE,MAAM;UACvBC,KAAK,EAAEjC,QAAQ,EAAE;AACjBkC,UAAAA,aAAa,EAAE7D,iBAAAA;AACnB,SAAC,GACD;AAAE2D,UAAAA,eAAe,EAAE,OAAA;AAAQ,SAAC,EAC9BlI,IAAI,EAAA;AACRqI,UAAAA,eAAe,EAAC,IAAA;AAAA,SAAA,CACnB,CAAC,CAAA;AAAA,OAAA;AACJ,KAAA,eAEFtB,KAAA,CAAAC,aAAA,CAACzJ,IAAI,EAAA;AACD8B,MAAAA,IAAI,EAAEA,IAAK;AACXD,MAAAA,IAAI,EAAEA,IAAK;AACXE,MAAAA,cAAc,EAAEA,cAAe;AAC/BI,MAAAA,QAAQ,EAAEA,QAAS;AACnBF,MAAAA,QAAQ,EAAEA,QAAAA;AAAS,KAAA,eAEnBuH,KAAA,CAAAC,aAAA,CAACsB,kBAAE,EAAA;AACCN,MAAAA,IAAI,EAAC,MAAM;AACXO,MAAAA,EAAE,EAAAnC,EAAAA,CAAAA,MAAA,CAAKxE,MAAM,EAAgB,eAAA,CAAA;MAC7B,sBAAsB2B,EAAAA,OAAO,CAACzF,QAAQ,CAAE;AACxCkB,MAAAA,UAAU,EAAEA,UAAW;AACvBD,MAAAA,YAAY,EAAEA,YAAa;AAC3BE,MAAAA,SAAS,EAAEA,SAAU;AACrBvB,MAAAA,GAAG,EAAEmG,SAAAA;KAEJG,EAAAA,eAAO,CAAChC,aAAa,CAAC,gBACnB+E,KAAA,CAAAC,aAAA,CAACwB,gCAAgB,EAAA;MACbV,SAAS,EAAEnE,uBAAO,CAAC8E,iBAAkB;AACrCpJ,MAAAA,IAAI,EAAEA,IAAK;AACXqJ,MAAAA,WAAW,EAAC,8FAAA;KACf,CAAC,GAEF1G,aAAa,CAACyC,GAAG,CAAC,UAACK,IAAI,EAAE6D,KAAK,EAAA;AAAA,MAAA,oBAC1B5B,KAAA,CAAAC,aAAA,CAAC4B,WAAK,EAAA;AACFtD,QAAAA,GAAG,EAAAc,EAAAA,CAAAA,MAAA,CAAKuC,KAAK,EAAK,IAAA,CAAA;AAClB7D,QAAAA,IAAI,EAAEA,IAAK;AACX+D,QAAAA,YAAY,EAAE,CAAE;AAChBlG,QAAAA,IAAI,EAAEA,IAAK;AACXC,QAAAA,YAAY,EAAEA,YAAa;AAC3B+F,QAAAA,KAAK,EAAEA,KAAM;AACb1J,QAAAA,SAAS,EAAEA,SAAAA;AAAU,OACxB,CAAC,CAAA;AAAA,KACL,CAEL,CACF,CACO,CACH,CACjB,CACH,CAAC,CAAA;AAEf,GAAC,CAAC,CAAA;AAAA,EAAA;AAEC,IAAM6J,cAAc,GAAG;AAC1BC,EAAAA,IAAI,EAAE,QAAQ;AACdC,EAAAA,GAAG,EAAE,KAAK;AACVC,EAAAA,MAAM,EAAE3L,YAAY;AACpB4L,EAAAA,IAAI,EAAJA,oBAAI;AACJC,EAAAA,UAAU,EAAE;AACR/J,IAAAA,IAAI,EAAE;AACFgK,MAAAA,GAAG,EAAEC,SAAAA;KACR;AACDhK,IAAAA,IAAI,EAAE;AACF+J,MAAAA,GAAG,EAAEE,WAAAA;KACR;AACD9J,IAAAA,QAAQ,EAAE;AACN4J,MAAAA,GAAG,EAAEE,WAAAA;AACT,KAAA;GACH;AACDC,EAAAA,QAAQ,EAAE;AACNnK,IAAAA,IAAI,EAAE,SAAS;AACfC,IAAAA,IAAI,EAAE,GAAG;AACTC,IAAAA,cAAc,EAAE,OAAA;AACpB,GAAA;AACJ;;;;;;"}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
4
|
+
|
5
|
+
// Утилита предназначена для фильтрации элементов в value, которые отсутствуют в items.
|
6
|
+
// Эти элементы игнорируются и не участвуют в дальнейшей работе компонента.
|
7
|
+
var getInitialValue = function getInitialValue(outerValue, valueToItemMap) {
|
8
|
+
if (Array.isArray(outerValue)) {
|
9
|
+
if (outerValue.length === 0) {
|
10
|
+
return [];
|
11
|
+
}
|
12
|
+
var updatedValue = [];
|
13
|
+
outerValue.forEach(function (value) {
|
14
|
+
if (valueToItemMap.has(value)) {
|
15
|
+
updatedValue.push(value);
|
16
|
+
}
|
17
|
+
});
|
18
|
+
return updatedValue;
|
19
|
+
}
|
20
|
+
if (valueToItemMap.has(outerValue)) {
|
21
|
+
return outerValue;
|
22
|
+
}
|
23
|
+
return '';
|
24
|
+
};
|
25
|
+
|
26
|
+
exports.getInitialValue = getInitialValue;
|
27
|
+
//# sourceMappingURL=getInitialValue.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"getInitialValue.js","sources":["../../../../../src/components/Combobox/ComboboxNew/utils/getInitialValue.ts"],"sourcesContent":["import { ComboboxProps } from '../Combobox.types';\nimport { ValueToItemMapType } from '../hooks/getPathMaps';\n\n// Утилита предназначена для фильтрации элементов в value, которые отсутствуют в items.\n// Эти элементы игнорируются и не участвуют в дальнейшей работе компонента.\nexport const getInitialValue = (\n outerValue: NonNullable<ComboboxProps['value']>,\n valueToItemMap: ValueToItemMapType,\n) => {\n if (Array.isArray(outerValue)) {\n if (outerValue.length === 0) {\n return [];\n }\n\n const updatedValue: string[] = [];\n\n outerValue.forEach((value) => {\n if (valueToItemMap.has(value)) {\n updatedValue.push(value);\n }\n });\n\n return updatedValue;\n }\n\n if (valueToItemMap.has(outerValue)) {\n return outerValue;\n }\n\n return '';\n};\n"],"names":["getInitialValue","outerValue","valueToItemMap","Array","isArray","length","updatedValue","forEach","value","has","push"],"mappings":";;;;AAGA;AACA;AACO,IAAMA,eAAe,GAAG,SAAlBA,eAAeA,CACxBC,UAA+C,EAC/CC,cAAkC,EACjC;AACD,EAAA,IAAIC,KAAK,CAACC,OAAO,CAACH,UAAU,CAAC,EAAE;AAC3B,IAAA,IAAIA,UAAU,CAACI,MAAM,KAAK,CAAC,EAAE;AACzB,MAAA,OAAO,EAAE,CAAA;AACb,KAAA;IAEA,IAAMC,YAAsB,GAAG,EAAE,CAAA;AAEjCL,IAAAA,UAAU,CAACM,OAAO,CAAC,UAACC,KAAK,EAAK;AAC1B,MAAA,IAAIN,cAAc,CAACO,GAAG,CAACD,KAAK,CAAC,EAAE;AAC3BF,QAAAA,YAAY,CAACI,IAAI,CAACF,KAAK,CAAC,CAAA;AAC5B,OAAA;AACJ,KAAC,CAAC,CAAA;AAEF,IAAA,OAAOF,YAAY,CAAA;AACvB,GAAA;AAEA,EAAA,IAAIJ,cAAc,CAACO,GAAG,CAACR,UAAU,CAAC,EAAE;AAChC,IAAA,OAAOA,UAAU,CAAA;AACrB,GAAA;AAEA,EAAA,OAAO,EAAE,CAAA;AACb;;;;"}
|
@@ -88,7 +88,7 @@ var comboboxRoot = exports.comboboxRoot = function comboboxRoot(Root) {
|
|
88
88
|
_useState4 = _slicedToArray(_useState3, 2),
|
89
89
|
internalValue = _useState4[0],
|
90
90
|
setInternalValue = _useState4[1];
|
91
|
-
var value = outerValue
|
91
|
+
var value = outerValue !== null && outerValue !== undefined ? (0, _utils3.getInitialValue)(outerValue, valueToItemMap) : internalValue;
|
92
92
|
var inputRef = (0, _react.useRef)(null);
|
93
93
|
var floatingPopoverRef = (0, _react.useRef)(null);
|
94
94
|
var inputForkRef = (0, _plasmaCore.useForkRef)(inputRef, ref);
|
@@ -320,6 +320,7 @@ var comboboxRoot = exports.comboboxRoot = function comboboxRoot(Root) {
|
|
320
320
|
// В данном эффекте мы следим за изменениями value снаружи и вносим коррективы в дерево чекбоксов.
|
321
321
|
// Пример: когда юзер очистил value извне, тогда нужно пройтись по элементам и выключить все чекбоксы.
|
322
322
|
(0, _react.useLayoutEffect)(function () {
|
323
|
+
var _valueToItemMap$get4;
|
323
324
|
var checkedCopy = new Map(checked);
|
324
325
|
checkedCopy.forEach(function (_, key) {
|
325
326
|
checkedCopy.set(key, false);
|
@@ -337,7 +338,12 @@ var comboboxRoot = exports.comboboxRoot = function comboboxRoot(Root) {
|
|
337
338
|
}
|
338
339
|
}
|
339
340
|
setChecked(checkedCopy);
|
340
|
-
|
341
|
+
setTextValue(((_valueToItemMap$get4 = valueToItemMap.get(outerValue)) === null || _valueToItemMap$get4 === void 0 ? void 0 : _valueToItemMap$get4.label) || '');
|
342
|
+
|
343
|
+
// В deps мы кладем именно outerValue и internalValue, а не просто value.
|
344
|
+
// Т.к. вначале нужно отфильтровать и провалидировать outerValue и результат положить в переменную.
|
345
|
+
// А переменную, содержащую сложные типы данных, нельзя помещать в deps.
|
346
|
+
}, [outerValue, internalValue]);
|
341
347
|
return /*#__PURE__*/_react["default"].createElement(Root, {
|
342
348
|
size: size,
|
343
349
|
view: view,
|
@@ -0,0 +1,26 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.getInitialValue = void 0;
|
7
|
+
// Утилита предназначена для фильтрации элементов в value, которые отсутствуют в items.
|
8
|
+
// Эти элементы игнорируются и не участвуют в дальнейшей работе компонента.
|
9
|
+
var getInitialValue = exports.getInitialValue = function getInitialValue(outerValue, valueToItemMap) {
|
10
|
+
if (Array.isArray(outerValue)) {
|
11
|
+
if (outerValue.length === 0) {
|
12
|
+
return [];
|
13
|
+
}
|
14
|
+
var updatedValue = [];
|
15
|
+
outerValue.forEach(function (value) {
|
16
|
+
if (valueToItemMap.has(value)) {
|
17
|
+
updatedValue.push(value);
|
18
|
+
}
|
19
|
+
});
|
20
|
+
return updatedValue;
|
21
|
+
}
|
22
|
+
if (valueToItemMap.has(outerValue)) {
|
23
|
+
return outerValue;
|
24
|
+
}
|
25
|
+
return '';
|
26
|
+
};
|
@@ -9,6 +9,12 @@ Object.defineProperty(exports, "filterItems", {
|
|
9
9
|
return _filterItems.filterItems;
|
10
10
|
}
|
11
11
|
});
|
12
|
+
Object.defineProperty(exports, "getInitialValue", {
|
13
|
+
enumerable: true,
|
14
|
+
get: function get() {
|
15
|
+
return _getInitialValue.getInitialValue;
|
16
|
+
}
|
17
|
+
});
|
12
18
|
Object.defineProperty(exports, "getItemId", {
|
13
19
|
enumerable: true,
|
14
20
|
get: function get() {
|
@@ -51,4 +57,5 @@ var _updateAncestors = /*#__PURE__*/require("./updateAncestors");
|
|
51
57
|
var _updateSingleAncestors = /*#__PURE__*/require("./updateSingleAncestors");
|
52
58
|
var _sizeToIconSize = /*#__PURE__*/require("./sizeToIconSize");
|
53
59
|
var _filterItems = /*#__PURE__*/require("./filterItems");
|
54
|
-
var _getItemId = /*#__PURE__*/require("./getItemId");
|
60
|
+
var _getItemId = /*#__PURE__*/require("./getItemId");
|
61
|
+
var _getInitialValue = /*#__PURE__*/require("./getInitialValue");
|
@@ -16,7 +16,7 @@ import { sizeToIconSize } from '../../Select/utils';
|
|
16
16
|
import { classes } from './Combobox.tokens';
|
17
17
|
import { FloatingPopover } from './FloatingPopover';
|
18
18
|
import { useKeyNavigation, getItemByFocused } from './hooks/useKeyboardNavigation';
|
19
|
-
import { initialItemsTransform, updateAncestors, updateDescendants, updateSingleAncestors, filterItems, getItemId } from './utils';
|
19
|
+
import { initialItemsTransform, updateAncestors, updateDescendants, updateSingleAncestors, filterItems, getItemId, getInitialValue } from './utils';
|
20
20
|
import { Inner, StyledTextField } from './ui';
|
21
21
|
import { pathReducer, focusedPathReducer } from './reducers';
|
22
22
|
import { getPathMap, getTreeMaps } from './hooks/getPathMaps';
|
@@ -79,7 +79,7 @@ export var comboboxRoot = function comboboxRoot(Root) {
|
|
79
79
|
_useState4 = _slicedToArray(_useState3, 2),
|
80
80
|
internalValue = _useState4[0],
|
81
81
|
setInternalValue = _useState4[1];
|
82
|
-
var value = outerValue
|
82
|
+
var value = outerValue !== null && outerValue !== undefined ? getInitialValue(outerValue, valueToItemMap) : internalValue;
|
83
83
|
var inputRef = useRef(null);
|
84
84
|
var floatingPopoverRef = useRef(null);
|
85
85
|
var inputForkRef = useForkRef(inputRef, ref);
|
@@ -311,6 +311,7 @@ export var comboboxRoot = function comboboxRoot(Root) {
|
|
311
311
|
// В данном эффекте мы следим за изменениями value снаружи и вносим коррективы в дерево чекбоксов.
|
312
312
|
// Пример: когда юзер очистил value извне, тогда нужно пройтись по элементам и выключить все чекбоксы.
|
313
313
|
useLayoutEffect(function () {
|
314
|
+
var _valueToItemMap$get4;
|
314
315
|
var checkedCopy = new Map(checked);
|
315
316
|
checkedCopy.forEach(function (_, key) {
|
316
317
|
checkedCopy.set(key, false);
|
@@ -328,7 +329,12 @@ export var comboboxRoot = function comboboxRoot(Root) {
|
|
328
329
|
}
|
329
330
|
}
|
330
331
|
setChecked(checkedCopy);
|
331
|
-
|
332
|
+
setTextValue(((_valueToItemMap$get4 = valueToItemMap.get(outerValue)) === null || _valueToItemMap$get4 === void 0 ? void 0 : _valueToItemMap$get4.label) || '');
|
333
|
+
|
334
|
+
// В deps мы кладем именно outerValue и internalValue, а не просто value.
|
335
|
+
// Т.к. вначале нужно отфильтровать и провалидировать outerValue и результат положить в переменную.
|
336
|
+
// А переменную, содержащую сложные типы данных, нельзя помещать в deps.
|
337
|
+
}, [outerValue, internalValue]);
|
332
338
|
return /*#__PURE__*/React.createElement(Root, {
|
333
339
|
size: size,
|
334
340
|
view: view,
|
@@ -0,0 +1,20 @@
|
|
1
|
+
// Утилита предназначена для фильтрации элементов в value, которые отсутствуют в items.
|
2
|
+
// Эти элементы игнорируются и не участвуют в дальнейшей работе компонента.
|
3
|
+
export var getInitialValue = function getInitialValue(outerValue, valueToItemMap) {
|
4
|
+
if (Array.isArray(outerValue)) {
|
5
|
+
if (outerValue.length === 0) {
|
6
|
+
return [];
|
7
|
+
}
|
8
|
+
var updatedValue = [];
|
9
|
+
outerValue.forEach(function (value) {
|
10
|
+
if (valueToItemMap.has(value)) {
|
11
|
+
updatedValue.push(value);
|
12
|
+
}
|
13
|
+
});
|
14
|
+
return updatedValue;
|
15
|
+
}
|
16
|
+
if (valueToItemMap.has(outerValue)) {
|
17
|
+
return outerValue;
|
18
|
+
}
|
19
|
+
return '';
|
20
|
+
};
|
@@ -4,4 +4,5 @@ export { updateAncestors } from './updateAncestors';
|
|
4
4
|
export { updateSingleAncestors } from './updateSingleAncestors';
|
5
5
|
export { sizeToIconSize } from './sizeToIconSize';
|
6
6
|
export { filterItems } from './filterItems';
|
7
|
-
export { getItemId } from './getItemId';
|
7
|
+
export { getItemId } from './getItemId';
|
8
|
+
export { getInitialValue } from './getInitialValue';
|
@@ -8,6 +8,7 @@ import { getTreeMaps, getPathMap } from './hooks/getPathMaps.js';
|
|
8
8
|
import { IconArrowWrapper, StyledArrow, Ul, StyledEmptyState, base } from './Combobox.styles.js';
|
9
9
|
import { base as base$1 } from './variations/_view/base.js';
|
10
10
|
import { base as base$2 } from './variations/_size/base.js';
|
11
|
+
import { getInitialValue } from './utils/getInitialValue.js';
|
11
12
|
import { initialItemsTransform } from './utils/initialItemsTransform.js';
|
12
13
|
import { filterItems } from './utils/filterItems.js';
|
13
14
|
import { pathReducer } from './reducers/pathReducer.js';
|
@@ -79,7 +80,7 @@ var comboboxRoot = function comboboxRoot(Root) {
|
|
79
80
|
_useState4 = _slicedToArray(_useState3, 2),
|
80
81
|
internalValue = _useState4[0],
|
81
82
|
setInternalValue = _useState4[1];
|
82
|
-
var value = outerValue
|
83
|
+
var value = outerValue !== null && outerValue !== undefined ? getInitialValue(outerValue, valueToItemMap) : internalValue;
|
83
84
|
var inputRef = useRef(null);
|
84
85
|
var floatingPopoverRef = useRef(null);
|
85
86
|
var inputForkRef = useForkRef(inputRef, ref);
|
@@ -311,6 +312,7 @@ var comboboxRoot = function comboboxRoot(Root) {
|
|
311
312
|
// В данном эффекте мы следим за изменениями value снаружи и вносим коррективы в дерево чекбоксов.
|
312
313
|
// Пример: когда юзер очистил value извне, тогда нужно пройтись по элементам и выключить все чекбоксы.
|
313
314
|
useLayoutEffect(function () {
|
315
|
+
var _valueToItemMap$get4;
|
314
316
|
var checkedCopy = new Map(checked);
|
315
317
|
checkedCopy.forEach(function (_, key) {
|
316
318
|
checkedCopy.set(key, false);
|
@@ -328,7 +330,12 @@ var comboboxRoot = function comboboxRoot(Root) {
|
|
328
330
|
}
|
329
331
|
}
|
330
332
|
setChecked(checkedCopy);
|
331
|
-
|
333
|
+
setTextValue(((_valueToItemMap$get4 = valueToItemMap.get(outerValue)) === null || _valueToItemMap$get4 === void 0 ? void 0 : _valueToItemMap$get4.label) || '');
|
334
|
+
|
335
|
+
// В deps мы кладем именно outerValue и internalValue, а не просто value.
|
336
|
+
// Т.к. вначале нужно отфильтровать и провалидировать outerValue и результат положить в переменную.
|
337
|
+
// А переменную, содержащую сложные типы данных, нельзя помещать в deps.
|
338
|
+
}, [outerValue, internalValue]);
|
332
339
|
return /*#__PURE__*/React.createElement(Root, {
|
333
340
|
size: size,
|
334
341
|
view: view,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Combobox.js","sources":["../../../../src/components/Combobox/ComboboxNew/Combobox.tsx"],"sourcesContent":["import React, { forwardRef, useState, useReducer, useMemo, createContext, useLayoutEffect, useRef } from 'react';\nimport type { ChangeEvent } from 'react';\nimport { safeUseId, useForkRef } from '@salutejs/plasma-core';\n\nimport { RootProps } from '../../../engines';\nimport { isEmpty } from '../../../utils';\nimport { useOutsideClick } from '../../../hooks';\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} from './utils';\nimport { Inner, StyledTextField } from './ui';\nimport { pathReducer, focusedPathReducer } from './reducers';\nimport { getPathMap, getTreeMaps } from './hooks/getPathMaps';\nimport { Ul, base, StyledArrow, IconArrowWrapper, StyledEmptyState } from './Combobox.styles';\nimport type { ItemContext, ComboboxProps } from './Combobox.types';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as sizeCSS } from './variations/_size/base';\nimport type { ItemOptionTransformed } from './ui/Inner/ui/Item/Item.types';\n\nexport const Context = createContext<ItemContext>({} as ItemContext);\n\n/**\n * Поле ввода с выпадающим списком и возможностью фильтрации и выбора элементов.\n */\nexport const comboboxRoot = (Root: RootProps<HTMLInputElement, Omit<ComboboxProps, 'items'>>) =>\n forwardRef<HTMLInputElement, ComboboxProps>((props, ref) => {\n const {\n multiple,\n value: outerValue,\n onChange: outerOnChange,\n isTargetAmount,\n items,\n placement = 'bottom-start',\n label,\n placeholder,\n helperText,\n contentLeft,\n textBefore,\n textAfter,\n variant = 'normal',\n listOverflow,\n listHeight,\n listWidth,\n portal,\n renderItem,\n view,\n size,\n labelPlacement,\n readOnly = false,\n disabled = false,\n alwaysOpened = false,\n filter,\n closeAfterSelect: outerCloseAfterSelect,\n ...rest\n } = props;\n // Создаем структуры для быстрой работы с деревом\n const [valueToCheckedMap, valueToItemMap, labelToItemMap] = useMemo(() => getTreeMaps(items), [items]);\n\n const [textValue, setTextValue] = useState(valueToItemMap.get(outerValue as string)?.label || '');\n const [internalValue, setInternalValue] = useState<string | string[]>(multiple ? [] : '');\n\n const value = outerValue || internalValue;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const floatingPopoverRef = useRef<HTMLDivElement>(null);\n const inputForkRef = useForkRef(inputRef, ref);\n const treeId = safeUseId();\n\n const transformedItems = useMemo(() => initialItemsTransform(items || []), [items]);\n\n const filteredItems = filterItems(\n transformedItems,\n textValue,\n valueToItemMap.get(value as string)?.label as string,\n filter,\n );\n\n const [pathMap, focusedToValueMap] = useMemo(() => getPathMap(filteredItems), [filteredItems, textValue]);\n\n // Состояния дерева элементов\n const [path, dispatchPath] = useReducer(pathReducer, []);\n const [focusedPath, dispatchFocusedPath] = useReducer(focusedPathReducer, []);\n const [checked, setChecked] = useState(valueToCheckedMap);\n\n const isCurrentListOpen = alwaysOpened || 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 const targetRef = useOutsideClick<HTMLUListElement>(() => {\n if (!isCurrentListOpen) {\n return;\n }\n\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n\n // Проверяем, отличается ли значение в инпуте от выбранного value после закрытия дропдауна.\n // Если изменилось, то возвращаем label выбранного айтема.\n // Если нет выбранного элемента, то стираем значение инпута.\n if (textValue !== value) {\n if (isEmpty(value)) {\n setTextValue('');\n } else {\n setTextValue(valueToItemMap.get(value as string)?.label || '');\n }\n }\n }, floatingPopoverRef);\n\n const onChange = (newValue: string | Array<string>) => {\n if (outerOnChange) {\n outerOnChange(newValue as any);\n }\n\n setInternalValue(newValue);\n };\n\n const handleClickArrow = () => {\n if (disabled || readOnly) {\n return;\n }\n\n if (isCurrentListOpen) {\n dispatchPath({ type: 'reset' });\n } else {\n dispatchPath({ type: 'opened_first_level' });\n }\n\n dispatchFocusedPath({ type: 'reset' });\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\n // Обработчик чипов\n const handleChipsChange = (chipLabels: any[]) => {\n onChange(chipLabels.map((chipLabel) => labelToItemMap.get(chipLabel)!.value));\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 }\n };\n\n // Обработчик выбора чекбоксов (только при multiple)\n const handleCheckboxChange = (item: ItemOptionTransformed) => {\n if (!multiple) {\n return;\n }\n\n const checkedCopy = new Map(checked);\n\n if (!checkedCopy.get(item.value)) {\n checkedCopy.set(item.value, true);\n updateDescendants(item, checkedCopy, true);\n } else {\n checkedCopy.set(item.value, false);\n updateDescendants(item, checkedCopy, false);\n }\n\n updateAncestors(item, checkedCopy);\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 if (!alwaysOpened && closeAfterSelect) {\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n }\n\n if (onChange) {\n onChange(newValues);\n }\n\n // После выбора/снятия чекбокса скроллим к инпуту\n setTimeout(() => {\n if (inputRef.current) {\n inputRef.current.scrollIntoView({\n behavior: 'smooth',\n inline: 'start',\n });\n }\n }, 1);\n };\n\n // Обработчик клика по айтему выпадающего списка\n const handleItemClick = (item: ItemOptionTransformed, e?: React.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 checkedCopy = new Map(checked);\n\n const isCurrentChecked = checkedCopy.get(item.value);\n\n checkedCopy.forEach((_, key) => {\n checkedCopy.set(key, false);\n });\n\n if (!isCurrentChecked) {\n checkedCopy.set(item.value, 'done');\n updateSingleAncestors(item, checkedCopy, 'dot');\n }\n\n setTextValue(isCurrentChecked ? '' : item.label);\n\n if (!alwaysOpened && closeAfterSelect) {\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n }\n\n if (onChange) {\n onChange(isCurrentChecked ? '' : item.value);\n }\n };\n\n const getChips = (): string[] => {\n if (multiple) {\n if (value.length === 0) return [];\n\n if (isTargetAmount) {\n return [`Выбрано ${value.length}`];\n }\n\n return (value as []).map((value) => valueToItemMap.get(value)!.label);\n }\n\n return [];\n };\n\n const handlePressDown = (item: ItemOptionTransformed, e?: React.MouseEvent<HTMLElement>) => {\n if (isEmpty(item.items)) {\n handleItemClick(item, e);\n } else if (multiple) {\n handleCheckboxChange(item);\n }\n };\n\n const { onKeyDown } = useKeyNavigation({\n focusedPath,\n dispatchFocusedPath,\n path,\n dispatchPath,\n pathMap,\n focusedToValueMap,\n handleListToggle,\n handlePressDown,\n multiselect: multiple,\n setTextValue,\n });\n\n // В данном эффекте мы следим за изменениями value снаружи и вносим коррективы в дерево чекбоксов.\n // Пример: когда юзер очистил value извне, тогда нужно пройтись по элементам и выключить все чекбоксы.\n useLayoutEffect(() => {\n const checkedCopy = new Map(checked);\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 checkedCopy.set(val, true);\n updateDescendants(valueToItemMap.get(val)!, checkedCopy, true);\n updateAncestors(valueToItemMap.get(val)!, checkedCopy);\n });\n } else {\n checkedCopy.set(value, 'done');\n updateSingleAncestors(valueToItemMap.get(value)!, checkedCopy, 'dot');\n }\n }\n\n setChecked(checkedCopy);\n }, [value]);\n\n return (\n <Root size={size} view={view} labelPlacement={labelPlacement} disabled={disabled} readOnly={readOnly}>\n <div>\n <Context.Provider\n value={{\n focusedPath,\n checked,\n multiple,\n size,\n handleCheckboxChange,\n handleItemClick,\n variant,\n renderItem,\n valueToItemMap,\n treeId,\n }}\n >\n <FloatingPopover\n ref={floatingPopoverRef}\n opened={isCurrentListOpen}\n onToggle={(opened: boolean) => opened && handleListToggle(true)}\n placement={placement}\n portal={portal}\n target={(referenceRef) => (\n <StyledTextField\n ref={inputForkRef}\n inputWrapperRef={referenceRef}\n value={textValue}\n onChange={handleTextValueChange}\n size={size}\n view={view}\n labelPlacement={labelPlacement}\n disabled={disabled}\n readOnly={readOnly}\n label={label}\n placeholder={placeholder}\n contentLeft={contentLeft}\n contentRight={\n <IconArrowWrapper disabled={disabled} onClick={handleClickArrow}>\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={helperText}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-controls={`${treeId}_tree_level_1`}\n aria-expanded={isCurrentListOpen}\n aria-activedescendant={\n activeDescendantItemValue ? getItemId(treeId, activeDescendantItemValue) : ''\n }\n {...(multiple\n ? {\n enumerationType: 'chip',\n chips: getChips(),\n onChangeChips: handleChipsChange,\n }\n : { enumerationType: 'plain' })}\n {...rest}\n onEnterDisabled // Пропс для отключения обработчика Enter внутри Textfield\n />\n )}\n >\n <Root\n size={size}\n view={view}\n labelPlacement={labelPlacement}\n disabled={disabled}\n readOnly={readOnly}\n >\n <Ul\n role=\"tree\"\n id={`${treeId}_tree_level_1`}\n aria-multiselectable={Boolean(multiple)}\n listHeight={listHeight}\n listOverflow={listOverflow}\n listWidth={listWidth}\n ref={targetRef}\n >\n {isEmpty(filteredItems) ? (\n <StyledEmptyState\n className={classes.emptyStateWrapper}\n size={size}\n description=\"Ничего не найдено\"\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 />\n ))\n )}\n </Ul>\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":["Context","createContext","comboboxRoot","Root","forwardRef","props","ref","_valueToItemMap$get","_valueToItemMap$get2","_getItemByFocused","multiple","outerValue","value","outerOnChange","onChange","isTargetAmount","items","_props$placement","placement","label","placeholder","helperText","contentLeft","textBefore","textAfter","_props$variant","variant","listOverflow","listHeight","listWidth","portal","renderItem","view","size","labelPlacement","_props$readOnly","readOnly","_props$disabled","disabled","_props$alwaysOpened","alwaysOpened","filter","outerCloseAfterSelect","closeAfterSelect","rest","_objectWithoutProperties","_excluded","_useMemo","useMemo","getTreeMaps","_useMemo2","_slicedToArray","valueToCheckedMap","valueToItemMap","labelToItemMap","_useState","useState","get","_useState2","textValue","setTextValue","_useState3","_useState4","internalValue","setInternalValue","inputRef","useRef","floatingPopoverRef","inputForkRef","useForkRef","treeId","safeUseId","transformedItems","initialItemsTransform","filteredItems","filterItems","_useMemo3","getPathMap","_useMemo4","pathMap","focusedToValueMap","_useReducer","useReducer","pathReducer","_useReducer2","path","dispatchPath","_useReducer3","focusedPathReducer","_useReducer4","focusedPath","dispatchFocusedPath","_useState5","_useState6","checked","setChecked","isCurrentListOpen","Boolean","activeDescendantItemValue","getItemByFocused","withArrowInverse","classes","arrowInverse","undefined","targetRef","useOutsideClick","type","isEmpty","_valueToItemMap$get3","newValue","handleClickArrow","handleTextValueChange","e","target","handleChipsChange","chipLabels","map","chipLabel","handleListToggle","opened","handleCheckboxChange","item","checkedCopy","Map","set","updateDescendants","updateAncestors","newValues","forEach","key","push","setTimeout","current","scrollIntoView","behavior","inline","handleItemClick","stopPropagation","isCurrentChecked","_","updateSingleAncestors","getChips","length","concat","handlePressDown","_useKeyNavigation","useKeyNavigation","multiselect","onKeyDown","useLayoutEffect","Array","isArray","val","React","createElement","Provider","FloatingPopover","onToggle","referenceRef","StyledTextField","_extends","inputWrapperRef","contentRight","IconArrowWrapper","onClick","StyledArrow","color","sizeToIconSize","className","leftHelper","role","getItemId","enumerationType","chips","onChangeChips","onEnterDisabled","Ul","id","StyledEmptyState","emptyStateWrapper","description","index","Inner","currentLevel","comboboxConfig","name","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, createContext, useLayoutEffect, useRef } from 'react';\nimport type { ChangeEvent } from 'react';\nimport { safeUseId, useForkRef } from '@salutejs/plasma-core';\n\nimport { RootProps } from '../../../engines';\nimport { isEmpty } from '../../../utils';\nimport { useOutsideClick } from '../../../hooks';\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 getInitialValue,\n} from './utils';\nimport { Inner, StyledTextField } from './ui';\nimport { pathReducer, focusedPathReducer } from './reducers';\nimport { getPathMap, getTreeMaps } from './hooks/getPathMaps';\nimport { Ul, base, StyledArrow, IconArrowWrapper, StyledEmptyState } from './Combobox.styles';\nimport type { ItemContext, ComboboxProps } from './Combobox.types';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as sizeCSS } from './variations/_size/base';\nimport type { ItemOptionTransformed } from './ui/Inner/ui/Item/Item.types';\n\nexport const Context = createContext<ItemContext>({} as ItemContext);\n\n/**\n * Поле ввода с выпадающим списком и возможностью фильтрации и выбора элементов.\n */\nexport const comboboxRoot = (Root: RootProps<HTMLInputElement, Omit<ComboboxProps, 'items'>>) =>\n forwardRef<HTMLInputElement, ComboboxProps>((props, ref) => {\n const {\n multiple,\n value: outerValue,\n onChange: outerOnChange,\n isTargetAmount,\n items,\n placement = 'bottom-start',\n label,\n placeholder,\n helperText,\n contentLeft,\n textBefore,\n textAfter,\n variant = 'normal',\n listOverflow,\n listHeight,\n listWidth,\n portal,\n renderItem,\n view,\n size,\n labelPlacement,\n readOnly = false,\n disabled = false,\n alwaysOpened = false,\n filter,\n closeAfterSelect: outerCloseAfterSelect,\n ...rest\n } = props;\n // Создаем структуры для быстрой работы с деревом\n const [valueToCheckedMap, valueToItemMap, labelToItemMap] = useMemo(() => getTreeMaps(items), [items]);\n\n const [textValue, setTextValue] = useState(valueToItemMap.get(outerValue as string)?.label || '');\n const [internalValue, setInternalValue] = useState<string | string[]>(multiple ? [] : '');\n\n const value =\n outerValue !== null && outerValue !== undefined\n ? getInitialValue(outerValue, valueToItemMap)\n : internalValue;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const floatingPopoverRef = useRef<HTMLDivElement>(null);\n const inputForkRef = useForkRef(inputRef, ref);\n const treeId = safeUseId();\n\n const transformedItems = useMemo(() => initialItemsTransform(items || []), [items]);\n\n const filteredItems = filterItems(\n transformedItems,\n textValue,\n valueToItemMap.get(value as string)?.label as string,\n filter,\n );\n\n const [pathMap, focusedToValueMap] = useMemo(() => getPathMap(filteredItems), [filteredItems, textValue]);\n\n // Состояния дерева элементов\n const [path, dispatchPath] = useReducer(pathReducer, []);\n const [focusedPath, dispatchFocusedPath] = useReducer(focusedPathReducer, []);\n const [checked, setChecked] = useState(valueToCheckedMap);\n\n const isCurrentListOpen = alwaysOpened || 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 const targetRef = useOutsideClick<HTMLUListElement>(() => {\n if (!isCurrentListOpen) {\n return;\n }\n\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n\n // Проверяем, отличается ли значение в инпуте от выбранного value после закрытия дропдауна.\n // Если изменилось, то возвращаем label выбранного айтема.\n // Если нет выбранного элемента, то стираем значение инпута.\n if (textValue !== value) {\n if (isEmpty(value)) {\n setTextValue('');\n } else {\n setTextValue(valueToItemMap.get(value as string)?.label || '');\n }\n }\n }, floatingPopoverRef);\n\n const onChange = (newValue: string | Array<string>) => {\n if (outerOnChange) {\n outerOnChange(newValue as any);\n }\n\n setInternalValue(newValue);\n };\n\n const handleClickArrow = () => {\n if (disabled || readOnly) {\n return;\n }\n\n if (isCurrentListOpen) {\n dispatchPath({ type: 'reset' });\n } else {\n dispatchPath({ type: 'opened_first_level' });\n }\n\n dispatchFocusedPath({ type: 'reset' });\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\n // Обработчик чипов\n const handleChipsChange = (chipLabels: any[]) => {\n onChange(chipLabels.map((chipLabel) => labelToItemMap.get(chipLabel)!.value));\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 }\n };\n\n // Обработчик выбора чекбоксов (только при multiple)\n const handleCheckboxChange = (item: ItemOptionTransformed) => {\n if (!multiple) {\n return;\n }\n\n const checkedCopy = new Map(checked);\n\n if (!checkedCopy.get(item.value)) {\n checkedCopy.set(item.value, true);\n updateDescendants(item, checkedCopy, true);\n } else {\n checkedCopy.set(item.value, false);\n updateDescendants(item, checkedCopy, false);\n }\n\n updateAncestors(item, checkedCopy);\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 if (!alwaysOpened && closeAfterSelect) {\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n }\n\n if (onChange) {\n onChange(newValues);\n }\n\n // После выбора/снятия чекбокса скроллим к инпуту\n setTimeout(() => {\n if (inputRef.current) {\n inputRef.current.scrollIntoView({\n behavior: 'smooth',\n inline: 'start',\n });\n }\n }, 1);\n };\n\n // Обработчик клика по айтему выпадающего списка\n const handleItemClick = (item: ItemOptionTransformed, e?: React.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 checkedCopy = new Map(checked);\n\n const isCurrentChecked = checkedCopy.get(item.value);\n\n checkedCopy.forEach((_, key) => {\n checkedCopy.set(key, false);\n });\n\n if (!isCurrentChecked) {\n checkedCopy.set(item.value, 'done');\n updateSingleAncestors(item, checkedCopy, 'dot');\n }\n\n setTextValue(isCurrentChecked ? '' : item.label);\n\n if (!alwaysOpened && closeAfterSelect) {\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n }\n\n if (onChange) {\n onChange(isCurrentChecked ? '' : item.value);\n }\n };\n\n const getChips = (): string[] => {\n if (multiple) {\n if (value.length === 0) return [];\n\n if (isTargetAmount) {\n return [`Выбрано ${value.length}`];\n }\n\n return (value as []).map((value) => valueToItemMap.get(value)!.label);\n }\n\n return [];\n };\n\n const handlePressDown = (item: ItemOptionTransformed, e?: React.MouseEvent<HTMLElement>) => {\n if (isEmpty(item.items)) {\n handleItemClick(item, e);\n } else if (multiple) {\n handleCheckboxChange(item);\n }\n };\n\n const { onKeyDown } = useKeyNavigation({\n focusedPath,\n dispatchFocusedPath,\n path,\n dispatchPath,\n pathMap,\n focusedToValueMap,\n handleListToggle,\n handlePressDown,\n multiselect: multiple,\n setTextValue,\n });\n\n // В данном эффекте мы следим за изменениями value снаружи и вносим коррективы в дерево чекбоксов.\n // Пример: когда юзер очистил value извне, тогда нужно пройтись по элементам и выключить все чекбоксы.\n useLayoutEffect(() => {\n const checkedCopy = new Map(checked);\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 checkedCopy.set(val, true);\n updateDescendants(valueToItemMap.get(val)!, checkedCopy, true);\n updateAncestors(valueToItemMap.get(val)!, checkedCopy);\n });\n } else {\n checkedCopy.set(value, 'done');\n updateSingleAncestors(valueToItemMap.get(value)!, checkedCopy, 'dot');\n }\n }\n\n setChecked(checkedCopy);\n\n setTextValue(valueToItemMap.get(outerValue as string)?.label || '');\n\n // В deps мы кладем именно outerValue и internalValue, а не просто value.\n // Т.к. вначале нужно отфильтровать и провалидировать outerValue и результат положить в переменную.\n // А переменную, содержащую сложные типы данных, нельзя помещать в deps.\n }, [outerValue, internalValue]);\n\n return (\n <Root size={size} view={view} labelPlacement={labelPlacement} disabled={disabled} readOnly={readOnly}>\n <div>\n <Context.Provider\n value={{\n focusedPath,\n checked,\n multiple,\n size,\n handleCheckboxChange,\n handleItemClick,\n variant,\n renderItem,\n valueToItemMap,\n treeId,\n }}\n >\n <FloatingPopover\n ref={floatingPopoverRef}\n opened={isCurrentListOpen}\n onToggle={(opened: boolean) => opened && handleListToggle(true)}\n placement={placement}\n portal={portal}\n target={(referenceRef) => (\n <StyledTextField\n ref={inputForkRef}\n inputWrapperRef={referenceRef}\n value={textValue}\n onChange={handleTextValueChange}\n size={size}\n view={view}\n labelPlacement={labelPlacement}\n disabled={disabled}\n readOnly={readOnly}\n label={label}\n placeholder={placeholder}\n contentLeft={contentLeft}\n contentRight={\n <IconArrowWrapper disabled={disabled} onClick={handleClickArrow}>\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={helperText}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-controls={`${treeId}_tree_level_1`}\n aria-expanded={isCurrentListOpen}\n aria-activedescendant={\n activeDescendantItemValue ? getItemId(treeId, activeDescendantItemValue) : ''\n }\n {...(multiple\n ? {\n enumerationType: 'chip',\n chips: getChips(),\n onChangeChips: handleChipsChange,\n }\n : { enumerationType: 'plain' })}\n {...rest}\n onEnterDisabled // Пропс для отключения обработчика Enter внутри Textfield\n />\n )}\n >\n <Root\n size={size}\n view={view}\n labelPlacement={labelPlacement}\n disabled={disabled}\n readOnly={readOnly}\n >\n <Ul\n role=\"tree\"\n id={`${treeId}_tree_level_1`}\n aria-multiselectable={Boolean(multiple)}\n listHeight={listHeight}\n listOverflow={listOverflow}\n listWidth={listWidth}\n ref={targetRef}\n >\n {isEmpty(filteredItems) ? (\n <StyledEmptyState\n className={classes.emptyStateWrapper}\n size={size}\n description=\"Ничего не найдено\"\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 />\n ))\n )}\n </Ul>\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":["Context","createContext","comboboxRoot","Root","forwardRef","props","ref","_valueToItemMap$get","_valueToItemMap$get2","_getItemByFocused","multiple","outerValue","value","outerOnChange","onChange","isTargetAmount","items","_props$placement","placement","label","placeholder","helperText","contentLeft","textBefore","textAfter","_props$variant","variant","listOverflow","listHeight","listWidth","portal","renderItem","view","size","labelPlacement","_props$readOnly","readOnly","_props$disabled","disabled","_props$alwaysOpened","alwaysOpened","filter","outerCloseAfterSelect","closeAfterSelect","rest","_objectWithoutProperties","_excluded","_useMemo","useMemo","getTreeMaps","_useMemo2","_slicedToArray","valueToCheckedMap","valueToItemMap","labelToItemMap","_useState","useState","get","_useState2","textValue","setTextValue","_useState3","_useState4","internalValue","setInternalValue","undefined","getInitialValue","inputRef","useRef","floatingPopoverRef","inputForkRef","useForkRef","treeId","safeUseId","transformedItems","initialItemsTransform","filteredItems","filterItems","_useMemo3","getPathMap","_useMemo4","pathMap","focusedToValueMap","_useReducer","useReducer","pathReducer","_useReducer2","path","dispatchPath","_useReducer3","focusedPathReducer","_useReducer4","focusedPath","dispatchFocusedPath","_useState5","_useState6","checked","setChecked","isCurrentListOpen","Boolean","activeDescendantItemValue","getItemByFocused","withArrowInverse","classes","arrowInverse","targetRef","useOutsideClick","type","isEmpty","_valueToItemMap$get3","newValue","handleClickArrow","handleTextValueChange","e","target","handleChipsChange","chipLabels","map","chipLabel","handleListToggle","opened","handleCheckboxChange","item","checkedCopy","Map","set","updateDescendants","updateAncestors","newValues","forEach","key","push","setTimeout","current","scrollIntoView","behavior","inline","handleItemClick","stopPropagation","isCurrentChecked","_","updateSingleAncestors","getChips","length","concat","handlePressDown","_useKeyNavigation","useKeyNavigation","multiselect","onKeyDown","useLayoutEffect","_valueToItemMap$get4","Array","isArray","val","React","createElement","Provider","FloatingPopover","onToggle","referenceRef","StyledTextField","_extends","inputWrapperRef","contentRight","IconArrowWrapper","onClick","StyledArrow","color","sizeToIconSize","className","leftHelper","role","getItemId","enumerationType","chips","onChangeChips","onEnterDisabled","Ul","id","StyledEmptyState","emptyStateWrapper","description","index","Inner","currentLevel","comboboxConfig","name","tag","layout","base","variations","css","viewCSS","sizeCSS","defaults"],"mappings":"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"}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
// Утилита предназначена для фильтрации элементов в value, которые отсутствуют в items.
|
2
|
+
// Эти элементы игнорируются и не участвуют в дальнейшей работе компонента.
|
3
|
+
var getInitialValue = function getInitialValue(outerValue, valueToItemMap) {
|
4
|
+
if (Array.isArray(outerValue)) {
|
5
|
+
if (outerValue.length === 0) {
|
6
|
+
return [];
|
7
|
+
}
|
8
|
+
var updatedValue = [];
|
9
|
+
outerValue.forEach(function (value) {
|
10
|
+
if (valueToItemMap.has(value)) {
|
11
|
+
updatedValue.push(value);
|
12
|
+
}
|
13
|
+
});
|
14
|
+
return updatedValue;
|
15
|
+
}
|
16
|
+
if (valueToItemMap.has(outerValue)) {
|
17
|
+
return outerValue;
|
18
|
+
}
|
19
|
+
return '';
|
20
|
+
};
|
21
|
+
|
22
|
+
export { getInitialValue };
|
23
|
+
//# sourceMappingURL=getInitialValue.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"getInitialValue.js","sources":["../../../../../src/components/Combobox/ComboboxNew/utils/getInitialValue.ts"],"sourcesContent":["import { ComboboxProps } from '../Combobox.types';\nimport { ValueToItemMapType } from '../hooks/getPathMaps';\n\n// Утилита предназначена для фильтрации элементов в value, которые отсутствуют в items.\n// Эти элементы игнорируются и не участвуют в дальнейшей работе компонента.\nexport const getInitialValue = (\n outerValue: NonNullable<ComboboxProps['value']>,\n valueToItemMap: ValueToItemMapType,\n) => {\n if (Array.isArray(outerValue)) {\n if (outerValue.length === 0) {\n return [];\n }\n\n const updatedValue: string[] = [];\n\n outerValue.forEach((value) => {\n if (valueToItemMap.has(value)) {\n updatedValue.push(value);\n }\n });\n\n return updatedValue;\n }\n\n if (valueToItemMap.has(outerValue)) {\n return outerValue;\n }\n\n return '';\n};\n"],"names":["getInitialValue","outerValue","valueToItemMap","Array","isArray","length","updatedValue","forEach","value","has","push"],"mappings":"AAGA;AACA;AACO,IAAMA,eAAe,GAAG,SAAlBA,eAAeA,CACxBC,UAA+C,EAC/CC,cAAkC,EACjC;AACD,EAAA,IAAIC,KAAK,CAACC,OAAO,CAACH,UAAU,CAAC,EAAE;AAC3B,IAAA,IAAIA,UAAU,CAACI,MAAM,KAAK,CAAC,EAAE;AACzB,MAAA,OAAO,EAAE,CAAA;AACb,KAAA;IAEA,IAAMC,YAAsB,GAAG,EAAE,CAAA;AAEjCL,IAAAA,UAAU,CAACM,OAAO,CAAC,UAACC,KAAK,EAAK;AAC1B,MAAA,IAAIN,cAAc,CAACO,GAAG,CAACD,KAAK,CAAC,EAAE;AAC3BF,QAAAA,YAAY,CAACI,IAAI,CAACF,KAAK,CAAC,CAAA;AAC5B,OAAA;AACJ,KAAC,CAAC,CAAA;AAEF,IAAA,OAAOF,YAAY,CAAA;AACvB,GAAA;AAEA,EAAA,IAAIJ,cAAc,CAACO,GAAG,CAACR,UAAU,CAAC,EAAE;AAChC,IAAA,OAAOA,UAAU,CAAA;AACrB,GAAA;AAEA,EAAA,OAAO,EAAE,CAAA;AACb;;;;"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@salutejs/plasma-new-hope",
|
3
|
-
"version": "0.174.0-canary.1505.
|
3
|
+
"version": "0.174.0-canary.1505.11485998091.0",
|
4
4
|
"description": "Salute Design System blueprint",
|
5
5
|
"main": "cjs/index.js",
|
6
6
|
"module": "es/index.js",
|
@@ -127,5 +127,5 @@
|
|
127
127
|
"sideEffects": [
|
128
128
|
"*.css"
|
129
129
|
],
|
130
|
-
"gitHead": "
|
130
|
+
"gitHead": "9c0d81e436556bca97ceb2a19d0c11e21ce11d72"
|
131
131
|
}
|
@@ -88,7 +88,7 @@ var comboboxRoot = exports.comboboxRoot = function comboboxRoot(Root) {
|
|
88
88
|
_useState4 = _slicedToArray(_useState3, 2),
|
89
89
|
internalValue = _useState4[0],
|
90
90
|
setInternalValue = _useState4[1];
|
91
|
-
var value = outerValue
|
91
|
+
var value = outerValue !== null && outerValue !== undefined ? (0, _utils3.getInitialValue)(outerValue, valueToItemMap) : internalValue;
|
92
92
|
var inputRef = (0, _react.useRef)(null);
|
93
93
|
var floatingPopoverRef = (0, _react.useRef)(null);
|
94
94
|
var inputForkRef = (0, _plasmaCore.useForkRef)(inputRef, ref);
|
@@ -320,6 +320,7 @@ var comboboxRoot = exports.comboboxRoot = function comboboxRoot(Root) {
|
|
320
320
|
// В данном эффекте мы следим за изменениями value снаружи и вносим коррективы в дерево чекбоксов.
|
321
321
|
// Пример: когда юзер очистил value извне, тогда нужно пройтись по элементам и выключить все чекбоксы.
|
322
322
|
(0, _react.useLayoutEffect)(function () {
|
323
|
+
var _valueToItemMap$get4;
|
323
324
|
var checkedCopy = new Map(checked);
|
324
325
|
checkedCopy.forEach(function (_, key) {
|
325
326
|
checkedCopy.set(key, false);
|
@@ -337,7 +338,12 @@ var comboboxRoot = exports.comboboxRoot = function comboboxRoot(Root) {
|
|
337
338
|
}
|
338
339
|
}
|
339
340
|
setChecked(checkedCopy);
|
340
|
-
|
341
|
+
setTextValue(((_valueToItemMap$get4 = valueToItemMap.get(outerValue)) === null || _valueToItemMap$get4 === void 0 ? void 0 : _valueToItemMap$get4.label) || '');
|
342
|
+
|
343
|
+
// В deps мы кладем именно outerValue и internalValue, а не просто value.
|
344
|
+
// Т.к. вначале нужно отфильтровать и провалидировать outerValue и результат положить в переменную.
|
345
|
+
// А переменную, содержащую сложные типы данных, нельзя помещать в deps.
|
346
|
+
}, [outerValue, internalValue]);
|
341
347
|
return /*#__PURE__*/_react["default"].createElement(Root, {
|
342
348
|
size: size,
|
343
349
|
view: view,
|
@@ -0,0 +1,26 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.getInitialValue = void 0;
|
7
|
+
// Утилита предназначена для фильтрации элементов в value, которые отсутствуют в items.
|
8
|
+
// Эти элементы игнорируются и не участвуют в дальнейшей работе компонента.
|
9
|
+
var getInitialValue = exports.getInitialValue = function getInitialValue(outerValue, valueToItemMap) {
|
10
|
+
if (Array.isArray(outerValue)) {
|
11
|
+
if (outerValue.length === 0) {
|
12
|
+
return [];
|
13
|
+
}
|
14
|
+
var updatedValue = [];
|
15
|
+
outerValue.forEach(function (value) {
|
16
|
+
if (valueToItemMap.has(value)) {
|
17
|
+
updatedValue.push(value);
|
18
|
+
}
|
19
|
+
});
|
20
|
+
return updatedValue;
|
21
|
+
}
|
22
|
+
if (valueToItemMap.has(outerValue)) {
|
23
|
+
return outerValue;
|
24
|
+
}
|
25
|
+
return '';
|
26
|
+
};
|
@@ -9,6 +9,12 @@ Object.defineProperty(exports, "filterItems", {
|
|
9
9
|
return _filterItems.filterItems;
|
10
10
|
}
|
11
11
|
});
|
12
|
+
Object.defineProperty(exports, "getInitialValue", {
|
13
|
+
enumerable: true,
|
14
|
+
get: function get() {
|
15
|
+
return _getInitialValue.getInitialValue;
|
16
|
+
}
|
17
|
+
});
|
12
18
|
Object.defineProperty(exports, "getItemId", {
|
13
19
|
enumerable: true,
|
14
20
|
get: function get() {
|
@@ -51,4 +57,5 @@ var _updateAncestors = /*#__PURE__*/require("./updateAncestors");
|
|
51
57
|
var _updateSingleAncestors = /*#__PURE__*/require("./updateSingleAncestors");
|
52
58
|
var _sizeToIconSize = /*#__PURE__*/require("./sizeToIconSize");
|
53
59
|
var _filterItems = /*#__PURE__*/require("./filterItems");
|
54
|
-
var _getItemId = /*#__PURE__*/require("./getItemId");
|
60
|
+
var _getItemId = /*#__PURE__*/require("./getItemId");
|
61
|
+
var _getInitialValue = /*#__PURE__*/require("./getInitialValue");
|
@@ -16,7 +16,7 @@ import { sizeToIconSize } from '../../Select/utils';
|
|
16
16
|
import { classes } from './Combobox.tokens';
|
17
17
|
import { FloatingPopover } from './FloatingPopover';
|
18
18
|
import { useKeyNavigation, getItemByFocused } from './hooks/useKeyboardNavigation';
|
19
|
-
import { initialItemsTransform, updateAncestors, updateDescendants, updateSingleAncestors, filterItems, getItemId } from './utils';
|
19
|
+
import { initialItemsTransform, updateAncestors, updateDescendants, updateSingleAncestors, filterItems, getItemId, getInitialValue } from './utils';
|
20
20
|
import { Inner, StyledTextField } from './ui';
|
21
21
|
import { pathReducer, focusedPathReducer } from './reducers';
|
22
22
|
import { getPathMap, getTreeMaps } from './hooks/getPathMaps';
|
@@ -79,7 +79,7 @@ export var comboboxRoot = function comboboxRoot(Root) {
|
|
79
79
|
_useState4 = _slicedToArray(_useState3, 2),
|
80
80
|
internalValue = _useState4[0],
|
81
81
|
setInternalValue = _useState4[1];
|
82
|
-
var value = outerValue
|
82
|
+
var value = outerValue !== null && outerValue !== undefined ? getInitialValue(outerValue, valueToItemMap) : internalValue;
|
83
83
|
var inputRef = useRef(null);
|
84
84
|
var floatingPopoverRef = useRef(null);
|
85
85
|
var inputForkRef = useForkRef(inputRef, ref);
|
@@ -311,6 +311,7 @@ export var comboboxRoot = function comboboxRoot(Root) {
|
|
311
311
|
// В данном эффекте мы следим за изменениями value снаружи и вносим коррективы в дерево чекбоксов.
|
312
312
|
// Пример: когда юзер очистил value извне, тогда нужно пройтись по элементам и выключить все чекбоксы.
|
313
313
|
useLayoutEffect(function () {
|
314
|
+
var _valueToItemMap$get4;
|
314
315
|
var checkedCopy = new Map(checked);
|
315
316
|
checkedCopy.forEach(function (_, key) {
|
316
317
|
checkedCopy.set(key, false);
|
@@ -328,7 +329,12 @@ export var comboboxRoot = function comboboxRoot(Root) {
|
|
328
329
|
}
|
329
330
|
}
|
330
331
|
setChecked(checkedCopy);
|
331
|
-
|
332
|
+
setTextValue(((_valueToItemMap$get4 = valueToItemMap.get(outerValue)) === null || _valueToItemMap$get4 === void 0 ? void 0 : _valueToItemMap$get4.label) || '');
|
333
|
+
|
334
|
+
// В deps мы кладем именно outerValue и internalValue, а не просто value.
|
335
|
+
// Т.к. вначале нужно отфильтровать и провалидировать outerValue и результат положить в переменную.
|
336
|
+
// А переменную, содержащую сложные типы данных, нельзя помещать в deps.
|
337
|
+
}, [outerValue, internalValue]);
|
332
338
|
return /*#__PURE__*/React.createElement(Root, {
|
333
339
|
size: size,
|
334
340
|
view: view,
|
@@ -0,0 +1,20 @@
|
|
1
|
+
// Утилита предназначена для фильтрации элементов в value, которые отсутствуют в items.
|
2
|
+
// Эти элементы игнорируются и не участвуют в дальнейшей работе компонента.
|
3
|
+
export var getInitialValue = function getInitialValue(outerValue, valueToItemMap) {
|
4
|
+
if (Array.isArray(outerValue)) {
|
5
|
+
if (outerValue.length === 0) {
|
6
|
+
return [];
|
7
|
+
}
|
8
|
+
var updatedValue = [];
|
9
|
+
outerValue.forEach(function (value) {
|
10
|
+
if (valueToItemMap.has(value)) {
|
11
|
+
updatedValue.push(value);
|
12
|
+
}
|
13
|
+
});
|
14
|
+
return updatedValue;
|
15
|
+
}
|
16
|
+
if (valueToItemMap.has(outerValue)) {
|
17
|
+
return outerValue;
|
18
|
+
}
|
19
|
+
return '';
|
20
|
+
};
|
@@ -4,4 +4,5 @@ export { updateAncestors } from './updateAncestors';
|
|
4
4
|
export { updateSingleAncestors } from './updateSingleAncestors';
|
5
5
|
export { sizeToIconSize } from './sizeToIconSize';
|
6
6
|
export { filterItems } from './filterItems';
|
7
|
-
export { getItemId } from './getItemId';
|
7
|
+
export { getItemId } from './getItemId';
|
8
|
+
export { getInitialValue } from './getInitialValue';
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../../../src/components/Combobox/ComboboxNew/Combobox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4F,MAAM,OAAO,CAAC;AAIjH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
1
|
+
{"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../../../src/components/Combobox/ComboboxNew/Combobox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4F,MAAM,OAAO,CAAC;AAIjH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAqB7C,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKnE,eAAO,MAAM,OAAO,4BAAgD,CAAC;AAErE;;GAEG;AACH,eAAO,MAAM,YAAY,SAAU,UAAU,gBAAgB,EAAE,KAAK,aAAa,EAAE,OAAO,CAAC,CAAC,+IAgZtF,CAAC;AAEP,eAAO,MAAM,cAAc;;;mBAlZQ,UAAU,gBAAgB,EAAE,KAAK,aAAa,EAAE,OAAO,CAAC,CAAC;;;;;;;;;;;;;;;;;;CAua3F,CAAC"}
|
@@ -0,0 +1,4 @@
|
|
1
|
+
import { ComboboxProps } from '../Combobox.types';
|
2
|
+
import { ValueToItemMapType } from '../hooks/getPathMaps';
|
3
|
+
export declare const getInitialValue: (outerValue: NonNullable<ComboboxProps['value']>, valueToItemMap: ValueToItemMapType) => string | string[];
|
4
|
+
//# sourceMappingURL=getInitialValue.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"getInitialValue.d.ts","sourceRoot":"","sources":["../../../../../src/components/Combobox/ComboboxNew/utils/getInitialValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI1D,eAAO,MAAM,eAAe,eACZ,YAAY,aAAa,CAAC,OAAO,CAAC,CAAC,0DAwBlD,CAAC"}
|
@@ -5,4 +5,5 @@ export { updateSingleAncestors } from './updateSingleAncestors';
|
|
5
5
|
export { sizeToIconSize } from './sizeToIconSize';
|
6
6
|
export { filterItems } from './filterItems';
|
7
7
|
export { getItemId } from './getItemId';
|
8
|
+
export { getInitialValue } from './getInitialValue';
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/Combobox/ComboboxNew/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/Combobox/ComboboxNew/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
|