@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
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/material/shapes/shapes.ts"],"sourcesContent":["/**\n * Набор форм M3\n *\n * https://m3.material.io/styles/shape/overview-principles\n */\nimport { type DeepReadonly, type ReadonlyWeakMap } from '../../../types';\nimport { type SVGPathSupport } from '../../svg/path/path';\nimport * as transform from '../../svg/path/transform';\n\nexport interface ShapeParameters {\n /**\n * SVG путь для фигуры размером [0,1] на [0,1]\n */\n readonly path: DeepReadonly<SVGPathSupport>;\n /**\n * Масштабирующий коэффициент предназначен для возможности помещения\n * в произвольный контейнер фигуры учитывая вращение\n */\n readonly rotateScaleFactor: number;\n}\n\n/**\n * Возвращает фигуру определенного размера\n */\nexport function shape(shapeParams: ShapeParameters, size: number): SVGPathSupport {\n return transform.scale(shapeParams.path, size, size);\n}\n\n/**\n * Возвращает фигуру с возможностью поворота, которая помещается в контейнер\n * определенного размера\n */\nexport function shapeWithRotate(shapeParams: ShapeParameters, size: number): SVGPathSupport {\n const scaleSize = shapeParams.rotateScaleFactor * size;\n const translateFactor = (size - scaleSize) / 2;\n\n return transform.translate(shape(shapeParams, scaleSize), translateFactor, translateFactor);\n}\n\nexport const ovalParams: ShapeParameters = {\n path: [\n ['M', [0.771, 0.771]],\n ['C', [0.539, 1.003, 0.2296, 1.0698, 0.0799, 0.9201]],\n ['C', [-0.0698, 0.7704, -0.003, 0.461, 0.229, 0.229]],\n ['C', [0.461, -0.003, 0.7704, -0.0698, 0.9201, 0.0799]],\n ['C', [1.0698, 0.2296, 1.003, 0.539, 0.771, 0.771]],\n ['Z', []],\n ],\n rotateScaleFactor: 30 / 38,\n};\n\nexport const cookie4Params: ShapeParameters = {\n path: [\n ['M', [0.6383, 0.0222]],\n ['C', [0.8531, -0.0711, 1.0711, 0.1469, 0.9778, 0.3617]],\n ['L', [0.9624, 0.3972]],\n ['C', [0.9339, 0.4628, 0.9339, 0.5372, 0.9624, 0.6028]],\n ['L', [0.9778, 0.6383]],\n ['C', [1.0711, 0.8531, 0.8531, 1.0711, 0.6383, 0.9778]],\n ['L', [0.6028, 0.9624]],\n ['C', [0.5372, 0.9339, 0.4628, 0.9339, 0.3972, 0.9624]],\n ['L', [0.3617, 0.9778]],\n ['C', [0.1469, 1.0711, -0.0711, 0.8531, 0.0222, 0.6383]],\n ['L', [0.0376, 0.6028]],\n ['C', [0.0661, 0.5372, 0.0661, 0.4628, 0.0376, 0.3972]],\n ['L', [0.0222, 0.3617]],\n ['C', [-0.0711, 0.1469, 0.1469, -0.0711, 0.3617, 0.0222]],\n ['L', [0.3972, 0.0376]],\n ['C', [0.4628, 0.0661, 0.5372, 0.0661, 0.6028, 0.0376]],\n ['L', [0.6383, 0.0222]],\n ['Z', []],\n ],\n rotateScaleFactor: 28 / 38,\n};\n\nexport const sunnyParams: ShapeParameters = {\n path: [\n ['M', [0.7702, 0.1213]],\n ['C', [0.8013, 0.1234, 0.8168, 0.1245, 0.8294, 0.13]],\n ['C', [0.8476, 0.1379, 0.8621, 0.1524, 0.87, 0.1706]],\n ['C', [0.8755, 0.1832, 0.8766, 0.1987, 0.8787, 0.2298]],\n ['L', [0.8835, 0.3008]],\n ['C', [0.8844, 0.3134, 0.8848, 0.3197, 0.8862, 0.3257]],\n ['C', [0.8882, 0.3344, 0.8916, 0.3426, 0.8963, 0.3502]],\n ['C', [0.8996, 0.3554, 0.9038, 0.3601, 0.912, 0.3696]],\n ['L', [0.9588, 0.4232]],\n ['C', [0.9793, 0.4467, 0.9896, 0.4585, 0.9946, 0.4712]],\n ['C', [1.0018, 0.4897, 1.0018, 0.5103, 0.9946, 0.5287]],\n ['C', [0.9896, 0.5415, 0.9793, 0.5533, 0.9588, 0.5768]],\n ['L', [0.912, 0.6303]],\n ['C', [0.9038, 0.6398, 0.8996, 0.6446, 0.8963, 0.6498]],\n ['C', [0.8916, 0.6573, 0.8882, 0.6656, 0.8862, 0.6743]],\n ['C', [0.8848, 0.6803, 0.8844, 0.6866, 0.8835, 0.6992]],\n ['L', [0.8787, 0.7702]],\n ['C', [0.8766, 0.8013, 0.8755, 0.8168, 0.87, 0.8294]],\n ['C', [0.8621, 0.8476, 0.8476, 0.8621, 0.8294, 0.87]],\n ['C', [0.8168, 0.8755, 0.8013, 0.8766, 0.7702, 0.8787]],\n ['L', [0.6992, 0.8835]],\n ['C', [0.6866, 0.8844, 0.6803, 0.8848, 0.6743, 0.8862]],\n ['C', [0.6656, 0.8882, 0.6573, 0.8916, 0.6498, 0.8963]],\n ['C', [0.6446, 0.8996, 0.6398, 0.9038, 0.6303, 0.912]],\n ['L', [0.5768, 0.9588]],\n ['C', [0.5533, 0.9793, 0.5415, 0.9896, 0.5287, 0.9946]],\n ['C', [0.5103, 1.0018, 0.4897, 1.0018, 0.4712, 0.9946]],\n ['C', [0.4585, 0.9896, 0.4467, 0.9793, 0.4232, 0.9588]],\n ['L', [0.3696, 0.912]],\n ['C', [0.3601, 0.9038, 0.3554, 0.8996, 0.3502, 0.8963]],\n ['C', [0.3426, 0.8916, 0.3344, 0.8882, 0.3257, 0.8862]],\n ['C', [0.3197, 0.8848, 0.3134, 0.8844, 0.3008, 0.8835]],\n ['L', [0.2298, 0.8787]],\n ['C', [0.1987, 0.8766, 0.1832, 0.8755, 0.1706, 0.87]],\n ['C', [0.1524, 0.8621, 0.1379, 0.8476, 0.13, 0.8294]],\n ['C', [0.1245, 0.8168, 0.1234, 0.8013, 0.1213, 0.7702]],\n ['L', [0.1165, 0.6992]],\n ['C', [0.1156, 0.6866, 0.1152, 0.6803, 0.1138, 0.6743]],\n ['C', [0.1118, 0.6656, 0.1084, 0.6573, 0.1037, 0.6498]],\n ['C', [0.1004, 0.6446, 0.0962, 0.6398, 0.0879, 0.6303]],\n ['L', [0.0412, 0.5768]],\n ['C', [0.0207, 0.5533, 0.0104, 0.5415, 0.0054, 0.5287]],\n ['C', [-0.0018, 0.5103, -0.0018, 0.4897, 0.0054, 0.4712]],\n ['C', [0.0104, 0.4585, 0.0207, 0.4467, 0.0412, 0.4232]],\n ['L', [0.0879, 0.3696]],\n ['C', [0.0962, 0.3601, 0.1004, 0.3554, 0.1037, 0.3502]],\n ['C', [0.1084, 0.3426, 0.1118, 0.3344, 0.1138, 0.3257]],\n ['C', [0.1152, 0.3197, 0.1156, 0.3134, 0.1165, 0.3008]],\n ['L', [0.1213, 0.2298]],\n ['C', [0.1234, 0.1987, 0.1245, 0.1832, 0.13, 0.1706]],\n ['C', [0.1379, 0.1524, 0.1524, 0.1379, 0.1706, 0.13]],\n ['C', [0.1832, 0.1245, 0.1987, 0.1234, 0.2298, 0.1213]],\n ['L', [0.3008, 0.1165]],\n ['C', [0.3134, 0.1156, 0.3197, 0.1152, 0.3257, 0.1138]],\n ['C', [0.3344, 0.1118, 0.3426, 0.1084, 0.3502, 0.1037]],\n ['C', [0.3554, 0.1004, 0.3601, 0.0962, 0.3696, 0.0879]],\n ['L', [0.4232, 0.0412]],\n ['C', [0.4467, 0.0207, 0.4585, 0.0104, 0.4712, 0.0054]],\n ['C', [0.4897, -0.0018, 0.5103, -0.0018, 0.5287, 0.0054]],\n ['C', [0.5415, 0.0104, 0.5533, 0.0207, 0.5768, 0.0412]],\n ['L', [0.6303, 0.0879]],\n ['C', [0.6398, 0.0962, 0.6446, 0.1004, 0.6498, 0.1037]],\n ['C', [0.6573, 0.1084, 0.6656, 0.1118, 0.6743, 0.1138]],\n ['C', [0.6803, 0.1152, 0.6866, 0.1156, 0.6992, 0.1165]],\n ['L', [0.7702, 0.1213]],\n ['Z', []],\n ],\n rotateScaleFactor: 34 / 38,\n};\n\nexport const pillParams: ShapeParameters = {\n path: [\n ['M', [0.2662, 0.1259]],\n ['C', [0.4341, -0.042, 0.7062, -0.042, 0.8741, 0.1259]],\n ['C', [1.042, 0.2938, 1.042, 0.5659, 0.8741, 0.7338]],\n ['L', [0.7338, 0.8741]],\n ['C', [0.5659, 1.042, 0.2938, 1.042, 0.1259, 0.8741]],\n ['C', [-0.042, 0.7062, -0.042, 0.4341, 0.1259, 0.2662]],\n ['L', [0.2662, 0.1259]],\n ['Z', []],\n ],\n rotateScaleFactor: 30 / 38,\n};\n\nexport const pentagonParams: ShapeParameters = {\n path: [\n ['M', [0.3426, 0.0864]],\n ['C', [0.3914, 0.0509, 0.4158, 0.0331, 0.4418, 0.0243]],\n ['C', [0.4795, 0.0115, 0.5205, 0.0115, 0.5582, 0.0243]],\n ['C', [0.5842, 0.0331, 0.6086, 0.0509, 0.6574, 0.0864]],\n ['L', [0.7641, 0.1641]],\n ['L', [0.8707, 0.237]],\n ['C', [0.9213, 0.2715, 0.9466, 0.2888, 0.9635, 0.3105]],\n ['C', [0.988, 0.3419, 1.0008, 0.3806, 1, 0.4201]],\n ['C', [0.9994, 0.4474, 0.9893, 0.4759, 0.9692, 0.533]],\n ['L', [0.9273, 0.6519]],\n ['L', [0.8887, 0.7738]],\n ['C', [0.8705, 0.8309, 0.8615, 0.8595, 0.8456, 0.8818]],\n ['C', [0.8227, 0.9139, 0.7894, 0.9376, 0.751, 0.9489]],\n ['C', [0.7245, 0.9568, 0.6939, 0.9563, 0.6328, 0.9554]],\n ['L', [0.5, 0.9534]],\n ['L', [0.3672, 0.9554]],\n ['C', [0.3061, 0.9563, 0.2755, 0.9568, 0.249, 0.9489]],\n ['C', [0.2106, 0.9376, 0.1773, 0.9139, 0.1544, 0.8818]],\n ['C', [0.1385, 0.8595, 0.1295, 0.8309, 0.1113, 0.7738]],\n ['L', [0.0727, 0.6519]],\n ['L', [0.0308, 0.533]],\n ['C', [0.0107, 0.4759, 0.0006, 0.4474, 0, 0.4201]],\n ['C', [-0.0008, 0.3806, 0.012, 0.3419, 0.0365, 0.3105]],\n ['C', [0.0534, 0.2888, 0.0787, 0.2715, 0.1293, 0.237]],\n ['L', [0.2359, 0.1641]],\n ['L', [0.3426, 0.0864]],\n ['Z', []],\n ],\n rotateScaleFactor: 34 / 38,\n};\n\nexport const cookie9Params: ShapeParameters = {\n path: [\n ['M', [0.3914, 0.0472]],\n ['C', [0.3968, 0.0428, 0.3995, 0.0406, 0.402, 0.0387]],\n ['C', [0.46, -0.0051, 0.54, -0.0051, 0.598, 0.0387]],\n ['C', [0.6005, 0.0406, 0.6032, 0.0428, 0.6086, 0.0472]],\n ['C', [0.611, 0.0491, 0.6122, 0.0501, 0.6134, 0.051]],\n ['C', [0.6406, 0.0725, 0.6741, 0.0846, 0.7088, 0.0857]],\n ['C', [0.7103, 0.0858, 0.7119, 0.0858, 0.715, 0.0858]],\n ['C', [0.7219, 0.0859, 0.7254, 0.0859, 0.7285, 0.0861]],\n ['C', [0.8011, 0.0898, 0.8625, 0.1411, 0.8787, 0.2118]],\n ['C', [0.8794, 0.2148, 0.88, 0.2182, 0.8813, 0.2251]],\n ['C', [0.8819, 0.2281, 0.8822, 0.2296, 0.8825, 0.2311]],\n ['C', [0.8896, 0.265, 0.9074, 0.2958, 0.9333, 0.3189]],\n ['C', [0.9344, 0.3199, 0.9356, 0.3209, 0.9379, 0.3229]],\n ['C', [0.9432, 0.3274, 0.9458, 0.3297, 0.9481, 0.3318]],\n ['C', [1.0014, 0.3812, 1.0153, 0.4598, 0.9821, 0.5244]],\n ['C', [0.9807, 0.5271, 0.979, 0.5302, 0.9756, 0.5362]],\n ['C', [0.9741, 0.5389, 0.9733, 0.5403, 0.9726, 0.5416]],\n ['C', [0.9562, 0.5722, 0.95, 0.6071, 0.955, 0.6414]],\n ['C', [0.9552, 0.6429, 0.9555, 0.6445, 0.956, 0.6475]],\n ['C', [0.9571, 0.6544, 0.9576, 0.6578, 0.958, 0.6609]],\n ['C', [0.967, 0.7328, 0.927, 0.802, 0.86, 0.8302]],\n ['C', [0.8572, 0.8314, 0.8539, 0.8327, 0.8474, 0.8351]],\n ['C', [0.8445, 0.8362, 0.843, 0.8368, 0.8416, 0.8373]],\n ['C', [0.8094, 0.8502, 0.7821, 0.873, 0.7638, 0.9025]],\n ['C', [0.763, 0.9038, 0.7622, 0.9051, 0.7606, 0.9078]],\n ['C', [0.7571, 0.9137, 0.7553, 0.9167, 0.7536, 0.9193]],\n ['C', [0.7142, 0.9802, 0.6389, 1.0075, 0.5694, 0.9862]],\n ['C', [0.5665, 0.9853, 0.5632, 0.9841, 0.5566, 0.9818]],\n ['C', [0.5537, 0.9808, 0.5522, 0.9803, 0.5508, 0.9798]],\n ['C', [0.5178, 0.969, 0.4822, 0.969, 0.4492, 0.9798]],\n ['C', [0.4478, 0.9803, 0.4463, 0.9808, 0.4434, 0.9818]],\n ['C', [0.4368, 0.9841, 0.4335, 0.9853, 0.4306, 0.9862]],\n ['C', [0.3611, 1.0075, 0.2858, 0.9802, 0.2464, 0.9193]],\n ['C', [0.2447, 0.9167, 0.2429, 0.9137, 0.2394, 0.9078]],\n ['C', [0.2378, 0.9051, 0.237, 0.9038, 0.2362, 0.9025]],\n ['C', [0.2179, 0.873, 0.1906, 0.8502, 0.1584, 0.8373]],\n ['C', [0.157, 0.8368, 0.1555, 0.8362, 0.1526, 0.8351]],\n ['C', [0.1461, 0.8327, 0.1428, 0.8314, 0.14, 0.8302]],\n ['C', [0.073, 0.802, 0.033, 0.7328, 0.042, 0.6609]],\n ['C', [0.0424, 0.6578, 0.0429, 0.6544, 0.044, 0.6475]],\n ['C', [0.0445, 0.6445, 0.0448, 0.6429, 0.045, 0.6414]],\n ['C', [0.05, 0.6071, 0.0438, 0.5722, 0.0274, 0.5416]],\n ['C', [0.0267, 0.5403, 0.0259, 0.5389, 0.0244, 0.5362]],\n ['C', [0.021, 0.5302, 0.0193, 0.5271, 0.0179, 0.5244]],\n ['C', [-0.0153, 0.4598, -0.0014, 0.3812, 0.0519, 0.3318]],\n ['C', [0.0542, 0.3297, 0.0568, 0.3274, 0.0621, 0.3229]],\n ['C', [0.0644, 0.3209, 0.0656, 0.3199, 0.0667, 0.3189]],\n ['C', [0.0926, 0.2958, 0.1104, 0.265, 0.1175, 0.2311]],\n ['C', [0.1178, 0.2296, 0.1181, 0.2281, 0.1187, 0.2251]],\n ['C', [0.12, 0.2182, 0.1206, 0.2148, 0.1213, 0.2118]],\n ['C', [0.1375, 0.1411, 0.1989, 0.0898, 0.2715, 0.0861]],\n ['C', [0.2746, 0.0859, 0.2781, 0.0859, 0.285, 0.0858]],\n ['C', [0.2881, 0.0858, 0.2897, 0.0858, 0.2912, 0.0857]],\n ['C', [0.3259, 0.0846, 0.3594, 0.0725, 0.3866, 0.051]],\n ['C', [0.3878, 0.0501, 0.389, 0.0491, 0.3914, 0.0472]],\n ['Z', []],\n ],\n rotateScaleFactor: 34 / 38,\n};\n\nexport const softBurstParams: ShapeParameters = {\n path: [\n ['M', [0.4549, 0.0247]],\n ['C', [0.4757, -0.0082, 0.5243, -0.0082, 0.545, 0.0247]],\n ['L', [0.5947, 0.1036]],\n ['C', [0.6084, 0.1253, 0.6359, 0.1341, 0.6598, 0.1245]],\n ['L', [0.7471, 0.0894]],\n ['C', [0.7835, 0.0747, 0.8229, 0.1029, 0.82, 0.1416]],\n ['L', [0.8131, 0.2342]],\n ['C', [0.8112, 0.2596, 0.8282, 0.2827, 0.8533, 0.2887]],\n ['L', [0.9449, 0.3109]],\n ['C', [0.9831, 0.3202, 0.9981, 0.3657, 0.9727, 0.3953]],\n ['L', [0.9119, 0.4663]],\n ['C', [0.8952, 0.4858, 0.8952, 0.5142, 0.9119, 0.5337]],\n ['L', [0.9727, 0.6047]],\n ['C', [0.9981, 0.6343, 0.9831, 0.6798, 0.9449, 0.6891]],\n ['L', [0.8533, 0.7113]],\n ['C', [0.8282, 0.7173, 0.8112, 0.7404, 0.8131, 0.7658]],\n ['L', [0.82, 0.8584]],\n ['C', [0.8229, 0.8971, 0.7835, 0.9252, 0.7471, 0.9106]],\n ['L', [0.6598, 0.8755]],\n ['C', [0.6359, 0.8659, 0.6084, 0.8747, 0.5947, 0.8964]],\n ['L', [0.545, 0.9753]],\n ['C', [0.5243, 1.0082, 0.4757, 1.0082, 0.4549, 0.9753]],\n ['L', [0.4053, 0.8964]],\n ['C', [0.3916, 0.8747, 0.3641, 0.8659, 0.3402, 0.8755]],\n ['L', [0.2529, 0.9106]],\n ['C', [0.2165, 0.9252, 0.1771, 0.8971, 0.18, 0.8584]],\n ['L', [0.1869, 0.7658]],\n ['C', [0.1888, 0.7404, 0.1718, 0.7173, 0.1467, 0.7113]],\n ['L', [0.0551, 0.6891]],\n ['C', [0.0169, 0.6798, 0.0019, 0.6343, 0.0273, 0.6047]],\n ['L', [0.0881, 0.5337]],\n ['C', [0.1048, 0.5142, 0.1048, 0.4858, 0.0881, 0.4663]],\n ['L', [0.0273, 0.3953]],\n ['C', [0.0019, 0.3657, 0.0169, 0.3202, 0.0551, 0.3109]],\n ['L', [0.1467, 0.2887]],\n ['C', [0.1718, 0.2827, 0.1888, 0.2596, 0.1869, 0.2342]],\n ['L', [0.18, 0.1416]],\n ['C', [0.1771, 0.1029, 0.2165, 0.0747, 0.2529, 0.0894]],\n ['L', [0.3402, 0.1245]],\n ['C', [0.3641, 0.1341, 0.3916, 0.1253, 0.4053, 0.1036]],\n ['L', [0.4549, 0.0247]],\n ['Z', []],\n ],\n rotateScaleFactor: 34 / 38,\n};\n\n/**\n * Список всех форм\n */\nexport const shapeList = [\n ovalParams,\n pillParams,\n pentagonParams,\n sunnyParams,\n cookie4Params,\n cookie9Params,\n softBurstParams,\n] as const;\n\n/**\n * Название форм\n */\nexport const shapeNameMap: ReadonlyWeakMap<ShapeParameters, string> = new WeakMap([\n [ovalParams, 'Oval'],\n [pillParams, 'Pill'],\n [pentagonParams, 'Pentagon'],\n [sunnyParams, 'Sunny'],\n [cookie4Params, '4-sided cookie'],\n [cookie9Params, '9-sided cookie'],\n [softBurstParams, 'Soft burst'],\n]);\n"],"names":["transform","shape","shapeParams","size","scale","path","shapeWithRotate","scaleSize","rotateScaleFactor","translateFactor","translate","ovalParams","cookie4Params","sunnyParams","pillParams","pentagonParams","cookie9Params","softBurstParams","shapeList","shapeNameMap","WeakMap"],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Евклидово расстояние между двумя точками
3
+ *
4
+ * ```ts
5
+ * import { distancePoint } from './math';
6
+ * import * as assert from 'node:assert/strict';
7
+ *
8
+ * assert.equal(distance(1, 1, 4, 5), 5)
9
+ * ```
10
+ */
11
+ export declare function distance(x1: number, y1: number, x2: number, y2: number): number;
12
+ /**
13
+ * Евклидово расстояние между двумя точками
14
+ *
15
+ * ```ts
16
+ * import { distancePoint } from './math';
17
+ * import * as assert from 'node:assert/strict';
18
+ *
19
+ * assert.equal(distancePoint([1, 1], [4, 5]), 5)
20
+ * ```
21
+ */
22
+ export declare function distancePoint([x1, y1]: readonly [number, number], [x2, y2]: readonly [number, number]): number;
23
+ //# sourceMappingURL=math.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/lib/math.ts"],"names":[],"mappings":"AAOA;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAE/E;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,MAAM,CAER"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Длина гипотенузы
3
+ */ function hypotenuse(a, b) {
4
+ return Math.sqrt(a * a + b * b);
5
+ }
6
+ /**
7
+ * Евклидово расстояние между двумя точками
8
+ *
9
+ * ```ts
10
+ * import { distancePoint } from './math';
11
+ * import * as assert from 'node:assert/strict';
12
+ *
13
+ * assert.equal(distance(1, 1, 4, 5), 5)
14
+ * ```
15
+ */ export function distance(x1, y1, x2, y2) {
16
+ return hypotenuse(x1 - x2, y1 - y2);
17
+ }
18
+ /**
19
+ * Евклидово расстояние между двумя точками
20
+ *
21
+ * ```ts
22
+ * import { distancePoint } from './math';
23
+ * import * as assert from 'node:assert/strict';
24
+ *
25
+ * assert.equal(distancePoint([1, 1], [4, 5]), 5)
26
+ * ```
27
+ */ export function distancePoint([x1, y1], [x2, y2]) {
28
+ return distance(x1, y1, x2, y2);
29
+ }
30
+
31
+ //# sourceMappingURL=math.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/math.ts"],"sourcesContent":["/**\n * Длина гипотенузы\n */\nfunction hypotenuse(a: number, b: number): number {\n return Math.sqrt(a * a + b * b);\n}\n\n/**\n * Евклидово расстояние между двумя точками\n *\n * ```ts\n * import { distancePoint } from './math';\n * import * as assert from 'node:assert/strict';\n *\n * assert.equal(distance(1, 1, 4, 5), 5)\n * ```\n */\nexport function distance(x1: number, y1: number, x2: number, y2: number): number {\n return hypotenuse(x1 - x2, y1 - y2);\n}\n\n/**\n * Евклидово расстояние между двумя точками\n *\n * ```ts\n * import { distancePoint } from './math';\n * import * as assert from 'node:assert/strict';\n *\n * assert.equal(distancePoint([1, 1], [4, 5]), 5)\n * ```\n */\nexport function distancePoint(\n [x1, y1]: readonly [number, number],\n [x2, y2]: readonly [number, number],\n): number {\n return distance(x1, y1, x2, y2);\n}\n"],"names":["hypotenuse","a","b","Math","sqrt","distance","x1","y1","x2","y2","distancePoint"],"mappings":"AAAA;;CAEC,GACD,SAASA,WAAWC,CAAS,EAAEC,CAAS;IACtC,OAAOC,KAAKC,IAAI,CAACH,IAAIA,IAAIC,IAAIA;AAC/B;AAEA;;;;;;;;;CASC,GACD,OAAO,SAASG,SAASC,EAAU,EAAEC,EAAU,EAAEC,EAAU,EAAEC,EAAU;IACrE,OAAOT,WAAWM,KAAKE,IAAID,KAAKE;AAClC;AAEA;;;;;;;;;CASC,GACD,OAAO,SAASC,cACd,CAACJ,IAAIC,GAA8B,EACnC,CAACC,IAAIC,GAA8B;IAEnC,OAAOJ,SAASC,IAAIC,IAAIC,IAAIC;AAC9B"}
@@ -0,0 +1,21 @@
1
+ import { type DeepReadonly } from '../../../types';
2
+ import type { SVGPathSupport } from './path';
3
+ import { type Points } from './point';
4
+ export interface MaxSegmentLengthOptions {
5
+ maxSegmentLength?: number;
6
+ }
7
+ /**
8
+ * Аппроксимирует svg путь в точки
9
+ *
10
+ * ```ts
11
+ * import * as approximate from './approximate';
12
+ * import * as assert from 'node:assert/strict';
13
+ *
14
+ * assert.equal(
15
+ * approximate.approximateRing([['M', [20, 40]], ['L', [40, 60]]]),
16
+ * [[20, 40], [40, 60]],
17
+ * );
18
+ * ```
19
+ */
20
+ export declare function approximateRing(path: DeepReadonly<SVGPathSupport>, { maxSegmentLength }?: MaxSegmentLengthOptions): Points;
21
+ //# sourceMappingURL=approximate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approximate.d.ts","sourceRoot":"","sources":["../../../../src/lib/svg/path/approximate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAInD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;AAElD,MAAM,WAAW,uBAAuB;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAgCD;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,YAAY,CAAC,cAAc,CAAC,EAClC,EAAE,gBAAoB,EAAE,GAAE,uBAA4B,GACrD,MAAM,CAuBR"}
@@ -0,0 +1,57 @@
1
+ import * as array from "../../array.js";
2
+ import { cubicBezierTwoDimensional } from "../../curve.js";
3
+ import { distancePoint } from "../../math.js";
4
+ /**
5
+ * Аппроксимирует кривую Безье в точки
6
+ */ function approximateCurves(prevPoint, args, { maxSegmentLength }) {
7
+ const distancePoints = distancePoint([
8
+ args[4],
9
+ args[5]
10
+ ], prevPoint);
11
+ const acc = new Array(Math.ceil(Math.max(2, distancePoints / maxSegmentLength)));
12
+ for(let index = 0; index < acc.length; index++){
13
+ const progress = Math.min(1, maxSegmentLength / distancePoints * index);
14
+ acc[index] = cubicBezierTwoDimensional(prevPoint[0], prevPoint[1], args[0], args[1], args[2], args[3], args[4], args[5], progress);
15
+ }
16
+ return acc;
17
+ }
18
+ /**
19
+ * Аппроксимирует svg путь в точки
20
+ *
21
+ * ```ts
22
+ * import * as approximate from './approximate';
23
+ * import * as assert from 'node:assert/strict';
24
+ *
25
+ * assert.equal(
26
+ * approximate.approximateRing([['M', [20, 40]], ['L', [40, 60]]]),
27
+ * [[20, 40], [40, 60]],
28
+ * );
29
+ * ```
30
+ */ export function approximateRing(path, { maxSegmentLength = 1 } = {}) {
31
+ const prevPoint = [
32
+ 0,
33
+ 0
34
+ ];
35
+ return path.reduce((acc, [command, args])=>{
36
+ switch(command){
37
+ case 'M':
38
+ case 'L':
39
+ acc.push(array.copy(args));
40
+ prevPoint[0] = args[0];
41
+ prevPoint[1] = args[1];
42
+ break;
43
+ case 'C':
44
+ acc.push(...approximateCurves(prevPoint, array.copy(args), {
45
+ maxSegmentLength
46
+ }));
47
+ prevPoint[0] = args[4];
48
+ prevPoint[1] = args[5];
49
+ break;
50
+ case 'Z':
51
+ break;
52
+ }
53
+ return acc;
54
+ }, []);
55
+ }
56
+
57
+ //# sourceMappingURL=approximate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/svg/path/approximate.ts"],"sourcesContent":["import { type DeepReadonly } from '../../../types';\nimport * as array from '../../array';\nimport { cubicBezierTwoDimensional } from '../../curve';\nimport { distancePoint } from '../../math';\nimport type { SVGPathSupport } from './path';\nimport { type Point, type Points } from './point';\n\nexport interface MaxSegmentLengthOptions {\n maxSegmentLength?: number;\n}\n\n/**\n * Аппроксимирует кривую Безье в точки\n */\nfunction approximateCurves(\n prevPoint: [number, number],\n args: [number, number, number, number, number, number],\n { maxSegmentLength }: Required<MaxSegmentLengthOptions>,\n): Points {\n const distancePoints = distancePoint([args[4], args[5]], prevPoint);\n const acc: Points = new Array(Math.ceil(Math.max(2, distancePoints / maxSegmentLength)));\n\n for (let index = 0; index < acc.length; index++) {\n const progress = Math.min(1, (maxSegmentLength / distancePoints) * index);\n\n acc[index] = cubicBezierTwoDimensional(\n prevPoint[0],\n prevPoint[1],\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5],\n progress,\n );\n }\n\n return acc;\n}\n\n/**\n * Аппроксимирует svg путь в точки\n *\n * ```ts\n * import * as approximate from './approximate';\n * import * as assert from 'node:assert/strict';\n *\n * assert.equal(\n * approximate.approximateRing([['M', [20, 40]], ['L', [40, 60]]]),\n * [[20, 40], [40, 60]],\n * );\n * ```\n */\nexport function approximateRing(\n path: DeepReadonly<SVGPathSupport>,\n { maxSegmentLength = 1 }: MaxSegmentLengthOptions = {},\n): Points {\n const prevPoint: Point = [0, 0];\n\n return path.reduce<Points>((acc, [command, args]) => {\n switch (command) {\n case 'M':\n case 'L':\n acc.push(array.copy(args));\n prevPoint[0] = args[0];\n prevPoint[1] = args[1];\n break;\n case 'C':\n acc.push(...approximateCurves(prevPoint, array.copy(args), { maxSegmentLength }));\n prevPoint[0] = args[4];\n prevPoint[1] = args[5];\n\n break;\n case 'Z':\n break;\n }\n\n return acc;\n }, []);\n}\n"],"names":["array","cubicBezierTwoDimensional","distancePoint","approximateCurves","prevPoint","args","maxSegmentLength","distancePoints","acc","Array","Math","ceil","max","index","length","progress","min","approximateRing","path","reduce","command","push","copy"],"mappings":"AACA,YAAYA,WAAW,iBAAc;AACrC,SAASC,yBAAyB,QAAQ,iBAAc;AACxD,SAASC,aAAa,QAAQ,gBAAa;AAQ3C;;CAEC,GACD,SAASC,kBACPC,SAA2B,EAC3BC,IAAsD,EACtD,EAAEC,gBAAgB,EAAqC;IAEvD,MAAMC,iBAAiBL,cAAc;QAACG,IAAI,CAAC,EAAE;QAAEA,IAAI,CAAC,EAAE;KAAC,EAAED;IACzD,MAAMI,MAAc,IAAIC,MAAMC,KAAKC,IAAI,CAACD,KAAKE,GAAG,CAAC,GAAGL,iBAAiBD;IAErE,IAAK,IAAIO,QAAQ,GAAGA,QAAQL,IAAIM,MAAM,EAAED,QAAS;QAC/C,MAAME,WAAWL,KAAKM,GAAG,CAAC,GAAG,AAACV,mBAAmBC,iBAAkBM;QAEnEL,GAAG,CAACK,MAAM,GAAGZ,0BACXG,SAAS,CAAC,EAAE,EACZA,SAAS,CAAC,EAAE,EACZC,IAAI,CAAC,EAAE,EACPA,IAAI,CAAC,EAAE,EACPA,IAAI,CAAC,EAAE,EACPA,IAAI,CAAC,EAAE,EACPA,IAAI,CAAC,EAAE,EACPA,IAAI,CAAC,EAAE,EACPU;IAEJ;IAEA,OAAOP;AACT;AAEA;;;;;;;;;;;;CAYC,GACD,OAAO,SAASS,gBACdC,IAAkC,EAClC,EAAEZ,mBAAmB,CAAC,EAA2B,GAAG,CAAC,CAAC;IAEtD,MAAMF,YAAmB;QAAC;QAAG;KAAE;IAE/B,OAAOc,KAAKC,MAAM,CAAS,CAACX,KAAK,CAACY,SAASf,KAAK;QAC9C,OAAQe;YACN,KAAK;YACL,KAAK;gBACHZ,IAAIa,IAAI,CAACrB,MAAMsB,IAAI,CAACjB;gBACpBD,SAAS,CAAC,EAAE,GAAGC,IAAI,CAAC,EAAE;gBACtBD,SAAS,CAAC,EAAE,GAAGC,IAAI,CAAC,EAAE;gBACtB;YACF,KAAK;gBACHG,IAAIa,IAAI,IAAIlB,kBAAkBC,WAAWJ,MAAMsB,IAAI,CAACjB,OAAO;oBAAEC;gBAAiB;gBAC9EF,SAAS,CAAC,EAAE,GAAGC,IAAI,CAAC,EAAE;gBACtBD,SAAS,CAAC,EAAE,GAAGC,IAAI,CAAC,EAAE;gBAEtB;YACF,KAAK;gBACH;QACJ;QAEA,OAAOG;IACT,GAAG,EAAE;AACP"}
@@ -0,0 +1,5 @@
1
+ import { type DeepReadonly } from '../../../types';
2
+ import { type MaxSegmentLengthOptions } from './approximate';
3
+ import { type SVGPathSupport } from './path';
4
+ export declare function interpolate(from: DeepReadonly<SVGPathSupport>, to: DeepReadonly<SVGPathSupport>, { maxSegmentLength }?: MaxSegmentLengthOptions): (progress: number) => SVGPathSupport;
5
+ //# sourceMappingURL=interpolate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interpolate.d.ts","sourceRoot":"","sources":["../../../../src/lib/svg/path/interpolate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGnD,OAAO,EAAmB,KAAK,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAA0C,KAAK,cAAc,EAAE,MAAM,QAAQ,CAAC;AA+HrF,wBAAgB,WAAW,CACzB,IAAI,EAAE,YAAY,CAAC,cAAc,CAAC,EAClC,EAAE,EAAE,YAAY,CAAC,cAAc,CAAC,EAChC,EAAE,gBAAoB,EAAE,GAAE,uBAA4B,GACrD,CAAC,QAAQ,EAAE,MAAM,KAAK,cAAc,CAetC"}
@@ -0,0 +1,121 @@
1
+ import * as array from "../../array.js";
2
+ import { distancePoint } from "../../math.js";
3
+ import { approximateRing } from "./approximate.js";
4
+ import { copySVGPath } from "./path.js";
5
+ function pointAlong([x1, y1], [x2, y2], progress) {
6
+ return [
7
+ x1 + (x2 - x1) * progress,
8
+ y1 + (y2 - y1) * progress
9
+ ];
10
+ }
11
+ function polygonLength(points) {
12
+ return points.reduce((acc, point, index)=>acc + distancePoint(point, points[(index + 1) % points.length]), 0);
13
+ }
14
+ function addPoints(path, numPoints) {
15
+ if (numPoints === 0) {
16
+ return path;
17
+ }
18
+ const desiredLength = path.length + numPoints;
19
+ const step = polygonLength(path) / numPoints;
20
+ let index = 0;
21
+ let cursor = 0;
22
+ let insertAt = step / 2;
23
+ while(path.length < desiredLength){
24
+ const element = path[index];
25
+ const nextElement = path[(index + 1) % path.length];
26
+ const segment = distancePoint(element, nextElement);
27
+ if (insertAt <= cursor + segment) {
28
+ path.splice(index + 1, 0, segment ? pointAlong(element, nextElement, insertAt - cursor) : array.copy(element));
29
+ insertAt += step;
30
+ continue;
31
+ }
32
+ cursor += segment;
33
+ index++;
34
+ }
35
+ return path;
36
+ }
37
+ function bisect(path, { maxSegmentLength }) {
38
+ for(let index = 0; index < path.length; index++){
39
+ const element = path[index];
40
+ let nextElement = path[(index + 1) % path.length];
41
+ while(distancePoint(element, nextElement) > maxSegmentLength){
42
+ nextElement = pointAlong(element, nextElement, 0.5);
43
+ path.splice(index + 1, 0, nextElement);
44
+ }
45
+ }
46
+ return path;
47
+ }
48
+ function normalizeRing(path, { maxSegmentLength }) {
49
+ return bisect(approximateRing(path, {
50
+ maxSegmentLength
51
+ }), {
52
+ maxSegmentLength
53
+ });
54
+ }
55
+ function rotate(from, to) {
56
+ let min = Infinity;
57
+ let bestOffset = 0;
58
+ for(let offset = 0; offset < from.length; offset++){
59
+ let sumOfSquares = 0;
60
+ to.forEach((element, index)=>{
61
+ const d = distancePoint(from[(offset + index) % from.length], element);
62
+ sumOfSquares += d * d;
63
+ });
64
+ if (sumOfSquares < min) {
65
+ min = sumOfSquares;
66
+ bestOffset = offset;
67
+ }
68
+ }
69
+ if (bestOffset) {
70
+ const spliced = from.splice(0, bestOffset);
71
+ from.splice(from.length, 0, ...spliced);
72
+ }
73
+ }
74
+ function interpolatePoint(from, to) {
75
+ return (progress)=>{
76
+ return [
77
+ from[0] + progress * (to[0] - from[0]),
78
+ from[1] + progress * (to[1] - from[1])
79
+ ];
80
+ };
81
+ }
82
+ function interpolatePoints(from, to) {
83
+ const interpolators = from.map((point, index)=>interpolatePoint(point, to[index]));
84
+ return (progress)=>{
85
+ const result = interpolators.map((interpolator, index)=>[
86
+ index === 0 ? 'M' : 'L',
87
+ interpolator(progress)
88
+ ]);
89
+ result.push([
90
+ 'Z',
91
+ []
92
+ ]);
93
+ return result;
94
+ };
95
+ }
96
+ function interpolateRing(from, to) {
97
+ const diff = from.length - to.length;
98
+ const fromRing = addPoints(from, -Math.min(diff, 0));
99
+ const toRing = addPoints(to, Math.max(diff, 0));
100
+ rotate(fromRing, toRing);
101
+ return interpolatePoints(fromRing, toRing);
102
+ }
103
+ export function interpolate(from, to, { maxSegmentLength = 1 } = {}) {
104
+ const fromRing = normalizeRing(from, {
105
+ maxSegmentLength
106
+ });
107
+ const toRing = normalizeRing(to, {
108
+ maxSegmentLength
109
+ });
110
+ const fn = interpolateRing(fromRing, toRing);
111
+ return (progress)=>{
112
+ if (progress < 1e-4) {
113
+ return copySVGPath(from);
114
+ } else if (progress > 1 - 1e-4) {
115
+ return copySVGPath(to);
116
+ }
117
+ return fn(progress);
118
+ };
119
+ }
120
+
121
+ //# sourceMappingURL=interpolate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/svg/path/interpolate.ts"],"sourcesContent":["import { type DeepReadonly } from '../../../types';\nimport * as array from '../../array';\nimport { distancePoint } from '../../math';\nimport { approximateRing, type MaxSegmentLengthOptions } from './approximate';\nimport { copySVGPath, type DrawtoCommandSupport, type SVGPathSupport } from './path';\nimport { type Point, type Points } from './point';\n\nfunction pointAlong([x1, y1]: Readonly<Point>, [x2, y2]: Readonly<Point>, progress: number): Point {\n return [x1 + (x2 - x1) * progress, y1 + (y2 - y1) * progress];\n}\n\nfunction polygonLength(points: Points): number {\n return points.reduce(\n (acc, point, index) => acc + distancePoint(point, points[(index + 1) % points.length]),\n 0,\n );\n}\n\nfunction addPoints(path: Points, numPoints: number): Points {\n if (numPoints === 0) {\n return path;\n }\n\n const desiredLength = path.length + numPoints;\n\n const step = polygonLength(path) / numPoints;\n\n let index = 0;\n let cursor = 0;\n let insertAt = step / 2;\n\n while (path.length < desiredLength) {\n const element = path[index];\n const nextElement = path[(index + 1) % path.length];\n\n const segment = distancePoint(element, nextElement);\n\n if (insertAt <= cursor + segment) {\n path.splice(\n index + 1,\n 0,\n segment ? pointAlong(element, nextElement, insertAt - cursor) : array.copy(element), // TODO: test coverage\n );\n insertAt += step;\n continue;\n }\n\n cursor += segment;\n index++;\n }\n\n return path;\n}\n\nfunction bisect(path: Points, { maxSegmentLength }: Required<MaxSegmentLengthOptions>): Points {\n for (let index = 0; index < path.length; index++) {\n const element = path[index];\n let nextElement = path[(index + 1) % path.length];\n\n while (distancePoint(element, nextElement) > maxSegmentLength) {\n nextElement = pointAlong(element, nextElement, 0.5);\n\n path.splice(index + 1, 0, nextElement);\n }\n }\n\n return path;\n}\n\nfunction normalizeRing(\n path: DeepReadonly<SVGPathSupport>,\n { maxSegmentLength }: Required<MaxSegmentLengthOptions>,\n): Points {\n return bisect(approximateRing(path, { maxSegmentLength }), { maxSegmentLength });\n}\n\nfunction rotate(from: Points, to: Points) {\n let min = Infinity;\n let bestOffset = 0;\n\n for (let offset = 0; offset < from.length; offset++) {\n let sumOfSquares = 0;\n\n to.forEach((element, index) => {\n const d = distancePoint(from[(offset + index) % from.length], element);\n sumOfSquares += d * d;\n });\n\n if (sumOfSquares < min) {\n min = sumOfSquares;\n bestOffset = offset;\n }\n }\n\n if (bestOffset) {\n const spliced = from.splice(0, bestOffset);\n from.splice(from.length, 0, ...spliced);\n }\n}\n\nfunction interpolatePoint(from: Readonly<Point>, to: Readonly<Point>): (progress: number) => Point {\n return (progress: number) => {\n return [from[0] + progress * (to[0] - from[0]), from[1] + progress * (to[1] - from[1])];\n };\n}\n\nfunction interpolatePoints(from: Points, to: Points): (progress: number) => SVGPathSupport {\n const interpolators = from.map((point, index) => interpolatePoint(point, to[index]));\n\n return (progress: number) => {\n const result = interpolators.map<DrawtoCommandSupport>((interpolator, index) => [\n index === 0 ? 'M' : 'L',\n interpolator(progress),\n ]);\n result.push(['Z', []]);\n\n return result;\n };\n}\n\nfunction interpolateRing(from: Points, to: Points): (progress: number) => SVGPathSupport {\n const diff = from.length - to.length;\n\n const fromRing = addPoints(from, -Math.min(diff, 0));\n const toRing = addPoints(to, Math.max(diff, 0));\n\n rotate(fromRing, toRing);\n\n return interpolatePoints(fromRing, toRing);\n}\n\nexport function interpolate(\n from: DeepReadonly<SVGPathSupport>,\n to: DeepReadonly<SVGPathSupport>,\n { maxSegmentLength = 1 }: MaxSegmentLengthOptions = {},\n): (progress: number) => SVGPathSupport {\n const fromRing = normalizeRing(from, { maxSegmentLength });\n const toRing = normalizeRing(to, { maxSegmentLength });\n\n const fn = interpolateRing(fromRing, toRing);\n\n return (progress: number) => {\n if (progress < 1e-4) {\n return copySVGPath(from);\n } else if (progress > 1 - 1e-4) {\n return copySVGPath(to);\n }\n\n return fn(progress);\n };\n}\n"],"names":["array","distancePoint","approximateRing","copySVGPath","pointAlong","x1","y1","x2","y2","progress","polygonLength","points","reduce","acc","point","index","length","addPoints","path","numPoints","desiredLength","step","cursor","insertAt","element","nextElement","segment","splice","copy","bisect","maxSegmentLength","normalizeRing","rotate","from","to","min","Infinity","bestOffset","offset","sumOfSquares","forEach","d","spliced","interpolatePoint","interpolatePoints","interpolators","map","result","interpolator","push","interpolateRing","diff","fromRing","Math","toRing","max","interpolate","fn"],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import type { DeepReadonly, DeepWriteable } from '../../../types';
2
+ type Flag = 0 | 1;
3
+ export type CoordinatePair = [number, number];
4
+ export type Coordinate = [number];
5
+ export type CurvetoCoordinate = [number, number, number, number, number, number];
6
+ export type SmoothCurvetoCoordinate = [number, number, number, number];
7
+ export type QuadraticCurvetoCoordinate = [number, number, number, number];
8
+ export type EllipticalArcArgument = [number, number, number, Flag, Flag, number, number];
9
+ export type DrawtoCommandAbsolute = ['M', CoordinatePair] | ['L', CoordinatePair] | ['H', Coordinate] | ['V', Coordinate] | ['C', CurvetoCoordinate] | ['S', SmoothCurvetoCoordinate] | ['Q', QuadraticCurvetoCoordinate] | ['T', CoordinatePair] | ['A', EllipticalArcArgument] | ['Z', []];
10
+ type DrawtoCommandRelative = ['m', CoordinatePair] | ['l', CoordinatePair] | ['h', Coordinate] | ['v', Coordinate] | ['c', CurvetoCoordinate] | ['s', SmoothCurvetoCoordinate] | ['q', QuadraticCurvetoCoordinate] | ['t', CoordinatePair] | ['a', EllipticalArcArgument] | ['z', []];
11
+ export type DrawtoCommand = DrawtoCommandAbsolute | DrawtoCommandRelative;
12
+ export type SVGPath = DrawtoCommand[];
13
+ export type DrawtoCommandSupport = ['M', CoordinatePair] | ['L', CoordinatePair] | ['C', CurvetoCoordinate] | ['Z', []];
14
+ /**
15
+ * Поддерживаем только `M`, `L`, `C`, и `Z` команды для оптимизации размера кода
16
+ */
17
+ export type SVGPathSupport = DrawtoCommandSupport[];
18
+ /**
19
+ * Преобразует `SVGPath` в строку
20
+ *
21
+ * ```ts
22
+ * import * as path from './path';
23
+ * import * as assert from 'node:assert/strict';
24
+ *
25
+ * assert.equal(
26
+ * path.svgPathToString([['M', [20, 40]], ['L', [40, 60]]]),
27
+ * 'M20,40L40,60',
28
+ * );
29
+ * ```
30
+ */
31
+ export declare function svgPathToString(svgPath: DeepReadonly<SVGPath>): string;
32
+ /**
33
+ * Копирует массив команд для пути
34
+ *
35
+ * ```ts
36
+ * import * as path from './path';
37
+ * import * as assert from 'node:assert/strict';
38
+ *
39
+ * const originalSVGPath = [['M', [20, 40]], ['L', [40, 60]]];
40
+ * const copiedSVGPath = path.copy(originalSVGPath);
41
+ *
42
+ * assert.deepEqual(copiedSVGPath, originalSVGPath);
43
+ * assert.notEqual(copiedSVGPath, originalSVGPath);
44
+ * ```
45
+ */
46
+ export declare function copySVGPath<T extends DeepReadonly<SVGPath>>(svgPath: T): DeepWriteable<T>;
47
+ export {};
48
+ //# sourceMappingURL=path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../../../src/lib/svg/path/path.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGlE,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;AAElB,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC9C,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,CAAC;AAClC,MAAM,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACjF,MAAM,MAAM,uBAAuB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACvE,MAAM,MAAM,0BAA0B,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC1E,MAAM,MAAM,qBAAqB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEzF,MAAM,MAAM,qBAAqB,GAC7B,CAAC,GAAG,EAAE,cAAc,CAAC,GACrB,CAAC,GAAG,EAAE,cAAc,CAAC,GACrB,CAAC,GAAG,EAAE,UAAU,CAAC,GACjB,CAAC,GAAG,EAAE,UAAU,CAAC,GACjB,CAAC,GAAG,EAAE,iBAAiB,CAAC,GACxB,CAAC,GAAG,EAAE,uBAAuB,CAAC,GAC9B,CAAC,GAAG,EAAE,0BAA0B,CAAC,GACjC,CAAC,GAAG,EAAE,cAAc,CAAC,GACrB,CAAC,GAAG,EAAE,qBAAqB,CAAC,GAC5B,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAEd,KAAK,qBAAqB,GACtB,CAAC,GAAG,EAAE,cAAc,CAAC,GACrB,CAAC,GAAG,EAAE,cAAc,CAAC,GACrB,CAAC,GAAG,EAAE,UAAU,CAAC,GACjB,CAAC,GAAG,EAAE,UAAU,CAAC,GACjB,CAAC,GAAG,EAAE,iBAAiB,CAAC,GACxB,CAAC,GAAG,EAAE,uBAAuB,CAAC,GAC9B,CAAC,GAAG,EAAE,0BAA0B,CAAC,GACjC,CAAC,GAAG,EAAE,cAAc,CAAC,GACrB,CAAC,GAAG,EAAE,qBAAqB,CAAC,GAC5B,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAEd,MAAM,MAAM,aAAa,GAAG,qBAAqB,GAAG,qBAAqB,CAAC;AAE1E,MAAM,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;AAEtC,MAAM,MAAM,oBAAoB,GAC5B,CAAC,GAAG,EAAE,cAAc,CAAC,GACrB,CAAC,GAAG,EAAE,cAAc,CAAC,GACrB,CAAC,GAAG,EAAE,iBAAiB,CAAC,GACxB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAEd;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;AAEpD;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,MAAM,CAmBtE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAEzF"}
@@ -0,0 +1,50 @@
1
+ import * as array from "../../array.js";
2
+ /**
3
+ * Преобразует `SVGPath` в строку
4
+ *
5
+ * ```ts
6
+ * import * as path from './path';
7
+ * import * as assert from 'node:assert/strict';
8
+ *
9
+ * assert.equal(
10
+ * path.svgPathToString([['M', [20, 40]], ['L', [40, 60]]]),
11
+ * 'M20,40L40,60',
12
+ * );
13
+ * ```
14
+ */ export function svgPathToString(svgPath) {
15
+ // return svgPath.reduce((acc, value) => acc + value[0] + value[1].join(','), '');
16
+ let value = '';
17
+ // WARNING: При изменении кода рекомендуется проверить изменение
18
+ // времени исполнения на компоненте ExpressiveSpinner в профайлерах
19
+ for(let index = 0; index < svgPath.length; index++){
20
+ value += svgPath[index][0];
21
+ for(let valueIndex = 0; valueIndex < svgPath[index][1].length - 1; valueIndex++){
22
+ value += svgPath[index][1][valueIndex].toFixed(4) + ',';
23
+ }
24
+ if (svgPath[index][1].length) {
25
+ value += svgPath[index][1][svgPath[index][1].length - 1].toFixed(4);
26
+ }
27
+ }
28
+ return value;
29
+ }
30
+ /**
31
+ * Копирует массив команд для пути
32
+ *
33
+ * ```ts
34
+ * import * as path from './path';
35
+ * import * as assert from 'node:assert/strict';
36
+ *
37
+ * const originalSVGPath = [['M', [20, 40]], ['L', [40, 60]]];
38
+ * const copiedSVGPath = path.copy(originalSVGPath);
39
+ *
40
+ * assert.deepEqual(copiedSVGPath, originalSVGPath);
41
+ * assert.notEqual(copiedSVGPath, originalSVGPath);
42
+ * ```
43
+ */ export function copySVGPath(svgPath) {
44
+ return svgPath.map((value)=>[
45
+ value[0],
46
+ array.copy(value[1])
47
+ ]);
48
+ }
49
+
50
+ //# sourceMappingURL=path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/svg/path/path.ts"],"sourcesContent":["import type { DeepReadonly, DeepWriteable } from '../../../types';\nimport * as array from '../../array';\n\ntype Flag = 0 | 1;\n\nexport type CoordinatePair = [number, number];\nexport type Coordinate = [number];\nexport type CurvetoCoordinate = [number, number, number, number, number, number];\nexport type SmoothCurvetoCoordinate = [number, number, number, number];\nexport type QuadraticCurvetoCoordinate = [number, number, number, number];\nexport type EllipticalArcArgument = [number, number, number, Flag, Flag, number, number];\n\nexport type DrawtoCommandAbsolute =\n | ['M', CoordinatePair]\n | ['L', CoordinatePair]\n | ['H', Coordinate]\n | ['V', Coordinate]\n | ['C', CurvetoCoordinate]\n | ['S', SmoothCurvetoCoordinate]\n | ['Q', QuadraticCurvetoCoordinate]\n | ['T', CoordinatePair]\n | ['A', EllipticalArcArgument]\n | ['Z', []];\n\ntype DrawtoCommandRelative =\n | ['m', CoordinatePair]\n | ['l', CoordinatePair]\n | ['h', Coordinate]\n | ['v', Coordinate]\n | ['c', CurvetoCoordinate]\n | ['s', SmoothCurvetoCoordinate]\n | ['q', QuadraticCurvetoCoordinate]\n | ['t', CoordinatePair]\n | ['a', EllipticalArcArgument]\n | ['z', []];\n\nexport type DrawtoCommand = DrawtoCommandAbsolute | DrawtoCommandRelative;\n\nexport type SVGPath = DrawtoCommand[];\n\nexport type DrawtoCommandSupport =\n | ['M', CoordinatePair]\n | ['L', CoordinatePair]\n | ['C', CurvetoCoordinate]\n | ['Z', []];\n\n/**\n * Поддерживаем только `M`, `L`, `C`, и `Z` команды для оптимизации размера кода\n */\nexport type SVGPathSupport = DrawtoCommandSupport[];\n\n/**\n * Преобразует `SVGPath` в строку\n *\n * ```ts\n * import * as path from './path';\n * import * as assert from 'node:assert/strict';\n *\n * assert.equal(\n * path.svgPathToString([['M', [20, 40]], ['L', [40, 60]]]),\n * 'M20,40L40,60',\n * );\n * ```\n */\nexport function svgPathToString(svgPath: DeepReadonly<SVGPath>): string {\n // return svgPath.reduce((acc, value) => acc + value[0] + value[1].join(','), '');\n\n let value = '';\n\n // WARNING: При изменении кода рекомендуется проверить изменение\n // времени исполнения на компоненте ExpressiveSpinner в профайлерах\n for (let index = 0; index < svgPath.length; index++) {\n value += svgPath[index][0];\n for (let valueIndex = 0; valueIndex < svgPath[index][1].length - 1; valueIndex++) {\n value += svgPath[index][1][valueIndex].toFixed(4) + ',';\n }\n\n if (svgPath[index][1].length) {\n value += svgPath[index][1][svgPath[index][1].length - 1].toFixed(4);\n }\n }\n\n return value;\n}\n\n/**\n * Копирует массив команд для пути\n *\n * ```ts\n * import * as path from './path';\n * import * as assert from 'node:assert/strict';\n *\n * const originalSVGPath = [['M', [20, 40]], ['L', [40, 60]]];\n * const copiedSVGPath = path.copy(originalSVGPath);\n *\n * assert.deepEqual(copiedSVGPath, originalSVGPath);\n * assert.notEqual(copiedSVGPath, originalSVGPath);\n * ```\n */\nexport function copySVGPath<T extends DeepReadonly<SVGPath>>(svgPath: T): DeepWriteable<T> {\n return svgPath.map((value) => [value[0], array.copy(value[1])]) as DeepWriteable<T>;\n}\n"],"names":["array","svgPathToString","svgPath","value","index","length","valueIndex","toFixed","copySVGPath","map","copy"],"mappings":"AACA,YAAYA,WAAW,iBAAc;AAkDrC;;;;;;;;;;;;CAYC,GACD,OAAO,SAASC,gBAAgBC,OAA8B;IAC5D,kFAAkF;IAElF,IAAIC,QAAQ;IAEZ,gEAAgE;IAChE,mEAAmE;IACnE,IAAK,IAAIC,QAAQ,GAAGA,QAAQF,QAAQG,MAAM,EAAED,QAAS;QACnDD,SAASD,OAAO,CAACE,MAAM,CAAC,EAAE;QAC1B,IAAK,IAAIE,aAAa,GAAGA,aAAaJ,OAAO,CAACE,MAAM,CAAC,EAAE,CAACC,MAAM,GAAG,GAAGC,aAAc;YAChFH,SAASD,OAAO,CAACE,MAAM,CAAC,EAAE,CAACE,WAAW,CAACC,OAAO,CAAC,KAAK;QACtD;QAEA,IAAIL,OAAO,CAACE,MAAM,CAAC,EAAE,CAACC,MAAM,EAAE;YAC5BF,SAASD,OAAO,CAACE,MAAM,CAAC,EAAE,CAACF,OAAO,CAACE,MAAM,CAAC,EAAE,CAACC,MAAM,GAAG,EAAE,CAACE,OAAO,CAAC;QACnE;IACF;IAEA,OAAOJ;AACT;AAEA;;;;;;;;;;;;;CAaC,GACD,OAAO,SAASK,YAA6CN,OAAU;IACrE,OAAOA,QAAQO,GAAG,CAAC,CAACN,QAAU;YAACA,KAAK,CAAC,EAAE;YAAEH,MAAMU,IAAI,CAACP,KAAK,CAAC,EAAE;SAAE;AAChE"}
@@ -0,0 +1,3 @@
1
+ export type Point = [number, number];
2
+ export type Points = Point[];
3
+ //# sourceMappingURL=point.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"point.d.ts","sourceRoot":"","sources":["../../../../src/lib/svg/path/point.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACrC,MAAM,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=point.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/svg/path/point.ts"],"sourcesContent":["export type Point = [number, number];\nexport type Points = Point[];\n"],"names":[],"mappings":"AACA,WAA6B"}
@@ -0,0 +1,64 @@
1
+ import { type DeepReadonly } from '../../../types';
2
+ import { type SVGPathSupport } from './path';
3
+ /**
4
+ * Масштабирует путь.
5
+ *
6
+ * ```ts
7
+ * import * as transform from './transform';
8
+ * import * as assert from 'node:assert/strict';
9
+ *
10
+ * const scalePath = transform.scale(
11
+ * [['M', [10, 20]], ['L', [30, 40]]],
12
+ * 2,
13
+ * 2,
14
+ * );
15
+ *
16
+ * assert.deepEqual(
17
+ * scalePath,
18
+ * [['M', [20, 40]], ['L', [60, 80]]],
19
+ * );
20
+ * ```
21
+ */
22
+ export declare function scale(path: DeepReadonly<SVGPathSupport>, scaleX: number, scaleY: number): SVGPathSupport;
23
+ /**
24
+ * Перемещает путь по осям X и Y.
25
+ *
26
+ * ```ts
27
+ * import * as transform from './transform';
28
+ * import * as assert from 'node:assert/strict';
29
+ *
30
+ * const translatePath = transform.translate(
31
+ * [['M', [10, 20]], ['L', [30, 40]]],
32
+ * 10,
33
+ * 20,
34
+ * );
35
+ *
36
+ * assert.deepEqual(
37
+ * translatePath,
38
+ * [['M', [20, 40]], ['L', [40, 60]]],
39
+ * );
40
+ * ```
41
+ */
42
+ export declare function translate(path: DeepReadonly<SVGPathSupport>, translateX: number, translateY: number): SVGPathSupport;
43
+ /**
44
+ * Вращает путь относительно заданной точки на заданный угол
45
+ *
46
+ * ```ts
47
+ * import * as transform from './transform';
48
+ * import * as assert from 'node:assert/strict';
49
+ *
50
+ * const rotatePath = transform.rotate(
51
+ * [['M', [10, 20]], ['L', [30, 40]]],
52
+ * 30,
53
+ * 30,
54
+ * 180
55
+ * );
56
+ *
57
+ * assert.deepEqual(
58
+ * rotatePath,
59
+ * [['M', [20, 40]], ['L', [60, 80]]],
60
+ * );
61
+ * ```
62
+ */
63
+ export declare function rotate(path: DeepReadonly<SVGPathSupport>, originX: number, originY: number, angle: number): SVGPathSupport;
64
+ //# sourceMappingURL=transform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../../../src/lib/svg/path/transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,QAAQ,CAAC;AAmBhB;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,KAAK,CACnB,IAAI,EAAE,YAAY,CAAC,cAAc,CAAC,EAClC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,cAAc,CAShB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,YAAY,CAAC,cAAc,CAAC,EAClC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,cAAc,CAShB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,MAAM,CACpB,IAAI,EAAE,YAAY,CAAC,cAAc,CAAC,EAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,cAAc,CA0BhB"}