@skbkontur/react-ui 5.4.5 → 5.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [5.4.6](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@5.4.5...@skbkontur/react-ui@5.4.6) (2025-12-08)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **TokenInput:** restore expected behavior with object type items ([a6ed0b7](https://github.com/skbkontur/retail-ui/commit/a6ed0b740c315f79ed5acdf3a64e5da5be0771a9))
12
+
13
+
14
+
15
+
16
+
6
17
  ## [5.4.5](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@5.4.4...@skbkontur/react-ui@5.4.5) (2025-12-03)
7
18
 
8
19
 
@@ -1273,4 +1273,4 @@ TokenInput = exports.TokenInput = (_dec = (0, _decorators.locale)('TokenInput',
1273
1273
  */;_proto.reset = function reset() {this.dispatch({ type: 'RESET' });};_proto.isCursorVisibleForState = function isCursorVisibleForState(state) {return state.inFocus && (this.isInputValueChanged || state.activeTokens.length === 0);};_proto.updateInputTextWidth = function updateInputTextWidth() {if (this.textHelper) {// в IE текст иногда не помещается в input
1274
1274
  // из-за округления, поэтому округляем явно
1275
1275
  var inputValueWidth = parseFloat(this.textHelper.getTextWidth().toFixed(2));var inputValueHeight = parseFloat(this.textHelper.getTextHeight().toFixed(2));this.dispatch({ type: 'SET_INPUT_VALUE_WIDTH', payload: inputValueWidth }, LayoutEvents.emit);this.dispatch({ type: 'SET_INPUT_VALUE_HEIGHT', payload: inputValueHeight }, LayoutEvents.emit);}};_proto.moveFocusToLastToken = function moveFocusToLastToken() {var items = this.getProps().selectedItems;if (this.state.inputValue === '' && items && items.length > 0) {this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: items.slice(-1) });}};return (0, _createClass2.default)(TokenInput, [{ key: "textareaId", get: function get() {var _this$props$id;return (_this$props$id = this.props.id) != null ? _this$props$id : this._textareaId;} }, { key: "showAddItemHint", get: function get() {var items = this.state.autocompleteItems;var value = this.getProps().valueToItem(this.state.inputValue);if (items && this.hasValueInItems(items, value)) {return false;}var selectedItems = this.getProps().selectedItems;if (selectedItems && this.hasValueInItems(selectedItems, value)) {return false;}if (this.type === TokenInputType.Combined && this.isInputValueChanged) {return true;}} }, { key: "type", get: function get() {return this.props.type ? this.props.type : TokenInputType.WithReference;} }, { key: "menuRef", get: function get() {return this.tokensInputMenu && this.tokensInputMenu.getMenuRef();} }, { key: "isCursorVisible", get: function get() {return this.isCursorVisibleForState(this.state);} }, { key: "isEditingMode", get: function get() {return this.state.editingTokenIndex > -1;} }, { key: "isInputChanged", get: function get() {if (this.isEditingMode) {return this.isTokenValueChanged;}return this.isInputValueChanged;} }, { key: "isInputValueChanged", get: function get() {var inputValue = this.state.inputValue;return inputValue !== '';} }, { key: "isTokenValueChanged", get: function get() {var _this$state4 = this.state,inputValue = _this$state4.inputValue,editingTokenIndex = _this$state4.editingTokenIndex;var _this$getProps12 = this.getProps(),valueToString = _this$getProps12.valueToString,selectedItems = _this$getProps12.selectedItems;if (this.isEditingMode) {return valueToString(selectedItems[editingTokenIndex]) !== inputValue;}return false;} }]);}(_react.default.PureComponent), _TokenInput.__KONTUR_REACT_UI__ = 'TokenInput', _TokenInput.displayName = 'TokenInput', _TokenInput.defaultProps = { selectedItems: [], // TEMP_FAKE_FLAG помогает узнать, остались ли разделители дефолтными или пользователь передал их равными дефолтным.
1276
- delimiters: [',', TEMP_FAKE_FLAG], renderItem: identity, renderValue: identity, valueToString: identity, valueToItem: function valueToItem(item) {return item;}, toKey: defaultToKey, itemToId: defaultToKey, onValueChange: function onValueChange() {return void 0;}, width: 250, onBlur: _utils.emptyHandler, onFocus: _utils.emptyHandler, onMouseEnter: _utils.emptyHandler, onMouseLeave: _utils.emptyHandler, menuWidth: 'auto', menuAlign: 'cursor' }, _TokenInput)) || _class) || _class) || _class);
1276
+ delimiters: [',', TEMP_FAKE_FLAG], renderItem: identity, renderValue: identity, valueToString: identity, valueToItem: function valueToItem(item) {return item;}, toKey: defaultToKey, itemToId: identity, onValueChange: function onValueChange() {return void 0;}, width: 250, onBlur: _utils.emptyHandler, onFocus: _utils.emptyHandler, onMouseEnter: _utils.emptyHandler, onMouseLeave: _utils.emptyHandler, menuWidth: 'auto', menuAlign: 'cursor' }, _TokenInput)) || _class) || _class) || _class);
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_lodash","_globalObject","_Popup","_identifiers","LayoutEvents","_interopRequireWildcard","_Token","_MenuItem","_utils","_ThemeContext","_decorators","_CommonWrapper","_Emotion","_rootNode","_createPropsGetter","_uidUtils","_TokenView","_featureFlagsContext","_SizeDecorator","_blink2","_locale","_TokenInput2","_TokenInputReducer","_TokenInputMenu","_TextWidthHelper","_dec","_class","_TokenInput","TEMP_FAKE_FLAG","TokenInputType","exports","DefaultState","inputValue","reservedInputValue","undefined","autocompleteItems","activeTokens","editingTokenIndex","inFocus","loading","preventBlur","inputValueWidth","inputValueHeight","TokenInputDataTids","root","tokenInputMenu","label","defaultToKey","item","toString","identity","defaultRenderToken","_ref","isActive","onClick","onDoubleClick","onRemove","disabled","size","default","createElement","Token","key","TokenInput","locale","TokenInputLocaleHelper","rootNode","withSize","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","_textareaId","getUid","rootId","PopupIds","getRandomID","input","tokensInputMenu","textHelper","wrapper","memoizedTokens","Map","isEqual","itemA","itemB","_this$getProps","getProps","itemToId","lodashIsEqual","hasValueInItems","items","value","_this$getProps2","valueToString","map","includes","some","inputRef","node","tokensInputMenuRef","textHelperRef","wrapperRef","dispatch","action","cb","setState","prevState","tokenInputReducer","handleInputFocus","event","type","onFocus","handleInputBlur","isBlurToMenu","handleOutsideBlur","_this$input","preventDefault","focus","globalObject","requestAnimationFrame","_this$input2","payload","onBlur","_this$state","isEditingMode","finishTokenEdit","isTokenValueChanged","selectItem","isInputChanged","checkForUnexpectedInput","menuRef","document","_this$tokensInputMenu","menu","getRootNode","getMenuRef","relatedTarget","activeElement","contains","handleWrapperMouseDown","_this$wrapper","target","isClickOnToken","handleWrapperMouseUp","handleCopy","isCursorVisible","_this$getProps3","selectedItems","delimiters","tokens","token","indexOf","sort","index","clipboardData","setData","join","handleInputPaste","WithReference","paste","getData","_this$getProps4","valueToItem","onValueChange","delimiter","stopPropagation","trim","split","RegExp","filter","Boolean","newItems","tryGetItems","_ref2","_asyncToGenerator2","_regenerator","mark","_callee","query","_this$getProps5","isSelectedItem","isEditingItem","autocompleteItemsUnique","editingItem","selectItemIndex","wrap","_callee$","_context","prev","next","props","getItems","isInputValueChanged","hideMenuIfEmptyInputValue","sent","unshift","emit","highlightMenuItem","findIndex","toLowerCase","setTimeout","_this$menuRef","highlightItem","stop","_x","handleKeyDown","onKeyDown","defaultPrevented","handleInputKeyDown","handleWrapperKeyDown","e","_this$state$autocompl","_this$state$autocompl2","_this$input3","_this$input4","isKeyComma","isKeyEnter","WithoutReference","newValue","handleAddItem","isRightmostTokenNotDisabled","isTokenDisabled","canSetValueToInput","showAddItemHint","enter","isKeyArrowVertical","isKeyArrowUp","up","down","isKeyEscape","blur","isKeyBackspace","moveFocusToLastToken","isKeyArrowLeft","selectionStart","getAvailableTokenIndex","itemNew","focusInput","_this$input5","selectInputText","setSelectionRange","_this$wrapper2","_this$getProps6","isKeyDelete","indexOfActiveToken","itemsNew","_this$input6","isKeyArrowHorizontal","handleWrapperArrows","handleTokenEdit","isShortcutSelectAll","activeItemIndex","newItemIndex","isLeftEdge","isRightEdge","isKeyArrowRight","shiftKey","handleWrapperArrowsWithoutShift","handleWrapperArrowsWithShift","_this$input7","handleValueChange","_this$getProps7","handleRemoveToken","_","filteredActiveTokens","handleTokenClick","ctrlKey","_this$getProps8","_autocompleteItems$fi","_this$getProps9","_this$state2","editedItem","find","splice","onUnexpectedInput","returnedValue","featureFlags","tokenInputCreateTokenOnBlurInWithoutReferenceMode","handleChangeInputValue","trimLeft","endsWith","trimRight","onInputValueChange","Combined","renderTokensStart","slice","renderToken","renderTokensEnd","_this$props$selectedI","_this$props","_this$props$renderTok","handleIconClick","handleTokenDoubleClick","renderedToken","set","renderAddButton","_this$locale","addButtonComment","addButtonTitle","MenuItem","comment","itemIndex","has","get","startIndex","isDirectionLeft","_this$getProps10","step","availableIndex","_inheritsLoose2","_proto","prototype","getDelimiters","_this$props$delimiter","every","propsGetter","createPropsGetter","defaultProps","propsWithOldDelimiters","_extends2","componentDidMount","_globalObject$documen","updateInputTextWidth","addEventListener","autoFocus","componentDidUpdate","prevProps","clear","isCursorVisibleForState","componentWillUnmount","_globalObject$documen2","removeEventListener","_this$input8","_this$input9","blink","el","blinkColor","theme","inputBlinkColor","render","_this2","ReactUIFeatureFlagsContext","Consumer","flags","getFullReactUIFlagsContext","ThemeContext","renderMain","getLabelSizeClassName","styles","labelLarge","labelMedium","labelSmall","getInputSizeClassName","inputLarge","inputMedium","inputSmall","_cx","_cx2","_cx3","Error","_this$props2","maxMenuHeight","error","warning","renderNotFound","inputMode","renderTotalCount","totalCount","ariaDescribedby","ariaLabel","_this$getProps11","width","onMouseEnter","onMouseLeave","menuWidth","menuAlign","renderItem","_this$state3","showMenu","inputInlineStyles","height","caretColor","labelClassName","cx","hovering","labelDisabled","labelFocused","inputClassName","inputDisabled","placeholder","inputNode","TokenView","className","inputPlaceholderWrapper","hideCloseButton","id","textareaId","ref","style","spellCheck","onChange","onPaste","CommonWrapper","rootNodeRef","setRootNode","onMouseDown","onMouseUp","htmlFor","TextWidthHelper","text","TokenInputMenu","popupMenuId","opened","anchorElementForCursor","anchorElementRoot","reservedInput","reset","parseFloat","getTextWidth","toFixed","getTextHeight","_createClass2","_this$props$id","_this$state4","_this$getProps12","React","PureComponent","__KONTUR_REACT_UI__","displayName","renderValue","toKey","emptyHandler"],"sources":["TokenInput.tsx"],"sourcesContent":["import type {\n AriaAttributes,\n ChangeEvent,\n FocusEvent,\n FocusEventHandler,\n HTMLAttributes,\n KeyboardEvent,\n KeyboardEventHandler,\n MouseEventHandler,\n ReactNode,\n} from 'react';\nimport React from 'react';\nimport lodashIsEqual from 'lodash.isequal';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { PopupIds } from '../../internal/Popup';\nimport {\n isKeyArrowHorizontal,\n isKeyArrowLeft,\n isKeyArrowRight,\n isKeyArrowUp,\n isKeyArrowVertical,\n isKeyBackspace,\n isKeyComma,\n isKeyDelete,\n isKeyEnter,\n isKeyEscape,\n isShortcutSelectAll,\n} from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport type { Menu } from '../../internal/Menu';\nimport type { TokenProps, TokenSize } from '../Token';\nimport { Token } from '../Token';\nimport type { MenuItemState } from '../MenuItem';\nimport { MenuItem } from '../MenuItem';\nimport type { AnyObject } from '../../lib/utils';\nimport { emptyHandler, getRandomID } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { locale } from '../../lib/locale/decorators';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { getUid } from '../../lib/uidUtils';\nimport { TokenView } from '../Token/TokenView';\nimport type { ReactUIFeatureFlags } from '../../lib/featureFlagsContext';\nimport { getFullReactUIFlagsContext, ReactUIFeatureFlagsContext } from '../../lib/featureFlagsContext';\nimport { withSize } from '../../lib/size/SizeDecorator';\nimport type { SizeProp } from '../../lib/types/props';\nimport { blink } from '../../lib/blink';\n\nimport type { TokenInputLocale } from './locale';\nimport { TokenInputLocaleHelper } from './locale';\nimport { styles } from './TokenInput.styles';\nimport type { TokenInputAction } from './TokenInputReducer';\nimport { tokenInputReducer } from './TokenInputReducer';\nimport { TokenInputMenu } from './TokenInputMenu';\nimport { TextWidthHelper } from './TextWidthHelper';\n\nconst TEMP_FAKE_FLAG = 'TEMP_FAKE_FLAG';\n\nexport enum TokenInputType {\n WithReference,\n WithoutReference,\n Combined,\n}\n\nexport type TokenInputMenuAlign = 'left' | 'cursor';\n\nexport interface TokenInputProps<T>\n extends CommonProps,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'> {\n /** Задает выбранные токены, которые будут отображаться в поле ввода. */\n selectedItems?: T[];\n\n /** Задает функцию, которая вызывается при добавлении нового токена. */\n onValueChange?: (items: T[]) => void;\n\n /** Задает HTML-событие `onmouseenter`.\n * @ignore */\n onMouseEnter?: MouseEventHandler<HTMLDivElement>;\n\n /** Задает HTML-событие `onmouseleave`.\n * @ignore */\n onMouseLeave?: MouseEventHandler<HTMLDivElement>;\n\n /** Задает HTML-событие `onfocus`.\n * @ignore */\n onFocus?: FocusEventHandler<HTMLTextAreaElement>;\n\n /** Задает HTML-событие `onblur`.\n * @ignore */\n onBlur?: FocusEventHandler<HTMLTextAreaElement>;\n\n /** Задает HTML-событие `onkeydown`. */\n onKeyDown?: KeyboardEventHandler<HTMLTextAreaElement>;\n\n /** Устанавливает фокус на контроле после окончания загрузки страницы. */\n autoFocus?: boolean;\n\n /** Задает размер контрола. */\n size?: TokenSize;\n\n /** Задает тип инпута.\n * Возможные значения:\n * `TokenInputType.WithReference` (можно выбирать токены только из предложенных, нельзя добавить новые).\n * `TokenInputType.WithoutReference` (можно добавлять токены, но нельзя выбирать).\n * `TokenInputType.Combined` (можно и выбирать, и добавлять). */\n type?: TokenInputType;\n\n /** Задает ширину выпадающего меню. Может быть 'auto', в пикселях, процентах (от ширины инпута) и других конкретных единицах.\n * Если menuAlign = 'cursor', то ширина выпадающего меню всегда будет равна 'auto' (по ширине текста). */\n menuWidth?: React.CSSProperties['width'];\n\n /** Задает выравнивание выпадающего меню. */\n menuAlign?: TokenInputMenuAlign;\n\n /** Задает функцию поиска элементов, должна возвращать Promise с массивом элементов. По умолчанию ожидаются строки.\n * Элементы могут быть любого типа. В таком случае необходимо определить свойства `renderItem`, `valueToString`. */\n getItems?: (query: string) => Promise<T[]>;\n\n /** Скрывает меню при пустом вводе. */\n hideMenuIfEmptyInputValue?: boolean;\n\n /** Задает функцию, которая отображает элемент списка. */\n renderItem?: (item: T, state: MenuItemState) => React.ReactNode | null;\n\n /** Задает функцию, которая отображает выбранное значение. */\n renderValue?: (item: T) => React.ReactNode;\n\n /** Задает функцию, которая возвращает строковое представление токена.\n * @default item => item */\n valueToString?: (item: T) => string;\n\n /** Задает функцию, которая отображает сообщение об общем количестве элементов.\n * `found` учитывает только компонент `MenuItem`. Им \"оборачиваются\" элементы, возвращаемые `getItems()`. */\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n\n /** Определяет общее количество элементов. Необходим для работы `renderTotalCount`. */\n totalCount?: number;\n\n /** Задает функцию, которая отображает заданное содержимое при пустом результате поиска. Не работает, если рендерится `AddButton`. */\n renderNotFound?: () => React.ReactNode;\n\n /** Преобразует значение в элемент списка. */\n valueToItem?: (value: string) => T;\n\n /** @deprecated Используйте `itemToId` вместо `toKey`. */\n toKey?: (item: T) => string | number | undefined;\n\n /** Задает функцию сравнения полученных результатов с value. */\n itemToId?: (item: T) => string | number | undefined;\n\n /** Задает текст, который отображается если не введено никакое значение. */\n placeholder?: string;\n\n /** Задает символы, которые разделяют введённый текст на токены. */\n delimiters?: string[];\n\n /** Переводит контрол в состояние валидации \"ошибка\". */\n error?: boolean;\n\n /** Переводит контрол в состояние валидации \"предупреждение\". */\n warning?: boolean;\n\n /** Делает компонент недоступным. */\n disabled?: boolean;\n\n /** Задает ширину токен-инпута. */\n width?: string | number;\n\n /** Задает максимальную высоту выпадающего меню. */\n maxMenuHeight?: number | string;\n\n /** Задает функцию, которая отображает токен и предоставляет возможность кастомизации внешнего вида и поведения токена. */\n renderToken?: (item: T, props: Partial<TokenProps>) => ReactNode;\n\n /** Задает функцию, вызывающуюся при изменении текста в поле ввода. */\n onInputValueChange?: (value: string) => void;\n\n /** Задает функцию отрисовки кнопки добавления в выпадающем списке */\n renderAddButton?: (query?: string, onAddItem?: () => void) => ReactNode;\n\n /** Задает функцию для обработки ввода строки в инпут и последующую потерю фокуса компонентом.\n * Функция срабатывает с аргументом инпута строки\n *\n * Если при потере фокуса в выпадающем списке будет только один элемент и результат `valueToString` с этим элементом будет\n * совпадать со значением в текстовом поле, то сработает `onValueChange` со значением данного элемента\n *\n * Сама функция также может вернуть значение, неравное `undefined`, с которым будет вызван `onValueChange`.\n * При возвращаемом значении `null` будет выполнена очистка текущего значения инпута, а в режиме редактирования токен будет удален. */\n onUnexpectedInput?: (value: string) => void | null | undefined | T;\n\n /** Задает типы вводимых данных. */\n inputMode?: React.HTMLAttributes<HTMLTextAreaElement>['inputMode'];\n}\n\nexport interface TokenInputState<T> {\n autocompleteItems?: T[];\n activeTokens: T[];\n editingTokenIndex: number;\n clickedToken?: T;\n clickedTokenTimeout?: number;\n inFocus?: boolean;\n inputValue: string;\n reservedInputValue: string | undefined;\n inputValueWidth: number;\n inputValueHeight: number;\n preventBlur?: boolean;\n loading?: boolean;\n}\n\nexport const DefaultState = {\n inputValue: '',\n reservedInputValue: undefined,\n autocompleteItems: undefined,\n activeTokens: [],\n editingTokenIndex: -1,\n inFocus: false,\n loading: false,\n preventBlur: false,\n inputValueWidth: 2,\n inputValueHeight: 22,\n};\n\nexport const TokenInputDataTids = {\n root: 'TokenInput__root',\n tokenInputMenu: 'TokenInputMenu__root',\n label: 'TokenInput__label',\n} as const;\n\ntype DefaultProps<T> = Required<\n Pick<\n TokenInputProps<T>,\n | 'selectedItems'\n | 'delimiters'\n | 'renderItem'\n | 'renderValue'\n | 'valueToString'\n | 'valueToItem'\n | 'toKey'\n | 'itemToId'\n | 'onValueChange'\n | 'width'\n | 'onBlur'\n | 'onFocus'\n | 'onMouseEnter'\n | 'onMouseLeave'\n | 'menuWidth'\n | 'menuAlign'\n >\n>;\n\nconst defaultToKey = <T extends AnyObject>(item: T): string => item.toString();\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint\nconst identity = <T extends unknown>(item: T): T => item;\nconst defaultRenderToken = <T extends AnyObject>(\n item: T,\n { isActive, onClick, onDoubleClick, onRemove, disabled, size }: Partial<TokenProps>,\n) => (\n <Token\n key={item.toString()}\n isActive={isActive}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n onRemove={onRemove}\n disabled={disabled}\n size={size}\n >\n {item.toString()}\n </Token>\n);\n\n/**\n * Поле с токенами `TokenInput` — это поле ввода со списком подсказок.\n *\n * Поле с токенами используют для выбора нескольких значений из справочника и для добавления своих значений.\n */\n@rootNode\n@locale('TokenInput', TokenInputLocaleHelper)\n@withSize\nexport class TokenInput<T = string> extends React.PureComponent<TokenInputProps<T>, TokenInputState<T>> {\n public static __KONTUR_REACT_UI__ = 'TokenInput';\n public static displayName = 'TokenInput';\n\n public static defaultProps: DefaultProps<any> = {\n selectedItems: [],\n // TEMP_FAKE_FLAG помогает узнать, остались ли разделители дефолтными или пользователь передал их равными дефолтным.\n delimiters: [',', TEMP_FAKE_FLAG],\n renderItem: identity,\n renderValue: identity,\n valueToString: identity,\n valueToItem: (item: string) => item,\n toKey: defaultToKey,\n itemToId: defaultToKey,\n onValueChange: () => void 0,\n width: 250 as string | number,\n onBlur: emptyHandler,\n onFocus: emptyHandler,\n onMouseEnter: emptyHandler,\n onMouseLeave: emptyHandler,\n menuWidth: 'auto',\n menuAlign: 'cursor',\n };\n\n private getDelimiters(): string[] {\n const delimiters = this.props.delimiters ?? [];\n if (delimiters.every((delimiter) => delimiter !== TEMP_FAKE_FLAG)) {\n return delimiters;\n }\n return delimiters.filter((delimiter) => delimiter !== TEMP_FAKE_FLAG);\n }\n\n private getProps() {\n const propsGetter = createPropsGetter(TokenInput.defaultProps);\n const propsWithOldDelimiters = propsGetter.apply(this);\n return { ...propsWithOldDelimiters, delimiters: this.getDelimiters() };\n }\n\n private get textareaId() {\n return this.props.id ?? this._textareaId;\n }\n\n public state: TokenInputState<T> = DefaultState;\n\n private readonly _textareaId: string = getUid();\n private rootId = PopupIds.root + getRandomID();\n private readonly locale!: TokenInputLocale;\n private theme!: Theme;\n private size!: SizeProp;\n public featureFlags!: ReactUIFeatureFlags;\n private input: HTMLTextAreaElement | null = null;\n private tokensInputMenu: TokenInputMenu<T> | null = null;\n private textHelper: TextWidthHelper | null = null;\n private wrapper: HTMLLabelElement | null = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private memoizedTokens = new Map();\n\n public componentDidMount() {\n this.updateInputTextWidth();\n globalObject.document?.addEventListener('copy', this.handleCopy);\n if (this.props.autoFocus) {\n this.focusInput();\n }\n }\n\n public componentDidUpdate(prevProps: TokenInputProps<T> & DefaultProps<T>, prevState: TokenInputState<T>) {\n if (prevState.inputValue !== this.state.inputValue) {\n this.updateInputTextWidth();\n }\n if (prevState.activeTokens.length === 0 && this.state.activeTokens.length > 0) {\n this.dispatch({\n type: 'SET_AUTOCOMPLETE_ITEMS',\n payload: undefined,\n });\n }\n if (prevProps.selectedItems.length !== this.getProps().selectedItems.length) {\n LayoutEvents.emit();\n this.memoizedTokens.clear();\n }\n if (!this.isCursorVisibleForState(prevState) && this.isCursorVisible) {\n this.tryGetItems(this.isEditingMode ? '' : this.state.inputValue);\n }\n }\n\n public componentWillUnmount() {\n globalObject.document?.removeEventListener('copy', this.handleCopy);\n }\n\n /**\n * @public\n */\n public focus() {\n this.input?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.input?.blur();\n }\n\n /** Кратковременно визуально подсвечивает поле ввода, чтобы привлечь внимание пользователя.\n * @public\n */\n public blink() {\n blink({ el: this.wrapper, blinkColor: this.theme.inputBlinkColor });\n }\n\n public render() {\n return (\n <ReactUIFeatureFlagsContext.Consumer>\n {(flags) => {\n this.featureFlags = getFullReactUIFlagsContext(flags);\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }}\n </ReactUIFeatureFlagsContext.Consumer>\n );\n }\n\n private getLabelSizeClassName() {\n switch (this.size) {\n case 'large':\n return styles.labelLarge(this.theme);\n case 'medium':\n return styles.labelMedium(this.theme);\n case 'small':\n default:\n return styles.labelSmall(this.theme);\n }\n }\n\n private getInputSizeClassName() {\n switch (this.size) {\n case 'large':\n return styles.inputLarge(this.theme);\n case 'medium':\n return styles.inputMedium(this.theme);\n case 'small':\n default:\n return styles.inputSmall(this.theme);\n }\n }\n\n private renderMain() {\n if (this.type !== TokenInputType.WithoutReference && !this.props.getItems) {\n throw Error('Missed getItems for type ' + this.type);\n }\n\n const {\n maxMenuHeight,\n error,\n warning,\n disabled,\n renderNotFound,\n hideMenuIfEmptyInputValue,\n inputMode,\n renderTotalCount,\n totalCount,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n } = this.props;\n\n const { selectedItems, width, onMouseEnter, onMouseLeave, menuWidth, menuAlign, renderItem } = this.getProps();\n\n const {\n activeTokens,\n inFocus,\n inputValueWidth,\n inputValueHeight,\n inputValue,\n reservedInputValue,\n autocompleteItems,\n loading,\n } = this.state;\n\n const showMenu =\n this.type !== TokenInputType.WithoutReference &&\n this.isCursorVisible &&\n activeTokens.length === 0 &&\n (this.isInputValueChanged || !hideMenuIfEmptyInputValue);\n\n const theme = this.theme;\n\n const inputInlineStyles: React.CSSProperties = {\n // вычисляем ширину чтобы input автоматически перенёсся на следующую строку при необходимости\n width: inputValueWidth,\n height: inputValueHeight,\n // в ie не работает, но альтернативный способ --- дать tabindex для label --- предположительно ещё сложнее\n caretColor: this.isCursorVisible ? undefined : 'transparent',\n };\n\n const labelClassName = cx(styles.label(theme), this.getLabelSizeClassName(), {\n [styles.hovering(this.theme)]: !inFocus && !disabled && !warning && !error,\n [styles.labelDisabled(theme)]: !!disabled,\n [styles.labelFocused(theme)]: !!inFocus,\n [styles.error(theme)]: !!error,\n [styles.warning(theme)]: !!warning,\n });\n const inputClassName = cx(styles.input(theme), this.getInputSizeClassName(), {\n [styles.inputDisabled(theme)]: !!disabled,\n });\n\n const placeholder = selectedItems.length === 0 && !inputValue ? this.props.placeholder : '';\n\n const inputNode = (\n <TokenView\n size={this.size}\n className={cx({\n // input растягивается на всю ширину чтобы placeholder не обрезался\n [styles.inputPlaceholderWrapper()]: Boolean(placeholder),\n })}\n hideCloseButton={Boolean(placeholder)}\n >\n <textarea\n id={this.textareaId}\n ref={this.inputRef}\n value={inputValue}\n style={inputInlineStyles}\n spellCheck={false}\n disabled={disabled}\n className={inputClassName}\n placeholder={placeholder}\n onFocus={this.handleInputFocus}\n onBlur={this.handleInputBlur}\n onChange={this.handleChangeInputValue}\n onKeyDown={this.handleKeyDown}\n onPaste={this.handleInputPaste}\n inputMode={inputMode}\n aria-label={ariaLabel}\n aria-describedby={ariaDescribedby}\n />\n </TokenView>\n );\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div data-tid={TokenInputDataTids.root} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}>\n <label\n ref={this.wrapperRef}\n style={{ width }}\n className={labelClassName}\n onMouseDown={this.handleWrapperMouseDown}\n onMouseUp={this.handleWrapperMouseUp}\n htmlFor={this.textareaId}\n aria-controls={this.rootId}\n data-tid={TokenInputDataTids.label}\n >\n <TextWidthHelper ref={this.textHelperRef} text={inputValue} theme={this.theme} size={this.size} />\n {this.renderTokensStart()}\n {inputNode}\n {showMenu && (\n <TokenInputMenu\n popupMenuId={this.rootId}\n ref={this.tokensInputMenuRef}\n items={autocompleteItems}\n loading={loading}\n opened={showMenu}\n maxMenuHeight={maxMenuHeight}\n anchorElementForCursor={this.input}\n anchorElementRoot={this.wrapper}\n renderNotFound={renderNotFound}\n renderItem={renderItem}\n onValueChange={this.selectItem}\n renderAddButton={this.renderAddButton}\n menuWidth={menuWidth}\n menuAlign={menuAlign}\n renderTotalCount={renderTotalCount}\n totalCount={totalCount}\n size={this.size}\n />\n )}\n {this.renderTokensEnd()}\n {this.isEditingMode ? (\n <TokenView size={this.size}>\n <span className={styles.reservedInput(theme)}>{reservedInputValue}</span>\n </TokenView>\n ) : null}\n </label>\n </div>\n </CommonWrapper>\n );\n }\n\n /**\n * Сбрасывает введенное пользователем значение\n * @public\n */\n public reset() {\n this.dispatch({ type: 'RESET' });\n }\n\n private isEqual = (itemA: T, itemB: T) => {\n const { itemToId } = this.getProps();\n return lodashIsEqual(itemToId(itemA), itemToId(itemB));\n };\n\n private hasValueInItems = (items: T[], value: string | T) => {\n const { valueToString } = this.getProps();\n if (typeof value === 'string') {\n return items.map((item) => valueToString(item)).includes(value);\n }\n\n return items.some((item) => this.isEqual(item, value));\n };\n\n private get showAddItemHint() {\n const items = this.state.autocompleteItems;\n const value = this.getProps().valueToItem(this.state.inputValue);\n if (items && this.hasValueInItems(items, value)) {\n return false;\n }\n\n const selectedItems = this.getProps().selectedItems;\n if (selectedItems && this.hasValueInItems(selectedItems, value)) {\n return false;\n }\n\n if (this.type === TokenInputType.Combined && this.isInputValueChanged) {\n return true;\n }\n }\n\n private get type() {\n return this.props.type ? this.props.type : TokenInputType.WithReference;\n }\n\n private get menuRef(): Menu | null {\n return this.tokensInputMenu && this.tokensInputMenu.getMenuRef();\n }\n\n private get isCursorVisible() {\n return this.isCursorVisibleForState(this.state);\n }\n\n private get isEditingMode() {\n return this.state.editingTokenIndex > -1;\n }\n\n private isCursorVisibleForState(state: TokenInputState<T>) {\n return state.inFocus && (this.isInputValueChanged || state.activeTokens.length === 0);\n }\n\n private inputRef = (node: HTMLTextAreaElement) => (this.input = node);\n private tokensInputMenuRef = (node: TokenInputMenu<T>) => (this.tokensInputMenu = node);\n private textHelperRef = (node: TextWidthHelper) => (this.textHelper = node);\n private wrapperRef = (node: HTMLLabelElement) => (this.wrapper = node);\n\n private dispatch = (action: TokenInputAction, cb?: () => void) => {\n this.setState((prevState) => tokenInputReducer(prevState, action), cb);\n };\n\n private updateInputTextWidth() {\n if (this.textHelper) {\n // в IE текст иногда не помещается в input\n // из-за округления, поэтому округляем явно\n const inputValueWidth = parseFloat(this.textHelper.getTextWidth().toFixed(2));\n const inputValueHeight = parseFloat(this.textHelper.getTextHeight().toFixed(2));\n\n this.dispatch({ type: 'SET_INPUT_VALUE_WIDTH', payload: inputValueWidth }, LayoutEvents.emit);\n this.dispatch({ type: 'SET_INPUT_VALUE_HEIGHT', payload: inputValueHeight }, LayoutEvents.emit);\n }\n }\n\n private handleInputFocus = (event: FocusEvent<HTMLTextAreaElement>) => {\n this.dispatch({ type: 'SET_FOCUS_IN' });\n this.getProps().onFocus(event);\n };\n\n private handleInputBlur = (event: FocusEvent<HTMLTextAreaElement>) => {\n const isBlurToMenu = this.isBlurToMenu(event);\n\n if (!isBlurToMenu) {\n this.handleOutsideBlur();\n }\n\n if (isBlurToMenu || this.state.preventBlur) {\n event.preventDefault();\n // первый focus нужен для предотвращения/уменьшения моргания в других браузерах\n this.input?.focus();\n // в firefox не работает без второго focus\n globalObject.requestAnimationFrame?.(() => this.input?.focus());\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: false });\n } else {\n this.dispatch({ type: 'BLUR' });\n this.getProps().onBlur(event);\n }\n };\n\n private handleOutsideBlur = () => {\n const { inputValue, autocompleteItems } = this.state;\n\n if (inputValue === '') {\n // если стерли содержимое токена в режиме редактирования, то удаляем токен\n if (this.isEditingMode) {\n this.finishTokenEdit();\n }\n return;\n }\n\n // если не изменилось значение токена при редактировании\n if (this.isEditingMode && !this.isTokenValueChanged) {\n this.finishTokenEdit();\n return;\n }\n\n // чекаем автокомплит на совпадение с введенным значением в инпут\n if (autocompleteItems && autocompleteItems.length === 1) {\n const item = autocompleteItems[0];\n\n if (this.getProps().valueToString(item) === inputValue) {\n this.isEditingMode ? this.finishTokenEdit() : this.selectItem(item);\n\n return;\n }\n }\n\n if (this.isInputChanged) {\n this.checkForUnexpectedInput();\n }\n };\n\n private get isInputChanged() {\n if (this.isEditingMode) {\n return this.isTokenValueChanged;\n }\n\n return this.isInputValueChanged;\n }\n\n private get isInputValueChanged() {\n const { inputValue } = this.state;\n\n return inputValue !== '';\n }\n\n private get isTokenValueChanged() {\n const { inputValue, editingTokenIndex } = this.state;\n const { valueToString, selectedItems } = this.getProps();\n\n if (this.isEditingMode) {\n return valueToString(selectedItems[editingTokenIndex]) !== inputValue;\n }\n\n return false;\n }\n\n private isBlurToMenu = (event: FocusEvent<HTMLElement>) => {\n if (this.menuRef && globalObject.document) {\n const menu = getRootNode(this.tokensInputMenu?.getMenuRef());\n const relatedTarget = event.relatedTarget || globalObject.document.activeElement;\n\n if (menu && menu.contains(relatedTarget)) {\n return true;\n }\n }\n return false;\n };\n\n private handleWrapperMouseDown = (event: React.MouseEvent<HTMLElement>) => {\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: true });\n const target = event.target as HTMLElement;\n const isClickOnToken = target && this.wrapper?.contains(target) && target !== this.wrapper && target !== this.input;\n if (!isClickOnToken) {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n }\n };\n\n private handleWrapperMouseUp = () => {\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: false });\n };\n\n private handleCopy = (event: any) => {\n if (!this.state.inFocus || this.state.activeTokens.length === 0 || this.isCursorVisible) {\n return;\n }\n event.preventDefault();\n const { selectedItems, valueToString, delimiters } = this.getProps();\n // упорядочивание токенов по индексу\n const tokens = this.state.activeTokens\n .map((token) => selectedItems.indexOf(token))\n .sort()\n .map((index) => selectedItems[index])\n .map((item) => valueToString(item));\n event.clipboardData.setData('text/plain', tokens.join(delimiters[0]));\n };\n\n private handleInputPaste = (event: React.ClipboardEvent<HTMLElement>) => {\n if (this.type === TokenInputType.WithReference || !event.clipboardData) {\n return;\n }\n const paste = event.clipboardData.getData('text');\n const { delimiters, selectedItems, valueToItem, onValueChange } = this.getProps();\n if (delimiters.some((delimiter) => paste.includes(delimiter))) {\n event.preventDefault();\n event.stopPropagation();\n const tokens = paste.trim().split(new RegExp(`[${delimiters.join('')}]+`));\n const items = tokens\n .filter(Boolean)\n .map((token) => valueToItem(token))\n .filter((item) => item && !this.hasValueInItems(selectedItems, item));\n const newItems = selectedItems.concat(items);\n onValueChange(newItems);\n\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: undefined });\n this.tryGetItems();\n }\n };\n\n private tryGetItems = async (query = '') => {\n if (this.props.getItems && (this.isInputValueChanged || !this.props.hideMenuIfEmptyInputValue)) {\n this.dispatch({ type: 'SET_LOADING', payload: true });\n const autocompleteItems = await this.props.getItems(query);\n this.dispatch({ type: 'SET_LOADING', payload: false });\n\n const { selectedItems, valueToItem, valueToString } = this.getProps();\n const isSelectedItem = (item: T) => this.hasValueInItems(selectedItems, item);\n const isEditingItem = (item: T) => {\n const editingItem = selectedItems[this.state.editingTokenIndex];\n return !!editingItem && this.isEqual(item, editingItem);\n };\n\n const autocompleteItemsUnique = autocompleteItems.filter((item) => !isSelectedItem(item) || isEditingItem(item));\n\n if (this.isEditingMode) {\n const editingItem = selectedItems[this.state.editingTokenIndex];\n if (\n this.isEqual(editingItem, valueToItem(this.state.inputValue)) &&\n !this.hasValueInItems(autocompleteItemsUnique, editingItem)\n ) {\n autocompleteItemsUnique.unshift(editingItem);\n }\n }\n\n if (query === '' || this.isInputValueChanged) {\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: autocompleteItemsUnique }, () => {\n LayoutEvents.emit();\n this.highlightMenuItem();\n });\n }\n const selectItemIndex = autocompleteItemsUnique.findIndex(\n (item) => valueToString(item).toLowerCase() === this.state.inputValue.toLowerCase(),\n );\n setTimeout(() => this.menuRef?.highlightItem(selectItemIndex < 0 ? 0 : selectItemIndex), 0);\n }\n };\n\n private handleKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n this.props.onKeyDown?.(event);\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (this.isCursorVisible) {\n this.handleInputKeyDown(event);\n } else {\n this.handleWrapperKeyDown(event);\n }\n };\n\n private handleInputKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n e.stopPropagation();\n\n if (\n (this.type !== TokenInputType.WithReference &&\n this.getProps().delimiters.some((key) => key === e.key || (key === ',' && isKeyComma(e)))) ||\n (isKeyEnter(e) && this.type === TokenInputType.WithoutReference)\n ) {\n e.preventDefault();\n const newValue = this.state.inputValue;\n if (newValue !== '') {\n if (this.isEditingMode) {\n this.finishTokenEdit();\n } else {\n this.handleAddItem();\n }\n }\n }\n const isRightmostTokenNotDisabled = !this.isTokenDisabled(this.getProps().selectedItems.length - 1);\n const canSetValueToInput = this.showAddItemHint || (this.state.autocompleteItems?.length ?? 0) > 0;\n\n switch (true) {\n case isKeyEnter(e):\n if (canSetValueToInput && this.menuRef) {\n this.menuRef.enter(e);\n }\n // don't allow textarea\n // became multiline\n e.preventDefault();\n break;\n case isKeyArrowVertical(e):\n e.preventDefault();\n if (this.menuRef) {\n if (isKeyArrowUp(e)) {\n this.menuRef.up();\n } else {\n this.menuRef.down();\n }\n }\n break;\n case isKeyEscape(e):\n this.input?.blur();\n break;\n case isKeyBackspace(e):\n if (!this.isEditingMode && isRightmostTokenNotDisabled) {\n this.moveFocusToLastToken();\n }\n break;\n case isKeyArrowLeft(e):\n if (this.input?.selectionStart === 0) {\n const index = this.getAvailableTokenIndex(this.getProps().selectedItems.length);\n const itemNew = this.getProps().selectedItems[index];\n if (itemNew) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [itemNew] });\n }\n }\n break;\n }\n };\n\n private moveFocusToLastToken() {\n const items = this.getProps().selectedItems;\n if (this.state.inputValue === '' && items && items.length > 0) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: items.slice(-1) });\n }\n }\n\n private focusInput = () => {\n globalObject.requestAnimationFrame?.(() => this.input?.focus());\n };\n\n private selectInputText = () => {\n if (this.input) {\n this.input.setSelectionRange(0, this.state.inputValue.length);\n }\n };\n\n private handleWrapperKeyDown = (e: KeyboardEvent<HTMLElement>) => {\n const { selectedItems, onValueChange } = this.getProps();\n switch (true) {\n case isKeyBackspace(e):\n case isKeyDelete(e): {\n const indexOfActiveToken = this.getProps().selectedItems.indexOf(\n this.state.activeTokens[this.state.activeTokens.length - 1],\n );\n if (!this.isEditingMode && !this.isTokenDisabled(indexOfActiveToken)) {\n const itemsNew = selectedItems.filter((item) => !this.hasValueInItems(this.state.activeTokens, item));\n onValueChange(itemsNew);\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' }, () => {\n LayoutEvents.emit();\n this.input?.focus();\n });\n }\n break;\n }\n case isKeyArrowHorizontal(e):\n this.handleWrapperArrows(e);\n break;\n case isKeyEscape(e):\n this.wrapper?.blur();\n break;\n case isKeyEnter(e):\n e.preventDefault();\n if (this.state.activeTokens.length === 1) {\n this.handleTokenEdit(this.state.activeTokens[0]);\n }\n break;\n case isShortcutSelectAll(e):\n e.preventDefault();\n this.dispatch({\n type: 'SET_ACTIVE_TOKENS',\n payload: selectedItems.filter((item) => !this.isTokenDisabled(selectedItems.indexOf(item))),\n });\n break;\n }\n };\n\n private handleWrapperArrows = (e: KeyboardEvent<HTMLElement>) => {\n e.preventDefault();\n const selectedItems = this.getProps().selectedItems;\n const activeTokens = this.state.activeTokens;\n const activeItemIndex = selectedItems.indexOf(activeTokens[0]);\n const newItemIndex = this.getAvailableTokenIndex(activeItemIndex, isKeyArrowLeft(e));\n const isLeftEdge = activeItemIndex === 0 && isKeyArrowLeft(e);\n const isRightEdge = newItemIndex === selectedItems.length && isKeyArrowRight(e);\n if (!e.shiftKey && activeTokens.length === 1) {\n this.handleWrapperArrowsWithoutShift(isLeftEdge, isRightEdge, newItemIndex);\n } else {\n this.handleWrapperArrowsWithShift(isLeftEdge, isRightEdge, newItemIndex);\n }\n };\n\n private handleWrapperArrowsWithoutShift = (isLeftEdge: boolean, isRightEdge: boolean, newItemIndex: number) => {\n if (isRightEdge) {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' }, () => this.input?.focus());\n } else if (!isLeftEdge) {\n this.dispatch({\n type: 'SET_ACTIVE_TOKENS',\n payload: [this.getProps().selectedItems[newItemIndex]],\n });\n }\n };\n\n private handleWrapperArrowsWithShift = (isLeftEdge: boolean, isRightEdge: boolean, newItemIndex: number) => {\n if (!isLeftEdge && !isRightEdge) {\n const itemNew = this.getProps().selectedItems[newItemIndex];\n const itemsNew = [itemNew, ...this.state.activeTokens.filter((item) => !this.isEqual(item, itemNew))];\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: itemsNew });\n }\n };\n\n private handleValueChange = (items: T[]) => {\n this.getProps().onValueChange(items);\n };\n\n private handleAddItem = () => {\n const item = this.getProps().valueToItem(this.state.inputValue);\n if (item) {\n this.selectItem(item);\n }\n };\n\n private selectItem = (item: T) => {\n const { selectedItems, valueToString } = this.getProps();\n if (this.isEditingMode) {\n this.dispatch({ type: 'UPDATE_QUERY', payload: valueToString(item) }, this.finishTokenEdit);\n } else if (!this.hasValueInItems(selectedItems, item)) {\n this.handleValueChange(selectedItems.concat([item]));\n this.dispatch({ type: 'CLEAR_INPUT' });\n this.tryGetItems();\n }\n };\n\n private handleRemoveToken = (item: T) => {\n this.props.onValueChange?.(this.getProps().selectedItems.filter((_) => !this.isEqual(_, item)));\n const filteredActiveTokens = this.state.activeTokens.filter((_) => !this.isEqual(_, item));\n\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: filteredActiveTokens });\n if (filteredActiveTokens.length === 0) {\n this.focusInput();\n }\n\n this.tryGetItems();\n };\n\n private handleTokenClick = (event: React.MouseEvent<HTMLElement>, itemNew: T) => {\n const items = this.state.activeTokens;\n if (event.ctrlKey) {\n const newItems = this.hasValueInItems(this.state.activeTokens, itemNew)\n ? items.filter((item) => !this.isEqual(item, itemNew))\n : [...items, itemNew];\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: newItems });\n } else {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [itemNew] });\n }\n this.focusInput();\n };\n\n private handleTokenEdit = (itemNew: T) => {\n const { selectedItems, valueToString } = this.getProps();\n const editingTokenIndex = selectedItems.findIndex((item) => item === itemNew);\n this.dispatch({ type: 'SET_EDITING_TOKEN_INDEX', payload: editingTokenIndex });\n\n if (this.isInputValueChanged) {\n if (this.state.reservedInputValue === undefined) {\n this.dispatch({ type: 'SET_TEMPORARY_QUERY', payload: this.state.inputValue });\n }\n }\n this.dispatch({ type: 'UPDATE_QUERY', payload: valueToString(itemNew) }, this.selectInputText);\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n\n this.tryGetItems();\n };\n\n private finishTokenEdit = () => {\n const { selectedItems, valueToString } = this.getProps();\n const { editingTokenIndex, inputValue, reservedInputValue, autocompleteItems } = this.state;\n\n const editedItem =\n autocompleteItems?.find((item) => valueToString(item) === inputValue) ?? this.getProps().valueToItem(inputValue);\n\n const newItems = selectedItems.concat([]);\n\n if (!this.hasValueInItems(selectedItems, editedItem)) {\n newItems.splice(editingTokenIndex, 1, ...(this.isInputValueChanged ? [editedItem] : []));\n this.handleValueChange(newItems);\n }\n\n this.dispatch({ type: 'REMOVE_EDITING_TOKEN_INDEX' });\n\n if (reservedInputValue) {\n this.dispatch({ type: 'UPDATE_QUERY', payload: reservedInputValue });\n this.dispatch({ type: 'REMOVE_TEMPORARY_QUERY' });\n } else {\n this.dispatch({ type: 'CLEAR_INPUT' });\n }\n\n if (newItems.length === selectedItems.length) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [newItems[editingTokenIndex]] });\n }\n };\n\n private checkForUnexpectedInput = () => {\n const { inputValue } = this.state;\n const { onUnexpectedInput } = this.props;\n\n // чекаем не возвращает ли что-нибудь обработчик\n const returnedValue = onUnexpectedInput?.(inputValue);\n\n if (returnedValue === undefined) {\n if (\n this.featureFlags.tokenInputCreateTokenOnBlurInWithoutReferenceMode &&\n this.type === TokenInputType.WithoutReference\n ) {\n this.handleAddItem();\n }\n\n return;\n }\n\n if (returnedValue === null) {\n this.dispatch({ type: 'CLEAR_INPUT' }, () => {\n if (this.isEditingMode) {\n this.finishTokenEdit();\n }\n });\n\n return;\n }\n\n if (returnedValue) {\n this.selectItem(returnedValue);\n }\n };\n\n private handleChangeInputValue = (event: ChangeEvent<HTMLTextAreaElement>) => {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n let query = event.target.value.trimLeft();\n\n if (query.endsWith(' ')) {\n query = query.trimRight() + ' ';\n }\n if (this.isInputValueChanged && query === '') {\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: undefined });\n }\n this.dispatch({ type: 'UPDATE_QUERY', payload: query }, () => {\n this.tryGetItems(query);\n });\n if (this.props.onInputValueChange) {\n this.props.onInputValueChange(query);\n }\n };\n\n private highlightMenuItem = () => {\n if (\n this.menuRef &&\n this.state.autocompleteItems &&\n this.state.autocompleteItems.length > 0 &&\n this.type !== TokenInputType.Combined\n ) {\n this.menuRef.highlightItem(0);\n }\n };\n\n private renderTokensStart = () => {\n const { editingTokenIndex } = this.state;\n const selectedItems = this.getProps().selectedItems;\n const delimiter = editingTokenIndex >= 0 ? editingTokenIndex : selectedItems.length;\n return selectedItems.slice(0, delimiter).map(this.renderToken);\n };\n\n private renderTokensEnd = () => {\n if (this.state.editingTokenIndex >= 0) {\n return this.getProps()\n .selectedItems.slice(this.state.editingTokenIndex + 1)\n .map(this.renderToken);\n }\n };\n\n private renderToken = (item: T) => {\n const { renderToken = defaultRenderToken, disabled } = this.props;\n\n const isActive = this.state.activeTokens.includes(item);\n\n // TODO useCallback\n const handleIconClick: React.MouseEventHandler<HTMLElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode) {\n this.handleRemoveToken(item);\n }\n };\n\n // TODO useCallback\n const handleTokenClick: React.MouseEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode) {\n this.handleTokenClick(event, item);\n }\n };\n\n const handleTokenDoubleClick: React.MouseEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode && !disabled) {\n this.handleTokenEdit(item);\n }\n };\n\n const renderedToken = renderToken(item as T & AnyObject, {\n size: this.size,\n isActive,\n onClick: handleTokenClick,\n onDoubleClick: handleTokenDoubleClick,\n onRemove: handleIconClick,\n disabled,\n });\n\n this.memoizedTokens.set(this.props.selectedItems?.indexOf(item), renderedToken);\n return renderedToken;\n };\n\n private renderAddButton = (value = this.state.inputValue): React.ReactNode | undefined => {\n if (!this.showAddItemHint) {\n return;\n }\n\n if (this.props.renderAddButton) {\n return this.props.renderAddButton(value, this.handleAddItem);\n }\n\n const { addButtonComment, addButtonTitle } = this.locale;\n\n return (\n <MenuItem onClick={this.handleAddItem} comment={addButtonComment} key=\"renderAddButton\">\n {addButtonTitle} {value}\n </MenuItem>\n );\n };\n\n private isTokenDisabled = (itemIndex: number) => {\n let renderedToken;\n if (this.memoizedTokens.has(itemIndex)) {\n renderedToken = this.memoizedTokens.get(itemIndex);\n } else if (itemIndex < 0 || itemIndex > this.getProps().selectedItems.length - 1) {\n return false;\n } else {\n renderedToken = this.renderToken(this.getProps().selectedItems[itemIndex]) as React.ReactElement<\n TokenInputProps<unknown>\n >;\n }\n return renderedToken.props.disabled;\n };\n\n private getAvailableTokenIndex = (startIndex: number, isDirectionLeft = true) => {\n const { selectedItems } = this.getProps();\n const step = isDirectionLeft ? -1 : +1;\n let availableIndex = startIndex + step;\n\n while (this.isTokenDisabled(availableIndex)) {\n availableIndex += step;\n if (availableIndex === selectedItems.length) {\n return availableIndex;\n } else if (availableIndex === -1) {\n return startIndex;\n }\n }\n\n return availableIndex;\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_lodash","_globalObject","_Popup","_identifiers","LayoutEvents","_interopRequireWildcard","_Token","_MenuItem","_utils","_ThemeContext","_decorators","_CommonWrapper","_Emotion","_rootNode","_createPropsGetter","_uidUtils","_TokenView","_featureFlagsContext","_SizeDecorator","_blink2","_locale","_TokenInput2","_TokenInputReducer","_TokenInputMenu","_TextWidthHelper","_dec","_class","_TokenInput","TEMP_FAKE_FLAG","TokenInputType","exports","DefaultState","inputValue","reservedInputValue","undefined","autocompleteItems","activeTokens","editingTokenIndex","inFocus","loading","preventBlur","inputValueWidth","inputValueHeight","TokenInputDataTids","root","tokenInputMenu","label","defaultToKey","item","toString","identity","defaultRenderToken","_ref","isActive","onClick","onDoubleClick","onRemove","disabled","size","default","createElement","Token","key","TokenInput","locale","TokenInputLocaleHelper","rootNode","withSize","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","_textareaId","getUid","rootId","PopupIds","getRandomID","input","tokensInputMenu","textHelper","wrapper","memoizedTokens","Map","isEqual","itemA","itemB","_this$getProps","getProps","itemToId","lodashIsEqual","hasValueInItems","items","value","_this$getProps2","valueToString","map","includes","some","inputRef","node","tokensInputMenuRef","textHelperRef","wrapperRef","dispatch","action","cb","setState","prevState","tokenInputReducer","handleInputFocus","event","type","onFocus","handleInputBlur","isBlurToMenu","handleOutsideBlur","_this$input","preventDefault","focus","globalObject","requestAnimationFrame","_this$input2","payload","onBlur","_this$state","isEditingMode","finishTokenEdit","isTokenValueChanged","selectItem","isInputChanged","checkForUnexpectedInput","menuRef","document","_this$tokensInputMenu","menu","getRootNode","getMenuRef","relatedTarget","activeElement","contains","handleWrapperMouseDown","_this$wrapper","target","isClickOnToken","handleWrapperMouseUp","handleCopy","isCursorVisible","_this$getProps3","selectedItems","delimiters","tokens","token","indexOf","sort","index","clipboardData","setData","join","handleInputPaste","WithReference","paste","getData","_this$getProps4","valueToItem","onValueChange","delimiter","stopPropagation","trim","split","RegExp","filter","Boolean","newItems","tryGetItems","_ref2","_asyncToGenerator2","_regenerator","mark","_callee","query","_this$getProps5","isSelectedItem","isEditingItem","autocompleteItemsUnique","editingItem","selectItemIndex","wrap","_callee$","_context","prev","next","props","getItems","isInputValueChanged","hideMenuIfEmptyInputValue","sent","unshift","emit","highlightMenuItem","findIndex","toLowerCase","setTimeout","_this$menuRef","highlightItem","stop","_x","handleKeyDown","onKeyDown","defaultPrevented","handleInputKeyDown","handleWrapperKeyDown","e","_this$state$autocompl","_this$state$autocompl2","_this$input3","_this$input4","isKeyComma","isKeyEnter","WithoutReference","newValue","handleAddItem","isRightmostTokenNotDisabled","isTokenDisabled","canSetValueToInput","showAddItemHint","enter","isKeyArrowVertical","isKeyArrowUp","up","down","isKeyEscape","blur","isKeyBackspace","moveFocusToLastToken","isKeyArrowLeft","selectionStart","getAvailableTokenIndex","itemNew","focusInput","_this$input5","selectInputText","setSelectionRange","_this$wrapper2","_this$getProps6","isKeyDelete","indexOfActiveToken","itemsNew","_this$input6","isKeyArrowHorizontal","handleWrapperArrows","handleTokenEdit","isShortcutSelectAll","activeItemIndex","newItemIndex","isLeftEdge","isRightEdge","isKeyArrowRight","shiftKey","handleWrapperArrowsWithoutShift","handleWrapperArrowsWithShift","_this$input7","handleValueChange","_this$getProps7","handleRemoveToken","_","filteredActiveTokens","handleTokenClick","ctrlKey","_this$getProps8","_autocompleteItems$fi","_this$getProps9","_this$state2","editedItem","find","splice","onUnexpectedInput","returnedValue","featureFlags","tokenInputCreateTokenOnBlurInWithoutReferenceMode","handleChangeInputValue","trimLeft","endsWith","trimRight","onInputValueChange","Combined","renderTokensStart","slice","renderToken","renderTokensEnd","_this$props$selectedI","_this$props","_this$props$renderTok","handleIconClick","handleTokenDoubleClick","renderedToken","set","renderAddButton","_this$locale","addButtonComment","addButtonTitle","MenuItem","comment","itemIndex","has","get","startIndex","isDirectionLeft","_this$getProps10","step","availableIndex","_inheritsLoose2","_proto","prototype","getDelimiters","_this$props$delimiter","every","propsGetter","createPropsGetter","defaultProps","propsWithOldDelimiters","_extends2","componentDidMount","_globalObject$documen","updateInputTextWidth","addEventListener","autoFocus","componentDidUpdate","prevProps","clear","isCursorVisibleForState","componentWillUnmount","_globalObject$documen2","removeEventListener","_this$input8","_this$input9","blink","el","blinkColor","theme","inputBlinkColor","render","_this2","ReactUIFeatureFlagsContext","Consumer","flags","getFullReactUIFlagsContext","ThemeContext","renderMain","getLabelSizeClassName","styles","labelLarge","labelMedium","labelSmall","getInputSizeClassName","inputLarge","inputMedium","inputSmall","_cx","_cx2","_cx3","Error","_this$props2","maxMenuHeight","error","warning","renderNotFound","inputMode","renderTotalCount","totalCount","ariaDescribedby","ariaLabel","_this$getProps11","width","onMouseEnter","onMouseLeave","menuWidth","menuAlign","renderItem","_this$state3","showMenu","inputInlineStyles","height","caretColor","labelClassName","cx","hovering","labelDisabled","labelFocused","inputClassName","inputDisabled","placeholder","inputNode","TokenView","className","inputPlaceholderWrapper","hideCloseButton","id","textareaId","ref","style","spellCheck","onChange","onPaste","CommonWrapper","rootNodeRef","setRootNode","onMouseDown","onMouseUp","htmlFor","TextWidthHelper","text","TokenInputMenu","popupMenuId","opened","anchorElementForCursor","anchorElementRoot","reservedInput","reset","parseFloat","getTextWidth","toFixed","getTextHeight","_createClass2","_this$props$id","_this$state4","_this$getProps12","React","PureComponent","__KONTUR_REACT_UI__","displayName","renderValue","toKey","emptyHandler"],"sources":["TokenInput.tsx"],"sourcesContent":["import type {\n AriaAttributes,\n ChangeEvent,\n FocusEvent,\n FocusEventHandler,\n HTMLAttributes,\n KeyboardEvent,\n KeyboardEventHandler,\n MouseEventHandler,\n ReactNode,\n} from 'react';\nimport React from 'react';\nimport lodashIsEqual from 'lodash.isequal';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { PopupIds } from '../../internal/Popup';\nimport {\n isKeyArrowHorizontal,\n isKeyArrowLeft,\n isKeyArrowRight,\n isKeyArrowUp,\n isKeyArrowVertical,\n isKeyBackspace,\n isKeyComma,\n isKeyDelete,\n isKeyEnter,\n isKeyEscape,\n isShortcutSelectAll,\n} from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport type { Menu } from '../../internal/Menu';\nimport type { TokenProps, TokenSize } from '../Token';\nimport { Token } from '../Token';\nimport type { MenuItemState } from '../MenuItem';\nimport { MenuItem } from '../MenuItem';\nimport type { AnyObject } from '../../lib/utils';\nimport { emptyHandler, getRandomID } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { locale } from '../../lib/locale/decorators';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { getUid } from '../../lib/uidUtils';\nimport { TokenView } from '../Token/TokenView';\nimport type { ReactUIFeatureFlags } from '../../lib/featureFlagsContext';\nimport { getFullReactUIFlagsContext, ReactUIFeatureFlagsContext } from '../../lib/featureFlagsContext';\nimport { withSize } from '../../lib/size/SizeDecorator';\nimport type { SizeProp } from '../../lib/types/props';\nimport { blink } from '../../lib/blink';\n\nimport type { TokenInputLocale } from './locale';\nimport { TokenInputLocaleHelper } from './locale';\nimport { styles } from './TokenInput.styles';\nimport type { TokenInputAction } from './TokenInputReducer';\nimport { tokenInputReducer } from './TokenInputReducer';\nimport { TokenInputMenu } from './TokenInputMenu';\nimport { TextWidthHelper } from './TextWidthHelper';\n\nconst TEMP_FAKE_FLAG = 'TEMP_FAKE_FLAG';\n\nexport enum TokenInputType {\n WithReference,\n WithoutReference,\n Combined,\n}\n\nexport type TokenInputMenuAlign = 'left' | 'cursor';\n\nexport interface TokenInputProps<T>\n extends CommonProps,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'> {\n /** Задает выбранные токены, которые будут отображаться в поле ввода. */\n selectedItems?: T[];\n\n /** Задает функцию, которая вызывается при добавлении нового токена. */\n onValueChange?: (items: T[]) => void;\n\n /** Задает HTML-событие `onmouseenter`.\n * @ignore */\n onMouseEnter?: MouseEventHandler<HTMLDivElement>;\n\n /** Задает HTML-событие `onmouseleave`.\n * @ignore */\n onMouseLeave?: MouseEventHandler<HTMLDivElement>;\n\n /** Задает HTML-событие `onfocus`.\n * @ignore */\n onFocus?: FocusEventHandler<HTMLTextAreaElement>;\n\n /** Задает HTML-событие `onblur`.\n * @ignore */\n onBlur?: FocusEventHandler<HTMLTextAreaElement>;\n\n /** Задает HTML-событие `onkeydown`. */\n onKeyDown?: KeyboardEventHandler<HTMLTextAreaElement>;\n\n /** Устанавливает фокус на контроле после окончания загрузки страницы. */\n autoFocus?: boolean;\n\n /** Задает размер контрола. */\n size?: TokenSize;\n\n /** Задает тип инпута.\n * Возможные значения:\n * `TokenInputType.WithReference` (можно выбирать токены только из предложенных, нельзя добавить новые).\n * `TokenInputType.WithoutReference` (можно добавлять токены, но нельзя выбирать).\n * `TokenInputType.Combined` (можно и выбирать, и добавлять). */\n type?: TokenInputType;\n\n /** Задает ширину выпадающего меню. Может быть 'auto', в пикселях, процентах (от ширины инпута) и других конкретных единицах.\n * Если menuAlign = 'cursor', то ширина выпадающего меню всегда будет равна 'auto' (по ширине текста). */\n menuWidth?: React.CSSProperties['width'];\n\n /** Задает выравнивание выпадающего меню. */\n menuAlign?: TokenInputMenuAlign;\n\n /** Задает функцию поиска элементов, должна возвращать Promise с массивом элементов. По умолчанию ожидаются строки.\n * Элементы могут быть любого типа. В таком случае необходимо определить свойства `renderItem`, `valueToString`. */\n getItems?: (query: string) => Promise<T[]>;\n\n /** Скрывает меню при пустом вводе. */\n hideMenuIfEmptyInputValue?: boolean;\n\n /** Задает функцию, которая отображает элемент списка. */\n renderItem?: (item: T, state: MenuItemState) => React.ReactNode | null;\n\n /** Задает функцию, которая отображает выбранное значение. */\n renderValue?: (item: T) => React.ReactNode;\n\n /** Задает функцию, которая возвращает строковое представление токена.\n * @default item => item */\n valueToString?: (item: T) => string;\n\n /** Задает функцию, которая отображает сообщение об общем количестве элементов.\n * `found` учитывает только компонент `MenuItem`. Им \"оборачиваются\" элементы, возвращаемые `getItems()`. */\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n\n /** Определяет общее количество элементов. Необходим для работы `renderTotalCount`. */\n totalCount?: number;\n\n /** Задает функцию, которая отображает заданное содержимое при пустом результате поиска. Не работает, если рендерится `AddButton`. */\n renderNotFound?: () => React.ReactNode;\n\n /** Преобразует значение в элемент списка. */\n valueToItem?: (value: string) => T;\n\n /** @deprecated Используйте `itemToId` вместо `toKey`. */\n toKey?: (item: T) => string | number | undefined;\n\n /** Задает функцию сравнения полученных результатов с value. */\n itemToId?: (item: T) => string | number | undefined;\n\n /** Задает текст, который отображается если не введено никакое значение. */\n placeholder?: string;\n\n /** Задает символы, которые разделяют введённый текст на токены. */\n delimiters?: string[];\n\n /** Переводит контрол в состояние валидации \"ошибка\". */\n error?: boolean;\n\n /** Переводит контрол в состояние валидации \"предупреждение\". */\n warning?: boolean;\n\n /** Делает компонент недоступным. */\n disabled?: boolean;\n\n /** Задает ширину токен-инпута. */\n width?: string | number;\n\n /** Задает максимальную высоту выпадающего меню. */\n maxMenuHeight?: number | string;\n\n /** Задает функцию, которая отображает токен и предоставляет возможность кастомизации внешнего вида и поведения токена. */\n renderToken?: (item: T, props: Partial<TokenProps>) => ReactNode;\n\n /** Задает функцию, вызывающуюся при изменении текста в поле ввода. */\n onInputValueChange?: (value: string) => void;\n\n /** Задает функцию отрисовки кнопки добавления в выпадающем списке */\n renderAddButton?: (query?: string, onAddItem?: () => void) => ReactNode;\n\n /** Задает функцию для обработки ввода строки в инпут и последующую потерю фокуса компонентом.\n * Функция срабатывает с аргументом инпута строки\n *\n * Если при потере фокуса в выпадающем списке будет только один элемент и результат `valueToString` с этим элементом будет\n * совпадать со значением в текстовом поле, то сработает `onValueChange` со значением данного элемента\n *\n * Сама функция также может вернуть значение, неравное `undefined`, с которым будет вызван `onValueChange`.\n * При возвращаемом значении `null` будет выполнена очистка текущего значения инпута, а в режиме редактирования токен будет удален. */\n onUnexpectedInput?: (value: string) => void | null | undefined | T;\n\n /** Задает типы вводимых данных. */\n inputMode?: React.HTMLAttributes<HTMLTextAreaElement>['inputMode'];\n}\n\nexport interface TokenInputState<T> {\n autocompleteItems?: T[];\n activeTokens: T[];\n editingTokenIndex: number;\n clickedToken?: T;\n clickedTokenTimeout?: number;\n inFocus?: boolean;\n inputValue: string;\n reservedInputValue: string | undefined;\n inputValueWidth: number;\n inputValueHeight: number;\n preventBlur?: boolean;\n loading?: boolean;\n}\n\nexport const DefaultState = {\n inputValue: '',\n reservedInputValue: undefined,\n autocompleteItems: undefined,\n activeTokens: [],\n editingTokenIndex: -1,\n inFocus: false,\n loading: false,\n preventBlur: false,\n inputValueWidth: 2,\n inputValueHeight: 22,\n};\n\nexport const TokenInputDataTids = {\n root: 'TokenInput__root',\n tokenInputMenu: 'TokenInputMenu__root',\n label: 'TokenInput__label',\n} as const;\n\ntype DefaultProps<T> = Required<\n Pick<\n TokenInputProps<T>,\n | 'selectedItems'\n | 'delimiters'\n | 'renderItem'\n | 'renderValue'\n | 'valueToString'\n | 'valueToItem'\n | 'toKey'\n | 'itemToId'\n | 'onValueChange'\n | 'width'\n | 'onBlur'\n | 'onFocus'\n | 'onMouseEnter'\n | 'onMouseLeave'\n | 'menuWidth'\n | 'menuAlign'\n >\n>;\n\nconst defaultToKey = <T extends AnyObject>(item: T): string => item.toString();\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint\nconst identity = <T extends unknown>(item: T): T => item;\nconst defaultRenderToken = <T extends AnyObject>(\n item: T,\n { isActive, onClick, onDoubleClick, onRemove, disabled, size }: Partial<TokenProps>,\n) => (\n <Token\n key={item.toString()}\n isActive={isActive}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n onRemove={onRemove}\n disabled={disabled}\n size={size}\n >\n {item.toString()}\n </Token>\n);\n\n/**\n * Поле с токенами `TokenInput` — это поле ввода со списком подсказок.\n *\n * Поле с токенами используют для выбора нескольких значений из справочника и для добавления своих значений.\n */\n@rootNode\n@locale('TokenInput', TokenInputLocaleHelper)\n@withSize\nexport class TokenInput<T = string> extends React.PureComponent<TokenInputProps<T>, TokenInputState<T>> {\n public static __KONTUR_REACT_UI__ = 'TokenInput';\n public static displayName = 'TokenInput';\n\n public static defaultProps: DefaultProps<any> = {\n selectedItems: [],\n // TEMP_FAKE_FLAG помогает узнать, остались ли разделители дефолтными или пользователь передал их равными дефолтным.\n delimiters: [',', TEMP_FAKE_FLAG],\n renderItem: identity,\n renderValue: identity,\n valueToString: identity,\n valueToItem: (item: string) => item,\n toKey: defaultToKey,\n itemToId: identity,\n onValueChange: () => void 0,\n width: 250 as string | number,\n onBlur: emptyHandler,\n onFocus: emptyHandler,\n onMouseEnter: emptyHandler,\n onMouseLeave: emptyHandler,\n menuWidth: 'auto',\n menuAlign: 'cursor',\n };\n\n private getDelimiters(): string[] {\n const delimiters = this.props.delimiters ?? [];\n if (delimiters.every((delimiter) => delimiter !== TEMP_FAKE_FLAG)) {\n return delimiters;\n }\n return delimiters.filter((delimiter) => delimiter !== TEMP_FAKE_FLAG);\n }\n\n private getProps() {\n const propsGetter = createPropsGetter(TokenInput.defaultProps);\n const propsWithOldDelimiters = propsGetter.apply(this);\n return { ...propsWithOldDelimiters, delimiters: this.getDelimiters() };\n }\n\n private get textareaId() {\n return this.props.id ?? this._textareaId;\n }\n\n public state: TokenInputState<T> = DefaultState;\n\n private readonly _textareaId: string = getUid();\n private rootId = PopupIds.root + getRandomID();\n private readonly locale!: TokenInputLocale;\n private theme!: Theme;\n private size!: SizeProp;\n public featureFlags!: ReactUIFeatureFlags;\n private input: HTMLTextAreaElement | null = null;\n private tokensInputMenu: TokenInputMenu<T> | null = null;\n private textHelper: TextWidthHelper | null = null;\n private wrapper: HTMLLabelElement | null = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private memoizedTokens = new Map();\n\n public componentDidMount() {\n this.updateInputTextWidth();\n globalObject.document?.addEventListener('copy', this.handleCopy);\n if (this.props.autoFocus) {\n this.focusInput();\n }\n }\n\n public componentDidUpdate(prevProps: TokenInputProps<T> & DefaultProps<T>, prevState: TokenInputState<T>) {\n if (prevState.inputValue !== this.state.inputValue) {\n this.updateInputTextWidth();\n }\n if (prevState.activeTokens.length === 0 && this.state.activeTokens.length > 0) {\n this.dispatch({\n type: 'SET_AUTOCOMPLETE_ITEMS',\n payload: undefined,\n });\n }\n if (prevProps.selectedItems.length !== this.getProps().selectedItems.length) {\n LayoutEvents.emit();\n this.memoizedTokens.clear();\n }\n if (!this.isCursorVisibleForState(prevState) && this.isCursorVisible) {\n this.tryGetItems(this.isEditingMode ? '' : this.state.inputValue);\n }\n }\n\n public componentWillUnmount() {\n globalObject.document?.removeEventListener('copy', this.handleCopy);\n }\n\n /**\n * @public\n */\n public focus() {\n this.input?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.input?.blur();\n }\n\n /** Кратковременно визуально подсвечивает поле ввода, чтобы привлечь внимание пользователя.\n * @public\n */\n public blink() {\n blink({ el: this.wrapper, blinkColor: this.theme.inputBlinkColor });\n }\n\n public render() {\n return (\n <ReactUIFeatureFlagsContext.Consumer>\n {(flags) => {\n this.featureFlags = getFullReactUIFlagsContext(flags);\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }}\n </ReactUIFeatureFlagsContext.Consumer>\n );\n }\n\n private getLabelSizeClassName() {\n switch (this.size) {\n case 'large':\n return styles.labelLarge(this.theme);\n case 'medium':\n return styles.labelMedium(this.theme);\n case 'small':\n default:\n return styles.labelSmall(this.theme);\n }\n }\n\n private getInputSizeClassName() {\n switch (this.size) {\n case 'large':\n return styles.inputLarge(this.theme);\n case 'medium':\n return styles.inputMedium(this.theme);\n case 'small':\n default:\n return styles.inputSmall(this.theme);\n }\n }\n\n private renderMain() {\n if (this.type !== TokenInputType.WithoutReference && !this.props.getItems) {\n throw Error('Missed getItems for type ' + this.type);\n }\n\n const {\n maxMenuHeight,\n error,\n warning,\n disabled,\n renderNotFound,\n hideMenuIfEmptyInputValue,\n inputMode,\n renderTotalCount,\n totalCount,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n } = this.props;\n\n const { selectedItems, width, onMouseEnter, onMouseLeave, menuWidth, menuAlign, renderItem } = this.getProps();\n\n const {\n activeTokens,\n inFocus,\n inputValueWidth,\n inputValueHeight,\n inputValue,\n reservedInputValue,\n autocompleteItems,\n loading,\n } = this.state;\n\n const showMenu =\n this.type !== TokenInputType.WithoutReference &&\n this.isCursorVisible &&\n activeTokens.length === 0 &&\n (this.isInputValueChanged || !hideMenuIfEmptyInputValue);\n\n const theme = this.theme;\n\n const inputInlineStyles: React.CSSProperties = {\n // вычисляем ширину чтобы input автоматически перенёсся на следующую строку при необходимости\n width: inputValueWidth,\n height: inputValueHeight,\n // в ie не работает, но альтернативный способ --- дать tabindex для label --- предположительно ещё сложнее\n caretColor: this.isCursorVisible ? undefined : 'transparent',\n };\n\n const labelClassName = cx(styles.label(theme), this.getLabelSizeClassName(), {\n [styles.hovering(this.theme)]: !inFocus && !disabled && !warning && !error,\n [styles.labelDisabled(theme)]: !!disabled,\n [styles.labelFocused(theme)]: !!inFocus,\n [styles.error(theme)]: !!error,\n [styles.warning(theme)]: !!warning,\n });\n const inputClassName = cx(styles.input(theme), this.getInputSizeClassName(), {\n [styles.inputDisabled(theme)]: !!disabled,\n });\n\n const placeholder = selectedItems.length === 0 && !inputValue ? this.props.placeholder : '';\n\n const inputNode = (\n <TokenView\n size={this.size}\n className={cx({\n // input растягивается на всю ширину чтобы placeholder не обрезался\n [styles.inputPlaceholderWrapper()]: Boolean(placeholder),\n })}\n hideCloseButton={Boolean(placeholder)}\n >\n <textarea\n id={this.textareaId}\n ref={this.inputRef}\n value={inputValue}\n style={inputInlineStyles}\n spellCheck={false}\n disabled={disabled}\n className={inputClassName}\n placeholder={placeholder}\n onFocus={this.handleInputFocus}\n onBlur={this.handleInputBlur}\n onChange={this.handleChangeInputValue}\n onKeyDown={this.handleKeyDown}\n onPaste={this.handleInputPaste}\n inputMode={inputMode}\n aria-label={ariaLabel}\n aria-describedby={ariaDescribedby}\n />\n </TokenView>\n );\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div data-tid={TokenInputDataTids.root} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}>\n <label\n ref={this.wrapperRef}\n style={{ width }}\n className={labelClassName}\n onMouseDown={this.handleWrapperMouseDown}\n onMouseUp={this.handleWrapperMouseUp}\n htmlFor={this.textareaId}\n aria-controls={this.rootId}\n data-tid={TokenInputDataTids.label}\n >\n <TextWidthHelper ref={this.textHelperRef} text={inputValue} theme={this.theme} size={this.size} />\n {this.renderTokensStart()}\n {inputNode}\n {showMenu && (\n <TokenInputMenu\n popupMenuId={this.rootId}\n ref={this.tokensInputMenuRef}\n items={autocompleteItems}\n loading={loading}\n opened={showMenu}\n maxMenuHeight={maxMenuHeight}\n anchorElementForCursor={this.input}\n anchorElementRoot={this.wrapper}\n renderNotFound={renderNotFound}\n renderItem={renderItem}\n onValueChange={this.selectItem}\n renderAddButton={this.renderAddButton}\n menuWidth={menuWidth}\n menuAlign={menuAlign}\n renderTotalCount={renderTotalCount}\n totalCount={totalCount}\n size={this.size}\n />\n )}\n {this.renderTokensEnd()}\n {this.isEditingMode ? (\n <TokenView size={this.size}>\n <span className={styles.reservedInput(theme)}>{reservedInputValue}</span>\n </TokenView>\n ) : null}\n </label>\n </div>\n </CommonWrapper>\n );\n }\n\n /**\n * Сбрасывает введенное пользователем значение\n * @public\n */\n public reset() {\n this.dispatch({ type: 'RESET' });\n }\n\n private isEqual = (itemA: T, itemB: T) => {\n const { itemToId } = this.getProps();\n return lodashIsEqual(itemToId(itemA), itemToId(itemB));\n };\n\n private hasValueInItems = (items: T[], value: string | T) => {\n const { valueToString } = this.getProps();\n if (typeof value === 'string') {\n return items.map((item) => valueToString(item)).includes(value);\n }\n\n return items.some((item) => this.isEqual(item, value));\n };\n\n private get showAddItemHint() {\n const items = this.state.autocompleteItems;\n const value = this.getProps().valueToItem(this.state.inputValue);\n if (items && this.hasValueInItems(items, value)) {\n return false;\n }\n\n const selectedItems = this.getProps().selectedItems;\n if (selectedItems && this.hasValueInItems(selectedItems, value)) {\n return false;\n }\n\n if (this.type === TokenInputType.Combined && this.isInputValueChanged) {\n return true;\n }\n }\n\n private get type() {\n return this.props.type ? this.props.type : TokenInputType.WithReference;\n }\n\n private get menuRef(): Menu | null {\n return this.tokensInputMenu && this.tokensInputMenu.getMenuRef();\n }\n\n private get isCursorVisible() {\n return this.isCursorVisibleForState(this.state);\n }\n\n private get isEditingMode() {\n return this.state.editingTokenIndex > -1;\n }\n\n private isCursorVisibleForState(state: TokenInputState<T>) {\n return state.inFocus && (this.isInputValueChanged || state.activeTokens.length === 0);\n }\n\n private inputRef = (node: HTMLTextAreaElement) => (this.input = node);\n private tokensInputMenuRef = (node: TokenInputMenu<T>) => (this.tokensInputMenu = node);\n private textHelperRef = (node: TextWidthHelper) => (this.textHelper = node);\n private wrapperRef = (node: HTMLLabelElement) => (this.wrapper = node);\n\n private dispatch = (action: TokenInputAction, cb?: () => void) => {\n this.setState((prevState) => tokenInputReducer(prevState, action), cb);\n };\n\n private updateInputTextWidth() {\n if (this.textHelper) {\n // в IE текст иногда не помещается в input\n // из-за округления, поэтому округляем явно\n const inputValueWidth = parseFloat(this.textHelper.getTextWidth().toFixed(2));\n const inputValueHeight = parseFloat(this.textHelper.getTextHeight().toFixed(2));\n\n this.dispatch({ type: 'SET_INPUT_VALUE_WIDTH', payload: inputValueWidth }, LayoutEvents.emit);\n this.dispatch({ type: 'SET_INPUT_VALUE_HEIGHT', payload: inputValueHeight }, LayoutEvents.emit);\n }\n }\n\n private handleInputFocus = (event: FocusEvent<HTMLTextAreaElement>) => {\n this.dispatch({ type: 'SET_FOCUS_IN' });\n this.getProps().onFocus(event);\n };\n\n private handleInputBlur = (event: FocusEvent<HTMLTextAreaElement>) => {\n const isBlurToMenu = this.isBlurToMenu(event);\n\n if (!isBlurToMenu) {\n this.handleOutsideBlur();\n }\n\n if (isBlurToMenu || this.state.preventBlur) {\n event.preventDefault();\n // первый focus нужен для предотвращения/уменьшения моргания в других браузерах\n this.input?.focus();\n // в firefox не работает без второго focus\n globalObject.requestAnimationFrame?.(() => this.input?.focus());\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: false });\n } else {\n this.dispatch({ type: 'BLUR' });\n this.getProps().onBlur(event);\n }\n };\n\n private handleOutsideBlur = () => {\n const { inputValue, autocompleteItems } = this.state;\n\n if (inputValue === '') {\n // если стерли содержимое токена в режиме редактирования, то удаляем токен\n if (this.isEditingMode) {\n this.finishTokenEdit();\n }\n return;\n }\n\n // если не изменилось значение токена при редактировании\n if (this.isEditingMode && !this.isTokenValueChanged) {\n this.finishTokenEdit();\n return;\n }\n\n // чекаем автокомплит на совпадение с введенным значением в инпут\n if (autocompleteItems && autocompleteItems.length === 1) {\n const item = autocompleteItems[0];\n\n if (this.getProps().valueToString(item) === inputValue) {\n this.isEditingMode ? this.finishTokenEdit() : this.selectItem(item);\n\n return;\n }\n }\n\n if (this.isInputChanged) {\n this.checkForUnexpectedInput();\n }\n };\n\n private get isInputChanged() {\n if (this.isEditingMode) {\n return this.isTokenValueChanged;\n }\n\n return this.isInputValueChanged;\n }\n\n private get isInputValueChanged() {\n const { inputValue } = this.state;\n\n return inputValue !== '';\n }\n\n private get isTokenValueChanged() {\n const { inputValue, editingTokenIndex } = this.state;\n const { valueToString, selectedItems } = this.getProps();\n\n if (this.isEditingMode) {\n return valueToString(selectedItems[editingTokenIndex]) !== inputValue;\n }\n\n return false;\n }\n\n private isBlurToMenu = (event: FocusEvent<HTMLElement>) => {\n if (this.menuRef && globalObject.document) {\n const menu = getRootNode(this.tokensInputMenu?.getMenuRef());\n const relatedTarget = event.relatedTarget || globalObject.document.activeElement;\n\n if (menu && menu.contains(relatedTarget)) {\n return true;\n }\n }\n return false;\n };\n\n private handleWrapperMouseDown = (event: React.MouseEvent<HTMLElement>) => {\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: true });\n const target = event.target as HTMLElement;\n const isClickOnToken = target && this.wrapper?.contains(target) && target !== this.wrapper && target !== this.input;\n if (!isClickOnToken) {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n }\n };\n\n private handleWrapperMouseUp = () => {\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: false });\n };\n\n private handleCopy = (event: any) => {\n if (!this.state.inFocus || this.state.activeTokens.length === 0 || this.isCursorVisible) {\n return;\n }\n event.preventDefault();\n const { selectedItems, valueToString, delimiters } = this.getProps();\n // упорядочивание токенов по индексу\n const tokens = this.state.activeTokens\n .map((token) => selectedItems.indexOf(token))\n .sort()\n .map((index) => selectedItems[index])\n .map((item) => valueToString(item));\n event.clipboardData.setData('text/plain', tokens.join(delimiters[0]));\n };\n\n private handleInputPaste = (event: React.ClipboardEvent<HTMLElement>) => {\n if (this.type === TokenInputType.WithReference || !event.clipboardData) {\n return;\n }\n const paste = event.clipboardData.getData('text');\n const { delimiters, selectedItems, valueToItem, onValueChange } = this.getProps();\n if (delimiters.some((delimiter) => paste.includes(delimiter))) {\n event.preventDefault();\n event.stopPropagation();\n const tokens = paste.trim().split(new RegExp(`[${delimiters.join('')}]+`));\n const items = tokens\n .filter(Boolean)\n .map((token) => valueToItem(token))\n .filter((item) => item && !this.hasValueInItems(selectedItems, item));\n const newItems = selectedItems.concat(items);\n onValueChange(newItems);\n\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: undefined });\n this.tryGetItems();\n }\n };\n\n private tryGetItems = async (query = '') => {\n if (this.props.getItems && (this.isInputValueChanged || !this.props.hideMenuIfEmptyInputValue)) {\n this.dispatch({ type: 'SET_LOADING', payload: true });\n const autocompleteItems = await this.props.getItems(query);\n this.dispatch({ type: 'SET_LOADING', payload: false });\n\n const { selectedItems, valueToItem, valueToString } = this.getProps();\n const isSelectedItem = (item: T) => this.hasValueInItems(selectedItems, item);\n const isEditingItem = (item: T) => {\n const editingItem = selectedItems[this.state.editingTokenIndex];\n return !!editingItem && this.isEqual(item, editingItem);\n };\n\n const autocompleteItemsUnique = autocompleteItems.filter((item) => !isSelectedItem(item) || isEditingItem(item));\n\n if (this.isEditingMode) {\n const editingItem = selectedItems[this.state.editingTokenIndex];\n if (\n this.isEqual(editingItem, valueToItem(this.state.inputValue)) &&\n !this.hasValueInItems(autocompleteItemsUnique, editingItem)\n ) {\n autocompleteItemsUnique.unshift(editingItem);\n }\n }\n\n if (query === '' || this.isInputValueChanged) {\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: autocompleteItemsUnique }, () => {\n LayoutEvents.emit();\n this.highlightMenuItem();\n });\n }\n const selectItemIndex = autocompleteItemsUnique.findIndex(\n (item) => valueToString(item).toLowerCase() === this.state.inputValue.toLowerCase(),\n );\n setTimeout(() => this.menuRef?.highlightItem(selectItemIndex < 0 ? 0 : selectItemIndex), 0);\n }\n };\n\n private handleKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n this.props.onKeyDown?.(event);\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (this.isCursorVisible) {\n this.handleInputKeyDown(event);\n } else {\n this.handleWrapperKeyDown(event);\n }\n };\n\n private handleInputKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n e.stopPropagation();\n\n if (\n (this.type !== TokenInputType.WithReference &&\n this.getProps().delimiters.some((key) => key === e.key || (key === ',' && isKeyComma(e)))) ||\n (isKeyEnter(e) && this.type === TokenInputType.WithoutReference)\n ) {\n e.preventDefault();\n const newValue = this.state.inputValue;\n if (newValue !== '') {\n if (this.isEditingMode) {\n this.finishTokenEdit();\n } else {\n this.handleAddItem();\n }\n }\n }\n const isRightmostTokenNotDisabled = !this.isTokenDisabled(this.getProps().selectedItems.length - 1);\n const canSetValueToInput = this.showAddItemHint || (this.state.autocompleteItems?.length ?? 0) > 0;\n\n switch (true) {\n case isKeyEnter(e):\n if (canSetValueToInput && this.menuRef) {\n this.menuRef.enter(e);\n }\n // don't allow textarea\n // became multiline\n e.preventDefault();\n break;\n case isKeyArrowVertical(e):\n e.preventDefault();\n if (this.menuRef) {\n if (isKeyArrowUp(e)) {\n this.menuRef.up();\n } else {\n this.menuRef.down();\n }\n }\n break;\n case isKeyEscape(e):\n this.input?.blur();\n break;\n case isKeyBackspace(e):\n if (!this.isEditingMode && isRightmostTokenNotDisabled) {\n this.moveFocusToLastToken();\n }\n break;\n case isKeyArrowLeft(e):\n if (this.input?.selectionStart === 0) {\n const index = this.getAvailableTokenIndex(this.getProps().selectedItems.length);\n const itemNew = this.getProps().selectedItems[index];\n if (itemNew) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [itemNew] });\n }\n }\n break;\n }\n };\n\n private moveFocusToLastToken() {\n const items = this.getProps().selectedItems;\n if (this.state.inputValue === '' && items && items.length > 0) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: items.slice(-1) });\n }\n }\n\n private focusInput = () => {\n globalObject.requestAnimationFrame?.(() => this.input?.focus());\n };\n\n private selectInputText = () => {\n if (this.input) {\n this.input.setSelectionRange(0, this.state.inputValue.length);\n }\n };\n\n private handleWrapperKeyDown = (e: KeyboardEvent<HTMLElement>) => {\n const { selectedItems, onValueChange } = this.getProps();\n switch (true) {\n case isKeyBackspace(e):\n case isKeyDelete(e): {\n const indexOfActiveToken = this.getProps().selectedItems.indexOf(\n this.state.activeTokens[this.state.activeTokens.length - 1],\n );\n if (!this.isEditingMode && !this.isTokenDisabled(indexOfActiveToken)) {\n const itemsNew = selectedItems.filter((item) => !this.hasValueInItems(this.state.activeTokens, item));\n onValueChange(itemsNew);\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' }, () => {\n LayoutEvents.emit();\n this.input?.focus();\n });\n }\n break;\n }\n case isKeyArrowHorizontal(e):\n this.handleWrapperArrows(e);\n break;\n case isKeyEscape(e):\n this.wrapper?.blur();\n break;\n case isKeyEnter(e):\n e.preventDefault();\n if (this.state.activeTokens.length === 1) {\n this.handleTokenEdit(this.state.activeTokens[0]);\n }\n break;\n case isShortcutSelectAll(e):\n e.preventDefault();\n this.dispatch({\n type: 'SET_ACTIVE_TOKENS',\n payload: selectedItems.filter((item) => !this.isTokenDisabled(selectedItems.indexOf(item))),\n });\n break;\n }\n };\n\n private handleWrapperArrows = (e: KeyboardEvent<HTMLElement>) => {\n e.preventDefault();\n const selectedItems = this.getProps().selectedItems;\n const activeTokens = this.state.activeTokens;\n const activeItemIndex = selectedItems.indexOf(activeTokens[0]);\n const newItemIndex = this.getAvailableTokenIndex(activeItemIndex, isKeyArrowLeft(e));\n const isLeftEdge = activeItemIndex === 0 && isKeyArrowLeft(e);\n const isRightEdge = newItemIndex === selectedItems.length && isKeyArrowRight(e);\n if (!e.shiftKey && activeTokens.length === 1) {\n this.handleWrapperArrowsWithoutShift(isLeftEdge, isRightEdge, newItemIndex);\n } else {\n this.handleWrapperArrowsWithShift(isLeftEdge, isRightEdge, newItemIndex);\n }\n };\n\n private handleWrapperArrowsWithoutShift = (isLeftEdge: boolean, isRightEdge: boolean, newItemIndex: number) => {\n if (isRightEdge) {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' }, () => this.input?.focus());\n } else if (!isLeftEdge) {\n this.dispatch({\n type: 'SET_ACTIVE_TOKENS',\n payload: [this.getProps().selectedItems[newItemIndex]],\n });\n }\n };\n\n private handleWrapperArrowsWithShift = (isLeftEdge: boolean, isRightEdge: boolean, newItemIndex: number) => {\n if (!isLeftEdge && !isRightEdge) {\n const itemNew = this.getProps().selectedItems[newItemIndex];\n const itemsNew = [itemNew, ...this.state.activeTokens.filter((item) => !this.isEqual(item, itemNew))];\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: itemsNew });\n }\n };\n\n private handleValueChange = (items: T[]) => {\n this.getProps().onValueChange(items);\n };\n\n private handleAddItem = () => {\n const item = this.getProps().valueToItem(this.state.inputValue);\n if (item) {\n this.selectItem(item);\n }\n };\n\n private selectItem = (item: T) => {\n const { selectedItems, valueToString } = this.getProps();\n if (this.isEditingMode) {\n this.dispatch({ type: 'UPDATE_QUERY', payload: valueToString(item) }, this.finishTokenEdit);\n } else if (!this.hasValueInItems(selectedItems, item)) {\n this.handleValueChange(selectedItems.concat([item]));\n this.dispatch({ type: 'CLEAR_INPUT' });\n this.tryGetItems();\n }\n };\n\n private handleRemoveToken = (item: T) => {\n this.props.onValueChange?.(this.getProps().selectedItems.filter((_) => !this.isEqual(_, item)));\n const filteredActiveTokens = this.state.activeTokens.filter((_) => !this.isEqual(_, item));\n\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: filteredActiveTokens });\n if (filteredActiveTokens.length === 0) {\n this.focusInput();\n }\n\n this.tryGetItems();\n };\n\n private handleTokenClick = (event: React.MouseEvent<HTMLElement>, itemNew: T) => {\n const items = this.state.activeTokens;\n if (event.ctrlKey) {\n const newItems = this.hasValueInItems(this.state.activeTokens, itemNew)\n ? items.filter((item) => !this.isEqual(item, itemNew))\n : [...items, itemNew];\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: newItems });\n } else {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [itemNew] });\n }\n this.focusInput();\n };\n\n private handleTokenEdit = (itemNew: T) => {\n const { selectedItems, valueToString } = this.getProps();\n const editingTokenIndex = selectedItems.findIndex((item) => item === itemNew);\n this.dispatch({ type: 'SET_EDITING_TOKEN_INDEX', payload: editingTokenIndex });\n\n if (this.isInputValueChanged) {\n if (this.state.reservedInputValue === undefined) {\n this.dispatch({ type: 'SET_TEMPORARY_QUERY', payload: this.state.inputValue });\n }\n }\n this.dispatch({ type: 'UPDATE_QUERY', payload: valueToString(itemNew) }, this.selectInputText);\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n\n this.tryGetItems();\n };\n\n private finishTokenEdit = () => {\n const { selectedItems, valueToString } = this.getProps();\n const { editingTokenIndex, inputValue, reservedInputValue, autocompleteItems } = this.state;\n\n const editedItem =\n autocompleteItems?.find((item) => valueToString(item) === inputValue) ?? this.getProps().valueToItem(inputValue);\n\n const newItems = selectedItems.concat([]);\n\n if (!this.hasValueInItems(selectedItems, editedItem)) {\n newItems.splice(editingTokenIndex, 1, ...(this.isInputValueChanged ? [editedItem] : []));\n this.handleValueChange(newItems);\n }\n\n this.dispatch({ type: 'REMOVE_EDITING_TOKEN_INDEX' });\n\n if (reservedInputValue) {\n this.dispatch({ type: 'UPDATE_QUERY', payload: reservedInputValue });\n this.dispatch({ type: 'REMOVE_TEMPORARY_QUERY' });\n } else {\n this.dispatch({ type: 'CLEAR_INPUT' });\n }\n\n if (newItems.length === selectedItems.length) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [newItems[editingTokenIndex]] });\n }\n };\n\n private checkForUnexpectedInput = () => {\n const { inputValue } = this.state;\n const { onUnexpectedInput } = this.props;\n\n // чекаем не возвращает ли что-нибудь обработчик\n const returnedValue = onUnexpectedInput?.(inputValue);\n\n if (returnedValue === undefined) {\n if (\n this.featureFlags.tokenInputCreateTokenOnBlurInWithoutReferenceMode &&\n this.type === TokenInputType.WithoutReference\n ) {\n this.handleAddItem();\n }\n\n return;\n }\n\n if (returnedValue === null) {\n this.dispatch({ type: 'CLEAR_INPUT' }, () => {\n if (this.isEditingMode) {\n this.finishTokenEdit();\n }\n });\n\n return;\n }\n\n if (returnedValue) {\n this.selectItem(returnedValue);\n }\n };\n\n private handleChangeInputValue = (event: ChangeEvent<HTMLTextAreaElement>) => {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n let query = event.target.value.trimLeft();\n\n if (query.endsWith(' ')) {\n query = query.trimRight() + ' ';\n }\n if (this.isInputValueChanged && query === '') {\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: undefined });\n }\n this.dispatch({ type: 'UPDATE_QUERY', payload: query }, () => {\n this.tryGetItems(query);\n });\n if (this.props.onInputValueChange) {\n this.props.onInputValueChange(query);\n }\n };\n\n private highlightMenuItem = () => {\n if (\n this.menuRef &&\n this.state.autocompleteItems &&\n this.state.autocompleteItems.length > 0 &&\n this.type !== TokenInputType.Combined\n ) {\n this.menuRef.highlightItem(0);\n }\n };\n\n private renderTokensStart = () => {\n const { editingTokenIndex } = this.state;\n const selectedItems = this.getProps().selectedItems;\n const delimiter = editingTokenIndex >= 0 ? editingTokenIndex : selectedItems.length;\n return selectedItems.slice(0, delimiter).map(this.renderToken);\n };\n\n private renderTokensEnd = () => {\n if (this.state.editingTokenIndex >= 0) {\n return this.getProps()\n .selectedItems.slice(this.state.editingTokenIndex + 1)\n .map(this.renderToken);\n }\n };\n\n private renderToken = (item: T) => {\n const { renderToken = defaultRenderToken, disabled } = this.props;\n\n const isActive = this.state.activeTokens.includes(item);\n\n // TODO useCallback\n const handleIconClick: React.MouseEventHandler<HTMLElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode) {\n this.handleRemoveToken(item);\n }\n };\n\n // TODO useCallback\n const handleTokenClick: React.MouseEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode) {\n this.handleTokenClick(event, item);\n }\n };\n\n const handleTokenDoubleClick: React.MouseEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode && !disabled) {\n this.handleTokenEdit(item);\n }\n };\n\n const renderedToken = renderToken(item as T & AnyObject, {\n size: this.size,\n isActive,\n onClick: handleTokenClick,\n onDoubleClick: handleTokenDoubleClick,\n onRemove: handleIconClick,\n disabled,\n });\n\n this.memoizedTokens.set(this.props.selectedItems?.indexOf(item), renderedToken);\n return renderedToken;\n };\n\n private renderAddButton = (value = this.state.inputValue): React.ReactNode | undefined => {\n if (!this.showAddItemHint) {\n return;\n }\n\n if (this.props.renderAddButton) {\n return this.props.renderAddButton(value, this.handleAddItem);\n }\n\n const { addButtonComment, addButtonTitle } = this.locale;\n\n return (\n <MenuItem onClick={this.handleAddItem} comment={addButtonComment} key=\"renderAddButton\">\n {addButtonTitle} {value}\n </MenuItem>\n );\n };\n\n private isTokenDisabled = (itemIndex: number) => {\n let renderedToken;\n if (this.memoizedTokens.has(itemIndex)) {\n renderedToken = this.memoizedTokens.get(itemIndex);\n } else if (itemIndex < 0 || itemIndex > this.getProps().selectedItems.length - 1) {\n return false;\n } else {\n renderedToken = this.renderToken(this.getProps().selectedItems[itemIndex]) as React.ReactElement<\n TokenInputProps<unknown>\n >;\n }\n return renderedToken.props.disabled;\n };\n\n private getAvailableTokenIndex = (startIndex: number, isDirectionLeft = true) => {\n const { selectedItems } = this.getProps();\n const step = isDirectionLeft ? -1 : +1;\n let availableIndex = startIndex + step;\n\n while (this.isTokenDisabled(availableIndex)) {\n availableIndex += step;\n if (availableIndex === selectedItems.length) {\n return availableIndex;\n } else if (availableIndex === -1) {\n return startIndex;\n }\n }\n\n return availableIndex;\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1137,7 +1137,7 @@ export var TokenInput = (_dec = locale('TokenInput', TokenInputLocaleHelper), ro
1137
1137
  return item;
1138
1138
  },
1139
1139
  toKey: defaultToKey,
1140
- itemToId: defaultToKey,
1140
+ itemToId: identity,
1141
1141
  onValueChange: function onValueChange() {
1142
1142
  return void 0;
1143
1143
  },
@@ -1 +1 @@
1
- {"version":3,"names":["React","lodashIsEqual","globalObject","PopupIds","isKeyArrowHorizontal","isKeyArrowLeft","isKeyArrowRight","isKeyArrowUp","isKeyArrowVertical","isKeyBackspace","isKeyComma","isKeyDelete","isKeyEnter","isKeyEscape","isShortcutSelectAll","LayoutEvents","Token","MenuItem","emptyHandler","getRandomID","ThemeContext","locale","CommonWrapper","cx","getRootNode","rootNode","createPropsGetter","getUid","TokenView","getFullReactUIFlagsContext","ReactUIFeatureFlagsContext","withSize","blink","TokenInputLocaleHelper","styles","tokenInputReducer","TokenInputMenu","TextWidthHelper","TEMP_FAKE_FLAG","TokenInputType","DefaultState","inputValue","reservedInputValue","undefined","autocompleteItems","activeTokens","editingTokenIndex","inFocus","loading","preventBlur","inputValueWidth","inputValueHeight","TokenInputDataTids","root","tokenInputMenu","label","defaultToKey","item","toString","identity","defaultRenderToken","_ref","isActive","onClick","onDoubleClick","onRemove","disabled","size","createElement","key","TokenInput","_dec","_class","_TokenInput","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","_textareaId","rootId","input","tokensInputMenu","textHelper","wrapper","memoizedTokens","Map","isEqual","itemA","itemB","_this$getProps","getProps","itemToId","hasValueInItems","items","value","_this$getProps2","valueToString","map","includes","some","inputRef","node","tokensInputMenuRef","textHelperRef","wrapperRef","dispatch","action","cb","setState","prevState","handleInputFocus","event","type","onFocus","handleInputBlur","isBlurToMenu","handleOutsideBlur","_this$input","preventDefault","focus","requestAnimationFrame","_this$input2","payload","onBlur","_this$state","isEditingMode","finishTokenEdit","isTokenValueChanged","selectItem","isInputChanged","checkForUnexpectedInput","menuRef","document","_this$tokensInputMenu","menu","getMenuRef","relatedTarget","activeElement","contains","handleWrapperMouseDown","_this$wrapper","target","isClickOnToken","handleWrapperMouseUp","handleCopy","isCursorVisible","_this$getProps3","selectedItems","delimiters","tokens","token","indexOf","sort","index","clipboardData","setData","join","handleInputPaste","WithReference","paste","getData","_this$getProps4","valueToItem","onValueChange","delimiter","stopPropagation","trim","split","RegExp","filter","Boolean","newItems","tryGetItems","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","query","_this$getProps5","isSelectedItem","isEditingItem","autocompleteItemsUnique","editingItem","selectItemIndex","wrap","_callee$","_context","prev","next","props","getItems","isInputValueChanged","hideMenuIfEmptyInputValue","sent","unshift","emit","highlightMenuItem","findIndex","toLowerCase","setTimeout","_this$menuRef","highlightItem","stop","_x","handleKeyDown","onKeyDown","defaultPrevented","handleInputKeyDown","handleWrapperKeyDown","e","_this$state$autocompl","_this$state$autocompl2","_this$input3","_this$input4","WithoutReference","newValue","handleAddItem","isRightmostTokenNotDisabled","isTokenDisabled","canSetValueToInput","showAddItemHint","enter","up","down","blur","moveFocusToLastToken","selectionStart","getAvailableTokenIndex","itemNew","focusInput","_this$input5","selectInputText","setSelectionRange","_this$wrapper2","_this$getProps6","indexOfActiveToken","itemsNew","_this$input6","handleWrapperArrows","handleTokenEdit","activeItemIndex","newItemIndex","isLeftEdge","isRightEdge","shiftKey","handleWrapperArrowsWithoutShift","handleWrapperArrowsWithShift","_this$input7","handleValueChange","_this$getProps7","handleRemoveToken","_","filteredActiveTokens","handleTokenClick","ctrlKey","_this$getProps8","_autocompleteItems$fi","_this$getProps9","_this$state2","editedItem","find","splice","onUnexpectedInput","returnedValue","featureFlags","tokenInputCreateTokenOnBlurInWithoutReferenceMode","handleChangeInputValue","trimLeft","endsWith","trimRight","onInputValueChange","Combined","renderTokensStart","slice","renderToken","renderTokensEnd","_this$props$selectedI","_this$props","_this$props$renderTok","handleIconClick","handleTokenDoubleClick","renderedToken","set","renderAddButton","_this$locale","addButtonComment","addButtonTitle","comment","itemIndex","has","get","startIndex","isDirectionLeft","_this$getProps10","step","availableIndex","_inheritsLoose","_proto","prototype","getDelimiters","_this$props$delimiter","every","propsGetter","defaultProps","propsWithOldDelimiters","_extends","componentDidMount","_globalObject$documen","updateInputTextWidth","addEventListener","autoFocus","componentDidUpdate","prevProps","clear","isCursorVisibleForState","componentWillUnmount","_globalObject$documen2","removeEventListener","_this$input8","_this$input9","el","blinkColor","theme","inputBlinkColor","render","_this2","Consumer","flags","renderMain","getLabelSizeClassName","labelLarge","labelMedium","labelSmall","getInputSizeClassName","inputLarge","inputMedium","inputSmall","_cx","_cx2","_cx3","Error","_this$props2","maxMenuHeight","error","warning","renderNotFound","inputMode","renderTotalCount","totalCount","ariaDescribedby","ariaLabel","_this$getProps11","width","onMouseEnter","onMouseLeave","menuWidth","menuAlign","renderItem","_this$state3","showMenu","inputInlineStyles","height","caretColor","labelClassName","hovering","labelDisabled","labelFocused","inputClassName","inputDisabled","placeholder","inputNode","className","inputPlaceholderWrapper","hideCloseButton","id","textareaId","ref","style","spellCheck","onChange","onPaste","rootNodeRef","setRootNode","onMouseDown","onMouseUp","htmlFor","text","popupMenuId","opened","anchorElementForCursor","anchorElementRoot","reservedInput","reset","parseFloat","getTextWidth","toFixed","getTextHeight","_createClass","_this$props$id","_this$state4","_this$getProps12","PureComponent","__KONTUR_REACT_UI__","displayName","renderValue","toKey"],"sources":["TokenInput.tsx"],"sourcesContent":["import type {\n AriaAttributes,\n ChangeEvent,\n FocusEvent,\n FocusEventHandler,\n HTMLAttributes,\n KeyboardEvent,\n KeyboardEventHandler,\n MouseEventHandler,\n ReactNode,\n} from 'react';\nimport React from 'react';\nimport lodashIsEqual from 'lodash.isequal';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { PopupIds } from '../../internal/Popup';\nimport {\n isKeyArrowHorizontal,\n isKeyArrowLeft,\n isKeyArrowRight,\n isKeyArrowUp,\n isKeyArrowVertical,\n isKeyBackspace,\n isKeyComma,\n isKeyDelete,\n isKeyEnter,\n isKeyEscape,\n isShortcutSelectAll,\n} from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport type { Menu } from '../../internal/Menu';\nimport type { TokenProps, TokenSize } from '../Token';\nimport { Token } from '../Token';\nimport type { MenuItemState } from '../MenuItem';\nimport { MenuItem } from '../MenuItem';\nimport type { AnyObject } from '../../lib/utils';\nimport { emptyHandler, getRandomID } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { locale } from '../../lib/locale/decorators';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { getUid } from '../../lib/uidUtils';\nimport { TokenView } from '../Token/TokenView';\nimport type { ReactUIFeatureFlags } from '../../lib/featureFlagsContext';\nimport { getFullReactUIFlagsContext, ReactUIFeatureFlagsContext } from '../../lib/featureFlagsContext';\nimport { withSize } from '../../lib/size/SizeDecorator';\nimport type { SizeProp } from '../../lib/types/props';\nimport { blink } from '../../lib/blink';\n\nimport type { TokenInputLocale } from './locale';\nimport { TokenInputLocaleHelper } from './locale';\nimport { styles } from './TokenInput.styles';\nimport type { TokenInputAction } from './TokenInputReducer';\nimport { tokenInputReducer } from './TokenInputReducer';\nimport { TokenInputMenu } from './TokenInputMenu';\nimport { TextWidthHelper } from './TextWidthHelper';\n\nconst TEMP_FAKE_FLAG = 'TEMP_FAKE_FLAG';\n\nexport enum TokenInputType {\n WithReference,\n WithoutReference,\n Combined,\n}\n\nexport type TokenInputMenuAlign = 'left' | 'cursor';\n\nexport interface TokenInputProps<T>\n extends CommonProps,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'> {\n /** Задает выбранные токены, которые будут отображаться в поле ввода. */\n selectedItems?: T[];\n\n /** Задает функцию, которая вызывается при добавлении нового токена. */\n onValueChange?: (items: T[]) => void;\n\n /** Задает HTML-событие `onmouseenter`.\n * @ignore */\n onMouseEnter?: MouseEventHandler<HTMLDivElement>;\n\n /** Задает HTML-событие `onmouseleave`.\n * @ignore */\n onMouseLeave?: MouseEventHandler<HTMLDivElement>;\n\n /** Задает HTML-событие `onfocus`.\n * @ignore */\n onFocus?: FocusEventHandler<HTMLTextAreaElement>;\n\n /** Задает HTML-событие `onblur`.\n * @ignore */\n onBlur?: FocusEventHandler<HTMLTextAreaElement>;\n\n /** Задает HTML-событие `onkeydown`. */\n onKeyDown?: KeyboardEventHandler<HTMLTextAreaElement>;\n\n /** Устанавливает фокус на контроле после окончания загрузки страницы. */\n autoFocus?: boolean;\n\n /** Задает размер контрола. */\n size?: TokenSize;\n\n /** Задает тип инпута.\n * Возможные значения:\n * `TokenInputType.WithReference` (можно выбирать токены только из предложенных, нельзя добавить новые).\n * `TokenInputType.WithoutReference` (можно добавлять токены, но нельзя выбирать).\n * `TokenInputType.Combined` (можно и выбирать, и добавлять). */\n type?: TokenInputType;\n\n /** Задает ширину выпадающего меню. Может быть 'auto', в пикселях, процентах (от ширины инпута) и других конкретных единицах.\n * Если menuAlign = 'cursor', то ширина выпадающего меню всегда будет равна 'auto' (по ширине текста). */\n menuWidth?: React.CSSProperties['width'];\n\n /** Задает выравнивание выпадающего меню. */\n menuAlign?: TokenInputMenuAlign;\n\n /** Задает функцию поиска элементов, должна возвращать Promise с массивом элементов. По умолчанию ожидаются строки.\n * Элементы могут быть любого типа. В таком случае необходимо определить свойства `renderItem`, `valueToString`. */\n getItems?: (query: string) => Promise<T[]>;\n\n /** Скрывает меню при пустом вводе. */\n hideMenuIfEmptyInputValue?: boolean;\n\n /** Задает функцию, которая отображает элемент списка. */\n renderItem?: (item: T, state: MenuItemState) => React.ReactNode | null;\n\n /** Задает функцию, которая отображает выбранное значение. */\n renderValue?: (item: T) => React.ReactNode;\n\n /** Задает функцию, которая возвращает строковое представление токена.\n * @default item => item */\n valueToString?: (item: T) => string;\n\n /** Задает функцию, которая отображает сообщение об общем количестве элементов.\n * `found` учитывает только компонент `MenuItem`. Им \"оборачиваются\" элементы, возвращаемые `getItems()`. */\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n\n /** Определяет общее количество элементов. Необходим для работы `renderTotalCount`. */\n totalCount?: number;\n\n /** Задает функцию, которая отображает заданное содержимое при пустом результате поиска. Не работает, если рендерится `AddButton`. */\n renderNotFound?: () => React.ReactNode;\n\n /** Преобразует значение в элемент списка. */\n valueToItem?: (value: string) => T;\n\n /** @deprecated Используйте `itemToId` вместо `toKey`. */\n toKey?: (item: T) => string | number | undefined;\n\n /** Задает функцию сравнения полученных результатов с value. */\n itemToId?: (item: T) => string | number | undefined;\n\n /** Задает текст, который отображается если не введено никакое значение. */\n placeholder?: string;\n\n /** Задает символы, которые разделяют введённый текст на токены. */\n delimiters?: string[];\n\n /** Переводит контрол в состояние валидации \"ошибка\". */\n error?: boolean;\n\n /** Переводит контрол в состояние валидации \"предупреждение\". */\n warning?: boolean;\n\n /** Делает компонент недоступным. */\n disabled?: boolean;\n\n /** Задает ширину токен-инпута. */\n width?: string | number;\n\n /** Задает максимальную высоту выпадающего меню. */\n maxMenuHeight?: number | string;\n\n /** Задает функцию, которая отображает токен и предоставляет возможность кастомизации внешнего вида и поведения токена. */\n renderToken?: (item: T, props: Partial<TokenProps>) => ReactNode;\n\n /** Задает функцию, вызывающуюся при изменении текста в поле ввода. */\n onInputValueChange?: (value: string) => void;\n\n /** Задает функцию отрисовки кнопки добавления в выпадающем списке */\n renderAddButton?: (query?: string, onAddItem?: () => void) => ReactNode;\n\n /** Задает функцию для обработки ввода строки в инпут и последующую потерю фокуса компонентом.\n * Функция срабатывает с аргументом инпута строки\n *\n * Если при потере фокуса в выпадающем списке будет только один элемент и результат `valueToString` с этим элементом будет\n * совпадать со значением в текстовом поле, то сработает `onValueChange` со значением данного элемента\n *\n * Сама функция также может вернуть значение, неравное `undefined`, с которым будет вызван `onValueChange`.\n * При возвращаемом значении `null` будет выполнена очистка текущего значения инпута, а в режиме редактирования токен будет удален. */\n onUnexpectedInput?: (value: string) => void | null | undefined | T;\n\n /** Задает типы вводимых данных. */\n inputMode?: React.HTMLAttributes<HTMLTextAreaElement>['inputMode'];\n}\n\nexport interface TokenInputState<T> {\n autocompleteItems?: T[];\n activeTokens: T[];\n editingTokenIndex: number;\n clickedToken?: T;\n clickedTokenTimeout?: number;\n inFocus?: boolean;\n inputValue: string;\n reservedInputValue: string | undefined;\n inputValueWidth: number;\n inputValueHeight: number;\n preventBlur?: boolean;\n loading?: boolean;\n}\n\nexport const DefaultState = {\n inputValue: '',\n reservedInputValue: undefined,\n autocompleteItems: undefined,\n activeTokens: [],\n editingTokenIndex: -1,\n inFocus: false,\n loading: false,\n preventBlur: false,\n inputValueWidth: 2,\n inputValueHeight: 22,\n};\n\nexport const TokenInputDataTids = {\n root: 'TokenInput__root',\n tokenInputMenu: 'TokenInputMenu__root',\n label: 'TokenInput__label',\n} as const;\n\ntype DefaultProps<T> = Required<\n Pick<\n TokenInputProps<T>,\n | 'selectedItems'\n | 'delimiters'\n | 'renderItem'\n | 'renderValue'\n | 'valueToString'\n | 'valueToItem'\n | 'toKey'\n | 'itemToId'\n | 'onValueChange'\n | 'width'\n | 'onBlur'\n | 'onFocus'\n | 'onMouseEnter'\n | 'onMouseLeave'\n | 'menuWidth'\n | 'menuAlign'\n >\n>;\n\nconst defaultToKey = <T extends AnyObject>(item: T): string => item.toString();\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint\nconst identity = <T extends unknown>(item: T): T => item;\nconst defaultRenderToken = <T extends AnyObject>(\n item: T,\n { isActive, onClick, onDoubleClick, onRemove, disabled, size }: Partial<TokenProps>,\n) => (\n <Token\n key={item.toString()}\n isActive={isActive}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n onRemove={onRemove}\n disabled={disabled}\n size={size}\n >\n {item.toString()}\n </Token>\n);\n\n/**\n * Поле с токенами `TokenInput` — это поле ввода со списком подсказок.\n *\n * Поле с токенами используют для выбора нескольких значений из справочника и для добавления своих значений.\n */\n@rootNode\n@locale('TokenInput', TokenInputLocaleHelper)\n@withSize\nexport class TokenInput<T = string> extends React.PureComponent<TokenInputProps<T>, TokenInputState<T>> {\n public static __KONTUR_REACT_UI__ = 'TokenInput';\n public static displayName = 'TokenInput';\n\n public static defaultProps: DefaultProps<any> = {\n selectedItems: [],\n // TEMP_FAKE_FLAG помогает узнать, остались ли разделители дефолтными или пользователь передал их равными дефолтным.\n delimiters: [',', TEMP_FAKE_FLAG],\n renderItem: identity,\n renderValue: identity,\n valueToString: identity,\n valueToItem: (item: string) => item,\n toKey: defaultToKey,\n itemToId: defaultToKey,\n onValueChange: () => void 0,\n width: 250 as string | number,\n onBlur: emptyHandler,\n onFocus: emptyHandler,\n onMouseEnter: emptyHandler,\n onMouseLeave: emptyHandler,\n menuWidth: 'auto',\n menuAlign: 'cursor',\n };\n\n private getDelimiters(): string[] {\n const delimiters = this.props.delimiters ?? [];\n if (delimiters.every((delimiter) => delimiter !== TEMP_FAKE_FLAG)) {\n return delimiters;\n }\n return delimiters.filter((delimiter) => delimiter !== TEMP_FAKE_FLAG);\n }\n\n private getProps() {\n const propsGetter = createPropsGetter(TokenInput.defaultProps);\n const propsWithOldDelimiters = propsGetter.apply(this);\n return { ...propsWithOldDelimiters, delimiters: this.getDelimiters() };\n }\n\n private get textareaId() {\n return this.props.id ?? this._textareaId;\n }\n\n public state: TokenInputState<T> = DefaultState;\n\n private readonly _textareaId: string = getUid();\n private rootId = PopupIds.root + getRandomID();\n private readonly locale!: TokenInputLocale;\n private theme!: Theme;\n private size!: SizeProp;\n public featureFlags!: ReactUIFeatureFlags;\n private input: HTMLTextAreaElement | null = null;\n private tokensInputMenu: TokenInputMenu<T> | null = null;\n private textHelper: TextWidthHelper | null = null;\n private wrapper: HTMLLabelElement | null = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private memoizedTokens = new Map();\n\n public componentDidMount() {\n this.updateInputTextWidth();\n globalObject.document?.addEventListener('copy', this.handleCopy);\n if (this.props.autoFocus) {\n this.focusInput();\n }\n }\n\n public componentDidUpdate(prevProps: TokenInputProps<T> & DefaultProps<T>, prevState: TokenInputState<T>) {\n if (prevState.inputValue !== this.state.inputValue) {\n this.updateInputTextWidth();\n }\n if (prevState.activeTokens.length === 0 && this.state.activeTokens.length > 0) {\n this.dispatch({\n type: 'SET_AUTOCOMPLETE_ITEMS',\n payload: undefined,\n });\n }\n if (prevProps.selectedItems.length !== this.getProps().selectedItems.length) {\n LayoutEvents.emit();\n this.memoizedTokens.clear();\n }\n if (!this.isCursorVisibleForState(prevState) && this.isCursorVisible) {\n this.tryGetItems(this.isEditingMode ? '' : this.state.inputValue);\n }\n }\n\n public componentWillUnmount() {\n globalObject.document?.removeEventListener('copy', this.handleCopy);\n }\n\n /**\n * @public\n */\n public focus() {\n this.input?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.input?.blur();\n }\n\n /** Кратковременно визуально подсвечивает поле ввода, чтобы привлечь внимание пользователя.\n * @public\n */\n public blink() {\n blink({ el: this.wrapper, blinkColor: this.theme.inputBlinkColor });\n }\n\n public render() {\n return (\n <ReactUIFeatureFlagsContext.Consumer>\n {(flags) => {\n this.featureFlags = getFullReactUIFlagsContext(flags);\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }}\n </ReactUIFeatureFlagsContext.Consumer>\n );\n }\n\n private getLabelSizeClassName() {\n switch (this.size) {\n case 'large':\n return styles.labelLarge(this.theme);\n case 'medium':\n return styles.labelMedium(this.theme);\n case 'small':\n default:\n return styles.labelSmall(this.theme);\n }\n }\n\n private getInputSizeClassName() {\n switch (this.size) {\n case 'large':\n return styles.inputLarge(this.theme);\n case 'medium':\n return styles.inputMedium(this.theme);\n case 'small':\n default:\n return styles.inputSmall(this.theme);\n }\n }\n\n private renderMain() {\n if (this.type !== TokenInputType.WithoutReference && !this.props.getItems) {\n throw Error('Missed getItems for type ' + this.type);\n }\n\n const {\n maxMenuHeight,\n error,\n warning,\n disabled,\n renderNotFound,\n hideMenuIfEmptyInputValue,\n inputMode,\n renderTotalCount,\n totalCount,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n } = this.props;\n\n const { selectedItems, width, onMouseEnter, onMouseLeave, menuWidth, menuAlign, renderItem } = this.getProps();\n\n const {\n activeTokens,\n inFocus,\n inputValueWidth,\n inputValueHeight,\n inputValue,\n reservedInputValue,\n autocompleteItems,\n loading,\n } = this.state;\n\n const showMenu =\n this.type !== TokenInputType.WithoutReference &&\n this.isCursorVisible &&\n activeTokens.length === 0 &&\n (this.isInputValueChanged || !hideMenuIfEmptyInputValue);\n\n const theme = this.theme;\n\n const inputInlineStyles: React.CSSProperties = {\n // вычисляем ширину чтобы input автоматически перенёсся на следующую строку при необходимости\n width: inputValueWidth,\n height: inputValueHeight,\n // в ie не работает, но альтернативный способ --- дать tabindex для label --- предположительно ещё сложнее\n caretColor: this.isCursorVisible ? undefined : 'transparent',\n };\n\n const labelClassName = cx(styles.label(theme), this.getLabelSizeClassName(), {\n [styles.hovering(this.theme)]: !inFocus && !disabled && !warning && !error,\n [styles.labelDisabled(theme)]: !!disabled,\n [styles.labelFocused(theme)]: !!inFocus,\n [styles.error(theme)]: !!error,\n [styles.warning(theme)]: !!warning,\n });\n const inputClassName = cx(styles.input(theme), this.getInputSizeClassName(), {\n [styles.inputDisabled(theme)]: !!disabled,\n });\n\n const placeholder = selectedItems.length === 0 && !inputValue ? this.props.placeholder : '';\n\n const inputNode = (\n <TokenView\n size={this.size}\n className={cx({\n // input растягивается на всю ширину чтобы placeholder не обрезался\n [styles.inputPlaceholderWrapper()]: Boolean(placeholder),\n })}\n hideCloseButton={Boolean(placeholder)}\n >\n <textarea\n id={this.textareaId}\n ref={this.inputRef}\n value={inputValue}\n style={inputInlineStyles}\n spellCheck={false}\n disabled={disabled}\n className={inputClassName}\n placeholder={placeholder}\n onFocus={this.handleInputFocus}\n onBlur={this.handleInputBlur}\n onChange={this.handleChangeInputValue}\n onKeyDown={this.handleKeyDown}\n onPaste={this.handleInputPaste}\n inputMode={inputMode}\n aria-label={ariaLabel}\n aria-describedby={ariaDescribedby}\n />\n </TokenView>\n );\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div data-tid={TokenInputDataTids.root} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}>\n <label\n ref={this.wrapperRef}\n style={{ width }}\n className={labelClassName}\n onMouseDown={this.handleWrapperMouseDown}\n onMouseUp={this.handleWrapperMouseUp}\n htmlFor={this.textareaId}\n aria-controls={this.rootId}\n data-tid={TokenInputDataTids.label}\n >\n <TextWidthHelper ref={this.textHelperRef} text={inputValue} theme={this.theme} size={this.size} />\n {this.renderTokensStart()}\n {inputNode}\n {showMenu && (\n <TokenInputMenu\n popupMenuId={this.rootId}\n ref={this.tokensInputMenuRef}\n items={autocompleteItems}\n loading={loading}\n opened={showMenu}\n maxMenuHeight={maxMenuHeight}\n anchorElementForCursor={this.input}\n anchorElementRoot={this.wrapper}\n renderNotFound={renderNotFound}\n renderItem={renderItem}\n onValueChange={this.selectItem}\n renderAddButton={this.renderAddButton}\n menuWidth={menuWidth}\n menuAlign={menuAlign}\n renderTotalCount={renderTotalCount}\n totalCount={totalCount}\n size={this.size}\n />\n )}\n {this.renderTokensEnd()}\n {this.isEditingMode ? (\n <TokenView size={this.size}>\n <span className={styles.reservedInput(theme)}>{reservedInputValue}</span>\n </TokenView>\n ) : null}\n </label>\n </div>\n </CommonWrapper>\n );\n }\n\n /**\n * Сбрасывает введенное пользователем значение\n * @public\n */\n public reset() {\n this.dispatch({ type: 'RESET' });\n }\n\n private isEqual = (itemA: T, itemB: T) => {\n const { itemToId } = this.getProps();\n return lodashIsEqual(itemToId(itemA), itemToId(itemB));\n };\n\n private hasValueInItems = (items: T[], value: string | T) => {\n const { valueToString } = this.getProps();\n if (typeof value === 'string') {\n return items.map((item) => valueToString(item)).includes(value);\n }\n\n return items.some((item) => this.isEqual(item, value));\n };\n\n private get showAddItemHint() {\n const items = this.state.autocompleteItems;\n const value = this.getProps().valueToItem(this.state.inputValue);\n if (items && this.hasValueInItems(items, value)) {\n return false;\n }\n\n const selectedItems = this.getProps().selectedItems;\n if (selectedItems && this.hasValueInItems(selectedItems, value)) {\n return false;\n }\n\n if (this.type === TokenInputType.Combined && this.isInputValueChanged) {\n return true;\n }\n }\n\n private get type() {\n return this.props.type ? this.props.type : TokenInputType.WithReference;\n }\n\n private get menuRef(): Menu | null {\n return this.tokensInputMenu && this.tokensInputMenu.getMenuRef();\n }\n\n private get isCursorVisible() {\n return this.isCursorVisibleForState(this.state);\n }\n\n private get isEditingMode() {\n return this.state.editingTokenIndex > -1;\n }\n\n private isCursorVisibleForState(state: TokenInputState<T>) {\n return state.inFocus && (this.isInputValueChanged || state.activeTokens.length === 0);\n }\n\n private inputRef = (node: HTMLTextAreaElement) => (this.input = node);\n private tokensInputMenuRef = (node: TokenInputMenu<T>) => (this.tokensInputMenu = node);\n private textHelperRef = (node: TextWidthHelper) => (this.textHelper = node);\n private wrapperRef = (node: HTMLLabelElement) => (this.wrapper = node);\n\n private dispatch = (action: TokenInputAction, cb?: () => void) => {\n this.setState((prevState) => tokenInputReducer(prevState, action), cb);\n };\n\n private updateInputTextWidth() {\n if (this.textHelper) {\n // в IE текст иногда не помещается в input\n // из-за округления, поэтому округляем явно\n const inputValueWidth = parseFloat(this.textHelper.getTextWidth().toFixed(2));\n const inputValueHeight = parseFloat(this.textHelper.getTextHeight().toFixed(2));\n\n this.dispatch({ type: 'SET_INPUT_VALUE_WIDTH', payload: inputValueWidth }, LayoutEvents.emit);\n this.dispatch({ type: 'SET_INPUT_VALUE_HEIGHT', payload: inputValueHeight }, LayoutEvents.emit);\n }\n }\n\n private handleInputFocus = (event: FocusEvent<HTMLTextAreaElement>) => {\n this.dispatch({ type: 'SET_FOCUS_IN' });\n this.getProps().onFocus(event);\n };\n\n private handleInputBlur = (event: FocusEvent<HTMLTextAreaElement>) => {\n const isBlurToMenu = this.isBlurToMenu(event);\n\n if (!isBlurToMenu) {\n this.handleOutsideBlur();\n }\n\n if (isBlurToMenu || this.state.preventBlur) {\n event.preventDefault();\n // первый focus нужен для предотвращения/уменьшения моргания в других браузерах\n this.input?.focus();\n // в firefox не работает без второго focus\n globalObject.requestAnimationFrame?.(() => this.input?.focus());\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: false });\n } else {\n this.dispatch({ type: 'BLUR' });\n this.getProps().onBlur(event);\n }\n };\n\n private handleOutsideBlur = () => {\n const { inputValue, autocompleteItems } = this.state;\n\n if (inputValue === '') {\n // если стерли содержимое токена в режиме редактирования, то удаляем токен\n if (this.isEditingMode) {\n this.finishTokenEdit();\n }\n return;\n }\n\n // если не изменилось значение токена при редактировании\n if (this.isEditingMode && !this.isTokenValueChanged) {\n this.finishTokenEdit();\n return;\n }\n\n // чекаем автокомплит на совпадение с введенным значением в инпут\n if (autocompleteItems && autocompleteItems.length === 1) {\n const item = autocompleteItems[0];\n\n if (this.getProps().valueToString(item) === inputValue) {\n this.isEditingMode ? this.finishTokenEdit() : this.selectItem(item);\n\n return;\n }\n }\n\n if (this.isInputChanged) {\n this.checkForUnexpectedInput();\n }\n };\n\n private get isInputChanged() {\n if (this.isEditingMode) {\n return this.isTokenValueChanged;\n }\n\n return this.isInputValueChanged;\n }\n\n private get isInputValueChanged() {\n const { inputValue } = this.state;\n\n return inputValue !== '';\n }\n\n private get isTokenValueChanged() {\n const { inputValue, editingTokenIndex } = this.state;\n const { valueToString, selectedItems } = this.getProps();\n\n if (this.isEditingMode) {\n return valueToString(selectedItems[editingTokenIndex]) !== inputValue;\n }\n\n return false;\n }\n\n private isBlurToMenu = (event: FocusEvent<HTMLElement>) => {\n if (this.menuRef && globalObject.document) {\n const menu = getRootNode(this.tokensInputMenu?.getMenuRef());\n const relatedTarget = event.relatedTarget || globalObject.document.activeElement;\n\n if (menu && menu.contains(relatedTarget)) {\n return true;\n }\n }\n return false;\n };\n\n private handleWrapperMouseDown = (event: React.MouseEvent<HTMLElement>) => {\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: true });\n const target = event.target as HTMLElement;\n const isClickOnToken = target && this.wrapper?.contains(target) && target !== this.wrapper && target !== this.input;\n if (!isClickOnToken) {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n }\n };\n\n private handleWrapperMouseUp = () => {\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: false });\n };\n\n private handleCopy = (event: any) => {\n if (!this.state.inFocus || this.state.activeTokens.length === 0 || this.isCursorVisible) {\n return;\n }\n event.preventDefault();\n const { selectedItems, valueToString, delimiters } = this.getProps();\n // упорядочивание токенов по индексу\n const tokens = this.state.activeTokens\n .map((token) => selectedItems.indexOf(token))\n .sort()\n .map((index) => selectedItems[index])\n .map((item) => valueToString(item));\n event.clipboardData.setData('text/plain', tokens.join(delimiters[0]));\n };\n\n private handleInputPaste = (event: React.ClipboardEvent<HTMLElement>) => {\n if (this.type === TokenInputType.WithReference || !event.clipboardData) {\n return;\n }\n const paste = event.clipboardData.getData('text');\n const { delimiters, selectedItems, valueToItem, onValueChange } = this.getProps();\n if (delimiters.some((delimiter) => paste.includes(delimiter))) {\n event.preventDefault();\n event.stopPropagation();\n const tokens = paste.trim().split(new RegExp(`[${delimiters.join('')}]+`));\n const items = tokens\n .filter(Boolean)\n .map((token) => valueToItem(token))\n .filter((item) => item && !this.hasValueInItems(selectedItems, item));\n const newItems = selectedItems.concat(items);\n onValueChange(newItems);\n\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: undefined });\n this.tryGetItems();\n }\n };\n\n private tryGetItems = async (query = '') => {\n if (this.props.getItems && (this.isInputValueChanged || !this.props.hideMenuIfEmptyInputValue)) {\n this.dispatch({ type: 'SET_LOADING', payload: true });\n const autocompleteItems = await this.props.getItems(query);\n this.dispatch({ type: 'SET_LOADING', payload: false });\n\n const { selectedItems, valueToItem, valueToString } = this.getProps();\n const isSelectedItem = (item: T) => this.hasValueInItems(selectedItems, item);\n const isEditingItem = (item: T) => {\n const editingItem = selectedItems[this.state.editingTokenIndex];\n return !!editingItem && this.isEqual(item, editingItem);\n };\n\n const autocompleteItemsUnique = autocompleteItems.filter((item) => !isSelectedItem(item) || isEditingItem(item));\n\n if (this.isEditingMode) {\n const editingItem = selectedItems[this.state.editingTokenIndex];\n if (\n this.isEqual(editingItem, valueToItem(this.state.inputValue)) &&\n !this.hasValueInItems(autocompleteItemsUnique, editingItem)\n ) {\n autocompleteItemsUnique.unshift(editingItem);\n }\n }\n\n if (query === '' || this.isInputValueChanged) {\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: autocompleteItemsUnique }, () => {\n LayoutEvents.emit();\n this.highlightMenuItem();\n });\n }\n const selectItemIndex = autocompleteItemsUnique.findIndex(\n (item) => valueToString(item).toLowerCase() === this.state.inputValue.toLowerCase(),\n );\n setTimeout(() => this.menuRef?.highlightItem(selectItemIndex < 0 ? 0 : selectItemIndex), 0);\n }\n };\n\n private handleKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n this.props.onKeyDown?.(event);\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (this.isCursorVisible) {\n this.handleInputKeyDown(event);\n } else {\n this.handleWrapperKeyDown(event);\n }\n };\n\n private handleInputKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n e.stopPropagation();\n\n if (\n (this.type !== TokenInputType.WithReference &&\n this.getProps().delimiters.some((key) => key === e.key || (key === ',' && isKeyComma(e)))) ||\n (isKeyEnter(e) && this.type === TokenInputType.WithoutReference)\n ) {\n e.preventDefault();\n const newValue = this.state.inputValue;\n if (newValue !== '') {\n if (this.isEditingMode) {\n this.finishTokenEdit();\n } else {\n this.handleAddItem();\n }\n }\n }\n const isRightmostTokenNotDisabled = !this.isTokenDisabled(this.getProps().selectedItems.length - 1);\n const canSetValueToInput = this.showAddItemHint || (this.state.autocompleteItems?.length ?? 0) > 0;\n\n switch (true) {\n case isKeyEnter(e):\n if (canSetValueToInput && this.menuRef) {\n this.menuRef.enter(e);\n }\n // don't allow textarea\n // became multiline\n e.preventDefault();\n break;\n case isKeyArrowVertical(e):\n e.preventDefault();\n if (this.menuRef) {\n if (isKeyArrowUp(e)) {\n this.menuRef.up();\n } else {\n this.menuRef.down();\n }\n }\n break;\n case isKeyEscape(e):\n this.input?.blur();\n break;\n case isKeyBackspace(e):\n if (!this.isEditingMode && isRightmostTokenNotDisabled) {\n this.moveFocusToLastToken();\n }\n break;\n case isKeyArrowLeft(e):\n if (this.input?.selectionStart === 0) {\n const index = this.getAvailableTokenIndex(this.getProps().selectedItems.length);\n const itemNew = this.getProps().selectedItems[index];\n if (itemNew) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [itemNew] });\n }\n }\n break;\n }\n };\n\n private moveFocusToLastToken() {\n const items = this.getProps().selectedItems;\n if (this.state.inputValue === '' && items && items.length > 0) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: items.slice(-1) });\n }\n }\n\n private focusInput = () => {\n globalObject.requestAnimationFrame?.(() => this.input?.focus());\n };\n\n private selectInputText = () => {\n if (this.input) {\n this.input.setSelectionRange(0, this.state.inputValue.length);\n }\n };\n\n private handleWrapperKeyDown = (e: KeyboardEvent<HTMLElement>) => {\n const { selectedItems, onValueChange } = this.getProps();\n switch (true) {\n case isKeyBackspace(e):\n case isKeyDelete(e): {\n const indexOfActiveToken = this.getProps().selectedItems.indexOf(\n this.state.activeTokens[this.state.activeTokens.length - 1],\n );\n if (!this.isEditingMode && !this.isTokenDisabled(indexOfActiveToken)) {\n const itemsNew = selectedItems.filter((item) => !this.hasValueInItems(this.state.activeTokens, item));\n onValueChange(itemsNew);\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' }, () => {\n LayoutEvents.emit();\n this.input?.focus();\n });\n }\n break;\n }\n case isKeyArrowHorizontal(e):\n this.handleWrapperArrows(e);\n break;\n case isKeyEscape(e):\n this.wrapper?.blur();\n break;\n case isKeyEnter(e):\n e.preventDefault();\n if (this.state.activeTokens.length === 1) {\n this.handleTokenEdit(this.state.activeTokens[0]);\n }\n break;\n case isShortcutSelectAll(e):\n e.preventDefault();\n this.dispatch({\n type: 'SET_ACTIVE_TOKENS',\n payload: selectedItems.filter((item) => !this.isTokenDisabled(selectedItems.indexOf(item))),\n });\n break;\n }\n };\n\n private handleWrapperArrows = (e: KeyboardEvent<HTMLElement>) => {\n e.preventDefault();\n const selectedItems = this.getProps().selectedItems;\n const activeTokens = this.state.activeTokens;\n const activeItemIndex = selectedItems.indexOf(activeTokens[0]);\n const newItemIndex = this.getAvailableTokenIndex(activeItemIndex, isKeyArrowLeft(e));\n const isLeftEdge = activeItemIndex === 0 && isKeyArrowLeft(e);\n const isRightEdge = newItemIndex === selectedItems.length && isKeyArrowRight(e);\n if (!e.shiftKey && activeTokens.length === 1) {\n this.handleWrapperArrowsWithoutShift(isLeftEdge, isRightEdge, newItemIndex);\n } else {\n this.handleWrapperArrowsWithShift(isLeftEdge, isRightEdge, newItemIndex);\n }\n };\n\n private handleWrapperArrowsWithoutShift = (isLeftEdge: boolean, isRightEdge: boolean, newItemIndex: number) => {\n if (isRightEdge) {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' }, () => this.input?.focus());\n } else if (!isLeftEdge) {\n this.dispatch({\n type: 'SET_ACTIVE_TOKENS',\n payload: [this.getProps().selectedItems[newItemIndex]],\n });\n }\n };\n\n private handleWrapperArrowsWithShift = (isLeftEdge: boolean, isRightEdge: boolean, newItemIndex: number) => {\n if (!isLeftEdge && !isRightEdge) {\n const itemNew = this.getProps().selectedItems[newItemIndex];\n const itemsNew = [itemNew, ...this.state.activeTokens.filter((item) => !this.isEqual(item, itemNew))];\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: itemsNew });\n }\n };\n\n private handleValueChange = (items: T[]) => {\n this.getProps().onValueChange(items);\n };\n\n private handleAddItem = () => {\n const item = this.getProps().valueToItem(this.state.inputValue);\n if (item) {\n this.selectItem(item);\n }\n };\n\n private selectItem = (item: T) => {\n const { selectedItems, valueToString } = this.getProps();\n if (this.isEditingMode) {\n this.dispatch({ type: 'UPDATE_QUERY', payload: valueToString(item) }, this.finishTokenEdit);\n } else if (!this.hasValueInItems(selectedItems, item)) {\n this.handleValueChange(selectedItems.concat([item]));\n this.dispatch({ type: 'CLEAR_INPUT' });\n this.tryGetItems();\n }\n };\n\n private handleRemoveToken = (item: T) => {\n this.props.onValueChange?.(this.getProps().selectedItems.filter((_) => !this.isEqual(_, item)));\n const filteredActiveTokens = this.state.activeTokens.filter((_) => !this.isEqual(_, item));\n\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: filteredActiveTokens });\n if (filteredActiveTokens.length === 0) {\n this.focusInput();\n }\n\n this.tryGetItems();\n };\n\n private handleTokenClick = (event: React.MouseEvent<HTMLElement>, itemNew: T) => {\n const items = this.state.activeTokens;\n if (event.ctrlKey) {\n const newItems = this.hasValueInItems(this.state.activeTokens, itemNew)\n ? items.filter((item) => !this.isEqual(item, itemNew))\n : [...items, itemNew];\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: newItems });\n } else {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [itemNew] });\n }\n this.focusInput();\n };\n\n private handleTokenEdit = (itemNew: T) => {\n const { selectedItems, valueToString } = this.getProps();\n const editingTokenIndex = selectedItems.findIndex((item) => item === itemNew);\n this.dispatch({ type: 'SET_EDITING_TOKEN_INDEX', payload: editingTokenIndex });\n\n if (this.isInputValueChanged) {\n if (this.state.reservedInputValue === undefined) {\n this.dispatch({ type: 'SET_TEMPORARY_QUERY', payload: this.state.inputValue });\n }\n }\n this.dispatch({ type: 'UPDATE_QUERY', payload: valueToString(itemNew) }, this.selectInputText);\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n\n this.tryGetItems();\n };\n\n private finishTokenEdit = () => {\n const { selectedItems, valueToString } = this.getProps();\n const { editingTokenIndex, inputValue, reservedInputValue, autocompleteItems } = this.state;\n\n const editedItem =\n autocompleteItems?.find((item) => valueToString(item) === inputValue) ?? this.getProps().valueToItem(inputValue);\n\n const newItems = selectedItems.concat([]);\n\n if (!this.hasValueInItems(selectedItems, editedItem)) {\n newItems.splice(editingTokenIndex, 1, ...(this.isInputValueChanged ? [editedItem] : []));\n this.handleValueChange(newItems);\n }\n\n this.dispatch({ type: 'REMOVE_EDITING_TOKEN_INDEX' });\n\n if (reservedInputValue) {\n this.dispatch({ type: 'UPDATE_QUERY', payload: reservedInputValue });\n this.dispatch({ type: 'REMOVE_TEMPORARY_QUERY' });\n } else {\n this.dispatch({ type: 'CLEAR_INPUT' });\n }\n\n if (newItems.length === selectedItems.length) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [newItems[editingTokenIndex]] });\n }\n };\n\n private checkForUnexpectedInput = () => {\n const { inputValue } = this.state;\n const { onUnexpectedInput } = this.props;\n\n // чекаем не возвращает ли что-нибудь обработчик\n const returnedValue = onUnexpectedInput?.(inputValue);\n\n if (returnedValue === undefined) {\n if (\n this.featureFlags.tokenInputCreateTokenOnBlurInWithoutReferenceMode &&\n this.type === TokenInputType.WithoutReference\n ) {\n this.handleAddItem();\n }\n\n return;\n }\n\n if (returnedValue === null) {\n this.dispatch({ type: 'CLEAR_INPUT' }, () => {\n if (this.isEditingMode) {\n this.finishTokenEdit();\n }\n });\n\n return;\n }\n\n if (returnedValue) {\n this.selectItem(returnedValue);\n }\n };\n\n private handleChangeInputValue = (event: ChangeEvent<HTMLTextAreaElement>) => {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n let query = event.target.value.trimLeft();\n\n if (query.endsWith(' ')) {\n query = query.trimRight() + ' ';\n }\n if (this.isInputValueChanged && query === '') {\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: undefined });\n }\n this.dispatch({ type: 'UPDATE_QUERY', payload: query }, () => {\n this.tryGetItems(query);\n });\n if (this.props.onInputValueChange) {\n this.props.onInputValueChange(query);\n }\n };\n\n private highlightMenuItem = () => {\n if (\n this.menuRef &&\n this.state.autocompleteItems &&\n this.state.autocompleteItems.length > 0 &&\n this.type !== TokenInputType.Combined\n ) {\n this.menuRef.highlightItem(0);\n }\n };\n\n private renderTokensStart = () => {\n const { editingTokenIndex } = this.state;\n const selectedItems = this.getProps().selectedItems;\n const delimiter = editingTokenIndex >= 0 ? editingTokenIndex : selectedItems.length;\n return selectedItems.slice(0, delimiter).map(this.renderToken);\n };\n\n private renderTokensEnd = () => {\n if (this.state.editingTokenIndex >= 0) {\n return this.getProps()\n .selectedItems.slice(this.state.editingTokenIndex + 1)\n .map(this.renderToken);\n }\n };\n\n private renderToken = (item: T) => {\n const { renderToken = defaultRenderToken, disabled } = this.props;\n\n const isActive = this.state.activeTokens.includes(item);\n\n // TODO useCallback\n const handleIconClick: React.MouseEventHandler<HTMLElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode) {\n this.handleRemoveToken(item);\n }\n };\n\n // TODO useCallback\n const handleTokenClick: React.MouseEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode) {\n this.handleTokenClick(event, item);\n }\n };\n\n const handleTokenDoubleClick: React.MouseEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode && !disabled) {\n this.handleTokenEdit(item);\n }\n };\n\n const renderedToken = renderToken(item as T & AnyObject, {\n size: this.size,\n isActive,\n onClick: handleTokenClick,\n onDoubleClick: handleTokenDoubleClick,\n onRemove: handleIconClick,\n disabled,\n });\n\n this.memoizedTokens.set(this.props.selectedItems?.indexOf(item), renderedToken);\n return renderedToken;\n };\n\n private renderAddButton = (value = this.state.inputValue): React.ReactNode | undefined => {\n if (!this.showAddItemHint) {\n return;\n }\n\n if (this.props.renderAddButton) {\n return this.props.renderAddButton(value, this.handleAddItem);\n }\n\n const { addButtonComment, addButtonTitle } = this.locale;\n\n return (\n <MenuItem onClick={this.handleAddItem} comment={addButtonComment} key=\"renderAddButton\">\n {addButtonTitle} {value}\n </MenuItem>\n );\n };\n\n private isTokenDisabled = (itemIndex: number) => {\n let renderedToken;\n if (this.memoizedTokens.has(itemIndex)) {\n renderedToken = this.memoizedTokens.get(itemIndex);\n } else if (itemIndex < 0 || itemIndex > this.getProps().selectedItems.length - 1) {\n return false;\n } else {\n renderedToken = this.renderToken(this.getProps().selectedItems[itemIndex]) as React.ReactElement<\n TokenInputProps<unknown>\n >;\n }\n return renderedToken.props.disabled;\n };\n\n private getAvailableTokenIndex = (startIndex: number, isDirectionLeft = true) => {\n const { selectedItems } = this.getProps();\n const step = isDirectionLeft ? -1 : +1;\n let availableIndex = startIndex + step;\n\n while (this.isTokenDisabled(availableIndex)) {\n availableIndex += step;\n if (availableIndex === selectedItems.length) {\n return availableIndex;\n } else if (availableIndex === -1) {\n return startIndex;\n }\n }\n\n return availableIndex;\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","lodashIsEqual","globalObject","PopupIds","isKeyArrowHorizontal","isKeyArrowLeft","isKeyArrowRight","isKeyArrowUp","isKeyArrowVertical","isKeyBackspace","isKeyComma","isKeyDelete","isKeyEnter","isKeyEscape","isShortcutSelectAll","LayoutEvents","Token","MenuItem","emptyHandler","getRandomID","ThemeContext","locale","CommonWrapper","cx","getRootNode","rootNode","createPropsGetter","getUid","TokenView","getFullReactUIFlagsContext","ReactUIFeatureFlagsContext","withSize","blink","TokenInputLocaleHelper","styles","tokenInputReducer","TokenInputMenu","TextWidthHelper","TEMP_FAKE_FLAG","TokenInputType","DefaultState","inputValue","reservedInputValue","undefined","autocompleteItems","activeTokens","editingTokenIndex","inFocus","loading","preventBlur","inputValueWidth","inputValueHeight","TokenInputDataTids","root","tokenInputMenu","label","defaultToKey","item","toString","identity","defaultRenderToken","_ref","isActive","onClick","onDoubleClick","onRemove","disabled","size","createElement","key","TokenInput","_dec","_class","_TokenInput","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","_textareaId","rootId","input","tokensInputMenu","textHelper","wrapper","memoizedTokens","Map","isEqual","itemA","itemB","_this$getProps","getProps","itemToId","hasValueInItems","items","value","_this$getProps2","valueToString","map","includes","some","inputRef","node","tokensInputMenuRef","textHelperRef","wrapperRef","dispatch","action","cb","setState","prevState","handleInputFocus","event","type","onFocus","handleInputBlur","isBlurToMenu","handleOutsideBlur","_this$input","preventDefault","focus","requestAnimationFrame","_this$input2","payload","onBlur","_this$state","isEditingMode","finishTokenEdit","isTokenValueChanged","selectItem","isInputChanged","checkForUnexpectedInput","menuRef","document","_this$tokensInputMenu","menu","getMenuRef","relatedTarget","activeElement","contains","handleWrapperMouseDown","_this$wrapper","target","isClickOnToken","handleWrapperMouseUp","handleCopy","isCursorVisible","_this$getProps3","selectedItems","delimiters","tokens","token","indexOf","sort","index","clipboardData","setData","join","handleInputPaste","WithReference","paste","getData","_this$getProps4","valueToItem","onValueChange","delimiter","stopPropagation","trim","split","RegExp","filter","Boolean","newItems","tryGetItems","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","query","_this$getProps5","isSelectedItem","isEditingItem","autocompleteItemsUnique","editingItem","selectItemIndex","wrap","_callee$","_context","prev","next","props","getItems","isInputValueChanged","hideMenuIfEmptyInputValue","sent","unshift","emit","highlightMenuItem","findIndex","toLowerCase","setTimeout","_this$menuRef","highlightItem","stop","_x","handleKeyDown","onKeyDown","defaultPrevented","handleInputKeyDown","handleWrapperKeyDown","e","_this$state$autocompl","_this$state$autocompl2","_this$input3","_this$input4","WithoutReference","newValue","handleAddItem","isRightmostTokenNotDisabled","isTokenDisabled","canSetValueToInput","showAddItemHint","enter","up","down","blur","moveFocusToLastToken","selectionStart","getAvailableTokenIndex","itemNew","focusInput","_this$input5","selectInputText","setSelectionRange","_this$wrapper2","_this$getProps6","indexOfActiveToken","itemsNew","_this$input6","handleWrapperArrows","handleTokenEdit","activeItemIndex","newItemIndex","isLeftEdge","isRightEdge","shiftKey","handleWrapperArrowsWithoutShift","handleWrapperArrowsWithShift","_this$input7","handleValueChange","_this$getProps7","handleRemoveToken","_","filteredActiveTokens","handleTokenClick","ctrlKey","_this$getProps8","_autocompleteItems$fi","_this$getProps9","_this$state2","editedItem","find","splice","onUnexpectedInput","returnedValue","featureFlags","tokenInputCreateTokenOnBlurInWithoutReferenceMode","handleChangeInputValue","trimLeft","endsWith","trimRight","onInputValueChange","Combined","renderTokensStart","slice","renderToken","renderTokensEnd","_this$props$selectedI","_this$props","_this$props$renderTok","handleIconClick","handleTokenDoubleClick","renderedToken","set","renderAddButton","_this$locale","addButtonComment","addButtonTitle","comment","itemIndex","has","get","startIndex","isDirectionLeft","_this$getProps10","step","availableIndex","_inheritsLoose","_proto","prototype","getDelimiters","_this$props$delimiter","every","propsGetter","defaultProps","propsWithOldDelimiters","_extends","componentDidMount","_globalObject$documen","updateInputTextWidth","addEventListener","autoFocus","componentDidUpdate","prevProps","clear","isCursorVisibleForState","componentWillUnmount","_globalObject$documen2","removeEventListener","_this$input8","_this$input9","el","blinkColor","theme","inputBlinkColor","render","_this2","Consumer","flags","renderMain","getLabelSizeClassName","labelLarge","labelMedium","labelSmall","getInputSizeClassName","inputLarge","inputMedium","inputSmall","_cx","_cx2","_cx3","Error","_this$props2","maxMenuHeight","error","warning","renderNotFound","inputMode","renderTotalCount","totalCount","ariaDescribedby","ariaLabel","_this$getProps11","width","onMouseEnter","onMouseLeave","menuWidth","menuAlign","renderItem","_this$state3","showMenu","inputInlineStyles","height","caretColor","labelClassName","hovering","labelDisabled","labelFocused","inputClassName","inputDisabled","placeholder","inputNode","className","inputPlaceholderWrapper","hideCloseButton","id","textareaId","ref","style","spellCheck","onChange","onPaste","rootNodeRef","setRootNode","onMouseDown","onMouseUp","htmlFor","text","popupMenuId","opened","anchorElementForCursor","anchorElementRoot","reservedInput","reset","parseFloat","getTextWidth","toFixed","getTextHeight","_createClass","_this$props$id","_this$state4","_this$getProps12","PureComponent","__KONTUR_REACT_UI__","displayName","renderValue","toKey"],"sources":["TokenInput.tsx"],"sourcesContent":["import type {\n AriaAttributes,\n ChangeEvent,\n FocusEvent,\n FocusEventHandler,\n HTMLAttributes,\n KeyboardEvent,\n KeyboardEventHandler,\n MouseEventHandler,\n ReactNode,\n} from 'react';\nimport React from 'react';\nimport lodashIsEqual from 'lodash.isequal';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { PopupIds } from '../../internal/Popup';\nimport {\n isKeyArrowHorizontal,\n isKeyArrowLeft,\n isKeyArrowRight,\n isKeyArrowUp,\n isKeyArrowVertical,\n isKeyBackspace,\n isKeyComma,\n isKeyDelete,\n isKeyEnter,\n isKeyEscape,\n isShortcutSelectAll,\n} from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport type { Menu } from '../../internal/Menu';\nimport type { TokenProps, TokenSize } from '../Token';\nimport { Token } from '../Token';\nimport type { MenuItemState } from '../MenuItem';\nimport { MenuItem } from '../MenuItem';\nimport type { AnyObject } from '../../lib/utils';\nimport { emptyHandler, getRandomID } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { locale } from '../../lib/locale/decorators';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { getUid } from '../../lib/uidUtils';\nimport { TokenView } from '../Token/TokenView';\nimport type { ReactUIFeatureFlags } from '../../lib/featureFlagsContext';\nimport { getFullReactUIFlagsContext, ReactUIFeatureFlagsContext } from '../../lib/featureFlagsContext';\nimport { withSize } from '../../lib/size/SizeDecorator';\nimport type { SizeProp } from '../../lib/types/props';\nimport { blink } from '../../lib/blink';\n\nimport type { TokenInputLocale } from './locale';\nimport { TokenInputLocaleHelper } from './locale';\nimport { styles } from './TokenInput.styles';\nimport type { TokenInputAction } from './TokenInputReducer';\nimport { tokenInputReducer } from './TokenInputReducer';\nimport { TokenInputMenu } from './TokenInputMenu';\nimport { TextWidthHelper } from './TextWidthHelper';\n\nconst TEMP_FAKE_FLAG = 'TEMP_FAKE_FLAG';\n\nexport enum TokenInputType {\n WithReference,\n WithoutReference,\n Combined,\n}\n\nexport type TokenInputMenuAlign = 'left' | 'cursor';\n\nexport interface TokenInputProps<T>\n extends CommonProps,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'> {\n /** Задает выбранные токены, которые будут отображаться в поле ввода. */\n selectedItems?: T[];\n\n /** Задает функцию, которая вызывается при добавлении нового токена. */\n onValueChange?: (items: T[]) => void;\n\n /** Задает HTML-событие `onmouseenter`.\n * @ignore */\n onMouseEnter?: MouseEventHandler<HTMLDivElement>;\n\n /** Задает HTML-событие `onmouseleave`.\n * @ignore */\n onMouseLeave?: MouseEventHandler<HTMLDivElement>;\n\n /** Задает HTML-событие `onfocus`.\n * @ignore */\n onFocus?: FocusEventHandler<HTMLTextAreaElement>;\n\n /** Задает HTML-событие `onblur`.\n * @ignore */\n onBlur?: FocusEventHandler<HTMLTextAreaElement>;\n\n /** Задает HTML-событие `onkeydown`. */\n onKeyDown?: KeyboardEventHandler<HTMLTextAreaElement>;\n\n /** Устанавливает фокус на контроле после окончания загрузки страницы. */\n autoFocus?: boolean;\n\n /** Задает размер контрола. */\n size?: TokenSize;\n\n /** Задает тип инпута.\n * Возможные значения:\n * `TokenInputType.WithReference` (можно выбирать токены только из предложенных, нельзя добавить новые).\n * `TokenInputType.WithoutReference` (можно добавлять токены, но нельзя выбирать).\n * `TokenInputType.Combined` (можно и выбирать, и добавлять). */\n type?: TokenInputType;\n\n /** Задает ширину выпадающего меню. Может быть 'auto', в пикселях, процентах (от ширины инпута) и других конкретных единицах.\n * Если menuAlign = 'cursor', то ширина выпадающего меню всегда будет равна 'auto' (по ширине текста). */\n menuWidth?: React.CSSProperties['width'];\n\n /** Задает выравнивание выпадающего меню. */\n menuAlign?: TokenInputMenuAlign;\n\n /** Задает функцию поиска элементов, должна возвращать Promise с массивом элементов. По умолчанию ожидаются строки.\n * Элементы могут быть любого типа. В таком случае необходимо определить свойства `renderItem`, `valueToString`. */\n getItems?: (query: string) => Promise<T[]>;\n\n /** Скрывает меню при пустом вводе. */\n hideMenuIfEmptyInputValue?: boolean;\n\n /** Задает функцию, которая отображает элемент списка. */\n renderItem?: (item: T, state: MenuItemState) => React.ReactNode | null;\n\n /** Задает функцию, которая отображает выбранное значение. */\n renderValue?: (item: T) => React.ReactNode;\n\n /** Задает функцию, которая возвращает строковое представление токена.\n * @default item => item */\n valueToString?: (item: T) => string;\n\n /** Задает функцию, которая отображает сообщение об общем количестве элементов.\n * `found` учитывает только компонент `MenuItem`. Им \"оборачиваются\" элементы, возвращаемые `getItems()`. */\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n\n /** Определяет общее количество элементов. Необходим для работы `renderTotalCount`. */\n totalCount?: number;\n\n /** Задает функцию, которая отображает заданное содержимое при пустом результате поиска. Не работает, если рендерится `AddButton`. */\n renderNotFound?: () => React.ReactNode;\n\n /** Преобразует значение в элемент списка. */\n valueToItem?: (value: string) => T;\n\n /** @deprecated Используйте `itemToId` вместо `toKey`. */\n toKey?: (item: T) => string | number | undefined;\n\n /** Задает функцию сравнения полученных результатов с value. */\n itemToId?: (item: T) => string | number | undefined;\n\n /** Задает текст, который отображается если не введено никакое значение. */\n placeholder?: string;\n\n /** Задает символы, которые разделяют введённый текст на токены. */\n delimiters?: string[];\n\n /** Переводит контрол в состояние валидации \"ошибка\". */\n error?: boolean;\n\n /** Переводит контрол в состояние валидации \"предупреждение\". */\n warning?: boolean;\n\n /** Делает компонент недоступным. */\n disabled?: boolean;\n\n /** Задает ширину токен-инпута. */\n width?: string | number;\n\n /** Задает максимальную высоту выпадающего меню. */\n maxMenuHeight?: number | string;\n\n /** Задает функцию, которая отображает токен и предоставляет возможность кастомизации внешнего вида и поведения токена. */\n renderToken?: (item: T, props: Partial<TokenProps>) => ReactNode;\n\n /** Задает функцию, вызывающуюся при изменении текста в поле ввода. */\n onInputValueChange?: (value: string) => void;\n\n /** Задает функцию отрисовки кнопки добавления в выпадающем списке */\n renderAddButton?: (query?: string, onAddItem?: () => void) => ReactNode;\n\n /** Задает функцию для обработки ввода строки в инпут и последующую потерю фокуса компонентом.\n * Функция срабатывает с аргументом инпута строки\n *\n * Если при потере фокуса в выпадающем списке будет только один элемент и результат `valueToString` с этим элементом будет\n * совпадать со значением в текстовом поле, то сработает `onValueChange` со значением данного элемента\n *\n * Сама функция также может вернуть значение, неравное `undefined`, с которым будет вызван `onValueChange`.\n * При возвращаемом значении `null` будет выполнена очистка текущего значения инпута, а в режиме редактирования токен будет удален. */\n onUnexpectedInput?: (value: string) => void | null | undefined | T;\n\n /** Задает типы вводимых данных. */\n inputMode?: React.HTMLAttributes<HTMLTextAreaElement>['inputMode'];\n}\n\nexport interface TokenInputState<T> {\n autocompleteItems?: T[];\n activeTokens: T[];\n editingTokenIndex: number;\n clickedToken?: T;\n clickedTokenTimeout?: number;\n inFocus?: boolean;\n inputValue: string;\n reservedInputValue: string | undefined;\n inputValueWidth: number;\n inputValueHeight: number;\n preventBlur?: boolean;\n loading?: boolean;\n}\n\nexport const DefaultState = {\n inputValue: '',\n reservedInputValue: undefined,\n autocompleteItems: undefined,\n activeTokens: [],\n editingTokenIndex: -1,\n inFocus: false,\n loading: false,\n preventBlur: false,\n inputValueWidth: 2,\n inputValueHeight: 22,\n};\n\nexport const TokenInputDataTids = {\n root: 'TokenInput__root',\n tokenInputMenu: 'TokenInputMenu__root',\n label: 'TokenInput__label',\n} as const;\n\ntype DefaultProps<T> = Required<\n Pick<\n TokenInputProps<T>,\n | 'selectedItems'\n | 'delimiters'\n | 'renderItem'\n | 'renderValue'\n | 'valueToString'\n | 'valueToItem'\n | 'toKey'\n | 'itemToId'\n | 'onValueChange'\n | 'width'\n | 'onBlur'\n | 'onFocus'\n | 'onMouseEnter'\n | 'onMouseLeave'\n | 'menuWidth'\n | 'menuAlign'\n >\n>;\n\nconst defaultToKey = <T extends AnyObject>(item: T): string => item.toString();\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint\nconst identity = <T extends unknown>(item: T): T => item;\nconst defaultRenderToken = <T extends AnyObject>(\n item: T,\n { isActive, onClick, onDoubleClick, onRemove, disabled, size }: Partial<TokenProps>,\n) => (\n <Token\n key={item.toString()}\n isActive={isActive}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n onRemove={onRemove}\n disabled={disabled}\n size={size}\n >\n {item.toString()}\n </Token>\n);\n\n/**\n * Поле с токенами `TokenInput` — это поле ввода со списком подсказок.\n *\n * Поле с токенами используют для выбора нескольких значений из справочника и для добавления своих значений.\n */\n@rootNode\n@locale('TokenInput', TokenInputLocaleHelper)\n@withSize\nexport class TokenInput<T = string> extends React.PureComponent<TokenInputProps<T>, TokenInputState<T>> {\n public static __KONTUR_REACT_UI__ = 'TokenInput';\n public static displayName = 'TokenInput';\n\n public static defaultProps: DefaultProps<any> = {\n selectedItems: [],\n // TEMP_FAKE_FLAG помогает узнать, остались ли разделители дефолтными или пользователь передал их равными дефолтным.\n delimiters: [',', TEMP_FAKE_FLAG],\n renderItem: identity,\n renderValue: identity,\n valueToString: identity,\n valueToItem: (item: string) => item,\n toKey: defaultToKey,\n itemToId: identity,\n onValueChange: () => void 0,\n width: 250 as string | number,\n onBlur: emptyHandler,\n onFocus: emptyHandler,\n onMouseEnter: emptyHandler,\n onMouseLeave: emptyHandler,\n menuWidth: 'auto',\n menuAlign: 'cursor',\n };\n\n private getDelimiters(): string[] {\n const delimiters = this.props.delimiters ?? [];\n if (delimiters.every((delimiter) => delimiter !== TEMP_FAKE_FLAG)) {\n return delimiters;\n }\n return delimiters.filter((delimiter) => delimiter !== TEMP_FAKE_FLAG);\n }\n\n private getProps() {\n const propsGetter = createPropsGetter(TokenInput.defaultProps);\n const propsWithOldDelimiters = propsGetter.apply(this);\n return { ...propsWithOldDelimiters, delimiters: this.getDelimiters() };\n }\n\n private get textareaId() {\n return this.props.id ?? this._textareaId;\n }\n\n public state: TokenInputState<T> = DefaultState;\n\n private readonly _textareaId: string = getUid();\n private rootId = PopupIds.root + getRandomID();\n private readonly locale!: TokenInputLocale;\n private theme!: Theme;\n private size!: SizeProp;\n public featureFlags!: ReactUIFeatureFlags;\n private input: HTMLTextAreaElement | null = null;\n private tokensInputMenu: TokenInputMenu<T> | null = null;\n private textHelper: TextWidthHelper | null = null;\n private wrapper: HTMLLabelElement | null = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private memoizedTokens = new Map();\n\n public componentDidMount() {\n this.updateInputTextWidth();\n globalObject.document?.addEventListener('copy', this.handleCopy);\n if (this.props.autoFocus) {\n this.focusInput();\n }\n }\n\n public componentDidUpdate(prevProps: TokenInputProps<T> & DefaultProps<T>, prevState: TokenInputState<T>) {\n if (prevState.inputValue !== this.state.inputValue) {\n this.updateInputTextWidth();\n }\n if (prevState.activeTokens.length === 0 && this.state.activeTokens.length > 0) {\n this.dispatch({\n type: 'SET_AUTOCOMPLETE_ITEMS',\n payload: undefined,\n });\n }\n if (prevProps.selectedItems.length !== this.getProps().selectedItems.length) {\n LayoutEvents.emit();\n this.memoizedTokens.clear();\n }\n if (!this.isCursorVisibleForState(prevState) && this.isCursorVisible) {\n this.tryGetItems(this.isEditingMode ? '' : this.state.inputValue);\n }\n }\n\n public componentWillUnmount() {\n globalObject.document?.removeEventListener('copy', this.handleCopy);\n }\n\n /**\n * @public\n */\n public focus() {\n this.input?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.input?.blur();\n }\n\n /** Кратковременно визуально подсвечивает поле ввода, чтобы привлечь внимание пользователя.\n * @public\n */\n public blink() {\n blink({ el: this.wrapper, blinkColor: this.theme.inputBlinkColor });\n }\n\n public render() {\n return (\n <ReactUIFeatureFlagsContext.Consumer>\n {(flags) => {\n this.featureFlags = getFullReactUIFlagsContext(flags);\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }}\n </ReactUIFeatureFlagsContext.Consumer>\n );\n }\n\n private getLabelSizeClassName() {\n switch (this.size) {\n case 'large':\n return styles.labelLarge(this.theme);\n case 'medium':\n return styles.labelMedium(this.theme);\n case 'small':\n default:\n return styles.labelSmall(this.theme);\n }\n }\n\n private getInputSizeClassName() {\n switch (this.size) {\n case 'large':\n return styles.inputLarge(this.theme);\n case 'medium':\n return styles.inputMedium(this.theme);\n case 'small':\n default:\n return styles.inputSmall(this.theme);\n }\n }\n\n private renderMain() {\n if (this.type !== TokenInputType.WithoutReference && !this.props.getItems) {\n throw Error('Missed getItems for type ' + this.type);\n }\n\n const {\n maxMenuHeight,\n error,\n warning,\n disabled,\n renderNotFound,\n hideMenuIfEmptyInputValue,\n inputMode,\n renderTotalCount,\n totalCount,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n } = this.props;\n\n const { selectedItems, width, onMouseEnter, onMouseLeave, menuWidth, menuAlign, renderItem } = this.getProps();\n\n const {\n activeTokens,\n inFocus,\n inputValueWidth,\n inputValueHeight,\n inputValue,\n reservedInputValue,\n autocompleteItems,\n loading,\n } = this.state;\n\n const showMenu =\n this.type !== TokenInputType.WithoutReference &&\n this.isCursorVisible &&\n activeTokens.length === 0 &&\n (this.isInputValueChanged || !hideMenuIfEmptyInputValue);\n\n const theme = this.theme;\n\n const inputInlineStyles: React.CSSProperties = {\n // вычисляем ширину чтобы input автоматически перенёсся на следующую строку при необходимости\n width: inputValueWidth,\n height: inputValueHeight,\n // в ie не работает, но альтернативный способ --- дать tabindex для label --- предположительно ещё сложнее\n caretColor: this.isCursorVisible ? undefined : 'transparent',\n };\n\n const labelClassName = cx(styles.label(theme), this.getLabelSizeClassName(), {\n [styles.hovering(this.theme)]: !inFocus && !disabled && !warning && !error,\n [styles.labelDisabled(theme)]: !!disabled,\n [styles.labelFocused(theme)]: !!inFocus,\n [styles.error(theme)]: !!error,\n [styles.warning(theme)]: !!warning,\n });\n const inputClassName = cx(styles.input(theme), this.getInputSizeClassName(), {\n [styles.inputDisabled(theme)]: !!disabled,\n });\n\n const placeholder = selectedItems.length === 0 && !inputValue ? this.props.placeholder : '';\n\n const inputNode = (\n <TokenView\n size={this.size}\n className={cx({\n // input растягивается на всю ширину чтобы placeholder не обрезался\n [styles.inputPlaceholderWrapper()]: Boolean(placeholder),\n })}\n hideCloseButton={Boolean(placeholder)}\n >\n <textarea\n id={this.textareaId}\n ref={this.inputRef}\n value={inputValue}\n style={inputInlineStyles}\n spellCheck={false}\n disabled={disabled}\n className={inputClassName}\n placeholder={placeholder}\n onFocus={this.handleInputFocus}\n onBlur={this.handleInputBlur}\n onChange={this.handleChangeInputValue}\n onKeyDown={this.handleKeyDown}\n onPaste={this.handleInputPaste}\n inputMode={inputMode}\n aria-label={ariaLabel}\n aria-describedby={ariaDescribedby}\n />\n </TokenView>\n );\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div data-tid={TokenInputDataTids.root} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}>\n <label\n ref={this.wrapperRef}\n style={{ width }}\n className={labelClassName}\n onMouseDown={this.handleWrapperMouseDown}\n onMouseUp={this.handleWrapperMouseUp}\n htmlFor={this.textareaId}\n aria-controls={this.rootId}\n data-tid={TokenInputDataTids.label}\n >\n <TextWidthHelper ref={this.textHelperRef} text={inputValue} theme={this.theme} size={this.size} />\n {this.renderTokensStart()}\n {inputNode}\n {showMenu && (\n <TokenInputMenu\n popupMenuId={this.rootId}\n ref={this.tokensInputMenuRef}\n items={autocompleteItems}\n loading={loading}\n opened={showMenu}\n maxMenuHeight={maxMenuHeight}\n anchorElementForCursor={this.input}\n anchorElementRoot={this.wrapper}\n renderNotFound={renderNotFound}\n renderItem={renderItem}\n onValueChange={this.selectItem}\n renderAddButton={this.renderAddButton}\n menuWidth={menuWidth}\n menuAlign={menuAlign}\n renderTotalCount={renderTotalCount}\n totalCount={totalCount}\n size={this.size}\n />\n )}\n {this.renderTokensEnd()}\n {this.isEditingMode ? (\n <TokenView size={this.size}>\n <span className={styles.reservedInput(theme)}>{reservedInputValue}</span>\n </TokenView>\n ) : null}\n </label>\n </div>\n </CommonWrapper>\n );\n }\n\n /**\n * Сбрасывает введенное пользователем значение\n * @public\n */\n public reset() {\n this.dispatch({ type: 'RESET' });\n }\n\n private isEqual = (itemA: T, itemB: T) => {\n const { itemToId } = this.getProps();\n return lodashIsEqual(itemToId(itemA), itemToId(itemB));\n };\n\n private hasValueInItems = (items: T[], value: string | T) => {\n const { valueToString } = this.getProps();\n if (typeof value === 'string') {\n return items.map((item) => valueToString(item)).includes(value);\n }\n\n return items.some((item) => this.isEqual(item, value));\n };\n\n private get showAddItemHint() {\n const items = this.state.autocompleteItems;\n const value = this.getProps().valueToItem(this.state.inputValue);\n if (items && this.hasValueInItems(items, value)) {\n return false;\n }\n\n const selectedItems = this.getProps().selectedItems;\n if (selectedItems && this.hasValueInItems(selectedItems, value)) {\n return false;\n }\n\n if (this.type === TokenInputType.Combined && this.isInputValueChanged) {\n return true;\n }\n }\n\n private get type() {\n return this.props.type ? this.props.type : TokenInputType.WithReference;\n }\n\n private get menuRef(): Menu | null {\n return this.tokensInputMenu && this.tokensInputMenu.getMenuRef();\n }\n\n private get isCursorVisible() {\n return this.isCursorVisibleForState(this.state);\n }\n\n private get isEditingMode() {\n return this.state.editingTokenIndex > -1;\n }\n\n private isCursorVisibleForState(state: TokenInputState<T>) {\n return state.inFocus && (this.isInputValueChanged || state.activeTokens.length === 0);\n }\n\n private inputRef = (node: HTMLTextAreaElement) => (this.input = node);\n private tokensInputMenuRef = (node: TokenInputMenu<T>) => (this.tokensInputMenu = node);\n private textHelperRef = (node: TextWidthHelper) => (this.textHelper = node);\n private wrapperRef = (node: HTMLLabelElement) => (this.wrapper = node);\n\n private dispatch = (action: TokenInputAction, cb?: () => void) => {\n this.setState((prevState) => tokenInputReducer(prevState, action), cb);\n };\n\n private updateInputTextWidth() {\n if (this.textHelper) {\n // в IE текст иногда не помещается в input\n // из-за округления, поэтому округляем явно\n const inputValueWidth = parseFloat(this.textHelper.getTextWidth().toFixed(2));\n const inputValueHeight = parseFloat(this.textHelper.getTextHeight().toFixed(2));\n\n this.dispatch({ type: 'SET_INPUT_VALUE_WIDTH', payload: inputValueWidth }, LayoutEvents.emit);\n this.dispatch({ type: 'SET_INPUT_VALUE_HEIGHT', payload: inputValueHeight }, LayoutEvents.emit);\n }\n }\n\n private handleInputFocus = (event: FocusEvent<HTMLTextAreaElement>) => {\n this.dispatch({ type: 'SET_FOCUS_IN' });\n this.getProps().onFocus(event);\n };\n\n private handleInputBlur = (event: FocusEvent<HTMLTextAreaElement>) => {\n const isBlurToMenu = this.isBlurToMenu(event);\n\n if (!isBlurToMenu) {\n this.handleOutsideBlur();\n }\n\n if (isBlurToMenu || this.state.preventBlur) {\n event.preventDefault();\n // первый focus нужен для предотвращения/уменьшения моргания в других браузерах\n this.input?.focus();\n // в firefox не работает без второго focus\n globalObject.requestAnimationFrame?.(() => this.input?.focus());\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: false });\n } else {\n this.dispatch({ type: 'BLUR' });\n this.getProps().onBlur(event);\n }\n };\n\n private handleOutsideBlur = () => {\n const { inputValue, autocompleteItems } = this.state;\n\n if (inputValue === '') {\n // если стерли содержимое токена в режиме редактирования, то удаляем токен\n if (this.isEditingMode) {\n this.finishTokenEdit();\n }\n return;\n }\n\n // если не изменилось значение токена при редактировании\n if (this.isEditingMode && !this.isTokenValueChanged) {\n this.finishTokenEdit();\n return;\n }\n\n // чекаем автокомплит на совпадение с введенным значением в инпут\n if (autocompleteItems && autocompleteItems.length === 1) {\n const item = autocompleteItems[0];\n\n if (this.getProps().valueToString(item) === inputValue) {\n this.isEditingMode ? this.finishTokenEdit() : this.selectItem(item);\n\n return;\n }\n }\n\n if (this.isInputChanged) {\n this.checkForUnexpectedInput();\n }\n };\n\n private get isInputChanged() {\n if (this.isEditingMode) {\n return this.isTokenValueChanged;\n }\n\n return this.isInputValueChanged;\n }\n\n private get isInputValueChanged() {\n const { inputValue } = this.state;\n\n return inputValue !== '';\n }\n\n private get isTokenValueChanged() {\n const { inputValue, editingTokenIndex } = this.state;\n const { valueToString, selectedItems } = this.getProps();\n\n if (this.isEditingMode) {\n return valueToString(selectedItems[editingTokenIndex]) !== inputValue;\n }\n\n return false;\n }\n\n private isBlurToMenu = (event: FocusEvent<HTMLElement>) => {\n if (this.menuRef && globalObject.document) {\n const menu = getRootNode(this.tokensInputMenu?.getMenuRef());\n const relatedTarget = event.relatedTarget || globalObject.document.activeElement;\n\n if (menu && menu.contains(relatedTarget)) {\n return true;\n }\n }\n return false;\n };\n\n private handleWrapperMouseDown = (event: React.MouseEvent<HTMLElement>) => {\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: true });\n const target = event.target as HTMLElement;\n const isClickOnToken = target && this.wrapper?.contains(target) && target !== this.wrapper && target !== this.input;\n if (!isClickOnToken) {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n }\n };\n\n private handleWrapperMouseUp = () => {\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: false });\n };\n\n private handleCopy = (event: any) => {\n if (!this.state.inFocus || this.state.activeTokens.length === 0 || this.isCursorVisible) {\n return;\n }\n event.preventDefault();\n const { selectedItems, valueToString, delimiters } = this.getProps();\n // упорядочивание токенов по индексу\n const tokens = this.state.activeTokens\n .map((token) => selectedItems.indexOf(token))\n .sort()\n .map((index) => selectedItems[index])\n .map((item) => valueToString(item));\n event.clipboardData.setData('text/plain', tokens.join(delimiters[0]));\n };\n\n private handleInputPaste = (event: React.ClipboardEvent<HTMLElement>) => {\n if (this.type === TokenInputType.WithReference || !event.clipboardData) {\n return;\n }\n const paste = event.clipboardData.getData('text');\n const { delimiters, selectedItems, valueToItem, onValueChange } = this.getProps();\n if (delimiters.some((delimiter) => paste.includes(delimiter))) {\n event.preventDefault();\n event.stopPropagation();\n const tokens = paste.trim().split(new RegExp(`[${delimiters.join('')}]+`));\n const items = tokens\n .filter(Boolean)\n .map((token) => valueToItem(token))\n .filter((item) => item && !this.hasValueInItems(selectedItems, item));\n const newItems = selectedItems.concat(items);\n onValueChange(newItems);\n\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: undefined });\n this.tryGetItems();\n }\n };\n\n private tryGetItems = async (query = '') => {\n if (this.props.getItems && (this.isInputValueChanged || !this.props.hideMenuIfEmptyInputValue)) {\n this.dispatch({ type: 'SET_LOADING', payload: true });\n const autocompleteItems = await this.props.getItems(query);\n this.dispatch({ type: 'SET_LOADING', payload: false });\n\n const { selectedItems, valueToItem, valueToString } = this.getProps();\n const isSelectedItem = (item: T) => this.hasValueInItems(selectedItems, item);\n const isEditingItem = (item: T) => {\n const editingItem = selectedItems[this.state.editingTokenIndex];\n return !!editingItem && this.isEqual(item, editingItem);\n };\n\n const autocompleteItemsUnique = autocompleteItems.filter((item) => !isSelectedItem(item) || isEditingItem(item));\n\n if (this.isEditingMode) {\n const editingItem = selectedItems[this.state.editingTokenIndex];\n if (\n this.isEqual(editingItem, valueToItem(this.state.inputValue)) &&\n !this.hasValueInItems(autocompleteItemsUnique, editingItem)\n ) {\n autocompleteItemsUnique.unshift(editingItem);\n }\n }\n\n if (query === '' || this.isInputValueChanged) {\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: autocompleteItemsUnique }, () => {\n LayoutEvents.emit();\n this.highlightMenuItem();\n });\n }\n const selectItemIndex = autocompleteItemsUnique.findIndex(\n (item) => valueToString(item).toLowerCase() === this.state.inputValue.toLowerCase(),\n );\n setTimeout(() => this.menuRef?.highlightItem(selectItemIndex < 0 ? 0 : selectItemIndex), 0);\n }\n };\n\n private handleKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n this.props.onKeyDown?.(event);\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (this.isCursorVisible) {\n this.handleInputKeyDown(event);\n } else {\n this.handleWrapperKeyDown(event);\n }\n };\n\n private handleInputKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n e.stopPropagation();\n\n if (\n (this.type !== TokenInputType.WithReference &&\n this.getProps().delimiters.some((key) => key === e.key || (key === ',' && isKeyComma(e)))) ||\n (isKeyEnter(e) && this.type === TokenInputType.WithoutReference)\n ) {\n e.preventDefault();\n const newValue = this.state.inputValue;\n if (newValue !== '') {\n if (this.isEditingMode) {\n this.finishTokenEdit();\n } else {\n this.handleAddItem();\n }\n }\n }\n const isRightmostTokenNotDisabled = !this.isTokenDisabled(this.getProps().selectedItems.length - 1);\n const canSetValueToInput = this.showAddItemHint || (this.state.autocompleteItems?.length ?? 0) > 0;\n\n switch (true) {\n case isKeyEnter(e):\n if (canSetValueToInput && this.menuRef) {\n this.menuRef.enter(e);\n }\n // don't allow textarea\n // became multiline\n e.preventDefault();\n break;\n case isKeyArrowVertical(e):\n e.preventDefault();\n if (this.menuRef) {\n if (isKeyArrowUp(e)) {\n this.menuRef.up();\n } else {\n this.menuRef.down();\n }\n }\n break;\n case isKeyEscape(e):\n this.input?.blur();\n break;\n case isKeyBackspace(e):\n if (!this.isEditingMode && isRightmostTokenNotDisabled) {\n this.moveFocusToLastToken();\n }\n break;\n case isKeyArrowLeft(e):\n if (this.input?.selectionStart === 0) {\n const index = this.getAvailableTokenIndex(this.getProps().selectedItems.length);\n const itemNew = this.getProps().selectedItems[index];\n if (itemNew) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [itemNew] });\n }\n }\n break;\n }\n };\n\n private moveFocusToLastToken() {\n const items = this.getProps().selectedItems;\n if (this.state.inputValue === '' && items && items.length > 0) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: items.slice(-1) });\n }\n }\n\n private focusInput = () => {\n globalObject.requestAnimationFrame?.(() => this.input?.focus());\n };\n\n private selectInputText = () => {\n if (this.input) {\n this.input.setSelectionRange(0, this.state.inputValue.length);\n }\n };\n\n private handleWrapperKeyDown = (e: KeyboardEvent<HTMLElement>) => {\n const { selectedItems, onValueChange } = this.getProps();\n switch (true) {\n case isKeyBackspace(e):\n case isKeyDelete(e): {\n const indexOfActiveToken = this.getProps().selectedItems.indexOf(\n this.state.activeTokens[this.state.activeTokens.length - 1],\n );\n if (!this.isEditingMode && !this.isTokenDisabled(indexOfActiveToken)) {\n const itemsNew = selectedItems.filter((item) => !this.hasValueInItems(this.state.activeTokens, item));\n onValueChange(itemsNew);\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' }, () => {\n LayoutEvents.emit();\n this.input?.focus();\n });\n }\n break;\n }\n case isKeyArrowHorizontal(e):\n this.handleWrapperArrows(e);\n break;\n case isKeyEscape(e):\n this.wrapper?.blur();\n break;\n case isKeyEnter(e):\n e.preventDefault();\n if (this.state.activeTokens.length === 1) {\n this.handleTokenEdit(this.state.activeTokens[0]);\n }\n break;\n case isShortcutSelectAll(e):\n e.preventDefault();\n this.dispatch({\n type: 'SET_ACTIVE_TOKENS',\n payload: selectedItems.filter((item) => !this.isTokenDisabled(selectedItems.indexOf(item))),\n });\n break;\n }\n };\n\n private handleWrapperArrows = (e: KeyboardEvent<HTMLElement>) => {\n e.preventDefault();\n const selectedItems = this.getProps().selectedItems;\n const activeTokens = this.state.activeTokens;\n const activeItemIndex = selectedItems.indexOf(activeTokens[0]);\n const newItemIndex = this.getAvailableTokenIndex(activeItemIndex, isKeyArrowLeft(e));\n const isLeftEdge = activeItemIndex === 0 && isKeyArrowLeft(e);\n const isRightEdge = newItemIndex === selectedItems.length && isKeyArrowRight(e);\n if (!e.shiftKey && activeTokens.length === 1) {\n this.handleWrapperArrowsWithoutShift(isLeftEdge, isRightEdge, newItemIndex);\n } else {\n this.handleWrapperArrowsWithShift(isLeftEdge, isRightEdge, newItemIndex);\n }\n };\n\n private handleWrapperArrowsWithoutShift = (isLeftEdge: boolean, isRightEdge: boolean, newItemIndex: number) => {\n if (isRightEdge) {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' }, () => this.input?.focus());\n } else if (!isLeftEdge) {\n this.dispatch({\n type: 'SET_ACTIVE_TOKENS',\n payload: [this.getProps().selectedItems[newItemIndex]],\n });\n }\n };\n\n private handleWrapperArrowsWithShift = (isLeftEdge: boolean, isRightEdge: boolean, newItemIndex: number) => {\n if (!isLeftEdge && !isRightEdge) {\n const itemNew = this.getProps().selectedItems[newItemIndex];\n const itemsNew = [itemNew, ...this.state.activeTokens.filter((item) => !this.isEqual(item, itemNew))];\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: itemsNew });\n }\n };\n\n private handleValueChange = (items: T[]) => {\n this.getProps().onValueChange(items);\n };\n\n private handleAddItem = () => {\n const item = this.getProps().valueToItem(this.state.inputValue);\n if (item) {\n this.selectItem(item);\n }\n };\n\n private selectItem = (item: T) => {\n const { selectedItems, valueToString } = this.getProps();\n if (this.isEditingMode) {\n this.dispatch({ type: 'UPDATE_QUERY', payload: valueToString(item) }, this.finishTokenEdit);\n } else if (!this.hasValueInItems(selectedItems, item)) {\n this.handleValueChange(selectedItems.concat([item]));\n this.dispatch({ type: 'CLEAR_INPUT' });\n this.tryGetItems();\n }\n };\n\n private handleRemoveToken = (item: T) => {\n this.props.onValueChange?.(this.getProps().selectedItems.filter((_) => !this.isEqual(_, item)));\n const filteredActiveTokens = this.state.activeTokens.filter((_) => !this.isEqual(_, item));\n\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: filteredActiveTokens });\n if (filteredActiveTokens.length === 0) {\n this.focusInput();\n }\n\n this.tryGetItems();\n };\n\n private handleTokenClick = (event: React.MouseEvent<HTMLElement>, itemNew: T) => {\n const items = this.state.activeTokens;\n if (event.ctrlKey) {\n const newItems = this.hasValueInItems(this.state.activeTokens, itemNew)\n ? items.filter((item) => !this.isEqual(item, itemNew))\n : [...items, itemNew];\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: newItems });\n } else {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [itemNew] });\n }\n this.focusInput();\n };\n\n private handleTokenEdit = (itemNew: T) => {\n const { selectedItems, valueToString } = this.getProps();\n const editingTokenIndex = selectedItems.findIndex((item) => item === itemNew);\n this.dispatch({ type: 'SET_EDITING_TOKEN_INDEX', payload: editingTokenIndex });\n\n if (this.isInputValueChanged) {\n if (this.state.reservedInputValue === undefined) {\n this.dispatch({ type: 'SET_TEMPORARY_QUERY', payload: this.state.inputValue });\n }\n }\n this.dispatch({ type: 'UPDATE_QUERY', payload: valueToString(itemNew) }, this.selectInputText);\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n\n this.tryGetItems();\n };\n\n private finishTokenEdit = () => {\n const { selectedItems, valueToString } = this.getProps();\n const { editingTokenIndex, inputValue, reservedInputValue, autocompleteItems } = this.state;\n\n const editedItem =\n autocompleteItems?.find((item) => valueToString(item) === inputValue) ?? this.getProps().valueToItem(inputValue);\n\n const newItems = selectedItems.concat([]);\n\n if (!this.hasValueInItems(selectedItems, editedItem)) {\n newItems.splice(editingTokenIndex, 1, ...(this.isInputValueChanged ? [editedItem] : []));\n this.handleValueChange(newItems);\n }\n\n this.dispatch({ type: 'REMOVE_EDITING_TOKEN_INDEX' });\n\n if (reservedInputValue) {\n this.dispatch({ type: 'UPDATE_QUERY', payload: reservedInputValue });\n this.dispatch({ type: 'REMOVE_TEMPORARY_QUERY' });\n } else {\n this.dispatch({ type: 'CLEAR_INPUT' });\n }\n\n if (newItems.length === selectedItems.length) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [newItems[editingTokenIndex]] });\n }\n };\n\n private checkForUnexpectedInput = () => {\n const { inputValue } = this.state;\n const { onUnexpectedInput } = this.props;\n\n // чекаем не возвращает ли что-нибудь обработчик\n const returnedValue = onUnexpectedInput?.(inputValue);\n\n if (returnedValue === undefined) {\n if (\n this.featureFlags.tokenInputCreateTokenOnBlurInWithoutReferenceMode &&\n this.type === TokenInputType.WithoutReference\n ) {\n this.handleAddItem();\n }\n\n return;\n }\n\n if (returnedValue === null) {\n this.dispatch({ type: 'CLEAR_INPUT' }, () => {\n if (this.isEditingMode) {\n this.finishTokenEdit();\n }\n });\n\n return;\n }\n\n if (returnedValue) {\n this.selectItem(returnedValue);\n }\n };\n\n private handleChangeInputValue = (event: ChangeEvent<HTMLTextAreaElement>) => {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n let query = event.target.value.trimLeft();\n\n if (query.endsWith(' ')) {\n query = query.trimRight() + ' ';\n }\n if (this.isInputValueChanged && query === '') {\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: undefined });\n }\n this.dispatch({ type: 'UPDATE_QUERY', payload: query }, () => {\n this.tryGetItems(query);\n });\n if (this.props.onInputValueChange) {\n this.props.onInputValueChange(query);\n }\n };\n\n private highlightMenuItem = () => {\n if (\n this.menuRef &&\n this.state.autocompleteItems &&\n this.state.autocompleteItems.length > 0 &&\n this.type !== TokenInputType.Combined\n ) {\n this.menuRef.highlightItem(0);\n }\n };\n\n private renderTokensStart = () => {\n const { editingTokenIndex } = this.state;\n const selectedItems = this.getProps().selectedItems;\n const delimiter = editingTokenIndex >= 0 ? editingTokenIndex : selectedItems.length;\n return selectedItems.slice(0, delimiter).map(this.renderToken);\n };\n\n private renderTokensEnd = () => {\n if (this.state.editingTokenIndex >= 0) {\n return this.getProps()\n .selectedItems.slice(this.state.editingTokenIndex + 1)\n .map(this.renderToken);\n }\n };\n\n private renderToken = (item: T) => {\n const { renderToken = defaultRenderToken, disabled } = this.props;\n\n const isActive = this.state.activeTokens.includes(item);\n\n // TODO useCallback\n const handleIconClick: React.MouseEventHandler<HTMLElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode) {\n this.handleRemoveToken(item);\n }\n };\n\n // TODO useCallback\n const handleTokenClick: React.MouseEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode) {\n this.handleTokenClick(event, item);\n }\n };\n\n const handleTokenDoubleClick: React.MouseEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode && !disabled) {\n this.handleTokenEdit(item);\n }\n };\n\n const renderedToken = renderToken(item as T & AnyObject, {\n size: this.size,\n isActive,\n onClick: handleTokenClick,\n onDoubleClick: handleTokenDoubleClick,\n onRemove: handleIconClick,\n disabled,\n });\n\n this.memoizedTokens.set(this.props.selectedItems?.indexOf(item), renderedToken);\n return renderedToken;\n };\n\n private renderAddButton = (value = this.state.inputValue): React.ReactNode | undefined => {\n if (!this.showAddItemHint) {\n return;\n }\n\n if (this.props.renderAddButton) {\n return this.props.renderAddButton(value, this.handleAddItem);\n }\n\n const { addButtonComment, addButtonTitle } = this.locale;\n\n return (\n <MenuItem onClick={this.handleAddItem} comment={addButtonComment} key=\"renderAddButton\">\n {addButtonTitle} {value}\n </MenuItem>\n );\n };\n\n private isTokenDisabled = (itemIndex: number) => {\n let renderedToken;\n if (this.memoizedTokens.has(itemIndex)) {\n renderedToken = this.memoizedTokens.get(itemIndex);\n } else if (itemIndex < 0 || itemIndex > this.getProps().selectedItems.length - 1) {\n return false;\n } else {\n renderedToken = this.renderToken(this.getProps().selectedItems[itemIndex]) as React.ReactElement<\n TokenInputProps<unknown>\n >;\n }\n return renderedToken.props.disabled;\n };\n\n private getAvailableTokenIndex = (startIndex: number, isDirectionLeft = true) => {\n const { selectedItems } = this.getProps();\n const step = isDirectionLeft ? -1 : +1;\n let availableIndex = startIndex + step;\n\n while (this.isTokenDisabled(availableIndex)) {\n availableIndex += step;\n if (availableIndex === selectedItems.length) {\n return availableIndex;\n } else if (availableIndex === -1) {\n return startIndex;\n }\n }\n\n return availableIndex;\n };\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skbkontur/react-ui",
3
- "version": "5.4.5",
3
+ "version": "5.4.6",
4
4
  "description": "UI Components",
5
5
  "main": "cjs/index.js",
6
6
  "module": "index.js",