@skbkontur/react-ui 6.4.6 → 6.4.7-b33c6.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 (909) hide show
  1. package/README.md +42 -0
  2. package/components/Autocomplete/Autocomplete.css.d.ts +6 -0
  3. package/components/Autocomplete/Autocomplete.css.js +4 -0
  4. package/components/Autocomplete/Autocomplete.css.js.map +1 -0
  5. package/components/Autocomplete/Autocomplete.d.ts +0 -3
  6. package/components/Autocomplete/Autocomplete.js +4 -6
  7. package/components/Autocomplete/Autocomplete.js.map +1 -1
  8. package/components/Autocomplete/getAutocompleteTheme.d.ts +1 -2
  9. package/components/Autocomplete/getAutocompleteTheme.js +3 -2
  10. package/components/Autocomplete/getAutocompleteTheme.js.map +1 -1
  11. package/components/Button/Button.classes.js +1 -1
  12. package/components/Button/Button.classes.js.map +1 -1
  13. package/components/Button/Button.css.d.ts +166 -0
  14. package/components/Button/Button.css.js +77 -0
  15. package/components/Button/Button.css.js.map +1 -0
  16. package/components/Button/Button.d.ts +0 -4
  17. package/components/Button/Button.js +73 -74
  18. package/components/Button/Button.js.map +1 -1
  19. package/components/Button/ButtonArrow.d.ts +1 -4
  20. package/components/Button/ButtonArrow.js +10 -14
  21. package/components/Button/ButtonArrow.js.map +1 -1
  22. package/components/Button/ButtonIcon.css.d.ts +28 -0
  23. package/components/Button/ButtonIcon.css.js +15 -0
  24. package/components/Button/ButtonIcon.css.js.map +1 -0
  25. package/components/Button/ButtonIcon.js +9 -21
  26. package/components/Button/ButtonIcon.js.map +1 -1
  27. package/components/Button/LoadingButtonIcon.js +2 -4
  28. package/components/Button/LoadingButtonIcon.js.map +1 -1
  29. package/components/Button/getInnerLinkTheme.d.ts +1 -2
  30. package/components/Button/getInnerLinkTheme.js +3 -2
  31. package/components/Button/getInnerLinkTheme.js.map +1 -1
  32. package/components/Calendar/Calendar.css.d.ts +8 -0
  33. package/components/Calendar/Calendar.css.js +5 -0
  34. package/components/Calendar/Calendar.css.js.map +1 -0
  35. package/components/Calendar/Calendar.d.ts +0 -3
  36. package/components/Calendar/Calendar.js +5 -5
  37. package/components/Calendar/Calendar.js.map +1 -1
  38. package/components/Calendar/CalendarDay.js +7 -9
  39. package/components/Calendar/CalendarDay.js.map +1 -1
  40. package/components/Calendar/DayCellView.css.d.ts +14 -0
  41. package/components/Calendar/DayCellView.css.js +8 -0
  42. package/components/Calendar/DayCellView.css.js.map +1 -0
  43. package/components/Calendar/DayCellView.js +2 -6
  44. package/components/Calendar/DayCellView.js.map +1 -1
  45. package/components/Calendar/Month.js +5 -25
  46. package/components/Calendar/Month.js.map +1 -1
  47. package/components/Calendar/MonthView.css.d.ts +20 -0
  48. package/components/Calendar/MonthView.css.js +11 -0
  49. package/components/Calendar/MonthView.css.js.map +1 -0
  50. package/components/Calendar/MonthView.js +8 -10
  51. package/components/Calendar/MonthView.js.map +1 -1
  52. package/components/Center/Center.css.d.ts +12 -0
  53. package/components/Center/Center.css.js +7 -0
  54. package/components/Center/Center.css.js.map +1 -0
  55. package/components/Center/Center.d.ts +0 -3
  56. package/components/Center/Center.js +8 -10
  57. package/components/Center/Center.js.map +1 -1
  58. package/components/Checkbox/Checkbox.css.d.ts +62 -0
  59. package/components/Checkbox/Checkbox.css.js +32 -0
  60. package/components/Checkbox/Checkbox.css.js.map +1 -0
  61. package/components/Checkbox/Checkbox.d.ts +0 -3
  62. package/components/Checkbox/Checkbox.js +33 -33
  63. package/components/Checkbox/Checkbox.js.map +1 -1
  64. package/components/Checkbox/Checkbox.mixins.d.ts +19 -4
  65. package/components/Checkbox/Checkbox.mixins.js +16 -15
  66. package/components/Checkbox/Checkbox.mixins.js.map +1 -1
  67. package/components/DateInput/DateFragmentsView.css.d.ts +10 -0
  68. package/components/DateInput/DateFragmentsView.css.js +6 -0
  69. package/components/DateInput/DateFragmentsView.css.js.map +1 -0
  70. package/components/DateInput/DateFragmentsView.d.ts +0 -5
  71. package/components/DateInput/DateFragmentsView.js +9 -17
  72. package/components/DateInput/DateFragmentsView.js.map +1 -1
  73. package/components/DateInput/DateInput.css.d.ts +16 -0
  74. package/components/DateInput/DateInput.css.js +9 -0
  75. package/components/DateInput/DateInput.css.js.map +1 -0
  76. package/components/DateInput/DateInput.d.ts +0 -5
  77. package/components/DateInput/DateInput.js +9 -18
  78. package/components/DateInput/DateInput.js.map +1 -1
  79. package/components/DatePicker/DatePicker.css.d.ts +6 -0
  80. package/components/DatePicker/DatePicker.css.js +4 -0
  81. package/components/DatePicker/DatePicker.css.js.map +1 -0
  82. package/components/DatePicker/DatePicker.d.ts +0 -2
  83. package/components/DatePicker/DatePicker.js +8 -7
  84. package/components/DatePicker/DatePicker.js.map +1 -1
  85. package/components/DatePicker/MobilePicker.css.d.ts +4 -0
  86. package/components/DatePicker/MobilePicker.css.js +3 -0
  87. package/components/DatePicker/MobilePicker.css.js.map +1 -0
  88. package/components/DatePicker/MobilePicker.js +2 -4
  89. package/components/DatePicker/MobilePicker.js.map +1 -1
  90. package/components/DatePicker/getMobilePickerTheme.d.ts +1 -2
  91. package/components/DatePicker/getMobilePickerTheme.js +3 -2
  92. package/components/DatePicker/getMobilePickerTheme.js.map +1 -1
  93. package/components/DateRangePicker/DateRangePicker.css.d.ts +34 -0
  94. package/components/DateRangePicker/DateRangePicker.css.js +18 -0
  95. package/components/DateRangePicker/DateRangePicker.css.js.map +1 -0
  96. package/components/DateRangePicker/DateRangePicker.d.ts +12 -12
  97. package/components/DateRangePicker/DateRangePicker.js +40 -38
  98. package/components/DateRangePicker/DateRangePicker.js.map +1 -1
  99. package/components/DateRangePicker/DateRangePickerTheme.d.ts +2 -3
  100. package/components/DateRangePicker/DateRangePickerTheme.js +5 -4
  101. package/components/DateRangePicker/DateRangePickerTheme.js.map +1 -1
  102. package/components/Dropdown/getDropdownTheme.d.ts +1 -2
  103. package/components/Dropdown/getDropdownTheme.js +3 -2
  104. package/components/Dropdown/getDropdownTheme.js.map +1 -1
  105. package/components/DropdownMenu/getDropdownMenuTheme.d.ts +1 -2
  106. package/components/DropdownMenu/getDropdownMenuTheme.js +3 -2
  107. package/components/DropdownMenu/getDropdownMenuTheme.js.map +1 -1
  108. package/components/FileUploader/FileUploader.css.d.ts +133 -0
  109. package/components/FileUploader/FileUploader.css.js +65 -0
  110. package/components/FileUploader/FileUploader.css.js.map +1 -0
  111. package/components/FileUploader/FileUploader.js +43 -46
  112. package/components/FileUploader/FileUploader.js.map +1 -1
  113. package/components/FileUploader/FileUploader.mixins.d.ts +6 -1
  114. package/components/FileUploader/FileUploader.mixins.js +6 -1
  115. package/components/FileUploader/FileUploader.mixins.js.map +1 -1
  116. package/components/FileUploader/FileUploaderFile.css.d.ts +111 -0
  117. package/components/FileUploader/FileUploaderFile.css.js +56 -0
  118. package/components/FileUploader/FileUploaderFile.css.js.map +1 -0
  119. package/components/FileUploader/FileUploaderFile.js +35 -40
  120. package/components/FileUploader/FileUploaderFile.js.map +1 -1
  121. package/components/FileUploader/FileUploaderFileList/FileUploaderFileList.css.d.ts +60 -0
  122. package/components/FileUploader/FileUploaderFileList/FileUploaderFileList.css.js +31 -0
  123. package/components/FileUploader/FileUploaderFileList/FileUploaderFileList.css.js.map +1 -0
  124. package/components/FileUploader/FileUploaderFileList/FileUploaderFileList.js +22 -28
  125. package/components/FileUploader/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  126. package/components/FileUploader/FileUploaderFileStatusIcon.js +3 -8
  127. package/components/FileUploader/FileUploaderFileStatusIcon.js.map +1 -1
  128. package/components/GlobalLoader/GlobalLoaderView.css.d.ts +26 -0
  129. package/components/GlobalLoader/GlobalLoaderView.css.js +14 -0
  130. package/components/GlobalLoader/GlobalLoaderView.css.js.map +1 -0
  131. package/components/GlobalLoader/GlobalLoaderView.js +20 -19
  132. package/components/GlobalLoader/GlobalLoaderView.js.map +1 -1
  133. package/components/Group/Group.css.d.ts +14 -0
  134. package/components/Group/Group.css.js +8 -0
  135. package/components/Group/Group.css.js.map +1 -0
  136. package/components/Group/Group.d.ts +0 -3
  137. package/components/Group/Group.js +10 -12
  138. package/components/Group/Group.js.map +1 -1
  139. package/components/Hint/Hint.css.d.ts +6 -0
  140. package/components/Hint/Hint.css.js +4 -0
  141. package/components/Hint/Hint.css.js.map +1 -0
  142. package/components/Hint/Hint.d.ts +0 -3
  143. package/components/Hint/Hint.js +10 -10
  144. package/components/Hint/Hint.js.map +1 -1
  145. package/components/Input/Input.css.d.ts +73 -0
  146. package/components/Input/Input.css.js +22 -0
  147. package/components/Input/Input.css.js.map +1 -0
  148. package/components/Input/Input.d.ts +0 -3
  149. package/components/Input/Input.js +18 -18
  150. package/components/Input/Input.js.map +1 -1
  151. package/components/Input/InputLayout/InputLayout.css.d.ts +32 -0
  152. package/components/Input/InputLayout/InputLayout.css.js +18 -0
  153. package/components/Input/InputLayout/InputLayout.css.js.map +1 -0
  154. package/components/Input/InputLayout/InputLayout.js +2 -4
  155. package/components/Input/InputLayout/InputLayout.js.map +1 -1
  156. package/components/Input/InputLayout/InputLayoutAside.js +2 -4
  157. package/components/Input/InputLayout/InputLayoutAside.js.map +1 -1
  158. package/components/Input/InputLayout/InputLayoutAsideCounter.js +9 -11
  159. package/components/Input/InputLayout/InputLayoutAsideCounter.js.map +1 -1
  160. package/components/Input/InputLayout/InputLayoutAsideIcon.js +3 -5
  161. package/components/Input/InputLayout/InputLayoutAsideIcon.js.map +1 -1
  162. package/components/Input/InputLayout/InputLayoutAsideText.js +4 -6
  163. package/components/Input/InputLayout/InputLayoutAsideText.js.map +1 -1
  164. package/components/Kebab/Kebab.css.d.ts +18 -0
  165. package/components/Kebab/Kebab.css.js +10 -0
  166. package/components/Kebab/Kebab.css.js.map +1 -0
  167. package/components/Kebab/Kebab.d.ts +0 -3
  168. package/components/Kebab/Kebab.js +6 -6
  169. package/components/Kebab/Kebab.js.map +1 -1
  170. package/components/Link/Link.css.d.ts +43 -0
  171. package/components/Link/Link.css.js +22 -0
  172. package/components/Link/Link.css.js.map +1 -0
  173. package/components/Link/Link.d.ts +0 -3
  174. package/components/Link/Link.js +25 -24
  175. package/components/Link/Link.js.map +1 -1
  176. package/components/Link/LinkIcon.js +4 -8
  177. package/components/Link/LinkIcon.js.map +1 -1
  178. package/components/Loader/Loader.css.d.ts +12 -0
  179. package/components/Loader/Loader.css.js +7 -0
  180. package/components/Loader/Loader.css.js.map +1 -0
  181. package/components/Loader/Loader.d.ts +0 -5
  182. package/components/Loader/Loader.js +8 -16
  183. package/components/Loader/Loader.js.map +1 -1
  184. package/components/MaskedInput/ColorableInputElement/ColorableInputElement.css.d.ts +7 -0
  185. package/components/MaskedInput/ColorableInputElement/ColorableInputElement.css.js +4 -0
  186. package/components/MaskedInput/ColorableInputElement/ColorableInputElement.css.js.map +1 -0
  187. package/components/MaskedInput/ColorableInputElement/ColorableInputElement.js +4 -6
  188. package/components/MaskedInput/ColorableInputElement/ColorableInputElement.js.map +1 -1
  189. package/components/MaskedInput/MaskedInput.css.d.ts +7 -0
  190. package/components/MaskedInput/MaskedInput.css.js +5 -0
  191. package/components/MaskedInput/MaskedInput.css.js.map +1 -0
  192. package/components/MaskedInput/MaskedInputLegacy.js +4 -8
  193. package/components/MaskedInput/MaskedInputLegacy.js.map +1 -1
  194. package/components/MaskedInputV2/MaskedInputV2.css.d.ts +7 -0
  195. package/components/MaskedInputV2/MaskedInputV2.css.js +5 -0
  196. package/components/MaskedInputV2/MaskedInputV2.css.js.map +1 -0
  197. package/components/MaskedInputV2/MaskedInputV2.js +4 -8
  198. package/components/MaskedInputV2/MaskedInputV2.js.map +1 -1
  199. package/components/MaskedInputV2/internal/MaskOverlay.js +7 -13
  200. package/components/MaskedInputV2/internal/MaskOverlay.js.map +1 -1
  201. package/components/MaskedInputV2/internal/MaskedCore.js +5 -8
  202. package/components/MaskedInputV2/internal/MaskedCore.js.map +1 -1
  203. package/components/MaskedInputV2/internal/MaskedInternal.css.d.ts +19 -0
  204. package/components/MaskedInputV2/internal/MaskedInternal.css.js +8 -0
  205. package/components/MaskedInputV2/internal/MaskedInternal.css.js.map +1 -0
  206. package/components/MaskedInputV2/react-imask/input.d.ts +1 -1
  207. package/components/MenuFooter/MenuFooter.css.d.ts +16 -0
  208. package/components/MenuFooter/MenuFooter.css.js +9 -0
  209. package/components/MenuFooter/MenuFooter.css.js.map +1 -0
  210. package/components/MenuFooter/MenuFooter.js +10 -14
  211. package/components/MenuFooter/MenuFooter.js.map +1 -1
  212. package/components/MenuFooter/MenuFooter.mixins.d.ts +8 -2
  213. package/components/MenuFooter/MenuFooter.mixins.js +8 -4
  214. package/components/MenuFooter/MenuFooter.mixins.js.map +1 -1
  215. package/components/MenuHeader/MenuHeader.css.d.ts +16 -0
  216. package/components/MenuHeader/MenuHeader.css.js +9 -0
  217. package/components/MenuHeader/MenuHeader.css.js.map +1 -0
  218. package/components/MenuHeader/MenuHeader.js +9 -13
  219. package/components/MenuHeader/MenuHeader.js.map +1 -1
  220. package/components/MenuHeader/MenuHeader.mixins.d.ts +8 -2
  221. package/components/MenuHeader/MenuHeader.mixins.js +8 -4
  222. package/components/MenuHeader/MenuHeader.mixins.js.map +1 -1
  223. package/components/MenuItem/MenuItem.css.d.ts +50 -0
  224. package/components/MenuItem/MenuItem.css.js +26 -0
  225. package/components/MenuItem/MenuItem.css.js.map +1 -0
  226. package/components/MenuItem/MenuItem.d.ts +0 -3
  227. package/components/MenuItem/MenuItem.js +30 -30
  228. package/components/MenuItem/MenuItem.js.map +1 -1
  229. package/components/MenuItem/MenuItem.mixins.d.ts +12 -4
  230. package/components/MenuItem/MenuItem.mixins.js +12 -19
  231. package/components/MenuItem/MenuItem.mixins.js.map +1 -1
  232. package/components/MenuSeparator/MenuSeparator.css.d.ts +6 -0
  233. package/components/MenuSeparator/MenuSeparator.css.js +4 -0
  234. package/components/MenuSeparator/MenuSeparator.css.js.map +1 -0
  235. package/components/MenuSeparator/MenuSeparator.js +7 -13
  236. package/components/MenuSeparator/MenuSeparator.js.map +1 -1
  237. package/components/MiniModal/MiniModal.css.d.ts +17 -0
  238. package/components/MiniModal/MiniModal.css.js +10 -0
  239. package/components/MiniModal/MiniModal.css.js.map +1 -0
  240. package/components/MiniModal/MiniModalBody.js +2 -8
  241. package/components/MiniModal/MiniModalBody.js.map +1 -1
  242. package/components/MiniModal/MiniModalFooter.js +4 -8
  243. package/components/MiniModal/MiniModalFooter.js.map +1 -1
  244. package/components/MiniModal/MiniModalHeader.js +6 -10
  245. package/components/MiniModal/MiniModalHeader.js.map +1 -1
  246. package/components/MiniModal/MiniModalIndent.js +3 -7
  247. package/components/MiniModal/MiniModalIndent.js.map +1 -1
  248. package/components/MiniModal/getMiniModalTheme.d.ts +1 -2
  249. package/components/MiniModal/getMiniModalTheme.js +3 -2
  250. package/components/MiniModal/getMiniModalTheme.js.map +1 -1
  251. package/components/Modal/Modal.css.d.ts +102 -0
  252. package/components/Modal/Modal.css.js +51 -0
  253. package/components/Modal/Modal.css.js.map +1 -0
  254. package/components/Modal/Modal.d.ts +0 -3
  255. package/components/Modal/Modal.js +26 -26
  256. package/components/Modal/Modal.js.map +1 -1
  257. package/components/Modal/ModalBody.d.ts +0 -3
  258. package/components/Modal/ModalBody.js +10 -12
  259. package/components/Modal/ModalBody.js.map +1 -1
  260. package/components/Modal/ModalClose.js +14 -19
  261. package/components/Modal/ModalClose.js.map +1 -1
  262. package/components/Modal/ModalFooter.js +3 -5
  263. package/components/Modal/ModalFooter.js.map +1 -1
  264. package/components/Modal/ModalHeader.js +3 -5
  265. package/components/Modal/ModalHeader.js.map +1 -1
  266. package/components/Modal/ModalSeparator.js +5 -9
  267. package/components/Modal/ModalSeparator.js.map +1 -1
  268. package/components/Modal/getModalBodyTheme.d.ts +1 -2
  269. package/components/Modal/getModalBodyTheme.js +3 -2
  270. package/components/Modal/getModalBodyTheme.js.map +1 -1
  271. package/components/Modal/getModalTheme.d.ts +1 -2
  272. package/components/Modal/getModalTheme.js +3 -2
  273. package/components/Modal/getModalTheme.js.map +1 -1
  274. package/components/Paging/Paging.css.d.ts +60 -0
  275. package/components/Paging/Paging.css.js +31 -0
  276. package/components/Paging/Paging.css.js.map +1 -0
  277. package/components/Paging/Paging.d.ts +0 -4
  278. package/components/Paging/Paging.js +36 -44
  279. package/components/Paging/Paging.js.map +1 -1
  280. package/components/PasswordInput/PasswordInput.css.d.ts +18 -0
  281. package/components/PasswordInput/PasswordInput.css.js +10 -0
  282. package/components/PasswordInput/PasswordInput.css.js.map +1 -0
  283. package/components/PasswordInput/PasswordInput.d.ts +0 -4
  284. package/components/PasswordInput/PasswordInput.js +10 -17
  285. package/components/PasswordInput/PasswordInput.js.map +1 -1
  286. package/components/Radio/Radio.css.d.ts +61 -0
  287. package/components/Radio/Radio.css.js +31 -0
  288. package/components/Radio/Radio.css.js.map +1 -0
  289. package/components/Radio/Radio.d.ts +0 -4
  290. package/components/Radio/Radio.js +33 -38
  291. package/components/Radio/Radio.js.map +1 -1
  292. package/components/Radio/Radio.mixins.d.ts +39 -7
  293. package/components/Radio/Radio.mixins.js +37 -23
  294. package/components/Radio/Radio.mixins.js.map +1 -1
  295. package/components/RadioGroup/RadioGroup.css.d.ts +10 -0
  296. package/components/RadioGroup/RadioGroup.css.js +6 -0
  297. package/components/RadioGroup/RadioGroup.css.js.map +1 -0
  298. package/components/RadioGroup/RadioGroup.d.ts +0 -3
  299. package/components/RadioGroup/RadioGroup.js +8 -10
  300. package/components/RadioGroup/RadioGroup.js.map +1 -1
  301. package/components/ScrollContainer/ScrollBar.d.ts +1 -6
  302. package/components/ScrollContainer/ScrollBar.js +25 -33
  303. package/components/ScrollContainer/ScrollBar.js.map +1 -1
  304. package/components/ScrollContainer/ScrollContainer.css.d.ts +31 -0
  305. package/components/ScrollContainer/ScrollContainer.css.js +14 -0
  306. package/components/ScrollContainer/ScrollContainer.css.js.map +1 -0
  307. package/components/ScrollContainer/ScrollContainer.d.ts +0 -3
  308. package/components/ScrollContainer/ScrollContainer.js +4 -4
  309. package/components/ScrollContainer/ScrollContainer.js.map +1 -1
  310. package/components/Select/Select.css.d.ts +31 -0
  311. package/components/Select/Select.css.js +16 -0
  312. package/components/Select/Select.css.js.map +1 -0
  313. package/components/Select/Select.d.ts +0 -4
  314. package/components/Select/Select.js +25 -24
  315. package/components/Select/Select.js.map +1 -1
  316. package/components/Select/selectTheme.d.ts +1 -3
  317. package/components/Select/selectTheme.js +8 -7
  318. package/components/Select/selectTheme.js.map +1 -1
  319. package/components/SidePage/SidePage.css.d.ts +96 -0
  320. package/components/SidePage/SidePage.css.js +49 -0
  321. package/components/SidePage/SidePage.css.js.map +1 -0
  322. package/components/SidePage/SidePage.d.ts +0 -5
  323. package/components/SidePage/SidePage.js +21 -29
  324. package/components/SidePage/SidePage.js.map +1 -1
  325. package/components/SidePage/SidePageBody.d.ts +0 -3
  326. package/components/SidePage/SidePageBody.js +5 -11
  327. package/components/SidePage/SidePageBody.js.map +1 -1
  328. package/components/SidePage/SidePageCloseButton.js +7 -10
  329. package/components/SidePage/SidePageCloseButton.js.map +1 -1
  330. package/components/SidePage/SidePageContainer.d.ts +0 -4
  331. package/components/SidePage/SidePageContainer.js +10 -17
  332. package/components/SidePage/SidePageContainer.js.map +1 -1
  333. package/components/SidePage/SidePageFooter.d.ts +1 -6
  334. package/components/SidePage/SidePageFooter.js +10 -18
  335. package/components/SidePage/SidePageFooter.js.map +1 -1
  336. package/components/SidePage/SidePageHeader.d.ts +0 -3
  337. package/components/SidePage/SidePageHeader.js +14 -16
  338. package/components/SidePage/SidePageHeader.js.map +1 -1
  339. package/components/Spinner/Spinner.css.d.ts +22 -0
  340. package/components/Spinner/Spinner.css.js +12 -0
  341. package/components/Spinner/Spinner.css.js.map +1 -0
  342. package/components/Spinner/Spinner.d.ts +0 -5
  343. package/components/Spinner/Spinner.js +9 -19
  344. package/components/Spinner/Spinner.js.map +1 -1
  345. package/components/Sticky/Sticky.css.d.ts +12 -0
  346. package/components/Sticky/Sticky.css.js +7 -0
  347. package/components/Sticky/Sticky.css.js.map +1 -0
  348. package/components/Sticky/Sticky.d.ts +0 -4
  349. package/components/Sticky/Sticky.js +7 -10
  350. package/components/Sticky/Sticky.js.map +1 -1
  351. package/components/Switcher/Switcher.css.d.ts +20 -0
  352. package/components/Switcher/Switcher.css.js +11 -0
  353. package/components/Switcher/Switcher.css.js.map +1 -0
  354. package/components/Switcher/Switcher.d.ts +0 -3
  355. package/components/Switcher/Switcher.js +11 -13
  356. package/components/Switcher/Switcher.js.map +1 -1
  357. package/components/Switcher/switcherTheme.d.ts +1 -2
  358. package/components/Switcher/switcherTheme.js +3 -2
  359. package/components/Switcher/switcherTheme.js.map +1 -1
  360. package/components/Tabs/Indicator.css.d.ts +12 -0
  361. package/components/Tabs/Indicator.css.js +7 -0
  362. package/components/Tabs/Indicator.css.js.map +1 -0
  363. package/components/Tabs/Indicator.d.ts +0 -3
  364. package/components/Tabs/Indicator.js +3 -3
  365. package/components/Tabs/Indicator.js.map +1 -1
  366. package/components/Tabs/Tab.css.d.ts +55 -0
  367. package/components/Tabs/Tab.css.js +28 -0
  368. package/components/Tabs/Tab.css.js.map +1 -0
  369. package/components/Tabs/Tab.d.ts +1 -8
  370. package/components/Tabs/Tab.js +23 -33
  371. package/components/Tabs/Tab.js.map +1 -1
  372. package/components/Tabs/Tabs.css.d.ts +10 -0
  373. package/components/Tabs/Tabs.css.js +6 -0
  374. package/components/Tabs/Tabs.css.js.map +1 -0
  375. package/components/Tabs/Tabs.d.ts +0 -4
  376. package/components/Tabs/Tabs.js +25 -30
  377. package/components/Tabs/Tabs.js.map +1 -1
  378. package/components/Textarea/Textarea.css.d.ts +42 -0
  379. package/components/Textarea/Textarea.css.js +22 -0
  380. package/components/Textarea/Textarea.css.js.map +1 -0
  381. package/components/Textarea/Textarea.d.ts +1 -4
  382. package/components/Textarea/Textarea.js +19 -19
  383. package/components/Textarea/Textarea.js.map +1 -1
  384. package/components/Textarea/Textarea.mixins.d.ts +8 -2
  385. package/components/Textarea/Textarea.mixins.js +8 -6
  386. package/components/Textarea/Textarea.mixins.js.map +1 -1
  387. package/components/Textarea/TextareaCounter.js +7 -9
  388. package/components/Textarea/TextareaCounter.js.map +1 -1
  389. package/components/ThemeContainer/ThemeContainer.d.ts +16 -0
  390. package/components/ThemeContainer/ThemeContainer.js +46 -0
  391. package/components/ThemeContainer/ThemeContainer.js.map +1 -0
  392. package/components/ThemeContainer/index.d.ts +1 -0
  393. package/components/ThemeContainer/index.js +2 -0
  394. package/components/ThemeContainer/index.js.map +1 -0
  395. package/components/TimePicker/TimePicker.css.d.ts +19 -0
  396. package/components/TimePicker/TimePicker.css.js +10 -0
  397. package/components/TimePicker/TimePicker.css.js.map +1 -0
  398. package/components/TimePicker/TimePicker.js +4 -6
  399. package/components/TimePicker/TimePicker.js.map +1 -1
  400. package/components/TimePicker/TimePickerItems.js +12 -16
  401. package/components/TimePicker/TimePickerItems.js.map +1 -1
  402. package/components/TimePicker/TimePickerPopup.js +2 -4
  403. package/components/TimePicker/TimePickerPopup.js.map +1 -1
  404. package/components/TimePicker/helpers/TimePicker.constants.d.ts +1 -0
  405. package/components/TimePicker/helpers/TimePicker.constants.js +3 -0
  406. package/components/TimePicker/helpers/TimePicker.constants.js.map +1 -1
  407. package/components/TimePicker/helpers/TimePicker.value.d.ts +0 -1
  408. package/components/TimePicker/helpers/TimePicker.value.js +0 -5
  409. package/components/TimePicker/helpers/TimePicker.value.js.map +1 -1
  410. package/components/Toast/Toast.css.d.ts +10 -0
  411. package/components/Toast/Toast.css.js +6 -0
  412. package/components/Toast/Toast.css.js.map +1 -0
  413. package/components/Toast/Toast.d.ts +0 -2
  414. package/components/Toast/Toast.js +7 -10
  415. package/components/Toast/Toast.js.map +1 -1
  416. package/components/Toast/ToastView.css.d.ts +31 -0
  417. package/components/Toast/ToastView.css.js +16 -0
  418. package/components/Toast/ToastView.css.js.map +1 -0
  419. package/components/Toast/ToastView.d.ts +0 -3
  420. package/components/Toast/ToastView.js +9 -11
  421. package/components/Toast/ToastView.js.map +1 -1
  422. package/components/Toggle/Toggle.classes.js +1 -1
  423. package/components/Toggle/Toggle.classes.js.map +1 -1
  424. package/components/Toggle/Toggle.css.d.ts +93 -0
  425. package/components/Toggle/Toggle.css.js +48 -0
  426. package/components/Toggle/Toggle.css.js.map +1 -0
  427. package/components/Toggle/Toggle.d.ts +1 -6
  428. package/components/Toggle/Toggle.js +52 -60
  429. package/components/Toggle/Toggle.js.map +1 -1
  430. package/components/Token/Token.css.d.ts +39 -0
  431. package/components/Token/Token.css.js +20 -0
  432. package/components/Token/Token.css.js.map +1 -0
  433. package/components/Token/Token.d.ts +0 -5
  434. package/components/Token/Token.js +4 -15
  435. package/components/Token/Token.js.map +1 -1
  436. package/components/Token/Token.mixins.d.ts +6 -1
  437. package/components/Token/Token.mixins.js +6 -3
  438. package/components/Token/Token.mixins.js.map +1 -1
  439. package/components/Token/TokenView.js +8 -12
  440. package/components/Token/TokenView.js.map +1 -1
  441. package/components/TokenInput/TextWidthHelper.d.ts +0 -3
  442. package/components/TokenInput/TextWidthHelper.js +7 -17
  443. package/components/TokenInput/TextWidthHelper.js.map +1 -1
  444. package/components/TokenInput/TokenInput.css.d.ts +40 -0
  445. package/components/TokenInput/TokenInput.css.js +22 -0
  446. package/components/TokenInput/TokenInput.css.js.map +1 -0
  447. package/components/TokenInput/TokenInput.d.ts +0 -3
  448. package/components/TokenInput/TokenInput.js +22 -23
  449. package/components/TokenInput/TokenInput.js.map +1 -1
  450. package/components/TokenInput/TokenInput.mixins.d.ts +8 -2
  451. package/components/TokenInput/TokenInput.mixins.js +8 -6
  452. package/components/TokenInput/TokenInput.mixins.js.map +1 -1
  453. package/components/TokenInput/TokenInputMenu.js +5 -3
  454. package/components/TokenInput/TokenInputMenu.js.map +1 -1
  455. package/components/Tooltip/Tooltip.css.d.ts +18 -0
  456. package/components/Tooltip/Tooltip.css.js +10 -0
  457. package/components/Tooltip/Tooltip.css.js.map +1 -0
  458. package/components/Tooltip/Tooltip.d.ts +0 -3
  459. package/components/Tooltip/Tooltip.js +28 -41
  460. package/components/Tooltip/Tooltip.js.map +1 -1
  461. package/components/TooltipMenu/TooltipMenu.js +10 -6
  462. package/components/TooltipMenu/TooltipMenu.js.map +1 -1
  463. package/index.d.ts +1 -0
  464. package/index.js +1 -0
  465. package/index.js.map +1 -1
  466. package/internal/ClearCrossIcon/ClearCrossIcon.css.d.ts +18 -0
  467. package/internal/ClearCrossIcon/ClearCrossIcon.css.js +10 -0
  468. package/internal/ClearCrossIcon/ClearCrossIcon.css.js.map +1 -0
  469. package/internal/ClearCrossIcon/ClearCrossIcon.js +8 -11
  470. package/internal/ClearCrossIcon/ClearCrossIcon.js.map +1 -1
  471. package/internal/CloseButtonIcon/CloseButtonIcon.css.d.ts +14 -0
  472. package/internal/CloseButtonIcon/CloseButtonIcon.css.js +8 -0
  473. package/internal/CloseButtonIcon/CloseButtonIcon.css.js.map +1 -0
  474. package/internal/CloseButtonIcon/CloseButtonIcon.js +15 -13
  475. package/internal/CloseButtonIcon/CloseButtonIcon.js.map +1 -1
  476. package/internal/CommonWrapper/CommonWrapper.d.ts +6 -2
  477. package/internal/CommonWrapper/CommonWrapper.js +29 -7
  478. package/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  479. package/internal/CustomComboBox/ComboBoxView.d.ts +0 -4
  480. package/internal/CustomComboBox/ComboBoxView.js +6 -9
  481. package/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  482. package/internal/CustomComboBox/CustomComboBox.css.d.ts +6 -0
  483. package/internal/CustomComboBox/CustomComboBox.css.js +4 -0
  484. package/internal/CustomComboBox/CustomComboBox.css.js.map +1 -0
  485. package/internal/CustomComboBox/getComboBoxTheme.d.ts +1 -2
  486. package/internal/CustomComboBox/getComboBoxTheme.js +3 -2
  487. package/internal/CustomComboBox/getComboBoxTheme.js.map +1 -1
  488. package/internal/DateSelect/DateSelect.css.d.ts +11 -0
  489. package/internal/DateSelect/DateSelect.css.js +6 -0
  490. package/internal/DateSelect/DateSelect.css.js.map +1 -0
  491. package/internal/DateSelect/DateSelect.d.ts +0 -3
  492. package/internal/DateSelect/DateSelect.js +5 -7
  493. package/internal/DateSelect/DateSelect.js.map +1 -1
  494. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.css.d.ts +4 -0
  495. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.css.js +3 -0
  496. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.css.js.map +1 -0
  497. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.d.ts +1 -2
  498. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js +8 -13
  499. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
  500. package/internal/InputLikeText/InputLikeText.css.d.ts +8 -0
  501. package/internal/InputLikeText/InputLikeText.css.js +5 -0
  502. package/internal/InputLikeText/InputLikeText.css.js.map +1 -0
  503. package/internal/InputLikeText/InputLikeText.d.ts +0 -4
  504. package/internal/InputLikeText/InputLikeText.js +28 -29
  505. package/internal/InputLikeText/InputLikeText.js.map +1 -1
  506. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.css.d.ts +6 -0
  507. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.css.js +5 -0
  508. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.css.js.map +1 -0
  509. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.d.ts +0 -5
  510. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.js +33 -33
  511. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.js.map +1 -1
  512. package/internal/MaskCharLowLine/MaskCharLowLine.css.d.ts +4 -0
  513. package/internal/MaskCharLowLine/MaskCharLowLine.css.js +3 -0
  514. package/internal/MaskCharLowLine/MaskCharLowLine.css.js.map +1 -0
  515. package/internal/MaskCharLowLine/MaskCharLowLine.js +2 -4
  516. package/internal/MaskCharLowLine/MaskCharLowLine.js.map +1 -1
  517. package/internal/Menu/Menu.css.d.ts +28 -0
  518. package/internal/Menu/Menu.css.js +15 -0
  519. package/internal/Menu/Menu.css.js.map +1 -0
  520. package/internal/Menu/Menu.d.ts +0 -3
  521. package/internal/Menu/Menu.js +28 -24
  522. package/internal/Menu/Menu.js.map +1 -1
  523. package/internal/MenuMessage/MenuMessage.css.d.ts +18 -0
  524. package/internal/MenuMessage/MenuMessage.css.js +10 -0
  525. package/internal/MenuMessage/MenuMessage.css.js.map +1 -0
  526. package/internal/MenuMessage/MenuMessage.js +10 -12
  527. package/internal/MenuMessage/MenuMessage.js.map +1 -1
  528. package/internal/MobilePopup/MobilePopup.css.d.ts +30 -0
  529. package/internal/MobilePopup/MobilePopup.css.js +16 -0
  530. package/internal/MobilePopup/MobilePopup.css.js.map +1 -0
  531. package/internal/MobilePopup/MobilePopup.d.ts +0 -3
  532. package/internal/MobilePopup/MobilePopup.js +17 -19
  533. package/internal/MobilePopup/MobilePopup.js.map +1 -1
  534. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.css.d.ts +10 -0
  535. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.css.js +6 -0
  536. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.css.js.map +1 -0
  537. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +0 -2
  538. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js +5 -16
  539. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js.map +1 -1
  540. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.css.d.ts +24 -0
  541. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.css.js +13 -0
  542. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.css.js.map +1 -0
  543. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.d.ts +0 -3
  544. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js +18 -28
  545. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  546. package/internal/NativeDateInput/NativeDateInput.css.d.ts +4 -0
  547. package/internal/NativeDateInput/NativeDateInput.css.js +3 -0
  548. package/internal/NativeDateInput/NativeDateInput.css.js.map +1 -0
  549. package/internal/NativeDateInput/NativeDateInput.d.ts +0 -2
  550. package/internal/NativeDateInput/NativeDateInput.js +2 -13
  551. package/internal/NativeDateInput/NativeDateInput.js.map +1 -1
  552. package/internal/NativeTimeInput/NativeTimeInput.css.d.ts +4 -0
  553. package/internal/NativeTimeInput/NativeTimeInput.css.js +3 -0
  554. package/internal/NativeTimeInput/NativeTimeInput.css.js.map +1 -0
  555. package/internal/NativeTimeInput/NativeTimeInput.js +2 -4
  556. package/internal/NativeTimeInput/NativeTimeInput.js.map +1 -1
  557. package/internal/Popup/Popup.css.d.ts +35 -0
  558. package/internal/Popup/Popup.css.js +16 -0
  559. package/internal/Popup/Popup.css.js.map +1 -0
  560. package/internal/Popup/Popup.d.ts +0 -3
  561. package/internal/Popup/Popup.js +22 -20
  562. package/internal/Popup/Popup.js.map +1 -1
  563. package/internal/Popup/PopupPin.css.d.ts +16 -0
  564. package/internal/Popup/PopupPin.css.js +9 -0
  565. package/internal/Popup/PopupPin.css.js.map +1 -0
  566. package/internal/Popup/PopupPin.d.ts +0 -3
  567. package/internal/Popup/PopupPin.js +8 -8
  568. package/internal/Popup/PopupPin.js.map +1 -1
  569. package/internal/PopupMenu/PopupMenu.css.d.ts +6 -0
  570. package/internal/PopupMenu/PopupMenu.css.js +4 -0
  571. package/internal/PopupMenu/PopupMenu.css.js.map +1 -0
  572. package/internal/PopupMenu/PopupMenu.d.ts +0 -2
  573. package/internal/PopupMenu/PopupMenu.js +9 -8
  574. package/internal/PopupMenu/PopupMenu.js.map +1 -1
  575. package/internal/RenderContainer/RenderContainer.d.ts +2 -0
  576. package/internal/RenderContainer/RenderContainer.js +38 -3
  577. package/internal/RenderContainer/RenderContainer.js.map +1 -1
  578. package/internal/RenderContainer/RenderInnerContainer.js +6 -3
  579. package/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
  580. package/internal/ResizeDetector/ResizeDetector.css.d.ts +12 -0
  581. package/internal/ResizeDetector/ResizeDetector.css.js +7 -0
  582. package/internal/ResizeDetector/ResizeDetector.css.js.map +1 -0
  583. package/internal/ResizeDetector/ResizeDetector.d.ts +0 -3
  584. package/internal/ResizeDetector/ResizeDetector.js +8 -18
  585. package/internal/ResizeDetector/ResizeDetector.js.map +1 -1
  586. package/internal/SpinnerIcon/SpinnerIcon.css.d.ts +10 -0
  587. package/internal/SpinnerIcon/SpinnerIcon.css.js +6 -0
  588. package/internal/SpinnerIcon/SpinnerIcon.css.js.map +1 -0
  589. package/internal/SpinnerIcon/SpinnerIcon.js +5 -7
  590. package/internal/SpinnerIcon/SpinnerIcon.js.map +1 -1
  591. package/internal/TextWidthHelper/TextWidthHelper.css.d.ts +6 -0
  592. package/internal/TextWidthHelper/TextWidthHelper.css.js +4 -0
  593. package/internal/TextWidthHelper/TextWidthHelper.css.js.map +1 -0
  594. package/internal/TextWidthHelper/TextWidthHelper.d.ts +0 -2
  595. package/internal/TextWidthHelper/TextWidthHelper.js +3 -14
  596. package/internal/TextWidthHelper/TextWidthHelper.js.map +1 -1
  597. package/internal/TimeInput/TimeFragments.css.d.ts +47 -0
  598. package/internal/TimeInput/TimeFragments.css.js +18 -0
  599. package/internal/TimeInput/TimeFragments.css.js.map +1 -0
  600. package/internal/TimeInput/TimeFragments.js +22 -26
  601. package/internal/TimeInput/TimeFragments.js.map +1 -1
  602. package/internal/TimeInput/TimeInput.css.d.ts +10 -0
  603. package/internal/TimeInput/TimeInput.css.js +6 -0
  604. package/internal/TimeInput/TimeInput.css.js.map +1 -0
  605. package/internal/TimeInput/TimeInput.js +6 -8
  606. package/internal/TimeInput/TimeInput.js.map +1 -1
  607. package/internal/icons2022/BaseIcon.css.d.ts +4 -0
  608. package/internal/icons2022/BaseIcon.css.js +3 -0
  609. package/internal/icons2022/BaseIcon.css.js.map +1 -0
  610. package/internal/icons2022/BaseIcon.js +2 -4
  611. package/internal/icons2022/BaseIcon.js.map +1 -1
  612. package/internal/icons2022/LoadingIcon.js +3 -7
  613. package/internal/icons2022/LoadingIcon.js.map +1 -1
  614. package/internal/themes/BasicTheme.d.ts +5 -5
  615. package/internal/themes/BasicTheme.js +42 -12
  616. package/internal/themes/BasicTheme.js.map +1 -1
  617. package/internal/themes/DarkTheme6_0.js +0 -2
  618. package/internal/themes/DarkTheme6_0.js.map +1 -1
  619. package/lib/cx.d.ts +2 -0
  620. package/lib/cx.js +23 -0
  621. package/lib/cx.js.map +1 -0
  622. package/lib/prefix.d.ts +2 -0
  623. package/lib/prefix.js +22 -0
  624. package/lib/prefix.js.map +1 -0
  625. package/lib/renderEnvironment/RenderEnvironmentContext.d.ts +0 -4
  626. package/lib/renderEnvironment/RenderEnvironmentContext.js +21 -16
  627. package/lib/renderEnvironment/RenderEnvironmentContext.js.map +1 -1
  628. package/lib/renderEnvironment/RenderEnvironmentDecorator.js +1 -3
  629. package/lib/renderEnvironment/RenderEnvironmentDecorator.js.map +1 -1
  630. package/lib/styles/LabGrotesqueBaseline.css.d.ts +1 -0
  631. package/lib/styles/LabGrotesqueBaseline.css.js +0 -0
  632. package/lib/styles/LabGrotesqueBaseline.css.js.map +1 -0
  633. package/lib/styles/UiFont.css.d.ts +1 -0
  634. package/lib/styles/UiFont.css.js +2 -0
  635. package/lib/styles/UiFont.css.js.map +1 -0
  636. package/lib/styles/getLabGrotesqueBaselineCompensation.d.ts +6 -1
  637. package/lib/styles/getLabGrotesqueBaselineCompensation.js +23 -6
  638. package/lib/styles/getLabGrotesqueBaselineCompensation.js.map +1 -1
  639. package/lib/theming/ThemeFactory.d.ts +1 -10
  640. package/lib/theming/ThemeFactory.js +1 -29
  641. package/lib/theming/ThemeFactory.js.map +1 -1
  642. package/lib/theming/memoizeTheme.d.ts +11 -0
  643. package/lib/theming/memoizeTheme.js +37 -0
  644. package/lib/theming/memoizeTheme.js.map +1 -0
  645. package/lib/theming/themeVars.d.ts +37 -0
  646. package/lib/theming/themeVars.js +121 -0
  647. package/lib/theming/themeVars.js.map +1 -0
  648. package/package.json +22 -7
  649. package/react-ui.css +6096 -0
  650. package/theme-loader.js +51 -0
  651. package/components/Autocomplete/Autocomplete.styles.d.ts +0 -5
  652. package/components/Autocomplete/Autocomplete.styles.js +0 -18
  653. package/components/Autocomplete/Autocomplete.styles.js.map +0 -1
  654. package/components/Button/Button.mixins.d.ts +0 -4
  655. package/components/Button/Button.mixins.js +0 -21
  656. package/components/Button/Button.mixins.js.map +0 -1
  657. package/components/Button/Button.styles.d.ts +0 -95
  658. package/components/Button/Button.styles.js +0 -260
  659. package/components/Button/Button.styles.js.map +0 -1
  660. package/components/Button/ButtonIcon.styles.d.ts +0 -16
  661. package/components/Button/ButtonIcon.styles.js +0 -53
  662. package/components/Button/ButtonIcon.styles.js.map +0 -1
  663. package/components/Calendar/Calendar.styles.d.ts +0 -6
  664. package/components/Calendar/Calendar.styles.js +0 -22
  665. package/components/Calendar/Calendar.styles.js.map +0 -1
  666. package/components/Calendar/DayCellView.styles.d.ts +0 -9
  667. package/components/Calendar/DayCellView.styles.js +0 -31
  668. package/components/Calendar/DayCellView.styles.js.map +0 -1
  669. package/components/Calendar/MonthView.styles.d.ts +0 -13
  670. package/components/Calendar/MonthView.styles.js +0 -47
  671. package/components/Calendar/MonthView.styles.js.map +0 -1
  672. package/components/Center/Center.styles.d.ts +0 -7
  673. package/components/Center/Center.styles.js +0 -27
  674. package/components/Center/Center.styles.js.map +0 -1
  675. package/components/Checkbox/Checkbox.styles.d.ts +0 -34
  676. package/components/Checkbox/Checkbox.styles.js +0 -100
  677. package/components/Checkbox/Checkbox.styles.js.map +0 -1
  678. package/components/DateInput/DateFragmentsView.styles.d.ts +0 -7
  679. package/components/DateInput/DateFragmentsView.styles.js +0 -28
  680. package/components/DateInput/DateFragmentsView.styles.js.map +0 -1
  681. package/components/DateInput/DateInput.styles.d.ts +0 -11
  682. package/components/DateInput/DateInput.styles.js +0 -29
  683. package/components/DateInput/DateInput.styles.js.map +0 -1
  684. package/components/DatePicker/DatePicker.styles.d.ts +0 -5
  685. package/components/DatePicker/DatePicker.styles.js +0 -18
  686. package/components/DatePicker/DatePicker.styles.js.map +0 -1
  687. package/components/DatePicker/MobilePicker.styles.d.ts +0 -3
  688. package/components/DatePicker/MobilePicker.styles.js +0 -15
  689. package/components/DatePicker/MobilePicker.styles.js.map +0 -1
  690. package/components/DateRangePicker/DateRangePicker.styles.d.ts +0 -16
  691. package/components/DateRangePicker/DateRangePicker.styles.js +0 -57
  692. package/components/DateRangePicker/DateRangePicker.styles.js.map +0 -1
  693. package/components/FileUploader/FileUploader.styles.d.ts +0 -74
  694. package/components/FileUploader/FileUploader.styles.js +0 -221
  695. package/components/FileUploader/FileUploader.styles.js.map +0 -1
  696. package/components/FileUploader/FileUploaderFile.styles.d.ts +0 -60
  697. package/components/FileUploader/FileUploaderFile.styles.js +0 -184
  698. package/components/FileUploader/FileUploaderFile.styles.js.map +0 -1
  699. package/components/FileUploader/FileUploaderFileList/FileUploaderFileList.styles.d.ts +0 -34
  700. package/components/FileUploader/FileUploaderFileList/FileUploaderFileList.styles.js +0 -103
  701. package/components/FileUploader/FileUploaderFileList/FileUploaderFileList.styles.js.map +0 -1
  702. package/components/GlobalLoader/GlobalLoaderView.styles.d.ts +0 -17
  703. package/components/GlobalLoader/GlobalLoaderView.styles.js +0 -70
  704. package/components/GlobalLoader/GlobalLoaderView.styles.js.map +0 -1
  705. package/components/Group/Group.styles.d.ts +0 -8
  706. package/components/Group/Group.styles.js +0 -30
  707. package/components/Group/Group.styles.js.map +0 -1
  708. package/components/Hint/Hint.styles.d.ts +0 -5
  709. package/components/Hint/Hint.styles.js +0 -18
  710. package/components/Hint/Hint.styles.js.map +0 -1
  711. package/components/Input/Input.styles.d.ts +0 -21
  712. package/components/Input/Input.styles.js +0 -68
  713. package/components/Input/Input.styles.js.map +0 -1
  714. package/components/Input/InputLayout/InputLayout.styles.d.ts +0 -18
  715. package/components/Input/InputLayout/InputLayout.styles.js +0 -59
  716. package/components/Input/InputLayout/InputLayout.styles.js.map +0 -1
  717. package/components/Kebab/Kebab.styles.d.ts +0 -11
  718. package/components/Kebab/Kebab.styles.js +0 -36
  719. package/components/Kebab/Kebab.styles.js.map +0 -1
  720. package/components/Link/Link.mixins.d.ts +0 -2
  721. package/components/Link/Link.mixins.js +0 -7
  722. package/components/Link/Link.mixins.js.map +0 -1
  723. package/components/Link/Link.styles.d.ts +0 -24
  724. package/components/Link/Link.styles.js +0 -82
  725. package/components/Link/Link.styles.js.map +0 -1
  726. package/components/Loader/Loader.styles.d.ts +0 -8
  727. package/components/Loader/Loader.styles.js +0 -27
  728. package/components/Loader/Loader.styles.js.map +0 -1
  729. package/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles.d.ts +0 -6
  730. package/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles.js +0 -18
  731. package/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles.js.map +0 -1
  732. package/components/MaskedInput/MaskedInput.styles.d.ts +0 -7
  733. package/components/MaskedInput/MaskedInput.styles.js +0 -19
  734. package/components/MaskedInput/MaskedInput.styles.js.map +0 -1
  735. package/components/MaskedInputV2/MaskedInputV2.styles.d.ts +0 -7
  736. package/components/MaskedInputV2/MaskedInputV2.styles.js +0 -19
  737. package/components/MaskedInputV2/MaskedInputV2.styles.js.map +0 -1
  738. package/components/MaskedInputV2/internal/MaskedInternal.styles.d.ts +0 -15
  739. package/components/MaskedInputV2/internal/MaskedInternal.styles.js +0 -34
  740. package/components/MaskedInputV2/internal/MaskedInternal.styles.js.map +0 -1
  741. package/components/MenuFooter/MenuFooter.styles.d.ts +0 -10
  742. package/components/MenuFooter/MenuFooter.styles.js +0 -34
  743. package/components/MenuFooter/MenuFooter.styles.js.map +0 -1
  744. package/components/MenuHeader/MenuHeader.styles.d.ts +0 -10
  745. package/components/MenuHeader/MenuHeader.styles.js +0 -34
  746. package/components/MenuHeader/MenuHeader.styles.js.map +0 -1
  747. package/components/MenuItem/MenuItem.styles.d.ts +0 -29
  748. package/components/MenuItem/MenuItem.styles.js +0 -88
  749. package/components/MenuItem/MenuItem.styles.js.map +0 -1
  750. package/components/MenuSeparator/MenuSeparator.styles.d.ts +0 -5
  751. package/components/MenuSeparator/MenuSeparator.styles.js +0 -18
  752. package/components/MenuSeparator/MenuSeparator.styles.js.map +0 -1
  753. package/components/MiniModal/MiniModal.styles.d.ts +0 -11
  754. package/components/MiniModal/MiniModal.styles.js +0 -37
  755. package/components/MiniModal/MiniModal.styles.js.map +0 -1
  756. package/components/Modal/Modal.styles.d.ts +0 -55
  757. package/components/Modal/Modal.styles.js +0 -167
  758. package/components/Modal/Modal.styles.js.map +0 -1
  759. package/components/Paging/Paging.styles.d.ts +0 -32
  760. package/components/Paging/Paging.styles.js +0 -99
  761. package/components/Paging/Paging.styles.js.map +0 -1
  762. package/components/PasswordInput/PasswordInput.styles.d.ts +0 -11
  763. package/components/PasswordInput/PasswordInput.styles.js +0 -36
  764. package/components/PasswordInput/PasswordInput.styles.js.map +0 -1
  765. package/components/Radio/Radio.styles.d.ts +0 -34
  766. package/components/Radio/Radio.styles.js +0 -100
  767. package/components/Radio/Radio.styles.js.map +0 -1
  768. package/components/RadioGroup/RadioGroup.styles.d.ts +0 -6
  769. package/components/RadioGroup/RadioGroup.styles.js +0 -24
  770. package/components/RadioGroup/RadioGroup.styles.js.map +0 -1
  771. package/components/ScrollContainer/ScrollContainer.styles.d.ts +0 -21
  772. package/components/ScrollContainer/ScrollContainer.styles.js +0 -52
  773. package/components/ScrollContainer/ScrollContainer.styles.js.map +0 -1
  774. package/components/Select/Select.styles.d.ts +0 -18
  775. package/components/Select/Select.styles.js +0 -57
  776. package/components/Select/Select.styles.js.map +0 -1
  777. package/components/SidePage/SidePage.styles.d.ts +0 -50
  778. package/components/SidePage/SidePage.styles.js +0 -158
  779. package/components/SidePage/SidePage.styles.js.map +0 -1
  780. package/components/Spinner/Spinner.styles.d.ts +0 -13
  781. package/components/Spinner/Spinner.styles.js +0 -43
  782. package/components/Spinner/Spinner.styles.js.map +0 -1
  783. package/components/Sticky/Sticky.styles.d.ts +0 -7
  784. package/components/Sticky/Sticky.styles.js +0 -27
  785. package/components/Sticky/Sticky.styles.js.map +0 -1
  786. package/components/Switcher/Switcher.styles.d.ts +0 -12
  787. package/components/Switcher/Switcher.styles.js +0 -39
  788. package/components/Switcher/Switcher.styles.js.map +0 -1
  789. package/components/Tabs/Indicator.styles.d.ts +0 -8
  790. package/components/Tabs/Indicator.styles.js +0 -27
  791. package/components/Tabs/Indicator.styles.js.map +0 -1
  792. package/components/Tabs/Tab.styles.d.ts +0 -33
  793. package/components/Tabs/Tab.styles.js +0 -105
  794. package/components/Tabs/Tab.styles.js.map +0 -1
  795. package/components/Tabs/Tabs.styles.d.ts +0 -7
  796. package/components/Tabs/Tabs.styles.js +0 -26
  797. package/components/Tabs/Tabs.styles.js.map +0 -1
  798. package/components/Textarea/Textarea.styles.d.ts +0 -23
  799. package/components/Textarea/Textarea.styles.js +0 -73
  800. package/components/Textarea/Textarea.styles.js.map +0 -1
  801. package/components/TimePicker/TimePicker.styles.d.ts +0 -12
  802. package/components/TimePicker/TimePicker.styles.js +0 -39
  803. package/components/TimePicker/TimePicker.styles.js.map +0 -1
  804. package/components/Toast/Toast.styles.d.ts +0 -6
  805. package/components/Toast/Toast.styles.js +0 -24
  806. package/components/Toast/Toast.styles.js.map +0 -1
  807. package/components/Toast/ToastView.styles.d.ts +0 -18
  808. package/components/Toast/ToastView.styles.js +0 -67
  809. package/components/Toast/ToastView.styles.js.map +0 -1
  810. package/components/Toggle/Toggle.mixins.d.ts +0 -8
  811. package/components/Toggle/Toggle.mixins.js +0 -32
  812. package/components/Toggle/Toggle.mixins.js.map +0 -1
  813. package/components/Toggle/Toggle.styles.d.ts +0 -49
  814. package/components/Toggle/Toggle.styles.js +0 -147
  815. package/components/Toggle/Toggle.styles.js.map +0 -1
  816. package/components/Token/Token.styles.d.ts +0 -23
  817. package/components/Token/Token.styles.js +0 -67
  818. package/components/Token/Token.styles.js.map +0 -1
  819. package/components/TokenInput/TokenInput.styles.d.ts +0 -22
  820. package/components/TokenInput/TokenInput.styles.js +0 -71
  821. package/components/TokenInput/TokenInput.styles.js.map +0 -1
  822. package/components/Tooltip/Tooltip.styles.d.ts +0 -11
  823. package/components/Tooltip/Tooltip.styles.js +0 -36
  824. package/components/Tooltip/Tooltip.styles.js.map +0 -1
  825. package/internal/ClearCrossIcon/ClearCrossIcon.styles.d.ts +0 -12
  826. package/internal/ClearCrossIcon/ClearCrossIcon.styles.js +0 -36
  827. package/internal/ClearCrossIcon/ClearCrossIcon.styles.js.map +0 -1
  828. package/internal/CloseButtonIcon/CloseButtonIcon.styles.d.ts +0 -8
  829. package/internal/CloseButtonIcon/CloseButtonIcon.styles.js +0 -24
  830. package/internal/CloseButtonIcon/CloseButtonIcon.styles.js.map +0 -1
  831. package/internal/CustomComboBox/CustomComboBox.styles.d.ts +0 -4
  832. package/internal/CustomComboBox/CustomComboBox.styles.js +0 -18
  833. package/internal/CustomComboBox/CustomComboBox.styles.js.map +0 -1
  834. package/internal/DateSelect/DateSelect.styles.d.ts +0 -9
  835. package/internal/DateSelect/DateSelect.styles.js +0 -24
  836. package/internal/DateSelect/DateSelect.styles.js.map +0 -1
  837. package/internal/InputLikeText/InputLikeText.styles.d.ts +0 -8
  838. package/internal/InputLikeText/InputLikeText.styles.js +0 -30
  839. package/internal/InputLikeText/InputLikeText.styles.js.map +0 -1
  840. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.d.ts +0 -3
  841. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.js +0 -15
  842. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.js.map +0 -1
  843. package/internal/MaskCharLowLine/MaskCharLowLine.styles.d.ts +0 -3
  844. package/internal/MaskCharLowLine/MaskCharLowLine.styles.js +0 -15
  845. package/internal/MaskCharLowLine/MaskCharLowLine.styles.js.map +0 -1
  846. package/internal/Menu/Menu.styles.d.ts +0 -16
  847. package/internal/Menu/Menu.styles.js +0 -51
  848. package/internal/Menu/Menu.styles.js.map +0 -1
  849. package/internal/MenuMessage/MenuMessage.styles.d.ts +0 -11
  850. package/internal/MenuMessage/MenuMessage.styles.js +0 -41
  851. package/internal/MenuMessage/MenuMessage.styles.js.map +0 -1
  852. package/internal/MobilePopup/MobilePopup.styles.d.ts +0 -17
  853. package/internal/MobilePopup/MobilePopup.styles.js +0 -57
  854. package/internal/MobilePopup/MobilePopup.styles.js.map +0 -1
  855. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +0 -7
  856. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js +0 -25
  857. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js.map +0 -1
  858. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.d.ts +0 -14
  859. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js +0 -47
  860. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js.map +0 -1
  861. package/internal/NativeDateInput/NativeDateInput.styles.d.ts +0 -3
  862. package/internal/NativeDateInput/NativeDateInput.styles.js +0 -15
  863. package/internal/NativeDateInput/NativeDateInput.styles.js.map +0 -1
  864. package/internal/NativeTimeInput/NativeTimeInput.styles.d.ts +0 -3
  865. package/internal/NativeTimeInput/NativeTimeInput.styles.js +0 -15
  866. package/internal/NativeTimeInput/NativeTimeInput.styles.js.map +0 -1
  867. package/internal/Popup/Popup.styles.d.ts +0 -22
  868. package/internal/Popup/Popup.styles.js +0 -69
  869. package/internal/Popup/Popup.styles.js.map +0 -1
  870. package/internal/Popup/PopupPin.styles.d.ts +0 -9
  871. package/internal/Popup/PopupPin.styles.js +0 -33
  872. package/internal/Popup/PopupPin.styles.js.map +0 -1
  873. package/internal/PopupMenu/PopupMenu.styles.d.ts +0 -4
  874. package/internal/PopupMenu/PopupMenu.styles.js +0 -18
  875. package/internal/PopupMenu/PopupMenu.styles.js.map +0 -1
  876. package/internal/ResizeDetector/ResizeDetector.styles.d.ts +0 -7
  877. package/internal/ResizeDetector/ResizeDetector.styles.js +0 -27
  878. package/internal/ResizeDetector/ResizeDetector.styles.js.map +0 -1
  879. package/internal/SpinnerIcon/SpinnerIcon.styles.d.ts +0 -6
  880. package/internal/SpinnerIcon/SpinnerIcon.styles.js +0 -24
  881. package/internal/SpinnerIcon/SpinnerIcon.styles.js.map +0 -1
  882. package/internal/TextWidthHelper/TextWidthHelper.styles.d.ts +0 -4
  883. package/internal/TextWidthHelper/TextWidthHelper.styles.js +0 -18
  884. package/internal/TextWidthHelper/TextWidthHelper.styles.js.map +0 -1
  885. package/internal/TimeInput/TimeFragments.styles.d.ts +0 -32
  886. package/internal/TimeInput/TimeFragments.styles.js +0 -78
  887. package/internal/TimeInput/TimeFragments.styles.js.map +0 -1
  888. package/internal/TimeInput/TimeInput.styles.d.ts +0 -7
  889. package/internal/TimeInput/TimeInput.styles.js +0 -24
  890. package/internal/TimeInput/TimeInput.styles.js.map +0 -1
  891. package/internal/icons2022/BaseIcon.styles.d.ts +0 -3
  892. package/internal/icons2022/BaseIcon.styles.js +0 -16
  893. package/internal/icons2022/BaseIcon.styles.js.map +0 -1
  894. package/lib/Upgrades.d.ts +0 -6
  895. package/lib/Upgrades.js +0 -34
  896. package/lib/Upgrades.js.map +0 -1
  897. package/lib/styles/Mixins.d.ts +0 -2
  898. package/lib/styles/Mixins.js +0 -7
  899. package/lib/styles/Mixins.js.map +0 -1
  900. package/lib/styles/UiFont.d.ts +0 -3
  901. package/lib/styles/UiFont.js +0 -18
  902. package/lib/styles/UiFont.js.map +0 -1
  903. package/lib/theming/AnimationKeyframes.d.ts +0 -7
  904. package/lib/theming/AnimationKeyframes.js +0 -24
  905. package/lib/theming/AnimationKeyframes.js.map +0 -1
  906. package/lib/theming/Emotion.d.ts +0 -15
  907. package/lib/theming/Emotion.js +0 -72
  908. package/lib/theming/Emotion.js.map +0 -1
  909. package/typings/stylis-plugin-extra-scope.d.ts +0 -3
@@ -20,23 +20,19 @@ var __rest = (this && this.__rest) || function (s, e) {
20
20
  }
21
21
  return t;
22
22
  };
23
- import React, { useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';
23
+ import React, { useEffect, useImperativeHandle, useRef, useState } from 'react';
24
+ import { cx } from '../../lib/cx.js';
24
25
  import { isKeyBackspace, isKeyDelete } from '../../lib/events/keyboard/identifiers.js';
25
26
  import { forwardRefAndName } from '../../lib/forwardRefAndName.js';
26
- import { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';
27
- import { ThemeContext } from '../../lib/theming/ThemeContext.js';
28
27
  import { Input as InputComponent } from '../Input/index.js';
29
28
  import { ColorableInputElement } from './ColorableInputElement/index.js';
30
29
  import { FixedIMaskInput } from './FixedIMaskInput.js';
30
+ import { styles, globalClasses } from './MaskedInput.css.js';
31
31
  import { getDefinitions, getMaskChar } from './MaskedInput.helpers.js';
32
- import { getStyles, globalClasses } from './MaskedInput.styles.js';
33
32
  export var MaskedInputLegacy = forwardRefAndName('MaskedInputLegacy', function MaskedInputLegacy(props, ref) {
34
33
  var mask = props.mask, maskChar = props.maskChar, formatChars = props.formatChars, _a = props.alwaysShowMask, alwaysShowMask = _a === void 0 ? false : _a, _b = props.colored, colored = _b === void 0 ? true : _b, _c = props.imaskProps, customIMaskProps = _c === void 0 ? {} : _c, _d = props.unmask, unmask = _d === void 0 ? false : _d, onValueChange = props.onValueChange, onUnexpectedInput = props.onUnexpectedInput, onChange = props.onChange, onBeforePasteValue = props.onBeforePasteValue, element = props.element, className = props.className,
35
34
  // @ts-expect-error: могут передавать игнорируя ошибку
36
35
  maxLength = props.maxLength, inputProps = __rest(props, ["mask", "maskChar", "formatChars", "alwaysShowMask", "colored", "imaskProps", "unmask", "onValueChange", "onUnexpectedInput", "onChange", "onBeforePasteValue", "element", "className", "maxLength"]);
37
- var theme = useContext(ThemeContext);
38
- var cx = useEmotion().cx;
39
- var styles = useStyles(getStyles);
40
36
  var inputRef = useRef(null);
41
37
  var _e = useState(false), focused = _e[0], setFocused = _e[1];
42
38
  var prevValue = useRef(props.value || String(props.defaultValue) || '');
@@ -62,7 +58,7 @@ export var MaskedInputLegacy = forwardRefAndName('MaskedInputLegacy', function M
62
58
  }
63
59
  }, []);
64
60
  var imaskProps = getCompatibleIMaskProps();
65
- return (React.createElement(InputComponent, __assign({ ref: inputRef }, inputProps, { onFocus: handleFocus, onBlur: handleBlur, onInput: handleInput, onKeyDown: handleKeyDown, onPaste: handlePaste, className: cx(globalClasses.root, className, styles.root(theme)), element: colored ? (React.createElement(ColorableInputElement, { showOnFocus: false, alwaysShowMask: alwaysShowMask },
61
+ return (React.createElement(InputComponent, __assign({ ref: inputRef }, inputProps, { onFocus: handleFocus, onBlur: handleBlur, onInput: handleInput, onKeyDown: handleKeyDown, onPaste: handlePaste, className: cx(globalClasses.root, className, styles.root), element: colored ? (React.createElement(ColorableInputElement, { showOnFocus: false, alwaysShowMask: alwaysShowMask },
66
62
  React.createElement(FixedIMaskInput, __assign({}, imaskProps, { onAccept: handleAccept })))) : (React.createElement(FixedIMaskInput, __assign({}, imaskProps, { onAccept: handleAccept }))) })));
67
63
  function handlePaste(event) {
68
64
  var _a, _b, _c;
@@ -1 +1 @@
1
- {"version":3,"file":"MaskedInputLegacy.js","sourceRoot":"","sources":["MaskedInputLegacy.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { IMaskInputProps } from '@skbkontur/react-imask';\nimport React, { useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport type { Ref } from 'react';\n\nimport { isKeyBackspace, isKeyDelete } from '../../lib/events/keyboard/identifiers.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { Input } from '../Input/index.js';\nimport { Input as InputComponent } from '../Input/index.js';\nimport { ColorableInputElement } from './ColorableInputElement/index.js';\nimport { FixedIMaskInput } from './FixedIMaskInput.js';\nimport { getDefinitions, getMaskChar } from './MaskedInput.helpers.js';\nimport type { MaskedInputProps } from './MaskedInput.js';\nimport { getStyles, globalClasses } from './MaskedInput.styles.js';\n\nexport const MaskedInputLegacy = forwardRefAndName(\n 'MaskedInputLegacy',\n function MaskedInputLegacy(props: MaskedInputProps, ref: Ref<Input | null>) {\n const {\n mask,\n maskChar,\n formatChars,\n alwaysShowMask = false,\n colored = true,\n imaskProps: customIMaskProps = {},\n unmask = false,\n onValueChange,\n onUnexpectedInput,\n onChange,\n onBeforePasteValue,\n element,\n className,\n // @ts-expect-error: могут передавать игнорируя ошибку\n maxLength,\n ...inputProps\n } = props;\n const theme = useContext(ThemeContext);\n const { cx } = useEmotion();\n const styles = useStyles(getStyles);\n\n const inputRef = useRef<Input>(null);\n\n const [focused, setFocused] = useState(false);\n const prevValue = useRef<string>(props.value || String(props.defaultValue) || '');\n const prevSelectionStart = useRef<number | null>(null);\n\n useImperativeHandle<typeof inputRef.current, typeof inputRef.current>(\n ref,\n () =>\n inputRef.current &&\n Object.assign(inputRef.current, {\n selectAll: () => {\n inputRef.current?.focus();\n inputRef.current?.delaySelectAll();\n },\n }),\n [],\n );\n\n useEffect(() => {\n // Для корректной работы onUnexpectedInput надо знать предыдущий value,\n // но imask при монтировании не вызывает onAccept, если value невалиден или laze=false.\n // Поэтому актуальный value при монтировании надо получать вручную\n if (inputRef.current?.input) {\n prevValue.current = inputRef.current.input.value;\n prevSelectionStart.current = inputRef.current.input.selectionStart;\n }\n }, []);\n\n const imaskProps = getCompatibleIMaskProps();\n\n return (\n <InputComponent\n ref={inputRef}\n {...inputProps}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onInput={handleInput}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n className={cx(globalClasses.root, className, styles.root(theme))}\n element={\n colored ? (\n <ColorableInputElement showOnFocus={false} alwaysShowMask={alwaysShowMask}>\n <FixedIMaskInput {...imaskProps} onAccept={handleAccept} />\n </ColorableInputElement>\n ) : (\n <FixedIMaskInput {...imaskProps} onAccept={handleAccept} />\n )\n }\n />\n );\n\n function handlePaste(event: React.ClipboardEvent<HTMLInputElement>) {\n if (onBeforePasteValue && onValueChange) {\n event.preventDefault();\n onValueChange?.(onBeforePasteValue(event.clipboardData?.getData('text') ?? ''));\n }\n\n props.onPaste?.(event);\n }\n\n function getCompatibleIMaskProps(): IMaskInputProps<HTMLInputElement> {\n return {\n mask: mask.replace(/0/g, '{\\\\0}') as any,\n placeholderChar: getMaskChar(maskChar),\n definitions: getDefinitions(formatChars),\n // FIXME: Должно быть eager=true, но в imask ломается удаление по delete\n eager: 'append',\n overwrite: 'shift',\n lazy: !alwaysShowMask && (props.disabled || !focused),\n unmask,\n ...customIMaskProps,\n } as IMaskInputProps<HTMLInputElement>;\n }\n\n function handleAccept(...args: Parameters<Required<IMaskInputProps<HTMLInputElement>>['onAccept']>) {\n const [value, , e] = args;\n\n // Метод onAccept может вызываться при монтировании, если не задан проп defaultValue.\n // Но нативный input никогда не вызывает onChange при монтировании.\n // Наше событие onValueChange в Input вывается в тех же случаях, что и нативный onChange,\n // поэтому чтобы сохранить консинстентность будем ориентироваться на наличие аргумента e.\n // Он содержит нативное событие, вызвавшее изменение.\n e && onValueChange?.(value);\n !e && (prevValue.current = value);\n }\n\n /**\n * Отслеживаем неожиданные нажатия\n * handleAccept не вызывается когда значение с маской не меняется\n * Сначала вызывается handleAccept, затем handleInput\n */\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const { value, selectionStart } = e.currentTarget;\n\n // При вводе неожиданных символов или удалении каретка может перепрыгивать фиксированные символы.\n // Такие случаи не расцениваем как неожиданный ввод, т.к. пользователь может намеренно их вводить.\n if (prevValue.current === value && selectionStart === prevSelectionStart.current) {\n handleUnexpectedInput(value);\n }\n prevValue.current = value;\n prevSelectionStart.current = selectionStart;\n\n props.onInput?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(true);\n props.onFocus?.(e);\n\n // Если value из пропсов отличается от value, которое получит input после обработки,\n // то imask будет ставить каретку за последним валидным символом.\n props.selectAllOnFocus && inputRef.current?.delaySelectAll();\n }\n\n function handleUnexpectedInput(value: string) {\n const blink = inputRef.current?.blink.bind(inputRef.current) || (() => undefined);\n onUnexpectedInput ? onUnexpectedInput(value, blink) : blink();\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(false);\n props.onBlur?.(e);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n const { value, selectionStart, selectionEnd } = e.currentTarget;\n\n if (\n (isKeyBackspace(e) && selectionStart === 0 && selectionEnd === 0) ||\n (isKeyDelete(e) && prevSelectionStart.current === value.length)\n ) {\n // Случаи, когда нажатие клавиш не тригерит `onInput`\n handleUnexpectedInput(value);\n prevValue.current = e.currentTarget.value;\n }\n prevSelectionStart.current = selectionStart;\n\n props.onKeyDown?.(e);\n }\n },\n);\n"]}
1
+ {"version":3,"file":"MaskedInputLegacy.js","sourceRoot":"","sources":["MaskedInputLegacy.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGhF,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvE,MAAM,CAAC,IAAM,iBAAiB,GAAG,iBAAiB,CAChD,mBAAmB,EACnB,SAAS,iBAAiB,CAAC,KAAuB,EAAE,GAAsB;IAEtE,IAAA,IAAI,GAgBF,KAAK,KAhBH,EACJ,QAAQ,GAeN,KAAK,SAfC,EACR,WAAW,GAcT,KAAK,YAdI,EACX,KAaE,KAAK,eAbe,EAAtB,cAAc,mBAAG,KAAK,KAAA,EACtB,KAYE,KAAK,QAZO,EAAd,OAAO,mBAAG,IAAI,KAAA,EACd,KAWE,KAAK,WAX0B,EAArB,gBAAgB,mBAAG,EAAE,KAAA,EACjC,KAUE,KAAK,OAVO,EAAd,MAAM,mBAAG,KAAK,KAAA,EACd,aAAa,GASX,KAAK,cATM,EACb,iBAAiB,GAQf,KAAK,kBARU,EACjB,QAAQ,GAON,KAAK,SAPC,EACR,kBAAkB,GAMhB,KAAK,mBANW,EAClB,OAAO,GAKL,KAAK,QALA,EACP,SAAS,GAIP,KAAK,UAJE;IACT,sDAAsD;IACtD,SAAS,GAEP,KAAK,UAFE,EACN,UAAU,UACX,KAAK,EAjBH,qMAiBL,CADc,CACL;IAEV,IAAM,QAAQ,GAAG,MAAM,CAAQ,IAAI,CAAC,CAAC;IAE/B,IAAA,KAAwB,QAAQ,CAAC,KAAK,CAAC,EAAtC,OAAO,QAAA,EAAE,UAAU,QAAmB,CAAC;IAC9C,IAAM,SAAS,GAAG,MAAM,CAAS,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;IAClF,IAAM,kBAAkB,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;IAEvD,mBAAmB,CACjB,GAAG,EACH;QACE,OAAA,QAAQ,CAAC,OAAO;YAChB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;gBAC9B,SAAS,EAAE;;oBACT,MAAA,QAAQ,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;oBAC1B,MAAA,QAAQ,CAAC,OAAO,0CAAE,cAAc,EAAE,CAAC;gBACrC,CAAC;aACF,CAAC;IANF,CAME,EACJ,EAAE,CACH,CAAC;IAEF,SAAS,CAAC;;QACR,uEAAuE;QACvE,uFAAuF;QACvF,kEAAkE;QAClE,IAAI,MAAA,QAAQ,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;YAC5B,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;YACjD,kBAAkB,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;QACrE,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAM,UAAU,GAAG,uBAAuB,EAAE,CAAC;IAE7C,OAAO,CACL,oBAAC,cAAc,aACb,GAAG,EAAE,QAAQ,IACT,UAAU,IACd,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,EACzD,OAAO,EACL,OAAO,CAAC,CAAC,CAAC,CACR,oBAAC,qBAAqB,IAAC,WAAW,EAAE,KAAK,EAAE,cAAc,EAAE,cAAc;YACvE,oBAAC,eAAe,eAAK,UAAU,IAAE,QAAQ,EAAE,YAAY,IAAI,CACrC,CACzB,CAAC,CAAC,CAAC,CACF,oBAAC,eAAe,eAAK,UAAU,IAAE,QAAQ,EAAE,YAAY,IAAI,CAC5D,IAEH,CACH,CAAC;IAEF,SAAS,WAAW,CAAC,KAA6C;;QAChE,IAAI,kBAAkB,IAAI,aAAa,EAAE,CAAC;YACxC,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAG,kBAAkB,CAAC,MAAA,MAAA,KAAK,CAAC,aAAa,0CAAE,OAAO,CAAC,MAAM,CAAC,mCAAI,EAAE,CAAC,CAAC,CAAC;QAClF,CAAC;QAED,MAAA,KAAK,CAAC,OAAO,sDAAG,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,SAAS,uBAAuB;QAC9B,OAAO,WACL,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAQ,EACxC,eAAe,EAAE,WAAW,CAAC,QAAQ,CAAC,EACtC,WAAW,EAAE,cAAc,CAAC,WAAW,CAAC;YACxC,wEAAwE;YACxE,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,OAAO,EAClB,IAAI,EAAE,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,EACrD,MAAM,QAAA,IACH,gBAAgB,CACiB,CAAC;IACzC,CAAC;IAED,SAAS,YAAY;QAAC,cAA4E;aAA5E,UAA4E,EAA5E,qBAA4E,EAA5E,IAA4E;YAA5E,yBAA4E;;QACzF,IAAA,KAAK,GAAS,IAAI,GAAb,EAAI,CAAC,GAAI,IAAI,GAAR,CAAS;QAE1B,qFAAqF;QACrF,mEAAmE;QACnE,yFAAyF;QACzF,yFAAyF;QACzF,qDAAqD;QACrD,CAAC,KAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAG,KAAK,CAAC,CAAA,CAAC;QAC5B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,SAAS,WAAW,CAAC,CAAsC;;QACnD,IAAA,KAA4B,CAAC,CAAC,aAAa,EAAzC,KAAK,WAAA,EAAE,cAAc,oBAAoB,CAAC;QAElD,iGAAiG;QACjG,kGAAkG;QAClG,IAAI,SAAS,CAAC,OAAO,KAAK,KAAK,IAAI,cAAc,KAAK,kBAAkB,CAAC,OAAO,EAAE,CAAC;YACjF,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QACD,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;QAC1B,kBAAkB,CAAC,OAAO,GAAG,cAAc,CAAC;QAE5C,MAAA,KAAK,CAAC,OAAO,sDAAG,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,SAAS,WAAW,CAAC,CAAqC;;QACxD,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,MAAA,KAAK,CAAC,OAAO,sDAAG,CAAC,CAAC,CAAC;QAEnB,oFAAoF;QACpF,iEAAiE;QACjE,KAAK,CAAC,gBAAgB,KAAI,MAAA,QAAQ,CAAC,OAAO,0CAAE,cAAc,EAAE,CAAA,CAAC;IAC/D,CAAC;IAED,SAAS,qBAAqB,CAAC,KAAa;;QAC1C,IAAM,KAAK,GAAG,CAAA,MAAA,QAAQ,CAAC,OAAO,0CAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAI,CAAC,cAAM,OAAA,SAAS,EAAT,CAAS,CAAC,CAAC;QAClF,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IAChE,CAAC;IAED,SAAS,UAAU,CAAC,CAAqC;;QACvD,UAAU,CAAC,KAAK,CAAC,CAAC;QAClB,MAAA,KAAK,CAAC,MAAM,sDAAG,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,SAAS,aAAa,CAAC,CAAwC;;QACvD,IAAA,KAA0C,CAAC,CAAC,aAAa,EAAvD,KAAK,WAAA,EAAE,cAAc,oBAAA,EAAE,YAAY,kBAAoB,CAAC;QAEhE,IACE,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,cAAc,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC,CAAC;YACjE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC,OAAO,KAAK,KAAK,CAAC,MAAM,CAAC,EAC/D,CAAC;YACD,qDAAqD;YACrD,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC7B,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC;QAC5C,CAAC;QACD,kBAAkB,CAAC,OAAO,GAAG,cAAc,CAAC;QAE5C,MAAA,KAAK,CAAC,SAAS,sDAAG,CAAC,CAAC,CAAC;IACvB,CAAC;AACH,CAAC,CACF,CAAC","sourcesContent":["import type { IMaskInputProps } from '@skbkontur/react-imask';\nimport React, { useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport type { Ref } from 'react';\n\nimport { cx } from '../../lib/cx.js';\nimport { isKeyBackspace, isKeyDelete } from '../../lib/events/keyboard/identifiers.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport type { Input } from '../Input/index.js';\nimport { Input as InputComponent } from '../Input/index.js';\nimport { ColorableInputElement } from './ColorableInputElement/index.js';\nimport { FixedIMaskInput } from './FixedIMaskInput.js';\nimport { styles, globalClasses } from './MaskedInput.css.js';\nimport { getDefinitions, getMaskChar } from './MaskedInput.helpers.js';\nimport type { MaskedInputProps } from './MaskedInput.js';\n\nexport const MaskedInputLegacy = forwardRefAndName(\n 'MaskedInputLegacy',\n function MaskedInputLegacy(props: MaskedInputProps, ref: Ref<Input | null>) {\n const {\n mask,\n maskChar,\n formatChars,\n alwaysShowMask = false,\n colored = true,\n imaskProps: customIMaskProps = {},\n unmask = false,\n onValueChange,\n onUnexpectedInput,\n onChange,\n onBeforePasteValue,\n element,\n className,\n // @ts-expect-error: могут передавать игнорируя ошибку\n maxLength,\n ...inputProps\n } = props;\n\n const inputRef = useRef<Input>(null);\n\n const [focused, setFocused] = useState(false);\n const prevValue = useRef<string>(props.value || String(props.defaultValue) || '');\n const prevSelectionStart = useRef<number | null>(null);\n\n useImperativeHandle<typeof inputRef.current, typeof inputRef.current>(\n ref,\n () =>\n inputRef.current &&\n Object.assign(inputRef.current, {\n selectAll: () => {\n inputRef.current?.focus();\n inputRef.current?.delaySelectAll();\n },\n }),\n [],\n );\n\n useEffect(() => {\n // Для корректной работы onUnexpectedInput надо знать предыдущий value,\n // но imask при монтировании не вызывает onAccept, если value невалиден или laze=false.\n // Поэтому актуальный value при монтировании надо получать вручную\n if (inputRef.current?.input) {\n prevValue.current = inputRef.current.input.value;\n prevSelectionStart.current = inputRef.current.input.selectionStart;\n }\n }, []);\n\n const imaskProps = getCompatibleIMaskProps();\n\n return (\n <InputComponent\n ref={inputRef}\n {...inputProps}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onInput={handleInput}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n className={cx(globalClasses.root, className, styles.root)}\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"]}
@@ -0,0 +1,7 @@
1
+ export declare const globalClasses: {
2
+ root: string;
3
+ };
4
+ export declare const root: string;
5
+ export declare const styles: {
6
+ root: string;
7
+ };
@@ -0,0 +1,5 @@
1
+
2
+
3
+ export var globalClasses = {root:'react-ui-masked-input-v2-root'};
4
+ export var root = 'react-ui-MaskedInputV2__root';
5
+ export var styles = {root:'react-ui-MaskedInputV2__root'};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaskedInputV2.css.js","sourceRoot":"","sources":["MaskedInputV2.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE7C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,CAAC,EAAE,MAAM,8BAA8B,CAAC;AAEjD,MAAM,CAAC,IAAM,aAAa,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACrD,IAAI,EAAE,MAAM;CACb,CAAC,CAAC;AAEH,MAAM,CAAC,IAAM,IAAI,GAAG,KAAK,CAAC;IACxB,UAAU,EAAE,UAAG,YAAY,cAAI,CAAC,CAAC,cAAc,CAAE;IACjD,kBAAkB,EAAE,cAAc;CACnC,CAAC,CAAC;AAEH,MAAM,CAAC,IAAM,MAAM,GAAG,EAAE,IAAI,MAAA,EAAE,CAAC","sourcesContent":["import { style } from '@vanilla-extract/css';\n\nimport { prefix } from '../../lib/prefix.js';\nimport { UI_FONT_NAME } from '../../lib/styles/UiFont.css.js';\nimport { t } from '../../lib/theming/vanilla.js';\n\nexport const globalClasses = prefix('masked-input-v2')({\n root: 'root',\n});\n\nexport const root = style({\n fontFamily: `${UI_FONT_NAME},${t.baseFontFamily}`,\n fontVariantNumeric: 'tabular-nums',\n});\n\nexport const styles = { root };\n"]}
@@ -20,20 +20,19 @@ var __rest = (this && this.__rest) || function (s, e) {
20
20
  }
21
21
  return t;
22
22
  };
23
- import React, { useCallback, useContext, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState, } from 'react';
23
+ import React, { useCallback, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState } from 'react';
24
24
  import warning from 'warning';
25
+ import { cx } from '../../lib/cx.js';
25
26
  import { forwardRefAndName } from '../../lib/forwardRefAndName.js';
26
- import { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';
27
- import { ThemeContext } from '../../lib/theming/ThemeContext.js';
28
27
  import { Input, selectionAllowedTypes } from '../Input/index.js';
29
28
  import { extractRaw, findNearestRawLeft, computePasteMaskedCursor } from './internal/helpers.js';
30
29
  import { MaskedCore } from './internal/MaskedCore.js';
31
30
  import { getSelectionRawRange } from './internal/maskedCoreClipboard.js';
32
31
  import { setMaskInputSelectionRange } from './internal/setMaskInputSelectionRange.js';
33
32
  import { useMaskEngine } from './internal/useMaskEngine.js';
33
+ import { styles, globalClasses } from './MaskedInputV2.css.js';
34
34
  import { getDefinitions, getMaskChar } from './MaskedInputV2.helpers.js';
35
35
  import { normalizeRussianPhonePaste } from './MaskedInputV2.phone.js';
36
- import { getStyles, globalClasses } from './MaskedInputV2.styles.js';
37
36
  var EMPTY_IMASK_PROPS = {};
38
37
  export var getSafeMaskInputType = function (type) {
39
38
  if (!type) {
@@ -67,9 +66,6 @@ export var MaskedInputV2 = forwardRefAndName('MaskedInputV2', function MaskedInp
67
66
  warning(false, '[MaskedInputV2]: This component is for internal use only. Please use MaskedInput instead.');
68
67
  }
69
68
  }, [__fromMaskedInputFacade]);
70
- var theme = useContext(ThemeContext);
71
- var cx = useEmotion().cx;
72
- var styles = useStyles(getStyles);
73
69
  var inputRef = useRef(null);
74
70
  var coreInputRef = useRef(null);
75
71
  var _e = useState(false), focused = _e[0], setFocused = _e[1];
@@ -183,7 +179,7 @@ export var MaskedInputV2 = forwardRefAndName('MaskedInputV2', function MaskedInp
183
179
  return (React.createElement(Input, __assign({ ref: inputRef }, inputProps, { type: getSafeMaskInputType(type), inputMode: getMaskInputMode(type, inputProps.inputMode),
184
180
  // Непустоту значения Input считает по value нативного инпута, где лежат символы маски,
185
181
  // поэтому на пустом значении крестик выключаем сами.
186
- showClearIcon: raw === '' ? 'never' : showClearIcon, onValueChange: handleInputValueChange, onFocus: handleFocus, onBlur: handleBlur, onSelect: handleSelect, className: cx(globalClasses.root, className, styles.root(theme)), element: React.createElement(MaskedCore, { maskState: maskState, slotMap: engine.slotMap, engine: engine, focused: focused, currentRaw: raw, onRawChange: handleRawChange, onUnexpectedInput: triggerUnexpectedInput, onUndo: handleUndo, onRedo: handleRedo, coreInputRef: coreInputRef, colored: colored, selectAllOnFocus: selectAllOnFocus, selectionIntent: selectionIntent, onSelectionIntentChange: requestSelectionIntent }) })));
182
+ showClearIcon: raw === '' ? 'never' : showClearIcon, onValueChange: handleInputValueChange, onFocus: handleFocus, onBlur: handleBlur, onSelect: handleSelect, className: cx(globalClasses.root, className, styles.root), element: React.createElement(MaskedCore, { maskState: maskState, slotMap: engine.slotMap, engine: engine, focused: focused, currentRaw: raw, onRawChange: handleRawChange, onUnexpectedInput: triggerUnexpectedInput, onUndo: handleUndo, onRedo: handleRedo, coreInputRef: coreInputRef, colored: colored, selectAllOnFocus: selectAllOnFocus, selectionIntent: selectionIntent, onSelectionIntentChange: requestSelectionIntent }) })));
187
183
  // Клик по крестику очистки Input отдаёт наружу через onValueChange, а сам чистит поле
188
184
  // записью в DOM — мимо модели маски, из-за чего значение вернулось бы при следующем рендере.
189
185
  // Поэтому очищаем через raw, как при обычном вводе.
@@ -1 +1 @@
1
- {"version":3,"file":"MaskedInputV2.js","sourceRoot":"","sources":["MaskedInputV2.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { Ref } from 'react';\nimport warning from 'warning';\n\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, selectionAllowedTypes } from '../Input/index.js';\nimport { extractRaw, findNearestRawLeft, computePasteMaskedCursor } from './internal/helpers.js';\nimport { MaskedCore } from './internal/MaskedCore.js';\nimport type { MaskedSelectionIntent } from './internal/MaskedCore.types.js';\nimport { getSelectionRawRange } from './internal/maskedCoreClipboard.js';\nimport { setMaskInputSelectionRange } from './internal/setMaskInputSelectionRange.js';\nimport { useMaskEngine } from './internal/useMaskEngine.js';\nimport { getDefinitions, getMaskChar } from './MaskedInputV2.helpers.js';\nimport { normalizeRussianPhonePaste } from './MaskedInputV2.phone.js';\nimport { getStyles, globalClasses } from './MaskedInputV2.styles.js';\nimport type { IMaskInputProps } from './react-imask/mixin.js';\n\nexport type MaskedInputV2OnBeforePasteValue = (value: string) => string;\n\nexport interface MaskedInputV2MaskedProps {\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 — текст из буфера, браузерного autofill\n * или иной bulk-вставки без clipboard-события.\n *\n * Обработчик должен вернуть текст — он попадёт в поле.\n *\n * При `type=\"tel\"` и отсутствии обработчика применяется\n * {@link normalizeRussianPhonePaste}.\n *\n * @param value значение вставки.\n */\n onBeforePasteValue?: MaskedInputV2OnBeforePasteValue;\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\nconst EMPTY_IMASK_PROPS = {};\n\nexport const getSafeMaskInputType = (type?: InputType | string): MaskInputType | undefined => {\n if (!type) {\n return undefined;\n }\n\n const normalizedType = type.trim() as InputType;\n\n if (normalizedType === 'password' || !selectionAllowedTypes.includes(normalizedType)) {\n return 'text';\n }\n\n return normalizedType as MaskInputType;\n};\n\nfunction getMaskInputMode(\n type: InputType | string | undefined,\n inputMode: React.InputHTMLAttributes<HTMLInputElement>['inputMode'],\n): React.InputHTMLAttributes<HTMLInputElement>['inputMode'] {\n if (inputMode) {\n return inputMode;\n }\n\n if (type?.trim() === 'email') {\n return 'email';\n }\n\n return undefined;\n}\n\nexport interface MaskedInputV2Props\n extends\n MaskedInputV2MaskedProps,\n Omit<InputProps, 'mask' | 'maxLength' | 'type' | 'alwaysShowMask' | 'onUnexpectedInput' | 'maskChar'> {\n type?: MaskInputType;\n\n /** @ignore */\n __fromMaskedInputFacade?: boolean;\n}\n\n/** @deprecated Используйте {@link MaskedInput}. Для legacy-поведения включите фичафлаг `maskedInputUseLegacyBehavior` в {@link ReactUIFeatureFlagsContext}. */\nexport const MaskedInputV2 = forwardRefAndName(\n 'MaskedInputV2',\n function MaskedInputV2(props: MaskedInputV2Props, ref: Ref<Input | null>) {\n const {\n mask,\n maskChar,\n formatChars,\n alwaysShowMask = false,\n colored = true,\n imaskProps: customIMaskProps = EMPTY_IMASK_PROPS,\n unmask = false,\n onValueChange,\n onUnexpectedInput,\n onBeforePasteValue,\n // Значение меняет MaskedCore, поэтому onChange к Input не относится:\n // иначе потребитель получил бы внутреннее событие пересчёта крестика очистки.\n onChange: _onChange,\n element: _element,\n className,\n // @ts-expect-error: могут передавать игнорируя ошибку\n maxLength,\n showClearIcon,\n selectAllOnFocus,\n type,\n __fromMaskedInputFacade,\n ...inputProps\n } = props;\n\n useEffect(() => {\n if (!__fromMaskedInputFacade) {\n warning(false, '[MaskedInputV2]: This component is for internal use only. Please use MaskedInput instead.');\n }\n }, [__fromMaskedInputFacade]);\n\n const theme = useContext(ThemeContext);\n const { cx } = useEmotion();\n const styles = useStyles(getStyles);\n\n const inputRef = useRef<Input>(null);\n const coreInputRef = useRef<HTMLInputElement>(null);\n\n const [focused, setFocused] = useState(false);\n const [selectionIntent, setSelectionIntent] = useState<MaskedSelectionIntent>(null);\n\n const prevMaskRef = useRef(props.mask);\n const pendingCursorRestoreRef = useRef<number | null>(null);\n const lastCaretRef = useRef(0);\n\n const requestSelectionIntent = useCallback((intent: MaskedSelectionIntent) => {\n setSelectionIntent((current) => (current === 'select-all' && intent === 'caret-end' ? current : intent));\n }, []);\n\n const historyRef = useRef<Array<{ raw: string; cursorPos: number }>>([]);\n const historyIndexRef = useRef(-1);\n\n // Сохраняем позицию курсора перед сменой маски (render-phase read of stable ref).\n // При коммите DOM браузер сбросит курсор в конец из-за изменения value,\n // поэтому восстанавливаем его синхронно в useLayoutEffect ниже.\n if (prevMaskRef.current !== props.mask) {\n pendingCursorRestoreRef.current = lastCaretRef.current;\n prevMaskRef.current = props.mask;\n historyRef.current = [];\n historyIndexRef.current = -1;\n }\n\n // Движок: IMask как чистый калькулятор, не привязанный к DOM\n const engine = useMaskEngine({\n mask,\n maskChar,\n formatChars,\n unmask,\n alwaysShowMask,\n imaskProps: customIMaskProps,\n });\n\n // Единственный источник истины — raw (только то, что ввёл пользователь, без маски)\n const [raw, setRaw] = useState<string>(() =>\n extractRaw((props.value ?? props.defaultValue) as string | number | undefined, engine),\n );\n\n // MaskState вычисляется синхронно из raw — оба визуальных слоя читают из него\n const maskState = useMemo(() => engine.compute(raw, focused), [raw, focused, engine]);\n\n const syncedImaskRef = useRef(engine.imask);\n const prevSyncedValueRef = useRef(props.value);\n\n // Синхронизировать raw при изменении props.value или правил маски\n useEffect(() => {\n const engineChanged = syncedImaskRef.current !== engine.imask;\n const valueChanged = prevSyncedValueRef.current !== props.value;\n syncedImaskRef.current = engine.imask;\n prevSyncedValueRef.current = props.value;\n\n if (props.value !== undefined) {\n if (valueChanged || engineChanged) {\n setRaw(extractRaw(props.value, engine));\n }\n return;\n }\n\n if (engineChanged) {\n setRaw((prev) => {\n engine.imask.unmaskedValue = prev;\n return engine.imask.rawInputValue;\n });\n }\n }, [props.value, engine]);\n\n // Вызывать onValueChange только при реальном изменении outputValue,\n // и НЕ при первом рендере (воспроизводит нативное поведение onChange)\n const isFirstRender = useRef(true);\n const prevOutputValue = useRef<string>(maskState.outputValue);\n useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n prevOutputValue.current = maskState.outputValue;\n return;\n }\n if (maskState.outputValue !== prevOutputValue.current) {\n prevOutputValue.current = maskState.outputValue;\n onValueChange?.(maskState.outputValue);\n }\n }, [maskState.outputValue]);\n\n useImperativeHandle<Input | null, (Input & { selectAll: () => void }) | null>(ref, () => {\n if (!inputRef.current) {\n return null;\n }\n return Object.assign(inputRef.current, {\n selectAll: () => {\n requestSelectionIntent('select-all');\n inputRef.current?.focus();\n const el = coreInputRef.current;\n if (el && el.ownerDocument.activeElement !== el) {\n requestSelectionIntent(null);\n }\n },\n });\n }, [requestSelectionIntent]);\n\n useLayoutEffect(() => {\n if (pendingCursorRestoreRef.current !== null && coreInputRef.current) {\n setMaskInputSelectionRange(coreInputRef.current, pendingCursorRestoreRef.current);\n lastCaretRef.current = pendingCursorRestoreRef.current;\n pendingCursorRestoreRef.current = null;\n }\n });\n\n useEffect(() => {\n if (!focused) {\n return;\n }\n\n const el = coreInputRef.current;\n if (!el) {\n return;\n }\n\n const syncCaret = () => {\n if (document.activeElement === el) {\n lastCaretRef.current = el.selectionStart ?? 0;\n }\n };\n\n document.addEventListener('selectionchange', syncCaret);\n return () => document.removeEventListener('selectionchange', syncCaret);\n }, [focused]);\n\n return (\n <Input\n ref={inputRef}\n {...inputProps}\n type={getSafeMaskInputType(type)}\n inputMode={getMaskInputMode(type, inputProps.inputMode)}\n // Непустоту значения Input считает по value нативного инпута, где лежат символы маски,\n // поэтому на пустом значении крестик выключаем сами.\n showClearIcon={raw === '' ? 'never' : showClearIcon}\n onValueChange={handleInputValueChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onSelect={handleSelect}\n className={cx(globalClasses.root, className, styles.root(theme))}\n element={\n <MaskedCore\n maskState={maskState}\n slotMap={engine.slotMap}\n engine={engine}\n focused={focused}\n currentRaw={raw}\n onRawChange={handleRawChange}\n onUnexpectedInput={triggerUnexpectedInput}\n onUndo={handleUndo}\n onRedo={handleRedo}\n coreInputRef={coreInputRef}\n colored={colored}\n selectAllOnFocus={selectAllOnFocus}\n selectionIntent={selectionIntent}\n onSelectionIntentChange={requestSelectionIntent}\n />\n }\n />\n );\n\n // Клик по крестику очистки Input отдаёт наружу через onValueChange, а сам чистит поле\n // записью в DOM — мимо модели маски, из-за чего значение вернулось бы при следующем рендере.\n // Поэтому очищаем через raw, как при обычном вводе.\n function handleInputValueChange(value: string) {\n if (value !== '') {\n return;\n }\n\n // При очистке крестиком raw ещё не пуст — записываем шаг в историю, чтобы undo вернул значение.\n // При удалении с клавиатуры сюда приходит уже применённый пустой raw, шаг записан в handleRawChange.\n if (raw !== '') {\n pushHistory('', 0);\n }\n\n setRaw('');\n pendingCursorRestoreRef.current = 0;\n }\n\n function handleRawChange(input: string, source: 'input' | 'paste', cursorPos?: number) {\n if (source === 'paste') {\n handlePasteChange(input, cursorPos);\n } else {\n if (input !== raw && cursorPos !== undefined) {\n pushHistory(input, cursorPos);\n }\n setRaw(input);\n }\n }\n\n function handlePasteChange(pasted: string, _cursorPos?: number) {\n const el = coreInputRef.current;\n const selectionStart = el?.selectionStart ?? 0;\n const selectionEnd = el?.selectionEnd ?? selectionStart;\n\n // При непустом выделении сначала убираем попавший в него raw (в т.ч. если край на литерале `-`),\n // иначе paste склеивает старое значение с новым.\n const selectedRawRange =\n selectionEnd > selectionStart ? getSelectionRawRange(selectionStart, selectionEnd, engine.slotMap) : null;\n\n let baseRaw = raw;\n let rawCursorPos: number;\n if (selectedRawRange) {\n baseRaw = raw.slice(0, selectedRawRange.rawStart) + raw.slice(selectedRawRange.rawEnd);\n rawCursorPos = selectedRawRange.rawStart;\n } else {\n rawCursorPos =\n engine.slotMap.maskedToRaw[selectionStart] !== null &&\n engine.slotMap.maskedToRaw[selectionStart] !== undefined\n ? (engine.slotMap.maskedToRaw[selectionStart] as number)\n : findNearestRawLeft(selectionStart, engine.slotMap);\n }\n\n const rawBefore = baseRaw.slice(0, rawCursorPos);\n const rawAfter = baseRaw.slice(rawCursorPos);\n\n let transformed = pasted;\n if (onBeforePasteValue) {\n transformed = onBeforePasteValue(pasted);\n } else if (getSafeMaskInputType(type) === 'tel') {\n transformed = normalizeRussianPhonePaste(pasted);\n }\n\n const result = engine.applyPaste(baseRaw, rawCursorPos, transformed);\n if (result.overflow) {\n // IF-1157: paste с overflow → onUnexpectedInput\n triggerUnexpectedInput();\n }\n\n const postPasteMaskState = engine.compute(result.raw, true);\n const maskedCursorPos = computePasteMaskedCursor(\n rawBefore,\n rawAfter,\n result.raw,\n rawCursorPos,\n engine.slotMap,\n postPasteMaskState.typedLength,\n );\n\n if (result.raw !== raw) {\n pushHistory(result.raw, maskedCursorPos);\n }\n\n setRaw(result.raw);\n pendingCursorRestoreRef.current = maskedCursorPos;\n\n if (onBeforePasteValue && onValueChange) {\n // Legacy-контракт: при кастомной вставке наружу уходит результат onBeforePasteValue,\n // а не masked/unmasked outputValue (нужно для ComboBox и совместимости с IMaskInput).\n prevOutputValue.current = engine.compute(result.raw, focused).outputValue;\n onValueChange(transformed);\n }\n }\n\n function pushHistory(newRaw: string, cursorPos: number) {\n const MAX_HISTORY_LENGTH = 100;\n\n if (historyRef.current.length === 0) {\n historyRef.current.push({ raw, cursorPos: 0 });\n historyIndexRef.current = 0;\n }\n\n if (historyIndexRef.current < historyRef.current.length - 1) {\n historyRef.current = historyRef.current.slice(0, historyIndexRef.current + 1);\n }\n\n historyRef.current.push({ raw: newRaw, cursorPos });\n if (historyRef.current.length > MAX_HISTORY_LENGTH) {\n historyRef.current.shift();\n }\n historyIndexRef.current = historyRef.current.length - 1;\n }\n\n function handleUndo() {\n if (historyRef.current.length === 0) {\n return;\n }\n const nextIndex = Math.max(0, historyIndexRef.current - 1);\n if (nextIndex !== historyIndexRef.current) {\n historyIndexRef.current = nextIndex;\n const state = historyRef.current[nextIndex];\n setRaw(state.raw);\n pendingCursorRestoreRef.current = state.cursorPos;\n }\n }\n\n function handleRedo() {\n if (historyRef.current.length === 0) {\n return;\n }\n const nextIndex = Math.min(historyRef.current.length - 1, historyIndexRef.current + 1);\n if (nextIndex !== historyIndexRef.current) {\n historyIndexRef.current = nextIndex;\n const state = historyRef.current[nextIndex];\n setRaw(state.raw);\n pendingCursorRestoreRef.current = state.cursorPos;\n }\n }\n\n function triggerUnexpectedInput(blinkOnly?: boolean) {\n const blink = inputRef.current?.blink.bind(inputRef.current) ?? (() => undefined);\n onUnexpectedInput && !blinkOnly ? onUnexpectedInput(maskState.outputValue, blink) : blink();\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(true);\n props.onFocus?.(e);\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(false);\n props.onBlur?.(e);\n }\n\n function handleSelect(e: React.SyntheticEvent<HTMLInputElement>) {\n if (coreInputRef.current) {\n lastCaretRef.current = coreInputRef.current.selectionStart ?? 0;\n }\n inputProps.onSelect?.(e);\n }\n },\n);\n\n// Вспомогательные функции для совместимости (используются в стори и тестах)\nexport { getDefinitions, getMaskChar };\n"]}
1
+ {"version":3,"file":"MaskedInputV2.js","sourceRoot":"","sources":["MaskedInputV2.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport type { Ref } from 'react';\nimport warning from 'warning';\n\nimport { cx } from '../../lib/cx.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport type { InputProps, InputType } from '../Input/index.js';\nimport { Input, selectionAllowedTypes } from '../Input/index.js';\nimport { extractRaw, findNearestRawLeft, computePasteMaskedCursor } from './internal/helpers.js';\nimport { MaskedCore } from './internal/MaskedCore.js';\nimport type { MaskedSelectionIntent } from './internal/MaskedCore.types.js';\nimport { getSelectionRawRange } from './internal/maskedCoreClipboard.js';\nimport { setMaskInputSelectionRange } from './internal/setMaskInputSelectionRange.js';\nimport { useMaskEngine } from './internal/useMaskEngine.js';\nimport { styles, globalClasses } from './MaskedInputV2.css.js';\nimport { getDefinitions, getMaskChar } from './MaskedInputV2.helpers.js';\nimport { normalizeRussianPhonePaste } from './MaskedInputV2.phone.js';\nimport type { IMaskInputProps } from './react-imask/mixin.js';\n\nexport type MaskedInputV2OnBeforePasteValue = (value: string) => string;\n\nexport interface MaskedInputV2MaskedProps {\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 — текст из буфера, браузерного autofill\n * или иной bulk-вставки без clipboard-события.\n *\n * Обработчик должен вернуть текст — он попадёт в поле.\n *\n * При `type=\"tel\"` и отсутствии обработчика применяется\n * {@link normalizeRussianPhonePaste}.\n *\n * @param value значение вставки.\n */\n onBeforePasteValue?: MaskedInputV2OnBeforePasteValue;\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\nconst EMPTY_IMASK_PROPS = {};\n\nexport const getSafeMaskInputType = (type?: InputType | string): MaskInputType | undefined => {\n if (!type) {\n return undefined;\n }\n\n const normalizedType = type.trim() as InputType;\n\n if (normalizedType === 'password' || !selectionAllowedTypes.includes(normalizedType)) {\n return 'text';\n }\n\n return normalizedType as MaskInputType;\n};\n\nfunction getMaskInputMode(\n type: InputType | string | undefined,\n inputMode: React.InputHTMLAttributes<HTMLInputElement>['inputMode'],\n): React.InputHTMLAttributes<HTMLInputElement>['inputMode'] {\n if (inputMode) {\n return inputMode;\n }\n\n if (type?.trim() === 'email') {\n return 'email';\n }\n\n return undefined;\n}\n\nexport interface MaskedInputV2Props\n extends\n MaskedInputV2MaskedProps,\n Omit<InputProps, 'mask' | 'maxLength' | 'type' | 'alwaysShowMask' | 'onUnexpectedInput' | 'maskChar'> {\n type?: MaskInputType;\n\n /** @ignore */\n __fromMaskedInputFacade?: boolean;\n}\n\n/** @deprecated Используйте {@link MaskedInput}. Для legacy-поведения включите фичафлаг `maskedInputUseLegacyBehavior` в {@link ReactUIFeatureFlagsContext}. */\nexport const MaskedInputV2 = forwardRefAndName(\n 'MaskedInputV2',\n function MaskedInputV2(props: MaskedInputV2Props, ref: Ref<Input | null>) {\n const {\n mask,\n maskChar,\n formatChars,\n alwaysShowMask = false,\n colored = true,\n imaskProps: customIMaskProps = EMPTY_IMASK_PROPS,\n unmask = false,\n onValueChange,\n onUnexpectedInput,\n onBeforePasteValue,\n // Значение меняет MaskedCore, поэтому onChange к Input не относится:\n // иначе потребитель получил бы внутреннее событие пересчёта крестика очистки.\n onChange: _onChange,\n element: _element,\n className,\n // @ts-expect-error: могут передавать игнорируя ошибку\n maxLength,\n showClearIcon,\n selectAllOnFocus,\n type,\n __fromMaskedInputFacade,\n ...inputProps\n } = props;\n\n useEffect(() => {\n if (!__fromMaskedInputFacade) {\n warning(false, '[MaskedInputV2]: This component is for internal use only. Please use MaskedInput instead.');\n }\n }, [__fromMaskedInputFacade]);\n\n const inputRef = useRef<Input>(null);\n const coreInputRef = useRef<HTMLInputElement>(null);\n\n const [focused, setFocused] = useState(false);\n const [selectionIntent, setSelectionIntent] = useState<MaskedSelectionIntent>(null);\n\n const prevMaskRef = useRef(props.mask);\n const pendingCursorRestoreRef = useRef<number | null>(null);\n const lastCaretRef = useRef(0);\n\n const requestSelectionIntent = useCallback((intent: MaskedSelectionIntent) => {\n setSelectionIntent((current) => (current === 'select-all' && intent === 'caret-end' ? current : intent));\n }, []);\n\n const historyRef = useRef<Array<{ raw: string; cursorPos: number }>>([]);\n const historyIndexRef = useRef(-1);\n\n // Сохраняем позицию курсора перед сменой маски (render-phase read of stable ref).\n // При коммите DOM браузер сбросит курсор в конец из-за изменения value,\n // поэтому восстанавливаем его синхронно в useLayoutEffect ниже.\n if (prevMaskRef.current !== props.mask) {\n pendingCursorRestoreRef.current = lastCaretRef.current;\n prevMaskRef.current = props.mask;\n historyRef.current = [];\n historyIndexRef.current = -1;\n }\n\n // Движок: IMask как чистый калькулятор, не привязанный к DOM\n const engine = useMaskEngine({\n mask,\n maskChar,\n formatChars,\n unmask,\n alwaysShowMask,\n imaskProps: customIMaskProps,\n });\n\n // Единственный источник истины — raw (только то, что ввёл пользователь, без маски)\n const [raw, setRaw] = useState<string>(() =>\n extractRaw((props.value ?? props.defaultValue) as string | number | undefined, engine),\n );\n\n // MaskState вычисляется синхронно из raw — оба визуальных слоя читают из него\n const maskState = useMemo(() => engine.compute(raw, focused), [raw, focused, engine]);\n\n const syncedImaskRef = useRef(engine.imask);\n const prevSyncedValueRef = useRef(props.value);\n\n // Синхронизировать raw при изменении props.value или правил маски\n useEffect(() => {\n const engineChanged = syncedImaskRef.current !== engine.imask;\n const valueChanged = prevSyncedValueRef.current !== props.value;\n syncedImaskRef.current = engine.imask;\n prevSyncedValueRef.current = props.value;\n\n if (props.value !== undefined) {\n if (valueChanged || engineChanged) {\n setRaw(extractRaw(props.value, engine));\n }\n return;\n }\n\n if (engineChanged) {\n setRaw((prev) => {\n engine.imask.unmaskedValue = prev;\n return engine.imask.rawInputValue;\n });\n }\n }, [props.value, engine]);\n\n // Вызывать onValueChange только при реальном изменении outputValue,\n // и НЕ при первом рендере (воспроизводит нативное поведение onChange)\n const isFirstRender = useRef(true);\n const prevOutputValue = useRef<string>(maskState.outputValue);\n useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n prevOutputValue.current = maskState.outputValue;\n return;\n }\n if (maskState.outputValue !== prevOutputValue.current) {\n prevOutputValue.current = maskState.outputValue;\n onValueChange?.(maskState.outputValue);\n }\n }, [maskState.outputValue]);\n\n useImperativeHandle<Input | null, (Input & { selectAll: () => void }) | null>(ref, () => {\n if (!inputRef.current) {\n return null;\n }\n return Object.assign(inputRef.current, {\n selectAll: () => {\n requestSelectionIntent('select-all');\n inputRef.current?.focus();\n const el = coreInputRef.current;\n if (el && el.ownerDocument.activeElement !== el) {\n requestSelectionIntent(null);\n }\n },\n });\n }, [requestSelectionIntent]);\n\n useLayoutEffect(() => {\n if (pendingCursorRestoreRef.current !== null && coreInputRef.current) {\n setMaskInputSelectionRange(coreInputRef.current, pendingCursorRestoreRef.current);\n lastCaretRef.current = pendingCursorRestoreRef.current;\n pendingCursorRestoreRef.current = null;\n }\n });\n\n useEffect(() => {\n if (!focused) {\n return;\n }\n\n const el = coreInputRef.current;\n if (!el) {\n return;\n }\n\n const syncCaret = () => {\n if (document.activeElement === el) {\n lastCaretRef.current = el.selectionStart ?? 0;\n }\n };\n\n document.addEventListener('selectionchange', syncCaret);\n return () => document.removeEventListener('selectionchange', syncCaret);\n }, [focused]);\n\n return (\n <Input\n ref={inputRef}\n {...inputProps}\n type={getSafeMaskInputType(type)}\n inputMode={getMaskInputMode(type, inputProps.inputMode)}\n // Непустоту значения Input считает по value нативного инпута, где лежат символы маски,\n // поэтому на пустом значении крестик выключаем сами.\n showClearIcon={raw === '' ? 'never' : showClearIcon}\n onValueChange={handleInputValueChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onSelect={handleSelect}\n className={cx(globalClasses.root, className, styles.root)}\n element={\n <MaskedCore\n maskState={maskState}\n slotMap={engine.slotMap}\n engine={engine}\n focused={focused}\n currentRaw={raw}\n onRawChange={handleRawChange}\n onUnexpectedInput={triggerUnexpectedInput}\n onUndo={handleUndo}\n onRedo={handleRedo}\n coreInputRef={coreInputRef}\n colored={colored}\n selectAllOnFocus={selectAllOnFocus}\n selectionIntent={selectionIntent}\n onSelectionIntentChange={requestSelectionIntent}\n />\n }\n />\n );\n\n // Клик по крестику очистки Input отдаёт наружу через onValueChange, а сам чистит поле\n // записью в DOM — мимо модели маски, из-за чего значение вернулось бы при следующем рендере.\n // Поэтому очищаем через raw, как при обычном вводе.\n function handleInputValueChange(value: string) {\n if (value !== '') {\n return;\n }\n\n // При очистке крестиком raw ещё не пуст — записываем шаг в историю, чтобы undo вернул значение.\n // При удалении с клавиатуры сюда приходит уже применённый пустой raw, шаг записан в handleRawChange.\n if (raw !== '') {\n pushHistory('', 0);\n }\n\n setRaw('');\n pendingCursorRestoreRef.current = 0;\n }\n\n function handleRawChange(input: string, source: 'input' | 'paste', cursorPos?: number) {\n if (source === 'paste') {\n handlePasteChange(input, cursorPos);\n } else {\n if (input !== raw && cursorPos !== undefined) {\n pushHistory(input, cursorPos);\n }\n setRaw(input);\n }\n }\n\n function handlePasteChange(pasted: string, _cursorPos?: number) {\n const el = coreInputRef.current;\n const selectionStart = el?.selectionStart ?? 0;\n const selectionEnd = el?.selectionEnd ?? selectionStart;\n\n // При непустом выделении сначала убираем попавший в него raw (в т.ч. если край на литерале `-`),\n // иначе paste склеивает старое значение с новым.\n const selectedRawRange =\n selectionEnd > selectionStart ? getSelectionRawRange(selectionStart, selectionEnd, engine.slotMap) : null;\n\n let baseRaw = raw;\n let rawCursorPos: number;\n if (selectedRawRange) {\n baseRaw = raw.slice(0, selectedRawRange.rawStart) + raw.slice(selectedRawRange.rawEnd);\n rawCursorPos = selectedRawRange.rawStart;\n } else {\n rawCursorPos =\n engine.slotMap.maskedToRaw[selectionStart] !== null &&\n engine.slotMap.maskedToRaw[selectionStart] !== undefined\n ? (engine.slotMap.maskedToRaw[selectionStart] as number)\n : findNearestRawLeft(selectionStart, engine.slotMap);\n }\n\n const rawBefore = baseRaw.slice(0, rawCursorPos);\n const rawAfter = baseRaw.slice(rawCursorPos);\n\n let transformed = pasted;\n if (onBeforePasteValue) {\n transformed = onBeforePasteValue(pasted);\n } else if (getSafeMaskInputType(type) === 'tel') {\n transformed = normalizeRussianPhonePaste(pasted);\n }\n\n const result = engine.applyPaste(baseRaw, rawCursorPos, transformed);\n if (result.overflow) {\n // IF-1157: paste с overflow → onUnexpectedInput\n triggerUnexpectedInput();\n }\n\n const postPasteMaskState = engine.compute(result.raw, true);\n const maskedCursorPos = computePasteMaskedCursor(\n rawBefore,\n rawAfter,\n result.raw,\n rawCursorPos,\n engine.slotMap,\n postPasteMaskState.typedLength,\n );\n\n if (result.raw !== raw) {\n pushHistory(result.raw, maskedCursorPos);\n }\n\n setRaw(result.raw);\n pendingCursorRestoreRef.current = maskedCursorPos;\n\n if (onBeforePasteValue && onValueChange) {\n // Legacy-контракт: при кастомной вставке наружу уходит результат onBeforePasteValue,\n // а не masked/unmasked outputValue (нужно для ComboBox и совместимости с IMaskInput).\n prevOutputValue.current = engine.compute(result.raw, focused).outputValue;\n onValueChange(transformed);\n }\n }\n\n function pushHistory(newRaw: string, cursorPos: number) {\n const MAX_HISTORY_LENGTH = 100;\n\n if (historyRef.current.length === 0) {\n historyRef.current.push({ raw, cursorPos: 0 });\n historyIndexRef.current = 0;\n }\n\n if (historyIndexRef.current < historyRef.current.length - 1) {\n historyRef.current = historyRef.current.slice(0, historyIndexRef.current + 1);\n }\n\n historyRef.current.push({ raw: newRaw, cursorPos });\n if (historyRef.current.length > MAX_HISTORY_LENGTH) {\n historyRef.current.shift();\n }\n historyIndexRef.current = historyRef.current.length - 1;\n }\n\n function handleUndo() {\n if (historyRef.current.length === 0) {\n return;\n }\n const nextIndex = Math.max(0, historyIndexRef.current - 1);\n if (nextIndex !== historyIndexRef.current) {\n historyIndexRef.current = nextIndex;\n const state = historyRef.current[nextIndex];\n setRaw(state.raw);\n pendingCursorRestoreRef.current = state.cursorPos;\n }\n }\n\n function handleRedo() {\n if (historyRef.current.length === 0) {\n return;\n }\n const nextIndex = Math.min(historyRef.current.length - 1, historyIndexRef.current + 1);\n if (nextIndex !== historyIndexRef.current) {\n historyIndexRef.current = nextIndex;\n const state = historyRef.current[nextIndex];\n setRaw(state.raw);\n pendingCursorRestoreRef.current = state.cursorPos;\n }\n }\n\n function triggerUnexpectedInput(blinkOnly?: boolean) {\n const blink = inputRef.current?.blink.bind(inputRef.current) ?? (() => undefined);\n onUnexpectedInput && !blinkOnly ? onUnexpectedInput(maskState.outputValue, blink) : blink();\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(true);\n props.onFocus?.(e);\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(false);\n props.onBlur?.(e);\n }\n\n function handleSelect(e: React.SyntheticEvent<HTMLInputElement>) {\n if (coreInputRef.current) {\n lastCaretRef.current = coreInputRef.current.selectionStart ?? 0;\n }\n inputProps.onSelect?.(e);\n }\n },\n);\n\n// Вспомогательные функции для совместимости (используются в стори и тестах)\nexport { getDefinitions, getMaskChar };\n"]}
@@ -1,8 +1,6 @@
1
- import { cx } from '@emotion/css';
2
- import React, { useContext } from 'react';
3
- import { useStyles } from '../../../lib/renderEnvironment/index.js';
4
- import { ThemeContext } from '../../../lib/theming/ThemeContext.js';
5
- import { getStyles, globalClasses } from './MaskedInternal.styles.js';
1
+ import React from 'react';
2
+ import { cx } from '../../../lib/cx.js';
3
+ import { styles, globalClasses } from './MaskedInternal.css.js';
6
4
  function splitTextBySelection(text, textStartOffset, selectionStart, selectionEnd) {
7
5
  if (selectionStart === selectionEnd) {
8
6
  return [text, '', ''];
@@ -22,12 +20,10 @@ function splitTextBySelection(text, textStartOffset, selectionStart, selectionEn
22
20
  */
23
21
  export function MaskOverlay(_a) {
24
22
  var typedValue = _a.typedValue, displayValue = _a.displayValue, selectionStart = _a.selectionStart, selectionEnd = _a.selectionEnd, disabled = _a.disabled, textAlign = _a.textAlign, containerRef = _a.containerRef, _b = _a.colored, colored = _b === void 0 ? true : _b;
25
- var theme = useContext(ThemeContext);
26
- var styles = useStyles(getStyles);
27
23
  var maskPart = displayValue.slice(typedValue.length);
28
24
  var disabledClass = disabled && globalClasses.disabled;
29
25
  var coloredClass = colored && globalClasses.colored;
30
- var selectedSegmentClass = styles.selectedSegment();
26
+ var selectedSegmentClass = styles.selectedSegment;
31
27
  if (!typedValue && !maskPart) {
32
28
  return null;
33
29
  }
@@ -38,7 +34,7 @@ export function MaskOverlay(_a) {
38
34
  selected ? React.createElement("span", { className: selectedSegmentClass }, selected) : null,
39
35
  after ? React.createElement("span", { className: segmentClassName }, after) : null));
40
36
  }
41
- return (React.createElement("span", { ref: containerRef, "aria-hidden": "true", className: styles.overlay() },
37
+ return (React.createElement("span", { ref: containerRef, "aria-hidden": "true", className: styles.overlay },
42
38
  React.createElement("span", { "data-tid": "masked-input-overlay", style: {
43
39
  display: 'inline-block',
44
40
  width: '100%',
@@ -46,9 +42,7 @@ export function MaskOverlay(_a) {
46
42
  textAlign: textAlign,
47
43
  lineHeight: 'inherit',
48
44
  } },
49
- typedValue ? renderSegment(typedValue, 0, cx(styles.typed(theme), disabledClass, coloredClass)) : null,
50
- maskPart
51
- ? renderSegment(maskPart, typedValue.length, cx(styles.mask(theme), disabledClass, coloredClass))
52
- : null)));
45
+ typedValue ? renderSegment(typedValue, 0, cx(styles.typed, disabledClass, coloredClass)) : null,
46
+ maskPart ? renderSegment(maskPart, typedValue.length, cx(styles.mask, disabledClass, coloredClass)) : null)));
53
47
  }
54
48
  //# sourceMappingURL=MaskOverlay.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MaskOverlay.js","sourceRoot":"","sources":["MaskOverlay.tsx"],"names":[],"mappings":"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","sourcesContent":["import { cx } from '@emotion/css';\nimport React, { useContext } from 'react';\n\nimport { useStyles } from '../../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../../lib/theming/ThemeContext.js';\nimport { getStyles, globalClasses } from './MaskedInternal.styles.js';\n\ninterface MaskOverlayProps {\n typedValue: string;\n displayValue: string;\n selectionStart: number;\n selectionEnd: number;\n disabled?: boolean;\n textAlign?: React.CSSProperties['textAlign'];\n containerRef?: React.RefObject<HTMLSpanElement | null>;\n colored?: boolean;\n}\n\nfunction splitTextBySelection(\n text: string,\n textStartOffset: number,\n selectionStart: number,\n selectionEnd: number,\n): [string, string, string] {\n if (selectionStart === selectionEnd) {\n return [text, '', ''];\n }\n\n const localStart = Math.max(0, selectionStart - textStartOffset);\n const localEnd = Math.min(text.length, selectionEnd - textStartOffset);\n\n if (localEnd <= localStart) {\n return [text, '', ''];\n }\n\n return [text.slice(0, localStart), text.slice(localStart, localEnd), text.slice(localEnd)];\n}\n\n/**\n * Абсолютно позиционированный слой над <input>.\n * Input делается прозрачным (color: transparent), а весь текст\n * (typedValue + maskPart) рендерится здесь с раскраской.\n * При center/right align overlay выравнивает маску, а input смещается paddingLeft.\n */\nexport function MaskOverlay({\n typedValue,\n displayValue,\n selectionStart,\n selectionEnd,\n disabled,\n textAlign,\n containerRef,\n colored = true,\n}: MaskOverlayProps) {\n const theme = useContext(ThemeContext);\n const styles = useStyles(getStyles);\n const maskPart = displayValue.slice(typedValue.length);\n\n const disabledClass = disabled && globalClasses.disabled;\n const coloredClass = colored && globalClasses.colored;\n const selectedSegmentClass = styles.selectedSegment();\n\n if (!typedValue && !maskPart) {\n return null;\n }\n\n function renderSegment(text: string, offset: number, segmentClassName: string) {\n const [before, selected, after] = splitTextBySelection(text, offset, selectionStart, selectionEnd);\n\n return (\n <>\n {before ? <span className={segmentClassName}>{before}</span> : null}\n {selected ? <span className={selectedSegmentClass}>{selected}</span> : null}\n {after ? <span className={segmentClassName}>{after}</span> : null}\n </>\n );\n }\n\n return (\n <span ref={containerRef} aria-hidden=\"true\" className={styles.overlay()}>\n <span\n data-tid=\"masked-input-overlay\"\n style={{\n display: 'inline-block',\n width: '100%',\n whiteSpace: 'nowrap',\n textAlign,\n lineHeight: 'inherit',\n }}\n >\n {typedValue ? renderSegment(typedValue, 0, cx(styles.typed(theme), disabledClass, coloredClass)) : null}\n {maskPart\n ? renderSegment(maskPart, typedValue.length, cx(styles.mask(theme), disabledClass, coloredClass))\n : null}\n </span>\n </span>\n );\n}\n"]}
1
+ {"version":3,"file":"MaskOverlay.js","sourceRoot":"","sources":["MaskOverlay.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { cx } from '../../../lib/cx.js';\nimport { styles, globalClasses } from './MaskedInternal.css.js';\n\ninterface MaskOverlayProps {\n typedValue: string;\n displayValue: string;\n selectionStart: number;\n selectionEnd: number;\n disabled?: boolean;\n textAlign?: React.CSSProperties['textAlign'];\n containerRef?: React.RefObject<HTMLSpanElement | null>;\n colored?: boolean;\n}\n\nfunction splitTextBySelection(\n text: string,\n textStartOffset: number,\n selectionStart: number,\n selectionEnd: number,\n): [string, string, string] {\n if (selectionStart === selectionEnd) {\n return [text, '', ''];\n }\n\n const localStart = Math.max(0, selectionStart - textStartOffset);\n const localEnd = Math.min(text.length, selectionEnd - textStartOffset);\n\n if (localEnd <= localStart) {\n return [text, '', ''];\n }\n\n return [text.slice(0, localStart), text.slice(localStart, localEnd), text.slice(localEnd)];\n}\n\n/**\n * Абсолютно позиционированный слой над <input>.\n * Input делается прозрачным (color: transparent), а весь текст\n * (typedValue + maskPart) рендерится здесь с раскраской.\n * При center/right align overlay выравнивает маску, а input смещается paddingLeft.\n */\nexport function MaskOverlay({\n typedValue,\n displayValue,\n selectionStart,\n selectionEnd,\n disabled,\n textAlign,\n containerRef,\n colored = true,\n}: MaskOverlayProps) {\n const maskPart = displayValue.slice(typedValue.length);\n\n const disabledClass = disabled && globalClasses.disabled;\n const coloredClass = colored && globalClasses.colored;\n const selectedSegmentClass = styles.selectedSegment;\n\n if (!typedValue && !maskPart) {\n return null;\n }\n\n function renderSegment(text: string, offset: number, segmentClassName: string) {\n const [before, selected, after] = splitTextBySelection(text, offset, selectionStart, selectionEnd);\n\n return (\n <>\n {before ? <span className={segmentClassName}>{before}</span> : null}\n {selected ? <span className={selectedSegmentClass}>{selected}</span> : null}\n {after ? <span className={segmentClassName}>{after}</span> : null}\n </>\n );\n }\n\n return (\n <span ref={containerRef} aria-hidden=\"true\" className={styles.overlay}>\n <span\n data-tid=\"masked-input-overlay\"\n style={{\n display: 'inline-block',\n width: '100%',\n whiteSpace: 'nowrap',\n textAlign,\n lineHeight: 'inherit',\n }}\n >\n {typedValue ? renderSegment(typedValue, 0, cx(styles.typed, disabledClass, coloredClass)) : null}\n {maskPart ? renderSegment(maskPart, typedValue.length, cx(styles.mask, disabledClass, coloredClass)) : null}\n </span>\n </span>\n );\n}\n"]}
@@ -20,14 +20,13 @@ var __rest = (this && this.__rest) || function (s, e) {
20
20
  }
21
21
  return t;
22
22
  };
23
- import { cx } from '@emotion/css';
24
- import React, { useCallback, useContext, useEffect, useImperativeHandle, useLayoutEffect, useRef, useState, } from 'react';
23
+ import React, { useCallback, useEffect, useImperativeHandle, useLayoutEffect, useRef, useState } from 'react';
24
+ import { cx } from '../../../lib/cx.js';
25
25
  import { forwardRefAndName } from '../../../lib/forwardRefAndName.js';
26
- import { useGlobal, useStyles } from '../../../lib/renderEnvironment/index.js';
26
+ import { useGlobal } from '../../../lib/renderEnvironment/index.js';
27
27
  import { scrollInputCaretIntoView } from '../../../lib/scrollInputCaretIntoView.js';
28
- import { ThemeContext } from '../../../lib/theming/ThemeContext.js';
29
28
  import { needsMaskAlignPadding } from './computeMaskAlignPadding.js';
30
- import { getStyles, globalClasses } from './MaskedInternal.styles.js';
29
+ import { styles, globalClasses } from './MaskedInternal.css.js';
31
30
  import { MaskOverlay } from './MaskOverlay.js';
32
31
  import { setMaskInputSelectionRange } from './setMaskInputSelectionRange.js';
33
32
  import { getShowOverlay } from './showOverlay.js';
@@ -41,10 +40,8 @@ import { useMaskedCoreHandlers } from './useMaskedCoreHandlers.js';
41
40
  export var MaskedCore = forwardRefAndName('MaskedCore', function MaskedCore(props, ref) {
42
41
  var _a, _b;
43
42
  var maskState = props.maskState, slotMap = props.slotMap, engine = props.engine, focused = props.focused, currentRaw = props.currentRaw, onRawChange = props.onRawChange, onUnexpectedInput = props.onUnexpectedInput, onUndo = props.onUndo, onRedo = props.onRedo, coreInputRef = props.coreInputRef, _c = props.colored, colored = _c === void 0 ? true : _c, selectAllOnFocus = props.selectAllOnFocus, externalSelectionIntent = props.selectionIntent, onSelectionIntentChange = props.onSelectionIntentChange, onKeyDown = props.onKeyDown, onMouseUp = props.onMouseUp, onInput = props.onInput, onSelect = props.onSelect, onFocus = props.onFocus, onPaste = props.onPaste, onBlur = props.onBlur, inputOnChange = props.onChange, placeholder = props.placeholder, className = props.className, disabled = props.disabled, rest = __rest(props, ["maskState", "slotMap", "engine", "focused", "currentRaw", "onRawChange", "onUnexpectedInput", "onUndo", "onRedo", "coreInputRef", "colored", "selectAllOnFocus", "selectionIntent", "onSelectionIntentChange", "onKeyDown", "onMouseUp", "onInput", "onSelect", "onFocus", "onPaste", "onBlur", "onChange", "placeholder", "className", "disabled"]);
44
- var styles = useStyles(getStyles);
45
43
  var globalObject = useGlobal();
46
44
  var overlayRef = useRef(null);
47
- var theme = useContext(ThemeContext);
48
45
  var textAlign = (_a = rest.style) === null || _a === void 0 ? void 0 : _a.textAlign;
49
46
  var _d = useState(null), internalSelectionIntent = _d[0], setInternalSelectionIntent = _d[1];
50
47
  var selectionIntent = externalSelectionIntent === undefined ? internalSelectionIntent : externalSelectionIntent;
@@ -185,7 +182,7 @@ export var MaskedCore = forwardRefAndName('MaskedCore', function MaskedCore(prop
185
182
  var alignPadding = useMaskAlignPadding(coreInputRef, overlayRef, maskState.displayValue, textAlign, focused && showOverlay && needsMaskAlignPadding(textAlign));
186
183
  var inputStyle = alignPadding > 0 ? __assign(__assign({}, rest.style), { textAlign: 'left', paddingLeft: alignPadding }) : rest.style;
187
184
  return (React.createElement(React.Fragment, null,
188
- React.createElement("input", __assign({}, rest, { style: inputStyle, placeholder: showOverlay ? undefined : placeholder, "aria-disabled": disabled, disabled: disabled, ref: coreInputRef, className: cx(globalClasses.input, styles.input(theme), showOverlay && globalClasses.masked, className), value: maskState.typedValue, onChange: handleChange, onBeforeInput: handleBeforeInput, onKeyDown: handleKeyDown, onSelect: handleSelect, onPaste: handlePaste, onCopy: handleCopy, onCut: handleCut, onFocus: handleFocus, onBlur: handleBlur, onInput: handleInput, onMouseDown: function (e) {
185
+ React.createElement("input", __assign({}, rest, { style: inputStyle, placeholder: showOverlay ? undefined : placeholder, "aria-disabled": disabled, disabled: disabled, ref: coreInputRef, className: cx(globalClasses.input, styles.input, showOverlay && globalClasses.masked, className), value: maskState.typedValue, onChange: handleChange, onBeforeInput: handleBeforeInput, onKeyDown: handleKeyDown, onSelect: handleSelect, onPaste: handlePaste, onCopy: handleCopy, onCut: handleCut, onFocus: handleFocus, onBlur: handleBlur, onInput: handleInput, onMouseDown: function (e) {
189
186
  var _a;
190
187
  handleMouseDown();
191
188
  (_a = rest.onMouseDown) === null || _a === void 0 ? void 0 : _a.call(rest, e);
@@ -1 +1 @@
1
- {"version":3,"file":"MaskedCore.js","sourceRoot":"","sources":["MaskedCore.tsx"],"names":[],"mappings":"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","sourcesContent":["import { cx } from '@emotion/css';\nimport React, {\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\nimport { forwardRefAndName } from '../../../lib/forwardRefAndName.js';\nimport { useGlobal, useStyles } from '../../../lib/renderEnvironment/index.js';\nimport { scrollInputCaretIntoView } from '../../../lib/scrollInputCaretIntoView.js';\nimport { ThemeContext } from '../../../lib/theming/ThemeContext.js';\nimport type { InputElement } from '../../Input/Input.typings.js';\nimport { needsMaskAlignPadding } from './computeMaskAlignPadding.js';\nimport type { MaskedCoreProps } from './MaskedCore.types.js';\nimport { getStyles, globalClasses } from './MaskedInternal.styles.js';\nimport { MaskOverlay } from './MaskOverlay.js';\nimport { setMaskInputSelectionRange } from './setMaskInputSelectionRange.js';\nimport { getShowOverlay } from './showOverlay.js';\nimport { useInputOverflow } from './useInputOverflow.js';\nimport { useMaskAlignPadding } from './useMaskAlignPadding.js';\nimport { useMaskedCoreHandlers } from './useMaskedCoreHandlers.js';\n\nexport type { MaskedCoreProps } from './MaskedCore.types.js';\n\n/**\n * Headless-слой MaskedInputV2: прозрачный `<input>` для ввода и {@link MaskOverlay} для отображения маски.\n * Управляется через {@link useMaskedCoreHandlers}.\n */\nexport const MaskedCore = forwardRefAndName(\n 'MaskedCore',\n function MaskedCore(props: MaskedCoreProps, ref: React.ForwardedRef<InputElement | null>) {\n const {\n maskState,\n slotMap,\n engine,\n focused,\n currentRaw,\n onRawChange,\n onUnexpectedInput,\n onUndo,\n onRedo,\n coreInputRef,\n colored = true,\n selectAllOnFocus,\n selectionIntent: externalSelectionIntent,\n onSelectionIntentChange,\n onKeyDown,\n onMouseUp,\n onInput,\n onSelect,\n onFocus,\n onPaste,\n onBlur,\n onChange: inputOnChange,\n placeholder,\n className,\n disabled,\n ...rest\n } = props;\n\n const styles = useStyles(getStyles);\n const globalObject = useGlobal();\n const overlayRef = useRef<HTMLSpanElement>(null);\n const theme = useContext(ThemeContext);\n const textAlign = rest.style?.textAlign;\n const [internalSelectionIntent, setInternalSelectionIntent] = useState<NonNullable<\n MaskedCoreProps['selectionIntent']\n > | null>(null);\n const selectionIntent = externalSelectionIntent === undefined ? internalSelectionIntent : externalSelectionIntent;\n const selectionIntentRef = useRef(selectionIntent);\n selectionIntentRef.current = selectionIntent;\n\n const requestSelectionIntent = useCallback(\n (intent: NonNullable<MaskedCoreProps['selectionIntent']> | null) => {\n if (onSelectionIntentChange) {\n onSelectionIntentChange(intent);\n return;\n }\n setInternalSelectionIntent((current) =>\n current === 'select-all' && intent === 'caret-end' ? current : intent,\n );\n },\n [onSelectionIntentChange],\n );\n\n const syncOverlayScroll = useCallback(() => {\n if (overlayRef.current && coreInputRef.current) {\n overlayRef.current.style.transform = `translateX(-${coreInputRef.current.scrollLeft}px)`;\n }\n }, [coreInputRef]);\n\n const overflows = useInputOverflow(coreInputRef, maskState.displayValue, focused);\n const showOverlay = getShowOverlay(maskState, focused, overflows);\n\n const {\n pendingCursorRef,\n selectionRange,\n syncSelection,\n handleChange,\n handleKeyDown,\n handleSelect,\n handlePaste,\n handleBeforeInput,\n handleCopy,\n handleCut,\n handleInput,\n handleMouseDown,\n handleMouseUp,\n handleFocus,\n handleBlur,\n } = useMaskedCoreHandlers({\n maskState,\n slotMap,\n engine,\n currentRaw,\n onRawChange,\n onUnexpectedInput,\n onUndo,\n onRedo,\n coreInputRef,\n selectAllOnFocus,\n onKeyDown,\n onMouseUp,\n onInput,\n onSelect,\n onFocus,\n onBlur,\n onPaste,\n syncOverlayScroll,\n requestSelectionIntent,\n });\n\n useImperativeHandle(\n ref,\n () => ({\n input: coreInputRef.current,\n getRootNode: () => coreInputRef.current,\n }),\n [coreInputRef],\n );\n\n const applySelectionIntent = useCallback(\n (intent: NonNullable<MaskedCoreProps['selectionIntent']>) => {\n const el = coreInputRef.current;\n if (!el || !focused) {\n return;\n }\n\n if (intent === 'select-all') {\n setMaskInputSelectionRange(el, 0, maskState.typedLength);\n } else {\n const start = el.selectionStart ?? 0;\n const end = el.selectionEnd ?? 0;\n if (start === end && start !== 0 && start !== maskState.typedLength) {\n return;\n }\n setMaskInputSelectionRange(el, maskState.typedLength);\n }\n scrollInputCaretIntoView(el);\n syncSelection(el);\n },\n [coreInputRef, focused, maskState.typedLength, syncSelection],\n );\n\n useLayoutEffect(() => {\n const el = coreInputRef.current;\n\n if (selectionIntent) {\n applySelectionIntent(selectionIntent);\n } else if (pendingCursorRef.current !== null && el) {\n const pos = pendingCursorRef.current;\n pendingCursorRef.current = null;\n setMaskInputSelectionRange(el, pos);\n scrollInputCaretIntoView(el);\n syncSelection(el);\n } else if (el && focused) {\n scrollInputCaretIntoView(el);\n }\n\n syncOverlayScroll();\n // typedValue в deps обязателен: после controlled-update React сбрасывает selection,\n // а typedLength при shift-перезаписи в полной маске может не измениться (1212 → 1251).\n }, [applySelectionIntent, focused, maskState.typedValue, selectionIntent, syncOverlayScroll, syncSelection]);\n\n // Браузер может применить свою Tab-selection после focus-хендлеров.\n // Один отменяемый retry после события оставляет последнее намерение победителем.\n useEffect(() => {\n if (!selectionIntent || !focused) {\n return;\n }\n\n const appliedIntent = selectionIntent;\n const setTimeout = globalObject.setTimeout;\n if (!setTimeout) {\n requestSelectionIntent(null);\n return;\n }\n const timer = setTimeout(() => {\n if (selectionIntentRef.current !== appliedIntent) {\n return;\n }\n const el = coreInputRef.current;\n if (!el || globalObject.document?.activeElement !== el) {\n requestSelectionIntent(null);\n return;\n }\n applySelectionIntent(appliedIntent);\n requestSelectionIntent(null);\n }, 0);\n\n return () => globalObject.clearTimeout?.(timer);\n }, [applySelectionIntent, coreInputRef, focused, globalObject, requestSelectionIntent, selectionIntent]);\n\n // Значение маски живёт в React-состоянии, а Input пересчитывает своё (показ крестика очистки)\n // только в onChange, которого при удалении и undo не бывает — они идут через keydown.\n // Поэтому дёргаем его сами на каждое изменение значения.\n useEffect(() => {\n const el = coreInputRef.current;\n if (el) {\n inputOnChange?.({ target: el, currentTarget: el } as React.ChangeEvent<HTMLInputElement>);\n }\n }, [maskState.typedValue]);\n\n useEffect(() => {\n if (!focused) {\n return;\n }\n\n const el = coreInputRef.current;\n if (!el) {\n return;\n }\n\n const handleSelectionChange = () => {\n if (document.activeElement === el) {\n handleSelect();\n }\n };\n\n document.addEventListener('selectionchange', handleSelectionChange);\n return () => document.removeEventListener('selectionchange', handleSelectionChange);\n }, [focused, handleSelect]);\n\n const alignPadding = useMaskAlignPadding(\n coreInputRef,\n overlayRef,\n maskState.displayValue,\n textAlign,\n focused && showOverlay && needsMaskAlignPadding(textAlign),\n );\n const inputStyle =\n alignPadding > 0 ? { ...rest.style, textAlign: 'left' as const, paddingLeft: alignPadding } : rest.style;\n\n return (\n <>\n <input\n {...rest}\n style={inputStyle}\n placeholder={showOverlay ? undefined : placeholder}\n aria-disabled={disabled}\n disabled={disabled}\n ref={coreInputRef}\n className={cx(globalClasses.input, styles.input(theme), showOverlay && globalClasses.masked, className)}\n value={maskState.typedValue}\n onChange={handleChange}\n onBeforeInput={handleBeforeInput}\n onKeyDown={handleKeyDown}\n onSelect={handleSelect}\n onPaste={handlePaste}\n onCopy={handleCopy}\n onCut={handleCut}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onInput={handleInput}\n onMouseDown={(e) => {\n handleMouseDown();\n rest.onMouseDown?.(e);\n }}\n onMouseUp={handleMouseUp}\n onScroll={syncOverlayScroll}\n />\n {showOverlay && (\n <MaskOverlay\n containerRef={overlayRef}\n typedValue={maskState.typedValue}\n displayValue={maskState.displayValue}\n selectionStart={selectionRange.start}\n selectionEnd={selectionRange.end}\n disabled={disabled}\n textAlign={rest.style?.textAlign}\n colored={colored}\n />\n )}\n </>\n );\n },\n);\n"]}
1
+ {"version":3,"file":"MaskedCore.js","sourceRoot":"","sources":["MaskedCore.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useImperativeHandle, useLayoutEffect, useRef, useState } from 'react';\n\nimport { cx } from '../../../lib/cx.js';\nimport { forwardRefAndName } from '../../../lib/forwardRefAndName.js';\nimport { useGlobal } from '../../../lib/renderEnvironment/index.js';\nimport { scrollInputCaretIntoView } from '../../../lib/scrollInputCaretIntoView.js';\nimport type { InputElement } from '../../Input/Input.typings.js';\nimport { needsMaskAlignPadding } from './computeMaskAlignPadding.js';\nimport type { MaskedCoreProps } from './MaskedCore.types.js';\nimport { styles, globalClasses } from './MaskedInternal.css.js';\nimport { MaskOverlay } from './MaskOverlay.js';\nimport { setMaskInputSelectionRange } from './setMaskInputSelectionRange.js';\nimport { getShowOverlay } from './showOverlay.js';\nimport { useInputOverflow } from './useInputOverflow.js';\nimport { useMaskAlignPadding } from './useMaskAlignPadding.js';\nimport { useMaskedCoreHandlers } from './useMaskedCoreHandlers.js';\n\nexport type { MaskedCoreProps } from './MaskedCore.types.js';\n\n/**\n * Headless-слой MaskedInputV2: прозрачный `<input>` для ввода и {@link MaskOverlay} для отображения маски.\n * Управляется через {@link useMaskedCoreHandlers}.\n */\nexport const MaskedCore = forwardRefAndName(\n 'MaskedCore',\n function MaskedCore(props: MaskedCoreProps, ref: React.ForwardedRef<InputElement | null>) {\n const {\n maskState,\n slotMap,\n engine,\n focused,\n currentRaw,\n onRawChange,\n onUnexpectedInput,\n onUndo,\n onRedo,\n coreInputRef,\n colored = true,\n selectAllOnFocus,\n selectionIntent: externalSelectionIntent,\n onSelectionIntentChange,\n onKeyDown,\n onMouseUp,\n onInput,\n onSelect,\n onFocus,\n onPaste,\n onBlur,\n onChange: inputOnChange,\n placeholder,\n className,\n disabled,\n ...rest\n } = props;\n\n const globalObject = useGlobal();\n const overlayRef = useRef<HTMLSpanElement>(null);\n const textAlign = rest.style?.textAlign;\n const [internalSelectionIntent, setInternalSelectionIntent] = useState<NonNullable<\n MaskedCoreProps['selectionIntent']\n > | null>(null);\n const selectionIntent = externalSelectionIntent === undefined ? internalSelectionIntent : externalSelectionIntent;\n const selectionIntentRef = useRef(selectionIntent);\n selectionIntentRef.current = selectionIntent;\n\n const requestSelectionIntent = useCallback(\n (intent: NonNullable<MaskedCoreProps['selectionIntent']> | null) => {\n if (onSelectionIntentChange) {\n onSelectionIntentChange(intent);\n return;\n }\n setInternalSelectionIntent((current) =>\n current === 'select-all' && intent === 'caret-end' ? current : intent,\n );\n },\n [onSelectionIntentChange],\n );\n\n const syncOverlayScroll = useCallback(() => {\n if (overlayRef.current && coreInputRef.current) {\n overlayRef.current.style.transform = `translateX(-${coreInputRef.current.scrollLeft}px)`;\n }\n }, [coreInputRef]);\n\n const overflows = useInputOverflow(coreInputRef, maskState.displayValue, focused);\n const showOverlay = getShowOverlay(maskState, focused, overflows);\n\n const {\n pendingCursorRef,\n selectionRange,\n syncSelection,\n handleChange,\n handleKeyDown,\n handleSelect,\n handlePaste,\n handleBeforeInput,\n handleCopy,\n handleCut,\n handleInput,\n handleMouseDown,\n handleMouseUp,\n handleFocus,\n handleBlur,\n } = useMaskedCoreHandlers({\n maskState,\n slotMap,\n engine,\n currentRaw,\n onRawChange,\n onUnexpectedInput,\n onUndo,\n onRedo,\n coreInputRef,\n selectAllOnFocus,\n onKeyDown,\n onMouseUp,\n onInput,\n onSelect,\n onFocus,\n onBlur,\n onPaste,\n syncOverlayScroll,\n requestSelectionIntent,\n });\n\n useImperativeHandle(\n ref,\n () => ({\n input: coreInputRef.current,\n getRootNode: () => coreInputRef.current,\n }),\n [coreInputRef],\n );\n\n const applySelectionIntent = useCallback(\n (intent: NonNullable<MaskedCoreProps['selectionIntent']>) => {\n const el = coreInputRef.current;\n if (!el || !focused) {\n return;\n }\n\n if (intent === 'select-all') {\n setMaskInputSelectionRange(el, 0, maskState.typedLength);\n } else {\n const start = el.selectionStart ?? 0;\n const end = el.selectionEnd ?? 0;\n if (start === end && start !== 0 && start !== maskState.typedLength) {\n return;\n }\n setMaskInputSelectionRange(el, maskState.typedLength);\n }\n scrollInputCaretIntoView(el);\n syncSelection(el);\n },\n [coreInputRef, focused, maskState.typedLength, syncSelection],\n );\n\n useLayoutEffect(() => {\n const el = coreInputRef.current;\n\n if (selectionIntent) {\n applySelectionIntent(selectionIntent);\n } else if (pendingCursorRef.current !== null && el) {\n const pos = pendingCursorRef.current;\n pendingCursorRef.current = null;\n setMaskInputSelectionRange(el, pos);\n scrollInputCaretIntoView(el);\n syncSelection(el);\n } else if (el && focused) {\n scrollInputCaretIntoView(el);\n }\n\n syncOverlayScroll();\n // typedValue в deps обязателен: после controlled-update React сбрасывает selection,\n // а typedLength при shift-перезаписи в полной маске может не измениться (1212 → 1251).\n }, [applySelectionIntent, focused, maskState.typedValue, selectionIntent, syncOverlayScroll, syncSelection]);\n\n // Браузер может применить свою Tab-selection после focus-хендлеров.\n // Один отменяемый retry после события оставляет последнее намерение победителем.\n useEffect(() => {\n if (!selectionIntent || !focused) {\n return;\n }\n\n const appliedIntent = selectionIntent;\n const setTimeout = globalObject.setTimeout;\n if (!setTimeout) {\n requestSelectionIntent(null);\n return;\n }\n const timer = setTimeout(() => {\n if (selectionIntentRef.current !== appliedIntent) {\n return;\n }\n const el = coreInputRef.current;\n if (!el || globalObject.document?.activeElement !== el) {\n requestSelectionIntent(null);\n return;\n }\n applySelectionIntent(appliedIntent);\n requestSelectionIntent(null);\n }, 0);\n\n return () => globalObject.clearTimeout?.(timer);\n }, [applySelectionIntent, coreInputRef, focused, globalObject, requestSelectionIntent, selectionIntent]);\n\n // Значение маски живёт в React-состоянии, а Input пересчитывает своё (показ крестика очистки)\n // только в onChange, которого при удалении и undo не бывает — они идут через keydown.\n // Поэтому дёргаем его сами на каждое изменение значения.\n useEffect(() => {\n const el = coreInputRef.current;\n if (el) {\n inputOnChange?.({ target: el, currentTarget: el } as React.ChangeEvent<HTMLInputElement>);\n }\n }, [maskState.typedValue]);\n\n useEffect(() => {\n if (!focused) {\n return;\n }\n\n const el = coreInputRef.current;\n if (!el) {\n return;\n }\n\n const handleSelectionChange = () => {\n if (document.activeElement === el) {\n handleSelect();\n }\n };\n\n document.addEventListener('selectionchange', handleSelectionChange);\n return () => document.removeEventListener('selectionchange', handleSelectionChange);\n }, [focused, handleSelect]);\n\n const alignPadding = useMaskAlignPadding(\n coreInputRef,\n overlayRef,\n maskState.displayValue,\n textAlign,\n focused && showOverlay && needsMaskAlignPadding(textAlign),\n );\n const inputStyle =\n alignPadding > 0 ? { ...rest.style, textAlign: 'left' as const, paddingLeft: alignPadding } : rest.style;\n\n return (\n <>\n <input\n {...rest}\n style={inputStyle}\n placeholder={showOverlay ? undefined : placeholder}\n aria-disabled={disabled}\n disabled={disabled}\n ref={coreInputRef}\n className={cx(globalClasses.input, styles.input, showOverlay && globalClasses.masked, className)}\n value={maskState.typedValue}\n onChange={handleChange}\n onBeforeInput={handleBeforeInput}\n onKeyDown={handleKeyDown}\n onSelect={handleSelect}\n onPaste={handlePaste}\n onCopy={handleCopy}\n onCut={handleCut}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onInput={handleInput}\n onMouseDown={(e) => {\n handleMouseDown();\n rest.onMouseDown?.(e);\n }}\n onMouseUp={handleMouseUp}\n onScroll={syncOverlayScroll}\n />\n {showOverlay && (\n <MaskOverlay\n containerRef={overlayRef}\n typedValue={maskState.typedValue}\n displayValue={maskState.displayValue}\n selectionStart={selectionRange.start}\n selectionEnd={selectionRange.end}\n disabled={disabled}\n textAlign={rest.style?.textAlign}\n colored={colored}\n />\n )}\n </>\n );\n },\n);\n"]}
@@ -0,0 +1,19 @@
1
+ export declare const globalClasses: {
2
+ input: string;
3
+ disabled: string;
4
+ selected: string;
5
+ masked: string;
6
+ colored: string;
7
+ };
8
+ export declare const input: string;
9
+ export declare const overlay: string;
10
+ export declare const typed: string;
11
+ export declare const mask: string;
12
+ export declare const selectedSegment: string;
13
+ export declare const styles: {
14
+ input: string;
15
+ overlay: string;
16
+ typed: string;
17
+ mask: string;
18
+ selectedSegment: string;
19
+ };
@@ -0,0 +1,8 @@
1
+
2
+ export var globalClasses = {input:'react-ui-masked-internal-input',disabled:'react-ui-masked-internal-disabled',selected:'react-ui-masked-internal-selected',masked:'react-ui-masked-internal-masked',colored:'react-ui-masked-internal-colored'};
3
+ export var input = 'react-ui-MaskedInternal__input';
4
+ export var mask = 'react-ui-MaskedInternal__mask';
5
+ export var overlay = 'react-ui-MaskedInternal__overlay';
6
+ export var selectedSegment = 'react-ui-MaskedInternal__selectedSegment';
7
+ export var styles = {input:'react-ui-MaskedInternal__input',overlay:'react-ui-MaskedInternal__overlay',typed:'react-ui-MaskedInternal__typed',mask:'react-ui-MaskedInternal__mask',selectedSegment:'react-ui-MaskedInternal__selectedSegment'};
8
+ export var typed = 'react-ui-MaskedInternal__typed';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaskedInternal.css.js","sourceRoot":"","sources":["MaskedInternal.css.ts"],"names":[],"mappings":"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","sourcesContent":["import { globalStyle, style } from '@vanilla-extract/css';\n\nimport { prefix } from '../../../lib/prefix.js';\nimport { t } from '../../../lib/theming/vanilla.js';\n\nexport const globalClasses = prefix('masked-internal')({\n input: 'input',\n disabled: 'disabled',\n selected: 'selected',\n masked: 'masked',\n colored: 'colored',\n});\n\nconst autofill = (selector: string) =>\n `${selector}:-webkit-autofill, ${selector}:-webkit-autofill:hover, ${selector}:-webkit-autofill:focus`;\n\nexport const input = style({ colorScheme: t.inputColorScheme });\n\nexport const overlay = style({\n position: 'absolute',\n inset: 0,\n pointerEvents: 'none',\n userSelect: 'none',\n overflow: 'hidden',\n display: 'flex',\n alignItems: 'center',\n zIndex: 2,\n});\n\nexport const typed = style({\n whiteSpace: 'pre',\n color: t.inputTextColor,\n});\n\nexport const mask = style({\n whiteSpace: 'pre',\n color: t.inputTextColor,\n});\n\nexport const selectedSegment = style({\n backgroundColor: '#3390ff',\n color: '#fff !important',\n WebkitTextFillColor: '#fff !important',\n});\n\n// вложенные правила — после баз всех классов файла, как было в склеенном CSS Emotion\nglobalStyle(`${input}:-internal-autofill-selected`, {\n backgroundColor: `${t.inputBg} !important`,\n backgroundImage: 'none !important',\n color: `${t.inputTextColor} !important`,\n});\n\nglobalStyle(autofill(input), {\n WebkitBoxShadow: `0 0 0 1000px ${t.inputBg} inset`,\n boxShadow: `0 0 0 1000px ${t.inputBg} inset`,\n WebkitTextFillColor: `${t.inputTextColor} !important`,\n color: `${t.inputTextColor} !important`,\n // Chrome иначе скрывает caret при autofill (color/currentColor).\n caretColor: `${t.inputTextColor} !important`,\n transition: 'background-color 0s 600000s,color 0s 600000s !important',\n});\n\nglobalStyle(`${input}:disabled`, { color: t.inputTextColorDisabled });\n\nglobalStyle(`${input}:disabled:-internal-autofill-selected`, {\n backgroundColor: `${t.inputDisabledBg} !important`,\n});\n\nglobalStyle(autofill(`${input}:disabled`), {\n WebkitBoxShadow: `0 0 0 1000px ${t.inputDisabledBg} inset`,\n boxShadow: `0 0 0 1000px ${t.inputDisabledBg} inset`,\n});\n\nconst masked = `${input}.${globalClasses.masked}`;\n\nglobalStyle(masked, {\n color: 'transparent',\n WebkitTextFillColor: 'transparent',\n caretColor: t.inputTextColor,\n});\n\nglobalStyle(`${masked}::selection`, {\n backgroundColor: 'transparent !important',\n color: 'transparent !important',\n WebkitTextFillColor: 'transparent !important',\n});\n\n// Текст рисует MaskOverlay; браузер при autofill не должен перебивать fill-color.\nglobalStyle(`${masked}:-internal-autofill-selected`, {\n color: 'transparent !important',\n caretColor: `${t.inputTextColor} !important`,\n});\n\nglobalStyle(autofill(masked), {\n WebkitTextFillColor: 'transparent !important',\n color: 'transparent !important',\n // Без этого caret становится transparent вместе с текстом и не мигает.\n caretColor: `${t.inputTextColor} !important`,\n});\n\nglobalStyle(`${typed}.${globalClasses.disabled}`, { color: t.inputTextColorDisabled });\n\nglobalStyle(`${mask}.${globalClasses.colored}`, { color: t.inputPlaceholderColor });\n\nglobalStyle(`${mask}.${globalClasses.disabled}`, { color: t.inputTextColorDisabled });\n\nexport const styles = { input, overlay, typed, mask, selectedSegment };\n"]}