@skbkontur/react-ui 5.3.0 → 5.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/cjs/components/Select/Select.js +1 -1
  3. package/cjs/components/Select/Select.js.map +1 -1
  4. package/components/Select/Select/Select.js +2 -2
  5. package/components/Select/Select/Select.js.map +1 -1
  6. package/package.json +1 -6
  7. package/cjs/components/Autocomplete/Autocomplete.md +0 -113
  8. package/cjs/components/Button/Button.md +0 -261
  9. package/cjs/components/Calendar/Calendar.md +0 -276
  10. package/cjs/components/Calendar/CalendarDay.md +0 -70
  11. package/cjs/components/Center/Center.md +0 -26
  12. package/cjs/components/Checkbox/Checkbox.md +0 -171
  13. package/cjs/components/ComboBox/ComboBox.md +0 -574
  14. package/cjs/components/CurrencyInput/CurrencyInput.md +0 -39
  15. package/cjs/components/CurrencyLabel/CurrencyLabel.md +0 -29
  16. package/cjs/components/DateInput/DateInput.md +0 -111
  17. package/cjs/components/DatePicker/DatePicker.md +0 -368
  18. package/cjs/components/Dropdown/Dropdown.md +0 -45
  19. package/cjs/components/DropdownMenu/DropdownMenu.md +0 -290
  20. package/cjs/components/FileUploader/FileUploader.md +0 -131
  21. package/cjs/components/FxInput/FxInput.md +0 -31
  22. package/cjs/components/Gapped/Gapped.md +0 -44
  23. package/cjs/components/GlobalLoader/GlobalLoader.md +0 -97
  24. package/cjs/components/Group/Group.md +0 -19
  25. package/cjs/components/Hint/Hint.md +0 -86
  26. package/cjs/components/Input/Input.md +0 -86
  27. package/cjs/components/Kebab/Kebab.md +0 -306
  28. package/cjs/components/Link/Link.md +0 -182
  29. package/cjs/components/Loader/Loader.md +0 -33
  30. package/cjs/components/MaskedInput/MaskedInput.md +0 -114
  31. package/cjs/components/MenuFooter/MenuFooter.md +0 -27
  32. package/cjs/components/MenuHeader/MenuHeader.md +0 -35
  33. package/cjs/components/MenuItem/MenuItem.md +0 -139
  34. package/cjs/components/MenuSeparator/MenuSeparator.md +0 -14
  35. package/cjs/components/MiniModal/MiniModal.md +0 -231
  36. package/cjs/components/Modal/Modal.md +0 -56
  37. package/cjs/components/Paging/Paging.md +0 -57
  38. package/cjs/components/PasswordInput/PasswordInput.md +0 -29
  39. package/cjs/components/Radio/Radio.md +0 -57
  40. package/cjs/components/RadioGroup/RadioGroup.md +0 -44
  41. package/cjs/components/ResponsiveLayout/ResponsiveLayout.md +0 -75
  42. package/cjs/components/ScrollContainer/ScrollContainer.md +0 -224
  43. package/cjs/components/Select/Select.md +0 -113
  44. package/cjs/components/SidePage/SidePage.md +0 -65
  45. package/cjs/components/SingleToast/SingleToast.md +0 -36
  46. package/cjs/components/Spinner/Spinner.md +0 -36
  47. package/cjs/components/Sticky/Sticky.md +0 -28
  48. package/cjs/components/Switcher/Switcher.md +0 -111
  49. package/cjs/components/Tabs/Tab.md +0 -73
  50. package/cjs/components/Tabs/Tabs.md +0 -54
  51. package/cjs/components/Textarea/Textarea.md +0 -58
  52. package/cjs/components/Toast/Toast.md +0 -69
  53. package/cjs/components/Toggle/Toggle.md +0 -110
  54. package/cjs/components/Token/Token.md +0 -48
  55. package/cjs/components/TokenInput/TokenInput.md +0 -277
  56. package/cjs/components/Tooltip/Tooltip.md +0 -322
  57. package/cjs/components/TooltipMenu/TooltipMenu.md +0 -241
  58. package/cjs/internal/DataTids/DATATIDS.md +0 -12
  59. package/cjs/internal/DataTids/DataTids.d.ts +0 -12
  60. package/cjs/internal/DataTids/DataTids.js +0 -50
  61. package/cjs/internal/DataTids/DataTids.js.map +0 -1
  62. package/cjs/internal/DataTids/DataTids.styles.d.ts +0 -7
  63. package/cjs/internal/DataTids/DataTids.styles.js +0 -42
  64. package/cjs/internal/DataTids/DataTids.styles.js.map +0 -1
  65. package/cjs/internal/DataTids/componentsDataTids.d.ts +0 -5
  66. package/cjs/internal/DataTids/componentsDataTids.js +0 -15
  67. package/cjs/internal/DataTids/componentsDataTids.js.map +0 -1
  68. package/cjs/internal/ThemePlayground/Playground.md +0 -7
  69. package/cjs/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +0 -64
  70. package/cjs/lib/locale/LOCALECONTEXT.md +0 -222
  71. package/cjs/lib/theming/ThemeContext.md +0 -265
  72. package/components/Autocomplete/Autocomplete.md +0 -113
  73. package/components/Button/Button.md +0 -261
  74. package/components/Calendar/Calendar.md +0 -276
  75. package/components/Calendar/CalendarDay.md +0 -70
  76. package/components/Center/Center.md +0 -26
  77. package/components/Checkbox/Checkbox.md +0 -171
  78. package/components/ComboBox/ComboBox.md +0 -574
  79. package/components/CurrencyInput/CurrencyInput.md +0 -39
  80. package/components/CurrencyLabel/CurrencyLabel.md +0 -29
  81. package/components/DateInput/DateInput.md +0 -111
  82. package/components/DatePicker/DatePicker.md +0 -368
  83. package/components/Dropdown/Dropdown.md +0 -45
  84. package/components/DropdownMenu/DropdownMenu.md +0 -290
  85. package/components/FileUploader/FileUploader.md +0 -131
  86. package/components/FxInput/FxInput.md +0 -31
  87. package/components/Gapped/Gapped.md +0 -44
  88. package/components/GlobalLoader/GlobalLoader.md +0 -97
  89. package/components/Group/Group.md +0 -19
  90. package/components/Hint/Hint.md +0 -86
  91. package/components/Input/Input.md +0 -86
  92. package/components/Kebab/Kebab.md +0 -306
  93. package/components/Link/Link.md +0 -182
  94. package/components/Loader/Loader.md +0 -33
  95. package/components/MaskedInput/MaskedInput.md +0 -114
  96. package/components/MenuFooter/MenuFooter.md +0 -27
  97. package/components/MenuHeader/MenuHeader.md +0 -35
  98. package/components/MenuItem/MenuItem.md +0 -139
  99. package/components/MenuSeparator/MenuSeparator.md +0 -14
  100. package/components/MiniModal/MiniModal.md +0 -231
  101. package/components/Modal/Modal.md +0 -56
  102. package/components/Paging/Paging.md +0 -57
  103. package/components/PasswordInput/PasswordInput.md +0 -29
  104. package/components/Radio/Radio.md +0 -57
  105. package/components/RadioGroup/RadioGroup.md +0 -44
  106. package/components/ResponsiveLayout/ResponsiveLayout.md +0 -75
  107. package/components/ScrollContainer/ScrollContainer.md +0 -224
  108. package/components/Select/Select.md +0 -113
  109. package/components/SidePage/SidePage.md +0 -65
  110. package/components/SingleToast/SingleToast.md +0 -36
  111. package/components/Spinner/Spinner.md +0 -36
  112. package/components/Sticky/Sticky.md +0 -28
  113. package/components/Switcher/Switcher.md +0 -111
  114. package/components/Tabs/Tab.md +0 -73
  115. package/components/Tabs/Tabs.md +0 -54
  116. package/components/Textarea/Textarea.md +0 -58
  117. package/components/Toast/Toast.md +0 -69
  118. package/components/Toggle/Toggle.md +0 -110
  119. package/components/Token/Token.md +0 -48
  120. package/components/TokenInput/TokenInput.md +0 -277
  121. package/components/Tooltip/Tooltip.md +0 -322
  122. package/components/TooltipMenu/TooltipMenu.md +0 -241
  123. package/internal/DataTids/DATATIDS.md +0 -12
  124. package/internal/DataTids/DataTids/DataTids.js +0 -69
  125. package/internal/DataTids/DataTids/DataTids.js.map +0 -1
  126. package/internal/DataTids/DataTids/package.json +0 -6
  127. package/internal/DataTids/DataTids.d.ts +0 -12
  128. package/internal/DataTids/DataTids.styles/DataTids.styles.js +0 -20
  129. package/internal/DataTids/DataTids.styles/DataTids.styles.js.map +0 -1
  130. package/internal/DataTids/DataTids.styles/package.json +0 -6
  131. package/internal/DataTids/DataTids.styles.d.ts +0 -7
  132. package/internal/DataTids/componentsDataTids/componentsDataTids.js +0 -12
  133. package/internal/DataTids/componentsDataTids/componentsDataTids.js.map +0 -1
  134. package/internal/DataTids/componentsDataTids/package.json +0 -6
  135. package/internal/DataTids/componentsDataTids.d.ts +0 -5
  136. package/internal/ThemePlayground/Playground.md +0 -7
  137. package/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +0 -64
  138. package/lib/locale/LOCALECONTEXT.md +0 -222
  139. package/lib/theming/ThemeContext.md +0 -265
@@ -1 +1 @@
1
- {"version":3,"names":["React","invariant","globalObject","debounce","isKeyArrowDown","isKeyArrowUp","isKeyArrowVertical","isKeyEnter","isKeyEscape","isKeySpace","locale","reactGetTextContent","Button","filterProps","Input","Menu","MenuItem","MenuSeparator","RenderLayer","createPropsGetter","getRandomID","isFunction","isNonNullable","isReactUINode","ThemeContext","CommonWrapper","MobilePopup","cx","responsiveLayout","getRootNode","rootNode","ThemeFactory","styles","linkStyles","Popup","ZIndex","getMenuPositions","ArrowDownIcon","Item","SelectLocaleHelper","getSelectTheme","SelectDataTids","PASS_BUTTON_PROPS","id","disabled","error","use","size","warning","corners","onMouseEnter","onMouseLeave","onMouseOver","SelectIds","menu","Select","_dec","_class","_Select","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","opened","value","props","defaultValue","searchPattern","menuId","buttonElement","getProps","defaultProps","open","setState","onOpen","close","onClose","focus","getDefaultButtonParams","_this$renderLabel","renderLabel","label","isPlaceholder","buttonParams","onClick","toggle","onKeyDown","handleKey","getSearch","createElement","className","search","ref","debouncedFocusInput","onValueChange","handleSearch","width","getMobileSearch","autoFocus","getMenuItems","isMobile","isMobileLayout","mapItems","iValue","item","i","comment","element","isValidElement","cloneElement","key","areValuesEqual","select","bind","renderItem","popupGetParent","focusInput","input","refMenu","e","preventDefault","up","down","enter","_this$menu","highlightItem","buttonRef","getButton","_props$ariaLabel","button","_renderButton","renderDefaultButton","Children","only","onFocus","onBlur","_inheritsLoose","_proto","prototype","componentDidUpdate","_prevProps","prevState","addEventListener","removeEventListener","render","_this2","Consumer","theme","create","menuOffsetY","selectMenuOffsetY","Provider","renderMain","getMenuRenderer","renderMobileMenu","renderMenu","_this$getProps$dataT","_cx","dataTid","root","style","maxWidth","undefined","rootMobile","_extends","rootNodeRef","setRootNode","onClickOutside","onFocusOutside","active","_this$locale","getValue","getItemByValue","renderValue","placeholder","getLeftIconClass","leftIconLink","leftIconLarge","leftIconMedium","leftIconSmall","params","_cx2","_cx3","_cx4","buttonProps","align","labelProps","customUsePlaceholder","placeholderDisabled","paddingRight","getSelectIconGap","useIsCustom","icon","selectButtonContainer","_icon","arrowWrap","arrowDisabled","customUseArrow","_this3","getArrowPadding","selectIconGapLarge","selectIconGapMedium","selectIconGapSmall","arrowLeftPadding","parseFloat","_this$getProps","menuWidth","menuPos","menuAlign","positions","hasShadow","anchorElement","priority","priorities","PopupMenu","disablePortal","margin","parseInt","minWidth","popupOffset","menuOffset","hasMargin","onItemClick","maxHeight","maxMenuHeight","headerChildComponent","caption","mobileMenuHeaderText","onCloseRequest","disableScrollContainer","_this$props$onValueCh","_this$props","fn","items","pattern","toLowerCase","result","index","_iterator","_createForOfIteratorHelperLoose","_step","done","entry","_normalizeEntry","normalizeEntry","filterItem","push","_iterator2","_step2","_normalizeEntry2","itemValue","value1","value2","Component","__KONTUR_REACT_UI__","displayName","SEP","staticElement","isArray","getTextFromItem","toString","itemText","indexOf"],"sources":["Select.tsx"],"sourcesContent":["import type { ReactNode, ReactPortal, AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\nimport invariant from 'invariant';\nimport { globalObject } from '@skbkontur/global-object';\nimport debounce from 'lodash.debounce';\n\nimport {\n isKeyArrowDown,\n isKeyArrowUp,\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n} from '../../lib/events/keyboard/identifiers';\nimport { locale } from '../../lib/locale/decorators';\nimport { reactGetTextContent } from '../../lib/reactGetTextContent';\nimport type { ButtonProps, ButtonUse } from '../Button';\nimport { Button } from '../Button';\nimport { filterProps } from '../../lib/filterProps';\nimport { Input } from '../Input';\nimport { Menu } from '../../internal/Menu';\nimport type { MenuItemProps } from '../MenuItem';\nimport { MenuItem } from '../MenuItem';\nimport { MenuSeparator } from '../MenuSeparator';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { Nullable } from '../../typings/utility-types';\nimport { getRandomID, isFunction, isNonNullable, isReactUINode } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { MobilePopup } from '../../internal/MobilePopup';\nimport { cx } from '../../lib/theming/Emotion';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport type { MenuHeaderProps } from '../MenuHeader';\nimport type { SizeProp } from '../../lib/types/props';\nimport { styles as linkStyles } from '../Link/Link.styles';\nimport { Popup, type PopupPositionsType } from '../../internal/Popup';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { getMenuPositions } from '../../lib/getMenuPositions';\n\nimport { ArrowDownIcon } from './ArrowDownIcon';\nimport { Item } from './Item';\nimport type { SelectLocale } from './locale';\nimport { SelectLocaleHelper } from './locale';\nimport { styles } from './Select.styles';\nimport { getSelectTheme } from './selectTheme';\nimport { SelectDataTids } from './tids';\n\nexport * from './tids';\n\nexport interface ButtonParams\n extends Pick<AriaAttributes, 'aria-describedby' | 'aria-controls' | 'aria-label' | 'aria-expanded'> {\n /** Делает компонент недоступным. */\n disabled?: boolean;\n\n /** Задает лейбл. */\n label: React.ReactNode;\n\n /** Задает функцию, которая вызывается при клике на селект. */\n onClick: () => void;\n\n /** Задает функцию, которая вызывается при нажатии кнопки на клавиатуре. */\n onKeyDown: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n /** Определяет, открыто ли выпадающее меню. */\n opened: boolean;\n\n /** Определяет, есть ли Placeholder. */\n isPlaceholder: boolean;\n\n /** Задает размер контрола. */\n size: SizeProp;\n}\n\nconst PASS_BUTTON_PROPS = {\n id: true,\n disabled: true,\n error: true,\n use: true,\n size: true,\n warning: true,\n corners: true,\n\n onMouseEnter: true,\n onMouseLeave: true,\n onMouseOver: true,\n};\n\nexport const SelectIds = {\n menu: SelectDataTids.menu,\n} as const;\n\ntype SelectItem<TValue, TItem> =\n | [TValue, TItem, React.ReactNode?]\n | TItem\n | TValue\n | React.ReactElement\n | (() => React.ReactElement);\n\nexport interface SelectProps<TValue, TItem>\n extends CommonProps,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'> {\n /** @ignore */\n _icon?: React.ReactNode;\n\n /** @ignore */\n _renderButton?: (params: ButtonParams) => React.ReactNode;\n\n /** @ignore */\n corners?: React.CSSProperties;\n\n /** Задает значение по умолчанию. */\n defaultValue?: TValue;\n\n menuOffset?: number;\n\n /** Отключает использование портала. */\n disablePortal?: boolean;\n\n /** Делает компонент недоступным.*/\n disabled?: boolean;\n\n /** Переводит контрол в состояние валидации \"ошибка\". */\n error?: boolean;\n\n /** Задает функцию, которая отфильтровывает элементы по заданному паттерну. */\n filterItem?: (value: TValue, item: TItem, pattern: string) => boolean;\n\n /** Задает набор значений. Поддерживаются любые перечисляемые типы, в том числе `Array`, `Map`, `Immutable.Map`.\n *\n * Элементы воспринимаются следующим образом: если элемент — это массив, то первый элемент является значением,\n * второй — отображается в списке, а третий – комментарий;\n * если элемент не является массивом, то он используется и для отображения, и для значения.\n *\n * Для вставки разделителя можно использовать `Select.SEP`.\n *\n * Вставить невыделяемый элемент со своей разметкой можно так:\n * @example\n * ```\n * <Select ...\n * items={[Select.staticElement(() => <div>My Element</div>)]}\n * />\n * ```\n *\n * Чтобы добавить стандартный отступ для статического элемента:\n * @example\n * ```\n * <Select.Item>My Element</Select.Item>\n * ``` */\n items?: Array<SelectItem<TValue, TItem>>;\n\n /** Задает максимальную высоту меню. */\n maxMenuHeight?: number;\n\n /** Задает максимальную ширину. */\n maxWidth?: React.CSSProperties['maxWidth'];\n\n /** Задает позиции выпадающего меню. */\n positions?: PopupPositionsType[];\n\n /** Задает текущую позицию выпадающего окна вручную. */\n menuPos?: 'top' | 'bottom' | 'middle';\n\n /** Задает выравнивание меню. */\n menuAlign?: 'left' | 'right';\n\n /** Задает ширину выпадающего меню. */\n menuWidth?: React.CSSProperties['width'];\n\n /** Задает функцию, вызывающуюся при изменении value. */\n onValueChange?: (value: TValue) => void;\n\n /** Задает функцию, которая вызывается при закрытии меню. */\n onClose?: () => void;\n\n /** Задает функцию, которая вызывается при наведении мышкой (событие `onmouseenter`). См разницу с onMouseOver в [документации](https://learn.javascript.ru/mousemove-mouseover-mouseout-mouseenter-mouseleave) */\n onMouseEnter?: (e: React.MouseEvent<HTMLElement>) => void;\n\n /** Задает функцию, которая вызывается при уходе мышки с объекта (событие `onmouseleave`). */\n onMouseLeave?: (e: React.MouseEvent<HTMLElement>) => void;\n\n /** Задает функцию, которая вызывается при наведении мышкой (событие `onmouseover`). */\n onMouseOver?: (e: React.MouseEvent<HTMLElement>) => void;\n\n /** Задает функцию, которая вызывается при нажатии кнопки на клавиатуре. */\n onKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n\n /** Задает функцию, которая вызывается при открытии меню. */\n onOpen?: () => void;\n\n /** Задает текст, который отображается если не введено никакое значение. */\n placeholder?: React.ReactNode;\n\n /** Задает функцию, которая отображает элемент в выпадающем списке. */\n renderItem?: (value: TValue, item?: TItem) => React.ReactNode;\n\n /** Задает функцию, которая отображает выбранный элемент. */\n renderValue?: (value: TValue, item?: TItem) => React.ReactNode;\n\n /** Задает функцию сравнения `value` с элементом из `items`. */\n areValuesEqual?: (value1: TValue, value2: TValue) => boolean;\n\n /** Показывает строку поиска в списке. */\n search?: boolean;\n\n /** Задает значение. */\n value?: TValue;\n\n theme?: ThemeIn | Theme;\n\n /** Задает длину контрола. */\n width?: number | string;\n\n /** Переводит контрол в состояние валидации \"предупреждение\". */\n warning?: boolean;\n\n /** Задаёт стиль кнопки. */\n use?: ButtonUse;\n\n /** Задает размер. */\n size?: SizeProp;\n\n /** Задаёт HTML-событие `onfocus`. */\n onFocus?: React.FocusEventHandler<HTMLElement>;\n\n /** Задаёт HTML-событие `onblur`. */\n onBlur?: React.FocusEventHandler<HTMLElement>;\n\n /** Задает текст заголовка выпадающего меню в мобильной версии. */\n mobileMenuHeaderText?: string;\n}\n\nexport interface SelectState<TValue> {\n opened: boolean;\n searchPattern: string;\n value: Nullable<TValue>;\n}\n\ninterface FocusableReactElement extends React.ReactElement<any> {\n focus: (event?: any) => void;\n}\n\ntype DefaultProps<TValue, TItem> = Required<\n Pick<SelectProps<TValue, TItem>, 'renderValue' | 'renderItem' | 'areValuesEqual' | 'filterItem' | 'use' | 'size'>\n>;\n\n/**\n * Раскрывающийся список `Select` позволяет выбрать значение из заранее известного набора вариантов.\n *\n * Используйте `Select` при:\n * * заполнении форм, например для выбора месяца.\n * * переключении состояний, например, фильтра.\n * * выборе предустановленных настроек, например, частоты уведомлений, часового пояса.\n *\n * Не используйте `Select` для выбора элементов меню. В таком случае воспользуйтесь компонентом Dropdown.\n */\n@responsiveLayout\n@rootNode\n@locale('Select', SelectLocaleHelper)\n// Suggested solutions break current behavior\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport class Select<TValue = {}, TItem = {}> extends React.Component<SelectProps<TValue, TItem>, SelectState<TValue>> {\n public static __KONTUR_REACT_UI__ = 'Select';\n public static displayName = 'Select';\n\n public static defaultProps: DefaultProps<unknown, ReactNode | ReactPortal> = {\n renderValue,\n renderItem,\n areValuesEqual,\n filterItem,\n use: 'default',\n size: 'small',\n };\n\n public static Item = Item;\n public static SEP = () => <MenuSeparator />;\n\n public static staticElement = (element: React.ReactElement | (() => React.ReactElement)) => {\n invariant(\n React.isValidElement(element) || typeof element === 'function',\n 'Select.staticElement(element) expects element to be a valid react element.',\n );\n return element;\n };\n\n public state: SelectState<TValue> = {\n opened: false,\n value: this.props.defaultValue,\n searchPattern: '',\n };\n\n private theme!: Theme;\n private isMobileLayout!: boolean;\n private readonly locale!: SelectLocale;\n private menu: Nullable<Menu>;\n private menuId = SelectIds.menu + getRandomID();\n private buttonElement: FocusableReactElement | null = null;\n private getProps = createPropsGetter(Select.defaultProps);\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public componentDidUpdate(_prevProps: SelectProps<TValue, TItem>, prevState: SelectState<TValue>) {\n if (!prevState.opened && this.state.opened) {\n globalObject.addEventListener?.('popstate', this.close);\n }\n if (prevState.opened && !this.state.opened) {\n globalObject.removeEventListener?.('popstate', this.close);\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = ThemeFactory.create(\n {\n menuOffsetY: theme.selectMenuOffsetY,\n },\n theme,\n );\n return <ThemeContext.Provider value={this.theme}>{this.renderMain()}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public open = () => {\n if (!this.state.opened) {\n this.setState({ opened: true });\n\n if (this.props.onOpen) {\n this.props.onOpen();\n }\n }\n };\n\n /**\n * @public\n */\n public close = () => {\n if (this.state.opened) {\n this.setState({ opened: false, searchPattern: '' });\n\n if (this.props.onClose) {\n this.props.onClose();\n }\n }\n };\n\n /**\n * @public\n */\n public focus = () => {\n if (this.buttonElement && this.buttonElement.focus) {\n this.buttonElement.focus();\n }\n };\n\n private getMenuRenderer() {\n if (this.props.disabled) {\n return null;\n }\n\n if (this.isMobileLayout) {\n return this.renderMobileMenu();\n }\n\n if (this.state.opened) {\n return this.renderMenu();\n }\n\n return null;\n }\n\n private renderMain() {\n const buttonParams = this.getDefaultButtonParams();\n const dataTid = this.getProps()['data-tid'] ?? SelectDataTids.root;\n const button = (\n <ThemeContext.Provider value={getSelectTheme(this.theme, this.props)}>\n {this.getButton(buttonParams)}\n </ThemeContext.Provider>\n );\n\n const isMobile = this.isMobileLayout;\n\n const style = {\n width: this.props.width,\n maxWidth: this.props.maxWidth || undefined,\n };\n\n const root = (\n <span\n data-tid={dataTid}\n className={cx({ [styles.root()]: true, [styles.rootMobile(this.theme)]: isMobile })}\n style={style}\n >\n {button}\n {this.getMenuRenderer()}\n </span>\n );\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <RenderLayer\n onClickOutside={this.close}\n onFocusOutside={this.close}\n active={isMobile ? false : this.state.opened}\n >\n {root}\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n private getDefaultButtonParams = (): ButtonParams => {\n const { label, isPlaceholder } = this.renderLabel();\n\n const buttonParams: ButtonParams = {\n opened: this.state.opened,\n label,\n isPlaceholder,\n onClick: this.toggle,\n onKeyDown: this.handleKey,\n size: this.getProps().size,\n disabled: this.getProps().disabled,\n };\n\n return buttonParams;\n };\n\n private renderLabel() {\n const value = this.getValue();\n const item = this.getItemByValue(value);\n\n if (isNonNullable(value)) {\n return {\n label: this.getProps().renderValue(value, item),\n isPlaceholder: false,\n };\n }\n\n return {\n label: <span>{this.props.placeholder || this.locale?.placeholder}</span>,\n isPlaceholder: true,\n };\n }\n\n private getLeftIconClass(size: SizeProp | undefined) {\n if (this.getProps().use === 'link') {\n return styles.leftIconLink(this.theme);\n }\n\n switch (size) {\n case 'large':\n return styles.leftIconLarge(this.theme);\n case 'medium':\n return styles.leftIconMedium(this.theme);\n case 'small':\n default:\n return styles.leftIconSmall(this.theme);\n }\n }\n\n private renderDefaultButton(params: ButtonParams) {\n const buttonProps: ButtonProps = {\n ...filterProps(this.props, PASS_BUTTON_PROPS),\n align: 'left' as React.CSSProperties['textAlign'],\n disabled: this.props.disabled,\n width: '100%',\n onClick: params.onClick,\n onKeyDown: params.onKeyDown,\n active: params.opened,\n size: params.size,\n };\n const use = this.getProps().use;\n\n const labelProps = {\n 'data-tid': SelectDataTids.label,\n className: cx({\n [styles.label()]: use !== 'link',\n [styles.placeholder(this.theme)]: params.isPlaceholder,\n [styles.customUsePlaceholder()]: params.isPlaceholder && use !== 'default',\n [styles.placeholderDisabled(this.theme)]: params.isPlaceholder && this.props.disabled,\n }),\n style: {\n paddingRight: this.getSelectIconGap(),\n },\n };\n\n const useIsCustom = use !== 'default';\n\n const icon = <ArrowDownIcon size={this.props.size} />;\n\n return (\n <Button {...buttonProps}>\n <div className={cx(styles.selectButtonContainer(), { [linkStyles.root(this.theme)]: use === 'link' })}>\n {this.props._icon && <div className={this.getLeftIconClass(this.props.size)}>{this.props._icon}</div>}\n <span {...labelProps}>{params.label}</span>\n\n <div\n className={cx(styles.arrowWrap(this.theme), {\n [styles.arrowDisabled(this.theme)]: this.props.disabled,\n [styles.customUseArrow()]: useIsCustom,\n })}\n >\n {icon}\n </div>\n </div>\n </Button>\n );\n }\n\n private getSelectIconGap(): number {\n const getArrowPadding = () => {\n switch (this.props.size) {\n case 'large':\n return this.theme.selectIconGapLarge;\n case 'medium':\n return this.theme.selectIconGapMedium;\n case 'small':\n default:\n return this.theme.selectIconGapSmall;\n }\n };\n const arrowLeftPadding = parseFloat(getArrowPadding()) || 0;\n\n return arrowLeftPadding;\n }\n\n private renderMenu(): React.ReactNode {\n const search = this.props.search ? this.getSearch() : null;\n\n const value = this.getValue();\n const { menuWidth, menuPos, menuAlign, positions } = this.getProps();\n\n return (\n <Popup\n opened\n hasShadow\n id={this.menuId}\n data-tid={SelectDataTids.menu}\n positions={positions ?? getMenuPositions(menuPos, menuAlign)}\n anchorElement={this.popupGetParent()}\n priority={ZIndex.priorities.PopupMenu}\n disablePortal={this.props.disablePortal}\n margin={parseInt(this.theme.menuOffsetY) - 1}\n width={menuWidth}\n minWidth={menuWidth === undefined ? '100%' : undefined}\n popupOffset={this.props.menuOffset}\n >\n <Menu\n hasMargin={false}\n ref={this.refMenu}\n onItemClick={this.close}\n maxHeight={this.props.maxMenuHeight}\n align={menuAlign}\n >\n {search}\n {this.getMenuItems(value)}\n </Menu>\n </Popup>\n );\n }\n\n private getSearch = () => {\n return (\n <div className={styles.search()} onKeyDown={this.handleKey}>\n <Input ref={this.debouncedFocusInput} onValueChange={this.handleSearch} width=\"100%\" />\n </div>\n );\n };\n\n private renderMobileMenu(): React.ReactNode {\n const search = this.props.search ? this.getMobileSearch() : null;\n const value = this.getValue();\n\n return (\n <MobilePopup\n headerChildComponent={search}\n caption={this.props.mobileMenuHeaderText}\n onCloseRequest={this.close}\n opened={this.state.opened}\n >\n <Menu onItemClick={this.close} disableScrollContainer maxHeight={'auto'}>\n {this.getMenuItems(value)}\n </Menu>\n </MobilePopup>\n );\n }\n\n private getMobileSearch = () => {\n return (\n <Input\n autoFocus\n value={this.state.searchPattern}\n ref={this.debouncedFocusInput}\n onValueChange={this.handleSearch}\n width=\"100%\"\n />\n );\n };\n\n private getMenuItems = (value: Nullable<TValue>) => {\n const isMobile = this.isMobileLayout;\n const size = this.props.size;\n\n return this.mapItems(\n (iValue: TValue, item: TItem | (() => React.ReactNode), i: number, comment: Nullable<React.ReactNode>) => {\n if (isFunction(item)) {\n const element = item();\n\n if (React.isValidElement(element)) {\n return React.cloneElement(element, { key: i, isMobile, size } as MenuItemProps);\n }\n\n return null;\n }\n\n if (React.isValidElement(item)) {\n if (isReactUINode('MenuItem', item)) {\n return React.cloneElement(item, { key: i, isMobile, size } as MenuItemProps);\n }\n if (isReactUINode('MenuHeader', item)) {\n return React.cloneElement(item, { size } as MenuHeaderProps);\n }\n return React.cloneElement(item, { key: i });\n }\n\n return (\n <MenuItem\n key={i}\n state={this.areValuesEqual(iValue, value) ? 'selected' : null}\n onClick={this.select.bind(this, iValue)}\n comment={comment}\n isMobile={isMobile}\n size={this.props.size}\n >\n {this.getProps().renderItem(iValue, item)}\n </MenuItem>\n );\n },\n );\n };\n\n private popupGetParent = () => {\n return getRootNode(this);\n };\n\n // fix cases when an Input is rendered in portal\n // https://github.com/skbkontur/retail-ui/issues/1995\n private focusInput = (input: Input) => input?.focus();\n private debouncedFocusInput = debounce(this.focusInput);\n\n private refMenu = (menu: Menu) => {\n this.menu = menu;\n };\n\n private toggle = () => {\n if (this.state.opened) {\n this.close();\n } else {\n this.open();\n }\n };\n\n private handleKey = (e: React.KeyboardEvent<HTMLElement>) => {\n if (!this.state.opened) {\n if (isKeySpace(e) || isKeyArrowVertical(e)) {\n e.preventDefault();\n this.open();\n }\n } else {\n switch (true) {\n case isKeyEscape(e):\n this.focus();\n this.close();\n break;\n case isKeyArrowUp(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.up();\n }\n break;\n case isKeyArrowDown(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.down();\n }\n break;\n case isKeyEnter(e):\n e.preventDefault(); // To prevent form submission.\n if (this.menu) {\n this.menu.enter(e);\n }\n break;\n }\n }\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n };\n\n private handleSearch = (value: string) => {\n this.setState({ searchPattern: value });\n this.menu?.highlightItem(0);\n };\n\n private select(value: TValue) {\n this.focus();\n this.setState({ opened: false, value });\n\n if (!this.areValuesEqual(this.getValue(), value)) {\n this.props.onValueChange?.(value);\n }\n }\n\n private getValue() {\n if (this.props.value !== undefined) {\n return this.props.value;\n }\n return this.state.value;\n }\n\n private mapItems(fn: (value: TValue, item: TItem, index: number, comment?: string) => React.ReactNode) {\n const { items } = this.props;\n if (!items) {\n return [];\n }\n const pattern = this.state.searchPattern && this.state.searchPattern.toLowerCase();\n\n const result: React.ReactNode[] = [];\n let index = 0;\n for (const entry of items) {\n const [value, item, comment] = normalizeEntry(entry as TItem);\n\n if (!pattern || this.getProps().filterItem(value, item, pattern)) {\n result.push(fn(value, item, index, comment));\n ++index;\n }\n }\n\n return result;\n }\n\n private getItemByValue(value?: Nullable<TValue>) {\n if (value === null || value === undefined) {\n return null;\n }\n\n const items = this.props.items || [];\n\n for (const entry of items) {\n const [itemValue, item] = normalizeEntry(entry);\n\n if (this.areValuesEqual(itemValue, value)) {\n return item;\n }\n }\n return null;\n }\n\n private areValuesEqual(value1: Nullable<TValue>, value2: Nullable<TValue>) {\n return isNonNullable(value1) && isNonNullable(value2) && this.getProps().areValuesEqual(value1, value2);\n }\n\n private buttonRef = (element: FocusableReactElement | null) => {\n this.buttonElement = element;\n };\n\n private getButton = (buttonParams: ButtonParams) => {\n const button = this.props._renderButton\n ? this.props._renderButton(buttonParams)\n : this.renderDefaultButton(buttonParams);\n\n const buttonElement = React.Children.only(button);\n\n return React.isValidElement(buttonElement)\n ? React.cloneElement(buttonElement as React.ReactElement, {\n ref: this.buttonRef,\n onFocus: this.props.onFocus,\n onBlur: this.props.onBlur,\n size: this.props.size,\n 'aria-describedby': this.props['aria-describedby'],\n 'aria-expanded': this.state.opened ? 'true' : 'false',\n 'aria-controls': this.menuId,\n 'aria-label': (buttonElement as React.ReactElement).props['aria-label'] ?? this.props['aria-label'],\n })\n : buttonElement;\n };\n}\n\nfunction renderValue<TValue, TItem>(value: TValue, item: Nullable<TItem>) {\n return item;\n}\n\nfunction renderItem<TValue, TItem>(value: TValue, item?: TItem) {\n return item;\n}\n\nfunction areValuesEqual<TValue>(value1: TValue, value2: TValue) {\n return value1 === value2;\n}\n\nfunction normalizeEntry(entry: any) {\n if (Array.isArray(entry)) {\n return entry;\n }\n\n return [entry, entry, undefined];\n}\n\nconst getTextFromItem = (item: any): string => {\n if (typeof item === 'string') {\n return item;\n }\n\n if (isFunction(item)) {\n return getTextFromItem(item());\n }\n\n if (React.isValidElement(item)) {\n return reactGetTextContent(item);\n }\n\n if (typeof item === 'number') {\n return item.toString(10);\n }\n\n return '';\n};\n\nfunction filterItem<TValue>(value: TValue, item: any, pattern: string) {\n if (item === Select.SEP) {\n return false;\n }\n\n const itemText = getTextFromItem(item);\n\n if (!itemText) {\n return false;\n }\n\n return itemText.toLowerCase().indexOf(pattern) !== -1;\n}\n"],"mappings":";AACA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,WAAW;AACjC,SAASC,YAAY,QAAQ,0BAA0B;AACvD,OAAOC,QAAQ,MAAM,iBAAiB;;AAEtC;EACEC,cAAc;EACdC,YAAY;EACZC,kBAAkB;EAClBC,UAAU;EACVC,WAAW;EACXC,UAAU;AACL,uCAAuC;AAC9C,SAASC,MAAM,QAAQ,6BAA6B;AACpD,SAASC,mBAAmB,QAAQ,+BAA+B;;AAEnE,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,WAAW,QAAQ,uBAAuB;AACnD,SAASC,KAAK,QAAQ,UAAU;AAChC,SAASC,IAAI,QAAQ,qBAAqB;;AAE1C,SAASC,QAAQ,QAAQ,aAAa;AACtC,SAASC,aAAa,QAAQ,kBAAkB;AAChD,SAASC,WAAW,QAAQ,4BAA4B;AACxD,SAASC,iBAAiB,QAAQ,6BAA6B;;AAE/D,SAASC,WAAW,EAAEC,UAAU,EAAEC,aAAa,EAAEC,aAAa,QAAQ,iBAAiB;AACvF,SAASC,YAAY,QAAQ,gCAAgC;;;AAG7D,SAASC,aAAa,QAAQ,8BAA8B;AAC5D,SAASC,WAAW,QAAQ,4BAA4B;AACxD,SAASC,EAAE,QAAQ,2BAA2B;AAC9C,SAASC,gBAAgB,QAAQ,+BAA+B;;AAEhE,SAASC,WAAW,EAAEC,QAAQ,QAAQ,oBAAoB;AAC1D,SAASC,YAAY,QAAQ,gCAAgC;;;AAG7D,SAASC,MAAM,IAAIC,UAAU,QAAQ,qBAAqB;AAC1D,SAASC,KAAK,QAAiC,sBAAsB;AACrE,SAASC,MAAM,QAAQ,uBAAuB;AAC9C,SAASC,gBAAgB,QAAQ,4BAA4B;;AAE7D,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,IAAI,QAAQ,QAAQ;;AAE7B,SAASC,kBAAkB,QAAQ,UAAU;AAC7C,SAASP,MAAM,QAAQ,iBAAiB;AACxC,SAASQ,cAAc,QAAQ,eAAe;AAC9C,SAASC,cAAc,QAAQ,QAAQ;;AAEvC,cAAc,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BtB,IAAMC,iBAAiB,GAAG;EACxBC,EAAE,EAAE,IAAI;EACRC,QAAQ,EAAE,IAAI;EACdC,KAAK,EAAE,IAAI;EACXC,GAAG,EAAE,IAAI;EACTC,IAAI,EAAE,IAAI;EACVC,OAAO,EAAE,IAAI;EACbC,OAAO,EAAE,IAAI;;EAEbC,YAAY,EAAE,IAAI;EAClBC,YAAY,EAAE,IAAI;EAClBC,WAAW,EAAE;AACf,CAAC;;AAED,OAAO,IAAMC,SAAS,GAAG;EACvBC,IAAI,EAAEb,cAAc,CAACa;AACvB,CAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6JV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKaC,MAAM,IAAAC,IAAA,GAHlB9C,MAAM,CAAC,QAAQ,EAAE6B,kBAAkB,CAAC,EAFpCX,gBAAgB,CAAA6B,MAAA,GAChB3B,QAAQ,CAAA2B,MAAA,GAAAD,IAAA,CAAAC,MAAA,IAAAC,OAAA,0BAAAC,gBAAA,YAAAJ,OAAA,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,gBAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,gBAAA,SAAAU,MAAA,CAAAL,IAAA,WAAAJ,KAAA;;;;;;;;;;;;;;;;;;;;;;;;IA4BAU,KAAK,GAAwB;MAClCC,MAAM,EAAE,KAAK;MACbC,KAAK,EAAEZ,KAAA,CAAKa,KAAK,CAACC,YAAY;MAC9BC,aAAa,EAAE;IACjB,CAAC,CAAAf,KAAA;;;;;;IAMOgB,MAAM,GAAGvB,SAAS,CAACC,IAAI,GAAGlC,WAAW,CAAC,CAAC,CAAAwC,KAAA;IACvCiB,aAAa,GAAiC,IAAI,CAAAjB,KAAA;IAClDkB,QAAQ,GAAG3D,iBAAiB,CAACoC,MAAM,CAACwB,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6BzD;AACF;AACA,OAFEnB,KAAA;IAGOoB,IAAI,GAAG,YAAM;MAClB,IAAI,CAACpB,KAAA,CAAKU,KAAK,CAACC,MAAM,EAAE;QACtBX,KAAA,CAAKqB,QAAQ,CAAC,EAAEV,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;;QAE/B,IAAIX,KAAA,CAAKa,KAAK,CAACS,MAAM,EAAE;UACrBtB,KAAA,CAAKa,KAAK,CAACS,MAAM,CAAC,CAAC;QACrB;MACF;IACF,CAAC;;IAED;AACF;AACA,OAFEtB,KAAA;IAGOuB,KAAK,GAAG,YAAM;MACnB,IAAIvB,KAAA,CAAKU,KAAK,CAACC,MAAM,EAAE;QACrBX,KAAA,CAAKqB,QAAQ,CAAC,EAAEV,MAAM,EAAE,KAAK,EAAEI,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC;;QAEnD,IAAIf,KAAA,CAAKa,KAAK,CAACW,OAAO,EAAE;UACtBxB,KAAA,CAAKa,KAAK,CAACW,OAAO,CAAC,CAAC;QACtB;MACF;IACF,CAAC;;IAED;AACF;AACA,OAFExB,KAAA;IAGOyB,KAAK,GAAG,YAAM;MACnB,IAAIzB,KAAA,CAAKiB,aAAa,IAAIjB,KAAA,CAAKiB,aAAa,CAACQ,KAAK,EAAE;QAClDzB,KAAA,CAAKiB,aAAa,CAACQ,KAAK,CAAC,CAAC;MAC5B;IACF,CAAC,CAAAzB,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA0DO0B,sBAAsB,GAAG,YAAoB;MACnD,IAAAC,iBAAA,GAAiC3B,KAAA,CAAK4B,WAAW,CAAC,CAAC,CAA3CC,KAAK,GAAAF,iBAAA,CAALE,KAAK,CAAEC,aAAa,GAAAH,iBAAA,CAAbG,aAAa;;MAE5B,IAAMC,YAA0B,GAAG;QACjCpB,MAAM,EAAEX,KAAA,CAAKU,KAAK,CAACC,MAAM;QACzBkB,KAAK,EAALA,KAAK;QACLC,aAAa,EAAbA,aAAa;QACbE,OAAO,EAAEhC,KAAA,CAAKiC,MAAM;QACpBC,SAAS,EAAElC,KAAA,CAAKmC,SAAS;QACzBhD,IAAI,EAAEa,KAAA,CAAKkB,QAAQ,CAAC,CAAC,CAAC/B,IAAI;QAC1BH,QAAQ,EAAEgB,KAAA,CAAKkB,QAAQ,CAAC,CAAC,CAAClC;MAC5B,CAAC;;MAED,OAAO+C,YAAY;IACrB,CAAC,CAAA/B,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAwIOoC,SAAS,GAAG,YAAM;MACxB;QACEhG,KAAA,CAAAiG,aAAA,UAAKC,SAAS,EAAElE,MAAM,CAACmE,MAAM,CAAC,CAAE,EAACL,SAAS,EAAElC,KAAA,CAAKmC,SAAU;QACzD/F,KAAA,CAAAiG,aAAA,CAACnF,KAAK,IAACsF,GAAG,EAAExC,KAAA,CAAKyC,mBAAoB,EAACC,aAAa,EAAE1C,KAAA,CAAK2C,YAAa,EAACC,KAAK,EAAC,MAAM,EAAE;QACnF,CAAC;;IAEV,CAAC,CAAA5C,KAAA;;;;;;;;;;;;;;;;;;;;IAoBO6C,eAAe,GAAG,YAAM;MAC9B;QACEzG,KAAA,CAAAiG,aAAA,CAACnF,KAAK;UACJ4F,SAAS;UACTlC,KAAK,EAAEZ,KAAA,CAAKU,KAAK,CAACK,aAAc;UAChCyB,GAAG,EAAExC,KAAA,CAAKyC,mBAAoB;UAC9BC,aAAa,EAAE1C,KAAA,CAAK2C,YAAa;UACjCC,KAAK,EAAC,MAAM;QACb,CAAC;;IAEN,CAAC,CAAA5C,KAAA;;IAEO+C,YAAY,GAAG,UAACnC,KAAuB,EAAK;MAClD,IAAMoC,QAAQ,GAAGhD,KAAA,CAAKiD,cAAc;MACpC,IAAM9D,IAAI,GAAGa,KAAA,CAAKa,KAAK,CAAC1B,IAAI;;MAE5B,OAAOa,KAAA,CAAKkD,QAAQ;QAClB,UAACC,MAAc,EAAEC,IAAqC,EAAEC,CAAS,EAAEC,OAAkC,EAAK;UACxG,IAAI7F,UAAU,CAAC2F,IAAI,CAAC,EAAE;YACpB,IAAMG,OAAO,GAAGH,IAAI,CAAC,CAAC;;YAEtB,kBAAIhH,KAAK,CAACoH,cAAc,CAACD,OAAO,CAAC,EAAE;cACjC,oBAAOnH,KAAK,CAACqH,YAAY,CAACF,OAAO,EAAE,EAAEG,GAAG,EAAEL,CAAC,EAAEL,QAAQ,EAARA,QAAQ,EAAE7D,IAAI,EAAJA,IAAI,CAAC,CAAkB,CAAC;YACjF;;YAEA,OAAO,IAAI;UACb;;UAEA,kBAAI/C,KAAK,CAACoH,cAAc,CAACJ,IAAI,CAAC,EAAE;YAC9B,IAAIzF,aAAa,CAAC,UAAU,EAAEyF,IAAI,CAAC,EAAE;cACnC,oBAAOhH,KAAK,CAACqH,YAAY,CAACL,IAAI,EAAE,EAAEM,GAAG,EAAEL,CAAC,EAAEL,QAAQ,EAARA,QAAQ,EAAE7D,IAAI,EAAJA,IAAI,CAAC,CAAkB,CAAC;YAC9E;YACA,IAAIxB,aAAa,CAAC,YAAY,EAAEyF,IAAI,CAAC,EAAE;cACrC,oBAAOhH,KAAK,CAACqH,YAAY,CAACL,IAAI,EAAE,EAAEjE,IAAI,EAAJA,IAAI,CAAC,CAAoB,CAAC;YAC9D;YACA,oBAAO/C,KAAK,CAACqH,YAAY,CAACL,IAAI,EAAE,EAAEM,GAAG,EAAEL,CAAC,CAAC,CAAC,CAAC;UAC7C;;UAEA;YACEjH,KAAA,CAAAiG,aAAA,CAACjF,QAAQ;cACPsG,GAAG,EAAEL,CAAE;cACP3C,KAAK,EAAEV,KAAA,CAAK2D,cAAc,CAACR,MAAM,EAAEvC,KAAK,CAAC,GAAG,UAAU,GAAG,IAAK;cAC9DoB,OAAO,EAAEhC,KAAA,CAAK4D,MAAM,CAACC,IAAI,CAAA7D,KAAA,EAAOmD,MAAM,CAAE;cACxCG,OAAO,EAAEA,OAAQ;cACjBN,QAAQ,EAAEA,QAAS;cACnB7D,IAAI,EAAEa,KAAA,CAAKa,KAAK,CAAC1B,IAAK;;YAErBa,KAAA,CAAKkB,QAAQ,CAAC,CAAC,CAAC4C,UAAU,CAACX,MAAM,EAAEC,IAAI;YAChC,CAAC;;QAEf;MACF,CAAC;IACH,CAAC,CAAApD,KAAA;;IAEO+D,cAAc,GAAG,YAAM;MAC7B,OAAO9F,WAAW,CAAA+B,KAAK,CAAC;IAC1B,CAAC;;IAED;IACA;IAAAA,KAAA,CACQgE,UAAU,GAAG,UAACC,KAAY,UAAKA,KAAK,oBAALA,KAAK,CAAExC,KAAK,CAAC,CAAC,GAAAzB,KAAA;IAC7CyC,mBAAmB,GAAGlG,QAAQ,CAACyD,KAAA,CAAKgE,UAAU,CAAC,CAAAhE,KAAA;;IAE/CkE,OAAO,GAAG,UAACxE,IAAU,EAAK;MAChCM,KAAA,CAAKN,IAAI,GAAGA,IAAI;IAClB,CAAC,CAAAM,KAAA;;IAEOiC,MAAM,GAAG,YAAM;MACrB,IAAIjC,KAAA,CAAKU,KAAK,CAACC,MAAM,EAAE;QACrBX,KAAA,CAAKuB,KAAK,CAAC,CAAC;MACd,CAAC,MAAM;QACLvB,KAAA,CAAKoB,IAAI,CAAC,CAAC;MACb;IACF,CAAC,CAAApB,KAAA;;IAEOmC,SAAS,GAAG,UAACgC,CAAmC,EAAK;MAC3D,IAAI,CAACnE,KAAA,CAAKU,KAAK,CAACC,MAAM,EAAE;QACtB,IAAI9D,UAAU,CAACsH,CAAC,CAAC,IAAIzH,kBAAkB,CAACyH,CAAC,CAAC,EAAE;UAC1CA,CAAC,CAACC,cAAc,CAAC,CAAC;UAClBpE,KAAA,CAAKoB,IAAI,CAAC,CAAC;QACb;MACF,CAAC,MAAM;QACL,QAAQ,IAAI;UACV,KAAKxE,WAAW,CAACuH,CAAC,CAAC;YACjBnE,KAAA,CAAKyB,KAAK,CAAC,CAAC;YACZzB,KAAA,CAAKuB,KAAK,CAAC,CAAC;YACZ;UACF,KAAK9E,YAAY,CAAC0H,CAAC,CAAC;YAClBA,CAAC,CAACC,cAAc,CAAC,CAAC;YAClB,IAAIpE,KAAA,CAAKN,IAAI,EAAE;cACbM,KAAA,CAAKN,IAAI,CAAC2E,EAAE,CAAC,CAAC;YAChB;YACA;UACF,KAAK7H,cAAc,CAAC2H,CAAC,CAAC;YACpBA,CAAC,CAACC,cAAc,CAAC,CAAC;YAClB,IAAIpE,KAAA,CAAKN,IAAI,EAAE;cACbM,KAAA,CAAKN,IAAI,CAAC4E,IAAI,CAAC,CAAC;YAClB;YACA;UACF,KAAK3H,UAAU,CAACwH,CAAC,CAAC;YAChBA,CAAC,CAACC,cAAc,CAAC,CAAC,CAAC,CAAC;YACpB,IAAIpE,KAAA,CAAKN,IAAI,EAAE;cACbM,KAAA,CAAKN,IAAI,CAAC6E,KAAK,CAACJ,CAAC,CAAC;YACpB;YACA;QACJ;MACF;MACA,IAAInE,KAAA,CAAKa,KAAK,CAACqB,SAAS,EAAE;QACxBlC,KAAA,CAAKa,KAAK,CAACqB,SAAS,CAACiC,CAAC,CAAC;MACzB;IACF,CAAC,CAAAnE,KAAA;;IAEO2C,YAAY,GAAG,UAAC/B,KAAa,EAAK,KAAA4D,UAAA;MACxCxE,KAAA,CAAKqB,QAAQ,CAAC,EAAEN,aAAa,EAAEH,KAAK,CAAC,CAAC,CAAC;MACvC,CAAA4D,UAAA,GAAAxE,KAAA,CAAKN,IAAI,aAAT8E,UAAA,CAAWC,aAAa,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAAzE,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4DO0E,SAAS,GAAG,UAACnB,OAAqC,EAAK;MAC7DvD,KAAA,CAAKiB,aAAa,GAAGsC,OAAO;IAC9B,CAAC,CAAAvD,KAAA;;IAEO2E,SAAS,GAAG,UAAC5C,YAA0B,EAAK,KAAA6C,gBAAA;MAClD,IAAMC,MAAM,GAAG7E,KAAA,CAAKa,KAAK,CAACiE,aAAa;MACnC9E,KAAA,CAAKa,KAAK,CAACiE,aAAa,CAAC/C,YAAY,CAAC;MACtC/B,KAAA,CAAK+E,mBAAmB,CAAChD,YAAY,CAAC;;MAE1C,IAAMd,aAAa,GAAG7E,KAAK,CAAC4I,QAAQ,CAACC,IAAI,CAACJ,MAAM,CAAC;;MAEjD,OAAO,aAAAzI,KAAK,CAACoH,cAAc,CAACvC,aAAa,CAAC;MACtC7E,KAAK,CAACqH,YAAY,CAACxC,aAAa,EAAwB;QACtDuB,GAAG,EAAExC,KAAA,CAAK0E,SAAS;QACnBQ,OAAO,EAAElF,KAAA,CAAKa,KAAK,CAACqE,OAAO;QAC3BC,MAAM,EAAEnF,KAAA,CAAKa,KAAK,CAACsE,MAAM;QACzBhG,IAAI,EAAEa,KAAA,CAAKa,KAAK,CAAC1B,IAAI;QACrB,kBAAkB,EAAEa,KAAA,CAAKa,KAAK,CAAC,kBAAkB,CAAC;QAClD,eAAe,EAAEb,KAAA,CAAKU,KAAK,CAACC,MAAM,GAAG,MAAM,GAAG,OAAO;QACrD,eAAe,EAAEX,KAAA,CAAKgB,MAAM;QAC5B,YAAY,GAAA4D,gBAAA,GAAG3D,aAAa,CAAwBJ,KAAK,CAAC,YAAY,CAAC,YAAA+D,gBAAA,GAAI5E,KAAA,CAAKa,KAAK,CAAC,YAAY;MACpG,CAAC,CAAC;MACFI,aAAa;IACnB,CAAC,QAAAjB,KAAA,EAAAoF,cAAA,CAAAzF,MAAA,EAAAI,gBAAA,MAAAsF,MAAA,GAAA1F,MAAA,CAAA2F,SAAA,CAAAD,MAAA,CA1eME,kBAAkB,GAAzB,SAAAA,mBAA0BC,UAAsC,EAAEC,SAA8B,EAAE,CAChG,IAAI,CAACA,SAAS,CAAC9E,MAAM,IAAI,IAAI,CAACD,KAAK,CAACC,MAAM,EAAE,CAC1CrE,YAAY,CAACoJ,gBAAgB,YAA7BpJ,YAAY,CAACoJ,gBAAgB,CAAG,UAAU,EAAE,IAAI,CAACnE,KAAK,CAAC,CACzD,CACA,IAAIkE,SAAS,CAAC9E,MAAM,IAAI,CAAC,IAAI,CAACD,KAAK,CAACC,MAAM,EAAE,CAC1CrE,YAAY,CAACqJ,mBAAmB,YAAhCrJ,YAAY,CAACqJ,mBAAmB,CAAG,UAAU,EAAE,IAAI,CAACpE,KAAK,CAAC,CAC5D,CACF,CAAC,CAAA8D,MAAA,CAEMO,MAAM,GAAb,SAAAA,OAAA,EAAgB,KAAAC,MAAA,QACd,oBACEzJ,KAAA,CAAAiG,aAAA,CAACzE,YAAY,CAACkI,QAAQ,QACnB,UAACC,KAAK,EAAK,CACVF,MAAI,CAACE,KAAK,GAAG5H,YAAY,CAAC6H,MAAM,CAC9B,EACEC,WAAW,EAAEF,KAAK,CAACG,iBAAiB,CACtC,CAAC,EACDH,KACF,CAAC,CACD,oBAAO3J,KAAA,CAAAiG,aAAA,CAACzE,YAAY,CAACuI,QAAQ,IAACvF,KAAK,EAAEiF,MAAI,CAACE,KAAM,IAAEF,MAAI,CAACO,UAAU,CAAC,CAAyB,CAAC,CAC9F,CACqB,CAAC,CAE5B,CAAC,CAAAf,MAAA,CAqCOgB,eAAe,GAAvB,SAAAA,gBAAA,EAA0B,CACxB,IAAI,IAAI,CAACxF,KAAK,CAAC7B,QAAQ,EAAE,CACvB,OAAO,IAAI,CACb,CAEA,IAAI,IAAI,CAACiE,cAAc,EAAE,CACvB,OAAO,IAAI,CAACqD,gBAAgB,CAAC,CAAC,CAChC,CAEA,IAAI,IAAI,CAAC5F,KAAK,CAACC,MAAM,EAAE,CACrB,OAAO,IAAI,CAAC4F,UAAU,CAAC,CAAC,CAC1B,CAEA,OAAO,IAAI,CACb,CAAC,CAAAlB,MAAA,CAEOe,UAAU,GAAlB,SAAAA,WAAA,EAAqB,KAAAI,oBAAA,EAAAC,GAAA,CACnB,IAAM1E,YAAY,GAAG,IAAI,CAACL,sBAAsB,CAAC,CAAC,CAClD,IAAMgF,OAAO,IAAAF,oBAAA,GAAG,IAAI,CAACtF,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,YAAAsF,oBAAA,GAAI3H,cAAc,CAAC8H,IAAI,CAClE,IAAM9B,MAAM,gBACVzI,KAAA,CAAAiG,aAAA,CAACzE,YAAY,CAACuI,QAAQ,IAACvF,KAAK,EAAEhC,cAAc,CAAC,IAAI,CAACmH,KAAK,EAAE,IAAI,CAAClF,KAAK,CAAE,IAClE,IAAI,CAAC8D,SAAS,CAAC5C,YAAY,CACP,CACxB,CAED,IAAMiB,QAAQ,GAAG,IAAI,CAACC,cAAc,CAEpC,IAAM2D,KAAK,GAAG,EACZhE,KAAK,EAAE,IAAI,CAAC/B,KAAK,CAAC+B,KAAK,EACvBiE,QAAQ,EAAE,IAAI,CAAChG,KAAK,CAACgG,QAAQ,IAAIC,SAAS,CAC5C,CAAC,CAED,IAAMH,IAAI,gBACRvK,KAAA,CAAAiG,aAAA,WACE,YAAUqE,OAAQ,EAClBpE,SAAS,EAAEvE,EAAE,EAAA0I,GAAA,OAAAA,GAAA,CAAIrI,MAAM,CAACuI,IAAI,CAAC,CAAC,IAAG,IAAI,EAAAF,GAAA,CAAGrI,MAAM,CAAC2I,UAAU,CAAC,IAAI,CAAChB,KAAK,CAAC,IAAG/C,QAAQ,EAAAyD,GAAA,CAAE,CAAE,EACpFG,KAAK,EAAEA,KAAM,IAEZ/B,MAAM,EACN,IAAI,CAACwB,eAAe,CAAC,CAClB,CACP,CAED,oBACEjK,KAAA,CAAAiG,aAAA,CAACxE,aAAa,EAAAmJ,QAAA,GAACC,WAAW,EAAE,IAAI,CAACC,WAAY,IAAK,IAAI,CAACrG,KAAK,gBAC1DzE,KAAA,CAAAiG,aAAA,CAAC/E,WAAW,IACV6J,cAAc,EAAE,IAAI,CAAC5F,KAAM,EAC3B6F,cAAc,EAAE,IAAI,CAAC7F,KAAM,EAC3B8F,MAAM,EAAErE,QAAQ,GAAG,KAAK,GAAG,IAAI,CAACtC,KAAK,CAACC,MAAO,IAE5CgG,IACU,CACA,CAAC,CAEpB,CAAC,CAAAtB,MAAA,CAkBOzD,WAAW,GAAnB,SAAAA,YAAA,EAAsB,KAAA0F,YAAA,CACpB,IAAM1G,KAAK,GAAG,IAAI,CAAC2G,QAAQ,CAAC,CAAC,CAC7B,IAAMnE,IAAI,GAAG,IAAI,CAACoE,cAAc,CAAC5G,KAAK,CAAC,CAEvC,IAAIlD,aAAa,CAACkD,KAAK,CAAC,EAAE,CACxB,OAAO,EACLiB,KAAK,EAAE,IAAI,CAACX,QAAQ,CAAC,CAAC,CAACuG,WAAW,CAAC7G,KAAK,EAAEwC,IAAI,CAAC,EAC/CtB,aAAa,EAAE,KAAK,CACtB,CAAC,CACH,CAEA,OAAO,EACLD,KAAK,eAAEzF,KAAA,CAAAiG,aAAA,eAAO,IAAI,CAACxB,KAAK,CAAC6G,WAAW,MAAAJ,YAAA,GAAI,IAAI,CAACxK,MAAM,qBAAXwK,YAAA,CAAaI,WAAW,CAAO,CAAC,EACxE5F,aAAa,EAAE,IAAI,CACrB,CAAC,CACH,CAAC,CAAAuD,MAAA,CAEOsC,gBAAgB,GAAxB,SAAAA,iBAAyBxI,IAA0B,EAAE,CACnD,IAAI,IAAI,CAAC+B,QAAQ,CAAC,CAAC,CAAChC,GAAG,KAAK,MAAM,EAAE,CAClC,OAAOd,MAAM,CAACwJ,YAAY,CAAC,IAAI,CAAC7B,KAAK,CAAC,CACxC,CAEA,QAAQ5G,IAAI,GACV,KAAK,OAAO,CACV,OAAOf,MAAM,CAACyJ,aAAa,CAAC,IAAI,CAAC9B,KAAK,CAAC,CACzC,KAAK,QAAQ,CACX,OAAO3H,MAAM,CAAC0J,cAAc,CAAC,IAAI,CAAC/B,KAAK,CAAC,CAC1C,KAAK,OAAO,CACZ,QACE,OAAO3H,MAAM,CAAC2J,aAAa,CAAC,IAAI,CAAChC,KAAK,CAAC,CAC3C,CACF,CAAC,CAAAV,MAAA,CAEON,mBAAmB,GAA3B,SAAAA,oBAA4BiD,MAAoB,EAAE,KAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,CAChD,IAAMC,WAAwB,GAAApB,QAAA,KACzB/J,WAAW,CAAC,IAAI,CAAC4D,KAAK,EAAE/B,iBAAiB,CAAC,IAC7CuJ,KAAK,EAAE,MAA0C,EACjDrJ,QAAQ,EAAE,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ,EAC7B4D,KAAK,EAAE,MAAM,EACbZ,OAAO,EAAEgG,MAAM,CAAChG,OAAO,EACvBE,SAAS,EAAE8F,MAAM,CAAC9F,SAAS,EAC3BmF,MAAM,EAAEW,MAAM,CAACrH,MAAM,EACrBxB,IAAI,EAAE6I,MAAM,CAAC7I,IAAI,GAClB,CACD,IAAMD,GAAG,GAAG,IAAI,CAACgC,QAAQ,CAAC,CAAC,CAAChC,GAAG,CAE/B,IAAMoJ,UAAU,GAAG,EACjB,UAAU,EAAEzJ,cAAc,CAACgD,KAAK,EAChCS,SAAS,EAAEvE,EAAE,EAAAkK,IAAA,OAAAA,IAAA,CACV7J,MAAM,CAACyD,KAAK,CAAC,CAAC,IAAG3C,GAAG,KAAK,MAAM,EAAA+I,IAAA,CAC/B7J,MAAM,CAACsJ,WAAW,CAAC,IAAI,CAAC3B,KAAK,CAAC,IAAGiC,MAAM,CAAClG,aAAa,EAAAmG,IAAA,CACrD7J,MAAM,CAACmK,oBAAoB,CAAC,CAAC,IAAGP,MAAM,CAAClG,aAAa,IAAI5C,GAAG,KAAK,SAAS,EAAA+I,IAAA,CACzE7J,MAAM,CAACoK,mBAAmB,CAAC,IAAI,CAACzC,KAAK,CAAC,IAAGiC,MAAM,CAAClG,aAAa,IAAI,IAAI,CAACjB,KAAK,CAAC7B,QAAQ,EAAAiJ,IAAA,CACtF,CAAC,EACFrB,KAAK,EAAE,EACL6B,YAAY,EAAE,IAAI,CAACC,gBAAgB,CAAC,CAAC,CACvC,CAAC,CACH,CAAC,CAED,IAAMC,WAAW,GAAGzJ,GAAG,KAAK,SAAS,CAErC,IAAM0J,IAAI,gBAAGxM,KAAA,CAAAiG,aAAA,CAAC5D,aAAa,IAACU,IAAI,EAAE,IAAI,CAAC0B,KAAK,CAAC1B,IAAK,EAAE,CAAC,CAErD,oBACE/C,KAAA,CAAAiG,aAAA,CAACrF,MAAM,EAAKoL,WAAW,eACrBhM,KAAA,CAAAiG,aAAA,UAAKC,SAAS,EAAEvE,EAAE,CAACK,MAAM,CAACyK,qBAAqB,CAAC,CAAC,GAAAX,IAAA,OAAAA,IAAA,CAAK7J,UAAU,CAACsI,IAAI,CAAC,IAAI,CAACZ,KAAK,CAAC,IAAG7G,GAAG,KAAK,MAAM,EAAAgJ,IAAA,CAAE,CAAE,IACnG,IAAI,CAACrH,KAAK,CAACiI,KAAK,iBAAI1M,KAAA,CAAAiG,aAAA,UAAKC,SAAS,EAAE,IAAI,CAACqF,gBAAgB,CAAC,IAAI,CAAC9G,KAAK,CAAC1B,IAAI,CAAE,IAAE,IAAI,CAAC0B,KAAK,CAACiI,KAAW,CAAC,eACrG1M,KAAA,CAAAiG,aAAA,SAAUiG,UAAU,EAAGN,MAAM,CAACnG,KAAY,CAAC,eAE3CzF,KAAA,CAAAiG,aAAA,UACEC,SAAS,EAAEvE,EAAE,CAACK,MAAM,CAAC2K,SAAS,CAAC,IAAI,CAAChD,KAAK,CAAC,GAAAoC,IAAA,OAAAA,IAAA,CACvC/J,MAAM,CAAC4K,aAAa,CAAC,IAAI,CAACjD,KAAK,CAAC,IAAG,IAAI,CAAClF,KAAK,CAAC7B,QAAQ,EAAAmJ,IAAA,CACtD/J,MAAM,CAAC6K,cAAc,CAAC,CAAC,IAAGN,WAAW,EAAAR,IAAA,CACvC,CAAE,IAEFS,IACE,CACF,CACC,CAAC,CAEb,CAAC,CAAAvD,MAAA,CAEOqD,gBAAgB,GAAxB,SAAAA,iBAAA,EAAmC,KAAAQ,MAAA,QACjC,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAAA,EAAS,CAC5B,QAAQD,MAAI,CAACrI,KAAK,CAAC1B,IAAI,GACrB,KAAK,OAAO,CACV,OAAO+J,MAAI,CAACnD,KAAK,CAACqD,kBAAkB,CACtC,KAAK,QAAQ,CACX,OAAOF,MAAI,CAACnD,KAAK,CAACsD,mBAAmB,CACvC,KAAK,OAAO,CACZ,QACE,OAAOH,MAAI,CAACnD,KAAK,CAACuD,kBAAkB,CACxC,CACF,CAAC,CACD,IAAMC,gBAAgB,GAAGC,UAAU,CAACL,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAE3D,OAAOI,gBAAgB,CACzB,CAAC,CAAAlE,MAAA,CAEOkB,UAAU,GAAlB,SAAAA,WAAA,EAAsC,CACpC,IAAMhE,MAAM,GAAG,IAAI,CAAC1B,KAAK,CAAC0B,MAAM,GAAG,IAAI,CAACH,SAAS,CAAC,CAAC,GAAG,IAAI,CAE1D,IAAMxB,KAAK,GAAG,IAAI,CAAC2G,QAAQ,CAAC,CAAC,CAC7B,IAAAkC,cAAA,GAAqD,IAAI,CAACvI,QAAQ,CAAC,CAAC,CAA5DwI,SAAS,GAAAD,cAAA,CAATC,SAAS,CAAEC,OAAO,GAAAF,cAAA,CAAPE,OAAO,CAAEC,SAAS,GAAAH,cAAA,CAATG,SAAS,CAAEC,SAAS,GAAAJ,cAAA,CAATI,SAAS,CAEhD,oBACEzN,KAAA,CAAAiG,aAAA,CAAC/D,KAAK,IACJqC,MAAM,QACNmJ,SAAS,QACT/K,EAAE,EAAE,IAAI,CAACiC,MAAO,EAChB,YAAUnC,cAAc,CAACa,IAAK,EAC9BmK,SAAS,EAAEA,SAAS,WAATA,SAAS,GAAIrL,gBAAgB,CAACmL,OAAO,EAAEC,SAAS,CAAE,EAC7DG,aAAa,EAAE,IAAI,CAAChG,cAAc,CAAC,CAAE,EACrCiG,QAAQ,EAAEzL,MAAM,CAAC0L,UAAU,CAACC,SAAU,EACtCC,aAAa,EAAE,IAAI,CAACtJ,KAAK,CAACsJ,aAAc,EACxCC,MAAM,EAAEC,QAAQ,CAAC,IAAI,CAACtE,KAAK,CAACE,WAAW,CAAC,GAAG,CAAE,EAC7CrD,KAAK,EAAE8G,SAAU,EACjBY,QAAQ,EAAEZ,SAAS,KAAK5C,SAAS,GAAG,MAAM,GAAGA,SAAU,EACvDyD,WAAW,EAAE,IAAI,CAAC1J,KAAK,CAAC2J,UAAW,iBAEnCpO,KAAA,CAAAiG,aAAA,CAAClF,IAAI,IACHsN,SAAS,EAAE,KAAM,EACjBjI,GAAG,EAAE,IAAI,CAAC0B,OAAQ,EAClBwG,WAAW,EAAE,IAAI,CAACnJ,KAAM,EACxBoJ,SAAS,EAAE,IAAI,CAAC9J,KAAK,CAAC+J,aAAc,EACpCvC,KAAK,EAAEuB,SAAU,IAEhBrH,MAAM,EACN,IAAI,CAACQ,YAAY,CAACnC,KAAK,CACpB,CACD,CAAC,CAEZ,CAAC,CAAAyE,MAAA,CAUOiB,gBAAgB,GAAxB,SAAAA,iBAAA,EAA4C,CAC1C,IAAM/D,MAAM,GAAG,IAAI,CAAC1B,KAAK,CAAC0B,MAAM,GAAG,IAAI,CAACM,eAAe,CAAC,CAAC,GAAG,IAAI,CAChE,IAAMjC,KAAK,GAAG,IAAI,CAAC2G,QAAQ,CAAC,CAAC,CAE7B,oBACEnL,KAAA,CAAAiG,aAAA,CAACvE,WAAW,IACV+M,oBAAoB,EAAEtI,MAAO,EAC7BuI,OAAO,EAAE,IAAI,CAACjK,KAAK,CAACkK,oBAAqB,EACzCC,cAAc,EAAE,IAAI,CAACzJ,KAAM,EAC3BZ,MAAM,EAAE,IAAI,CAACD,KAAK,CAACC,MAAO,iBAE1BvE,KAAA,CAAAiG,aAAA,CAAClF,IAAI,IAACuN,WAAW,EAAE,IAAI,CAACnJ,KAAM,EAAC0J,sBAAsB,QAACN,SAAS,EAAE,MAAO,IACrE,IAAI,CAAC5H,YAAY,CAACnC,KAAK,CACpB,CACK,CAAC,CAElB,CAAC,CAAAyE,MAAA,CAuHOzB,MAAM,GAAd,SAAAA,OAAehD,KAAa,EAAE,CAC5B,IAAI,CAACa,KAAK,CAAC,CAAC,CACZ,IAAI,CAACJ,QAAQ,CAAC,EAAEV,MAAM,EAAE,KAAK,EAAEC,KAAK,EAALA,KAAK,CAAC,CAAC,CAAC,CAEvC,IAAI,CAAC,IAAI,CAAC+C,cAAc,CAAC,IAAI,CAAC4D,QAAQ,CAAC,CAAC,EAAE3G,KAAK,CAAC,EAAE,KAAAsK,qBAAA,EAAAC,WAAA,CAChD,CAAAD,qBAAA,IAAAC,WAAA,OAAI,CAACtK,KAAK,EAAC6B,aAAa,aAAxBwI,qBAAA,CAAA3K,IAAA,CAAA4K,WAAA,EAA2BvK,KAAK,CAAC,CACnC,CACF,CAAC,CAAAyE,MAAA,CAEOkC,QAAQ,GAAhB,SAAAA,SAAA,EAAmB,CACjB,IAAI,IAAI,CAAC1G,KAAK,CAACD,KAAK,KAAKkG,SAAS,EAAE,CAClC,OAAO,IAAI,CAACjG,KAAK,CAACD,KAAK,CACzB,CACA,OAAO,IAAI,CAACF,KAAK,CAACE,KAAK,CACzB,CAAC,CAAAyE,MAAA,CAEOnC,QAAQ,GAAhB,SAAAA,SAAiBkI,EAAoF,EAAE,CACrG,IAAQC,KAAK,GAAK,IAAI,CAACxK,KAAK,CAApBwK,KAAK,CACb,IAAI,CAACA,KAAK,EAAE,CACV,OAAO,EAAE,CACX,CACA,IAAMC,OAAO,GAAG,IAAI,CAAC5K,KAAK,CAACK,aAAa,IAAI,IAAI,CAACL,KAAK,CAACK,aAAa,CAACwK,WAAW,CAAC,CAAC,CAElF,IAAMC,MAAyB,GAAG,EAAE,CACpC,IAAIC,KAAK,GAAG,CAAC,CACb,SAAAC,SAAA,GAAAC,+BAAA,CAAoBN,KAAK,GAAAO,KAAA,IAAAA,KAAA,GAAAF,SAAA,IAAAG,IAAA,GAAE,KAAhBC,KAAK,GAAAF,KAAA,CAAAhL,KAAA,CACd,IAAAmL,eAAA,GAA+BC,cAAc,CAACF,KAAc,CAAC,CAAtDlL,KAAK,GAAAmL,eAAA,IAAE3I,IAAI,GAAA2I,eAAA,IAAEzI,OAAO,GAAAyI,eAAA,IAE3B,IAAI,CAACT,OAAO,IAAI,IAAI,CAACpK,QAAQ,CAAC,CAAC,CAAC+K,UAAU,CAACrL,KAAK,EAAEwC,IAAI,EAAEkI,OAAO,CAAC,EAAE,CAChEE,MAAM,CAACU,IAAI,CAACd,EAAE,CAACxK,KAAK,EAAEwC,IAAI,EAAEqI,KAAK,EAAEnI,OAAO,CAAC,CAAC,CAC5C,EAAEmI,KAAK,CACT,CACF,CAEA,OAAOD,MAAM,CACf,CAAC,CAAAnG,MAAA,CAEOmC,cAAc,GAAtB,SAAAA,eAAuB5G,KAAwB,EAAE,CAC/C,IAAIA,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAKkG,SAAS,EAAE,CACzC,OAAO,IAAI,CACb,CAEA,IAAMuE,KAAK,GAAG,IAAI,CAACxK,KAAK,CAACwK,KAAK,IAAI,EAAE,CAEpC,SAAAc,UAAA,GAAAR,+BAAA,CAAoBN,KAAK,GAAAe,MAAA,IAAAA,MAAA,GAAAD,UAAA,IAAAN,IAAA,GAAE,KAAhBC,KAAK,GAAAM,MAAA,CAAAxL,KAAA,CACd,IAAAyL,gBAAA,GAA0BL,cAAc,CAACF,KAAK,CAAC,CAAxCQ,SAAS,GAAAD,gBAAA,IAAEjJ,IAAI,GAAAiJ,gBAAA,IAEtB,IAAI,IAAI,CAAC1I,cAAc,CAAC2I,SAAS,EAAE1L,KAAK,CAAC,EAAE,CACzC,OAAOwC,IAAI,CACb,CACF,CACA,OAAO,IAAI,CACb,CAAC,CAAAiC,MAAA,CAEO1B,cAAc,GAAtB,SAAAA,eAAuB4I,MAAwB,EAAEC,MAAwB,EAAE,CACzE,OAAO9O,aAAa,CAAC6O,MAAM,CAAC,IAAI7O,aAAa,CAAC8O,MAAM,CAAC,IAAI,IAAI,CAACtL,QAAQ,CAAC,CAAC,CAACyC,cAAc,CAAC4I,MAAM,EAAEC,MAAM,CAAC,CACzG,CAAC,QAAA7M,MAAA,GAzfkDvD,KAAK,CAACqQ,SAAS,GAAA3M,OAAA,CACpD4M,mBAAmB,GAAG,QAAQ,EAAA5M,OAAA,CAC9B6M,WAAW,GAAG,QAAQ,EAAA7M,OAAA,CAEtBqB,YAAY,GAAmD,EAC3EsG,WAAW,EAAXA,WAAW,EACX3D,UAAU,EAAVA,UAAU,EACVH,cAAc,EAAdA,cAAc,EACdsI,UAAU,EAAVA,UAAU,EACV/M,GAAG,EAAE,SAAS,EACdC,IAAI,EAAE,OAAO,CACf,CAAC,EAAAW,OAAA,CAEapB,IAAI,GAAGA,IAAI,EAAAoB,OAAA,CACX8M,GAAG,GAAG,iCAAMxQ,KAAA,CAAAiG,aAAA,CAAChF,aAAa,MAAE,CAAC,IAAAyC,OAAA,CAE7B+M,aAAa,GAAG,UAACtJ,OAAwD,EAAK,CAC1FlH,SAAS,CACP,cAAAD,KAAK,CAACoH,cAAc,CAACD,OAAO,CAAC,IAAI,OAAOA,OAAO,KAAK,UAAU,EAC9D,4EACF,CAAC,CACD,OAAOA,OAAO,CAChB,CAAC,EAAAzD,OAAA,MAAAD,MAAA,KAAAA,MAAA,KAAAA,MAAA;;;AA+fH,SAAS4H,WAAWA,CAAgB7G,KAAa,EAAEwC,IAAqB,EAAE;EACxE,OAAOA,IAAI;AACb;;AAEA,SAASU,UAAUA,CAAgBlD,KAAa,EAAEwC,IAAY,EAAE;EAC9D,OAAOA,IAAI;AACb;;AAEA,SAASO,cAAcA,CAAS4I,MAAc,EAAEC,MAAc,EAAE;EAC9D,OAAOD,MAAM,KAAKC,MAAM;AAC1B;;AAEA,SAASR,cAAcA,CAACF,KAAU,EAAE;EAClC,IAAIzL,KAAK,CAACyM,OAAO,CAAChB,KAAK,CAAC,EAAE;IACxB,OAAOA,KAAK;EACd;;EAEA,OAAO,CAACA,KAAK,EAAEA,KAAK,EAAEhF,SAAS,CAAC;AAClC;;AAEA,IAAMiG,eAAe,GAAG,SAAlBA,eAAeA,CAAI3J,IAAS,EAAa;EAC7C,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;IAC5B,OAAOA,IAAI;EACb;;EAEA,IAAI3F,UAAU,CAAC2F,IAAI,CAAC,EAAE;IACpB,OAAO2J,eAAe,CAAC3J,IAAI,CAAC,CAAC,CAAC;EAChC;;EAEA,kBAAIhH,KAAK,CAACoH,cAAc,CAACJ,IAAI,CAAC,EAAE;IAC9B,OAAOrG,mBAAmB,CAACqG,IAAI,CAAC;EAClC;;EAEA,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;IAC5B,OAAOA,IAAI,CAAC4J,QAAQ,CAAC,EAAE,CAAC;EAC1B;;EAEA,OAAO,EAAE;AACX,CAAC;;AAED,SAASf,UAAUA,CAASrL,KAAa,EAAEwC,IAAS,EAAEkI,OAAe,EAAE;EACrE,IAAIlI,IAAI,KAAKzD,MAAM,CAACiN,GAAG,EAAE;IACvB,OAAO,KAAK;EACd;;EAEA,IAAMK,QAAQ,GAAGF,eAAe,CAAC3J,IAAI,CAAC;;EAEtC,IAAI,CAAC6J,QAAQ,EAAE;IACb,OAAO,KAAK;EACd;;EAEA,OAAOA,QAAQ,CAAC1B,WAAW,CAAC,CAAC,CAAC2B,OAAO,CAAC5B,OAAO,CAAC,KAAK,CAAC,CAAC;AACvD","ignoreList":[]}
1
+ {"version":3,"names":["React","invariant","globalObject","debounce","isKeyArrowDown","isKeyArrowUp","isKeyArrowVertical","isKeyEnter","isKeyEscape","isKeySpace","locale","reactGetTextContent","Button","filterProps","Input","Menu","MenuItem","MenuSeparator","RenderLayer","createPropsGetter","getRandomID","isFunction","isNonNullable","isReactUINode","ThemeContext","CommonWrapper","MobilePopup","cx","responsiveLayout","getRootNode","rootNode","ThemeFactory","styles","linkStyles","Popup","ZIndex","getMenuPositions","ArrowDownIcon","Item","SelectLocaleHelper","getSelectTheme","SelectDataTids","PASS_BUTTON_PROPS","id","disabled","error","use","size","warning","corners","onMouseEnter","onMouseLeave","onMouseOver","SelectIds","menu","Select","_dec","_class","_Select","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","opened","value","props","defaultValue","searchPattern","menuId","buttonElement","getProps","defaultProps","open","setState","onOpen","close","onClose","focus","getDefaultButtonParams","_this$renderLabel","renderLabel","label","isPlaceholder","buttonParams","onClick","toggle","onKeyDown","handleKey","getSearch","createElement","className","search","ref","debouncedFocusInput","onValueChange","handleSearch","width","getMobileSearch","autoFocus","getMenuItems","isMobile","isMobileLayout","mapItems","iValue","item","i","comment","element","isValidElement","cloneElement","key","areValuesEqual","select","bind","renderItem","popupGetParent","focusInput","input","refMenu","e","preventDefault","up","down","enter","_this$menu","highlightItem","buttonRef","getButton","_props$ariaLabel","button","_renderButton","renderDefaultButton","Children","only","onFocus","onBlur","_inheritsLoose","_proto","prototype","componentDidUpdate","_prevProps","prevState","addEventListener","removeEventListener","render","_this2","Consumer","theme","create","menuOffsetY","selectMenuOffsetY","Provider","renderMain","getMenuRenderer","renderMobileMenu","renderMenu","_this$getProps$dataT","_cx","dataTid","root","style","maxWidth","undefined","rootMobile","_extends","rootNodeRef","setRootNode","onClickOutside","onFocusOutside","active","_this$props$placehold","_this$locale","getValue","getItemByValue","renderValue","placeholder","getLeftIconClass","leftIconLink","leftIconLarge","leftIconMedium","leftIconSmall","params","_cx2","_cx3","_cx4","buttonProps","align","labelProps","customUsePlaceholder","placeholderDisabled","paddingRight","getSelectIconGap","useIsCustom","icon","selectButtonContainer","_icon","arrowWrap","arrowDisabled","customUseArrow","_this3","getArrowPadding","selectIconGapLarge","selectIconGapMedium","selectIconGapSmall","arrowLeftPadding","parseFloat","_this$getProps","menuWidth","menuPos","menuAlign","positions","hasShadow","anchorElement","priority","priorities","PopupMenu","disablePortal","margin","parseInt","minWidth","popupOffset","menuOffset","hasMargin","onItemClick","maxHeight","maxMenuHeight","headerChildComponent","caption","mobileMenuHeaderText","onCloseRequest","disableScrollContainer","_this$props$onValueCh","_this$props","fn","items","pattern","toLowerCase","result","index","_iterator","_createForOfIteratorHelperLoose","_step","done","entry","_normalizeEntry","normalizeEntry","filterItem","push","_iterator2","_step2","_normalizeEntry2","itemValue","value1","value2","Component","__KONTUR_REACT_UI__","displayName","SEP","staticElement","isArray","getTextFromItem","toString","itemText","indexOf"],"sources":["Select.tsx"],"sourcesContent":["import type { ReactNode, ReactPortal, AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\nimport invariant from 'invariant';\nimport { globalObject } from '@skbkontur/global-object';\nimport debounce from 'lodash.debounce';\n\nimport {\n isKeyArrowDown,\n isKeyArrowUp,\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n} from '../../lib/events/keyboard/identifiers';\nimport { locale } from '../../lib/locale/decorators';\nimport { reactGetTextContent } from '../../lib/reactGetTextContent';\nimport type { ButtonProps, ButtonUse } from '../Button';\nimport { Button } from '../Button';\nimport { filterProps } from '../../lib/filterProps';\nimport { Input } from '../Input';\nimport { Menu } from '../../internal/Menu';\nimport type { MenuItemProps } from '../MenuItem';\nimport { MenuItem } from '../MenuItem';\nimport { MenuSeparator } from '../MenuSeparator';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { Nullable } from '../../typings/utility-types';\nimport { getRandomID, isFunction, isNonNullable, isReactUINode } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { MobilePopup } from '../../internal/MobilePopup';\nimport { cx } from '../../lib/theming/Emotion';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport type { MenuHeaderProps } from '../MenuHeader';\nimport type { SizeProp } from '../../lib/types/props';\nimport { styles as linkStyles } from '../Link/Link.styles';\nimport { Popup, type PopupPositionsType } from '../../internal/Popup';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { getMenuPositions } from '../../lib/getMenuPositions';\n\nimport { ArrowDownIcon } from './ArrowDownIcon';\nimport { Item } from './Item';\nimport type { SelectLocale } from './locale';\nimport { SelectLocaleHelper } from './locale';\nimport { styles } from './Select.styles';\nimport { getSelectTheme } from './selectTheme';\nimport { SelectDataTids } from './tids';\n\nexport * from './tids';\n\nexport interface ButtonParams\n extends Pick<AriaAttributes, 'aria-describedby' | 'aria-controls' | 'aria-label' | 'aria-expanded'> {\n /** Делает компонент недоступным. */\n disabled?: boolean;\n\n /** Задает лейбл. */\n label: React.ReactNode;\n\n /** Задает функцию, которая вызывается при клике на селект. */\n onClick: () => void;\n\n /** Задает функцию, которая вызывается при нажатии кнопки на клавиатуре. */\n onKeyDown: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n /** Определяет, открыто ли выпадающее меню. */\n opened: boolean;\n\n /** Определяет, есть ли Placeholder. */\n isPlaceholder: boolean;\n\n /** Задает размер контрола. */\n size: SizeProp;\n}\n\nconst PASS_BUTTON_PROPS = {\n id: true,\n disabled: true,\n error: true,\n use: true,\n size: true,\n warning: true,\n corners: true,\n\n onMouseEnter: true,\n onMouseLeave: true,\n onMouseOver: true,\n};\n\nexport const SelectIds = {\n menu: SelectDataTids.menu,\n} as const;\n\ntype SelectItem<TValue, TItem> =\n | [TValue, TItem, React.ReactNode?]\n | TItem\n | TValue\n | React.ReactElement\n | (() => React.ReactElement);\n\nexport interface SelectProps<TValue, TItem>\n extends CommonProps,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'> {\n /** @ignore */\n _icon?: React.ReactNode;\n\n /** @ignore */\n _renderButton?: (params: ButtonParams) => React.ReactNode;\n\n /** @ignore */\n corners?: React.CSSProperties;\n\n /** Задает значение по умолчанию. */\n defaultValue?: TValue;\n\n menuOffset?: number;\n\n /** Отключает использование портала. */\n disablePortal?: boolean;\n\n /** Делает компонент недоступным.*/\n disabled?: boolean;\n\n /** Переводит контрол в состояние валидации \"ошибка\". */\n error?: boolean;\n\n /** Задает функцию, которая отфильтровывает элементы по заданному паттерну. */\n filterItem?: (value: TValue, item: TItem, pattern: string) => boolean;\n\n /** Задает набор значений. Поддерживаются любые перечисляемые типы, в том числе `Array`, `Map`, `Immutable.Map`.\n *\n * Элементы воспринимаются следующим образом: если элемент — это массив, то первый элемент является значением,\n * второй — отображается в списке, а третий – комментарий;\n * если элемент не является массивом, то он используется и для отображения, и для значения.\n *\n * Для вставки разделителя можно использовать `Select.SEP`.\n *\n * Вставить невыделяемый элемент со своей разметкой можно так:\n * @example\n * ```\n * <Select ...\n * items={[Select.staticElement(() => <div>My Element</div>)]}\n * />\n * ```\n *\n * Чтобы добавить стандартный отступ для статического элемента:\n * @example\n * ```\n * <Select.Item>My Element</Select.Item>\n * ``` */\n items?: Array<SelectItem<TValue, TItem>>;\n\n /** Задает максимальную высоту меню. */\n maxMenuHeight?: number;\n\n /** Задает максимальную ширину. */\n maxWidth?: React.CSSProperties['maxWidth'];\n\n /** Задает позиции выпадающего меню. */\n positions?: PopupPositionsType[];\n\n /** Задает текущую позицию выпадающего окна вручную. */\n menuPos?: 'top' | 'bottom' | 'middle';\n\n /** Задает выравнивание меню. */\n menuAlign?: 'left' | 'right';\n\n /** Задает ширину выпадающего меню. */\n menuWidth?: React.CSSProperties['width'];\n\n /** Задает функцию, вызывающуюся при изменении value. */\n onValueChange?: (value: TValue) => void;\n\n /** Задает функцию, которая вызывается при закрытии меню. */\n onClose?: () => void;\n\n /** Задает функцию, которая вызывается при наведении мышкой (событие `onmouseenter`). См разницу с onMouseOver в [документации](https://learn.javascript.ru/mousemove-mouseover-mouseout-mouseenter-mouseleave) */\n onMouseEnter?: (e: React.MouseEvent<HTMLElement>) => void;\n\n /** Задает функцию, которая вызывается при уходе мышки с объекта (событие `onmouseleave`). */\n onMouseLeave?: (e: React.MouseEvent<HTMLElement>) => void;\n\n /** Задает функцию, которая вызывается при наведении мышкой (событие `onmouseover`). */\n onMouseOver?: (e: React.MouseEvent<HTMLElement>) => void;\n\n /** Задает функцию, которая вызывается при нажатии кнопки на клавиатуре. */\n onKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n\n /** Задает функцию, которая вызывается при открытии меню. */\n onOpen?: () => void;\n\n /** Задает текст, который отображается если не введено никакое значение. */\n placeholder?: React.ReactNode;\n\n /** Задает функцию, которая отображает элемент в выпадающем списке. */\n renderItem?: (value: TValue, item?: TItem) => React.ReactNode;\n\n /** Задает функцию, которая отображает выбранный элемент. */\n renderValue?: (value: TValue, item?: TItem) => React.ReactNode;\n\n /** Задает функцию сравнения `value` с элементом из `items`. */\n areValuesEqual?: (value1: TValue, value2: TValue) => boolean;\n\n /** Показывает строку поиска в списке. */\n search?: boolean;\n\n /** Задает значение. */\n value?: TValue;\n\n theme?: ThemeIn | Theme;\n\n /** Задает длину контрола. */\n width?: number | string;\n\n /** Переводит контрол в состояние валидации \"предупреждение\". */\n warning?: boolean;\n\n /** Задаёт стиль кнопки. */\n use?: ButtonUse;\n\n /** Задает размер. */\n size?: SizeProp;\n\n /** Задаёт HTML-событие `onfocus`. */\n onFocus?: React.FocusEventHandler<HTMLElement>;\n\n /** Задаёт HTML-событие `onblur`. */\n onBlur?: React.FocusEventHandler<HTMLElement>;\n\n /** Задает текст заголовка выпадающего меню в мобильной версии. */\n mobileMenuHeaderText?: string;\n}\n\nexport interface SelectState<TValue> {\n opened: boolean;\n searchPattern: string;\n value: Nullable<TValue>;\n}\n\ninterface FocusableReactElement extends React.ReactElement<any> {\n focus: (event?: any) => void;\n}\n\ntype DefaultProps<TValue, TItem> = Required<\n Pick<SelectProps<TValue, TItem>, 'renderValue' | 'renderItem' | 'areValuesEqual' | 'filterItem' | 'use' | 'size'>\n>;\n\n/**\n * Раскрывающийся список `Select` позволяет выбрать значение из заранее известного набора вариантов.\n *\n * Используйте `Select` при:\n * * заполнении форм, например для выбора месяца.\n * * переключении состояний, например, фильтра.\n * * выборе предустановленных настроек, например, частоты уведомлений, часового пояса.\n *\n * Не используйте `Select` для выбора элементов меню. В таком случае воспользуйтесь компонентом Dropdown.\n */\n@responsiveLayout\n@rootNode\n@locale('Select', SelectLocaleHelper)\n// Suggested solutions break current behavior\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport class Select<TValue = {}, TItem = {}> extends React.Component<SelectProps<TValue, TItem>, SelectState<TValue>> {\n public static __KONTUR_REACT_UI__ = 'Select';\n public static displayName = 'Select';\n\n public static defaultProps: DefaultProps<unknown, ReactNode | ReactPortal> = {\n renderValue,\n renderItem,\n areValuesEqual,\n filterItem,\n use: 'default',\n size: 'small',\n };\n\n public static Item = Item;\n public static SEP = () => <MenuSeparator />;\n\n public static staticElement = (element: React.ReactElement | (() => React.ReactElement)) => {\n invariant(\n React.isValidElement(element) || typeof element === 'function',\n 'Select.staticElement(element) expects element to be a valid react element.',\n );\n return element;\n };\n\n public state: SelectState<TValue> = {\n opened: false,\n value: this.props.defaultValue,\n searchPattern: '',\n };\n\n private theme!: Theme;\n private isMobileLayout!: boolean;\n private readonly locale!: SelectLocale;\n private menu: Nullable<Menu>;\n private menuId = SelectIds.menu + getRandomID();\n private buttonElement: FocusableReactElement | null = null;\n private getProps = createPropsGetter(Select.defaultProps);\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public componentDidUpdate(_prevProps: SelectProps<TValue, TItem>, prevState: SelectState<TValue>) {\n if (!prevState.opened && this.state.opened) {\n globalObject.addEventListener?.('popstate', this.close);\n }\n if (prevState.opened && !this.state.opened) {\n globalObject.removeEventListener?.('popstate', this.close);\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = ThemeFactory.create(\n {\n menuOffsetY: theme.selectMenuOffsetY,\n },\n theme,\n );\n return <ThemeContext.Provider value={this.theme}>{this.renderMain()}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public open = () => {\n if (!this.state.opened) {\n this.setState({ opened: true });\n\n if (this.props.onOpen) {\n this.props.onOpen();\n }\n }\n };\n\n /**\n * @public\n */\n public close = () => {\n if (this.state.opened) {\n this.setState({ opened: false, searchPattern: '' });\n\n if (this.props.onClose) {\n this.props.onClose();\n }\n }\n };\n\n /**\n * @public\n */\n public focus = () => {\n if (this.buttonElement && this.buttonElement.focus) {\n this.buttonElement.focus();\n }\n };\n\n private getMenuRenderer() {\n if (this.props.disabled) {\n return null;\n }\n\n if (this.isMobileLayout) {\n return this.renderMobileMenu();\n }\n\n if (this.state.opened) {\n return this.renderMenu();\n }\n\n return null;\n }\n\n private renderMain() {\n const buttonParams = this.getDefaultButtonParams();\n const dataTid = this.getProps()['data-tid'] ?? SelectDataTids.root;\n const button = (\n <ThemeContext.Provider value={getSelectTheme(this.theme, this.props)}>\n {this.getButton(buttonParams)}\n </ThemeContext.Provider>\n );\n\n const isMobile = this.isMobileLayout;\n\n const style = {\n width: this.props.width,\n maxWidth: this.props.maxWidth || undefined,\n };\n\n const root = (\n <span\n data-tid={dataTid}\n className={cx({ [styles.root()]: true, [styles.rootMobile(this.theme)]: isMobile })}\n style={style}\n >\n {button}\n {this.getMenuRenderer()}\n </span>\n );\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <RenderLayer\n onClickOutside={this.close}\n onFocusOutside={this.close}\n active={isMobile ? false : this.state.opened}\n >\n {root}\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n private getDefaultButtonParams = (): ButtonParams => {\n const { label, isPlaceholder } = this.renderLabel();\n\n const buttonParams: ButtonParams = {\n opened: this.state.opened,\n label,\n isPlaceholder,\n onClick: this.toggle,\n onKeyDown: this.handleKey,\n size: this.getProps().size,\n disabled: this.getProps().disabled,\n };\n\n return buttonParams;\n };\n\n private renderLabel() {\n const value = this.getValue();\n const item = this.getItemByValue(value);\n\n if (isNonNullable(value)) {\n return {\n label: this.getProps().renderValue(value, item),\n isPlaceholder: false,\n };\n }\n\n return {\n label: <span>{this.props.placeholder ?? this.locale?.placeholder}</span>,\n isPlaceholder: true,\n };\n }\n\n private getLeftIconClass(size: SizeProp | undefined) {\n if (this.getProps().use === 'link') {\n return styles.leftIconLink(this.theme);\n }\n\n switch (size) {\n case 'large':\n return styles.leftIconLarge(this.theme);\n case 'medium':\n return styles.leftIconMedium(this.theme);\n case 'small':\n default:\n return styles.leftIconSmall(this.theme);\n }\n }\n\n private renderDefaultButton(params: ButtonParams) {\n const buttonProps: ButtonProps = {\n ...filterProps(this.props, PASS_BUTTON_PROPS),\n align: 'left' as React.CSSProperties['textAlign'],\n disabled: this.props.disabled,\n width: '100%',\n onClick: params.onClick,\n onKeyDown: params.onKeyDown,\n active: params.opened,\n size: params.size,\n };\n const use = this.getProps().use;\n\n const labelProps = {\n 'data-tid': SelectDataTids.label,\n className: cx({\n [styles.label()]: use !== 'link',\n [styles.placeholder(this.theme)]: params.isPlaceholder,\n [styles.customUsePlaceholder()]: params.isPlaceholder && use !== 'default',\n [styles.placeholderDisabled(this.theme)]: params.isPlaceholder && this.props.disabled,\n }),\n style: {\n paddingRight: this.getSelectIconGap(),\n },\n };\n\n const useIsCustom = use !== 'default';\n\n const icon = <ArrowDownIcon size={this.props.size} />;\n\n return (\n <Button {...buttonProps}>\n <div className={cx(styles.selectButtonContainer(), { [linkStyles.root(this.theme)]: use === 'link' })}>\n {this.props._icon && <div className={this.getLeftIconClass(this.props.size)}>{this.props._icon}</div>}\n <span {...labelProps}>{params.label}</span>\n\n <div\n className={cx(styles.arrowWrap(this.theme), {\n [styles.arrowDisabled(this.theme)]: this.props.disabled,\n [styles.customUseArrow()]: useIsCustom,\n })}\n >\n {icon}\n </div>\n </div>\n </Button>\n );\n }\n\n private getSelectIconGap(): number {\n const getArrowPadding = () => {\n switch (this.props.size) {\n case 'large':\n return this.theme.selectIconGapLarge;\n case 'medium':\n return this.theme.selectIconGapMedium;\n case 'small':\n default:\n return this.theme.selectIconGapSmall;\n }\n };\n const arrowLeftPadding = parseFloat(getArrowPadding()) || 0;\n\n return arrowLeftPadding;\n }\n\n private renderMenu(): React.ReactNode {\n const search = this.props.search ? this.getSearch() : null;\n\n const value = this.getValue();\n const { menuWidth, menuPos, menuAlign, positions } = this.getProps();\n\n return (\n <Popup\n opened\n hasShadow\n id={this.menuId}\n data-tid={SelectDataTids.menu}\n positions={positions ?? getMenuPositions(menuPos, menuAlign)}\n anchorElement={this.popupGetParent()}\n priority={ZIndex.priorities.PopupMenu}\n disablePortal={this.props.disablePortal}\n margin={parseInt(this.theme.menuOffsetY) - 1}\n width={menuWidth}\n minWidth={menuWidth === undefined ? '100%' : undefined}\n popupOffset={this.props.menuOffset}\n >\n <Menu\n hasMargin={false}\n ref={this.refMenu}\n onItemClick={this.close}\n maxHeight={this.props.maxMenuHeight}\n align={menuAlign}\n >\n {search}\n {this.getMenuItems(value)}\n </Menu>\n </Popup>\n );\n }\n\n private getSearch = () => {\n return (\n <div className={styles.search()} onKeyDown={this.handleKey}>\n <Input ref={this.debouncedFocusInput} onValueChange={this.handleSearch} width=\"100%\" />\n </div>\n );\n };\n\n private renderMobileMenu(): React.ReactNode {\n const search = this.props.search ? this.getMobileSearch() : null;\n const value = this.getValue();\n\n return (\n <MobilePopup\n headerChildComponent={search}\n caption={this.props.mobileMenuHeaderText}\n onCloseRequest={this.close}\n opened={this.state.opened}\n >\n <Menu onItemClick={this.close} disableScrollContainer maxHeight={'auto'}>\n {this.getMenuItems(value)}\n </Menu>\n </MobilePopup>\n );\n }\n\n private getMobileSearch = () => {\n return (\n <Input\n autoFocus\n value={this.state.searchPattern}\n ref={this.debouncedFocusInput}\n onValueChange={this.handleSearch}\n width=\"100%\"\n />\n );\n };\n\n private getMenuItems = (value: Nullable<TValue>) => {\n const isMobile = this.isMobileLayout;\n const size = this.props.size;\n\n return this.mapItems(\n (iValue: TValue, item: TItem | (() => React.ReactNode), i: number, comment: Nullable<React.ReactNode>) => {\n if (isFunction(item)) {\n const element = item();\n\n if (React.isValidElement(element)) {\n return React.cloneElement(element, { key: i, isMobile, size } as MenuItemProps);\n }\n\n return null;\n }\n\n if (React.isValidElement(item)) {\n if (isReactUINode('MenuItem', item)) {\n return React.cloneElement(item, { key: i, isMobile, size } as MenuItemProps);\n }\n if (isReactUINode('MenuHeader', item)) {\n return React.cloneElement(item, { size } as MenuHeaderProps);\n }\n return React.cloneElement(item, { key: i });\n }\n\n return (\n <MenuItem\n key={i}\n state={this.areValuesEqual(iValue, value) ? 'selected' : null}\n onClick={this.select.bind(this, iValue)}\n comment={comment}\n isMobile={isMobile}\n size={this.props.size}\n >\n {this.getProps().renderItem(iValue, item)}\n </MenuItem>\n );\n },\n );\n };\n\n private popupGetParent = () => {\n return getRootNode(this);\n };\n\n // fix cases when an Input is rendered in portal\n // https://github.com/skbkontur/retail-ui/issues/1995\n private focusInput = (input: Input) => input?.focus();\n private debouncedFocusInput = debounce(this.focusInput);\n\n private refMenu = (menu: Menu) => {\n this.menu = menu;\n };\n\n private toggle = () => {\n if (this.state.opened) {\n this.close();\n } else {\n this.open();\n }\n };\n\n private handleKey = (e: React.KeyboardEvent<HTMLElement>) => {\n if (!this.state.opened) {\n if (isKeySpace(e) || isKeyArrowVertical(e)) {\n e.preventDefault();\n this.open();\n }\n } else {\n switch (true) {\n case isKeyEscape(e):\n this.focus();\n this.close();\n break;\n case isKeyArrowUp(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.up();\n }\n break;\n case isKeyArrowDown(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.down();\n }\n break;\n case isKeyEnter(e):\n e.preventDefault(); // To prevent form submission.\n if (this.menu) {\n this.menu.enter(e);\n }\n break;\n }\n }\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n };\n\n private handleSearch = (value: string) => {\n this.setState({ searchPattern: value });\n this.menu?.highlightItem(0);\n };\n\n private select(value: TValue) {\n this.focus();\n this.setState({ opened: false, value });\n\n if (!this.areValuesEqual(this.getValue(), value)) {\n this.props.onValueChange?.(value);\n }\n }\n\n private getValue() {\n if (this.props.value !== undefined) {\n return this.props.value;\n }\n return this.state.value;\n }\n\n private mapItems(fn: (value: TValue, item: TItem, index: number, comment?: string) => React.ReactNode) {\n const { items } = this.props;\n if (!items) {\n return [];\n }\n const pattern = this.state.searchPattern && this.state.searchPattern.toLowerCase();\n\n const result: React.ReactNode[] = [];\n let index = 0;\n for (const entry of items) {\n const [value, item, comment] = normalizeEntry(entry as TItem);\n\n if (!pattern || this.getProps().filterItem(value, item, pattern)) {\n result.push(fn(value, item, index, comment));\n ++index;\n }\n }\n\n return result;\n }\n\n private getItemByValue(value?: Nullable<TValue>) {\n if (value === null || value === undefined) {\n return null;\n }\n\n const items = this.props.items || [];\n\n for (const entry of items) {\n const [itemValue, item] = normalizeEntry(entry);\n\n if (this.areValuesEqual(itemValue, value)) {\n return item;\n }\n }\n return null;\n }\n\n private areValuesEqual(value1: Nullable<TValue>, value2: Nullable<TValue>) {\n return isNonNullable(value1) && isNonNullable(value2) && this.getProps().areValuesEqual(value1, value2);\n }\n\n private buttonRef = (element: FocusableReactElement | null) => {\n this.buttonElement = element;\n };\n\n private getButton = (buttonParams: ButtonParams) => {\n const button = this.props._renderButton\n ? this.props._renderButton(buttonParams)\n : this.renderDefaultButton(buttonParams);\n\n const buttonElement = React.Children.only(button);\n\n return React.isValidElement(buttonElement)\n ? React.cloneElement(buttonElement as React.ReactElement, {\n ref: this.buttonRef,\n onFocus: this.props.onFocus,\n onBlur: this.props.onBlur,\n size: this.props.size,\n 'aria-describedby': this.props['aria-describedby'],\n 'aria-expanded': this.state.opened ? 'true' : 'false',\n 'aria-controls': this.menuId,\n 'aria-label': (buttonElement as React.ReactElement).props['aria-label'] ?? this.props['aria-label'],\n })\n : buttonElement;\n };\n}\n\nfunction renderValue<TValue, TItem>(value: TValue, item: Nullable<TItem>) {\n return item;\n}\n\nfunction renderItem<TValue, TItem>(value: TValue, item?: TItem) {\n return item;\n}\n\nfunction areValuesEqual<TValue>(value1: TValue, value2: TValue) {\n return value1 === value2;\n}\n\nfunction normalizeEntry(entry: any) {\n if (Array.isArray(entry)) {\n return entry;\n }\n\n return [entry, entry, undefined];\n}\n\nconst getTextFromItem = (item: any): string => {\n if (typeof item === 'string') {\n return item;\n }\n\n if (isFunction(item)) {\n return getTextFromItem(item());\n }\n\n if (React.isValidElement(item)) {\n return reactGetTextContent(item);\n }\n\n if (typeof item === 'number') {\n return item.toString(10);\n }\n\n return '';\n};\n\nfunction filterItem<TValue>(value: TValue, item: any, pattern: string) {\n if (item === Select.SEP) {\n return false;\n }\n\n const itemText = getTextFromItem(item);\n\n if (!itemText) {\n return false;\n }\n\n return itemText.toLowerCase().indexOf(pattern) !== -1;\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skbkontur/react-ui",
3
- "version": "5.3.0",
3
+ "version": "5.3.2",
4
4
  "description": "UI Components",
5
5
  "main": "cjs/index.js",
6
6
  "module": "index.js",
@@ -22,16 +22,12 @@
22
22
  "clean": "git clean -fdxqe node_modules",
23
23
  "prerelease": "node scripts/publish/prepublish && yarn build",
24
24
  "release": "npm publish ./build --workspaces=false",
25
- "build-old-docs": "rimraf .styleguide/deploy && yarn run styleguide:build",
26
- "deploy-old-docs": "gh-pages -a -d .styleguide/deploy -r git@github.com:skbkontur/react-ui.git",
27
25
  "storybook": "storybook dev -p 6060",
28
26
  "storybook:build": "cross-env STORYBOOK_REACT_UI_TEST=true storybook build -o .storybook/build --quiet",
29
27
  "storybook:docs-build": "cross-env STORYBOOK_REACT_UI_DOCS=true storybook build --docs -c .storybook-docs -o .storybook/build --quiet",
30
28
  "storybook:test": "cross-env STORYBOOK_REACT_UI_TEST=true storybook dev --ci -p 6060",
31
29
  "storybook:docs": "cross-env STORYBOOK_REACT_UI_DOCS=true storybook dev --docs -p 6061 -c .storybook-docs",
32
30
  "storybook:serve": "yarn serve -l 6060 .storybook/build",
33
- "styleguide": "styleguidist server --config .styleguide/config/dev.config.js",
34
- "styleguide:build": "node .styleguide/build",
35
31
  "lint": "run-p -c lint:*",
36
32
  "lint:eslint": "cross-env TIMING=1 yarn eslint ./",
37
33
  "lint:tsc": "tsc --noEmit --diagnostics",
@@ -140,7 +136,6 @@
140
136
  "react": "18.3.1",
141
137
  "react-docgen-typescript": "^2.2.2",
142
138
  "react-dom": "^18.3.1",
143
- "react-styleguidist": "^12.0.1",
144
139
  "rimraf": "^5.0.7",
145
140
  "selenium-webdriver": "^4.27.0",
146
141
  "semver": "^7.6.2",
@@ -1,113 +0,0 @@
1
- ### Базовый пример
2
- ```jsx harmony
3
- import { Autocomplete } from '@skbkontur/react-ui';
4
-
5
- const items = ['Grey Face', 'Grey Space', 'Kappa', 'Keepo', 'Resident Sleeper'];
6
-
7
- const [value, setValue] = React.useState('Kappa');
8
-
9
- <Autocomplete source={items} value={value} onValueChange={setValue} />;
10
- ```
11
-
12
- ### Очистка Autocomplete
13
- Очистить значение в `Autocomplete` можно только с помощью пустой строки.
14
- ```jsx harmony
15
- import { Autocomplete, Button, Group } from '@skbkontur/react-ui';
16
-
17
- const items = ['Grey Face', 'Grey Space', 'Kappa', 'Keepo', 'Resident Sleeper'];
18
-
19
- const [value, setValue] = React.useState('Kappa');
20
-
21
- <Group>
22
- <Autocomplete source={items} value={value} onValueChange={setValue} />
23
- <Button onClick={() => setValue('')}>Очистить</Button>
24
- </Group>
25
- ```
26
-
27
- ### Размер
28
- ```jsx harmony
29
- import { Autocomplete, Gapped } from '@skbkontur/react-ui';
30
-
31
- const items = ['Маленький', 'Средний', 'Большой'];
32
-
33
- const [valueSmall, setValueSmall] = React.useState('Маленький');
34
- const [valueMedium, setValueMedium] = React.useState('Средний');
35
- const [valueLarge, setValueLarge] = React.useState('Большой');
36
-
37
- <Gapped vertical>
38
- <Autocomplete source={items} value={valueSmall} onValueChange={setValueSmall} size={'small'} />
39
- <Autocomplete source={items} value={valueMedium} onValueChange={setValueMedium} size={'medium'} />
40
- <Autocomplete source={items} value={valueLarge} onValueChange={setValueLarge} size={'large'} />
41
- </Gapped>
42
- ```
43
-
44
- ### Выделение введеного значения при фокусе
45
- ```jsx harmony
46
- import { Autocomplete } from '@skbkontur/react-ui';
47
-
48
- const items = ['Grey Face', 'Grey Space', 'Kappa', 'Keepo', 'Resident Sleeper'];
49
-
50
- const [value, setValue] = React.useState('');
51
-
52
- <Autocomplete source={items} value={value} onValueChange={setValue} selectAllOnFocus />
53
- ```
54
-
55
- ### Иконка
56
- ```jsx harmony
57
- import { Autocomplete, Gapped } from '@skbkontur/react-ui';
58
- import { SearchLoupeIcon16Regular } from '@skbkontur/icons/SearchLoupeIcon16Regular';
59
-
60
- const items = ['Grey Face', 'Grey Space', 'Kappa', 'Keepo', 'Resident Sleeper'];
61
-
62
- const [valueLeft, setValueLeft] = React.useState('');
63
- const [valueRight, setValueRight] = React.useState('');
64
-
65
- <Gapped>
66
- <Autocomplete source={items} value={valueLeft} onValueChange={setValueLeft} leftIcon={<SearchLoupeIcon16Regular />} />
67
- <Autocomplete source={items} value={valueRight} onValueChange={setValueRight} rightIcon={<SearchLoupeIcon16Regular />} />
68
- </Gapped>
69
- ```
70
-
71
- ### Ширина меню
72
- ```jsx harmony
73
- import { Autocomplete } from '@skbkontur/react-ui';
74
-
75
- const items = ['Grey Face', 'Grey Space', 'Kappa', 'Keepo', 'Resident Sleeper'];
76
-
77
- const [value, setValue] = React.useState('');
78
-
79
- <Autocomplete source={items} value={value} onValueChange={setValue} menuWidth={'80%'} />
80
- ```
81
-
82
- ### Расположение выпадающего окна Autocomplete
83
- ```jsx harmony
84
- import { Autocomplete } from '@skbkontur/react-ui';
85
-
86
- const items = ['Grey Face', 'Grey Space', 'Kappa', 'Keepo', 'Resident Sleeper'];
87
-
88
- const [value, setValue] = React.useState('');
89
-
90
- <Autocomplete source={items} value={value} onValueChange={setValue} menuPos={'top'} />
91
- ```
92
-
93
- ### Тень у выпадающего меню
94
- ```jsx harmony
95
- import { Autocomplete } from '@skbkontur/react-ui';
96
-
97
- const items = ['Grey Face', 'Grey Space', 'Kappa', 'Keepo', 'Resident Sleeper'];
98
-
99
- const [value, setValue] = React.useState('');
100
-
101
- <Autocomplete source={items} value={value} onValueChange={setValue} hasShadow />
102
- ```
103
-
104
- ### Режима прозрачной рамки
105
- ```jsx harmony
106
- import { Autocomplete } from '@skbkontur/react-ui';
107
-
108
- const items = ['Grey Face', 'Grey Space', 'Kappa', 'Keepo', 'Resident Sleeper'];
109
-
110
- const [value, setValue] = React.useState('Kappa');
111
-
112
- <Autocomplete source={items} value={value} onValueChange={setValue} borderless />
113
- ```