@skbkontur/react-ui 4.13.1 → 4.13.2

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.
Files changed (58) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/cjs/components/Checkbox/Checkbox.md +1 -1
  3. package/cjs/components/DropdownMenu/DropdownMenu.d.ts +2 -2
  4. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  5. package/cjs/components/DropdownMenu/DropdownMenu.md +1 -1
  6. package/cjs/components/MenuHeader/MenuHeader.d.ts +1 -1
  7. package/cjs/components/MenuHeader/MenuHeader.js +1 -1
  8. package/cjs/components/MenuHeader/MenuHeader.js.map +1 -1
  9. package/cjs/components/MenuItem/MenuItem.d.ts +1 -1
  10. package/cjs/components/MenuItem/MenuItem.js +1 -1
  11. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  12. package/cjs/components/MenuSeparator/MenuSeparator.d.ts +1 -1
  13. package/cjs/components/MenuSeparator/MenuSeparator.js +1 -1
  14. package/cjs/components/MenuSeparator/MenuSeparator.js.map +1 -1
  15. package/cjs/components/SidePage/SidePage.js +1 -1
  16. package/cjs/components/SidePage/SidePage.js.map +1 -1
  17. package/cjs/components/Textarea/Textarea.d.ts +1 -0
  18. package/cjs/components/Textarea/Textarea.js +2 -1
  19. package/cjs/components/Textarea/Textarea.js.map +1 -1
  20. package/cjs/components/Textarea/TextareaCounter.js +5 -1
  21. package/cjs/components/Textarea/TextareaCounter.js.map +1 -1
  22. package/cjs/components/TokenInput/TokenInput.js +4 -6
  23. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  24. package/cjs/components/Tooltip/Tooltip.d.ts +1 -0
  25. package/cjs/components/Tooltip/Tooltip.js +7 -2
  26. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  27. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +2 -2
  28. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  29. package/cjs/components/TooltipMenu/TooltipMenu.md +1 -1
  30. package/components/Checkbox/Checkbox.md +1 -1
  31. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  32. package/components/DropdownMenu/DropdownMenu.d.ts +2 -2
  33. package/components/DropdownMenu/DropdownMenu.md +1 -1
  34. package/components/MenuHeader/MenuHeader/MenuHeader.js +1 -1
  35. package/components/MenuHeader/MenuHeader/MenuHeader.js.map +1 -1
  36. package/components/MenuHeader/MenuHeader.d.ts +1 -1
  37. package/components/MenuItem/MenuItem/MenuItem.js +1 -1
  38. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  39. package/components/MenuItem/MenuItem.d.ts +1 -1
  40. package/components/MenuSeparator/MenuSeparator/MenuSeparator.js +1 -1
  41. package/components/MenuSeparator/MenuSeparator/MenuSeparator.js.map +1 -1
  42. package/components/MenuSeparator/MenuSeparator.d.ts +1 -1
  43. package/components/SidePage/SidePage/SidePage.js +1 -1
  44. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  45. package/components/Textarea/Textarea/Textarea.js +2 -1
  46. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  47. package/components/Textarea/Textarea.d.ts +1 -0
  48. package/components/Textarea/TextareaCounter/TextareaCounter.js +2 -1
  49. package/components/Textarea/TextareaCounter/TextareaCounter.js.map +1 -1
  50. package/components/TokenInput/TokenInput/TokenInput.js +3 -50
  51. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  52. package/components/Tooltip/Tooltip/Tooltip.js +4 -2
  53. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  54. package/components/Tooltip/Tooltip.d.ts +1 -0
  55. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  56. package/components/TooltipMenu/TooltipMenu.d.ts +2 -2
  57. package/components/TooltipMenu/TooltipMenu.md +1 -1
  58. package/package.json +2 -2
@@ -45,7 +45,11 @@ function (_ref, ref) {var _cx;var length = _ref.length,value = _ref.value,help =
45
45
  help() : /*#__PURE__*/
46
46
 
47
47
  _react.default.createElement(_Tooltip.Tooltip, { pos: 'right bottom', trigger: 'click', render: renderTooltipContent, onCloseClick: onCloseHelp }, /*#__PURE__*/
48
- _react.default.createElement(_px.HelpDotIcon, { onMouseDown: handleHelpMouseDown, color: theme.textareaCounterHelpIconColor }));
48
+ _react.default.createElement(_px.HelpDotIcon, {
49
+ onMouseDown: handleHelpMouseDown,
50
+ color: theme.textareaCounterHelpIconColor,
51
+ "data-tid": _Textarea.TextareaDataTids.helpIcon }));
52
+
49
53
 
50
54
 
51
55
 
@@ -1 +1 @@
1
- {"version":3,"sources":["TextareaCounter.tsx"],"names":["handleHelpMouseDown","e","preventDefault","TextareaCounter","ref","length","value","help","onCloseHelp","textarea","theme","ThemeContext","clientWidth","width","setWidth","clientHeight","height","setHeight","reflow","renderTooltipContent","textareaValue","toString","counterValue","counterHelp","textareaCounterHelpIconColor","TextareaDataTids","counter","styles","counterContainer","counterError","propTypes","number","isRequired","oneOfType","string","node","func","HTMLElement"],"mappings":"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","sourcesContent":["import React, { SyntheticEvent, useContext, useCallback, useImperativeHandle, useState } from 'react';\nimport propTypes from 'prop-types';\n\nimport { safePropTypesInstanceOf } from '../../lib/SSRSafe';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { HelpDotIcon } from '../../internal/icons/16px';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { isFunction } from '../../lib/utils';\nimport { Tooltip } from '../Tooltip';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { TextareaDataTids, TextareaProps } from './Textarea';\nimport { styles } from './Textarea.styles';\n\nexport interface TextareaCounterProps {\n value: TextareaProps['value'];\n length: number;\n help: TextareaProps['counterHelp'];\n onCloseHelp: () => void;\n textarea: HTMLTextAreaElement;\n}\n\nexport interface TextareaCounterRef {\n reflow: () => void;\n}\n\nconst handleHelpMouseDown = (e: SyntheticEvent) => e.preventDefault();\n\nexport const TextareaCounter = forwardRefAndName<TextareaCounterRef, TextareaCounterProps>(\n 'TextareaCounter',\n ({ length, value, help, onCloseHelp, textarea }, ref) => {\n const theme = useContext(ThemeContext);\n const [width, setWidth] = useState(textarea.clientWidth);\n const [height, setHeight] = useState(textarea.clientHeight);\n const reflow = useCallback(() => {\n const { clientWidth, clientHeight } = textarea;\n setWidth(clientWidth);\n setHeight(clientHeight);\n }, [textarea]);\n useImperativeHandle(ref, () => ({ reflow }), [reflow]);\n const renderTooltipContent = useCallback(() => help, [help]);\n const textareaValue = value ? value.toString().length : 0;\n const counterValue = length - textareaValue;\n const counterHelp = isFunction(help) ? (\n help()\n ) : (\n <Tooltip pos={'right bottom'} trigger={'click'} render={renderTooltipContent} onCloseClick={onCloseHelp}>\n <HelpDotIcon onMouseDown={handleHelpMouseDown} color={theme.textareaCounterHelpIconColor} />\n </Tooltip>\n );\n\n return (\n <div data-tid={TextareaDataTids.counter} className={styles.counterContainer(theme)} style={{ width, height }}>\n <span\n className={cx(styles.counter(theme), {\n [styles.counterError(theme)]: counterValue < 0,\n })}\n >\n {counterValue}\n {help && <span className={styles.counterHelp()}>{counterHelp}</span>}\n </span>\n </div>\n );\n },\n);\n\nTextareaCounter.propTypes = {\n length: propTypes.number.isRequired,\n value: propTypes.oneOfType([propTypes.string, propTypes.number]),\n help: propTypes.oneOfType([propTypes.node, propTypes.func]),\n onCloseHelp: propTypes.func.isRequired,\n textarea: safePropTypesInstanceOf(() => HTMLElement).isRequired,\n};\n"]}
1
+ {"version":3,"sources":["TextareaCounter.tsx"],"names":["handleHelpMouseDown","e","preventDefault","TextareaCounter","ref","length","value","help","onCloseHelp","textarea","theme","ThemeContext","clientWidth","width","setWidth","clientHeight","height","setHeight","reflow","renderTooltipContent","textareaValue","toString","counterValue","counterHelp","textareaCounterHelpIconColor","TextareaDataTids","helpIcon","counter","styles","counterContainer","counterError","propTypes","number","isRequired","oneOfType","string","node","func","HTMLElement"],"mappings":"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","sourcesContent":["import React, { SyntheticEvent, useContext, useCallback, useImperativeHandle, useState } from 'react';\nimport propTypes from 'prop-types';\n\nimport { safePropTypesInstanceOf } from '../../lib/SSRSafe';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { HelpDotIcon } from '../../internal/icons/16px';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { isFunction } from '../../lib/utils';\nimport { Tooltip } from '../Tooltip';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { TextareaDataTids, TextareaProps } from './Textarea';\nimport { styles } from './Textarea.styles';\n\nexport interface TextareaCounterProps {\n value: TextareaProps['value'];\n length: number;\n help: TextareaProps['counterHelp'];\n onCloseHelp: () => void;\n textarea: HTMLTextAreaElement;\n}\n\nexport interface TextareaCounterRef {\n reflow: () => void;\n}\n\nconst handleHelpMouseDown = (e: SyntheticEvent) => e.preventDefault();\n\nexport const TextareaCounter = forwardRefAndName<TextareaCounterRef, TextareaCounterProps>(\n 'TextareaCounter',\n ({ length, value, help, onCloseHelp, textarea }, ref) => {\n const theme = useContext(ThemeContext);\n const [width, setWidth] = useState(textarea.clientWidth);\n const [height, setHeight] = useState(textarea.clientHeight);\n const reflow = useCallback(() => {\n const { clientWidth, clientHeight } = textarea;\n setWidth(clientWidth);\n setHeight(clientHeight);\n }, [textarea]);\n useImperativeHandle(ref, () => ({ reflow }), [reflow]);\n const renderTooltipContent = useCallback(() => help, [help]);\n const textareaValue = value ? value.toString().length : 0;\n const counterValue = length - textareaValue;\n const counterHelp = isFunction(help) ? (\n help()\n ) : (\n <Tooltip pos={'right bottom'} trigger={'click'} render={renderTooltipContent} onCloseClick={onCloseHelp}>\n <HelpDotIcon\n onMouseDown={handleHelpMouseDown}\n color={theme.textareaCounterHelpIconColor}\n data-tid={TextareaDataTids.helpIcon}\n />\n </Tooltip>\n );\n\n return (\n <div data-tid={TextareaDataTids.counter} className={styles.counterContainer(theme)} style={{ width, height }}>\n <span\n className={cx(styles.counter(theme), {\n [styles.counterError(theme)]: counterValue < 0,\n })}\n >\n {counterValue}\n {help && <span className={styles.counterHelp()}>{counterHelp}</span>}\n </span>\n </div>\n );\n },\n);\n\nTextareaCounter.propTypes = {\n length: propTypes.number.isRequired,\n value: propTypes.oneOfType([propTypes.string, propTypes.number]),\n help: propTypes.oneOfType([propTypes.node, propTypes.func]),\n onCloseHelp: propTypes.func.isRequired,\n textarea: safePropTypesInstanceOf(() => HTMLElement).isRequired,\n};\n"]}
@@ -40,7 +40,7 @@ var _locale = require("./locale");
40
40
  var _TokenInput = require("./TokenInput.styles");
41
41
  var _TokenInputReducer = require("./TokenInputReducer");
42
42
  var _TokenInputMenu = require("./TokenInputMenu");
43
- var _TextWidthHelper = require("./TextWidthHelper");var _dec, _class, _class2, _temp;function _getRequireWildcardCache(nodeInterop) {if (typeof WeakMap !== "function") return null;var cacheBabelInterop = new WeakMap();var cacheNodeInterop = new WeakMap();return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {return nodeInterop ? cacheNodeInterop : cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj, nodeInterop) {if (!nodeInterop && obj && obj.__esModule) {return obj;}if (obj === null || typeof obj !== "object" && typeof obj !== "function") {return { default: obj };}var cache = _getRequireWildcardCache(nodeInterop);if (cache && cache.has(obj)) {return cache.get(obj);}var newObj = {};var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var key in obj) {if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;if (desc && (desc.get || desc.set)) {Object.defineProperty(newObj, key, desc);} else {newObj[key] = obj[key];}}}newObj.default = obj;if (cache) {cache.set(obj, newObj);}return newObj;}function _createForOfIteratorHelperLoose(o, allowArrayLike) {var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];if (it) return (it = it.call(o)).next.bind(it);if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {if (it) o = it;var i = 0;return function () {if (i >= o.length) return { done: true };return { done: false, value: o[i++] };};}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _unsupportedIterableToArray(o, minLen) {if (!o) return;if (typeof o === "string") return _arrayLikeToArray(o, minLen);var n = Object.prototype.toString.call(o).slice(8, -1);if (n === "Object" && o.constructor) n = o.constructor.name;if (n === "Map" || n === "Set") return Array.from(o);if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);}function _arrayLikeToArray(arr, len) {if (len == null || len > arr.length) len = arr.length;for (var i = 0, arr2 = new Array(len); i < len; i++) {arr2[i] = arr[i];}return arr2;}var
43
+ var _TextWidthHelper = require("./TextWidthHelper");var _dec, _class, _class2, _temp;function _getRequireWildcardCache(nodeInterop) {if (typeof WeakMap !== "function") return null;var cacheBabelInterop = new WeakMap();var cacheNodeInterop = new WeakMap();return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {return nodeInterop ? cacheNodeInterop : cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj, nodeInterop) {if (!nodeInterop && obj && obj.__esModule) {return obj;}if (obj === null || typeof obj !== "object" && typeof obj !== "function") {return { default: obj };}var cache = _getRequireWildcardCache(nodeInterop);if (cache && cache.has(obj)) {return cache.get(obj);}var newObj = {};var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var key in obj) {if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;if (desc && (desc.get || desc.set)) {Object.defineProperty(newObj, key, desc);} else {newObj[key] = obj[key];}}}newObj.default = obj;if (cache) {cache.set(obj, newObj);}return newObj;}var
44
44
 
45
45
  TokenInputType;exports.TokenInputType = TokenInputType;(function (TokenInputType) {TokenInputType[TokenInputType["WithReference"] = 0] = "WithReference";TokenInputType[TokenInputType["WithoutReference"] = 1] = "WithoutReference";TokenInputType[TokenInputType["Combined"] = 2] = "Combined";})(TokenInputType || (exports.TokenInputType = TokenInputType = {}));
46
46
 
@@ -642,13 +642,11 @@ TokenInput = (_dec = (0, _decorators.locale)('TokenInput', _locale.TokenInputLoc
642
642
  if (delimiters.some(function (delimiter) {return paste.includes(delimiter);})) {
643
643
  event.preventDefault();
644
644
  event.stopPropagation();
645
- for (var _iterator = _createForOfIteratorHelperLoose(delimiters), _step; !(_step = _iterator()).done;) {var delimiter = _step.value;
646
- paste = paste.split(delimiter).join(delimiters[0]);
647
- }
648
- var tokens = paste.split(delimiters[0]);
645
+ var tokens = paste.trim().split(new RegExp("[" + delimiters.join('') + "]+"));
649
646
  var _items = tokens.
647
+ filter(Boolean).
650
648
  map(function (token) {return valueToItem(token);}).
651
- filter(function (item) {return !_this.hasValueInItems(selectedItems, item);});
649
+ filter(function (item) {return item && !_this.hasValueInItems(selectedItems, item);});
652
650
  var newItems = selectedItems.concat(_items);
653
651
  onValueChange(newItems);
654
652
 
@@ -1 +1 @@
1
- {"version":3,"sources":["TokenInput.tsx"],"names":["TokenInputType","DefaultState","inputValue","reservedInputValue","undefined","autocompleteItems","activeTokens","editingTokenIndex","inFocus","loading","preventBlur","inputValueWidth","inputValueHeight","TokenInputDataTids","root","tokenInputMenu","defaultToKey","item","toString","identity","defaultRenderToken","isActive","onClick","onDoubleClick","onRemove","disabled","TokenInput","TokenInputLocaleHelper","rootNode","getProps","defaultProps","state","input","tokensInputMenu","textHelper","wrapper","memoizedTokens","Map","hasValueInItems","items","value","includes","some","inputRef","node","tokensInputMenuRef","textHelperRef","wrapperRef","dispatch","action","cb","setState","prevState","handleInputFocus","event","type","onFocus","handleInputBlur","isBlurToMenu","handleOutsideBlur","preventDefault","focus","requestAnimationFrame","payload","onBlur","isEditingMode","finishTokenEdit","isTokenValueChanged","length","valueToString","selectItem","isInputChanged","checkForUnexpectedInput","menuRef","menu","getMenuRef","relatedTarget","document","activeElement","contains","handleWrapperMouseDown","target","isClickOnToken","handleWrapperMouseUp","handleCopy","isCursorVisible","selectedItems","delimiters","tokens","map","token","indexOf","sort","index","clipboardData","setData","join","handleInputPaste","WithReference","paste","getData","valueToItem","onValueChange","delimiter","stopPropagation","split","filter","newItems","concat","tryGetItems","query","props","getItems","hideMenuIfEmptyInputValue","isSelectedItem","isEditingItem","editingItem","autocompleteItemsUnique","unshift","LayoutEvents","emit","highlightMenuItem","selectItemIndex","findIndex","toLowerCase","highlightItem","handleKeyDown","handleInputKeyDown","handleWrapperKeyDown","e","key","WithoutReference","newValue","handleAddItem","isRightmostTokenNotDisabled","isTokenDisabled","enter","up","down","blur","moveFocusToLastToken","selectionStart","getAvailableTokenIndex","itemNew","focusInput","selectInputText","setSelectionRange","indexOfActiveToken","itemsNew","handleWrapperArrows","handleTokenEdit","activeItemIndex","newItemIndex","isLeftEdge","isRightEdge","shiftKey","handleWrapperArrowsWithoutShift","handleWrapperArrowsWithShift","handleValueChange","handleRemoveToken","_","filteredActiveTokens","handleTokenClick","ctrlKey","editedItem","splice","onUnexpectedInput","returnedValue","handleChangeInputValue","trimLeft","endsWith","trimRight","onInputValueChange","Combined","renderTokensStart","slice","renderToken","renderTokensEnd","handleIconClick","handleTokenDoubleClick","renderedToken","set","renderAddButton","showAddItemHint","locale","addButtonComment","addButtonTitle","itemIndex","has","get","startIndex","isDirectionLeft","step","availableIndex","componentDidMount","updateInputTextWidth","addEventListener","autoFocus","componentDidUpdate","prevProps","clear","isCursorVisibleForState","componentWillUnmount","removeEventListener","render","theme","renderMain","Error","maxMenuHeight","error","warning","placeholder","renderNotFound","inputMode","renderTotalCount","totalCount","ariaDescribedby","width","onMouseEnter","onMouseLeave","menuWidth","menuAlign","renderItem","showMenu","lineHeight","parseInt","tokenInputLineHeight","inputInlineStyles","height","Math","max","flex","caretColor","labelClassName","styles","label","labelDisabled","labelFocused","inputClassName","inputDisabled","inputEditing","setRootNode","helperText","helperTextEditing","reservedInput","reset","parseFloat","getTextWidth","toFixed","getTextHeight","isInputValueChanged","React","PureComponent","__KONTUR_REACT_UI__","renderValue","toKey","emptyHandler"],"mappings":"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","sourcesContent":["import React, {\n AriaAttributes,\n ChangeEvent,\n FocusEvent,\n FocusEventHandler,\n KeyboardEvent,\n MouseEventHandler,\n ReactNode,\n} from 'react';\nimport isEqual from 'lodash.isequal';\n\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 { Menu } from '../../internal/Menu';\nimport { Token, TokenProps } from '../Token';\nimport { MenuItemState } from '../MenuItem';\nimport { AnyObject, emptyHandler } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { locale } from '../../lib/locale/decorators';\nimport { MenuItem } from '../MenuItem/MenuItem';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { TokenInputLocale, TokenInputLocaleHelper } from './locale';\nimport { styles } from './TokenInput.styles';\nimport { TokenInputAction, tokenInputReducer } from './TokenInputReducer';\nimport { TokenInputMenu } from './TokenInputMenu';\nimport { TextWidthHelper } from './TextWidthHelper';\n\nexport enum TokenInputType {\n WithReference,\n WithoutReference,\n Combined,\n}\n\nexport type TokenInputMenuAlign = 'left' | 'cursor';\n\nexport interface TokenInputProps<T> extends CommonProps {\n selectedItems?: T[];\n onValueChange?: (items: T[]) => void;\n onMouseEnter?: MouseEventHandler<HTMLDivElement>;\n onMouseLeave?: MouseEventHandler<HTMLDivElement>;\n onFocus?: FocusEventHandler<HTMLTextAreaElement>;\n onBlur?: FocusEventHandler<HTMLTextAreaElement>;\n autoFocus?: boolean;\n type?: TokenInputType;\n /**\n * Ширина выпадающего меню может быть указана как 'auto'\n * а также в пикселях, процентах (от ширины инпута)\n * или других конкретных единицах\n *\n * Если menuAlign = 'cursor', то ширина выпадающего меню всегда будет равна 'auto'\n * (по ширине текста)\n */\n menuWidth?: React.CSSProperties['width'];\n menuAlign?: TokenInputMenuAlign;\n\n /**\n * Функция поиска элементов, должна возвращать Promise с массивом элементов.\n * По умолчанию ожидаются строки.\n *\n * Элементы могут быть любого типа. В этом случае необходимо определить\n * свойства `renderItem`, `valueToString`\n */\n getItems?: (query: string) => Promise<T[]>;\n hideMenuIfEmptyInputValue?: boolean;\n renderItem?: (item: T, state: MenuItemState) => React.ReactNode | null;\n renderValue?: (item: T) => React.ReactNode;\n /**\n * Функция должна возвращать строковое представление токена\n * @default item => item\n */\n valueToString?: (item: T) => string;\n /**\n * Функция отображающая сообщение об общем количестве элементов.\n * `found` учитывает только компонент `MenuItem`. Им \"оборачиваются\" элементы, возвращаемые `getItems()`.\n */\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n /**\n * Общее количество элементов.\n * Необходим для работы `renderTotalCount`\n */\n totalCount?: number;\n renderNotFound?: () => React.ReactNode;\n valueToItem?: (item: string) => T;\n toKey?: (item: T) => string | number | undefined;\n placeholder?: string;\n delimiters?: string[];\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n disabled?: boolean;\n width?: string | number;\n maxMenuHeight?: number | string;\n renderToken?: (item: T, props: Partial<TokenProps>) => ReactNode;\n /**\n * Вызывается при изменении текста в поле ввода,\n */\n onInputValueChange?: (value: string) => void;\n /**\n * Функция отрисовки кнопки добавления в выпадающем списке\n */\n renderAddButton?: (query?: string, onAddItem?: () => void) => ReactNode;\n /**\n * Атрибут для указания id элемента(-ов), описывающих его\n */\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n\n /**\n * Функция для обработки ситуации, когда была введена\n * строка в инпут и был потерян фокус с компонента\n *\n * Функция срабатывает с аргументом инпута строки\n *\n * Если при потере фокуса в выпадающем списке будет только один\n * элемент и результат `valueToString` с этим элементом будет\n * совпадать со значение в текстовом поле, то\n * сработает `onValueChange` со значением данного элемента\n *\n * Сама функция также может вернуть значение,\n * неравное `undefined`, с которым будет вызван `onValueChange`.\n * Если возвращаемое значение будет равно `null`,\n * то сработает очистка текущего значения инпута,\n * а в режиме редактирования токен будет удален\n */\n onUnexpectedInput?: (value: string) => void | null | undefined | T;\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} 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 | '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();\nconst identity = <T extends unknown>(item: T): T => item;\nconst defaultRenderToken = <T extends AnyObject>(\n item: T,\n { isActive, onClick, onDoubleClick, onRemove, disabled }: 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 >\n {item}\n </Token>\n);\n\n@rootNode\n@locale('TokenInput', TokenInputLocaleHelper)\nexport class TokenInput<T = string> extends React.PureComponent<TokenInputProps<T>, TokenInputState<T>> {\n public static __KONTUR_REACT_UI__ = 'TokenInput';\n\n public static defaultProps: DefaultProps<any> = {\n selectedItems: [],\n delimiters: [',', ' '],\n renderItem: identity,\n renderValue: identity,\n valueToString: identity,\n valueToItem: (item: string) => item,\n toKey: 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 getProps = createPropsGetter(TokenInput.defaultProps);\n\n public state: TokenInputState<T> = DefaultState;\n\n private readonly locale!: TokenInputLocale;\n private theme!: Theme;\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 private setRootNode!: TSetRootNode;\n private memoizedTokens = new Map();\n\n public componentDidMount() {\n this.updateInputTextWidth();\n 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 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 public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\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 placeholder,\n renderNotFound,\n hideMenuIfEmptyInputValue,\n inputMode,\n renderTotalCount,\n totalCount,\n 'aria-describedby': ariaDescribedby,\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 inputValue,\n reservedInputValue,\n autocompleteItems,\n loading,\n inputValueHeight,\n } = this.state;\n\n const showMenu =\n this.type !== TokenInputType.WithoutReference &&\n this.isCursorVisible &&\n activeTokens.length === 0 &&\n (inputValue !== '' || !hideMenuIfEmptyInputValue);\n\n const theme = this.theme;\n\n const lineHeight = parseInt(theme.tokenInputLineHeight, 10) || 0;\n\n const inputInlineStyles: React.CSSProperties = {\n // вычисляем ширину чтобы input автоматически перенёсся на следующую строку при необходимости\n width: inputValueWidth,\n height: Math.max(lineHeight, inputValueHeight),\n // input растягивается на всю ширину чтобы placeholder не обрезался\n flex: selectedItems && selectedItems.length === 0 ? 1 : undefined,\n // в ie не работает, но альтернативный способ --- дать tabindex для label --- предположительно ещё сложнее\n caretColor: this.isCursorVisible ? undefined : 'transparent',\n };\n\n const labelClassName = cx(styles.label(theme), {\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), {\n [styles.inputDisabled(theme)]: !!disabled,\n [styles.inputEditing(theme)]: this.isEditingMode,\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 >\n <TextWidthHelper\n ref={this.textHelperRef}\n classHelp={cx(styles.helperText(theme), {\n [styles.helperTextEditing(theme)]: this.isEditingMode,\n })}\n text={inputValue}\n theme={this.theme}\n />\n {this.renderTokensStart()}\n <textarea\n ref={this.inputRef}\n value={inputValue}\n style={inputInlineStyles}\n spellCheck={false}\n disabled={disabled}\n className={inputClassName}\n placeholder={selectedItems.length > 0 ? undefined : 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-describedby={ariaDescribedby}\n />\n {showMenu && (\n <TokenInputMenu\n ref={this.tokensInputMenuRef}\n items={autocompleteItems}\n loading={loading}\n opened={showMenu}\n maxMenuHeight={maxMenuHeight}\n anchorElement={menuAlign === 'cursor' ? this.input : 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 />\n )}\n {this.renderTokensEnd()}\n {this.isEditingMode ? <span className={styles.reservedInput(theme)}>{reservedInputValue}</span> : 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 hasValueInItems = (items: T[], value: T) => {\n if (typeof value === 'string') {\n return items.includes(value);\n }\n // todo: как то не очень\n return items.some((item) => 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\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.state.inputValue !== '') {\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 && (state.inputValue !== '' || 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 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) {\n const menu = getRootNode(this.tokensInputMenu?.getMenuRef());\n const relatedTarget = (event.relatedTarget || document.activeElement) as HTMLElement;\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 let 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 for (const delimiter of delimiters) {\n paste = paste.split(delimiter).join(delimiters[0]);\n }\n const tokens = paste.split(delimiters[0]);\n const items = tokens\n .map((token) => valueToItem(token))\n .filter((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.state.inputValue !== '' || !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 && 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 isEqual(editingItem, valueToItem(this.state.inputValue)) &&\n !this.hasValueInItems(autocompleteItemsUnique, editingItem)\n ) {\n autocompleteItemsUnique.unshift(editingItem);\n }\n }\n\n if (query === '' || this.state.inputValue !== '') {\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 if (this.menuRef) {\n this.menuRef.highlightItem(selectItemIndex < 0 ? 0 : selectItemIndex);\n }\n }\n };\n\n private handleKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\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 switch (true) {\n case isKeyEnter(e):\n if (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 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) => !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((_) => !isEqual(_, item)));\n const filteredActiveTokens = this.state.activeTokens.filter((_) => !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) => !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.state.inputValue !== '') {\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 = this.getProps().selectedItems;\n const { editingTokenIndex, inputValue, reservedInputValue } = this.state;\n const editedItem = this.getProps().valueToItem(inputValue);\n const newItems = selectedItems.concat([]);\n\n if (!this.hasValueInItems(selectedItems, editedItem)) {\n newItems.splice(editingTokenIndex, 1, ...(inputValue !== '' ? [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 if (onUnexpectedInput) {\n // чекаем не возвращает ли что-нибудь обработчик\n const returnedValue = onUnexpectedInput(inputValue);\n\n if (returnedValue === undefined) {\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\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.state.inputValue !== '' && 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 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"]}
1
+ {"version":3,"sources":["TokenInput.tsx"],"names":["TokenInputType","DefaultState","inputValue","reservedInputValue","undefined","autocompleteItems","activeTokens","editingTokenIndex","inFocus","loading","preventBlur","inputValueWidth","inputValueHeight","TokenInputDataTids","root","tokenInputMenu","defaultToKey","item","toString","identity","defaultRenderToken","isActive","onClick","onDoubleClick","onRemove","disabled","TokenInput","TokenInputLocaleHelper","rootNode","getProps","defaultProps","state","input","tokensInputMenu","textHelper","wrapper","memoizedTokens","Map","hasValueInItems","items","value","includes","some","inputRef","node","tokensInputMenuRef","textHelperRef","wrapperRef","dispatch","action","cb","setState","prevState","handleInputFocus","event","type","onFocus","handleInputBlur","isBlurToMenu","handleOutsideBlur","preventDefault","focus","requestAnimationFrame","payload","onBlur","isEditingMode","finishTokenEdit","isTokenValueChanged","length","valueToString","selectItem","isInputChanged","checkForUnexpectedInput","menuRef","menu","getMenuRef","relatedTarget","document","activeElement","contains","handleWrapperMouseDown","target","isClickOnToken","handleWrapperMouseUp","handleCopy","isCursorVisible","selectedItems","delimiters","tokens","map","token","indexOf","sort","index","clipboardData","setData","join","handleInputPaste","WithReference","paste","getData","valueToItem","onValueChange","delimiter","stopPropagation","trim","split","RegExp","filter","Boolean","newItems","concat","tryGetItems","query","props","getItems","hideMenuIfEmptyInputValue","isSelectedItem","isEditingItem","editingItem","autocompleteItemsUnique","unshift","LayoutEvents","emit","highlightMenuItem","selectItemIndex","findIndex","toLowerCase","highlightItem","handleKeyDown","handleInputKeyDown","handleWrapperKeyDown","e","key","WithoutReference","newValue","handleAddItem","isRightmostTokenNotDisabled","isTokenDisabled","enter","up","down","blur","moveFocusToLastToken","selectionStart","getAvailableTokenIndex","itemNew","focusInput","selectInputText","setSelectionRange","indexOfActiveToken","itemsNew","handleWrapperArrows","handleTokenEdit","activeItemIndex","newItemIndex","isLeftEdge","isRightEdge","shiftKey","handleWrapperArrowsWithoutShift","handleWrapperArrowsWithShift","handleValueChange","handleRemoveToken","_","filteredActiveTokens","handleTokenClick","ctrlKey","editedItem","splice","onUnexpectedInput","returnedValue","handleChangeInputValue","trimLeft","endsWith","trimRight","onInputValueChange","Combined","renderTokensStart","slice","renderToken","renderTokensEnd","handleIconClick","handleTokenDoubleClick","renderedToken","set","renderAddButton","showAddItemHint","locale","addButtonComment","addButtonTitle","itemIndex","has","get","startIndex","isDirectionLeft","step","availableIndex","componentDidMount","updateInputTextWidth","addEventListener","autoFocus","componentDidUpdate","prevProps","clear","isCursorVisibleForState","componentWillUnmount","removeEventListener","render","theme","renderMain","Error","maxMenuHeight","error","warning","placeholder","renderNotFound","inputMode","renderTotalCount","totalCount","ariaDescribedby","width","onMouseEnter","onMouseLeave","menuWidth","menuAlign","renderItem","showMenu","lineHeight","parseInt","tokenInputLineHeight","inputInlineStyles","height","Math","max","flex","caretColor","labelClassName","styles","label","labelDisabled","labelFocused","inputClassName","inputDisabled","inputEditing","setRootNode","helperText","helperTextEditing","reservedInput","reset","parseFloat","getTextWidth","toFixed","getTextHeight","isInputValueChanged","React","PureComponent","__KONTUR_REACT_UI__","renderValue","toKey","emptyHandler"],"mappings":"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","sourcesContent":["import React, {\n AriaAttributes,\n ChangeEvent,\n FocusEvent,\n FocusEventHandler,\n KeyboardEvent,\n MouseEventHandler,\n ReactNode,\n} from 'react';\nimport isEqual from 'lodash.isequal';\n\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 { Menu } from '../../internal/Menu';\nimport { Token, TokenProps } from '../Token';\nimport { MenuItemState } from '../MenuItem';\nimport { AnyObject, emptyHandler } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { locale } from '../../lib/locale/decorators';\nimport { MenuItem } from '../MenuItem/MenuItem';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { TokenInputLocale, TokenInputLocaleHelper } from './locale';\nimport { styles } from './TokenInput.styles';\nimport { TokenInputAction, tokenInputReducer } from './TokenInputReducer';\nimport { TokenInputMenu } from './TokenInputMenu';\nimport { TextWidthHelper } from './TextWidthHelper';\n\nexport enum TokenInputType {\n WithReference,\n WithoutReference,\n Combined,\n}\n\nexport type TokenInputMenuAlign = 'left' | 'cursor';\n\nexport interface TokenInputProps<T> extends CommonProps {\n selectedItems?: T[];\n onValueChange?: (items: T[]) => void;\n onMouseEnter?: MouseEventHandler<HTMLDivElement>;\n onMouseLeave?: MouseEventHandler<HTMLDivElement>;\n onFocus?: FocusEventHandler<HTMLTextAreaElement>;\n onBlur?: FocusEventHandler<HTMLTextAreaElement>;\n autoFocus?: boolean;\n type?: TokenInputType;\n /**\n * Ширина выпадающего меню может быть указана как 'auto'\n * а также в пикселях, процентах (от ширины инпута)\n * или других конкретных единицах\n *\n * Если menuAlign = 'cursor', то ширина выпадающего меню всегда будет равна 'auto'\n * (по ширине текста)\n */\n menuWidth?: React.CSSProperties['width'];\n menuAlign?: TokenInputMenuAlign;\n\n /**\n * Функция поиска элементов, должна возвращать Promise с массивом элементов.\n * По умолчанию ожидаются строки.\n *\n * Элементы могут быть любого типа. В этом случае необходимо определить\n * свойства `renderItem`, `valueToString`\n */\n getItems?: (query: string) => Promise<T[]>;\n hideMenuIfEmptyInputValue?: boolean;\n renderItem?: (item: T, state: MenuItemState) => React.ReactNode | null;\n renderValue?: (item: T) => React.ReactNode;\n /**\n * Функция должна возвращать строковое представление токена\n * @default item => item\n */\n valueToString?: (item: T) => string;\n /**\n * Функция отображающая сообщение об общем количестве элементов.\n * `found` учитывает только компонент `MenuItem`. Им \"оборачиваются\" элементы, возвращаемые `getItems()`.\n */\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n /**\n * Общее количество элементов.\n * Необходим для работы `renderTotalCount`\n */\n totalCount?: number;\n renderNotFound?: () => React.ReactNode;\n valueToItem?: (item: string) => T;\n toKey?: (item: T) => string | number | undefined;\n placeholder?: string;\n delimiters?: string[];\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n disabled?: boolean;\n width?: string | number;\n maxMenuHeight?: number | string;\n renderToken?: (item: T, props: Partial<TokenProps>) => ReactNode;\n /**\n * Вызывается при изменении текста в поле ввода,\n */\n onInputValueChange?: (value: string) => void;\n /**\n * Функция отрисовки кнопки добавления в выпадающем списке\n */\n renderAddButton?: (query?: string, onAddItem?: () => void) => ReactNode;\n /**\n * Атрибут для указания id элемента(-ов), описывающих его\n */\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n\n /**\n * Функция для обработки ситуации, когда была введена\n * строка в инпут и был потерян фокус с компонента\n *\n * Функция срабатывает с аргументом инпута строки\n *\n * Если при потере фокуса в выпадающем списке будет только один\n * элемент и результат `valueToString` с этим элементом будет\n * совпадать со значение в текстовом поле, то\n * сработает `onValueChange` со значением данного элемента\n *\n * Сама функция также может вернуть значение,\n * неравное `undefined`, с которым будет вызван `onValueChange`.\n * Если возвращаемое значение будет равно `null`,\n * то сработает очистка текущего значения инпута,\n * а в режиме редактирования токен будет удален\n */\n onUnexpectedInput?: (value: string) => void | null | undefined | T;\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} 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 | '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();\nconst identity = <T extends unknown>(item: T): T => item;\nconst defaultRenderToken = <T extends AnyObject>(\n item: T,\n { isActive, onClick, onDoubleClick, onRemove, disabled }: 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 >\n {item}\n </Token>\n);\n\n@rootNode\n@locale('TokenInput', TokenInputLocaleHelper)\nexport class TokenInput<T = string> extends React.PureComponent<TokenInputProps<T>, TokenInputState<T>> {\n public static __KONTUR_REACT_UI__ = 'TokenInput';\n\n public static defaultProps: DefaultProps<any> = {\n selectedItems: [],\n delimiters: [',', ' '],\n renderItem: identity,\n renderValue: identity,\n valueToString: identity,\n valueToItem: (item: string) => item,\n toKey: 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 getProps = createPropsGetter(TokenInput.defaultProps);\n\n public state: TokenInputState<T> = DefaultState;\n\n private readonly locale!: TokenInputLocale;\n private theme!: Theme;\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 private setRootNode!: TSetRootNode;\n private memoizedTokens = new Map();\n\n public componentDidMount() {\n this.updateInputTextWidth();\n 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 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 public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\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 placeholder,\n renderNotFound,\n hideMenuIfEmptyInputValue,\n inputMode,\n renderTotalCount,\n totalCount,\n 'aria-describedby': ariaDescribedby,\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 inputValue,\n reservedInputValue,\n autocompleteItems,\n loading,\n inputValueHeight,\n } = this.state;\n\n const showMenu =\n this.type !== TokenInputType.WithoutReference &&\n this.isCursorVisible &&\n activeTokens.length === 0 &&\n (inputValue !== '' || !hideMenuIfEmptyInputValue);\n\n const theme = this.theme;\n\n const lineHeight = parseInt(theme.tokenInputLineHeight, 10) || 0;\n\n const inputInlineStyles: React.CSSProperties = {\n // вычисляем ширину чтобы input автоматически перенёсся на следующую строку при необходимости\n width: inputValueWidth,\n height: Math.max(lineHeight, inputValueHeight),\n // input растягивается на всю ширину чтобы placeholder не обрезался\n flex: selectedItems && selectedItems.length === 0 ? 1 : undefined,\n // в ie не работает, но альтернативный способ --- дать tabindex для label --- предположительно ещё сложнее\n caretColor: this.isCursorVisible ? undefined : 'transparent',\n };\n\n const labelClassName = cx(styles.label(theme), {\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), {\n [styles.inputDisabled(theme)]: !!disabled,\n [styles.inputEditing(theme)]: this.isEditingMode,\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 >\n <TextWidthHelper\n ref={this.textHelperRef}\n classHelp={cx(styles.helperText(theme), {\n [styles.helperTextEditing(theme)]: this.isEditingMode,\n })}\n text={inputValue}\n theme={this.theme}\n />\n {this.renderTokensStart()}\n <textarea\n ref={this.inputRef}\n value={inputValue}\n style={inputInlineStyles}\n spellCheck={false}\n disabled={disabled}\n className={inputClassName}\n placeholder={selectedItems.length > 0 ? undefined : 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-describedby={ariaDescribedby}\n />\n {showMenu && (\n <TokenInputMenu\n ref={this.tokensInputMenuRef}\n items={autocompleteItems}\n loading={loading}\n opened={showMenu}\n maxMenuHeight={maxMenuHeight}\n anchorElement={menuAlign === 'cursor' ? this.input : 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 />\n )}\n {this.renderTokensEnd()}\n {this.isEditingMode ? <span className={styles.reservedInput(theme)}>{reservedInputValue}</span> : 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 hasValueInItems = (items: T[], value: T) => {\n if (typeof value === 'string') {\n return items.includes(value);\n }\n // todo: как то не очень\n return items.some((item) => 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\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.state.inputValue !== '') {\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 && (state.inputValue !== '' || 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 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) {\n const menu = getRootNode(this.tokensInputMenu?.getMenuRef());\n const relatedTarget = (event.relatedTarget || document.activeElement) as HTMLElement;\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.state.inputValue !== '' || !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 && 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 isEqual(editingItem, valueToItem(this.state.inputValue)) &&\n !this.hasValueInItems(autocompleteItemsUnique, editingItem)\n ) {\n autocompleteItemsUnique.unshift(editingItem);\n }\n }\n\n if (query === '' || this.state.inputValue !== '') {\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 if (this.menuRef) {\n this.menuRef.highlightItem(selectItemIndex < 0 ? 0 : selectItemIndex);\n }\n }\n };\n\n private handleKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\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 switch (true) {\n case isKeyEnter(e):\n if (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 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) => !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((_) => !isEqual(_, item)));\n const filteredActiveTokens = this.state.activeTokens.filter((_) => !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) => !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.state.inputValue !== '') {\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 = this.getProps().selectedItems;\n const { editingTokenIndex, inputValue, reservedInputValue } = this.state;\n const editedItem = this.getProps().valueToItem(inputValue);\n const newItems = selectedItems.concat([]);\n\n if (!this.hasValueInItems(selectedItems, editedItem)) {\n newItems.splice(editingTokenIndex, 1, ...(inputValue !== '' ? [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 if (onUnexpectedInput) {\n // чекаем не возвращает ли что-нибудь обработчик\n const returnedValue = onUnexpectedInput(inputValue);\n\n if (returnedValue === undefined) {\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\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.state.inputValue !== '' && 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 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"]}
@@ -105,6 +105,7 @@ export interface TooltipState {
105
105
  export declare const TooltipDataTids: {
106
106
  readonly root: "Tooltip__root";
107
107
  readonly content: "Tooltip__content";
108
+ readonly crossIcon: "Tooltip__crossIcon";
108
109
  };
109
110
  declare type DefaultProps = Required<Pick<TooltipProps, 'pos' | 'trigger' | 'allowedPositions' | 'disableAnimations' | 'useWrapper'>>;
110
111
  export declare class Tooltip extends React.PureComponent<TooltipProps, TooltipState> implements InstanceWithAnchorElement {
@@ -137,7 +137,8 @@ var _Tooltip = require("./Tooltip.styles");var _class, _class2, _temp;
137
137
 
138
138
  var TooltipDataTids = {
139
139
  root: 'Tooltip__root',
140
- content: 'Tooltip__content' };exports.TooltipDataTids = TooltipDataTids;
140
+ content: 'Tooltip__content',
141
+ crossIcon: 'Tooltip__crossIcon' };exports.TooltipDataTids = TooltipDataTids;
141
142
 
142
143
 
143
144
  var Positions = [
@@ -273,6 +274,10 @@ Tooltip = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/funct
273
274
 
274
275
 
275
276
 
277
+
278
+
279
+
280
+
276
281
 
277
282
 
278
283
  getAnchorElement = function () {var _this$popupRef$curren;
@@ -555,7 +560,7 @@ Tooltip = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/funct
555
560
  }
556
561
 
557
562
  _this.close();
558
- };return _this;}var _proto = Tooltip.prototype;_proto.componentDidUpdate = function componentDidUpdate(prevProps) {var _this$getProps = this.getProps(),trigger = _this$getProps.trigger,allowedPositions = _this$getProps.allowedPositions,pos = _this$getProps.pos;if (trigger === 'closed' && this.state.opened) {this.close();}var posChanged = prevProps.pos !== pos;var allowedChanged = !(0, _lodash.default)(prevProps.allowedPositions, allowedPositions);if (posChanged || allowedChanged) {this.positions = null;}};_proto.componentWillUnmount = function componentWillUnmount() {this.clearHoverTimeout();};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: _ThemeFactory.ThemeFactory.create({ popupPinOffset: theme.tooltipPinOffset, popupMargin: theme.tooltipMargin, popupBorder: theme.tooltipBorder, popupBorderRadius: theme.tooltipBorderRadius, popupPinSize: theme.tooltipPinSize, popupPinOffsetX: theme.tooltipPinOffsetX, popupPinOffsetY: theme.tooltipPinOffsetY }, theme) }, _this2.renderMain());});};_proto.renderCloseButton = function renderCloseButton() {var hasCross = this.props.closeButton === undefined ? !Tooltip.triggersWithoutCloseButton.includes(this.getProps().trigger) : this.props.closeButton;if (!hasCross) {return null;}return /*#__PURE__*/_react.default.createElement("div", { className: _Tooltip.styles.cross(this.theme), onClick: this.handleCloseButtonClick }, /*#__PURE__*/_react.default.createElement(_CrossIcon.CrossIcon, null));}; /**
563
+ };return _this;}var _proto = Tooltip.prototype;_proto.componentDidUpdate = function componentDidUpdate(prevProps) {var _this$getProps = this.getProps(),trigger = _this$getProps.trigger,allowedPositions = _this$getProps.allowedPositions,pos = _this$getProps.pos;if (trigger === 'closed' && this.state.opened) {this.close();}var posChanged = prevProps.pos !== pos;var allowedChanged = !(0, _lodash.default)(prevProps.allowedPositions, allowedPositions);if (posChanged || allowedChanged) {this.positions = null;}};_proto.componentWillUnmount = function componentWillUnmount() {this.clearHoverTimeout();};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: _ThemeFactory.ThemeFactory.create({ popupPinOffset: theme.tooltipPinOffset, popupMargin: theme.tooltipMargin, popupBorder: theme.tooltipBorder, popupBorderRadius: theme.tooltipBorderRadius, popupPinSize: theme.tooltipPinSize, popupPinOffsetX: theme.tooltipPinOffsetX, popupPinOffsetY: theme.tooltipPinOffsetY }, theme) }, _this2.renderMain());});};_proto.renderCloseButton = function renderCloseButton() {var hasCross = this.props.closeButton === undefined ? !Tooltip.triggersWithoutCloseButton.includes(this.getProps().trigger) : this.props.closeButton;if (!hasCross) {return null;}return /*#__PURE__*/_react.default.createElement("div", { className: _Tooltip.styles.cross(this.theme), onClick: this.handleCloseButtonClick, "data-tid": TooltipDataTids.crossIcon }, /*#__PURE__*/_react.default.createElement(_CrossIcon.CrossIcon, null));}; /**
559
564
  * Программно открывает тултип.
560
565
  * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>
561
566
  * @public