@skbkontur/react-ui 6.0.8 → 6.1.1-9752b.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (814) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/components/Autocomplete/Autocomplete.js +15 -4
  3. package/components/Autocomplete/Autocomplete.js.map +1 -1
  4. package/components/Autocomplete/Autocomplete.styles.js.map +1 -1
  5. package/components/Autocomplete/getAutocompleteTheme.js.map +1 -1
  6. package/components/Autocomplete/index.js.map +1 -1
  7. package/components/Autocomplete/locale/index.js.map +1 -1
  8. package/components/Autocomplete/locale/locales/en.js.map +1 -1
  9. package/components/Autocomplete/locale/locales/ru.js.map +1 -1
  10. package/components/Autocomplete/locale/types.js.map +1 -1
  11. package/components/Button/ArrowLeftIcon.js.map +1 -1
  12. package/components/Button/ArrowRightIcon.js.map +1 -1
  13. package/components/Button/Button.d.ts +1 -1
  14. package/components/Button/Button.js +5 -4
  15. package/components/Button/Button.js.map +1 -1
  16. package/components/Button/Button.mixins.js.map +1 -1
  17. package/components/Button/Button.styles.js.map +1 -1
  18. package/components/Button/ButtonArrow.js.map +1 -1
  19. package/components/Button/ButtonIcon.js.map +1 -1
  20. package/components/Button/ButtonIcon.styles.js.map +1 -1
  21. package/components/Button/LoadingButtonIcon.js.map +1 -1
  22. package/components/Button/getInnerLinkTheme.js.map +1 -1
  23. package/components/Button/index.js.map +1 -1
  24. package/components/Calendar/Calendar.js.map +1 -1
  25. package/components/Calendar/Calendar.styles.js.map +1 -1
  26. package/components/Calendar/CalendarContext.js.map +1 -1
  27. package/components/Calendar/CalendarDateShape.js.map +1 -1
  28. package/components/Calendar/CalendarDay.js +3 -0
  29. package/components/Calendar/CalendarDay.js.map +1 -1
  30. package/components/Calendar/CalendarScrollEvents.js.map +1 -1
  31. package/components/Calendar/CalendarUtils.js.map +1 -1
  32. package/components/Calendar/DayCellView.js.map +1 -1
  33. package/components/Calendar/DayCellView.styles.d.ts +1 -0
  34. package/components/Calendar/DayCellView.styles.js +6 -3
  35. package/components/Calendar/DayCellView.styles.js.map +1 -1
  36. package/components/Calendar/DayCellViewModel.js.map +1 -1
  37. package/components/Calendar/Month.js.map +1 -1
  38. package/components/Calendar/MonthView.js.map +1 -1
  39. package/components/Calendar/MonthView.styles.js.map +1 -1
  40. package/components/Calendar/MonthViewModel.js.map +1 -1
  41. package/components/Calendar/config.js.map +1 -1
  42. package/components/Calendar/index.js.map +1 -1
  43. package/components/Calendar/locale/locales/en.js.map +1 -1
  44. package/components/Calendar/locale/locales/ru.js.map +1 -1
  45. package/components/Calendar/locale/types.js.map +1 -1
  46. package/components/Center/Center.js.map +1 -1
  47. package/components/Center/Center.styles.js.map +1 -1
  48. package/components/Center/index.js.map +1 -1
  49. package/components/Checkbox/Checkbox.js.map +1 -1
  50. package/components/Checkbox/Checkbox.mixins.js.map +1 -1
  51. package/components/Checkbox/Checkbox.styles.js.map +1 -1
  52. package/components/Checkbox/CheckedIcon.js.map +1 -1
  53. package/components/Checkbox/IndeterminateIcon.js.map +1 -1
  54. package/components/Checkbox/index.js.map +1 -1
  55. package/components/ComboBox/ComboBox.js.map +1 -1
  56. package/components/ComboBox/index.js.map +1 -1
  57. package/components/CurrencyInput/CurrencyHelper.js.map +1 -1
  58. package/components/CurrencyInput/CurrencyInput.js.map +1 -1
  59. package/components/CurrencyInput/CurrencyInputHelper.js.map +1 -1
  60. package/components/CurrencyInput/CurrencyInputKeyboardActions.js.map +1 -1
  61. package/components/CurrencyInput/CursorHelper.js.map +1 -1
  62. package/components/CurrencyInput/SelectionHelper.js.map +1 -1
  63. package/components/CurrencyInput/constants.js.map +1 -1
  64. package/components/CurrencyInput/index.js.map +1 -1
  65. package/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
  66. package/components/CurrencyLabel/index.js.map +1 -1
  67. package/components/DateInput/CalendarIcon.js.map +1 -1
  68. package/components/DateInput/DateFragmentsView.js.map +1 -1
  69. package/components/DateInput/DateFragmentsView.styles.js.map +1 -1
  70. package/components/DateInput/DateInput.js.map +1 -1
  71. package/components/DateInput/DateInput.styles.js.map +1 -1
  72. package/components/DateInput/helpers/DateInputKeyboardActions.js.map +1 -1
  73. package/components/DateInput/helpers/InternalDateMediator.js.map +1 -1
  74. package/components/DateInput/helpers/inputNumber.js.map +1 -1
  75. package/components/DateInput/index.js.map +1 -1
  76. package/components/DatePicker/DatePicker.js.map +1 -1
  77. package/components/DatePicker/DatePicker.styles.js.map +1 -1
  78. package/components/DatePicker/MobilePicker.js +1 -1
  79. package/components/DatePicker/MobilePicker.js.map +1 -1
  80. package/components/DatePicker/MobilePicker.styles.js.map +1 -1
  81. package/components/DatePicker/getMobilePickerTheme.js.map +1 -1
  82. package/components/DatePicker/index.js.map +1 -1
  83. package/components/DatePicker/locale/index.js.map +1 -1
  84. package/components/DatePicker/locale/locales/en.js.map +1 -1
  85. package/components/DatePicker/locale/locales/ru.js.map +1 -1
  86. package/components/DatePicker/locale/types.js.map +1 -1
  87. package/components/DateRangePicker/DateRangePicker.js +1 -1
  88. package/components/DateRangePicker/DateRangePicker.js.map +1 -1
  89. package/components/DateRangePicker/DateRangePicker.styles.js.map +1 -1
  90. package/components/DateRangePicker/DateRangePickerContext.js.map +1 -1
  91. package/components/DateRangePicker/DateRangePickerInput.js.map +1 -1
  92. package/components/DateRangePicker/DateRangePickerSeparator.js.map +1 -1
  93. package/components/DateRangePicker/DateRangePickerTheme.js.map +1 -1
  94. package/components/DateRangePicker/helpers/getStateForValue.js.map +1 -1
  95. package/components/DateRangePicker/helpers/validateDateRangePicker.js.map +1 -1
  96. package/components/DateRangePicker/index.js.map +1 -1
  97. package/components/DateRangePicker/locale/index.js.map +1 -1
  98. package/components/DateRangePicker/locale/locales/en.js.map +1 -1
  99. package/components/DateRangePicker/locale/locales/ru.js.map +1 -1
  100. package/components/DateRangePicker/locale/types.js.map +1 -1
  101. package/components/Dropdown/Dropdown.js.map +1 -1
  102. package/components/Dropdown/getDropdownTheme.js.map +1 -1
  103. package/components/Dropdown/index.js.map +1 -1
  104. package/components/DropdownMenu/DropdownMenu.js.map +1 -1
  105. package/components/DropdownMenu/getDropdownMenuTheme.js.map +1 -1
  106. package/components/DropdownMenu/index.js.map +1 -1
  107. package/components/FileUploader/FileUploader.js.map +1 -1
  108. package/components/FileUploader/FileUploader.mixins.js.map +1 -1
  109. package/components/FileUploader/FileUploader.styles.js.map +1 -1
  110. package/components/FileUploader/FileUploaderControlContext.js.map +1 -1
  111. package/components/FileUploader/FileUploaderControlProvider.js.map +1 -1
  112. package/components/FileUploader/FileUploaderFile.js.map +1 -1
  113. package/components/FileUploader/FileUploaderFile.styles.js.map +1 -1
  114. package/components/FileUploader/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  115. package/components/FileUploader/FileUploaderFileList/FileUploaderFileList.styles.js.map +1 -1
  116. package/components/FileUploader/FileUploaderFileStatusIcon.js.map +1 -1
  117. package/components/FileUploader/FileUploaderFileTypeIcon.js.map +1 -1
  118. package/components/FileUploader/FileUploaderFileValidationResult.js.map +1 -1
  119. package/components/FileUploader/fileUtils.js.map +1 -1
  120. package/components/FileUploader/hooks/useControlLocale.js.map +1 -1
  121. package/components/FileUploader/hooks/useFileUploaderSize.js.map +1 -1
  122. package/components/FileUploader/hooks/useUpload.js.map +1 -1
  123. package/components/FileUploader/icons/DeleteIcon.js.map +1 -1
  124. package/components/FileUploader/icons/UploadIcon.js.map +1 -1
  125. package/components/FileUploader/icons/row/ArchiveIcon.js.map +1 -1
  126. package/components/FileUploader/icons/row/DocTextIcon.js.map +1 -1
  127. package/components/FileUploader/icons/row/FolderIcon.js.map +1 -1
  128. package/components/FileUploader/icons/row/MarkupIcon.js.map +1 -1
  129. package/components/FileUploader/icons/row/PdfIcon.js.map +1 -1
  130. package/components/FileUploader/icons/row/PictureIcon.js.map +1 -1
  131. package/components/FileUploader/icons/row/PresentationIcon.js.map +1 -1
  132. package/components/FileUploader/icons/row/RowUploadIcon.js.map +1 -1
  133. package/components/FileUploader/icons/row/TableIcon.js.map +1 -1
  134. package/components/FileUploader/icons/row/TextIcon.js.map +1 -1
  135. package/components/FileUploader/icons/row/ValidationErrorIcon.js.map +1 -1
  136. package/components/FileUploader/icons/row/ValidationWarningIcon.js.map +1 -1
  137. package/components/FileUploader/icons/tile/ArchiveIcon.js.map +1 -1
  138. package/components/FileUploader/icons/tile/DocTextIcon.js.map +1 -1
  139. package/components/FileUploader/icons/tile/FolderIcon.js.map +1 -1
  140. package/components/FileUploader/icons/tile/MarkupIcon.js.map +1 -1
  141. package/components/FileUploader/icons/tile/PdfIcon.js.map +1 -1
  142. package/components/FileUploader/icons/tile/PictureIcon.js.map +1 -1
  143. package/components/FileUploader/icons/tile/PresentationIcon.js.map +1 -1
  144. package/components/FileUploader/icons/tile/TableIcon.js.map +1 -1
  145. package/components/FileUploader/icons/tile/TextIcon.js.map +1 -1
  146. package/components/FileUploader/icons/tile/TileUploadIcon.js.map +1 -1
  147. package/components/FileUploader/icons/tile/ValidationErrorIcon.js.map +1 -1
  148. package/components/FileUploader/icons/tile/ValidationWarningIcon.js.map +1 -1
  149. package/components/FileUploader/index.js.map +1 -1
  150. package/components/FileUploader/locale/index.js.map +1 -1
  151. package/components/FileUploader/locale/locales/en.js.map +1 -1
  152. package/components/FileUploader/locale/locales/ru.js.map +1 -1
  153. package/components/FileUploader/locale/types.js.map +1 -1
  154. package/components/FileUploader/withFileUploaderControlProvider.js.map +1 -1
  155. package/components/FxInput/FxInput.js.map +1 -1
  156. package/components/FxInput/FxInputRestoreBtn.js +1 -1
  157. package/components/FxInput/FxInputRestoreBtn.js.map +1 -1
  158. package/components/FxInput/MathFunctionIcon.js.map +1 -1
  159. package/components/FxInput/UndoIcon.js.map +1 -1
  160. package/components/FxInput/index.js.map +1 -1
  161. package/components/Gapped/Gapped.js.map +1 -1
  162. package/components/Gapped/index.js.map +1 -1
  163. package/components/GlobalLoader/GlobalLoader.js.map +1 -1
  164. package/components/GlobalLoader/GlobalLoaderView.js.map +1 -1
  165. package/components/GlobalLoader/GlobalLoaderView.styles.js.map +1 -1
  166. package/components/GlobalLoader/index.js.map +1 -1
  167. package/components/GlobalLoader/useParams.js.map +1 -1
  168. package/components/Group/Group.js.map +1 -1
  169. package/components/Group/Group.styles.js.map +1 -1
  170. package/components/Group/index.js.map +1 -1
  171. package/components/Hint/Hint.js.map +1 -1
  172. package/components/Hint/Hint.styles.js.map +1 -1
  173. package/components/Hint/index.js.map +1 -1
  174. package/components/Input/Input.d.ts +19 -1
  175. package/components/Input/Input.js +10 -3
  176. package/components/Input/Input.js.map +1 -1
  177. package/components/Input/Input.styles.js.map +1 -1
  178. package/components/Input/Input.typings.js.map +1 -1
  179. package/components/Input/InputLayout/InputLayout.d.ts +3 -1
  180. package/components/Input/InputLayout/InputLayout.js +5 -2
  181. package/components/Input/InputLayout/InputLayout.js.map +1 -1
  182. package/components/Input/InputLayout/InputLayout.styles.d.ts +6 -0
  183. package/components/Input/InputLayout/InputLayout.styles.js +19 -1
  184. package/components/Input/InputLayout/InputLayout.styles.js.map +1 -1
  185. package/components/Input/InputLayout/InputLayoutAside.d.ts +2 -0
  186. package/components/Input/InputLayout/InputLayoutAside.js +2 -2
  187. package/components/Input/InputLayout/InputLayoutAside.js.map +1 -1
  188. package/components/Input/InputLayout/InputLayoutAsideCounter.d.ts +11 -0
  189. package/components/Input/InputLayout/InputLayoutAsideCounter.js +74 -0
  190. package/components/Input/InputLayout/InputLayoutAsideCounter.js.map +1 -0
  191. package/components/Input/InputLayout/InputLayoutAsideIcon.js.map +1 -1
  192. package/components/Input/InputLayout/InputLayoutAsideText.js.map +1 -1
  193. package/components/Input/InputLayout/InputLayoutContext.js.map +1 -1
  194. package/components/Input/index.js.map +1 -1
  195. package/components/Kebab/Kebab.js.map +1 -1
  196. package/components/Kebab/Kebab.styles.js.map +1 -1
  197. package/components/Kebab/KebabIcon.js.map +1 -1
  198. package/components/Kebab/index.js.map +1 -1
  199. package/components/Link/Link.js.map +1 -1
  200. package/components/Link/Link.mixins.js.map +1 -1
  201. package/components/Link/Link.styles.js.map +1 -1
  202. package/components/Link/LinkIcon.js.map +1 -1
  203. package/components/Link/index.js.map +1 -1
  204. package/components/Loader/Loader.d.ts +12 -4
  205. package/components/Loader/Loader.js +18 -7
  206. package/components/Loader/Loader.js.map +1 -1
  207. package/components/Loader/Loader.styles.js.map +1 -1
  208. package/components/Loader/index.js.map +1 -1
  209. package/components/MaskedInput/ColorableInputElement/ColorableInputElement.js.map +1 -1
  210. package/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles.js.map +1 -1
  211. package/components/MaskedInput/ColorableInputElement/index.js.map +1 -1
  212. package/components/MaskedInput/FixedIMaskInput.js.map +1 -1
  213. package/components/MaskedInput/MaskedInput.helpers.js.map +1 -1
  214. package/components/MaskedInput/MaskedInput.js.map +1 -1
  215. package/components/MaskedInput/MaskedInput.styles.js.map +1 -1
  216. package/components/MaskedInput/index.js.map +1 -1
  217. package/components/MenuFooter/MenuFooter.js.map +1 -1
  218. package/components/MenuFooter/MenuFooter.mixins.js.map +1 -1
  219. package/components/MenuFooter/MenuFooter.styles.js.map +1 -1
  220. package/components/MenuFooter/index.js.map +1 -1
  221. package/components/MenuHeader/MenuHeader.js.map +1 -1
  222. package/components/MenuHeader/MenuHeader.mixins.js.map +1 -1
  223. package/components/MenuHeader/MenuHeader.styles.js.map +1 -1
  224. package/components/MenuHeader/index.js.map +1 -1
  225. package/components/MenuItem/MenuItem.d.ts +1 -0
  226. package/components/MenuItem/MenuItem.js +17 -1
  227. package/components/MenuItem/MenuItem.js.map +1 -1
  228. package/components/MenuItem/MenuItem.mixins.js.map +1 -1
  229. package/components/MenuItem/MenuItem.styles.d.ts +3 -0
  230. package/components/MenuItem/MenuItem.styles.js +25 -16
  231. package/components/MenuItem/MenuItem.styles.js.map +1 -1
  232. package/components/MenuItem/index.js.map +1 -1
  233. package/components/MenuSeparator/MenuSeparator.js.map +1 -1
  234. package/components/MenuSeparator/MenuSeparator.styles.js.map +1 -1
  235. package/components/MenuSeparator/index.js.map +1 -1
  236. package/components/MiniModal/MiniModal.js.map +1 -1
  237. package/components/MiniModal/MiniModal.styles.js.map +1 -1
  238. package/components/MiniModal/MiniModalBody.js.map +1 -1
  239. package/components/MiniModal/MiniModalFooter.js.map +1 -1
  240. package/components/MiniModal/MiniModalHeader.js.map +1 -1
  241. package/components/MiniModal/MiniModalIndent.js.map +1 -1
  242. package/components/MiniModal/getMiniModalTheme.js.map +1 -1
  243. package/components/MiniModal/index.js.map +1 -1
  244. package/components/Modal/Modal.js.map +1 -1
  245. package/components/Modal/Modal.styles.js.map +1 -1
  246. package/components/Modal/ModalBody.js.map +1 -1
  247. package/components/Modal/ModalClose.js.map +1 -1
  248. package/components/Modal/ModalContext.js.map +1 -1
  249. package/components/Modal/ModalFooter.js.map +1 -1
  250. package/components/Modal/ModalHeader.js.map +1 -1
  251. package/components/Modal/ModalSeparator.js.map +1 -1
  252. package/components/Modal/getModalBodyTheme.js.map +1 -1
  253. package/components/Modal/getModalTheme.js.map +1 -1
  254. package/components/Modal/index.js.map +1 -1
  255. package/components/Modal/locale/index.js.map +1 -1
  256. package/components/Modal/locale/locales/en.js.map +1 -1
  257. package/components/Modal/locale/locales/ru.js.map +1 -1
  258. package/components/Modal/locale/types.js.map +1 -1
  259. package/components/Paging/DotsIcon.js.map +1 -1
  260. package/components/Paging/ForwardIcon.js.map +1 -1
  261. package/components/Paging/NavigationHelper.js.map +1 -1
  262. package/components/Paging/Paging.js.map +1 -1
  263. package/components/Paging/Paging.styles.js.map +1 -1
  264. package/components/Paging/PagingDefaultComponent.js.map +1 -1
  265. package/components/Paging/PagingHelper.js.map +1 -1
  266. package/components/Paging/index.js.map +1 -1
  267. package/components/Paging/locale/index.js.map +1 -1
  268. package/components/Paging/locale/locales/en.js.map +1 -1
  269. package/components/Paging/locale/locales/ru.js.map +1 -1
  270. package/components/Paging/locale/types.js.map +1 -1
  271. package/components/PasswordInput/ClosedIcon.js.map +1 -1
  272. package/components/PasswordInput/OpenedIcon.js.map +1 -1
  273. package/components/PasswordInput/PasswordInput.js.map +1 -1
  274. package/components/PasswordInput/PasswordInput.styles.js.map +1 -1
  275. package/components/PasswordInput/PasswordInputIcon.js.map +1 -1
  276. package/components/PasswordInput/index.js.map +1 -1
  277. package/components/PasswordInput/locale/index.js.map +1 -1
  278. package/components/PasswordInput/locale/locales/en.js.map +1 -1
  279. package/components/PasswordInput/locale/locales/ru.js.map +1 -1
  280. package/components/PasswordInput/locale/types.js.map +1 -1
  281. package/components/Radio/Radio.js.map +1 -1
  282. package/components/Radio/Radio.mixins.js.map +1 -1
  283. package/components/Radio/Radio.styles.js.map +1 -1
  284. package/components/Radio/index.js.map +1 -1
  285. package/components/RadioGroup/Prevent.js.map +1 -1
  286. package/components/RadioGroup/RadioGroup.js.map +1 -1
  287. package/components/RadioGroup/RadioGroup.styles.js.map +1 -1
  288. package/components/RadioGroup/RadioGroupContext.js.map +1 -1
  289. package/components/RadioGroup/index.js.map +1 -1
  290. package/components/ResponsiveLayout/ResponsiveLayout.js.map +1 -1
  291. package/components/ResponsiveLayout/ResponsiveLayoutEvents.js.map +1 -1
  292. package/components/ResponsiveLayout/decorator.js.map +1 -1
  293. package/components/ResponsiveLayout/index.js.map +1 -1
  294. package/components/ResponsiveLayout/types.js.map +1 -1
  295. package/components/ResponsiveLayout/useResponsiveLayout.js.map +1 -1
  296. package/components/ScrollContainer/ScrollBar.js.map +1 -1
  297. package/components/ScrollContainer/ScrollContainer.constants.js.map +1 -1
  298. package/components/ScrollContainer/ScrollContainer.helpers.js.map +1 -1
  299. package/components/ScrollContainer/ScrollContainer.js.map +1 -1
  300. package/components/ScrollContainer/ScrollContainer.styles.js.map +1 -1
  301. package/components/ScrollContainer/index.js.map +1 -1
  302. package/components/Select/ArrowDownIcon.js.map +1 -1
  303. package/components/Select/Item.js.map +1 -1
  304. package/components/Select/Select.js +11 -1
  305. package/components/Select/Select.js.map +1 -1
  306. package/components/Select/Select.styles.js.map +1 -1
  307. package/components/Select/index.js.map +1 -1
  308. package/components/Select/locale/index.js.map +1 -1
  309. package/components/Select/locale/locales/en.js.map +1 -1
  310. package/components/Select/locale/locales/ru.js.map +1 -1
  311. package/components/Select/locale/types.js.map +1 -1
  312. package/components/Select/selectTheme.js.map +1 -1
  313. package/components/Select/tids.js.map +1 -1
  314. package/components/SidePage/SidePage.js.map +1 -1
  315. package/components/SidePage/SidePage.styles.js.map +1 -1
  316. package/components/SidePage/SidePageBody.js.map +1 -1
  317. package/components/SidePage/SidePageCloseButton.js.map +1 -1
  318. package/components/SidePage/SidePageContainer.js.map +1 -1
  319. package/components/SidePage/SidePageContext.js.map +1 -1
  320. package/components/SidePage/SidePageFooter.js.map +1 -1
  321. package/components/SidePage/SidePageHeader.js.map +1 -1
  322. package/components/SidePage/index.js.map +1 -1
  323. package/components/SidePage/locale/index.js.map +1 -1
  324. package/components/SidePage/locale/locales/en.js.map +1 -1
  325. package/components/SidePage/locale/locales/ru.js.map +1 -1
  326. package/components/SidePage/locale/types.js.map +1 -1
  327. package/components/SingleToast/SingleToast.d.ts +9 -6
  328. package/components/SingleToast/SingleToast.js +9 -6
  329. package/components/SingleToast/SingleToast.js.map +1 -1
  330. package/components/SingleToast/index.js.map +1 -1
  331. package/components/Spinner/Spinner.d.ts +23 -33
  332. package/components/Spinner/Spinner.js +23 -19
  333. package/components/Spinner/Spinner.js.map +1 -1
  334. package/components/Spinner/Spinner.styles.d.ts +0 -3
  335. package/components/Spinner/Spinner.styles.js +6 -15
  336. package/components/Spinner/Spinner.styles.js.map +1 -1
  337. package/components/Spinner/index.js.map +1 -1
  338. package/components/Sticky/Sticky.js.map +1 -1
  339. package/components/Sticky/Sticky.styles.js.map +1 -1
  340. package/components/Sticky/index.js.map +1 -1
  341. package/components/Switcher/Switcher.js +1 -0
  342. package/components/Switcher/Switcher.js.map +1 -1
  343. package/components/Switcher/Switcher.styles.js.map +1 -1
  344. package/components/Switcher/helpers.js.map +1 -1
  345. package/components/Switcher/index.js.map +1 -1
  346. package/components/Switcher/switcherTheme.js.map +1 -1
  347. package/components/Tabs/Indicator.js.map +1 -1
  348. package/components/Tabs/Indicator.styles.js.map +1 -1
  349. package/components/Tabs/Tab.js.map +1 -1
  350. package/components/Tabs/Tab.styles.js.map +1 -1
  351. package/components/Tabs/Tabs.js.map +1 -1
  352. package/components/Tabs/Tabs.styles.js.map +1 -1
  353. package/components/Tabs/TabsContext.js.map +1 -1
  354. package/components/Tabs/helpers.js.map +1 -1
  355. package/components/Tabs/index.js.map +1 -1
  356. package/components/Textarea/Textarea.js +1 -1
  357. package/components/Textarea/Textarea.js.map +1 -1
  358. package/components/Textarea/Textarea.mixins.js.map +1 -1
  359. package/components/Textarea/Textarea.styles.d.ts +1 -0
  360. package/components/Textarea/Textarea.styles.js +7 -4
  361. package/components/Textarea/Textarea.styles.js.map +1 -1
  362. package/components/Textarea/TextareaCounter.d.ts +2 -0
  363. package/components/Textarea/TextareaCounter.js +22 -4
  364. package/components/Textarea/TextareaCounter.js.map +1 -1
  365. package/components/Textarea/TextareaHelpers.js.map +1 -1
  366. package/components/Textarea/TextareaWithSafari17Workaround.js.map +1 -1
  367. package/components/Textarea/index.js.map +1 -1
  368. package/components/Toast/Toast.d.ts +13 -14
  369. package/components/Toast/Toast.js +3 -3
  370. package/components/Toast/Toast.js.map +1 -1
  371. package/components/Toast/Toast.styles.js.map +1 -1
  372. package/components/Toast/ToastView.d.ts +8 -5
  373. package/components/Toast/ToastView.js +28 -8
  374. package/components/Toast/ToastView.js.map +1 -1
  375. package/components/Toast/ToastView.styles.d.ts +7 -0
  376. package/components/Toast/ToastView.styles.js +30 -8
  377. package/components/Toast/ToastView.styles.js.map +1 -1
  378. package/components/Toast/index.js.map +1 -1
  379. package/components/Toast/locale/index.js.map +1 -1
  380. package/components/Toast/locale/locales/en.js.map +1 -1
  381. package/components/Toast/locale/locales/ru.js.map +1 -1
  382. package/components/Toast/locale/types.js.map +1 -1
  383. package/components/Toggle/Toggle.js.map +1 -1
  384. package/components/Toggle/Toggle.mixins.js.map +1 -1
  385. package/components/Toggle/Toggle.styles.js.map +1 -1
  386. package/components/Toggle/index.js.map +1 -1
  387. package/components/Token/Token.js.map +1 -1
  388. package/components/Token/Token.mixins.js.map +1 -1
  389. package/components/Token/Token.styles.js.map +1 -1
  390. package/components/Token/TokenView.js.map +1 -1
  391. package/components/Token/index.js.map +1 -1
  392. package/components/Token/locale/index.js.map +1 -1
  393. package/components/Token/locale/locales/en.js.map +1 -1
  394. package/components/Token/locale/locales/ru.js.map +1 -1
  395. package/components/Token/locale/types.js.map +1 -1
  396. package/components/TokenInput/TextWidthHelper.js.map +1 -1
  397. package/components/TokenInput/TokenInput.d.ts +18 -2
  398. package/components/TokenInput/TokenInput.js +236 -79
  399. package/components/TokenInput/TokenInput.js.map +1 -1
  400. package/components/TokenInput/TokenInput.mixins.js.map +1 -1
  401. package/components/TokenInput/TokenInput.styles.d.ts +1 -0
  402. package/components/TokenInput/TokenInput.styles.js +12 -9
  403. package/components/TokenInput/TokenInput.styles.js.map +1 -1
  404. package/components/TokenInput/TokenInputMenu.d.ts +2 -1
  405. package/components/TokenInput/TokenInputMenu.js +1 -1
  406. package/components/TokenInput/TokenInputMenu.js.map +1 -1
  407. package/components/TokenInput/TokenInputMobileMenu.d.ts +25 -0
  408. package/components/TokenInput/TokenInputMobileMenu.js +40 -0
  409. package/components/TokenInput/TokenInputMobileMenu.js.map +1 -0
  410. package/components/TokenInput/TokenInputReducer.d.ts +2 -0
  411. package/components/TokenInput/TokenInputReducer.js +14 -0
  412. package/components/TokenInput/TokenInputReducer.js.map +1 -1
  413. package/components/TokenInput/index.js.map +1 -1
  414. package/components/TokenInput/locale/index.js.map +1 -1
  415. package/components/TokenInput/locale/locales/en.js.map +1 -1
  416. package/components/TokenInput/locale/locales/ru.js.map +1 -1
  417. package/components/TokenInput/locale/types.js.map +1 -1
  418. package/components/Tooltip/Tooltip.d.ts +4 -0
  419. package/components/Tooltip/Tooltip.js +50 -11
  420. package/components/Tooltip/Tooltip.js.map +1 -1
  421. package/components/Tooltip/Tooltip.styles.js.map +1 -1
  422. package/components/Tooltip/index.js.map +1 -1
  423. package/components/TooltipMenu/TooltipMenu.js.map +1 -1
  424. package/components/TooltipMenu/index.js.map +1 -1
  425. package/hooks/useDrop.js.map +1 -1
  426. package/hooks/useEffectWithoutInitCall.js.map +1 -1
  427. package/hooks/useMemoObject.js.map +1 -1
  428. package/index.js.map +1 -1
  429. package/internal/ClearCrossIcon/ClearCrossIcon.js.map +1 -1
  430. package/internal/ClearCrossIcon/ClearCrossIcon.styles.js.map +1 -1
  431. package/internal/ClearCrossIcon/CrossIcon.js.map +1 -1
  432. package/internal/CloseButtonIcon/CloseButtonIcon.js +1 -1
  433. package/internal/CloseButtonIcon/CloseButtonIcon.js.map +1 -1
  434. package/internal/CloseButtonIcon/CloseButtonIcon.styles.js.map +1 -1
  435. package/internal/CloseButtonIcon/CrossIcon.js.map +1 -1
  436. package/internal/CommonWrapper/CommonWrapper.js +5 -0
  437. package/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  438. package/internal/CommonWrapper/index.js.map +1 -1
  439. package/internal/CommonWrapper/types.js.map +1 -1
  440. package/internal/CommonWrapper/utils/extractCommonProps.js.map +1 -1
  441. package/internal/CommonWrapper/utils/getCommonVisualStateDataAttributes.js.map +1 -1
  442. package/internal/CommonWrapper/utils/getVisualStateDataAttributes.js.map +1 -1
  443. package/internal/CommonWrapper/utils/tryGetBoolean.js.map +1 -1
  444. package/internal/CustomComboBox/ArrowDownIcon.js.map +1 -1
  445. package/internal/CustomComboBox/ComboBoxMenu.js +1 -1
  446. package/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  447. package/internal/CustomComboBox/ComboBoxView.js +13 -2
  448. package/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  449. package/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  450. package/internal/CustomComboBox/CustomComboBox.styles.js.map +1 -1
  451. package/internal/CustomComboBox/CustomComboBoxReducer.js.map +1 -1
  452. package/internal/CustomComboBox/CustomComboBoxTypes.js.map +1 -1
  453. package/internal/CustomComboBox/getComboBoxTheme.js.map +1 -1
  454. package/internal/CustomComboBox/index.js.map +1 -1
  455. package/internal/CustomComboBox/locale/index.js.map +1 -1
  456. package/internal/CustomComboBox/locale/locales/en.js.map +1 -1
  457. package/internal/CustomComboBox/locale/locales/ru.js.map +1 -1
  458. package/internal/CustomComboBox/locale/types.js.map +1 -1
  459. package/internal/CustomComboBox/tids.js.map +1 -1
  460. package/internal/DateSelect/DateSelect.js.map +1 -1
  461. package/internal/DateSelect/DateSelect.styles.js.map +1 -1
  462. package/internal/DateSelect/index.js.map +1 -1
  463. package/internal/DateSelect/locale/index.js.map +1 -1
  464. package/internal/DateSelect/locale/locales/en.js.map +1 -1
  465. package/internal/DateSelect/locale/locales/ru.js.map +1 -1
  466. package/internal/DateSelect/locale/types.js.map +1 -1
  467. package/internal/FocusControlWrapper/FocusControlWrapper.js.map +1 -1
  468. package/internal/FocusControlWrapper/index.js.map +1 -1
  469. package/internal/FocusControlWrapper/useFocusControl.js.map +1 -1
  470. package/internal/FocusTrap/FocusTrap.js.map +1 -1
  471. package/internal/FocusTrap/index.js.map +1 -1
  472. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
  473. package/internal/HideBodyVerticalScroll/index.js.map +1 -1
  474. package/internal/InputLikeText/InputLikeText.d.ts +1 -1
  475. package/internal/InputLikeText/InputLikeText.js.map +1 -1
  476. package/internal/InputLikeText/InputLikeText.styles.js.map +1 -1
  477. package/internal/InputLikeText/index.js.map +1 -1
  478. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.js.map +1 -1
  479. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.js.map +1 -1
  480. package/internal/MaskCharLowLine/MaskCharLowLine.js.map +1 -1
  481. package/internal/MaskCharLowLine/MaskCharLowLine.styles.js.map +1 -1
  482. package/internal/MaskCharLowLine/index.js.map +1 -1
  483. package/internal/Menu/Menu.js +3 -0
  484. package/internal/Menu/Menu.js.map +1 -1
  485. package/internal/Menu/Menu.styles.d.ts +1 -0
  486. package/internal/Menu/Menu.styles.js +13 -10
  487. package/internal/Menu/Menu.styles.js.map +1 -1
  488. package/internal/Menu/MenuContext.js.map +1 -1
  489. package/internal/Menu/MenuNavigation.js.map +1 -1
  490. package/internal/Menu/index.js.map +1 -1
  491. package/internal/MenuMessage/MenuMessage.js +17 -1
  492. package/internal/MenuMessage/MenuMessage.js.map +1 -1
  493. package/internal/MenuMessage/MenuMessage.styles.d.ts +3 -0
  494. package/internal/MenuMessage/MenuMessage.styles.js +13 -4
  495. package/internal/MenuMessage/MenuMessage.styles.js.map +1 -1
  496. package/internal/MenuMessage/index.js.map +1 -1
  497. package/internal/MobilePopup/MobilePopup.d.ts +8 -0
  498. package/internal/MobilePopup/MobilePopup.js +34 -11
  499. package/internal/MobilePopup/MobilePopup.js.map +1 -1
  500. package/internal/MobilePopup/MobilePopup.styles.d.ts +7 -0
  501. package/internal/MobilePopup/MobilePopup.styles.js +34 -10
  502. package/internal/MobilePopup/MobilePopup.styles.js.map +1 -1
  503. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +8 -1
  504. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js +18 -1
  505. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js.map +1 -1
  506. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +3 -0
  507. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js +14 -4
  508. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js.map +1 -1
  509. package/internal/MobilePopup/MobilePopupFooter/index.js.map +1 -1
  510. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.d.ts +4 -0
  511. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js +48 -11
  512. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  513. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.d.ts +6 -0
  514. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js +28 -8
  515. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js.map +1 -1
  516. package/internal/MobilePopup/MobilePopupHeader/index.js.map +1 -1
  517. package/internal/MobilePopup/index.js.map +1 -1
  518. package/internal/NativeDateInput/NativeDateInput.js.map +1 -1
  519. package/internal/NativeDateInput/NativeDateInput.styles.js.map +1 -1
  520. package/internal/NativeDateInput/index.js.map +1 -1
  521. package/internal/NativeDateInput/utils.js.map +1 -1
  522. package/internal/Popup/Popup.d.ts +9 -3
  523. package/internal/Popup/Popup.js +117 -15
  524. package/internal/Popup/Popup.js.map +1 -1
  525. package/internal/Popup/Popup.styles.js +1 -1
  526. package/internal/Popup/Popup.styles.js.map +1 -1
  527. package/internal/Popup/PopupHelper.d.ts +4 -0
  528. package/internal/Popup/PopupHelper.js +8 -0
  529. package/internal/Popup/PopupHelper.js.map +1 -1
  530. package/internal/Popup/PopupPin.d.ts +19 -4
  531. package/internal/Popup/PopupPin.js +109 -8
  532. package/internal/Popup/PopupPin.js.map +1 -1
  533. package/internal/Popup/PopupPin.styles.d.ts +2 -0
  534. package/internal/Popup/PopupPin.styles.js +11 -5
  535. package/internal/Popup/PopupPin.styles.js.map +1 -1
  536. package/internal/Popup/index.js.map +1 -1
  537. package/internal/Popup/types.js.map +1 -1
  538. package/internal/PopupMenu/PopupMenu.js.map +1 -1
  539. package/internal/PopupMenu/PopupMenu.styles.js.map +1 -1
  540. package/internal/PopupMenu/index.js.map +1 -1
  541. package/internal/PopupMenu/tids.js.map +1 -1
  542. package/internal/PopupMenu/validatePositions.js.map +1 -1
  543. package/internal/RenderContainer/RenderContainer.js.map +1 -1
  544. package/internal/RenderContainer/RenderContainerTypes.js.map +1 -1
  545. package/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
  546. package/internal/RenderContainer/index.js.map +1 -1
  547. package/internal/RenderLayer/RenderLayer.js.map +1 -1
  548. package/internal/RenderLayer/index.js.map +1 -1
  549. package/internal/ResizeDetector/ResizeDetector.js.map +1 -1
  550. package/internal/ResizeDetector/ResizeDetector.styles.js.map +1 -1
  551. package/internal/ResizeDetector/index.js.map +1 -1
  552. package/internal/SpinnerIcon/SpinnerIcon.d.ts +3 -3
  553. package/internal/SpinnerIcon/SpinnerIcon.js +4 -4
  554. package/internal/SpinnerIcon/SpinnerIcon.js.map +1 -1
  555. package/internal/SpinnerIcon/SpinnerIcon.styles.js.map +1 -1
  556. package/internal/TextWidthHelper/TextWidthHelper.js.map +1 -1
  557. package/internal/TextWidthHelper/TextWidthHelper.styles.js.map +1 -1
  558. package/internal/ZIndex/ZIndex.js.map +1 -1
  559. package/internal/ZIndex/ZIndexStorage.js.map +1 -1
  560. package/internal/ZIndex/index.js.map +1 -1
  561. package/internal/icons2022/ArrowALeftIcon/ArrowALeftIcon16Light.js.map +1 -1
  562. package/internal/icons2022/ArrowALeftIcon/ArrowALeftIcon20Light.js.map +1 -1
  563. package/internal/icons2022/ArrowALeftIcon/ArrowALeftIcon24Regular.js.map +1 -1
  564. package/internal/icons2022/ArrowARightIcon/ArrowARightIcon16Light.js.map +1 -1
  565. package/internal/icons2022/ArrowARightIcon/ArrowARightIcon20Light.js.map +1 -1
  566. package/internal/icons2022/ArrowARightIcon/ArrowARightIcon24Regular.js.map +1 -1
  567. package/internal/icons2022/ArrowAUpIcon/ArrowAUp16Light.js.map +1 -1
  568. package/internal/icons2022/ArrowCDownIcon/ArrowCDownIcon16Regular.js.map +1 -1
  569. package/internal/icons2022/ArrowCDownIcon/ArrowCDownIcon20Regular.js.map +1 -1
  570. package/internal/icons2022/ArrowCDownIcon/ArrowCDownIcon24Regular.js.map +1 -1
  571. package/internal/icons2022/ArrowCRightIcon/ArrowCRightIcon16Light.js.map +1 -1
  572. package/internal/icons2022/ArrowCRightIcon/ArrowCRightIcon20Light.js.map +1 -1
  573. package/internal/icons2022/ArrowCRightIcon/ArrowCRightIcon24Regular.js.map +1 -1
  574. package/internal/icons2022/ArrowCollapseCVOpenIcon/ArrowCollapseCVOpenIcon16Regular.js.map +1 -1
  575. package/internal/icons2022/ArrowShapeDRadiusUpLeftIcon/ArrowShapeDRadiusUpLeftIcon16Light.js.map +1 -1
  576. package/internal/icons2022/ArrowShapeDRadiusUpLeftIcon/ArrowShapeDRadiusUpLeftIcon20Light.js.map +1 -1
  577. package/internal/icons2022/ArrowShapeDRadiusUpLeftIcon/ArrowShapeDRadiusUpLeftIcon24Regular.js.map +1 -1
  578. package/internal/icons2022/BaseIcon.js.map +1 -1
  579. package/internal/icons2022/BaseIcon.styles.js.map +1 -1
  580. package/internal/icons2022/CalendarIcon/CalendarIcon16Light.js.map +1 -1
  581. package/internal/icons2022/CalendarIcon/CalendarIcon20Light.js.map +1 -1
  582. package/internal/icons2022/CalendarIcon/CalendarIcon24Regular.js.map +1 -1
  583. package/internal/icons2022/CheckAIcon/CheckAIcon16Solid.js.map +1 -1
  584. package/internal/icons2022/CheckAIcon/CheckAIcon20Solid.js.map +1 -1
  585. package/internal/icons2022/EyeClosedIcon/EyeClosedIcon16Light.js.map +1 -1
  586. package/internal/icons2022/EyeClosedIcon/EyeClosedIcon20Light.js.map +1 -1
  587. package/internal/icons2022/EyeClosedIcon/EyeClosedIcon24Regular.js.map +1 -1
  588. package/internal/icons2022/EyeOpenIcon/EyeOpenIcon16Light.js.map +1 -1
  589. package/internal/icons2022/EyeOpenIcon/EyeOpenIcon20Light.js.map +1 -1
  590. package/internal/icons2022/EyeOpenIcon/EyeOpenIcon24Regular.js.map +1 -1
  591. package/internal/icons2022/FileTypeArchiveIcon/ArchiveIcon16Solid.js.map +1 -1
  592. package/internal/icons2022/FileTypeArchiveIcon/ArchiveIcon20Solid.js.map +1 -1
  593. package/internal/icons2022/FileTypeArchiveIcon/ArchiveIcon24Regular.js.map +1 -1
  594. package/internal/icons2022/FileTypeArchiveIcon/ArchiveIcon24Solid.js.map +1 -1
  595. package/internal/icons2022/FileTypeArchiveIcon/ArchiveIcon32Regular.js.map +1 -1
  596. package/internal/icons2022/FileTypeArchiveIcon/ArchiveIcon64Regular.js.map +1 -1
  597. package/internal/icons2022/FileTypeDocTextIcon/DocTextIcon16Solid.js.map +1 -1
  598. package/internal/icons2022/FileTypeDocTextIcon/DocTextIcon20Solid.js.map +1 -1
  599. package/internal/icons2022/FileTypeDocTextIcon/DocTextIcon24Regular.js.map +1 -1
  600. package/internal/icons2022/FileTypeDocTextIcon/DocTextIcon24Solid.js.map +1 -1
  601. package/internal/icons2022/FileTypeDocTextIcon/DocTextIcon32Regular.js.map +1 -1
  602. package/internal/icons2022/FileTypeDocTextIcon/DocTextIcon64Regular.js.map +1 -1
  603. package/internal/icons2022/FileTypeFolderIcon/FolderIcon16Solid.js.map +1 -1
  604. package/internal/icons2022/FileTypeFolderIcon/FolderIcon20Solid.js.map +1 -1
  605. package/internal/icons2022/FileTypeFolderIcon/FolderIcon24Regular.js.map +1 -1
  606. package/internal/icons2022/FileTypeFolderIcon/FolderIcon24Solid.js.map +1 -1
  607. package/internal/icons2022/FileTypeFolderIcon/FolderIcon32Regular.js.map +1 -1
  608. package/internal/icons2022/FileTypeFolderIcon/FolderIcon64Regular.js.map +1 -1
  609. package/internal/icons2022/FileTypeMarkupIcon/MarkupIcon16Solid.js.map +1 -1
  610. package/internal/icons2022/FileTypeMarkupIcon/MarkupIcon20Solid.js.map +1 -1
  611. package/internal/icons2022/FileTypeMarkupIcon/MarkupIcon24Regular.js.map +1 -1
  612. package/internal/icons2022/FileTypeMarkupIcon/MarkupIcon24Solid.js.map +1 -1
  613. package/internal/icons2022/FileTypeMarkupIcon/MarkupIcon32Regular.js.map +1 -1
  614. package/internal/icons2022/FileTypeMarkupIcon/MarkupIcon64Regular.js.map +1 -1
  615. package/internal/icons2022/FileTypePdfIcon/PdfIcon16Solid.js.map +1 -1
  616. package/internal/icons2022/FileTypePdfIcon/PdfIcon20Solid.js.map +1 -1
  617. package/internal/icons2022/FileTypePdfIcon/PdfIcon24Regular.js.map +1 -1
  618. package/internal/icons2022/FileTypePdfIcon/PdfIcon24Solid.js.map +1 -1
  619. package/internal/icons2022/FileTypePdfIcon/PdfIcon32Regular.js.map +1 -1
  620. package/internal/icons2022/FileTypePdfIcon/PdfIcon64Regular.js.map +1 -1
  621. package/internal/icons2022/FileTypePictureIcon/PictureIcon16Solid.js.map +1 -1
  622. package/internal/icons2022/FileTypePictureIcon/PictureIcon20Solid.js.map +1 -1
  623. package/internal/icons2022/FileTypePictureIcon/PictureIcon24Regular.js.map +1 -1
  624. package/internal/icons2022/FileTypePictureIcon/PictureIcon24Solid.js.map +1 -1
  625. package/internal/icons2022/FileTypePictureIcon/PictureIcon32Regular.js.map +1 -1
  626. package/internal/icons2022/FileTypePictureIcon/PictureIcon64Regular.js.map +1 -1
  627. package/internal/icons2022/FileTypePresentationIcon/PresentationIcon16Solid.js.map +1 -1
  628. package/internal/icons2022/FileTypePresentationIcon/PresentationIcon20Solid.js.map +1 -1
  629. package/internal/icons2022/FileTypePresentationIcon/PresentationIcon24Regular.js.map +1 -1
  630. package/internal/icons2022/FileTypePresentationIcon/PresentationIcon24Solid.js.map +1 -1
  631. package/internal/icons2022/FileTypePresentationIcon/PresentationIcon32Regular.js.map +1 -1
  632. package/internal/icons2022/FileTypePresentationIcon/PresentationIcon64Regular.js.map +1 -1
  633. package/internal/icons2022/FileTypeTableIcon/TableIcon16Solid.js.map +1 -1
  634. package/internal/icons2022/FileTypeTableIcon/TableIcon20Solid.js.map +1 -1
  635. package/internal/icons2022/FileTypeTableIcon/TableIcon24Regular.js.map +1 -1
  636. package/internal/icons2022/FileTypeTableIcon/TableIcon24Solid.js.map +1 -1
  637. package/internal/icons2022/FileTypeTableIcon/TableIcon32Regular.js.map +1 -1
  638. package/internal/icons2022/FileTypeTableIcon/TableIcon64Regular.js.map +1 -1
  639. package/internal/icons2022/FileTypeTextIcon/TextIcon16Solid.js.map +1 -1
  640. package/internal/icons2022/FileTypeTextIcon/TextIcon20Solid.js.map +1 -1
  641. package/internal/icons2022/FileTypeTextIcon/TextIcon24Regular.js.map +1 -1
  642. package/internal/icons2022/FileTypeTextIcon/TextIcon24Solid.js.map +1 -1
  643. package/internal/icons2022/FileTypeTextIcon/TextIcon32Regular.js.map +1 -1
  644. package/internal/icons2022/FileTypeTextIcon/TextIcon64Regular.js.map +1 -1
  645. package/internal/icons2022/InfoCircleIcon/InfoCircleIcon64Regular.js.map +1 -1
  646. package/internal/icons2022/LoadingIcon.js +1 -1
  647. package/internal/icons2022/LoadingIcon.js.map +1 -1
  648. package/internal/icons2022/MathFunctionIcon/MathFunctionIcon16Light.js.map +1 -1
  649. package/internal/icons2022/MathFunctionIcon/MathFunctionIcon20Light.js.map +1 -1
  650. package/internal/icons2022/MathFunctionIcon/MathFunctionIcon24Regular.js.map +1 -1
  651. package/internal/icons2022/NetUploadIcon/NetUploadIcon16Light.js.map +1 -1
  652. package/internal/icons2022/NetUploadIcon/NetUploadIcon20Regular.js.map +1 -1
  653. package/internal/icons2022/NetUploadIcon/NetUploadIcon24Regular.js.map +1 -1
  654. package/internal/icons2022/NetUploadIcon/NetUploadIcon32Regular.js.map +1 -1
  655. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.d.ts +2 -0
  656. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.js +21 -0
  657. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.js.map +1 -0
  658. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Solid.js.map +1 -1
  659. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.d.ts +2 -0
  660. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.js +21 -0
  661. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.js.map +1 -0
  662. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.d.ts +2 -0
  663. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.js +21 -0
  664. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.js.map +1 -0
  665. package/internal/icons2022/ShapeSquareIcon/ShapeSquareIcon16Solid.js.map +1 -1
  666. package/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular.js.map +1 -1
  667. package/internal/icons2022/UiMenuDotsThreeVIcon/UiMenuDotsThreeVIcon16Light.js.map +1 -1
  668. package/internal/icons2022/UiMenuDotsThreeVIcon/UiMenuDotsThreeVIcon20Regular.js.map +1 -1
  669. package/internal/icons2022/UiMenuDotsThreeVIcon/UiMenuDotsThreeVIcon24Regular.js.map +1 -1
  670. package/internal/icons2022/WarningTriangleIcon/WarningTriangleIcon16Solid.js.map +1 -1
  671. package/internal/icons2022/WarningTriangleIcon/WarningTriangleIcon20Solid.js.map +1 -1
  672. package/internal/icons2022/WarningTriangleIcon/WarningTriangleIcon24Regular.js.map +1 -1
  673. package/internal/icons2022/WarningTriangleIcon/WarningTriangleIcon24Solid.js.map +1 -1
  674. package/internal/icons2022/WarningTriangleIcon/WarningTriangleIcon32Regular.js.map +1 -1
  675. package/internal/icons2022/WarningTriangleIcon/WarningTriangleIcon64Regular.js.map +1 -1
  676. package/internal/icons2022/XCircleIcon/XCircleIcon16Solid.js.map +1 -1
  677. package/internal/icons2022/XCircleIcon/XCircleIcon20Solid.js.map +1 -1
  678. package/internal/icons2022/XCircleIcon/XCircleIcon24Regular.js.map +1 -1
  679. package/internal/icons2022/XCircleIcon/XCircleIcon24Solid.js.map +1 -1
  680. package/internal/icons2022/XCircleIcon/XCircleIcon32Regular.js.map +1 -1
  681. package/internal/icons2022/XCircleIcon/XCircleIcon64Regular.js.map +1 -1
  682. package/internal/icons2022/XIcon/XIcon16Light.js.map +1 -1
  683. package/internal/icons2022/XIcon/XIcon20Light.js.map +1 -1
  684. package/internal/icons2022/XIcon/XIcon20Regular.js.map +1 -1
  685. package/internal/icons2022/XIcon/XIcon24Regular.js.map +1 -1
  686. package/internal/icons2022/iconConstants.js.map +1 -1
  687. package/internal/icons2022/iconSizer.js.map +1 -1
  688. package/internal/react-focus-lock/Combination.js.map +1 -1
  689. package/internal/react-focus-lock/FocusGuard.js.map +1 -1
  690. package/internal/react-focus-lock/Lock.js.map +1 -1
  691. package/internal/react-focus-lock/Trap.js.map +1 -1
  692. package/internal/react-focus-lock/constants.js.map +1 -1
  693. package/internal/react-focus-lock/index.js.map +1 -1
  694. package/internal/react-focus-lock/medium.js.map +1 -1
  695. package/internal/react-focus-lock/scope.js.map +1 -1
  696. package/internal/react-focus-lock/util.js.map +1 -1
  697. package/internal/themes/BasicTheme.d.ts +83 -4
  698. package/internal/themes/BasicTheme.js +186 -5
  699. package/internal/themes/BasicTheme.js.map +1 -1
  700. package/internal/themes/DarkTheme6_0.js.map +1 -1
  701. package/internal/themes/DarkTheme6_1.d.ts +1 -0
  702. package/internal/themes/DarkTheme6_1.js +41 -0
  703. package/internal/themes/DarkTheme6_1.js.map +1 -0
  704. package/internal/themes/LightTheme6_0.js.map +1 -1
  705. package/internal/themes/LightTheme6_1.d.ts +1 -0
  706. package/internal/themes/LightTheme6_1.js +39 -0
  707. package/internal/themes/LightTheme6_1.js.map +1 -0
  708. package/lib/ConditionalHandler.js.map +1 -1
  709. package/lib/InstanceWithAnchorElement.js.map +1 -1
  710. package/lib/LayoutEvents.js.map +1 -1
  711. package/lib/ModalStack.js.map +1 -1
  712. package/lib/Upgrades.js.map +1 -1
  713. package/lib/animation/index.js.map +1 -1
  714. package/lib/animation/presets.js.map +1 -1
  715. package/lib/animation/stepper.js.map +1 -1
  716. package/lib/blink.js.map +1 -1
  717. package/lib/callChildRef/callChildRef.js.map +1 -1
  718. package/lib/chars.js.map +1 -1
  719. package/lib/client.js.map +1 -1
  720. package/lib/createPropsGetter.js.map +1 -1
  721. package/lib/currentEnvironment.js.map +1 -1
  722. package/lib/date/InternalDate.js.map +1 -1
  723. package/lib/date/InternalDateCalculator.js.map +1 -1
  724. package/lib/date/InternalDateGetter.js.map +1 -1
  725. package/lib/date/InternalDateSetter.js.map +1 -1
  726. package/lib/date/InternalDateTransformer.js.map +1 -1
  727. package/lib/date/InternalDateValidator.js.map +1 -1
  728. package/lib/date/comparison.js.map +1 -1
  729. package/lib/date/constants.js.map +1 -1
  730. package/lib/date/localeSets.js.map +1 -1
  731. package/lib/date/types.js.map +1 -1
  732. package/lib/delay.js.map +1 -1
  733. package/lib/dom/getDOMRect.js.map +1 -1
  734. package/lib/dom/getParentOrShadowHost.js.map +1 -1
  735. package/lib/dom/getScrollWidth.js.map +1 -1
  736. package/lib/dom/scrollYCenterIntoNearestScrollable.js.map +1 -1
  737. package/lib/dom/selectionHelpers.js.map +1 -1
  738. package/lib/dom/tabbableHelpers.js.map +1 -1
  739. package/lib/events/MouseDrag.js.map +1 -1
  740. package/lib/events/fixFirefoxModifiedClickOnLabel.js.map +1 -1
  741. package/lib/events/keyListener.js.map +1 -1
  742. package/lib/events/keyboard/KeyboardEventCodes.js.map +1 -1
  743. package/lib/events/keyboard/KeyboardMapKeys.js.map +1 -1
  744. package/lib/events/keyboard/extractCode.js.map +1 -1
  745. package/lib/events/keyboard/identifiers.js.map +1 -1
  746. package/lib/extractKeyboardAction.js.map +1 -1
  747. package/lib/featureFlagsContext/FeatureFlagsHelpers.js.map +1 -1
  748. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  749. package/lib/featureFlagsContext/index.js.map +1 -1
  750. package/lib/filterProps.js.map +1 -1
  751. package/lib/forwardRefAndName.js.map +1 -1
  752. package/lib/getElementRef.js.map +1 -1
  753. package/lib/getMenuPositions.js.map +1 -1
  754. package/lib/globalObject.js.map +1 -1
  755. package/lib/isInstanceOf.js.map +1 -1
  756. package/lib/listenFocusOutside.js.map +1 -1
  757. package/lib/locale/LocaleContext.js.map +1 -1
  758. package/lib/locale/LocaleHelper.js.map +1 -1
  759. package/lib/locale/constants.js.map +1 -1
  760. package/lib/locale/decorators.js.map +1 -1
  761. package/lib/locale/index.js.map +1 -1
  762. package/lib/locale/types.js.map +1 -1
  763. package/lib/locale/useLocaleForControl.js.map +1 -1
  764. package/lib/memo.js.map +1 -1
  765. package/lib/mergeRefs.js.map +1 -1
  766. package/lib/needsPolyfillPlaceholder.js.map +1 -1
  767. package/lib/pluralize.js.map +1 -1
  768. package/lib/react-is.js.map +1 -1
  769. package/lib/reactGetTextContent.js.map +1 -1
  770. package/lib/renderEnvironment/RenderEnvironmentContext.js.map +1 -1
  771. package/lib/renderEnvironment/RenderEnvironmentDecorator.js.map +1 -1
  772. package/lib/renderEnvironment/index.js.map +1 -1
  773. package/lib/rootNode/getRootNode.js.map +1 -1
  774. package/lib/rootNode/index.js.map +1 -1
  775. package/lib/rootNode/rootNodeDecorator.js.map +1 -1
  776. package/lib/scrollInputCaretIntoView.js.map +1 -1
  777. package/lib/size/SizeControlContext.js.map +1 -1
  778. package/lib/size/SizeDecorator.js.map +1 -1
  779. package/lib/size/constants.js.map +1 -1
  780. package/lib/size/index.js.map +1 -1
  781. package/lib/size/useSizeControl.js.map +1 -1
  782. package/lib/stringUtils.js.map +1 -1
  783. package/lib/styles/ColorFactory.js.map +1 -1
  784. package/lib/styles/ColorFunctions.js.map +1 -1
  785. package/lib/styles/ColorHelpers.js.map +1 -1
  786. package/lib/styles/ColorKeywords.js.map +1 -1
  787. package/lib/styles/ColorObject.js.map +1 -1
  788. package/lib/styles/DimensionFunctions.js.map +1 -1
  789. package/lib/styles/Mixins.js.map +1 -1
  790. package/lib/styles/UiFont.js.map +1 -1
  791. package/lib/styles/getLabGrotesqueBaselineCompensation.js.map +1 -1
  792. package/lib/taskWithDelayAndMinimalDuration.js.map +1 -1
  793. package/lib/theming/AnimationKeyframes.js.map +1 -1
  794. package/lib/theming/Emotion.js.map +1 -1
  795. package/lib/theming/Theme.js.map +1 -1
  796. package/lib/theming/ThemeContext.js.map +1 -1
  797. package/lib/theming/ThemeFactory.js.map +1 -1
  798. package/lib/theming/ThemeHelpers.js.map +1 -1
  799. package/lib/theming/ThemeVersions.js.map +1 -1
  800. package/lib/theming/themes/DarkTheme.d.ts +1 -0
  801. package/lib/theming/themes/DarkTheme.js +3 -1
  802. package/lib/theming/themes/DarkTheme.js.map +1 -1
  803. package/lib/theming/themes/LightTheme.d.ts +1 -0
  804. package/lib/theming/themes/LightTheme.js +3 -1
  805. package/lib/theming/themes/LightTheme.js.map +1 -1
  806. package/lib/theming/useTheme.js.map +1 -1
  807. package/lib/toKebabCase.js.map +1 -1
  808. package/lib/typeGuards.js.map +1 -1
  809. package/lib/types/button-link.js.map +1 -1
  810. package/lib/types/polymorphic-component.js.map +1 -1
  811. package/lib/types/props.js.map +1 -1
  812. package/lib/uidUtils.js.map +1 -1
  813. package/lib/utils.js.map +1 -1
  814. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ColorableInputElement.js","sourceRoot":"","sources":["../../../../components/MaskedInput/ColorableInputElement/ColorableInputElement.tsx"],"names":[],"mappings":"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","sourcesContent":["import debounce from 'lodash.debounce';\nimport React, { useCallback, useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport type { ForwardedRef } from 'react';\n\nimport { forwardRefAndName } from '../../../lib/forwardRefAndName.js';\nimport { isBrowser } from '../../../lib/globalObject.js';\nimport { useEmotion, useGlobal, useStyles } from '../../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../../lib/theming/ThemeContext.js';\nimport type { InputElement, InputElementProps } from '../../Input/index.js';\nimport { getStyles, globalClasses } from './ColorableInputElement.styles.js';\n\nexport type ColorableInputElementProps = InputElementProps & {\n alwaysShowMask?: boolean;\n showOnFocus?: boolean;\n children: React.ReactElement<any>;\n};\n\n// Возможно придётся включить.\n// Иногда, на тяжёлых страницах, текст рендерится итеративно.\n// Из-за этого могут оставаться артефакты при покраске компонента, которые пропадут только после фокуса.\n// setInterval(() => window.requestAnimationFrame(() => dictionary.forEach((paint) => paint())), 1000);\n\nexport const ColorableInputElement = forwardRefAndName(\n 'ColorableInputElement',\n function ColorableInputElement(props: ColorableInputElementProps, ref: ForwardedRef<InputElement>) {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const spanRef = useRef<HTMLSpanElement | null>(null);\n const focused = useRef(false);\n const updateActiveTimer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const globalObject = useGlobal();\n const emotion = useEmotion();\n const { cx } = emotion;\n const styles = useStyles(getStyles);\n const theme = useContext(ThemeContext);\n const [active, setActive] = useState(\n Boolean(props.alwaysShowMask || (!props.placeholder && (props.value || props.defaultValue))),\n );\n\n const { children, onInput, onFocus, onBlur, showOnFocus, alwaysShowMask, ...inputProps } = props;\n\n const stopUpdateActive = useCallback(() => {\n clearTimeout(updateActiveTimer.current);\n }, []);\n\n const updateActive = useCallback(() => {\n stopUpdateActive();\n updateActiveTimer.current = setTimeout(() => {\n let nextActive = true;\n if (inputRef.current) {\n const { clientWidth, scrollWidth } = inputRef.current;\n const scrollable = scrollWidth > clientWidth;\n\n const placeholderShown = inputRef.current?.parentElement?.querySelector(':placeholder-shown');\n\n nextActive = !(scrollable || placeholderShown);\n }\n setActive(nextActive);\n }, 0);\n }, [stopUpdateActive]);\n\n const paintText = useCallback(() => {\n if (!isBrowser(globalObject) || !spanRef.current || !inputRef.current || !active) {\n inputRef.current && (inputRef.current.style.backgroundImage = '');\n inputRef.current?.classList.remove(globalClasses.input);\n\n return;\n }\n\n inputRef.current?.classList.add(globalClasses.input);\n\n let shadow = spanRef.current.shadowRoot;\n let typedValueElement = shadow?.getElementById('typed-value');\n let fullValueElement = shadow?.getElementById('full-value');\n\n if (!typedValueElement || !fullValueElement) {\n shadow = spanRef.current.attachShadow({ mode: 'open' });\n\n typedValueElement = globalObject.document.createElement('span');\n fullValueElement = globalObject.document.createElement('span');\n typedValueElement.setAttribute('id', 'typed-value');\n fullValueElement.setAttribute('id', 'full-value');\n\n shadow.append(typedValueElement, fullValueElement);\n }\n\n const style = getComputedStyle(inputRef.current);\n\n typedValueElement.textContent =\n ((inputRef.current.getAttribute('data-unmasked-value') || focused.current) &&\n inputRef.current.getAttribute('data-typed-value')) ||\n '';\n\n fullValueElement.textContent = inputRef.current.value || inputRef.current.defaultValue || '';\n\n const inputRect = inputRef.current.getBoundingClientRect();\n const typedValueRect = typedValueElement.getBoundingClientRect();\n const fullValueRect = fullValueElement.getBoundingClientRect();\n\n const threshold = typedValueRect.width / (inputRect.width / 100);\n const degree = style.fontStyle === 'italic' ? 100 : 90;\n const restValueWidth = 1 - Math.min(fullValueRect.width / inputRect.width, 1);\n\n let typedValueColor = theme.inputTextColor;\n let maskColor = theme.inputPlaceholderColor;\n let indent = 0;\n\n if (props.disabled) {\n typedValueColor = theme.inputTextColorDisabled;\n maskColor = theme.inputTextColorDisabled;\n }\n if (props.showOnFocus) {\n maskColor = focused.current ? maskColor : 'transparent';\n }\n if (props.style?.textAlign === 'right') {\n indent = 100 * restValueWidth;\n }\n if (props.style?.textAlign === 'center') {\n indent = 50 * restValueWidth;\n }\n\n inputRef.current.style.backgroundImage = `\n linear-gradient(\n ${degree}deg,\n ${typedValueColor} ${threshold + indent}%,\n ${maskColor} ${threshold + indent}%\n )`;\n }, [\n active,\n props.showOnFocus,\n props.disabled,\n theme.inputTextColor,\n theme.inputPlaceholderColor,\n theme.inputTextColorDisabled,\n globalObject,\n props.style?.textAlign,\n ]);\n\n const debouncedPaintText = useCallback(() => debounce(paintText), [paintText])();\n\n const handleInput = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n debouncedPaintText();\n\n onInput?.(e);\n },\n [debouncedPaintText, onInput],\n );\n\n const handleFocus = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n updateActive();\n\n focused.current = true;\n\n onFocus?.(e);\n },\n [onFocus, updateActive],\n );\n\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n updateActive();\n\n focused.current = false;\n\n onBlur?.(e);\n },\n [onBlur, updateActive],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n input: inputRef.current,\n getRootNode: () => inputRef.current,\n }),\n [],\n );\n\n useEffect(() => {\n debouncedPaintText();\n updateActive();\n\n return stopUpdateActive;\n }, [updateActive, props.value, props.defaultValue, theme, debouncedPaintText, stopUpdateActive]);\n\n return (\n <>\n {React.cloneElement(children, {\n ...inputProps,\n onInput: handleInput,\n onFocus: handleFocus,\n onBlur: handleBlur,\n inputRef,\n className: cx(props.className, styles.root(), {\n [globalClasses.input]: active,\n }),\n })}\n {active && <span style={{ visibility: 'hidden', position: 'absolute', whiteSpace: 'pre' }} ref={spanRef} />}\n </>\n );\n },\n);\n"]}
1
+ {"version":3,"file":"ColorableInputElement.js","sourceRoot":"","sources":["ColorableInputElement.tsx"],"names":[],"mappings":"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","sourcesContent":["import debounce from 'lodash.debounce';\nimport React, { useCallback, useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport type { ForwardedRef } from 'react';\n\nimport { forwardRefAndName } from '../../../lib/forwardRefAndName.js';\nimport { isBrowser } from '../../../lib/globalObject.js';\nimport { useEmotion, useGlobal, useStyles } from '../../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../../lib/theming/ThemeContext.js';\nimport type { InputElement, InputElementProps } from '../../Input/index.js';\nimport { getStyles, globalClasses } from './ColorableInputElement.styles.js';\n\nexport type ColorableInputElementProps = InputElementProps & {\n alwaysShowMask?: boolean;\n showOnFocus?: boolean;\n children: React.ReactElement<any>;\n};\n\n// Возможно придётся включить.\n// Иногда, на тяжёлых страницах, текст рендерится итеративно.\n// Из-за этого могут оставаться артефакты при покраске компонента, которые пропадут только после фокуса.\n// setInterval(() => window.requestAnimationFrame(() => dictionary.forEach((paint) => paint())), 1000);\n\nexport const ColorableInputElement = forwardRefAndName(\n 'ColorableInputElement',\n function ColorableInputElement(props: ColorableInputElementProps, ref: ForwardedRef<InputElement>) {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const spanRef = useRef<HTMLSpanElement | null>(null);\n const focused = useRef(false);\n const updateActiveTimer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const globalObject = useGlobal();\n const emotion = useEmotion();\n const { cx } = emotion;\n const styles = useStyles(getStyles);\n const theme = useContext(ThemeContext);\n const [active, setActive] = useState(\n Boolean(props.alwaysShowMask || (!props.placeholder && (props.value || props.defaultValue))),\n );\n\n const { children, onInput, onFocus, onBlur, showOnFocus, alwaysShowMask, ...inputProps } = props;\n\n const stopUpdateActive = useCallback(() => {\n clearTimeout(updateActiveTimer.current);\n }, []);\n\n const updateActive = useCallback(() => {\n stopUpdateActive();\n updateActiveTimer.current = setTimeout(() => {\n let nextActive = true;\n if (inputRef.current) {\n const { clientWidth, scrollWidth } = inputRef.current;\n const scrollable = scrollWidth > clientWidth;\n\n const placeholderShown = inputRef.current?.parentElement?.querySelector(':placeholder-shown');\n\n nextActive = !(scrollable || placeholderShown);\n }\n setActive(nextActive);\n }, 0);\n }, [stopUpdateActive]);\n\n const paintText = useCallback(() => {\n if (!isBrowser(globalObject) || !spanRef.current || !inputRef.current || !active) {\n inputRef.current && (inputRef.current.style.backgroundImage = '');\n inputRef.current?.classList.remove(globalClasses.input);\n\n return;\n }\n\n inputRef.current?.classList.add(globalClasses.input);\n\n let shadow = spanRef.current.shadowRoot;\n let typedValueElement = shadow?.getElementById('typed-value');\n let fullValueElement = shadow?.getElementById('full-value');\n\n if (!typedValueElement || !fullValueElement) {\n shadow = spanRef.current.attachShadow({ mode: 'open' });\n\n typedValueElement = globalObject.document.createElement('span');\n fullValueElement = globalObject.document.createElement('span');\n typedValueElement.setAttribute('id', 'typed-value');\n fullValueElement.setAttribute('id', 'full-value');\n\n shadow.append(typedValueElement, fullValueElement);\n }\n\n const style = getComputedStyle(inputRef.current);\n\n typedValueElement.textContent =\n ((inputRef.current.getAttribute('data-unmasked-value') || focused.current) &&\n inputRef.current.getAttribute('data-typed-value')) ||\n '';\n\n fullValueElement.textContent = inputRef.current.value || inputRef.current.defaultValue || '';\n\n const inputRect = inputRef.current.getBoundingClientRect();\n const typedValueRect = typedValueElement.getBoundingClientRect();\n const fullValueRect = fullValueElement.getBoundingClientRect();\n\n const threshold = typedValueRect.width / (inputRect.width / 100);\n const degree = style.fontStyle === 'italic' ? 100 : 90;\n const restValueWidth = 1 - Math.min(fullValueRect.width / inputRect.width, 1);\n\n let typedValueColor = theme.inputTextColor;\n let maskColor = theme.inputPlaceholderColor;\n let indent = 0;\n\n if (props.disabled) {\n typedValueColor = theme.inputTextColorDisabled;\n maskColor = theme.inputTextColorDisabled;\n }\n if (props.showOnFocus) {\n maskColor = focused.current ? maskColor : 'transparent';\n }\n if (props.style?.textAlign === 'right') {\n indent = 100 * restValueWidth;\n }\n if (props.style?.textAlign === 'center') {\n indent = 50 * restValueWidth;\n }\n\n inputRef.current.style.backgroundImage = `\n linear-gradient(\n ${degree}deg,\n ${typedValueColor} ${threshold + indent}%,\n ${maskColor} ${threshold + indent}%\n )`;\n }, [\n active,\n props.showOnFocus,\n props.disabled,\n theme.inputTextColor,\n theme.inputPlaceholderColor,\n theme.inputTextColorDisabled,\n globalObject,\n props.style?.textAlign,\n ]);\n\n const debouncedPaintText = useCallback(() => debounce(paintText), [paintText])();\n\n const handleInput = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n debouncedPaintText();\n\n onInput?.(e);\n },\n [debouncedPaintText, onInput],\n );\n\n const handleFocus = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n updateActive();\n\n focused.current = true;\n\n onFocus?.(e);\n },\n [onFocus, updateActive],\n );\n\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n updateActive();\n\n focused.current = false;\n\n onBlur?.(e);\n },\n [onBlur, updateActive],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n input: inputRef.current,\n getRootNode: () => inputRef.current,\n }),\n [],\n );\n\n useEffect(() => {\n debouncedPaintText();\n updateActive();\n\n return stopUpdateActive;\n }, [updateActive, props.value, props.defaultValue, theme, debouncedPaintText, stopUpdateActive]);\n\n return (\n <>\n {React.cloneElement(children, {\n ...inputProps,\n onInput: handleInput,\n onFocus: handleFocus,\n onBlur: handleBlur,\n inputRef,\n className: cx(props.className, styles.root(), {\n [globalClasses.input]: active,\n }),\n })}\n {active && <span style={{ visibility: 'hidden', position: 'absolute', whiteSpace: 'pre' }} ref={spanRef} />}\n </>\n );\n },\n);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ColorableInputElement.styles.js","sourceRoot":"","sources":["../../../../components/MaskedInput/ColorableInputElement/ColorableInputElement.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAE3E,MAAM,CAAC,IAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAC/C,KAAK,EAAE,OAAO;CACf,CAAC,CAAC;AAEH,MAAM,CAAC,IAAM,SAAS,GAAG,gBAAgB,CAAC,UAAC,EAAgB;QAAd,GAAG,SAAA;IAAgB,OAAA,CAAC;QAC/D,IAAI;YACF,OAAO,GAAG,+TAAA,YACJ,EAAmB,8OAQxB,KARK,aAAa,CAAC,KAAK,EAQvB;QACJ,CAAC;KACF,CAAC;AAb8D,CAa9D,CAAC,CAAC","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { memoizeGetStyles, prefix } from '../../../lib/theming/Emotion.js';\n\nexport const globalClasses = prefix('colorable')({\n input: 'input',\n});\n\nexport const getStyles = memoizeGetStyles(({ css }: Emotion) => ({\n root() {\n return css`\n &.${globalClasses.input} {\n display: inline-block;\n background-color: transparent;\n background-size: 100%;\n background-repeat: repeat;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n `;\n },\n}));\n"]}
1
+ {"version":3,"file":"ColorableInputElement.styles.js","sourceRoot":"","sources":["ColorableInputElement.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAE3E,MAAM,CAAC,IAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAC/C,KAAK,EAAE,OAAO;CACf,CAAC,CAAC;AAEH,MAAM,CAAC,IAAM,SAAS,GAAG,gBAAgB,CAAC,UAAC,EAAgB;QAAd,GAAG,SAAA;IAAgB,OAAA,CAAC;QAC/D,IAAI;YACF,OAAO,GAAG,+TAAA,YACJ,EAAmB,8OAQxB,KARK,aAAa,CAAC,KAAK,EAQvB;QACJ,CAAC;KACF,CAAC;AAb8D,CAa9D,CAAC,CAAC","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { memoizeGetStyles, prefix } from '../../../lib/theming/Emotion.js';\n\nexport const globalClasses = prefix('colorable')({\n input: 'input',\n});\n\nexport const getStyles = memoizeGetStyles(({ css }: Emotion) => ({\n root() {\n return css`\n &.${globalClasses.input} {\n display: inline-block;\n background-color: transparent;\n background-size: 100%;\n background-repeat: repeat;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n `;\n },\n}));\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../components/MaskedInput/ColorableInputElement/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC","sourcesContent":["export * from './ColorableInputElement.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC","sourcesContent":["export * from './ColorableInputElement.js';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"FixedIMaskInput.js","sourceRoot":"","sources":["../../../components/MaskedInput/FixedIMaskInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { InputMask, MaskedPatternOptions } from '@skbkontur/imask';\nimport { IMaskInput } from '@skbkontur/react-imask';\nimport type { IMaskInputProps } from '@skbkontur/react-imask';\nimport React, { useEffect, useImperativeHandle, useRef } from 'react';\n\nimport {\n isKeyArrow,\n isKeyArrowHorizontal,\n isKeyArrowLeft,\n isKeyArrowUp,\n isKeyEnd,\n isKeyHome,\n isModShift,\n isShortcutJumpCaret,\n isShortcutSelectAll,\n someKeys,\n} from '../../lib/events/keyboard/identifiers.js';\nimport { MouseDrag } from '../../lib/events/MouseDrag.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { scrollInputCaretIntoView } from '../../lib/scrollInputCaretIntoView.js';\n\nexport type FixedIMaskInputProps = IMaskInputProps<HTMLInputElement>;\n\ntype HeadDirection = 'left' | 'right';\ntype SelectionDirection = 'forward' | 'backward' | 'none';\ntype SelectionSet = [number, number, SelectionDirection];\n\ninterface IMaskRefType {\n maskRef: InputMask<MaskedPatternOptions>;\n element: HTMLInputElement;\n}\n\nexport const FixedIMaskInput = forwardRefAndName(\n 'FixedIMaskInput',\n function FixedIMaskInput(props: FixedIMaskInputProps, ref: React.Ref<IMaskRefType | null>) {\n const { inputRef, ...restProps } = props;\n const imaskRef = useRef<IMaskRefType>(null);\n const focused = useRef(false);\n\n useEffect(() => {\n if (imaskRef.current?.element) {\n fillTypedValue();\n const mouseDrag = MouseDrag.listen(imaskRef.current.element).onMouseDragEnd((e) => {\n let direction: SelectionDirection = 'none';\n\n if (\n mouseDrag.mouseDragStartEvent &&\n imaskRef.current?.element.selectionStart !== imaskRef.current?.element.selectionEnd\n ) {\n direction = mouseDrag.mouseDragStartEvent.pageX > e.pageX ? 'backward' : 'forward';\n }\n\n const [start, end] = getSelection();\n setSelection(start, end, direction);\n scrollCaretIntoView();\n });\n }\n }, []);\n\n useImperativeHandle<typeof imaskRef.current, typeof imaskRef.current>(ref, () => imaskRef.current, [\n imaskRef.current,\n ]);\n\n return (\n <IMaskInput\n {...restProps}\n ref={imaskRef}\n inputRef={inputRef}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onMouseUp={handleMouseUp}\n onAccept={handleAccept}\n onInput={handleInput}\n />\n );\n\n function getTypedValue() {\n const { _value = '', displayValue = '' } = imaskRef.current?.maskRef.masked || {};\n const end = getMaxCaretPosition();\n const value = _value !== '' || focused.current === true ? displayValue : '';\n\n return value.slice(0, end);\n }\n\n function fillTypedValue() {\n imaskRef.current?.element.setAttribute('data-typed-value', getTypedValue());\n imaskRef.current?.element.setAttribute('data-unmasked-value', imaskRef.current?.maskRef.unmaskedValue);\n }\n\n function getMaxCaretPosition(): number {\n const maskChars = [];\n if (imaskRef.current) {\n maskChars.push(imaskRef.current.maskRef.masked.placeholderChar);\n if (imaskRef.current.maskRef.masked.blocks) {\n (Object.values(imaskRef.current.maskRef.masked.blocks) as Array<{ placeholderChar?: string }>).forEach(\n ({ placeholderChar }) => placeholderChar && maskChars.push(placeholderChar),\n );\n }\n return imaskRef.current.element.value.split(new RegExp(maskChars.join('|')))[0].length;\n }\n\n return Infinity;\n }\n\n function normalizeSelection() {\n const [start, end] = getSelection();\n const max = getMaxCaretPosition();\n if (end > max) {\n setSelection(start, max);\n }\n }\n\n function getNormalizedRange(calc: number | unknown) {\n return typeof calc === 'number' ? Math.min(getMaxCaretPosition(), Math.max(0, calc)) : 0;\n }\n\n function getSelection(): SelectionSet {\n if (imaskRef.current) {\n return [\n imaskRef.current.element.selectionStart || 0,\n imaskRef.current.element.selectionEnd || 0,\n imaskRef.current.element.selectionDirection || 'none',\n ];\n }\n return [0, 0, 'none'];\n }\n\n function setSelection(...[start, end, direction]: Parameters<HTMLInputElement['setSelectionRange']>) {\n imaskRef.current?.element.setSelectionRange(\n getNormalizedRange(start),\n getNormalizedRange(end),\n direction || 'none',\n );\n }\n\n function scrollCaretIntoView() {\n const element = imaskRef.current?.element;\n if (element) {\n scrollInputCaretIntoView(element);\n }\n }\n\n function jumpCaret(prev: number, headDirection: HeadDirection) {\n const word = /а-яa-z0-9_/.valueOf();\n const wordRegExp = new RegExp(`([${word}])+[\\\\s]*|([^${word}])+`, 'gi');\n let next = headDirection === 'right' ? prev : 0;\n imaskRef.current?.element.value.match(wordRegExp)?.reduce<number[]>((s, a) => {\n const pos = a.length + (s.slice(-1)[0] || 0);\n if (headDirection === 'right' && next === prev && next < pos) {\n next = getNormalizedRange(pos);\n } else if (headDirection === 'left' && prev > pos) {\n next = getNormalizedRange(pos);\n }\n return [...s, pos];\n }, []);\n return next;\n }\n\n /**\n * Вычислят положение каретки при управлении клавишами\n * @param e\n */\n function calcSelection(e: React.KeyboardEvent<HTMLInputElement>): SelectionSet {\n const [start, end, direction] = getSelection();\n const isSelectionMode = isModShift()(e);\n let tail = start !== end && direction === 'backward' ? end : start;\n let head = start !== end && direction === 'backward' ? start : end;\n const headDirection: HeadDirection = someKeys(isKeyArrowLeft, isKeyArrowUp, isKeyHome)(e) ? 'left' : 'right';\n const step = isKeyArrowHorizontal(e) ? 1 : Infinity;\n const increment = headDirection === 'left' ? -step : step;\n if (isShortcutJumpCaret(e)) {\n head = jumpCaret(head, headDirection);\n } else if (head !== tail && !isSelectionMode && isKeyArrowHorizontal(e)) {\n head = headDirection === 'right' ? Math.max(tail, head) : Math.min(tail, head);\n } else {\n head = head + increment;\n }\n if (isSelectionMode) {\n const start = Math.min(tail, head);\n const end = Math.max(tail, head);\n return [getNormalizedRange(start), getNormalizedRange(end), end === head ? 'forward' : 'backward'];\n }\n tail = head;\n return [getNormalizedRange(tail), getNormalizedRange(head), 'none'];\n }\n\n function handleMouseUp(e: React.MouseEvent<HTMLInputElement>) {\n normalizeSelection();\n\n props.onMouseUp?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n focused.current = true;\n fillTypedValue();\n\n setTimeout(normalizeSelection);\n\n props.onFocus?.(e);\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n focused.current = false;\n fillTypedValue();\n\n props.onBlur?.(e);\n }\n\n function handleAccept(...args: Parameters<Required<IMaskInputProps<HTMLInputElement>>['onAccept']>) {\n fillTypedValue();\n\n props.onAccept?.(...args);\n }\n\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const maskRef = imaskRef.current?.maskRef;\n if (maskRef && maskRef.rawInputValue === '') {\n // в случае, когда пользователь стер все из инпута, очищаем value полностью\n // иначе в value остаются символы маски\n props.onAccept?.('', maskRef, e.nativeEvent as InputEvent);\n }\n\n props.onInput?.(e);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n const nearest = getMaxCaretPosition();\n if (isShortcutSelectAll(e)) {\n e.preventDefault();\n setSelection(0, nearest);\n scrollCaretIntoView();\n } else if (isKeyArrow(e) || isKeyEnd(e) || isKeyHome(e)) {\n e.preventDefault();\n const [start, end, direction] = calcSelection(e);\n setSelection(start, end, direction);\n scrollCaretIntoView();\n }\n\n props.onKeyDown?.(e);\n }\n },\n);\n"]}
1
+ {"version":3,"file":"FixedIMaskInput.js","sourceRoot":"","sources":["FixedIMaskInput.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAEtE,OAAO,EACL,UAAU,EACV,oBAAoB,EACpB,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,QAAQ,GACT,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AAajF,MAAM,CAAC,IAAM,eAAe,GAAG,iBAAiB,CAC9C,iBAAiB,EACjB,SAAS,eAAe,CAAC,KAA2B,EAAE,GAAmC;IAC/E,IAAA,QAAQ,GAAmB,KAAK,SAAxB,EAAK,SAAS,UAAK,KAAK,EAAlC,YAA0B,CAAF,CAAW;IACzC,IAAM,QAAQ,GAAG,MAAM,CAAe,IAAI,CAAC,CAAC;IAC5C,IAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE9B,SAAS,CAAC;;QACR,IAAI,MAAA,QAAQ,CAAC,OAAO,0CAAE,OAAO,EAAE,CAAC;YAC9B,cAAc,EAAE,CAAC;YACjB,IAAM,WAAS,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,UAAC,CAAC;;gBAC5E,IAAI,SAAS,GAAuB,MAAM,CAAC;gBAE3C,IACE,WAAS,CAAC,mBAAmB;oBAC7B,CAAA,MAAA,QAAQ,CAAC,OAAO,0CAAE,OAAO,CAAC,cAAc,OAAK,MAAA,QAAQ,CAAC,OAAO,0CAAE,OAAO,CAAC,YAAY,CAAA,EACnF,CAAC;oBACD,SAAS,GAAG,WAAS,CAAC,mBAAmB,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;gBACrF,CAAC;gBAEK,IAAA,KAAe,YAAY,EAAE,EAA5B,KAAK,QAAA,EAAE,GAAG,QAAkB,CAAC;gBACpC,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;gBACpC,mBAAmB,EAAE,CAAC;YACxB,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,mBAAmB,CAAmD,GAAG,EAAE,cAAM,OAAA,QAAQ,CAAC,OAAO,EAAhB,CAAgB,EAAE;QACjG,QAAQ,CAAC,OAAO;KACjB,CAAC,CAAC;IAEH,OAAO,CACL,oBAAC,UAAU,eACL,SAAS,IACb,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,WAAW,IACpB,CACH,CAAC;IAEF,SAAS,aAAa;;QACd,IAAA,KAAqC,CAAA,MAAA,QAAQ,CAAC,OAAO,0CAAE,OAAO,CAAC,MAAM,KAAI,EAAE,EAAzE,cAAW,EAAX,MAAM,mBAAG,EAAE,KAAA,EAAE,oBAAiB,EAAjB,YAAY,mBAAG,EAAE,KAA2C,CAAC;QAClF,IAAM,GAAG,GAAG,mBAAmB,EAAE,CAAC;QAClC,IAAM,KAAK,GAAG,MAAM,KAAK,EAAE,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QAE5E,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,SAAS,cAAc;;QACrB,MAAA,QAAQ,CAAC,OAAO,0CAAE,OAAO,CAAC,YAAY,CAAC,kBAAkB,EAAE,aAAa,EAAE,CAAC,CAAC;QAC5E,MAAA,QAAQ,CAAC,OAAO,0CAAE,OAAO,CAAC,YAAY,CAAC,qBAAqB,EAAE,MAAA,QAAQ,CAAC,OAAO,0CAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACzG,CAAC;IAED,SAAS,mBAAmB;QAC1B,IAAM,SAAS,GAAG,EAAE,CAAC;QACrB,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAChE,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC1C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAyC,CAAC,OAAO,CACpG,UAAC,EAAmB;wBAAjB,eAAe,qBAAA;oBAAO,OAAA,eAAe,IAAI,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC;gBAAlD,CAAkD,CAC5E,CAAC;YACJ,CAAC;YACD,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACzF,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,SAAS,kBAAkB;QACnB,IAAA,KAAe,YAAY,EAAE,EAA5B,KAAK,QAAA,EAAE,GAAG,QAAkB,CAAC;QACpC,IAAM,GAAG,GAAG,mBAAmB,EAAE,CAAC;QAClC,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;YACd,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,SAAS,kBAAkB,CAAC,IAAsB;QAChD,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC;IAED,SAAS,YAAY;QACnB,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO;gBACL,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC;gBAC5C,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC;gBAC1C,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,IAAI,MAAM;aACtD,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACxB,CAAC;IAED,SAAS,YAAY;;QAAC,YAA6E;aAA7E,UAA6E,EAA7E,qBAA6E,EAA7E,IAA6E;YAA7E,uBAA6E;;QAA7E,IAAI,KAAK,QAAA,EAAE,GAAG,QAAA,EAAE,SAAS,QAAA,CAAoD;QACjG,MAAA,QAAQ,CAAC,OAAO,0CAAE,OAAO,CAAC,iBAAiB,CACzC,kBAAkB,CAAC,KAAK,CAAC,EACzB,kBAAkB,CAAC,GAAG,CAAC,EACvB,SAAS,IAAI,MAAM,CACpB,CAAC;IACJ,CAAC;IAED,SAAS,mBAAmB;;QAC1B,IAAM,OAAO,GAAG,MAAA,QAAQ,CAAC,OAAO,0CAAE,OAAO,CAAC;QAC1C,IAAI,OAAO,EAAE,CAAC;YACZ,wBAAwB,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,SAAS,SAAS,CAAC,IAAY,EAAE,aAA4B;;QAC3D,IAAM,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;QACpC,IAAM,UAAU,GAAG,IAAI,MAAM,CAAC,YAAK,IAAI,0BAAgB,IAAI,QAAK,EAAE,IAAI,CAAC,CAAC;QACxE,IAAI,IAAI,GAAG,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,MAAA,MAAA,QAAQ,CAAC,OAAO,0CAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,0CAAE,MAAM,CAAW,UAAC,CAAC,EAAE,CAAC;YACvE,IAAM,GAAG,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7C,IAAI,aAAa,KAAK,OAAO,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;gBAC7D,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;YACjC,CAAC;iBAAM,IAAI,aAAa,KAAK,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;gBAClD,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;YACjC,CAAC;YACD,uCAAW,CAAC,UAAE,GAAG,UAAE;QACrB,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,SAAS,aAAa,CAAC,CAAwC;QACvD,IAAA,KAA0B,YAAY,EAAE,EAAvC,KAAK,QAAA,EAAE,GAAG,QAAA,EAAE,SAAS,QAAkB,CAAC;QAC/C,IAAM,eAAe,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,IAAI,IAAI,GAAG,KAAK,KAAK,GAAG,IAAI,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;QACnE,IAAI,IAAI,GAAG,KAAK,KAAK,GAAG,IAAI,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;QACnE,IAAM,aAAa,GAAkB,QAAQ,CAAC,cAAc,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAC7G,IAAM,IAAI,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACpD,IAAM,SAAS,GAAG,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1D,IAAI,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACxC,CAAC;aAAM,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,eAAe,IAAI,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,IAAI,GAAG,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjF,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;QAC1B,CAAC;QACD,IAAI,eAAe,EAAE,CAAC;YACpB,IAAM,OAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACnC,IAAM,KAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACjC,OAAO,CAAC,kBAAkB,CAAC,OAAK,CAAC,EAAE,kBAAkB,CAAC,KAAG,CAAC,EAAE,KAAG,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACrG,CAAC;QACD,IAAI,GAAG,IAAI,CAAC;QACZ,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IACtE,CAAC;IAED,SAAS,aAAa,CAAC,CAAqC;;QAC1D,kBAAkB,EAAE,CAAC;QAErB,MAAA,KAAK,CAAC,SAAS,sDAAG,CAAC,CAAC,CAAC;IACvB,CAAC;IAED,SAAS,WAAW,CAAC,CAAqC;;QACxD,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QACvB,cAAc,EAAE,CAAC;QAEjB,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAE/B,MAAA,KAAK,CAAC,OAAO,sDAAG,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,SAAS,UAAU,CAAC,CAAqC;;QACvD,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;QACxB,cAAc,EAAE,CAAC;QAEjB,MAAA,KAAK,CAAC,MAAM,sDAAG,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,SAAS,YAAY;;QAAC,cAA4E;aAA5E,UAA4E,EAA5E,qBAA4E,EAA5E,IAA4E;YAA5E,yBAA4E;;QAChG,cAAc,EAAE,CAAC;QAEjB,MAAA,KAAK,CAAC,QAAQ,gFAAM,IAAI,SAAC,CAAC;IAC5B,CAAC;IAED,SAAS,WAAW,CAAC,CAAsC;;QACzD,IAAM,OAAO,GAAG,MAAA,QAAQ,CAAC,OAAO,0CAAE,OAAO,CAAC;QAC1C,IAAI,OAAO,IAAI,OAAO,CAAC,aAAa,KAAK,EAAE,EAAE,CAAC;YAC5C,2EAA2E;YAC3E,uCAAuC;YACvC,MAAA,KAAK,CAAC,QAAQ,sDAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,WAAyB,CAAC,CAAC;QAC7D,CAAC;QAED,MAAA,KAAK,CAAC,OAAO,sDAAG,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,SAAS,aAAa,CAAC,CAAwC;;QAC7D,IAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;QACtC,IAAI,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACzB,mBAAmB,EAAE,CAAC;QACxB,CAAC;aAAM,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,CAAC,CAAC,cAAc,EAAE,CAAC;YACb,IAAA,KAA0B,aAAa,CAAC,CAAC,CAAC,EAAzC,KAAK,QAAA,EAAE,GAAG,QAAA,EAAE,SAAS,QAAoB,CAAC;YACjD,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;YACpC,mBAAmB,EAAE,CAAC;QACxB,CAAC;QAED,MAAA,KAAK,CAAC,SAAS,sDAAG,CAAC,CAAC,CAAC;IACvB,CAAC;AACH,CAAC,CACF,CAAC","sourcesContent":["import type { InputMask, MaskedPatternOptions } from '@skbkontur/imask';\nimport { IMaskInput } from '@skbkontur/react-imask';\nimport type { IMaskInputProps } from '@skbkontur/react-imask';\nimport React, { useEffect, useImperativeHandle, useRef } from 'react';\n\nimport {\n isKeyArrow,\n isKeyArrowHorizontal,\n isKeyArrowLeft,\n isKeyArrowUp,\n isKeyEnd,\n isKeyHome,\n isModShift,\n isShortcutJumpCaret,\n isShortcutSelectAll,\n someKeys,\n} from '../../lib/events/keyboard/identifiers.js';\nimport { MouseDrag } from '../../lib/events/MouseDrag.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { scrollInputCaretIntoView } from '../../lib/scrollInputCaretIntoView.js';\n\nexport type FixedIMaskInputProps = IMaskInputProps<HTMLInputElement>;\n\ntype HeadDirection = 'left' | 'right';\ntype SelectionDirection = 'forward' | 'backward' | 'none';\ntype SelectionSet = [number, number, SelectionDirection];\n\ninterface IMaskRefType {\n maskRef: InputMask<MaskedPatternOptions>;\n element: HTMLInputElement;\n}\n\nexport const FixedIMaskInput = forwardRefAndName(\n 'FixedIMaskInput',\n function FixedIMaskInput(props: FixedIMaskInputProps, ref: React.Ref<IMaskRefType | null>) {\n const { inputRef, ...restProps } = props;\n const imaskRef = useRef<IMaskRefType>(null);\n const focused = useRef(false);\n\n useEffect(() => {\n if (imaskRef.current?.element) {\n fillTypedValue();\n const mouseDrag = MouseDrag.listen(imaskRef.current.element).onMouseDragEnd((e) => {\n let direction: SelectionDirection = 'none';\n\n if (\n mouseDrag.mouseDragStartEvent &&\n imaskRef.current?.element.selectionStart !== imaskRef.current?.element.selectionEnd\n ) {\n direction = mouseDrag.mouseDragStartEvent.pageX > e.pageX ? 'backward' : 'forward';\n }\n\n const [start, end] = getSelection();\n setSelection(start, end, direction);\n scrollCaretIntoView();\n });\n }\n }, []);\n\n useImperativeHandle<typeof imaskRef.current, typeof imaskRef.current>(ref, () => imaskRef.current, [\n imaskRef.current,\n ]);\n\n return (\n <IMaskInput\n {...restProps}\n ref={imaskRef}\n inputRef={inputRef}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onMouseUp={handleMouseUp}\n onAccept={handleAccept}\n onInput={handleInput}\n />\n );\n\n function getTypedValue() {\n const { _value = '', displayValue = '' } = imaskRef.current?.maskRef.masked || {};\n const end = getMaxCaretPosition();\n const value = _value !== '' || focused.current === true ? displayValue : '';\n\n return value.slice(0, end);\n }\n\n function fillTypedValue() {\n imaskRef.current?.element.setAttribute('data-typed-value', getTypedValue());\n imaskRef.current?.element.setAttribute('data-unmasked-value', imaskRef.current?.maskRef.unmaskedValue);\n }\n\n function getMaxCaretPosition(): number {\n const maskChars = [];\n if (imaskRef.current) {\n maskChars.push(imaskRef.current.maskRef.masked.placeholderChar);\n if (imaskRef.current.maskRef.masked.blocks) {\n (Object.values(imaskRef.current.maskRef.masked.blocks) as Array<{ placeholderChar?: string }>).forEach(\n ({ placeholderChar }) => placeholderChar && maskChars.push(placeholderChar),\n );\n }\n return imaskRef.current.element.value.split(new RegExp(maskChars.join('|')))[0].length;\n }\n\n return Infinity;\n }\n\n function normalizeSelection() {\n const [start, end] = getSelection();\n const max = getMaxCaretPosition();\n if (end > max) {\n setSelection(start, max);\n }\n }\n\n function getNormalizedRange(calc: number | unknown) {\n return typeof calc === 'number' ? Math.min(getMaxCaretPosition(), Math.max(0, calc)) : 0;\n }\n\n function getSelection(): SelectionSet {\n if (imaskRef.current) {\n return [\n imaskRef.current.element.selectionStart || 0,\n imaskRef.current.element.selectionEnd || 0,\n imaskRef.current.element.selectionDirection || 'none',\n ];\n }\n return [0, 0, 'none'];\n }\n\n function setSelection(...[start, end, direction]: Parameters<HTMLInputElement['setSelectionRange']>) {\n imaskRef.current?.element.setSelectionRange(\n getNormalizedRange(start),\n getNormalizedRange(end),\n direction || 'none',\n );\n }\n\n function scrollCaretIntoView() {\n const element = imaskRef.current?.element;\n if (element) {\n scrollInputCaretIntoView(element);\n }\n }\n\n function jumpCaret(prev: number, headDirection: HeadDirection) {\n const word = /а-яa-z0-9_/.valueOf();\n const wordRegExp = new RegExp(`([${word}])+[\\\\s]*|([^${word}])+`, 'gi');\n let next = headDirection === 'right' ? prev : 0;\n imaskRef.current?.element.value.match(wordRegExp)?.reduce<number[]>((s, a) => {\n const pos = a.length + (s.slice(-1)[0] || 0);\n if (headDirection === 'right' && next === prev && next < pos) {\n next = getNormalizedRange(pos);\n } else if (headDirection === 'left' && prev > pos) {\n next = getNormalizedRange(pos);\n }\n return [...s, pos];\n }, []);\n return next;\n }\n\n /**\n * Вычислят положение каретки при управлении клавишами\n * @param e\n */\n function calcSelection(e: React.KeyboardEvent<HTMLInputElement>): SelectionSet {\n const [start, end, direction] = getSelection();\n const isSelectionMode = isModShift()(e);\n let tail = start !== end && direction === 'backward' ? end : start;\n let head = start !== end && direction === 'backward' ? start : end;\n const headDirection: HeadDirection = someKeys(isKeyArrowLeft, isKeyArrowUp, isKeyHome)(e) ? 'left' : 'right';\n const step = isKeyArrowHorizontal(e) ? 1 : Infinity;\n const increment = headDirection === 'left' ? -step : step;\n if (isShortcutJumpCaret(e)) {\n head = jumpCaret(head, headDirection);\n } else if (head !== tail && !isSelectionMode && isKeyArrowHorizontal(e)) {\n head = headDirection === 'right' ? Math.max(tail, head) : Math.min(tail, head);\n } else {\n head = head + increment;\n }\n if (isSelectionMode) {\n const start = Math.min(tail, head);\n const end = Math.max(tail, head);\n return [getNormalizedRange(start), getNormalizedRange(end), end === head ? 'forward' : 'backward'];\n }\n tail = head;\n return [getNormalizedRange(tail), getNormalizedRange(head), 'none'];\n }\n\n function handleMouseUp(e: React.MouseEvent<HTMLInputElement>) {\n normalizeSelection();\n\n props.onMouseUp?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n focused.current = true;\n fillTypedValue();\n\n setTimeout(normalizeSelection);\n\n props.onFocus?.(e);\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n focused.current = false;\n fillTypedValue();\n\n props.onBlur?.(e);\n }\n\n function handleAccept(...args: Parameters<Required<IMaskInputProps<HTMLInputElement>>['onAccept']>) {\n fillTypedValue();\n\n props.onAccept?.(...args);\n }\n\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const maskRef = imaskRef.current?.maskRef;\n if (maskRef && maskRef.rawInputValue === '') {\n // в случае, когда пользователь стер все из инпута, очищаем value полностью\n // иначе в value остаются символы маски\n props.onAccept?.('', maskRef, e.nativeEvent as InputEvent);\n }\n\n props.onInput?.(e);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n const nearest = getMaxCaretPosition();\n if (isShortcutSelectAll(e)) {\n e.preventDefault();\n setSelection(0, nearest);\n scrollCaretIntoView();\n } else if (isKeyArrow(e) || isKeyEnd(e) || isKeyHome(e)) {\n e.preventDefault();\n const [start, end, direction] = calcSelection(e);\n setSelection(start, end, direction);\n scrollCaretIntoView();\n }\n\n props.onKeyDown?.(e);\n }\n },\n);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MaskedInput.helpers.js","sourceRoot":"","sources":["../../../components/MaskedInput/MaskedInput.helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,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 { type Definitions } from '@skbkontur/imask';\n\nimport { isNonNullable } from '../../lib/utils.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"]}
1
+ {"version":3,"file":"MaskedInput.helpers.js","sourceRoot":"","sources":["MaskedInput.helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,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 { type Definitions } from '@skbkontur/imask';\n\nimport { isNonNullable } from '../../lib/utils.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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MaskedInput.js","sourceRoot":"","sources":["../../../components/MaskedInput/MaskedInput.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 { InputProps, InputType } from '../Input/index.js';\nimport { Input } from '../Input/index.js';\nimport { ColorableInputElement } from './ColorableInputElement/index.js';\nimport { FixedIMaskInput } from './FixedIMaskInput.js';\nimport { getDefinitions, getMaskChar } from './MaskedInput.helpers.js';\nimport { getStyles, globalClasses } from './MaskedInput.styles.js';\n\nexport type MaskedInputOnBeforePasteValue = (value: string) => string;\n\nexport interface MaskedProps {\n /** Шаблон ввода, определяющий допустимые символы. */\n mask: string;\n\n /** Плейсхолдер, который отображается на месте ещё не введённых пользователем символов.\n * @default _ */\n maskChar?: string;\n\n /** Словарь правил для настройки маски, где:\n * ключ — символ для использования в маске;\n * значение — регулярка-правило.\n * @default { '9': '[0-9]', 'a': '[A-Za-z]', '*': '[A-Za-z0-9]' } */\n formatChars?: Record<string, string>;\n\n /** Всегда показывать символы маски, независимо от фокуса в поле.\n * @default false */\n alwaysShowMask?: boolean;\n\n /** Событие некорректного ввода.\n * Вторым аргументом передаётся метод вспыхивания рамки поля.\n *\n * Если обработчик не задан, то при событии рамка всегда вспыхивает.\n *\n * @param value значение поля\n * @param blink метод вспыхивания рамки поля\n */\n onUnexpectedInput?: (value: string, blink: () => void) => void;\n\n /**\n * Событие перед вставкой текста в поле.\n * Вызывается с аргументом value — текст из буфера.\n *\n * Обработчик должен вернуть текст — он попадёт в поле.\n *\n * @param value значение вставки.\n */\n onBeforePasteValue?: MaskedInputOnBeforePasteValue;\n\n /** Убирает из value символы маски, которые пользователь не вводил.\n * @default false */\n unmask?: boolean;\n\n /** Раскрашивает символы маски.\n * @default true\n * @ignore */\n colored?: boolean;\n\n /** Задает пропсы для компонента `IMaskInput`. Необходимы для юнит-тестов\n * @ignore */\n imaskProps?: IMaskInputProps<HTMLInputElement>;\n}\n\nexport type MaskInputType = Exclude<InputType, 'number' | 'date' | 'time' | 'password'>;\n\nexport const getSafeMaskInputType = (type?: InputType): MaskInputType | undefined => {\n if (!type) {\n return type;\n }\n\n switch (type) {\n case 'number':\n case 'date':\n case 'time':\n case 'password':\n return 'text';\n default:\n return type;\n }\n};\n\nexport interface MaskedInputProps\n extends\n MaskedProps,\n Omit<\n InputProps,\n 'showClearIcon' | 'mask' | 'maxLength' | 'type' | 'alwaysShowMask' | 'onUnexpectedInput' | 'maskChar'\n > {\n type?: MaskInputType;\n}\n\n/** Поле ввода, которое ограничивает формат вводимого значения по заданной маске. Такое поле облегчает пользователю ввод и снижает количество ошибок.\n */\nexport const MaskedInput = forwardRefAndName(\n 'MaskedInput',\n function MaskedInput(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 <Input\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
+ {"version":3,"file":"MaskedInput.js","sourceRoot":"","sources":["MaskedInput.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 { InputProps, InputType } from '../Input/index.js';\nimport { Input } from '../Input/index.js';\nimport { ColorableInputElement } from './ColorableInputElement/index.js';\nimport { FixedIMaskInput } from './FixedIMaskInput.js';\nimport { getDefinitions, getMaskChar } from './MaskedInput.helpers.js';\nimport { getStyles, globalClasses } from './MaskedInput.styles.js';\n\nexport type MaskedInputOnBeforePasteValue = (value: string) => string;\n\nexport interface MaskedProps {\n /** Шаблон ввода, определяющий допустимые символы. */\n mask: string;\n\n /** Плейсхолдер, который отображается на месте ещё не введённых пользователем символов.\n * @default _ */\n maskChar?: string;\n\n /** Словарь правил для настройки маски, где:\n * ключ — символ для использования в маске;\n * значение — регулярка-правило.\n * @default { '9': '[0-9]', 'a': '[A-Za-z]', '*': '[A-Za-z0-9]' } */\n formatChars?: Record<string, string>;\n\n /** Всегда показывать символы маски, независимо от фокуса в поле.\n * @default false */\n alwaysShowMask?: boolean;\n\n /** Событие некорректного ввода.\n * Вторым аргументом передаётся метод вспыхивания рамки поля.\n *\n * Если обработчик не задан, то при событии рамка всегда вспыхивает.\n *\n * @param value значение поля\n * @param blink метод вспыхивания рамки поля\n */\n onUnexpectedInput?: (value: string, blink: () => void) => void;\n\n /**\n * Событие перед вставкой текста в поле.\n * Вызывается с аргументом value — текст из буфера.\n *\n * Обработчик должен вернуть текст — он попадёт в поле.\n *\n * @param value значение вставки.\n */\n onBeforePasteValue?: MaskedInputOnBeforePasteValue;\n\n /** Убирает из value символы маски, которые пользователь не вводил.\n * @default false */\n unmask?: boolean;\n\n /** Раскрашивает символы маски.\n * @default true\n * @ignore */\n colored?: boolean;\n\n /** Задает пропсы для компонента `IMaskInput`. Необходимы для юнит-тестов\n * @ignore */\n imaskProps?: IMaskInputProps<HTMLInputElement>;\n}\n\nexport type MaskInputType = Exclude<InputType, 'number' | 'date' | 'time' | 'password'>;\n\nexport const getSafeMaskInputType = (type?: InputType): MaskInputType | undefined => {\n if (!type) {\n return type;\n }\n\n switch (type) {\n case 'number':\n case 'date':\n case 'time':\n case 'password':\n return 'text';\n default:\n return type;\n }\n};\n\nexport interface MaskedInputProps\n extends\n MaskedProps,\n Omit<\n InputProps,\n 'showClearIcon' | 'mask' | 'maxLength' | 'type' | 'alwaysShowMask' | 'onUnexpectedInput' | 'maskChar'\n > {\n type?: MaskInputType;\n}\n\n/** Поле ввода, которое ограничивает формат вводимого значения по заданной маске. Такое поле облегчает пользователю ввод и снижает количество ошибок.\n */\nexport const MaskedInput = forwardRefAndName(\n 'MaskedInput',\n function MaskedInput(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 <Input\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 +1 @@
1
- {"version":3,"file":"MaskedInput.styles.js","sourceRoot":"","sources":["../../../components/MaskedInput/MaskedInput.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAGxE,MAAM,CAAC,IAAM,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;IAClD,IAAI,EAAE,MAAM;CACb,CAAC,CAAC;AAEH,MAAM,CAAC,IAAM,SAAS,GAAG,gBAAgB,CAAC,UAAC,OAAgB;IACzD,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC1B,OAAO;QACL,IAAI,YAAC,CAAQ;YACX,OAAO,OAAO,CAAC,GAAG,4JAAA,yBACD,EAAY,IAAK,EAAgB,wDAEjD,KAFgB,YAAY,EAAK,CAAC,CAAC,cAAc,EAEhD;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { UI_FONT_NAME, injectGlobalFont } from '../../lib/styles/UiFont.js';\nimport { memoizeGetStyles, prefix } from '../../lib/theming/Emotion.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\n\nexport const globalClasses = prefix('masked-input')({\n root: 'root',\n});\n\nexport const getStyles = memoizeGetStyles((emotion: Emotion) => {\n injectGlobalFont(emotion);\n return {\n root(t: Theme) {\n return emotion.css`\n font-family: ${UI_FONT_NAME}, ${t.baseFontFamily};\n font-variant-numeric: tabular-nums;\n `;\n },\n };\n});\n"]}
1
+ {"version":3,"file":"MaskedInput.styles.js","sourceRoot":"","sources":["MaskedInput.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAGxE,MAAM,CAAC,IAAM,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;IAClD,IAAI,EAAE,MAAM;CACb,CAAC,CAAC;AAEH,MAAM,CAAC,IAAM,SAAS,GAAG,gBAAgB,CAAC,UAAC,OAAgB;IACzD,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC1B,OAAO;QACL,IAAI,YAAC,CAAQ;YACX,OAAO,OAAO,CAAC,GAAG,4JAAA,yBACD,EAAY,IAAK,EAAgB,wDAEjD,KAFgB,YAAY,EAAK,CAAC,CAAC,cAAc,EAEhD;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { UI_FONT_NAME, injectGlobalFont } from '../../lib/styles/UiFont.js';\nimport { memoizeGetStyles, prefix } from '../../lib/theming/Emotion.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\n\nexport const globalClasses = prefix('masked-input')({\n root: 'root',\n});\n\nexport const getStyles = memoizeGetStyles((emotion: Emotion) => {\n injectGlobalFont(emotion);\n return {\n root(t: Theme) {\n return emotion.css`\n font-family: ${UI_FONT_NAME}, ${t.baseFontFamily};\n font-variant-numeric: tabular-nums;\n `;\n },\n };\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../components/MaskedInput/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC","sourcesContent":["export * from './MaskedInput.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC","sourcesContent":["export * from './MaskedInput.js';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuFooter.js","sourceRoot":"","sources":["../../../components/MenuFooter/MenuFooter.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAanD,MAAM,CAAC,IAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,kBAAkB;CAChB,CAAC;AAEX;;GAEG;AAEH,IAAM,UAAU,GAAG,iBAAiB,CAClC,YAAY,EACZ,SAAS,UAAU,CACjB,EAAsF,EACtF,GAA8B;;IAD5B,IAAA,EAAE,QAAA,EAAE,0BAA0B,EAA1B,kBAAkB,mBAAG,KAAK,KAAA,EAAE,QAAQ,cAAA,EAAE,YAAc,EAAd,IAAI,mBAAG,OAAO,KAAA,EAAK,IAAI,cAAnE,gDAAqE,CAAF;IAGnE,IAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAC/B,IAAA,EAAE,GAAK,UAAU,EAAE,GAAjB,CAAkB;IAC5B,IAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC,SAAS,oBAAoB;QAC3B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,OAAO;gBACV,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACjC,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAClC,KAAK,OAAO,CAAC;YACb;gBACE,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IACD,SAAS,+BAA+B;QACtC,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,OAAO;gBACV,OAAO,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC5C,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC7C,KAAK,OAAO,CAAC;YACb;gBACE,OAAO,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,OAAO,CACL,oBAAC,aAAa,eAAK,IAAI;QACrB,6BACE,EAAE,EAAE,EAAE,EACN,GAAG,EAAE,GAAG,cACE,kBAAkB,CAAC,IAAI,EACjC,SAAS,EAAE,EAAE,CAAC,oBAAoB,EAAE;gBAClC,GAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,IAAI;gBAC1B,GAAC,+BAA+B,EAAE,IAAG,kBAAkB;oBACvD,IAED,QAAQ,CACL,CACQ,CACjB,CAAC;AACJ,CAAC,CACF,CAAC;AAED,UAAkB,CAAC,eAAe,GAAG,IAAI,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,CAAC;AAEtB,MAAM,CAAC,IAAM,YAAY,GAAG,UAAC,KAAsB;IACjD,OAAO,KAAK,CAAC,cAAc,CAAkB,KAAK,CAAC;QACjD,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,iBAAiB,CAAC;QACrE,CAAC,CAAC,KAAK,CAAC;AACZ,CAAC,CAAC","sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\nimport React, { useContext } from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { getStyles } from './MenuFooter.styles.js';\n\nexport interface MenuFooterProps extends CommonProps, Pick<HTMLAttributes<HTMLElement>, 'id'> {\n /** Размер надписи. */\n size?: SizeProp;\n\n /** Добавляет отступ слева для выравнивания текста по иконкам MenuItem */\n _enableIconPadding?: boolean;\n\n /** @ignore */\n children: ReactNode;\n}\n\nexport const MenuFooterDataTids = {\n root: 'MenuFooter__root',\n} as const;\n\n/**\n * Футер меню — надпись в нижней части меню.\n */\n\nconst MenuFooter = forwardRefAndName(\n 'MenuFooter',\n function MenuFooter(\n { id, _enableIconPadding = false, children, size = 'small', ...rest }: MenuFooterProps,\n ref: React.Ref<HTMLDivElement>,\n ) {\n const theme = useContext(ThemeContext);\n const { cx } = useEmotion();\n const styles = useStyles(getStyles);\n function getRootSizeClassName() {\n switch (size) {\n case 'large':\n return styles.rootLarge(theme);\n case 'medium':\n return styles.rootMedium(theme);\n case 'small':\n default:\n return styles.rootSmall(theme);\n }\n }\n function getWithLeftPaddingSizeClassName() {\n switch (size) {\n case 'large':\n return styles.withLeftPaddingSmall(theme);\n case 'medium':\n return styles.withLeftPaddingMedium(theme);\n case 'small':\n default:\n return styles.withLeftPaddingSmall(theme);\n }\n }\n\n return (\n <CommonWrapper {...rest}>\n <div\n id={id}\n ref={ref}\n data-tid={MenuFooterDataTids.root}\n className={cx(getRootSizeClassName(), {\n [styles.root(theme)]: true,\n [getWithLeftPaddingSizeClassName()]: _enableIconPadding,\n })}\n >\n {children}\n </div>\n </CommonWrapper>\n );\n },\n);\n\n(MenuFooter as any).__MENU_FOOTER__ = true;\n\nexport { MenuFooter };\n\nexport const isMenuFooter = (child: React.ReactNode): child is React.ReactElement<MenuFooterProps> => {\n return React.isValidElement<MenuFooterProps>(child)\n ? Object.prototype.hasOwnProperty.call(child.type, '__MENU_FOOTER__')\n : false;\n};\n"]}
1
+ {"version":3,"file":"MenuFooter.js","sourceRoot":"","sources":["MenuFooter.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAanD,MAAM,CAAC,IAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,kBAAkB;CAChB,CAAC;AAEX;;GAEG;AAEH,IAAM,UAAU,GAAG,iBAAiB,CAClC,YAAY,EACZ,SAAS,UAAU,CACjB,EAAsF,EACtF,GAA8B;;IAD5B,IAAA,EAAE,QAAA,EAAE,0BAA0B,EAA1B,kBAAkB,mBAAG,KAAK,KAAA,EAAE,QAAQ,cAAA,EAAE,YAAc,EAAd,IAAI,mBAAG,OAAO,KAAA,EAAK,IAAI,cAAnE,gDAAqE,CAAF;IAGnE,IAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAC/B,IAAA,EAAE,GAAK,UAAU,EAAE,GAAjB,CAAkB;IAC5B,IAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC,SAAS,oBAAoB;QAC3B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,OAAO;gBACV,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACjC,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAClC,KAAK,OAAO,CAAC;YACb;gBACE,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IACD,SAAS,+BAA+B;QACtC,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,OAAO;gBACV,OAAO,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC5C,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC7C,KAAK,OAAO,CAAC;YACb;gBACE,OAAO,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,OAAO,CACL,oBAAC,aAAa,eAAK,IAAI;QACrB,6BACE,EAAE,EAAE,EAAE,EACN,GAAG,EAAE,GAAG,cACE,kBAAkB,CAAC,IAAI,EACjC,SAAS,EAAE,EAAE,CAAC,oBAAoB,EAAE;gBAClC,GAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,IAAI;gBAC1B,GAAC,+BAA+B,EAAE,IAAG,kBAAkB;oBACvD,IAED,QAAQ,CACL,CACQ,CACjB,CAAC;AACJ,CAAC,CACF,CAAC;AAED,UAAkB,CAAC,eAAe,GAAG,IAAI,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,CAAC;AAEtB,MAAM,CAAC,IAAM,YAAY,GAAG,UAAC,KAAsB;IACjD,OAAO,KAAK,CAAC,cAAc,CAAkB,KAAK,CAAC;QACjD,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,iBAAiB,CAAC;QACrE,CAAC,CAAC,KAAK,CAAC;AACZ,CAAC,CAAC","sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\nimport React, { useContext } from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { getStyles } from './MenuFooter.styles.js';\n\nexport interface MenuFooterProps extends CommonProps, Pick<HTMLAttributes<HTMLElement>, 'id'> {\n /** Размер надписи. */\n size?: SizeProp;\n\n /** Добавляет отступ слева для выравнивания текста по иконкам MenuItem */\n _enableIconPadding?: boolean;\n\n /** @ignore */\n children: ReactNode;\n}\n\nexport const MenuFooterDataTids = {\n root: 'MenuFooter__root',\n} as const;\n\n/**\n * Футер меню — надпись в нижней части меню.\n */\n\nconst MenuFooter = forwardRefAndName(\n 'MenuFooter',\n function MenuFooter(\n { id, _enableIconPadding = false, children, size = 'small', ...rest }: MenuFooterProps,\n ref: React.Ref<HTMLDivElement>,\n ) {\n const theme = useContext(ThemeContext);\n const { cx } = useEmotion();\n const styles = useStyles(getStyles);\n function getRootSizeClassName() {\n switch (size) {\n case 'large':\n return styles.rootLarge(theme);\n case 'medium':\n return styles.rootMedium(theme);\n case 'small':\n default:\n return styles.rootSmall(theme);\n }\n }\n function getWithLeftPaddingSizeClassName() {\n switch (size) {\n case 'large':\n return styles.withLeftPaddingSmall(theme);\n case 'medium':\n return styles.withLeftPaddingMedium(theme);\n case 'small':\n default:\n return styles.withLeftPaddingSmall(theme);\n }\n }\n\n return (\n <CommonWrapper {...rest}>\n <div\n id={id}\n ref={ref}\n data-tid={MenuFooterDataTids.root}\n className={cx(getRootSizeClassName(), {\n [styles.root(theme)]: true,\n [getWithLeftPaddingSizeClassName()]: _enableIconPadding,\n })}\n >\n {children}\n </div>\n </CommonWrapper>\n );\n },\n);\n\n(MenuFooter as any).__MENU_FOOTER__ = true;\n\nexport { MenuFooter };\n\nexport const isMenuFooter = (child: React.ReactNode): child is React.ReactElement<MenuFooterProps> => {\n return React.isValidElement<MenuFooterProps>(child)\n ? Object.prototype.hasOwnProperty.call(child.type, '__MENU_FOOTER__')\n : false;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuFooter.mixins.js","sourceRoot":"","sources":["../../../components/MenuFooter/MenuFooter.mixins.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,mBAAmB,GAAG,UACjC,kBAA0B,EAC1B,kBAA0B,EAC1B,oBAA4B,EAC5B,oBAA4B,EAC5B,uBAA+B;IAE/B,IAAM,YAAY,GAAG,kBAAkB,CAAC;IAExC,OAAO,2BACQ,kBAAkB,iCAChB,oBAAoB,6BACxB,oBAAoB,cAAI,YAAY,cAAI,uBAAuB,cAAI,kBAAkB,UACjG,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAAC,sBAA8B;IAC9D,OAAO,8BACW,sBAAsB,UACvC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["export const menuFooterSizeMixin = (\n menuFooterPaddingX: string,\n menuFooterFontSize: string,\n menuFooterLineHeight: string,\n menuFooterPaddingTop: string,\n menuFooterPaddingBottom: string,\n): string => {\n const paddingRight = menuFooterPaddingX;\n\n return `\n font-size: ${menuFooterFontSize};\n line-height: ${menuFooterLineHeight};\n padding: ${menuFooterPaddingTop} ${paddingRight} ${menuFooterPaddingBottom} ${menuFooterPaddingX};\n `;\n};\n\nexport const withIconSizeMixin = (menuItemPaddingForIcon: string): string => {\n return `\n padding-left: ${menuItemPaddingForIcon};\n `;\n};\n"]}
1
+ {"version":3,"file":"MenuFooter.mixins.js","sourceRoot":"","sources":["MenuFooter.mixins.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,mBAAmB,GAAG,UACjC,kBAA0B,EAC1B,kBAA0B,EAC1B,oBAA4B,EAC5B,oBAA4B,EAC5B,uBAA+B;IAE/B,IAAM,YAAY,GAAG,kBAAkB,CAAC;IAExC,OAAO,2BACQ,kBAAkB,iCAChB,oBAAoB,6BACxB,oBAAoB,cAAI,YAAY,cAAI,uBAAuB,cAAI,kBAAkB,UACjG,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAAC,sBAA8B;IAC9D,OAAO,8BACW,sBAAsB,UACvC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["export const menuFooterSizeMixin = (\n menuFooterPaddingX: string,\n menuFooterFontSize: string,\n menuFooterLineHeight: string,\n menuFooterPaddingTop: string,\n menuFooterPaddingBottom: string,\n): string => {\n const paddingRight = menuFooterPaddingX;\n\n return `\n font-size: ${menuFooterFontSize};\n line-height: ${menuFooterLineHeight};\n padding: ${menuFooterPaddingTop} ${paddingRight} ${menuFooterPaddingBottom} ${menuFooterPaddingX};\n `;\n};\n\nexport const withIconSizeMixin = (menuItemPaddingForIcon: string): string => {\n return `\n padding-left: ${menuItemPaddingForIcon};\n `;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuFooter.styles.js","sourceRoot":"","sources":["../../../components/MenuFooter/MenuFooter.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhF,MAAM,CAAC,IAAM,SAAS,GAAG,gBAAgB,CAAC,UAAC,EAAgB;QAAd,GAAG,SAAA;IAAgB,OAAA,CAAC;QAC/D,IAAI,YAAC,CAAQ;YACX,OAAO,GAAG,uHAAA,iBACC,EAAiB,iCAE3B,KAFU,CAAC,CAAC,eAAe,EAE1B;QACJ,CAAC;QAED,SAAS,YAAC,CAAQ;YAChB,OAAO,GAAG,wFAAA,UACN,EAMD,SACF,KAPG,mBAAmB,CACnB,CAAC,CAAC,uBAAuB,EACzB,CAAC,CAAC,uBAAuB,EACzB,CAAC,CAAC,yBAAyB,EAC3B,CAAC,CAAC,yBAAyB,EAC3B,CAAC,CAAC,4BAA4B,CAC/B,EACD;QACJ,CAAC;QACD,UAAU,YAAC,CAAQ;YACjB,OAAO,GAAG,wFAAA,UACN,EAMD,SACF,KAPG,mBAAmB,CACnB,CAAC,CAAC,wBAAwB,EAC1B,CAAC,CAAC,wBAAwB,EAC1B,CAAC,CAAC,0BAA0B,EAC5B,CAAC,CAAC,0BAA0B,EAC5B,CAAC,CAAC,6BAA6B,CAChC,EACD;QACJ,CAAC;QACD,SAAS,YAAC,CAAQ;YAChB,OAAO,GAAG,wFAAA,UACN,EAMD,SACF,KAPG,mBAAmB,CACnB,CAAC,CAAC,uBAAuB,EACzB,CAAC,CAAC,uBAAuB,EACzB,CAAC,CAAC,yBAAyB,EAC3B,CAAC,CAAC,yBAAyB,EAC3B,CAAC,CAAC,4BAA4B,CAC/B,EACD;QACJ,CAAC;QAED,oBAAoB,YAAC,CAAQ;YAC3B,OAAO,GAAG,uFAAA,UACN,EAAgD,QACnD,KADG,iBAAiB,CAAC,CAAC,CAAC,2BAA2B,CAAC,EAClD;QACJ,CAAC;QACD,qBAAqB,YAAC,CAAQ;YAC5B,OAAO,GAAG,uFAAA,UACN,EAAiD,QACpD,KADG,iBAAiB,CAAC,CAAC,CAAC,4BAA4B,CAAC,EACnD;QACJ,CAAC;QACD,oBAAoB,YAAC,CAAQ;YAC3B,OAAO,GAAG,uFAAA,UACN,EAAgD,QACnD,KADG,iBAAiB,CAAC,CAAC,CAAC,2BAA2B,CAAC,EAClD;QACJ,CAAC;KACF,CAAC;AAzD8D,CAyD9D,CAAC,CAAC","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { memoizeGetStyles } from '../../lib/theming/Emotion.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { menuFooterSizeMixin, withIconSizeMixin } from './MenuFooter.mixins.js';\n\nexport const getStyles = memoizeGetStyles(({ css }: Emotion) => ({\n root(t: Theme) {\n return css`\n color: ${t.menuFooterColor};\n cursor: default;\n `;\n },\n\n rootSmall(t: Theme) {\n return css`\n ${menuFooterSizeMixin(\n t.menuFooterPaddingXSmall,\n t.menuFooterFontSizeSmall,\n t.menuFooterLineHeightSmall,\n t.menuFooterPaddingTopSmall,\n t.menuFooterPaddingBottomSmall,\n )};\n `;\n },\n rootMedium(t: Theme) {\n return css`\n ${menuFooterSizeMixin(\n t.menuFooterPaddingXMedium,\n t.menuFooterFontSizeMedium,\n t.menuFooterLineHeightMedium,\n t.menuFooterPaddingTopMedium,\n t.menuFooterPaddingBottomMedium,\n )};\n `;\n },\n rootLarge(t: Theme) {\n return css`\n ${menuFooterSizeMixin(\n t.menuFooterPaddingXLarge,\n t.menuFooterFontSizeLarge,\n t.menuFooterLineHeightLarge,\n t.menuFooterPaddingTopLarge,\n t.menuFooterPaddingBottomLarge,\n )};\n `;\n },\n\n withLeftPaddingSmall(t: Theme) {\n return css`\n ${withIconSizeMixin(t.menuItemPaddingForIconSmall)}\n `;\n },\n withLeftPaddingMedium(t: Theme) {\n return css`\n ${withIconSizeMixin(t.menuItemPaddingForIconMedium)}\n `;\n },\n withLeftPaddingLarge(t: Theme) {\n return css`\n ${withIconSizeMixin(t.menuItemPaddingForIconLarge)}\n `;\n },\n}));\n"]}
1
+ {"version":3,"file":"MenuFooter.styles.js","sourceRoot":"","sources":["MenuFooter.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhF,MAAM,CAAC,IAAM,SAAS,GAAG,gBAAgB,CAAC,UAAC,EAAgB;QAAd,GAAG,SAAA;IAAgB,OAAA,CAAC;QAC/D,IAAI,YAAC,CAAQ;YACX,OAAO,GAAG,uHAAA,iBACC,EAAiB,iCAE3B,KAFU,CAAC,CAAC,eAAe,EAE1B;QACJ,CAAC;QAED,SAAS,YAAC,CAAQ;YAChB,OAAO,GAAG,wFAAA,UACN,EAMD,SACF,KAPG,mBAAmB,CACnB,CAAC,CAAC,uBAAuB,EACzB,CAAC,CAAC,uBAAuB,EACzB,CAAC,CAAC,yBAAyB,EAC3B,CAAC,CAAC,yBAAyB,EAC3B,CAAC,CAAC,4BAA4B,CAC/B,EACD;QACJ,CAAC;QACD,UAAU,YAAC,CAAQ;YACjB,OAAO,GAAG,wFAAA,UACN,EAMD,SACF,KAPG,mBAAmB,CACnB,CAAC,CAAC,wBAAwB,EAC1B,CAAC,CAAC,wBAAwB,EAC1B,CAAC,CAAC,0BAA0B,EAC5B,CAAC,CAAC,0BAA0B,EAC5B,CAAC,CAAC,6BAA6B,CAChC,EACD;QACJ,CAAC;QACD,SAAS,YAAC,CAAQ;YAChB,OAAO,GAAG,wFAAA,UACN,EAMD,SACF,KAPG,mBAAmB,CACnB,CAAC,CAAC,uBAAuB,EACzB,CAAC,CAAC,uBAAuB,EACzB,CAAC,CAAC,yBAAyB,EAC3B,CAAC,CAAC,yBAAyB,EAC3B,CAAC,CAAC,4BAA4B,CAC/B,EACD;QACJ,CAAC;QAED,oBAAoB,YAAC,CAAQ;YAC3B,OAAO,GAAG,uFAAA,UACN,EAAgD,QACnD,KADG,iBAAiB,CAAC,CAAC,CAAC,2BAA2B,CAAC,EAClD;QACJ,CAAC;QACD,qBAAqB,YAAC,CAAQ;YAC5B,OAAO,GAAG,uFAAA,UACN,EAAiD,QACpD,KADG,iBAAiB,CAAC,CAAC,CAAC,4BAA4B,CAAC,EACnD;QACJ,CAAC;QACD,oBAAoB,YAAC,CAAQ;YAC3B,OAAO,GAAG,uFAAA,UACN,EAAgD,QACnD,KADG,iBAAiB,CAAC,CAAC,CAAC,2BAA2B,CAAC,EAClD;QACJ,CAAC;KACF,CAAC;AAzD8D,CAyD9D,CAAC,CAAC","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { memoizeGetStyles } from '../../lib/theming/Emotion.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { menuFooterSizeMixin, withIconSizeMixin } from './MenuFooter.mixins.js';\n\nexport const getStyles = memoizeGetStyles(({ css }: Emotion) => ({\n root(t: Theme) {\n return css`\n color: ${t.menuFooterColor};\n cursor: default;\n `;\n },\n\n rootSmall(t: Theme) {\n return css`\n ${menuFooterSizeMixin(\n t.menuFooterPaddingXSmall,\n t.menuFooterFontSizeSmall,\n t.menuFooterLineHeightSmall,\n t.menuFooterPaddingTopSmall,\n t.menuFooterPaddingBottomSmall,\n )};\n `;\n },\n rootMedium(t: Theme) {\n return css`\n ${menuFooterSizeMixin(\n t.menuFooterPaddingXMedium,\n t.menuFooterFontSizeMedium,\n t.menuFooterLineHeightMedium,\n t.menuFooterPaddingTopMedium,\n t.menuFooterPaddingBottomMedium,\n )};\n `;\n },\n rootLarge(t: Theme) {\n return css`\n ${menuFooterSizeMixin(\n t.menuFooterPaddingXLarge,\n t.menuFooterFontSizeLarge,\n t.menuFooterLineHeightLarge,\n t.menuFooterPaddingTopLarge,\n t.menuFooterPaddingBottomLarge,\n )};\n `;\n },\n\n withLeftPaddingSmall(t: Theme) {\n return css`\n ${withIconSizeMixin(t.menuItemPaddingForIconSmall)}\n `;\n },\n withLeftPaddingMedium(t: Theme) {\n return css`\n ${withIconSizeMixin(t.menuItemPaddingForIconMedium)}\n `;\n },\n withLeftPaddingLarge(t: Theme) {\n return css`\n ${withIconSizeMixin(t.menuItemPaddingForIconLarge)}\n `;\n },\n}));\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../components/MenuFooter/index.tsx"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC","sourcesContent":["export * from './MenuFooter.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.tsx"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC","sourcesContent":["export * from './MenuFooter.js';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuHeader.js","sourceRoot":"","sources":["../../../components/MenuHeader/MenuHeader.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAanD,MAAM,CAAC,IAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,kBAAkB;CAChB,CAAC;AAEX;;GAEG;AAEH,IAAM,UAAU,GAAG,iBAAiB,CAClC,YAAY,EACZ,SAAS,UAAU,CACjB,EAAsF,EACtF,GAA8B;;IAD5B,IAAA,EAAE,QAAA,EAAE,0BAA0B,EAA1B,kBAAkB,mBAAG,KAAK,KAAA,EAAE,QAAQ,cAAA,EAAE,YAAc,EAAd,IAAI,mBAAG,OAAO,KAAA,EAAK,IAAI,cAAnE,gDAAqE,CAAF;IAGnE,IAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAC/B,IAAA,EAAE,GAAK,UAAU,EAAE,GAAjB,CAAkB;IAC5B,IAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC,IAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IAE5C,SAAS,oBAAoB;QAC3B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,OAAO;gBACV,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACjC,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAClC,KAAK,OAAO,CAAC;YACb;gBACE,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IACD,SAAS,+BAA+B;QACtC,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,OAAO;gBACV,OAAO,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC5C,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC7C,KAAK,OAAO,CAAC;YACb;gBACE,OAAO,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,OAAO,CACL,oBAAC,aAAa,eAAK,IAAI;QACrB,6BACE,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,EAAE,cACI,kBAAkB,CAAC,IAAI,EACjC,SAAS,EAAE,EAAE,CAAC,oBAAoB,EAAE;gBAClC,GAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,IAAI;gBAC1B,GAAC,+BAA+B,EAAE,IAAG,WAAW,CAAC,iBAAiB,IAAI,kBAAkB;oBACxF,IAED,QAAQ,CACL,CACQ,CACjB,CAAC;AACJ,CAAC,CACF,CAAC;AAED,UAAkB,CAAC,eAAe,GAAG,IAAI,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,CAAC;AAEtB,MAAM,CAAC,IAAM,YAAY,GAAG,UAAC,KAAsB;IACjD,OAAO,KAAK,CAAC,cAAc,CAAkB,KAAK,CAAC;QACjD,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,iBAAiB,CAAC;QACrE,CAAC,CAAC,KAAK,CAAC;AACZ,CAAC,CAAC","sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\nimport React, { useContext } from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { MenuContext } from '../../internal/Menu/MenuContext.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { getStyles } from './MenuHeader.styles.js';\n\nexport interface MenuHeaderProps extends CommonProps, Pick<HTMLAttributes<HTMLElement>, 'id'> {\n /** Размер заголовка. */\n size?: SizeProp;\n\n /** Добавляет отступ слева для выравнивания текста по иконкам MenuItem */\n _enableIconPadding?: boolean;\n\n /** @ignore */\n children: ReactNode;\n}\n\nexport const MenuHeaderDataTids = {\n root: 'MenuHeader__root',\n} as const;\n\n/**\n * Заголовок меню используется для того, чтобы разграничивать элементы меню на категории.\n */\n\nconst MenuHeader = forwardRefAndName(\n 'MenuHeader',\n function MenuHeader(\n { id, _enableIconPadding = false, children, size = 'small', ...rest }: MenuHeaderProps,\n ref: React.Ref<HTMLDivElement>,\n ) {\n const theme = useContext(ThemeContext);\n const { cx } = useEmotion();\n const styles = useStyles(getStyles);\n const menuContext = useContext(MenuContext);\n\n function getRootSizeClassName() {\n switch (size) {\n case 'large':\n return styles.rootLarge(theme);\n case 'medium':\n return styles.rootMedium(theme);\n case 'small':\n default:\n return styles.rootSmall(theme);\n }\n }\n function getWithLeftPaddingSizeClassName() {\n switch (size) {\n case 'large':\n return styles.withLeftPaddingSmall(theme);\n case 'medium':\n return styles.withLeftPaddingMedium(theme);\n case 'small':\n default:\n return styles.withLeftPaddingSmall(theme);\n }\n }\n\n return (\n <CommonWrapper {...rest}>\n <div\n ref={ref}\n id={id}\n data-tid={MenuHeaderDataTids.root}\n className={cx(getRootSizeClassName(), {\n [styles.root(theme)]: true,\n [getWithLeftPaddingSizeClassName()]: menuContext.enableIconPadding || _enableIconPadding,\n })}\n >\n {children}\n </div>\n </CommonWrapper>\n );\n },\n);\n\n(MenuHeader as any).__MENU_HEADER__ = true;\n\nexport { MenuHeader };\n\nexport const isMenuHeader = (child: React.ReactNode): child is React.ReactElement<MenuHeaderProps> => {\n return React.isValidElement<MenuHeaderProps>(child)\n ? Object.prototype.hasOwnProperty.call(child.type, '__MENU_HEADER__')\n : false;\n};\n"]}
1
+ {"version":3,"file":"MenuHeader.js","sourceRoot":"","sources":["MenuHeader.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAanD,MAAM,CAAC,IAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,kBAAkB;CAChB,CAAC;AAEX;;GAEG;AAEH,IAAM,UAAU,GAAG,iBAAiB,CAClC,YAAY,EACZ,SAAS,UAAU,CACjB,EAAsF,EACtF,GAA8B;;IAD5B,IAAA,EAAE,QAAA,EAAE,0BAA0B,EAA1B,kBAAkB,mBAAG,KAAK,KAAA,EAAE,QAAQ,cAAA,EAAE,YAAc,EAAd,IAAI,mBAAG,OAAO,KAAA,EAAK,IAAI,cAAnE,gDAAqE,CAAF;IAGnE,IAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAC/B,IAAA,EAAE,GAAK,UAAU,EAAE,GAAjB,CAAkB;IAC5B,IAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC,IAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IAE5C,SAAS,oBAAoB;QAC3B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,OAAO;gBACV,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACjC,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAClC,KAAK,OAAO,CAAC;YACb;gBACE,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IACD,SAAS,+BAA+B;QACtC,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,OAAO;gBACV,OAAO,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC5C,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC7C,KAAK,OAAO,CAAC;YACb;gBACE,OAAO,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,OAAO,CACL,oBAAC,aAAa,eAAK,IAAI;QACrB,6BACE,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,EAAE,cACI,kBAAkB,CAAC,IAAI,EACjC,SAAS,EAAE,EAAE,CAAC,oBAAoB,EAAE;gBAClC,GAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,IAAI;gBAC1B,GAAC,+BAA+B,EAAE,IAAG,WAAW,CAAC,iBAAiB,IAAI,kBAAkB;oBACxF,IAED,QAAQ,CACL,CACQ,CACjB,CAAC;AACJ,CAAC,CACF,CAAC;AAED,UAAkB,CAAC,eAAe,GAAG,IAAI,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,CAAC;AAEtB,MAAM,CAAC,IAAM,YAAY,GAAG,UAAC,KAAsB;IACjD,OAAO,KAAK,CAAC,cAAc,CAAkB,KAAK,CAAC;QACjD,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,iBAAiB,CAAC;QACrE,CAAC,CAAC,KAAK,CAAC;AACZ,CAAC,CAAC","sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\nimport React, { useContext } from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { MenuContext } from '../../internal/Menu/MenuContext.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { getStyles } from './MenuHeader.styles.js';\n\nexport interface MenuHeaderProps extends CommonProps, Pick<HTMLAttributes<HTMLElement>, 'id'> {\n /** Размер заголовка. */\n size?: SizeProp;\n\n /** Добавляет отступ слева для выравнивания текста по иконкам MenuItem */\n _enableIconPadding?: boolean;\n\n /** @ignore */\n children: ReactNode;\n}\n\nexport const MenuHeaderDataTids = {\n root: 'MenuHeader__root',\n} as const;\n\n/**\n * Заголовок меню используется для того, чтобы разграничивать элементы меню на категории.\n */\n\nconst MenuHeader = forwardRefAndName(\n 'MenuHeader',\n function MenuHeader(\n { id, _enableIconPadding = false, children, size = 'small', ...rest }: MenuHeaderProps,\n ref: React.Ref<HTMLDivElement>,\n ) {\n const theme = useContext(ThemeContext);\n const { cx } = useEmotion();\n const styles = useStyles(getStyles);\n const menuContext = useContext(MenuContext);\n\n function getRootSizeClassName() {\n switch (size) {\n case 'large':\n return styles.rootLarge(theme);\n case 'medium':\n return styles.rootMedium(theme);\n case 'small':\n default:\n return styles.rootSmall(theme);\n }\n }\n function getWithLeftPaddingSizeClassName() {\n switch (size) {\n case 'large':\n return styles.withLeftPaddingSmall(theme);\n case 'medium':\n return styles.withLeftPaddingMedium(theme);\n case 'small':\n default:\n return styles.withLeftPaddingSmall(theme);\n }\n }\n\n return (\n <CommonWrapper {...rest}>\n <div\n ref={ref}\n id={id}\n data-tid={MenuHeaderDataTids.root}\n className={cx(getRootSizeClassName(), {\n [styles.root(theme)]: true,\n [getWithLeftPaddingSizeClassName()]: menuContext.enableIconPadding || _enableIconPadding,\n })}\n >\n {children}\n </div>\n </CommonWrapper>\n );\n },\n);\n\n(MenuHeader as any).__MENU_HEADER__ = true;\n\nexport { MenuHeader };\n\nexport const isMenuHeader = (child: React.ReactNode): child is React.ReactElement<MenuHeaderProps> => {\n return React.isValidElement<MenuHeaderProps>(child)\n ? Object.prototype.hasOwnProperty.call(child.type, '__MENU_HEADER__')\n : false;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuHeader.mixins.js","sourceRoot":"","sources":["../../../components/MenuHeader/MenuHeader.mixins.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,mBAAmB,GAAG,UACjC,kBAA0B,EAC1B,kBAA0B,EAC1B,oBAA4B,EAC5B,oBAA4B,EAC5B,uBAA+B;IAE/B,IAAM,YAAY,GAAG,kBAAkB,CAAC;IAExC,OAAO,2BACQ,kBAAkB,iCAChB,oBAAoB,6BACxB,oBAAoB,cAAI,YAAY,cAAI,uBAAuB,cAAI,kBAAkB,UACjG,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAAC,sBAA8B;IAC9D,OAAO,8BACW,sBAAsB,UACvC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["export const menuHeaderSizeMixin = (\n menuHeaderPaddingX: string,\n menuHeaderFontSize: string,\n menuHeaderLineHeight: string,\n menuHeaderPaddingTop: string,\n menuHeaderPaddingBottom: string,\n): string => {\n const paddingRight = menuHeaderPaddingX;\n\n return `\n font-size: ${menuHeaderFontSize};\n line-height: ${menuHeaderLineHeight};\n padding: ${menuHeaderPaddingTop} ${paddingRight} ${menuHeaderPaddingBottom} ${menuHeaderPaddingX};\n `;\n};\n\nexport const withIconSizeMixin = (menuItemPaddingForIcon: string): string => {\n return `\n padding-left: ${menuItemPaddingForIcon};\n `;\n};\n"]}
1
+ {"version":3,"file":"MenuHeader.mixins.js","sourceRoot":"","sources":["MenuHeader.mixins.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,mBAAmB,GAAG,UACjC,kBAA0B,EAC1B,kBAA0B,EAC1B,oBAA4B,EAC5B,oBAA4B,EAC5B,uBAA+B;IAE/B,IAAM,YAAY,GAAG,kBAAkB,CAAC;IAExC,OAAO,2BACQ,kBAAkB,iCAChB,oBAAoB,6BACxB,oBAAoB,cAAI,YAAY,cAAI,uBAAuB,cAAI,kBAAkB,UACjG,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAAC,sBAA8B;IAC9D,OAAO,8BACW,sBAAsB,UACvC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["export const menuHeaderSizeMixin = (\n menuHeaderPaddingX: string,\n menuHeaderFontSize: string,\n menuHeaderLineHeight: string,\n menuHeaderPaddingTop: string,\n menuHeaderPaddingBottom: string,\n): string => {\n const paddingRight = menuHeaderPaddingX;\n\n return `\n font-size: ${menuHeaderFontSize};\n line-height: ${menuHeaderLineHeight};\n padding: ${menuHeaderPaddingTop} ${paddingRight} ${menuHeaderPaddingBottom} ${menuHeaderPaddingX};\n `;\n};\n\nexport const withIconSizeMixin = (menuItemPaddingForIcon: string): string => {\n return `\n padding-left: ${menuItemPaddingForIcon};\n `;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuHeader.styles.js","sourceRoot":"","sources":["../../../components/MenuHeader/MenuHeader.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhF,MAAM,CAAC,IAAM,SAAS,GAAG,gBAAgB,CAAC,UAAC,EAAgB;QAAd,GAAG,SAAA;IAAgB,OAAA,CAAC;QAC/D,IAAI,YAAC,CAAQ;YACX,OAAO,GAAG,uHAAA,iBACC,EAAiB,iCAE3B,KAFU,CAAC,CAAC,eAAe,EAE1B;QACJ,CAAC;QAED,SAAS,YAAC,CAAQ;YAChB,OAAO,GAAG,wFAAA,UACN,EAMD,SACF,KAPG,mBAAmB,CACnB,CAAC,CAAC,uBAAuB,EACzB,CAAC,CAAC,uBAAuB,EACzB,CAAC,CAAC,yBAAyB,EAC3B,CAAC,CAAC,yBAAyB,EAC3B,CAAC,CAAC,4BAA4B,CAC/B,EACD;QACJ,CAAC;QACD,UAAU,YAAC,CAAQ;YACjB,OAAO,GAAG,wFAAA,UACN,EAMD,SACF,KAPG,mBAAmB,CACnB,CAAC,CAAC,wBAAwB,EAC1B,CAAC,CAAC,wBAAwB,EAC1B,CAAC,CAAC,0BAA0B,EAC5B,CAAC,CAAC,0BAA0B,EAC5B,CAAC,CAAC,6BAA6B,CAChC,EACD;QACJ,CAAC;QACD,SAAS,YAAC,CAAQ;YAChB,OAAO,GAAG,wFAAA,UACN,EAMD,SACF,KAPG,mBAAmB,CACnB,CAAC,CAAC,uBAAuB,EACzB,CAAC,CAAC,uBAAuB,EACzB,CAAC,CAAC,yBAAyB,EAC3B,CAAC,CAAC,yBAAyB,EAC3B,CAAC,CAAC,4BAA4B,CAC/B,EACD;QACJ,CAAC;QAED,oBAAoB,YAAC,CAAQ;YAC3B,OAAO,GAAG,uFAAA,UACN,EAAgD,QACnD,KADG,iBAAiB,CAAC,CAAC,CAAC,2BAA2B,CAAC,EAClD;QACJ,CAAC;QACD,qBAAqB,YAAC,CAAQ;YAC5B,OAAO,GAAG,uFAAA,UACN,EAAiD,QACpD,KADG,iBAAiB,CAAC,CAAC,CAAC,4BAA4B,CAAC,EACnD;QACJ,CAAC;QACD,oBAAoB,YAAC,CAAQ;YAC3B,OAAO,GAAG,uFAAA,UACN,EAAgD,QACnD,KADG,iBAAiB,CAAC,CAAC,CAAC,2BAA2B,CAAC,EAClD;QACJ,CAAC;KACF,CAAC;AAzD8D,CAyD9D,CAAC,CAAC","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { memoizeGetStyles } from '../../lib/theming/Emotion.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { menuHeaderSizeMixin, withIconSizeMixin } from './MenuHeader.mixins.js';\n\nexport const getStyles = memoizeGetStyles(({ css }: Emotion) => ({\n root(t: Theme) {\n return css`\n color: ${t.menuHeaderColor};\n cursor: default;\n `;\n },\n\n rootSmall(t: Theme) {\n return css`\n ${menuHeaderSizeMixin(\n t.menuHeaderPaddingXSmall,\n t.menuHeaderFontSizeSmall,\n t.menuHeaderLineHeightSmall,\n t.menuHeaderPaddingTopSmall,\n t.menuHeaderPaddingBottomSmall,\n )};\n `;\n },\n rootMedium(t: Theme) {\n return css`\n ${menuHeaderSizeMixin(\n t.menuHeaderPaddingXMedium,\n t.menuHeaderFontSizeMedium,\n t.menuHeaderLineHeightMedium,\n t.menuHeaderPaddingTopMedium,\n t.menuHeaderPaddingBottomMedium,\n )};\n `;\n },\n rootLarge(t: Theme) {\n return css`\n ${menuHeaderSizeMixin(\n t.menuHeaderPaddingXLarge,\n t.menuHeaderFontSizeLarge,\n t.menuHeaderLineHeightLarge,\n t.menuHeaderPaddingTopLarge,\n t.menuHeaderPaddingBottomLarge,\n )};\n `;\n },\n\n withLeftPaddingSmall(t: Theme) {\n return css`\n ${withIconSizeMixin(t.menuItemPaddingForIconSmall)}\n `;\n },\n withLeftPaddingMedium(t: Theme) {\n return css`\n ${withIconSizeMixin(t.menuItemPaddingForIconMedium)}\n `;\n },\n withLeftPaddingLarge(t: Theme) {\n return css`\n ${withIconSizeMixin(t.menuItemPaddingForIconLarge)}\n `;\n },\n}));\n"]}
1
+ {"version":3,"file":"MenuHeader.styles.js","sourceRoot":"","sources":["MenuHeader.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhF,MAAM,CAAC,IAAM,SAAS,GAAG,gBAAgB,CAAC,UAAC,EAAgB;QAAd,GAAG,SAAA;IAAgB,OAAA,CAAC;QAC/D,IAAI,YAAC,CAAQ;YACX,OAAO,GAAG,uHAAA,iBACC,EAAiB,iCAE3B,KAFU,CAAC,CAAC,eAAe,EAE1B;QACJ,CAAC;QAED,SAAS,YAAC,CAAQ;YAChB,OAAO,GAAG,wFAAA,UACN,EAMD,SACF,KAPG,mBAAmB,CACnB,CAAC,CAAC,uBAAuB,EACzB,CAAC,CAAC,uBAAuB,EACzB,CAAC,CAAC,yBAAyB,EAC3B,CAAC,CAAC,yBAAyB,EAC3B,CAAC,CAAC,4BAA4B,CAC/B,EACD;QACJ,CAAC;QACD,UAAU,YAAC,CAAQ;YACjB,OAAO,GAAG,wFAAA,UACN,EAMD,SACF,KAPG,mBAAmB,CACnB,CAAC,CAAC,wBAAwB,EAC1B,CAAC,CAAC,wBAAwB,EAC1B,CAAC,CAAC,0BAA0B,EAC5B,CAAC,CAAC,0BAA0B,EAC5B,CAAC,CAAC,6BAA6B,CAChC,EACD;QACJ,CAAC;QACD,SAAS,YAAC,CAAQ;YAChB,OAAO,GAAG,wFAAA,UACN,EAMD,SACF,KAPG,mBAAmB,CACnB,CAAC,CAAC,uBAAuB,EACzB,CAAC,CAAC,uBAAuB,EACzB,CAAC,CAAC,yBAAyB,EAC3B,CAAC,CAAC,yBAAyB,EAC3B,CAAC,CAAC,4BAA4B,CAC/B,EACD;QACJ,CAAC;QAED,oBAAoB,YAAC,CAAQ;YAC3B,OAAO,GAAG,uFAAA,UACN,EAAgD,QACnD,KADG,iBAAiB,CAAC,CAAC,CAAC,2BAA2B,CAAC,EAClD;QACJ,CAAC;QACD,qBAAqB,YAAC,CAAQ;YAC5B,OAAO,GAAG,uFAAA,UACN,EAAiD,QACpD,KADG,iBAAiB,CAAC,CAAC,CAAC,4BAA4B,CAAC,EACnD;QACJ,CAAC;QACD,oBAAoB,YAAC,CAAQ;YAC3B,OAAO,GAAG,uFAAA,UACN,EAAgD,QACnD,KADG,iBAAiB,CAAC,CAAC,CAAC,2BAA2B,CAAC,EAClD;QACJ,CAAC;KACF,CAAC;AAzD8D,CAyD9D,CAAC,CAAC","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { memoizeGetStyles } from '../../lib/theming/Emotion.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { menuHeaderSizeMixin, withIconSizeMixin } from './MenuHeader.mixins.js';\n\nexport const getStyles = memoizeGetStyles(({ css }: Emotion) => ({\n root(t: Theme) {\n return css`\n color: ${t.menuHeaderColor};\n cursor: default;\n `;\n },\n\n rootSmall(t: Theme) {\n return css`\n ${menuHeaderSizeMixin(\n t.menuHeaderPaddingXSmall,\n t.menuHeaderFontSizeSmall,\n t.menuHeaderLineHeightSmall,\n t.menuHeaderPaddingTopSmall,\n t.menuHeaderPaddingBottomSmall,\n )};\n `;\n },\n rootMedium(t: Theme) {\n return css`\n ${menuHeaderSizeMixin(\n t.menuHeaderPaddingXMedium,\n t.menuHeaderFontSizeMedium,\n t.menuHeaderLineHeightMedium,\n t.menuHeaderPaddingTopMedium,\n t.menuHeaderPaddingBottomMedium,\n )};\n `;\n },\n rootLarge(t: Theme) {\n return css`\n ${menuHeaderSizeMixin(\n t.menuHeaderPaddingXLarge,\n t.menuHeaderFontSizeLarge,\n t.menuHeaderLineHeightLarge,\n t.menuHeaderPaddingTopLarge,\n t.menuHeaderPaddingBottomLarge,\n )};\n `;\n },\n\n withLeftPaddingSmall(t: Theme) {\n return css`\n ${withIconSizeMixin(t.menuItemPaddingForIconSmall)}\n `;\n },\n withLeftPaddingMedium(t: Theme) {\n return css`\n ${withIconSizeMixin(t.menuItemPaddingForIconMedium)}\n `;\n },\n withLeftPaddingLarge(t: Theme) {\n return css`\n ${withIconSizeMixin(t.menuItemPaddingForIconLarge)}\n `;\n },\n}));\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../components/MenuHeader/index.tsx"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC","sourcesContent":["export * from './MenuHeader.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.tsx"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC","sourcesContent":["export * from './MenuHeader.js';\n"]}
@@ -85,6 +85,7 @@ export declare class MenuItem extends React.Component<MenuItemProps> {
85
85
  select: (event: React.SyntheticEvent<HTMLElement>) => void;
86
86
  isEnabled: () => boolean;
87
87
  navigate: () => void;
88
+ private getRootMobileSizeClassName;
88
89
  private getRootSizeClassName;
89
90
  private getIconSizeClassName;
90
91
  private getWithIconSizeClassName;
@@ -51,6 +51,7 @@ import { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';
51
51
  import { rootNode } from '../../lib/rootNode/index.js';
52
52
  import { withSize } from '../../lib/size/SizeDecorator.js';
53
53
  import { ThemeContext } from '../../lib/theming/ThemeContext.js';
54
+ import { isThemeGTE } from '../../lib/theming/ThemeHelpers.js';
54
55
  import { isExternalLink, isFunction, isNonNullable, isReactUIComponent } from '../../lib/utils.js';
55
56
  import { getStyles } from './MenuItem.styles.js';
56
57
  export var MenuItemDataTids = {
@@ -109,7 +110,7 @@ var MenuItem = /** @class */ (function (_super) {
109
110
  var className = _this.cx((_b = {},
110
111
  _b[_this.styles.root(_this.theme)] = true,
111
112
  _b[_this.getRootSizeClassName()] = true,
112
- _b[_this.styles.rootMobile(_this.theme)] = isMobile,
113
+ _b[_this.getRootMobileSizeClassName()] = isMobile,
113
114
  _b[_this.styles.loose()] = !!loose,
114
115
  _b[_this.styles.hover(_this.theme)] = _this.isHover,
115
116
  _b[_this.styles.selected(_this.theme)] = _this.isSelected,
@@ -237,6 +238,21 @@ var MenuItem = /** @class */ (function (_super) {
237
238
  }
238
239
  }
239
240
  };
241
+ MenuItem.prototype.getRootMobileSizeClassName = function () {
242
+ var themeGTE6_1 = isThemeGTE(this.theme, '6.1');
243
+ if (!themeGTE6_1) {
244
+ return this.styles.rootMobile(this.theme);
245
+ }
246
+ switch (this.props.size) {
247
+ case 'large':
248
+ return this.styles.rootMobileLarge(this.theme);
249
+ case 'medium':
250
+ return this.styles.rootMobileMedium(this.theme);
251
+ case 'small':
252
+ default:
253
+ return this.styles.rootMobileSmall(this.theme);
254
+ }
255
+ };
240
256
  MenuItem.prototype.getRootSizeClassName = function () {
241
257
  switch (this.size) {
242
258
  case 'large':
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItem.js","sourceRoot":"","sources":["../../../components/MenuItem/MenuItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes.js';\nimport { MenuContext } from '../../internal/Menu/MenuContext.js';\nimport type { MenuContextType } from '../../internal/Menu/MenuContext.js';\nimport { scrollYCenterIntoNearestScrollable } from '../../lib/dom/scrollYCenterIntoNearestScrollable.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { isBrowser } from '../../lib/globalObject.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { isExternalLink, isFunction, isNonNullable, isReactUIComponent } from '../../lib/utils.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { getStyles } from './MenuItem.styles.js';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps\n extends\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Omit<CommonProps, 'children'> {\n /** Добавляет отступ иконке.\n * @ignore */\n _enableIconPadding?: boolean;\n\n /** Описание пункта меню. */\n comment?: React.ReactNode;\n\n /** Блокирует пункт и перекрашивает в серый. */\n disabled?: boolean;\n\n /** Добавляет иконку слева от текста. */\n icon?: React.ReactElement;\n\n /** Размер кнопки. */\n size?: SizeProp;\n\n /** @ignore */\n loose?: boolean;\n\n /** @ignore */\n state?: MenuItemState;\n\n /** @ignore */\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n\n /** Задает HTML-атрибут `target`. */\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n\n /** Задает HTML-атрибут `title`. */\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n\n /** Задает HTML-атрибут `href` - адрес, на который следует перейти. */\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n\n /** Задает HTML-атрибут `rel`. Для внешних ссылок аттрибут rel по умолчанию равен \"noopener noreferrer\". */\n rel?: React.AnchorHTMLAttributes<HTMLAnchorElement>['rel'];\n\n /** Заменяет корневой элемент, на компонент переданный в проп.\n * По умолчанию корневой элемент рендерится как `button`. <br />Если передан `href`, то вместо `button` рендерится `a`. */\n component?: React.ComponentType<any>;\n\n /** Запрещает выделение и выбор данного пункта меню. */\n isNotSelectable?: boolean;\n\n /** Устанавливает стиль для отображения в мобильной версии. */\n isMobile?: boolean;\n /** @ignore */\n scrollIntoView?: boolean;\n\n /**`HTML`-событие `onclick`. */\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n\n /**`HTML`-событие `onmouseenter`. */\n onMouseEnter?: React.MouseEventHandler;\n\n /**`HTML`-событие `onmouseleave`. */\n onMouseLeave?: React.MouseEventHandler;\n}\n\nexport const MenuItemDataTids = {\n root: 'MenuItem__root',\n content: 'MenuItem__content',\n comment: 'MenuItem__comment',\n} as const;\n\n/**\n * Пункт меню `MenuItem` — интерактивный элемент выполнения действий или навигации.\n */\n@withRenderEnvironment\n@withSize\n@rootNode\nexport class MenuItem extends React.Component<MenuItemProps> {\n public static __KONTUR_REACT_UI__ = 'MenuItem';\n public static displayName = 'MenuItem';\n public static __MENU_ITEM__ = true;\n\n public state = {\n iconOffsetTop: 0,\n highlighted: false,\n };\n\n private size!: SizeProp;\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 mouseEntered = false;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private rootRef: Nullable<HTMLElement> = null;\n private contentRef = React.createRef<HTMLElement>();\n static contextType = MenuContext;\n\n public context!: MenuContextType;\n\n public render(): React.JSX.Element {\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 public componentDidMount() {\n if (this.props.scrollIntoView && this.isHtmlElement(this.rootRef)) {\n scrollYCenterIntoNearestScrollable(this.rootRef);\n }\n if (this.isHtmlElement(this.rootRef)) {\n const computedStyle = this.rootRef.ownerDocument?.defaultView?.getComputedStyle(this.rootRef);\n this.setState({\n iconOffsetTop: computedStyle?.getPropertyValue('padding-top') ?? '',\n });\n }\n if (this.contentRef.current && !this.props.isNotSelectable) {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n if (this.props.icon) {\n this.context.setEnableIconPadding?.(true);\n }\n }\n\n public componentWillUnmount() {\n if (this.contentRef.current) {\n !this.props.isNotSelectable && this.context.navigation?.remove(this.contentRef.current);\n this.context.setEnableIconPadding?.(this.hasIconAmongItems());\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<MenuItemProps>) {\n if (prevProps.icon !== this.props.icon) {\n this.context.setEnableIconPadding?.(!!this.props.icon || this.hasIconAmongItems());\n }\n if (this.contentRef.current && prevProps.isNotSelectable !== this.props.isNotSelectable) {\n if (this.props.isNotSelectable) {\n this.unhighlight();\n this.context.navigation?.remove(this.contentRef.current);\n } else {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n }\n }\n\n public highlight = (): void => {\n this.setState({ highlighted: true });\n };\n\n public unhighlight = (): void => {\n this.setState({ highlighted: false });\n };\n\n public select = (event: React.SyntheticEvent<HTMLElement>): void => {\n this.handleClick(event as React.MouseEvent<HTMLElement>);\n };\n\n public isEnabled = (): boolean => {\n return !this.props.disabled;\n };\n\n public navigate = (): void => {\n if (!this.props.href) {\n return;\n }\n if (this.props.target) {\n this.globalObject.open?.(this.props.href, this.props.target);\n } else if (this.globalObject.location) {\n this.globalObject.location.href = this.props.href;\n }\n };\n\n private getRootSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.rootLarge(this.theme);\n case 'medium':\n return this.styles.rootMedium(this.theme);\n case 'small':\n default:\n return this.styles.rootSmall(this.theme);\n }\n }\n\n private getIconSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.iconLarge(this.theme);\n case 'medium':\n return this.styles.iconMedium(this.theme);\n case 'small':\n default:\n return this.styles.iconSmall(this.theme);\n }\n }\n\n private getWithIconSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.withIconLarge(this.theme);\n case 'medium':\n return this.styles.withIconMedium(this.theme);\n case 'small':\n default:\n return this.styles.withIconSmall(this.theme);\n }\n }\n\n private renderMain = () => {\n const {\n comment,\n icon,\n loose,\n state,\n size: sizeProp,\n _enableIconPadding,\n component,\n onMouseEnter,\n onMouseLeave,\n isMobile,\n href,\n disabled,\n scrollIntoView,\n rel = href && isExternalLink(href, this.globalObject) ? 'noopener noreferrer' : this.props.rel,\n isNotSelectable,\n children,\n className: unusedClasses,\n style,\n 'data-tid': dataTid,\n ...rest\n } = this.props;\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <div\n style={{ top: this.state.iconOffsetTop }}\n className={this.cx({\n [this.styles.icon()]: true,\n [this.getIconSizeClassName()]: true,\n })}\n >\n {icon}\n </div>\n );\n }\n\n const className = this.cx({\n [this.styles.root(this.theme)]: true,\n [this.getRootSizeClassName()]: true,\n [this.styles.rootMobile(this.theme)]: isMobile,\n [this.styles.loose()]: !!loose,\n [this.styles.hover(this.theme)]: this.isHover,\n [this.styles.selected(this.theme)]: this.isSelected,\n [this.getWithIconSizeClassName()]: Boolean(iconElement) || !!_enableIconPadding || this.context.enableIconPadding,\n [this.styles.nonSelectable()]: !!isNotSelectable,\n [this.styles.disabled(this.theme)]: !!disabled,\n });\n\n let content = children;\n if (isFunction(children)) {\n content = children(this.activeState);\n }\n\n const Component = this.getComponent();\n\n return (\n <CommonWrapper\n rootNodeRef={this.setRootNode}\n {...getVisualStateDataAttributes({\n hover: this.isHover,\n selected: this.isSelected,\n })}\n {...this.props}\n >\n <Component\n ref={this.setRootRef}\n data-tid={MenuItemDataTids.root}\n {...rest}\n disabled={disabled}\n state={this.activeState}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n onClick={this.handleClick}\n className={className}\n href={href}\n rel={href ? rel : undefined}\n tabIndex={-1}\n >\n {iconElement}\n <span\n className={this.cx({\n [this.styles.mobileContentWithIcon()]: isMobile && isNonNullable(icon),\n })}\n ref={this.contentRef}\n data-tid={MenuItemDataTids.content}\n >\n {typeof content === 'function' ? content() : content}\n </span>\n {comment && (\n <div\n data-tid={MenuItemDataTids.comment}\n className={this.cx({\n [this.styles.comment(this.theme)]: true,\n [this.styles.commentHover(this.theme)]: this.isHover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n </CommonWrapper>\n );\n };\n\n private get activeState() {\n return this.state.highlighted ? 'hover' : this.props.state;\n }\n\n private get isHover(): boolean {\n return (this.state.highlighted || this.props.state === 'hover') && !this.props.disabled;\n }\n\n private get isSelected(): boolean {\n return this.props.state === 'selected' && !this.state.highlighted;\n }\n\n // https://github.com/facebook/react/issues/10109\n // Mouseenter event not triggered when cursor moves from disabled button\n private handleMouseEnterFix = (e: React.MouseEvent<HTMLElement>) => {\n if (!this.mouseEntered) {\n this.mouseEntered = true;\n this.props.onMouseEnter?.(e);\n !this.props.isNotSelectable && this.context.navigation?.highlight(this);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n this.props.onMouseLeave?.(e);\n !this.props.isNotSelectable && this.context.navigation?.unhighlight();\n };\n\n private handleClick = (e: React.MouseEvent<HTMLElement>) => {\n if (this.props.isNotSelectable) {\n return;\n }\n this.props.onClick?.(e);\n this.context.onItemClick?.(e);\n };\n\n private setRootRef = (element: HTMLElement | null) => {\n this.rootRef = this.isHtmlElement(element) ? element : null;\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (component) {\n return component;\n }\n\n if (disabled) {\n return 'button';\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n\n private hasIconAmongItems = () => {\n return Boolean(this.context.navigation?.items.some((item) => item.props.icon));\n };\n\n private isHtmlElement = (element: Nullable<unknown>): element is HTMLElement => {\n if (!element || !isBrowser(this.globalObject)) {\n return false;\n }\n\n const HTMLElementCtor = this.globalObject.HTMLElement;\n return Boolean(HTMLElementCtor && element instanceof HTMLElementCtor);\n };\n}\n\nexport const isMenuItem = isReactUIComponent('MenuItem');\n"]}
1
+ {"version":3,"file":"MenuItem.js","sourceRoot":"","sources":["MenuItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes.js';\nimport { MenuContext } from '../../internal/Menu/MenuContext.js';\nimport type { MenuContextType } from '../../internal/Menu/MenuContext.js';\nimport { scrollYCenterIntoNearestScrollable } from '../../lib/dom/scrollYCenterIntoNearestScrollable.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { isBrowser } from '../../lib/globalObject.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { isExternalLink, isFunction, isNonNullable, isReactUIComponent } from '../../lib/utils.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { getStyles } from './MenuItem.styles.js';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps\n extends\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Omit<CommonProps, 'children'> {\n /** Добавляет отступ иконке.\n * @ignore */\n _enableIconPadding?: boolean;\n\n /** Описание пункта меню. */\n comment?: React.ReactNode;\n\n /** Блокирует пункт и перекрашивает в серый. */\n disabled?: boolean;\n\n /** Добавляет иконку слева от текста. */\n icon?: React.ReactElement;\n\n /** Размер кнопки. */\n size?: SizeProp;\n\n /** @ignore */\n loose?: boolean;\n\n /** @ignore */\n state?: MenuItemState;\n\n /** @ignore */\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n\n /** Задает HTML-атрибут `target`. */\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n\n /** Задает HTML-атрибут `title`. */\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n\n /** Задает HTML-атрибут `href` - адрес, на который следует перейти. */\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n\n /** Задает HTML-атрибут `rel`. Для внешних ссылок аттрибут rel по умолчанию равен \"noopener noreferrer\". */\n rel?: React.AnchorHTMLAttributes<HTMLAnchorElement>['rel'];\n\n /** Заменяет корневой элемент, на компонент переданный в проп.\n * По умолчанию корневой элемент рендерится как `button`. <br />Если передан `href`, то вместо `button` рендерится `a`. */\n component?: React.ComponentType<any>;\n\n /** Запрещает выделение и выбор данного пункта меню. */\n isNotSelectable?: boolean;\n\n /** Устанавливает стиль для отображения в мобильной версии. */\n isMobile?: boolean;\n /** @ignore */\n scrollIntoView?: boolean;\n\n /**`HTML`-событие `onclick`. */\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n\n /**`HTML`-событие `onmouseenter`. */\n onMouseEnter?: React.MouseEventHandler;\n\n /**`HTML`-событие `onmouseleave`. */\n onMouseLeave?: React.MouseEventHandler;\n}\n\nexport const MenuItemDataTids = {\n root: 'MenuItem__root',\n content: 'MenuItem__content',\n comment: 'MenuItem__comment',\n} as const;\n\n/**\n * Пункт меню `MenuItem` — интерактивный элемент выполнения действий или навигации.\n */\n@withRenderEnvironment\n@withSize\n@rootNode\nexport class MenuItem extends React.Component<MenuItemProps> {\n public static __KONTUR_REACT_UI__ = 'MenuItem';\n public static displayName = 'MenuItem';\n public static __MENU_ITEM__ = true;\n\n public state = {\n iconOffsetTop: 0,\n highlighted: false,\n };\n\n private size!: SizeProp;\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 mouseEntered = false;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private rootRef: Nullable<HTMLElement> = null;\n private contentRef = React.createRef<HTMLElement>();\n static contextType = MenuContext;\n\n public context!: MenuContextType;\n\n public render(): React.JSX.Element {\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 public componentDidMount() {\n if (this.props.scrollIntoView && this.isHtmlElement(this.rootRef)) {\n scrollYCenterIntoNearestScrollable(this.rootRef);\n }\n if (this.isHtmlElement(this.rootRef)) {\n const computedStyle = this.rootRef.ownerDocument?.defaultView?.getComputedStyle(this.rootRef);\n this.setState({\n iconOffsetTop: computedStyle?.getPropertyValue('padding-top') ?? '',\n });\n }\n if (this.contentRef.current && !this.props.isNotSelectable) {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n if (this.props.icon) {\n this.context.setEnableIconPadding?.(true);\n }\n }\n\n public componentWillUnmount() {\n if (this.contentRef.current) {\n !this.props.isNotSelectable && this.context.navigation?.remove(this.contentRef.current);\n this.context.setEnableIconPadding?.(this.hasIconAmongItems());\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<MenuItemProps>) {\n if (prevProps.icon !== this.props.icon) {\n this.context.setEnableIconPadding?.(!!this.props.icon || this.hasIconAmongItems());\n }\n if (this.contentRef.current && prevProps.isNotSelectable !== this.props.isNotSelectable) {\n if (this.props.isNotSelectable) {\n this.unhighlight();\n this.context.navigation?.remove(this.contentRef.current);\n } else {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n }\n }\n\n public highlight = (): void => {\n this.setState({ highlighted: true });\n };\n\n public unhighlight = (): void => {\n this.setState({ highlighted: false });\n };\n\n public select = (event: React.SyntheticEvent<HTMLElement>): void => {\n this.handleClick(event as React.MouseEvent<HTMLElement>);\n };\n\n public isEnabled = (): boolean => {\n return !this.props.disabled;\n };\n\n public navigate = (): void => {\n if (!this.props.href) {\n return;\n }\n if (this.props.target) {\n this.globalObject.open?.(this.props.href, this.props.target);\n } else if (this.globalObject.location) {\n this.globalObject.location.href = this.props.href;\n }\n };\n\n private getRootMobileSizeClassName(): string {\n const themeGTE6_1 = isThemeGTE(this.theme, '6.1');\n if (!themeGTE6_1) {\n return this.styles.rootMobile(this.theme);\n }\n switch (this.props.size) {\n case 'large':\n return this.styles.rootMobileLarge(this.theme);\n case 'medium':\n return this.styles.rootMobileMedium(this.theme);\n case 'small':\n default:\n return this.styles.rootMobileSmall(this.theme);\n }\n }\n\n private getRootSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.rootLarge(this.theme);\n case 'medium':\n return this.styles.rootMedium(this.theme);\n case 'small':\n default:\n return this.styles.rootSmall(this.theme);\n }\n }\n\n private getIconSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.iconLarge(this.theme);\n case 'medium':\n return this.styles.iconMedium(this.theme);\n case 'small':\n default:\n return this.styles.iconSmall(this.theme);\n }\n }\n\n private getWithIconSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.styles.withIconLarge(this.theme);\n case 'medium':\n return this.styles.withIconMedium(this.theme);\n case 'small':\n default:\n return this.styles.withIconSmall(this.theme);\n }\n }\n\n private renderMain = () => {\n const {\n comment,\n icon,\n loose,\n state,\n size: sizeProp,\n _enableIconPadding,\n component,\n onMouseEnter,\n onMouseLeave,\n isMobile,\n href,\n disabled,\n scrollIntoView,\n rel = href && isExternalLink(href, this.globalObject) ? 'noopener noreferrer' : this.props.rel,\n isNotSelectable,\n children,\n className: unusedClasses,\n style,\n 'data-tid': dataTid,\n ...rest\n } = this.props;\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <div\n style={{ top: this.state.iconOffsetTop }}\n className={this.cx({\n [this.styles.icon()]: true,\n [this.getIconSizeClassName()]: true,\n })}\n >\n {icon}\n </div>\n );\n }\n\n const className = this.cx({\n [this.styles.root(this.theme)]: true,\n [this.getRootSizeClassName()]: true,\n [this.getRootMobileSizeClassName()]: isMobile,\n [this.styles.loose()]: !!loose,\n [this.styles.hover(this.theme)]: this.isHover,\n [this.styles.selected(this.theme)]: this.isSelected,\n [this.getWithIconSizeClassName()]: Boolean(iconElement) || !!_enableIconPadding || this.context.enableIconPadding,\n [this.styles.nonSelectable()]: !!isNotSelectable,\n [this.styles.disabled(this.theme)]: !!disabled,\n });\n\n let content = children;\n if (isFunction(children)) {\n content = children(this.activeState);\n }\n\n const Component = this.getComponent();\n\n return (\n <CommonWrapper\n rootNodeRef={this.setRootNode}\n {...getVisualStateDataAttributes({\n hover: this.isHover,\n selected: this.isSelected,\n })}\n {...this.props}\n >\n <Component\n ref={this.setRootRef}\n data-tid={MenuItemDataTids.root}\n {...rest}\n disabled={disabled}\n state={this.activeState}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n onClick={this.handleClick}\n className={className}\n href={href}\n rel={href ? rel : undefined}\n tabIndex={-1}\n >\n {iconElement}\n <span\n className={this.cx({\n [this.styles.mobileContentWithIcon()]: isMobile && isNonNullable(icon),\n })}\n ref={this.contentRef}\n data-tid={MenuItemDataTids.content}\n >\n {typeof content === 'function' ? content() : content}\n </span>\n {comment && (\n <div\n data-tid={MenuItemDataTids.comment}\n className={this.cx({\n [this.styles.comment(this.theme)]: true,\n [this.styles.commentHover(this.theme)]: this.isHover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n </CommonWrapper>\n );\n };\n\n private get activeState() {\n return this.state.highlighted ? 'hover' : this.props.state;\n }\n\n private get isHover(): boolean {\n return (this.state.highlighted || this.props.state === 'hover') && !this.props.disabled;\n }\n\n private get isSelected(): boolean {\n return this.props.state === 'selected' && !this.state.highlighted;\n }\n\n // https://github.com/facebook/react/issues/10109\n // Mouseenter event not triggered when cursor moves from disabled button\n private handleMouseEnterFix = (e: React.MouseEvent<HTMLElement>) => {\n if (!this.mouseEntered) {\n this.mouseEntered = true;\n this.props.onMouseEnter?.(e);\n !this.props.isNotSelectable && this.context.navigation?.highlight(this);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n this.props.onMouseLeave?.(e);\n !this.props.isNotSelectable && this.context.navigation?.unhighlight();\n };\n\n private handleClick = (e: React.MouseEvent<HTMLElement>) => {\n if (this.props.isNotSelectable) {\n return;\n }\n this.props.onClick?.(e);\n this.context.onItemClick?.(e);\n };\n\n private setRootRef = (element: HTMLElement | null) => {\n this.rootRef = this.isHtmlElement(element) ? element : null;\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (component) {\n return component;\n }\n\n if (disabled) {\n return 'button';\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n\n private hasIconAmongItems = () => {\n return Boolean(this.context.navigation?.items.some((item) => item.props.icon));\n };\n\n private isHtmlElement = (element: Nullable<unknown>): element is HTMLElement => {\n if (!element || !isBrowser(this.globalObject)) {\n return false;\n }\n\n const HTMLElementCtor = this.globalObject.HTMLElement;\n return Boolean(HTMLElementCtor && element instanceof HTMLElementCtor);\n };\n}\n\nexport const isMenuItem = isReactUIComponent('MenuItem');\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItem.mixins.js","sourceRoot":"","sources":["../../../components/MenuItem/MenuItem.mixins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAC/B,gBAAwB,EACxB,gBAAwB,EACxB,kBAA0B,EAC1B,gBAAwB;IAElB,IAAA,KAAyB,mBAAmB,CAAC;QACjD,gBAAgB,kBAAA;QAChB,gBAAgB,kBAAA;KACjB,CAAC,EAHM,QAAQ,cAAA,EAAE,QAAQ,cAGxB,CAAC;IAEH,OAAO,6BACU,kBAAkB,+BACpB,gBAAgB,6BAClB,gBAAgB,cAAI,QAAQ,cAAI,QAAQ,cAAI,gBAAgB,UACxE,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,aAAa,GAAG,UAAC,iBAAyB,EAAE,gBAAwB;IAC/E,OAAO,uBACI,iBAAiB,0BAClB,QAAQ,CAAC,gBAAgB,CAAC,YACnC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAAC,sBAA8B;IAC9D,OAAO,8BACW,sBAAsB,UACvC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { getMenuItemPaddings } from './MenuItem.styles.js';\n\nexport const menuItemSizeMixin = (\n menuItemPaddingX: string,\n menuItemPaddingY: string,\n menuItemLineHeight: string,\n menuItemFontSize: string,\n): string => {\n const { paddingX, paddingY } = getMenuItemPaddings({\n menuItemPaddingX,\n menuItemPaddingY,\n });\n\n return `\n line-height: ${menuItemLineHeight};\n font-size: ${menuItemFontSize};\n padding: ${menuItemPaddingY} ${paddingX} ${paddingY} ${menuItemPaddingX};\n `;\n};\n\nexport const iconSizeMixin = (menuItemIconWidth: string, menuItemPaddingX: string): string => {\n return `\n width: ${menuItemIconWidth};\n left: ${parseInt(menuItemPaddingX)}px;\n `;\n};\n\nexport const withIconSizeMixin = (menuItemPaddingForIcon: string): string => {\n return `\n padding-left: ${menuItemPaddingForIcon};\n `;\n};\n"]}
1
+ {"version":3,"file":"MenuItem.mixins.js","sourceRoot":"","sources":["MenuItem.mixins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAC/B,gBAAwB,EACxB,gBAAwB,EACxB,kBAA0B,EAC1B,gBAAwB;IAElB,IAAA,KAAyB,mBAAmB,CAAC;QACjD,gBAAgB,kBAAA;QAChB,gBAAgB,kBAAA;KACjB,CAAC,EAHM,QAAQ,cAAA,EAAE,QAAQ,cAGxB,CAAC;IAEH,OAAO,6BACU,kBAAkB,+BACpB,gBAAgB,6BAClB,gBAAgB,cAAI,QAAQ,cAAI,QAAQ,cAAI,gBAAgB,UACxE,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,aAAa,GAAG,UAAC,iBAAyB,EAAE,gBAAwB;IAC/E,OAAO,uBACI,iBAAiB,0BAClB,QAAQ,CAAC,gBAAgB,CAAC,YACnC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAAC,sBAA8B;IAC9D,OAAO,8BACW,sBAAsB,UACvC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { getMenuItemPaddings } from './MenuItem.styles.js';\n\nexport const menuItemSizeMixin = (\n menuItemPaddingX: string,\n menuItemPaddingY: string,\n menuItemLineHeight: string,\n menuItemFontSize: string,\n): string => {\n const { paddingX, paddingY } = getMenuItemPaddings({\n menuItemPaddingX,\n menuItemPaddingY,\n });\n\n return `\n line-height: ${menuItemLineHeight};\n font-size: ${menuItemFontSize};\n padding: ${menuItemPaddingY} ${paddingX} ${paddingY} ${menuItemPaddingX};\n `;\n};\n\nexport const iconSizeMixin = (menuItemIconWidth: string, menuItemPaddingX: string): string => {\n return `\n width: ${menuItemIconWidth};\n left: ${parseInt(menuItemPaddingX)}px;\n `;\n};\n\nexport const withIconSizeMixin = (menuItemPaddingForIcon: string): string => {\n return `\n padding-left: ${menuItemPaddingForIcon};\n `;\n};\n"]}