@skbkontur/react-ui 6.4.1 → 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 +13 -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,861 @@
1
+ import { ThemeFactory } from './ThemeFactory.js';
2
+ import { REACT_UI_THEME_MARKERS, findPropertyDescriptor } from './ThemeHelpers.js';
3
+ /**
4
+ * Префикс всех CSS-переменных темы.
5
+ * Без префикса потребитель не отличит переменные react-ui от своих.
6
+ */
7
+ export var THEME_CSS_VAR_PREFIX = '--kontur-';
8
+ /**
9
+ * Имя CSS-переменной для переменной темы.
10
+ * Имя переменной темы не переименовывается в kebab-case, чтобы его можно было
11
+ * один в один сопоставить с документацией темы: `btnBgDefault` -> `--kontur-btnBgDefault`.
12
+ */
13
+ export function getThemeCssVarName(themeKey) {
14
+ return "".concat(THEME_CSS_VAR_PREFIX).concat(themeKey);
15
+ }
16
+ /** Служебные ключи-маркеры темы, которые не являются переменными. */
17
+ var MARKER_KEYS = Object.values(REACT_UI_THEME_MARKERS).map(function (marker) { return marker.key; });
18
+ /** Имя переменной темы, пригодное для использования в качестве имени CSS-переменной. */
19
+ var VALID_THEME_KEY = /^[A-Za-z_][A-Za-z0-9_-]*$/;
20
+ /** Геттер-проброска: `return this.bgDefault;` */
21
+ var PASSTHROUGH_GETTER = /^return\s+this\.([A-Za-z_$][A-Za-z0-9_$]*)\s*;?$/;
22
+ /**
23
+ * Геттер-шаблон: ``return `${this.a} solid ${this.b}`;``
24
+ *
25
+ * Пробел после `return` необязателен: перед кавычкой он не нужен, и минификатор
26
+ * его убирает — ``return`${this.a} solid ${this.b}` ``.
27
+ */
28
+ var TEMPLATE_GETTER = /^return\s*`([^`]*)`\s*;?$/;
29
+ /** Начало es5-вида шаблонного геттера: `return "" ...` или `return "литерал" ...` */
30
+ var CONCAT_HEAD = /^\s*return\s*"((?:[^"\\]|\\.)*)"/;
31
+ /** Интерполяция-ссылка на другую переменную темы: `this.linkFocusOutlineWidth` */
32
+ var THIS_REFERENCE = /^this\.([A-Za-z_$][A-Za-z0-9_$]*)$/;
33
+ var isRef = function (part) { return 'ref' in part; };
34
+ /**
35
+ * Точка с запятой завершает объявление и не может быть частью значения CSS-переменной.
36
+ * Хвостовые `;` в значениях темы (например, `selectBorderColorTransition`) отбрасываются,
37
+ * значения с `;` в середине объявить нельзя — такие переменные пропускаются.
38
+ */
39
+ function sanitizeValue(value) {
40
+ return value.replace(/[\s;]+$/, '');
41
+ }
42
+ /** Тело геттера в одну строку: `get x() { return this.y; }` -> `return this.y;` */
43
+ function getGetterBody(theme, themeKey) {
44
+ var descriptor = findPropertyDescriptor(theme, themeKey);
45
+ if (typeof descriptor.get !== 'function') {
46
+ return null;
47
+ }
48
+ var source = descriptor.get.toString();
49
+ var bodyStart = source.indexOf('{');
50
+ var bodyEnd = source.lastIndexOf('}');
51
+ if (bodyStart === -1 || bodyEnd <= bodyStart) {
52
+ return null;
53
+ }
54
+ // Комментарии снимаются ДО схлопывания пробелов, и это не косметика.
55
+ // Переносы строк схлопываются в пробел, и однострочный комментарий перед
56
+ // `return` съедал бы весь остаток тела — геттер разбирался бы как литерал, а
57
+ // его ссылки на другие токены теряли бы производность. В исходниках этого не
58
+ // видно: комментарии до `Function.prototype.toString()` там не доживают.
59
+ return stripComments(source.slice(bodyStart + 1, bodyEnd))
60
+ .trim()
61
+ .replace(/\s+/g, ' ');
62
+ }
63
+ /**
64
+ * Убирает комментарии из тела функции, не трогая строковые литералы.
65
+ *
66
+ * Регулярка тут не годится: `//` встречается внутри значений (протокол-
67
+ * относительный `url(//…)`), и вырезать её как комментарий значило бы испортить
68
+ * значение.
69
+ */
70
+ function stripComments(body) {
71
+ var _a;
72
+ var result = '';
73
+ var index = 0;
74
+ var quote = null;
75
+ while (index < body.length) {
76
+ var char = body[index];
77
+ if (quote) {
78
+ if (char === '\\') {
79
+ result += char + ((_a = body[index + 1]) !== null && _a !== void 0 ? _a : '');
80
+ index += 2;
81
+ continue;
82
+ }
83
+ if (char === quote) {
84
+ quote = null;
85
+ }
86
+ result += char;
87
+ index += 1;
88
+ continue;
89
+ }
90
+ if (char === '"' || char === "'" || char === '`') {
91
+ quote = char;
92
+ result += char;
93
+ index += 1;
94
+ continue;
95
+ }
96
+ if (char === '/' && body[index + 1] === '/') {
97
+ var lineEnd = body.indexOf('\n', index);
98
+ index = lineEnd === -1 ? body.length : lineEnd;
99
+ // Перенос строки остаётся: без него `return` слипся бы с предыдущей строкой.
100
+ continue;
101
+ }
102
+ if (char === '/' && body[index + 1] === '*') {
103
+ var commentEnd = body.indexOf('*/', index + 2);
104
+ index = commentEnd === -1 ? body.length : commentEnd + 2;
105
+ result += ' ';
106
+ continue;
107
+ }
108
+ result += char;
109
+ index += 1;
110
+ }
111
+ return result;
112
+ }
113
+ /**
114
+ * Разбирает исходник шаблонного литерала на литералы и ссылки.
115
+ * Возвращает null, если хотя бы одна интерполяция — не простая ссылка `this.<переменная>`
116
+ * (например, `${parseInt(this.menuOffsetY) - 1}`) или в литерале есть эскейп-последовательность.
117
+ */
118
+ function parseTemplateParts(template) {
119
+ var parts = [];
120
+ var literal = '';
121
+ var index = 0;
122
+ while (index < template.length) {
123
+ if (template[index] === '\\') {
124
+ // Эскейпы (`\n`, `\${`) не переносятся в CSS как есть — отдаём значение литералом.
125
+ return null;
126
+ }
127
+ if (template[index] !== '$' || template[index + 1] !== '{') {
128
+ literal += template[index];
129
+ index += 1;
130
+ continue;
131
+ }
132
+ var depth = 1;
133
+ var expression = '';
134
+ index += 2;
135
+ while (index < template.length && depth > 0) {
136
+ if (template[index] === '{') {
137
+ depth += 1;
138
+ }
139
+ else if (template[index] === '}') {
140
+ depth -= 1;
141
+ if (depth === 0) {
142
+ break;
143
+ }
144
+ }
145
+ expression += template[index];
146
+ index += 1;
147
+ }
148
+ if (depth !== 0) {
149
+ return null;
150
+ }
151
+ index += 1;
152
+ var reference = expression.trim().match(THIS_REFERENCE);
153
+ if (!reference) {
154
+ return null;
155
+ }
156
+ parts.push({ literal: literal });
157
+ parts.push({ ref: reference[1] });
158
+ literal = '';
159
+ }
160
+ parts.push({ literal: literal });
161
+ return parts;
162
+ }
163
+ /**
164
+ * Раскладывает значение переменной темы на куски.
165
+ * Проброски и шаблоны из ссылок становятся ссылками, всё остальное — литералом
166
+ * с уже вычисленным значением.
167
+ */
168
+ function getValueParts(theme, themeKey, value) {
169
+ var literalOnly = [{ literal: value }];
170
+ var body = getGetterBody(theme, themeKey);
171
+ if (body === null) {
172
+ return literalOnly;
173
+ }
174
+ var passthrough = body.match(PASSTHROUGH_GETTER);
175
+ if (passthrough) {
176
+ return [{ ref: passthrough[1] }];
177
+ }
178
+ var template = body.match(TEMPLATE_GETTER);
179
+ if (template) {
180
+ return parseTemplateParts(template[1]) || literalOnly;
181
+ }
182
+ return parseConcatParts(body) || literalOnly;
183
+ }
184
+ /**
185
+ * Тот же шаблон, но после компиляции в es5.
186
+ *
187
+ * Пакет собирается с `target: "es5"` (см. корневой tsconfig), а
188
+ * `Function.prototype.toString()` отдаёт то, что реально выполняется. Шаблонный
189
+ * литерал к этому моменту уже превращён в цепочку `concat`:
190
+ *
191
+ * return "".concat(this.a, " solid ").concat(this.b);
192
+ *
193
+ * Без разбора этой формы 14 ссылок деградировали бы в литералы именно в
194
+ * опубликованном пакете — то есть в исходниках производность есть, а у
195
+ * потребителя нет.
196
+ */
197
+ function parseConcatParts(body) {
198
+ var head = body.match(CONCAT_HEAD);
199
+ if (!head) {
200
+ return null;
201
+ }
202
+ var parts = [];
203
+ if (head[1]) {
204
+ parts.push({ literal: head[1] });
205
+ }
206
+ var index = head[0].length;
207
+ while (index < body.length) {
208
+ if (body.startsWith(';', index) || body[index] === undefined || /^\s*$/.test(body.slice(index))) {
209
+ break;
210
+ }
211
+ if (!body.startsWith('.concat(', index)) {
212
+ return null;
213
+ }
214
+ index += '.concat('.length;
215
+ // Скобки и кавычки считаем честно: в значениях темы встречаются и
216
+ // `cubic-bezier(0.5, 1, 0.89, 1)`, и `rgba(0, 0, 0, .16)` — регулярка на
217
+ // `[^)]*` обрывалась бы на первой внутренней скобке.
218
+ var argsStart = index;
219
+ var depth = 1;
220
+ var quote = null;
221
+ while (index < body.length && depth > 0) {
222
+ var char = body[index];
223
+ if (quote) {
224
+ if (char === '\\') {
225
+ index += 1;
226
+ }
227
+ else if (char === quote) {
228
+ quote = null;
229
+ }
230
+ }
231
+ else if (char === '"' || char === "'") {
232
+ quote = char;
233
+ }
234
+ else if (char === '(') {
235
+ depth += 1;
236
+ }
237
+ else if (char === ')') {
238
+ depth -= 1;
239
+ if (depth === 0) {
240
+ break;
241
+ }
242
+ }
243
+ index += 1;
244
+ }
245
+ if (depth !== 0) {
246
+ return null;
247
+ }
248
+ var args = splitConcatArgs(body.slice(argsStart, index));
249
+ index += 1;
250
+ if (!args) {
251
+ return null;
252
+ }
253
+ for (var _i = 0, args_1 = args; _i < args_1.length; _i++) {
254
+ var arg = args_1[_i];
255
+ var reference = arg.match(THIS_REFERENCE);
256
+ if (reference) {
257
+ parts.push({ ref: reference[1] });
258
+ continue;
259
+ }
260
+ var quoted = arg.match(/^(["'])((?:[^\\]|\\.)*?)\1$/);
261
+ if (!quoted || quoted[2].includes('\\')) {
262
+ // Не строковый литерал или эскейп — в CSS переносить нельзя.
263
+ return null;
264
+ }
265
+ parts.push({ literal: quoted[2] });
266
+ }
267
+ }
268
+ return parts.length ? parts : null;
269
+ }
270
+ /** Делит аргументы `concat` по запятым верхнего уровня, не ломая строки с запятой внутри. */
271
+ function splitConcatArgs(source) {
272
+ var _a;
273
+ var args = [];
274
+ var current = '';
275
+ var quote = null;
276
+ for (var index = 0; index < source.length; index++) {
277
+ var char = source[index];
278
+ if (quote) {
279
+ current += char;
280
+ if (char === '\\') {
281
+ current += (_a = source[++index]) !== null && _a !== void 0 ? _a : '';
282
+ }
283
+ else if (char === quote) {
284
+ quote = null;
285
+ }
286
+ continue;
287
+ }
288
+ if (char === '"' || char === "'") {
289
+ quote = char;
290
+ current += char;
291
+ continue;
292
+ }
293
+ if (char === ',') {
294
+ args.push(current.trim());
295
+ current = '';
296
+ continue;
297
+ }
298
+ current += char;
299
+ }
300
+ args.push(current.trim());
301
+ if (quote) {
302
+ return null;
303
+ }
304
+ return args.filter(Boolean);
305
+ }
306
+ /**
307
+ * Начало объявления локальных переменных арифметического геттера.
308
+ * `var` — тот же `const` после сборки в es5.
309
+ */
310
+ var CALC_LOCAL_KEYWORD = /^(?:const|var)\s+/;
311
+ /** Один декларатор объявления: `borderWidth = parseInt(this.btnBorderWidth, 10) || 0`. */
312
+ var CALC_LOCAL_DECLARATOR = /^\s*([A-Za-z_$][A-Za-z0-9_$]*)\s*=\s*/;
313
+ /** ``return `${...}px`;`` и ``return `-${...}px`;`` — минус перед интерполяцией даёт отрицательный отступ. */
314
+ var CALC_RETURN_STATEMENT = /^return\s*`(-?)\$\{(.+)\}px`\s*;?$/;
315
+ /**
316
+ * Тот же `return` после сборки в es5: `Function.prototype.toString()` отдаёт
317
+ * то, что реально выполняется, а при `target: es5` TypeScript превращает
318
+ * шаблонный литерал в `"".concat(...)`.
319
+ */
320
+ var CALC_RETURN_STATEMENT_ES5 = /^return\s*"(-?)"\.concat\((.+),\s*"px"\)\s*;?$/;
321
+ /** Значение переменной, которое `parseInt` читает без потерь: целое число пикселей. */
322
+ var INTEGER_PX_VALUE = /^-?\d+px$/;
323
+ /** Значение, с которым сравнивается результат вычисления выражения. */
324
+ var PX_VALUE = /^-?\d+(?:\.\d+)?px$/;
325
+ /**
326
+ * Число, идентификатор, `||` или одиночный знак; последняя альтернатива ловит
327
+ * всё непонятное по одному символу, чтобы такое выражение отсеялось целиком.
328
+ */
329
+ var CALC_TOKEN = /\d+(?:\.\d+)?|[A-Za-z_$][A-Za-z0-9_$]*|\|\||[()+\-*/,.]|\S/g;
330
+ /** Токен из числа поддержанных. */
331
+ var CALC_VALID_TOKEN = /^(?:\d+(?:\.\d+)?|[A-Za-z_$][A-Za-z0-9_$]*|\|\||[()+\-*/,.])$/;
332
+ var CALC_PRECEDENCE = { '+': 1, '-': 1, '*': 2, '/': 2 };
333
+ /** Приоритет атома выше любого оператора: атом никогда не берётся в скобки. */
334
+ var CALC_ATOM_PRECEDENCE = 3;
335
+ function tokenizeCalc(source) {
336
+ var tokens = source.match(CALC_TOKEN);
337
+ if (tokens === null) {
338
+ return null;
339
+ }
340
+ return tokens.every(function (token) { return CALC_VALID_TOKEN.test(token); }) ? tokens : null;
341
+ }
342
+ /**
343
+ * Разбирает арифметическое выражение из исходника геттера.
344
+ *
345
+ * Локальные `const` подставляются в место использования: в CSS переменных для них нет,
346
+ * а выражение всё равно уходит в одну строку.
347
+ *
348
+ * @param source Исходник выражения
349
+ * @param locals Уже разобранные локальные переменные геттера
350
+ * @returns Дерево выражения или null, если встретилось что-то неподдержанное
351
+ */
352
+ function parseCalcExpression(source, locals) {
353
+ var tokens = tokenizeCalc(source.trim());
354
+ if (tokens === null) {
355
+ return null;
356
+ }
357
+ var position = 0;
358
+ var peek = function () { return tokens[position]; };
359
+ var eat = function (expected) {
360
+ if (tokens[position] !== expected) {
361
+ return false;
362
+ }
363
+ position += 1;
364
+ return true;
365
+ };
366
+ /** `parseInt(this.X)` и `parseInt(this.X, 10)` — единственная форма чтения переменной темы. */
367
+ var parseParseIntCall = function () {
368
+ if (!eat('(') || !eat('this') || !eat('.')) {
369
+ return null;
370
+ }
371
+ var themeKey = peek();
372
+ if (themeKey === undefined || !/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(themeKey)) {
373
+ return null;
374
+ }
375
+ position += 1;
376
+ if (eat(',') && !eat('10')) {
377
+ // Другое основание системы счисления меняет смысл: не переносим.
378
+ return null;
379
+ }
380
+ if (!eat(')')) {
381
+ return null;
382
+ }
383
+ return { kind: 'ref', themeKey: themeKey };
384
+ };
385
+ var parseAtom = function () {
386
+ var _a;
387
+ var token = peek();
388
+ if (token === undefined) {
389
+ return null;
390
+ }
391
+ if (token === '(') {
392
+ position += 1;
393
+ var inner = parseOr();
394
+ if (inner === null || !eat(')')) {
395
+ return null;
396
+ }
397
+ return inner;
398
+ }
399
+ if (/^\d/.test(token)) {
400
+ position += 1;
401
+ return { kind: 'number', value: Number(token) };
402
+ }
403
+ if (!/^[A-Za-z_$]/.test(token)) {
404
+ return null;
405
+ }
406
+ position += 1;
407
+ if (token === 'parseInt') {
408
+ return parseParseIntCall();
409
+ }
410
+ // Всё, что не `parseInt` и не локальная переменная (`Math`, импорт модуля), не переносится.
411
+ return (_a = locals.get(token)) !== null && _a !== void 0 ? _a : null;
412
+ };
413
+ var parseUnary = function () {
414
+ if (!eat('-')) {
415
+ return parseAtom();
416
+ }
417
+ var operand = parseUnary();
418
+ if (operand === null) {
419
+ return null;
420
+ }
421
+ if (operand.kind === 'number') {
422
+ return { kind: 'number', value: -operand.value };
423
+ }
424
+ // В `calc()` унарного минуса нет, умножение на -1 — его законный эквивалент.
425
+ return { kind: 'binary', operator: '*', left: { kind: 'number', value: -1 }, right: operand };
426
+ };
427
+ var parseProduct = function () {
428
+ var left = parseUnary();
429
+ if (left === null) {
430
+ return null;
431
+ }
432
+ while (peek() === '*' || peek() === '/') {
433
+ var operator = tokens[position];
434
+ position += 1;
435
+ var right = parseUnary();
436
+ if (right === null) {
437
+ return null;
438
+ }
439
+ left = { kind: 'binary', operator: operator, left: left, right: right };
440
+ }
441
+ return left;
442
+ };
443
+ // Стрелка, а не объявление функции: в объявлении TypeScript теряет сужение
444
+ // `tokens` до непустого массива.
445
+ var parseSum = function () {
446
+ var left = parseProduct();
447
+ if (left === null) {
448
+ return null;
449
+ }
450
+ while (peek() === '+' || peek() === '-') {
451
+ var operator = tokens[position];
452
+ position += 1;
453
+ var right = parseProduct();
454
+ if (right === null) {
455
+ return null;
456
+ }
457
+ left = { kind: 'binary', operator: operator, left: left, right: right };
458
+ }
459
+ return left;
460
+ };
461
+ /**
462
+ * `parseInt(this.X, 10) || 0` — страховка от NaN. В CSS её нет; на числах,
463
+ * которые реально лежат в теме, она не срабатывает, и это подтверждает
464
+ * сверка с JS-значением ниже.
465
+ *
466
+ * Уровень ниже суммы, а не только на самом верху выражения: минификатор,
467
+ * подставляющий локальную переменную в место использования, уносит страховку
468
+ * внутрь скобок — `2 * (parseInt(this.x, 10) || 0)`.
469
+ */
470
+ var parseOr = function () {
471
+ var value = parseSum();
472
+ if (value === null) {
473
+ return null;
474
+ }
475
+ while (eat('||')) {
476
+ var fallback = parseSum();
477
+ if (fallback === null || fallback.kind !== 'number' || fallback.value !== 0) {
478
+ return null;
479
+ }
480
+ }
481
+ return value;
482
+ };
483
+ var parsed = parseOr();
484
+ return parsed !== null && position === tokens.length ? parsed : null;
485
+ }
486
+ /**
487
+ * Находит конец инициализатора локальной переменной: ближайшие `,` или `;` вне скобок.
488
+ *
489
+ * Запятую верхнего уровня пропускать нельзя: минификатор склеивает объявления в
490
+ * список (`var a=1,b=2;`). Запятую внутри `parseInt(this.x, 10)` — наоборот,
491
+ * учитывать нельзя. Кавычка любого вида означает, что объявления закончились и
492
+ * началась строка `return`, — такое выражение не наше.
493
+ *
494
+ * @returns Индекс разделителя или null
495
+ */
496
+ function findCalcInitializerEnd(source, start) {
497
+ var depth = 0;
498
+ for (var index = start; index < source.length; index++) {
499
+ var char = source[index];
500
+ if (char === '`' || char === '"' || char === "'") {
501
+ return null;
502
+ }
503
+ if (char === '(') {
504
+ depth += 1;
505
+ }
506
+ else if (char === ')') {
507
+ depth -= 1;
508
+ if (depth < 0) {
509
+ return null;
510
+ }
511
+ }
512
+ else if (depth === 0 && (char === ',' || char === ';')) {
513
+ return index;
514
+ }
515
+ }
516
+ return null;
517
+ }
518
+ /**
519
+ * Считывает объявления локальных переменных в начале тела геттера.
520
+ *
521
+ * Одно объявление может объявлять несколько переменных: `const a = 1, b = 2;` в
522
+ * исходниках так не написано, но минификатор сводит к этому виду цепочку `const`.
523
+ *
524
+ * @param body Тело геттера
525
+ * @param locals Карта, в которую складываются разобранные переменные
526
+ * @returns Остаток тела после объявлений или null, если объявление не разобрано
527
+ */
528
+ function readCalcLocals(body, locals) {
529
+ var rest = body;
530
+ var keyword = rest.match(CALC_LOCAL_KEYWORD);
531
+ while (keyword) {
532
+ var cursor = keyword[0].length;
533
+ for (;;) {
534
+ var declarator = rest.slice(cursor).match(CALC_LOCAL_DECLARATOR);
535
+ if (!declarator) {
536
+ return null;
537
+ }
538
+ cursor += declarator[0].length;
539
+ var end = findCalcInitializerEnd(rest, cursor);
540
+ if (end === null) {
541
+ return null;
542
+ }
543
+ var value = parseCalcExpression(rest.slice(cursor, end), locals);
544
+ if (value === null) {
545
+ return null;
546
+ }
547
+ locals.set(declarator[1], value);
548
+ var isLastDeclarator = rest[end] === ';';
549
+ cursor = end + 1;
550
+ if (isLastDeclarator) {
551
+ break;
552
+ }
553
+ }
554
+ rest = rest.slice(cursor).replace(/^\s+/, '');
555
+ keyword = rest.match(CALC_LOCAL_KEYWORD);
556
+ }
557
+ return rest;
558
+ }
559
+ /**
560
+ * Разбирает тело арифметического геттера: объявления локальных переменных и завершающий `return`.
561
+ * @returns Дерево выражения (с уже подставленными локальными переменными) или null
562
+ */
563
+ function parseCalcGetterBody(body) {
564
+ var _a;
565
+ var locals = new Map();
566
+ var rest = readCalcLocals(body, locals);
567
+ if (rest === null) {
568
+ return null;
569
+ }
570
+ var returned = (_a = rest.match(CALC_RETURN_STATEMENT)) !== null && _a !== void 0 ? _a : rest.match(CALC_RETURN_STATEMENT_ES5);
571
+ if (!returned) {
572
+ return null;
573
+ }
574
+ var expression = parseCalcExpression(returned[2], locals);
575
+ if (expression === null) {
576
+ return null;
577
+ }
578
+ if (returned[1] !== '-') {
579
+ return expression;
580
+ }
581
+ return { kind: 'binary', operator: '*', left: { kind: 'number', value: -1 }, right: expression };
582
+ }
583
+ /**
584
+ * Тип выражения по правилам `calc()`.
585
+ * @returns 'length', 'number' или null, если такое выражение в `calc()` незаконно
586
+ */
587
+ function getCalcType(node) {
588
+ if (node.kind === 'number') {
589
+ return 'number';
590
+ }
591
+ if (node.kind === 'ref') {
592
+ return 'length';
593
+ }
594
+ var left = getCalcType(node.left);
595
+ var right = getCalcType(node.right);
596
+ if (left === null || right === null) {
597
+ return null;
598
+ }
599
+ switch (node.operator) {
600
+ case '+':
601
+ case '-':
602
+ // Число рядом с длиной — это пиксели, `px` допишется при печати.
603
+ return left === 'length' || right === 'length' ? 'length' : 'number';
604
+ case '*':
605
+ // В умножении хотя бы один операнд обязан быть числом.
606
+ if (left === 'length' && right === 'length') {
607
+ return null;
608
+ }
609
+ return left === 'number' ? right : left;
610
+ case '/':
611
+ // Делить можно только на число.
612
+ return right === 'number' ? left : null;
613
+ }
614
+ }
615
+ /** Есть ли в выражении хоть одна ссылка на переменную темы. */
616
+ function hasCalcRef(node) {
617
+ if (node.kind === 'ref') {
618
+ return true;
619
+ }
620
+ return node.kind === 'binary' && (hasCalcRef(node.left) || hasCalcRef(node.right));
621
+ }
622
+ /**
623
+ * Вычисляет выражение так же, как это делает JS-геттер.
624
+ * Ссылка берётся только из целого числа пикселей: на дробном или безразмерном значении
625
+ * `parseInt` и CSS разошлись бы.
626
+ */
627
+ function evaluateCalc(node, values) {
628
+ if (node.kind === 'number') {
629
+ return node.value;
630
+ }
631
+ if (node.kind === 'ref') {
632
+ var value = values.get(node.themeKey);
633
+ if (value === undefined || !INTEGER_PX_VALUE.test(value)) {
634
+ return null;
635
+ }
636
+ return parseInt(value, 10);
637
+ }
638
+ var left = evaluateCalc(node.left, values);
639
+ var right = evaluateCalc(node.right, values);
640
+ if (left === null || right === null) {
641
+ return null;
642
+ }
643
+ switch (node.operator) {
644
+ case '+':
645
+ return left + right;
646
+ case '-':
647
+ return left - right;
648
+ case '*':
649
+ return left * right;
650
+ case '/':
651
+ return right === 0 ? null : left / right;
652
+ }
653
+ }
654
+ function getCalcPrecedence(node) {
655
+ return node.kind === 'binary' ? CALC_PRECEDENCE[node.operator] : CALC_ATOM_PRECEDENCE;
656
+ }
657
+ /**
658
+ * Печатает выражение, расставляя скобки только там, где они меняют результат.
659
+ * Правый операнд `-` и `/` скобок требует чаще: эти операторы не ассоциативны.
660
+ *
661
+ * @param node Узел выражения
662
+ * @param context Чем должен оказаться узел в `calc()`: длиной или числом
663
+ */
664
+ function printCalc(node, context) {
665
+ if (node.kind === 'number') {
666
+ return context === 'length' ? "".concat(node.value, "px") : String(node.value);
667
+ }
668
+ if (node.kind === 'ref') {
669
+ return "var(".concat(getThemeCssVarName(node.themeKey), ")");
670
+ }
671
+ var operandPrecedence = CALC_PRECEDENCE[node.operator];
672
+ var rightPrecedence = getCalcRightPrecedence(node.operator);
673
+ var _a = getCalcOperandContexts(node, context), leftContext = _a[0], rightContext = _a[1];
674
+ return "".concat(printCalcOperand(node.left, leftContext, operandPrecedence), " ").concat(node.operator, " ").concat(printCalcOperand(node.right, rightContext, rightPrecedence));
675
+ }
676
+ /**
677
+ * Приоритет, ниже которого правый операнд надо взять в скобки.
678
+ * `-` и `/` не ассоциативны: `a - (b + c)` и `a / (b * c)` без скобок меняют смысл.
679
+ */
680
+ function getCalcRightPrecedence(operator) {
681
+ if (operator === '-') {
682
+ return CALC_PRECEDENCE['*'];
683
+ }
684
+ if (operator === '/') {
685
+ return CALC_ATOM_PRECEDENCE;
686
+ }
687
+ return CALC_PRECEDENCE[operator];
688
+ }
689
+ /**
690
+ * Контексты операндов: в сумме оба операнда того же типа, что и результат,
691
+ * в делении делитель всегда число, в умножении длину несёт ровно один операнд.
692
+ */
693
+ function getCalcOperandContexts(node, context) {
694
+ if (node.operator === '+' || node.operator === '-') {
695
+ return [context, context];
696
+ }
697
+ if (node.operator === '/') {
698
+ return [context, 'number'];
699
+ }
700
+ if (context === 'number') {
701
+ return ['number', 'number'];
702
+ }
703
+ // Длину несёт тот операнд, который ею уже является; если оба числовые —
704
+ // единицы дописываются правому, результат тот же.
705
+ return getCalcType(node.left) === 'length' ? ['length', 'number'] : ['number', 'length'];
706
+ }
707
+ function printCalcOperand(node, context, minPrecedence) {
708
+ var printed = printCalc(node, context);
709
+ return getCalcPrecedence(node) < minPrecedence ? "(".concat(printed, ")") : printed;
710
+ }
711
+ /**
712
+ * Переводит арифметический геттер в `calc()`.
713
+ *
714
+ * Значение отдаётся, только если выражение разобрано целиком, законно в `calc()`
715
+ * и вычисляется ровно в то же число, что вернул JS-геттер. Единицы в `calc()`
716
+ * приходят из самих переменных, поэтому `px` из шаблона не переносится.
717
+ *
718
+ * @param theme Объект темы
719
+ * @param themeKey Ключ переменной
720
+ * @param value Значение, которое вернул геттер
721
+ * @param values Объявленные значения переменных темы
722
+ * @returns Строка `calc(...)` или null
723
+ */
724
+ function getCalcValue(theme, themeKey, value, values) {
725
+ if (!PX_VALUE.test(value)) {
726
+ return null;
727
+ }
728
+ var body = getGetterBody(theme, themeKey);
729
+ if (body === null) {
730
+ return null;
731
+ }
732
+ var expression = parseCalcGetterBody(body);
733
+ // Выражение без ссылок производности не добавляет — такому место в литерале.
734
+ if (expression === null || getCalcType(expression) !== 'length' || !hasCalcRef(expression)) {
735
+ return null;
736
+ }
737
+ var evaluated = evaluateCalc(expression, values);
738
+ if (evaluated === null || !Number.isFinite(evaluated) || evaluated !== parseFloat(value)) {
739
+ return null;
740
+ }
741
+ return "calc(".concat(printCalc(expression, 'length'), ")");
742
+ }
743
+ //#endregion
744
+ /**
745
+ * Значение CSS-переменной для одного ключа темы.
746
+ *
747
+ * Порядок разбора: сначала ссылки (проброски и шаблоны), затем арифметика в `calc()`,
748
+ * иначе — готовое значение литералом.
749
+ */
750
+ function getCssVarValue(theme, themeKey, value, values) {
751
+ var _a;
752
+ var parts = getValueParts(theme, themeKey, value);
753
+ // Ссылка допустима, только если переменная-источник объявлена и подстановка её
754
+ // объявленного значения даёт ровно то же, что отдаёт тема. Иначе — литерал.
755
+ var isResolvable = parts.some(isRef) &&
756
+ parts.every(function (part) { return !isRef(part) || values.has(part.ref); }) &&
757
+ parts.map(function (part) { return (isRef(part) ? values.get(part.ref) : part.literal); }).join('') === value;
758
+ if (isResolvable) {
759
+ return parts.map(function (part) { return (isRef(part) ? "var(".concat(getThemeCssVarName(part.ref), ")") : part.literal); }).join('');
760
+ }
761
+ return (_a = getCalcValue(theme, themeKey, value, values)) !== null && _a !== void 0 ? _a : value;
762
+ }
763
+ /**
764
+ * Собирает пары «имя CSS-переменной — значение» для всех переменных темы.
765
+ *
766
+ * Проброски и шаблоны превращаются в ссылки `var(--kontur-<источник>)`, а арифметические
767
+ * геттеры — в `calc()` из тех же ссылок, чтобы переопределение одной переменной
768
+ * автоматически меняло все производные от неё. Остальные значения эмитируются литералом.
769
+ *
770
+ * @param theme Объект темы
771
+ * @returns Объект вида `{ '--kontur-bgSecondary': 'var(--kontur-bgDefault)' }`
772
+ */
773
+ export function themeToCssVarsMap(theme) {
774
+ var themeKeys = ThemeFactory.getKeys(theme)
775
+ .map(String)
776
+ .filter(function (themeKey) { return VALID_THEME_KEY.test(themeKey) && !MARKER_KEYS.includes(themeKey); });
777
+ var CSS_WIDE_KEYWORD = /^(inherit|initial|unset|revert|revert-layer)$/i;
778
+ /**
779
+ * CSS-wide keyword custom property нести не может: в объявлении
780
+ * `--x: inherit` ключевое слово применяется К САМОЙ ПЕРЕМЕННОЙ — она наследует
781
+ * значение родителя, а на верхнем уровне это ничто. Ссылка `var(--x)` тогда
782
+ * вычисляется в пустоту, то есть даёт `unset`, а не подставляет `inherit`.
783
+ *
784
+ * Поэтому такой токен не объявляется вовсе — как и пустой. Результат тот же:
785
+ * `var()` без объявления даёт `unset`, а для наследуемых свойств `unset`
786
+ * и есть `inherit`, то есть ровно то, что токен и означал.
787
+ */
788
+ // Значения читаются один раз: геттеры темы вычисляемые.
789
+ var values = new Map();
790
+ themeKeys.forEach(function (themeKey) {
791
+ var value = theme[themeKey];
792
+ if (typeof value !== 'string') {
793
+ return;
794
+ }
795
+ var sanitized = sanitizeValue(value);
796
+ if (sanitized === '' || sanitized.includes(';') || CSS_WIDE_KEYWORD.test(sanitized)) {
797
+ return;
798
+ }
799
+ values.set(themeKey, sanitized);
800
+ });
801
+ var cssVars = {};
802
+ values.forEach(function (value, themeKey) {
803
+ cssVars[getThemeCssVarName(themeKey)] = getCssVarValue(theme, themeKey, value, values);
804
+ });
805
+ return cssVars;
806
+ }
807
+ /**
808
+ * Подпись темы: её значения, а не сгенерированный из них CSS.
809
+ *
810
+ * Из подписи считается имя класса-носителя, и потому она обязана быть
811
+ * устойчивой к сборке приложения. Текст блока таким свойством не обладает:
812
+ * `calc()` собирается из исходного текста геттера, и минификатор потребителя
813
+ * сворачивает в нём константы — `* (8 - 1)` превращается в `* 7`. Значение то
814
+ * же, текст другой, хеш другой, и совпасть с извлечённым на сборке файлом ему
815
+ * уже нечем. Сами же значения темы минификатор не меняет.
816
+ *
817
+ * @param theme Объект темы
818
+ * @returns Строка вида `bgDefault:#fff;btnBgDefault:…`
819
+ */
820
+ export function themeValuesSignature(theme) {
821
+ return ThemeFactory.getKeys(theme)
822
+ .map(String)
823
+ .filter(function (themeKey) { return VALID_THEME_KEY.test(themeKey) && !MARKER_KEYS.includes(themeKey); })
824
+ .map(function (themeKey) {
825
+ var value = theme[themeKey];
826
+ return typeof value === 'string' ? "".concat(themeKey, ":").concat(value) : '';
827
+ })
828
+ .join(';');
829
+ }
830
+ /**
831
+ * Превращает тему в блок объявлений CSS-переменных.
832
+ *
833
+ * Блок не обёрнут в селектор — это делает вызывающий код,
834
+ * например `:root { ... }` или `.my-scope { ... }`.
835
+ *
836
+ * @param theme Объект темы
837
+ * @returns Строка объявлений, по одному на строку
838
+ */
839
+ export function themeToCssVars(theme) {
840
+ var cached = cssVarsCache.get(theme);
841
+ if (cached !== undefined) {
842
+ return cached;
843
+ }
844
+ var cssVars = themeToCssVarsMap(theme);
845
+ var result = Object.keys(cssVars)
846
+ .map(function (name) { return "".concat(name, ": ").concat(cssVars[name], ";"); })
847
+ .join('\n');
848
+ cssVarsCache.set(theme, result);
849
+ return result;
850
+ }
851
+ /**
852
+ * Блок один и тот же для одной темы, а собирается он недёшево: разбор исходников
853
+ * 540 геттеров плюс склейка полутора тысяч объявлений — около 4 мс.
854
+ *
855
+ * Кеш общий, не привязанный к инстансу Emotion: на сервере инстанс свой на каждый
856
+ * запрос, и без этого генерация повторялась бы на каждом. Ключ — объект темы,
857
+ * поэтому `WeakMap`: темы создаются динамически через `ThemeFactory.create`, и
858
+ * держать их вечно нельзя.
859
+ */
860
+ var cssVarsCache = new WeakMap();
861
+ //# sourceMappingURL=themeToCssVars.js.map