@skbkontur/react-ui 5.6.0 → 5.6.1-9a162.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/cjs/components/ComboBox/ComboBox.d.ts +17 -17
  2. package/cjs/components/ComboBox/ComboBox.js.map +1 -1
  3. package/cjs/components/Input/Input.d.ts +3 -3
  4. package/cjs/components/Input/Input.js +3 -2
  5. package/cjs/components/Input/Input.js.map +1 -1
  6. package/cjs/components/Input/InputLayout/InputLayout.d.ts +2 -1
  7. package/cjs/components/Input/InputLayout/InputLayout.js +20 -17
  8. package/cjs/components/Input/InputLayout/InputLayout.js.map +1 -1
  9. package/cjs/components/Select/Select.d.ts +56 -54
  10. package/cjs/components/Select/Select.js +13 -11
  11. package/cjs/components/Select/Select.js.map +1 -1
  12. package/cjs/components/Textarea/Textarea.d.ts +25 -26
  13. package/cjs/components/Textarea/Textarea.js +9 -8
  14. package/cjs/components/Textarea/Textarea.js.map +1 -1
  15. package/cjs/components/TokenInput/TokenInput.d.ts +18 -18
  16. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  17. package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
  18. package/components/ComboBox/ComboBox.d.ts +17 -17
  19. package/components/Input/Input/Input.js +2 -2
  20. package/components/Input/Input/Input.js.map +1 -1
  21. package/components/Input/Input.d.ts +3 -3
  22. package/components/Input/InputLayout/InputLayout/InputLayout.js +3 -2
  23. package/components/Input/InputLayout/InputLayout/InputLayout.js.map +1 -1
  24. package/components/Input/InputLayout/InputLayout.d.ts +2 -1
  25. package/components/Select/Select/Select.js +5 -11
  26. package/components/Select/Select/Select.js.map +1 -1
  27. package/components/Select/Select.d.ts +56 -54
  28. package/components/Textarea/Textarea/Textarea.js +7 -8
  29. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  30. package/components/Textarea/Textarea.d.ts +25 -26
  31. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  32. package/components/TokenInput/TokenInput.d.ts +18 -18
  33. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"names":["React","lodashIsEqual","globalObject","PopupIds","isKeyArrowHorizontal","isKeyArrowLeft","isKeyArrowRight","isKeyArrowUp","isKeyArrowVertical","isKeyBackspace","isKeyComma","isKeyDelete","isKeyEnter","isKeyEscape","isShortcutSelectAll","LayoutEvents","Token","MenuItem","isFunction","emptyHandler","getRandomID","ThemeContext","locale","CommonWrapper","cx","getRootNode","rootNode","createPropsGetter","getUid","TokenView","getFullReactUIFlagsContext","ReactUIFeatureFlagsContext","withSize","blink","ScrollContainer","TokenInputLocaleHelper","styles","tokenInputReducer","TokenInputMenu","TextWidthHelper","TEMP_FAKE_FLAG","TokenInputType","DefaultState","inputValue","reservedInputValue","undefined","autocompleteItems","activeTokens","editingTokenIndex","inFocus","loading","preventBlur","inputValueWidth","inputValueHeight","TokenInputDataTids","root","tokenInputMenu","label","defaultToKey","item","toString","identity","defaultRenderToken","_ref","index","isActive","onClick","onDoubleClick","onRemove","disabled","size","createElement","key","TokenInput","_dec","_class","_TokenInput","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","_textareaId","rootId","input","tokensInputMenu","textHelper","wrapper","scrollContainerRef","createRef","memoizedTokens","Map","isEqual","itemA","itemB","_this$getProps","getProps","itemToId","hasValueInItems","items","value","_this$getProps2","valueToString","map","includes","some","inputRef","node","tokensInputMenuRef","textHelperRef","wrapperRef","dispatch","action","cb","setState","prevState","handleInputFocus","event","type","onFocus","handleInputBlur","isBlurToMenu","handleOutsideBlur","_this$input","preventDefault","focus","preventScroll","requestAnimationFrame","_this$input2","payload","onBlur","_this$state","allItems","filter","isSimpleItem","isEditingMode","finishTokenEdit","isTokenValueChanged","selectItem","isInputChanged","checkForUnexpectedInput","menuRef","document","_this$tokensInputMenu","menu","getMenuRef","relatedTarget","activeElement","contains","handleWrapperMouseDown","_this$wrapper","target","isClickOnToken","handleWrapperMouseUp","e","props","maxHeight","current","_this$input3","focusInput","scrollIntoView","behavior","block","handleCopy","isCursorVisible","_this$getProps3","selectedItems","delimiters","tokens","token","indexOf","sort","clipboardData","setData","join","handleInputPaste","WithReference","paste","getData","_this$getProps4","valueToItem","onValueChange","delimiter","stopPropagation","trim","split","RegExp","Boolean","newItems","tryGetItems","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","query","_this$getProps5","isSelectedItem","isEditingItem","autocompleteItemsUnique","autocompleteItemsUniqueSimple","editingItem","selectItemIndex","wrap","_callee$","_context","prev","next","getItems","isInputValueChanged","hideMenuIfEmptyInputValue","sent","unshift","emit","highlightMenuItem","findIndex","toLowerCase","setTimeout","_this$menuRef","highlightItem","stop","_x","handleKeyDown","onKeyDown","defaultPrevented","handleInputKeyDown","handleWrapperKeyDown","_this$state$autocompl","_this$state$autocompl2","_this$input4","_this$input5","WithoutReference","newValue","handleAddItem","isRightmostTokenNotDisabled","isTokenDisabled","canSetValueToInput","showAddItemHint","enter","up","down","blur","moveFocusToLastToken","selectionStart","getAvailableTokenIndex","itemNew","options","_this$input6","selectInputText","setSelectionRange","_this$wrapper2","_this$getProps6","indexOfActiveToken","itemsNew","_this$input7","handleWrapperArrows","handleTokenEdit","activeItemIndex","newItemIndex","isLeftEdge","isRightEdge","shiftKey","handleWrapperArrowsWithoutShift","handleWrapperArrowsWithShift","_this$input8","handleValueChange","_this$getProps7","handleRemoveToken","_","filteredActiveTokens","handleTokenClick","ctrlKey","_this$getProps8","_autocompleteItems$fi","_this$getProps9","_this$state2","editedItem","find","splice","onUnexpectedInput","returnedValue","featureFlags","tokenInputCreateTokenOnBlurInWithoutReferenceMode","handleChangeInputValue","trimLeft","endsWith","trimRight","onInputValueChange","Combined","renderTokensStart","slice","renderToken","renderTokensEnd","_this$props$selectedI","_this$props","_this$props$renderTok","handleIconClick","handleTokenDoubleClick","renderedToken","set","renderAddButton","_this$locale","addButtonComment","addButtonTitle","comment","itemIndex","has","get","startIndex","isDirectionLeft","_this$getProps10","step","availableIndex","_inheritsLoose","_proto","prototype","getDelimiters","_this$props$delimiter","every","propsGetter","defaultProps","propsWithOldDelimiters","_extends","componentDidMount","_globalObject$documen","updateInputTextWidth","addEventListener","autoFocus","componentDidUpdate","prevProps","clear","isCursorVisibleForState","componentWillUnmount","_globalObject$documen2","removeEventListener","_this$input9","_this$input10","el","blinkColor","theme","inputBlinkColor","render","_this2","Consumer","flags","renderMain","getLabelSizeClassName","labelLarge","labelMedium","labelSmall","getInputSizeClassName","inputLarge","inputMedium","inputSmall","_cx","_cx2","_cx3","Error","_this$props2","maxMenuHeight","error","warning","renderNotFound","inputMode","renderTotalCount","totalCount","ariaDescribedby","ariaLabel","_this$getProps11","width","onMouseEnter","onMouseLeave","menuWidth","menuAlign","renderItem","_this$state3","showMenu","inputInlineStyles","height","caretColor","labelClassName","hovering","labelDisabled","labelFocused","inputClassName","inputDisabled","placeholder","inputNode","className","inputPlaceholderWrapper","hideCloseButton","id","textareaId","ref","style","spellCheck","onChange","onPaste","inner","Fragment","text","popupMenuId","opened","anchorElementForCursor","anchorElementRoot","reservedInput","container","scrollRef","showScrollBar","rootNodeRef","setRootNode","onMouseDown","onMouseUp","htmlFor","reset","parseFloat","getTextWidth","toFixed","getTextHeight","_createClass","_this$props$id","_this$state$autocompl3","_this$state4","_this$getProps12","PureComponent","__KONTUR_REACT_UI__","displayName","renderValue","toKey","isValidElement"],"sources":["TokenInput.tsx"],"sourcesContent":["import type {\n AriaAttributes,\n ChangeEvent,\n FocusEvent,\n FocusEventHandler,\n HTMLAttributes,\n KeyboardEvent,\n KeyboardEventHandler,\n MouseEventHandler,\n ReactNode,\n} from 'react';\nimport React from 'react';\nimport lodashIsEqual from 'lodash.isequal';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { PopupIds } from '../../internal/Popup';\nimport {\n isKeyArrowHorizontal,\n isKeyArrowLeft,\n isKeyArrowRight,\n isKeyArrowUp,\n isKeyArrowVertical,\n isKeyBackspace,\n isKeyComma,\n isKeyDelete,\n isKeyEnter,\n isKeyEscape,\n isShortcutSelectAll,\n} from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport type { Menu } from '../../internal/Menu';\nimport type { TokenProps, TokenSize } from '../Token';\nimport { Token } from '../Token';\nimport type { MenuItemState } from '../MenuItem';\nimport { MenuItem } from '../MenuItem';\nimport type { AnyObject } from '../../lib/utils';\nimport { isFunction, emptyHandler, getRandomID } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { locale } from '../../lib/locale/decorators';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { getUid } from '../../lib/uidUtils';\nimport { TokenView } from '../Token/TokenView';\nimport type { ReactUIFeatureFlags } from '../../lib/featureFlagsContext';\nimport { getFullReactUIFlagsContext, ReactUIFeatureFlagsContext } from '../../lib/featureFlagsContext';\nimport { withSize } from '../../lib/size/SizeDecorator';\nimport type { SizeProp } from '../../lib/types/props';\nimport { blink } from '../../lib/blink';\nimport { ScrollContainer } from '../ScrollContainer';\n\nimport type { TokenInputLocale } from './locale';\nimport { TokenInputLocaleHelper } from './locale';\nimport { styles } from './TokenInput.styles';\nimport type { TokenInputAction } from './TokenInputReducer';\nimport { tokenInputReducer } from './TokenInputReducer';\nimport { TokenInputMenu } from './TokenInputMenu';\nimport { TextWidthHelper } from './TextWidthHelper';\n\nconst TEMP_FAKE_FLAG = 'TEMP_FAKE_FLAG';\n\nexport enum TokenInputType {\n WithReference,\n WithoutReference,\n Combined,\n}\n\nexport type TokenInputMenuAlign = 'left' | 'cursor';\n\nexport interface TokenInputProps<T>\n extends CommonProps,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'> {\n /** Задаёт выбранные токены, которые будут отображаться в поле ввода. */\n selectedItems?: T[];\n\n /** Задаёт функцию, которая вызывается при добавлении нового токена. */\n onValueChange?: (items: T[]) => void;\n\n /** Задает HTML-событие `onmouseenter`.\n * @ignore */\n onMouseEnter?: MouseEventHandler<HTMLDivElement>;\n\n /** Задает HTML-событие `onmouseleave`.\n * @ignore */\n onMouseLeave?: MouseEventHandler<HTMLDivElement>;\n\n /** Задает HTML-событие `onfocus`.\n * @ignore */\n onFocus?: FocusEventHandler<HTMLTextAreaElement>;\n\n /** Задает HTML-событие `onblur`.\n * @ignore */\n onBlur?: FocusEventHandler<HTMLTextAreaElement>;\n\n /** Задаёт HTML-событие `onkeydown`. */\n onKeyDown?: KeyboardEventHandler<HTMLTextAreaElement>;\n\n /** Устанавливает фокус на поле с токенами после окончания загрузки страницы. */\n autoFocus?: boolean;\n\n /** Размер поля с токенами. */\n size?: TokenSize;\n\n /** Тип инпута.\n * Возможные значения:\n * - `TokenInputType.Combined` — в поле можно выбирать значения из справочника и добавлять свои значения.\n * - `TokenInputType.WithReference` — можно только выбрать значения из справочника, но нельзя добавлять свои.\n * - `TokenInputType.WithoutReference` — можно добавлять любые значения, но подсказок из справочника нет. */\n type?: TokenInputType;\n\n /** Ширина выпадающего списка. */\n menuWidth?: React.CSSProperties['width'];\n\n /** Выравнивание выпадающего списка. */\n menuAlign?: TokenInputMenuAlign;\n\n /** Задаёт функцию поиска значений, которая должна возвращать Promise с массивом значений. По умолчанию ожидаются строки.\n * Элементы могут быть любого типа. В этом случае необходимо определить свойства `renderItem`, `valueToString`. */\n getItems?: (query: string) => Promise<Array<TokenInputExtendedItem<T>>>;\n\n /** Ограничивает отображение выпадающего списка при фокусе на пустом поле: выпадающий список появится, только когда будет введён хотя бы один символ токена. */\n hideMenuIfEmptyInputValue?: boolean;\n\n /** Задаёт функцию, которая отображает элемент списка. */\n renderItem?: (item: T, state: MenuItemState) => React.ReactNode | null;\n\n /** Задаёт функцию, которая отображает выбранное значение. */\n renderValue?: (item: T) => React.ReactNode;\n\n /** Задаёт функцию, которая возвращает строковое представление `value`. Необходимо при фокусировке.\n * @default item => item */\n valueToString?: (item: T) => string;\n\n /** Задаёт функцию, которая отображает сообщение об общем количестве элементов.\n * @param {number} found - количество элементов по результатам поиска. Учитывает только компонент MenuItem. Им оборачиваются элементы, возвращаемые `getItems()`.\n * @param {number} total - количество всех элементов. */\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n\n /** Определяет общее количество элементов. Необходим для работы `renderTotalCount`. */\n totalCount?: number;\n\n /** Задаёт функцию, которая отображает сообщение о пустом результате поиска. При `renderAddButton` не работает. */\n renderNotFound?: () => React.ReactNode;\n\n /** Преобразует значение в элемент списка. */\n valueToItem?: (value: string) => T;\n\n /** @deprecated Используйте `itemToId` вместо `toKey`. */\n toKey?: (item: T) => string | number | undefined;\n\n /** Задаёт функцию сравнения полученных результатов с `value`. */\n itemToId?: (item: T) => string | number | undefined;\n\n /** Задаёт текст, который отображается если не введено никакое значение. */\n placeholder?: string;\n\n /** Символы, которые разделяют введённый текст на токены. По умолчанию — запятая. */\n delimiters?: string[];\n\n /** Меняет визуальное отображение токена на состояние «ошибка». Может быть полезен при разработке собственной валидации, если вы не используете пакет [React UI Validations](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui-validations_displaying-getting-started--docs). */\n error?: boolean;\n\n /** Меняет визуальное отображение токена на состояние «предупреждение». Может быть полезен при разработке собственной валидации, если вы не используете пакет [React UI Validations](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui-validations_displaying-getting-started--docs). */\n warning?: boolean;\n\n /** Блокирует поле с токенами. */\n disabled?: boolean;\n\n /** Ширина поля с токенами. */\n width?: string | number;\n\n /** Максимальная высота выпадающего списка. */\n maxMenuHeight?: number | string;\n\n /** Задаёт функцию, которая отображает токен и даёт возможность кастомизировать внешний вид и поведение токена. */\n renderToken?: (item: T, props: Partial<TokenProps>, index: number) => ReactNode;\n\n /** Задаёт функцию, которая вызывается при изменении текста в поле ввода, если результатом функции будет строка, то она станет следующим состоянием полем ввода. */\n onInputValueChange?: (value: string) => void;\n\n /** Задаёт функцию, которая отрисовывает кнопку добавления нового токена в выпадающем списке. */\n renderAddButton?: (query?: string, onAddItem?: () => void) => ReactNode;\n\n /** Задаёт функцию для обработки ввода строки в поле ввода и последующей потерей фокуса компонентом.\n * Функция срабатывает с аргументом поля строки.\n * Если при потере фокуса в выпадающем списке будет только один элемент и результат `valueToString` с этим элементом будет совпадать со значением в текстовом поле, то сработает `onValueChange` со значением данного элемента.\n * Сама функция также может вернуть значение, не равное undefined, с которым будет вызван `onValueChange`. Если возвращаемое значение будет равно null, то сработает очистка текущего значения поля, а в режиме редактирования токен будет удален. */\n onUnexpectedInput?: (value: string) => void | null | undefined | T;\n\n /** Задаёт типы вводимых данных. Передаёт браузеру информацию о том, какой набор символов показать при вводе данных в конкретное поле на устройствах с экранной клавиатурой. */\n inputMode?: React.HTMLAttributes<HTMLTextAreaElement>['inputMode'];\n\n /**\n * Максимальная высота компонента. При её достижении появится скроллбар\n */\n maxHeight?: number;\n}\n\nexport interface TokenInputState<T> {\n autocompleteItems?: Array<TokenInputExtendedItem<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 type TokenInputExtendedItem<T> = T | (() => React.ReactElement<T>) | React.ReactElement<T>;\n\nexport const DefaultState = {\n inputValue: '',\n reservedInputValue: undefined,\n autocompleteItems: undefined,\n activeTokens: [],\n editingTokenIndex: -1,\n inFocus: false,\n loading: false,\n preventBlur: false,\n inputValueWidth: 2,\n inputValueHeight: 22,\n};\n\nexport const TokenInputDataTids = {\n root: 'TokenInput__root',\n tokenInputMenu: 'TokenInputMenu__root',\n label: 'TokenInput__label',\n} as const;\n\ntype DefaultProps<T> = Required<\n Pick<\n TokenInputProps<T>,\n | 'selectedItems'\n | 'delimiters'\n | 'renderItem'\n | 'renderValue'\n | 'valueToString'\n | 'valueToItem'\n | 'toKey'\n | 'itemToId'\n | 'onValueChange'\n | 'width'\n | 'onBlur'\n | 'onFocus'\n | 'onMouseEnter'\n | 'onMouseLeave'\n | 'menuWidth'\n | 'menuAlign'\n >\n>;\n\nconst defaultToKey = <T extends AnyObject>(item: T): string => item.toString();\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint\nconst identity = <T extends unknown>(item: T): T => item;\nconst defaultRenderToken = <T extends AnyObject>(\n item: T,\n { isActive, onClick, onDoubleClick, onRemove, disabled, size }: Partial<TokenProps>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n index: number,\n) => (\n <Token\n key={item.toString()}\n isActive={isActive}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n onRemove={onRemove}\n disabled={disabled}\n size={size}\n >\n {item.toString()}\n </Token>\n);\n\n/** Поле с токенами — это поле ввода со списком подсказок. Значения в поле отображаются в виде отдельных токенов — компонент [Token](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_input-data-tokeninput-token--docs).\n */\n@rootNode\n@locale('TokenInput', TokenInputLocaleHelper)\n@withSize\nexport class TokenInput<T = string> extends React.PureComponent<TokenInputProps<T>, TokenInputState<T>> {\n public static __KONTUR_REACT_UI__ = 'TokenInput';\n public static displayName = 'TokenInput';\n\n public static defaultProps: DefaultProps<any> = {\n selectedItems: [],\n // TEMP_FAKE_FLAG помогает узнать, остались ли разделители дефолтными или пользователь передал их равными дефолтным.\n delimiters: [',', TEMP_FAKE_FLAG],\n renderItem: identity,\n renderValue: identity,\n valueToString: identity,\n valueToItem: (item: string) => item,\n toKey: defaultToKey,\n itemToId: identity,\n onValueChange: () => void 0,\n width: 250 as string | number,\n onBlur: emptyHandler,\n onFocus: emptyHandler,\n onMouseEnter: emptyHandler,\n onMouseLeave: emptyHandler,\n menuWidth: 'auto',\n menuAlign: 'cursor',\n };\n\n private getDelimiters(): string[] {\n const delimiters = this.props.delimiters ?? [];\n if (delimiters.every((delimiter) => delimiter !== TEMP_FAKE_FLAG)) {\n return delimiters;\n }\n return delimiters.filter((delimiter) => delimiter !== TEMP_FAKE_FLAG);\n }\n\n private getProps() {\n const propsGetter = createPropsGetter(TokenInput.defaultProps);\n const propsWithOldDelimiters = propsGetter.apply(this);\n return { ...propsWithOldDelimiters, delimiters: this.getDelimiters() };\n }\n\n private get textareaId() {\n return this.props.id ?? this._textareaId;\n }\n\n public state: TokenInputState<T> = DefaultState;\n\n private readonly _textareaId: string = getUid();\n private rootId = PopupIds.root + getRandomID();\n private readonly locale!: TokenInputLocale;\n private theme!: Theme;\n private size!: SizeProp;\n public featureFlags!: ReactUIFeatureFlags;\n private input: HTMLTextAreaElement | null = null;\n private tokensInputMenu: TokenInputMenu<T> | null = null;\n private textHelper: TextWidthHelper | null = null;\n private wrapper: HTMLLabelElement | null = null;\n private scrollContainerRef = React.createRef<HTMLDivElement>();\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private memoizedTokens = new Map();\n\n public componentDidMount() {\n this.updateInputTextWidth();\n globalObject.document?.addEventListener('copy', this.handleCopy);\n if (this.props.autoFocus) {\n this.focusInput();\n }\n }\n\n public componentDidUpdate(prevProps: TokenInputProps<T> & DefaultProps<T>, prevState: TokenInputState<T>) {\n if (prevState.inputValue !== this.state.inputValue) {\n this.updateInputTextWidth();\n }\n if (prevState.activeTokens.length === 0 && this.state.activeTokens.length > 0) {\n this.dispatch({\n type: 'SET_AUTOCOMPLETE_ITEMS',\n payload: undefined,\n });\n }\n if (prevProps.selectedItems.length !== this.getProps().selectedItems.length) {\n LayoutEvents.emit();\n this.memoizedTokens.clear();\n }\n if (!this.isCursorVisibleForState(prevState) && this.isCursorVisible) {\n this.tryGetItems(this.isEditingMode ? '' : this.state.inputValue);\n }\n }\n\n public componentWillUnmount() {\n globalObject.document?.removeEventListener('copy', this.handleCopy);\n }\n\n /** Программно устанавливает фокус на поле.\n * Появляется фокусная рамка, элемент получает клавиатурные события и воспринимается как текущий элемент для чтения скринридерами.\n * @public\n */\n public focus() {\n this.input?.focus();\n }\n\n /** Программно снимает фокус с поля.\n * @public\n */\n public blur() {\n this.input?.blur();\n }\n\n /** Кратковременно визуально подсвечивает поле ввода, чтобы привлечь внимание пользователя.\n * @public\n */\n public blink() {\n blink({ el: this.wrapper, blinkColor: this.theme.inputBlinkColor });\n }\n\n public render() {\n return (\n <ReactUIFeatureFlagsContext.Consumer>\n {(flags) => {\n this.featureFlags = getFullReactUIFlagsContext(flags);\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }}\n </ReactUIFeatureFlagsContext.Consumer>\n );\n }\n\n private getLabelSizeClassName() {\n switch (this.size) {\n case 'large':\n return styles.labelLarge(this.theme);\n case 'medium':\n return styles.labelMedium(this.theme);\n case 'small':\n default:\n return styles.labelSmall(this.theme);\n }\n }\n\n private getInputSizeClassName() {\n switch (this.size) {\n case 'large':\n return styles.inputLarge(this.theme);\n case 'medium':\n return styles.inputMedium(this.theme);\n case 'small':\n default:\n return styles.inputSmall(this.theme);\n }\n }\n\n private renderMain() {\n if (this.type !== TokenInputType.WithoutReference && !this.props.getItems) {\n throw Error('Missed getItems for type ' + this.type);\n }\n\n const {\n maxMenuHeight,\n error,\n warning,\n disabled,\n renderNotFound,\n hideMenuIfEmptyInputValue,\n inputMode,\n renderTotalCount,\n totalCount,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n maxHeight,\n } = this.props;\n\n const { selectedItems, width, onMouseEnter, onMouseLeave, menuWidth, menuAlign, renderItem } = this.getProps();\n\n const {\n activeTokens,\n inFocus,\n inputValueWidth,\n inputValueHeight,\n inputValue,\n reservedInputValue,\n autocompleteItems,\n loading,\n } = this.state;\n\n const showMenu =\n this.type !== TokenInputType.WithoutReference &&\n this.isCursorVisible &&\n activeTokens.length === 0 &&\n (this.isInputValueChanged || !hideMenuIfEmptyInputValue);\n\n const theme = this.theme;\n\n const inputInlineStyles: React.CSSProperties = {\n // вычисляем ширину чтобы input автоматически перенёсся на следующую строку при необходимости\n width: inputValueWidth,\n height: inputValueHeight,\n // в ie не работает, но альтернативный способ --- дать tabindex для label --- предположительно ещё сложнее\n caretColor: this.isCursorVisible ? undefined : 'transparent',\n };\n\n const labelClassName = cx(styles.label(theme), this.getLabelSizeClassName(), {\n [styles.hovering(this.theme)]: !inFocus && !disabled && !warning && !error,\n [styles.labelDisabled(theme)]: !!disabled,\n [styles.labelFocused(theme)]: !!inFocus,\n [styles.error(theme)]: !!error,\n [styles.warning(theme)]: !!warning,\n });\n const inputClassName = cx(styles.input(theme), this.getInputSizeClassName(), {\n [styles.inputDisabled(theme)]: !!disabled,\n });\n\n const placeholder = selectedItems.length === 0 && !inputValue ? this.props.placeholder : '';\n\n const inputNode = (\n <TokenView\n size={this.size}\n className={cx({\n // input растягивается на всю ширину чтобы placeholder не обрезался\n [styles.inputPlaceholderWrapper()]: Boolean(placeholder),\n })}\n hideCloseButton={Boolean(placeholder)}\n >\n <textarea\n id={this.textareaId}\n ref={this.inputRef}\n value={inputValue}\n style={inputInlineStyles}\n spellCheck={false}\n disabled={disabled}\n className={inputClassName}\n placeholder={placeholder}\n onFocus={this.handleInputFocus}\n onBlur={this.handleInputBlur}\n onChange={this.handleChangeInputValue}\n onKeyDown={this.handleKeyDown}\n onPaste={this.handleInputPaste}\n inputMode={inputMode}\n aria-label={ariaLabel}\n aria-describedby={ariaDescribedby}\n />\n </TokenView>\n );\n\n const inner = (\n <>\n <TextWidthHelper ref={this.textHelperRef} text={inputValue} theme={this.theme} size={this.size} />\n {this.renderTokensStart()}\n {inputNode}\n {showMenu && (\n <TokenInputMenu\n popupMenuId={this.rootId}\n ref={this.tokensInputMenuRef}\n items={autocompleteItems}\n loading={loading}\n opened={showMenu}\n maxMenuHeight={maxMenuHeight}\n anchorElementForCursor={this.input}\n anchorElementRoot={this.wrapper}\n renderNotFound={renderNotFound}\n renderItem={renderItem}\n onValueChange={this.selectItem}\n renderAddButton={this.renderAddButton}\n menuWidth={menuWidth}\n menuAlign={menuAlign}\n renderTotalCount={renderTotalCount}\n totalCount={totalCount}\n size={this.size}\n />\n )}\n {this.renderTokensEnd()}\n {this.isEditingMode ? (\n <TokenView size={this.size}>\n <span className={styles.reservedInput(theme)}>{reservedInputValue}</span>\n </TokenView>\n ) : null}\n </>\n );\n const container = maxHeight ? (\n <ScrollContainer scrollRef={this.scrollContainerRef} maxHeight={maxHeight} showScrollBar=\"always\">\n {inner}\n </ScrollContainer>\n ) : (\n inner\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 // Для корректной работы скролла приходится ломать связь label с полем ввода\n // Иначе любой клик внутри label вызывает фокус и автоскроллинг к полю ввода\n htmlFor={maxHeight ? 'fake-id' : this.textareaId}\n aria-controls={this.rootId}\n data-tid={TokenInputDataTids.label}\n >\n {container}\n </label>\n </div>\n </CommonWrapper>\n );\n }\n\n /**\n * Сбрасывает введённое пользователем значение.\n * @public\n */\n public reset() {\n this.dispatch({ type: 'RESET' });\n }\n\n private isEqual = (itemA: T, itemB: T) => {\n const { itemToId } = this.getProps();\n return lodashIsEqual(itemToId(itemA), itemToId(itemB));\n };\n\n private hasValueInItems = (items: T[], value: string | T) => {\n const { valueToString } = this.getProps();\n if (typeof value === 'string') {\n return items.map((item) => valueToString(item)).includes(value);\n }\n\n return items.some((item) => this.isEqual(item, value));\n };\n\n private get showAddItemHint() {\n const items = this.state.autocompleteItems?.filter(isSimpleItem);\n const value = this.getProps().valueToItem(this.state.inputValue);\n if (items && this.hasValueInItems(items, value)) {\n return false;\n }\n\n const selectedItems = this.getProps().selectedItems;\n if (selectedItems && this.hasValueInItems(selectedItems, value)) {\n return false;\n }\n\n if (this.type === TokenInputType.Combined && this.isInputValueChanged) {\n return true;\n }\n }\n\n private get type() {\n return this.props.type ? this.props.type : TokenInputType.WithReference;\n }\n\n private get menuRef(): Menu | null {\n return this.tokensInputMenu && this.tokensInputMenu.getMenuRef();\n }\n\n private get isCursorVisible() {\n return this.isCursorVisibleForState(this.state);\n }\n\n private get isEditingMode() {\n return this.state.editingTokenIndex > -1;\n }\n\n private isCursorVisibleForState(state: TokenInputState<T>) {\n return state.inFocus && (this.isInputValueChanged || state.activeTokens.length === 0);\n }\n\n private inputRef = (node: HTMLTextAreaElement) => (this.input = node);\n private tokensInputMenuRef = (node: TokenInputMenu<T>) => (this.tokensInputMenu = node);\n private textHelperRef = (node: TextWidthHelper) => (this.textHelper = node);\n private wrapperRef = (node: HTMLLabelElement) => (this.wrapper = node);\n\n private dispatch = (action: TokenInputAction, cb?: () => void) => {\n this.setState((prevState) => tokenInputReducer(prevState, action), cb);\n };\n\n private updateInputTextWidth() {\n if (this.textHelper) {\n // в IE текст иногда не помещается в input\n // из-за округления, поэтому округляем явно\n const inputValueWidth = parseFloat(this.textHelper.getTextWidth().toFixed(2));\n const inputValueHeight = parseFloat(this.textHelper.getTextHeight().toFixed(2));\n\n this.dispatch({ type: 'SET_INPUT_VALUE_WIDTH', payload: inputValueWidth }, LayoutEvents.emit);\n this.dispatch({ type: 'SET_INPUT_VALUE_HEIGHT', payload: inputValueHeight }, LayoutEvents.emit);\n }\n }\n\n private handleInputFocus = (event: FocusEvent<HTMLTextAreaElement>) => {\n this.dispatch({ type: 'SET_FOCUS_IN' });\n this.getProps().onFocus(event);\n };\n\n private handleInputBlur = (event: FocusEvent<HTMLTextAreaElement>) => {\n const isBlurToMenu = this.isBlurToMenu(event);\n\n if (!isBlurToMenu) {\n this.handleOutsideBlur();\n }\n\n if (isBlurToMenu || this.state.preventBlur) {\n event.preventDefault();\n // первый focus нужен для предотвращения/уменьшения моргания в других браузерах\n this.input?.focus({ preventScroll: true });\n // в firefox не работает без второго focus\n globalObject.requestAnimationFrame?.(() => this.input?.focus({ preventScroll: true }));\n\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: allItems } = this.state;\n const autocompleteItems = allItems?.filter(isSimpleItem);\n\n if (inputValue === '') {\n // если стерли содержимое токена в режиме редактирования, то удаляем токен\n if (this.isEditingMode) {\n this.finishTokenEdit();\n }\n return;\n }\n\n // если не изменилось значение токена при редактировании\n if (this.isEditingMode && !this.isTokenValueChanged) {\n this.finishTokenEdit();\n return;\n }\n\n // чекаем автокомплит на совпадение с введенным значением в инпут\n if (autocompleteItems && autocompleteItems.length === 1) {\n const item = autocompleteItems[0];\n\n if (this.getProps().valueToString(item) === inputValue) {\n this.isEditingMode ? this.finishTokenEdit() : this.selectItem(item);\n\n return;\n }\n }\n\n if (this.isInputChanged) {\n this.checkForUnexpectedInput();\n }\n };\n\n private get isInputChanged() {\n if (this.isEditingMode) {\n return this.isTokenValueChanged;\n }\n\n return this.isInputValueChanged;\n }\n\n private get isInputValueChanged() {\n const { inputValue } = this.state;\n\n return inputValue !== '';\n }\n\n private get isTokenValueChanged() {\n const { inputValue, editingTokenIndex } = this.state;\n const { valueToString, selectedItems } = this.getProps();\n\n if (this.isEditingMode) {\n return valueToString(selectedItems[editingTokenIndex]) !== inputValue;\n }\n\n return false;\n }\n\n private isBlurToMenu = (event: FocusEvent<HTMLElement>) => {\n if (this.menuRef && globalObject.document) {\n const menu = getRootNode(this.tokensInputMenu?.getMenuRef());\n const relatedTarget = event.relatedTarget || globalObject.document.activeElement;\n\n if (menu && menu.contains(relatedTarget)) {\n return true;\n }\n }\n return false;\n };\n\n private handleWrapperMouseDown = (event: React.MouseEvent<HTMLElement>) => {\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: true });\n const target = event.target as HTMLElement;\n const isClickOnToken = target && this.wrapper?.contains(target) && target !== this.wrapper && target !== this.input;\n if (!isClickOnToken) {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n }\n };\n\n private handleWrapperMouseUp = (e: React.MouseEvent<HTMLElement>) => {\n // Имитируем поведение label, когда задан maxHeight.\n if (\n this.props.maxHeight &&\n e.target === this.scrollContainerRef.current &&\n (this.state.activeTokens.length !== 0 || !this.state.inFocus)\n ) {\n this.dispatch({ type: 'BLUR' });\n this.dispatch({ type: 'SET_FOCUS_IN' });\n this.focusInput();\n this.input?.scrollIntoView({ behavior: 'auto', block: 'center' });\n }\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: false });\n };\n\n private handleCopy = (event: any) => {\n if (!this.state.inFocus || this.state.activeTokens.length === 0 || this.isCursorVisible) {\n return;\n }\n event.preventDefault();\n const { selectedItems, valueToString, delimiters } = this.getProps();\n // упорядочивание токенов по индексу\n const tokens = this.state.activeTokens\n .map((token) => selectedItems.indexOf(token))\n .sort()\n .map((index) => selectedItems[index])\n .map((item) => valueToString(item));\n event.clipboardData.setData('text/plain', tokens.join(delimiters[0]));\n };\n\n private handleInputPaste = (event: React.ClipboardEvent<HTMLElement>) => {\n if (this.type === TokenInputType.WithReference || !event.clipboardData) {\n return;\n }\n const paste = event.clipboardData.getData('text');\n const { delimiters, selectedItems, valueToItem, onValueChange } = this.getProps();\n if (delimiters.some((delimiter) => paste.includes(delimiter))) {\n event.preventDefault();\n event.stopPropagation();\n const tokens = paste.trim().split(new RegExp(`[${delimiters.join('')}]+`));\n const items = tokens\n .filter(Boolean)\n .map((token) => valueToItem(token))\n .filter((item) => item && !this.hasValueInItems(selectedItems, item));\n const newItems = selectedItems.concat(items);\n onValueChange(newItems);\n\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: undefined });\n this.tryGetItems();\n }\n };\n\n private tryGetItems = async (query = '') => {\n if (this.props.getItems && (this.isInputValueChanged || !this.props.hideMenuIfEmptyInputValue)) {\n this.dispatch({ type: 'SET_LOADING', payload: true });\n const autocompleteItems = await this.props.getItems(query);\n this.dispatch({ type: 'SET_LOADING', payload: false });\n\n const { selectedItems, valueToItem, valueToString } = this.getProps();\n const isSelectedItem = (item: T) => this.hasValueInItems(selectedItems, item);\n const isEditingItem = (item: T) => {\n const editingItem = selectedItems[this.state.editingTokenIndex];\n return !!editingItem && this.isEqual(item, editingItem);\n };\n\n const autocompleteItemsUnique = autocompleteItems.filter((item) =>\n isSimpleItem(item) ? !isSelectedItem(item) || isEditingItem(item) : true,\n );\n const autocompleteItemsUniqueSimple = autocompleteItemsUnique.filter(isSimpleItem);\n\n if (this.isEditingMode) {\n const editingItem = selectedItems[this.state.editingTokenIndex];\n if (\n this.isEqual(editingItem, valueToItem(this.state.inputValue)) &&\n !this.hasValueInItems(autocompleteItemsUniqueSimple, editingItem)\n ) {\n autocompleteItemsUnique.unshift(editingItem);\n }\n }\n\n if (query === '' || this.isInputValueChanged) {\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: autocompleteItemsUnique }, () => {\n LayoutEvents.emit();\n this.highlightMenuItem();\n });\n }\n const selectItemIndex = autocompleteItemsUniqueSimple.findIndex(\n (item) => valueToString(item).toLowerCase() === this.state.inputValue.toLowerCase(),\n );\n setTimeout(() => this.menuRef?.highlightItem(selectItemIndex < 0 ? 0 : selectItemIndex), 0);\n }\n };\n\n private handleKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n this.props.onKeyDown?.(event);\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (this.isCursorVisible) {\n this.handleInputKeyDown(event);\n } else {\n this.handleWrapperKeyDown(event);\n }\n };\n\n private handleInputKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n e.stopPropagation();\n\n if (\n (this.type !== TokenInputType.WithReference &&\n this.getProps().delimiters.some((key) => key === e.key || (key === ',' && isKeyComma(e)))) ||\n (isKeyEnter(e) && this.type === TokenInputType.WithoutReference)\n ) {\n e.preventDefault();\n const newValue = this.state.inputValue;\n if (newValue !== '') {\n if (this.isEditingMode) {\n this.finishTokenEdit();\n } else {\n this.handleAddItem();\n }\n }\n }\n const isRightmostTokenNotDisabled = !this.isTokenDisabled(this.getProps().selectedItems.length - 1);\n const canSetValueToInput = this.showAddItemHint || (this.state.autocompleteItems?.length ?? 0) > 0;\n\n switch (true) {\n case isKeyEnter(e):\n if (canSetValueToInput && this.menuRef) {\n this.menuRef.enter(e);\n }\n // don't allow textarea\n // became multiline\n e.preventDefault();\n break;\n case isKeyArrowVertical(e):\n e.preventDefault();\n if (this.menuRef) {\n if (isKeyArrowUp(e)) {\n this.menuRef.up();\n } else {\n this.menuRef.down();\n }\n }\n break;\n case isKeyEscape(e):\n this.input?.blur();\n break;\n case isKeyBackspace(e):\n if (!this.isEditingMode && isRightmostTokenNotDisabled) {\n this.moveFocusToLastToken();\n }\n break;\n case isKeyArrowLeft(e):\n if (this.input?.selectionStart === 0) {\n const index = this.getAvailableTokenIndex(this.getProps().selectedItems.length);\n const itemNew = this.getProps().selectedItems[index];\n if (itemNew) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [itemNew] });\n }\n }\n break;\n }\n };\n\n private moveFocusToLastToken() {\n const items = this.getProps().selectedItems;\n if (this.state.inputValue === '' && items && items.length > 0) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: items.slice(-1) });\n }\n }\n\n private focusInput = (options?: FocusOptions) => {\n globalObject.requestAnimationFrame?.(() => this.input?.focus(options));\n };\n\n private selectInputText = () => {\n if (this.input) {\n this.input.setSelectionRange(0, this.state.inputValue.length);\n }\n };\n\n private handleWrapperKeyDown = (e: KeyboardEvent<HTMLElement>) => {\n const { selectedItems, onValueChange } = this.getProps();\n switch (true) {\n case isKeyBackspace(e):\n case isKeyDelete(e): {\n const indexOfActiveToken = this.getProps().selectedItems.indexOf(\n this.state.activeTokens[this.state.activeTokens.length - 1],\n );\n if (!this.isEditingMode && !this.isTokenDisabled(indexOfActiveToken)) {\n const itemsNew = selectedItems.filter((item) => !this.hasValueInItems(this.state.activeTokens, item));\n onValueChange(itemsNew);\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' }, () => {\n LayoutEvents.emit();\n this.input?.focus();\n });\n }\n break;\n }\n case isKeyArrowHorizontal(e):\n this.handleWrapperArrows(e);\n break;\n case isKeyEscape(e):\n this.wrapper?.blur();\n break;\n case isKeyEnter(e):\n e.preventDefault();\n if (this.state.activeTokens.length === 1) {\n this.handleTokenEdit(this.state.activeTokens[0]);\n }\n break;\n case isShortcutSelectAll(e):\n e.preventDefault();\n this.dispatch({\n type: 'SET_ACTIVE_TOKENS',\n payload: selectedItems.filter((item) => !this.isTokenDisabled(selectedItems.indexOf(item))),\n });\n break;\n }\n };\n\n private handleWrapperArrows = (e: KeyboardEvent<HTMLElement>) => {\n e.preventDefault();\n const selectedItems = this.getProps().selectedItems;\n const activeTokens = this.state.activeTokens;\n const activeItemIndex = selectedItems.indexOf(activeTokens[0]);\n const newItemIndex = this.getAvailableTokenIndex(activeItemIndex, isKeyArrowLeft(e));\n const isLeftEdge = activeItemIndex === 0 && isKeyArrowLeft(e);\n const isRightEdge = newItemIndex === selectedItems.length && isKeyArrowRight(e);\n if (!e.shiftKey && activeTokens.length === 1) {\n this.handleWrapperArrowsWithoutShift(isLeftEdge, isRightEdge, newItemIndex);\n } else {\n this.handleWrapperArrowsWithShift(isLeftEdge, isRightEdge, newItemIndex);\n }\n };\n\n private handleWrapperArrowsWithoutShift = (isLeftEdge: boolean, isRightEdge: boolean, newItemIndex: number) => {\n if (isRightEdge) {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' }, () => this.input?.focus());\n } else if (!isLeftEdge) {\n this.dispatch({\n type: 'SET_ACTIVE_TOKENS',\n payload: [this.getProps().selectedItems[newItemIndex]],\n });\n }\n };\n\n private handleWrapperArrowsWithShift = (isLeftEdge: boolean, isRightEdge: boolean, newItemIndex: number) => {\n if (!isLeftEdge && !isRightEdge) {\n const itemNew = this.getProps().selectedItems[newItemIndex];\n const itemsNew = [itemNew, ...this.state.activeTokens.filter((item) => !this.isEqual(item, itemNew))];\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: itemsNew });\n }\n };\n\n private handleValueChange = (items: T[]) => {\n this.getProps().onValueChange(items);\n };\n\n private handleAddItem = () => {\n const item = this.getProps().valueToItem(this.state.inputValue);\n if (item) {\n this.selectItem(item);\n }\n };\n\n private selectItem = (item: T) => {\n const { selectedItems: allItems, valueToString } = this.getProps();\n const selectedItems = allItems.filter(isSimpleItem);\n if (this.isEditingMode) {\n this.dispatch({ type: 'UPDATE_QUERY', payload: valueToString(item) }, this.finishTokenEdit);\n } else if (!this.hasValueInItems(selectedItems, item)) {\n this.handleValueChange(selectedItems.concat([item]));\n this.dispatch({ type: 'CLEAR_INPUT' });\n this.tryGetItems();\n }\n };\n\n private handleRemoveToken = (item: T) => {\n this.props.onValueChange?.(this.getProps().selectedItems.filter((_) => !this.isEqual(_, item)));\n const filteredActiveTokens = this.state.activeTokens.filter((_) => !this.isEqual(_, item));\n\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: filteredActiveTokens });\n if (filteredActiveTokens.length === 0) {\n this.focusInput({ preventScroll: true });\n }\n\n this.tryGetItems();\n };\n\n private handleTokenClick = (event: React.MouseEvent<HTMLElement>, itemNew: T) => {\n const items = this.state.activeTokens;\n if (event.ctrlKey) {\n const newItems = this.hasValueInItems(this.state.activeTokens, itemNew)\n ? items.filter((item) => !this.isEqual(item, itemNew))\n : [...items, itemNew];\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: newItems });\n } else {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [itemNew] });\n }\n this.focusInput({ preventScroll: true });\n };\n\n private handleTokenEdit = (itemNew: T) => {\n const { selectedItems, valueToString } = this.getProps();\n const editingTokenIndex = selectedItems.findIndex((item) => item === itemNew);\n this.dispatch({ type: 'SET_EDITING_TOKEN_INDEX', payload: editingTokenIndex });\n\n if (this.isInputValueChanged) {\n if (this.state.reservedInputValue === undefined) {\n this.dispatch({ type: 'SET_TEMPORARY_QUERY', payload: this.state.inputValue });\n }\n }\n this.dispatch({ type: 'UPDATE_QUERY', payload: valueToString(itemNew) }, this.selectInputText);\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n\n this.tryGetItems();\n };\n\n private finishTokenEdit = () => {\n const { selectedItems, valueToString } = this.getProps();\n const { editingTokenIndex, inputValue, reservedInputValue, autocompleteItems } = this.state;\n\n const editedItem =\n autocompleteItems?.find((item) => valueToString(item) === inputValue) ?? this.getProps().valueToItem(inputValue);\n\n const newItems = selectedItems.concat([]);\n\n if (!this.hasValueInItems(selectedItems, editedItem)) {\n newItems.splice(editingTokenIndex, 1, ...(this.isInputValueChanged ? [editedItem] : []));\n this.handleValueChange(newItems);\n }\n\n this.dispatch({ type: 'REMOVE_EDITING_TOKEN_INDEX' });\n\n if (reservedInputValue) {\n this.dispatch({ type: 'UPDATE_QUERY', payload: reservedInputValue });\n this.dispatch({ type: 'REMOVE_TEMPORARY_QUERY' });\n } else {\n this.dispatch({ type: 'CLEAR_INPUT' });\n }\n\n if (newItems.length === selectedItems.length) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [newItems[editingTokenIndex]] });\n }\n };\n\n private checkForUnexpectedInput = () => {\n const { inputValue } = this.state;\n const { onUnexpectedInput } = this.props;\n\n // чекаем не возвращает ли что-нибудь обработчик\n const returnedValue = onUnexpectedInput?.(inputValue);\n\n if (returnedValue === undefined) {\n if (\n this.featureFlags.tokenInputCreateTokenOnBlurInWithoutReferenceMode &&\n this.type === TokenInputType.WithoutReference\n ) {\n this.handleAddItem();\n }\n\n return;\n }\n\n if (returnedValue === null) {\n this.dispatch({ type: 'CLEAR_INPUT' }, () => {\n if (this.isEditingMode) {\n this.finishTokenEdit();\n }\n });\n\n return;\n }\n\n if (returnedValue) {\n this.selectItem(returnedValue);\n }\n };\n\n private handleChangeInputValue = (event: ChangeEvent<HTMLTextAreaElement>) => {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n let query = event.target.value.trimLeft();\n\n if (query.endsWith(' ')) {\n query = query.trimRight() + ' ';\n }\n if (this.isInputValueChanged && query === '') {\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: undefined });\n }\n this.dispatch({ type: 'UPDATE_QUERY', payload: query }, () => {\n this.tryGetItems(query);\n });\n if (this.props.onInputValueChange) {\n this.props.onInputValueChange(query);\n }\n };\n\n private highlightMenuItem = () => {\n if (\n this.menuRef &&\n this.state.autocompleteItems &&\n this.state.autocompleteItems.length > 0 &&\n this.type !== TokenInputType.Combined\n ) {\n this.menuRef.highlightItem(0);\n }\n };\n\n private renderTokensStart = () => {\n const { editingTokenIndex } = this.state;\n const selectedItems = this.getProps().selectedItems;\n const delimiter = editingTokenIndex >= 0 ? editingTokenIndex : selectedItems.length;\n return selectedItems.slice(0, delimiter).map(this.renderToken);\n };\n\n private renderTokensEnd = () => {\n if (this.state.editingTokenIndex >= 0) {\n return this.getProps()\n .selectedItems.slice(this.state.editingTokenIndex + 1)\n .map(this.renderToken);\n }\n };\n\n private renderToken = (item: T, index: number) => {\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(\n item as T & AnyObject,\n {\n size: this.size,\n isActive,\n onClick: handleTokenClick,\n onDoubleClick: handleTokenDoubleClick,\n onRemove: handleIconClick,\n disabled,\n },\n index,\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], 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\nfunction isSimpleItem<T>(item: TokenInputExtendedItem<T>): item is T {\n return !isFunction(item) && !React.isValidElement(item);\n}\n"],"mappings":";;;;;;;;;;;AAWA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,aAAa,MAAM,gBAAgB;AAC1C,SAASC,YAAY,QAAQ,0BAA0B;;AAEvD,SAASC,QAAQ,QAAQ,sBAAsB;AAC/C;EACEC,oBAAoB;EACpBC,cAAc;EACdC,eAAe;EACfC,YAAY;EACZC,kBAAkB;EAClBC,cAAc;EACdC,UAAU;EACVC,WAAW;EACXC,UAAU;EACVC,WAAW;EACXC,mBAAmB;AACd,uCAAuC;AAC9C,OAAO,KAAKC,YAAY,MAAM,wBAAwB;;;AAGtD,SAASC,KAAK,QAAQ,UAAU;;AAEhC,SAASC,QAAQ,QAAQ,aAAa;;AAEtC,SAASC,UAAU,EAAEC,YAAY,EAAEC,WAAW,QAAQ,iBAAiB;AACvE,SAASC,YAAY,QAAQ,gCAAgC;;AAE7D,SAASC,MAAM,QAAQ,6BAA6B;;AAEpD,SAASC,aAAa,QAAQ,8BAA8B;AAC5D,SAASC,EAAE,QAAQ,2BAA2B;;AAE9C,SAASC,WAAW,EAAEC,QAAQ,QAAQ,oBAAoB;AAC1D,SAASC,iBAAiB,QAAQ,6BAA6B;AAC/D,SAASC,MAAM,QAAQ,oBAAoB;AAC3C,SAASC,SAAS,QAAQ,oBAAoB;;AAE9C,SAASC,0BAA0B,EAAEC,0BAA0B,QAAQ,+BAA+B;AACtG,SAASC,QAAQ,QAAQ,8BAA8B;;AAEvD,SAASC,KAAK,IAALA,MAAK,QAAQ,iBAAiB;AACvC,SAASC,eAAe,QAAQ,oBAAoB;;;AAGpD,SAASC,sBAAsB,QAAQ,UAAU;AACjD,SAASC,MAAM,QAAQ,qBAAqB;;AAE5C,SAASC,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,cAAc,QAAQ,kBAAkB;AACjD,SAASC,eAAe,QAAQ,mBAAmB;;AAEnD,IAAMC,cAAc,GAAG,gBAAgB;;AAEvC,WAAYC,cAAc,0BAAdA,cAAc,GAAdA,cAAc,CAAdA,cAAc,yCAAdA,cAAc,CAAdA,cAAc,+CAAdA,cAAc,CAAdA,cAAc,sCAAdA,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2J1B,OAAO,IAAMC,YAAY,GAAG;EAC1BC,UAAU,EAAE,EAAE;EACdC,kBAAkB,EAAEC,SAAS;EAC7BC,iBAAiB,EAAED,SAAS;EAC5BE,YAAY,EAAE,EAAE;EAChBC,iBAAiB,EAAE,CAAC,CAAC;EACrBC,OAAO,EAAE,KAAK;EACdC,OAAO,EAAE,KAAK;EACdC,WAAW,EAAE,KAAK;EAClBC,eAAe,EAAE,CAAC;EAClBC,gBAAgB,EAAE;AACpB,CAAC;;AAED,OAAO,IAAMC,kBAAkB,GAAG;EAChCC,IAAI,EAAE,kBAAkB;EACxBC,cAAc,EAAE,sBAAsB;EACtCC,KAAK,EAAE;AACT,CAAU;;;;;;;;;;;;;;;;;;;;;;;;AAwBV,IAAMC,YAAY,GAAG,SAAfA,YAAYA,CAAyBC,IAAO,UAAaA,IAAI,CAACC,QAAQ,CAAC,CAAC;AAC9E;AACA,IAAMC,QAAQ,GAAG,SAAXA,QAAQA,CAAuBF,IAAO,UAAQA,IAAI;AACxD,IAAMG,kBAAkB,GAAG,SAArBA,kBAAkBA;AACtBH,IAAO,EAAAI,IAAA;;;AAGPC,KAAa,OAFXC,QAAQ,GAAAF,IAAA,CAARE,QAAQ,CAAEC,OAAO,GAAAH,IAAA,CAAPG,OAAO,CAAEC,aAAa,GAAAJ,IAAA,CAAbI,aAAa,CAAEC,QAAQ,GAAAL,IAAA,CAARK,QAAQ,CAAEC,QAAQ,GAAAN,IAAA,CAARM,QAAQ,CAAEC,IAAI,GAAAP,IAAA,CAAJO,IAAI;;IAI5DtE,KAAA,CAAAuE,aAAA,CAACvD,KAAK;MACJwD,GAAG,EAAEb,IAAI,CAACC,QAAQ,CAAC,CAAE;MACrBK,QAAQ,EAAEA,QAAS;MACnBC,OAAO,EAAEA,OAAQ;MACjBC,aAAa,EAAEA,aAAc;MAC7BC,QAAQ,EAAEA,QAAS;MACnBC,QAAQ,EAAEA,QAAS;MACnBC,IAAI,EAAEA,IAAK;;IAEVX,IAAI,CAACC,QAAQ,CAAC;IACV,CAAC,GACT;;;AAED;AACA;AACA;;;AAGaa,UAAU,IAAAC,IAAA,GAFtBpD,MAAM,CAAC,YAAY,EAAEa,sBAAsB,CAAC,EAD5CT,QAAQ,CAAAiD,MAAA,GAAAD,IAAA,CAAAC,MAAA,GAER3C,QAAQ,CAAA2C,MAAA,IAAAC,WAAA,0BAAAC,oBAAA,YAAAJ,WAAA,OAAAK,KAAA,UAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAC,IAAA,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,KAAAF,IAAA,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA,GAAAN,KAAA,GAAAD,oBAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,oBAAA,SAAAU,MAAA,CAAAL,IAAA,WAAAJ,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA2CAU,KAAK,GAAuB9C,YAAY,CAAAoC,KAAA;;IAE9BW,WAAW,GAAW7D,MAAM,CAAC,CAAC,CAAAkD,KAAA;IACvCY,MAAM,GAAGvF,QAAQ,CAACoD,IAAI,GAAGnC,WAAW,CAAC,CAAC,CAAA0D,KAAA;;;;;IAKtCa,KAAK,GAA+B,IAAI,CAAAb,KAAA;IACxCc,eAAe,GAA6B,IAAI,CAAAd,KAAA;IAChDe,UAAU,GAA2B,IAAI,CAAAf,KAAA;IACzCgB,OAAO,GAA4B,IAAI,CAAAhB,KAAA;IACvCiB,kBAAkB,gBAAG/F,KAAK,CAACgG,SAAS,CAAiB,CAAC,CAAAlB,KAAA;;;IAGtDmB,cAAc,GAAG,IAAIC,GAAG,CAAC,CAAC,CAAApB,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAqQ1BqB,OAAO,GAAG,UAACC,KAAQ,EAAEC,KAAQ,EAAK;MACxC,IAAAC,cAAA,GAAqBxB,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAA5BC,QAAQ,GAAAF,cAAA,CAARE,QAAQ;MAChB,OAAOvG,aAAa,CAACuG,QAAQ,CAACJ,KAAK,CAAC,EAAEI,QAAQ,CAACH,KAAK,CAAC,CAAC;IACxD,CAAC,CAAAvB,KAAA;;IAEO2B,eAAe,GAAG,UAACC,KAAU,EAAEC,KAAiB,EAAK;MAC3D,IAAAC,eAAA,GAA0B9B,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAAjCM,aAAa,GAAAD,eAAA,CAAbC,aAAa;MACrB,IAAI,OAAOF,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAOD,KAAK,CAACI,GAAG,CAAC,UAACnD,IAAI,UAAKkD,aAAa,CAAClD,IAAI,CAAC,GAAC,CAACoD,QAAQ,CAACJ,KAAK,CAAC;MACjE;;MAEA,OAAOD,KAAK,CAACM,IAAI,CAAC,UAACrD,IAAI,UAAKmB,KAAA,CAAKqB,OAAO,CAACxC,IAAI,EAAEgD,KAAK,CAAC,GAAC;IACxD,CAAC,CAAA7B,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAuCOmC,QAAQ,GAAG,UAACC,IAAyB,UAAMpC,KAAA,CAAKa,KAAK,GAAGuB,IAAI,EAAC,CAAApC,KAAA;IAC7DqC,kBAAkB,GAAG,UAACD,IAAuB,UAAMpC,KAAA,CAAKc,eAAe,GAAGsB,IAAI,EAAC,CAAApC,KAAA;IAC/EsC,aAAa,GAAG,UAACF,IAAqB,UAAMpC,KAAA,CAAKe,UAAU,GAAGqB,IAAI,EAAC,CAAApC,KAAA;IACnEuC,UAAU,GAAG,UAACH,IAAsB,UAAMpC,KAAA,CAAKgB,OAAO,GAAGoB,IAAI,EAAC,CAAApC,KAAA;;IAE9DwC,QAAQ,GAAG,UAACC,MAAwB,EAAEC,EAAe,EAAK;MAChE1C,KAAA,CAAK2C,QAAQ,CAAC,UAACC,SAAS,UAAKrF,iBAAiB,CAACqF,SAAS,EAAEH,MAAM,CAAC,IAAEC,EAAE,CAAC;IACxE,CAAC,CAAA1C,KAAA;;;;;;;;;;;;;;IAcO6C,gBAAgB,GAAG,UAACC,KAAsC,EAAK;MACrE9C,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;MACvC/C,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAACuB,OAAO,CAACF,KAAK,CAAC;IAChC,CAAC,CAAA9C,KAAA;;IAEOiD,eAAe,GAAG,UAACH,KAAsC,EAAK;MACpE,IAAMI,YAAY,GAAGlD,KAAA,CAAKkD,YAAY,CAACJ,KAAK,CAAC;;MAE7C,IAAI,CAACI,YAAY,EAAE;QACjBlD,KAAA,CAAKmD,iBAAiB,CAAC,CAAC;MAC1B;;MAEA,IAAID,YAAY,IAAIlD,KAAA,CAAKU,KAAK,CAACrC,WAAW,EAAE,KAAA+E,WAAA;QAC1CN,KAAK,CAACO,cAAc,CAAC,CAAC;QACtB;QACA,CAAAD,WAAA,GAAApD,KAAA,CAAKa,KAAK,aAAVuC,WAAA,CAAYE,KAAK,CAAC,EAAEC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1C;QACAnI,YAAY,CAACoI,qBAAqB,YAAlCpI,YAAY,CAACoI,qBAAqB,CAAG,iBAAAC,YAAA,SAAAA,YAAA,GAAMzD,KAAA,CAAKa,KAAK,qBAAV4C,YAAA,CAAYH,KAAK,CAAC,EAAEC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,GAAC;;QAEtFvD,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,kBAAkB,EAAEW,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;MAC7D,CAAC,MAAM;QACL1D,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/B/C,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAACkC,MAAM,CAACb,KAAK,CAAC;MAC/B;IACF,CAAC,CAAA9C,KAAA;;IAEOmD,iBAAiB,GAAG,YAAM;MAChC,IAAAS,WAAA,GAAoD5D,KAAA,CAAKU,KAAK,CAAtD7C,UAAU,GAAA+F,WAAA,CAAV/F,UAAU,CAAqBgG,QAAQ,GAAAD,WAAA,CAA3B5F,iBAAiB;MACrC,IAAMA,iBAAiB,GAAG6F,QAAQ,oBAARA,QAAQ,CAAEC,MAAM,CAACC,YAAY,CAAC;;MAExD,IAAIlG,UAAU,KAAK,EAAE,EAAE;QACrB;QACA,IAAImC,KAAA,CAAKgE,aAAa,EAAE;UACtBhE,KAAA,CAAKiE,eAAe,CAAC,CAAC;QACxB;QACA;MACF;;MAEA;MACA,IAAIjE,KAAA,CAAKgE,aAAa,IAAI,CAAChE,KAAA,CAAKkE,mBAAmB,EAAE;QACnDlE,KAAA,CAAKiE,eAAe,CAAC,CAAC;QACtB;MACF;;MAEA;MACA,IAAIjG,iBAAiB,IAAIA,iBAAiB,CAACmC,MAAM,KAAK,CAAC,EAAE;QACvD,IAAMtB,IAAI,GAAGb,iBAAiB,CAAC,CAAC,CAAC;;QAEjC,IAAIgC,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAACM,aAAa,CAAClD,IAAI,CAAC,KAAKhB,UAAU,EAAE;UACtDmC,KAAA,CAAKgE,aAAa,GAAGhE,KAAA,CAAKiE,eAAe,CAAC,CAAC,GAAGjE,KAAA,CAAKmE,UAAU,CAACtF,IAAI,CAAC;;UAEnE;QACF;MACF;;MAEA,IAAImB,KAAA,CAAKoE,cAAc,EAAE;QACvBpE,KAAA,CAAKqE,uBAAuB,CAAC,CAAC;MAChC;IACF,CAAC,CAAArE,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;IA2BOkD,YAAY,GAAG,UAACJ,KAA8B,EAAK;MACzD,IAAI9C,KAAA,CAAKsE,OAAO,IAAIlJ,YAAY,CAACmJ,QAAQ,EAAE,KAAAC,qBAAA;QACzC,IAAMC,IAAI,GAAG9H,WAAW,EAAA6H,qBAAA,GAACxE,KAAA,CAAKc,eAAe,qBAApB0D,qBAAA,CAAsBE,UAAU,CAAC,CAAC,CAAC;QAC5D,IAAMC,aAAa,GAAG7B,KAAK,CAAC6B,aAAa,IAAIvJ,YAAY,CAACmJ,QAAQ,CAACK,aAAa;;QAEhF,IAAIH,IAAI,IAAIA,IAAI,CAACI,QAAQ,CAACF,aAAa,CAAC,EAAE;UACxC,OAAO,IAAI;QACb;MACF;MACA,OAAO,KAAK;IACd,CAAC,CAAA3E,KAAA;;IAEO8E,sBAAsB,GAAG,UAAChC,KAAoC,EAAK,KAAAiC,aAAA;MACzE/E,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,kBAAkB,EAAEW,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;MAC1D,IAAMsB,MAAM,GAAGlC,KAAK,CAACkC,MAAqB;MAC1C,IAAMC,cAAc,GAAGD,MAAM,MAAAD,aAAA,GAAI/E,KAAA,CAAKgB,OAAO,qBAAZ+D,aAAA,CAAcF,QAAQ,CAACG,MAAM,CAAC,KAAIA,MAAM,KAAKhF,KAAA,CAAKgB,OAAO,IAAIgE,MAAM,KAAKhF,KAAA,CAAKa,KAAK;MACnH,IAAI,CAACoE,cAAc,EAAE;QACnBjF,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,0BAA0B,CAAC,CAAC,CAAC;MACrD;IACF,CAAC,CAAA/C,KAAA;;IAEOkF,oBAAoB,GAAG,UAACC,CAAgC,EAAK;MACnE;MACA;MACEnF,KAAA,CAAKoF,KAAK,CAACC,SAAS;MACpBF,CAAC,CAACH,MAAM,KAAKhF,KAAA,CAAKiB,kBAAkB,CAACqE,OAAO;MAC3CtF,KAAA,CAAKU,KAAK,CAACzC,YAAY,CAACkC,MAAM,KAAK,CAAC,IAAI,CAACH,KAAA,CAAKU,KAAK,CAACvC,OAAO,CAAC;MAC7D,KAAAoH,YAAA;QACAvF,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/B/C,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;QACvC/C,KAAA,CAAKwF,UAAU,CAAC,CAAC;QACjB,CAAAD,YAAA,GAAAvF,KAAA,CAAKa,KAAK,aAAV0E,YAAA,CAAYE,cAAc,CAAC,EAAEC,QAAQ,EAAE,MAAM,EAAEC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;MACnE;MACA3F,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,kBAAkB,EAAEW,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAA1D,KAAA;;IAEO4F,UAAU,GAAG,UAAC9C,KAAU,EAAK;MACnC,IAAI,CAAC9C,KAAA,CAAKU,KAAK,CAACvC,OAAO,IAAI6B,KAAA,CAAKU,KAAK,CAACzC,YAAY,CAACkC,MAAM,KAAK,CAAC,IAAIH,KAAA,CAAK6F,eAAe,EAAE;QACvF;MACF;MACA/C,KAAK,CAACO,cAAc,CAAC,CAAC;MACtB,IAAAyC,eAAA,GAAqD9F,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAA5DsE,aAAa,GAAAD,eAAA,CAAbC,aAAa,CAAEhE,aAAa,GAAA+D,eAAA,CAAb/D,aAAa,CAAEiE,UAAU,GAAAF,eAAA,CAAVE,UAAU;MAChD;MACA,IAAMC,MAAM,GAAGjG,KAAA,CAAKU,KAAK,CAACzC,YAAY;MACnC+D,GAAG,CAAC,UAACkE,KAAK,UAAKH,aAAa,CAACI,OAAO,CAACD,KAAK,CAAC,GAAC;MAC5CE,IAAI,CAAC,CAAC;MACNpE,GAAG,CAAC,UAAC9C,KAAK,UAAK6G,aAAa,CAAC7G,KAAK,CAAC,GAAC;MACpC8C,GAAG,CAAC,UAACnD,IAAI,UAAKkD,aAAa,CAAClD,IAAI,CAAC,GAAC;MACrCiE,KAAK,CAACuD,aAAa,CAACC,OAAO,CAAC,YAAY,EAAEL,MAAM,CAACM,IAAI,CAACP,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC,CAAAhG,KAAA;;IAEOwG,gBAAgB,GAAG,UAAC1D,KAAwC,EAAK;MACvE,IAAI9C,KAAA,CAAK+C,IAAI,KAAKpF,cAAc,CAAC8I,aAAa,IAAI,CAAC3D,KAAK,CAACuD,aAAa,EAAE;QACtE;MACF;MACA,IAAMK,KAAK,GAAG5D,KAAK,CAACuD,aAAa,CAACM,OAAO,CAAC,MAAM,CAAC;MACjD,IAAAC,eAAA,GAAkE5G,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAAzEuE,UAAU,GAAAY,eAAA,CAAVZ,UAAU,CAAED,aAAa,GAAAa,eAAA,CAAbb,aAAa,CAAEc,WAAW,GAAAD,eAAA,CAAXC,WAAW,CAAEC,aAAa,GAAAF,eAAA,CAAbE,aAAa;MAC7D,IAAId,UAAU,CAAC9D,IAAI,CAAC,UAAC6E,SAAS,UAAKL,KAAK,CAACzE,QAAQ,CAAC8E,SAAS,CAAC,GAAC,EAAE;QAC7DjE,KAAK,CAACO,cAAc,CAAC,CAAC;QACtBP,KAAK,CAACkE,eAAe,CAAC,CAAC;QACvB,IAAMf,MAAM,GAAGS,KAAK,CAACO,IAAI,CAAC,CAAC,CAACC,KAAK,CAAC,IAAIC,MAAM,OAAKnB,UAAU,CAACO,IAAI,CAAC,EAAE,CAAC,OAAI,CAAC,CAAC;QAC1E,IAAM3E,KAAK,GAAGqE,MAAM;QACjBnC,MAAM,CAACsD,OAAO,CAAC;QACfpF,GAAG,CAAC,UAACkE,KAAK,UAAKW,WAAW,CAACX,KAAK,CAAC,GAAC;QAClCpC,MAAM,CAAC,UAACjF,IAAI,UAAKA,IAAI,IAAI,CAACmB,KAAA,CAAK2B,eAAe,CAACoE,aAAa,EAAElH,IAAI,CAAC,GAAC;QACvE,IAAMwI,QAAQ,GAAGtB,aAAa,CAACtF,MAAM,CAACmB,KAAK,CAAC;QAC5CkF,aAAa,CAACO,QAAQ,CAAC;;QAEvBrH,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,wBAAwB,EAAEW,OAAO,EAAE3F,SAAS,CAAC,CAAC,CAAC;QACrEiC,KAAA,CAAKsH,WAAW,CAAC,CAAC;MACpB;IACF,CAAC,CAAAtH,KAAA;;IAEOsH,WAAW,iCAAAC,KAAA,GAAAC,iBAAA,eAAAC,mBAAA,CAAAC,IAAA,CAAG,SAAAC,QAAOC,KAAK,OAAA5J,iBAAA,EAAA6J,eAAA,EAAA9B,aAAA,EAAAc,WAAA,EAAA9E,aAAA,EAAA+F,cAAA,EAAAC,aAAA,EAAAC,uBAAA,EAAAC,6BAAA,EAAAC,WAAA,EAAAC,eAAA,QAAAV,mBAAA,CAAAW,IAAA,UAAAC,SAAAC,QAAA,qBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA,cAALZ,KAAK,cAALA,KAAK,GAAG,EAAE;cACjC5H,KAAA,CAAKoF,KAAK,CAACqD,QAAQ,KAAKzI,KAAA,CAAK0I,mBAAmB,IAAI,CAAC1I,KAAA,CAAKoF,KAAK,CAACuD,yBAAyB,CAAC,IAAAL,QAAA,CAAAE,IAAA;cAC5FxI,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,aAAa,EAAEW,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC4E,QAAA,CAAAE,IAAA;gBACtBxI,KAAA,CAAKoF,KAAK,CAACqD,QAAQ,CAACb,KAAK,CAAC,SAApD5J,iBAAiB,GAAAsK,QAAA,CAAAM,IAAA;cACvB5I,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,aAAa,EAAEW,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAACmE,eAAA;;cAED7H,KAAA,CAAKyB,QAAQ,CAAC,CAAC,EAA7DsE,aAAa,GAAA8B,eAAA,CAAb9B,aAAa,EAAEc,WAAW,GAAAgB,eAAA,CAAXhB,WAAW,EAAE9E,aAAa,GAAA8F,eAAA,CAAb9F,aAAa;cAC3C+F,cAAc,GAAG,SAAjBA,cAAcA,CAAIjJ,IAAO,UAAKmB,KAAA,CAAK2B,eAAe,CAACoE,aAAa,EAAElH,IAAI,CAAC;cACvEkJ,aAAa,GAAG,SAAhBA,aAAaA,CAAIlJ,IAAO,EAAK;gBACjC,IAAMqJ,WAAW,GAAGnC,aAAa,CAAC/F,KAAA,CAAKU,KAAK,CAACxC,iBAAiB,CAAC;gBAC/D,OAAO,CAAC,CAACgK,WAAW,IAAIlI,KAAA,CAAKqB,OAAO,CAACxC,IAAI,EAAEqJ,WAAW,CAAC;cACzD,CAAC;;cAEKF,uBAAuB,GAAGhK,iBAAiB,CAAC8F,MAAM,CAAC,UAACjF,IAAI;kBAC5DkF,YAAY,CAAClF,IAAI,CAAC,GAAG,CAACiJ,cAAc,CAACjJ,IAAI,CAAC,IAAIkJ,aAAa,CAAClJ,IAAI,CAAC,GAAG,IAAI;cAC1E,CAAC;cACKoJ,6BAA6B,GAAGD,uBAAuB,CAAClE,MAAM,CAACC,YAAY,CAAC;;cAElF,IAAI/D,KAAA,CAAKgE,aAAa,EAAE;gBAChBkE,WAAW,GAAGnC,aAAa,CAAC/F,KAAA,CAAKU,KAAK,CAACxC,iBAAiB,CAAC;gBAC/D;gBACE8B,KAAA,CAAKqB,OAAO,CAAC6G,WAAW,EAAErB,WAAW,CAAC7G,KAAA,CAAKU,KAAK,CAAC7C,UAAU,CAAC,CAAC;gBAC7D,CAACmC,KAAA,CAAK2B,eAAe,CAACsG,6BAA6B,EAAEC,WAAW,CAAC;gBACjE;kBACAF,uBAAuB,CAACa,OAAO,CAACX,WAAW,CAAC;gBAC9C;cACF;;cAEA,IAAIN,KAAK,KAAK,EAAE,IAAI5H,KAAA,CAAK0I,mBAAmB,EAAE;gBAC5C1I,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,wBAAwB,EAAEW,OAAO,EAAEsE,uBAAuB,CAAC,CAAC,EAAE,YAAM;kBACxF/L,YAAY,CAAC6M,IAAI,CAAC,CAAC;kBACnB9I,KAAA,CAAK+I,iBAAiB,CAAC,CAAC;gBAC1B,CAAC,CAAC;cACJ;cACMZ,eAAe,GAAGF,6BAA6B,CAACe,SAAS;gBAC7D,UAACnK,IAAI,UAAKkD,aAAa,CAAClD,IAAI,CAAC,CAACoK,WAAW,CAAC,CAAC,KAAKjJ,KAAA,CAAKU,KAAK,CAAC7C,UAAU,CAACoL,WAAW,CAAC,CAAC;cACrF,CAAC;cACDC,UAAU,CAAC,iBAAAC,aAAA,SAAAA,aAAA,GAAMnJ,KAAA,CAAKsE,OAAO,qBAAZ6E,aAAA,CAAcC,aAAa,CAACjB,eAAe,GAAG,CAAC,GAAG,CAAC,GAAGA,eAAe,CAAC,IAAE,CAAC,CAAC,CAAC,0BAAAG,QAAA,CAAAe,IAAA,OAAA1B,OAAA,GAE/F,oBAAA2B,EAAA,UAAA/B,KAAA,CAAA/G,KAAA,OAAAN,SAAA,QAAAF,KAAA;;;;IAEOuJ,aAAa,GAAG,UAACzG,KAAyC,EAAK;MACrE9C,KAAA,CAAKoF,KAAK,CAACoE,SAAS,YAApBxJ,KAAA,CAAKoF,KAAK,CAACoE,SAAS,CAAG1G,KAAK,CAAC;;MAE7B,IAAIA,KAAK,CAAC2G,gBAAgB,EAAE;QAC1B;MACF;;MAEA,IAAIzJ,KAAA,CAAK6F,eAAe,EAAE;QACxB7F,KAAA,CAAK0J,kBAAkB,CAAC5G,KAAK,CAAC;MAChC,CAAC,MAAM;QACL9C,KAAA,CAAK2J,oBAAoB,CAAC7G,KAAK,CAAC;MAClC;IACF,CAAC,CAAA9C,KAAA;;IAEO0J,kBAAkB,GAAG,UAACvE,CAAqC,EAAK,KAAAyE,qBAAA,EAAAC,sBAAA,EAAAC,YAAA,EAAAC,YAAA;MACtE5E,CAAC,CAAC6B,eAAe,CAAC,CAAC;;MAEnB;MACGhH,KAAA,CAAK+C,IAAI,KAAKpF,cAAc,CAAC8I,aAAa;MACzCzG,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAACuE,UAAU,CAAC9D,IAAI,CAAC,UAACxC,GAAG,UAAKA,GAAG,KAAKyF,CAAC,CAACzF,GAAG,IAAKA,GAAG,KAAK,GAAG,IAAI9D,UAAU,CAACuJ,CAAC,CAAE,GAAC;MAC1FrJ,UAAU,CAACqJ,CAAC,CAAC,IAAInF,KAAA,CAAK+C,IAAI,KAAKpF,cAAc,CAACqM,gBAAiB;MAChE;QACA7E,CAAC,CAAC9B,cAAc,CAAC,CAAC;QAClB,IAAM4G,QAAQ,GAAGjK,KAAA,CAAKU,KAAK,CAAC7C,UAAU;QACtC,IAAIoM,QAAQ,KAAK,EAAE,EAAE;UACnB,IAAIjK,KAAA,CAAKgE,aAAa,EAAE;YACtBhE,KAAA,CAAKiE,eAAe,CAAC,CAAC;UACxB,CAAC,MAAM;YACLjE,KAAA,CAAKkK,aAAa,CAAC,CAAC;UACtB;QACF;MACF;MACA,IAAMC,2BAA2B,GAAG,CAACnK,KAAA,CAAKoK,eAAe,CAACpK,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAACsE,aAAa,CAAC5F,MAAM,GAAG,CAAC,CAAC;MACnG,IAAMkK,kBAAkB,GAAGrK,KAAA,CAAKsK,eAAe,IAAI,EAAAV,qBAAA,IAAAC,sBAAA,GAAC7J,KAAA,CAAKU,KAAK,CAAC1C,iBAAiB,qBAA5B6L,sBAAA,CAA8B1J,MAAM,YAAAyJ,qBAAA,GAAI,CAAC,IAAI,CAAC;;MAElG,QAAQ,IAAI;QACV,KAAK9N,UAAU,CAACqJ,CAAC,CAAC;UAChB,IAAIkF,kBAAkB,IAAIrK,KAAA,CAAKsE,OAAO,EAAE;YACtCtE,KAAA,CAAKsE,OAAO,CAACiG,KAAK,CAACpF,CAAC,CAAC;UACvB;UACA;UACA;UACAA,CAAC,CAAC9B,cAAc,CAAC,CAAC;UAClB;QACF,KAAK3H,kBAAkB,CAACyJ,CAAC,CAAC;UACxBA,CAAC,CAAC9B,cAAc,CAAC,CAAC;UAClB,IAAIrD,KAAA,CAAKsE,OAAO,EAAE;YAChB,IAAI7I,YAAY,CAAC0J,CAAC,CAAC,EAAE;cACnBnF,KAAA,CAAKsE,OAAO,CAACkG,EAAE,CAAC,CAAC;YACnB,CAAC,MAAM;cACLxK,KAAA,CAAKsE,OAAO,CAACmG,IAAI,CAAC,CAAC;YACrB;UACF;UACA;QACF,KAAK1O,WAAW,CAACoJ,CAAC,CAAC;UACjB,CAAA2E,YAAA,GAAA9J,KAAA,CAAKa,KAAK,aAAViJ,YAAA,CAAYY,IAAI,CAAC,CAAC;UAClB;QACF,KAAK/O,cAAc,CAACwJ,CAAC,CAAC;UACpB,IAAI,CAACnF,KAAA,CAAKgE,aAAa,IAAImG,2BAA2B,EAAE;YACtDnK,KAAA,CAAK2K,oBAAoB,CAAC,CAAC;UAC7B;UACA;QACF,KAAKpP,cAAc,CAAC4J,CAAC,CAAC;UACpB,IAAI,EAAA4E,YAAA,GAAA/J,KAAA,CAAKa,KAAK,qBAAVkJ,YAAA,CAAYa,cAAc,MAAK,CAAC,EAAE;YACpC,IAAM1L,KAAK,GAAGc,KAAA,CAAK6K,sBAAsB,CAAC7K,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAACsE,aAAa,CAAC5F,MAAM,CAAC;YAC/E,IAAM2K,OAAO,GAAG9K,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAACsE,aAAa,CAAC7G,KAAK,CAAC;YACpD,IAAI4L,OAAO,EAAE;cACX9K,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,mBAAmB,EAAEW,OAAO,EAAE,CAACoH,OAAO,CAAC,CAAC,CAAC,CAAC;YAClE;UACF;UACA;MACJ;IACF,CAAC,CAAA9K,KAAA;;;;;;;;;IASOwF,UAAU,GAAG,UAACuF,OAAsB,EAAK;MAC/C3P,YAAY,CAACoI,qBAAqB,YAAlCpI,YAAY,CAACoI,qBAAqB,CAAG,iBAAAwH,YAAA,SAAAA,YAAA,GAAMhL,KAAA,CAAKa,KAAK,qBAAVmK,YAAA,CAAY1H,KAAK,CAACyH,OAAO,CAAC,GAAC;IACxE,CAAC,CAAA/K,KAAA;;IAEOiL,eAAe,GAAG,YAAM;MAC9B,IAAIjL,KAAA,CAAKa,KAAK,EAAE;QACdb,KAAA,CAAKa,KAAK,CAACqK,iBAAiB,CAAC,CAAC,EAAElL,KAAA,CAAKU,KAAK,CAAC7C,UAAU,CAACsC,MAAM,CAAC;MAC/D;IACF,CAAC,CAAAH,KAAA;;IAEO2J,oBAAoB,GAAG,UAACxE,CAA6B,EAAK,KAAAgG,cAAA;MAChE,IAAAC,eAAA,GAAyCpL,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAAhDsE,aAAa,GAAAqF,eAAA,CAAbrF,aAAa,CAAEe,aAAa,GAAAsE,eAAA,CAAbtE,aAAa;MACpC,QAAQ,IAAI;QACV,KAAKnL,cAAc,CAACwJ,CAAC,CAAC;QACtB,KAAKtJ,WAAW,CAACsJ,CAAC,CAAC,CAAE;YACnB,IAAMkG,kBAAkB,GAAGrL,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAACsE,aAAa,CAACI,OAAO;cAC9DnG,KAAA,CAAKU,KAAK,CAACzC,YAAY,CAAC+B,KAAA,CAAKU,KAAK,CAACzC,YAAY,CAACkC,MAAM,GAAG,CAAC;YAC5D,CAAC;YACD,IAAI,CAACH,KAAA,CAAKgE,aAAa,IAAI,CAAChE,KAAA,CAAKoK,eAAe,CAACiB,kBAAkB,CAAC,EAAE;cACpE,IAAMC,QAAQ,GAAGvF,aAAa,CAACjC,MAAM,CAAC,UAACjF,IAAI,UAAK,CAACmB,KAAA,CAAK2B,eAAe,CAAC3B,KAAA,CAAKU,KAAK,CAACzC,YAAY,EAAEY,IAAI,CAAC,GAAC;cACrGiI,aAAa,CAACwE,QAAQ,CAAC;cACvBtL,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,0BAA0B,CAAC,CAAC,EAAE,YAAM,KAAAwI,YAAA;gBACxDtP,YAAY,CAAC6M,IAAI,CAAC,CAAC;gBACnB,CAAAyC,YAAA,GAAAvL,KAAA,CAAKa,KAAK,aAAV0K,YAAA,CAAYjI,KAAK,CAAC,CAAC;cACrB,CAAC,CAAC;YACJ;YACA;UACF;QACA,KAAKhI,oBAAoB,CAAC6J,CAAC,CAAC;UAC1BnF,KAAA,CAAKwL,mBAAmB,CAACrG,CAAC,CAAC;UAC3B;QACF,KAAKpJ,WAAW,CAACoJ,CAAC,CAAC;UACjB,CAAAgG,cAAA,GAAAnL,KAAA,CAAKgB,OAAO,aAAZmK,cAAA,CAAcT,IAAI,CAAC,CAAC;UACpB;QACF,KAAK5O,UAAU,CAACqJ,CAAC,CAAC;UAChBA,CAAC,CAAC9B,cAAc,CAAC,CAAC;UAClB,IAAIrD,KAAA,CAAKU,KAAK,CAACzC,YAAY,CAACkC,MAAM,KAAK,CAAC,EAAE;YACxCH,KAAA,CAAKyL,eAAe,CAACzL,KAAA,CAAKU,KAAK,CAACzC,YAAY,CAAC,CAAC,CAAC,CAAC;UAClD;UACA;QACF,KAAKjC,mBAAmB,CAACmJ,CAAC,CAAC;UACzBA,CAAC,CAAC9B,cAAc,CAAC,CAAC;UAClBrD,KAAA,CAAKwC,QAAQ,CAAC;YACZO,IAAI,EAAE,mBAAmB;YACzBW,OAAO,EAAEqC,aAAa,CAACjC,MAAM,CAAC,UAACjF,IAAI,UAAK,CAACmB,KAAA,CAAKoK,eAAe,CAACrE,aAAa,CAACI,OAAO,CAACtH,IAAI,CAAC,CAAC;UAC5F,CAAC,CAAC;UACF;MACJ;IACF,CAAC,CAAAmB,KAAA;;IAEOwL,mBAAmB,GAAG,UAACrG,CAA6B,EAAK;MAC/DA,CAAC,CAAC9B,cAAc,CAAC,CAAC;MAClB,IAAM0C,aAAa,GAAG/F,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAACsE,aAAa;MACnD,IAAM9H,YAAY,GAAG+B,KAAA,CAAKU,KAAK,CAACzC,YAAY;MAC5C,IAAMyN,eAAe,GAAG3F,aAAa,CAACI,OAAO,CAAClI,YAAY,CAAC,CAAC,CAAC,CAAC;MAC9D,IAAM0N,YAAY,GAAG3L,KAAA,CAAK6K,sBAAsB,CAACa,eAAe,EAAEnQ,cAAc,CAAC4J,CAAC,CAAC,CAAC;MACpF,IAAMyG,UAAU,GAAGF,eAAe,KAAK,CAAC,IAAInQ,cAAc,CAAC4J,CAAC,CAAC;MAC7D,IAAM0G,WAAW,GAAGF,YAAY,KAAK5F,aAAa,CAAC5F,MAAM,IAAI3E,eAAe,CAAC2J,CAAC,CAAC;MAC/E,IAAI,CAACA,CAAC,CAAC2G,QAAQ,IAAI7N,YAAY,CAACkC,MAAM,KAAK,CAAC,EAAE;QAC5CH,KAAA,CAAK+L,+BAA+B,CAACH,UAAU,EAAEC,WAAW,EAAEF,YAAY,CAAC;MAC7E,CAAC,MAAM;QACL3L,KAAA,CAAKgM,4BAA4B,CAACJ,UAAU,EAAEC,WAAW,EAAEF,YAAY,CAAC;MAC1E;IACF,CAAC,CAAA3L,KAAA;;IAEO+L,+BAA+B,GAAG,UAACH,UAAmB,EAAEC,WAAoB,EAAEF,YAAoB,EAAK;MAC7G,IAAIE,WAAW,EAAE;QACf7L,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,0BAA0B,CAAC,CAAC,EAAE,iBAAAkJ,YAAA,SAAAA,YAAA,GAAMjM,KAAA,CAAKa,KAAK,qBAAVoL,YAAA,CAAY3I,KAAK,CAAC,CAAC,GAAC;MAChF,CAAC,MAAM,IAAI,CAACsI,UAAU,EAAE;QACtB5L,KAAA,CAAKwC,QAAQ,CAAC;UACZO,IAAI,EAAE,mBAAmB;UACzBW,OAAO,EAAE,CAAC1D,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAACsE,aAAa,CAAC4F,YAAY,CAAC;QACvD,CAAC,CAAC;MACJ;IACF,CAAC,CAAA3L,KAAA;;IAEOgM,4BAA4B,GAAG,UAACJ,UAAmB,EAAEC,WAAoB,EAAEF,YAAoB,EAAK;MAC1G,IAAI,CAACC,UAAU,IAAI,CAACC,WAAW,EAAE;QAC/B,IAAMf,OAAO,GAAG9K,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAACsE,aAAa,CAAC4F,YAAY,CAAC;QAC3D,IAAML,QAAQ,IAAIR,OAAO,EAAArK,MAAA,CAAKT,KAAA,CAAKU,KAAK,CAACzC,YAAY,CAAC6F,MAAM,CAAC,UAACjF,IAAI,UAAK,CAACmB,KAAA,CAAKqB,OAAO,CAACxC,IAAI,EAAEiM,OAAO,CAAC,GAAC,CAAC;QACrG9K,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,mBAAmB,EAAEW,OAAO,EAAE4H,QAAQ,CAAC,CAAC,CAAC;MACjE;IACF,CAAC,CAAAtL,KAAA;;IAEOkM,iBAAiB,GAAG,UAACtK,KAAU,EAAK;MAC1C5B,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAACqF,aAAa,CAAClF,KAAK,CAAC;IACtC,CAAC,CAAA5B,KAAA;;IAEOkK,aAAa,GAAG,YAAM;MAC5B,IAAMrL,IAAI,GAAGmB,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAACoF,WAAW,CAAC7G,KAAA,CAAKU,KAAK,CAAC7C,UAAU,CAAC;MAC/D,IAAIgB,IAAI,EAAE;QACRmB,KAAA,CAAKmE,UAAU,CAACtF,IAAI,CAAC;MACvB;IACF,CAAC,CAAAmB,KAAA;;IAEOmE,UAAU,GAAG,UAACtF,IAAO,EAAK;MAChC,IAAAsN,eAAA,GAAmDnM,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAA3CoC,QAAQ,GAAAsI,eAAA,CAAvBpG,aAAa,CAAYhE,aAAa,GAAAoK,eAAA,CAAbpK,aAAa;MAC9C,IAAMgE,aAAa,GAAGlC,QAAQ,CAACC,MAAM,CAACC,YAAY,CAAC;MACnD,IAAI/D,KAAA,CAAKgE,aAAa,EAAE;QACtBhE,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,cAAc,EAAEW,OAAO,EAAE3B,aAAa,CAAClD,IAAI,CAAC,CAAC,CAAC,EAAEmB,KAAA,CAAKiE,eAAe,CAAC;MAC7F,CAAC,MAAM,IAAI,CAACjE,KAAA,CAAK2B,eAAe,CAACoE,aAAa,EAAElH,IAAI,CAAC,EAAE;QACrDmB,KAAA,CAAKkM,iBAAiB,CAACnG,aAAa,CAACtF,MAAM,CAAC,CAAC5B,IAAI,CAAC,CAAC,CAAC;QACpDmB,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;QACtC/C,KAAA,CAAKsH,WAAW,CAAC,CAAC;MACpB;IACF,CAAC,CAAAtH,KAAA;;IAEOoM,iBAAiB,GAAG,UAACvN,IAAO,EAAK;MACvCmB,KAAA,CAAKoF,KAAK,CAAC0B,aAAa,YAAxB9G,KAAA,CAAKoF,KAAK,CAAC0B,aAAa,CAAG9G,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAACsE,aAAa,CAACjC,MAAM,CAAC,UAACuI,CAAC,UAAK,CAACrM,KAAA,CAAKqB,OAAO,CAACgL,CAAC,EAAExN,IAAI,CAAC,GAAC,CAAC;MAC/F,IAAMyN,oBAAoB,GAAGtM,KAAA,CAAKU,KAAK,CAACzC,YAAY,CAAC6F,MAAM,CAAC,UAACuI,CAAC,UAAK,CAACrM,KAAA,CAAKqB,OAAO,CAACgL,CAAC,EAAExN,IAAI,CAAC,GAAC;;MAE1FmB,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,mBAAmB,EAAEW,OAAO,EAAE4I,oBAAoB,CAAC,CAAC,CAAC;MAC3E,IAAIA,oBAAoB,CAACnM,MAAM,KAAK,CAAC,EAAE;QACrCH,KAAA,CAAKwF,UAAU,CAAC,EAAEjC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;MAC1C;;MAEAvD,KAAA,CAAKsH,WAAW,CAAC,CAAC;IACpB,CAAC,CAAAtH,KAAA;;IAEOuM,gBAAgB,GAAG,UAACzJ,KAAoC,EAAEgI,OAAU,EAAK;MAC/E,IAAMlJ,KAAK,GAAG5B,KAAA,CAAKU,KAAK,CAACzC,YAAY;MACrC,IAAI6E,KAAK,CAAC0J,OAAO,EAAE;QACjB,IAAMnF,QAAQ,GAAGrH,KAAA,CAAK2B,eAAe,CAAC3B,KAAA,CAAKU,KAAK,CAACzC,YAAY,EAAE6M,OAAO,CAAC;QACnElJ,KAAK,CAACkC,MAAM,CAAC,UAACjF,IAAI,UAAK,CAACmB,KAAA,CAAKqB,OAAO,CAACxC,IAAI,EAAEiM,OAAO,CAAC,GAAC,MAAArK,MAAA;UAChDmB,KAAK,GAAEkJ,OAAO,EAAC;QACvB9K,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,mBAAmB,EAAEW,OAAO,EAAE2D,QAAQ,CAAC,CAAC,CAAC;MACjE,CAAC,MAAM;QACLrH,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,mBAAmB,EAAEW,OAAO,EAAE,CAACoH,OAAO,CAAC,CAAC,CAAC,CAAC;MAClE;MACA9K,KAAA,CAAKwF,UAAU,CAAC,EAAEjC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAAvD,KAAA;;IAEOyL,eAAe,GAAG,UAACX,OAAU,EAAK;MACxC,IAAA2B,eAAA,GAAyCzM,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAAhDsE,aAAa,GAAA0G,eAAA,CAAb1G,aAAa,CAAEhE,aAAa,GAAA0K,eAAA,CAAb1K,aAAa;MACpC,IAAM7D,iBAAiB,GAAG6H,aAAa,CAACiD,SAAS,CAAC,UAACnK,IAAI,UAAKA,IAAI,KAAKiM,OAAO,GAAC;MAC7E9K,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,yBAAyB,EAAEW,OAAO,EAAExF,iBAAiB,CAAC,CAAC,CAAC;;MAE9E,IAAI8B,KAAA,CAAK0I,mBAAmB,EAAE;QAC5B,IAAI1I,KAAA,CAAKU,KAAK,CAAC5C,kBAAkB,KAAKC,SAAS,EAAE;UAC/CiC,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,qBAAqB,EAAEW,OAAO,EAAE1D,KAAA,CAAKU,KAAK,CAAC7C,UAAU,CAAC,CAAC,CAAC;QAChF;MACF;MACAmC,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,cAAc,EAAEW,OAAO,EAAE3B,aAAa,CAAC+I,OAAO,CAAC,CAAC,CAAC,EAAE9K,KAAA,CAAKiL,eAAe,CAAC;MAC9FjL,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,0BAA0B,CAAC,CAAC,CAAC;;MAEnD/C,KAAA,CAAKsH,WAAW,CAAC,CAAC;IACpB,CAAC,CAAAtH,KAAA;;IAEOiE,eAAe,GAAG,YAAM,KAAAyI,qBAAA;MAC9B,IAAAC,eAAA,GAAyC3M,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAAhDsE,aAAa,GAAA4G,eAAA,CAAb5G,aAAa,CAAEhE,aAAa,GAAA4K,eAAA,CAAb5K,aAAa;MACpC,IAAA6K,YAAA,GAAiF5M,KAAA,CAAKU,KAAK,CAAnFxC,iBAAiB,GAAA0O,YAAA,CAAjB1O,iBAAiB,CAAEL,UAAU,GAAA+O,YAAA,CAAV/O,UAAU,CAAEC,kBAAkB,GAAA8O,YAAA,CAAlB9O,kBAAkB,CAAEE,iBAAiB,GAAA4O,YAAA,CAAjB5O,iBAAiB;;MAE5E,IAAM6O,UAAU,IAAAH,qBAAA;MACd1O,iBAAiB,oBAAjBA,iBAAiB,CAAE8O,IAAI,CAAC,UAACjO,IAAI,UAAKkD,aAAa,CAAClD,IAAI,CAAC,KAAKhB,UAAU,GAAC,YAAA6O,qBAAA,GAAI1M,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAACoF,WAAW,CAAChJ,UAAU,CAAC;;MAElH,IAAMwJ,QAAQ,GAAGtB,aAAa,CAACtF,MAAM,CAAC,EAAE,CAAC;;MAEzC,IAAI,CAACT,KAAA,CAAK2B,eAAe,CAACoE,aAAa,EAAE8G,UAAU,CAAC,EAAE;QACpDxF,QAAQ,CAAC0F,MAAM,CAAAvM,KAAA,CAAf6G,QAAQ,GAAQnJ,iBAAiB,EAAE,CAAC,EAAAuC,MAAA,CAAMT,KAAA,CAAK0I,mBAAmB,GAAG,CAACmE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;QACxF7M,KAAA,CAAKkM,iBAAiB,CAAC7E,QAAQ,CAAC;MAClC;;MAEArH,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,4BAA4B,CAAC,CAAC,CAAC;;MAErD,IAAIjF,kBAAkB,EAAE;QACtBkC,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,cAAc,EAAEW,OAAO,EAAE5F,kBAAkB,CAAC,CAAC,CAAC;QACpEkC,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,wBAAwB,CAAC,CAAC,CAAC;MACnD,CAAC,MAAM;QACL/C,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;MACxC;;MAEA,IAAIsE,QAAQ,CAAClH,MAAM,KAAK4F,aAAa,CAAC5F,MAAM,EAAE;QAC5CH,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,mBAAmB,EAAEW,OAAO,EAAE,CAAC2D,QAAQ,CAACnJ,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;MACtF;IACF,CAAC,CAAA8B,KAAA;;IAEOqE,uBAAuB,GAAG,YAAM;MACtC,IAAQxG,UAAU,GAAKmC,KAAA,CAAKU,KAAK,CAAzB7C,UAAU;MAClB,IAAQmP,iBAAiB,GAAKhN,KAAA,CAAKoF,KAAK,CAAhC4H,iBAAiB;;MAEzB;MACA,IAAMC,aAAa,GAAGD,iBAAiB,oBAAjBA,iBAAiB,CAAGnP,UAAU,CAAC;;MAErD,IAAIoP,aAAa,KAAKlP,SAAS,EAAE;QAC/B;QACEiC,KAAA,CAAKkN,YAAY,CAACC,iDAAiD;QACnEnN,KAAA,CAAK+C,IAAI,KAAKpF,cAAc,CAACqM,gBAAgB;QAC7C;UACAhK,KAAA,CAAKkK,aAAa,CAAC,CAAC;QACtB;;QAEA;MACF;;MAEA,IAAI+C,aAAa,KAAK,IAAI,EAAE;QAC1BjN,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,aAAa,CAAC,CAAC,EAAE,YAAM;UAC3C,IAAI/C,KAAA,CAAKgE,aAAa,EAAE;YACtBhE,KAAA,CAAKiE,eAAe,CAAC,CAAC;UACxB;QACF,CAAC,CAAC;;QAEF;MACF;;MAEA,IAAIgJ,aAAa,EAAE;QACjBjN,KAAA,CAAKmE,UAAU,CAAC8I,aAAa,CAAC;MAChC;IACF,CAAC,CAAAjN,KAAA;;IAEOoN,sBAAsB,GAAG,UAACtK,KAAuC,EAAK;MAC5E9C,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,0BAA0B,CAAC,CAAC,CAAC;MACnD,IAAI6E,KAAK,GAAG9E,KAAK,CAACkC,MAAM,CAACnD,KAAK,CAACwL,QAAQ,CAAC,CAAC;;MAEzC,IAAIzF,KAAK,CAAC0F,QAAQ,CAAC,GAAG,CAAC,EAAE;QACvB1F,KAAK,GAAGA,KAAK,CAAC2F,SAAS,CAAC,CAAC,GAAG,GAAG;MACjC;MACA,IAAIvN,KAAA,CAAK0I,mBAAmB,IAAId,KAAK,KAAK,EAAE,EAAE;QAC5C5H,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,wBAAwB,EAAEW,OAAO,EAAE3F,SAAS,CAAC,CAAC,CAAC;MACvE;MACAiC,KAAA,CAAKwC,QAAQ,CAAC,EAAEO,IAAI,EAAE,cAAc,EAAEW,OAAO,EAAEkE,KAAK,CAAC,CAAC,EAAE,YAAM;QAC5D5H,KAAA,CAAKsH,WAAW,CAACM,KAAK,CAAC;MACzB,CAAC,CAAC;MACF,IAAI5H,KAAA,CAAKoF,KAAK,CAACoI,kBAAkB,EAAE;QACjCxN,KAAA,CAAKoF,KAAK,CAACoI,kBAAkB,CAAC5F,KAAK,CAAC;MACtC;IACF,CAAC,CAAA5H,KAAA;;IAEO+I,iBAAiB,GAAG,YAAM;MAChC;MACE/I,KAAA,CAAKsE,OAAO;MACZtE,KAAA,CAAKU,KAAK,CAAC1C,iBAAiB;MAC5BgC,KAAA,CAAKU,KAAK,CAAC1C,iBAAiB,CAACmC,MAAM,GAAG,CAAC;MACvCH,KAAA,CAAK+C,IAAI,KAAKpF,cAAc,CAAC8P,QAAQ;MACrC;QACAzN,KAAA,CAAKsE,OAAO,CAAC8E,aAAa,CAAC,CAAC,CAAC;MAC/B;IACF,CAAC,CAAApJ,KAAA;;IAEO0N,iBAAiB,GAAG,YAAM;MAChC,IAAQxP,iBAAiB,GAAK8B,KAAA,CAAKU,KAAK,CAAhCxC,iBAAiB;MACzB,IAAM6H,aAAa,GAAG/F,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAACsE,aAAa;MACnD,IAAMgB,SAAS,GAAG7I,iBAAiB,IAAI,CAAC,GAAGA,iBAAiB,GAAG6H,aAAa,CAAC5F,MAAM;MACnF,OAAO4F,aAAa,CAAC4H,KAAK,CAAC,CAAC,EAAE5G,SAAS,CAAC,CAAC/E,GAAG,CAAChC,KAAA,CAAK4N,WAAW,CAAC;IAChE,CAAC,CAAA5N,KAAA;;IAEO6N,eAAe,GAAG,YAAM;MAC9B,IAAI7N,KAAA,CAAKU,KAAK,CAACxC,iBAAiB,IAAI,CAAC,EAAE;QACrC,OAAO8B,KAAA,CAAKyB,QAAQ,CAAC,CAAC;QACnBsE,aAAa,CAAC4H,KAAK,CAAC3N,KAAA,CAAKU,KAAK,CAACxC,iBAAiB,GAAG,CAAC,CAAC;QACrD8D,GAAG,CAAChC,KAAA,CAAK4N,WAAW,CAAC;MAC1B;IACF,CAAC,CAAA5N,KAAA;;IAEO4N,WAAW,GAAG,UAAC/O,IAAO,EAAEK,KAAa,EAAK,KAAA4O,qBAAA;MAChD,IAAAC,WAAA,GAAuD/N,KAAA,CAAKoF,KAAK,CAAA4I,qBAAA,GAAAD,WAAA,CAAzDH,WAAW,CAAXA,WAAW,GAAAI,qBAAA,cAAGhP,kBAAkB,GAAAgP,qBAAA,CAAEzO,QAAQ,GAAAwO,WAAA,CAARxO,QAAQ;;MAElD,IAAMJ,QAAQ,GAAGa,KAAA,CAAKU,KAAK,CAACzC,YAAY,CAACgE,QAAQ,CAACpD,IAAI,CAAC;;MAEvD;MACA,IAAMoP,eAAqD,GAAG,SAAxDA,eAAqDA,CAAInL,KAAK,EAAK;QACvEA,KAAK,CAACkE,eAAe,CAAC,CAAC;QACvB,IAAI,CAAChH,KAAA,CAAKgE,aAAa,EAAE;UACvBhE,KAAA,CAAKoM,iBAAiB,CAACvN,IAAI,CAAC;QAC9B;MACF,CAAC;;MAED;MACA,IAAM0N,gBAAyD,GAAG,SAA5DA,gBAAyDA,CAAIzJ,KAAK,EAAK;QAC3EA,KAAK,CAACkE,eAAe,CAAC,CAAC;QACvB,IAAI,CAAChH,KAAA,CAAKgE,aAAa,EAAE;UACvBhE,KAAA,CAAKuM,gBAAgB,CAACzJ,KAAK,EAAEjE,IAAI,CAAC;QACpC;MACF,CAAC;;MAED,IAAMqP,sBAA+D,GAAG,SAAlEA,sBAA+DA,CAAIpL,KAAK,EAAK;QACjFA,KAAK,CAACkE,eAAe,CAAC,CAAC;QACvB,IAAI,CAAChH,KAAA,CAAKgE,aAAa,IAAI,CAACzE,QAAQ,EAAE;UACpCS,KAAA,CAAKyL,eAAe,CAAC5M,IAAI,CAAC;QAC5B;MACF,CAAC;;MAED,IAAMsP,aAAa,GAAGP,WAAW;QAC/B/O,IAAI;QACJ;UACEW,IAAI,EAAEQ,KAAA,CAAKR,IAAI;UACfL,QAAQ,EAARA,QAAQ;UACRC,OAAO,EAAEmN,gBAAgB;UACzBlN,aAAa,EAAE6O,sBAAsB;UACrC5O,QAAQ,EAAE2O,eAAe;UACzB1O,QAAQ,EAARA;QACF,CAAC;QACDL;MACF,CAAC;;MAEDc,KAAA,CAAKmB,cAAc,CAACiN,GAAG,EAAAN,qBAAA,GAAC9N,KAAA,CAAKoF,KAAK,CAACW,aAAa,qBAAxB+H,qBAAA,CAA0B3H,OAAO,CAACtH,IAAI,CAAC,EAAEsP,aAAa,CAAC;MAC/E,OAAOA,aAAa;IACtB,CAAC,CAAAnO,KAAA;;IAEOqO,eAAe,GAAG,UAACxM,KAAK,EAA0D,KAA/DA,KAAK,cAALA,KAAK,GAAG7B,KAAA,CAAKU,KAAK,CAAC7C,UAAU;MACtD,IAAI,CAACmC,KAAA,CAAKsK,eAAe,EAAE;QACzB;MACF;;MAEA,IAAItK,KAAA,CAAKoF,KAAK,CAACiJ,eAAe,EAAE;QAC9B,OAAOrO,KAAA,CAAKoF,KAAK,CAACiJ,eAAe,CAACxM,KAAK,EAAE7B,KAAA,CAAKkK,aAAa,CAAC;MAC9D;;MAEA,IAAAoE,YAAA,GAA6CtO,KAAA,CAAKxD,MAAM,CAAhD+R,gBAAgB,GAAAD,YAAA,CAAhBC,gBAAgB,CAAEC,cAAc,GAAAF,YAAA,CAAdE,cAAc;;MAExC;QACEtT,KAAA,CAAAuE,aAAA,CAACtD,QAAQ,IAACiD,OAAO,EAAEY,KAAA,CAAKkK,aAAc,EAACuE,OAAO,EAAEF,gBAAiB,EAAC7O,GAAG,EAAC,iBAAiB;QACpF8O,cAAc,EAAC,GAAC,EAAC3M;QACV,CAAC;;IAEf,CAAC,CAAA7B,KAAA;;IAEOoK,eAAe,GAAG,UAACsE,SAAiB,EAAK;MAC/C,IAAIP,aAAa;MACjB,IAAInO,KAAA,CAAKmB,cAAc,CAACwN,GAAG,CAACD,SAAS,CAAC,EAAE;QACtCP,aAAa,GAAGnO,KAAA,CAAKmB,cAAc,CAACyN,GAAG,CAACF,SAAS,CAAC;MACpD,CAAC,MAAM,IAAIA,SAAS,GAAG,CAAC,IAAIA,SAAS,GAAG1O,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAACsE,aAAa,CAAC5F,MAAM,GAAG,CAAC,EAAE;QAChF,OAAO,KAAK;MACd,CAAC,MAAM;QACLgO,aAAa,GAAGnO,KAAA,CAAK4N,WAAW,CAAC5N,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAACsE,aAAa,CAAC2I,SAAS,CAAC,EAAEA,SAAS,CAEnF;;;MACH;MACA,OAAOP,aAAa,CAAC/I,KAAK,CAAC7F,QAAQ;IACrC,CAAC,CAAAS,KAAA;;IAEO6K,sBAAsB,GAAG,UAACgE,UAAkB,EAAEC,eAAe,EAAY,KAA3BA,eAAe,cAAfA,eAAe,GAAG,IAAI;MAC1E,IAAAC,gBAAA,GAA0B/O,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAAjCsE,aAAa,GAAAgJ,gBAAA,CAAbhJ,aAAa;MACrB,IAAMiJ,IAAI,GAAGF,eAAe,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;MACtC,IAAIG,cAAc,GAAGJ,UAAU,GAAGG,IAAI;;MAEtC,OAAOhP,KAAA,CAAKoK,eAAe,CAAC6E,cAAc,CAAC,EAAE;QAC3CA,cAAc,IAAID,IAAI;QACtB,IAAIC,cAAc,KAAKlJ,aAAa,CAAC5F,MAAM,EAAE;UAC3C,OAAO8O,cAAc;QACvB,CAAC,MAAM,IAAIA,cAAc,KAAK,CAAC,CAAC,EAAE;UAChC,OAAOJ,UAAU;QACnB;MACF;;MAEA,OAAOI,cAAc;IACvB,CAAC,QAAAjP,KAAA,EAAAkP,cAAA,CAAAvP,UAAA,EAAAI,oBAAA,MAAAoP,MAAA,GAAAxP,UAAA,CAAAyP,SAAA,CAAAD,MAAA,CA/9BOE,aAAa,GAArB,SAAAA,cAAA,EAAkC,KAAAC,qBAAA,CAChC,IAAMtJ,UAAU,IAAAsJ,qBAAA,GAAG,IAAI,CAAClK,KAAK,CAACY,UAAU,YAAAsJ,qBAAA,GAAI,EAAE,CAC9C,IAAItJ,UAAU,CAACuJ,KAAK,CAAC,UAACxI,SAAS,UAAKA,SAAS,KAAKrJ,cAAc,GAAC,EAAE,CACjE,OAAOsI,UAAU,CACnB,CACA,OAAOA,UAAU,CAAClC,MAAM,CAAC,UAACiD,SAAS,UAAKA,SAAS,KAAKrJ,cAAc,GAAC,CACvE,CAAC,CAAAyR,MAAA,CAEO1N,QAAQ,GAAhB,SAAAA,SAAA,EAAmB,CACjB,IAAM+N,WAAW,GAAG3S,iBAAiB,CAAC8C,UAAU,CAAC8P,YAAY,CAAC,CAC9D,IAAMC,sBAAsB,GAAGF,WAAW,CAAChP,KAAK,CAAC,IAAI,CAAC,CACtD,OAAAmP,QAAA,KAAYD,sBAAsB,IAAE1J,UAAU,EAAE,IAAI,CAACqJ,aAAa,CAAC,CAAC,IACtE,CAAC,CAAAF,MAAA,CAuBMS,iBAAiB,GAAxB,SAAAA,kBAAA,EAA2B,KAAAC,qBAAA,CACzB,IAAI,CAACC,oBAAoB,CAAC,CAAC,CAC3B,CAAAD,qBAAA,GAAAzU,YAAY,CAACmJ,QAAQ,aAArBsL,qBAAA,CAAuBE,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAACnK,UAAU,CAAC,CAChE,IAAI,IAAI,CAACR,KAAK,CAAC4K,SAAS,EAAE,CACxB,IAAI,CAACxK,UAAU,CAAC,CAAC,CACnB,CACF,CAAC,CAAA2J,MAAA,CAEMc,kBAAkB,GAAzB,SAAAA,mBAA0BC,SAA+C,EAAEtN,SAA6B,EAAE,CACxG,IAAIA,SAAS,CAAC/E,UAAU,KAAK,IAAI,CAAC6C,KAAK,CAAC7C,UAAU,EAAE,CAClD,IAAI,CAACiS,oBAAoB,CAAC,CAAC,CAC7B,CACA,IAAIlN,SAAS,CAAC3E,YAAY,CAACkC,MAAM,KAAK,CAAC,IAAI,IAAI,CAACO,KAAK,CAACzC,YAAY,CAACkC,MAAM,GAAG,CAAC,EAAE,CAC7E,IAAI,CAACqC,QAAQ,CAAC,EACZO,IAAI,EAAE,wBAAwB,EAC9BW,OAAO,EAAE3F,SAAS,CACpB,CAAC,CAAC,CACJ,CACA,IAAImS,SAAS,CAACnK,aAAa,CAAC5F,MAAM,KAAK,IAAI,CAACsB,QAAQ,CAAC,CAAC,CAACsE,aAAa,CAAC5F,MAAM,EAAE,CAC3ElE,YAAY,CAAC6M,IAAI,CAAC,CAAC,CACnB,IAAI,CAAC3H,cAAc,CAACgP,KAAK,CAAC,CAAC,CAC7B,CACA,IAAI,CAAC,IAAI,CAACC,uBAAuB,CAACxN,SAAS,CAAC,IAAI,IAAI,CAACiD,eAAe,EAAE,CACpE,IAAI,CAACyB,WAAW,CAAC,IAAI,CAACtD,aAAa,GAAG,EAAE,GAAG,IAAI,CAACtD,KAAK,CAAC7C,UAAU,CAAC,CACnE,CACF,CAAC,CAAAsR,MAAA,CAEMkB,oBAAoB,GAA3B,SAAAA,qBAAA,EAA8B,KAAAC,sBAAA,CAC5B,CAAAA,sBAAA,GAAAlV,YAAY,CAACmJ,QAAQ,aAArB+L,sBAAA,CAAuBC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC3K,UAAU,CAAC,CACrE,CAAC,CAED;AACF;AACA;AACA,KAHE,CAAAuJ,MAAA,CAIO7L,KAAK,GAAZ,SAAAA,MAAA,EAAe,KAAAkN,YAAA,CACb,CAAAA,YAAA,OAAI,CAAC3P,KAAK,aAAV2P,YAAA,CAAYlN,KAAK,CAAC,CAAC,CACrB,CAAC,CAED;AACF;AACA,KAFE,CAAA6L,MAAA,CAGOzE,IAAI,GAAX,SAAAA,KAAA,EAAc,KAAA+F,aAAA,CACZ,CAAAA,aAAA,OAAI,CAAC5P,KAAK,aAAV4P,aAAA,CAAY/F,IAAI,CAAC,CAAC,CACpB,CAAC,CAED;AACF;AACA,KAFE,CAAAyE,MAAA,CAGOhS,KAAK,GAAZ,SAAAA,MAAA,EAAe,CACbA,MAAK,CAAC,EAAEuT,EAAE,EAAE,IAAI,CAAC1P,OAAO,EAAE2P,UAAU,EAAE,IAAI,CAACC,KAAK,CAACC,eAAe,CAAC,CAAC,CAAC,CACrE,CAAC,CAAA1B,MAAA,CAEM2B,MAAM,GAAb,SAAAA,OAAA,EAAgB,KAAAC,MAAA,QACd,oBACE7V,KAAA,CAAAuE,aAAA,CAACxC,0BAA0B,CAAC+T,QAAQ,QACjC,UAACC,KAAK,EAAK,CACVF,MAAI,CAAC7D,YAAY,GAAGlQ,0BAA0B,CAACiU,KAAK,CAAC,CACrD,oBACE/V,KAAA,CAAAuE,aAAA,CAAClD,YAAY,CAACyU,QAAQ,QACnB,UAACJ,KAAK,EAAK,CACVG,MAAI,CAACH,KAAK,GAAGA,KAAK,CAClB,OAAOG,MAAI,CAACG,UAAU,CAAC,CAAC,CAC1B,CACqB,CAAC,CAE5B,CACmC,CAAC,CAE1C,CAAC,CAAA/B,MAAA,CAEOgC,qBAAqB,GAA7B,SAAAA,sBAAA,EAAgC,CAC9B,QAAQ,IAAI,CAAC3R,IAAI,GACf,KAAK,OAAO,CACV,OAAOlC,MAAM,CAAC8T,UAAU,CAAC,IAAI,CAACR,KAAK,CAAC,CACtC,KAAK,QAAQ,CACX,OAAOtT,MAAM,CAAC+T,WAAW,CAAC,IAAI,CAACT,KAAK,CAAC,CACvC,KAAK,OAAO,CACZ,QACE,OAAOtT,MAAM,CAACgU,UAAU,CAAC,IAAI,CAACV,KAAK,CAAC,CACxC,CACF,CAAC,CAAAzB,MAAA,CAEOoC,qBAAqB,GAA7B,SAAAA,sBAAA,EAAgC,CAC9B,QAAQ,IAAI,CAAC/R,IAAI,GACf,KAAK,OAAO,CACV,OAAOlC,MAAM,CAACkU,UAAU,CAAC,IAAI,CAACZ,KAAK,CAAC,CACtC,KAAK,QAAQ,CACX,OAAOtT,MAAM,CAACmU,WAAW,CAAC,IAAI,CAACb,KAAK,CAAC,CACvC,KAAK,OAAO,CACZ,QACE,OAAOtT,MAAM,CAACoU,UAAU,CAAC,IAAI,CAACd,KAAK,CAAC,CACxC,CACF,CAAC,CAAAzB,MAAA,CAEO+B,UAAU,GAAlB,SAAAA,WAAA,EAAqB,KAAAS,GAAA,EAAAC,IAAA,EAAAC,IAAA,CACnB,IAAI,IAAI,CAAC9O,IAAI,KAAKpF,cAAc,CAACqM,gBAAgB,IAAI,CAAC,IAAI,CAAC5E,KAAK,CAACqD,QAAQ,EAAE,CACzE,MAAMqJ,KAAK,CAAC,2BAA2B,GAAG,IAAI,CAAC/O,IAAI,CAAC,CACtD,CAEA,IAAAgP,YAAA,GAaI,IAAI,CAAC3M,KAAK,CAZZ4M,aAAa,GAAAD,YAAA,CAAbC,aAAa,CACbC,KAAK,GAAAF,YAAA,CAALE,KAAK,CACLC,OAAO,GAAAH,YAAA,CAAPG,OAAO,CACP3S,QAAQ,GAAAwS,YAAA,CAARxS,QAAQ,CACR4S,cAAc,GAAAJ,YAAA,CAAdI,cAAc,CACdxJ,yBAAyB,GAAAoJ,YAAA,CAAzBpJ,yBAAyB,CACzByJ,SAAS,GAAAL,YAAA,CAATK,SAAS,CACTC,gBAAgB,GAAAN,YAAA,CAAhBM,gBAAgB,CAChBC,UAAU,GAAAP,YAAA,CAAVO,UAAU,CACUC,eAAe,GAAAR,YAAA,CAAnC,kBAAkB,EACJS,SAAS,GAAAT,YAAA,CAAvB,YAAY,EACZ1M,SAAS,GAAA0M,YAAA,CAAT1M,SAAS,CAGX,IAAAoN,gBAAA,GAA+F,IAAI,CAAChR,QAAQ,CAAC,CAAC,CAAtGsE,aAAa,GAAA0M,gBAAA,CAAb1M,aAAa,CAAE2M,KAAK,GAAAD,gBAAA,CAALC,KAAK,CAAEC,YAAY,GAAAF,gBAAA,CAAZE,YAAY,CAAEC,YAAY,GAAAH,gBAAA,CAAZG,YAAY,CAAEC,SAAS,GAAAJ,gBAAA,CAATI,SAAS,CAAEC,SAAS,GAAAL,gBAAA,CAATK,SAAS,CAAEC,UAAU,GAAAN,gBAAA,CAAVM,UAAU,CAE1F,IAAAC,YAAA,GASI,IAAI,CAACtS,KAAK,CARZzC,YAAY,GAAA+U,YAAA,CAAZ/U,YAAY,CACZE,OAAO,GAAA6U,YAAA,CAAP7U,OAAO,CACPG,eAAe,GAAA0U,YAAA,CAAf1U,eAAe,CACfC,gBAAgB,GAAAyU,YAAA,CAAhBzU,gBAAgB,CAChBV,UAAU,GAAAmV,YAAA,CAAVnV,UAAU,CACVC,kBAAkB,GAAAkV,YAAA,CAAlBlV,kBAAkB,CAClBE,iBAAiB,GAAAgV,YAAA,CAAjBhV,iBAAiB,CACjBI,OAAO,GAAA4U,YAAA,CAAP5U,OAAO,CAGT,IAAM6U,QAAQ,GACZ,IAAI,CAAClQ,IAAI,KAAKpF,cAAc,CAACqM,gBAAgB,IAC7C,IAAI,CAACnE,eAAe,IACpB5H,YAAY,CAACkC,MAAM,KAAK,CAAC,KACxB,IAAI,CAACuI,mBAAmB,IAAI,CAACC,yBAAyB,CAAC,CAE1D,IAAMiI,KAAK,GAAG,IAAI,CAACA,KAAK,CAExB,IAAMsC,iBAAsC,GAAG,EAC7C;MACAR,KAAK,EAAEpU,eAAe,EACtB6U,MAAM,EAAE5U,gBAAgB,EACxB;MACA6U,UAAU,EAAE,IAAI,CAACvN,eAAe,GAAG9H,SAAS,GAAG,aAAa,CAC9D,CAAC,CAED,IAAMsV,cAAc,GAAG3W,EAAE,CAACY,MAAM,CAACqB,KAAK,CAACiS,KAAK,CAAC,EAAE,IAAI,CAACO,qBAAqB,CAAC,CAAC,GAAAQ,GAAA,OAAAA,GAAA,CACxErU,MAAM,CAACgW,QAAQ,CAAC,IAAI,CAAC1C,KAAK,CAAC,IAAG,CAACzS,OAAO,IAAI,CAACoB,QAAQ,IAAI,CAAC2S,OAAO,IAAI,CAACD,KAAK,EAAAN,GAAA,CACzErU,MAAM,CAACiW,aAAa,CAAC3C,KAAK,CAAC,IAAG,CAAC,CAACrR,QAAQ,EAAAoS,GAAA,CACxCrU,MAAM,CAACkW,YAAY,CAAC5C,KAAK,CAAC,IAAG,CAAC,CAACzS,OAAO,EAAAwT,GAAA,CACtCrU,MAAM,CAAC2U,KAAK,CAACrB,KAAK,CAAC,IAAG,CAAC,CAACqB,KAAK,EAAAN,GAAA,CAC7BrU,MAAM,CAAC4U,OAAO,CAACtB,KAAK,CAAC,IAAG,CAAC,CAACsB,OAAO,EAAAP,GAAA,CACnC,CAAC,CACF,IAAM8B,cAAc,GAAG/W,EAAE,CAACY,MAAM,CAACuD,KAAK,CAAC+P,KAAK,CAAC,EAAE,IAAI,CAACW,qBAAqB,CAAC,CAAC,GAAAK,IAAA,OAAAA,IAAA,CACxEtU,MAAM,CAACoW,aAAa,CAAC9C,KAAK,CAAC,IAAG,CAAC,CAACrR,QAAQ,EAAAqS,IAAA,CAC1C,CAAC,CAEF,IAAM+B,WAAW,GAAG5N,aAAa,CAAC5F,MAAM,KAAK,CAAC,IAAI,CAACtC,UAAU,GAAG,IAAI,CAACuH,KAAK,CAACuO,WAAW,GAAG,EAAE,CAE3F,IAAMC,SAAS,gBACb1Y,KAAA,CAAAuE,aAAA,CAAC1C,SAAS,IACRyC,IAAI,EAAE,IAAI,CAACA,IAAK,EAChBqU,SAAS,EAAEnX,EAAE,EAAAmV,IAAA,OAAAA,IAAA,CAEVvU,MAAM,CAACwW,uBAAuB,CAAC,CAAC,IAAG1M,OAAO,CAACuM,WAAW,CAAC,EAAA9B,IAAA,CACzD,CAAE,EACHkC,eAAe,EAAE3M,OAAO,CAACuM,WAAW,CAAE,iBAEtCzY,KAAA,CAAAuE,aAAA,eACEuU,EAAE,EAAE,IAAI,CAACC,UAAW,EACpBC,GAAG,EAAE,IAAI,CAAC/R,QAAS,EACnBN,KAAK,EAAEhE,UAAW,EAClBsW,KAAK,EAAEjB,iBAAkB,EACzBkB,UAAU,EAAE,KAAM,EAClB7U,QAAQ,EAAEA,QAAS,EACnBsU,SAAS,EAAEJ,cAAe,EAC1BE,WAAW,EAAEA,WAAY,EACzB3Q,OAAO,EAAE,IAAI,CAACH,gBAAiB,EAC/Bc,MAAM,EAAE,IAAI,CAACV,eAAgB,EAC7BoR,QAAQ,EAAE,IAAI,CAACjH,sBAAuB,EACtC5D,SAAS,EAAE,IAAI,CAACD,aAAc,EAC9B+K,OAAO,EAAE,IAAI,CAAC9N,gBAAiB,EAC/B4L,SAAS,EAAEA,SAAU,EACrB,cAAYI,SAAU,EACtB,oBAAkBD,eAAgB,EACnC,CACQ,CACZ,CAED,IAAMgC,KAAK,gBACTrZ,KAAA,CAAAuE,aAAA,CAAAvE,KAAA,CAAAsZ,QAAA,qBACEtZ,KAAA,CAAAuE,aAAA,CAAChC,eAAe,IAACyW,GAAG,EAAE,IAAI,CAAC5R,aAAc,EAACmS,IAAI,EAAE5W,UAAW,EAAC+S,KAAK,EAAE,IAAI,CAACA,KAAM,EAACpR,IAAI,EAAE,IAAI,CAACA,IAAK,EAAE,CAAC,EACjG,IAAI,CAACkO,iBAAiB,CAAC,CAAC,EACxBkG,SAAS,EACTX,QAAQ,iBACP/X,KAAA,CAAAuE,aAAA,CAACjC,cAAc,IACbkX,WAAW,EAAE,IAAI,CAAC9T,MAAO,EACzBsT,GAAG,EAAE,IAAI,CAAC7R,kBAAmB,EAC7BT,KAAK,EAAE5D,iBAAkB,EACzBI,OAAO,EAAEA,OAAQ,EACjBuW,MAAM,EAAE1B,QAAS,EACjBjB,aAAa,EAAEA,aAAc,EAC7B4C,sBAAsB,EAAE,IAAI,CAAC/T,KAAM,EACnCgU,iBAAiB,EAAE,IAAI,CAAC7T,OAAQ,EAChCmR,cAAc,EAAEA,cAAe,EAC/BY,UAAU,EAAEA,UAAW,EACvBjM,aAAa,EAAE,IAAI,CAAC3C,UAAW,EAC/BkK,eAAe,EAAE,IAAI,CAACA,eAAgB,EACtCwE,SAAS,EAAEA,SAAU,EACrBC,SAAS,EAAEA,SAAU,EACrBT,gBAAgB,EAAEA,gBAAiB,EACnCC,UAAU,EAAEA,UAAW,EACvB9S,IAAI,EAAE,IAAI,CAACA,IAAK,EACjB,CACF,EACA,IAAI,CAACqO,eAAe,CAAC,CAAC,EACtB,IAAI,CAAC7J,aAAa,gBACjB9I,KAAA,CAAAuE,aAAA,CAAC1C,SAAS,IAACyC,IAAI,EAAE,IAAI,CAACA,IAAK,iBACzBtE,KAAA,CAAAuE,aAAA,WAAMoU,SAAS,EAAEvW,MAAM,CAACwX,aAAa,CAAClE,KAAK,CAAE,IAAE9S,kBAAyB,CAC/D,CAAC,GACV,IACJ,CACH,CACD,IAAMiX,SAAS,GAAG1P,SAAS,gBACzBnK,KAAA,CAAAuE,aAAA,CAACrC,eAAe,IAAC4X,SAAS,EAAE,IAAI,CAAC/T,kBAAmB,EAACoE,SAAS,EAAEA,SAAU,EAAC4P,aAAa,EAAC,QAAQ,IAC9FV,KACc,CAAC,GAElBA,KACD,CAED,oBACErZ,KAAA,CAAAuE,aAAA,CAAChD,aAAa,EAAAkT,QAAA,GAACuF,WAAW,EAAE,IAAI,CAACC,WAAY,IAAK,IAAI,CAAC/P,KAAK,gBAC1DlK,KAAA,CAAAuE,aAAA,UAAK,YAAUjB,kBAAkB,CAACC,IAAK,EAACkU,YAAY,EAAEA,YAAa,EAACC,YAAY,EAAEA,YAAa,iBAC7F1X,KAAA,CAAAuE,aAAA,YACEyU,GAAG,EAAE,IAAI,CAAC3R,UAAW,EACrB4R,KAAK,EAAE,EAAEzB,KAAK,EAALA,KAAK,CAAC,CAAE,EACjBmB,SAAS,EAAER,cAAe,EAC1B+B,WAAW,EAAE,IAAI,CAACtQ,sBAAuB,EACzCuQ,SAAS,EAAE,IAAI,CAACnQ,oBAAqB,CACrC;QACA;QAAA,EACAoQ,OAAO,EAAEjQ,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC4O,UAAW,EACjD,iBAAe,IAAI,CAACrT,MAAO,EAC3B,YAAUpC,kBAAkB,CAACG,KAAM,IAElCoW,SACI,CACJ,CACQ,CAAC,CAEpB,CAAC,CAED;AACF;AACA;AACA,KAHE,CAAA5F,MAAA,CAIOoG,KAAK,GAAZ,SAAAA,MAAA,EAAe,CACb,IAAI,CAAC/S,QAAQ,CAAC,EAAEO,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAClC,CAAC,CAAAoM,MAAA,CAiDOiB,uBAAuB,GAA/B,SAAAA,wBAAgC1P,KAAyB,EAAE,CACzD,OAAOA,KAAK,CAACvC,OAAO,KAAK,IAAI,CAACuK,mBAAmB,IAAIhI,KAAK,CAACzC,YAAY,CAACkC,MAAM,KAAK,CAAC,CAAC,CACvF,CAAC,CAAAgP,MAAA,CAWOW,oBAAoB,GAA5B,SAAAA,qBAAA,EAA+B,CAC7B,IAAI,IAAI,CAAC/O,UAAU,EAAE,CACnB;MACA;MACA,IAAMzC,eAAe,GAAGkX,UAAU,CAAC,IAAI,CAACzU,UAAU,CAAC0U,YAAY,CAAC,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC,CAC7E,IAAMnX,gBAAgB,GAAGiX,UAAU,CAAC,IAAI,CAACzU,UAAU,CAAC4U,aAAa,CAAC,CAAC,CAACD,OAAO,CAAC,CAAC,CAAC,CAAC,CAE/E,IAAI,CAAClT,QAAQ,CAAC,EAAEO,IAAI,EAAE,uBAAuB,EAAEW,OAAO,EAAEpF,eAAe,CAAC,CAAC,EAAErC,YAAY,CAAC6M,IAAI,CAAC,CAC7F,IAAI,CAACtG,QAAQ,CAAC,EAAEO,IAAI,EAAE,wBAAwB,EAAEW,OAAO,EAAEnF,gBAAgB,CAAC,CAAC,EAAEtC,YAAY,CAAC6M,IAAI,CAAC,CACjG,CACF,CAAC,CAAAqG,MAAA,CAmROxE,oBAAoB,GAA5B,SAAAA,qBAAA,EAA+B,CAC7B,IAAM/I,KAAK,GAAG,IAAI,CAACH,QAAQ,CAAC,CAAC,CAACsE,aAAa,CAC3C,IAAI,IAAI,CAACrF,KAAK,CAAC7C,UAAU,KAAK,EAAE,IAAI+D,KAAK,IAAIA,KAAK,CAACzB,MAAM,GAAG,CAAC,EAAE,CAC7D,IAAI,CAACqC,QAAQ,CAAC,EAAEO,IAAI,EAAE,mBAAmB,EAAEW,OAAO,EAAE9B,KAAK,CAAC+L,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACxE,CACF,CAAC,QAAAiI,YAAA,CAAAjW,UAAA,KAAAD,GAAA,gBAAAkP,GAAA,EAtnBD,SAAAA,IAAA,EAAyB,KAAAiH,cAAA,CACvB,QAAAA,cAAA,GAAO,IAAI,CAACzQ,KAAK,CAAC4O,EAAE,YAAA6B,cAAA,GAAI,IAAI,CAAClV,WAAW,CAC1C,CAAC,MAAAjB,GAAA,qBAAAkP,GAAA,EAoSD,SAAAA,IAAA,EAA8B,KAAAkH,sBAAA,CAC5B,IAAMlU,KAAK,IAAAkU,sBAAA,GAAG,IAAI,CAACpV,KAAK,CAAC1C,iBAAiB,qBAA5B8X,sBAAA,CAA8BhS,MAAM,CAACC,YAAY,CAAC,CAChE,IAAMlC,KAAK,GAAG,IAAI,CAACJ,QAAQ,CAAC,CAAC,CAACoF,WAAW,CAAC,IAAI,CAACnG,KAAK,CAAC7C,UAAU,CAAC,CAChE,IAAI+D,KAAK,IAAI,IAAI,CAACD,eAAe,CAACC,KAAK,EAAEC,KAAK,CAAC,EAAE,CAC/C,OAAO,KAAK,CACd,CAEA,IAAMkE,aAAa,GAAG,IAAI,CAACtE,QAAQ,CAAC,CAAC,CAACsE,aAAa,CACnD,IAAIA,aAAa,IAAI,IAAI,CAACpE,eAAe,CAACoE,aAAa,EAAElE,KAAK,CAAC,EAAE,CAC/D,OAAO,KAAK,CACd,CAEA,IAAI,IAAI,CAACkB,IAAI,KAAKpF,cAAc,CAAC8P,QAAQ,IAAI,IAAI,CAAC/E,mBAAmB,EAAE,CACrE,OAAO,IAAI,CACb,CACF,CAAC,MAAAhJ,GAAA,UAAAkP,GAAA,EAED,SAAAA,IAAA,EAAmB,CACjB,OAAO,IAAI,CAACxJ,KAAK,CAACrC,IAAI,GAAG,IAAI,CAACqC,KAAK,CAACrC,IAAI,GAAGpF,cAAc,CAAC8I,aAAa,CACzE,CAAC,MAAA/G,GAAA,aAAAkP,GAAA,EAED,SAAAA,IAAA,EAAmC,CACjC,OAAO,IAAI,CAAC9N,eAAe,IAAI,IAAI,CAACA,eAAe,CAAC4D,UAAU,CAAC,CAAC,CAClE,CAAC,MAAAhF,GAAA,qBAAAkP,GAAA,EAED,SAAAA,IAAA,EAA8B,CAC5B,OAAO,IAAI,CAACwB,uBAAuB,CAAC,IAAI,CAAC1P,KAAK,CAAC,CACjD,CAAC,MAAAhB,GAAA,mBAAAkP,GAAA,EAED,SAAAA,IAAA,EAA4B,CAC1B,OAAO,IAAI,CAAClO,KAAK,CAACxC,iBAAiB,GAAG,CAAC,CAAC,CAC1C,CAAC,MAAAwB,GAAA,oBAAAkP,GAAA,EAuFD,SAAAA,IAAA,EAA6B,CAC3B,IAAI,IAAI,CAAC5K,aAAa,EAAE,CACtB,OAAO,IAAI,CAACE,mBAAmB,CACjC,CAEA,OAAO,IAAI,CAACwE,mBAAmB,CACjC,CAAC,MAAAhJ,GAAA,yBAAAkP,GAAA,EAED,SAAAA,IAAA,EAAkC,CAChC,IAAQ/Q,UAAU,GAAK,IAAI,CAAC6C,KAAK,CAAzB7C,UAAU,CAElB,OAAOA,UAAU,KAAK,EAAE,CAC1B,CAAC,MAAA6B,GAAA,yBAAAkP,GAAA,EAED,SAAAA,IAAA,EAAkC,CAChC,IAAAmH,YAAA,GAA0C,IAAI,CAACrV,KAAK,CAA5C7C,UAAU,GAAAkY,YAAA,CAAVlY,UAAU,CAAEK,iBAAiB,GAAA6X,YAAA,CAAjB7X,iBAAiB,CACrC,IAAA8X,gBAAA,GAAyC,IAAI,CAACvU,QAAQ,CAAC,CAAC,CAAhDM,aAAa,GAAAiU,gBAAA,CAAbjU,aAAa,CAAEgE,aAAa,GAAAiQ,gBAAA,CAAbjQ,aAAa,CAEpC,IAAI,IAAI,CAAC/B,aAAa,EAAE,CACtB,OAAOjC,aAAa,CAACgE,aAAa,CAAC7H,iBAAiB,CAAC,CAAC,KAAKL,UAAU,CACvE,CAEA,OAAO,KAAK,CACd,CAAC,OAzdyC3C,KAAK,CAAC+a,aAAa,GAAAnW,WAAA,CAC/CoW,mBAAmB,GAAG,YAAY,EAAApW,WAAA,CAClCqW,WAAW,GAAG,YAAY,EAAArW,WAAA,CAE1B2P,YAAY,GAAsB,EAC9C1J,aAAa,EAAE,EAAE,EACjB;EACAC,UAAU,EAAE,CAAC,GAAG,EAAEtI,cAAc,CAAC,EACjCqV,UAAU,EAAEhU,QAAQ,EACpBqX,WAAW,EAAErX,QAAQ,EACrBgD,aAAa,EAAEhD,QAAQ,EACvB8H,WAAW,EAAE,SAAAA,YAAChI,IAAY,UAAKA,IAAI,IACnCwX,KAAK,EAAEzX,YAAY,EACnB8C,QAAQ,EAAE3C,QAAQ,EAClB+H,aAAa,EAAE,SAAAA,cAAA,UAAM,KAAK,CAAC,IAC3B4L,KAAK,EAAE,GAAsB,EAC7B/O,MAAM,EAAEtH,YAAY,EACpB2G,OAAO,EAAE3G,YAAY,EACrBsW,YAAY,EAAEtW,YAAY,EAC1BuW,YAAY,EAAEvW,YAAY,EAC1BwW,SAAS,EAAE,MAAM,EACjBC,SAAS,EAAE,QAAQ,CACrB,CAAC,EAAAhT,WAAA,MAAAD,MAAA,KAAAA,MAAA,KAAAA,MAAA,EAo+BH,SAASkE,YAAYA,CAAIlF,IAA+B,EAAa,CACnE,OAAO,CAACzC,UAAU,CAACyC,IAAI,CAAC,IAAI,eAAC3D,KAAK,CAACob,cAAc,CAACzX,IAAI,CAAC,CACzD","ignoreList":[]}
1
+ {"version":3,"names":["React","lodashIsEqual","globalObject","PopupIds","isKeyArrowHorizontal","isKeyArrowLeft","isKeyArrowRight","isKeyArrowUp","isKeyArrowVertical","isKeyBackspace","isKeyComma","isKeyDelete","isKeyEnter","isKeyEscape","isShortcutSelectAll","LayoutEvents","Token","MenuItem","isFunction","emptyHandler","getRandomID","ThemeContext","locale","CommonWrapper","cx","getRootNode","rootNode","createPropsGetter","getUid","TokenView","getFullReactUIFlagsContext","ReactUIFeatureFlagsContext","withSize","blink","ScrollContainer","TokenInputLocaleHelper","styles","tokenInputReducer","TokenInputMenu","TextWidthHelper","TEMP_FAKE_FLAG","TokenInputType","DefaultState","inputValue","reservedInputValue","undefined","autocompleteItems","activeTokens","editingTokenIndex","inFocus","loading","preventBlur","inputValueWidth","inputValueHeight","TokenInputDataTids","root","tokenInputMenu","label","defaultToKey","item","toString","identity","defaultRenderToken","_ref","index","isActive","onClick","onDoubleClick","onRemove","disabled","size","createElement","key","TokenInput","_dec","_class","_TokenInput","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","_textareaId","rootId","input","tokensInputMenu","textHelper","wrapper","scrollContainerRef","createRef","memoizedTokens","Map","isEqual","itemA","itemB","_this$getProps","getProps","itemToId","hasValueInItems","items","value","_this$getProps2","valueToString","map","includes","some","inputRef","node","tokensInputMenuRef","textHelperRef","wrapperRef","dispatch","action","cb","setState","prevState","handleInputFocus","event","type","onFocus","handleInputBlur","isBlurToMenu","handleOutsideBlur","_this$input","preventDefault","focus","preventScroll","requestAnimationFrame","_this$input2","payload","onBlur","_this$state","allItems","filter","isSimpleItem","isEditingMode","finishTokenEdit","isTokenValueChanged","selectItem","isInputChanged","checkForUnexpectedInput","menuRef","document","_this$tokensInputMenu","menu","getMenuRef","relatedTarget","activeElement","contains","handleWrapperMouseDown","_this$wrapper","target","isClickOnToken","handleWrapperMouseUp","e","props","maxHeight","current","_this$input3","focusInput","scrollIntoView","behavior","block","handleCopy","isCursorVisible","_this$getProps3","selectedItems","delimiters","tokens","token","indexOf","sort","clipboardData","setData","join","handleInputPaste","WithReference","paste","getData","_this$getProps4","valueToItem","onValueChange","delimiter","stopPropagation","trim","split","RegExp","Boolean","newItems","tryGetItems","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","query","_this$getProps5","isSelectedItem","isEditingItem","autocompleteItemsUnique","autocompleteItemsUniqueSimple","editingItem","selectItemIndex","wrap","_callee$","_context","prev","next","getItems","isInputValueChanged","hideMenuIfEmptyInputValue","sent","unshift","emit","highlightMenuItem","findIndex","toLowerCase","setTimeout","_this$menuRef","highlightItem","stop","_x","handleKeyDown","onKeyDown","defaultPrevented","handleInputKeyDown","handleWrapperKeyDown","_this$state$autocompl","_this$state$autocompl2","_this$input4","_this$input5","WithoutReference","newValue","handleAddItem","isRightmostTokenNotDisabled","isTokenDisabled","canSetValueToInput","showAddItemHint","enter","up","down","blur","moveFocusToLastToken","selectionStart","getAvailableTokenIndex","itemNew","options","_this$input6","selectInputText","setSelectionRange","_this$wrapper2","_this$getProps6","indexOfActiveToken","itemsNew","_this$input7","handleWrapperArrows","handleTokenEdit","activeItemIndex","newItemIndex","isLeftEdge","isRightEdge","shiftKey","handleWrapperArrowsWithoutShift","handleWrapperArrowsWithShift","_this$input8","handleValueChange","_this$getProps7","handleRemoveToken","_","filteredActiveTokens","handleTokenClick","ctrlKey","_this$getProps8","_autocompleteItems$fi","_this$getProps9","_this$state2","editedItem","find","splice","onUnexpectedInput","returnedValue","featureFlags","tokenInputCreateTokenOnBlurInWithoutReferenceMode","handleChangeInputValue","trimLeft","endsWith","trimRight","onInputValueChange","Combined","renderTokensStart","slice","renderToken","renderTokensEnd","_this$props$selectedI","_this$props","_this$props$renderTok","handleIconClick","handleTokenDoubleClick","renderedToken","set","renderAddButton","_this$locale","addButtonComment","addButtonTitle","comment","itemIndex","has","get","startIndex","isDirectionLeft","_this$getProps10","step","availableIndex","_inheritsLoose","_proto","prototype","getDelimiters","_this$props$delimiter","every","propsGetter","defaultProps","propsWithOldDelimiters","_extends","componentDidMount","_globalObject$documen","updateInputTextWidth","addEventListener","autoFocus","componentDidUpdate","prevProps","clear","isCursorVisibleForState","componentWillUnmount","_globalObject$documen2","removeEventListener","_this$input9","_this$input10","el","blinkColor","theme","inputBlinkColor","render","_this2","Consumer","flags","renderMain","getLabelSizeClassName","labelLarge","labelMedium","labelSmall","getInputSizeClassName","inputLarge","inputMedium","inputSmall","_cx","_cx2","_cx3","Error","_this$props2","maxMenuHeight","error","warning","renderNotFound","inputMode","renderTotalCount","totalCount","ariaDescribedby","ariaLabel","_this$getProps11","width","onMouseEnter","onMouseLeave","menuWidth","menuAlign","renderItem","_this$state3","showMenu","inputInlineStyles","height","caretColor","labelClassName","hovering","labelDisabled","labelFocused","inputClassName","inputDisabled","placeholder","inputNode","className","inputPlaceholderWrapper","hideCloseButton","id","textareaId","ref","style","spellCheck","onChange","onPaste","inner","Fragment","text","popupMenuId","opened","anchorElementForCursor","anchorElementRoot","reservedInput","container","scrollRef","showScrollBar","rootNodeRef","setRootNode","onMouseDown","onMouseUp","htmlFor","reset","parseFloat","getTextWidth","toFixed","getTextHeight","_createClass","_this$props$id","_this$state$autocompl3","_this$state4","_this$getProps12","PureComponent","__KONTUR_REACT_UI__","displayName","renderValue","toKey","isValidElement"],"sources":["TokenInput.tsx"],"sourcesContent":["import type {\n AriaAttributes,\n ChangeEvent,\n FocusEvent,\n FocusEventHandler,\n HTMLAttributes,\n KeyboardEvent,\n KeyboardEventHandler,\n MouseEventHandler,\n ReactNode,\n} from 'react';\nimport React from 'react';\nimport lodashIsEqual from 'lodash.isequal';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { PopupIds } from '../../internal/Popup';\nimport {\n isKeyArrowHorizontal,\n isKeyArrowLeft,\n isKeyArrowRight,\n isKeyArrowUp,\n isKeyArrowVertical,\n isKeyBackspace,\n isKeyComma,\n isKeyDelete,\n isKeyEnter,\n isKeyEscape,\n isShortcutSelectAll,\n} from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport type { Menu } from '../../internal/Menu';\nimport type { TokenProps, TokenSize } from '../Token';\nimport { Token } from '../Token';\nimport type { MenuItemState } from '../MenuItem';\nimport { MenuItem } from '../MenuItem';\nimport type { AnyObject } from '../../lib/utils';\nimport { isFunction, emptyHandler, getRandomID } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { locale } from '../../lib/locale/decorators';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { getUid } from '../../lib/uidUtils';\nimport { TokenView } from '../Token/TokenView';\nimport type { ReactUIFeatureFlags } from '../../lib/featureFlagsContext';\nimport { getFullReactUIFlagsContext, ReactUIFeatureFlagsContext } from '../../lib/featureFlagsContext';\nimport { withSize } from '../../lib/size/SizeDecorator';\nimport type { SizeProp } from '../../lib/types/props';\nimport { blink } from '../../lib/blink';\nimport { ScrollContainer } from '../ScrollContainer';\n\nimport type { TokenInputLocale } from './locale';\nimport { TokenInputLocaleHelper } from './locale';\nimport { styles } from './TokenInput.styles';\nimport type { TokenInputAction } from './TokenInputReducer';\nimport { tokenInputReducer } from './TokenInputReducer';\nimport { TokenInputMenu } from './TokenInputMenu';\nimport { TextWidthHelper } from './TextWidthHelper';\n\nconst TEMP_FAKE_FLAG = 'TEMP_FAKE_FLAG';\n\nexport enum TokenInputType {\n WithReference,\n WithoutReference,\n Combined,\n}\n\nexport type TokenInputMenuAlign = 'left' | 'cursor';\n\nexport interface TokenInputProps<T>\n extends CommonProps,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'> {\n /** Токены, которые будут отображаться в поле ввода. */\n selectedItems?: T[];\n\n /** Событие добавления нового токена. */\n onValueChange?: (items: T[]) => void;\n\n /** HTML-событие `onmouseenter`.\n * @ignore */\n onMouseEnter?: MouseEventHandler<HTMLDivElement>;\n\n /** HTML-событие `onmouseleave`.\n * @ignore */\n onMouseLeave?: MouseEventHandler<HTMLDivElement>;\n\n /** HTML-событие `onfocus`.\n * @ignore */\n onFocus?: FocusEventHandler<HTMLTextAreaElement>;\n\n /** HTML-событие `onblur`.\n * @ignore */\n onBlur?: FocusEventHandler<HTMLTextAreaElement>;\n\n /** HTML-событие `onkeydown`. */\n onKeyDown?: KeyboardEventHandler<HTMLTextAreaElement>;\n\n /** Устанавливает фокус на поле с токенами после окончания загрузки страницы. */\n autoFocus?: boolean;\n\n /** Размер поля с токенами. */\n size?: TokenSize;\n\n /** Тип инпута.\n * Возможные значения:\n * - `TokenInputType.Combined` — в поле можно выбирать значения из справочника и добавлять свои значения.\n * - `TokenInputType.WithReference` — можно только выбрать значения из справочника, но нельзя добавлять свои.\n * - `TokenInputType.WithoutReference` — можно добавлять любые значения, но подсказок из справочника нет. */\n type?: TokenInputType;\n\n /** Ширина выпадающего списка. */\n menuWidth?: React.CSSProperties['width'];\n\n /** Выравнивание выпадающего списка. */\n menuAlign?: TokenInputMenuAlign;\n\n /** Задаёт функцию поиска значений, которая должна возвращать Promise с массивом значений. По умолчанию ожидаются строки.\n * Элементы могут быть любого типа. В этом случае необходимо определить свойства `renderItem`, `valueToString`. */\n getItems?: (query: string) => Promise<Array<TokenInputExtendedItem<T>>>;\n\n /** Ограничивает отображение выпадающего списка при фокусе на пустом поле: выпадающий список появится, только когда будет введён хотя бы один символ токена. */\n hideMenuIfEmptyInputValue?: boolean;\n\n /** Отрисовывает элемент списка. */\n renderItem?: (item: T, state: MenuItemState) => React.ReactNode | null;\n\n /** Отрисовывает выбранное значение. */\n renderValue?: (item: T) => React.ReactNode;\n\n /** Возвращает строковое представление `value`. Необходимо при фокусировке.\n * @default item => item */\n valueToString?: (item: T) => string;\n\n /** Отрисовывает сообщение об общем количестве элементов.\n * @param {number} found - количество элементов по результатам поиска. Учитывает только компонент MenuItem. Им оборачиваются элементы, возвращаемые `getItems()`.\n * @param {number} total - количество всех элементов. */\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n\n /** Определяет общее количество элементов. Необходим для работы `renderTotalCount`. */\n totalCount?: number;\n\n /** Отрисовывает сообщение о пустом результате поиска. При `renderAddButton` не работает. */\n renderNotFound?: () => React.ReactNode;\n\n /** Преобразует значение в элемент списка. */\n valueToItem?: (value: string) => T;\n\n /** @deprecated Используйте `itemToId` вместо `toKey`. */\n toKey?: (item: T) => string | number | undefined;\n\n /** Сравнивает полученные результаты с `value`. */\n itemToId?: (item: T) => string | number | undefined;\n\n /** Текст, который отображается если не введено никакое значение. */\n placeholder?: string;\n\n /** Символы, которые разделяют введённый текст на токены. По умолчанию — запятая. */\n delimiters?: string[];\n\n /** Меняет визуальное отображение токена на состояние «ошибка». Может быть полезен при разработке собственной валидации, если вы не используете пакет [React UI Validations](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui-validations_displaying-getting-started--docs). */\n error?: boolean;\n\n /** Меняет визуальное отображение токена на состояние «предупреждение». Может быть полезен при разработке собственной валидации, если вы не используете пакет [React UI Validations](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui-validations_displaying-getting-started--docs). */\n warning?: boolean;\n\n /** Блокирует поле с токенами. */\n disabled?: boolean;\n\n /** Ширина поля с токенами. */\n width?: string | number;\n\n /** Максимальная высота выпадающего списка. */\n maxMenuHeight?: number | string;\n\n /** Отрисовывает токен и даёт возможность кастомизировать внешний вид и поведение токена. */\n renderToken?: (item: T, props: Partial<TokenProps>, index: number) => ReactNode;\n\n /** Событие изменения текста в поле ввода, если результатом функции будет строка, то она станет следующим состоянием полем ввода. */\n onInputValueChange?: (value: string) => void;\n\n /** Отрисовывает кнопку добавления нового токена в выпадающем списке. */\n renderAddButton?: (query?: string, onAddItem?: () => void) => ReactNode;\n\n /** Событие обработки ввода строки в поле ввода и последующая потеря фокуса компонентом.\n * Функция срабатывает с аргументом поля строки.\n * Если при потере фокуса в выпадающем списке будет только один элемент и результат `valueToString` с этим элементом будет совпадать со значением в текстовом поле, то сработает `onValueChange` со значением данного элемента.\n * Сама функция также может вернуть значение, не равное undefined, с которым будет вызван `onValueChange`. Если возвращаемое значение будет равно null, то сработает очистка текущего значения поля, а в режиме редактирования токен будет удален. */\n onUnexpectedInput?: (value: string) => void | null | undefined | T;\n\n /** Задаёт типы вводимых данных. Передаёт браузеру информацию о том, какой набор символов показать при вводе данных в конкретное поле на устройствах с экранной клавиатурой. */\n inputMode?: React.HTMLAttributes<HTMLTextAreaElement>['inputMode'];\n\n /**\n * Максимальная высота компонента. При её достижении появится скроллбар\n */\n maxHeight?: number;\n}\n\nexport interface TokenInputState<T> {\n autocompleteItems?: Array<TokenInputExtendedItem<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 type TokenInputExtendedItem<T> = T | (() => React.ReactElement<T>) | React.ReactElement<T>;\n\nexport const DefaultState = {\n inputValue: '',\n reservedInputValue: undefined,\n autocompleteItems: undefined,\n activeTokens: [],\n editingTokenIndex: -1,\n inFocus: false,\n loading: false,\n preventBlur: false,\n inputValueWidth: 2,\n inputValueHeight: 22,\n};\n\nexport const TokenInputDataTids = {\n root: 'TokenInput__root',\n tokenInputMenu: 'TokenInputMenu__root',\n label: 'TokenInput__label',\n} as const;\n\ntype DefaultProps<T> = Required<\n Pick<\n TokenInputProps<T>,\n | 'selectedItems'\n | 'delimiters'\n | 'renderItem'\n | 'renderValue'\n | 'valueToString'\n | 'valueToItem'\n | 'toKey'\n | 'itemToId'\n | 'onValueChange'\n | 'width'\n | 'onBlur'\n | 'onFocus'\n | 'onMouseEnter'\n | 'onMouseLeave'\n | 'menuWidth'\n | 'menuAlign'\n >\n>;\n\nconst defaultToKey = <T extends AnyObject>(item: T): string => item.toString();\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint\nconst identity = <T extends unknown>(item: T): T => item;\nconst defaultRenderToken = <T extends AnyObject>(\n item: T,\n { isActive, onClick, onDoubleClick, onRemove, disabled, size }: Partial<TokenProps>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n index: number,\n) => (\n <Token\n key={item.toString()}\n isActive={isActive}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n onRemove={onRemove}\n disabled={disabled}\n size={size}\n >\n {item.toString()}\n </Token>\n);\n\n/** Поле с токенами — это поле ввода со списком подсказок. Значения в поле отображаются в виде отдельных токенов — компонент [Token](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_input-data-tokeninput-token--docs).\n */\n@rootNode\n@locale('TokenInput', TokenInputLocaleHelper)\n@withSize\nexport class TokenInput<T = string> extends React.PureComponent<TokenInputProps<T>, TokenInputState<T>> {\n public static __KONTUR_REACT_UI__ = 'TokenInput';\n public static displayName = 'TokenInput';\n\n public static defaultProps: DefaultProps<any> = {\n selectedItems: [],\n // TEMP_FAKE_FLAG помогает узнать, остались ли разделители дефолтными или пользователь передал их равными дефолтным.\n delimiters: [',', TEMP_FAKE_FLAG],\n renderItem: identity,\n renderValue: identity,\n valueToString: identity,\n valueToItem: (item: string) => item,\n toKey: defaultToKey,\n itemToId: identity,\n onValueChange: () => void 0,\n width: 250 as string | number,\n onBlur: emptyHandler,\n onFocus: emptyHandler,\n onMouseEnter: emptyHandler,\n onMouseLeave: emptyHandler,\n menuWidth: 'auto',\n menuAlign: 'cursor',\n };\n\n private getDelimiters(): string[] {\n const delimiters = this.props.delimiters ?? [];\n if (delimiters.every((delimiter) => delimiter !== TEMP_FAKE_FLAG)) {\n return delimiters;\n }\n return delimiters.filter((delimiter) => delimiter !== TEMP_FAKE_FLAG);\n }\n\n private getProps() {\n const propsGetter = createPropsGetter(TokenInput.defaultProps);\n const propsWithOldDelimiters = propsGetter.apply(this);\n return { ...propsWithOldDelimiters, delimiters: this.getDelimiters() };\n }\n\n private get textareaId() {\n return this.props.id ?? this._textareaId;\n }\n\n public state: TokenInputState<T> = DefaultState;\n\n private readonly _textareaId: string = getUid();\n private rootId = PopupIds.root + getRandomID();\n private readonly locale!: TokenInputLocale;\n private theme!: Theme;\n private size!: SizeProp;\n public featureFlags!: ReactUIFeatureFlags;\n private input: HTMLTextAreaElement | null = null;\n private tokensInputMenu: TokenInputMenu<T> | null = null;\n private textHelper: TextWidthHelper | null = null;\n private wrapper: HTMLLabelElement | null = null;\n private scrollContainerRef = React.createRef<HTMLDivElement>();\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private memoizedTokens = new Map();\n\n public componentDidMount() {\n this.updateInputTextWidth();\n globalObject.document?.addEventListener('copy', this.handleCopy);\n if (this.props.autoFocus) {\n this.focusInput();\n }\n }\n\n public componentDidUpdate(prevProps: TokenInputProps<T> & DefaultProps<T>, prevState: TokenInputState<T>) {\n if (prevState.inputValue !== this.state.inputValue) {\n this.updateInputTextWidth();\n }\n if (prevState.activeTokens.length === 0 && this.state.activeTokens.length > 0) {\n this.dispatch({\n type: 'SET_AUTOCOMPLETE_ITEMS',\n payload: undefined,\n });\n }\n if (prevProps.selectedItems.length !== this.getProps().selectedItems.length) {\n LayoutEvents.emit();\n this.memoizedTokens.clear();\n }\n if (!this.isCursorVisibleForState(prevState) && this.isCursorVisible) {\n this.tryGetItems(this.isEditingMode ? '' : this.state.inputValue);\n }\n }\n\n public componentWillUnmount() {\n globalObject.document?.removeEventListener('copy', this.handleCopy);\n }\n\n /** Программно устанавливает фокус на поле.\n * Появляется фокусная рамка, элемент получает клавиатурные события и воспринимается как текущий элемент для чтения скринридерами.\n * @public\n */\n public focus() {\n this.input?.focus();\n }\n\n /** Программно снимает фокус с поля.\n * @public\n */\n public blur() {\n this.input?.blur();\n }\n\n /** Кратковременно визуально подсвечивает поле ввода, чтобы привлечь внимание пользователя.\n * @public\n */\n public blink() {\n blink({ el: this.wrapper, blinkColor: this.theme.inputBlinkColor });\n }\n\n public render() {\n return (\n <ReactUIFeatureFlagsContext.Consumer>\n {(flags) => {\n this.featureFlags = getFullReactUIFlagsContext(flags);\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }}\n </ReactUIFeatureFlagsContext.Consumer>\n );\n }\n\n private getLabelSizeClassName() {\n switch (this.size) {\n case 'large':\n return styles.labelLarge(this.theme);\n case 'medium':\n return styles.labelMedium(this.theme);\n case 'small':\n default:\n return styles.labelSmall(this.theme);\n }\n }\n\n private getInputSizeClassName() {\n switch (this.size) {\n case 'large':\n return styles.inputLarge(this.theme);\n case 'medium':\n return styles.inputMedium(this.theme);\n case 'small':\n default:\n return styles.inputSmall(this.theme);\n }\n }\n\n private renderMain() {\n if (this.type !== TokenInputType.WithoutReference && !this.props.getItems) {\n throw Error('Missed getItems for type ' + this.type);\n }\n\n const {\n maxMenuHeight,\n error,\n warning,\n disabled,\n renderNotFound,\n hideMenuIfEmptyInputValue,\n inputMode,\n renderTotalCount,\n totalCount,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n maxHeight,\n } = this.props;\n\n const { selectedItems, width, onMouseEnter, onMouseLeave, menuWidth, menuAlign, renderItem } = this.getProps();\n\n const {\n activeTokens,\n inFocus,\n inputValueWidth,\n inputValueHeight,\n inputValue,\n reservedInputValue,\n autocompleteItems,\n loading,\n } = this.state;\n\n const showMenu =\n this.type !== TokenInputType.WithoutReference &&\n this.isCursorVisible &&\n activeTokens.length === 0 &&\n (this.isInputValueChanged || !hideMenuIfEmptyInputValue);\n\n const theme = this.theme;\n\n const inputInlineStyles: React.CSSProperties = {\n // вычисляем ширину чтобы input автоматически перенёсся на следующую строку при необходимости\n width: inputValueWidth,\n height: inputValueHeight,\n // в ie не работает, но альтернативный способ --- дать tabindex для label --- предположительно ещё сложнее\n caretColor: this.isCursorVisible ? undefined : 'transparent',\n };\n\n const labelClassName = cx(styles.label(theme), this.getLabelSizeClassName(), {\n [styles.hovering(this.theme)]: !inFocus && !disabled && !warning && !error,\n [styles.labelDisabled(theme)]: !!disabled,\n [styles.labelFocused(theme)]: !!inFocus,\n [styles.error(theme)]: !!error,\n [styles.warning(theme)]: !!warning,\n });\n const inputClassName = cx(styles.input(theme), this.getInputSizeClassName(), {\n [styles.inputDisabled(theme)]: !!disabled,\n });\n\n const placeholder = selectedItems.length === 0 && !inputValue ? this.props.placeholder : '';\n\n const inputNode = (\n <TokenView\n size={this.size}\n className={cx({\n // input растягивается на всю ширину чтобы placeholder не обрезался\n [styles.inputPlaceholderWrapper()]: Boolean(placeholder),\n })}\n hideCloseButton={Boolean(placeholder)}\n >\n <textarea\n id={this.textareaId}\n ref={this.inputRef}\n value={inputValue}\n style={inputInlineStyles}\n spellCheck={false}\n disabled={disabled}\n className={inputClassName}\n placeholder={placeholder}\n onFocus={this.handleInputFocus}\n onBlur={this.handleInputBlur}\n onChange={this.handleChangeInputValue}\n onKeyDown={this.handleKeyDown}\n onPaste={this.handleInputPaste}\n inputMode={inputMode}\n aria-label={ariaLabel}\n aria-describedby={ariaDescribedby}\n />\n </TokenView>\n );\n\n const inner = (\n <>\n <TextWidthHelper ref={this.textHelperRef} text={inputValue} theme={this.theme} size={this.size} />\n {this.renderTokensStart()}\n {inputNode}\n {showMenu && (\n <TokenInputMenu\n popupMenuId={this.rootId}\n ref={this.tokensInputMenuRef}\n items={autocompleteItems}\n loading={loading}\n opened={showMenu}\n maxMenuHeight={maxMenuHeight}\n anchorElementForCursor={this.input}\n anchorElementRoot={this.wrapper}\n renderNotFound={renderNotFound}\n renderItem={renderItem}\n onValueChange={this.selectItem}\n renderAddButton={this.renderAddButton}\n menuWidth={menuWidth}\n menuAlign={menuAlign}\n renderTotalCount={renderTotalCount}\n totalCount={totalCount}\n size={this.size}\n />\n )}\n {this.renderTokensEnd()}\n {this.isEditingMode ? (\n <TokenView size={this.size}>\n <span className={styles.reservedInput(theme)}>{reservedInputValue}</span>\n </TokenView>\n ) : null}\n </>\n );\n const container = maxHeight ? (\n <ScrollContainer scrollRef={this.scrollContainerRef} maxHeight={maxHeight} showScrollBar=\"always\">\n {inner}\n </ScrollContainer>\n ) : (\n inner\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 // Для корректной работы скролла приходится ломать связь label с полем ввода\n // Иначе любой клик внутри label вызывает фокус и автоскроллинг к полю ввода\n htmlFor={maxHeight ? 'fake-id' : this.textareaId}\n aria-controls={this.rootId}\n data-tid={TokenInputDataTids.label}\n >\n {container}\n </label>\n </div>\n </CommonWrapper>\n );\n }\n\n /**\n * Сбрасывает введённое пользователем значение.\n * @public\n */\n public reset() {\n this.dispatch({ type: 'RESET' });\n }\n\n private isEqual = (itemA: T, itemB: T) => {\n const { itemToId } = this.getProps();\n return lodashIsEqual(itemToId(itemA), itemToId(itemB));\n };\n\n private hasValueInItems = (items: T[], value: string | T) => {\n const { valueToString } = this.getProps();\n if (typeof value === 'string') {\n return items.map((item) => valueToString(item)).includes(value);\n }\n\n return items.some((item) => this.isEqual(item, value));\n };\n\n private get showAddItemHint() {\n const items = this.state.autocompleteItems?.filter(isSimpleItem);\n const value = this.getProps().valueToItem(this.state.inputValue);\n if (items && this.hasValueInItems(items, value)) {\n return false;\n }\n\n const selectedItems = this.getProps().selectedItems;\n if (selectedItems && this.hasValueInItems(selectedItems, value)) {\n return false;\n }\n\n if (this.type === TokenInputType.Combined && this.isInputValueChanged) {\n return true;\n }\n }\n\n private get type() {\n return this.props.type ? this.props.type : TokenInputType.WithReference;\n }\n\n private get menuRef(): Menu | null {\n return this.tokensInputMenu && this.tokensInputMenu.getMenuRef();\n }\n\n private get isCursorVisible() {\n return this.isCursorVisibleForState(this.state);\n }\n\n private get isEditingMode() {\n return this.state.editingTokenIndex > -1;\n }\n\n private isCursorVisibleForState(state: TokenInputState<T>) {\n return state.inFocus && (this.isInputValueChanged || state.activeTokens.length === 0);\n }\n\n private inputRef = (node: HTMLTextAreaElement) => (this.input = node);\n private tokensInputMenuRef = (node: TokenInputMenu<T>) => (this.tokensInputMenu = node);\n private textHelperRef = (node: TextWidthHelper) => (this.textHelper = node);\n private wrapperRef = (node: HTMLLabelElement) => (this.wrapper = node);\n\n private dispatch = (action: TokenInputAction, cb?: () => void) => {\n this.setState((prevState) => tokenInputReducer(prevState, action), cb);\n };\n\n private updateInputTextWidth() {\n if (this.textHelper) {\n // в IE текст иногда не помещается в input\n // из-за округления, поэтому округляем явно\n const inputValueWidth = parseFloat(this.textHelper.getTextWidth().toFixed(2));\n const inputValueHeight = parseFloat(this.textHelper.getTextHeight().toFixed(2));\n\n this.dispatch({ type: 'SET_INPUT_VALUE_WIDTH', payload: inputValueWidth }, LayoutEvents.emit);\n this.dispatch({ type: 'SET_INPUT_VALUE_HEIGHT', payload: inputValueHeight }, LayoutEvents.emit);\n }\n }\n\n private handleInputFocus = (event: FocusEvent<HTMLTextAreaElement>) => {\n this.dispatch({ type: 'SET_FOCUS_IN' });\n this.getProps().onFocus(event);\n };\n\n private handleInputBlur = (event: FocusEvent<HTMLTextAreaElement>) => {\n const isBlurToMenu = this.isBlurToMenu(event);\n\n if (!isBlurToMenu) {\n this.handleOutsideBlur();\n }\n\n if (isBlurToMenu || this.state.preventBlur) {\n event.preventDefault();\n // первый focus нужен для предотвращения/уменьшения моргания в других браузерах\n this.input?.focus({ preventScroll: true });\n // в firefox не работает без второго focus\n globalObject.requestAnimationFrame?.(() => this.input?.focus({ preventScroll: true }));\n\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: allItems } = this.state;\n const autocompleteItems = allItems?.filter(isSimpleItem);\n\n if (inputValue === '') {\n // если стерли содержимое токена в режиме редактирования, то удаляем токен\n if (this.isEditingMode) {\n this.finishTokenEdit();\n }\n return;\n }\n\n // если не изменилось значение токена при редактировании\n if (this.isEditingMode && !this.isTokenValueChanged) {\n this.finishTokenEdit();\n return;\n }\n\n // чекаем автокомплит на совпадение с введенным значением в инпут\n if (autocompleteItems && autocompleteItems.length === 1) {\n const item = autocompleteItems[0];\n\n if (this.getProps().valueToString(item) === inputValue) {\n this.isEditingMode ? this.finishTokenEdit() : this.selectItem(item);\n\n return;\n }\n }\n\n if (this.isInputChanged) {\n this.checkForUnexpectedInput();\n }\n };\n\n private get isInputChanged() {\n if (this.isEditingMode) {\n return this.isTokenValueChanged;\n }\n\n return this.isInputValueChanged;\n }\n\n private get isInputValueChanged() {\n const { inputValue } = this.state;\n\n return inputValue !== '';\n }\n\n private get isTokenValueChanged() {\n const { inputValue, editingTokenIndex } = this.state;\n const { valueToString, selectedItems } = this.getProps();\n\n if (this.isEditingMode) {\n return valueToString(selectedItems[editingTokenIndex]) !== inputValue;\n }\n\n return false;\n }\n\n private isBlurToMenu = (event: FocusEvent<HTMLElement>) => {\n if (this.menuRef && globalObject.document) {\n const menu = getRootNode(this.tokensInputMenu?.getMenuRef());\n const relatedTarget = event.relatedTarget || globalObject.document.activeElement;\n\n if (menu && menu.contains(relatedTarget)) {\n return true;\n }\n }\n return false;\n };\n\n private handleWrapperMouseDown = (event: React.MouseEvent<HTMLElement>) => {\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: true });\n const target = event.target as HTMLElement;\n const isClickOnToken = target && this.wrapper?.contains(target) && target !== this.wrapper && target !== this.input;\n if (!isClickOnToken) {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n }\n };\n\n private handleWrapperMouseUp = (e: React.MouseEvent<HTMLElement>) => {\n // Имитируем поведение label, когда задан maxHeight.\n if (\n this.props.maxHeight &&\n e.target === this.scrollContainerRef.current &&\n (this.state.activeTokens.length !== 0 || !this.state.inFocus)\n ) {\n this.dispatch({ type: 'BLUR' });\n this.dispatch({ type: 'SET_FOCUS_IN' });\n this.focusInput();\n this.input?.scrollIntoView({ behavior: 'auto', block: 'center' });\n }\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: false });\n };\n\n private handleCopy = (event: any) => {\n if (!this.state.inFocus || this.state.activeTokens.length === 0 || this.isCursorVisible) {\n return;\n }\n event.preventDefault();\n const { selectedItems, valueToString, delimiters } = this.getProps();\n // упорядочивание токенов по индексу\n const tokens = this.state.activeTokens\n .map((token) => selectedItems.indexOf(token))\n .sort()\n .map((index) => selectedItems[index])\n .map((item) => valueToString(item));\n event.clipboardData.setData('text/plain', tokens.join(delimiters[0]));\n };\n\n private handleInputPaste = (event: React.ClipboardEvent<HTMLElement>) => {\n if (this.type === TokenInputType.WithReference || !event.clipboardData) {\n return;\n }\n const paste = event.clipboardData.getData('text');\n const { delimiters, selectedItems, valueToItem, onValueChange } = this.getProps();\n if (delimiters.some((delimiter) => paste.includes(delimiter))) {\n event.preventDefault();\n event.stopPropagation();\n const tokens = paste.trim().split(new RegExp(`[${delimiters.join('')}]+`));\n const items = tokens\n .filter(Boolean)\n .map((token) => valueToItem(token))\n .filter((item) => item && !this.hasValueInItems(selectedItems, item));\n const newItems = selectedItems.concat(items);\n onValueChange(newItems);\n\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: undefined });\n this.tryGetItems();\n }\n };\n\n private tryGetItems = async (query = '') => {\n if (this.props.getItems && (this.isInputValueChanged || !this.props.hideMenuIfEmptyInputValue)) {\n this.dispatch({ type: 'SET_LOADING', payload: true });\n const autocompleteItems = await this.props.getItems(query);\n this.dispatch({ type: 'SET_LOADING', payload: false });\n\n const { selectedItems, valueToItem, valueToString } = this.getProps();\n const isSelectedItem = (item: T) => this.hasValueInItems(selectedItems, item);\n const isEditingItem = (item: T) => {\n const editingItem = selectedItems[this.state.editingTokenIndex];\n return !!editingItem && this.isEqual(item, editingItem);\n };\n\n const autocompleteItemsUnique = autocompleteItems.filter((item) =>\n isSimpleItem(item) ? !isSelectedItem(item) || isEditingItem(item) : true,\n );\n const autocompleteItemsUniqueSimple = autocompleteItemsUnique.filter(isSimpleItem);\n\n if (this.isEditingMode) {\n const editingItem = selectedItems[this.state.editingTokenIndex];\n if (\n this.isEqual(editingItem, valueToItem(this.state.inputValue)) &&\n !this.hasValueInItems(autocompleteItemsUniqueSimple, editingItem)\n ) {\n autocompleteItemsUnique.unshift(editingItem);\n }\n }\n\n if (query === '' || this.isInputValueChanged) {\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: autocompleteItemsUnique }, () => {\n LayoutEvents.emit();\n this.highlightMenuItem();\n });\n }\n const selectItemIndex = autocompleteItemsUniqueSimple.findIndex(\n (item) => valueToString(item).toLowerCase() === this.state.inputValue.toLowerCase(),\n );\n setTimeout(() => this.menuRef?.highlightItem(selectItemIndex < 0 ? 0 : selectItemIndex), 0);\n }\n };\n\n private handleKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n this.props.onKeyDown?.(event);\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (this.isCursorVisible) {\n this.handleInputKeyDown(event);\n } else {\n this.handleWrapperKeyDown(event);\n }\n };\n\n private handleInputKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n e.stopPropagation();\n\n if (\n (this.type !== TokenInputType.WithReference &&\n this.getProps().delimiters.some((key) => key === e.key || (key === ',' && isKeyComma(e)))) ||\n (isKeyEnter(e) && this.type === TokenInputType.WithoutReference)\n ) {\n e.preventDefault();\n const newValue = this.state.inputValue;\n if (newValue !== '') {\n if (this.isEditingMode) {\n this.finishTokenEdit();\n } else {\n this.handleAddItem();\n }\n }\n }\n const isRightmostTokenNotDisabled = !this.isTokenDisabled(this.getProps().selectedItems.length - 1);\n const canSetValueToInput = this.showAddItemHint || (this.state.autocompleteItems?.length ?? 0) > 0;\n\n switch (true) {\n case isKeyEnter(e):\n if (canSetValueToInput && this.menuRef) {\n this.menuRef.enter(e);\n }\n // don't allow textarea\n // became multiline\n e.preventDefault();\n break;\n case isKeyArrowVertical(e):\n e.preventDefault();\n if (this.menuRef) {\n if (isKeyArrowUp(e)) {\n this.menuRef.up();\n } else {\n this.menuRef.down();\n }\n }\n break;\n case isKeyEscape(e):\n this.input?.blur();\n break;\n case isKeyBackspace(e):\n if (!this.isEditingMode && isRightmostTokenNotDisabled) {\n this.moveFocusToLastToken();\n }\n break;\n case isKeyArrowLeft(e):\n if (this.input?.selectionStart === 0) {\n const index = this.getAvailableTokenIndex(this.getProps().selectedItems.length);\n const itemNew = this.getProps().selectedItems[index];\n if (itemNew) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [itemNew] });\n }\n }\n break;\n }\n };\n\n private moveFocusToLastToken() {\n const items = this.getProps().selectedItems;\n if (this.state.inputValue === '' && items && items.length > 0) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: items.slice(-1) });\n }\n }\n\n private focusInput = (options?: FocusOptions) => {\n globalObject.requestAnimationFrame?.(() => this.input?.focus(options));\n };\n\n private selectInputText = () => {\n if (this.input) {\n this.input.setSelectionRange(0, this.state.inputValue.length);\n }\n };\n\n private handleWrapperKeyDown = (e: KeyboardEvent<HTMLElement>) => {\n const { selectedItems, onValueChange } = this.getProps();\n switch (true) {\n case isKeyBackspace(e):\n case isKeyDelete(e): {\n const indexOfActiveToken = this.getProps().selectedItems.indexOf(\n this.state.activeTokens[this.state.activeTokens.length - 1],\n );\n if (!this.isEditingMode && !this.isTokenDisabled(indexOfActiveToken)) {\n const itemsNew = selectedItems.filter((item) => !this.hasValueInItems(this.state.activeTokens, item));\n onValueChange(itemsNew);\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' }, () => {\n LayoutEvents.emit();\n this.input?.focus();\n });\n }\n break;\n }\n case isKeyArrowHorizontal(e):\n this.handleWrapperArrows(e);\n break;\n case isKeyEscape(e):\n this.wrapper?.blur();\n break;\n case isKeyEnter(e):\n e.preventDefault();\n if (this.state.activeTokens.length === 1) {\n this.handleTokenEdit(this.state.activeTokens[0]);\n }\n break;\n case isShortcutSelectAll(e):\n e.preventDefault();\n this.dispatch({\n type: 'SET_ACTIVE_TOKENS',\n payload: selectedItems.filter((item) => !this.isTokenDisabled(selectedItems.indexOf(item))),\n });\n break;\n }\n };\n\n private handleWrapperArrows = (e: KeyboardEvent<HTMLElement>) => {\n e.preventDefault();\n const selectedItems = this.getProps().selectedItems;\n const activeTokens = this.state.activeTokens;\n const activeItemIndex = selectedItems.indexOf(activeTokens[0]);\n const newItemIndex = this.getAvailableTokenIndex(activeItemIndex, isKeyArrowLeft(e));\n const isLeftEdge = activeItemIndex === 0 && isKeyArrowLeft(e);\n const isRightEdge = newItemIndex === selectedItems.length && isKeyArrowRight(e);\n if (!e.shiftKey && activeTokens.length === 1) {\n this.handleWrapperArrowsWithoutShift(isLeftEdge, isRightEdge, newItemIndex);\n } else {\n this.handleWrapperArrowsWithShift(isLeftEdge, isRightEdge, newItemIndex);\n }\n };\n\n private handleWrapperArrowsWithoutShift = (isLeftEdge: boolean, isRightEdge: boolean, newItemIndex: number) => {\n if (isRightEdge) {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' }, () => this.input?.focus());\n } else if (!isLeftEdge) {\n this.dispatch({\n type: 'SET_ACTIVE_TOKENS',\n payload: [this.getProps().selectedItems[newItemIndex]],\n });\n }\n };\n\n private handleWrapperArrowsWithShift = (isLeftEdge: boolean, isRightEdge: boolean, newItemIndex: number) => {\n if (!isLeftEdge && !isRightEdge) {\n const itemNew = this.getProps().selectedItems[newItemIndex];\n const itemsNew = [itemNew, ...this.state.activeTokens.filter((item) => !this.isEqual(item, itemNew))];\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: itemsNew });\n }\n };\n\n private handleValueChange = (items: T[]) => {\n this.getProps().onValueChange(items);\n };\n\n private handleAddItem = () => {\n const item = this.getProps().valueToItem(this.state.inputValue);\n if (item) {\n this.selectItem(item);\n }\n };\n\n private selectItem = (item: T) => {\n const { selectedItems: allItems, valueToString } = this.getProps();\n const selectedItems = allItems.filter(isSimpleItem);\n if (this.isEditingMode) {\n this.dispatch({ type: 'UPDATE_QUERY', payload: valueToString(item) }, this.finishTokenEdit);\n } else if (!this.hasValueInItems(selectedItems, item)) {\n this.handleValueChange(selectedItems.concat([item]));\n this.dispatch({ type: 'CLEAR_INPUT' });\n this.tryGetItems();\n }\n };\n\n private handleRemoveToken = (item: T) => {\n this.props.onValueChange?.(this.getProps().selectedItems.filter((_) => !this.isEqual(_, item)));\n const filteredActiveTokens = this.state.activeTokens.filter((_) => !this.isEqual(_, item));\n\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: filteredActiveTokens });\n if (filteredActiveTokens.length === 0) {\n this.focusInput({ preventScroll: true });\n }\n\n this.tryGetItems();\n };\n\n private handleTokenClick = (event: React.MouseEvent<HTMLElement>, itemNew: T) => {\n const items = this.state.activeTokens;\n if (event.ctrlKey) {\n const newItems = this.hasValueInItems(this.state.activeTokens, itemNew)\n ? items.filter((item) => !this.isEqual(item, itemNew))\n : [...items, itemNew];\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: newItems });\n } else {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [itemNew] });\n }\n this.focusInput({ preventScroll: true });\n };\n\n private handleTokenEdit = (itemNew: T) => {\n const { selectedItems, valueToString } = this.getProps();\n const editingTokenIndex = selectedItems.findIndex((item) => item === itemNew);\n this.dispatch({ type: 'SET_EDITING_TOKEN_INDEX', payload: editingTokenIndex });\n\n if (this.isInputValueChanged) {\n if (this.state.reservedInputValue === undefined) {\n this.dispatch({ type: 'SET_TEMPORARY_QUERY', payload: this.state.inputValue });\n }\n }\n this.dispatch({ type: 'UPDATE_QUERY', payload: valueToString(itemNew) }, this.selectInputText);\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n\n this.tryGetItems();\n };\n\n private finishTokenEdit = () => {\n const { selectedItems, valueToString } = this.getProps();\n const { editingTokenIndex, inputValue, reservedInputValue, autocompleteItems } = this.state;\n\n const editedItem =\n autocompleteItems?.find((item) => valueToString(item) === inputValue) ?? this.getProps().valueToItem(inputValue);\n\n const newItems = selectedItems.concat([]);\n\n if (!this.hasValueInItems(selectedItems, editedItem)) {\n newItems.splice(editingTokenIndex, 1, ...(this.isInputValueChanged ? [editedItem] : []));\n this.handleValueChange(newItems);\n }\n\n this.dispatch({ type: 'REMOVE_EDITING_TOKEN_INDEX' });\n\n if (reservedInputValue) {\n this.dispatch({ type: 'UPDATE_QUERY', payload: reservedInputValue });\n this.dispatch({ type: 'REMOVE_TEMPORARY_QUERY' });\n } else {\n this.dispatch({ type: 'CLEAR_INPUT' });\n }\n\n if (newItems.length === selectedItems.length) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [newItems[editingTokenIndex]] });\n }\n };\n\n private checkForUnexpectedInput = () => {\n const { inputValue } = this.state;\n const { onUnexpectedInput } = this.props;\n\n // чекаем не возвращает ли что-нибудь обработчик\n const returnedValue = onUnexpectedInput?.(inputValue);\n\n if (returnedValue === undefined) {\n if (\n this.featureFlags.tokenInputCreateTokenOnBlurInWithoutReferenceMode &&\n this.type === TokenInputType.WithoutReference\n ) {\n this.handleAddItem();\n }\n\n return;\n }\n\n if (returnedValue === null) {\n this.dispatch({ type: 'CLEAR_INPUT' }, () => {\n if (this.isEditingMode) {\n this.finishTokenEdit();\n }\n });\n\n return;\n }\n\n if (returnedValue) {\n this.selectItem(returnedValue);\n }\n };\n\n private handleChangeInputValue = (event: ChangeEvent<HTMLTextAreaElement>) => {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n let query = event.target.value.trimLeft();\n\n if (query.endsWith(' ')) {\n query = query.trimRight() + ' ';\n }\n if (this.isInputValueChanged && query === '') {\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: undefined });\n }\n this.dispatch({ type: 'UPDATE_QUERY', payload: query }, () => {\n this.tryGetItems(query);\n });\n if (this.props.onInputValueChange) {\n this.props.onInputValueChange(query);\n }\n };\n\n private highlightMenuItem = () => {\n if (\n this.menuRef &&\n this.state.autocompleteItems &&\n this.state.autocompleteItems.length > 0 &&\n this.type !== TokenInputType.Combined\n ) {\n this.menuRef.highlightItem(0);\n }\n };\n\n private renderTokensStart = () => {\n const { editingTokenIndex } = this.state;\n const selectedItems = this.getProps().selectedItems;\n const delimiter = editingTokenIndex >= 0 ? editingTokenIndex : selectedItems.length;\n return selectedItems.slice(0, delimiter).map(this.renderToken);\n };\n\n private renderTokensEnd = () => {\n if (this.state.editingTokenIndex >= 0) {\n return this.getProps()\n .selectedItems.slice(this.state.editingTokenIndex + 1)\n .map(this.renderToken);\n }\n };\n\n private renderToken = (item: T, index: number) => {\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(\n item as T & AnyObject,\n {\n size: this.size,\n isActive,\n onClick: handleTokenClick,\n onDoubleClick: handleTokenDoubleClick,\n onRemove: handleIconClick,\n disabled,\n },\n index,\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], 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\nfunction isSimpleItem<T>(item: TokenInputExtendedItem<T>): item is T {\n return !isFunction(item) && !React.isValidElement(item);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -12,23 +12,23 @@ export declare enum TokenInputType {
12
12
  }
13
13
  export type TokenInputMenuAlign = 'left' | 'cursor';
14
14
  export interface TokenInputProps<T> extends CommonProps, Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>, Pick<HTMLAttributes<HTMLElement>, 'id'> {
15
- /** Задаёт выбранные токены, которые будут отображаться в поле ввода. */
15
+ /** Токены, которые будут отображаться в поле ввода. */
16
16
  selectedItems?: T[];
17
- /** Задаёт функцию, которая вызывается при добавлении нового токена. */
17
+ /** Событие добавления нового токена. */
18
18
  onValueChange?: (items: T[]) => void;
19
- /** Задает HTML-событие `onmouseenter`.
19
+ /** HTML-событие `onmouseenter`.
20
20
  * @ignore */
21
21
  onMouseEnter?: MouseEventHandler<HTMLDivElement>;
22
- /** Задает HTML-событие `onmouseleave`.
22
+ /** HTML-событие `onmouseleave`.
23
23
  * @ignore */
24
24
  onMouseLeave?: MouseEventHandler<HTMLDivElement>;
25
- /** Задает HTML-событие `onfocus`.
25
+ /** HTML-событие `onfocus`.
26
26
  * @ignore */
27
27
  onFocus?: FocusEventHandler<HTMLTextAreaElement>;
28
- /** Задает HTML-событие `onblur`.
28
+ /** HTML-событие `onblur`.
29
29
  * @ignore */
30
30
  onBlur?: FocusEventHandler<HTMLTextAreaElement>;
31
- /** Задаёт HTML-событие `onkeydown`. */
31
+ /** HTML-событие `onkeydown`. */
32
32
  onKeyDown?: KeyboardEventHandler<HTMLTextAreaElement>;
33
33
  /** Устанавливает фокус на поле с токенами после окончания загрузки страницы. */
34
34
  autoFocus?: boolean;
@@ -49,28 +49,28 @@ export interface TokenInputProps<T> extends CommonProps, Pick<AriaAttributes, 'a
49
49
  getItems?: (query: string) => Promise<Array<TokenInputExtendedItem<T>>>;
50
50
  /** Ограничивает отображение выпадающего списка при фокусе на пустом поле: выпадающий список появится, только когда будет введён хотя бы один символ токена. */
51
51
  hideMenuIfEmptyInputValue?: boolean;
52
- /** Задаёт функцию, которая отображает элемент списка. */
52
+ /** Отрисовывает элемент списка. */
53
53
  renderItem?: (item: T, state: MenuItemState) => React.ReactNode | null;
54
- /** Задаёт функцию, которая отображает выбранное значение. */
54
+ /** Отрисовывает выбранное значение. */
55
55
  renderValue?: (item: T) => React.ReactNode;
56
- /** Задаёт функцию, которая возвращает строковое представление `value`. Необходимо при фокусировке.
56
+ /** Возвращает строковое представление `value`. Необходимо при фокусировке.
57
57
  * @default item => item */
58
58
  valueToString?: (item: T) => string;
59
- /** Задаёт функцию, которая отображает сообщение об общем количестве элементов.
59
+ /** Отрисовывает сообщение об общем количестве элементов.
60
60
  * @param {number} found - количество элементов по результатам поиска. Учитывает только компонент MenuItem. Им оборачиваются элементы, возвращаемые `getItems()`.
61
61
  * @param {number} total - количество всех элементов. */
62
62
  renderTotalCount?: (found: number, total: number) => React.ReactNode;
63
63
  /** Определяет общее количество элементов. Необходим для работы `renderTotalCount`. */
64
64
  totalCount?: number;
65
- /** Задаёт функцию, которая отображает сообщение о пустом результате поиска. При `renderAddButton` не работает. */
65
+ /** Отрисовывает сообщение о пустом результате поиска. При `renderAddButton` не работает. */
66
66
  renderNotFound?: () => React.ReactNode;
67
67
  /** Преобразует значение в элемент списка. */
68
68
  valueToItem?: (value: string) => T;
69
69
  /** @deprecated Используйте `itemToId` вместо `toKey`. */
70
70
  toKey?: (item: T) => string | number | undefined;
71
- /** Задаёт функцию сравнения полученных результатов с `value`. */
71
+ /** Сравнивает полученные результаты с `value`. */
72
72
  itemToId?: (item: T) => string | number | undefined;
73
- /** Задаёт текст, который отображается если не введено никакое значение. */
73
+ /** Текст, который отображается если не введено никакое значение. */
74
74
  placeholder?: string;
75
75
  /** Символы, которые разделяют введённый текст на токены. По умолчанию — запятая. */
76
76
  delimiters?: string[];
@@ -84,13 +84,13 @@ export interface TokenInputProps<T> extends CommonProps, Pick<AriaAttributes, 'a
84
84
  width?: string | number;
85
85
  /** Максимальная высота выпадающего списка. */
86
86
  maxMenuHeight?: number | string;
87
- /** Задаёт функцию, которая отображает токен и даёт возможность кастомизировать внешний вид и поведение токена. */
87
+ /** Отрисовывает токен и даёт возможность кастомизировать внешний вид и поведение токена. */
88
88
  renderToken?: (item: T, props: Partial<TokenProps>, index: number) => ReactNode;
89
- /** Задаёт функцию, которая вызывается при изменении текста в поле ввода, если результатом функции будет строка, то она станет следующим состоянием полем ввода. */
89
+ /** Событие изменения текста в поле ввода, если результатом функции будет строка, то она станет следующим состоянием полем ввода. */
90
90
  onInputValueChange?: (value: string) => void;
91
- /** Задаёт функцию, которая отрисовывает кнопку добавления нового токена в выпадающем списке. */
91
+ /** Отрисовывает кнопку добавления нового токена в выпадающем списке. */
92
92
  renderAddButton?: (query?: string, onAddItem?: () => void) => ReactNode;
93
- /** Задаёт функцию для обработки ввода строки в поле ввода и последующей потерей фокуса компонентом.
93
+ /** Событие обработки ввода строки в поле ввода и последующая потеря фокуса компонентом.
94
94
  * Функция срабатывает с аргументом поля строки.
95
95
  * Если при потере фокуса в выпадающем списке будет только один элемент и результат `valueToString` с этим элементом будет совпадать со значением в текстовом поле, то сработает `onValueChange` со значением данного элемента.
96
96
  * Сама функция также может вернуть значение, не равное undefined, с которым будет вызван `onValueChange`. Если возвращаемое значение будет равно null, то сработает очистка текущего значения поля, а в режиме редактирования токен будет удален. */