@skbkontur/react-ui 6.4.1-8cb58.0 → 6.4.2-static-css.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 (679) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +97 -0
  3. package/components/Autocomplete/Autocomplete.d.ts +0 -1
  4. package/components/Autocomplete/Autocomplete.js +13 -4
  5. package/components/Autocomplete/Autocomplete.js.map +1 -1
  6. package/components/Autocomplete/Autocomplete.styles.d.ts +4 -4
  7. package/components/Autocomplete/Autocomplete.styles.js +5 -16
  8. package/components/Autocomplete/Autocomplete.styles.js.map +1 -1
  9. package/components/Button/Button.d.ts +15 -1
  10. package/components/Button/Button.js +162 -76
  11. package/components/Button/Button.js.map +1 -1
  12. package/components/Button/Button.styles.d.ts +107 -91
  13. package/components/Button/Button.styles.js +108 -255
  14. package/components/Button/Button.styles.js.map +1 -1
  15. package/components/Button/ButtonArrow.d.ts +2 -3
  16. package/components/Button/ButtonArrow.js +8 -10
  17. package/components/Button/ButtonArrow.js.map +1 -1
  18. package/components/Button/ButtonIcon.js +7 -17
  19. package/components/Button/ButtonIcon.js.map +1 -1
  20. package/components/Button/ButtonIcon.styles.d.ts +15 -15
  21. package/components/Button/ButtonIcon.styles.js +16 -51
  22. package/components/Button/ButtonIcon.styles.js.map +1 -1
  23. package/components/Calendar/Calendar.d.ts +0 -1
  24. package/components/Calendar/Calendar.js +3 -3
  25. package/components/Calendar/Calendar.js.map +1 -1
  26. package/components/Calendar/Calendar.styles.d.ts +5 -5
  27. package/components/Calendar/Calendar.styles.js +6 -20
  28. package/components/Calendar/Calendar.styles.js.map +1 -1
  29. package/components/Calendar/CalendarDay.js +11 -7
  30. package/components/Calendar/CalendarDay.js.map +1 -1
  31. package/components/Calendar/DayCellView.js +1 -3
  32. package/components/Calendar/DayCellView.js.map +1 -1
  33. package/components/Calendar/DayCellView.styles.d.ts +10 -8
  34. package/components/Calendar/DayCellView.styles.js +11 -29
  35. package/components/Calendar/DayCellView.styles.js.map +1 -1
  36. package/components/Calendar/Month.js +6 -10
  37. package/components/Calendar/Month.js.map +1 -1
  38. package/components/Calendar/MonthView.js +7 -7
  39. package/components/Calendar/MonthView.js.map +1 -1
  40. package/components/Calendar/MonthView.styles.d.ts +12 -12
  41. package/components/Calendar/MonthView.styles.js +13 -45
  42. package/components/Calendar/MonthView.styles.js.map +1 -1
  43. package/components/Center/Center.d.ts +0 -1
  44. package/components/Center/Center.js +1 -1
  45. package/components/Center/Center.js.map +1 -1
  46. package/components/Center/Center.styles.d.ts +7 -6
  47. package/components/Center/Center.styles.js +8 -25
  48. package/components/Center/Center.styles.js.map +1 -1
  49. package/components/Checkbox/Checkbox.d.ts +8 -1
  50. package/components/Checkbox/Checkbox.js +57 -26
  51. package/components/Checkbox/Checkbox.js.map +1 -1
  52. package/components/Checkbox/Checkbox.styles.d.ts +33 -30
  53. package/components/Checkbox/Checkbox.styles.js +35 -95
  54. package/components/Checkbox/Checkbox.styles.js.map +1 -1
  55. package/components/DateInput/DateFragmentsView.d.ts +0 -2
  56. package/components/DateInput/DateFragmentsView.js +10 -7
  57. package/components/DateInput/DateFragmentsView.js.map +1 -1
  58. package/components/DateInput/DateFragmentsView.styles.d.ts +8 -6
  59. package/components/DateInput/DateFragmentsView.styles.js +9 -26
  60. package/components/DateInput/DateFragmentsView.styles.js.map +1 -1
  61. package/components/DateInput/DateInput.d.ts +0 -2
  62. package/components/DateInput/DateInput.js +6 -8
  63. package/components/DateInput/DateInput.js.map +1 -1
  64. package/components/DateInput/DateInput.styles.d.ts +10 -11
  65. package/components/DateInput/DateInput.styles.js +11 -28
  66. package/components/DateInput/DateInput.styles.js.map +1 -1
  67. package/components/DatePicker/DatePicker.d.ts +0 -1
  68. package/components/DatePicker/DatePicker.js +2 -2
  69. package/components/DatePicker/DatePicker.js.map +1 -1
  70. package/components/DatePicker/DatePicker.styles.d.ts +4 -4
  71. package/components/DatePicker/DatePicker.styles.js +5 -16
  72. package/components/DatePicker/DatePicker.styles.js.map +1 -1
  73. package/components/DatePicker/MobilePicker.styles.d.ts +3 -2
  74. package/components/DatePicker/MobilePicker.styles.js +4 -13
  75. package/components/DatePicker/MobilePicker.styles.js.map +1 -1
  76. package/components/DatePicker/getMobilePickerTheme.js +27 -9
  77. package/components/DatePicker/getMobilePickerTheme.js.map +1 -1
  78. package/components/DateRangePicker/DateRangePicker.d.ts +4 -4
  79. package/components/DateRangePicker/DateRangePicker.js +26 -28
  80. package/components/DateRangePicker/DateRangePicker.js.map +1 -1
  81. package/components/DateRangePicker/DateRangePicker.styles.d.ts +20 -14
  82. package/components/DateRangePicker/DateRangePicker.styles.js +25 -49
  83. package/components/DateRangePicker/DateRangePicker.styles.js.map +1 -1
  84. package/components/DateRangePicker/DateRangePickerTheme.js +30 -10
  85. package/components/DateRangePicker/DateRangePickerTheme.js.map +1 -1
  86. package/components/Dropdown/getDropdownTheme.d.ts +11 -0
  87. package/components/Dropdown/getDropdownTheme.js +23 -4
  88. package/components/Dropdown/getDropdownTheme.js.map +1 -1
  89. package/components/DropdownMenu/getDropdownMenuTheme.js +9 -2
  90. package/components/DropdownMenu/getDropdownMenuTheme.js.map +1 -1
  91. package/components/FileUploader/FileUploader.d.ts +2 -1
  92. package/components/FileUploader/FileUploader.js +50 -45
  93. package/components/FileUploader/FileUploader.js.map +1 -1
  94. package/components/FileUploader/FileUploader.styles.d.ts +69 -68
  95. package/components/FileUploader/FileUploader.styles.js +71 -214
  96. package/components/FileUploader/FileUploader.styles.js.map +1 -1
  97. package/components/FileUploader/FileUploaderFile.js +28 -30
  98. package/components/FileUploader/FileUploaderFile.js.map +1 -1
  99. package/components/FileUploader/FileUploaderFile.styles.d.ts +57 -57
  100. package/components/FileUploader/FileUploaderFile.styles.js +58 -180
  101. package/components/FileUploader/FileUploaderFile.styles.js.map +1 -1
  102. package/components/FileUploader/FileUploaderFileList/FileUploaderFileList.js +17 -19
  103. package/components/FileUploader/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  104. package/components/FileUploader/FileUploaderFileList/FileUploaderFileList.styles.d.ts +31 -31
  105. package/components/FileUploader/FileUploaderFileList/FileUploaderFileList.styles.js +32 -99
  106. package/components/FileUploader/FileUploaderFileList/FileUploaderFileList.styles.js.map +1 -1
  107. package/components/FileUploader/FileUploaderFileStatusIcon.js +2 -4
  108. package/components/FileUploader/FileUploaderFileStatusIcon.js.map +1 -1
  109. package/components/FileUploader/FileUploaderFileTypeIcon.js +47 -52
  110. package/components/FileUploader/FileUploaderFileTypeIcon.js.map +1 -1
  111. package/components/FileUploader/FileUploaderFileTypeIcon.styles.d.ts +14 -0
  112. package/components/FileUploader/FileUploaderFileTypeIcon.styles.js +16 -0
  113. package/components/FileUploader/FileUploaderFileTypeIcon.styles.js.map +1 -0
  114. package/components/FxInput/FxInput.d.ts +1 -1
  115. package/components/FxInput/FxInput.js +6 -2
  116. package/components/FxInput/FxInput.js.map +1 -1
  117. package/components/FxInput/FxInput.styles.d.ts +4 -0
  118. package/components/FxInput/FxInput.styles.js +6 -0
  119. package/components/FxInput/FxInput.styles.js.map +1 -0
  120. package/components/FxInput/FxInputRestoreBtn.js +23 -15
  121. package/components/FxInput/FxInputRestoreBtn.js.map +1 -1
  122. package/components/FxInput/FxInputRestoreBtn.styles.d.ts +6 -0
  123. package/components/FxInput/FxInputRestoreBtn.styles.js +8 -0
  124. package/components/FxInput/FxInputRestoreBtn.styles.js.map +1 -0
  125. package/components/GlobalLoader/GlobalLoaderView.js +30 -14
  126. package/components/GlobalLoader/GlobalLoaderView.js.map +1 -1
  127. package/components/GlobalLoader/GlobalLoaderView.styles.d.ts +22 -16
  128. package/components/GlobalLoader/GlobalLoaderView.styles.js +22 -67
  129. package/components/GlobalLoader/GlobalLoaderView.styles.js.map +1 -1
  130. package/components/Group/Group.d.ts +0 -1
  131. package/components/Group/Group.js +2 -3
  132. package/components/Group/Group.js.map +1 -1
  133. package/components/Group/Group.styles.d.ts +7 -7
  134. package/components/Group/Group.styles.js +8 -28
  135. package/components/Group/Group.styles.js.map +1 -1
  136. package/components/Hint/Hint.d.ts +10 -2
  137. package/components/Hint/Hint.js +47 -19
  138. package/components/Hint/Hint.js.map +1 -1
  139. package/components/Hint/Hint.styles.d.ts +4 -4
  140. package/components/Hint/Hint.styles.js +5 -16
  141. package/components/Hint/Hint.styles.js.map +1 -1
  142. package/components/Hint/HintDelayController.d.ts +11 -0
  143. package/components/Hint/HintDelayController.js +50 -0
  144. package/components/Hint/HintDelayController.js.map +1 -0
  145. package/components/Input/Input.d.ts +0 -1
  146. package/components/Input/Input.js +13 -13
  147. package/components/Input/Input.js.map +1 -1
  148. package/components/Input/Input.styles.d.ts +20 -20
  149. package/components/Input/Input.styles.js +21 -66
  150. package/components/Input/Input.styles.js.map +1 -1
  151. package/components/Input/InputLayout/InputLayout.styles.d.ts +26 -17
  152. package/components/Input/InputLayout/InputLayout.styles.js +27 -57
  153. package/components/Input/InputLayout/InputLayout.styles.js.map +1 -1
  154. package/components/Input/InputLayout/InputLayoutAsideCounter.js +8 -8
  155. package/components/Input/InputLayout/InputLayoutAsideCounter.js.map +1 -1
  156. package/components/Input/InputLayout/InputLayoutAsideIcon.js +19 -25
  157. package/components/Input/InputLayout/InputLayoutAsideIcon.js.map +1 -1
  158. package/components/Input/InputLayout/InputLayoutAsideText.js +4 -4
  159. package/components/Input/InputLayout/InputLayoutAsideText.js.map +1 -1
  160. package/components/Kebab/Kebab.d.ts +0 -1
  161. package/components/Kebab/Kebab.js +2 -2
  162. package/components/Kebab/Kebab.js.map +1 -1
  163. package/components/Kebab/Kebab.styles.d.ts +10 -10
  164. package/components/Kebab/Kebab.styles.js +11 -34
  165. package/components/Kebab/Kebab.styles.js.map +1 -1
  166. package/components/Link/Link.d.ts +0 -1
  167. package/components/Link/Link.js +23 -18
  168. package/components/Link/Link.js.map +1 -1
  169. package/components/Link/Link.styles.d.ts +23 -23
  170. package/components/Link/Link.styles.js +25 -81
  171. package/components/Link/Link.styles.js.map +1 -1
  172. package/components/Link/LinkIcon.js +4 -6
  173. package/components/Link/LinkIcon.js.map +1 -1
  174. package/components/Loader/Loader.d.ts +0 -2
  175. package/components/Loader/Loader.js +2 -3
  176. package/components/Loader/Loader.js.map +1 -1
  177. package/components/Loader/Loader.styles.d.ts +7 -7
  178. package/components/Loader/Loader.styles.js +8 -25
  179. package/components/Loader/Loader.styles.js.map +1 -1
  180. package/components/MaskedInput/ColorableInputElement/ColorableInputElement.js +15 -21
  181. package/components/MaskedInput/ColorableInputElement/ColorableInputElement.js.map +1 -1
  182. package/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles.d.ts +3 -2
  183. package/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles.js +5 -13
  184. package/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles.js.map +1 -1
  185. package/components/MaskedInput/MaskedInput.styles.d.ts +3 -3
  186. package/components/MaskedInput/MaskedInput.styles.js +5 -14
  187. package/components/MaskedInput/MaskedInput.styles.js.map +1 -1
  188. package/components/MaskedInput/MaskedInputLegacy.js +4 -6
  189. package/components/MaskedInput/MaskedInputLegacy.js.map +1 -1
  190. package/components/MaskedInputV2/MaskedInputV2.js +4 -6
  191. package/components/MaskedInputV2/MaskedInputV2.js.map +1 -1
  192. package/components/MaskedInputV2/MaskedInputV2.styles.d.ts +3 -3
  193. package/components/MaskedInputV2/MaskedInputV2.styles.js +5 -14
  194. package/components/MaskedInputV2/MaskedInputV2.styles.js.map +1 -1
  195. package/components/MaskedInputV2/internal/MaskOverlay.js +8 -8
  196. package/components/MaskedInputV2/internal/MaskOverlay.js.map +1 -1
  197. package/components/MaskedInputV2/internal/MaskedCore.js +7 -5
  198. package/components/MaskedInputV2/internal/MaskedCore.js.map +1 -1
  199. package/components/MaskedInputV2/internal/MaskedInternal.styles.d.ts +7 -7
  200. package/components/MaskedInputV2/internal/MaskedInternal.styles.js +9 -25
  201. package/components/MaskedInputV2/internal/MaskedInternal.styles.js.map +1 -1
  202. package/components/MenuFooter/MenuFooter.js +10 -12
  203. package/components/MenuFooter/MenuFooter.js.map +1 -1
  204. package/components/MenuFooter/MenuFooter.styles.d.ts +9 -9
  205. package/components/MenuFooter/MenuFooter.styles.js +10 -32
  206. package/components/MenuFooter/MenuFooter.styles.js.map +1 -1
  207. package/components/MenuHeader/MenuHeader.js +9 -11
  208. package/components/MenuHeader/MenuHeader.js.map +1 -1
  209. package/components/MenuHeader/MenuHeader.styles.d.ts +9 -9
  210. package/components/MenuHeader/MenuHeader.styles.js +10 -32
  211. package/components/MenuHeader/MenuHeader.styles.js.map +1 -1
  212. package/components/MenuItem/MenuItem.d.ts +0 -1
  213. package/components/MenuItem/MenuItem.js +21 -21
  214. package/components/MenuItem/MenuItem.js.map +1 -1
  215. package/components/MenuItem/MenuItem.mixins.d.ts +6 -0
  216. package/components/MenuItem/MenuItem.mixins.js +7 -1
  217. package/components/MenuItem/MenuItem.mixins.js.map +1 -1
  218. package/components/MenuItem/MenuItem.styles.d.ts +26 -26
  219. package/components/MenuItem/MenuItem.styles.js +28 -85
  220. package/components/MenuItem/MenuItem.styles.js.map +1 -1
  221. package/components/MenuSeparator/MenuSeparator.js +4 -6
  222. package/components/MenuSeparator/MenuSeparator.js.map +1 -1
  223. package/components/MenuSeparator/MenuSeparator.styles.d.ts +4 -4
  224. package/components/MenuSeparator/MenuSeparator.styles.js +5 -16
  225. package/components/MenuSeparator/MenuSeparator.styles.js.map +1 -1
  226. package/components/MiniModal/MiniModal.styles.d.ts +10 -10
  227. package/components/MiniModal/MiniModal.styles.js +11 -35
  228. package/components/MiniModal/MiniModal.styles.js.map +1 -1
  229. package/components/MiniModal/MiniModalBody.js +3 -3
  230. package/components/MiniModal/MiniModalBody.js.map +1 -1
  231. package/components/MiniModal/MiniModalFooter.js +4 -6
  232. package/components/MiniModal/MiniModalFooter.js.map +1 -1
  233. package/components/MiniModal/MiniModalHeader.js +4 -6
  234. package/components/MiniModal/MiniModalHeader.js.map +1 -1
  235. package/components/MiniModal/MiniModalIndent.js +2 -4
  236. package/components/MiniModal/MiniModalIndent.js.map +1 -1
  237. package/components/MiniModal/getMiniModalTheme.js +39 -13
  238. package/components/MiniModal/getMiniModalTheme.js.map +1 -1
  239. package/components/Modal/Modal.d.ts +0 -1
  240. package/components/Modal/Modal.js +8 -8
  241. package/components/Modal/Modal.js.map +1 -1
  242. package/components/Modal/Modal.styles.d.ts +50 -50
  243. package/components/Modal/Modal.styles.js +52 -161
  244. package/components/Modal/Modal.styles.js.map +1 -1
  245. package/components/Modal/ModalBody.d.ts +0 -1
  246. package/components/Modal/ModalBody.js +7 -7
  247. package/components/Modal/ModalBody.js.map +1 -1
  248. package/components/Modal/ModalClose.js +7 -9
  249. package/components/Modal/ModalClose.js.map +1 -1
  250. package/components/Modal/ModalFooter.js +3 -3
  251. package/components/Modal/ModalFooter.js.map +1 -1
  252. package/components/Modal/ModalHeader.js +3 -3
  253. package/components/Modal/ModalHeader.js.map +1 -1
  254. package/components/Modal/ModalSeparator.js +4 -6
  255. package/components/Modal/ModalSeparator.js.map +1 -1
  256. package/components/Paging/Paging.d.ts +0 -2
  257. package/components/Paging/Paging.js +32 -37
  258. package/components/Paging/Paging.js.map +1 -1
  259. package/components/Paging/Paging.styles.d.ts +31 -31
  260. package/components/Paging/Paging.styles.js +32 -97
  261. package/components/Paging/Paging.styles.js.map +1 -1
  262. package/components/PasswordInput/PasswordInput.d.ts +0 -2
  263. package/components/PasswordInput/PasswordInput.js +6 -11
  264. package/components/PasswordInput/PasswordInput.js.map +1 -1
  265. package/components/PasswordInput/PasswordInput.styles.d.ts +10 -10
  266. package/components/PasswordInput/PasswordInput.styles.js +11 -34
  267. package/components/PasswordInput/PasswordInput.styles.js.map +1 -1
  268. package/components/Radio/Radio.d.ts +8 -1
  269. package/components/Radio/Radio.js +59 -28
  270. package/components/Radio/Radio.js.map +1 -1
  271. package/components/Radio/Radio.styles.d.ts +33 -30
  272. package/components/Radio/Radio.styles.js +35 -95
  273. package/components/Radio/Radio.styles.js.map +1 -1
  274. package/components/RadioGroup/RadioGroup.d.ts +0 -1
  275. package/components/RadioGroup/RadioGroup.js +1 -2
  276. package/components/RadioGroup/RadioGroup.js.map +1 -1
  277. package/components/RadioGroup/RadioGroup.styles.d.ts +5 -5
  278. package/components/RadioGroup/RadioGroup.styles.js +6 -22
  279. package/components/RadioGroup/RadioGroup.styles.js.map +1 -1
  280. package/components/ScrollContainer/ScrollBar.d.ts +1 -3
  281. package/components/ScrollContainer/ScrollBar.js +9 -14
  282. package/components/ScrollContainer/ScrollBar.js.map +1 -1
  283. package/components/ScrollContainer/ScrollContainer.d.ts +0 -1
  284. package/components/ScrollContainer/ScrollContainer.js +1 -1
  285. package/components/ScrollContainer/ScrollContainer.js.map +1 -1
  286. package/components/ScrollContainer/ScrollContainer.styles.d.ts +13 -13
  287. package/components/ScrollContainer/ScrollContainer.styles.js +15 -43
  288. package/components/ScrollContainer/ScrollContainer.styles.js.map +1 -1
  289. package/components/Select/Select.d.ts +0 -1
  290. package/components/Select/Select.js +12 -12
  291. package/components/Select/Select.js.map +1 -1
  292. package/components/Select/Select.styles.d.ts +17 -17
  293. package/components/Select/Select.styles.js +18 -55
  294. package/components/Select/Select.styles.js.map +1 -1
  295. package/components/Select/selectTheme.js +31 -7
  296. package/components/Select/selectTheme.js.map +1 -1
  297. package/components/SidePage/SidePage.d.ts +0 -2
  298. package/components/SidePage/SidePage.js +8 -10
  299. package/components/SidePage/SidePage.js.map +1 -1
  300. package/components/SidePage/SidePage.styles.d.ts +49 -49
  301. package/components/SidePage/SidePage.styles.js +50 -156
  302. package/components/SidePage/SidePage.styles.js.map +1 -1
  303. package/components/SidePage/SidePageBody.d.ts +0 -1
  304. package/components/SidePage/SidePageBody.js +7 -8
  305. package/components/SidePage/SidePageBody.js.map +1 -1
  306. package/components/SidePage/SidePageCloseButton.js +6 -8
  307. package/components/SidePage/SidePageCloseButton.js.map +1 -1
  308. package/components/SidePage/SidePageContainer.d.ts +0 -2
  309. package/components/SidePage/SidePageContainer.js +11 -13
  310. package/components/SidePage/SidePageContainer.js.map +1 -1
  311. package/components/SidePage/SidePageFooter.d.ts +0 -2
  312. package/components/SidePage/SidePageFooter.js +11 -13
  313. package/components/SidePage/SidePageFooter.js.map +1 -1
  314. package/components/SidePage/SidePageHeader.d.ts +0 -1
  315. package/components/SidePage/SidePageHeader.js +10 -10
  316. package/components/SidePage/SidePageHeader.js.map +1 -1
  317. package/components/Spinner/Spinner.d.ts +0 -2
  318. package/components/Spinner/Spinner.js +7 -10
  319. package/components/Spinner/Spinner.js.map +1 -1
  320. package/components/Spinner/Spinner.styles.d.ts +12 -12
  321. package/components/Spinner/Spinner.styles.js +13 -41
  322. package/components/Spinner/Spinner.styles.js.map +1 -1
  323. package/components/Sticky/Sticky.d.ts +0 -1
  324. package/components/Sticky/Sticky.js +1 -1
  325. package/components/Sticky/Sticky.js.map +1 -1
  326. package/components/Sticky/Sticky.styles.d.ts +7 -6
  327. package/components/Sticky/Sticky.styles.js +8 -25
  328. package/components/Sticky/Sticky.styles.js.map +1 -1
  329. package/components/Switcher/Switcher.d.ts +0 -1
  330. package/components/Switcher/Switcher.js +6 -6
  331. package/components/Switcher/Switcher.js.map +1 -1
  332. package/components/Switcher/Switcher.styles.d.ts +11 -11
  333. package/components/Switcher/Switcher.styles.js +12 -37
  334. package/components/Switcher/Switcher.styles.js.map +1 -1
  335. package/components/Switcher/switcherTheme.js +12 -4
  336. package/components/Switcher/switcherTheme.js.map +1 -1
  337. package/components/Tabs/Indicator.d.ts +0 -1
  338. package/components/Tabs/Indicator.js +2 -2
  339. package/components/Tabs/Indicator.js.map +1 -1
  340. package/components/Tabs/Indicator.styles.d.ts +7 -7
  341. package/components/Tabs/Indicator.styles.js +8 -25
  342. package/components/Tabs/Indicator.styles.js.map +1 -1
  343. package/components/Tabs/Tab.d.ts +0 -2
  344. package/components/Tabs/Tab.js +19 -24
  345. package/components/Tabs/Tab.js.map +1 -1
  346. package/components/Tabs/Tab.styles.d.ts +27 -27
  347. package/components/Tabs/Tab.styles.js +30 -99
  348. package/components/Tabs/Tab.styles.js.map +1 -1
  349. package/components/Tabs/Tabs.d.ts +0 -2
  350. package/components/Tabs/Tabs.js +24 -29
  351. package/components/Tabs/Tabs.js.map +1 -1
  352. package/components/Tabs/Tabs.styles.d.ts +6 -6
  353. package/components/Tabs/Tabs.styles.js +8 -25
  354. package/components/Tabs/Tabs.styles.js.map +1 -1
  355. package/components/Textarea/Textarea.d.ts +0 -2
  356. package/components/Textarea/Textarea.js +17 -24
  357. package/components/Textarea/Textarea.js.map +1 -1
  358. package/components/Textarea/Textarea.styles.d.ts +26 -22
  359. package/components/Textarea/Textarea.styles.js +27 -71
  360. package/components/Textarea/Textarea.styles.js.map +1 -1
  361. package/components/Textarea/TextareaCounter.js +22 -14
  362. package/components/Textarea/TextareaCounter.js.map +1 -1
  363. package/components/TimePicker/TimePicker.styles.d.ts +11 -11
  364. package/components/TimePicker/TimePicker.styles.js +12 -37
  365. package/components/TimePicker/TimePicker.styles.js.map +1 -1
  366. package/components/TimePicker/TimePickerItems.js +6 -6
  367. package/components/TimePicker/TimePickerItems.js.map +1 -1
  368. package/components/TimePicker/TimePickerPopup.js +1 -1
  369. package/components/TimePicker/TimePickerPopup.js.map +1 -1
  370. package/components/Toast/Toast.d.ts +0 -1
  371. package/components/Toast/Toast.js +9 -6
  372. package/components/Toast/Toast.js.map +1 -1
  373. package/components/Toast/Toast.styles.d.ts +6 -5
  374. package/components/Toast/Toast.styles.js +7 -22
  375. package/components/Toast/Toast.styles.js.map +1 -1
  376. package/components/Toast/ToastView.d.ts +0 -1
  377. package/components/Toast/ToastView.js +9 -17
  378. package/components/Toast/ToastView.js.map +1 -1
  379. package/components/Toast/ToastView.styles.d.ts +19 -17
  380. package/components/Toast/ToastView.styles.js +20 -65
  381. package/components/Toast/ToastView.styles.js.map +1 -1
  382. package/components/Toggle/Toggle.d.ts +1 -1
  383. package/components/Toggle/Toggle.js +55 -39
  384. package/components/Toggle/Toggle.js.map +1 -1
  385. package/components/Toggle/Toggle.styles.d.ts +47 -46
  386. package/components/Toggle/Toggle.styles.js +48 -143
  387. package/components/Toggle/Toggle.styles.js.map +1 -1
  388. package/components/Token/Token.d.ts +0 -2
  389. package/components/Token/Token.js +5 -10
  390. package/components/Token/Token.js.map +1 -1
  391. package/components/Token/Token.styles.d.ts +20 -19
  392. package/components/Token/Token.styles.js +22 -62
  393. package/components/Token/Token.styles.js.map +1 -1
  394. package/components/Token/TokenView.js +8 -10
  395. package/components/Token/TokenView.js.map +1 -1
  396. package/components/TokenInput/TextWidthHelper.d.ts +0 -1
  397. package/components/TokenInput/TextWidthHelper.js +4 -4
  398. package/components/TokenInput/TextWidthHelper.js.map +1 -1
  399. package/components/TokenInput/TokenInput.d.ts +1 -2
  400. package/components/TokenInput/TokenInput.js +20 -22
  401. package/components/TokenInput/TokenInput.js.map +1 -1
  402. package/components/TokenInput/TokenInput.styles.d.ts +21 -20
  403. package/components/TokenInput/TokenInput.styles.js +22 -66
  404. package/components/TokenInput/TokenInput.styles.js.map +1 -1
  405. package/components/Tooltip/Tooltip.d.ts +0 -1
  406. package/components/Tooltip/Tooltip.js +12 -12
  407. package/components/Tooltip/Tooltip.js.map +1 -1
  408. package/components/Tooltip/Tooltip.styles.d.ts +11 -10
  409. package/components/Tooltip/Tooltip.styles.js +12 -34
  410. package/components/Tooltip/Tooltip.styles.js.map +1 -1
  411. package/index.d.ts +4 -0
  412. package/index.js +12 -0
  413. package/index.js.map +1 -1
  414. package/internal/ClearCrossIcon/ClearCrossIcon.js +7 -9
  415. package/internal/ClearCrossIcon/ClearCrossIcon.js.map +1 -1
  416. package/internal/ClearCrossIcon/ClearCrossIcon.styles.d.ts +11 -12
  417. package/internal/ClearCrossIcon/ClearCrossIcon.styles.js +12 -35
  418. package/internal/ClearCrossIcon/ClearCrossIcon.styles.js.map +1 -1
  419. package/internal/CloseButtonIcon/CloseButtonIcon.d.ts +21 -11
  420. package/internal/CloseButtonIcon/CloseButtonIcon.js +28 -13
  421. package/internal/CloseButtonIcon/CloseButtonIcon.js.map +1 -1
  422. package/internal/CloseButtonIcon/CloseButtonIcon.styles.d.ts +8 -8
  423. package/internal/CloseButtonIcon/CloseButtonIcon.styles.js +9 -23
  424. package/internal/CloseButtonIcon/CloseButtonIcon.styles.js.map +1 -1
  425. package/internal/CommonWrapper/CommonWrapper.d.ts +5 -1
  426. package/internal/CommonWrapper/CommonWrapper.js +107 -6
  427. package/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  428. package/internal/CustomComboBox/ComboBoxView.d.ts +1 -2
  429. package/internal/CustomComboBox/ComboBoxView.js +8 -7
  430. package/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  431. package/internal/CustomComboBox/CustomComboBox.styles.d.ts +5 -3
  432. package/internal/CustomComboBox/CustomComboBox.styles.js +6 -16
  433. package/internal/CustomComboBox/CustomComboBox.styles.js.map +1 -1
  434. package/internal/DateSelect/DateSelect.d.ts +0 -1
  435. package/internal/DateSelect/DateSelect.js +2 -2
  436. package/internal/DateSelect/DateSelect.js.map +1 -1
  437. package/internal/DateSelect/DateSelect.styles.d.ts +5 -5
  438. package/internal/DateSelect/DateSelect.styles.js +7 -19
  439. package/internal/DateSelect/DateSelect.styles.js.map +1 -1
  440. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.d.ts +15 -1
  441. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js +36 -15
  442. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
  443. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.styles.d.ts +5 -0
  444. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.styles.js +7 -0
  445. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.styles.js.map +1 -0
  446. package/internal/InputLikeText/InputLikeText.d.ts +0 -1
  447. package/internal/InputLikeText/InputLikeText.js +21 -17
  448. package/internal/InputLikeText/InputLikeText.js.map +1 -1
  449. package/internal/InputLikeText/InputLikeText.styles.d.ts +7 -7
  450. package/internal/InputLikeText/InputLikeText.styles.js +8 -28
  451. package/internal/InputLikeText/InputLikeText.styles.js.map +1 -1
  452. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.d.ts +0 -1
  453. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.js +14 -14
  454. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.js.map +1 -1
  455. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.d.ts +3 -2
  456. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.js +4 -13
  457. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.js.map +1 -1
  458. package/internal/MaskCharLowLine/MaskCharLowLine.styles.d.ts +3 -2
  459. package/internal/MaskCharLowLine/MaskCharLowLine.styles.js +4 -13
  460. package/internal/MaskCharLowLine/MaskCharLowLine.styles.js.map +1 -1
  461. package/internal/Menu/Menu.d.ts +0 -1
  462. package/internal/Menu/Menu.js +9 -9
  463. package/internal/Menu/Menu.js.map +1 -1
  464. package/internal/Menu/Menu.styles.d.ts +15 -15
  465. package/internal/Menu/Menu.styles.js +16 -49
  466. package/internal/Menu/Menu.styles.js.map +1 -1
  467. package/internal/MenuMessage/MenuMessage.js +10 -10
  468. package/internal/MenuMessage/MenuMessage.js.map +1 -1
  469. package/internal/MenuMessage/MenuMessage.styles.d.ts +10 -10
  470. package/internal/MenuMessage/MenuMessage.styles.js +11 -39
  471. package/internal/MenuMessage/MenuMessage.styles.js.map +1 -1
  472. package/internal/MobilePopup/MobilePopup.d.ts +0 -1
  473. package/internal/MobilePopup/MobilePopup.js +23 -11
  474. package/internal/MobilePopup/MobilePopup.js.map +1 -1
  475. package/internal/MobilePopup/MobilePopup.styles.d.ts +16 -16
  476. package/internal/MobilePopup/MobilePopup.styles.js +17 -55
  477. package/internal/MobilePopup/MobilePopup.styles.js.map +1 -1
  478. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +0 -1
  479. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js +5 -5
  480. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js.map +1 -1
  481. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +6 -6
  482. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js +7 -23
  483. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js.map +1 -1
  484. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.d.ts +0 -1
  485. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js +10 -10
  486. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  487. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.d.ts +13 -13
  488. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js +14 -45
  489. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js.map +1 -1
  490. package/internal/NativeDateInput/NativeDateInput.d.ts +0 -1
  491. package/internal/NativeDateInput/NativeDateInput.js +1 -1
  492. package/internal/NativeDateInput/NativeDateInput.js.map +1 -1
  493. package/internal/NativeDateInput/NativeDateInput.styles.d.ts +3 -2
  494. package/internal/NativeDateInput/NativeDateInput.styles.js +4 -13
  495. package/internal/NativeDateInput/NativeDateInput.styles.js.map +1 -1
  496. package/internal/NativeTimeInput/NativeTimeInput.js +1 -2
  497. package/internal/NativeTimeInput/NativeTimeInput.js.map +1 -1
  498. package/internal/NativeTimeInput/NativeTimeInput.styles.d.ts +3 -2
  499. package/internal/NativeTimeInput/NativeTimeInput.styles.js +4 -13
  500. package/internal/NativeTimeInput/NativeTimeInput.styles.js.map +1 -1
  501. package/internal/Popup/Popup.d.ts +0 -1
  502. package/internal/Popup/Popup.js +5 -5
  503. package/internal/Popup/Popup.js.map +1 -1
  504. package/internal/Popup/Popup.styles.d.ts +21 -21
  505. package/internal/Popup/Popup.styles.js +22 -67
  506. package/internal/Popup/Popup.styles.js.map +1 -1
  507. package/internal/Popup/PopupPin.d.ts +0 -1
  508. package/internal/Popup/PopupPin.js +1 -1
  509. package/internal/Popup/PopupPin.js.map +1 -1
  510. package/internal/Popup/PopupPin.styles.d.ts +9 -8
  511. package/internal/Popup/PopupPin.styles.js +10 -31
  512. package/internal/Popup/PopupPin.styles.js.map +1 -1
  513. package/internal/PopupMenu/PopupMenu.d.ts +0 -1
  514. package/internal/PopupMenu/PopupMenu.js +1 -1
  515. package/internal/PopupMenu/PopupMenu.js.map +1 -1
  516. package/internal/PopupMenu/PopupMenu.styles.d.ts +4 -3
  517. package/internal/PopupMenu/PopupMenu.styles.js +5 -16
  518. package/internal/PopupMenu/PopupMenu.styles.js.map +1 -1
  519. package/internal/RenderContainer/RenderInnerContainer.js +4 -2
  520. package/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
  521. package/internal/ResizeDetector/ResizeDetector.d.ts +0 -1
  522. package/internal/ResizeDetector/ResizeDetector.js +1 -1
  523. package/internal/ResizeDetector/ResizeDetector.js.map +1 -1
  524. package/internal/ResizeDetector/ResizeDetector.styles.d.ts +7 -6
  525. package/internal/ResizeDetector/ResizeDetector.styles.js +8 -25
  526. package/internal/ResizeDetector/ResizeDetector.styles.js.map +1 -1
  527. package/internal/SpinnerIcon/SpinnerIcon.js +2 -2
  528. package/internal/SpinnerIcon/SpinnerIcon.js.map +1 -1
  529. package/internal/SpinnerIcon/SpinnerIcon.styles.d.ts +6 -5
  530. package/internal/SpinnerIcon/SpinnerIcon.styles.js +7 -22
  531. package/internal/SpinnerIcon/SpinnerIcon.styles.js.map +1 -1
  532. package/internal/TextWidthHelper/TextWidthHelper.d.ts +0 -1
  533. package/internal/TextWidthHelper/TextWidthHelper.js +1 -1
  534. package/internal/TextWidthHelper/TextWidthHelper.js.map +1 -1
  535. package/internal/TextWidthHelper/TextWidthHelper.styles.d.ts +4 -3
  536. package/internal/TextWidthHelper/TextWidthHelper.styles.js +5 -16
  537. package/internal/TextWidthHelper/TextWidthHelper.styles.js.map +1 -1
  538. package/internal/TimeInput/TimeFragments.js +19 -15
  539. package/internal/TimeInput/TimeFragments.js.map +1 -1
  540. package/internal/TimeInput/TimeFragments.styles.d.ts +19 -31
  541. package/internal/TimeInput/TimeFragments.styles.js +20 -76
  542. package/internal/TimeInput/TimeFragments.styles.js.map +1 -1
  543. package/internal/TimeInput/TimeInput.js +4 -4
  544. package/internal/TimeInput/TimeInput.js.map +1 -1
  545. package/internal/TimeInput/TimeInput.styles.d.ts +6 -6
  546. package/internal/TimeInput/TimeInput.styles.js +7 -22
  547. package/internal/TimeInput/TimeInput.styles.js.map +1 -1
  548. package/internal/icons2022/BaseIcon.js +8 -1
  549. package/internal/icons2022/BaseIcon.js.map +1 -1
  550. package/internal/icons2022/BaseIcon.styles.d.ts +5 -2
  551. package/internal/icons2022/BaseIcon.styles.js +6 -14
  552. package/internal/icons2022/BaseIcon.styles.js.map +1 -1
  553. package/internal/icons2022/LoadingIcon.js +3 -5
  554. package/internal/icons2022/LoadingIcon.js.map +1 -1
  555. package/internal/themes/BasicTheme.d.ts +10 -0
  556. package/internal/themes/BasicTheme.js +17 -6
  557. package/internal/themes/BasicTheme.js.map +1 -1
  558. package/internal/themes/DarkTheme6_0.js +62 -342
  559. package/internal/themes/DarkTheme6_0.js.map +1 -1
  560. package/internal/themes/DarkTheme6_1.js +11 -3
  561. package/internal/themes/DarkTheme6_1.js.map +1 -1
  562. package/internal/themes/DarkTheme6_4.js +11 -1
  563. package/internal/themes/DarkTheme6_4.js.map +1 -1
  564. package/lib/Upgrades.d.ts +12 -2
  565. package/lib/Upgrades.js +12 -16
  566. package/lib/Upgrades.js.map +1 -1
  567. package/lib/classNames.generated.d.ts +1235 -0
  568. package/lib/classNames.generated.js +1233 -0
  569. package/lib/classNames.generated.js.map +1 -0
  570. package/lib/globalObject.js +4 -1
  571. package/lib/globalObject.js.map +1 -1
  572. package/lib/renderEnvironment/RenderEnvironmentContext.d.ts +38 -6
  573. package/lib/renderEnvironment/RenderEnvironmentContext.js +21 -19
  574. package/lib/renderEnvironment/RenderEnvironmentContext.js.map +1 -1
  575. package/lib/renderEnvironment/RenderEnvironmentDecorator.js +6 -3
  576. package/lib/renderEnvironment/RenderEnvironmentDecorator.js.map +1 -1
  577. package/lib/styles/baselineCompensation.d.ts +63 -0
  578. package/lib/styles/baselineCompensation.js +122 -0
  579. package/lib/styles/baselineCompensation.js.map +1 -0
  580. package/lib/theming/Emotion.d.ts +43 -9
  581. package/lib/theming/Emotion.js +70 -35
  582. package/lib/theming/Emotion.js.map +1 -1
  583. package/lib/theming/declaredTheme.d.ts +43 -0
  584. package/lib/theming/declaredTheme.js +56 -0
  585. package/lib/theming/declaredTheme.js.map +1 -0
  586. package/lib/theming/hashString.d.ts +19 -0
  587. package/lib/theming/hashString.js +52 -0
  588. package/lib/theming/hashString.js.map +1 -0
  589. package/lib/theming/staticStyles.d.ts +17 -0
  590. package/lib/theming/staticStyles.js +8 -0
  591. package/lib/theming/staticStyles.js.map +1 -0
  592. package/lib/theming/staticThemeDelta.d.ts +17 -0
  593. package/lib/theming/staticThemeDelta.js +37 -0
  594. package/lib/theming/staticThemeDelta.js.map +1 -0
  595. package/lib/theming/staticThemeVars.d.ts +21 -0
  596. package/lib/theming/staticThemeVars.js +35 -0
  597. package/lib/theming/staticThemeVars.js.map +1 -0
  598. package/lib/theming/themeCssVarsClass.d.ts +89 -0
  599. package/lib/theming/themeCssVarsClass.js +253 -0
  600. package/lib/theming/themeCssVarsClass.js.map +1 -0
  601. package/lib/theming/themeCssVarsDelta.d.ts +13 -0
  602. package/lib/theming/themeCssVarsDelta.js +67 -0
  603. package/lib/theming/themeCssVarsDelta.js.map +1 -0
  604. package/lib/theming/themeToCssVars.d.ts +47 -0
  605. package/lib/theming/themeToCssVars.js +861 -0
  606. package/lib/theming/themeToCssVars.js.map +1 -0
  607. package/package.json +47 -6
  608. package/react-ui-tailwind.css +544 -0
  609. package/react-ui-themes.css +8628 -0
  610. package/react-ui-token-map.json +9029 -0
  611. package/react-ui.css +7776 -0
  612. package/react-ui.layer.css +7778 -0
  613. package/themes/dark-6-0.css +1439 -0
  614. package/themes/dark-6-0.scoped.css +1439 -0
  615. package/themes/dark-6-1.css +1439 -0
  616. package/themes/dark-6-1.scoped.css +1439 -0
  617. package/themes/dark.css +1439 -0
  618. package/themes/dark.scoped.css +1439 -0
  619. package/themes/light-6-0.css +1437 -0
  620. package/themes/light-6-0.scoped.css +1437 -0
  621. package/themes/light-6-1.css +1437 -0
  622. package/themes/light-6-1.scoped.css +1437 -0
  623. package/themes/light.css +1437 -0
  624. package/themes/light.scoped.css +1437 -0
  625. package/components/Button/Button.mixins.d.ts +0 -4
  626. package/components/Button/Button.mixins.js +0 -21
  627. package/components/Button/Button.mixins.js.map +0 -1
  628. package/components/Checkbox/Checkbox.mixins.d.ts +0 -4
  629. package/components/Checkbox/Checkbox.mixins.js +0 -18
  630. package/components/Checkbox/Checkbox.mixins.js.map +0 -1
  631. package/components/FileUploader/FileUploader.mixins.d.ts +0 -1
  632. package/components/FileUploader/FileUploader.mixins.js +0 -4
  633. package/components/FileUploader/FileUploader.mixins.js.map +0 -1
  634. package/components/Link/Link.mixins.d.ts +0 -2
  635. package/components/Link/Link.mixins.js +0 -7
  636. package/components/Link/Link.mixins.js.map +0 -1
  637. package/components/MenuFooter/MenuFooter.mixins.d.ts +0 -2
  638. package/components/MenuFooter/MenuFooter.mixins.js +0 -8
  639. package/components/MenuFooter/MenuFooter.mixins.js.map +0 -1
  640. package/components/MenuHeader/MenuHeader.mixins.d.ts +0 -2
  641. package/components/MenuHeader/MenuHeader.mixins.js +0 -8
  642. package/components/MenuHeader/MenuHeader.mixins.js.map +0 -1
  643. package/components/Radio/Radio.mixins.d.ts +0 -7
  644. package/components/Radio/Radio.mixins.js +0 -30
  645. package/components/Radio/Radio.mixins.js.map +0 -1
  646. package/components/Tabs/helpers.d.ts +0 -6
  647. package/components/Tabs/helpers.js +0 -25
  648. package/components/Tabs/helpers.js.map +0 -1
  649. package/components/Textarea/Textarea.mixins.d.ts +0 -2
  650. package/components/Textarea/Textarea.mixins.js +0 -7
  651. package/components/Textarea/Textarea.mixins.js.map +0 -1
  652. package/components/Toggle/Toggle.mixins.d.ts +0 -8
  653. package/components/Toggle/Toggle.mixins.js +0 -32
  654. package/components/Toggle/Toggle.mixins.js.map +0 -1
  655. package/components/Token/Token.mixins.d.ts +0 -1
  656. package/components/Token/Token.mixins.js +0 -4
  657. package/components/Token/Token.mixins.js.map +0 -1
  658. package/components/TokenInput/TokenInput.mixins.d.ts +0 -2
  659. package/components/TokenInput/TokenInput.mixins.js +0 -7
  660. package/components/TokenInput/TokenInput.mixins.js.map +0 -1
  661. package/lib/chars.d.ts +0 -8
  662. package/lib/chars.js +0 -9
  663. package/lib/chars.js.map +0 -1
  664. package/lib/styles/Mixins.d.ts +0 -2
  665. package/lib/styles/Mixins.js +0 -7
  666. package/lib/styles/Mixins.js.map +0 -1
  667. package/lib/styles/UiFont.d.ts +0 -3
  668. package/lib/styles/UiFont.js +0 -18
  669. package/lib/styles/UiFont.js.map +0 -1
  670. package/lib/styles/getLabGrotesqueBaselineCompensation.d.ts +0 -1
  671. package/lib/styles/getLabGrotesqueBaselineCompensation.js +0 -10
  672. package/lib/styles/getLabGrotesqueBaselineCompensation.js.map +0 -1
  673. package/lib/theming/AnimationKeyframes.d.ts +0 -7
  674. package/lib/theming/AnimationKeyframes.js +0 -24
  675. package/lib/theming/AnimationKeyframes.js.map +0 -1
  676. package/lib/theming/useTheme.d.ts +0 -2
  677. package/lib/theming/useTheme.js +0 -6
  678. package/lib/theming/useTheme.js.map +0 -1
  679. package/typings/stylis-plugin-extra-scope.d.ts +0 -3
@@ -0,0 +1,122 @@
1
+ import { isChrome, isFirefox } from '../client.js';
2
+ import { getSafeWindow } from '../globalObject.js';
3
+ /**
4
+ * Компенсация базовой линии шрифта LabGrotesque — сдвиг на ±1px, свой у каждого
5
+ * браузера.
6
+ *
7
+ * Раньше значение вычислялось в JS и подставлялось в стили числом. Из-за этого
8
+ * стили Checkbox, Radio и Toggle отличались на сервере и в браузере: на сервере
9
+ * нет `navigator.userAgent`, поэтому в `margin-top: calc(...)` попадало другое
10
+ * число. Разные стили — разный хеш — разный класснейм — расхождение на гидрации.
11
+ *
12
+ * Теперь в стили попадает выражение с CSS-переменными, одинаковое везде, а сами
13
+ * переменные объявляются один раз глобально. Класснейм больше не зависит от
14
+ * браузера, а результат в каждом реальном браузере остаётся прежним.
15
+ */
16
+ var IS_CHROME_VAR = '--react-ui-is-chrome';
17
+ var IS_FIREFOX_VAR = '--react-ui-is-firefox';
18
+ /**
19
+ * Значение по умолчанию — 0, то есть «ни Chrome, ни Firefox».
20
+ *
21
+ * На сервере переменные не объявляются вовсе, и подставляется этот фолбэк.
22
+ */
23
+ var isChromeVar = "var(".concat(IS_CHROME_VAR, ", 0)");
24
+ var isFirefoxVar = "var(".concat(IS_FIREFOX_VAR, ", 0)");
25
+ /**
26
+ * Величина компенсации — токен темы `labGrotesqueBaselineCompensation`. Он
27
+ * безразмерный (`'1'`), поэтому размерность даёт множитель `1px`: произведение
28
+ * `число * число * длина` внутри `calc()` валидно, как и вложение результата во
29
+ * внешний `calc()` с якорем — `calc(var(--kontur-checkboxBoxOffsetY) + …)`.
30
+ *
31
+ * Раньше значение читалось из темы в JS через `parseInt`, и дробный оверрайд
32
+ * (например `'1.5'`) молча обрезался до 1. Со ссылкой на переменную он работает
33
+ * как задан в теме.
34
+ */
35
+ export var labGrotesqueBaselineCompensation = "var(--kontur-labGrotesqueBaselineCompensation) * 1px";
36
+ /**
37
+ * Инстансы, для которых флаги уже поставлены — вызывать за один рендер могут
38
+ * десятки компонентов, а `setProperty` на каждый был бы чистым расточительством.
39
+ */
40
+ var flagged = new WeakSet();
41
+ /**
42
+ * Объявляет флаги браузера как CSS-переменные. Зовётся из `CommonWrapper` —
43
+ * централизованно для всех компонентов, а не из `getStyles` конкретных: после
44
+ * перевода `Checkbox`/`Radio`/`Toggle` на `staticStyles()` их фабрика больше не
45
+ * выполняется вовсе, а флаги нужны раньше и независимо от того, какие
46
+ * компоненты на странице фактически есть.
47
+ *
48
+ * Значения ставятся на корневой элемент через CSSOM, а не правилом `:root`
49
+ * через Emotion. Причина не в удобстве: правило потребовало бы тега `<style>`,
50
+ * то есть nonce — и это единственное, что осталось бы требовать его на
51
+ * странице, где весь остальной CSS приезжает файлом. `setProperty` не создаёт
52
+ * ни правила, ни тега, и `style-src` его не касается: директива смотрит на
53
+ * разбор разметки и на `setAttribute`, а не на объектную модель.
54
+ *
55
+ * Документ берётся из окружения рендера: компонент может жить в iframe, и флаги
56
+ * обязаны оказаться в том же документе, что и правила, которые их читают.
57
+ *
58
+ * На сервере не делает ничего: там браузер неизвестен, и объявить переменные
59
+ * значило бы зафиксировать неправильные значения в разметке.
60
+ */
61
+ export var injectBaselineCompensationVars = function (globalObject) {
62
+ var _a;
63
+ var ownerDocument = (_a = globalObject.document) !== null && _a !== void 0 ? _a : getSafeWindow().document;
64
+ if (!ownerDocument) {
65
+ return;
66
+ }
67
+ if (flagged.has(ownerDocument)) {
68
+ return;
69
+ }
70
+ flagged.add(ownerDocument);
71
+ var style = ownerDocument.documentElement.style;
72
+ style.setProperty(IS_CHROME_VAR, isChrome ? '1' : '0');
73
+ style.setProperty(IS_FIREFOX_VAR, isFirefox ? '1' : '0');
74
+ };
75
+ /**
76
+ * Выбор ветви по размеру шрифта, в тех же условиях, что и прежняя JS-функция:
77
+ *
78
+ * - `fontSize < 16` — компенсация во всех браузерах, кроме Chrome;
79
+ * - `fontSize === 16` — обратная компенсация в Chrome;
80
+ * - `fontSize === 18` — обратная компенсация в Chrome и Firefox;
81
+ * - иначе компенсации нет.
82
+ */
83
+ export var getBaselineCompensationVariant = function (fontSize) {
84
+ if (fontSize < 16) {
85
+ return 'lessThan16';
86
+ }
87
+ if (fontSize === 16) {
88
+ return 'exactly16';
89
+ }
90
+ if (fontSize === 18) {
91
+ return 'exactly18';
92
+ }
93
+ return 'none';
94
+ };
95
+ /**
96
+ * Слагаемое компенсации для `calc()` — вместе со знаком, готовое к подстановке.
97
+ */
98
+ export var baselineCompensation = function (variant, compensation) {
99
+ switch (variant) {
100
+ case 'lessThan16':
101
+ return " + (1 - ".concat(isChromeVar, ") * ").concat(compensation);
102
+ case 'exactly16':
103
+ return " - ".concat(isChromeVar, " * ").concat(compensation);
104
+ case 'exactly18':
105
+ // Chrome и Firefox взаимно исключают друг друга, поэтому сумма флагов даёт 0 или 1.
106
+ return " - (".concat(isChromeVar, " + ").concat(isFirefoxVar, ") * ").concat(compensation);
107
+ case 'none':
108
+ default:
109
+ return '';
110
+ }
111
+ };
112
+ /**
113
+ * Компенсация для Toggle: обратный сдвиг в Chrome при `fontSize <= 16`.
114
+ *
115
+ * Условие отличается от {@link getBaselineCompensationVariant}, поэтому вынесено
116
+ * отдельно, а не подогнано под общий случай. Ветвь здесь одна, поэтому вместо
117
+ * набора вариантов — предикат.
118
+ */
119
+ export var hasToggleBaselineCompensation = function (fontSize) { return fontSize <= 16; };
120
+ /** Слагаемое компенсации Toggle для `calc()`, вместе со знаком. */
121
+ export var toggleBaselineCompensation = function (compensation) { return " - ".concat(isChromeVar, " * ").concat(compensation); };
122
+ //# sourceMappingURL=baselineCompensation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baselineCompensation.js","sourceRoot":"","sources":["baselineCompensation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD;;;;;;;;;;;;GAYG;AAEH,IAAM,aAAa,GAAG,sBAAsB,CAAC;AAC7C,IAAM,cAAc,GAAG,uBAAuB,CAAC;AAE/C;;;;GAIG;AACH,IAAM,WAAW,GAAG,cAAO,aAAa,SAAM,CAAC;AAC/C,IAAM,YAAY,GAAG,cAAO,cAAc,SAAM,CAAC;AAEjD;;;;;;;;;GASG;AACH,MAAM,CAAC,IAAM,gCAAgC,GAAG,sDAAsD,CAAC;AAEvG;;;GAGG;AACH,IAAM,OAAO,GAAG,IAAI,OAAO,EAAY,CAAC;AAExC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,IAAM,8BAA8B,GAAG,UAAC,YAA0B;;IACvE,IAAM,aAAa,GAAG,MAAA,YAAY,CAAC,QAAQ,mCAAI,aAAa,EAAE,CAAC,QAAQ,CAAC;IAExE,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAEnB,IAAA,KAAK,GAAK,aAAa,CAAC,eAAe,MAAlC,CAAmC;IAChD,KAAK,CAAC,WAAW,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACvD,KAAK,CAAC,WAAW,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC3D,CAAC,CAAC;AAUF;;;;;;;GAOG;AACH,MAAM,CAAC,IAAM,8BAA8B,GAAG,UAAC,QAAgB;IAC7D,IAAI,QAAQ,GAAG,EAAE,EAAE,CAAC;QAClB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;QACpB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;QACpB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,IAAM,oBAAoB,GAAG,UAAC,OAAoC,EAAE,YAAoB;IAC7F,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,YAAY;YACf,OAAO,kBAAW,WAAW,iBAAO,YAAY,CAAE,CAAC;QACrD,KAAK,WAAW;YACd,OAAO,aAAM,WAAW,gBAAM,YAAY,CAAE,CAAC;QAC/C,KAAK,WAAW;YACd,oFAAoF;YACpF,OAAO,cAAO,WAAW,gBAAM,YAAY,iBAAO,YAAY,CAAE,CAAC;QACnE,KAAK,MAAM,CAAC;QACZ;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,IAAM,6BAA6B,GAAG,UAAC,QAAgB,IAAc,OAAA,QAAQ,IAAI,EAAE,EAAd,CAAc,CAAC;AAE3F,mEAAmE;AACnE,MAAM,CAAC,IAAM,0BAA0B,GAAG,UAAC,YAAoB,IAAa,OAAA,aAAM,WAAW,gBAAM,YAAY,CAAE,EAArC,CAAqC,CAAC","sourcesContent":["import { isChrome, isFirefox } from '../client.js';\nimport { getSafeWindow } from '../globalObject.js';\nimport type { GlobalObject } from '../globalObject.js';\n\n/**\n * Компенсация базовой линии шрифта LabGrotesque — сдвиг на ±1px, свой у каждого\n * браузера.\n *\n * Раньше значение вычислялось в JS и подставлялось в стили числом. Из-за этого\n * стили Checkbox, Radio и Toggle отличались на сервере и в браузере: на сервере\n * нет `navigator.userAgent`, поэтому в `margin-top: calc(...)` попадало другое\n * число. Разные стили — разный хеш — разный класснейм — расхождение на гидрации.\n *\n * Теперь в стили попадает выражение с CSS-переменными, одинаковое везде, а сами\n * переменные объявляются один раз глобально. Класснейм больше не зависит от\n * браузера, а результат в каждом реальном браузере остаётся прежним.\n */\n\nconst IS_CHROME_VAR = '--react-ui-is-chrome';\nconst IS_FIREFOX_VAR = '--react-ui-is-firefox';\n\n/**\n * Значение по умолчанию — 0, то есть «ни Chrome, ни Firefox».\n *\n * На сервере переменные не объявляются вовсе, и подставляется этот фолбэк.\n */\nconst isChromeVar = `var(${IS_CHROME_VAR}, 0)`;\nconst isFirefoxVar = `var(${IS_FIREFOX_VAR}, 0)`;\n\n/**\n * Величина компенсации — токен темы `labGrotesqueBaselineCompensation`. Он\n * безразмерный (`'1'`), поэтому размерность даёт множитель `1px`: произведение\n * `число * число * длина` внутри `calc()` валидно, как и вложение результата во\n * внешний `calc()` с якорем — `calc(var(--kontur-checkboxBoxOffsetY) + …)`.\n *\n * Раньше значение читалось из темы в JS через `parseInt`, и дробный оверрайд\n * (например `'1.5'`) молча обрезался до 1. Со ссылкой на переменную он работает\n * как задан в теме.\n */\nexport const labGrotesqueBaselineCompensation = `var(--kontur-labGrotesqueBaselineCompensation) * 1px`;\n\n/**\n * Инстансы, для которых флаги уже поставлены — вызывать за один рендер могут\n * десятки компонентов, а `setProperty` на каждый был бы чистым расточительством.\n */\nconst flagged = new WeakSet<Document>();\n\n/**\n * Объявляет флаги браузера как CSS-переменные. Зовётся из `CommonWrapper` —\n * централизованно для всех компонентов, а не из `getStyles` конкретных: после\n * перевода `Checkbox`/`Radio`/`Toggle` на `staticStyles()` их фабрика больше не\n * выполняется вовсе, а флаги нужны раньше и независимо от того, какие\n * компоненты на странице фактически есть.\n *\n * Значения ставятся на корневой элемент через CSSOM, а не правилом `:root`\n * через Emotion. Причина не в удобстве: правило потребовало бы тега `<style>`,\n * то есть nonce — и это единственное, что осталось бы требовать его на\n * странице, где весь остальной CSS приезжает файлом. `setProperty` не создаёт\n * ни правила, ни тега, и `style-src` его не касается: директива смотрит на\n * разбор разметки и на `setAttribute`, а не на объектную модель.\n *\n * Документ берётся из окружения рендера: компонент может жить в iframe, и флаги\n * обязаны оказаться в том же документе, что и правила, которые их читают.\n *\n * На сервере не делает ничего: там браузер неизвестен, и объявить переменные\n * значило бы зафиксировать неправильные значения в разметке.\n */\nexport const injectBaselineCompensationVars = (globalObject: GlobalObject): void => {\n const ownerDocument = globalObject.document ?? getSafeWindow().document;\n\n if (!ownerDocument) {\n return;\n }\n\n if (flagged.has(ownerDocument)) {\n return;\n }\n\n flagged.add(ownerDocument);\n\n const { style } = ownerDocument.documentElement;\n style.setProperty(IS_CHROME_VAR, isChrome ? '1' : '0');\n style.setProperty(IS_FIREFOX_VAR, isFirefox ? '1' : '0');\n};\n\n/**\n * Ветвь компенсации. Ветвление немонотонное — на 17px компенсации нет вовсе, —\n * и в `calc()` не выражается, поэтому размер шрифта остаётся значением темы, а\n * решение принимает JS. В текст класса размер шрифта не попадает: по ветви\n * выбирается один из готовых статических классов.\n */\nexport type BaselineCompensationVariant = 'lessThan16' | 'exactly16' | 'exactly18' | 'none';\n\n/**\n * Выбор ветви по размеру шрифта, в тех же условиях, что и прежняя JS-функция:\n *\n * - `fontSize < 16` — компенсация во всех браузерах, кроме Chrome;\n * - `fontSize === 16` — обратная компенсация в Chrome;\n * - `fontSize === 18` — обратная компенсация в Chrome и Firefox;\n * - иначе компенсации нет.\n */\nexport const getBaselineCompensationVariant = (fontSize: number): BaselineCompensationVariant => {\n if (fontSize < 16) {\n return 'lessThan16';\n }\n\n if (fontSize === 16) {\n return 'exactly16';\n }\n\n if (fontSize === 18) {\n return 'exactly18';\n }\n\n return 'none';\n};\n\n/**\n * Слагаемое компенсации для `calc()` — вместе со знаком, готовое к подстановке.\n */\nexport const baselineCompensation = (variant: BaselineCompensationVariant, compensation: string): string => {\n switch (variant) {\n case 'lessThan16':\n return ` + (1 - ${isChromeVar}) * ${compensation}`;\n case 'exactly16':\n return ` - ${isChromeVar} * ${compensation}`;\n case 'exactly18':\n // Chrome и Firefox взаимно исключают друг друга, поэтому сумма флагов даёт 0 или 1.\n return ` - (${isChromeVar} + ${isFirefoxVar}) * ${compensation}`;\n case 'none':\n default:\n return '';\n }\n};\n\n/**\n * Компенсация для Toggle: обратный сдвиг в Chrome при `fontSize <= 16`.\n *\n * Условие отличается от {@link getBaselineCompensationVariant}, поэтому вынесено\n * отдельно, а не подогнано под общий случай. Ветвь здесь одна, поэтому вместо\n * набора вариантов — предикат.\n */\nexport const hasToggleBaselineCompensation = (fontSize: number): boolean => fontSize <= 16;\n\n/** Слагаемое компенсации Toggle для `calc()`, вместе со знаком. */\nexport const toggleBaselineCompensation = (compensation: string): string => ` - ${isChromeVar} * ${compensation}`;\n"]}
@@ -1,15 +1,49 @@
1
- import type { Emotion } from '@emotion/css/create-instance';
2
- import type { Theme } from './Theme.js';
1
+ /**
2
+ * Что осталось от Emotion: склейка имён и префикс классов.
3
+ *
4
+ * Инстанса здесь больше нет. Он держался ради двух вещей — вставки правил и
5
+ * `cx`, — и первой не осталось: все стилевые модули отдают готовые имена
6
+ * классов, а правила приезжают файлом `react-ui.css`. От второй осталась чистая
7
+ * функция: ни кеша, ни тега `<style>`, ни контейнера ей не нужно.
8
+ *
9
+ * Тип `Emotion` импортируется только ради сигнатуры `cx` — чтобы у приложений,
10
+ * которые брали её из инстанса, тип не поменялся.
11
+ */
3
12
  export declare const REACT_UI_PREFIX: string;
4
- export declare const getEmotion: ({ key, container, nonce, }: {
5
- container: HTMLElement;
6
- key?: string;
7
- nonce?: string;
8
- }) => Emotion;
13
+ /** Аргумент `cx`: строка, число, массив таких же или словарь «класс → условие». */
14
+ type ClassNamesArg = string | number | boolean | null | undefined | ClassNamesArg[] | Record<string, unknown>;
15
+ /** Склейка имён классов: то, что осталось от `cx`. */
16
+ export type ClassNames = (...args: ClassNamesArg[]) => string;
17
+ /**
18
+ * Склейка имён вместо слияния зарегистрированных классов.
19
+ *
20
+ * `cx` из Emotion не склеивает имена, а сливает содержимое классов в один
21
+ * новый, чьё правило вставляется в рантайме. Сливать нечего: правила
22
+ * компонентов приезжают файлом, и слияние породило бы правило, которого в файле
23
+ * нет.
24
+ *
25
+ * Без слияния спор между правилами решает порядок в таблице стилей. Пока
26
+ * правила вставлял рантайм, этот порядок равнялся порядку первого вызова `css`:
27
+ * у `Button` размерный класс оказывался в таблице раньше `root`, и сброс кнопки
28
+ * (`padding: 0`) перебивал размер — снимок вычисленных стилей дал на этом 6452
29
+ * расхождения. В извлечённом файле порядок задаёт обход геттеров: `root`
30
+ * объявлен первым, модификаторы после, и каскад отрабатывает как надо.
31
+ */
32
+ export declare const concatClassNames: ClassNames;
33
+ /** Словарь классов компонента: имя геттера → имя класса. */
9
34
  export interface StylesObject {
10
- [className: string]: (() => string) | ((t: Theme) => string);
35
+ [key: string]: (...args: never[]) => string;
11
36
  }
12
- export type StylesGetter<S> = (emotion: Emotion) => S;
37
+ /**
38
+ * Фабрика словаря классов.
39
+ *
40
+ * Аргумент остался необязательным ради формы вызова: модули объявляют
41
+ * `staticStyles({...})`, а компоненты зовут `getStyles()`. Инстанс сюда больше
42
+ * не передаётся.
43
+ */
44
+ export type StylesGetter<S> = (ignored?: unknown) => S;
13
45
  export declare const memoizeStyle: <S extends StylesObject>(styles: S) => S;
14
46
  export declare const memoizeGetStyles: <S extends StylesObject>(getStyles: StylesGetter<S>) => StylesGetter<S>;
47
+ /** `prefix('button')({ root: 'root' })` -> `{ root: 'react-ui-button-root' }`. */
15
48
  export declare const prefix: (component: string, app?: string) => <T extends Record<string, string>>(classes: T) => T;
49
+ export {};
@@ -9,57 +9,92 @@ var __assign = (this && this.__assign) || function () {
9
9
  };
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
- import createEmotion from '@emotion/css/create-instance';
13
- import extraScopePlugin from 'stylis-plugin-extra-scope';
14
12
  import { Upgrade } from '../Upgrades.js';
13
+ /**
14
+ * Что осталось от Emotion: склейка имён и префикс классов.
15
+ *
16
+ * Инстанса здесь больше нет. Он держался ради двух вещей — вставки правил и
17
+ * `cx`, — и первой не осталось: все стилевые модули отдают готовые имена
18
+ * классов, а правила приезжают файлом `react-ui.css`. От второй осталась чистая
19
+ * функция: ни кеша, ни тега `<style>`, ни контейнера ей не нужно.
20
+ *
21
+ * Тип `Emotion` импортируется только ради сигнатуры `cx` — чтобы у приложений,
22
+ * которые брали её из инстанса, тип не поменялся.
23
+ */
15
24
  export var REACT_UI_PREFIX = Upgrade.getSpecificityClassName();
16
- var scope = new Array(Upgrade.getSpecificityLevel()).fill(".".concat(REACT_UI_PREFIX)).join('');
17
- export var getEmotion = function (_a) {
18
- var _b = _a.key, key = _b === void 0 ? REACT_UI_PREFIX : _b, container = _a.container, nonce = _a.nonce;
19
- return createEmotion({
20
- key: key,
21
- prepend: true,
22
- stylisPlugins: scope ? [extraScopePlugin(scope)] : undefined,
23
- container: container,
24
- nonce: nonce,
25
- });
25
+ /**
26
+ * Склейка имён вместо слияния зарегистрированных классов.
27
+ *
28
+ * `cx` из Emotion не склеивает имена, а сливает содержимое классов в один
29
+ * новый, чьё правило вставляется в рантайме. Сливать нечего: правила
30
+ * компонентов приезжают файлом, и слияние породило бы правило, которого в файле
31
+ * нет.
32
+ *
33
+ * Без слияния спор между правилами решает порядок в таблице стилей. Пока
34
+ * правила вставлял рантайм, этот порядок равнялся порядку первого вызова `css`:
35
+ * у `Button` размерный класс оказывался в таблице раньше `root`, и сброс кнопки
36
+ * (`padding: 0`) перебивал размер — снимок вычисленных стилей дал на этом 6452
37
+ * расхождения. В извлечённом файле порядок задаёт обход геттеров: `root`
38
+ * объявлен первым, модификаторы после, и каскад отрабатывает как надо.
39
+ */
40
+ export var concatClassNames = function () {
41
+ var args = [];
42
+ for (var _i = 0; _i < arguments.length; _i++) {
43
+ args[_i] = arguments[_i];
44
+ }
45
+ var names = [];
46
+ var push = function (arg) {
47
+ if (!arg) {
48
+ return;
49
+ }
50
+ if (typeof arg === 'string' || typeof arg === 'number') {
51
+ names.push(String(arg));
52
+ return;
53
+ }
54
+ if (Array.isArray(arg)) {
55
+ arg.forEach(push);
56
+ return;
57
+ }
58
+ for (var _i = 0, _a = Object.entries(arg); _i < _a.length; _i++) {
59
+ var _b = _a[_i], name_1 = _b[0], value = _b[1];
60
+ if (value) {
61
+ names.push(name_1);
62
+ }
63
+ }
64
+ };
65
+ args.forEach(push);
66
+ return names.join(' ');
26
67
  };
27
68
  function isZeroArgs(fn) {
28
69
  return fn.length === 0;
29
70
  }
30
71
  var memoize = function (fn) {
31
- if (isZeroArgs(fn)) {
32
- var isCalled_1 = false;
33
- var result_1;
34
- return function () {
35
- if (!isCalled_1) {
36
- isCalled_1 = true;
37
- result_1 = fn();
38
- }
39
- return result_1;
40
- };
41
- }
42
- var cache = new WeakMap();
72
+ var cache = new Map();
73
+ var noArgs = Symbol('no-args');
43
74
  return function (arg) {
44
- if (!cache.has(arg)) {
45
- cache.set(arg, fn(arg));
75
+ var key = arg !== null && arg !== void 0 ? arg : noArgs;
76
+ if (!cache.has(key)) {
77
+ cache.set(key, isZeroArgs(fn) ? fn() : fn(arg));
46
78
  }
47
- return cache.get(arg);
79
+ return cache.get(key);
48
80
  };
49
81
  };
50
82
  export var memoizeStyle = function (styles) {
51
- Object.keys(styles).forEach(function (className) { return (styles[className] = memoize(styles[className])); });
52
- return styles;
83
+ var result = {};
84
+ for (var _i = 0, _a = Object.keys(styles); _i < _a.length; _i++) {
85
+ var key = _a[_i];
86
+ result[key] = memoize(styles[key]);
87
+ }
88
+ return result;
53
89
  };
54
90
  export var memoizeGetStyles = function (getStyles) {
55
- var stylesCache = new WeakMap();
56
- return function (emotion) {
57
- if (!stylesCache.has(emotion)) {
58
- stylesCache.set(emotion, memoizeStyle(getStyles(emotion)));
59
- }
60
- return stylesCache.get(emotion);
91
+ var cached;
92
+ return function () {
93
+ cached !== null && cached !== void 0 ? cached : (cached = memoizeStyle(getStyles()));
94
+ return cached;
61
95
  };
62
96
  };
97
+ /** `prefix('button')({ root: 'root' })` -> `{ root: 'react-ui-button-root' }`. */
63
98
  export var prefix = function (component, app) {
64
99
  if (app === void 0) { app = REACT_UI_PREFIX; }
65
100
  return function (classes) {
@@ -1 +1 @@
1
- {"version":3,"file":"Emotion.js","sourceRoot":"","sources":["Emotion.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport createEmotion from '@emotion/css/create-instance';\nimport extraScopePlugin from 'stylis-plugin-extra-scope';\n\nimport { Upgrade } from '../Upgrades.js';\nimport type { AnyObject, FunctionWithParams } from '../utils.js';\nimport type { Theme } from './Theme.js';\n\nexport const REACT_UI_PREFIX = Upgrade.getSpecificityClassName();\n\nconst scope = new Array(Upgrade.getSpecificityLevel()).fill(`.${REACT_UI_PREFIX}`).join('');\n\nexport const getEmotion = ({\n key = REACT_UI_PREFIX,\n container,\n nonce,\n}: {\n container: HTMLElement;\n key?: string;\n nonce?: string;\n}): Emotion =>\n createEmotion({\n key,\n prepend: true,\n stylisPlugins: scope ? [extraScopePlugin(scope)] : undefined,\n container,\n nonce,\n });\n\nfunction isZeroArgs<R, T extends FunctionWithParams<R>>(fn: T | FunctionWithParams<R>): fn is () => R {\n return fn.length === 0;\n}\n\nconst memoize = <A extends AnyObject, R>(fn: (() => R) | ((arg: A) => R)): (() => R) | ((arg: A) => R) => {\n if (isZeroArgs(fn)) {\n let isCalled = false;\n let result: R;\n return () => {\n if (!isCalled) {\n isCalled = true;\n result = fn();\n }\n return result;\n };\n }\n\n const cache = new WeakMap();\n return (arg: A) => {\n if (!cache.has(arg)) {\n cache.set(arg, fn(arg));\n }\n\n return cache.get(arg);\n };\n};\n\nexport interface StylesObject {\n [className: string]: (() => string) | ((t: Theme) => string);\n}\n\nexport type StylesGetter<S> = (emotion: Emotion) => S;\n\nexport const memoizeStyle = <S extends StylesObject>(styles: S): S => {\n Object.keys(styles).forEach((className) => (styles[className as keyof S] = memoize(styles[className]) as S[keyof S]));\n return styles;\n};\n\nexport const memoizeGetStyles = <S extends StylesObject>(getStyles: StylesGetter<S>): StylesGetter<S> => {\n const stylesCache = new WeakMap<Emotion, S>();\n return (emotion: Emotion): S => {\n if (!stylesCache.has(emotion)) {\n stylesCache.set(emotion, memoizeStyle(getStyles(emotion)));\n }\n\n return stylesCache.get(emotion) as S;\n };\n};\n\nexport const prefix =\n (component: string, app = REACT_UI_PREFIX) =>\n <T extends Record<string, string>>(classes: T): T =>\n Object.keys(classes).reduce((acc, key) => {\n return { ...acc, [key]: `${app}-${component}-${classes[key]}` };\n }, {} as T);\n"]}
1
+ {"version":3,"file":"Emotion.js","sourceRoot":"","sources":["Emotion.ts"],"names":[],"mappings":"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","sourcesContent":["import { Upgrade } from '../Upgrades.js';\nimport type { AnyObject, FunctionWithParams } from '../utils.js';\n\n/**\n * Что осталось от Emotion: склейка имён и префикс классов.\n *\n * Инстанса здесь больше нет. Он держался ради двух вещей — вставки правил и\n * `cx`, — и первой не осталось: все стилевые модули отдают готовые имена\n * классов, а правила приезжают файлом `react-ui.css`. От второй осталась чистая\n * функция: ни кеша, ни тега `<style>`, ни контейнера ей не нужно.\n *\n * Тип `Emotion` импортируется только ради сигнатуры `cx` — чтобы у приложений,\n * которые брали её из инстанса, тип не поменялся.\n */\nexport const REACT_UI_PREFIX = Upgrade.getSpecificityClassName();\n\n/** Аргумент `cx`: строка, число, массив таких же или словарь «класс → условие». */\ntype ClassNamesArg = string | number | boolean | null | undefined | ClassNamesArg[] | Record<string, unknown>;\n\n/** Склейка имён классов: то, что осталось от `cx`. */\nexport type ClassNames = (...args: ClassNamesArg[]) => string;\n\n/**\n * Склейка имён вместо слияния зарегистрированных классов.\n *\n * `cx` из Emotion не склеивает имена, а сливает содержимое классов в один\n * новый, чьё правило вставляется в рантайме. Сливать нечего: правила\n * компонентов приезжают файлом, и слияние породило бы правило, которого в файле\n * нет.\n *\n * Без слияния спор между правилами решает порядок в таблице стилей. Пока\n * правила вставлял рантайм, этот порядок равнялся порядку первого вызова `css`:\n * у `Button` размерный класс оказывался в таблице раньше `root`, и сброс кнопки\n * (`padding: 0`) перебивал размер — снимок вычисленных стилей дал на этом 6452\n * расхождения. В извлечённом файле порядок задаёт обход геттеров: `root`\n * объявлен первым, модификаторы после, и каскад отрабатывает как надо.\n */\nexport const concatClassNames: ClassNames = (...args: ClassNamesArg[]) => {\n const names: string[] = [];\n\n const push = (arg: ClassNamesArg) => {\n if (!arg) {\n return;\n }\n if (typeof arg === 'string' || typeof arg === 'number') {\n names.push(String(arg));\n return;\n }\n if (Array.isArray(arg)) {\n arg.forEach(push);\n return;\n }\n for (const [name, value] of Object.entries(arg)) {\n if (value) {\n names.push(name);\n }\n }\n };\n\n args.forEach(push);\n\n return names.join(' ');\n};\n\nfunction isZeroArgs<R, T extends FunctionWithParams<R>>(fn: T | FunctionWithParams<R>): fn is () => R {\n return fn.length === 0;\n}\n\nconst memoize = <A extends AnyObject, R>(fn: (() => R) | ((arg: A) => R)): (() => R) | ((arg: A) => R) => {\n const cache = new Map<A | symbol, R>();\n const noArgs = Symbol('no-args');\n\n return (arg?: A) => {\n const key = arg ?? noArgs;\n if (!cache.has(key)) {\n cache.set(key, isZeroArgs(fn) ? fn() : (fn as (value: A) => R)(arg as A));\n }\n\n return cache.get(key) as R;\n };\n};\n\n/** Словарь классов компонента: имя геттера → имя класса. */\nexport interface StylesObject {\n [key: string]: (...args: never[]) => string;\n}\n\n/**\n * Фабрика словаря классов.\n *\n * Аргумент остался необязательным ради формы вызова: модули объявляют\n * `staticStyles({...})`, а компоненты зовут `getStyles()`. Инстанс сюда больше\n * не передаётся.\n */\nexport type StylesGetter<S> = (ignored?: unknown) => S;\n\nexport const memoizeStyle = <S extends StylesObject>(styles: S): S => {\n const result = {} as S;\n\n for (const key of Object.keys(styles) as Array<keyof S>) {\n result[key] = memoize(styles[key] as never) as S[keyof S];\n }\n\n return result;\n};\n\nexport const memoizeGetStyles = <S extends StylesObject>(getStyles: StylesGetter<S>): StylesGetter<S> => {\n let cached: S | undefined;\n\n return () => {\n cached ??= memoizeStyle(getStyles());\n\n return cached;\n };\n};\n\n/** `prefix('button')({ root: 'root' })` -> `{ root: 'react-ui-button-root' }`. */\nexport const prefix =\n (component: string, app = REACT_UI_PREFIX) =>\n <T extends Record<string, string>>(classes: T): T =>\n Object.keys(classes).reduce((acc, key) => {\n return { ...acc, [key]: `${app}-${component}-${classes[key]}` };\n }, {} as T);\n"]}
@@ -0,0 +1,43 @@
1
+ import React from 'react';
2
+ import type { ThemeCssVars } from './themeCssVarsClass.js';
3
+ /**
4
+ * Какая тема уже объявлена в DOM над этим узлом.
5
+ *
6
+ * Зачем. Блок объявлений `--kontur-*` печатался на корне КАЖДОГО компонента, и
7
+ * это закрывало половину обещания темизации: объявление на самом элементе всегда
8
+ * сильнее унаследованного, поэтому `:root { --kontur-btnDefaultBg: … }` от
9
+ * приложения до компонента не доходило — его экранировал собственный блок
10
+ * компонента (раздел 8.3 дизайн-документа). Носитель нужен ровно там, где тема
11
+ * СМЕНИЛАСЬ, а не на каждом узле.
12
+ *
13
+ * Значение — ПОДПИСЬ носителя, а не объект темы. Сравнивать темы по identity
14
+ * нельзя: декораторы Storybook делают `ThemeFactory.create(theme, storybookTheme)`
15
+ * на каждый рендер, объект каждый раз новый, а значения те же — и экономии не
16
+ * было бы вовсе. Подпись включает инлайн-дельту, потому что дельта — такая же
17
+ * часть того, что действует на узле, как и класс.
18
+ *
19
+ * `null` значит «выше не объявлено ничего»: тогда носитель печатается, как
20
+ * печатался раньше. Это и есть значение по умолчанию, и оно намеренно НЕ равно
21
+ * «светлая тема»: пока жив рантайм-режим, на `:root` не объявлено ничего, и
22
+ * умолчание «светлая» оставило бы страницу без переменных вовсе. Приложение
23
+ * сообщает корневую тему пропом `rootTheme`, когда подключило файл темы.
24
+ */
25
+ export declare const themeCarrierSignature: (vars: ThemeCssVars) => string;
26
+ /**
27
+ * Носитель, объявленный выше по DOM. Публикуют его те, кто его печатает.
28
+ */
29
+ export declare const DeclaredThemeContext: React.Context<string | null>;
30
+ /**
31
+ * Носитель, объявленный на корне документа.
32
+ *
33
+ * Отдельный контекст, и его никто не переопределяет: он нужен порталам.
34
+ * Портальное поддерево живёт в контейнере у `body`, то есть вне того места DOM,
35
+ * где стоял носитель предка, — значит внутри портала действует КОРНЕВАЯ тема, и
36
+ * значение надо не перенести, а сбросить к корневому.
37
+ *
38
+ * Через React, а не через атрибуты DOM: образец из `colors`
39
+ * (`applyKonturColorsAttributes`) работает в `componentDidMount`, то есть кадром
40
+ * позже — это мигание, — не умеет переносить инлайн-дельту и не существует на
41
+ * сервере. У `colors` нет React-контекста, у нас есть.
42
+ */
43
+ export declare const RootDeclaredThemeContext: React.Context<string | null>;
@@ -0,0 +1,56 @@
1
+ import React from 'react';
2
+ /**
3
+ * Какая тема уже объявлена в DOM над этим узлом.
4
+ *
5
+ * Зачем. Блок объявлений `--kontur-*` печатался на корне КАЖДОГО компонента, и
6
+ * это закрывало половину обещания темизации: объявление на самом элементе всегда
7
+ * сильнее унаследованного, поэтому `:root { --kontur-btnDefaultBg: … }` от
8
+ * приложения до компонента не доходило — его экранировал собственный блок
9
+ * компонента (раздел 8.3 дизайн-документа). Носитель нужен ровно там, где тема
10
+ * СМЕНИЛАСЬ, а не на каждом узле.
11
+ *
12
+ * Значение — ПОДПИСЬ носителя, а не объект темы. Сравнивать темы по identity
13
+ * нельзя: декораторы Storybook делают `ThemeFactory.create(theme, storybookTheme)`
14
+ * на каждый рендер, объект каждый раз новый, а значения те же — и экономии не
15
+ * было бы вовсе. Подпись включает инлайн-дельту, потому что дельта — такая же
16
+ * часть того, что действует на узле, как и класс.
17
+ *
18
+ * `null` значит «выше не объявлено ничего»: тогда носитель печатается, как
19
+ * печатался раньше. Это и есть значение по умолчанию, и оно намеренно НЕ равно
20
+ * «светлая тема»: пока жив рантайм-режим, на `:root` не объявлено ничего, и
21
+ * умолчание «светлая» оставило бы страницу без переменных вовсе. Приложение
22
+ * сообщает корневую тему пропом `rootTheme`, когда подключило файл темы.
23
+ */
24
+ export var themeCarrierSignature = function (vars) {
25
+ var style = vars.style;
26
+ if (!style) {
27
+ return vars.className;
28
+ }
29
+ // Ключи сортируются: порядок объявлений в дельте на результат не влияет, а
30
+ // подпись от него зависеть не должна — иначе один и тот же носитель считался
31
+ // бы разным.
32
+ var declarations = Object.keys(style)
33
+ .sort()
34
+ .map(function (name) { return "".concat(name, ":").concat(style[name]); })
35
+ .join(';');
36
+ return "".concat(vars.className, "|").concat(declarations);
37
+ };
38
+ /**
39
+ * Носитель, объявленный выше по DOM. Публикуют его те, кто его печатает.
40
+ */
41
+ export var DeclaredThemeContext = React.createContext(null);
42
+ /**
43
+ * Носитель, объявленный на корне документа.
44
+ *
45
+ * Отдельный контекст, и его никто не переопределяет: он нужен порталам.
46
+ * Портальное поддерево живёт в контейнере у `body`, то есть вне того места DOM,
47
+ * где стоял носитель предка, — значит внутри портала действует КОРНЕВАЯ тема, и
48
+ * значение надо не перенести, а сбросить к корневому.
49
+ *
50
+ * Через React, а не через атрибуты DOM: образец из `colors`
51
+ * (`applyKonturColorsAttributes`) работает в `componentDidMount`, то есть кадром
52
+ * позже — это мигание, — не умеет переносить инлайн-дельту и не существует на
53
+ * сервере. У `colors` нет React-контекста, у нас есть.
54
+ */
55
+ export var RootDeclaredThemeContext = React.createContext(null);
56
+ //# sourceMappingURL=declaredTheme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"declaredTheme.js","sourceRoot":"","sources":["declaredTheme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,IAAM,qBAAqB,GAAG,UAAC,IAAkB;IACtD,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,2EAA2E;IAC3E,6EAA6E;IAC7E,aAAa;IACb,IAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;SACpC,IAAI,EAAE;SACN,GAAG,CAAC,UAAC,IAAI,IAAK,OAAA,UAAG,IAAI,cAAI,KAAK,CAAC,IAAI,CAAC,CAAE,EAAxB,CAAwB,CAAC;SACvC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,OAAO,UAAG,IAAI,CAAC,SAAS,cAAI,YAAY,CAAE,CAAC;AAC7C,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,IAAM,oBAAoB,GAAG,KAAK,CAAC,aAAa,CAAgB,IAAI,CAAC,CAAC;AAE7E;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,IAAM,wBAAwB,GAAG,KAAK,CAAC,aAAa,CAAgB,IAAI,CAAC,CAAC","sourcesContent":["import React from 'react';\n\nimport type { ThemeCssVars } from './themeCssVarsClass.js';\n\n/**\n * Какая тема уже объявлена в DOM над этим узлом.\n *\n * Зачем. Блок объявлений `--kontur-*` печатался на корне КАЖДОГО компонента, и\n * это закрывало половину обещания темизации: объявление на самом элементе всегда\n * сильнее унаследованного, поэтому `:root { --kontur-btnDefaultBg: … }` от\n * приложения до компонента не доходило — его экранировал собственный блок\n * компонента (раздел 8.3 дизайн-документа). Носитель нужен ровно там, где тема\n * СМЕНИЛАСЬ, а не на каждом узле.\n *\n * Значение — ПОДПИСЬ носителя, а не объект темы. Сравнивать темы по identity\n * нельзя: декораторы Storybook делают `ThemeFactory.create(theme, storybookTheme)`\n * на каждый рендер, объект каждый раз новый, а значения те же — и экономии не\n * было бы вовсе. Подпись включает инлайн-дельту, потому что дельта — такая же\n * часть того, что действует на узле, как и класс.\n *\n * `null` значит «выше не объявлено ничего»: тогда носитель печатается, как\n * печатался раньше. Это и есть значение по умолчанию, и оно намеренно НЕ равно\n * «светлая тема»: пока жив рантайм-режим, на `:root` не объявлено ничего, и\n * умолчание «светлая» оставило бы страницу без переменных вовсе. Приложение\n * сообщает корневую тему пропом `rootTheme`, когда подключило файл темы.\n */\nexport const themeCarrierSignature = (vars: ThemeCssVars): string => {\n const style = vars.style;\n if (!style) {\n return vars.className;\n }\n\n // Ключи сортируются: порядок объявлений в дельте на результат не влияет, а\n // подпись от него зависеть не должна — иначе один и тот же носитель считался\n // бы разным.\n const declarations = Object.keys(style)\n .sort()\n .map((name) => `${name}:${style[name]}`)\n .join(';');\n\n return `${vars.className}|${declarations}`;\n};\n\n/**\n * Носитель, объявленный выше по DOM. Публикуют его те, кто его печатает.\n */\nexport const DeclaredThemeContext = React.createContext<string | null>(null);\n\n/**\n * Носитель, объявленный на корне документа.\n *\n * Отдельный контекст, и его никто не переопределяет: он нужен порталам.\n * Портальное поддерево живёт в контейнере у `body`, то есть вне того места DOM,\n * где стоял носитель предка, — значит внутри портала действует КОРНЕВАЯ тема, и\n * значение надо не перенести, а сбросить к корневому.\n *\n * Через React, а не через атрибуты DOM: образец из `colors`\n * (`applyKonturColorsAttributes`) работает в `componentDidMount`, то есть кадром\n * позже — это мигание, — не умеет переносить инлайн-дельту и не существует на\n * сервере. У `colors` нет React-контекста, у нас есть.\n */\nexport const RootDeclaredThemeContext = React.createContext<string | null>(null);\n"]}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * MurmurHash2 — тот же хеш, что считал `@emotion/hash`.
3
+ *
4
+ * Вшит, а не взят пакетом, по одной причине: `@emotion/hash` в зависимостях
5
+ * выглядел бы как «Emotion не снят», хотя от него оставалась одна чистая
6
+ * функция без побочных эффектов. Инстанса Emotion в библиотеке больше нет
7
+ * (работа T10), и это последнее, что от него тянулось.
8
+ *
9
+ * Алгоритм менять НЕЛЬЗЯ, даже на «лучший». Имя класса-носителя темы считается
10
+ * от значений темы этой функцией, и то же имя вычисляет сборка
11
+ * (`scripts/extract-theme-css.mts`), печатая под ним правило в файл. Разойдись
12
+ * они — и разметка ссылалась бы на класс, которого в файле нет: страница без
13
+ * переменных, без единой ошибки в консоли. Совпадение держит гейт
14
+ * `__tests__/staticThemeVars.test.ts`.
15
+ *
16
+ * Портировано из https://github.com/aappleby/smhasher (MurmurHash2), через
17
+ * реализацию Emotion.
18
+ */
19
+ export declare function hashString(str: string): string;
@@ -0,0 +1,52 @@
1
+ /* eslint-disable no-bitwise */
2
+ /**
3
+ * MurmurHash2 — тот же хеш, что считал `@emotion/hash`.
4
+ *
5
+ * Вшит, а не взят пакетом, по одной причине: `@emotion/hash` в зависимостях
6
+ * выглядел бы как «Emotion не снят», хотя от него оставалась одна чистая
7
+ * функция без побочных эффектов. Инстанса Emotion в библиотеке больше нет
8
+ * (работа T10), и это последнее, что от него тянулось.
9
+ *
10
+ * Алгоритм менять НЕЛЬЗЯ, даже на «лучший». Имя класса-носителя темы считается
11
+ * от значений темы этой функцией, и то же имя вычисляет сборка
12
+ * (`scripts/extract-theme-css.mts`), печатая под ним правило в файл. Разойдись
13
+ * они — и разметка ссылалась бы на класс, которого в файле нет: страница без
14
+ * переменных, без единой ошибки в консоли. Совпадение держит гейт
15
+ * `__tests__/staticThemeVars.test.ts`.
16
+ *
17
+ * Портировано из https://github.com/aappleby/smhasher (MurmurHash2), через
18
+ * реализацию Emotion.
19
+ */
20
+ export function hashString(str) {
21
+ var h = 0;
22
+ var k;
23
+ var i = 0;
24
+ var len = str.length;
25
+ for (; len >= 4; ++i, len -= 4) {
26
+ k =
27
+ (str.charCodeAt(i) & 0xff) |
28
+ ((str.charCodeAt(++i) & 0xff) << 8) |
29
+ ((str.charCodeAt(++i) & 0xff) << 16) |
30
+ ((str.charCodeAt(++i) & 0xff) << 24);
31
+ k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0xe995) << 16);
32
+ k ^= k >>> 24;
33
+ h =
34
+ ((k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0xe995) << 16)) ^
35
+ ((h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0xe995) << 16));
36
+ }
37
+ switch (len) {
38
+ case 3:
39
+ h ^= (str.charCodeAt(i + 2) & 0xff) << 16;
40
+ // fallthrough
41
+ case 2:
42
+ h ^= (str.charCodeAt(i + 1) & 0xff) << 8;
43
+ // fallthrough
44
+ case 1:
45
+ h ^= str.charCodeAt(i) & 0xff;
46
+ h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0xe995) << 16);
47
+ }
48
+ h ^= h >>> 13;
49
+ h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0xe995) << 16);
50
+ return ((h ^ (h >>> 15)) >>> 0).toString(36);
51
+ }
52
+ //# sourceMappingURL=hashString.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hashString.js","sourceRoot":"","sources":["hashString.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAE/B;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,CAAC;IACN,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;IAErB,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAC/B,CAAC;YACC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBAC1B,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBACpC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACd,CAAC;YACC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,CAAC;YACJ,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5C,cAAc;QACd,KAAK,CAAC;YACJ,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,cAAc;QACd,KAAK,CAAC;YACJ,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC9B,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACd,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAE9D,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC/C,CAAC","sourcesContent":["/* eslint-disable no-bitwise */\n\n/**\n * MurmurHash2 — тот же хеш, что считал `@emotion/hash`.\n *\n * Вшит, а не взят пакетом, по одной причине: `@emotion/hash` в зависимостях\n * выглядел бы как «Emotion не снят», хотя от него оставалась одна чистая\n * функция без побочных эффектов. Инстанса Emotion в библиотеке больше нет\n * (работа T10), и это последнее, что от него тянулось.\n *\n * Алгоритм менять НЕЛЬЗЯ, даже на «лучший». Имя класса-носителя темы считается\n * от значений темы этой функцией, и то же имя вычисляет сборка\n * (`scripts/extract-theme-css.mts`), печатая под ним правило в файл. Разойдись\n * они — и разметка ссылалась бы на класс, которого в файле нет: страница без\n * переменных, без единой ошибки в консоли. Совпадение держит гейт\n * `__tests__/staticThemeVars.test.ts`.\n *\n * Портировано из https://github.com/aappleby/smhasher (MurmurHash2), через\n * реализацию Emotion.\n */\nexport function hashString(str: string): string {\n let h = 0;\n let k;\n let i = 0;\n let len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k =\n (str.charCodeAt(i) & 0xff) |\n ((str.charCodeAt(++i) & 0xff) << 8) |\n ((str.charCodeAt(++i) & 0xff) << 16) |\n ((str.charCodeAt(++i) & 0xff) << 24);\n k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0xe995) << 16);\n k ^= k >>> 24;\n h =\n ((k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0xe995) << 16)) ^\n ((h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0xe995) << 16));\n }\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n // fallthrough\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n // fallthrough\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0xe995) << 16);\n }\n\n h ^= h >>> 13;\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0xe995) << 16);\n\n return ((h ^ (h >>> 15)) >>> 0).toString(36);\n}\n"]}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Стилевой модуль, правила которого лежат обычным CSS-файлом.
3
+ *
4
+ * Такой модуль ничего не вставляет в рантайме и ничего не считает: он отдаёт
5
+ * готовые имена классов, а сами правила приезжают файлом рядом
6
+ * (`<Компонент>.css`), который сборка складывает в `react-ui.css`.
7
+ *
8
+ * Форма вызова оставлена прежней — `getStyles()` с игнорируемым
9
+ * аргументом, — чтобы компоненты не пришлось править вместе со стилями:
10
+ * миграция идёт по одному файлу, и каждый шаг должен быть проверяемым
11
+ * отдельно. Аргумент объявлен необязательным, поэтому арность функции нулевая,
12
+ * и извлечение статического CSS такой модуль пропускает — правил в нём нет.
13
+ */
14
+ export type StaticStyles<T extends Record<string, string>> = {
15
+ [K in keyof T]: () => string;
16
+ };
17
+ export declare const staticStyles: <T extends Record<string, string>>(classes: T) => ((ignored?: unknown) => StaticStyles<T>);
@@ -0,0 +1,8 @@
1
+ export var staticStyles = function (classes) {
2
+ var styles = Object.fromEntries(Object.entries(classes).map(function (_a) {
3
+ var name = _a[0], className = _a[1];
4
+ return [name, function () { return className; }];
5
+ }));
6
+ return function () { return styles; };
7
+ };
8
+ //# sourceMappingURL=staticStyles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"staticStyles.js","sourceRoot":"","sources":["staticStyles.ts"],"names":[],"mappings":"AAeA,MAAM,CAAC,IAAM,YAAY,GAAG,UAC1B,OAAU;IAEV,IAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAC/B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAC,EAAiB;YAAhB,IAAI,QAAA,EAAE,SAAS,QAAA;QAAM,OAAA,CAAC,IAAI,EAAE,cAAM,OAAA,SAAS,EAAT,CAAS,CAAC;IAAvB,CAAuB,CAAC,CACzD,CAAC;IAErB,OAAO,cAAM,OAAA,MAAM,EAAN,CAAM,CAAC;AACtB,CAAC,CAAC","sourcesContent":["/**\n * Стилевой модуль, правила которого лежат обычным CSS-файлом.\n *\n * Такой модуль ничего не вставляет в рантайме и ничего не считает: он отдаёт\n * готовые имена классов, а сами правила приезжают файлом рядом\n * (`<Компонент>.css`), который сборка складывает в `react-ui.css`.\n *\n * Форма вызова оставлена прежней — `getStyles()` с игнорируемым\n * аргументом, — чтобы компоненты не пришлось править вместе со стилями:\n * миграция идёт по одному файлу, и каждый шаг должен быть проверяемым\n * отдельно. Аргумент объявлен необязательным, поэтому арность функции нулевая,\n * и извлечение статического CSS такой модуль пропускает — правил в нём нет.\n */\nexport type StaticStyles<T extends Record<string, string>> = { [K in keyof T]: () => string };\n\nexport const staticStyles = <T extends Record<string, string>>(\n classes: T,\n): ((ignored?: unknown) => StaticStyles<T>) => {\n const styles = Object.fromEntries(\n Object.entries(classes).map(([name, className]) => [name, () => className]),\n ) as StaticStyles<T>;\n\n return () => styles;\n};\n"]}