@skbkontur/react-ui 6.1.6-fe902.0 → 6.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/components/CurrencyInput/CurrencyHelper.d.ts +1 -2
  3. package/components/CurrencyInput/CurrencyHelper.js +32 -28
  4. package/components/CurrencyInput/CurrencyHelper.js.map +1 -1
  5. package/components/CurrencyInput/CurrencyInputHelper.js +1 -1
  6. package/components/CurrencyInput/CurrencyInputHelper.js.map +1 -1
  7. package/components/DateInput/DateInput.js +4 -1
  8. package/components/DateInput/DateInput.js.map +1 -1
  9. package/components/FileUploader/FileUploaderFile.d.ts +1 -1
  10. package/components/FileUploader/FileUploaderFile.js +1 -1
  11. package/components/FileUploader/FileUploaderFile.js.map +1 -1
  12. package/components/FxInput/FxInput.d.ts +1 -1
  13. package/components/FxInput/FxInput.js.map +1 -1
  14. package/components/MaskedInput/MaskedInput.d.ts +2 -6
  15. package/components/MaskedInput/MaskedInput.js +126 -10
  16. package/components/MaskedInput/MaskedInput.js.map +1 -1
  17. package/components/MaskedInput/index.d.ts +0 -1
  18. package/components/MaskedInput/index.js +0 -1
  19. package/components/MaskedInput/index.js.map +1 -1
  20. package/components/MiniModal/MiniModal.d.ts +0 -9
  21. package/components/MiniModal/MiniModal.js +0 -9
  22. package/components/MiniModal/MiniModal.js.map +1 -1
  23. package/components/Modal/Modal.d.ts +0 -5
  24. package/components/Modal/Modal.js +0 -5
  25. package/components/Modal/Modal.js.map +1 -1
  26. package/components/Select/Select.d.ts +1 -0
  27. package/components/Select/Select.js +12 -2
  28. package/components/Select/Select.js.map +1 -1
  29. package/components/Switcher/Switcher.d.ts +3 -3
  30. package/components/Switcher/Switcher.js +1 -1
  31. package/components/Switcher/Switcher.js.map +1 -1
  32. package/components/Tabs/Tab.d.ts +4 -5
  33. package/components/Tabs/Tab.js +0 -1
  34. package/components/Tabs/Tab.js.map +1 -1
  35. package/components/Tabs/Tabs.d.ts +2 -2
  36. package/components/Tabs/Tabs.js +1 -1
  37. package/components/Tabs/Tabs.js.map +1 -1
  38. package/components/Token/Token.d.ts +1 -1
  39. package/components/Token/Token.js +1 -1
  40. package/components/Token/Token.js.map +1 -1
  41. package/components/TokenInput/TokenInput.d.ts +1 -1
  42. package/components/TokenInput/TokenInput.js +1 -1
  43. package/components/TokenInput/TokenInput.js.map +1 -1
  44. package/internal/Menu/Menu.d.ts +5 -0
  45. package/internal/Menu/Menu.js +21 -0
  46. package/internal/Menu/Menu.js.map +1 -1
  47. package/lib/events/keyboard/KeyboardEventCodes.d.ts +0 -2
  48. package/lib/events/keyboard/KeyboardEventCodes.js +0 -2
  49. package/lib/events/keyboard/KeyboardEventCodes.js.map +1 -1
  50. package/lib/events/keyboard/KeyboardMapKeys.js +0 -2
  51. package/lib/events/keyboard/KeyboardMapKeys.js.map +1 -1
  52. package/lib/events/keyboard/identifiers.d.ts +0 -2
  53. package/lib/events/keyboard/identifiers.js +0 -6
  54. package/lib/events/keyboard/identifiers.js.map +1 -1
  55. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +0 -1
  56. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +0 -1
  57. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  58. package/package.json +1 -4
  59. package/components/MaskedInput/MaskedInputLegacy.d.ts +0 -3
  60. package/components/MaskedInput/MaskedInputLegacy.js +0 -142
  61. package/components/MaskedInput/MaskedInputLegacy.js.map +0 -1
  62. package/components/MaskedInputV2/MaskedInputV2.d.ts +0 -62
  63. package/components/MaskedInputV2/MaskedInputV2.helpers.d.ts +0 -9
  64. package/components/MaskedInputV2/MaskedInputV2.helpers.js +0 -17
  65. package/components/MaskedInputV2/MaskedInputV2.helpers.js.map +0 -1
  66. package/components/MaskedInputV2/MaskedInputV2.js +0 -307
  67. package/components/MaskedInputV2/MaskedInputV2.js.map +0 -1
  68. package/components/MaskedInputV2/MaskedInputV2.phone.d.ts +0 -28
  69. package/components/MaskedInputV2/MaskedInputV2.phone.js +0 -38
  70. package/components/MaskedInputV2/MaskedInputV2.phone.js.map +0 -1
  71. package/components/MaskedInputV2/MaskedInputV2.styles.d.ts +0 -7
  72. package/components/MaskedInputV2/MaskedInputV2.styles.js +0 -19
  73. package/components/MaskedInputV2/MaskedInputV2.styles.js.map +0 -1
  74. package/components/MaskedInputV2/index.d.ts +0 -2
  75. package/components/MaskedInputV2/index.js +0 -3
  76. package/components/MaskedInputV2/index.js.map +0 -1
  77. package/components/MaskedInputV2/internal/MaskOverlay.d.ts +0 -19
  78. package/components/MaskedInputV2/internal/MaskOverlay.js +0 -54
  79. package/components/MaskedInputV2/internal/MaskOverlay.js.map +0 -1
  80. package/components/MaskedInputV2/internal/MaskedCore.d.ts +0 -8
  81. package/components/MaskedInputV2/internal/MaskedCore.js +0 -186
  82. package/components/MaskedInputV2/internal/MaskedCore.js.map +0 -1
  83. package/components/MaskedInputV2/internal/MaskedCore.types.d.ts +0 -37
  84. package/components/MaskedInputV2/internal/MaskedCore.types.js +0 -2
  85. package/components/MaskedInputV2/internal/MaskedCore.types.js.map +0 -1
  86. package/components/MaskedInputV2/internal/MaskedInternal.styles.d.ts +0 -15
  87. package/components/MaskedInputV2/internal/MaskedInternal.styles.js +0 -34
  88. package/components/MaskedInputV2/internal/MaskedInternal.styles.js.map +0 -1
  89. package/components/MaskedInputV2/internal/buildSlotMap.d.ts +0 -11
  90. package/components/MaskedInputV2/internal/buildSlotMap.js +0 -37
  91. package/components/MaskedInputV2/internal/buildSlotMap.js.map +0 -1
  92. package/components/MaskedInputV2/internal/computeMaskAlignPadding.d.ts +0 -6
  93. package/components/MaskedInputV2/internal/computeMaskAlignPadding.js +0 -47
  94. package/components/MaskedInputV2/internal/computeMaskAlignPadding.js.map +0 -1
  95. package/components/MaskedInputV2/internal/computePasteMaskedCursor.d.ts +0 -3
  96. package/components/MaskedInputV2/internal/computePasteMaskedCursor.js +0 -11
  97. package/components/MaskedInputV2/internal/computePasteMaskedCursor.js.map +0 -1
  98. package/components/MaskedInputV2/internal/extractRaw.d.ts +0 -10
  99. package/components/MaskedInputV2/internal/extractRaw.js +0 -16
  100. package/components/MaskedInputV2/internal/extractRaw.js.map +0 -1
  101. package/components/MaskedInputV2/internal/findNearestRawLeft.d.ts +0 -10
  102. package/components/MaskedInputV2/internal/findNearestRawLeft.js +0 -18
  103. package/components/MaskedInputV2/internal/findNearestRawLeft.js.map +0 -1
  104. package/components/MaskedInputV2/internal/helpers.d.ts +0 -8
  105. package/components/MaskedInputV2/internal/helpers.js +0 -9
  106. package/components/MaskedInputV2/internal/helpers.js.map +0 -1
  107. package/components/MaskedInputV2/internal/maskedCoreClipboard.d.ts +0 -37
  108. package/components/MaskedInputV2/internal/maskedCoreClipboard.js +0 -52
  109. package/components/MaskedInputV2/internal/maskedCoreClipboard.js.map +0 -1
  110. package/components/MaskedInputV2/internal/maskedCoreDeletion.d.ts +0 -28
  111. package/components/MaskedInputV2/internal/maskedCoreDeletion.js +0 -70
  112. package/components/MaskedInputV2/internal/maskedCoreDeletion.js.map +0 -1
  113. package/components/MaskedInputV2/internal/maskedCoreInputChange.d.ts +0 -38
  114. package/components/MaskedInputV2/internal/maskedCoreInputChange.js +0 -49
  115. package/components/MaskedInputV2/internal/maskedCoreInputChange.js.map +0 -1
  116. package/components/MaskedInputV2/internal/maskedCoreNavigation.d.ts +0 -13
  117. package/components/MaskedInputV2/internal/maskedCoreNavigation.js +0 -79
  118. package/components/MaskedInputV2/internal/maskedCoreNavigation.js.map +0 -1
  119. package/components/MaskedInputV2/internal/measureInputTextWidth.d.ts +0 -2
  120. package/components/MaskedInputV2/internal/measureInputTextWidth.js +0 -30
  121. package/components/MaskedInputV2/internal/measureInputTextWidth.js.map +0 -1
  122. package/components/MaskedInputV2/internal/setMaskInputSelectionRange.d.ts +0 -2
  123. package/components/MaskedInputV2/internal/setMaskInputSelectionRange.js +0 -25
  124. package/components/MaskedInputV2/internal/setMaskInputSelectionRange.js.map +0 -1
  125. package/components/MaskedInputV2/internal/showOverlay.d.ts +0 -3
  126. package/components/MaskedInputV2/internal/showOverlay.js +0 -16
  127. package/components/MaskedInputV2/internal/showOverlay.js.map +0 -1
  128. package/components/MaskedInputV2/internal/stripMaskChars.d.ts +0 -11
  129. package/components/MaskedInputV2/internal/stripMaskChars.js +0 -20
  130. package/components/MaskedInputV2/internal/stripMaskChars.js.map +0 -1
  131. package/components/MaskedInputV2/internal/types.d.ts +0 -74
  132. package/components/MaskedInputV2/internal/types.js +0 -2
  133. package/components/MaskedInputV2/internal/types.js.map +0 -1
  134. package/components/MaskedInputV2/internal/useInputOverflow.d.ts +0 -4
  135. package/components/MaskedInputV2/internal/useInputOverflow.js +0 -34
  136. package/components/MaskedInputV2/internal/useInputOverflow.js.map +0 -1
  137. package/components/MaskedInputV2/internal/useMaskAlignPadding.d.ts +0 -2
  138. package/components/MaskedInputV2/internal/useMaskAlignPadding.js +0 -33
  139. package/components/MaskedInputV2/internal/useMaskAlignPadding.js.map +0 -1
  140. package/components/MaskedInputV2/internal/useMaskEngine.d.ts +0 -42
  141. package/components/MaskedInputV2/internal/useMaskEngine.js +0 -84
  142. package/components/MaskedInputV2/internal/useMaskEngine.js.map +0 -1
  143. package/components/MaskedInputV2/internal/useMaskedCoreHandlers.d.ts +0 -34
  144. package/components/MaskedInputV2/internal/useMaskedCoreHandlers.js +0 -335
  145. package/components/MaskedInputV2/internal/useMaskedCoreHandlers.js.map +0 -1
  146. package/components/MaskedInputV2/react-imask/imask/controls/html-input-mask-element.d.ts +0 -16
  147. package/components/MaskedInputV2/react-imask/imask/controls/html-input-mask-element.js +0 -59
  148. package/components/MaskedInputV2/react-imask/imask/controls/html-input-mask-element.js.map +0 -1
  149. package/components/MaskedInputV2/react-imask/imask/controls/html-mask-element.d.ts +0 -20
  150. package/components/MaskedInputV2/react-imask/imask/controls/html-mask-element.js +0 -106
  151. package/components/MaskedInputV2/react-imask/imask/controls/html-mask-element.js.map +0 -1
  152. package/components/MaskedInputV2/react-imask/imask/controls/input-history.d.ts +0 -17
  153. package/components/MaskedInputV2/react-imask/imask/controls/input-history.js +0 -49
  154. package/components/MaskedInputV2/react-imask/imask/controls/input-history.js.map +0 -1
  155. package/components/MaskedInputV2/react-imask/imask/controls/input.d.ts +0 -95
  156. package/components/MaskedInputV2/react-imask/imask/controls/input.js +0 -420
  157. package/components/MaskedInputV2/react-imask/imask/controls/input.js.map +0 -1
  158. package/components/MaskedInputV2/react-imask/imask/controls/mask-element.d.ts +0 -30
  159. package/components/MaskedInputV2/react-imask/imask/controls/mask-element.js +0 -59
  160. package/components/MaskedInputV2/react-imask/imask/controls/mask-element.js.map +0 -1
  161. package/components/MaskedInputV2/react-imask/imask/core/action-details.d.ts +0 -30
  162. package/components/MaskedInputV2/react-imask/imask/core/action-details.js +0 -100
  163. package/components/MaskedInputV2/react-imask/imask/core/action-details.js.map +0 -1
  164. package/components/MaskedInputV2/react-imask/imask/core/change-details.d.ts +0 -20
  165. package/components/MaskedInputV2/react-imask/imask/core/change-details.js +0 -46
  166. package/components/MaskedInputV2/react-imask/imask/core/change-details.js.map +0 -1
  167. package/components/MaskedInputV2/react-imask/imask/core/continuous-tail-details.d.ts +0 -21
  168. package/components/MaskedInputV2/react-imask/imask/core/continuous-tail-details.js +0 -52
  169. package/components/MaskedInputV2/react-imask/imask/core/continuous-tail-details.js.map +0 -1
  170. package/components/MaskedInputV2/react-imask/imask/core/holder.d.ts +0 -34
  171. package/components/MaskedInputV2/react-imask/imask/core/holder.js +0 -38
  172. package/components/MaskedInputV2/react-imask/imask/core/holder.js.map +0 -1
  173. package/components/MaskedInputV2/react-imask/imask/core/tail-details.d.ts +0 -20
  174. package/components/MaskedInputV2/react-imask/imask/core/tail-details.js +0 -2
  175. package/components/MaskedInputV2/react-imask/imask/core/tail-details.js.map +0 -1
  176. package/components/MaskedInputV2/react-imask/imask/core/utils.d.ts +0 -24
  177. package/components/MaskedInputV2/react-imask/imask/core/utils.js +0 -100
  178. package/components/MaskedInputV2/react-imask/imask/core/utils.js.map +0 -1
  179. package/components/MaskedInputV2/react-imask/imask/imask.d.ts +0 -5
  180. package/components/MaskedInputV2/react-imask/imask/imask.js +0 -7
  181. package/components/MaskedInputV2/react-imask/imask/imask.js.map +0 -1
  182. package/components/MaskedInputV2/react-imask/imask/index.d.ts +0 -17
  183. package/components/MaskedInputV2/react-imask/imask/index.js +0 -16
  184. package/components/MaskedInputV2/react-imask/imask/index.js.map +0 -1
  185. package/components/MaskedInputV2/react-imask/imask/masked/base.d.ts +0 -114
  186. package/components/MaskedInputV2/react-imask/imask/masked/base.js +0 -411
  187. package/components/MaskedInputV2/react-imask/imask/masked/base.js.map +0 -1
  188. package/components/MaskedInputV2/react-imask/imask/masked/create.d.ts +0 -14
  189. package/components/MaskedInputV2/react-imask/imask/masked/create.js +0 -11
  190. package/components/MaskedInputV2/react-imask/imask/masked/create.js.map +0 -1
  191. package/components/MaskedInputV2/react-imask/imask/masked/factory.d.ts +0 -62
  192. package/components/MaskedInputV2/react-imask/imask/masked/factory.js +0 -107
  193. package/components/MaskedInputV2/react-imask/imask/masked/factory.js.map +0 -1
  194. package/components/MaskedInputV2/react-imask/imask/masked/pattern.d.ts +0 -101
  195. package/components/MaskedInputV2/react-imask/imask/masked/pattern.js +0 -549
  196. package/components/MaskedInputV2/react-imask/imask/masked/pattern.js.map +0 -1
  197. package/components/MaskedInputV2/react-imask/imask/masked/patterns/block.d.ts +0 -30
  198. package/components/MaskedInputV2/react-imask/imask/masked/patterns/block.js +0 -2
  199. package/components/MaskedInputV2/react-imask/imask/masked/patterns/block.js.map +0 -1
  200. package/components/MaskedInputV2/react-imask/imask/masked/patterns/chunk-tail-details.d.ts +0 -20
  201. package/components/MaskedInputV2/react-imask/imask/masked/patterns/chunk-tail-details.js +0 -182
  202. package/components/MaskedInputV2/react-imask/imask/masked/patterns/chunk-tail-details.js.map +0 -1
  203. package/components/MaskedInputV2/react-imask/imask/masked/patterns/cursor.d.ts +0 -31
  204. package/components/MaskedInputV2/react-imask/imask/masked/patterns/cursor.js +0 -163
  205. package/components/MaskedInputV2/react-imask/imask/masked/patterns/cursor.js.map +0 -1
  206. package/components/MaskedInputV2/react-imask/imask/masked/patterns/fixed-definition.d.ts +0 -42
  207. package/components/MaskedInputV2/react-imask/imask/masked/patterns/fixed-definition.js +0 -158
  208. package/components/MaskedInputV2/react-imask/imask/masked/patterns/fixed-definition.js.map +0 -1
  209. package/components/MaskedInputV2/react-imask/imask/masked/patterns/input-definition.d.ts +0 -56
  210. package/components/MaskedInputV2/react-imask/imask/masked/patterns/input-definition.js +0 -185
  211. package/components/MaskedInputV2/react-imask/imask/masked/patterns/input-definition.js.map +0 -1
  212. package/components/MaskedInputV2/react-imask/imask/masked/regexp.d.ts +0 -17
  213. package/components/MaskedInputV2/react-imask/imask/masked/regexp.js +0 -36
  214. package/components/MaskedInputV2/react-imask/imask/masked/regexp.js.map +0 -1
  215. package/components/MaskedInputV2/react-imask/index.d.ts +0 -3
  216. package/components/MaskedInputV2/react-imask/index.js +0 -4
  217. package/components/MaskedInputV2/react-imask/index.js.map +0 -1
  218. package/components/MaskedInputV2/react-imask/input.d.ts +0 -8
  219. package/components/MaskedInputV2/react-imask/input.js +0 -35
  220. package/components/MaskedInputV2/react-imask/input.js.map +0 -1
  221. package/components/MaskedInputV2/react-imask/mixin.d.ts +0 -31
  222. package/components/MaskedInputV2/react-imask/mixin.js +0 -246
  223. package/components/MaskedInputV2/react-imask/mixin.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.js","sourceRoot":"","sources":["Menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { CSSProperties, HTMLAttributes } from 'react';\nimport React from 'react';\n\nimport type { MenuItem } from '../../components/MenuItem/index.js';\nimport { MenuItemDataTids } from '../../components/MenuItem/index.js';\nimport { MenuSeparator } from '../../components/MenuSeparator/index.js';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator.js';\nimport { ScrollContainer } from '../../components/ScrollContainer/index.js';\nimport type { ScrollContainerScrollStateY } from '../../components/ScrollContainer/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { getDOMRect } from '../../lib/dom/getDOMRect.js';\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter } from '../../lib/events/keyboard/identifiers.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { isBrowser } from '../../lib/globalObject.js';\nimport { isInstanceOf } from '../../lib/isInstanceOf.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { getRootNode, rootNode } from '../../lib/rootNode/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory.js';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers.js';\nimport { isNonNullable } from '../../lib/utils.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport type { CommonProps } from '../CommonWrapper/index.js';\nimport { CommonWrapper } from '../CommonWrapper/index.js';\nimport { getStyles } from './Menu.styles.js';\nimport { MenuContext } from './MenuContext.js';\nimport { MenuNavigation } from './MenuNavigation.js';\n\nexport interface MenuProps extends CommonProps, Pick<HTMLAttributes<HTMLDivElement>, 'id'> {\n children: React.ReactNode;\n hasMargin?: boolean;\n /**\n * Максимальная высота применяется только для скролл контейнера\n *\n * Высота `header` и `footer` в нее не включены\n */\n maxHeight?: number | string;\n onItemClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n width?: number | string;\n preventWindowScroll?: boolean;\n /**\n * Отключение кастомного скролла контейнера\n */\n disableScrollContainer?: boolean;\n align?: 'left' | 'right';\n /**\n * Отключает выравнивание текста пунктов меню относительно иконок в других пунктах.\n */\n preventIconsOffset?: boolean;\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n /**\n * Циклический перебор айтемов меню (по-дефолтну включен)\n */\n cyclicSelection?: boolean;\n initialSelectedItemIndex?: number;\n}\n\nexport interface MenuState {\n maxHeight: number | string;\n scrollState: ScrollContainerScrollStateY;\n enableIconPadding: boolean;\n}\n\nexport const MenuDataTids = {\n root: 'Menu__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<\n MenuProps,\n | 'align'\n | 'width'\n | 'hasMargin'\n | 'maxHeight'\n | 'preventWindowScroll'\n | 'cyclicSelection'\n | 'initialSelectedItemIndex'\n >\n>;\n\n@withRenderEnvironment\n@responsiveLayout\n@rootNode\nexport class Menu extends React.PureComponent<MenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'Menu';\n public static displayName = 'Menu';\n\n public static defaultProps: DefaultProps = {\n align: 'left',\n width: 'auto',\n maxHeight: 300,\n hasMargin: true,\n preventWindowScroll: true,\n cyclicSelection: true,\n initialSelectedItemIndex: -1,\n };\n\n private getProps = createPropsGetter(Menu.defaultProps);\n\n public state: MenuState = {\n maxHeight: this.getProps().maxHeight || 'none',\n scrollState: 'top',\n enableIconPadding: false,\n };\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private scrollContainer: Nullable<ScrollContainer>;\n private isMobileLayout!: boolean;\n private unmounted = false;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private header: Nullable<HTMLDivElement>;\n private footer: Nullable<HTMLDivElement>;\n private contentRef = React.createRef<HTMLDivElement>();\n private menuNavigation: MenuNavigation<MenuItem> = new MenuNavigation(this.contentRef, MenuItemDataTids.content);\n\n public componentWillUnmount(): void {\n this.unmounted = true;\n }\n\n public componentDidMount(): void {\n this.setInitialSelection();\n this.calculateMaxHeight();\n this.unmounted = false;\n }\n\n public componentDidUpdate(prevProps: MenuProps): void {\n if (this.shouldRecalculateMaxHeight(prevProps)) {\n this.calculateMaxHeight();\n }\n\n if (prevProps.maxHeight !== this.getProps().maxHeight) {\n this.setState({\n maxHeight: this.props.maxHeight || 'none',\n });\n }\n }\n\n public focus(): void {\n this.focusOnRootElement();\n }\n\n private focusOnRootElement = (): void => {\n const rootNode = getRootNode(this);\n if (isInstanceOf(rootNode, this.globalObject.HTMLElement)) {\n rootNode?.focus();\n }\n };\n\n public render() {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public up() {\n this.move(-1);\n }\n\n /**\n * @public\n */\n public down() {\n this.move(1);\n }\n\n /**\n * @public\n */\n public enter(event: React.SyntheticEvent<HTMLElement>) {\n this.menuNavigation.highlightedItem?.navigate();\n return this.menuNavigation.select(event);\n }\n\n /**\n * @public\n */\n public reset(): void {\n this.menuNavigation.reset();\n }\n\n /**\n * @public\n */\n public hasHighlightedItem() {\n return !!this.menuNavigation.highlightedItem;\n }\n\n public highlightItem(index: number) {\n this.menuNavigation.highlightByIndex(index);\n }\n\n private renderMain() {\n if (this.isEmpty()) {\n return null;\n }\n const { hasMargin, maxHeight, preventWindowScroll } = this.getProps();\n\n const offsetY = {\n top: `${this.theme.scrollContainerScrollBarOffsetY}`,\n right: 0,\n bottom: `${this.theme.scrollContainerScrollBarOffsetY}`,\n };\n\n const isMobile = this.isMobileLayout;\n const themeGTE6_1 = isThemeGTE(this.theme, '6.1');\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={MenuDataTids.root}\n className={this.cx(getAlignRightClass(this.props, this.cx, this.styles), {\n [this.styles.root(this.theme)]: true,\n [this.styles.hasMargin(this.theme)]: hasMargin,\n [this.styles.mobileRoot(this.theme)]: isMobile,\n [this.styles.mobileRoot6_1()]: themeGTE6_1 && isMobile,\n [this.styles.shadow(this.theme)]: !isMobile,\n })}\n style={this.getStyle(this.props)}\n id={this.props.id}\n onKeyDown={this.handleKeyDown}\n tabIndex={0}\n >\n {this.props.header && this.renderHeader()}\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={maxHeight}\n preventWindowScroll={preventWindowScroll}\n onScrollStateChangeY={this.handleScrollStateChange}\n disabled={this.props.disableScrollContainer}\n offsetY={offsetY}\n >\n <div\n className={this.cx({\n [this.styles.scrollContainer(this.theme)]: true,\n [this.styles.scrollContainerMobile(this.theme)]: isMobile,\n })}\n ref={this.contentRef}\n >\n <MenuContext.Provider\n value={{\n navigation: this.menuNavigation,\n onItemClick: this.props.onItemClick,\n enableIconPadding: this.state.enableIconPadding,\n setEnableIconPadding: this.setEnableIconPadding,\n }}\n >\n {this.props.children}\n </MenuContext.Provider>\n </div>\n </ScrollContainer>\n {this.props.footer && this.renderFooter()}\n </div>\n </CommonWrapper>\n );\n }\n\n private renderHeader = () => {\n return (\n <div\n className={this.cx({\n [this.styles.wrapper()]: true,\n [this.styles.headerWrapper()]: true,\n })}\n ref={(el) => {\n this.header = el;\n }}\n >\n <div className={this.styles.contentWrapper()}>{this.props.header}</div>\n <div className={this.styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'top' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n </div>\n );\n };\n\n private renderFooter = () => {\n return (\n <div\n className={this.cx({\n [this.styles.wrapper()]: true,\n [this.styles.footerWrapper()]: true,\n })}\n ref={(el) => {\n this.footer = el;\n }}\n >\n <div className={this.styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'bottom' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n <div className={this.styles.contentWrapper()}>{this.props.footer}</div>\n </div>\n );\n };\n\n private renderMenuSeparatorWithNoMargin = () => {\n return (\n <ThemeContext.Provider value={ThemeFactory.create({ menuSeparatorMarginY: '0' }, this.theme)}>\n <MenuSeparator />\n </ThemeContext.Provider>\n );\n };\n\n private setInitialSelection = () => {\n for (let i = this.getProps().initialSelectedItemIndex; i > -1; i--) {\n this.down();\n }\n };\n\n private shouldRecalculateMaxHeight = (prevProps: MenuProps): boolean => {\n const { header, footer, children } = this.props;\n const maxHeight = this.getProps().maxHeight;\n const prevMaxHeight = prevProps.maxHeight;\n const prevHeader = prevProps.header;\n const prevFooter = prevProps.footer;\n const prevChildrenCount = React.Children.count(prevProps.children);\n\n return (\n maxHeight !== prevMaxHeight ||\n footer !== prevFooter ||\n header !== prevHeader ||\n React.Children.count(children) !== prevChildrenCount\n );\n };\n\n private calculateMaxHeight = () => {\n const maxHeight = this.getProps().maxHeight;\n let parsedMaxHeight = maxHeight;\n const rootNode = getRootNode(this);\n\n if (typeof maxHeight === 'string' && isBrowser(this.globalObject) && rootNode) {\n const rootElementMaxHeight = this.globalObject.getComputedStyle?.(rootNode).maxHeight;\n\n if (rootElementMaxHeight) {\n parsedMaxHeight = parseFloat(rootElementMaxHeight);\n }\n }\n\n const calculatedMaxHeight =\n typeof parsedMaxHeight === 'number'\n ? parsedMaxHeight +\n ((this.header && getDOMRect(this.header).height) || 0) +\n ((this.footer && getDOMRect(this.footer).height) || 0)\n : maxHeight;\n\n this.setState({\n maxHeight: calculatedMaxHeight || 'none',\n });\n };\n\n private refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private scrollToSelected = () => {\n const highlightedItem = this.menuNavigation.highlightedItem;\n if (this.scrollContainer && highlightedItem) {\n const rootNode = getRootNode(highlightedItem);\n // TODO: Remove this check once IF-647 is resolved\n if (isInstanceOf(rootNode, this.globalObject.HTMLElement)) {\n this.scrollContainer.scrollTo(rootNode);\n }\n }\n };\n\n private scrollToTop = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToTop();\n }\n };\n\n private scrollToBottom = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToBottom();\n }\n };\n\n private scroll = (nextIndex: number) => {\n switch (nextIndex) {\n case 0:\n this.scrollToTop?.();\n break;\n case this.menuNavigation.items.length - 1:\n this.scrollToBottom?.();\n break;\n default:\n this.scrollToSelected?.();\n }\n };\n\n private move(step: number) {\n if (this.unmounted) {\n // NOTE workaround, because `ComboBox` call `process.nextTick` in reducer\n return;\n }\n const nextIndex = this.menuNavigation.move(step, this.getProps().cyclicSelection);\n this.scroll(nextIndex);\n }\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isNonNullable).length;\n }\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>): void => {\n if (typeof this.props.onKeyDown === 'function') {\n this.props.onKeyDown(event);\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (isKeyArrowUp(event)) {\n event.preventDefault();\n this.up();\n } else if (isKeyArrowDown(event)) {\n event.preventDefault();\n this.down();\n } else if (isKeyEnter(event)) {\n this.menuNavigation.select(event);\n }\n };\n\n private getStyle = (props: MenuProps): CSSProperties => {\n if (props.align === 'right') {\n return {\n maxWidth: props.width,\n minWidth: props.width,\n maxHeight: this.state.maxHeight,\n };\n }\n\n return {\n width: props.width,\n maxHeight: this.state.maxHeight,\n };\n };\n\n private handleScrollStateChange = (scrollState: ScrollContainerScrollStateY) => {\n if (this.state.scrollState !== scrollState) {\n this.setState({ scrollState });\n }\n };\n\n private setEnableIconPadding = (isIconPaddingEnabled: boolean) => {\n !this.getProps().preventIconsOffset && this.setState({ enableIconPadding: isIconPaddingEnabled });\n };\n}\n\nfunction childrenToArray(children: React.ReactNode): React.ReactNode[] {\n const ret: React.ReactNode[] = [];\n // Use forEach instead of map to avoid cloning for key unifying.\n React.Children.forEach(children, (child) => {\n ret.push(child);\n });\n return ret;\n}\n\nconst getAlignRightClass = (props: MenuProps, cx: Emotion['cx'], styles: ReturnType<typeof getStyles>) => {\n if (props.align === 'right') {\n return cx(styles.alignRight());\n }\n\n return null;\n};\n"]}
1
+ {"version":3,"file":"Menu.js","sourceRoot":"","sources":["Menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { CSSProperties, HTMLAttributes } from 'react';\nimport React from 'react';\n\nimport type { MenuItem } from '../../components/MenuItem/index.js';\nimport { MenuItemDataTids } from '../../components/MenuItem/index.js';\nimport { MenuSeparator } from '../../components/MenuSeparator/index.js';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator.js';\nimport { ScrollContainer } from '../../components/ScrollContainer/index.js';\nimport type { ScrollContainerScrollStateY } from '../../components/ScrollContainer/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { getDOMRect } from '../../lib/dom/getDOMRect.js';\nimport { scrollYCenterIntoNearestScrollable } from '../../lib/dom/scrollYCenterIntoNearestScrollable.js';\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter } from '../../lib/events/keyboard/identifiers.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { isBrowser } from '../../lib/globalObject.js';\nimport { isInstanceOf } from '../../lib/isInstanceOf.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { getRootNode, rootNode } from '../../lib/rootNode/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory.js';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers.js';\nimport { isNonNullable } from '../../lib/utils.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport type { CommonProps } from '../CommonWrapper/index.js';\nimport { CommonWrapper } from '../CommonWrapper/index.js';\nimport { getStyles } from './Menu.styles.js';\nimport { MenuContext } from './MenuContext.js';\nimport { MenuNavigation } from './MenuNavigation.js';\n\nexport interface MenuProps extends CommonProps, Pick<HTMLAttributes<HTMLDivElement>, 'id'> {\n children: React.ReactNode;\n hasMargin?: boolean;\n /**\n * Максимальная высота применяется только для скролл контейнера\n *\n * Высота `header` и `footer` в нее не включены\n */\n maxHeight?: number | string;\n onItemClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n width?: number | string;\n preventWindowScroll?: boolean;\n /**\n * Отключение кастомного скролла контейнера\n */\n disableScrollContainer?: boolean;\n align?: 'left' | 'right';\n /**\n * Отключает выравнивание текста пунктов меню относительно иконок в других пунктах.\n */\n preventIconsOffset?: boolean;\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n /**\n * Циклический перебор айтемов меню (по-дефолтну включен)\n */\n cyclicSelection?: boolean;\n initialSelectedItemIndex?: number;\n}\n\nexport interface MenuState {\n maxHeight: number | string;\n scrollState: ScrollContainerScrollStateY;\n enableIconPadding: boolean;\n}\n\nexport const MenuDataTids = {\n root: 'Menu__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<\n MenuProps,\n | 'align'\n | 'width'\n | 'hasMargin'\n | 'maxHeight'\n | 'preventWindowScroll'\n | 'cyclicSelection'\n | 'initialSelectedItemIndex'\n >\n>;\n\n@withRenderEnvironment\n@responsiveLayout\n@rootNode\nexport class Menu extends React.PureComponent<MenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'Menu';\n public static displayName = 'Menu';\n\n public static defaultProps: DefaultProps = {\n align: 'left',\n width: 'auto',\n maxHeight: 300,\n hasMargin: true,\n preventWindowScroll: true,\n cyclicSelection: true,\n initialSelectedItemIndex: -1,\n };\n\n private getProps = createPropsGetter(Menu.defaultProps);\n\n public state: MenuState = {\n maxHeight: this.getProps().maxHeight || 'none',\n scrollState: 'top',\n enableIconPadding: false,\n };\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private scrollContainer: Nullable<ScrollContainer>;\n private isMobileLayout!: boolean;\n private unmounted = false;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private header: Nullable<HTMLDivElement>;\n private footer: Nullable<HTMLDivElement>;\n private contentRef = React.createRef<HTMLDivElement>();\n private menuNavigation: MenuNavigation<MenuItem> = new MenuNavigation(this.contentRef, MenuItemDataTids.content);\n\n public componentWillUnmount(): void {\n this.unmounted = true;\n }\n\n public componentDidMount(): void {\n this.setInitialSelection();\n this.calculateMaxHeight();\n this.unmounted = false;\n }\n\n public componentDidUpdate(prevProps: MenuProps): void {\n if (this.shouldRecalculateMaxHeight(prevProps)) {\n this.calculateMaxHeight();\n }\n\n if (prevProps.maxHeight !== this.getProps().maxHeight) {\n this.setState({\n maxHeight: this.props.maxHeight || 'none',\n });\n }\n }\n\n public focus(): void {\n this.focusOnRootElement();\n }\n\n private focusOnRootElement = (): void => {\n const rootNode = getRootNode(this);\n if (isInstanceOf(rootNode, this.globalObject.HTMLElement)) {\n rootNode?.focus();\n }\n };\n\n public render() {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public up() {\n this.move(-1);\n }\n\n /**\n * @public\n */\n public down() {\n this.move(1);\n }\n\n /**\n * @public\n */\n public enter(event: React.SyntheticEvent<HTMLElement>) {\n this.menuNavigation.highlightedItem?.navigate();\n return this.menuNavigation.select(event);\n }\n\n /**\n * @public\n */\n public reset(): void {\n this.menuNavigation.reset();\n }\n\n /**\n * @public\n */\n public hasHighlightedItem() {\n return !!this.menuNavigation.highlightedItem;\n }\n\n public highlightItem(index: number) {\n this.menuNavigation.highlightByIndex(index);\n }\n\n /**\n * Прокручивает список к пункту с `state=\"selected\"` без навигационного highlight.\n * @public\n */\n public scrollToSelectedMenuItem(): void {\n const selectedItem = this.menuNavigation.items.find((item) => item.props.state === 'selected' && item.isEnabled());\n if (!selectedItem) {\n return;\n }\n\n const rootNode = getRootNode(selectedItem);\n if (!isInstanceOf(rootNode, this.globalObject.HTMLElement)) {\n return;\n }\n\n if (this.props.disableScrollContainer) {\n scrollYCenterIntoNearestScrollable(rootNode);\n return;\n }\n\n this.scrollContainer?.scrollTo(rootNode);\n }\n\n private renderMain() {\n if (this.isEmpty()) {\n return null;\n }\n const { hasMargin, maxHeight, preventWindowScroll } = this.getProps();\n\n const offsetY = {\n top: `${this.theme.scrollContainerScrollBarOffsetY}`,\n right: 0,\n bottom: `${this.theme.scrollContainerScrollBarOffsetY}`,\n };\n\n const isMobile = this.isMobileLayout;\n const themeGTE6_1 = isThemeGTE(this.theme, '6.1');\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={MenuDataTids.root}\n className={this.cx(getAlignRightClass(this.props, this.cx, this.styles), {\n [this.styles.root(this.theme)]: true,\n [this.styles.hasMargin(this.theme)]: hasMargin,\n [this.styles.mobileRoot(this.theme)]: isMobile,\n [this.styles.mobileRoot6_1()]: themeGTE6_1 && isMobile,\n [this.styles.shadow(this.theme)]: !isMobile,\n })}\n style={this.getStyle(this.props)}\n id={this.props.id}\n onKeyDown={this.handleKeyDown}\n tabIndex={0}\n >\n {this.props.header && this.renderHeader()}\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={maxHeight}\n preventWindowScroll={preventWindowScroll}\n onScrollStateChangeY={this.handleScrollStateChange}\n disabled={this.props.disableScrollContainer}\n offsetY={offsetY}\n >\n <div\n className={this.cx({\n [this.styles.scrollContainer(this.theme)]: true,\n [this.styles.scrollContainerMobile(this.theme)]: isMobile,\n })}\n ref={this.contentRef}\n >\n <MenuContext.Provider\n value={{\n navigation: this.menuNavigation,\n onItemClick: this.props.onItemClick,\n enableIconPadding: this.state.enableIconPadding,\n setEnableIconPadding: this.setEnableIconPadding,\n }}\n >\n {this.props.children}\n </MenuContext.Provider>\n </div>\n </ScrollContainer>\n {this.props.footer && this.renderFooter()}\n </div>\n </CommonWrapper>\n );\n }\n\n private renderHeader = () => {\n return (\n <div\n className={this.cx({\n [this.styles.wrapper()]: true,\n [this.styles.headerWrapper()]: true,\n })}\n ref={(el) => {\n this.header = el;\n }}\n >\n <div className={this.styles.contentWrapper()}>{this.props.header}</div>\n <div className={this.styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'top' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n </div>\n );\n };\n\n private renderFooter = () => {\n return (\n <div\n className={this.cx({\n [this.styles.wrapper()]: true,\n [this.styles.footerWrapper()]: true,\n })}\n ref={(el) => {\n this.footer = el;\n }}\n >\n <div className={this.styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'bottom' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n <div className={this.styles.contentWrapper()}>{this.props.footer}</div>\n </div>\n );\n };\n\n private renderMenuSeparatorWithNoMargin = () => {\n return (\n <ThemeContext.Provider value={ThemeFactory.create({ menuSeparatorMarginY: '0' }, this.theme)}>\n <MenuSeparator />\n </ThemeContext.Provider>\n );\n };\n\n private setInitialSelection = () => {\n for (let i = this.getProps().initialSelectedItemIndex; i > -1; i--) {\n this.down();\n }\n };\n\n private shouldRecalculateMaxHeight = (prevProps: MenuProps): boolean => {\n const { header, footer, children } = this.props;\n const maxHeight = this.getProps().maxHeight;\n const prevMaxHeight = prevProps.maxHeight;\n const prevHeader = prevProps.header;\n const prevFooter = prevProps.footer;\n const prevChildrenCount = React.Children.count(prevProps.children);\n\n return (\n maxHeight !== prevMaxHeight ||\n footer !== prevFooter ||\n header !== prevHeader ||\n React.Children.count(children) !== prevChildrenCount\n );\n };\n\n private calculateMaxHeight = () => {\n const maxHeight = this.getProps().maxHeight;\n let parsedMaxHeight = maxHeight;\n const rootNode = getRootNode(this);\n\n if (typeof maxHeight === 'string' && isBrowser(this.globalObject) && rootNode) {\n const rootElementMaxHeight = this.globalObject.getComputedStyle?.(rootNode).maxHeight;\n\n if (rootElementMaxHeight) {\n parsedMaxHeight = parseFloat(rootElementMaxHeight);\n }\n }\n\n const calculatedMaxHeight =\n typeof parsedMaxHeight === 'number'\n ? parsedMaxHeight +\n ((this.header && getDOMRect(this.header).height) || 0) +\n ((this.footer && getDOMRect(this.footer).height) || 0)\n : maxHeight;\n\n this.setState({\n maxHeight: calculatedMaxHeight || 'none',\n });\n };\n\n private refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private scrollToSelected = () => {\n const highlightedItem = this.menuNavigation.highlightedItem;\n if (this.scrollContainer && highlightedItem) {\n const rootNode = getRootNode(highlightedItem);\n // TODO: Remove this check once IF-647 is resolved\n if (isInstanceOf(rootNode, this.globalObject.HTMLElement)) {\n this.scrollContainer.scrollTo(rootNode);\n }\n }\n };\n\n private scrollToTop = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToTop();\n }\n };\n\n private scrollToBottom = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToBottom();\n }\n };\n\n private scroll = (nextIndex: number) => {\n switch (nextIndex) {\n case 0:\n this.scrollToTop?.();\n break;\n case this.menuNavigation.items.length - 1:\n this.scrollToBottom?.();\n break;\n default:\n this.scrollToSelected?.();\n }\n };\n\n private move(step: number) {\n if (this.unmounted) {\n // NOTE workaround, because `ComboBox` call `process.nextTick` in reducer\n return;\n }\n const nextIndex = this.menuNavigation.move(step, this.getProps().cyclicSelection);\n this.scroll(nextIndex);\n }\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isNonNullable).length;\n }\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>): void => {\n if (typeof this.props.onKeyDown === 'function') {\n this.props.onKeyDown(event);\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (isKeyArrowUp(event)) {\n event.preventDefault();\n this.up();\n } else if (isKeyArrowDown(event)) {\n event.preventDefault();\n this.down();\n } else if (isKeyEnter(event)) {\n this.menuNavigation.select(event);\n }\n };\n\n private getStyle = (props: MenuProps): CSSProperties => {\n if (props.align === 'right') {\n return {\n maxWidth: props.width,\n minWidth: props.width,\n maxHeight: this.state.maxHeight,\n };\n }\n\n return {\n width: props.width,\n maxHeight: this.state.maxHeight,\n };\n };\n\n private handleScrollStateChange = (scrollState: ScrollContainerScrollStateY) => {\n if (this.state.scrollState !== scrollState) {\n this.setState({ scrollState });\n }\n };\n\n private setEnableIconPadding = (isIconPaddingEnabled: boolean) => {\n !this.getProps().preventIconsOffset && this.setState({ enableIconPadding: isIconPaddingEnabled });\n };\n}\n\nfunction childrenToArray(children: React.ReactNode): React.ReactNode[] {\n const ret: React.ReactNode[] = [];\n // Use forEach instead of map to avoid cloning for key unifying.\n React.Children.forEach(children, (child) => {\n ret.push(child);\n });\n return ret;\n}\n\nconst getAlignRightClass = (props: MenuProps, cx: Emotion['cx'], styles: ReturnType<typeof getStyles>) => {\n if (props.align === 'right') {\n return cx(styles.alignRight());\n }\n\n return null;\n};\n"]}
@@ -5,8 +5,6 @@ export declare enum KeyboardEventCodes {
5
5
  KeyC = "KeyC",
6
6
  KeyV = "KeyV",
7
7
  KeyX = "KeyX",
8
- KeyY = "KeyY",
9
- KeyZ = "KeyZ",
10
8
  Enter = "Enter",
11
9
  Tab = "Tab",
12
10
  CapsLock = "CapsLock",
@@ -6,8 +6,6 @@ export var KeyboardEventCodes;
6
6
  KeyboardEventCodes["KeyC"] = "KeyC";
7
7
  KeyboardEventCodes["KeyV"] = "KeyV";
8
8
  KeyboardEventCodes["KeyX"] = "KeyX";
9
- KeyboardEventCodes["KeyY"] = "KeyY";
10
- KeyboardEventCodes["KeyZ"] = "KeyZ";
11
9
  KeyboardEventCodes["Enter"] = "Enter";
12
10
  KeyboardEventCodes["Tab"] = "Tab";
13
11
  KeyboardEventCodes["CapsLock"] = "CapsLock";
@@ -1 +1 @@
1
- {"version":3,"file":"KeyboardEventCodes.js","sourceRoot":"","sources":["KeyboardEventCodes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,kBA+BX;AA/BD,WAAY,kBAAkB;IAC5B,mDAA6B,CAAA;IAC7B,uCAAiB,CAAA;IACjB,mCAAa,CAAA;IACb,mCAAa,CAAA;IACb,mCAAa,CAAA;IACb,mCAAa,CAAA;IACb,mCAAa,CAAA;IACb,mCAAa,CAAA;IACb,qCAAe,CAAA;IACf,iCAAW,CAAA;IACX,2CAAqB,CAAA;IACrB,qCAAe,CAAA;IACf,qCAAe,CAAA;IACf,6CAAuB,CAAA;IACvB,qCAAe,CAAA;IACf,uCAAiB,CAAA;IACjB,qCAAe,CAAA;IACf,6CAAuB,CAAA;IACvB,qDAA+B,CAAA;IAC/B,qCAAe,CAAA;IACf,mCAAa,CAAA;IACb,iCAAW,CAAA;IACX,uCAAiB,CAAA;IACjB,uCAAiB,CAAA;IACjB,uCAAiB,CAAA;IACjB,2CAAqB,CAAA;IACrB,mDAA6B,CAAA;IAC7B,uDAAiC,CAAA;IACjC,qDAA+B,CAAA;IAC/B,iDAA2B,CAAA;AAC7B,CAAC,EA/BW,kBAAkB,KAAlB,kBAAkB,QA+B7B","sourcesContent":["export enum KeyboardEventCodes {\n Unidentified = 'Unidentified',\n Escape = 'Escape',\n KeyA = 'KeyA',\n KeyC = 'KeyC',\n KeyV = 'KeyV',\n KeyX = 'KeyX',\n KeyY = 'KeyY',\n KeyZ = 'KeyZ',\n Enter = 'Enter',\n Tab = 'Tab',\n CapsLock = 'CapsLock',\n Minus = 'Minus',\n Equal = 'Equal',\n Backspace = 'Backspace',\n Comma = 'Comma',\n Period = 'Period',\n Slash = 'Slash',\n Backslash = 'Backslash',\n IntlBackslash = 'IntlBackslash',\n Space = 'Space',\n Home = 'Home',\n End = 'End',\n Insert = 'Insert',\n Delete = 'Delete',\n PageUp = 'PageUp',\n PageDown = 'PageDown',\n NumpadDivide = 'NumpadDivide',\n NumpadSubtract = 'NumpadSubtract',\n NumpadDecimal = 'NumpadDecimal',\n NumpadEnter = 'NumpadEnter',\n}\n"]}
1
+ {"version":3,"file":"KeyboardEventCodes.js","sourceRoot":"","sources":["KeyboardEventCodes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,kBA6BX;AA7BD,WAAY,kBAAkB;IAC5B,mDAA6B,CAAA;IAC7B,uCAAiB,CAAA;IACjB,mCAAa,CAAA;IACb,mCAAa,CAAA;IACb,mCAAa,CAAA;IACb,mCAAa,CAAA;IACb,qCAAe,CAAA;IACf,iCAAW,CAAA;IACX,2CAAqB,CAAA;IACrB,qCAAe,CAAA;IACf,qCAAe,CAAA;IACf,6CAAuB,CAAA;IACvB,qCAAe,CAAA;IACf,uCAAiB,CAAA;IACjB,qCAAe,CAAA;IACf,6CAAuB,CAAA;IACvB,qDAA+B,CAAA;IAC/B,qCAAe,CAAA;IACf,mCAAa,CAAA;IACb,iCAAW,CAAA;IACX,uCAAiB,CAAA;IACjB,uCAAiB,CAAA;IACjB,uCAAiB,CAAA;IACjB,2CAAqB,CAAA;IACrB,mDAA6B,CAAA;IAC7B,uDAAiC,CAAA;IACjC,qDAA+B,CAAA;IAC/B,iDAA2B,CAAA;AAC7B,CAAC,EA7BW,kBAAkB,KAAlB,kBAAkB,QA6B7B","sourcesContent":["export enum KeyboardEventCodes {\n Unidentified = 'Unidentified',\n Escape = 'Escape',\n KeyA = 'KeyA',\n KeyC = 'KeyC',\n KeyV = 'KeyV',\n KeyX = 'KeyX',\n Enter = 'Enter',\n Tab = 'Tab',\n CapsLock = 'CapsLock',\n Minus = 'Minus',\n Equal = 'Equal',\n Backspace = 'Backspace',\n Comma = 'Comma',\n Period = 'Period',\n Slash = 'Slash',\n Backslash = 'Backslash',\n IntlBackslash = 'IntlBackslash',\n Space = 'Space',\n Home = 'Home',\n End = 'End',\n Insert = 'Insert',\n Delete = 'Delete',\n PageUp = 'PageUp',\n PageDown = 'PageDown',\n NumpadDivide = 'NumpadDivide',\n NumpadSubtract = 'NumpadSubtract',\n NumpadDecimal = 'NumpadDecimal',\n NumpadEnter = 'NumpadEnter',\n}\n"]}
@@ -21,8 +21,6 @@ export var KeyboardMapKeys = (_a = {},
21
21
  _a[Codes.KeyC] = [[67, STANDARD]],
22
22
  _a[Codes.KeyV] = [[86, STANDARD]],
23
23
  _a[Codes.KeyX] = [[88, STANDARD]],
24
- _a[Codes.KeyY] = [[89, STANDARD]],
25
- _a[Codes.KeyZ] = [[90, STANDARD]],
26
24
  _a[Codes.NumpadDecimal] = [
27
25
  [110, NUMPAD],
28
26
  [46, NUMPAD],
@@ -1 +1 @@
1
- {"version":3,"file":"KeyboardMapKeys.js","sourceRoot":"","sources":["KeyboardMapKeys.ts"],"names":[],"mappings":"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","sourcesContent":["import { KeyboardEventCodes as Codes } from './KeyboardEventCodes.js';\n\nexport type Location = number;\nexport type KeyCode = number;\nexport type KeyboardKey = [KeyCode, Location];\n\nconst STANDARD = 0; //KeyboardEvent.DOM_KEY_LOCATION_STANDARD;\nconst NUMPAD = 3; //KeyboardEvent.DOM_KEY_LOCATION_NUMPAD;\n\nexport const KeyboardMapKeys: { [code in Codes]: KeyboardKey[] } = {\n [Codes.Unidentified]: [[0, 0]],\n [Codes.End]: [[35, STANDARD]],\n [Codes.Escape]: [[27, STANDARD]],\n [Codes.Equal]: [[187, STANDARD]],\n [Codes.Backspace]: [[8, STANDARD]],\n [Codes.Enter]: [[13, STANDARD]],\n [Codes.NumpadEnter]: [[13, NUMPAD]],\n [Codes.Home]: [[36, STANDARD]],\n [Codes.Delete]: [[46, STANDARD]],\n [Codes.Insert]: [[45, STANDARD]],\n [Codes.PageUp]: [[33, STANDARD]],\n [Codes.PageDown]: [[34, STANDARD]],\n [Codes.Tab]: [[9, STANDARD]],\n [Codes.CapsLock]: [[20, STANDARD]],\n [Codes.KeyA]: [[65, STANDARD]],\n [Codes.KeyC]: [[67, STANDARD]],\n [Codes.KeyV]: [[86, STANDARD]],\n [Codes.KeyX]: [[88, STANDARD]],\n [Codes.KeyY]: [[89, STANDARD]],\n [Codes.KeyZ]: [[90, STANDARD]],\n [Codes.NumpadDecimal]: [\n [110, NUMPAD],\n [46, NUMPAD],\n ],\n [Codes.NumpadSubtract]: [[109, NUMPAD]],\n [Codes.NumpadDivide]: [[111, NUMPAD]],\n [Codes.Comma]: [[188, STANDARD]],\n [Codes.Minus]: [[189, STANDARD]],\n [Codes.Period]: [[190, STANDARD]],\n [Codes.Slash]: [[191, STANDARD]],\n [Codes.Backslash]: [[220, STANDARD]],\n [Codes.IntlBackslash]: [[226, STANDARD]],\n [Codes.Space]: [[32, STANDARD]],\n};\n"]}
1
+ {"version":3,"file":"KeyboardMapKeys.js","sourceRoot":"","sources":["KeyboardMapKeys.ts"],"names":[],"mappings":"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","sourcesContent":["import { KeyboardEventCodes as Codes } from './KeyboardEventCodes.js';\n\nexport type Location = number;\nexport type KeyCode = number;\nexport type KeyboardKey = [KeyCode, Location];\n\nconst STANDARD = 0; //KeyboardEvent.DOM_KEY_LOCATION_STANDARD;\nconst NUMPAD = 3; //KeyboardEvent.DOM_KEY_LOCATION_NUMPAD;\n\nexport const KeyboardMapKeys: { [code in Codes]: KeyboardKey[] } = {\n [Codes.Unidentified]: [[0, 0]],\n [Codes.End]: [[35, STANDARD]],\n [Codes.Escape]: [[27, STANDARD]],\n [Codes.Equal]: [[187, STANDARD]],\n [Codes.Backspace]: [[8, STANDARD]],\n [Codes.Enter]: [[13, STANDARD]],\n [Codes.NumpadEnter]: [[13, NUMPAD]],\n [Codes.Home]: [[36, STANDARD]],\n [Codes.Delete]: [[46, STANDARD]],\n [Codes.Insert]: [[45, STANDARD]],\n [Codes.PageUp]: [[33, STANDARD]],\n [Codes.PageDown]: [[34, STANDARD]],\n [Codes.Tab]: [[9, STANDARD]],\n [Codes.CapsLock]: [[20, STANDARD]],\n [Codes.KeyA]: [[65, STANDARD]],\n [Codes.KeyC]: [[67, STANDARD]],\n [Codes.KeyV]: [[86, STANDARD]],\n [Codes.KeyX]: [[88, STANDARD]],\n [Codes.NumpadDecimal]: [\n [110, NUMPAD],\n [46, NUMPAD],\n ],\n [Codes.NumpadSubtract]: [[109, NUMPAD]],\n [Codes.NumpadDivide]: [[111, NUMPAD]],\n [Codes.Comma]: [[188, STANDARD]],\n [Codes.Minus]: [[189, STANDARD]],\n [Codes.Period]: [[190, STANDARD]],\n [Codes.Slash]: [[191, STANDARD]],\n [Codes.Backslash]: [[220, STANDARD]],\n [Codes.IntlBackslash]: [[226, STANDARD]],\n [Codes.Space]: [[32, STANDARD]],\n};\n"]}
@@ -6,8 +6,6 @@ export declare const isShortcutCopy: IS;
6
6
  export declare const isShortcutPaste: IS;
7
7
  export declare const isShortcutCut: IS;
8
8
  export declare const isShortcutSelectAll: IS;
9
- export declare const isShortcutUndo: IS;
10
- export declare const isShortcutRedo: IS;
11
9
  export declare const isShortcutJumpCaret: IS;
12
10
  export declare const isKeyEscape: IS;
13
11
  export declare const isKeyHome: IS;
@@ -17,12 +17,6 @@ export var isShortcutCut = function (e) {
17
17
  e.key === 'Cut';
18
18
  };
19
19
  export var isShortcutSelectAll = function (e) { return (isMac ? e.metaKey : e.ctrlKey) && extractCode(e) === Codes.KeyA; };
20
- export var isShortcutUndo = function (e) {
21
- return (isMac ? e.metaKey : e.ctrlKey) && !e.shiftKey && extractCode(e) === Codes.KeyZ;
22
- };
23
- export var isShortcutRedo = function (e) {
24
- return (isMac ? e.metaKey : e.ctrlKey) && (extractCode(e) === Codes.KeyY || (e.shiftKey && extractCode(e) === Codes.KeyZ));
25
- };
26
20
  export var isShortcutJumpCaret = function (e) { return (isMac ? e.altKey : e.ctrlKey) && isKeyArrowHorizontal(e); };
27
21
  export var isKeyEscape = function (e) { return e.key === 'Escape' || e.key === 'Esc'; };
28
22
  export var isKeyHome = function (e) { return e.key === 'Home'; };
@@ -1 +1 @@
1
- {"version":3,"file":"identifiers.js","sourceRoot":"","sources":["identifiers.ts"],"names":[],"mappings":"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","sourcesContent":["import { isMac } from '../../client.js';\nimport { extractCode } from './extractCode.js';\nimport { KeyboardEventCodes as Codes } from './KeyboardEventCodes.js';\n\ntype E = React.KeyboardEvent<HTMLElement> | KeyboardEvent;\ntype IS = (e: E) => boolean;\ntype ISMod = (is?: IS) => IS;\ntype ISSome = (...is: IS[]) => IS;\n\nexport const isShortcutCopy: IS = (e) =>\n ((isMac ? e.metaKey : e.ctrlKey) && extractCode(e) === Codes.KeyC) ||\n (!isMac && e.ctrlKey && isKeyInsert(e)) ||\n e.key === 'Copy';\n\nexport const isShortcutPaste: IS = (e) =>\n ((isMac ? e.metaKey : e.ctrlKey) && extractCode(e) === Codes.KeyV) ||\n (!isMac && e.shiftKey && isKeyInsert(e)) ||\n e.key === 'Paste';\n\nexport const isShortcutCut: IS = (e) =>\n ((isMac ? e.metaKey : e.ctrlKey) && extractCode(e) === Codes.KeyX) ||\n (!isMac && e.shiftKey && isKeyDelete(e)) ||\n e.key === 'Cut';\n\nexport const isShortcutSelectAll: IS = (e) => (isMac ? e.metaKey : e.ctrlKey) && extractCode(e) === Codes.KeyA;\n\nexport const isShortcutUndo: IS = (e) =>\n (isMac ? e.metaKey : e.ctrlKey) && !e.shiftKey && extractCode(e) === Codes.KeyZ;\n\nexport const isShortcutRedo: IS = (e) =>\n (isMac ? e.metaKey : e.ctrlKey) && (extractCode(e) === Codes.KeyY || (e.shiftKey && extractCode(e) === Codes.KeyZ));\n\nexport const isShortcutJumpCaret: IS = (e) => (isMac ? e.altKey : e.ctrlKey) && isKeyArrowHorizontal(e);\n\nexport const isKeyEscape: IS = (e) => e.key === 'Escape' || e.key === 'Esc';\nexport const isKeyHome: IS = (e) => e.key === 'Home';\nexport const isKeyEnd: IS = (e) => e.key === 'End';\nexport const isKeyMeta: IS = (e) => e.key === 'Meta' || e.key === 'Win';\nexport const isKeyControl: IS = (e) => e.key === 'Control';\nexport const isKeyShift: IS = (e) => e.key === 'Shift';\nexport const isKeyAlt: IS = (e) => e.key === 'Alt';\nexport const isKeyDelete: IS = (e) => e.key === 'Delete' || e.key === 'Del';\nexport const isKeyBackspace: IS = (e) => e.key === 'Backspace';\nexport const isKeyCapsLock: IS = (e) => e.key === 'CapsLock';\nexport const isKeyInsert: IS = (e) => e.key === 'Insert';\nexport const isKeyTab: IS = (e) => e.key === 'Tab';\nexport const isKeyEnter: IS = (e) => e.key === 'Enter';\nexport const isKeyArrowUp: IS = (e) => e.key === 'ArrowUp' || e.key === 'Up';\nexport const isKeyArrowRight: IS = (e) => e.key === 'ArrowRight' || e.key === 'Right';\nexport const isKeyArrowDown: IS = (e) => e.key === 'ArrowDown' || e.key === 'Down';\nexport const isKeyArrowLeft: IS = (e) => e.key === 'ArrowLeft' || e.key === 'Left';\nexport const isKeySpace: IS = (e) => e.key === ' ' || e.key === 'Spacebar';\nexport const isKeyComma: IS = (e) => e.key === ',';\n\nexport const isCodeMinus: IS = (e) => extractCode(e) === Codes.Minus;\nexport const isCodeNumpadDecimal: IS = (e) => extractCode(e) === Codes.NumpadDecimal;\nexport const isCodeNumpadDivide: IS = (e) => extractCode(e) === Codes.NumpadDivide;\nexport const isCodeNumpadSubtract: IS = (e) => extractCode(e) === Codes.NumpadSubtract;\nexport const isCodeSlash: IS = (e) => extractCode(e) === Codes.Slash;\nexport const isCodeBackslash: IS = (e) => extractCode(e) === Codes.Backslash;\nexport const isCodeIntlBackslash: IS = (e) => extractCode(e) === Codes.IntlBackslash;\nexport const isCodeComma: IS = (e) => extractCode(e) === Codes.Comma;\nexport const isCodePeriod: IS = (e) => extractCode(e) === Codes.Period;\n\nexport const isKeyArrowHorizontal: IS = (e) => isKeyArrowRight(e) || isKeyArrowLeft(e);\nexport const isKeyArrowVertical: IS = (e) => isKeyArrowUp(e) || isKeyArrowDown(e);\nexport const isKeyArrow: IS = (e) => isKeyArrowHorizontal(e) || isKeyArrowVertical(e);\nexport const isKeyNumber: IS = (e) => /^\\d+$/.test(e.key);\nexport const isKeyChar: IS = (e) => e.key.trim().length === 1;\nexport const isKeyFs: IS = (e) => /^(?:F[1-9]|F1[0-2]|Soft[1-4])$/.test(e.key);\n\nexport const isModified: ISMod = (is) => (e) =>\n (e.shiftKey || e.metaKey || e.ctrlKey || e.altKey) && (is ? is(e) : true);\nexport const isUnmodified: ISMod = (is) => (e) => !isModified()(e) && (is ? is(e) : true);\nexport const isModShift: ISMod = (is) => (e) => e.shiftKey && (is ? is(e) : true);\nexport const isModCtrl: ISMod = (is) => (e) => e.ctrlKey && (is ? is(e) : true);\nexport const isModAlt: ISMod = (is) => (e) => e.altKey && (is ? is(e) : true);\n\nexport const someKeys: ISSome =\n (...iss) =>\n (e) =>\n iss.some((is) => is(e));\n"]}
1
+ {"version":3,"file":"identifiers.js","sourceRoot":"","sources":["identifiers.ts"],"names":[],"mappings":"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","sourcesContent":["import { isMac } from '../../client.js';\nimport { extractCode } from './extractCode.js';\nimport { KeyboardEventCodes as Codes } from './KeyboardEventCodes.js';\n\ntype E = React.KeyboardEvent<HTMLElement> | KeyboardEvent;\ntype IS = (e: E) => boolean;\ntype ISMod = (is?: IS) => IS;\ntype ISSome = (...is: IS[]) => IS;\n\nexport const isShortcutCopy: IS = (e) =>\n ((isMac ? e.metaKey : e.ctrlKey) && extractCode(e) === Codes.KeyC) ||\n (!isMac && e.ctrlKey && isKeyInsert(e)) ||\n e.key === 'Copy';\n\nexport const isShortcutPaste: IS = (e) =>\n ((isMac ? e.metaKey : e.ctrlKey) && extractCode(e) === Codes.KeyV) ||\n (!isMac && e.shiftKey && isKeyInsert(e)) ||\n e.key === 'Paste';\n\nexport const isShortcutCut: IS = (e) =>\n ((isMac ? e.metaKey : e.ctrlKey) && extractCode(e) === Codes.KeyX) ||\n (!isMac && e.shiftKey && isKeyDelete(e)) ||\n e.key === 'Cut';\n\nexport const isShortcutSelectAll: IS = (e) => (isMac ? e.metaKey : e.ctrlKey) && extractCode(e) === Codes.KeyA;\n\nexport const isShortcutJumpCaret: IS = (e) => (isMac ? e.altKey : e.ctrlKey) && isKeyArrowHorizontal(e);\n\nexport const isKeyEscape: IS = (e) => e.key === 'Escape' || e.key === 'Esc';\nexport const isKeyHome: IS = (e) => e.key === 'Home';\nexport const isKeyEnd: IS = (e) => e.key === 'End';\nexport const isKeyMeta: IS = (e) => e.key === 'Meta' || e.key === 'Win';\nexport const isKeyControl: IS = (e) => e.key === 'Control';\nexport const isKeyShift: IS = (e) => e.key === 'Shift';\nexport const isKeyAlt: IS = (e) => e.key === 'Alt';\nexport const isKeyDelete: IS = (e) => e.key === 'Delete' || e.key === 'Del';\nexport const isKeyBackspace: IS = (e) => e.key === 'Backspace';\nexport const isKeyCapsLock: IS = (e) => e.key === 'CapsLock';\nexport const isKeyInsert: IS = (e) => e.key === 'Insert';\nexport const isKeyTab: IS = (e) => e.key === 'Tab';\nexport const isKeyEnter: IS = (e) => e.key === 'Enter';\nexport const isKeyArrowUp: IS = (e) => e.key === 'ArrowUp' || e.key === 'Up';\nexport const isKeyArrowRight: IS = (e) => e.key === 'ArrowRight' || e.key === 'Right';\nexport const isKeyArrowDown: IS = (e) => e.key === 'ArrowDown' || e.key === 'Down';\nexport const isKeyArrowLeft: IS = (e) => e.key === 'ArrowLeft' || e.key === 'Left';\nexport const isKeySpace: IS = (e) => e.key === ' ' || e.key === 'Spacebar';\nexport const isKeyComma: IS = (e) => e.key === ',';\n\nexport const isCodeMinus: IS = (e) => extractCode(e) === Codes.Minus;\nexport const isCodeNumpadDecimal: IS = (e) => extractCode(e) === Codes.NumpadDecimal;\nexport const isCodeNumpadDivide: IS = (e) => extractCode(e) === Codes.NumpadDivide;\nexport const isCodeNumpadSubtract: IS = (e) => extractCode(e) === Codes.NumpadSubtract;\nexport const isCodeSlash: IS = (e) => extractCode(e) === Codes.Slash;\nexport const isCodeBackslash: IS = (e) => extractCode(e) === Codes.Backslash;\nexport const isCodeIntlBackslash: IS = (e) => extractCode(e) === Codes.IntlBackslash;\nexport const isCodeComma: IS = (e) => extractCode(e) === Codes.Comma;\nexport const isCodePeriod: IS = (e) => extractCode(e) === Codes.Period;\n\nexport const isKeyArrowHorizontal: IS = (e) => isKeyArrowRight(e) || isKeyArrowLeft(e);\nexport const isKeyArrowVertical: IS = (e) => isKeyArrowUp(e) || isKeyArrowDown(e);\nexport const isKeyArrow: IS = (e) => isKeyArrowHorizontal(e) || isKeyArrowVertical(e);\nexport const isKeyNumber: IS = (e) => /^\\d+$/.test(e.key);\nexport const isKeyChar: IS = (e) => e.key.trim().length === 1;\nexport const isKeyFs: IS = (e) => /^(?:F[1-9]|F1[0-2]|Soft[1-4])$/.test(e.key);\n\nexport const isModified: ISMod = (is) => (e) =>\n (e.shiftKey || e.metaKey || e.ctrlKey || e.altKey) && (is ? is(e) : true);\nexport const isUnmodified: ISMod = (is) => (e) => !isModified()(e) && (is ? is(e) : true);\nexport const isModShift: ISMod = (is) => (e) => e.shiftKey && (is ? is(e) : true);\nexport const isModCtrl: ISMod = (is) => (e) => e.ctrlKey && (is ? is(e) : true);\nexport const isModAlt: ISMod = (is) => (e) => e.altKey && (is ? is(e) : true);\n\nexport const someKeys: ISSome =\n (...iss) =>\n (e) =>\n iss.some((is) => is(e));\n"]}
@@ -1,6 +1,5 @@
1
1
  import React from 'react';
2
2
  export interface ReactUIFeatureFlags {
3
- maskedInputUseLegacyBehavior?: boolean;
4
3
  selectAutoScrollToSelectedItem?: boolean;
5
4
  }
6
5
  export declare const reactUIFeatureFlagsDefault: ReactUIFeatureFlags;
@@ -1,7 +1,6 @@
1
1
  import React from 'react';
2
2
  export var reactUIFeatureFlagsDefault = {
3
3
  selectAutoScrollToSelectedItem: false,
4
- maskedInputUseLegacyBehavior: false,
5
4
  };
6
5
  export var ReactUIFeatureFlagsContext = React.createContext(reactUIFeatureFlagsDefault);
7
6
  ReactUIFeatureFlagsContext.displayName = 'ReactUIFeatureFlagsContext';
@@ -1 +1 @@
1
- {"version":3,"file":"ReactUIFeatureFlagsContext.js","sourceRoot":"","sources":["ReactUIFeatureFlagsContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,MAAM,CAAC,IAAM,0BAA0B,GAAwB;IAC7D,8BAA8B,EAAE,KAAK;IACrC,4BAA4B,EAAE,KAAK;CACpC,CAAC;AAEF,MAAM,CAAC,IAAM,0BAA0B,GAAG,KAAK,CAAC,aAAa,CAAsB,0BAA0B,CAAC,CAAC;AAE/G,0BAA0B,CAAC,WAAW,GAAG,4BAA4B,CAAC;AACtE,0BAA0B,CAAC,mBAAmB,GAAG,4BAA4B,CAAC","sourcesContent":["import React from 'react';\n\nexport interface ReactUIFeatureFlags {\n maskedInputUseLegacyBehavior?: boolean;\n selectAutoScrollToSelectedItem?: boolean;\n}\n\nexport const reactUIFeatureFlagsDefault: ReactUIFeatureFlags = {\n selectAutoScrollToSelectedItem: false,\n maskedInputUseLegacyBehavior: false,\n};\n\nexport const ReactUIFeatureFlagsContext = React.createContext<ReactUIFeatureFlags>(reactUIFeatureFlagsDefault);\n\nReactUIFeatureFlagsContext.displayName = 'ReactUIFeatureFlagsContext';\nReactUIFeatureFlagsContext.__KONTUR_REACT_UI__ = 'ReactUIFeatureFlagsContext';\n"]}
1
+ {"version":3,"file":"ReactUIFeatureFlagsContext.js","sourceRoot":"","sources":["ReactUIFeatureFlagsContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,MAAM,CAAC,IAAM,0BAA0B,GAAwB;IAC7D,8BAA8B,EAAE,KAAK;CACtC,CAAC;AAEF,MAAM,CAAC,IAAM,0BAA0B,GAAG,KAAK,CAAC,aAAa,CAAsB,0BAA0B,CAAC,CAAC;AAE/G,0BAA0B,CAAC,WAAW,GAAG,4BAA4B,CAAC;AACtE,0BAA0B,CAAC,mBAAmB,GAAG,4BAA4B,CAAC","sourcesContent":["import React from 'react';\n\nexport interface ReactUIFeatureFlags {\n selectAutoScrollToSelectedItem?: boolean;\n}\n\nexport const reactUIFeatureFlagsDefault: ReactUIFeatureFlags = {\n selectAutoScrollToSelectedItem: false,\n};\n\nexport const ReactUIFeatureFlagsContext = React.createContext<ReactUIFeatureFlags>(reactUIFeatureFlagsDefault);\n\nReactUIFeatureFlagsContext.displayName = 'ReactUIFeatureFlagsContext';\nReactUIFeatureFlagsContext.__KONTUR_REACT_UI__ = 'ReactUIFeatureFlagsContext';\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skbkontur/react-ui",
3
- "version": "6.1.6-fe902.0",
3
+ "version": "6.1.6",
4
4
  "description": "UI Components",
5
5
  "homepage": "https://tech.skbkontur.ru/kontur-ui",
6
6
  "bugs": {
@@ -82,9 +82,6 @@
82
82
  "./components/MaskedInput/ColorableInputElement/ColorableInputElement": "./components/MaskedInput/ColorableInputElement/ColorableInputElement.js",
83
83
  "./components/MaskedInput": "./components/MaskedInput/index.js",
84
84
  "./components/MaskedInput/MaskedInput": "./components/MaskedInput/MaskedInput.js",
85
- "./components/MaskedInputV2": "./components/MaskedInputV2/index.js",
86
- "./components/MaskedInputV2/react-imask/imask": "./components/MaskedInputV2/react-imask/imask/index.js",
87
- "./components/MaskedInputV2/react-imask": "./components/MaskedInputV2/react-imask/index.js",
88
85
  "./components/MenuFooter": "./components/MenuFooter/index.js",
89
86
  "./components/MenuFooter/MenuFooter": "./components/MenuFooter/MenuFooter.js",
90
87
  "./components/MenuHeader": "./components/MenuHeader/index.js",
@@ -1,3 +0,0 @@
1
- import type { Input } from '../Input/index.js';
2
- import type { MaskedInputProps } from './MaskedInput.js';
3
- export declare const MaskedInputLegacy: import("../../lib/forwardRefAndName.js").ReactUIComponentWithRef<Input, MaskedInputProps> & Record<never, never>;
@@ -1,142 +0,0 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- var __rest = (this && this.__rest) || function (s, e) {
13
- var t = {};
14
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
- t[p] = s[p];
16
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
- t[p[i]] = s[p[i]];
20
- }
21
- return t;
22
- };
23
- import React, { useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';
24
- import { isKeyBackspace, isKeyDelete } from '../../lib/events/keyboard/identifiers.js';
25
- import { forwardRefAndName } from '../../lib/forwardRefAndName.js';
26
- import { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';
27
- import { ThemeContext } from '../../lib/theming/ThemeContext.js';
28
- import { Input as InputComponent } from '../Input/index.js';
29
- import { ColorableInputElement } from './ColorableInputElement/index.js';
30
- import { FixedIMaskInput } from './FixedIMaskInput.js';
31
- import { getDefinitions, getMaskChar } from './MaskedInput.helpers.js';
32
- import { getStyles, globalClasses } from './MaskedInput.styles.js';
33
- export var MaskedInputLegacy = forwardRefAndName('MaskedInputLegacy', function MaskedInputLegacy(props, ref) {
34
- var mask = props.mask, maskChar = props.maskChar, formatChars = props.formatChars, _a = props.alwaysShowMask, alwaysShowMask = _a === void 0 ? false : _a, _b = props.colored, colored = _b === void 0 ? true : _b, _c = props.imaskProps, customIMaskProps = _c === void 0 ? {} : _c, _d = props.unmask, unmask = _d === void 0 ? false : _d, onValueChange = props.onValueChange, onUnexpectedInput = props.onUnexpectedInput, onChange = props.onChange, onBeforePasteValue = props.onBeforePasteValue, element = props.element, className = props.className,
35
- // @ts-expect-error: могут передавать игнорируя ошибку
36
- maxLength = props.maxLength, inputProps = __rest(props, ["mask", "maskChar", "formatChars", "alwaysShowMask", "colored", "imaskProps", "unmask", "onValueChange", "onUnexpectedInput", "onChange", "onBeforePasteValue", "element", "className", "maxLength"]);
37
- var theme = useContext(ThemeContext);
38
- var cx = useEmotion().cx;
39
- var styles = useStyles(getStyles);
40
- var inputRef = useRef(null);
41
- var _e = useState(false), focused = _e[0], setFocused = _e[1];
42
- var prevValue = useRef(props.value || String(props.defaultValue) || '');
43
- var prevSelectionStart = useRef(null);
44
- useImperativeHandle(ref, function () {
45
- return inputRef.current &&
46
- Object.assign(inputRef.current, {
47
- selectAll: function () {
48
- var _a, _b;
49
- (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
50
- (_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.delaySelectAll();
51
- },
52
- });
53
- }, []);
54
- useEffect(function () {
55
- var _a;
56
- // Для корректной работы onUnexpectedInput надо знать предыдущий value,
57
- // но imask при монтировании не вызывает onAccept, если value невалиден или laze=false.
58
- // Поэтому актуальный value при монтировании надо получать вручную
59
- if ((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.input) {
60
- prevValue.current = inputRef.current.input.value;
61
- prevSelectionStart.current = inputRef.current.input.selectionStart;
62
- }
63
- }, []);
64
- var imaskProps = getCompatibleIMaskProps();
65
- return (React.createElement(InputComponent, __assign({ ref: inputRef }, inputProps, { onFocus: handleFocus, onBlur: handleBlur, onInput: handleInput, onKeyDown: handleKeyDown, onPaste: handlePaste, className: cx(globalClasses.root, className, styles.root(theme)), element: colored ? (React.createElement(ColorableInputElement, { showOnFocus: false, alwaysShowMask: alwaysShowMask },
66
- React.createElement(FixedIMaskInput, __assign({}, imaskProps, { onAccept: handleAccept })))) : (React.createElement(FixedIMaskInput, __assign({}, imaskProps, { onAccept: handleAccept }))) })));
67
- function handlePaste(event) {
68
- var _a, _b, _c;
69
- if (onBeforePasteValue && onValueChange) {
70
- event.preventDefault();
71
- onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(onBeforePasteValue((_b = (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.getData('text')) !== null && _b !== void 0 ? _b : ''));
72
- }
73
- (_c = props.onPaste) === null || _c === void 0 ? void 0 : _c.call(props, event);
74
- }
75
- function getCompatibleIMaskProps() {
76
- return __assign({ mask: mask.replace(/0/g, '{\\0}'), placeholderChar: getMaskChar(maskChar), definitions: getDefinitions(formatChars),
77
- // FIXME: Должно быть eager=true, но в imask ломается удаление по delete
78
- eager: 'append', overwrite: 'shift', lazy: !alwaysShowMask && (props.disabled || !focused), unmask: unmask }, customIMaskProps);
79
- }
80
- function handleAccept() {
81
- var args = [];
82
- for (var _i = 0; _i < arguments.length; _i++) {
83
- args[_i] = arguments[_i];
84
- }
85
- var value = args[0], e = args[2];
86
- // Метод onAccept может вызываться при монтировании, если не задан проп defaultValue.
87
- // Но нативный input никогда не вызывает onChange при монтировании.
88
- // Наше событие onValueChange в Input вывается в тех же случаях, что и нативный onChange,
89
- // поэтому чтобы сохранить консинстентность будем ориентироваться на наличие аргумента e.
90
- // Он содержит нативное событие, вызвавшее изменение.
91
- e && (onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(value));
92
- !e && (prevValue.current = value);
93
- }
94
- /**
95
- * Отслеживаем неожиданные нажатия
96
- * handleAccept не вызывается когда значение с маской не меняется
97
- * Сначала вызывается handleAccept, затем handleInput
98
- */
99
- function handleInput(e) {
100
- var _a;
101
- var _b = e.currentTarget, value = _b.value, selectionStart = _b.selectionStart;
102
- // При вводе неожиданных символов или удалении каретка может перепрыгивать фиксированные символы.
103
- // Такие случаи не расцениваем как неожиданный ввод, т.к. пользователь может намеренно их вводить.
104
- if (prevValue.current === value && selectionStart === prevSelectionStart.current) {
105
- handleUnexpectedInput(value);
106
- }
107
- prevValue.current = value;
108
- prevSelectionStart.current = selectionStart;
109
- (_a = props.onInput) === null || _a === void 0 ? void 0 : _a.call(props, e);
110
- }
111
- function handleFocus(e) {
112
- var _a, _b;
113
- setFocused(true);
114
- (_a = props.onFocus) === null || _a === void 0 ? void 0 : _a.call(props, e);
115
- // Если value из пропсов отличается от value, которое получит input после обработки,
116
- // то imask будет ставить каретку за последним валидным символом.
117
- props.selectAllOnFocus && ((_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.delaySelectAll());
118
- }
119
- function handleUnexpectedInput(value) {
120
- var _a;
121
- var blink = ((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.blink.bind(inputRef.current)) || (function () { return undefined; });
122
- onUnexpectedInput ? onUnexpectedInput(value, blink) : blink();
123
- }
124
- function handleBlur(e) {
125
- var _a;
126
- setFocused(false);
127
- (_a = props.onBlur) === null || _a === void 0 ? void 0 : _a.call(props, e);
128
- }
129
- function handleKeyDown(e) {
130
- var _a;
131
- var _b = e.currentTarget, value = _b.value, selectionStart = _b.selectionStart, selectionEnd = _b.selectionEnd;
132
- if ((isKeyBackspace(e) && selectionStart === 0 && selectionEnd === 0) ||
133
- (isKeyDelete(e) && prevSelectionStart.current === value.length)) {
134
- // Случаи, когда нажатие клавиш не тригерит `onInput`
135
- handleUnexpectedInput(value);
136
- prevValue.current = e.currentTarget.value;
137
- }
138
- prevSelectionStart.current = selectionStart;
139
- (_a = props.onKeyDown) === null || _a === void 0 ? void 0 : _a.call(props, e);
140
- }
141
- });
142
- //# sourceMappingURL=MaskedInputLegacy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MaskedInputLegacy.js","sourceRoot":"","sources":["MaskedInputLegacy.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { IMaskInputProps } from '@skbkontur/react-imask';\nimport React, { useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport type { Ref } from 'react';\n\nimport { isKeyBackspace, isKeyDelete } from '../../lib/events/keyboard/identifiers.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { Input } from '../Input/index.js';\nimport { Input as InputComponent } from '../Input/index.js';\nimport { ColorableInputElement } from './ColorableInputElement/index.js';\nimport { FixedIMaskInput } from './FixedIMaskInput.js';\nimport { getDefinitions, getMaskChar } from './MaskedInput.helpers.js';\nimport type { MaskedInputProps } from './MaskedInput.js';\nimport { getStyles, globalClasses } from './MaskedInput.styles.js';\n\nexport const MaskedInputLegacy = forwardRefAndName(\n 'MaskedInputLegacy',\n function MaskedInputLegacy(props: MaskedInputProps, ref: Ref<Input | null>) {\n const {\n mask,\n maskChar,\n formatChars,\n alwaysShowMask = false,\n colored = true,\n imaskProps: customIMaskProps = {},\n unmask = false,\n onValueChange,\n onUnexpectedInput,\n onChange,\n onBeforePasteValue,\n element,\n className,\n // @ts-expect-error: могут передавать игнорируя ошибку\n maxLength,\n ...inputProps\n } = props;\n const theme = useContext(ThemeContext);\n const { cx } = useEmotion();\n const styles = useStyles(getStyles);\n\n const inputRef = useRef<Input>(null);\n\n const [focused, setFocused] = useState(false);\n const prevValue = useRef<string>(props.value || String(props.defaultValue) || '');\n const prevSelectionStart = useRef<number | null>(null);\n\n useImperativeHandle<typeof inputRef.current, typeof inputRef.current>(\n ref,\n () =>\n inputRef.current &&\n Object.assign(inputRef.current, {\n selectAll: () => {\n inputRef.current?.focus();\n inputRef.current?.delaySelectAll();\n },\n }),\n [],\n );\n\n useEffect(() => {\n // Для корректной работы onUnexpectedInput надо знать предыдущий value,\n // но imask при монтировании не вызывает onAccept, если value невалиден или laze=false.\n // Поэтому актуальный value при монтировании надо получать вручную\n if (inputRef.current?.input) {\n prevValue.current = inputRef.current.input.value;\n prevSelectionStart.current = inputRef.current.input.selectionStart;\n }\n }, []);\n\n const imaskProps = getCompatibleIMaskProps();\n\n return (\n <InputComponent\n ref={inputRef}\n {...inputProps}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onInput={handleInput}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n className={cx(globalClasses.root, className, styles.root(theme))}\n element={\n colored ? (\n <ColorableInputElement showOnFocus={false} alwaysShowMask={alwaysShowMask}>\n <FixedIMaskInput {...imaskProps} onAccept={handleAccept} />\n </ColorableInputElement>\n ) : (\n <FixedIMaskInput {...imaskProps} onAccept={handleAccept} />\n )\n }\n />\n );\n\n function handlePaste(event: React.ClipboardEvent<HTMLInputElement>) {\n if (onBeforePasteValue && onValueChange) {\n event.preventDefault();\n onValueChange?.(onBeforePasteValue(event.clipboardData?.getData('text') ?? ''));\n }\n\n props.onPaste?.(event);\n }\n\n function getCompatibleIMaskProps(): IMaskInputProps<HTMLInputElement> {\n return {\n mask: mask.replace(/0/g, '{\\\\0}') as any,\n placeholderChar: getMaskChar(maskChar),\n definitions: getDefinitions(formatChars),\n // FIXME: Должно быть eager=true, но в imask ломается удаление по delete\n eager: 'append',\n overwrite: 'shift',\n lazy: !alwaysShowMask && (props.disabled || !focused),\n unmask,\n ...customIMaskProps,\n } as IMaskInputProps<HTMLInputElement>;\n }\n\n function handleAccept(...args: Parameters<Required<IMaskInputProps<HTMLInputElement>>['onAccept']>) {\n const [value, , e] = args;\n\n // Метод onAccept может вызываться при монтировании, если не задан проп defaultValue.\n // Но нативный input никогда не вызывает onChange при монтировании.\n // Наше событие onValueChange в Input вывается в тех же случаях, что и нативный onChange,\n // поэтому чтобы сохранить консинстентность будем ориентироваться на наличие аргумента e.\n // Он содержит нативное событие, вызвавшее изменение.\n e && onValueChange?.(value);\n !e && (prevValue.current = value);\n }\n\n /**\n * Отслеживаем неожиданные нажатия\n * handleAccept не вызывается когда значение с маской не меняется\n * Сначала вызывается handleAccept, затем handleInput\n */\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const { value, selectionStart } = e.currentTarget;\n\n // При вводе неожиданных символов или удалении каретка может перепрыгивать фиксированные символы.\n // Такие случаи не расцениваем как неожиданный ввод, т.к. пользователь может намеренно их вводить.\n if (prevValue.current === value && selectionStart === prevSelectionStart.current) {\n handleUnexpectedInput(value);\n }\n prevValue.current = value;\n prevSelectionStart.current = selectionStart;\n\n props.onInput?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(true);\n props.onFocus?.(e);\n\n // Если value из пропсов отличается от value, которое получит input после обработки,\n // то imask будет ставить каретку за последним валидным символом.\n props.selectAllOnFocus && inputRef.current?.delaySelectAll();\n }\n\n function handleUnexpectedInput(value: string) {\n const blink = inputRef.current?.blink.bind(inputRef.current) || (() => undefined);\n onUnexpectedInput ? onUnexpectedInput(value, blink) : blink();\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(false);\n props.onBlur?.(e);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n const { value, selectionStart, selectionEnd } = e.currentTarget;\n\n if (\n (isKeyBackspace(e) && selectionStart === 0 && selectionEnd === 0) ||\n (isKeyDelete(e) && prevSelectionStart.current === value.length)\n ) {\n // Случаи, когда нажатие клавиш не тригерит `onInput`\n handleUnexpectedInput(value);\n prevValue.current = e.currentTarget.value;\n }\n prevSelectionStart.current = selectionStart;\n\n props.onKeyDown?.(e);\n }\n },\n);\n"]}
@@ -1,62 +0,0 @@
1
- import type { InputProps, InputType } from '../Input/index.js';
2
- import { Input } from '../Input/index.js';
3
- import { getDefinitions, getMaskChar } from './MaskedInputV2.helpers.js';
4
- import type { IMaskInputProps } from './react-imask/mixin.js';
5
- export type MaskedInputV2OnBeforePasteValue = (value: string) => string;
6
- export interface MaskedInputV2MaskedProps {
7
- /** Шаблон ввода, определяющий допустимые символы. */
8
- mask: string;
9
- /** Плейсхолдер, который отображается на месте ещё не введённых пользователем символов.
10
- * @default _ */
11
- maskChar?: string;
12
- /** Словарь правил для настройки маски, где:
13
- * ключ — символ для использования в маске;
14
- * значение — регулярка-правило.
15
- * @default { '9': '[0-9]', 'a': '[A-Za-z]', '*': '[A-Za-z0-9]' } */
16
- formatChars?: Record<string, string>;
17
- /** Всегда показывать символы маски, независимо от фокуса в поле.
18
- * @default false */
19
- alwaysShowMask?: boolean;
20
- /** Событие некорректного ввода.
21
- * Вторым аргументом передаётся метод вспыхивания рамки поля.
22
- *
23
- * Если обработчик не задан, то при событии рамка всегда вспыхивает.
24
- *
25
- * @param value значение поля
26
- * @param blink метод вспыхивания рамки поля
27
- */
28
- onUnexpectedInput?: (value: string, blink: () => void) => void;
29
- /**
30
- * Событие перед вставкой текста в поле.
31
- * Вызывается с аргументом value — текст из буфера, браузерного autofill
32
- * или иной bulk-вставки без clipboard-события.
33
- *
34
- * Обработчик должен вернуть текст — он попадёт в поле.
35
- *
36
- * При `type="tel"` и отсутствии обработчика применяется
37
- * {@link normalizeRussianPhonePaste}.
38
- *
39
- * @param value значение вставки.
40
- */
41
- onBeforePasteValue?: MaskedInputV2OnBeforePasteValue;
42
- /** Убирает из value символы маски, которые пользователь не вводил.
43
- * @default false */
44
- unmask?: boolean;
45
- /** Раскрашивает символы маски.
46
- * @default true
47
- * @ignore */
48
- colored?: boolean;
49
- /** Задает пропсы для компонента `IMaskInput`. Необходимы для юнит-тестов
50
- * @ignore */
51
- imaskProps?: IMaskInputProps<HTMLInputElement>;
52
- }
53
- export type MaskInputType = Exclude<InputType, 'number' | 'date' | 'time' | 'password'>;
54
- export declare const getSafeMaskInputType: (type?: InputType | string) => MaskInputType | undefined;
55
- export interface MaskedInputV2Props extends MaskedInputV2MaskedProps, Omit<InputProps, 'showClearIcon' | 'mask' | 'maxLength' | 'type' | 'alwaysShowMask' | 'onUnexpectedInput' | 'maskChar'> {
56
- type?: MaskInputType;
57
- /** @ignore */
58
- __fromMaskedInputFacade?: boolean;
59
- }
60
- /** @deprecated Используйте {@link MaskedInput}. Для legacy-поведения включите фичафлаг `maskedInputUseLegacyBehavior` в {@link ReactUIFeatureFlagsContext}. */
61
- export declare const MaskedInputV2: import("../../lib/forwardRefAndName.js").ReactUIComponentWithRef<Input, MaskedInputV2Props> & Record<never, never>;
62
- export { getDefinitions, getMaskChar };
@@ -1,9 +0,0 @@
1
- import { type Definitions } from './react-imask/imask/masked/pattern.js';
2
- export declare const DEFAULT_MASK_CHAR = "_";
3
- export declare const DEFINITIONS: Readonly<{
4
- '9': RegExp;
5
- a: RegExp;
6
- '*': RegExp;
7
- }>;
8
- export declare function getDefinitions(formatChars: Record<string, string> | undefined): Definitions;
9
- export declare function getMaskChar(maskChar: string | undefined): string;
@@ -1,17 +0,0 @@
1
- import { isNonNullable } from '../../lib/utils.js';
2
- export var DEFAULT_MASK_CHAR = '_';
3
- export var DEFINITIONS = Object.freeze({ '9': /[0-9]/, a: /[A-Za-z]/, '*': /[A-Za-z0-9]/ });
4
- export function getDefinitions(formatChars) {
5
- if (isNonNullable(formatChars)) {
6
- var chars = {};
7
- for (var key in formatChars) {
8
- chars[key] = new RegExp(formatChars[key]);
9
- }
10
- return chars;
11
- }
12
- return DEFINITIONS;
13
- }
14
- export function getMaskChar(maskChar) {
15
- return !maskChar ? DEFAULT_MASK_CHAR : maskChar;
16
- }
17
- //# sourceMappingURL=MaskedInputV2.helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MaskedInputV2.helpers.js","sourceRoot":"","sources":["MaskedInputV2.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,MAAM,CAAC,IAAM,iBAAiB,GAAG,GAAG,CAAC;AACrC,MAAM,CAAC,IAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC;AAE9F,MAAM,UAAU,cAAc,CAAC,WAA+C;IAC5E,IAAI,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,IAAM,KAAK,GAA2B,EAAE,CAAC;QAEzC,KAAK,IAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAA4B;IACtD,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC;AAClD,CAAC","sourcesContent":["import { isNonNullable } from '../../lib/utils.js';\nimport { type Definitions } from './react-imask/imask/masked/pattern.js';\n\nexport const DEFAULT_MASK_CHAR = '_';\nexport const DEFINITIONS = Object.freeze({ '9': /[0-9]/, a: /[A-Za-z]/, '*': /[A-Za-z0-9]/ });\n\nexport function getDefinitions(formatChars: Record<string, string> | undefined): Definitions {\n if (isNonNullable(formatChars)) {\n const chars: Record<string, RegExp> = {};\n\n for (const key in formatChars) {\n chars[key] = new RegExp(formatChars[key]);\n }\n\n return chars;\n }\n\n return DEFINITIONS;\n}\n\nexport function getMaskChar(maskChar: string | undefined): string {\n return !maskChar ? DEFAULT_MASK_CHAR : maskChar;\n}\n"]}