@vkontakte/vkui 7.0.1 → 7.1.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 (649) hide show
  1. package/dist/components/ActionSheet/types.d.ts +1 -1
  2. package/dist/components/ActionSheet/types.d.ts.map +1 -1
  3. package/dist/components/ActionSheet/types.js.map +1 -1
  4. package/dist/components/Alert/Alert.d.ts +1 -1
  5. package/dist/components/Alert/Alert.js.map +1 -1
  6. package/dist/components/AppRoot/AppRoot.d.ts +1 -1
  7. package/dist/components/AppRoot/AppRoot.d.ts.map +1 -1
  8. package/dist/components/AppRoot/AppRoot.js.map +1 -1
  9. package/dist/components/AppRoot/AppRootContext.d.ts +2 -2
  10. package/dist/components/AppRoot/AppRootContext.d.ts.map +1 -1
  11. package/dist/components/AppRoot/AppRootContext.js.map +1 -1
  12. package/dist/components/AppRoot/AppRootPortal.d.ts +1 -1
  13. package/dist/components/AppRoot/AppRootPortal.d.ts.map +1 -1
  14. package/dist/components/AppRoot/AppRootPortal.js.map +1 -1
  15. package/dist/components/AppRoot/ScrollContext.d.ts +1 -1
  16. package/dist/components/AppRoot/ScrollContext.d.ts.map +1 -1
  17. package/dist/components/AppRoot/ScrollContext.js.map +1 -1
  18. package/dist/components/AspectRatio/AspectRatio.d.ts +7 -3
  19. package/dist/components/AspectRatio/AspectRatio.d.ts.map +1 -1
  20. package/dist/components/AspectRatio/AspectRatio.js +1 -1
  21. package/dist/components/AspectRatio/AspectRatio.js.map +1 -1
  22. package/dist/components/Calendar/Calendar.d.ts +3 -4
  23. package/dist/components/Calendar/Calendar.d.ts.map +1 -1
  24. package/dist/components/Calendar/Calendar.js +81 -64
  25. package/dist/components/Calendar/Calendar.js.map +1 -1
  26. package/dist/components/CalendarDay/CalendarDay.d.ts +3 -0
  27. package/dist/components/CalendarDay/CalendarDay.d.ts.map +1 -1
  28. package/dist/components/CalendarDay/CalendarDay.js +3 -1
  29. package/dist/components/CalendarDay/CalendarDay.js.map +1 -1
  30. package/dist/components/CalendarDays/CalendarDays.d.ts +3 -0
  31. package/dist/components/CalendarDays/CalendarDays.d.ts.map +1 -1
  32. package/dist/components/CalendarDays/CalendarDays.js.map +1 -1
  33. package/dist/components/CalendarHeader/CalendarHeader.d.ts +12 -0
  34. package/dist/components/CalendarHeader/CalendarHeader.d.ts.map +1 -1
  35. package/dist/components/CalendarHeader/CalendarHeader.js +4 -2
  36. package/dist/components/CalendarHeader/CalendarHeader.js.map +1 -1
  37. package/dist/components/CalendarRange/CalendarRange.d.ts +7 -1
  38. package/dist/components/CalendarRange/CalendarRange.d.ts.map +1 -1
  39. package/dist/components/CalendarRange/CalendarRange.js +108 -93
  40. package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
  41. package/dist/components/CalendarTime/CalendarTime.d.ts +20 -4
  42. package/dist/components/CalendarTime/CalendarTime.d.ts.map +1 -1
  43. package/dist/components/CalendarTime/CalendarTime.js +68 -9
  44. package/dist/components/CalendarTime/CalendarTime.js.map +1 -1
  45. package/dist/components/CardScroll/CardScroll.d.ts +2 -3
  46. package/dist/components/CardScroll/CardScroll.d.ts.map +1 -1
  47. package/dist/components/CardScroll/CardScroll.js +6 -2
  48. package/dist/components/CardScroll/CardScroll.js.map +1 -1
  49. package/dist/components/CarouselBase/Bullets.d.ts +16 -0
  50. package/dist/components/CarouselBase/Bullets.d.ts.map +1 -0
  51. package/dist/components/CarouselBase/Bullets.js +21 -0
  52. package/dist/components/CarouselBase/Bullets.js.map +1 -0
  53. package/dist/components/CarouselBase/CarouselBase.d.ts +4 -0
  54. package/dist/components/CarouselBase/CarouselBase.d.ts.map +1 -0
  55. package/dist/components/{BaseGallery/CarouselBase → CarouselBase}/CarouselBase.js +175 -98
  56. package/dist/components/CarouselBase/CarouselBase.js.map +1 -0
  57. package/dist/components/CarouselBase/CarouselViewPort.d.ts +14 -0
  58. package/dist/components/CarouselBase/CarouselViewPort.d.ts.map +1 -0
  59. package/dist/components/CarouselBase/CarouselViewPort.js +29 -0
  60. package/dist/components/CarouselBase/CarouselViewPort.js.map +1 -0
  61. package/dist/components/CarouselBase/ScrollArrows.d.ts +23 -0
  62. package/dist/components/CarouselBase/ScrollArrows.d.ts.map +1 -0
  63. package/dist/components/CarouselBase/ScrollArrows.js +34 -0
  64. package/dist/components/CarouselBase/ScrollArrows.js.map +1 -0
  65. package/dist/components/CarouselBase/constants.d.ts.map +1 -0
  66. package/dist/components/{BaseGallery/CarouselBase → CarouselBase}/constants.js +5 -1
  67. package/dist/components/CarouselBase/constants.js.map +1 -0
  68. package/dist/components/{BaseGallery/CarouselBase → CarouselBase}/helpers.d.ts +13 -4
  69. package/dist/components/CarouselBase/helpers.d.ts.map +1 -0
  70. package/dist/{cssm/components/BaseGallery → components}/CarouselBase/helpers.js +41 -5
  71. package/dist/components/CarouselBase/helpers.js.map +1 -0
  72. package/dist/components/{BaseGallery/CarouselBase → CarouselBase}/hooks.d.ts +1 -1
  73. package/dist/components/CarouselBase/hooks.d.ts.map +1 -0
  74. package/dist/components/{BaseGallery/CarouselBase → CarouselBase}/hooks.js +2 -2
  75. package/dist/components/CarouselBase/hooks.js.map +1 -0
  76. package/dist/components/CarouselBase/types.d.ts +125 -0
  77. package/dist/components/CarouselBase/types.d.ts.map +1 -0
  78. package/dist/components/CarouselBase/types.js.map +1 -0
  79. package/dist/components/ChipsInput/ChipsInput.d.ts +1 -1
  80. package/dist/components/ChipsInput/ChipsInput.d.ts.map +1 -1
  81. package/dist/components/ChipsInput/ChipsInput.js.map +1 -1
  82. package/dist/components/ChipsInput/useChipsInput.d.ts +1 -1
  83. package/dist/components/ChipsInput/useChipsInput.d.ts.map +1 -1
  84. package/dist/components/ChipsInput/useChipsInput.js.map +1 -1
  85. package/dist/components/ChipsSelect/ChipsSelect.d.ts +1 -1
  86. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  87. package/dist/components/ChipsSelect/useChipsSelect.d.ts +1 -1
  88. package/dist/components/ChipsSelect/useChipsSelect.d.ts.map +1 -1
  89. package/dist/components/ChipsSelect/useChipsSelect.js.map +1 -1
  90. package/dist/components/Clickable/useState.js.map +1 -1
  91. package/dist/components/Clickable/useStateWithDelay.js +1 -1
  92. package/dist/components/Clickable/useStateWithDelay.js.map +1 -1
  93. package/dist/components/ConfigProvider/ConfigProvider.d.ts.map +1 -1
  94. package/dist/components/ConfigProvider/ConfigProvider.js +8 -23
  95. package/dist/components/ConfigProvider/ConfigProvider.js.map +1 -1
  96. package/dist/components/ConfigProvider/ConfigProviderContext.d.ts +1 -0
  97. package/dist/components/ConfigProvider/ConfigProviderContext.d.ts.map +1 -1
  98. package/dist/components/ConfigProvider/ConfigProviderContext.js +22 -0
  99. package/dist/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  100. package/dist/components/ConfigProvider/ConfigProviderOverride.d.ts.map +1 -1
  101. package/dist/components/ConfigProvider/ConfigProviderOverride.js +2 -3
  102. package/dist/components/ConfigProvider/ConfigProviderOverride.js.map +1 -1
  103. package/dist/components/CustomScrollView/CustomScrollView.d.ts +5 -1
  104. package/dist/components/CustomScrollView/CustomScrollView.d.ts.map +1 -1
  105. package/dist/components/CustomScrollView/CustomScrollView.js +9 -4
  106. package/dist/components/CustomScrollView/CustomScrollView.js.map +1 -1
  107. package/dist/components/CustomSelect/CustomSelect.d.ts +6 -2
  108. package/dist/components/CustomSelect/CustomSelect.d.ts.map +1 -1
  109. package/dist/components/CustomSelect/CustomSelect.js +8 -4
  110. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  111. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +1 -1
  112. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts.map +1 -1
  113. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  114. package/dist/components/DateInput/DateInput.d.ts +24 -2
  115. package/dist/components/DateInput/DateInput.d.ts.map +1 -1
  116. package/dist/components/DateInput/DateInput.js +41 -6
  117. package/dist/components/DateInput/DateInput.js.map +1 -1
  118. package/dist/components/DateRangeInput/DateRangeInput.d.ts +19 -1
  119. package/dist/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  120. package/dist/components/DateRangeInput/DateRangeInput.js +6 -4
  121. package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
  122. package/dist/components/Epic/Epic.d.ts.map +1 -1
  123. package/dist/components/Epic/Epic.js.map +1 -1
  124. package/dist/components/FixedLayout/FixedLayout.d.ts.map +1 -1
  125. package/dist/components/FixedLayout/FixedLayout.js +1 -2
  126. package/dist/components/FixedLayout/FixedLayout.js.map +1 -1
  127. package/dist/components/Gallery/Gallery.d.ts +2 -3
  128. package/dist/components/Gallery/Gallery.d.ts.map +1 -1
  129. package/dist/components/Gallery/Gallery.js +3 -6
  130. package/dist/components/Gallery/Gallery.js.map +1 -1
  131. package/dist/components/HorizontalScroll/HorizontalScroll.d.ts +9 -1
  132. package/dist/components/HorizontalScroll/HorizontalScroll.d.ts.map +1 -1
  133. package/dist/components/HorizontalScroll/HorizontalScroll.js +6 -4
  134. package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  135. package/dist/components/Image/Image.d.ts +1 -0
  136. package/dist/components/Image/Image.d.ts.map +1 -1
  137. package/dist/components/Image/Image.js +2 -0
  138. package/dist/components/Image/Image.js.map +1 -1
  139. package/dist/components/ImageBase/ImageBase.d.ts +8 -1
  140. package/dist/components/ImageBase/ImageBase.d.ts.map +1 -1
  141. package/dist/components/ImageBase/ImageBase.js +39 -11
  142. package/dist/components/ImageBase/ImageBase.js.map +1 -1
  143. package/dist/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.d.ts +29 -0
  144. package/dist/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.d.ts.map +1 -0
  145. package/dist/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.js +96 -0
  146. package/dist/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.js.map +1 -0
  147. package/dist/components/ImageBase/ImageBaseFloatElement/helpers.d.ts +4 -0
  148. package/dist/components/ImageBase/ImageBaseFloatElement/helpers.d.ts.map +1 -0
  149. package/dist/components/ImageBase/ImageBaseFloatElement/helpers.js +35 -0
  150. package/dist/components/ImageBase/ImageBaseFloatElement/helpers.js.map +1 -0
  151. package/dist/components/ImageBase/ImageBaseOverlay/hooks.d.ts +1 -1
  152. package/dist/components/ImageBase/ImageBaseOverlay/hooks.d.ts.map +1 -1
  153. package/dist/components/ImageBase/ImageBaseOverlay/hooks.js.map +1 -1
  154. package/dist/components/ImageBase/context.d.ts.map +1 -1
  155. package/dist/components/ImageBase/context.js +3 -1
  156. package/dist/components/ImageBase/context.js.map +1 -1
  157. package/dist/components/ImageBase/types.d.ts +2 -0
  158. package/dist/components/ImageBase/types.d.ts.map +1 -1
  159. package/dist/components/ImageBase/types.js.map +1 -1
  160. package/dist/components/ImageBase/validators.d.ts +2 -1
  161. package/dist/components/ImageBase/validators.d.ts.map +1 -1
  162. package/dist/components/ImageBase/validators.js.map +1 -1
  163. package/dist/components/ModalCardBase/ModalCardBase.d.ts +1 -1
  164. package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
  165. package/dist/components/ModalRoot/ModalRootContext.d.ts +1 -1
  166. package/dist/components/ModalRoot/ModalRootContext.d.ts.map +1 -1
  167. package/dist/components/ModalRoot/ModalRootContext.js.map +1 -1
  168. package/dist/components/Pagination/Pagination.d.ts +14 -1
  169. package/dist/components/Pagination/Pagination.d.ts.map +1 -1
  170. package/dist/components/Pagination/Pagination.js +13 -4
  171. package/dist/components/Pagination/Pagination.js.map +1 -1
  172. package/dist/components/Pagination/PaginationNavigationButton/PaginationNavigationButton.d.ts +2 -0
  173. package/dist/components/Pagination/PaginationNavigationButton/PaginationNavigationButton.d.ts.map +1 -1
  174. package/dist/components/Pagination/PaginationNavigationButton/PaginationNavigationButton.js +2 -1
  175. package/dist/components/Pagination/PaginationNavigationButton/PaginationNavigationButton.js.map +1 -1
  176. package/dist/components/Popover/Popover.d.ts +2 -2
  177. package/dist/components/Popover/Popover.d.ts.map +1 -1
  178. package/dist/components/Popover/Popover.js +6 -126
  179. package/dist/components/Popover/Popover.js.map +1 -1
  180. package/dist/components/Popover/usePopover.d.ts +14 -0
  181. package/dist/components/Popover/usePopover.d.ts.map +1 -0
  182. package/dist/components/Popover/usePopover.js +138 -0
  183. package/dist/components/Popover/usePopover.js.map +1 -0
  184. package/dist/components/Popper/Popper.d.ts +1 -1
  185. package/dist/components/Popper/Popper.d.ts.map +1 -1
  186. package/dist/components/Popper/Popper.js.map +1 -1
  187. package/dist/components/PullToRefresh/PullToRefresh.js +1 -1
  188. package/dist/components/PullToRefresh/PullToRefresh.js.map +1 -1
  189. package/dist/components/Removable/Removable.d.ts +2 -2
  190. package/dist/components/Removable/Removable.js.map +1 -1
  191. package/dist/components/RichCell/RichCell.d.ts +11 -1
  192. package/dist/components/RichCell/RichCell.d.ts.map +1 -1
  193. package/dist/components/RichCell/RichCell.js +15 -8
  194. package/dist/components/RichCell/RichCell.js.map +1 -1
  195. package/dist/components/Root/Root.d.ts.map +1 -1
  196. package/dist/components/Root/Root.js +3 -1
  197. package/dist/components/Root/Root.js.map +1 -1
  198. package/dist/components/SegmentedControl/SegmentedControl.d.ts +2 -2
  199. package/dist/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  200. package/dist/components/SegmentedControl/SegmentedControl.js +30 -10
  201. package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
  202. package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.d.ts +5 -3
  203. package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.d.ts.map +1 -1
  204. package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js +6 -17
  205. package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js.map +1 -1
  206. package/dist/components/Select/Select.d.ts.map +1 -1
  207. package/dist/components/Select/Select.js +3 -2
  208. package/dist/components/Select/Select.js.map +1 -1
  209. package/dist/components/Skeleton/Skeleton.js +2 -2
  210. package/dist/components/Skeleton/Skeleton.js.map +1 -1
  211. package/dist/components/Slider/Slider.d.ts +9 -1
  212. package/dist/components/Slider/Slider.d.ts.map +1 -1
  213. package/dist/components/Slider/Slider.js +5 -1
  214. package/dist/components/Slider/Slider.js.map +1 -1
  215. package/dist/components/Snackbar/Snackbar.js +1 -1
  216. package/dist/components/Snackbar/Snackbar.js.map +1 -1
  217. package/dist/components/SplitCol/SplitColContext.d.ts +1 -1
  218. package/dist/components/SplitCol/SplitColContext.d.ts.map +1 -1
  219. package/dist/components/SplitCol/SplitColContext.js.map +1 -1
  220. package/dist/components/Tabs/Tabs.d.ts.map +1 -1
  221. package/dist/components/Tabs/Tabs.js +2 -82
  222. package/dist/components/Tabs/Tabs.js.map +1 -1
  223. package/dist/components/Textarea/Textarea.js +2 -2
  224. package/dist/components/Textarea/Textarea.js.map +1 -1
  225. package/dist/components/Textarea/useResizeTextarea.d.ts +1 -1
  226. package/dist/components/Textarea/useResizeTextarea.d.ts.map +1 -1
  227. package/dist/components/Textarea/useResizeTextarea.js +1 -1
  228. package/dist/components/Textarea/useResizeTextarea.js.map +1 -1
  229. package/dist/components/Tooltip/Tooltip.d.ts +2 -2
  230. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
  231. package/dist/components/Tooltip/Tooltip.js +4 -2
  232. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  233. package/dist/components/UsersStack/UsersStack.d.ts +1 -1
  234. package/dist/components/UsersStack/UsersStack.d.ts.map +1 -1
  235. package/dist/components/UsersStack/UsersStack.js +16 -5
  236. package/dist/components/UsersStack/UsersStack.js.map +1 -1
  237. package/dist/components/View/View.d.ts.map +1 -1
  238. package/dist/components/View/View.js +3 -1
  239. package/dist/components/View/View.js.map +1 -1
  240. package/dist/components/View/ViewInfinite.d.ts.map +1 -1
  241. package/dist/components/View/ViewInfinite.js +3 -1
  242. package/dist/components/View/ViewInfinite.js.map +1 -1
  243. package/dist/components.css +1 -1
  244. package/dist/components.css.map +1 -1
  245. package/dist/context/CalendarDirectionContext.d.ts +7 -0
  246. package/dist/context/CalendarDirectionContext.d.ts.map +1 -0
  247. package/dist/context/CalendarDirectionContext.js +7 -0
  248. package/dist/context/CalendarDirectionContext.js.map +1 -0
  249. package/dist/cssm/components/ActionSheet/types.js.map +1 -1
  250. package/dist/cssm/components/Alert/Alert.js.map +1 -1
  251. package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
  252. package/dist/cssm/components/AppRoot/AppRootContext.js.map +1 -1
  253. package/dist/cssm/components/AppRoot/AppRootPortal.js.map +1 -1
  254. package/dist/cssm/components/AppRoot/ScrollContext.js.map +1 -1
  255. package/dist/cssm/components/AspectRatio/AspectRatio.js +1 -1
  256. package/dist/cssm/components/AspectRatio/AspectRatio.js.map +1 -1
  257. package/dist/cssm/components/Calendar/Calendar.js +79 -64
  258. package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
  259. package/dist/cssm/components/CalendarDay/CalendarDay.js +3 -1
  260. package/dist/cssm/components/CalendarDay/CalendarDay.js.map +1 -1
  261. package/dist/cssm/components/CalendarDay/CalendarDay.module.css +4 -0
  262. package/dist/cssm/components/CalendarDays/CalendarDays.js.map +1 -1
  263. package/dist/cssm/components/CalendarHeader/CalendarHeader.js +4 -2
  264. package/dist/cssm/components/CalendarHeader/CalendarHeader.js.map +1 -1
  265. package/dist/cssm/components/CalendarRange/CalendarRange.js +108 -94
  266. package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
  267. package/dist/cssm/components/CalendarTime/CalendarTime.js +67 -9
  268. package/dist/cssm/components/CalendarTime/CalendarTime.js.map +1 -1
  269. package/dist/cssm/components/CardScroll/CardScroll.js +3 -1
  270. package/dist/cssm/components/CardScroll/CardScroll.js.map +1 -1
  271. package/dist/cssm/components/CarouselBase/Bullets.js +22 -0
  272. package/dist/cssm/components/CarouselBase/Bullets.js.map +1 -0
  273. package/dist/cssm/components/{BaseGallery/CarouselBase → CarouselBase}/CarouselBase.js +164 -97
  274. package/dist/cssm/components/CarouselBase/CarouselBase.js.map +1 -0
  275. package/dist/cssm/components/{BaseGallery/BaseGallery.module.css → CarouselBase/CarouselBase.module.css} +21 -1
  276. package/dist/cssm/components/CarouselBase/CarouselViewPort.js +30 -0
  277. package/dist/cssm/components/CarouselBase/CarouselViewPort.js.map +1 -0
  278. package/dist/cssm/components/CarouselBase/ScrollArrows.js +35 -0
  279. package/dist/cssm/components/CarouselBase/ScrollArrows.js.map +1 -0
  280. package/dist/cssm/components/{BaseGallery/CarouselBase → CarouselBase}/constants.js +5 -1
  281. package/dist/cssm/components/CarouselBase/constants.js.map +1 -0
  282. package/dist/{components/BaseGallery → cssm/components}/CarouselBase/helpers.js +39 -5
  283. package/dist/cssm/components/CarouselBase/helpers.js.map +1 -0
  284. package/dist/cssm/components/{BaseGallery/CarouselBase → CarouselBase}/hooks.js +2 -2
  285. package/dist/cssm/components/CarouselBase/hooks.js.map +1 -0
  286. package/dist/cssm/components/CarouselBase/types.js.map +1 -0
  287. package/dist/cssm/components/ChipsInput/ChipsInput.js.map +1 -1
  288. package/dist/cssm/components/ChipsInput/useChipsInput.js.map +1 -1
  289. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  290. package/dist/cssm/components/ChipsSelect/useChipsSelect.js.map +1 -1
  291. package/dist/cssm/components/Clickable/useState.js.map +1 -1
  292. package/dist/cssm/components/Clickable/useStateWithDelay.js +1 -1
  293. package/dist/cssm/components/Clickable/useStateWithDelay.js.map +1 -1
  294. package/dist/cssm/components/ConfigProvider/ConfigProvider.js +8 -23
  295. package/dist/cssm/components/ConfigProvider/ConfigProvider.js.map +1 -1
  296. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.js +22 -0
  297. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  298. package/dist/cssm/components/ConfigProvider/ConfigProviderOverride.js +2 -3
  299. package/dist/cssm/components/ConfigProvider/ConfigProviderOverride.js.map +1 -1
  300. package/dist/cssm/components/CustomScrollView/CustomScrollView.js +8 -4
  301. package/dist/cssm/components/CustomScrollView/CustomScrollView.js.map +1 -1
  302. package/dist/cssm/components/CustomScrollView/CustomScrollView.module.css +6 -2
  303. package/dist/cssm/components/CustomSelect/CustomSelect.js +6 -3
  304. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  305. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  306. package/dist/cssm/components/DateInput/DateInput.js +37 -5
  307. package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
  308. package/dist/cssm/components/DateRangeInput/DateRangeInput.js +4 -3
  309. package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
  310. package/dist/cssm/components/Epic/Epic.js.map +1 -1
  311. package/dist/cssm/components/FixedLayout/FixedLayout.js +1 -2
  312. package/dist/cssm/components/FixedLayout/FixedLayout.js.map +1 -1
  313. package/dist/cssm/components/FormField/FormField.module.css +11 -11
  314. package/dist/cssm/components/Gallery/Gallery.js +3 -5
  315. package/dist/cssm/components/Gallery/Gallery.js.map +1 -1
  316. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +3 -3
  317. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  318. package/dist/cssm/components/Image/Image.js +2 -0
  319. package/dist/cssm/components/Image/Image.js.map +1 -1
  320. package/dist/cssm/components/ImageBase/ImageBase.js +35 -9
  321. package/dist/cssm/components/ImageBase/ImageBase.js.map +1 -1
  322. package/dist/cssm/components/ImageBase/ImageBase.module.css +9 -0
  323. package/dist/cssm/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.js +91 -0
  324. package/dist/cssm/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.js.map +1 -0
  325. package/dist/cssm/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.module.css +134 -0
  326. package/dist/cssm/components/ImageBase/ImageBaseFloatElement/helpers.js +35 -0
  327. package/dist/cssm/components/ImageBase/ImageBaseFloatElement/helpers.js.map +1 -0
  328. package/dist/cssm/components/ImageBase/ImageBaseOverlay/hooks.js.map +1 -1
  329. package/dist/cssm/components/ImageBase/context.js +3 -1
  330. package/dist/cssm/components/ImageBase/context.js.map +1 -1
  331. package/dist/cssm/components/ImageBase/types.js.map +1 -1
  332. package/dist/cssm/components/ImageBase/validators.js.map +1 -1
  333. package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
  334. package/dist/cssm/components/ModalRoot/ModalRootContext.js.map +1 -1
  335. package/dist/cssm/components/Pagination/Pagination.js +10 -4
  336. package/dist/cssm/components/Pagination/Pagination.js.map +1 -1
  337. package/dist/cssm/components/Pagination/PaginationNavigationButton/PaginationNavigationButton.js +2 -1
  338. package/dist/cssm/components/Pagination/PaginationNavigationButton/PaginationNavigationButton.js.map +1 -1
  339. package/dist/cssm/components/Popover/Popover.js +5 -93
  340. package/dist/cssm/components/Popover/Popover.js.map +1 -1
  341. package/dist/cssm/components/Popover/usePopover.js +102 -0
  342. package/dist/cssm/components/Popover/usePopover.js.map +1 -0
  343. package/dist/cssm/components/Popper/Popper.js.map +1 -1
  344. package/dist/cssm/components/PullToRefresh/PullToRefresh.js +1 -1
  345. package/dist/cssm/components/PullToRefresh/PullToRefresh.js.map +1 -1
  346. package/dist/cssm/components/Removable/Removable.js.map +1 -1
  347. package/dist/cssm/components/RichCell/RichCell.js +13 -8
  348. package/dist/cssm/components/RichCell/RichCell.js.map +1 -1
  349. package/dist/cssm/components/RichCell/RichCell.module.css +17 -3
  350. package/dist/cssm/components/Root/Root.js +3 -1
  351. package/dist/cssm/components/Root/Root.js.map +1 -1
  352. package/dist/cssm/components/SegmentedControl/SegmentedControl.js +27 -7
  353. package/dist/cssm/components/SegmentedControl/SegmentedControl.js.map +1 -1
  354. package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js +5 -5
  355. package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js.map +1 -1
  356. package/dist/cssm/components/Select/Select.js +1 -1
  357. package/dist/cssm/components/Select/Select.js.map +1 -1
  358. package/dist/cssm/components/Skeleton/Skeleton.js +2 -2
  359. package/dist/cssm/components/Skeleton/Skeleton.js.map +1 -1
  360. package/dist/cssm/components/Slider/Slider.js +3 -1
  361. package/dist/cssm/components/Slider/Slider.js.map +1 -1
  362. package/dist/cssm/components/Snackbar/Snackbar.js +1 -1
  363. package/dist/cssm/components/Snackbar/Snackbar.js.map +1 -1
  364. package/dist/cssm/components/Snackbar/subcomponents/Basic/Basic.module.css +12 -6
  365. package/dist/cssm/components/SplitCol/SplitColContext.js.map +1 -1
  366. package/dist/cssm/components/Tabs/Tabs.js +2 -82
  367. package/dist/cssm/components/Tabs/Tabs.js.map +1 -1
  368. package/dist/cssm/components/Textarea/Textarea.js +2 -2
  369. package/dist/cssm/components/Textarea/Textarea.js.map +1 -1
  370. package/dist/cssm/components/Textarea/useResizeTextarea.js +1 -1
  371. package/dist/cssm/components/Textarea/useResizeTextarea.js.map +1 -1
  372. package/dist/cssm/components/Tooltip/Tooltip.js +3 -2
  373. package/dist/cssm/components/Tooltip/Tooltip.js.map +1 -1
  374. package/dist/cssm/components/UsersStack/UsersStack.js +15 -4
  375. package/dist/cssm/components/UsersStack/UsersStack.js.map +1 -1
  376. package/dist/cssm/components/UsersStack/UsersStack.module.css +27 -17
  377. package/dist/cssm/components/View/View.js +3 -1
  378. package/dist/cssm/components/View/View.js.map +1 -1
  379. package/dist/cssm/components/View/ViewInfinite.js +3 -1
  380. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  381. package/dist/cssm/context/CalendarDirectionContext.js +7 -0
  382. package/dist/cssm/context/CalendarDirectionContext.js.map +1 -0
  383. package/dist/cssm/helpers/getMergedSameEventsByProps.js.map +1 -1
  384. package/dist/cssm/hooks/useDateInput.js.map +1 -1
  385. package/dist/cssm/hooks/useDirection.js.map +1 -1
  386. package/dist/cssm/hooks/useDraggableWithDomApi/types.js.map +1 -1
  387. package/dist/cssm/hooks/useEnsuredControl.js +1 -1
  388. package/dist/cssm/hooks/useEnsuredControl.js.map +1 -1
  389. package/dist/cssm/hooks/useExternRef.js.map +1 -1
  390. package/dist/cssm/hooks/useFocusTrap.js.map +1 -1
  391. package/dist/cssm/hooks/useGlobalOnClickOutside.js.map +1 -1
  392. package/dist/cssm/hooks/useKeyboardInputTracker.js.map +1 -1
  393. package/dist/cssm/hooks/useMutationObserver.js.map +1 -1
  394. package/dist/cssm/hooks/useNativeFormResetListener.js.map +1 -1
  395. package/dist/cssm/hooks/usePatchChildren.js.map +1 -1
  396. package/dist/cssm/hooks/usePrevious.js +1 -1
  397. package/dist/cssm/hooks/usePrevious.js.map +1 -1
  398. package/dist/cssm/hooks/useResizeObserver.js +20 -4
  399. package/dist/cssm/hooks/useResizeObserver.js.map +1 -1
  400. package/dist/cssm/hooks/useStateWithPrev.js.map +1 -1
  401. package/dist/cssm/hooks/useSyncHTMLWithBaseVKUIClasses.js.map +1 -1
  402. package/dist/cssm/hooks/useSyncHTMLWithTokens.js.map +1 -1
  403. package/dist/cssm/hooks/useTabsNavigation.js +90 -0
  404. package/dist/cssm/hooks/useTabsNavigation.js.map +1 -0
  405. package/dist/cssm/index.js +4 -0
  406. package/dist/cssm/index.js.map +1 -1
  407. package/dist/cssm/lib/animation/useCSSTransition.js.map +1 -1
  408. package/dist/cssm/lib/floating/useFloatingMiddlewaresBootstrap/index.js +4 -4
  409. package/dist/cssm/lib/floating/useFloatingMiddlewaresBootstrap/index.js.map +1 -1
  410. package/dist/cssm/lib/floating/useFloatingWithInteractions/types.js.map +1 -1
  411. package/dist/cssm/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js +10 -3
  412. package/dist/cssm/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
  413. package/dist/cssm/lib/utils.js.map +1 -1
  414. package/dist/cssm/styles/constants.css +1 -0
  415. package/dist/helpers/getMergedSameEventsByProps.d.ts +1 -1
  416. package/dist/helpers/getMergedSameEventsByProps.d.ts.map +1 -1
  417. package/dist/helpers/getMergedSameEventsByProps.js.map +1 -1
  418. package/dist/hooks/useDateInput.d.ts +3 -3
  419. package/dist/hooks/useDateInput.d.ts.map +1 -1
  420. package/dist/hooks/useDateInput.js.map +1 -1
  421. package/dist/hooks/useDirection.d.ts +2 -2
  422. package/dist/hooks/useDirection.d.ts.map +1 -1
  423. package/dist/hooks/useDirection.js.map +1 -1
  424. package/dist/hooks/useDraggableWithDomApi/types.d.ts +1 -1
  425. package/dist/hooks/useDraggableWithDomApi/types.d.ts.map +1 -1
  426. package/dist/hooks/useDraggableWithDomApi/types.js.map +1 -1
  427. package/dist/hooks/useEnsuredControl.js +1 -1
  428. package/dist/hooks/useEnsuredControl.js.map +1 -1
  429. package/dist/hooks/useExternRef.d.ts +1 -1
  430. package/dist/hooks/useExternRef.d.ts.map +1 -1
  431. package/dist/hooks/useExternRef.js.map +1 -1
  432. package/dist/hooks/useFocusTrap.d.ts +1 -1
  433. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  434. package/dist/hooks/useFocusTrap.js.map +1 -1
  435. package/dist/hooks/useGlobalOnClickOutside.d.ts +1 -1
  436. package/dist/hooks/useGlobalOnClickOutside.d.ts.map +1 -1
  437. package/dist/hooks/useGlobalOnClickOutside.js.map +1 -1
  438. package/dist/hooks/useKeyboardInputTracker.d.ts +1 -1
  439. package/dist/hooks/useKeyboardInputTracker.d.ts.map +1 -1
  440. package/dist/hooks/useKeyboardInputTracker.js.map +1 -1
  441. package/dist/hooks/useMutationObserver.d.ts +1 -1
  442. package/dist/hooks/useMutationObserver.d.ts.map +1 -1
  443. package/dist/hooks/useMutationObserver.js.map +1 -1
  444. package/dist/hooks/useNativeFormResetListener.d.ts +1 -1
  445. package/dist/hooks/useNativeFormResetListener.d.ts.map +1 -1
  446. package/dist/hooks/useNativeFormResetListener.js.map +1 -1
  447. package/dist/hooks/usePatchChildren.d.ts +2 -2
  448. package/dist/hooks/usePatchChildren.d.ts.map +1 -1
  449. package/dist/hooks/usePatchChildren.js.map +1 -1
  450. package/dist/hooks/usePrevious.js +1 -1
  451. package/dist/hooks/usePrevious.js.map +1 -1
  452. package/dist/hooks/useResizeObserver.d.ts +1 -1
  453. package/dist/hooks/useResizeObserver.d.ts.map +1 -1
  454. package/dist/hooks/useResizeObserver.js +20 -4
  455. package/dist/hooks/useResizeObserver.js.map +1 -1
  456. package/dist/hooks/useStateWithPrev.d.ts.map +1 -1
  457. package/dist/hooks/useStateWithPrev.js.map +1 -1
  458. package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.d.ts +1 -1
  459. package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.d.ts.map +1 -1
  460. package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.js.map +1 -1
  461. package/dist/hooks/useSyncHTMLWithTokens.d.ts +1 -1
  462. package/dist/hooks/useSyncHTMLWithTokens.d.ts.map +1 -1
  463. package/dist/hooks/useSyncHTMLWithTokens.js.map +1 -1
  464. package/dist/hooks/useTabsNavigation.d.ts +5 -0
  465. package/dist/hooks/useTabsNavigation.d.ts.map +1 -0
  466. package/dist/hooks/useTabsNavigation.js +90 -0
  467. package/dist/hooks/useTabsNavigation.js.map +1 -0
  468. package/dist/index.d.ts +5 -1
  469. package/dist/index.d.ts.map +1 -1
  470. package/dist/index.js +4 -0
  471. package/dist/index.js.map +1 -1
  472. package/dist/lib/animation/useCSSTransition.d.ts +1 -1
  473. package/dist/lib/animation/useCSSTransition.d.ts.map +1 -1
  474. package/dist/lib/animation/useCSSTransition.js.map +1 -1
  475. package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.d.ts +1 -1
  476. package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.d.ts.map +1 -1
  477. package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.js +4 -4
  478. package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.js.map +1 -1
  479. package/dist/lib/floating/useFloatingWithInteractions/types.d.ts +10 -1
  480. package/dist/lib/floating/useFloatingWithInteractions/types.d.ts.map +1 -1
  481. package/dist/lib/floating/useFloatingWithInteractions/types.js.map +1 -1
  482. package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.d.ts +1 -1
  483. package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.d.ts.map +1 -1
  484. package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js +10 -3
  485. package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
  486. package/dist/lib/utils.d.ts +1 -1
  487. package/dist/lib/utils.d.ts.map +1 -1
  488. package/dist/lib/utils.js.map +1 -1
  489. package/dist/vkui.css +1 -1
  490. package/dist/vkui.css.map +1 -1
  491. package/package.json +6 -6
  492. package/src/components/ActionSheet/types.ts +1 -1
  493. package/src/components/Alert/Alert.tsx +1 -1
  494. package/src/components/AppRoot/AppRoot.tsx +1 -1
  495. package/src/components/AppRoot/AppRootContext.ts +2 -2
  496. package/src/components/AppRoot/AppRootPortal.tsx +1 -1
  497. package/src/components/AppRoot/ScrollContext.tsx +1 -1
  498. package/src/components/AspectRatio/AspectRatio.tsx +11 -4
  499. package/src/components/Calendar/Calendar.tsx +90 -72
  500. package/src/components/CalendarDay/CalendarDay.module.css +4 -0
  501. package/src/components/CalendarDay/CalendarDay.tsx +10 -1
  502. package/src/components/CalendarDays/CalendarDays.tsx +3 -0
  503. package/src/components/CalendarHeader/CalendarHeader.tsx +17 -2
  504. package/src/components/CalendarRange/CalendarRange.tsx +110 -84
  505. package/src/components/CalendarTime/CalendarTime.tsx +104 -16
  506. package/src/components/CardScroll/CardScroll.tsx +8 -2
  507. package/src/components/CarouselBase/Bullets.tsx +36 -0
  508. package/src/components/{BaseGallery/BaseGallery.module.css → CarouselBase/CarouselBase.module.css} +19 -1
  509. package/src/components/CarouselBase/CarouselBase.tsx +502 -0
  510. package/src/components/CarouselBase/CarouselViewPort.tsx +54 -0
  511. package/src/components/CarouselBase/ScrollArrows.tsx +80 -0
  512. package/src/components/{BaseGallery/CarouselBase → CarouselBase}/constants.ts +4 -0
  513. package/src/components/{BaseGallery/CarouselBase → CarouselBase}/helpers.ts +67 -7
  514. package/src/components/{BaseGallery/CarouselBase → CarouselBase}/hooks.ts +2 -2
  515. package/src/components/CarouselBase/types.ts +135 -0
  516. package/src/components/ChipsInput/ChipsInput.tsx +1 -1
  517. package/src/components/ChipsInput/useChipsInput.ts +2 -2
  518. package/src/components/ChipsSelect/ChipsSelect.tsx +1 -1
  519. package/src/components/ChipsSelect/useChipsSelect.ts +1 -1
  520. package/src/components/Clickable/useState.tsx +2 -2
  521. package/src/components/Clickable/useStateWithDelay.tsx +1 -1
  522. package/src/components/ConfigProvider/ConfigProvider.tsx +8 -35
  523. package/src/components/ConfigProvider/ConfigProviderContext.tsx +36 -0
  524. package/src/components/ConfigProvider/ConfigProviderOverride.tsx +2 -5
  525. package/src/components/CustomScrollView/CustomScrollView.module.css +6 -2
  526. package/src/components/CustomScrollView/CustomScrollView.tsx +13 -2
  527. package/src/components/CustomSelect/CustomSelect.tsx +12 -4
  528. package/src/components/CustomSelectDropdown/CustomSelectDropdown.tsx +1 -1
  529. package/src/components/DateInput/DateInput.tsx +62 -5
  530. package/src/components/DateRangeInput/DateRangeInput.tsx +22 -2
  531. package/src/components/Epic/Epic.tsx +5 -3
  532. package/src/components/FixedLayout/FixedLayout.tsx +1 -2
  533. package/src/components/FormField/FormField.module.css +11 -11
  534. package/src/components/Gallery/Gallery.tsx +4 -10
  535. package/src/components/HorizontalScroll/HorizontalScroll.tsx +12 -2
  536. package/src/components/Image/Image.tsx +4 -0
  537. package/src/components/ImageBase/ImageBase.module.css +9 -0
  538. package/src/components/ImageBase/ImageBase.tsx +69 -10
  539. package/src/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.module.css +134 -0
  540. package/src/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.tsx +168 -0
  541. package/src/components/ImageBase/ImageBaseFloatElement/helpers.ts +44 -0
  542. package/src/components/ImageBase/ImageBaseOverlay/hooks.ts +1 -1
  543. package/src/components/ImageBase/context.ts +2 -0
  544. package/src/components/ImageBase/types.ts +2 -0
  545. package/src/components/ImageBase/validators.ts +5 -4
  546. package/src/components/ModalCardBase/ModalCardBase.tsx +1 -1
  547. package/src/components/ModalRoot/ModalRootContext.tsx +3 -1
  548. package/src/components/Pagination/Pagination.tsx +23 -4
  549. package/src/components/Pagination/PaginationNavigationButton/PaginationNavigationButton.tsx +4 -2
  550. package/src/components/Popover/Popover.tsx +6 -166
  551. package/src/components/Popover/usePopover.tsx +183 -0
  552. package/src/components/Popper/Popper.tsx +1 -1
  553. package/src/components/PullToRefresh/PullToRefresh.tsx +1 -1
  554. package/src/components/Removable/Removable.tsx +2 -2
  555. package/src/components/RichCell/RichCell.module.css +17 -3
  556. package/src/components/RichCell/RichCell.tsx +28 -8
  557. package/src/components/Root/Root.tsx +4 -2
  558. package/src/components/SegmentedControl/SegmentedControl.tsx +46 -14
  559. package/src/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.tsx +14 -10
  560. package/src/components/Select/Select.tsx +1 -0
  561. package/src/components/Skeleton/Skeleton.tsx +3 -3
  562. package/src/components/Slider/Slider.tsx +12 -0
  563. package/src/components/Snackbar/Snackbar.tsx +1 -1
  564. package/src/components/Snackbar/subcomponents/Basic/Basic.module.css +12 -6
  565. package/src/components/SplitCol/SplitColContext.tsx +1 -1
  566. package/src/components/Tabs/Tabs.tsx +2 -99
  567. package/src/components/Textarea/Textarea.tsx +2 -2
  568. package/src/components/Textarea/useResizeTextarea.ts +3 -3
  569. package/src/components/Tooltip/Tooltip.tsx +3 -0
  570. package/src/components/UsersStack/UsersStack.module.css +27 -17
  571. package/src/components/UsersStack/UsersStack.tsx +24 -3
  572. package/src/components/View/View.tsx +9 -5
  573. package/src/components/View/ViewInfinite.tsx +5 -3
  574. package/src/context/CalendarDirectionContext.ts +12 -0
  575. package/src/helpers/getMergedSameEventsByProps.ts +1 -1
  576. package/src/hooks/useDateInput.ts +5 -5
  577. package/src/hooks/useDirection.ts +3 -3
  578. package/src/hooks/useDraggableWithDomApi/types.ts +1 -1
  579. package/src/hooks/useEnsuredControl.ts +1 -1
  580. package/src/hooks/useExternRef.ts +2 -2
  581. package/src/hooks/useFocusTrap.ts +1 -1
  582. package/src/hooks/useGlobalOnClickOutside.ts +1 -1
  583. package/src/hooks/useKeyboardInputTracker.ts +1 -1
  584. package/src/hooks/useMutationObserver.ts +1 -1
  585. package/src/hooks/useNativeFormResetListener.ts +1 -1
  586. package/src/hooks/usePatchChildren.ts +2 -9
  587. package/src/hooks/usePrevious.ts +1 -1
  588. package/src/hooks/useResizeObserver.ts +30 -6
  589. package/src/hooks/useStateWithPrev.ts +1 -5
  590. package/src/hooks/useSyncHTMLWithBaseVKUIClasses.ts +1 -1
  591. package/src/hooks/useSyncHTMLWithTokens.ts +1 -1
  592. package/src/hooks/useTabsNavigation.ts +104 -0
  593. package/src/index.ts +7 -0
  594. package/src/lib/animation/useCSSTransition.ts +1 -1
  595. package/src/lib/floating/useFloatingMiddlewaresBootstrap/index.ts +9 -9
  596. package/src/lib/floating/useFloatingWithInteractions/types.ts +15 -5
  597. package/src/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.ts +7 -2
  598. package/src/lib/utils.ts +2 -2
  599. package/src/styles/constants.css +1 -0
  600. package/dist/components/BaseGallery/BaseGallery.d.ts +0 -4
  601. package/dist/components/BaseGallery/BaseGallery.d.ts.map +0 -1
  602. package/dist/components/BaseGallery/BaseGallery.js +0 -321
  603. package/dist/components/BaseGallery/BaseGallery.js.map +0 -1
  604. package/dist/components/BaseGallery/CarouselBase/CarouselBase.d.ts +0 -4
  605. package/dist/components/BaseGallery/CarouselBase/CarouselBase.d.ts.map +0 -1
  606. package/dist/components/BaseGallery/CarouselBase/CarouselBase.js.map +0 -1
  607. package/dist/components/BaseGallery/CarouselBase/constants.d.ts.map +0 -1
  608. package/dist/components/BaseGallery/CarouselBase/constants.js.map +0 -1
  609. package/dist/components/BaseGallery/CarouselBase/helpers.d.ts.map +0 -1
  610. package/dist/components/BaseGallery/CarouselBase/helpers.js.map +0 -1
  611. package/dist/components/BaseGallery/CarouselBase/hooks.d.ts.map +0 -1
  612. package/dist/components/BaseGallery/CarouselBase/hooks.js.map +0 -1
  613. package/dist/components/BaseGallery/CarouselBase/types.d.ts +0 -54
  614. package/dist/components/BaseGallery/CarouselBase/types.d.ts.map +0 -1
  615. package/dist/components/BaseGallery/CarouselBase/types.js.map +0 -1
  616. package/dist/components/BaseGallery/helpers.d.ts +0 -13
  617. package/dist/components/BaseGallery/helpers.d.ts.map +0 -1
  618. package/dist/components/BaseGallery/helpers.js +0 -24
  619. package/dist/components/BaseGallery/helpers.js.map +0 -1
  620. package/dist/components/BaseGallery/types.d.ts +0 -55
  621. package/dist/components/BaseGallery/types.d.ts.map +0 -1
  622. package/dist/components/BaseGallery/types.js.map +0 -1
  623. package/dist/cssm/components/BaseGallery/BaseGallery.js +0 -293
  624. package/dist/cssm/components/BaseGallery/BaseGallery.js.map +0 -1
  625. package/dist/cssm/components/BaseGallery/CarouselBase/CarouselBase.js.map +0 -1
  626. package/dist/cssm/components/BaseGallery/CarouselBase/constants.js.map +0 -1
  627. package/dist/cssm/components/BaseGallery/CarouselBase/helpers.js.map +0 -1
  628. package/dist/cssm/components/BaseGallery/CarouselBase/hooks.js.map +0 -1
  629. package/dist/cssm/components/BaseGallery/CarouselBase/types.js +0 -3
  630. package/dist/cssm/components/BaseGallery/CarouselBase/types.js.map +0 -1
  631. package/dist/cssm/components/BaseGallery/helpers.js +0 -24
  632. package/dist/cssm/components/BaseGallery/helpers.js.map +0 -1
  633. package/dist/cssm/components/BaseGallery/types.js +0 -3
  634. package/dist/cssm/components/BaseGallery/types.js.map +0 -1
  635. package/dist/cssm/hooks/useObjectMemo.js +0 -15
  636. package/dist/cssm/hooks/useObjectMemo.js.map +0 -1
  637. package/dist/hooks/useObjectMemo.d.ts +0 -5
  638. package/dist/hooks/useObjectMemo.d.ts.map +0 -1
  639. package/dist/hooks/useObjectMemo.js +0 -15
  640. package/dist/hooks/useObjectMemo.js.map +0 -1
  641. package/src/components/BaseGallery/BaseGallery.tsx +0 -380
  642. package/src/components/BaseGallery/CarouselBase/CarouselBase.tsx +0 -399
  643. package/src/components/BaseGallery/CarouselBase/types.ts +0 -56
  644. package/src/components/BaseGallery/helpers.ts +0 -46
  645. package/src/components/BaseGallery/types.ts +0 -61
  646. package/src/hooks/useObjectMemo.ts +0 -16
  647. /package/dist/components/{BaseGallery/CarouselBase → CarouselBase}/constants.d.ts +0 -0
  648. /package/dist/components/{BaseGallery/CarouselBase → CarouselBase}/types.js +0 -0
  649. /package/dist/{components/BaseGallery → cssm/components/CarouselBase}/types.js +0 -0
@@ -1,321 +0,0 @@
1
- 'use client';
2
- import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
3
- import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
4
- import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_properties";
5
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
- import * as React from "react";
7
- import { classNames } from "@vkontakte/vkjs";
8
- import { useAdaptivityHasPointer } from "../../hooks/useAdaptivityHasPointer.js";
9
- import { useExternRef } from "../../hooks/useExternRef.js";
10
- import { useGlobalEventListener } from "../../hooks/useGlobalEventListener.js";
11
- import { useDOM } from "../../lib/dom.js";
12
- import { useIsomorphicLayoutEffect } from "../../lib/useIsomorphicLayoutEffect.js";
13
- import { RootComponent } from "../RootComponent/RootComponent.js";
14
- import { ScrollArrow } from "../ScrollArrow/ScrollArrow.js";
15
- import { Touch } from "../Touch/Touch.js";
16
- import { calcMax, calcMin } from "./helpers.js";
17
- const ANIMATION_DURATION = 0.24;
18
- const LAYOUT_DEFAULT_STATE = {
19
- containerWidth: 0,
20
- viewportOffsetWidth: 0,
21
- layerWidth: 0,
22
- min: 0,
23
- max: 0,
24
- slides: [],
25
- isFullyVisible: true
26
- };
27
- const SHIFT_DEFAULT_STATE = {
28
- animation: undefined,
29
- shiftX: 0,
30
- dragging: false,
31
- deltaX: 0,
32
- indent: 0
33
- };
34
- const stylesBullets = {
35
- dark: "vkuiBaseGallery__bulletsDark",
36
- light: "vkuiBaseGallery__bulletsLight"
37
- };
38
- export const BaseGallery = (_param)=>{
39
- var { bullets = false, getRootRef, children, slideWidth = '100%', slideIndex = 0, dragDisabled = false, onDragStart, onDragEnd, onChange, onPrevClick, onNextClick, align = 'left', showArrows, getRef, arrowSize = 'm' } = _param, restProps = _object_without_properties(_param, [
40
- "bullets",
41
- "getRootRef",
42
- "children",
43
- "slideWidth",
44
- "slideIndex",
45
- "dragDisabled",
46
- "onDragStart",
47
- "onDragEnd",
48
- "onChange",
49
- "onPrevClick",
50
- "onNextClick",
51
- "align",
52
- "showArrows",
53
- "getRef",
54
- "arrowSize"
55
- ]);
56
- const slidesStore = React.useRef({});
57
- const layoutState = React.useRef(LAYOUT_DEFAULT_STATE);
58
- const [shiftState, setShiftState] = React.useState(SHIFT_DEFAULT_STATE);
59
- const rootRef = useExternRef(getRootRef);
60
- const viewportRef = useExternRef(getRef);
61
- const { window } = useDOM();
62
- const hasPointer = useAdaptivityHasPointer();
63
- const isCenterWithCustomWidth = slideWidth === 'custom' && align === 'center';
64
- const validateIndent = (value)=>{
65
- var _layoutState_current_max;
66
- const localMax = (_layoutState_current_max = layoutState.current.max) !== null && _layoutState_current_max !== void 0 ? _layoutState_current_max : 0;
67
- var _layoutState_current_min;
68
- const localMin = (_layoutState_current_min = layoutState.current.min) !== null && _layoutState_current_min !== void 0 ? _layoutState_current_min : 0;
69
- if (value < localMin) {
70
- return localMin;
71
- } else if (value > localMax) {
72
- return localMax;
73
- }
74
- return value;
75
- };
76
- /*
77
- * Считает отступ слоя галереи
78
- */ const calculateIndent = (targetIndex)=>{
79
- var _layoutState_current_slides;
80
- if (layoutState.current.isFullyVisible) {
81
- return 0;
82
- }
83
- const targetSlide = ((_layoutState_current_slides = layoutState.current.slides) === null || _layoutState_current_slides === void 0 ? void 0 : _layoutState_current_slides.length) ? layoutState.current.slides[targetIndex] : null;
84
- if (targetSlide) {
85
- const { coordX, width } = targetSlide;
86
- if (isCenterWithCustomWidth) {
87
- var _layoutState_current_viewportOffsetWidth;
88
- const viewportWidth = (_layoutState_current_viewportOffsetWidth = layoutState.current.viewportOffsetWidth) !== null && _layoutState_current_viewportOffsetWidth !== void 0 ? _layoutState_current_viewportOffsetWidth : 0;
89
- return viewportWidth / 2 - coordX - width / 2;
90
- }
91
- return validateIndent(-1 * coordX);
92
- }
93
- return 0;
94
- };
95
- /*
96
- * Считает отступ слоя галереи во время драга
97
- */ const calculateDragIndent = ()=>{
98
- var _layoutState_current_max;
99
- const localMax = (_layoutState_current_max = layoutState.current.max) !== null && _layoutState_current_max !== void 0 ? _layoutState_current_max : 0;
100
- var _layoutState_current_min;
101
- const localMin = (_layoutState_current_min = layoutState.current.min) !== null && _layoutState_current_min !== void 0 ? _layoutState_current_min : 0;
102
- const indent = shiftState.shiftX + shiftState.deltaX;
103
- if (indent > localMax) {
104
- return localMax + Number((indent - localMax) / 3);
105
- } else if (indent < localMin) {
106
- return localMin + Number((indent - localMin) / 3);
107
- }
108
- return indent;
109
- };
110
- const initializeSlides = (options = {})=>{
111
- var _rootRef_current, _viewportRef_current, _layoutState_current_slides_slideIndex, _localSlides_slideIndex, _localSlides_slideIndex1;
112
- var _React_Children_map;
113
- const localSlides = (_React_Children_map = React.Children.map(children, (_item, i)=>{
114
- const elem = slidesStore.current[`slide-${i}`];
115
- var _elem_offsetLeft, _elem_offsetWidth;
116
- return {
117
- coordX: (_elem_offsetLeft = elem === null || elem === void 0 ? void 0 : elem.offsetLeft) !== null && _elem_offsetLeft !== void 0 ? _elem_offsetLeft : 0,
118
- width: (_elem_offsetWidth = elem === null || elem === void 0 ? void 0 : elem.offsetWidth) !== null && _elem_offsetWidth !== void 0 ? _elem_offsetWidth : 0
119
- };
120
- })) !== null && _React_Children_map !== void 0 ? _React_Children_map : [];
121
- var _rootRef_current_offsetWidth;
122
- const localContainerWidth = (_rootRef_current_offsetWidth = (_rootRef_current = rootRef.current) === null || _rootRef_current === void 0 ? void 0 : _rootRef_current.offsetWidth) !== null && _rootRef_current_offsetWidth !== void 0 ? _rootRef_current_offsetWidth : 0;
123
- var _viewportRef_current_offsetWidth;
124
- const localViewportOffsetWidth = (_viewportRef_current_offsetWidth = (_viewportRef_current = viewportRef.current) === null || _viewportRef_current === void 0 ? void 0 : _viewportRef_current.offsetWidth) !== null && _viewportRef_current_offsetWidth !== void 0 ? _viewportRef_current_offsetWidth : 0;
125
- const localLayerWidth = localSlides.reduce((val, slide)=>slide.width + val, 0);
126
- const adjustShiftX = localSlides.length <= layoutState.current.slides.length || ((_layoutState_current_slides_slideIndex = layoutState.current.slides[slideIndex]) === null || _layoutState_current_slides_slideIndex === void 0 ? void 0 : _layoutState_current_slides_slideIndex.coordX) !== ((_localSlides_slideIndex = localSlides[slideIndex]) === null || _localSlides_slideIndex === void 0 ? void 0 : _localSlides_slideIndex.coordX);
127
- var _localSlides_slideIndex_width;
128
- const currentSlideOffsetOnCenterAlignment = (localContainerWidth - ((_localSlides_slideIndex_width = (_localSlides_slideIndex1 = localSlides[slideIndex]) === null || _localSlides_slideIndex1 === void 0 ? void 0 : _localSlides_slideIndex1.width) !== null && _localSlides_slideIndex_width !== void 0 ? _localSlides_slideIndex_width : 0)) / 2;
129
- const isFullyVisible = align === 'center' ? localLayerWidth + currentSlideOffsetOnCenterAlignment <= localContainerWidth : localLayerWidth <= localContainerWidth;
130
- layoutState.current = {
131
- containerWidth: localContainerWidth,
132
- viewportOffsetWidth: localViewportOffsetWidth,
133
- layerWidth: localLayerWidth,
134
- max: calcMax({
135
- slides: localSlides,
136
- viewportOffsetWidth: localViewportOffsetWidth,
137
- isCenterWithCustomWidth
138
- }),
139
- min: calcMin({
140
- containerWidth: localContainerWidth,
141
- layerWidth: localLayerWidth,
142
- slides: localSlides,
143
- viewportOffsetWidth: localViewportOffsetWidth,
144
- isCenterWithCustomWidth,
145
- align
146
- }),
147
- slides: localSlides,
148
- isFullyVisible
149
- };
150
- setShiftState((prevState)=>{
151
- var _options_animation;
152
- return _object_spread_props(_object_spread({}, prevState), {
153
- shiftX: adjustShiftX ? calculateIndent(slideIndex) : prevState.shiftX,
154
- animation: (_options_animation = options.animation) !== null && _options_animation !== void 0 ? _options_animation : prevState.shiftX === validateIndent(prevState.shiftX)
155
- });
156
- });
157
- };
158
- const onResize = ()=>{
159
- if (shiftState.animation !== undefined) {
160
- initializeSlides({
161
- animation: false
162
- });
163
- }
164
- };
165
- useGlobalEventListener(window, 'resize', onResize);
166
- useIsomorphicLayoutEffect(()=>{
167
- initializeSlides({
168
- animation: false
169
- });
170
- }, [
171
- children,
172
- align,
173
- slideWidth
174
- ]);
175
- useIsomorphicLayoutEffect(()=>{
176
- if (shiftState.animation !== undefined) {
177
- setShiftState((prevState)=>_object_spread_props(_object_spread({}, prevState), {
178
- animation: true,
179
- deltaX: 0,
180
- shiftX: calculateIndent(slideIndex !== null && slideIndex !== void 0 ? slideIndex : 0)
181
- }));
182
- }
183
- }, [
184
- slideIndex
185
- ]);
186
- const slideLeft = (event)=>{
187
- onChange === null || onChange === void 0 ? void 0 : onChange(slideIndex - 1);
188
- onPrevClick === null || onPrevClick === void 0 ? void 0 : onPrevClick(event);
189
- };
190
- const slideRight = (event)=>{
191
- onChange === null || onChange === void 0 ? void 0 : onChange(slideIndex + 1);
192
- onNextClick === null || onNextClick === void 0 ? void 0 : onNextClick(event);
193
- };
194
- /*
195
- * Получает индекс слайда, к которому будет осуществлен переход
196
- */ const getTarget = (e)=>{
197
- const expectDeltaX = shiftState.deltaX / e.duration * 240 * 0.6;
198
- var _layoutState_current_max;
199
- const shift = shiftState.shiftX + shiftState.deltaX + expectDeltaX - ((_layoutState_current_max = layoutState.current.max) !== null && _layoutState_current_max !== void 0 ? _layoutState_current_max : 0);
200
- const direction = shiftState.deltaX < 0 ? 1 : -1;
201
- // Находим ближайшую границу слайда к текущему отступу
202
- let targetIndex = layoutState.current.slides.reduce((val, item, index)=>{
203
- const previousValue = Math.abs(layoutState.current.slides[val].coordX + shift);
204
- const currentValue = Math.abs(item.coordX + shift);
205
- return previousValue < currentValue ? val : index;
206
- }, slideIndex);
207
- if (targetIndex === slideIndex) {
208
- let targetSlide = slideIndex + direction;
209
- if (targetSlide >= 0 && targetSlide < layoutState.current.slides.length) {
210
- if (Math.abs(shiftState.deltaX) > layoutState.current.slides[targetSlide].width * 0.05) {
211
- targetIndex = targetSlide;
212
- }
213
- }
214
- }
215
- return targetIndex;
216
- };
217
- const isDraggable = !dragDisabled && !layoutState.current.isFullyVisible;
218
- const onStart = (e)=>{
219
- e.originalEvent.stopPropagation();
220
- if (isDraggable) {
221
- onDragStart === null || onDragStart === void 0 ? void 0 : onDragStart(e);
222
- setShiftState((prevState)=>_object_spread_props(_object_spread({}, prevState), {
223
- animation: false
224
- }));
225
- }
226
- };
227
- const onMoveX = (e)=>{
228
- if (isDraggable) {
229
- e.originalEvent.preventDefault();
230
- if (e.isSlideX) {
231
- if (shiftState.deltaX !== e.shiftX) {
232
- setShiftState((prevState)=>_object_spread_props(_object_spread({}, prevState), {
233
- deltaX: e.shiftX,
234
- dragging: e.isSlideX
235
- }));
236
- }
237
- }
238
- }
239
- };
240
- const onEnd = (e)=>{
241
- if (isDraggable) {
242
- const targetIndex = e.isSlide ? getTarget(e) : slideIndex !== null && slideIndex !== void 0 ? slideIndex : 0;
243
- onDragEnd === null || onDragEnd === void 0 ? void 0 : onDragEnd(e, targetIndex);
244
- const nextShiftState = {
245
- animation: true,
246
- dragging: false,
247
- deltaX: 0
248
- };
249
- const shiftXStick = calculateDragIndent();
250
- if (targetIndex !== slideIndex) {
251
- // Сохраняем сдвиг слайда в том положении, в каком его оставили после драга (fix issue #2185)
252
- nextShiftState.shiftX = shiftXStick;
253
- }
254
- setShiftState((prevState)=>_object_spread({}, prevState, nextShiftState));
255
- if (targetIndex !== slideIndex) {
256
- onChange === null || onChange === void 0 ? void 0 : onChange(targetIndex);
257
- }
258
- }
259
- };
260
- const indent = shiftState.dragging ? calculateDragIndent() : shiftState.shiftX;
261
- const layerStyle = {
262
- transform: `translateX(${indent}px)`,
263
- transition: shiftState.animation ? `transform ${ANIMATION_DURATION}s cubic-bezier(.1, 0, .25, 1)` : 'none'
264
- };
265
- const setSlideRef = (slideRef, slideIndex)=>{
266
- slidesStore.current[`slide-${slideIndex}`] = slideRef;
267
- };
268
- // shiftX is negative number <= 0, we can swipe back only if it is < 0
269
- const canSlideLeft = !layoutState.current.isFullyVisible && shiftState.shiftX < 0;
270
- var _layoutState_current_layerWidth;
271
- const canSlideRight = !layoutState.current.isFullyVisible && // we can't move right when gallery layer fully scrolled right, if gallery aligned by left side
272
- (align === 'left' && layoutState.current.containerWidth - shiftState.shiftX < ((_layoutState_current_layerWidth = layoutState.current.layerWidth) !== null && _layoutState_current_layerWidth !== void 0 ? _layoutState_current_layerWidth : 0) || // otherwise we need to check current slide index (align = right or align = center)
273
- align !== 'left' && slideIndex < layoutState.current.slides.length - 1);
274
- return /*#__PURE__*/ _jsxs(RootComponent, _object_spread_props(_object_spread({}, restProps), {
275
- baseClassName: classNames("vkuiBaseGallery__host", align === 'center' && "vkuiBaseGallery__alignCenter", slideWidth === 'custom' && "vkuiBaseGallery__customWidth", isDraggable && "vkuiBaseGallery__draggable"),
276
- getRootRef: rootRef,
277
- children: [
278
- /*#__PURE__*/ _jsx(Touch, {
279
- className: "vkuiBaseGallery__viewport",
280
- onStartX: onStart,
281
- onMoveX: onMoveX,
282
- onEnd: onEnd,
283
- style: {
284
- width: slideWidth === 'custom' ? '100%' : slideWidth
285
- },
286
- getRootRef: viewportRef,
287
- noSlideClick: true,
288
- children: /*#__PURE__*/ _jsx("div", {
289
- className: "vkuiBaseGallery__layer",
290
- style: layerStyle,
291
- children: React.Children.map(children, (item, i)=>/*#__PURE__*/ _jsx("div", {
292
- className: "vkuiBaseGallery__slide",
293
- ref: (el)=>setSlideRef(el, i),
294
- children: item
295
- }, `slide-${i}`))
296
- })
297
- }),
298
- bullets && /*#__PURE__*/ _jsx("div", {
299
- "aria-hidden": true,
300
- className: classNames("vkuiBaseGallery__bullets", stylesBullets[bullets]),
301
- children: React.Children.map(children, (_item, index)=>/*#__PURE__*/ _jsx("div", {
302
- className: classNames("vkuiBaseGallery__bullet", index === slideIndex && "vkuiBaseGallery__bulletActive")
303
- }, index))
304
- }),
305
- showArrows && hasPointer && canSlideLeft && /*#__PURE__*/ _jsx(ScrollArrow, {
306
- className: "vkuiBaseGallery__arrow",
307
- direction: "left",
308
- onClick: slideLeft,
309
- size: arrowSize
310
- }),
311
- showArrows && hasPointer && canSlideRight && /*#__PURE__*/ _jsx(ScrollArrow, {
312
- className: "vkuiBaseGallery__arrow",
313
- direction: "right",
314
- onClick: slideRight,
315
- size: arrowSize
316
- })
317
- ]
318
- }));
319
- };
320
-
321
- //# sourceMappingURL=BaseGallery.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/BaseGallery/BaseGallery.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivityHasPointer } from '../../hooks/useAdaptivityHasPointer';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport { useDOM } from '../../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { ScrollArrow } from '../ScrollArrow/ScrollArrow';\nimport { type CustomTouchEvent, Touch } from '../Touch/Touch';\nimport { calcMax, calcMin } from './helpers';\nimport type { BaseGalleryProps, GallerySlidesState, LayoutState, ShiftingState } from './types';\nimport styles from './BaseGallery.module.css';\n\nconst ANIMATION_DURATION = 0.24;\n\nconst LAYOUT_DEFAULT_STATE = {\n containerWidth: 0,\n viewportOffsetWidth: 0,\n layerWidth: 0,\n min: 0,\n max: 0,\n slides: [],\n isFullyVisible: true,\n};\n\nconst SHIFT_DEFAULT_STATE = {\n animation: undefined,\n shiftX: 0,\n dragging: false,\n deltaX: 0,\n indent: 0,\n};\n\nconst stylesBullets = {\n dark: styles.bulletsDark,\n light: styles.bulletsLight,\n};\nexport const BaseGallery = ({\n bullets = false,\n getRootRef,\n children,\n slideWidth = '100%',\n slideIndex = 0,\n dragDisabled = false,\n onDragStart,\n onDragEnd,\n onChange,\n onPrevClick,\n onNextClick,\n align = 'left',\n showArrows,\n getRef,\n arrowSize = 'm',\n ...restProps\n}: BaseGalleryProps): React.ReactNode => {\n const slidesStore = React.useRef<Record<string, HTMLDivElement | null>>({});\n const layoutState = React.useRef<LayoutState>(LAYOUT_DEFAULT_STATE);\n const [shiftState, setShiftState] = React.useState<ShiftingState>(SHIFT_DEFAULT_STATE);\n\n const rootRef = useExternRef(getRootRef);\n const viewportRef = useExternRef(getRef);\n\n const { window } = useDOM();\n const hasPointer = useAdaptivityHasPointer();\n\n const isCenterWithCustomWidth = slideWidth === 'custom' && align === 'center';\n\n const validateIndent = (value: number) => {\n const localMax = layoutState.current.max ?? 0;\n const localMin = layoutState.current.min ?? 0;\n\n if (value < localMin) {\n return localMin;\n } else if (value > localMax) {\n return localMax;\n }\n\n return value;\n };\n\n /*\n * Считает отступ слоя галереи\n */\n const calculateIndent = (targetIndex: number) => {\n if (layoutState.current.isFullyVisible) {\n return 0;\n }\n\n const targetSlide = layoutState.current.slides?.length\n ? layoutState.current.slides[targetIndex]\n : null;\n\n if (targetSlide) {\n const { coordX, width } = targetSlide;\n\n if (isCenterWithCustomWidth) {\n const viewportWidth = layoutState.current.viewportOffsetWidth ?? 0;\n return viewportWidth / 2 - coordX - width / 2;\n }\n\n return validateIndent(-1 * coordX);\n }\n return 0;\n };\n\n /*\n * Считает отступ слоя галереи во время драга\n */\n const calculateDragIndent = () => {\n const localMax = layoutState.current.max ?? 0;\n const localMin = layoutState.current.min ?? 0;\n const indent = shiftState.shiftX + shiftState.deltaX;\n\n if (indent > localMax) {\n return localMax + Number((indent - localMax) / 3);\n } else if (indent < localMin) {\n return localMin + Number((indent - localMin) / 3);\n }\n\n return indent;\n };\n\n const initializeSlides = (options: { animation?: boolean } = {}) => {\n const localSlides =\n React.Children.map(children, (_item: React.ReactNode, i: number): GallerySlidesState => {\n const elem = slidesStore.current[`slide-${i}`];\n return {\n coordX: elem?.offsetLeft ?? 0,\n width: elem?.offsetWidth ?? 0,\n };\n }) ?? [];\n\n const localContainerWidth = rootRef.current?.offsetWidth ?? 0;\n const localViewportOffsetWidth = viewportRef.current?.offsetWidth ?? 0;\n const localLayerWidth = localSlides.reduce(\n (val: number, slide: GallerySlidesState) => slide.width + val,\n 0,\n );\n const adjustShiftX =\n localSlides.length <= layoutState.current.slides.length ||\n layoutState.current.slides[slideIndex]?.coordX !== localSlides[slideIndex]?.coordX;\n\n const currentSlideOffsetOnCenterAlignment =\n (localContainerWidth - (localSlides[slideIndex]?.width ?? 0)) / 2;\n const isFullyVisible =\n align === 'center'\n ? localLayerWidth + currentSlideOffsetOnCenterAlignment <= localContainerWidth\n : localLayerWidth <= localContainerWidth;\n\n layoutState.current = {\n containerWidth: localContainerWidth,\n viewportOffsetWidth: localViewportOffsetWidth,\n layerWidth: localLayerWidth,\n max: calcMax({\n slides: localSlides,\n viewportOffsetWidth: localViewportOffsetWidth,\n isCenterWithCustomWidth,\n }),\n min: calcMin({\n containerWidth: localContainerWidth,\n layerWidth: localLayerWidth,\n slides: localSlides,\n viewportOffsetWidth: localViewportOffsetWidth,\n isCenterWithCustomWidth,\n align,\n }),\n slides: localSlides,\n isFullyVisible,\n };\n\n setShiftState((prevState) => ({\n ...prevState,\n shiftX: adjustShiftX ? calculateIndent(slideIndex) : prevState.shiftX,\n animation: options.animation ?? prevState.shiftX === validateIndent(prevState.shiftX),\n }));\n };\n\n const onResize = () => {\n if (shiftState.animation !== undefined) {\n initializeSlides({ animation: false });\n }\n };\n\n useGlobalEventListener(window, 'resize', onResize);\n\n useIsomorphicLayoutEffect(() => {\n initializeSlides({ animation: false });\n }, [children, align, slideWidth]);\n\n useIsomorphicLayoutEffect(() => {\n if (shiftState.animation !== undefined) {\n setShiftState((prevState) => ({\n ...prevState,\n animation: true,\n deltaX: 0,\n shiftX: calculateIndent(slideIndex ?? 0),\n }));\n }\n }, [slideIndex]);\n\n const slideLeft = (event: React.MouseEvent) => {\n onChange?.(slideIndex - 1);\n onPrevClick?.(event);\n };\n\n const slideRight = (event: React.MouseEvent) => {\n onChange?.(slideIndex + 1);\n onNextClick?.(event);\n };\n\n /*\n * Получает индекс слайда, к которому будет осуществлен переход\n */\n const getTarget = (e: CustomTouchEvent) => {\n const expectDeltaX = (shiftState.deltaX / e.duration) * 240 * 0.6;\n const shift =\n shiftState.shiftX + shiftState.deltaX + expectDeltaX - (layoutState.current.max ?? 0);\n const direction = shiftState.deltaX < 0 ? 1 : -1;\n\n // Находим ближайшую границу слайда к текущему отступу\n let targetIndex = layoutState.current.slides.reduce(\n (val: number, item: GallerySlidesState, index: number) => {\n const previousValue = Math.abs(layoutState.current.slides[val].coordX + shift);\n const currentValue = Math.abs(item.coordX + shift);\n\n return previousValue < currentValue ? val : index;\n },\n slideIndex,\n );\n\n if (targetIndex === slideIndex) {\n let targetSlide = slideIndex + direction;\n\n if (targetSlide >= 0 && targetSlide < layoutState.current.slides.length) {\n if (Math.abs(shiftState.deltaX) > layoutState.current.slides[targetSlide].width * 0.05) {\n targetIndex = targetSlide;\n }\n }\n }\n\n return targetIndex;\n };\n\n const isDraggable = !dragDisabled && !layoutState.current.isFullyVisible;\n\n const onStart = (e: CustomTouchEvent) => {\n e.originalEvent.stopPropagation();\n if (isDraggable) {\n onDragStart?.(e);\n setShiftState((prevState) => ({ ...prevState, animation: false }));\n }\n };\n\n const onMoveX = (e: CustomTouchEvent) => {\n if (isDraggable) {\n e.originalEvent.preventDefault();\n\n if (e.isSlideX) {\n if (shiftState.deltaX !== e.shiftX) {\n setShiftState((prevState) => ({\n ...prevState,\n deltaX: e.shiftX,\n dragging: e.isSlideX,\n }));\n }\n }\n }\n };\n\n const onEnd = (e: CustomTouchEvent) => {\n if (isDraggable) {\n const targetIndex = e.isSlide ? getTarget(e) : (slideIndex ?? 0);\n onDragEnd?.(e, targetIndex);\n\n const nextShiftState: Partial<ShiftingState> = {\n animation: true,\n dragging: false,\n deltaX: 0,\n };\n\n const shiftXStick = calculateDragIndent();\n if (targetIndex !== slideIndex) {\n // Сохраняем сдвиг слайда в том положении, в каком его оставили после драга (fix issue #2185)\n nextShiftState.shiftX = shiftXStick;\n }\n\n setShiftState((prevState) => ({ ...prevState, ...nextShiftState }));\n if (targetIndex !== slideIndex) {\n onChange?.(targetIndex);\n }\n }\n };\n\n const indent = shiftState.dragging ? calculateDragIndent() : shiftState.shiftX;\n\n const layerStyle = {\n transform: `translateX(${indent}px)`,\n transition: shiftState.animation\n ? `transform ${ANIMATION_DURATION}s cubic-bezier(.1, 0, .25, 1)`\n : 'none',\n };\n\n const setSlideRef = (slideRef: HTMLDivElement | null, slideIndex: number) => {\n slidesStore.current[`slide-${slideIndex}`] = slideRef;\n };\n\n // shiftX is negative number <= 0, we can swipe back only if it is < 0\n const canSlideLeft = !layoutState.current.isFullyVisible && shiftState.shiftX < 0;\n\n const canSlideRight =\n !layoutState.current.isFullyVisible &&\n // we can't move right when gallery layer fully scrolled right, if gallery aligned by left side\n ((align === 'left' &&\n layoutState.current.containerWidth - shiftState.shiftX <\n (layoutState.current.layerWidth ?? 0)) ||\n // otherwise we need to check current slide index (align = right or align = center)\n (align !== 'left' && slideIndex < layoutState.current.slides.length - 1));\n\n return (\n <RootComponent\n {...restProps}\n baseClassName={classNames(\n styles.host,\n align === 'center' && styles.alignCenter,\n slideWidth === 'custom' && styles.customWidth,\n isDraggable && styles.draggable,\n )}\n getRootRef={rootRef}\n >\n <Touch\n className={styles.viewport}\n onStartX={onStart}\n onMoveX={onMoveX}\n onEnd={onEnd}\n style={{ width: slideWidth === 'custom' ? '100%' : slideWidth }}\n getRootRef={viewportRef}\n noSlideClick\n >\n <div className={styles.layer} style={layerStyle}>\n {React.Children.map(children, (item: React.ReactNode, i: number) => (\n <div className={styles.slide} key={`slide-${i}`} ref={(el) => setSlideRef(el, i)}>\n {item}\n </div>\n ))}\n </div>\n </Touch>\n\n {bullets && (\n <div aria-hidden className={classNames(styles.bullets, stylesBullets[bullets])}>\n {React.Children.map(children, (_item: React.ReactNode, index: number) => (\n <div\n className={classNames(styles.bullet, index === slideIndex && styles.bulletActive)}\n key={index}\n />\n ))}\n </div>\n )}\n\n {showArrows && hasPointer && canSlideLeft && (\n <ScrollArrow\n className={styles.arrow}\n direction=\"left\"\n onClick={slideLeft}\n size={arrowSize}\n />\n )}\n {showArrows && hasPointer && canSlideRight && (\n <ScrollArrow\n className={styles.arrow}\n direction=\"right\"\n onClick={slideRight}\n size={arrowSize}\n />\n )}\n </RootComponent>\n );\n};\n"],"names":["React","classNames","useAdaptivityHasPointer","useExternRef","useGlobalEventListener","useDOM","useIsomorphicLayoutEffect","RootComponent","ScrollArrow","Touch","calcMax","calcMin","ANIMATION_DURATION","LAYOUT_DEFAULT_STATE","containerWidth","viewportOffsetWidth","layerWidth","min","max","slides","isFullyVisible","SHIFT_DEFAULT_STATE","animation","undefined","shiftX","dragging","deltaX","indent","stylesBullets","dark","light","BaseGallery","bullets","getRootRef","children","slideWidth","slideIndex","dragDisabled","onDragStart","onDragEnd","onChange","onPrevClick","onNextClick","align","showArrows","getRef","arrowSize","restProps","slidesStore","useRef","layoutState","shiftState","setShiftState","useState","rootRef","viewportRef","window","hasPointer","isCenterWithCustomWidth","validateIndent","value","localMax","current","localMin","calculateIndent","targetIndex","targetSlide","length","coordX","width","viewportWidth","calculateDragIndent","Number","initializeSlides","options","localSlides","Children","map","_item","i","elem","offsetLeft","offsetWidth","localContainerWidth","localViewportOffsetWidth","localLayerWidth","reduce","val","slide","adjustShiftX","currentSlideOffsetOnCenterAlignment","prevState","onResize","slideLeft","event","slideRight","getTarget","e","expectDeltaX","duration","shift","direction","item","index","previousValue","Math","abs","currentValue","isDraggable","onStart","originalEvent","stopPropagation","onMoveX","preventDefault","isSlideX","onEnd","isSlide","nextShiftState","shiftXStick","layerStyle","transform","transition","setSlideRef","slideRef","canSlideLeft","canSlideRight","baseClassName","className","onStartX","style","noSlideClick","div","ref","el","aria-hidden","onClick","size"],"mappings":"AAAA;;;;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,uBAAuB,QAAQ,yCAAsC;AAC9E,SAASC,YAAY,QAAQ,8BAA2B;AACxD,SAASC,sBAAsB,QAAQ,wCAAqC;AAC5E,SAASC,MAAM,QAAQ,mBAAgB;AACvC,SAASC,yBAAyB,QAAQ,yCAAsC;AAChF,SAASC,aAAa,QAAQ,oCAAiC;AAC/D,SAASC,WAAW,QAAQ,gCAA6B;AACzD,SAAgCC,KAAK,QAAQ,oBAAiB;AAC9D,SAASC,OAAO,EAAEC,OAAO,QAAQ,eAAY;AAI7C,MAAMC,qBAAqB;AAE3B,MAAMC,uBAAuB;IAC3BC,gBAAgB;IAChBC,qBAAqB;IACrBC,YAAY;IACZC,KAAK;IACLC,KAAK;IACLC,QAAQ,EAAE;IACVC,gBAAgB;AAClB;AAEA,MAAMC,sBAAsB;IAC1BC,WAAWC;IACXC,QAAQ;IACRC,UAAU;IACVC,QAAQ;IACRC,QAAQ;AACV;AAEA,MAAMC,gBAAgB;IACpBC,IAAI;IACJC,KAAK;AACP;AACA,OAAO,MAAMC,cAAc;QAAC,EAC1BC,UAAU,KAAK,EACfC,UAAU,EACVC,QAAQ,EACRC,aAAa,MAAM,EACnBC,aAAa,CAAC,EACdC,eAAe,KAAK,EACpBC,WAAW,EACXC,SAAS,EACTC,QAAQ,EACRC,WAAW,EACXC,WAAW,EACXC,QAAQ,MAAM,EACdC,UAAU,EACVC,MAAM,EACNC,YAAY,GAAG,EAEE,WADdC;QAfHf;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,MAAME,cAAchD,MAAMiD,MAAM,CAAwC,CAAC;IACzE,MAAMC,cAAclD,MAAMiD,MAAM,CAAcpC;IAC9C,MAAM,CAACsC,YAAYC,cAAc,GAAGpD,MAAMqD,QAAQ,CAAgBhC;IAElE,MAAMiC,UAAUnD,aAAa8B;IAC7B,MAAMsB,cAAcpD,aAAa0C;IAEjC,MAAM,EAAEW,MAAM,EAAE,GAAGnD;IACnB,MAAMoD,aAAavD;IAEnB,MAAMwD,0BAA0BvB,eAAe,YAAYQ,UAAU;IAErE,MAAMgB,iBAAiB,CAACC;YACLV;QAAjB,MAAMW,WAAWX,CAAAA,2BAAAA,YAAYY,OAAO,CAAC5C,GAAG,cAAvBgC,sCAAAA,2BAA2B;YAC3BA;QAAjB,MAAMa,WAAWb,CAAAA,2BAAAA,YAAYY,OAAO,CAAC7C,GAAG,cAAvBiC,sCAAAA,2BAA2B;QAE5C,IAAIU,QAAQG,UAAU;YACpB,OAAOA;QACT,OAAO,IAAIH,QAAQC,UAAU;YAC3B,OAAOA;QACT;QAEA,OAAOD;IACT;IAEA;;GAEC,GACD,MAAMI,kBAAkB,CAACC;YAKHf;QAJpB,IAAIA,YAAYY,OAAO,CAAC1C,cAAc,EAAE;YACtC,OAAO;QACT;QAEA,MAAM8C,cAAchB,EAAAA,8BAAAA,YAAYY,OAAO,CAAC3C,MAAM,cAA1B+B,kDAAAA,4BAA4BiB,MAAM,IAClDjB,YAAYY,OAAO,CAAC3C,MAAM,CAAC8C,YAAY,GACvC;QAEJ,IAAIC,aAAa;YACf,MAAM,EAAEE,MAAM,EAAEC,KAAK,EAAE,GAAGH;YAE1B,IAAIR,yBAAyB;oBACLR;gBAAtB,MAAMoB,gBAAgBpB,CAAAA,2CAAAA,YAAYY,OAAO,CAAC/C,mBAAmB,cAAvCmC,sDAAAA,2CAA2C;gBACjE,OAAOoB,gBAAgB,IAAIF,SAASC,QAAQ;YAC9C;YAEA,OAAOV,eAAe,CAAC,IAAIS;QAC7B;QACA,OAAO;IACT;IAEA;;GAEC,GACD,MAAMG,sBAAsB;YACTrB;QAAjB,MAAMW,WAAWX,CAAAA,2BAAAA,YAAYY,OAAO,CAAC5C,GAAG,cAAvBgC,sCAAAA,2BAA2B;YAC3BA;QAAjB,MAAMa,WAAWb,CAAAA,2BAAAA,YAAYY,OAAO,CAAC7C,GAAG,cAAvBiC,sCAAAA,2BAA2B;QAC5C,MAAMvB,SAASwB,WAAW3B,MAAM,GAAG2B,WAAWzB,MAAM;QAEpD,IAAIC,SAASkC,UAAU;YACrB,OAAOA,WAAWW,OAAO,AAAC7C,CAAAA,SAASkC,QAAO,IAAK;QACjD,OAAO,IAAIlC,SAASoC,UAAU;YAC5B,OAAOA,WAAWS,OAAO,AAAC7C,CAAAA,SAASoC,QAAO,IAAK;QACjD;QAEA,OAAOpC;IACT;IAEA,MAAM8C,mBAAmB,CAACC,UAAmC,CAAC,CAAC;YAUjCpB,kBACKC,sBAO/BL,wCAAmDyB,yBAG3BA;YAnBxB3E;QADF,MAAM2E,cACJ3E,CAAAA,sBAAAA,MAAM4E,QAAQ,CAACC,GAAG,CAAC3C,UAAU,CAAC4C,OAAwBC;YACpD,MAAMC,OAAOhC,YAAYc,OAAO,CAAC,CAAC,MAAM,EAAEiB,GAAG,CAAC;gBAEpCC,kBACDA;YAFT,OAAO;gBACLZ,QAAQY,CAAAA,mBAAAA,iBAAAA,2BAAAA,KAAMC,UAAU,cAAhBD,8BAAAA,mBAAoB;gBAC5BX,OAAOW,CAAAA,oBAAAA,iBAAAA,2BAAAA,KAAME,WAAW,cAAjBF,+BAAAA,oBAAqB;YAC9B;QACF,gBANAhF,iCAAAA,sBAMM,EAAE;YAEkBsD;QAA5B,MAAM6B,sBAAsB7B,CAAAA,gCAAAA,mBAAAA,QAAQQ,OAAO,cAAfR,uCAAAA,iBAAiB4B,WAAW,cAA5B5B,0CAAAA,+BAAgC;YAC3BC;QAAjC,MAAM6B,2BAA2B7B,CAAAA,oCAAAA,uBAAAA,YAAYO,OAAO,cAAnBP,2CAAAA,qBAAqB2B,WAAW,cAAhC3B,8CAAAA,mCAAoC;QACrE,MAAM8B,kBAAkBV,YAAYW,MAAM,CACxC,CAACC,KAAaC,QAA8BA,MAAMnB,KAAK,GAAGkB,KAC1D;QAEF,MAAME,eACJd,YAAYR,MAAM,IAAIjB,YAAYY,OAAO,CAAC3C,MAAM,CAACgD,MAAM,IACvDjB,EAAAA,yCAAAA,YAAYY,OAAO,CAAC3C,MAAM,CAACiB,WAAW,cAAtCc,6DAAAA,uCAAwCkB,MAAM,QAAKO,0BAAAA,WAAW,CAACvC,WAAW,cAAvBuC,8CAAAA,wBAAyBP,MAAM;YAG1DO;QAD1B,MAAMe,sCACJ,AAACP,CAAAA,sBAAuBR,CAAAA,CAAAA,iCAAAA,2BAAAA,WAAW,CAACvC,WAAW,cAAvBuC,+CAAAA,yBAAyBN,KAAK,cAA9BM,2CAAAA,gCAAkC,CAAA,CAAC,IAAK;QAClE,MAAMvD,iBACJuB,UAAU,WACN0C,kBAAkBK,uCAAuCP,sBACzDE,mBAAmBF;QAEzBjC,YAAYY,OAAO,GAAG;YACpBhD,gBAAgBqE;YAChBpE,qBAAqBqE;YACrBpE,YAAYqE;YACZnE,KAAKR,QAAQ;gBACXS,QAAQwD;gBACR5D,qBAAqBqE;gBACrB1B;YACF;YACAzC,KAAKN,QAAQ;gBACXG,gBAAgBqE;gBAChBnE,YAAYqE;gBACZlE,QAAQwD;gBACR5D,qBAAqBqE;gBACrB1B;gBACAf;YACF;YACAxB,QAAQwD;YACRvD;QACF;QAEAgC,cAAc,CAACuC;gBAGFjB;mBAHiB,wCACzBiB;gBACHnE,QAAQiE,eAAezB,gBAAgB5B,cAAcuD,UAAUnE,MAAM;gBACrEF,WAAWoD,CAAAA,qBAAAA,QAAQpD,SAAS,cAAjBoD,gCAAAA,qBAAqBiB,UAAUnE,MAAM,KAAKmC,eAAegC,UAAUnE,MAAM;;;IAExF;IAEA,MAAMoE,WAAW;QACf,IAAIzC,WAAW7B,SAAS,KAAKC,WAAW;YACtCkD,iBAAiB;gBAAEnD,WAAW;YAAM;QACtC;IACF;IAEAlB,uBAAuBoD,QAAQ,UAAUoC;IAEzCtF,0BAA0B;QACxBmE,iBAAiB;YAAEnD,WAAW;QAAM;IACtC,GAAG;QAACY;QAAUS;QAAOR;KAAW;IAEhC7B,0BAA0B;QACxB,IAAI6C,WAAW7B,SAAS,KAAKC,WAAW;YACtC6B,cAAc,CAACuC,YAAe,wCACzBA;oBACHrE,WAAW;oBACXI,QAAQ;oBACRF,QAAQwC,gBAAgB5B,uBAAAA,wBAAAA,aAAc;;QAE1C;IACF,GAAG;QAACA;KAAW;IAEf,MAAMyD,YAAY,CAACC;QACjBtD,qBAAAA,+BAAAA,SAAWJ,aAAa;QACxBK,wBAAAA,kCAAAA,YAAcqD;IAChB;IAEA,MAAMC,aAAa,CAACD;QAClBtD,qBAAAA,+BAAAA,SAAWJ,aAAa;QACxBM,wBAAAA,kCAAAA,YAAcoD;IAChB;IAEA;;GAEC,GACD,MAAME,YAAY,CAACC;QACjB,MAAMC,eAAe,AAAC/C,WAAWzB,MAAM,GAAGuE,EAAEE,QAAQ,GAAI,MAAM;YAEJjD;QAD1D,MAAMkD,QACJjD,WAAW3B,MAAM,GAAG2B,WAAWzB,MAAM,GAAGwE,eAAgBhD,CAAAA,CAAAA,2BAAAA,YAAYY,OAAO,CAAC5C,GAAG,cAAvBgC,sCAAAA,2BAA2B,CAAA;QACrF,MAAMmD,YAAYlD,WAAWzB,MAAM,GAAG,IAAI,IAAI,CAAC;QAE/C,sDAAsD;QACtD,IAAIuC,cAAcf,YAAYY,OAAO,CAAC3C,MAAM,CAACmE,MAAM,CACjD,CAACC,KAAae,MAA0BC;YACtC,MAAMC,gBAAgBC,KAAKC,GAAG,CAACxD,YAAYY,OAAO,CAAC3C,MAAM,CAACoE,IAAI,CAACnB,MAAM,GAAGgC;YACxE,MAAMO,eAAeF,KAAKC,GAAG,CAACJ,KAAKlC,MAAM,GAAGgC;YAE5C,OAAOI,gBAAgBG,eAAepB,MAAMgB;QAC9C,GACAnE;QAGF,IAAI6B,gBAAgB7B,YAAY;YAC9B,IAAI8B,cAAc9B,aAAaiE;YAE/B,IAAInC,eAAe,KAAKA,cAAchB,YAAYY,OAAO,CAAC3C,MAAM,CAACgD,MAAM,EAAE;gBACvE,IAAIsC,KAAKC,GAAG,CAACvD,WAAWzB,MAAM,IAAIwB,YAAYY,OAAO,CAAC3C,MAAM,CAAC+C,YAAY,CAACG,KAAK,GAAG,MAAM;oBACtFJ,cAAcC;gBAChB;YACF;QACF;QAEA,OAAOD;IACT;IAEA,MAAM2C,cAAc,CAACvE,gBAAgB,CAACa,YAAYY,OAAO,CAAC1C,cAAc;IAExE,MAAMyF,UAAU,CAACZ;QACfA,EAAEa,aAAa,CAACC,eAAe;QAC/B,IAAIH,aAAa;YACftE,wBAAAA,kCAAAA,YAAc2D;YACd7C,cAAc,CAACuC,YAAe,wCAAKA;oBAAWrE,WAAW;;QAC3D;IACF;IAEA,MAAM0F,UAAU,CAACf;QACf,IAAIW,aAAa;YACfX,EAAEa,aAAa,CAACG,cAAc;YAE9B,IAAIhB,EAAEiB,QAAQ,EAAE;gBACd,IAAI/D,WAAWzB,MAAM,KAAKuE,EAAEzE,MAAM,EAAE;oBAClC4B,cAAc,CAACuC,YAAe,wCACzBA;4BACHjE,QAAQuE,EAAEzE,MAAM;4BAChBC,UAAUwE,EAAEiB,QAAQ;;gBAExB;YACF;QACF;IACF;IAEA,MAAMC,QAAQ,CAAClB;QACb,IAAIW,aAAa;YACf,MAAM3C,cAAcgC,EAAEmB,OAAO,GAAGpB,UAAUC,KAAM7D,uBAAAA,wBAAAA,aAAc;YAC9DG,sBAAAA,gCAAAA,UAAY0D,GAAGhC;YAEf,MAAMoD,iBAAyC;gBAC7C/F,WAAW;gBACXG,UAAU;gBACVC,QAAQ;YACV;YAEA,MAAM4F,cAAc/C;YACpB,IAAIN,gBAAgB7B,YAAY;gBAC9B,6FAA6F;gBAC7FiF,eAAe7F,MAAM,GAAG8F;YAC1B;YAEAlE,cAAc,CAACuC,YAAe,mBAAKA,WAAc0B;YACjD,IAAIpD,gBAAgB7B,YAAY;gBAC9BI,qBAAAA,+BAAAA,SAAWyB;YACb;QACF;IACF;IAEA,MAAMtC,SAASwB,WAAW1B,QAAQ,GAAG8C,wBAAwBpB,WAAW3B,MAAM;IAE9E,MAAM+F,aAAa;QACjBC,WAAW,CAAC,WAAW,EAAE7F,OAAO,GAAG,CAAC;QACpC8F,YAAYtE,WAAW7B,SAAS,GAC5B,CAAC,UAAU,EAAEV,mBAAmB,6BAA6B,CAAC,GAC9D;IACN;IAEA,MAAM8G,cAAc,CAACC,UAAiCvF;QACpDY,YAAYc,OAAO,CAAC,CAAC,MAAM,EAAE1B,YAAY,CAAC,GAAGuF;IAC/C;IAEA,sEAAsE;IACtE,MAAMC,eAAe,CAAC1E,YAAYY,OAAO,CAAC1C,cAAc,IAAI+B,WAAW3B,MAAM,GAAG;QAOzE0B;IALP,MAAM2E,gBACJ,CAAC3E,YAAYY,OAAO,CAAC1C,cAAc,IACnC,+FAA+F;IAC9F,CAAA,AAACuB,UAAU,UACVO,YAAYY,OAAO,CAAChD,cAAc,GAAGqC,WAAW3B,MAAM,GACnD0B,CAAAA,CAAAA,kCAAAA,YAAYY,OAAO,CAAC9C,UAAU,cAA9BkC,6CAAAA,kCAAkC,CAAA,KACrC,mFAAmF;IAClFP,UAAU,UAAUP,aAAac,YAAYY,OAAO,CAAC3C,MAAM,CAACgD,MAAM,GAAG,CAAC;IAE3E,qBACE,MAAC5D,uDACKwC;QACJ+E,eAAe7H,oCAEb0C,UAAU,4CACVR,eAAe,4CACfyE;QAEF3E,YAAYqB;;0BAEZ,KAAC7C;gBACCsH,SAAS;gBACTC,UAAUnB;gBACVG,SAASA;gBACTG,OAAOA;gBACPc,OAAO;oBAAE5D,OAAOlC,eAAe,WAAW,SAASA;gBAAW;gBAC9DF,YAAYsB;gBACZ2E,YAAY;0BAEZ,cAAA,KAACC;oBAAIJ,SAAS;oBAAgBE,OAAOV;8BAClCvH,MAAM4E,QAAQ,CAACC,GAAG,CAAC3C,UAAU,CAACoE,MAAuBvB,kBACpD,KAACoD;4BAAIJ,SAAS;4BAAmCK,KAAK,CAACC,KAAOX,YAAYW,IAAItD;sCAC3EuB;2BADgC,CAAC,MAAM,EAAEvB,GAAG;;;YAOpD/C,yBACC,KAACmG;gBAAIG,aAAW;gBAACP,WAAW9H,uCAA2B2B,aAAa,CAACI,QAAQ;0BAC1EhC,MAAM4E,QAAQ,CAACC,GAAG,CAAC3C,UAAU,CAAC4C,OAAwByB,sBACrD,KAAC4B;wBACCJ,WAAW9H,sCAA0BsG,UAAUnE;uBAC1CmE;;YAMZ3D,cAAca,cAAcmE,8BAC3B,KAACpH;gBACCuH,SAAS;gBACT1B,WAAU;gBACVkC,SAAS1C;gBACT2C,MAAM1F;;YAGTF,cAAca,cAAcoE,+BAC3B,KAACrH;gBACCuH,SAAS;gBACT1B,WAAU;gBACVkC,SAASxC;gBACTyC,MAAM1F;;;;AAKhB,EAAE"}
@@ -1,4 +0,0 @@
1
- import * as React from 'react';
2
- import { type BaseGalleryProps } from '../types';
3
- export declare const CarouselBase: ({ bullets, getRootRef, children, slideWidth, slideIndex, dragDisabled, onDragStart, onDragEnd, onChange, onPrevClick, onNextClick, align, showArrows, getRef, arrowSize, ...restProps }: BaseGalleryProps) => React.ReactNode;
4
- //# sourceMappingURL=CarouselBase.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CarouselBase.d.ts","sourceRoot":"","sources":["../../../../src/components/BaseGallery/CarouselBase/CarouselBase.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,OAAO,EAAE,KAAK,gBAAgB,EAA2B,MAAM,UAAU,CAAC;AAmB1E,eAAO,MAAM,YAAY,4LAiBtB,gBAAgB,KAAG,KAAK,CAAC,SA4V3B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/components/BaseGallery/CarouselBase/CarouselBase.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivityHasPointer } from '../../../hooks/useAdaptivityHasPointer';\nimport { useExternRef } from '../../../hooks/useExternRef';\nimport { useGlobalEventListener } from '../../../hooks/useGlobalEventListener';\nimport { useMutationObserver } from '../../../hooks/useMutationObserver';\nimport { useDOM } from '../../../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../../../lib/useIsomorphicLayoutEffect';\nimport { warnOnce } from '../../../lib/warnOnce';\nimport { RootComponent } from '../../RootComponent/RootComponent';\nimport { ScrollArrow } from '../../ScrollArrow/ScrollArrow';\nimport { type CustomTouchEvent, Touch } from '../../Touch/Touch';\nimport { type BaseGalleryProps, type GallerySlidesState } from '../types';\nimport {\n ANIMATION_DURATION,\n CONTROL_ELEMENTS_STATE,\n SLIDE_THRESHOLD,\n SLIDES_MANAGER_STATE,\n} from './constants';\nimport { calculateIndent, getLoopPoints, getTargetIndex } from './helpers';\nimport { useSlideAnimation } from './hooks';\nimport type { ControlElementsState, SlidesManagerState } from './types';\nimport styles from '../BaseGallery.module.css';\n\nconst stylesBullets = {\n dark: styles.bulletsDark,\n light: styles.bulletsLight,\n};\n\nconst warn = warnOnce('Gallery');\n\nexport const CarouselBase = ({\n bullets = false,\n getRootRef,\n children,\n slideWidth = '100%',\n slideIndex = 0,\n dragDisabled = false,\n onDragStart,\n onDragEnd,\n onChange,\n onPrevClick,\n onNextClick,\n align = 'left',\n showArrows,\n getRef,\n arrowSize = 'm',\n ...restProps\n}: BaseGalleryProps): React.ReactNode => {\n const slidesStore = React.useRef<Record<string, HTMLDivElement | null>>({});\n const slidesManager = React.useRef<SlidesManagerState>(SLIDES_MANAGER_STATE);\n\n const rootRef = useExternRef(getRootRef);\n const viewportRef = useExternRef(getRef);\n const layerRef = React.useRef<HTMLDivElement>(null);\n const animationFrameRef = React.useRef<ReturnType<typeof requestAnimationFrame> | null>(null);\n const shiftXCurrentRef = React.useRef<number>(0);\n const shiftXDeltaRef = React.useRef<number>(0);\n const initialized = React.useRef<boolean>(false);\n const { addToAnimationQueue, getAnimateFunction, startAnimation } = useSlideAnimation();\n\n const [controlElementsState, setControlElementsState] =\n React.useState<ControlElementsState>(CONTROL_ELEMENTS_STATE);\n\n const { window } = useDOM();\n const hasPointer = useAdaptivityHasPointer();\n\n const isCenterWithCustomWidth = slideWidth === 'custom' && align === 'center';\n\n const transformCssStyles = (shiftX: number, animation = false) => {\n shiftX = Math.round(shiftX);\n slidesManager.current.loopPoints.forEach((loopPoint) => {\n const { target, index } = loopPoint;\n const slide = slidesStore.current[index];\n if (slide) {\n slide.style.transform = `translate3d(${target(shiftX)}px, 0, 0)`;\n }\n });\n\n if (layerRef.current) {\n layerRef.current.style.transform = `translate3d(${shiftX}px, 0, 0)`;\n layerRef.current.style.transition = animation\n ? `transform ${ANIMATION_DURATION}ms cubic-bezier(.1, 0, .25, 1)`\n : '';\n }\n };\n\n const requestTransform = (shiftX: number, animation = false) => {\n const { snaps, contentSize, slides } = slidesManager.current;\n\n if (animationFrameRef.current !== null) {\n cancelAnimationFrame(animationFrameRef.current);\n }\n animationFrameRef.current = requestAnimationFrame(() => {\n if (shiftX > snaps[0]) {\n shiftXCurrentRef.current = -contentSize + snaps[0];\n shiftX = shiftXCurrentRef.current + shiftXDeltaRef.current;\n }\n const lastPoint = slides[slides.length - 1].width + slides[slides.length - 1].coordX;\n\n if (shiftX <= -lastPoint) {\n shiftXCurrentRef.current = Math.abs(shiftXDeltaRef.current) + snaps[0];\n }\n transformCssStyles(shiftX, animation);\n });\n };\n\n const initializeSlides = () => {\n if (!rootRef.current || !viewportRef.current) {\n return;\n }\n let localSlides =\n React.Children.map(children, (_item, i): GallerySlidesState => {\n const elem = slidesStore.current[i] || { offsetLeft: 0, offsetWidth: 0 };\n return { coordX: elem.offsetLeft, width: elem.offsetWidth };\n }) || [];\n\n if (localSlides.length === 0) {\n initialized.current = false;\n return;\n }\n\n const containerWidth = rootRef.current.offsetWidth;\n const viewportOffsetWidth = viewportRef.current.offsetWidth;\n const layerWidth = localSlides.reduce((val, slide) => slide.width + val, 0);\n\n if (process.env.NODE_ENV === 'development') {\n let remainingWidth = containerWidth;\n let slideIndex = 0;\n\n while (remainingWidth > 0 && slideIndex < localSlides.length) {\n remainingWidth -= localSlides[slideIndex].width;\n slideIndex++;\n }\n if (remainingWidth <= 0 && slideIndex === localSlides.length) {\n warn(\n 'Ширины слайдов недостаточно для корректной работы свойства \"looped\". Пожалуйста, сделайте её больше.',\n );\n }\n }\n if (align === 'center') {\n const firstSlideShift = (containerWidth - localSlides[0].width) / 2;\n localSlides = localSlides.map((item) => {\n return {\n width: item.width,\n coordX: item.coordX - firstSlideShift,\n };\n });\n }\n\n slidesManager.current = {\n ...slidesManager.current,\n viewportOffsetWidth,\n slides: localSlides,\n isFullyVisible: layerWidth <= containerWidth,\n };\n\n const snaps = localSlides.map((_, index) =>\n calculateIndent(index, slidesManager.current, isCenterWithCustomWidth),\n );\n\n let contentSize = -snaps[snaps.length - 1] + localSlides[localSlides.length - 1].width;\n if (align === 'center') {\n contentSize += snaps[0];\n }\n\n slidesManager.current.snaps = snaps;\n slidesManager.current.contentSize = contentSize;\n slidesManager.current.loopPoints = getLoopPoints(slidesManager.current, containerWidth);\n\n setControlElementsState({\n canSlideLeft: !slidesManager.current.isFullyVisible,\n canSlideRight: !slidesManager.current.isFullyVisible,\n isDraggable: !(dragDisabled || slidesManager.current.isFullyVisible),\n });\n\n shiftXCurrentRef.current = snaps[slideIndex];\n initialized.current = true;\n\n requestTransform(shiftXCurrentRef.current);\n };\n\n const onResize = () => {\n if (initialized.current) {\n initializeSlides();\n }\n };\n\n useGlobalEventListener(window, 'resize', onResize);\n\n useIsomorphicLayoutEffect(\n function performSlideChange() {\n if (!initialized.current) {\n return;\n }\n const { snaps, slides } = slidesManager.current;\n const indent = snaps[slideIndex];\n let startPoint = shiftXCurrentRef.current;\n\n /**\n * Переключаемся с последнего элемента на первый\n * Для корректной анимации мы прокручиваем последний слайд на всю длину (shiftX) \"вперед\"\n * В конце анимации при отрисовке следующего кадра задаем всем слайдам начальные значения\n */\n if (indent === snaps[0] && shiftXCurrentRef.current <= snaps[snaps.length - 1]) {\n const distance =\n Math.abs(snaps[snaps.length - 1]) + slides[slides.length - 1].width + startPoint;\n\n addToAnimationQueue(\n getAnimateFunction((progress) => {\n const shiftX = startPoint + progress * distance * -1;\n\n transformCssStyles(shiftX);\n\n if (shiftX <= snaps[snaps.length - 1] - slides[slides.length - 1].width) {\n requestAnimationFrame(() => {\n shiftXCurrentRef.current = indent;\n transformCssStyles(snaps[0]);\n });\n }\n }),\n );\n /**\n * Переключаемся с первого слайда на последний\n * Для корректной анимации сначала задаем первым видимым слайдам смещение\n * В следующем кадре начинаем анимация прокрутки \"назад\"\n */\n } else if (indent === snaps[snaps.length - 1] && shiftXCurrentRef.current === snaps[0]) {\n startPoint = indent - slides[slides.length - 1].width;\n\n addToAnimationQueue(() => {\n requestAnimationFrame(() => {\n const shiftX = indent - slides[slides.length - 1].width;\n transformCssStyles(shiftX);\n\n getAnimateFunction((progress) => {\n transformCssStyles(startPoint + progress * slides[slides.length - 1].width);\n })();\n });\n });\n /**\n * Если не обработаны `corner`-кейсы выше, то просто проигрываем анимацию смещения\n */\n } else {\n addToAnimationQueue(() => {\n const distance = Math.abs(indent - startPoint);\n let direction = startPoint <= indent ? 1 : -1;\n\n getAnimateFunction((progress) => {\n const shiftX = startPoint + progress * distance * direction;\n transformCssStyles(shiftX);\n })();\n });\n }\n\n startAnimation();\n\n shiftXCurrentRef.current = indent;\n },\n [slideIndex],\n );\n\n useMutationObserver(layerRef, initializeSlides);\n\n useIsomorphicLayoutEffect(initializeSlides, [align, slideWidth]);\n\n const calculateMinDeltaXToSlide = () => {\n return slidesManager.current.slides[slideIndex].width * SLIDE_THRESHOLD;\n };\n\n const slideLeft = (event: React.MouseEvent) => {\n if (slideIndex > 0) {\n shiftXCurrentRef.current += calculateMinDeltaXToSlide();\n }\n onChange?.(\n (slideIndex - 1 + slidesManager.current.slides.length) % slidesManager.current.slides.length,\n );\n onPrevClick?.(event);\n };\n\n const slideRight = (event: React.MouseEvent) => {\n if (slideIndex < slidesManager.current.slides.length - 1) {\n shiftXCurrentRef.current -= calculateMinDeltaXToSlide();\n }\n onChange?.((slideIndex + 1) % slidesManager.current.slides.length);\n onNextClick?.(event);\n };\n\n const onStart = (e: CustomTouchEvent) => {\n e.originalEvent.stopPropagation();\n if (controlElementsState.isDraggable) {\n onDragStart?.(e);\n shiftXCurrentRef.current = slidesManager.current.snaps[slideIndex];\n shiftXDeltaRef.current = 0;\n }\n };\n\n const onMoveX = (e: CustomTouchEvent) => {\n if (controlElementsState.isDraggable) {\n e.originalEvent.preventDefault();\n\n if (e.isSlideX) {\n if (shiftXDeltaRef.current !== e.shiftX) {\n shiftXDeltaRef.current = e.shiftX;\n requestTransform(shiftXCurrentRef.current + shiftXDeltaRef.current);\n }\n }\n }\n };\n\n const onEnd = (e: CustomTouchEvent) => {\n if (controlElementsState.isDraggable) {\n let targetIndex = slideIndex;\n if (e.isSlide) {\n targetIndex = getTargetIndex(\n slidesManager.current.slides,\n slideIndex,\n shiftXCurrentRef.current,\n shiftXDeltaRef.current,\n );\n }\n onDragEnd?.(e, targetIndex);\n\n if (targetIndex !== slideIndex) {\n shiftXCurrentRef.current = shiftXCurrentRef.current + shiftXDeltaRef.current;\n onChange?.(targetIndex);\n } else {\n const initialShiftX = slidesManager.current.snaps[targetIndex];\n requestTransform(initialShiftX, true);\n }\n }\n };\n\n const setSlideRef = (slideRef: HTMLDivElement | null, slideIndex: number) => {\n slidesStore.current[slideIndex] = slideRef;\n };\n\n const { canSlideLeft, canSlideRight, isDraggable } = controlElementsState;\n\n return (\n <RootComponent\n {...restProps}\n baseClassName={classNames(\n styles.host,\n slideWidth === 'custom' && styles.customWidth,\n isDraggable && styles.draggable,\n )}\n getRootRef={rootRef}\n >\n <Touch\n className={styles.viewport}\n onStartX={onStart}\n onMoveX={onMoveX}\n onEnd={onEnd}\n style={{ width: slideWidth === 'custom' ? '100%' : slideWidth }}\n getRootRef={viewportRef}\n noSlideClick\n >\n <div className={styles.layer} ref={layerRef}>\n {React.Children.map(children, (item: React.ReactNode, i: number) => (\n <div className={styles.slide} key={`slide-${i}`} ref={(el) => setSlideRef(el, i)}>\n {item}\n </div>\n ))}\n </div>\n </Touch>\n\n {bullets && (\n <div aria-hidden className={classNames(styles.bullets, stylesBullets[bullets])}>\n {React.Children.map(children, (_item: React.ReactNode, index: number) => (\n <div\n className={classNames(styles.bullet, index === slideIndex && styles.bulletActive)}\n key={index}\n />\n ))}\n </div>\n )}\n\n {showArrows && hasPointer && canSlideLeft && (\n <ScrollArrow\n className={styles.arrow}\n direction=\"left\"\n onClick={slideLeft}\n size={arrowSize}\n />\n )}\n {showArrows && hasPointer && canSlideRight && (\n <ScrollArrow\n className={styles.arrow}\n direction=\"right\"\n onClick={slideRight}\n size={arrowSize}\n />\n )}\n </RootComponent>\n );\n};\n"],"names":["React","classNames","useAdaptivityHasPointer","useExternRef","useGlobalEventListener","useMutationObserver","useDOM","useIsomorphicLayoutEffect","warnOnce","RootComponent","ScrollArrow","Touch","ANIMATION_DURATION","CONTROL_ELEMENTS_STATE","SLIDE_THRESHOLD","SLIDES_MANAGER_STATE","calculateIndent","getLoopPoints","getTargetIndex","useSlideAnimation","stylesBullets","dark","light","warn","CarouselBase","bullets","getRootRef","children","slideWidth","slideIndex","dragDisabled","onDragStart","onDragEnd","onChange","onPrevClick","onNextClick","align","showArrows","getRef","arrowSize","restProps","slidesStore","useRef","slidesManager","rootRef","viewportRef","layerRef","animationFrameRef","shiftXCurrentRef","shiftXDeltaRef","initialized","addToAnimationQueue","getAnimateFunction","startAnimation","controlElementsState","setControlElementsState","useState","window","hasPointer","isCenterWithCustomWidth","transformCssStyles","shiftX","animation","Math","round","current","loopPoints","forEach","loopPoint","target","index","slide","style","transform","transition","requestTransform","snaps","contentSize","slides","cancelAnimationFrame","requestAnimationFrame","lastPoint","length","width","coordX","abs","initializeSlides","localSlides","Children","map","_item","i","elem","offsetLeft","offsetWidth","containerWidth","viewportOffsetWidth","layerWidth","reduce","val","process","env","NODE_ENV","remainingWidth","firstSlideShift","item","isFullyVisible","_","canSlideLeft","canSlideRight","isDraggable","onResize","performSlideChange","indent","startPoint","distance","progress","direction","calculateMinDeltaXToSlide","slideLeft","event","slideRight","onStart","e","originalEvent","stopPropagation","onMoveX","preventDefault","isSlideX","onEnd","targetIndex","isSlide","initialShiftX","setSlideRef","slideRef","baseClassName","className","onStartX","noSlideClick","div","ref","el","aria-hidden","onClick","size"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/components/BaseGallery/CarouselBase/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAExE,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC,eAAO,MAAM,sBAAsB,EAAE,oBAIpC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,kBAOlC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/components/BaseGallery/CarouselBase/constants.ts"],"sourcesContent":["import type { ControlElementsState, SlidesManagerState } from './types';\n\nexport const ANIMATION_DURATION = 240;\n\nexport const SLIDE_THRESHOLD = 0.05;\n\nexport const CONTROL_ELEMENTS_STATE: ControlElementsState = {\n canSlideLeft: true,\n canSlideRight: true,\n isDraggable: true,\n};\n\nexport const SLIDES_MANAGER_STATE: SlidesManagerState = {\n viewportOffsetWidth: 0,\n slides: [],\n isFullyVisible: true,\n loopPoints: [],\n contentSize: 0,\n snaps: [],\n};\n"],"names":["ANIMATION_DURATION","SLIDE_THRESHOLD","CONTROL_ELEMENTS_STATE","canSlideLeft","canSlideRight","isDraggable","SLIDES_MANAGER_STATE","viewportOffsetWidth","slides","isFullyVisible","loopPoints","contentSize","snaps"],"mappings":"AAEA,OAAO,MAAMA,qBAAqB,IAAI;AAEtC,OAAO,MAAMC,kBAAkB,KAAK;AAEpC,OAAO,MAAMC,yBAA+C;IAC1DC,cAAc;IACdC,eAAe;IACfC,aAAa;AACf,EAAE;AAEF,OAAO,MAAMC,uBAA2C;IACtDC,qBAAqB;IACrBC,QAAQ,EAAE;IACVC,gBAAgB;IAChBC,YAAY,EAAE;IACdC,aAAa;IACbC,OAAO,EAAE;AACX,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../src/components/BaseGallery/CarouselBase/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAK7D,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,kBAAkB,EACjC,uBAAuB,EAAE,OAAO,GAC/B,MAAM,CAkBR;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,EACjB,MAAM,EAAE,kBAAkB,EAAE,EAC5B,cAAc,EAAE,MAAM,GACrB,MAAM,EAAE,CAoBV;AA4BD;;GAEG;AACH,wBAAgB,aAAa,CAC3B,aAAa,EAAE,kBAAkB,EACjC,cAAc,EAAE,MAAM,GACrB,SAAS,EAAE,CASb;AAKD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,kBAAkB,EAAE,EAC5B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,kBAAkB,EAAE,MAAM,GACzB,MAAM,CA2BR"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/components/BaseGallery/CarouselBase/helpers.ts"],"sourcesContent":["import type { GallerySlidesState } from '../types';\nimport { SLIDE_THRESHOLD } from './constants';\nimport type { LoopPoint, SlidesManagerState } from './types';\n\n/*\n * Считает отступ слоя галереи\n */\nexport function calculateIndent(\n targetIndex: number,\n slidesManager: SlidesManagerState,\n isCenterWithCustomWidth: boolean,\n): number {\n if (slidesManager.isFullyVisible || !slidesManager.slides.length) {\n return 0;\n }\n\n const targetSlide = slidesManager.slides[targetIndex];\n\n if (targetSlide) {\n const { coordX, width } = targetSlide;\n\n if (isCenterWithCustomWidth) {\n return slidesManager.viewportOffsetWidth / 2 - coordX - width / 2;\n }\n\n return -1 * coordX;\n }\n\n return 0;\n}\n\n/**\n * Вычисляем индексы слайдов, которые необходимо смещать\n */\nexport function getShiftedIndexes(\n direction: 1 | -1,\n slides: GallerySlidesState[],\n availableWidth: number,\n): number[] {\n let gap = availableWidth;\n const shiftedSlideIndexes = [];\n const startIndex = direction === 1 ? 0 : slides.length - 1;\n const endIndex = direction === 1 ? slides.length - 1 : 0;\n\n for (\n let i = startIndex;\n (direction === 1 ? i <= endIndex : i >= endIndex) && gap > 0;\n i += direction\n ) {\n const slideWidth = slides[i].width;\n\n if (gap > 0) {\n shiftedSlideIndexes.push(i);\n }\n gap -= slideWidth;\n }\n\n return shiftedSlideIndexes;\n}\n\nfunction calculateLoopPoints(\n indexes: number[],\n edge: 'start' | 'end',\n slidesManager: SlidesManagerState,\n containerWidth: number,\n): LoopPoint[] {\n const { contentSize, slides, snaps } = slidesManager;\n const isStartEdge = edge === 'start';\n const offset = isStartEdge ? -contentSize : contentSize;\n\n return indexes.map((index) => {\n const initial = isStartEdge ? 0 : -contentSize;\n const altered = isStartEdge ? contentSize : 0;\n const loopPoint = isStartEdge\n ? snaps[index] + containerWidth + offset\n : snaps[index] - slides[index].width + offset - snaps[0];\n\n return {\n index,\n target: (currentLocation) => {\n return currentLocation >= loopPoint ? initial : altered;\n },\n };\n });\n}\n\n/**\n * Вычисляем \"ключевые\" точки, на которых должно происходить смещение слайдов\n */\nexport function getLoopPoints(\n slidesManager: SlidesManagerState,\n containerWidth: number,\n): LoopPoint[] {\n const { slides, snaps } = slidesManager;\n const startShiftedIndexes = getShiftedIndexes(-1, slides, snaps[0]);\n const endShiftedIndexes = getShiftedIndexes(1, slides, containerWidth - snaps[0]);\n\n return [\n ...calculateLoopPoints(endShiftedIndexes, 'start', slidesManager, containerWidth),\n ...calculateLoopPoints(startShiftedIndexes, 'end', slidesManager, containerWidth),\n ];\n}\n\n/*\n * Получает индекс слайда, к которому будет осуществлен переход\n */\nexport function getTargetIndex(\n slides: GallerySlidesState[],\n slideIndex: number,\n currentShiftX: number,\n currentShiftXDelta: number,\n): number {\n const shift = currentShiftX + currentShiftXDelta;\n const direction = currentShiftXDelta < 0 ? 1 : -1;\n\n // Находим ближайшую границу слайда к текущему отступу\n let targetIndex = slides.reduce((val: number, item: GallerySlidesState, index: number) => {\n const previousValue = Math.abs(slides[val].coordX + shift);\n const currentValue = Math.abs(item.coordX + shift);\n\n return previousValue < currentValue ? val : index;\n }, slideIndex);\n\n if (targetIndex === slideIndex) {\n let targetSlide = slideIndex + direction;\n\n if (targetSlide >= 0 && targetSlide < slides.length) {\n if (Math.abs(currentShiftXDelta) > slides[targetSlide].width * SLIDE_THRESHOLD) {\n return targetSlide;\n }\n return targetIndex;\n }\n return direction < 0\n ? (targetSlide + slides.length) % slides.length\n : targetSlide % slides.length;\n }\n\n return targetIndex;\n}\n"],"names":["SLIDE_THRESHOLD","calculateIndent","targetIndex","slidesManager","isCenterWithCustomWidth","isFullyVisible","slides","length","targetSlide","coordX","width","viewportOffsetWidth","getShiftedIndexes","direction","availableWidth","gap","shiftedSlideIndexes","startIndex","endIndex","i","slideWidth","push","calculateLoopPoints","indexes","edge","containerWidth","contentSize","snaps","isStartEdge","offset","map","index","initial","altered","loopPoint","target","currentLocation","getLoopPoints","startShiftedIndexes","endShiftedIndexes","getTargetIndex","slideIndex","currentShiftX","currentShiftXDelta","shift","reduce","val","item","previousValue","Math","abs","currentValue"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../../src/components/BaseGallery/CarouselBase/hooks.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAMnE,wBAAgB,iBAAiB,IAAI;IACnC,kBAAkB,EAAE,CAAC,YAAY,EAAE,aAAa,KAAK,MAAM,IAAI,CAAC;IAChE,mBAAmB,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IAClD,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B,CA6BA"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/components/BaseGallery/CarouselBase/hooks.ts"],"sourcesContent":["import * as React from 'react';\nimport { animate, type DrawInterface } from '../../../lib/animate';\nimport { cubicBezier } from '../../../lib/fx';\nimport { ANIMATION_DURATION } from './constants';\n\nconst TIMING_FUNCTION = cubicBezier(0.8, 1);\n\nexport function useSlideAnimation(): {\n getAnimateFunction: (drawFunction: DrawInterface) => () => void;\n addToAnimationQueue: (func: VoidFunction) => void;\n startAnimation: () => void;\n} {\n const animationQueue = React.useRef<VoidFunction[]>([]);\n\n function getAnimateFunction(drawFunction: DrawInterface) {\n return () => {\n animate({\n duration: ANIMATION_DURATION,\n timing: TIMING_FUNCTION,\n animationQueue: animationQueue.current,\n draw: drawFunction,\n });\n };\n }\n\n function addToAnimationQueue(func: VoidFunction) {\n animationQueue.current.push(func);\n }\n\n function startAnimation() {\n if (animationQueue.current.length === 1) {\n animationQueue.current[0]();\n }\n }\n\n return {\n getAnimateFunction,\n addToAnimationQueue,\n startAnimation,\n };\n}\n"],"names":["React","animate","cubicBezier","ANIMATION_DURATION","TIMING_FUNCTION","useSlideAnimation","animationQueue","useRef","getAnimateFunction","drawFunction","duration","timing","current","draw","addToAnimationQueue","func","push","startAnimation","length"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,OAAO,QAA4B,0BAAuB;AACnE,SAASC,WAAW,QAAQ,qBAAkB;AAC9C,SAASC,kBAAkB,QAAQ,iBAAc;AAEjD,MAAMC,kBAAkBF,YAAY,KAAK;AAEzC,OAAO,SAASG;IAKd,MAAMC,iBAAiBN,MAAMO,MAAM,CAAiB,EAAE;IAEtD,SAASC,mBAAmBC,YAA2B;QACrD,OAAO;YACLR,QAAQ;gBACNS,UAAUP;gBACVQ,QAAQP;gBACRE,gBAAgBA,eAAeM,OAAO;gBACtCC,MAAMJ;YACR;QACF;IACF;IAEA,SAASK,oBAAoBC,IAAkB;QAC7CT,eAAeM,OAAO,CAACI,IAAI,CAACD;IAC9B;IAEA,SAASE;QACP,IAAIX,eAAeM,OAAO,CAACM,MAAM,KAAK,GAAG;YACvCZ,eAAeM,OAAO,CAAC,EAAE;QAC3B;IACF;IAEA,OAAO;QACLJ;QACAM;QACAG;IACF;AACF"}
@@ -1,54 +0,0 @@
1
- import type { GallerySlidesState } from '../types';
2
- export interface LoopPoint {
3
- /**
4
- * Индекс слайда
5
- */
6
- index: number;
7
- /**
8
- * Функция, которая по текущему сдвигу галереи определяет нужный сдвиг слайда
9
- */
10
- target: (this: void, location: number) => void;
11
- }
12
- export interface ControlElementsState {
13
- /**
14
- * Отвечает за отображение стрелки влево
15
- */
16
- canSlideLeft: boolean;
17
- /**
18
- * Отвечает за отображение стрелки вправо
19
- */
20
- canSlideRight: boolean;
21
- /**
22
- * Возможность листаться слайды drag'ом
23
- */
24
- isDraggable: boolean;
25
- }
26
- export interface SlidesManagerState {
27
- /**
28
- * Общая ширина всех слайдов
29
- */
30
- contentSize: number;
31
- /**
32
- * Массив с пограничными точками слайдов, которые необходимо смещать, чтобы они всегда были в области видимости
33
- * (пример: для последнего слайда это n-первых слайдов, необходимых для заполнения оставшейся ширины,
34
- * или для первого слайда это n-последних слайдов при выравнивании по центру)
35
- */
36
- loopPoints: LoopPoint[];
37
- /**
38
- * Массив с правыми границами слайдов
39
- */
40
- snaps: number[];
41
- /**
42
- * Ширина видимой области слайдов
43
- */
44
- viewportOffsetWidth: number;
45
- /**
46
- * Массив слайдов с координатой начала слайда и шириной
47
- */
48
- slides: GallerySlidesState[];
49
- /**
50
- * Все слайды видимы без скрола
51
- */
52
- isFullyVisible: boolean;
53
- }
54
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/BaseGallery/CarouselBase/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD;AAED,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,YAAY,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB;;OAEG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B;;OAEG;IACH,cAAc,EAAE,OAAO,CAAC;CACzB"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/components/BaseGallery/CarouselBase/types.ts"],"sourcesContent":["import type { GallerySlidesState } from '../types';\n\nexport interface LoopPoint {\n /**\n * Индекс слайда\n */\n index: number;\n /**\n * Функция, которая по текущему сдвигу галереи определяет нужный сдвиг слайда\n */\n target: (this: void, location: number) => void;\n}\n\nexport interface ControlElementsState {\n /**\n * Отвечает за отображение стрелки влево\n */\n canSlideLeft: boolean;\n /**\n * Отвечает за отображение стрелки вправо\n */\n canSlideRight: boolean;\n /**\n * Возможность листаться слайды drag'ом\n */\n isDraggable: boolean;\n}\n\nexport interface SlidesManagerState {\n /**\n * Общая ширина всех слайдов\n */\n contentSize: number;\n /**\n * Массив с пограничными точками слайдов, которые необходимо смещать, чтобы они всегда были в области видимости\n * (пример: для последнего слайда это n-первых слайдов, необходимых для заполнения оставшейся ширины,\n * или для первого слайда это n-последних слайдов при выравнивании по центру)\n */\n loopPoints: LoopPoint[];\n /**\n * Массив с правыми границами слайдов\n */\n snaps: number[];\n /**\n * Ширина видимой области слайдов\n */\n viewportOffsetWidth: number;\n /**\n * Массив слайдов с координатой начала слайда и шириной\n */\n slides: GallerySlidesState[];\n /**\n * Все слайды видимы без скрола\n */\n isFullyVisible: boolean;\n}\n"],"names":[],"mappings":"AA4BA,WA2BC"}
@@ -1,13 +0,0 @@
1
- import type { AlignType } from '../../types';
2
- import type { LayoutState } from './types';
3
- interface CalcMin extends Partial<LayoutState> {
4
- isCenterWithCustomWidth: boolean;
5
- align: AlignType;
6
- }
7
- export declare const calcMin: ({ containerWidth, layerWidth, slides, viewportOffsetWidth, align, isCenterWithCustomWidth, }: CalcMin) => number | undefined;
8
- interface CalcMax extends Partial<LayoutState> {
9
- isCenterWithCustomWidth: boolean;
10
- }
11
- export declare const calcMax: ({ slides, viewportOffsetWidth, isCenterWithCustomWidth, }: CalcMax) => number;
12
- export {};
13
- //# sourceMappingURL=helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/components/BaseGallery/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,UAAU,OAAQ,SAAQ,OAAO,CAAC,WAAW,CAAC;IAC5C,uBAAuB,EAAE,OAAO,CAAC;IACjC,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,eAAO,MAAM,OAAO,iGAOjB,OAAO,KAAG,MAAM,GAAG,SAcrB,CAAC;AAEF,UAAU,OAAQ,SAAQ,OAAO,CAAC,WAAW,CAAC;IAC5C,uBAAuB,EAAE,OAAO,CAAC;CAClC;AAED,eAAO,MAAM,OAAO,8DAIjB,OAAO,KAAG,MAMZ,CAAC"}
@@ -1,24 +0,0 @@
1
- export const calcMin = ({ containerWidth = 0, layerWidth = 0, slides = [], viewportOffsetWidth = 0, align, isCenterWithCustomWidth })=>{
2
- switch(align){
3
- case 'left':
4
- return containerWidth - layerWidth;
5
- case 'right':
6
- return viewportOffsetWidth - layerWidth;
7
- case 'center':
8
- if (isCenterWithCustomWidth && slides.length) {
9
- const { coordX, width } = slides[slides.length - 1];
10
- return viewportOffsetWidth / 2 - coordX - width / 2;
11
- } else {
12
- return viewportOffsetWidth - (containerWidth - viewportOffsetWidth) / 2 - layerWidth;
13
- }
14
- }
15
- };
16
- export const calcMax = ({ slides = [], viewportOffsetWidth = 0, isCenterWithCustomWidth })=>{
17
- if (isCenterWithCustomWidth && slides.length) {
18
- const { width, coordX } = slides[0];
19
- return viewportOffsetWidth / 2 - coordX - width / 2;
20
- }
21
- return 0;
22
- };
23
-
24
- //# sourceMappingURL=helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/BaseGallery/helpers.ts"],"sourcesContent":["import type { AlignType } from '../../types';\nimport type { LayoutState } from './types';\n\ninterface CalcMin extends Partial<LayoutState> {\n isCenterWithCustomWidth: boolean;\n align: AlignType;\n}\n\nexport const calcMin = ({\n containerWidth = 0,\n layerWidth = 0,\n slides = [],\n viewportOffsetWidth = 0,\n align,\n isCenterWithCustomWidth,\n}: CalcMin): number | undefined => {\n switch (align) {\n case 'left':\n return containerWidth - layerWidth;\n case 'right':\n return viewportOffsetWidth - layerWidth;\n case 'center':\n if (isCenterWithCustomWidth && slides.length) {\n const { coordX, width } = slides[slides.length - 1];\n return viewportOffsetWidth / 2 - coordX - width / 2;\n } else {\n return viewportOffsetWidth - (containerWidth - viewportOffsetWidth) / 2 - layerWidth;\n }\n }\n};\n\ninterface CalcMax extends Partial<LayoutState> {\n isCenterWithCustomWidth: boolean;\n}\n\nexport const calcMax = ({\n slides = [],\n viewportOffsetWidth = 0,\n isCenterWithCustomWidth,\n}: CalcMax): number => {\n if (isCenterWithCustomWidth && slides.length) {\n const { width, coordX } = slides[0];\n return viewportOffsetWidth / 2 - coordX - width / 2;\n }\n return 0;\n};\n"],"names":["calcMin","containerWidth","layerWidth","slides","viewportOffsetWidth","align","isCenterWithCustomWidth","length","coordX","width","calcMax"],"mappings":"AAQA,OAAO,MAAMA,UAAU,CAAC,EACtBC,iBAAiB,CAAC,EAClBC,aAAa,CAAC,EACdC,SAAS,EAAE,EACXC,sBAAsB,CAAC,EACvBC,KAAK,EACLC,uBAAuB,EACf;IACR,OAAQD;QACN,KAAK;YACH,OAAOJ,iBAAiBC;QAC1B,KAAK;YACH,OAAOE,sBAAsBF;QAC/B,KAAK;YACH,IAAII,2BAA2BH,OAAOI,MAAM,EAAE;gBAC5C,MAAM,EAAEC,MAAM,EAAEC,KAAK,EAAE,GAAGN,MAAM,CAACA,OAAOI,MAAM,GAAG,EAAE;gBACnD,OAAOH,sBAAsB,IAAII,SAASC,QAAQ;YACpD,OAAO;gBACL,OAAOL,sBAAsB,AAACH,CAAAA,iBAAiBG,mBAAkB,IAAK,IAAIF;YAC5E;IACJ;AACF,EAAE;AAMF,OAAO,MAAMQ,UAAU,CAAC,EACtBP,SAAS,EAAE,EACXC,sBAAsB,CAAC,EACvBE,uBAAuB,EACf;IACR,IAAIA,2BAA2BH,OAAOI,MAAM,EAAE;QAC5C,MAAM,EAAEE,KAAK,EAAED,MAAM,EAAE,GAAGL,MAAM,CAAC,EAAE;QACnC,OAAOC,sBAAsB,IAAII,SAASC,QAAQ;IACpD;IACA,OAAO;AACT,EAAE"}