@vkontakte/vkui 8.1.2 → 8.2.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 (653) hide show
  1. package/dist/components/ActionSheet/ActionSheet.d.ts +5 -4
  2. package/dist/components/ActionSheet/ActionSheet.d.ts.map +1 -1
  3. package/dist/components/ActionSheet/ActionSheet.js +2 -1
  4. package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
  5. package/dist/components/AdaptivityProvider/AdaptivityContext.d.ts +3 -3
  6. package/dist/components/AdaptivityProvider/AdaptivityContext.js.map +1 -1
  7. package/dist/components/AdaptivityProvider/AdaptivityProvider.js +2 -2
  8. package/dist/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
  9. package/dist/components/AppRoot/AppRoot.d.ts.map +1 -1
  10. package/dist/components/AppRoot/AppRoot.js +0 -6
  11. package/dist/components/AppRoot/AppRoot.js.map +1 -1
  12. package/dist/components/AppRoot/AppRootContext.d.ts +0 -1
  13. package/dist/components/AppRoot/AppRootContext.d.ts.map +1 -1
  14. package/dist/components/AppRoot/AppRootContext.js +0 -1
  15. package/dist/components/AppRoot/AppRootContext.js.map +1 -1
  16. package/dist/components/Calendar/Calendar.d.ts +1 -1
  17. package/dist/components/Calendar/Calendar.js +2 -1
  18. package/dist/components/Calendar/Calendar.js.map +1 -1
  19. package/dist/components/CalendarDay/CalendarDay.d.ts.map +1 -1
  20. package/dist/components/CalendarDay/CalendarDay.js +4 -2
  21. package/dist/components/CalendarDay/CalendarDay.js.map +1 -1
  22. package/dist/components/CalendarDays/CalendarDays.d.ts.map +1 -1
  23. package/dist/components/CalendarDays/CalendarDays.js +2 -2
  24. package/dist/components/CalendarDays/CalendarDays.js.map +1 -1
  25. package/dist/components/CalendarHeader/CalendarHeader.d.ts.map +1 -1
  26. package/dist/components/CalendarHeader/CalendarHeader.js +4 -2
  27. package/dist/components/CalendarHeader/CalendarHeader.js.map +1 -1
  28. package/dist/components/CalendarRange/CalendarRange.d.ts +2 -2
  29. package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
  30. package/dist/components/CalendarTime/CalendarTime.d.ts +1 -1
  31. package/dist/components/CalendarTime/CalendarTime.d.ts.map +1 -1
  32. package/dist/components/CalendarTime/CalendarTime.js +61 -50
  33. package/dist/components/CalendarTime/CalendarTime.js.map +1 -1
  34. package/dist/components/CalendarTime/CalendarTimePicker.d.ts +11 -7
  35. package/dist/components/CalendarTime/CalendarTimePicker.d.ts.map +1 -1
  36. package/dist/components/CalendarTime/CalendarTimePicker.js +108 -48
  37. package/dist/components/CalendarTime/CalendarTimePicker.js.map +1 -1
  38. package/dist/components/CalendarTime/ComboBox.d.ts +25 -0
  39. package/dist/components/CalendarTime/ComboBox.d.ts.map +1 -0
  40. package/dist/components/CalendarTime/ComboBox.js +112 -0
  41. package/dist/components/CalendarTime/ComboBox.js.map +1 -0
  42. package/dist/components/CardScroll/CardScroll.d.ts.map +1 -1
  43. package/dist/components/CardScroll/CardScroll.js +2 -2
  44. package/dist/components/CardScroll/CardScroll.js.map +1 -1
  45. package/dist/components/CarouselBase/CarouselBase.d.ts.map +1 -1
  46. package/dist/components/CarouselBase/CarouselBase.js +3 -1
  47. package/dist/components/CarouselBase/CarouselBase.js.map +1 -1
  48. package/dist/components/ChipsSelect/useChipsSelect.d.ts.map +1 -1
  49. package/dist/components/ChipsSelect/useChipsSelect.js +2 -1
  50. package/dist/components/ChipsSelect/useChipsSelect.js.map +1 -1
  51. package/dist/components/ConfigProvider/ConfigProvider.d.ts.map +1 -1
  52. package/dist/components/ConfigProvider/ConfigProvider.js +8 -4
  53. package/dist/components/ConfigProvider/ConfigProvider.js.map +1 -1
  54. package/dist/components/ConfigProvider/ConfigProviderOverride.d.ts.map +1 -1
  55. package/dist/components/ConfigProvider/ConfigProviderOverride.js +5 -1
  56. package/dist/components/ConfigProvider/ConfigProviderOverride.js.map +1 -1
  57. package/dist/components/ConfigProvider/ConfigProviderSubContexts.d.ts +15 -0
  58. package/dist/components/ConfigProvider/ConfigProviderSubContexts.d.ts.map +1 -0
  59. package/dist/components/ConfigProvider/ConfigProviderSubContexts.js +25 -0
  60. package/dist/components/ConfigProvider/ConfigProviderSubContexts.js.map +1 -0
  61. package/dist/components/ContentBadge/ContentBadge.d.ts +14 -1
  62. package/dist/components/ContentBadge/ContentBadge.d.ts.map +1 -1
  63. package/dist/components/ContentBadge/ContentBadge.js +39 -1
  64. package/dist/components/ContentBadge/ContentBadge.js.map +1 -1
  65. package/dist/components/CustomSelect/CustomSelect.d.ts.map +1 -1
  66. package/dist/components/CustomSelect/CustomSelect.js +16 -10
  67. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  68. package/dist/components/DateInput/DateInput.d.ts.map +1 -1
  69. package/dist/components/DateInput/DateInput.js +4 -3
  70. package/dist/components/DateInput/DateInput.js.map +1 -1
  71. package/dist/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  72. package/dist/components/DateRangeInput/DateRangeInput.js +2 -2
  73. package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
  74. package/dist/components/Epic/ScrollSaver.d.ts.map +1 -1
  75. package/dist/components/Epic/ScrollSaver.js +1 -0
  76. package/dist/components/Epic/ScrollSaver.js.map +1 -1
  77. package/dist/components/FixedLayout/ParentWidthWrapper.d.ts +6 -0
  78. package/dist/components/FixedLayout/ParentWidthWrapper.d.ts.map +1 -0
  79. package/dist/components/FixedLayout/ParentWidthWrapper.js +43 -0
  80. package/dist/components/FixedLayout/ParentWidthWrapper.js.map +1 -0
  81. package/dist/components/Flex/Flex.d.ts +7 -4
  82. package/dist/components/Flex/Flex.d.ts.map +1 -1
  83. package/dist/components/Flex/Flex.js +5 -2
  84. package/dist/components/Flex/Flex.js.map +1 -1
  85. package/dist/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.js +3 -1
  86. package/dist/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.js.map +1 -1
  87. package/dist/components/NativeSelect/NativeSelect.d.ts.map +1 -1
  88. package/dist/components/NativeSelect/NativeSelect.js +6 -2
  89. package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
  90. package/dist/components/NavTransitionContext/NavTransitionContext.d.ts +2 -1
  91. package/dist/components/NavTransitionContext/NavTransitionContext.d.ts.map +1 -1
  92. package/dist/components/NavTransitionContext/NavTransitionContext.js +8 -4
  93. package/dist/components/NavTransitionContext/NavTransitionContext.js.map +1 -1
  94. package/dist/components/OnboardingTooltip/OnboardingTooltip.d.ts.map +1 -1
  95. package/dist/components/OnboardingTooltip/OnboardingTooltip.js +4 -5
  96. package/dist/components/OnboardingTooltip/OnboardingTooltip.js.map +1 -1
  97. package/dist/components/PanelHeader/PanelHeader.d.ts +1 -1
  98. package/dist/components/PanelHeader/PanelHeader.js.map +1 -1
  99. package/dist/components/Popper/Popper.d.ts.map +1 -1
  100. package/dist/components/Popper/Popper.js +7 -4
  101. package/dist/components/Popper/Popper.js.map +1 -1
  102. package/dist/components/PullToRefresh/PullToRefresh.d.ts.map +1 -1
  103. package/dist/components/PullToRefresh/PullToRefresh.js +8 -4
  104. package/dist/components/PullToRefresh/PullToRefresh.js.map +1 -1
  105. package/dist/components/Root/Root.d.ts +1 -1
  106. package/dist/components/Root/Root.d.ts.map +1 -1
  107. package/dist/components/Root/Root.js +43 -37
  108. package/dist/components/Root/Root.js.map +1 -1
  109. package/dist/components/SimpleGrid/SimpleGrid.d.ts +9 -8
  110. package/dist/components/SimpleGrid/SimpleGrid.d.ts.map +1 -1
  111. package/dist/components/SimpleGrid/SimpleGrid.js +9 -2
  112. package/dist/components/SimpleGrid/SimpleGrid.js.map +1 -1
  113. package/dist/components/Skeleton/Skeleton.d.ts.map +1 -1
  114. package/dist/components/Skeleton/Skeleton.js +3 -4
  115. package/dist/components/Skeleton/Skeleton.js.map +1 -1
  116. package/dist/components/Snackbar/Snackbar.d.ts.map +1 -1
  117. package/dist/components/Snackbar/Snackbar.js +6 -3
  118. package/dist/components/Snackbar/Snackbar.js.map +1 -1
  119. package/dist/components/Spacing/Spacing.d.ts +1 -1
  120. package/dist/components/Spacing/Spacing.js.map +1 -1
  121. package/dist/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.d.ts +10 -0
  122. package/dist/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.d.ts.map +1 -0
  123. package/dist/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.js +54 -0
  124. package/dist/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.js.map +1 -0
  125. package/dist/components/Spinner/ExpressiveSpinner/icons.d.ts +18 -0
  126. package/dist/components/Spinner/ExpressiveSpinner/icons.d.ts.map +1 -0
  127. package/dist/components/Spinner/ExpressiveSpinner/icons.js +79 -0
  128. package/dist/components/Spinner/ExpressiveSpinner/icons.js.map +1 -0
  129. package/dist/components/Spinner/SvgIcon.d.ts +14 -0
  130. package/dist/components/Spinner/SvgIcon.d.ts.map +1 -0
  131. package/dist/components/Spinner/SvgIcon.js +20 -0
  132. package/dist/components/Spinner/SvgIcon.js.map +1 -0
  133. package/dist/components/Spinner/icons.d.ts +1 -1
  134. package/dist/components/Spinner/icons.d.ts.map +1 -1
  135. package/dist/components/Spinner/icons.js +10 -23
  136. package/dist/components/Spinner/icons.js.map +1 -1
  137. package/dist/components/SplitLayout/SplitLayout.d.ts +3 -3
  138. package/dist/components/SplitLayout/SplitLayout.js.map +1 -1
  139. package/dist/components/TabsItem/TabsItem.d.ts.map +1 -1
  140. package/dist/components/TabsItem/TabsItem.js +2 -5
  141. package/dist/components/TabsItem/TabsItem.js.map +1 -1
  142. package/dist/components/Tappable/Tappable.d.ts +2 -2
  143. package/dist/components/Tappable/Tappable.js.map +1 -1
  144. package/dist/components/View/View.d.ts.map +1 -1
  145. package/dist/components/View/View.js +50 -53
  146. package/dist/components/View/View.js.map +1 -1
  147. package/dist/components/View/ViewInfinite.d.ts.map +1 -1
  148. package/dist/components/View/ViewInfinite.js +34 -37
  149. package/dist/components/View/ViewInfinite.js.map +1 -1
  150. package/dist/components/WriteBar/WriteBar.d.ts +15 -1
  151. package/dist/components/WriteBar/WriteBar.d.ts.map +1 -1
  152. package/dist/components/WriteBar/WriteBar.js +35 -63
  153. package/dist/components/WriteBar/WriteBar.js.map +1 -1
  154. package/dist/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.d.ts +5 -0
  155. package/dist/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.d.ts.map +1 -0
  156. package/dist/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.js +15 -0
  157. package/dist/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.js.map +1 -0
  158. package/dist/components/WriteBar/WriteBarFormField/WriteBarFormField.d.ts +8 -0
  159. package/dist/components/WriteBar/WriteBarFormField/WriteBarFormField.d.ts.map +1 -0
  160. package/dist/components/WriteBar/WriteBarFormField/WriteBarFormField.js +16 -0
  161. package/dist/components/WriteBar/WriteBarFormField/WriteBarFormField.js.map +1 -0
  162. package/dist/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.d.ts +5 -0
  163. package/dist/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.d.ts.map +1 -0
  164. package/dist/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.js +15 -0
  165. package/dist/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.js.map +1 -0
  166. package/dist/components/WriteBar/WriteBarRoot/WriteBarRoot.d.ts +10 -0
  167. package/dist/components/WriteBar/WriteBarRoot/WriteBarRoot.d.ts.map +1 -0
  168. package/dist/components/WriteBar/WriteBarRoot/WriteBarRoot.js +16 -0
  169. package/dist/components/WriteBar/WriteBarRoot/WriteBarRoot.js.map +1 -0
  170. package/dist/components/WriteBar/WriteBarTextarea/WriteBarTextarea.d.ts +10 -0
  171. package/dist/components/WriteBar/WriteBarTextarea/WriteBarTextarea.d.ts.map +1 -0
  172. package/dist/components/WriteBar/WriteBarTextarea/WriteBarTextarea.js +39 -0
  173. package/dist/components/WriteBar/WriteBarTextarea/WriteBarTextarea.js.map +1 -0
  174. package/dist/components.css +1 -1
  175. package/dist/components.css.map +1 -1
  176. package/dist/cssm/components/ActionSheet/ActionSheet.js +2 -1
  177. package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
  178. package/dist/cssm/components/AdaptivityProvider/AdaptivityContext.js.map +1 -1
  179. package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js +2 -2
  180. package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
  181. package/dist/cssm/components/AppRoot/AppRoot.js +0 -6
  182. package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
  183. package/dist/cssm/components/AppRoot/AppRootContext.js +0 -1
  184. package/dist/cssm/components/AppRoot/AppRootContext.js.map +1 -1
  185. package/dist/cssm/components/Calendar/Calendar.js +2 -1
  186. package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
  187. package/dist/cssm/components/CalendarDay/CalendarDay.js +4 -2
  188. package/dist/cssm/components/CalendarDay/CalendarDay.js.map +1 -1
  189. package/dist/cssm/components/CalendarDays/CalendarDays.js +2 -2
  190. package/dist/cssm/components/CalendarDays/CalendarDays.js.map +1 -1
  191. package/dist/cssm/components/CalendarHeader/CalendarHeader.js +4 -2
  192. package/dist/cssm/components/CalendarHeader/CalendarHeader.js.map +1 -1
  193. package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
  194. package/dist/cssm/components/CalendarTime/CalendarTime.js +61 -50
  195. package/dist/cssm/components/CalendarTime/CalendarTime.js.map +1 -1
  196. package/dist/cssm/components/CalendarTime/CalendarTime.module.css +38 -0
  197. package/dist/cssm/components/CalendarTime/CalendarTimePicker.js +108 -48
  198. package/dist/cssm/components/CalendarTime/CalendarTimePicker.js.map +1 -1
  199. package/dist/cssm/components/CalendarTime/ComboBox.js +113 -0
  200. package/dist/cssm/components/CalendarTime/ComboBox.js.map +1 -0
  201. package/dist/cssm/components/CardScroll/CardScroll.js +2 -2
  202. package/dist/cssm/components/CardScroll/CardScroll.js.map +1 -1
  203. package/dist/cssm/components/CarouselBase/CarouselBase.js +3 -1
  204. package/dist/cssm/components/CarouselBase/CarouselBase.js.map +1 -1
  205. package/dist/cssm/components/ChipsSelect/useChipsSelect.js +2 -1
  206. package/dist/cssm/components/ChipsSelect/useChipsSelect.js.map +1 -1
  207. package/dist/cssm/components/ConfigProvider/ConfigProvider.js +8 -4
  208. package/dist/cssm/components/ConfigProvider/ConfigProvider.js.map +1 -1
  209. package/dist/cssm/components/ConfigProvider/ConfigProviderOverride.js +5 -1
  210. package/dist/cssm/components/ConfigProvider/ConfigProviderOverride.js.map +1 -1
  211. package/dist/cssm/components/ConfigProvider/ConfigProviderSubContexts.js +25 -0
  212. package/dist/cssm/components/ConfigProvider/ConfigProviderSubContexts.js.map +1 -0
  213. package/dist/cssm/components/ContentBadge/ContentBadge.js +39 -1
  214. package/dist/cssm/components/ContentBadge/ContentBadge.js.map +1 -1
  215. package/dist/cssm/components/ContentBadge/ContentBadge.module.css +88 -90
  216. package/dist/cssm/components/CustomSelect/CustomSelect.js +16 -10
  217. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  218. package/dist/cssm/components/DateInput/DateInput.js +4 -3
  219. package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
  220. package/dist/cssm/components/DateRangeInput/DateRangeInput.js +2 -2
  221. package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
  222. package/dist/cssm/components/Epic/ScrollSaver.js +1 -0
  223. package/dist/cssm/components/Epic/ScrollSaver.js.map +1 -1
  224. package/dist/cssm/components/FixedLayout/ParentWidthWrapper.js +43 -0
  225. package/dist/cssm/components/FixedLayout/ParentWidthWrapper.js.map +1 -0
  226. package/dist/cssm/components/Flex/Flex.js +5 -2
  227. package/dist/cssm/components/Flex/Flex.js.map +1 -1
  228. package/dist/cssm/components/GridAvatar/GridAvatar.module.css +1 -1
  229. package/dist/cssm/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.js +3 -1
  230. package/dist/cssm/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.js.map +1 -1
  231. package/dist/cssm/components/NativeSelect/NativeSelect.js +6 -2
  232. package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
  233. package/dist/cssm/components/NavTransitionContext/NavTransitionContext.js +8 -4
  234. package/dist/cssm/components/NavTransitionContext/NavTransitionContext.js.map +1 -1
  235. package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.js +4 -5
  236. package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.js.map +1 -1
  237. package/dist/cssm/components/PanelHeader/PanelHeader.js.map +1 -1
  238. package/dist/cssm/components/Popper/Popper.js +7 -4
  239. package/dist/cssm/components/Popper/Popper.js.map +1 -1
  240. package/dist/cssm/components/PullToRefresh/PullToRefresh.js +8 -4
  241. package/dist/cssm/components/PullToRefresh/PullToRefresh.js.map +1 -1
  242. package/dist/cssm/components/PullToRefresh/PullToRefresh.module.css +1 -1
  243. package/dist/cssm/components/Root/Root.js +43 -37
  244. package/dist/cssm/components/Root/Root.js.map +1 -1
  245. package/dist/cssm/components/SimpleGrid/SimpleGrid.js +9 -2
  246. package/dist/cssm/components/SimpleGrid/SimpleGrid.js.map +1 -1
  247. package/dist/cssm/components/Skeleton/Skeleton.js +3 -4
  248. package/dist/cssm/components/Skeleton/Skeleton.js.map +1 -1
  249. package/dist/cssm/components/Snackbar/Snackbar.js +6 -3
  250. package/dist/cssm/components/Snackbar/Snackbar.js.map +1 -1
  251. package/dist/cssm/components/Spacing/Spacing.js.map +1 -1
  252. package/dist/cssm/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.js +56 -0
  253. package/dist/cssm/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.js.map +1 -0
  254. package/dist/cssm/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.module.css +13 -0
  255. package/dist/cssm/components/Spinner/ExpressiveSpinner/icons.js +79 -0
  256. package/dist/cssm/components/Spinner/ExpressiveSpinner/icons.js.map +1 -0
  257. package/dist/cssm/components/Spinner/SvgIcon.js +20 -0
  258. package/dist/cssm/components/Spinner/SvgIcon.js.map +1 -0
  259. package/dist/cssm/components/Spinner/icons.js +10 -23
  260. package/dist/cssm/components/Spinner/icons.js.map +1 -1
  261. package/dist/cssm/components/SplitLayout/SplitLayout.js.map +1 -1
  262. package/dist/cssm/components/TabsItem/TabsItem.js +2 -5
  263. package/dist/cssm/components/TabsItem/TabsItem.js.map +1 -1
  264. package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
  265. package/dist/cssm/components/View/View.js +50 -53
  266. package/dist/cssm/components/View/View.js.map +1 -1
  267. package/dist/cssm/components/View/ViewInfinite.js +34 -37
  268. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  269. package/dist/cssm/components/WriteBar/WriteBar.js +35 -64
  270. package/dist/cssm/components/WriteBar/WriteBar.js.map +1 -1
  271. package/dist/cssm/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.js +16 -0
  272. package/dist/cssm/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.js.map +1 -0
  273. package/dist/cssm/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.module.css +12 -0
  274. package/dist/cssm/components/WriteBar/WriteBarFormField/WriteBarFormField.js +17 -0
  275. package/dist/cssm/components/WriteBar/WriteBarFormField/WriteBarFormField.js.map +1 -0
  276. package/dist/cssm/components/WriteBar/WriteBarFormField/WriteBarFormField.module.css +18 -0
  277. package/dist/cssm/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.js +16 -0
  278. package/dist/cssm/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.js.map +1 -0
  279. package/dist/cssm/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.module.css +3 -0
  280. package/dist/cssm/components/WriteBar/WriteBarRoot/WriteBarRoot.js +17 -0
  281. package/dist/cssm/components/WriteBar/WriteBarRoot/WriteBarRoot.js.map +1 -0
  282. package/dist/cssm/components/WriteBar/WriteBarRoot/WriteBarRoot.module.css +15 -0
  283. package/dist/cssm/components/WriteBar/WriteBarTextarea/WriteBarTextarea.js +40 -0
  284. package/dist/cssm/components/WriteBar/WriteBarTextarea/WriteBarTextarea.js.map +1 -0
  285. package/dist/cssm/components/WriteBar/WriteBarTextarea/WriteBarTextarea.module.css +43 -0
  286. package/dist/cssm/helpers/math.js +6 -0
  287. package/dist/cssm/helpers/math.js.map +1 -1
  288. package/dist/cssm/hoc/withPlatform.js +3 -2
  289. package/dist/cssm/hoc/withPlatform.js.map +1 -1
  290. package/dist/cssm/hooks/useAdaptivityConditionalRender/types.js.map +1 -1
  291. package/dist/cssm/hooks/useAnimationFrame.js +40 -0
  292. package/dist/cssm/hooks/useAnimationFrame.js.map +1 -0
  293. package/dist/cssm/hooks/useAutoFocus.js +4 -1
  294. package/dist/cssm/hooks/useAutoFocus.js.map +1 -1
  295. package/dist/cssm/hooks/useColorScheme.js +3 -3
  296. package/dist/cssm/hooks/useColorScheme.js.map +1 -1
  297. package/dist/cssm/hooks/useConfigDirection.js +3 -3
  298. package/dist/cssm/hooks/useConfigDirection.js.map +1 -1
  299. package/dist/cssm/hooks/useDateInput.js +1 -2
  300. package/dist/cssm/hooks/useDateInput.js.map +1 -1
  301. package/dist/cssm/hooks/useFocusTrap/useAutoFocus.js +1 -0
  302. package/dist/cssm/hooks/useFocusTrap/useAutoFocus.js.map +1 -1
  303. package/dist/cssm/hooks/useFocusTrap/useFocusTrap.js +2 -0
  304. package/dist/cssm/hooks/useFocusTrap/useFocusTrap.js.map +1 -1
  305. package/dist/cssm/hooks/useFocusVisible.js +8 -13
  306. package/dist/cssm/hooks/useFocusVisible.js.map +1 -1
  307. package/dist/cssm/hooks/useFocusWithin.js +5 -4
  308. package/dist/cssm/hooks/useFocusWithin.js.map +1 -1
  309. package/dist/cssm/hooks/useGlobalEscKeyDown.js +17 -15
  310. package/dist/cssm/hooks/useGlobalEscKeyDown.js.map +1 -1
  311. package/dist/cssm/hooks/useGlobalOnClickOutside.js +6 -2
  312. package/dist/cssm/hooks/useGlobalOnClickOutside.js.map +1 -1
  313. package/dist/cssm/hooks/useKeyboardInputTracker.js +48 -41
  314. package/dist/cssm/hooks/useKeyboardInputTracker.js.map +1 -1
  315. package/dist/cssm/hooks/useLatestRef.js +13 -0
  316. package/dist/cssm/hooks/useLatestRef.js.map +1 -0
  317. package/dist/cssm/hooks/useLocale.js +3 -3
  318. package/dist/cssm/hooks/useLocale.js.map +1 -1
  319. package/dist/cssm/hooks/useMediaQueryMatch.js +1 -0
  320. package/dist/cssm/hooks/useMediaQueryMatch.js.map +1 -1
  321. package/dist/cssm/hooks/useMutationObserver.js +3 -3
  322. package/dist/cssm/hooks/useMutationObserver.js.map +1 -1
  323. package/dist/cssm/hooks/usePlatform.js +3 -3
  324. package/dist/cssm/hooks/usePlatform.js.map +1 -1
  325. package/dist/cssm/hooks/useResizeObserver.js +4 -6
  326. package/dist/cssm/hooks/useResizeObserver.js.map +1 -1
  327. package/dist/cssm/hooks/useSyncHTMLWithBaseVKUIClasses.js +2 -1
  328. package/dist/cssm/hooks/useSyncHTMLWithBaseVKUIClasses.js.map +1 -1
  329. package/dist/cssm/hooks/useSyncHTMLWithTokens.js +3 -1
  330. package/dist/cssm/hooks/useSyncHTMLWithTokens.js.map +1 -1
  331. package/dist/cssm/hooks/useWaitTransitionFinish.js +13 -15
  332. package/dist/cssm/hooks/useWaitTransitionFinish.js.map +1 -1
  333. package/dist/cssm/index.js +1 -0
  334. package/dist/cssm/index.js.map +1 -1
  335. package/dist/cssm/lib/array.js +18 -0
  336. package/dist/cssm/lib/array.js.map +1 -0
  337. package/dist/cssm/lib/curve.js +21 -0
  338. package/dist/cssm/lib/curve.js.map +1 -0
  339. package/dist/cssm/lib/dom.js +5 -2
  340. package/dist/cssm/lib/dom.js.map +1 -1
  341. package/dist/cssm/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js +4 -4
  342. package/dist/cssm/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
  343. package/dist/cssm/lib/fx.js +4 -55
  344. package/dist/cssm/lib/fx.js.map +1 -1
  345. package/dist/cssm/lib/layouts/index.js.map +1 -1
  346. package/dist/cssm/lib/layouts/layoutProps.js +11 -0
  347. package/dist/cssm/lib/layouts/layoutProps.js.map +1 -1
  348. package/dist/cssm/lib/layouts/resolveLayoutProps.js +13 -11
  349. package/dist/cssm/lib/layouts/resolveLayoutProps.js.map +1 -1
  350. package/dist/cssm/lib/layouts/types.js.map +1 -1
  351. package/dist/cssm/lib/material/shapes/Shape.js +18 -0
  352. package/dist/cssm/lib/material/shapes/Shape.js.map +1 -0
  353. package/dist/cssm/lib/material/shapes/shapes.js +2250 -0
  354. package/dist/cssm/lib/material/shapes/shapes.js.map +1 -0
  355. package/dist/cssm/lib/math.js +31 -0
  356. package/dist/cssm/lib/math.js.map +1 -0
  357. package/dist/cssm/lib/svg/path/approximate.js +57 -0
  358. package/dist/cssm/lib/svg/path/approximate.js.map +1 -0
  359. package/dist/cssm/lib/svg/path/interpolate.js +121 -0
  360. package/dist/cssm/lib/svg/path/interpolate.js.map +1 -0
  361. package/dist/cssm/lib/svg/path/path.js +50 -0
  362. package/dist/cssm/lib/svg/path/path.js.map +1 -0
  363. package/dist/cssm/lib/svg/path/point.js +3 -0
  364. package/dist/cssm/lib/svg/path/point.js.map +1 -0
  365. package/dist/cssm/lib/svg/path/transform.js +110 -0
  366. package/dist/cssm/lib/svg/path/transform.js.map +1 -0
  367. package/dist/cssm/lib/tokens/useTokenClassName.js +4 -1
  368. package/dist/cssm/lib/tokens/useTokenClassName.js.map +1 -1
  369. package/dist/cssm/lib/touch/UIPanGestureRecognizer.js +2 -2
  370. package/dist/cssm/lib/touch/UIPanGestureRecognizer.js.map +1 -1
  371. package/dist/cssm/styles/layout.css +273 -0
  372. package/dist/cssm/types.js +1 -4
  373. package/dist/cssm/types.js.map +1 -1
  374. package/dist/helpers/math.d.ts +4 -0
  375. package/dist/helpers/math.d.ts.map +1 -1
  376. package/dist/helpers/math.js +6 -0
  377. package/dist/helpers/math.js.map +1 -1
  378. package/dist/hoc/withPlatform.d.ts +1 -1
  379. package/dist/hoc/withPlatform.d.ts.map +1 -1
  380. package/dist/hoc/withPlatform.js +3 -2
  381. package/dist/hoc/withPlatform.js.map +1 -1
  382. package/dist/hooks/useAdaptivityConditionalRender/types.d.ts +2 -2
  383. package/dist/hooks/useAdaptivityConditionalRender/types.js.map +1 -1
  384. package/dist/hooks/useAnimationFrame.d.ts +16 -0
  385. package/dist/hooks/useAnimationFrame.d.ts.map +1 -0
  386. package/dist/hooks/useAnimationFrame.js +40 -0
  387. package/dist/hooks/useAnimationFrame.js.map +1 -0
  388. package/dist/hooks/useAutoFocus.js +4 -1
  389. package/dist/hooks/useAutoFocus.js.map +1 -1
  390. package/dist/hooks/useColorScheme.d.ts.map +1 -1
  391. package/dist/hooks/useColorScheme.js +3 -3
  392. package/dist/hooks/useColorScheme.js.map +1 -1
  393. package/dist/hooks/useConfigDirection.d.ts.map +1 -1
  394. package/dist/hooks/useConfigDirection.js +3 -3
  395. package/dist/hooks/useConfigDirection.js.map +1 -1
  396. package/dist/hooks/useDateInput.d.ts.map +1 -1
  397. package/dist/hooks/useDateInput.js +1 -2
  398. package/dist/hooks/useDateInput.js.map +1 -1
  399. package/dist/hooks/useFocusTrap/useAutoFocus.js +1 -0
  400. package/dist/hooks/useFocusTrap/useAutoFocus.js.map +1 -1
  401. package/dist/hooks/useFocusTrap/useFocusTrap.d.ts.map +1 -1
  402. package/dist/hooks/useFocusTrap/useFocusTrap.js +2 -0
  403. package/dist/hooks/useFocusTrap/useFocusTrap.js.map +1 -1
  404. package/dist/hooks/useFocusVisible.d.ts.map +1 -1
  405. package/dist/hooks/useFocusVisible.js +8 -13
  406. package/dist/hooks/useFocusVisible.js.map +1 -1
  407. package/dist/hooks/useFocusWithin.d.ts.map +1 -1
  408. package/dist/hooks/useFocusWithin.js +5 -4
  409. package/dist/hooks/useFocusWithin.js.map +1 -1
  410. package/dist/hooks/useGlobalEscKeyDown.d.ts.map +1 -1
  411. package/dist/hooks/useGlobalEscKeyDown.js +17 -15
  412. package/dist/hooks/useGlobalEscKeyDown.js.map +1 -1
  413. package/dist/hooks/useGlobalOnClickOutside.d.ts.map +1 -1
  414. package/dist/hooks/useGlobalOnClickOutside.js +6 -2
  415. package/dist/hooks/useGlobalOnClickOutside.js.map +1 -1
  416. package/dist/hooks/useKeyboardInputTracker.d.ts +1 -19
  417. package/dist/hooks/useKeyboardInputTracker.d.ts.map +1 -1
  418. package/dist/hooks/useKeyboardInputTracker.js +48 -41
  419. package/dist/hooks/useKeyboardInputTracker.js.map +1 -1
  420. package/dist/hooks/useLatestRef.d.ts +3 -0
  421. package/dist/hooks/useLatestRef.d.ts.map +1 -0
  422. package/dist/hooks/useLatestRef.js +13 -0
  423. package/dist/hooks/useLatestRef.js.map +1 -0
  424. package/dist/hooks/useLocale.d.ts.map +1 -1
  425. package/dist/hooks/useLocale.js +3 -3
  426. package/dist/hooks/useLocale.js.map +1 -1
  427. package/dist/hooks/useMediaQueryMatch.js +1 -0
  428. package/dist/hooks/useMediaQueryMatch.js.map +1 -1
  429. package/dist/hooks/useMutationObserver.d.ts +1 -2
  430. package/dist/hooks/useMutationObserver.d.ts.map +1 -1
  431. package/dist/hooks/useMutationObserver.js +3 -3
  432. package/dist/hooks/useMutationObserver.js.map +1 -1
  433. package/dist/hooks/usePlatform.d.ts.map +1 -1
  434. package/dist/hooks/usePlatform.js +3 -3
  435. package/dist/hooks/usePlatform.js.map +1 -1
  436. package/dist/hooks/useResizeObserver.d.ts.map +1 -1
  437. package/dist/hooks/useResizeObserver.js +4 -6
  438. package/dist/hooks/useResizeObserver.js.map +1 -1
  439. package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.js +2 -1
  440. package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.js.map +1 -1
  441. package/dist/hooks/useSyncHTMLWithTokens.js +3 -1
  442. package/dist/hooks/useSyncHTMLWithTokens.js.map +1 -1
  443. package/dist/hooks/useWaitTransitionFinish.d.ts.map +1 -1
  444. package/dist/hooks/useWaitTransitionFinish.js +13 -15
  445. package/dist/hooks/useWaitTransitionFinish.js.map +1 -1
  446. package/dist/index.d.ts +1 -0
  447. package/dist/index.d.ts.map +1 -1
  448. package/dist/index.js +1 -0
  449. package/dist/index.js.map +1 -1
  450. package/dist/lib/array.d.ts +17 -0
  451. package/dist/lib/array.d.ts.map +1 -0
  452. package/dist/lib/array.js +18 -0
  453. package/dist/lib/array.js.map +1 -0
  454. package/dist/lib/curve.d.ts +9 -0
  455. package/dist/lib/curve.d.ts.map +1 -0
  456. package/dist/lib/curve.js +21 -0
  457. package/dist/lib/curve.js.map +1 -0
  458. package/dist/lib/dom.d.ts +2 -1
  459. package/dist/lib/dom.d.ts.map +1 -1
  460. package/dist/lib/dom.js +5 -2
  461. package/dist/lib/dom.js.map +1 -1
  462. package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.d.ts.map +1 -1
  463. package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js +4 -4
  464. package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
  465. package/dist/lib/fx.d.ts +1 -8
  466. package/dist/lib/fx.d.ts.map +1 -1
  467. package/dist/lib/fx.js +4 -55
  468. package/dist/lib/fx.js.map +1 -1
  469. package/dist/lib/layouts/index.d.ts +1 -1
  470. package/dist/lib/layouts/index.d.ts.map +1 -1
  471. package/dist/lib/layouts/index.js.map +1 -1
  472. package/dist/lib/layouts/layoutProps.d.ts +7 -0
  473. package/dist/lib/layouts/layoutProps.d.ts.map +1 -1
  474. package/dist/lib/layouts/layoutProps.js +11 -0
  475. package/dist/lib/layouts/layoutProps.js.map +1 -1
  476. package/dist/lib/layouts/resolveLayoutProps.d.ts.map +1 -1
  477. package/dist/lib/layouts/resolveLayoutProps.js +13 -11
  478. package/dist/lib/layouts/resolveLayoutProps.js.map +1 -1
  479. package/dist/lib/layouts/types.d.ts +29 -0
  480. package/dist/lib/layouts/types.d.ts.map +1 -1
  481. package/dist/lib/layouts/types.js.map +1 -1
  482. package/dist/lib/material/shapes/Shape.d.ts +8 -0
  483. package/dist/lib/material/shapes/Shape.d.ts.map +1 -0
  484. package/dist/lib/material/shapes/Shape.js +18 -0
  485. package/dist/lib/material/shapes/Shape.js.map +1 -0
  486. package/dist/lib/material/shapes/shapes.d.ts +43 -0
  487. package/dist/lib/material/shapes/shapes.d.ts.map +1 -0
  488. package/dist/lib/material/shapes/shapes.js +2250 -0
  489. package/dist/lib/material/shapes/shapes.js.map +1 -0
  490. package/dist/lib/math.d.ts +23 -0
  491. package/dist/lib/math.d.ts.map +1 -0
  492. package/dist/lib/math.js +31 -0
  493. package/dist/lib/math.js.map +1 -0
  494. package/dist/lib/svg/path/approximate.d.ts +21 -0
  495. package/dist/lib/svg/path/approximate.d.ts.map +1 -0
  496. package/dist/lib/svg/path/approximate.js +57 -0
  497. package/dist/lib/svg/path/approximate.js.map +1 -0
  498. package/dist/lib/svg/path/interpolate.d.ts +5 -0
  499. package/dist/lib/svg/path/interpolate.d.ts.map +1 -0
  500. package/dist/lib/svg/path/interpolate.js +121 -0
  501. package/dist/lib/svg/path/interpolate.js.map +1 -0
  502. package/dist/lib/svg/path/path.d.ts +48 -0
  503. package/dist/lib/svg/path/path.d.ts.map +1 -0
  504. package/dist/lib/svg/path/path.js +50 -0
  505. package/dist/lib/svg/path/path.js.map +1 -0
  506. package/dist/lib/svg/path/point.d.ts +3 -0
  507. package/dist/lib/svg/path/point.d.ts.map +1 -0
  508. package/dist/lib/svg/path/point.js +3 -0
  509. package/dist/lib/svg/path/point.js.map +1 -0
  510. package/dist/lib/svg/path/transform.d.ts +64 -0
  511. package/dist/lib/svg/path/transform.d.ts.map +1 -0
  512. package/dist/lib/svg/path/transform.js +110 -0
  513. package/dist/lib/svg/path/transform.js.map +1 -0
  514. package/dist/lib/tokens/useTokenClassName.d.ts.map +1 -1
  515. package/dist/lib/tokens/useTokenClassName.js +4 -1
  516. package/dist/lib/tokens/useTokenClassName.js.map +1 -1
  517. package/dist/lib/touch/UIPanGestureRecognizer.d.ts.map +1 -1
  518. package/dist/lib/touch/UIPanGestureRecognizer.js +2 -2
  519. package/dist/lib/touch/UIPanGestureRecognizer.js.map +1 -1
  520. package/dist/types.d.ts +9 -0
  521. package/dist/types.d.ts.map +1 -1
  522. package/dist/types.js +1 -4
  523. package/dist/types.js.map +1 -1
  524. package/dist/vkui.css +1 -1
  525. package/dist/vkui.css.map +1 -1
  526. package/package.json +7 -6
  527. package/src/components/ActionSheet/ActionSheet.tsx +6 -3
  528. package/src/components/AdaptivityProvider/AdaptivityContext.tsx +3 -3
  529. package/src/components/AdaptivityProvider/AdaptivityProvider.tsx +2 -2
  530. package/src/components/AppRoot/AppRoot.tsx +1 -14
  531. package/src/components/AppRoot/AppRootContext.ts +0 -2
  532. package/src/components/Calendar/Calendar.tsx +2 -2
  533. package/src/components/CalendarDay/CalendarDay.tsx +4 -2
  534. package/src/components/CalendarDays/CalendarDays.tsx +2 -2
  535. package/src/components/CalendarHeader/CalendarHeader.tsx +4 -2
  536. package/src/components/CalendarRange/CalendarRange.tsx +2 -2
  537. package/src/components/CalendarTime/CalendarTime.module.css +38 -0
  538. package/src/components/CalendarTime/CalendarTime.module.css.d.ts.map +1 -1
  539. package/src/components/CalendarTime/CalendarTime.tsx +68 -55
  540. package/src/components/CalendarTime/CalendarTimePicker.tsx +148 -62
  541. package/src/components/CalendarTime/ComboBox.tsx +189 -0
  542. package/src/components/CardScroll/CardScroll.tsx +6 -5
  543. package/src/components/CarouselBase/CarouselBase.tsx +2 -1
  544. package/src/components/ChipsSelect/useChipsSelect.ts +1 -0
  545. package/src/components/ConfigProvider/ConfigProvider.tsx +6 -3
  546. package/src/components/ConfigProvider/ConfigProviderOverride.tsx +2 -1
  547. package/src/components/ConfigProvider/ConfigProviderSubContexts.tsx +43 -0
  548. package/src/components/ContentBadge/ContentBadge.module.css +84 -91
  549. package/src/components/ContentBadge/ContentBadge.module.css.d.ts.map +1 -1
  550. package/src/components/ContentBadge/ContentBadge.tsx +73 -5
  551. package/src/components/CustomSelect/CustomSelect.tsx +19 -10
  552. package/src/components/DateInput/DateInput.tsx +3 -3
  553. package/src/components/DateRangeInput/DateRangeInput.tsx +2 -2
  554. package/src/components/Epic/ScrollSaver.tsx +1 -0
  555. package/src/components/FixedLayout/ParentWidthWrapper.tsx +48 -0
  556. package/src/components/Flex/Flex.tsx +11 -6
  557. package/src/components/GridAvatar/GridAvatar.module.css +1 -1
  558. package/src/components/GridAvatar/GridAvatar.module.css.d.ts.map +1 -1
  559. package/src/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.tsx +1 -1
  560. package/src/components/NativeSelect/NativeSelect.tsx +4 -2
  561. package/src/components/NavTransitionContext/NavTransitionContext.tsx +5 -1
  562. package/src/components/OnboardingTooltip/OnboardingTooltip.tsx +3 -6
  563. package/src/components/PanelHeader/PanelHeader.tsx +1 -1
  564. package/src/components/Popper/Popper.tsx +8 -5
  565. package/src/components/PullToRefresh/PullToRefresh.module.css +1 -1
  566. package/src/components/PullToRefresh/PullToRefresh.tsx +10 -3
  567. package/src/components/Root/Root.tsx +60 -59
  568. package/src/components/SimpleGrid/SimpleGrid.tsx +25 -11
  569. package/src/components/Skeleton/Skeleton.tsx +6 -4
  570. package/src/components/Snackbar/Snackbar.tsx +6 -3
  571. package/src/components/Spacing/Spacing.tsx +1 -1
  572. package/src/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.module.css +13 -0
  573. package/src/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.module.css.d.ts.map +1 -0
  574. package/src/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.tsx +73 -0
  575. package/src/components/Spinner/ExpressiveSpinner/icons.tsx +104 -0
  576. package/src/components/Spinner/SvgIcon.tsx +31 -0
  577. package/src/components/Spinner/icons.tsx +10 -13
  578. package/src/components/SplitLayout/SplitLayout.tsx +3 -3
  579. package/src/components/TabsItem/TabsItem.tsx +4 -5
  580. package/src/components/Tappable/Tappable.tsx +2 -2
  581. package/src/components/View/View.tsx +83 -89
  582. package/src/components/View/ViewInfinite.tsx +65 -69
  583. package/src/components/WriteBar/WriteBar.tsx +25 -59
  584. package/src/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.module.css +12 -0
  585. package/src/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.module.css.d.ts.map +1 -0
  586. package/src/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.tsx +20 -0
  587. package/src/components/WriteBar/WriteBarFormField/WriteBarFormField.module.css +18 -0
  588. package/src/components/WriteBar/WriteBarFormField/WriteBarFormField.module.css.d.ts.map +1 -0
  589. package/src/components/WriteBar/WriteBarFormField/WriteBarFormField.tsx +22 -0
  590. package/src/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.module.css +3 -0
  591. package/src/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.module.css.d.ts.map +1 -0
  592. package/src/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.tsx +23 -0
  593. package/src/components/WriteBar/WriteBarRoot/WriteBarRoot.module.css +14 -0
  594. package/src/components/WriteBar/WriteBarRoot/WriteBarRoot.module.css.d.ts.map +1 -0
  595. package/src/components/WriteBar/WriteBarRoot/WriteBarRoot.tsx +31 -0
  596. package/src/components/WriteBar/WriteBarTextarea/WriteBarTextarea.module.css +42 -0
  597. package/src/components/WriteBar/WriteBarTextarea/WriteBarTextarea.module.css.d.ts.map +1 -0
  598. package/src/components/WriteBar/WriteBarTextarea/WriteBarTextarea.tsx +48 -0
  599. package/src/helpers/math.ts +8 -0
  600. package/src/hoc/withPlatform.tsx +3 -3
  601. package/src/hooks/useAdaptivityConditionalRender/types.ts +2 -2
  602. package/src/hooks/useAnimationFrame.tsx +42 -0
  603. package/src/hooks/useAutoFocus.ts +1 -1
  604. package/src/hooks/useColorScheme.ts +3 -4
  605. package/src/hooks/useConfigDirection.ts +3 -4
  606. package/src/hooks/useDateInput.ts +1 -2
  607. package/src/hooks/useFocusTrap/useAutoFocus.ts +1 -1
  608. package/src/hooks/useFocusTrap/useFocusTrap.tsx +2 -0
  609. package/src/hooks/useFocusVisible.ts +10 -18
  610. package/src/hooks/useFocusWithin.ts +26 -23
  611. package/src/hooks/useGlobalEscKeyDown.ts +12 -15
  612. package/src/hooks/useGlobalOnClickOutside.ts +5 -2
  613. package/src/hooks/useKeyboardInputTracker.ts +68 -55
  614. package/src/hooks/useLatestRef.ts +12 -0
  615. package/src/hooks/useLocale.ts +3 -4
  616. package/src/hooks/useMediaQueryMatch.ts +1 -1
  617. package/src/hooks/useMutationObserver.ts +2 -3
  618. package/src/hooks/usePlatform.ts +3 -4
  619. package/src/hooks/useResizeObserver.ts +4 -5
  620. package/src/hooks/useSyncHTMLWithBaseVKUIClasses.ts +1 -1
  621. package/src/hooks/useSyncHTMLWithTokens.ts +1 -1
  622. package/src/hooks/useWaitTransitionFinish.ts +15 -15
  623. package/src/index.ts +1 -0
  624. package/src/lib/array.ts +19 -0
  625. package/src/lib/curve.ts +36 -0
  626. package/src/lib/dom.tsx +10 -4
  627. package/src/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.ts +4 -5
  628. package/src/lib/fx.ts +5 -63
  629. package/src/lib/layouts/index.ts +1 -0
  630. package/src/lib/layouts/layoutProps.ts +8 -0
  631. package/src/lib/layouts/resolveLayoutProps.ts +19 -17
  632. package/src/lib/layouts/types.ts +29 -0
  633. package/src/lib/material/shapes/Shape.tsx +17 -0
  634. package/src/lib/material/shapes/shapes.ts +329 -0
  635. package/src/lib/math.ts +37 -0
  636. package/src/lib/svg/path/approximate.ts +81 -0
  637. package/src/lib/svg/path/interpolate.ts +151 -0
  638. package/src/lib/svg/path/path.ts +102 -0
  639. package/src/lib/svg/path/point.ts +2 -0
  640. package/src/lib/svg/path/transform.ts +147 -0
  641. package/src/lib/tokens/useTokenClassName.ts +7 -5
  642. package/src/lib/touch/UIPanGestureRecognizer.ts +2 -2
  643. package/src/types.ts +16 -0
  644. package/dist/cssm/components/WriteBar/WriteBar.module.css +0 -118
  645. package/dist/cssm/lib/floating/LockFloatingPosition/LockFloatingPosition.js +0 -6
  646. package/dist/cssm/lib/floating/LockFloatingPosition/LockFloatingPosition.js.map +0 -1
  647. package/dist/lib/floating/LockFloatingPosition/LockFloatingPosition.d.ts +0 -6
  648. package/dist/lib/floating/LockFloatingPosition/LockFloatingPosition.d.ts.map +0 -1
  649. package/dist/lib/floating/LockFloatingPosition/LockFloatingPosition.js +0 -6
  650. package/dist/lib/floating/LockFloatingPosition/LockFloatingPosition.js.map +0 -1
  651. package/src/components/WriteBar/WriteBar.module.css +0 -116
  652. package/src/components/WriteBar/WriteBar.module.css.d.ts.map +0 -1
  653. package/src/lib/floating/LockFloatingPosition/LockFloatingPosition.tsx +0 -6
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.ts"],"sourcesContent":["import * as React from 'react';\nimport { debounce, noop } from '@vkontakte/vkjs';\nimport { getWindow, isHTMLElement } from '@vkontakte/vkui-floating-ui/utils/dom';\nimport { useCustomEnsuredControl } from '../../../hooks/useEnsuredControl';\nimport { useGlobalOnClickOutside } from '../../../hooks/useGlobalOnClickOutside';\nimport { useStableCallback } from '../../../hooks/useStableCallback';\nimport { contains, getActiveElementByAnotherElement } from '../../dom';\nimport { useIsomorphicLayoutEffect } from '../../useIsomorphicLayoutEffect';\nimport { LockFloatingPositionContext } from '../LockFloatingPosition/LockFloatingPosition';\nimport { autoUpdateFloatingElement, useFloating } from '../adapters';\nimport { convertFloatingDataToReactCSSProperties } from '../functions';\nimport type { UseFloatingOptions } from '../types/common';\nimport { DEFAULT_TRIGGER } from './constants';\nimport type {\n FloatingProps,\n ReferenceProps,\n ShownChangeReason,\n UseFloatingWithInteractionsProps,\n UseFloatingWithInteractionsReturn,\n} from './types';\nimport { useResolveTriggerType } from './useResolveTriggerType';\n\ntype LocalState = { shown: boolean; reason?: ShownChangeReason };\n\nconst whileElementsMounted: UseFloatingOptions['whileElementsMounted'] = (...args) =>\n /* istanbul ignore next: не знаю как проверить */\n autoUpdateFloatingElement(...args, { elementResize: true });\n\n/**\n * @private\n */\nexport const useFloatingWithInteractions = <T extends HTMLElement = HTMLElement>({\n trigger = DEFAULT_TRIGGER,\n\n // UseFloating\n placement: placementProp = 'bottom',\n strategy: strategyProp = 'fixed',\n middlewares,\n hoverDelay = 0,\n closeAfterClick = false,\n\n // disables\n disabled = false,\n disableInteractive = false,\n disableCloseOnClickOutside = false,\n disableCloseOnEscKey = false,\n\n // uncontrolled\n defaultShown = false,\n\n // controlled\n shown: shownProp,\n onShownChange: onShownChangeProp,\n onShownChanged: onShownChangedProp,\n}: UseFloatingWithInteractionsProps): UseFloatingWithInteractionsReturn<T> => {\n const memoizedValue = React.useMemo<LocalState | undefined>(\n () => (shownProp !== undefined ? { shown: shownProp } : undefined),\n [shownProp],\n );\n const [shownLocalState, setShownLocalState] = useCustomEnsuredControl<LocalState>({\n value: memoizedValue,\n disabled,\n defaultValue: { shown: defaultShown },\n onChange: useStableCallback(({ shown, reason }) => {\n if (onShownChangeProp) {\n onShownChangeProp(shown, reason);\n }\n }),\n });\n const onShownChanged = useStableCallback(onShownChangedProp ? onShownChangedProp : noop);\n const [shownFinalState, setShownFinalState] = React.useState(() => shownLocalState.shown);\n const [willBeHide, setWillBeHide] = React.useState(false);\n\n const hasCSSAnimation = React.useRef(false);\n\n const blockMouseEnterRef = React.useRef(false);\n const blockFocusRef = React.useRef(false);\n const blurTimeoutRef = React.useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n\n const handleCloseOnReferenceClickOutsideDisabled =\n disabled || disableCloseOnClickOutside || willBeHide || !shownLocalState.shown;\n const handleCloseOnFloatingClickOutsideDisabled =\n disableInteractive || handleCloseOnReferenceClickOutsideDisabled;\n\n const { triggerOnFocus, triggerOnClick, triggerOnHover } = useResolveTriggerType(trigger);\n\n const isLock = React.useContext(LockFloatingPositionContext);\n\n // Библиотека `floating-ui`\n const { placement, x, y, strategy, refs, middlewareData } = useFloating<T>({\n strategy: strategyProp,\n placement: placementProp,\n ...(middlewares !== undefined ? { middleware: middlewares } : {}),\n ...(!isLock && { whileElementsMounted }),\n });\n\n const commitShownLocalState = React.useCallback(\n (nextShown: boolean, reason: ShownChangeReason) => {\n setShownLocalState((prevState) => {\n if (prevState.shown !== nextShown || prevState.reason !== reason) {\n return {\n shown: nextShown,\n reason,\n };\n }\n /* istanbul ignore next: страховка, если вдруг на момент вызова обновления состояния, оно уже будет актуальным */\n return prevState;\n });\n },\n [setShownLocalState],\n );\n\n const [mouseEnterDelay, mouseLeaveDelay] =\n typeof hoverDelay === 'number' ? [hoverDelay, hoverDelay] : hoverDelay;\n\n const showWithDelay = React.useMemo(\n () => debounce(() => commitShownLocalState(true, 'hover'), mouseEnterDelay),\n [mouseEnterDelay, commitShownLocalState],\n );\n\n const hideWithDelay = React.useMemo(\n () => debounce(() => commitShownLocalState(false, 'hover'), mouseLeaveDelay),\n [mouseLeaveDelay, commitShownLocalState],\n );\n\n const handleFocusOnReference = useStableCallback(() => {\n // Повторный вызов события фокуса - следствие клика на reference-элемент\n if (shownLocalState.shown) {\n if (!closeAfterClick && shownLocalState.reason === 'hover') {\n return;\n }\n commitShownLocalState(false, 'focus');\n return;\n }\n if (blockFocusRef.current) {\n /* istanbul ignore next: в Vitest не воспроизводится баг на вебе (cм. onRestoreFocus) */\n blockFocusRef.current = false;\n return;\n }\n\n commitShownLocalState(true, 'focus');\n });\n\n const handleBlurOnReference = useStableCallback((event: React.FocusEvent) => {\n blockFocusRef.current = false;\n blockMouseEnterRef.current = false;\n\n if (!shownLocalState.shown) {\n clearTimeout(blurTimeoutRef.current);\n return;\n }\n\n const relatedTarget = event.relatedTarget;\n blurTimeoutRef.current = setTimeout(function waitWindowBlurFire() {\n const reference = refs.reference.current;\n // Если пользователь покинул текущее окно в открытом состоянии, то\n // не закрываем всплывающий элемент.\n /* istanbul ignore if: не умеем симулировать уход из текущего окна */\n if (!relatedTarget && getActiveElementByAnotherElement(reference) === reference) {\n /* istanbul ignore next */\n return;\n }\n\n // Если пользователь нажал на всплывающий элемент, то не закрываем всплывающий элемент.\n // Note: для этого элемент должен быть фокусируемый (например, за счёт `tabindex=\"-1\"`).\n if (contains(refs.floating.current, relatedTarget) || contains(reference, relatedTarget)) {\n return;\n }\n\n commitShownLocalState(false, 'focus');\n });\n });\n\n const handleClickOnReference = useStableCallback(() => {\n // Предыдущий триггер (фокус) уже вызвал открытие/закрытие всплывающего окна, игнорируем вызов\n if (shownLocalState.reason === 'focus') {\n commitShownLocalState(shownLocalState.shown, 'click');\n return;\n }\n commitShownLocalState(!shownLocalState.shown, 'click');\n });\n\n const handleClickOnReferenceForOnlyClose = useStableCallback(() => {\n blockMouseEnterRef.current = true;\n commitShownLocalState(false, 'click');\n });\n\n const handleMouseEnterOnBoth = useStableCallback((event: React.MouseEvent<HTMLElement>) => {\n if (willBeHide && event.currentTarget === refs.floating.current) {\n return;\n }\n\n showWithDelay.cancel();\n hideWithDelay.cancel();\n\n if (!blockMouseEnterRef.current && !shownLocalState.shown) {\n showWithDelay();\n }\n });\n\n const handleMouseLeaveOnBothForHoverAndFocusStates = useStableCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n if (willBeHide && event.currentTarget === refs.floating.current) {\n return;\n }\n\n blockFocusRef.current = false;\n blockMouseEnterRef.current = false;\n\n if (triggerOnHover) {\n showWithDelay.cancel();\n hideWithDelay.cancel();\n\n hideWithDelay();\n }\n },\n );\n\n const handleFloatingAnimationStart = () => {\n hasCSSAnimation.current = true;\n };\n\n const handleFloatingAnimationEnd = () => {\n if (willBeHide) {\n setShownFinalState(false);\n setWillBeHide(false);\n onShownChanged(false, shownLocalState.reason);\n }\n };\n\n const handleOnClose = React.useCallback(() => {\n blockFocusRef.current = true;\n commitShownLocalState(false, 'callback');\n }, [commitShownLocalState]);\n\n const handleRestoreFocus: UseFloatingWithInteractionsReturn['onRestoreFocus'] = React.useCallback(\n (restoreFocus = true) => {\n if (!restoreFocus) {\n return false;\n }\n if (restoreFocus === true) {\n return triggerOnFocus ? blockFocusRef.current : true;\n } else if (restoreFocus === 'anchor-element') {\n return refs.reference.current as HTMLElement;\n } else if (restoreFocus instanceof HTMLElement) {\n return restoreFocus;\n }\n return false;\n },\n [refs.reference, triggerOnFocus],\n );\n\n const handleEscapeKeyDown = React.useCallback(() => {\n blockFocusRef.current = true;\n commitShownLocalState(false, 'escape-key');\n }, [commitShownLocalState]);\n\n const handleClickOutside = React.useCallback(() => {\n blockFocusRef.current = true;\n commitShownLocalState(false, 'click-outside');\n }, [commitShownLocalState]);\n\n useGlobalOnClickOutside(\n handleClickOutside,\n handleCloseOnReferenceClickOutsideDisabled ? null : refs.reference,\n handleCloseOnFloatingClickOutsideDisabled ? null : refs.floating,\n );\n\n useIsomorphicLayoutEffect(\n /**\n * Если пользователь покинул активное окно и:\n * 1. целевой элемент был в состоянии фокуса;\n * 2. всплывающий элемент был закрытом состоянии;\n * то фокус должен быть заблокирован, когда пользователь вернётся обратно. Иначе покажется\n * всплывающий элемент.\n */\n function setGlobalBlurForTriggerOnFocus() {\n if (!triggerOnFocus || !refs.reference.current) {\n return;\n }\n\n const handleGlobalBlur = () => {\n /* istanbul ignore next */\n const reference = refs.reference.current;\n /* istanbul ignore if: не умеем симулировать уход из текущего окна */\n if (\n !shownLocalState.shown &&\n isHTMLElement(reference) &&\n reference === getActiveElementByAnotherElement(reference)\n ) {\n /* istanbul ignore next */\n blockFocusRef.current = true;\n }\n };\n\n const win = getWindow(refs.reference.current);\n win.addEventListener('blur', handleGlobalBlur);\n return () => {\n win.removeEventListener('blur', handleGlobalBlur);\n };\n },\n [triggerOnFocus, refs.reference, shownLocalState],\n );\n\n useIsomorphicLayoutEffect(\n function resolveShownStates() {\n if (willBeHide || shownLocalState.shown === shownFinalState) {\n return;\n }\n\n if (shownLocalState.shown) {\n setShownFinalState(true);\n onShownChanged(true, shownLocalState.reason);\n } else if (hasCSSAnimation.current && !willBeHide) {\n setWillBeHide(true);\n } else {\n setShownFinalState(false);\n }\n\n return () => {\n clearTimeout(blurTimeoutRef.current);\n };\n },\n [shownLocalState, shownFinalState, willBeHide, onShownChanged],\n );\n\n const referenceProps: ReferenceProps = {};\n const floatingProps: FloatingProps = { style: {} };\n\n if (shownFinalState) {\n floatingProps.style = convertFloatingDataToReactCSSProperties({\n strategy,\n x,\n y,\n middlewareData,\n });\n\n if (disableInteractive) {\n floatingProps.style.pointerEvents = 'none';\n }\n }\n\n if (triggerOnFocus) {\n referenceProps.onFocus = handleFocusOnReference;\n referenceProps.onBlur = handleBlurOnReference;\n }\n\n if (triggerOnClick) {\n referenceProps.onClick = handleClickOnReference;\n }\n\n if (triggerOnHover) {\n referenceProps.onMouseOver = handleMouseEnterOnBoth;\n\n if (closeAfterClick && !triggerOnClick) {\n referenceProps.onClick = handleClickOnReferenceForOnlyClose;\n }\n\n if (!disableInteractive) {\n floatingProps.onMouseOver = handleMouseEnterOnBoth;\n }\n }\n\n if (triggerOnHover || triggerOnFocus) {\n referenceProps.onMouseLeave = handleMouseLeaveOnBothForHoverAndFocusStates;\n\n if (!disableInteractive) {\n floatingProps.onMouseLeave = handleMouseLeaveOnBothForHoverAndFocusStates;\n }\n }\n\n if (shownFinalState) {\n floatingProps.onAnimationStart = handleFloatingAnimationStart;\n floatingProps.onAnimationEnd = handleFloatingAnimationEnd;\n }\n\n return {\n placement,\n shown: shownFinalState,\n willBeHide,\n refs,\n referenceProps,\n floatingProps,\n middlewareData,\n onClose: handleOnClose,\n // FocusTrap уже определяет нажатие на ESC, поэтому название события содержит конкретный код\n // кнопки вместо просто onKeyDown.\n onEscapeKeyDown: !shownFinalState || disableCloseOnEscKey ? undefined : handleEscapeKeyDown,\n // [Обход баги с FocusTrap]\n //\n // Если сфокусироваться на целевой элемент через нажатие, а потом нажать в область за пределами\n // целевого и всплывающего элемента, то появляется моргание из-за того, что FocusTrap\n // восстанавливает фокус, из-за чего всплывающий элемент снова показывается за счёт\n // `handleFocusOnReference`, а потом скрывается за счёт `handleBlurOnReference`.\n onRestoreFocus: handleRestoreFocus,\n };\n};\n"],"names":["React","debounce","noop","getWindow","isHTMLElement","useCustomEnsuredControl","useGlobalOnClickOutside","useStableCallback","contains","getActiveElementByAnotherElement","useIsomorphicLayoutEffect","LockFloatingPositionContext","autoUpdateFloatingElement","useFloating","convertFloatingDataToReactCSSProperties","DEFAULT_TRIGGER","useResolveTriggerType","whileElementsMounted","args","elementResize","useFloatingWithInteractions","trigger","placement","placementProp","strategy","strategyProp","middlewares","hoverDelay","closeAfterClick","disabled","disableInteractive","disableCloseOnClickOutside","disableCloseOnEscKey","defaultShown","shown","shownProp","onShownChange","onShownChangeProp","onShownChanged","onShownChangedProp","memoizedValue","useMemo","undefined","shownLocalState","setShownLocalState","value","defaultValue","onChange","reason","shownFinalState","setShownFinalState","useState","willBeHide","setWillBeHide","hasCSSAnimation","useRef","blockMouseEnterRef","blockFocusRef","blurTimeoutRef","handleCloseOnReferenceClickOutsideDisabled","handleCloseOnFloatingClickOutsideDisabled","triggerOnFocus","triggerOnClick","triggerOnHover","isLock","useContext","x","y","refs","middlewareData","middleware","commitShownLocalState","useCallback","nextShown","prevState","mouseEnterDelay","mouseLeaveDelay","showWithDelay","hideWithDelay","handleFocusOnReference","current","handleBlurOnReference","event","clearTimeout","relatedTarget","setTimeout","waitWindowBlurFire","reference","floating","handleClickOnReference","handleClickOnReferenceForOnlyClose","handleMouseEnterOnBoth","currentTarget","cancel","handleMouseLeaveOnBothForHoverAndFocusStates","handleFloatingAnimationStart","handleFloatingAnimationEnd","handleOnClose","handleRestoreFocus","restoreFocus","HTMLElement","handleEscapeKeyDown","handleClickOutside","setGlobalBlurForTriggerOnFocus","handleGlobalBlur","win","addEventListener","removeEventListener","resolveShownStates","referenceProps","floatingProps","style","pointerEvents","onFocus","onBlur","onClick","onMouseOver","onMouseLeave","onAnimationStart","onAnimationEnd","onClose","onEscapeKeyDown","onRestoreFocus"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.ts"],"sourcesContent":["import * as React from 'react';\nimport { debounce, noop } from '@vkontakte/vkjs';\nimport { getWindow, isHTMLElement } from '@vkontakte/vkui-floating-ui/utils/dom';\nimport { useNavTransition } from '../../../components/NavTransitionContext/NavTransitionContext';\nimport { useCustomEnsuredControl } from '../../../hooks/useEnsuredControl';\nimport { useGlobalOnClickOutside } from '../../../hooks/useGlobalOnClickOutside';\nimport { useStableCallback } from '../../../hooks/useStableCallback';\nimport { contains, getActiveElementByAnotherElement } from '../../dom';\nimport { useIsomorphicLayoutEffect } from '../../useIsomorphicLayoutEffect';\nimport { autoUpdateFloatingElement, useFloating } from '../adapters';\nimport { convertFloatingDataToReactCSSProperties } from '../functions';\nimport type { UseFloatingOptions } from '../types/common';\nimport { DEFAULT_TRIGGER } from './constants';\nimport type {\n FloatingProps,\n ReferenceProps,\n ShownChangeReason,\n UseFloatingWithInteractionsProps,\n UseFloatingWithInteractionsReturn,\n} from './types';\nimport { useResolveTriggerType } from './useResolveTriggerType';\n\ntype LocalState = { shown: boolean; reason?: ShownChangeReason };\n\nconst whileElementsMounted: UseFloatingOptions['whileElementsMounted'] = (...args) =>\n /* istanbul ignore next: не знаю как проверить */\n autoUpdateFloatingElement(...args, { elementResize: true });\n\n/**\n * @private\n */\nexport const useFloatingWithInteractions = <T extends HTMLElement = HTMLElement>({\n trigger = DEFAULT_TRIGGER,\n\n // UseFloating\n placement: placementProp = 'bottom',\n strategy: strategyProp = 'fixed',\n middlewares,\n hoverDelay = 0,\n closeAfterClick = false,\n\n // disables\n disabled = false,\n disableInteractive = false,\n disableCloseOnClickOutside = false,\n disableCloseOnEscKey = false,\n\n // uncontrolled\n defaultShown = false,\n\n // controlled\n shown: shownProp,\n onShownChange: onShownChangeProp,\n onShownChanged: onShownChangedProp,\n}: UseFloatingWithInteractionsProps): UseFloatingWithInteractionsReturn<T> => {\n const memoizedValue = React.useMemo<LocalState | undefined>(\n () => (shownProp !== undefined ? { shown: shownProp } : undefined),\n [shownProp],\n );\n const { entering, animating } = useNavTransition();\n const [shownLocalState, setShownLocalState] = useCustomEnsuredControl<LocalState>({\n value: memoizedValue,\n disabled,\n defaultValue: { shown: defaultShown },\n onChange: useStableCallback(({ shown, reason }) => {\n if (onShownChangeProp) {\n onShownChangeProp(shown, reason);\n }\n }),\n });\n const onShownChanged = useStableCallback(onShownChangedProp ? onShownChangedProp : noop);\n const [shownFinalState, setShownFinalState] = React.useState(() => shownLocalState.shown);\n const [willBeHide, setWillBeHide] = React.useState(false);\n\n const hasCSSAnimation = React.useRef(false);\n\n const blockMouseEnterRef = React.useRef(false);\n const blockFocusRef = React.useRef(false);\n const blurTimeoutRef = React.useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n\n const handleCloseOnReferenceClickOutsideDisabled =\n disabled || disableCloseOnClickOutside || willBeHide || !shownLocalState.shown;\n const handleCloseOnFloatingClickOutsideDisabled =\n disableInteractive || handleCloseOnReferenceClickOutsideDisabled;\n\n const { triggerOnFocus, triggerOnClick, triggerOnHover } = useResolveTriggerType(trigger);\n\n // Библиотека `floating-ui`\n const { placement, x, y, strategy, refs, middlewareData } = useFloating<T>({\n strategy: strategyProp,\n placement: placementProp,\n ...(middlewares !== undefined ? { middleware: middlewares } : {}),\n ...(!animating && { whileElementsMounted }),\n });\n\n const commitShownLocalState = React.useCallback(\n (nextShown: boolean, reason: ShownChangeReason) => {\n setShownLocalState((prevState) => {\n if (prevState.shown !== nextShown || prevState.reason !== reason) {\n return {\n shown: nextShown,\n reason,\n };\n }\n /* istanbul ignore next: страховка, если вдруг на момент вызова обновления состояния, оно уже будет актуальным */\n return prevState;\n });\n },\n [setShownLocalState],\n );\n\n const [mouseEnterDelay, mouseLeaveDelay] =\n typeof hoverDelay === 'number' ? [hoverDelay, hoverDelay] : hoverDelay;\n\n const showWithDelay = React.useMemo(\n () => debounce(() => commitShownLocalState(true, 'hover'), mouseEnterDelay),\n [mouseEnterDelay, commitShownLocalState],\n );\n\n const hideWithDelay = React.useMemo(\n () => debounce(() => commitShownLocalState(false, 'hover'), mouseLeaveDelay),\n [mouseLeaveDelay, commitShownLocalState],\n );\n\n const handleFocusOnReference = useStableCallback(() => {\n // Повторный вызов события фокуса - следствие клика на reference-элемент\n if (shownLocalState.shown) {\n if (!closeAfterClick && shownLocalState.reason === 'hover') {\n return;\n }\n commitShownLocalState(false, 'focus');\n return;\n }\n if (blockFocusRef.current) {\n /* istanbul ignore next: в Vitest не воспроизводится баг на вебе (cм. onRestoreFocus) */\n blockFocusRef.current = false;\n return;\n }\n\n commitShownLocalState(true, 'focus');\n });\n\n const handleBlurOnReference = useStableCallback((event: React.FocusEvent) => {\n blockFocusRef.current = false;\n blockMouseEnterRef.current = false;\n\n if (!shownLocalState.shown) {\n clearTimeout(blurTimeoutRef.current);\n return;\n }\n\n const relatedTarget = event.relatedTarget;\n blurTimeoutRef.current = setTimeout(function waitWindowBlurFire() {\n const reference = refs.reference.current;\n // Если пользователь покинул текущее окно в открытом состоянии, то\n // не закрываем всплывающий элемент.\n /* istanbul ignore if: не умеем симулировать уход из текущего окна */\n if (!relatedTarget && getActiveElementByAnotherElement(reference) === reference) {\n /* istanbul ignore next */\n return;\n }\n\n // Если пользователь нажал на всплывающий элемент, то не закрываем всплывающий элемент.\n // Note: для этого элемент должен быть фокусируемый (например, за счёт `tabindex=\"-1\"`).\n if (contains(refs.floating.current, relatedTarget) || contains(reference, relatedTarget)) {\n return;\n }\n\n commitShownLocalState(false, 'focus');\n });\n });\n\n const handleClickOnReference = useStableCallback(() => {\n // Предыдущий триггер (фокус) уже вызвал открытие/закрытие всплывающего окна, игнорируем вызов\n if (shownLocalState.reason === 'focus') {\n commitShownLocalState(shownLocalState.shown, 'click');\n return;\n }\n commitShownLocalState(!shownLocalState.shown, 'click');\n });\n\n const handleClickOnReferenceForOnlyClose = useStableCallback(() => {\n blockMouseEnterRef.current = true;\n commitShownLocalState(false, 'click');\n });\n\n const handleMouseEnterOnBoth = useStableCallback((event: React.MouseEvent<HTMLElement>) => {\n if (willBeHide && event.currentTarget === refs.floating.current) {\n return;\n }\n\n showWithDelay.cancel();\n hideWithDelay.cancel();\n\n if (!blockMouseEnterRef.current && !shownLocalState.shown) {\n showWithDelay();\n }\n });\n\n const handleMouseLeaveOnBothForHoverAndFocusStates = useStableCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n if (willBeHide && event.currentTarget === refs.floating.current) {\n return;\n }\n\n blockFocusRef.current = false;\n blockMouseEnterRef.current = false;\n\n if (triggerOnHover) {\n showWithDelay.cancel();\n hideWithDelay.cancel();\n\n hideWithDelay();\n }\n },\n );\n\n const handleFloatingAnimationStart = () => {\n hasCSSAnimation.current = true;\n };\n\n const handleFloatingAnimationEnd = () => {\n if (willBeHide) {\n setShownFinalState(false);\n setWillBeHide(false);\n onShownChanged(false, shownLocalState.reason);\n }\n };\n\n const handleOnClose = React.useCallback(() => {\n blockFocusRef.current = true;\n commitShownLocalState(false, 'callback');\n }, [commitShownLocalState]);\n\n const handleRestoreFocus: UseFloatingWithInteractionsReturn['onRestoreFocus'] = React.useCallback(\n (restoreFocus = true) => {\n if (!restoreFocus) {\n return false;\n }\n if (restoreFocus === true) {\n return triggerOnFocus ? blockFocusRef.current : true;\n } else if (restoreFocus === 'anchor-element') {\n return refs.reference.current as HTMLElement;\n } else if (restoreFocus instanceof HTMLElement) {\n return restoreFocus;\n }\n return false;\n },\n [refs.reference, triggerOnFocus],\n );\n\n const handleEscapeKeyDown = React.useCallback(() => {\n blockFocusRef.current = true;\n commitShownLocalState(false, 'escape-key');\n }, [commitShownLocalState]);\n\n const handleClickOutside = React.useCallback(() => {\n blockFocusRef.current = true;\n commitShownLocalState(false, 'click-outside');\n }, [commitShownLocalState]);\n\n useGlobalOnClickOutside(\n handleClickOutside,\n handleCloseOnReferenceClickOutsideDisabled ? null : refs.reference,\n handleCloseOnFloatingClickOutsideDisabled ? null : refs.floating,\n );\n\n useIsomorphicLayoutEffect(\n /**\n * Если пользователь покинул активное окно и:\n * 1. целевой элемент был в состоянии фокуса;\n * 2. всплывающий элемент был закрытом состоянии;\n * то фокус должен быть заблокирован, когда пользователь вернётся обратно. Иначе покажется\n * всплывающий элемент.\n */\n function setGlobalBlurForTriggerOnFocus() {\n if (!triggerOnFocus || !refs.reference.current) {\n return;\n }\n\n const handleGlobalBlur = () => {\n /* istanbul ignore next */\n const reference = refs.reference.current;\n /* istanbul ignore if: не умеем симулировать уход из текущего окна */\n if (\n !shownLocalState.shown &&\n isHTMLElement(reference) &&\n reference === getActiveElementByAnotherElement(reference)\n ) {\n /* istanbul ignore next */\n blockFocusRef.current = true;\n }\n };\n\n const win = getWindow(refs.reference.current);\n win.addEventListener('blur', handleGlobalBlur);\n return () => {\n win.removeEventListener('blur', handleGlobalBlur);\n };\n },\n [triggerOnFocus, refs.reference, shownLocalState],\n );\n\n useIsomorphicLayoutEffect(\n function resolveShownStates() {\n if (willBeHide || shownLocalState.shown === shownFinalState) {\n return;\n }\n\n if (shownLocalState.shown) {\n setShownFinalState(true);\n onShownChanged(true, shownLocalState.reason);\n } else if (hasCSSAnimation.current && !willBeHide) {\n setWillBeHide(true);\n } else {\n setShownFinalState(false);\n }\n\n return () => {\n clearTimeout(blurTimeoutRef.current);\n };\n },\n [shownLocalState, shownFinalState, willBeHide, onShownChanged],\n );\n\n const referenceProps: ReferenceProps = {};\n const floatingProps: FloatingProps = { style: {} };\n\n if (shownFinalState) {\n floatingProps.style = convertFloatingDataToReactCSSProperties({\n strategy,\n x,\n y,\n middlewareData,\n });\n\n if (disableInteractive) {\n floatingProps.style.pointerEvents = 'none';\n }\n }\n\n if (triggerOnFocus) {\n referenceProps.onFocus = handleFocusOnReference;\n referenceProps.onBlur = handleBlurOnReference;\n }\n\n if (triggerOnClick) {\n referenceProps.onClick = handleClickOnReference;\n }\n\n if (triggerOnHover) {\n referenceProps.onMouseOver = handleMouseEnterOnBoth;\n\n if (closeAfterClick && !triggerOnClick) {\n referenceProps.onClick = handleClickOnReferenceForOnlyClose;\n }\n\n if (!disableInteractive) {\n floatingProps.onMouseOver = handleMouseEnterOnBoth;\n }\n }\n\n if (triggerOnHover || triggerOnFocus) {\n referenceProps.onMouseLeave = handleMouseLeaveOnBothForHoverAndFocusStates;\n\n if (!disableInteractive) {\n floatingProps.onMouseLeave = handleMouseLeaveOnBothForHoverAndFocusStates;\n }\n }\n\n if (shownFinalState) {\n floatingProps.onAnimationStart = handleFloatingAnimationStart;\n floatingProps.onAnimationEnd = handleFloatingAnimationEnd;\n }\n\n return {\n placement,\n shown: shownFinalState && !entering,\n willBeHide,\n refs,\n referenceProps,\n floatingProps,\n middlewareData,\n onClose: handleOnClose,\n // FocusTrap уже определяет нажатие на ESC, поэтому название события содержит конкретный код\n // кнопки вместо просто onKeyDown.\n onEscapeKeyDown: !shownFinalState || disableCloseOnEscKey ? undefined : handleEscapeKeyDown,\n // [Обход баги с FocusTrap]\n //\n // Если сфокусироваться на целевой элемент через нажатие, а потом нажать в область за пределами\n // целевого и всплывающего элемента, то появляется моргание из-за того, что FocusTrap\n // восстанавливает фокус, из-за чего всплывающий элемент снова показывается за счёт\n // `handleFocusOnReference`, а потом скрывается за счёт `handleBlurOnReference`.\n onRestoreFocus: handleRestoreFocus,\n };\n};\n"],"names":["React","debounce","noop","getWindow","isHTMLElement","useNavTransition","useCustomEnsuredControl","useGlobalOnClickOutside","useStableCallback","contains","getActiveElementByAnotherElement","useIsomorphicLayoutEffect","autoUpdateFloatingElement","useFloating","convertFloatingDataToReactCSSProperties","DEFAULT_TRIGGER","useResolveTriggerType","whileElementsMounted","args","elementResize","useFloatingWithInteractions","trigger","placement","placementProp","strategy","strategyProp","middlewares","hoverDelay","closeAfterClick","disabled","disableInteractive","disableCloseOnClickOutside","disableCloseOnEscKey","defaultShown","shown","shownProp","onShownChange","onShownChangeProp","onShownChanged","onShownChangedProp","memoizedValue","useMemo","undefined","entering","animating","shownLocalState","setShownLocalState","value","defaultValue","onChange","reason","shownFinalState","setShownFinalState","useState","willBeHide","setWillBeHide","hasCSSAnimation","useRef","blockMouseEnterRef","blockFocusRef","blurTimeoutRef","handleCloseOnReferenceClickOutsideDisabled","handleCloseOnFloatingClickOutsideDisabled","triggerOnFocus","triggerOnClick","triggerOnHover","x","y","refs","middlewareData","middleware","commitShownLocalState","useCallback","nextShown","prevState","mouseEnterDelay","mouseLeaveDelay","showWithDelay","hideWithDelay","handleFocusOnReference","current","handleBlurOnReference","event","clearTimeout","relatedTarget","setTimeout","waitWindowBlurFire","reference","floating","handleClickOnReference","handleClickOnReferenceForOnlyClose","handleMouseEnterOnBoth","currentTarget","cancel","handleMouseLeaveOnBothForHoverAndFocusStates","handleFloatingAnimationStart","handleFloatingAnimationEnd","handleOnClose","handleRestoreFocus","restoreFocus","HTMLElement","handleEscapeKeyDown","handleClickOutside","setGlobalBlurForTriggerOnFocus","handleGlobalBlur","win","addEventListener","removeEventListener","resolveShownStates","referenceProps","floatingProps","style","pointerEvents","onFocus","onBlur","onClick","onMouseOver","onMouseLeave","onAnimationStart","onAnimationEnd","onClose","onEscapeKeyDown","onRestoreFocus"],"mappings":"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"}
@@ -1,65 +1,14 @@
1
+ import { cubicBezierTwoDimensional } from "./curve.js";
1
2
  /**
2
3
  * ease function
3
4
  * @param x absolute progress of the animation in bounds 0 (beginning) and 1 (end)
4
5
  */ export function easeInOutSine(x) {
5
6
  return 0.5 * (1 - Math.cos(Math.PI * x));
6
7
  }
7
- /**
8
- * JS-реализация cubic bezier
9
- *
10
- * Алгебраический метод решения взят из PRа {@link https://github.com/gre/bezier-easing/pull/57}
11
- */ export function cubicBezier(mX1, mY1, mX2, mY2) {
12
- if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {
13
- throw new Error('Bezier x values must be in [0, 1] range');
14
- }
15
- if (mX1 === mY1 && mX2 === mY2) {
16
- return LinearEasing;
17
- }
18
- const a = 6 * (3 * mX1 - 3 * mX2 + 1);
19
- const b = 6 * (mX2 - 2 * mX1);
20
- const c = 3 * mX1;
21
- const a2 = a * a;
22
- const b2 = b * b;
23
- const d = b / a;
24
- const e = 3 * b * c / a2 - b2 * b / (a2 * a);
25
- const w1 = 2 * c / a - b2 / a2;
26
- const w = w1 * w1 * w1;
27
- const o = 3 / a;
28
- const ay = 3 * mY1 - 3 * mY2 + 1;
29
- const by = mY2 - 2 * mY1;
30
- const cy = 3 * mY1;
31
- const funcX2T = a ? x2t : LinearEasing;
32
- return (x)=>{
33
- if (x === 0 || x === 1) {
34
- return x;
35
- }
36
- return funcY(funcX2T(x, e, o, w, d), ay, by, cy);
8
+ export function cubicBezier(x1, y1, x2, y2) {
9
+ return function(progress) {
10
+ return cubicBezierTwoDimensional(0, 0, x1, y1, x2, y2, 1, 1, progress)[1];
37
11
  };
38
12
  }
39
- function LinearEasing(x) {
40
- return x;
41
- }
42
- function x2t(x, a, b, c, d) {
43
- const q = a + b * x;
44
- const s = q ** 2 + c;
45
- if (s > 0) {
46
- const root = Math.sqrt(s);
47
- return Math.cbrt(q + root) + Math.cbrt(q - root) - d;
48
- }
49
- const l = Math.cbrt(Math.sqrt(q * q - s));
50
- const angle = q ? Math.atan(Math.sqrt(-s) / q) : -Math.PI / 2;
51
- let φ;
52
- if (b < 0) {
53
- φ = (q > 0 ? 2 * Math.PI : Math.PI) - angle;
54
- } else if (d < 0) {
55
- φ = (q > 0 ? 2 * Math.PI : -3 * Math.PI) + angle;
56
- } else {
57
- φ = (q > 0 ? 0 : Math.PI) + angle;
58
- }
59
- return 2 * l * Math.cos(φ / 3) - d;
60
- }
61
- function funcY(t, ay, by, cy) {
62
- return ((ay * t + 3 * by) * t + cy) * t;
63
- }
64
13
 
65
14
  //# sourceMappingURL=fx.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/fx.ts"],"sourcesContent":["/**\n * ease function\n * @param x absolute progress of the animation in bounds 0 (beginning) and 1 (end)\n */\nexport function easeInOutSine(x: number): number {\n return 0.5 * (1 - Math.cos(Math.PI * x));\n}\n\n/**\n * JS-реализация cubic bezier\n *\n * Алгебраический метод решения взят из PRа {@link https://github.com/gre/bezier-easing/pull/57}\n */\nexport function cubicBezier(mX1: number, mY1: number, mX2: number, mY2: number) {\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\n throw new Error('Bezier x values must be in [0, 1] range');\n }\n\n if (mX1 === mY1 && mX2 === mY2) {\n return LinearEasing;\n }\n\n const a = 6 * (3 * mX1 - 3 * mX2 + 1);\n const b = 6 * (mX2 - 2 * mX1);\n const c = 3 * mX1;\n const a2 = a * a;\n const b2 = b * b;\n const d = b / a;\n const e = (3 * b * c) / a2 - (b2 * b) / (a2 * a);\n const w1 = (2 * c) / a - b2 / a2;\n const w = w1 * w1 * w1;\n const o = 3 / a;\n const ay = 3 * mY1 - 3 * mY2 + 1;\n const by = mY2 - 2 * mY1;\n const cy = 3 * mY1;\n\n const funcX2T = a ? x2t : LinearEasing;\n\n return (x: number) => {\n if (x === 0 || x === 1) {\n return x;\n }\n return funcY(funcX2T(x, e, o, w, d), ay, by, cy);\n };\n}\n\nfunction LinearEasing(x: number) {\n return x;\n}\n\nfunction x2t(x: number, a: number, b: number, c: number, d: number) {\n const q = a + b * x;\n const s = q ** 2 + c;\n if (s > 0) {\n const root = Math.sqrt(s);\n return Math.cbrt(q + root) + Math.cbrt(q - root) - d;\n }\n const l = Math.cbrt(Math.sqrt(q * q - s));\n const angle = q ? Math.atan(Math.sqrt(-s) / q) : -Math.PI / 2;\n let φ;\n if (b < 0) {\n φ = (q > 0 ? 2 * Math.PI : Math.PI) - angle;\n } else if (d < 0) {\n φ = (q > 0 ? 2 * Math.PI : -3 * Math.PI) + angle;\n } else {\n φ = (q > 0 ? 0 : Math.PI) + angle;\n }\n return 2 * l * Math.cos(φ / 3) - d;\n}\n\nfunction funcY(t: number, ay: number, by: number, cy: number) {\n return ((ay * t + 3 * by) * t + cy) * t;\n}\n"],"names":["easeInOutSine","x","Math","cos","PI","cubicBezier","mX1","mY1","mX2","mY2","Error","LinearEasing","a","b","c","a2","b2","d","e","w1","w","o","ay","by","cy","funcX2T","x2t","funcY","q","s","root","sqrt","cbrt","l","angle","atan","φ","t"],"mappings":"AAAA;;;CAGC,GACD,OAAO,SAASA,cAAcC,CAAS;IACrC,OAAO,MAAO,CAAA,IAAIC,KAAKC,GAAG,CAACD,KAAKE,EAAE,GAAGH,EAAC;AACxC;AAEA;;;;CAIC,GACD,OAAO,SAASI,YAAYC,GAAW,EAAEC,GAAW,EAAEC,GAAW,EAAEC,GAAW;IAC5E,IAAI,CAAE,CAAA,KAAKH,OAAOA,OAAO,KAAK,KAAKE,OAAOA,OAAO,CAAA,GAAI;QACnD,MAAM,IAAIE,MAAM;IAClB;IAEA,IAAIJ,QAAQC,OAAOC,QAAQC,KAAK;QAC9B,OAAOE;IACT;IAEA,MAAMC,IAAI,IAAK,CAAA,IAAIN,MAAM,IAAIE,MAAM,CAAA;IACnC,MAAMK,IAAI,IAAKL,CAAAA,MAAM,IAAIF,GAAE;IAC3B,MAAMQ,IAAI,IAAIR;IACd,MAAMS,KAAKH,IAAIA;IACf,MAAMI,KAAKH,IAAIA;IACf,MAAMI,IAAIJ,IAAID;IACd,MAAMM,IAAI,AAAC,IAAIL,IAAIC,IAAKC,KAAK,AAACC,KAAKH,IAAME,CAAAA,KAAKH,CAAAA;IAC9C,MAAMO,KAAK,AAAC,IAAIL,IAAKF,IAAII,KAAKD;IAC9B,MAAMK,IAAID,KAAKA,KAAKA;IACpB,MAAME,IAAI,IAAIT;IACd,MAAMU,KAAK,IAAIf,MAAM,IAAIE,MAAM;IAC/B,MAAMc,KAAKd,MAAM,IAAIF;IACrB,MAAMiB,KAAK,IAAIjB;IAEf,MAAMkB,UAAUb,IAAIc,MAAMf;IAE1B,OAAO,CAACV;QACN,IAAIA,MAAM,KAAKA,MAAM,GAAG;YACtB,OAAOA;QACT;QACA,OAAO0B,MAAMF,QAAQxB,GAAGiB,GAAGG,GAAGD,GAAGH,IAAIK,IAAIC,IAAIC;IAC/C;AACF;AAEA,SAASb,aAAaV,CAAS;IAC7B,OAAOA;AACT;AAEA,SAASyB,IAAIzB,CAAS,EAAEW,CAAS,EAAEC,CAAS,EAAEC,CAAS,EAAEG,CAAS;IAChE,MAAMW,IAAIhB,IAAIC,IAAIZ;IAClB,MAAM4B,IAAID,KAAK,IAAId;IACnB,IAAIe,IAAI,GAAG;QACT,MAAMC,OAAO5B,KAAK6B,IAAI,CAACF;QACvB,OAAO3B,KAAK8B,IAAI,CAACJ,IAAIE,QAAQ5B,KAAK8B,IAAI,CAACJ,IAAIE,QAAQb;IACrD;IACA,MAAMgB,IAAI/B,KAAK8B,IAAI,CAAC9B,KAAK6B,IAAI,CAACH,IAAIA,IAAIC;IACtC,MAAMK,QAAQN,IAAI1B,KAAKiC,IAAI,CAACjC,KAAK6B,IAAI,CAAC,CAACF,KAAKD,KAAK,CAAC1B,KAAKE,EAAE,GAAG;IAC5D,IAAIgC;IACJ,IAAIvB,IAAI,GAAG;QACTuB,IAAI,AAACR,CAAAA,IAAI,IAAI,IAAI1B,KAAKE,EAAE,GAAGF,KAAKE,EAAE,AAAD,IAAK8B;IACxC,OAAO,IAAIjB,IAAI,GAAG;QAChBmB,IAAI,AAACR,CAAAA,IAAI,IAAI,IAAI1B,KAAKE,EAAE,GAAG,CAAC,IAAIF,KAAKE,EAAE,AAAD,IAAK8B;IAC7C,OAAO;QACLE,IAAI,AAACR,CAAAA,IAAI,IAAI,IAAI1B,KAAKE,EAAE,AAAD,IAAK8B;IAC9B;IACA,OAAO,IAAID,IAAI/B,KAAKC,GAAG,CAACiC,IAAI,KAAKnB;AACnC;AAEA,SAASU,MAAMU,CAAS,EAAEf,EAAU,EAAEC,EAAU,EAAEC,EAAU;IAC1D,OAAO,AAAC,CAAA,AAACF,CAAAA,KAAKe,IAAI,IAAId,EAAC,IAAKc,IAAIb,EAAC,IAAKa;AACxC"}
1
+ {"version":3,"sources":["../../../src/lib/fx.ts"],"sourcesContent":["import { cubicBezierTwoDimensional } from './curve';\n\n/**\n * ease function\n * @param x absolute progress of the animation in bounds 0 (beginning) and 1 (end)\n */\nexport function easeInOutSine(x: number): number {\n return 0.5 * (1 - Math.cos(Math.PI * x));\n}\n\nexport function cubicBezier(x1: number, y1: number, x2: number, y2: number) {\n return function (progress: number): number {\n return cubicBezierTwoDimensional(0, 0, x1, y1, x2, y2, 1, 1, progress)[1];\n };\n}\n"],"names":["cubicBezierTwoDimensional","easeInOutSine","x","Math","cos","PI","cubicBezier","x1","y1","x2","y2","progress"],"mappings":"AAAA,SAASA,yBAAyB,QAAQ,aAAU;AAEpD;;;CAGC,GACD,OAAO,SAASC,cAAcC,CAAS;IACrC,OAAO,MAAO,CAAA,IAAIC,KAAKC,GAAG,CAACD,KAAKE,EAAE,GAAGH,EAAC;AACxC;AAEA,OAAO,SAASI,YAAYC,EAAU,EAAEC,EAAU,EAAEC,EAAU,EAAEC,EAAU;IACxE,OAAO,SAAUC,QAAgB;QAC/B,OAAOX,0BAA0B,GAAG,GAAGO,IAAIC,IAAIC,IAAIC,IAAI,GAAG,GAAGC,SAAS,CAAC,EAAE;IAC3E;AACF"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/layouts/index.ts"],"sourcesContent":["export {\n calculateGap,\n type GapsProp,\n type GapProp,\n columnGapClassNames,\n rowGapClassNames,\n} from './gaps';\n\nexport type {\n PaddingProp,\n InsetProp,\n SizeProp,\n FlexBasisProp,\n FlexGrowProp,\n FlexShrinkProp,\n PositionValue,\n LayoutProps,\n} from './types';\n\nexport { resolveLayoutProps } from './resolveLayoutProps';\n"],"names":["calculateGap","columnGapClassNames","rowGapClassNames","resolveLayoutProps"],"mappings":"AAAA,SACEA,YAAY,EAGZC,mBAAmB,EACnBC,gBAAgB,QACX,YAAS;AAahB,SAASC,kBAAkB,QAAQ,0BAAuB"}
1
+ {"version":3,"sources":["../../../../src/lib/layouts/index.ts"],"sourcesContent":["export {\n calculateGap,\n type GapsProp,\n type GapProp,\n columnGapClassNames,\n rowGapClassNames,\n} from './gaps';\n\nexport type {\n MarginProp,\n PaddingProp,\n InsetProp,\n SizeProp,\n FlexBasisProp,\n FlexGrowProp,\n FlexShrinkProp,\n PositionValue,\n LayoutProps,\n} from './types';\n\nexport { resolveLayoutProps } from './resolveLayoutProps';\n"],"names":["calculateGap","columnGapClassNames","rowGapClassNames","resolveLayoutProps"],"mappings":"AAAA,SACEA,YAAY,EAGZC,mBAAmB,EACnBC,gBAAgB,QACX,YAAS;AAchB,SAASC,kBAAkB,QAAQ,0BAAuB"}
@@ -29,6 +29,10 @@ const PADDING_VALUES = [
29
29
  ...CSS_GLOBAL_KEYWORDS,
30
30
  'system'
31
31
  ];
32
+ const MARGIN_VALUES = [
33
+ ...DESIGN_SYSTEM_SIZES,
34
+ ...CSS_GLOBAL_KEYWORDS
35
+ ];
32
36
  const SIZE_VALUES = CSS_KEYWORDS;
33
37
  const MINMAX_SIZE_VALUES = [
34
38
  ...CSS_KEYWORDS.filter((opt)=>opt !== 'auto')
@@ -76,6 +80,13 @@ const JUSTIFY_SELF_VALUES = [
76
80
  export const SYSTEM_PADDING_VERTICAL = 'var(--vkui--size_base_padding_vertical--regular)';
77
81
  export const SYSTEM_PADDING_HORIZONTAL = 'var(--vkui--size_base_padding_horizontal--regular)';
78
82
  export const LAYOUT_PROPS = {
83
+ margin: MARGIN_VALUES,
84
+ marginInline: MARGIN_VALUES,
85
+ marginBlock: MARGIN_VALUES,
86
+ marginInlineStart: MARGIN_VALUES,
87
+ marginInlineEnd: MARGIN_VALUES,
88
+ marginBlockStart: MARGIN_VALUES,
89
+ marginBlockEnd: MARGIN_VALUES,
79
90
  padding: PADDING_VALUES,
80
91
  paddingInline: PADDING_VALUES,
81
92
  paddingBlock: PADDING_VALUES,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/layouts/layoutProps.ts"],"sourcesContent":["import type {\n CSSGlobalValue,\n CSSIntrinsicSizingKeywords,\n DesignSystemSize,\n OverflowValue,\n PositionValue,\n} from './types';\n\nexport const DESIGN_SYSTEM_SIZES: DesignSystemSize[] = [\n '2xs',\n 'xs',\n 's',\n 'm',\n 'l',\n 'xl',\n '2xl',\n '3xl',\n '4xl',\n];\nconst CSS_INTRINSIC_KEYWORDS: CSSIntrinsicSizingKeywords[] = [\n 'auto',\n 'max-content',\n 'min-content',\n 'fit-content',\n];\nconst CSS_GLOBAL_KEYWORDS: CSSGlobalValue[] = ['inherit', 'initial', 'unset'];\n\nconst CSS_KEYWORDS = [...CSS_INTRINSIC_KEYWORDS, ...CSS_GLOBAL_KEYWORDS];\nconst PADDING_VALUES = [...DESIGN_SYSTEM_SIZES, ...CSS_GLOBAL_KEYWORDS, 'system'];\nconst SIZE_VALUES = CSS_KEYWORDS;\nconst MINMAX_SIZE_VALUES = [...CSS_KEYWORDS.filter((opt) => opt !== 'auto')];\nconst FLEX_VALUES = CSS_GLOBAL_KEYWORDS;\nconst FLEX_BASIS_VALUES = [...CSS_KEYWORDS, 'content'];\nconst INSET_VALUES = [...DESIGN_SYSTEM_SIZES, ...CSS_GLOBAL_KEYWORDS, 'auto'];\nconst POSITION_VALUES: PositionValue[] = ['static', 'relative', 'absolute', 'fixed', 'sticky'];\nconst OVERFLOW_VALUES: OverflowValue[] = [\n 'visible',\n 'hidden',\n 'clip',\n 'scroll',\n 'auto',\n ...CSS_GLOBAL_KEYWORDS,\n];\nconst SELF_POSITION = ['start', 'center', 'end'];\nconst ALIGN_SELF_VALUES = [...SELF_POSITION, 'baseline', 'stretch'];\nconst JUSTIFY_SELF_VALUES = [...SELF_POSITION, 'baseline', 'stretch'];\n\nexport const SYSTEM_PADDING_VERTICAL = 'var(--vkui--size_base_padding_vertical--regular)';\nexport const SYSTEM_PADDING_HORIZONTAL = 'var(--vkui--size_base_padding_horizontal--regular)';\n\nexport const LAYOUT_PROPS = {\n padding: PADDING_VALUES,\n paddingInline: PADDING_VALUES,\n paddingBlock: PADDING_VALUES,\n paddingInlineStart: PADDING_VALUES,\n paddingInlineEnd: PADDING_VALUES,\n paddingBlockStart: PADDING_VALUES,\n paddingBlockEnd: PADDING_VALUES,\n inlineSize: SIZE_VALUES,\n minInlineSize: MINMAX_SIZE_VALUES,\n maxInlineSize: MINMAX_SIZE_VALUES,\n blockSize: SIZE_VALUES,\n minBlockSize: MINMAX_SIZE_VALUES,\n maxBlockSize: MINMAX_SIZE_VALUES,\n inset: INSET_VALUES,\n insetInline: INSET_VALUES,\n insetBlock: INSET_VALUES,\n insetInlineStart: INSET_VALUES,\n insetInlineEnd: INSET_VALUES,\n insetBlockStart: INSET_VALUES,\n insetBlockEnd: INSET_VALUES,\n position: POSITION_VALUES,\n flexGrow: FLEX_VALUES,\n flexShrink: FLEX_VALUES,\n flexBasis: FLEX_BASIS_VALUES,\n alignSelf: ALIGN_SELF_VALUES,\n justifySelf: JUSTIFY_SELF_VALUES,\n overflow: OVERFLOW_VALUES,\n overflowBlock: OVERFLOW_VALUES,\n overflowInline: OVERFLOW_VALUES,\n};\n\nexport type LayoutPropKeys = keyof typeof LAYOUT_PROPS;\n"],"names":["DESIGN_SYSTEM_SIZES","CSS_INTRINSIC_KEYWORDS","CSS_GLOBAL_KEYWORDS","CSS_KEYWORDS","PADDING_VALUES","SIZE_VALUES","MINMAX_SIZE_VALUES","filter","opt","FLEX_VALUES","FLEX_BASIS_VALUES","INSET_VALUES","POSITION_VALUES","OVERFLOW_VALUES","SELF_POSITION","ALIGN_SELF_VALUES","JUSTIFY_SELF_VALUES","SYSTEM_PADDING_VERTICAL","SYSTEM_PADDING_HORIZONTAL","LAYOUT_PROPS","padding","paddingInline","paddingBlock","paddingInlineStart","paddingInlineEnd","paddingBlockStart","paddingBlockEnd","inlineSize","minInlineSize","maxInlineSize","blockSize","minBlockSize","maxBlockSize","inset","insetInline","insetBlock","insetInlineStart","insetInlineEnd","insetBlockStart","insetBlockEnd","position","flexGrow","flexShrink","flexBasis","alignSelf","justifySelf","overflow","overflowBlock","overflowInline"],"mappings":"AAQA,OAAO,MAAMA,sBAA0C;IACrD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD,CAAC;AACF,MAAMC,yBAAuD;IAC3D;IACA;IACA;IACA;CACD;AACD,MAAMC,sBAAwC;IAAC;IAAW;IAAW;CAAQ;AAE7E,MAAMC,eAAe;OAAIF;OAA2BC;CAAoB;AACxE,MAAME,iBAAiB;OAAIJ;OAAwBE;IAAqB;CAAS;AACjF,MAAMG,cAAcF;AACpB,MAAMG,qBAAqB;OAAIH,aAAaI,MAAM,CAAC,CAACC,MAAQA,QAAQ;CAAQ;AAC5E,MAAMC,cAAcP;AACpB,MAAMQ,oBAAoB;OAAIP;IAAc;CAAU;AACtD,MAAMQ,eAAe;OAAIX;OAAwBE;IAAqB;CAAO;AAC7E,MAAMU,kBAAmC;IAAC;IAAU;IAAY;IAAY;IAAS;CAAS;AAC9F,MAAMC,kBAAmC;IACvC;IACA;IACA;IACA;IACA;OACGX;CACJ;AACD,MAAMY,gBAAgB;IAAC;IAAS;IAAU;CAAM;AAChD,MAAMC,oBAAoB;OAAID;IAAe;IAAY;CAAU;AACnE,MAAME,sBAAsB;OAAIF;IAAe;IAAY;CAAU;AAErE,OAAO,MAAMG,0BAA0B,mDAAmD;AAC1F,OAAO,MAAMC,4BAA4B,qDAAqD;AAE9F,OAAO,MAAMC,eAAe;IAC1BC,SAAShB;IACTiB,eAAejB;IACfkB,cAAclB;IACdmB,oBAAoBnB;IACpBoB,kBAAkBpB;IAClBqB,mBAAmBrB;IACnBsB,iBAAiBtB;IACjBuB,YAAYtB;IACZuB,eAAetB;IACfuB,eAAevB;IACfwB,WAAWzB;IACX0B,cAAczB;IACd0B,cAAc1B;IACd2B,OAAOtB;IACPuB,aAAavB;IACbwB,YAAYxB;IACZyB,kBAAkBzB;IAClB0B,gBAAgB1B;IAChB2B,iBAAiB3B;IACjB4B,eAAe5B;IACf6B,UAAU5B;IACV6B,UAAUhC;IACViC,YAAYjC;IACZkC,WAAWjC;IACXkC,WAAW7B;IACX8B,aAAa7B;IACb8B,UAAUjC;IACVkC,eAAelC;IACfmC,gBAAgBnC;AAClB,EAAE"}
1
+ {"version":3,"sources":["../../../../src/lib/layouts/layoutProps.ts"],"sourcesContent":["import type {\n CSSGlobalValue,\n CSSIntrinsicSizingKeywords,\n DesignSystemSize,\n OverflowValue,\n PositionValue,\n} from './types';\n\nexport const DESIGN_SYSTEM_SIZES: DesignSystemSize[] = [\n '2xs',\n 'xs',\n 's',\n 'm',\n 'l',\n 'xl',\n '2xl',\n '3xl',\n '4xl',\n];\nconst CSS_INTRINSIC_KEYWORDS: CSSIntrinsicSizingKeywords[] = [\n 'auto',\n 'max-content',\n 'min-content',\n 'fit-content',\n];\nconst CSS_GLOBAL_KEYWORDS: CSSGlobalValue[] = ['inherit', 'initial', 'unset'];\n\nconst CSS_KEYWORDS = [...CSS_INTRINSIC_KEYWORDS, ...CSS_GLOBAL_KEYWORDS];\nconst PADDING_VALUES = [...DESIGN_SYSTEM_SIZES, ...CSS_GLOBAL_KEYWORDS, 'system'];\nconst MARGIN_VALUES = [...DESIGN_SYSTEM_SIZES, ...CSS_GLOBAL_KEYWORDS];\nconst SIZE_VALUES = CSS_KEYWORDS;\nconst MINMAX_SIZE_VALUES = [...CSS_KEYWORDS.filter((opt) => opt !== 'auto')];\nconst FLEX_VALUES = CSS_GLOBAL_KEYWORDS;\nconst FLEX_BASIS_VALUES = [...CSS_KEYWORDS, 'content'];\nconst INSET_VALUES = [...DESIGN_SYSTEM_SIZES, ...CSS_GLOBAL_KEYWORDS, 'auto'];\nconst POSITION_VALUES: PositionValue[] = ['static', 'relative', 'absolute', 'fixed', 'sticky'];\nconst OVERFLOW_VALUES: OverflowValue[] = [\n 'visible',\n 'hidden',\n 'clip',\n 'scroll',\n 'auto',\n ...CSS_GLOBAL_KEYWORDS,\n];\nconst SELF_POSITION = ['start', 'center', 'end'];\nconst ALIGN_SELF_VALUES = [...SELF_POSITION, 'baseline', 'stretch'];\nconst JUSTIFY_SELF_VALUES = [...SELF_POSITION, 'baseline', 'stretch'];\n\nexport const SYSTEM_PADDING_VERTICAL = 'var(--vkui--size_base_padding_vertical--regular)';\nexport const SYSTEM_PADDING_HORIZONTAL = 'var(--vkui--size_base_padding_horizontal--regular)';\n\nexport const LAYOUT_PROPS = {\n margin: MARGIN_VALUES,\n marginInline: MARGIN_VALUES,\n marginBlock: MARGIN_VALUES,\n marginInlineStart: MARGIN_VALUES,\n marginInlineEnd: MARGIN_VALUES,\n marginBlockStart: MARGIN_VALUES,\n marginBlockEnd: MARGIN_VALUES,\n padding: PADDING_VALUES,\n paddingInline: PADDING_VALUES,\n paddingBlock: PADDING_VALUES,\n paddingInlineStart: PADDING_VALUES,\n paddingInlineEnd: PADDING_VALUES,\n paddingBlockStart: PADDING_VALUES,\n paddingBlockEnd: PADDING_VALUES,\n inlineSize: SIZE_VALUES,\n minInlineSize: MINMAX_SIZE_VALUES,\n maxInlineSize: MINMAX_SIZE_VALUES,\n blockSize: SIZE_VALUES,\n minBlockSize: MINMAX_SIZE_VALUES,\n maxBlockSize: MINMAX_SIZE_VALUES,\n inset: INSET_VALUES,\n insetInline: INSET_VALUES,\n insetBlock: INSET_VALUES,\n insetInlineStart: INSET_VALUES,\n insetInlineEnd: INSET_VALUES,\n insetBlockStart: INSET_VALUES,\n insetBlockEnd: INSET_VALUES,\n position: POSITION_VALUES,\n flexGrow: FLEX_VALUES,\n flexShrink: FLEX_VALUES,\n flexBasis: FLEX_BASIS_VALUES,\n alignSelf: ALIGN_SELF_VALUES,\n justifySelf: JUSTIFY_SELF_VALUES,\n overflow: OVERFLOW_VALUES,\n overflowBlock: OVERFLOW_VALUES,\n overflowInline: OVERFLOW_VALUES,\n};\n\nexport type LayoutPropKeys = keyof typeof LAYOUT_PROPS;\n"],"names":["DESIGN_SYSTEM_SIZES","CSS_INTRINSIC_KEYWORDS","CSS_GLOBAL_KEYWORDS","CSS_KEYWORDS","PADDING_VALUES","MARGIN_VALUES","SIZE_VALUES","MINMAX_SIZE_VALUES","filter","opt","FLEX_VALUES","FLEX_BASIS_VALUES","INSET_VALUES","POSITION_VALUES","OVERFLOW_VALUES","SELF_POSITION","ALIGN_SELF_VALUES","JUSTIFY_SELF_VALUES","SYSTEM_PADDING_VERTICAL","SYSTEM_PADDING_HORIZONTAL","LAYOUT_PROPS","margin","marginInline","marginBlock","marginInlineStart","marginInlineEnd","marginBlockStart","marginBlockEnd","padding","paddingInline","paddingBlock","paddingInlineStart","paddingInlineEnd","paddingBlockStart","paddingBlockEnd","inlineSize","minInlineSize","maxInlineSize","blockSize","minBlockSize","maxBlockSize","inset","insetInline","insetBlock","insetInlineStart","insetInlineEnd","insetBlockStart","insetBlockEnd","position","flexGrow","flexShrink","flexBasis","alignSelf","justifySelf","overflow","overflowBlock","overflowInline"],"mappings":"AAQA,OAAO,MAAMA,sBAA0C;IACrD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD,CAAC;AACF,MAAMC,yBAAuD;IAC3D;IACA;IACA;IACA;CACD;AACD,MAAMC,sBAAwC;IAAC;IAAW;IAAW;CAAQ;AAE7E,MAAMC,eAAe;OAAIF;OAA2BC;CAAoB;AACxE,MAAME,iBAAiB;OAAIJ;OAAwBE;IAAqB;CAAS;AACjF,MAAMG,gBAAgB;OAAIL;OAAwBE;CAAoB;AACtE,MAAMI,cAAcH;AACpB,MAAMI,qBAAqB;OAAIJ,aAAaK,MAAM,CAAC,CAACC,MAAQA,QAAQ;CAAQ;AAC5E,MAAMC,cAAcR;AACpB,MAAMS,oBAAoB;OAAIR;IAAc;CAAU;AACtD,MAAMS,eAAe;OAAIZ;OAAwBE;IAAqB;CAAO;AAC7E,MAAMW,kBAAmC;IAAC;IAAU;IAAY;IAAY;IAAS;CAAS;AAC9F,MAAMC,kBAAmC;IACvC;IACA;IACA;IACA;IACA;OACGZ;CACJ;AACD,MAAMa,gBAAgB;IAAC;IAAS;IAAU;CAAM;AAChD,MAAMC,oBAAoB;OAAID;IAAe;IAAY;CAAU;AACnE,MAAME,sBAAsB;OAAIF;IAAe;IAAY;CAAU;AAErE,OAAO,MAAMG,0BAA0B,mDAAmD;AAC1F,OAAO,MAAMC,4BAA4B,qDAAqD;AAE9F,OAAO,MAAMC,eAAe;IAC1BC,QAAQhB;IACRiB,cAAcjB;IACdkB,aAAalB;IACbmB,mBAAmBnB;IACnBoB,iBAAiBpB;IACjBqB,kBAAkBrB;IAClBsB,gBAAgBtB;IAChBuB,SAASxB;IACTyB,eAAezB;IACf0B,cAAc1B;IACd2B,oBAAoB3B;IACpB4B,kBAAkB5B;IAClB6B,mBAAmB7B;IACnB8B,iBAAiB9B;IACjB+B,YAAY7B;IACZ8B,eAAe7B;IACf8B,eAAe9B;IACf+B,WAAWhC;IACXiC,cAAchC;IACdiC,cAAcjC;IACdkC,OAAO7B;IACP8B,aAAa9B;IACb+B,YAAY/B;IACZgC,kBAAkBhC;IAClBiC,gBAAgBjC;IAChBkC,iBAAiBlC;IACjBmC,eAAenC;IACfoC,UAAUnC;IACVoC,UAAUvC;IACVwC,YAAYxC;IACZyC,WAAWxC;IACXyC,WAAWpC;IACXqC,aAAapC;IACbqC,UAAUxC;IACVyC,eAAezC;IACf0C,gBAAgB1C;AAClB,EAAE"}
@@ -13,17 +13,19 @@ import { LAYOUT_PROPS } from "./layoutProps.js";
13
13
  let resolvedClassName;
14
14
  let resolvedStyle;
15
15
  for(const key in LAYOUT_PROPS){
16
- if (key in outProps && outProps[key] !== undefined) {
17
- const propDef = LAYOUT_PROPS[key];
18
- const value = outProps[key];
19
- const cssProperty = key.replace(/([A-Z])/g, '-$1').toLowerCase();
20
- if (typeof value === 'string' && propDef.includes(value)) {
21
- resolvedClassName = classNames(resolvedClassName, generateConstantClassName(cssProperty, value));
22
- } else if (key !== 'position' && !key.startsWith('overflow')) {
23
- resolvedClassName = classNames(resolvedClassName, generateVariableClassName(cssProperty));
24
- resolvedStyle = mergeStyle(resolvedStyle, {
25
- [generateVariable(cssProperty)]: typeof value === 'number' && key !== 'flexGrow' && key !== 'flexShrink' ? `${value}px` : value
26
- });
16
+ if (key in outProps) {
17
+ if (outProps[key] !== undefined) {
18
+ const propDef = LAYOUT_PROPS[key];
19
+ const value = outProps[key];
20
+ const cssProperty = key.replace(/([A-Z])/g, '-$1').toLowerCase();
21
+ if (typeof value === 'string' && propDef.includes(value)) {
22
+ resolvedClassName = classNames(resolvedClassName, generateConstantClassName(cssProperty, value));
23
+ } else if (key !== 'position' && !key.startsWith('overflow')) {
24
+ resolvedClassName = classNames(resolvedClassName, generateVariableClassName(cssProperty));
25
+ resolvedStyle = mergeStyle(resolvedStyle, {
26
+ [generateVariable(cssProperty)]: typeof value === 'number' && key !== 'flexGrow' && key !== 'flexShrink' ? `${value}px` : value
27
+ });
28
+ }
27
29
  }
28
30
  delete outProps[key];
29
31
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/layouts/resolveLayoutProps.ts"],"sourcesContent":["import { classNames } from '@vkontakte/vkjs';\nimport { mergeStyle } from '../../helpers/mergeStyle';\nimport { generateConstantClassName, generateVariable, generateVariableClassName } from './helpers';\nimport { LAYOUT_PROPS, type LayoutPropKeys } from './layoutProps';\nimport type { LayoutProps } from './types';\n\nexport type ComponentProps = Partial<LayoutProps> & {\n className?: string | undefined;\n style?: React.CSSProperties | undefined;\n} & {\n [key: string]: unknown;\n};\n\n/**\n * Превращает layout свойства в нужные значения className/style\n * @param props - все пропы компонента\n * @returns измененные свойства\n */\nexport function resolveLayoutProps<T extends ComponentProps>(\n props: T & { className?: string | undefined; style?: React.CSSProperties | undefined },\n) {\n const outProps = { ...props };\n let resolvedClassName: string | undefined;\n let resolvedStyle: React.CSSProperties | undefined;\n\n for (const key in LAYOUT_PROPS) {\n if (key in outProps && outProps[key] !== undefined) {\n const propDef = LAYOUT_PROPS[key as LayoutPropKeys];\n const value = outProps[key];\n const cssProperty = key.replace(/([A-Z])/g, '-$1').toLowerCase();\n if (typeof value === 'string' && (propDef as string[]).includes(value)) {\n resolvedClassName = classNames(\n resolvedClassName,\n generateConstantClassName(cssProperty, value),\n );\n } else if (key !== 'position' && !key.startsWith('overflow')) {\n resolvedClassName = classNames(resolvedClassName, generateVariableClassName(cssProperty));\n resolvedStyle = mergeStyle(resolvedStyle, {\n [generateVariable(cssProperty)]:\n typeof value === 'number' && key !== 'flexGrow' && key !== 'flexShrink'\n ? `${value}px`\n : value,\n });\n }\n delete outProps[key];\n }\n }\n\n outProps.className = classNames(resolvedClassName, outProps.className);\n outProps.style = mergeStyle(resolvedStyle, outProps.style);\n\n return outProps;\n}\n"],"names":["classNames","mergeStyle","generateConstantClassName","generateVariable","generateVariableClassName","LAYOUT_PROPS","resolveLayoutProps","props","outProps","resolvedClassName","resolvedStyle","key","undefined","propDef","value","cssProperty","replace","toLowerCase","includes","startsWith","className","style"],"mappings":"AAAA,SAASA,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,UAAU,QAAQ,8BAA2B;AACtD,SAASC,yBAAyB,EAAEC,gBAAgB,EAAEC,yBAAyB,QAAQ,eAAY;AACnG,SAASC,YAAY,QAA6B,mBAAgB;AAUlE;;;;CAIC,GACD,OAAO,SAASC,mBACdC,KAAsF;IAEtF,MAAMC,WAAW;QAAE,GAAGD,KAAK;IAAC;IAC5B,IAAIE;IACJ,IAAIC;IAEJ,IAAK,MAAMC,OAAON,aAAc;QAC9B,IAAIM,OAAOH,YAAYA,QAAQ,CAACG,IAAI,KAAKC,WAAW;YAClD,MAAMC,UAAUR,YAAY,CAACM,IAAsB;YACnD,MAAMG,QAAQN,QAAQ,CAACG,IAAI;YAC3B,MAAMI,cAAcJ,IAAIK,OAAO,CAAC,YAAY,OAAOC,WAAW;YAC9D,IAAI,OAAOH,UAAU,YAAY,AAACD,QAAqBK,QAAQ,CAACJ,QAAQ;gBACtEL,oBAAoBT,WAClBS,mBACAP,0BAA0Ba,aAAaD;YAE3C,OAAO,IAAIH,QAAQ,cAAc,CAACA,IAAIQ,UAAU,CAAC,aAAa;gBAC5DV,oBAAoBT,WAAWS,mBAAmBL,0BAA0BW;gBAC5EL,gBAAgBT,WAAWS,eAAe;oBACxC,CAACP,iBAAiBY,aAAa,EAC7B,OAAOD,UAAU,YAAYH,QAAQ,cAAcA,QAAQ,eACvD,GAAGG,MAAM,EAAE,CAAC,GACZA;gBACR;YACF;YACA,OAAON,QAAQ,CAACG,IAAI;QACtB;IACF;IAEAH,SAASY,SAAS,GAAGpB,WAAWS,mBAAmBD,SAASY,SAAS;IACrEZ,SAASa,KAAK,GAAGpB,WAAWS,eAAeF,SAASa,KAAK;IAEzD,OAAOb;AACT"}
1
+ {"version":3,"sources":["../../../../src/lib/layouts/resolveLayoutProps.ts"],"sourcesContent":["import { classNames } from '@vkontakte/vkjs';\nimport { mergeStyle } from '../../helpers/mergeStyle';\nimport { generateConstantClassName, generateVariable, generateVariableClassName } from './helpers';\nimport { LAYOUT_PROPS, type LayoutPropKeys } from './layoutProps';\nimport type { LayoutProps } from './types';\n\nexport type ComponentProps = Partial<LayoutProps> & {\n className?: string | undefined;\n style?: React.CSSProperties | undefined;\n} & {\n [key: string]: unknown;\n};\n\n/**\n * Превращает layout свойства в нужные значения className/style\n * @param props - все пропы компонента\n * @returns измененные свойства\n */\nexport function resolveLayoutProps<T extends ComponentProps>(\n props: T & { className?: string | undefined; style?: React.CSSProperties | undefined },\n) {\n const outProps = { ...props };\n let resolvedClassName: string | undefined;\n let resolvedStyle: React.CSSProperties | undefined;\n\n for (const key in LAYOUT_PROPS) {\n if (key in outProps) {\n if (outProps[key] !== undefined) {\n const propDef = LAYOUT_PROPS[key as LayoutPropKeys];\n const value = outProps[key];\n const cssProperty = key.replace(/([A-Z])/g, '-$1').toLowerCase();\n if (typeof value === 'string' && (propDef as string[]).includes(value)) {\n resolvedClassName = classNames(\n resolvedClassName,\n generateConstantClassName(cssProperty, value),\n );\n } else if (key !== 'position' && !key.startsWith('overflow')) {\n resolvedClassName = classNames(resolvedClassName, generateVariableClassName(cssProperty));\n resolvedStyle = mergeStyle(resolvedStyle, {\n [generateVariable(cssProperty)]:\n typeof value === 'number' && key !== 'flexGrow' && key !== 'flexShrink'\n ? `${value}px`\n : value,\n });\n }\n }\n delete outProps[key];\n }\n }\n\n outProps.className = classNames(resolvedClassName, outProps.className);\n outProps.style = mergeStyle(resolvedStyle, outProps.style);\n\n return outProps;\n}\n"],"names":["classNames","mergeStyle","generateConstantClassName","generateVariable","generateVariableClassName","LAYOUT_PROPS","resolveLayoutProps","props","outProps","resolvedClassName","resolvedStyle","key","undefined","propDef","value","cssProperty","replace","toLowerCase","includes","startsWith","className","style"],"mappings":"AAAA,SAASA,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,UAAU,QAAQ,8BAA2B;AACtD,SAASC,yBAAyB,EAAEC,gBAAgB,EAAEC,yBAAyB,QAAQ,eAAY;AACnG,SAASC,YAAY,QAA6B,mBAAgB;AAUlE;;;;CAIC,GACD,OAAO,SAASC,mBACdC,KAAsF;IAEtF,MAAMC,WAAW;QAAE,GAAGD,KAAK;IAAC;IAC5B,IAAIE;IACJ,IAAIC;IAEJ,IAAK,MAAMC,OAAON,aAAc;QAC9B,IAAIM,OAAOH,UAAU;YACnB,IAAIA,QAAQ,CAACG,IAAI,KAAKC,WAAW;gBAC/B,MAAMC,UAAUR,YAAY,CAACM,IAAsB;gBACnD,MAAMG,QAAQN,QAAQ,CAACG,IAAI;gBAC3B,MAAMI,cAAcJ,IAAIK,OAAO,CAAC,YAAY,OAAOC,WAAW;gBAC9D,IAAI,OAAOH,UAAU,YAAY,AAACD,QAAqBK,QAAQ,CAACJ,QAAQ;oBACtEL,oBAAoBT,WAClBS,mBACAP,0BAA0Ba,aAAaD;gBAE3C,OAAO,IAAIH,QAAQ,cAAc,CAACA,IAAIQ,UAAU,CAAC,aAAa;oBAC5DV,oBAAoBT,WAAWS,mBAAmBL,0BAA0BW;oBAC5EL,gBAAgBT,WAAWS,eAAe;wBACxC,CAACP,iBAAiBY,aAAa,EAC7B,OAAOD,UAAU,YAAYH,QAAQ,cAAcA,QAAQ,eACvD,GAAGG,MAAM,EAAE,CAAC,GACZA;oBACR;gBACF;YACF;YACA,OAAON,QAAQ,CAACG,IAAI;QACtB;IACF;IAEAH,SAASY,SAAS,GAAGpB,WAAWS,mBAAmBD,SAASY,SAAS;IACrEZ,SAASa,KAAK,GAAGpB,WAAWS,eAAeF,SAASa,KAAK;IAEzD,OAAOb;AACT"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/layouts/types.ts"],"sourcesContent":["import type { LiteralUnion } from '../../types';\n\n// Тип для размеров дизайн-системы, переименованный из GapPresets\nexport type DesignSystemSize = '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' | '2xl' | '3xl' | '4xl';\n\n// Глобальные CSS-значения\nexport type CSSGlobalValue = 'inherit' | 'initial' | 'unset';\n\n// Ключевые слова для внутренних размеров\nexport type CSSIntrinsicSizingKeywords = 'auto' | 'max-content' | 'min-content' | 'fit-content';\n\nexport type PositionValue = 'static' | 'relative' | 'absolute' | 'fixed' | 'sticky';\n\nexport type OverflowValue = 'visible' | 'hidden' | 'clip' | 'scroll' | 'auto' | CSSGlobalValue;\n\n// Тип для отступов\nexport type PaddingProp = LiteralUnion<\n DesignSystemSize | CSSGlobalValue | 'system',\n number | string\n>;\n\n// Типы для параметров позиционирования\nexport type InsetProp = LiteralUnion<DesignSystemSize | CSSGlobalValue | 'auto', number | string>;\n\n// Тип для размеров\nexport type SizeProp = LiteralUnion<CSSGlobalValue | CSSIntrinsicSizingKeywords, number | string>;\n\n// Тип для управления flex-свойствами\nexport type FlexGrowProp = LiteralUnion<CSSGlobalValue, number>;\nexport type FlexShrinkProp = LiteralUnion<CSSGlobalValue, number>;\nexport type FlexBasisProp = LiteralUnion<\n CSSIntrinsicSizingKeywords | 'content' | CSSGlobalValue,\n number | string\n>;\n\ntype SelfPositionProp = 'start' | 'center' | 'end';\n\ntype AlignSelfProp = SelfPositionProp | 'baseline' | 'stretch';\ntype JustifySelfProp = SelfPositionProp | 'baseline' | 'stretch';\n\nexport interface LayoutProps {\n /**\n * Внутренние отступы со всех сторон.\n */\n padding?: PaddingProp | undefined;\n /**\n * Внутренние отступы по строчной оси.\n */\n paddingInline?: PaddingProp | undefined;\n /**\n * Внутренние отступы по блочной оси.\n */\n paddingBlock?: PaddingProp | undefined;\n /**\n * Внутренний начальный отступ по строчной оси.\n */\n paddingInlineStart?: PaddingProp | undefined;\n /**\n * Внутренний конечный отступ по строчной оси.\n */\n paddingInlineEnd?: PaddingProp | undefined;\n /**\n * Внутренний начальный отступ по блочной оси.\n */\n paddingBlockStart?: PaddingProp | undefined;\n /**\n * Внутренний конечный отступ по блочной оси.\n */\n paddingBlockEnd?: PaddingProp | undefined;\n /**\n * Размер элемента по строчной оси (при горизонтальном направлении письма - ширина элемента).\n */\n inlineSize?: SizeProp | undefined;\n /**\n * Минимальный размер элемента по строчной оси (при горизонтальном направлении письма - ширина элемента).\n */\n minInlineSize?: Exclude<SizeProp, 'auto'> | undefined;\n /**\n * Максимальный размер элемента по строчной оси (при горизонтальном направлении письма - ширина элемента).\n */\n maxInlineSize?: Exclude<SizeProp, 'auto'> | undefined;\n /**\n * Размер элемента по блочной оси (при горизонтальном направлении письма - высота элемента).\n */\n blockSize?: SizeProp | undefined;\n /**\n * Минимальный размер элемента по блочной оси (при горизонтальном направлении письма - высота элемента).\n */\n minBlockSize?: SizeProp | undefined;\n /**\n * Максимальный размер элемента по блочной оси (при горизонтальном направлении письма - высота элемента).\n */\n maxBlockSize?: SizeProp | undefined;\n /**\n * Смещение элемента по `top`, `right`, `bottom` и `left` одновременно.\n */\n inset?: InsetProp | undefined;\n /**\n * Боковое смещение по строчной оси (при горизонтальном направлении письма - свойства `left`/`right`).\n */\n insetInline?: InsetProp | undefined;\n /**\n * Боковое смещение по блочной оси (при горизонтальном направлении письма - свойства `top`/`bottom`).\n */\n insetBlock?: InsetProp | undefined;\n /**\n * Смещение начального отступа по строчной оси (при горизонтальном направлении письма - свойство `left`).\n */\n insetInlineStart?: InsetProp | undefined;\n /**\n * Смещение конечного отступа по строчной оси (при горизонтальном направлении письма - свойство `right`).\n */\n insetInlineEnd?: InsetProp | undefined;\n /**\n * Смещение начального отступа по блочной оси (при горизонтальном направлении письма - свойство `top`).\n */\n insetBlockStart?: InsetProp | undefined;\n /**\n * Смещение конечного отступа по блочной оси (при горизонтальном направлении письма - свойство `bottom`).\n */\n insetBlockEnd?: InsetProp | undefined;\n /**\n * Позиционирование элемента.\n */\n position?: PositionValue | undefined;\n /**\n * Управление переполнением содержимого.\n */\n overflow?: OverflowValue | undefined;\n /**\n * Управление переполнением содержимого по блочной оси (при горизонтальном направлении письма - свойство `overflow-y`).\n */\n overflowBlock?: OverflowValue | undefined;\n /**\n * Управление переполнением содержимого по строчной оси (при горизонтальном направлении письма - свойство `overflow-x`).\n */\n overflowInline?: OverflowValue | undefined;\n /**\n * Определяет, насколько элемент будет расти относительно остальных flex-элементов.\n */\n flexGrow?: FlexGrowProp | undefined;\n /**\n * Определяет, насколько элемент будет сжиматься относительно остальных flex-элементов.\n */\n flexShrink?: FlexShrinkProp | undefined;\n /**\n * Определяет начальный размер flex-элемента.\n */\n flexBasis?: FlexBasisProp | undefined;\n /**\n * Для задания выравнивания, отличного от установленного на родителе, эквивалентно `align-self`.\n */\n alignSelf?: AlignSelfProp | undefined;\n /**\n * Для задания выравнивания, отличного от установленного на родителе, эквивалентно `justify-self`.\n */\n justifySelf?: JustifySelfProp | undefined;\n}\n"],"names":[],"mappings":"AAwCA,WAqHC"}
1
+ {"version":3,"sources":["../../../../src/lib/layouts/types.ts"],"sourcesContent":["import type { LiteralUnion } from '../../types';\n\n// Тип для размеров дизайн-системы, переименованный из GapPresets\nexport type DesignSystemSize = '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' | '2xl' | '3xl' | '4xl';\n\n// Глобальные CSS-значения\nexport type CSSGlobalValue = 'inherit' | 'initial' | 'unset';\n\n// Ключевые слова для внутренних размеров\nexport type CSSIntrinsicSizingKeywords = 'auto' | 'max-content' | 'min-content' | 'fit-content';\n\nexport type PositionValue = 'static' | 'relative' | 'absolute' | 'fixed' | 'sticky';\n\nexport type OverflowValue = 'visible' | 'hidden' | 'clip' | 'scroll' | 'auto' | CSSGlobalValue;\n\n// Тип для отступов\nexport type PaddingProp = LiteralUnion<\n DesignSystemSize | CSSGlobalValue | 'system',\n number | string\n>;\nexport type MarginProp = LiteralUnion<DesignSystemSize | CSSGlobalValue, number | string>;\n\n// Типы для параметров позиционирования\nexport type InsetProp = LiteralUnion<DesignSystemSize | CSSGlobalValue | 'auto', number | string>;\n\n// Тип для размеров\nexport type SizeProp = LiteralUnion<CSSGlobalValue | CSSIntrinsicSizingKeywords, number | string>;\n\n// Тип для управления flex-свойствами\nexport type FlexGrowProp = LiteralUnion<CSSGlobalValue, number>;\nexport type FlexShrinkProp = LiteralUnion<CSSGlobalValue, number>;\nexport type FlexBasisProp = LiteralUnion<\n CSSIntrinsicSizingKeywords | 'content' | CSSGlobalValue,\n number | string\n>;\n\ntype SelfPositionProp = 'start' | 'center' | 'end';\n\ntype AlignSelfProp = SelfPositionProp | 'baseline' | 'stretch';\ntype JustifySelfProp = SelfPositionProp | 'baseline' | 'stretch';\n\nexport interface LayoutProps {\n /**\n * Внешние отступы со всех сторон.\n */\n margin?: MarginProp | undefined;\n /**\n * Внешние отступы по строчной оси.\n */\n marginInline?: MarginProp | undefined;\n /**\n * Внешние отступы по блочной оси.\n */\n marginBlock?: MarginProp | undefined;\n /**\n * Внешний начальный отступ по строчной оси.\n */\n marginInlineStart?: MarginProp | undefined;\n /**\n * Внешний конечный отступ по строчной оси.\n */\n marginInlineEnd?: MarginProp | undefined;\n /**\n * Внешний начальный отступ по блочной оси.\n */\n marginBlockStart?: MarginProp | undefined;\n /**\n * Внешний конечный отступ по блочной оси.\n */\n marginBlockEnd?: MarginProp | undefined;\n /**\n * Внутренние отступы со всех сторон.\n */\n padding?: PaddingProp | undefined;\n /**\n * Внутренние отступы по строчной оси.\n */\n paddingInline?: PaddingProp | undefined;\n /**\n * Внутренние отступы по блочной оси.\n */\n paddingBlock?: PaddingProp | undefined;\n /**\n * Внутренний начальный отступ по строчной оси.\n */\n paddingInlineStart?: PaddingProp | undefined;\n /**\n * Внутренний конечный отступ по строчной оси.\n */\n paddingInlineEnd?: PaddingProp | undefined;\n /**\n * Внутренний начальный отступ по блочной оси.\n */\n paddingBlockStart?: PaddingProp | undefined;\n /**\n * Внутренний конечный отступ по блочной оси.\n */\n paddingBlockEnd?: PaddingProp | undefined;\n /**\n * Размер элемента по строчной оси (при горизонтальном направлении письма - ширина элемента).\n */\n inlineSize?: SizeProp | undefined;\n /**\n * Минимальный размер элемента по строчной оси (при горизонтальном направлении письма - ширина элемента).\n */\n minInlineSize?: Exclude<SizeProp, 'auto'> | undefined;\n /**\n * Максимальный размер элемента по строчной оси (при горизонтальном направлении письма - ширина элемента).\n */\n maxInlineSize?: Exclude<SizeProp, 'auto'> | undefined;\n /**\n * Размер элемента по блочной оси (при горизонтальном направлении письма - высота элемента).\n */\n blockSize?: SizeProp | undefined;\n /**\n * Минимальный размер элемента по блочной оси (при горизонтальном направлении письма - высота элемента).\n */\n minBlockSize?: SizeProp | undefined;\n /**\n * Максимальный размер элемента по блочной оси (при горизонтальном направлении письма - высота элемента).\n */\n maxBlockSize?: SizeProp | undefined;\n /**\n * Смещение элемента по `top`, `right`, `bottom` и `left` одновременно.\n */\n inset?: InsetProp | undefined;\n /**\n * Боковое смещение по строчной оси (при горизонтальном направлении письма - свойства `left`/`right`).\n */\n insetInline?: InsetProp | undefined;\n /**\n * Боковое смещение по блочной оси (при горизонтальном направлении письма - свойства `top`/`bottom`).\n */\n insetBlock?: InsetProp | undefined;\n /**\n * Смещение начального отступа по строчной оси (при горизонтальном направлении письма - свойство `left`).\n */\n insetInlineStart?: InsetProp | undefined;\n /**\n * Смещение конечного отступа по строчной оси (при горизонтальном направлении письма - свойство `right`).\n */\n insetInlineEnd?: InsetProp | undefined;\n /**\n * Смещение начального отступа по блочной оси (при горизонтальном направлении письма - свойство `top`).\n */\n insetBlockStart?: InsetProp | undefined;\n /**\n * Смещение конечного отступа по блочной оси (при горизонтальном направлении письма - свойство `bottom`).\n */\n insetBlockEnd?: InsetProp | undefined;\n /**\n * Позиционирование элемента.\n */\n position?: PositionValue | undefined;\n /**\n * Управление переполнением содержимого.\n */\n overflow?: OverflowValue | undefined;\n /**\n * Управление переполнением содержимого по блочной оси (при горизонтальном направлении письма - свойство `overflow-y`).\n */\n overflowBlock?: OverflowValue | undefined;\n /**\n * Управление переполнением содержимого по строчной оси (при горизонтальном направлении письма - свойство `overflow-x`).\n */\n overflowInline?: OverflowValue | undefined;\n /**\n * Определяет, насколько элемент будет расти относительно остальных flex-элементов.\n */\n flexGrow?: FlexGrowProp | undefined;\n /**\n * Определяет, насколько элемент будет сжиматься относительно остальных flex-элементов.\n */\n flexShrink?: FlexShrinkProp | undefined;\n /**\n * Определяет начальный размер flex-элемента.\n */\n flexBasis?: FlexBasisProp | undefined;\n /**\n * Для задания выравнивания, отличного от установленного на родителе, эквивалентно `align-self`.\n */\n alignSelf?: AlignSelfProp | undefined;\n /**\n * Для задания выравнивания, отличного от установленного на родителе, эквивалентно `justify-self`.\n */\n justifySelf?: JustifySelfProp | undefined;\n}\n"],"names":[],"mappings":"AAyCA,WAiJC"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { RootComponent } from "../../../components/RootComponent/RootComponent.js";
3
+ import { svgPathToString } from "../../svg/path/path.js";
4
+ import * as shapes from "./shapes.js";
5
+ export function Shape({ size = 24, params, ...props }) {
6
+ return /*#__PURE__*/ _jsx(RootComponent, {
7
+ Component: "svg",
8
+ width: size,
9
+ height: size,
10
+ ...props,
11
+ children: /*#__PURE__*/ _jsx("path", {
12
+ d: svgPathToString(shapes.shape(params, size)),
13
+ fill: "currentColor"
14
+ })
15
+ });
16
+ }
17
+
18
+ //# sourceMappingURL=Shape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/lib/material/shapes/Shape.tsx"],"sourcesContent":["import { RootComponent } from '../../../components/RootComponent/RootComponent';\nimport { type HasRootRef } from '../../../types';\nimport { svgPathToString } from '../../svg/path/path';\nimport * as shapes from './shapes';\n\nexport interface ShapeProps extends React.ComponentProps<'svg'>, HasRootRef<SVGElement> {\n size?: number;\n params: shapes.ShapeParameters;\n}\n\nexport function Shape({ size = 24, params, ...props }: ShapeProps) {\n return (\n <RootComponent Component=\"svg\" width={size} height={size} {...props}>\n <path d={svgPathToString(shapes.shape(params, size))} fill=\"currentColor\" />\n </RootComponent>\n );\n}\n"],"names":["RootComponent","svgPathToString","shapes","Shape","size","params","props","Component","width","height","path","d","shape","fill"],"mappings":";AAAA,SAASA,aAAa,QAAQ,qDAAkD;AAEhF,SAASC,eAAe,QAAQ,yBAAsB;AACtD,YAAYC,YAAY,cAAW;AAOnC,OAAO,SAASC,MAAM,EAAEC,OAAO,EAAE,EAAEC,MAAM,EAAE,GAAGC,OAAmB;IAC/D,qBACE,KAACN;QAAcO,WAAU;QAAMC,OAAOJ;QAAMK,QAAQL;QAAO,GAAGE,KAAK;kBACjE,cAAA,KAACI;YAAKC,GAAGV,gBAAgBC,OAAOU,KAAK,CAACP,QAAQD;YAAQS,MAAK;;;AAGjE"}