@vkontakte/vkui 6.4.0 → 6.5.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 (740) hide show
  1. package/dist/cjs/components/ActionSheet/ActionSheet.js +2 -1
  2. package/dist/cjs/components/ActionSheet/ActionSheet.js.map +1 -1
  3. package/dist/cjs/components/ActionSheet/ActionSheetContext.d.ts +1 -0
  4. package/dist/cjs/components/ActionSheet/ActionSheetContext.d.ts.map +1 -1
  5. package/dist/cjs/components/ActionSheet/ActionSheetContext.js.map +1 -1
  6. package/dist/cjs/components/ActionSheetItem/ActionSheetItem.d.ts.map +1 -1
  7. package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js +38 -12
  8. package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
  9. package/dist/cjs/components/ActionSheetItem/helpers.d.ts +10 -0
  10. package/dist/cjs/components/ActionSheetItem/helpers.d.ts.map +1 -0
  11. package/dist/cjs/components/ActionSheetItem/helpers.js +22 -0
  12. package/dist/cjs/components/ActionSheetItem/helpers.js.map +1 -0
  13. package/dist/cjs/components/Alert/Alert.js +1 -1
  14. package/dist/cjs/components/Alert/Alert.js.map +1 -1
  15. package/dist/cjs/components/Avatar/Avatar.d.ts +0 -1
  16. package/dist/cjs/components/Avatar/Avatar.d.ts.map +1 -1
  17. package/dist/cjs/components/Avatar/Avatar.js +3 -11
  18. package/dist/cjs/components/Avatar/Avatar.js.map +1 -1
  19. package/dist/cjs/components/Avatar/AvatarBadge/icons.d.ts +8 -3
  20. package/dist/cjs/components/Avatar/AvatarBadge/icons.d.ts.map +1 -1
  21. package/dist/cjs/components/Avatar/AvatarBadge/icons.js +2 -2
  22. package/dist/cjs/components/Avatar/AvatarBadge/icons.js.map +1 -1
  23. package/dist/cjs/components/BaseGallery/BaseGallery.d.ts.map +1 -1
  24. package/dist/cjs/components/BaseGallery/BaseGallery.js +0 -2
  25. package/dist/cjs/components/BaseGallery/BaseGallery.js.map +1 -1
  26. package/dist/cjs/components/Calendar/Calendar.js +3 -3
  27. package/dist/cjs/components/Calendar/Calendar.js.map +1 -1
  28. package/dist/cjs/components/CalendarDays/CalendarDays.js +3 -3
  29. package/dist/cjs/components/CalendarDays/CalendarDays.js.map +1 -1
  30. package/dist/cjs/components/CalendarHeader/CalendarHeader.js +5 -5
  31. package/dist/cjs/components/CalendarHeader/CalendarHeader.js.map +1 -1
  32. package/dist/cjs/components/CalendarRange/CalendarRange.d.ts.map +1 -1
  33. package/dist/cjs/components/CalendarRange/CalendarRange.js +17 -15
  34. package/dist/cjs/components/CalendarRange/CalendarRange.js.map +1 -1
  35. package/dist/cjs/components/CalendarTime/CalendarTime.js +5 -5
  36. package/dist/cjs/components/CalendarTime/CalendarTime.js.map +1 -1
  37. package/dist/cjs/components/Cell/Cell.d.ts.map +1 -1
  38. package/dist/cjs/components/Cell/Cell.js +2 -2
  39. package/dist/cjs/components/Cell/Cell.js.map +1 -1
  40. package/dist/cjs/components/Checkbox/Checkbox.d.ts +7 -5
  41. package/dist/cjs/components/Checkbox/Checkbox.d.ts.map +1 -1
  42. package/dist/cjs/components/Checkbox/Checkbox.js +21 -143
  43. package/dist/cjs/components/Checkbox/Checkbox.js.map +1 -1
  44. package/dist/cjs/components/Checkbox/CheckboxInput/CheckboxInput.d.ts +8 -0
  45. package/dist/cjs/components/Checkbox/CheckboxInput/CheckboxInput.d.ts.map +1 -0
  46. package/dist/cjs/components/Checkbox/CheckboxInput/CheckboxInput.js +134 -0
  47. package/dist/cjs/components/Checkbox/CheckboxInput/CheckboxInput.js.map +1 -0
  48. package/dist/cjs/components/Checkbox/CheckboxSimple/CheckboxSimple.d.ts +3 -0
  49. package/dist/cjs/components/Checkbox/CheckboxSimple/CheckboxSimple.d.ts.map +1 -0
  50. package/dist/cjs/components/Checkbox/CheckboxSimple/CheckboxSimple.js +52 -0
  51. package/dist/cjs/components/Checkbox/CheckboxSimple/CheckboxSimple.js.map +1 -0
  52. package/dist/cjs/components/ChipsInput/ChipsInput.d.ts.map +1 -1
  53. package/dist/cjs/components/ChipsInput/ChipsInput.js +1 -2
  54. package/dist/cjs/components/ChipsInput/ChipsInput.js.map +1 -1
  55. package/dist/cjs/components/ChipsInputBase/ChipsInputBase.js +1 -1
  56. package/dist/cjs/components/ChipsInputBase/ChipsInputBase.js.map +1 -1
  57. package/dist/cjs/components/ChipsInputBase/helpers.d.ts.map +1 -1
  58. package/dist/cjs/components/ChipsInputBase/helpers.js +0 -3
  59. package/dist/cjs/components/ChipsInputBase/helpers.js.map +1 -1
  60. package/dist/cjs/components/ChipsInputBase/types.d.ts +1 -1
  61. package/dist/cjs/components/ChipsInputBase/types.d.ts.map +1 -1
  62. package/dist/cjs/components/ChipsInputBase/types.js.map +1 -1
  63. package/dist/cjs/components/ChipsSelect/ChipsSelect.d.ts.map +1 -1
  64. package/dist/cjs/components/ChipsSelect/ChipsSelect.js +1 -7
  65. package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
  66. package/dist/cjs/components/Clickable/useState.d.ts +0 -5
  67. package/dist/cjs/components/Clickable/useState.d.ts.map +1 -1
  68. package/dist/cjs/components/Clickable/useState.js +3 -7
  69. package/dist/cjs/components/Clickable/useState.js.map +1 -1
  70. package/dist/cjs/components/CustomScrollView/CustomScrollView.d.ts +10 -1
  71. package/dist/cjs/components/CustomScrollView/CustomScrollView.d.ts.map +1 -1
  72. package/dist/cjs/components/CustomScrollView/CustomScrollView.js +41 -132
  73. package/dist/cjs/components/CustomScrollView/CustomScrollView.js.map +1 -1
  74. package/dist/cjs/components/CustomScrollView/ScrollX.d.ts +3 -0
  75. package/dist/cjs/components/CustomScrollView/ScrollX.d.ts.map +1 -0
  76. package/dist/cjs/components/CustomScrollView/ScrollX.js +42 -0
  77. package/dist/cjs/components/CustomScrollView/ScrollX.js.map +1 -0
  78. package/dist/cjs/components/CustomScrollView/ScrollY.d.ts +3 -0
  79. package/dist/cjs/components/CustomScrollView/ScrollY.d.ts.map +1 -0
  80. package/dist/cjs/components/CustomScrollView/ScrollY.js +42 -0
  81. package/dist/cjs/components/CustomScrollView/ScrollY.js.map +1 -0
  82. package/dist/cjs/components/CustomScrollView/types.d.ts +21 -0
  83. package/dist/cjs/components/CustomScrollView/types.d.ts.map +1 -0
  84. package/dist/cjs/components/CustomScrollView/types.js +8 -0
  85. package/dist/cjs/components/CustomScrollView/types.js.map +1 -0
  86. package/dist/cjs/components/CustomScrollView/useCustomScrollViewResize.d.ts +8 -0
  87. package/dist/cjs/components/CustomScrollView/useCustomScrollViewResize.d.ts.map +1 -0
  88. package/dist/cjs/components/CustomScrollView/useCustomScrollViewResize.js +32 -0
  89. package/dist/cjs/components/CustomScrollView/useCustomScrollViewResize.js.map +1 -0
  90. package/dist/cjs/components/CustomScrollView/useDetectScrollDirection.d.ts +6 -0
  91. package/dist/cjs/components/CustomScrollView/useDetectScrollDirection.d.ts.map +1 -0
  92. package/dist/cjs/components/CustomScrollView/useDetectScrollDirection.js +29 -0
  93. package/dist/cjs/components/CustomScrollView/useDetectScrollDirection.js.map +1 -0
  94. package/dist/cjs/components/CustomScrollView/useDragAndDrop.d.ts +5 -0
  95. package/dist/cjs/components/CustomScrollView/useDragAndDrop.d.ts.map +1 -0
  96. package/dist/cjs/components/CustomScrollView/useDragAndDrop.js +57 -0
  97. package/dist/cjs/components/CustomScrollView/useDragAndDrop.js.map +1 -0
  98. package/dist/cjs/components/CustomScrollView/useHorizontalScrollController.d.ts +4 -0
  99. package/dist/cjs/components/CustomScrollView/useHorizontalScrollController.d.ts.map +1 -0
  100. package/dist/cjs/components/CustomScrollView/useHorizontalScrollController.js +102 -0
  101. package/dist/cjs/components/CustomScrollView/useHorizontalScrollController.js.map +1 -0
  102. package/dist/cjs/components/CustomScrollView/useTrackerVisibility.d.ts.map +1 -1
  103. package/dist/cjs/components/CustomScrollView/useTrackerVisibility.js +5 -0
  104. package/dist/cjs/components/CustomScrollView/useTrackerVisibility.js.map +1 -1
  105. package/dist/cjs/components/CustomScrollView/useVerticalScrollController.d.ts +4 -0
  106. package/dist/cjs/components/CustomScrollView/useVerticalScrollController.d.ts.map +1 -0
  107. package/dist/cjs/components/CustomScrollView/useVerticalScrollController.js +102 -0
  108. package/dist/cjs/components/CustomScrollView/useVerticalScrollController.js.map +1 -0
  109. package/dist/cjs/components/CustomSelect/CustomSelect.d.ts.map +1 -1
  110. package/dist/cjs/components/CustomSelect/CustomSelect.js +3 -4
  111. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  112. package/dist/cjs/components/DateInput/DateInput.js +2 -2
  113. package/dist/cjs/components/DateInput/DateInput.js.map +1 -1
  114. package/dist/cjs/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  115. package/dist/cjs/components/DateRangeInput/DateRangeInput.js +4 -3
  116. package/dist/cjs/components/DateRangeInput/DateRangeInput.js.map +1 -1
  117. package/dist/cjs/components/FixedLayout/FixedLayout.d.ts +2 -2
  118. package/dist/cjs/components/FixedLayout/FixedLayout.d.ts.map +1 -1
  119. package/dist/cjs/components/FixedLayout/FixedLayout.js +1 -1
  120. package/dist/cjs/components/FixedLayout/FixedLayout.js.map +1 -1
  121. package/dist/cjs/components/Flex/FlexItem/FlexItem.d.ts +3 -3
  122. package/dist/cjs/components/Flex/FlexItem/FlexItem.d.ts.map +1 -1
  123. package/dist/cjs/components/Flex/FlexItem/FlexItem.js.map +1 -1
  124. package/dist/cjs/components/FocusTrap/FocusTrap.js +1 -1
  125. package/dist/cjs/components/FocusTrap/FocusTrap.js.map +1 -1
  126. package/dist/cjs/components/GridAvatar/GridAvatar.d.ts +0 -1
  127. package/dist/cjs/components/GridAvatar/GridAvatar.d.ts.map +1 -1
  128. package/dist/cjs/components/GridAvatar/GridAvatar.js +0 -3
  129. package/dist/cjs/components/GridAvatar/GridAvatar.js.map +1 -1
  130. package/dist/cjs/components/Group/Group.d.ts +1 -1
  131. package/dist/cjs/components/Group/Group.d.ts.map +1 -1
  132. package/dist/cjs/components/Group/Group.js +17 -12
  133. package/dist/cjs/components/Group/Group.js.map +1 -1
  134. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.d.ts.map +1 -1
  135. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js +7 -10
  136. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  137. package/dist/cjs/components/Image/Image.d.ts +0 -1
  138. package/dist/cjs/components/Image/Image.d.ts.map +1 -1
  139. package/dist/cjs/components/Image/Image.js +3 -11
  140. package/dist/cjs/components/Image/Image.js.map +1 -1
  141. package/dist/cjs/components/ImageBase/validators.js +1 -1
  142. package/dist/cjs/components/ImageBase/validators.js.map +1 -1
  143. package/dist/cjs/components/ModalPageHeader/ModalPageHeader.d.ts.map +1 -1
  144. package/dist/cjs/components/ModalPageHeader/ModalPageHeader.js +17 -15
  145. package/dist/cjs/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
  146. package/dist/cjs/components/ModalRoot/ModalRoot.d.ts.map +1 -1
  147. package/dist/cjs/components/ModalRoot/ModalRoot.js +4 -28
  148. package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
  149. package/dist/cjs/components/OnboardingTooltip/OnboardingTooltipContainer.d.ts +2 -2
  150. package/dist/cjs/components/OnboardingTooltip/OnboardingTooltipContainer.d.ts.map +1 -1
  151. package/dist/cjs/components/OnboardingTooltip/OnboardingTooltipContainer.js +4 -3
  152. package/dist/cjs/components/OnboardingTooltip/OnboardingTooltipContainer.js.map +1 -1
  153. package/dist/cjs/components/PullToRefresh/PullToRefresh.d.ts.map +1 -1
  154. package/dist/cjs/components/PullToRefresh/PullToRefresh.js +1 -3
  155. package/dist/cjs/components/PullToRefresh/PullToRefresh.js.map +1 -1
  156. package/dist/cjs/components/Radio/Radio.d.ts +5 -1
  157. package/dist/cjs/components/Radio/Radio.d.ts.map +1 -1
  158. package/dist/cjs/components/Radio/Radio.js +12 -75
  159. package/dist/cjs/components/Radio/Radio.js.map +1 -1
  160. package/dist/cjs/components/Radio/RadioInput/RadioInput.d.ts +6 -0
  161. package/dist/cjs/components/Radio/RadioInput/RadioInput.d.ts.map +1 -0
  162. package/dist/cjs/components/Radio/RadioInput/RadioInput.js +104 -0
  163. package/dist/cjs/components/Radio/RadioInput/RadioInput.js.map +1 -0
  164. package/dist/cjs/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  165. package/dist/cjs/components/SegmentedControl/SegmentedControl.js +1 -2
  166. package/dist/cjs/components/SegmentedControl/SegmentedControl.js.map +1 -1
  167. package/dist/cjs/components/SelectionControl/SelectionControl.d.ts +14 -0
  168. package/dist/cjs/components/SelectionControl/SelectionControl.d.ts.map +1 -0
  169. package/dist/cjs/components/SelectionControl/SelectionControl.js +36 -0
  170. package/dist/cjs/components/SelectionControl/SelectionControl.js.map +1 -0
  171. package/dist/cjs/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.d.ts +7 -0
  172. package/dist/cjs/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.d.ts.map +1 -0
  173. package/dist/cjs/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js +56 -0
  174. package/dist/cjs/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js.map +1 -0
  175. package/dist/cjs/components/Textarea/Textarea.d.ts +1 -1
  176. package/dist/cjs/components/Textarea/Textarea.d.ts.map +1 -1
  177. package/dist/cjs/components/Textarea/Textarea.js +13 -3
  178. package/dist/cjs/components/Textarea/Textarea.js.map +1 -1
  179. package/dist/cjs/components/Textarea/useResizeTextarea.d.ts +1 -1
  180. package/dist/cjs/components/Textarea/useResizeTextarea.d.ts.map +1 -1
  181. package/dist/cjs/components/Textarea/useResizeTextarea.js +2 -2
  182. package/dist/cjs/components/Textarea/useResizeTextarea.js.map +1 -1
  183. package/dist/cjs/components/View/View.d.ts.map +1 -1
  184. package/dist/cjs/components/View/View.js +2 -4
  185. package/dist/cjs/components/View/View.js.map +1 -1
  186. package/dist/cjs/components/View/ViewInfinite.d.ts.map +1 -1
  187. package/dist/cjs/components/View/ViewInfinite.js +1 -3
  188. package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
  189. package/dist/cjs/components/VisuallyHidden/VisuallyHidden.d.ts +1 -1
  190. package/dist/cjs/components/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
  191. package/dist/cjs/components/VisuallyHidden/VisuallyHidden.js +4 -3
  192. package/dist/cjs/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
  193. package/dist/cjs/hooks/useCalendar.d.ts.map +1 -1
  194. package/dist/cjs/hooks/useCalendar.js +6 -6
  195. package/dist/cjs/hooks/useCalendar.js.map +1 -1
  196. package/dist/cjs/hooks/useTodayDate.js +3 -3
  197. package/dist/cjs/hooks/useTodayDate.js.map +1 -1
  198. package/dist/cjs/index.d.ts +3 -0
  199. package/dist/cjs/index.d.ts.map +1 -1
  200. package/dist/cjs/index.js +8 -0
  201. package/dist/cjs/index.js.map +1 -1
  202. package/dist/cjs/lib/calendar.d.ts.map +1 -1
  203. package/dist/cjs/lib/calendar.js +27 -16
  204. package/dist/cjs/lib/calendar.js.map +1 -1
  205. package/dist/cjs/lib/date.d.ts +1 -28
  206. package/dist/cjs/lib/date.d.ts.map +1 -1
  207. package/dist/cjs/lib/date.js +8 -180
  208. package/dist/cjs/lib/date.js.map +1 -1
  209. package/dist/components/ActionSheet/ActionSheet.js +2 -1
  210. package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
  211. package/dist/components/ActionSheet/ActionSheetContext.d.ts +1 -0
  212. package/dist/components/ActionSheet/ActionSheetContext.d.ts.map +1 -1
  213. package/dist/components/ActionSheet/ActionSheetContext.js.map +1 -1
  214. package/dist/components/ActionSheetItem/ActionSheetItem.d.ts.map +1 -1
  215. package/dist/components/ActionSheetItem/ActionSheetItem.js +38 -12
  216. package/dist/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
  217. package/dist/components/ActionSheetItem/helpers.d.ts +10 -0
  218. package/dist/components/ActionSheetItem/helpers.d.ts.map +1 -0
  219. package/dist/components/ActionSheetItem/helpers.js +12 -0
  220. package/dist/components/ActionSheetItem/helpers.js.map +1 -0
  221. package/dist/components/Alert/Alert.js +1 -1
  222. package/dist/components/Alert/Alert.js.map +1 -1
  223. package/dist/components/Avatar/Avatar.d.ts +0 -1
  224. package/dist/components/Avatar/Avatar.d.ts.map +1 -1
  225. package/dist/components/Avatar/Avatar.js +1 -1
  226. package/dist/components/Avatar/Avatar.js.map +1 -1
  227. package/dist/components/Avatar/AvatarBadge/icons.d.ts +8 -3
  228. package/dist/components/Avatar/AvatarBadge/icons.d.ts.map +1 -1
  229. package/dist/components/Avatar/AvatarBadge/icons.js +2 -2
  230. package/dist/components/Avatar/AvatarBadge/icons.js.map +1 -1
  231. package/dist/components/BaseGallery/BaseGallery.d.ts.map +1 -1
  232. package/dist/components/BaseGallery/BaseGallery.js +0 -2
  233. package/dist/components/BaseGallery/BaseGallery.js.map +1 -1
  234. package/dist/components/Calendar/Calendar.js +1 -1
  235. package/dist/components/Calendar/Calendar.js.map +1 -1
  236. package/dist/components/CalendarDays/CalendarDays.js +1 -1
  237. package/dist/components/CalendarDays/CalendarDays.js.map +1 -1
  238. package/dist/components/CalendarHeader/CalendarHeader.js +1 -1
  239. package/dist/components/CalendarHeader/CalendarHeader.js.map +1 -1
  240. package/dist/components/CalendarRange/CalendarRange.d.ts.map +1 -1
  241. package/dist/components/CalendarRange/CalendarRange.js +6 -4
  242. package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
  243. package/dist/components/CalendarTime/CalendarTime.js +1 -1
  244. package/dist/components/CalendarTime/CalendarTime.js.map +1 -1
  245. package/dist/components/Cell/Cell.d.ts.map +1 -1
  246. package/dist/components/Cell/Cell.js +2 -2
  247. package/dist/components/Cell/Cell.js.map +1 -1
  248. package/dist/components/Checkbox/Checkbox.d.ts +7 -5
  249. package/dist/components/Checkbox/Checkbox.d.ts.map +1 -1
  250. package/dist/components/Checkbox/Checkbox.js +24 -146
  251. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  252. package/dist/components/Checkbox/CheckboxInput/CheckboxInput.d.ts +8 -0
  253. package/dist/components/Checkbox/CheckboxInput/CheckboxInput.d.ts.map +1 -0
  254. package/dist/components/Checkbox/CheckboxInput/CheckboxInput.js +123 -0
  255. package/dist/components/Checkbox/CheckboxInput/CheckboxInput.js.map +1 -0
  256. package/dist/components/Checkbox/CheckboxSimple/CheckboxSimple.d.ts +3 -0
  257. package/dist/components/Checkbox/CheckboxSimple/CheckboxSimple.d.ts.map +1 -0
  258. package/dist/components/Checkbox/CheckboxSimple/CheckboxSimple.js +42 -0
  259. package/dist/components/Checkbox/CheckboxSimple/CheckboxSimple.js.map +1 -0
  260. package/dist/components/ChipsInput/ChipsInput.d.ts.map +1 -1
  261. package/dist/components/ChipsInput/ChipsInput.js +1 -2
  262. package/dist/components/ChipsInput/ChipsInput.js.map +1 -1
  263. package/dist/components/ChipsInputBase/ChipsInputBase.js +1 -1
  264. package/dist/components/ChipsInputBase/ChipsInputBase.js.map +1 -1
  265. package/dist/components/ChipsInputBase/helpers.d.ts.map +1 -1
  266. package/dist/components/ChipsInputBase/helpers.js +0 -3
  267. package/dist/components/ChipsInputBase/helpers.js.map +1 -1
  268. package/dist/components/ChipsInputBase/types.d.ts +1 -1
  269. package/dist/components/ChipsInputBase/types.d.ts.map +1 -1
  270. package/dist/components/ChipsInputBase/types.js.map +1 -1
  271. package/dist/components/ChipsSelect/ChipsSelect.d.ts.map +1 -1
  272. package/dist/components/ChipsSelect/ChipsSelect.js +1 -7
  273. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  274. package/dist/components/Clickable/useState.d.ts +0 -5
  275. package/dist/components/Clickable/useState.d.ts.map +1 -1
  276. package/dist/components/Clickable/useState.js +2 -2
  277. package/dist/components/Clickable/useState.js.map +1 -1
  278. package/dist/components/CustomScrollView/CustomScrollView.d.ts +10 -1
  279. package/dist/components/CustomScrollView/CustomScrollView.d.ts.map +1 -1
  280. package/dist/components/CustomScrollView/CustomScrollView.js +44 -133
  281. package/dist/components/CustomScrollView/CustomScrollView.js.map +1 -1
  282. package/dist/components/CustomScrollView/ScrollX.d.ts +3 -0
  283. package/dist/components/CustomScrollView/ScrollX.d.ts.map +1 -0
  284. package/dist/components/CustomScrollView/ScrollX.js +31 -0
  285. package/dist/components/CustomScrollView/ScrollX.js.map +1 -0
  286. package/dist/components/CustomScrollView/ScrollY.d.ts +3 -0
  287. package/dist/components/CustomScrollView/ScrollY.d.ts.map +1 -0
  288. package/dist/components/CustomScrollView/ScrollY.js +31 -0
  289. package/dist/components/CustomScrollView/ScrollY.js.map +1 -0
  290. package/dist/components/CustomScrollView/types.d.ts +21 -0
  291. package/dist/components/CustomScrollView/types.d.ts.map +1 -0
  292. package/dist/components/CustomScrollView/types.js +3 -0
  293. package/dist/components/CustomScrollView/types.js.map +1 -0
  294. package/dist/components/CustomScrollView/useCustomScrollViewResize.d.ts +8 -0
  295. package/dist/components/CustomScrollView/useCustomScrollViewResize.d.ts.map +1 -0
  296. package/dist/components/CustomScrollView/useCustomScrollViewResize.js +22 -0
  297. package/dist/components/CustomScrollView/useCustomScrollViewResize.js.map +1 -0
  298. package/dist/components/CustomScrollView/useDetectScrollDirection.d.ts +6 -0
  299. package/dist/components/CustomScrollView/useDetectScrollDirection.d.ts.map +1 -0
  300. package/dist/components/CustomScrollView/useDetectScrollDirection.js +20 -0
  301. package/dist/components/CustomScrollView/useDetectScrollDirection.js.map +1 -0
  302. package/dist/components/CustomScrollView/useDragAndDrop.d.ts +5 -0
  303. package/dist/components/CustomScrollView/useDragAndDrop.d.ts.map +1 -0
  304. package/dist/components/CustomScrollView/useDragAndDrop.js +46 -0
  305. package/dist/components/CustomScrollView/useDragAndDrop.js.map +1 -0
  306. package/dist/components/CustomScrollView/useHorizontalScrollController.d.ts +4 -0
  307. package/dist/components/CustomScrollView/useHorizontalScrollController.d.ts.map +1 -0
  308. package/dist/components/CustomScrollView/useHorizontalScrollController.js +91 -0
  309. package/dist/components/CustomScrollView/useHorizontalScrollController.js.map +1 -0
  310. package/dist/components/CustomScrollView/useTrackerVisibility.d.ts.map +1 -1
  311. package/dist/components/CustomScrollView/useTrackerVisibility.js +5 -0
  312. package/dist/components/CustomScrollView/useTrackerVisibility.js.map +1 -1
  313. package/dist/components/CustomScrollView/useVerticalScrollController.d.ts +4 -0
  314. package/dist/components/CustomScrollView/useVerticalScrollController.d.ts.map +1 -0
  315. package/dist/components/CustomScrollView/useVerticalScrollController.js +91 -0
  316. package/dist/components/CustomScrollView/useVerticalScrollController.js.map +1 -0
  317. package/dist/components/CustomSelect/CustomSelect.d.ts.map +1 -1
  318. package/dist/components/CustomSelect/CustomSelect.js +3 -4
  319. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  320. package/dist/components/DateInput/DateInput.js +2 -2
  321. package/dist/components/DateInput/DateInput.js.map +1 -1
  322. package/dist/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  323. package/dist/components/DateRangeInput/DateRangeInput.js +4 -3
  324. package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
  325. package/dist/components/FixedLayout/FixedLayout.d.ts +2 -2
  326. package/dist/components/FixedLayout/FixedLayout.d.ts.map +1 -1
  327. package/dist/components/FixedLayout/FixedLayout.js +1 -1
  328. package/dist/components/FixedLayout/FixedLayout.js.map +1 -1
  329. package/dist/components/Flex/FlexItem/FlexItem.d.ts +3 -3
  330. package/dist/components/Flex/FlexItem/FlexItem.d.ts.map +1 -1
  331. package/dist/components/Flex/FlexItem/FlexItem.js.map +1 -1
  332. package/dist/components/FocusTrap/FocusTrap.js +1 -1
  333. package/dist/components/FocusTrap/FocusTrap.js.map +1 -1
  334. package/dist/components/GridAvatar/GridAvatar.d.ts +0 -1
  335. package/dist/components/GridAvatar/GridAvatar.d.ts.map +1 -1
  336. package/dist/components/GridAvatar/GridAvatar.js +1 -1
  337. package/dist/components/GridAvatar/GridAvatar.js.map +1 -1
  338. package/dist/components/Group/Group.d.ts +1 -1
  339. package/dist/components/Group/Group.d.ts.map +1 -1
  340. package/dist/components/Group/Group.js +17 -12
  341. package/dist/components/Group/Group.js.map +1 -1
  342. package/dist/components/HorizontalScroll/HorizontalScroll.d.ts.map +1 -1
  343. package/dist/components/HorizontalScroll/HorizontalScroll.js +7 -10
  344. package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  345. package/dist/components/Image/Image.d.ts +0 -1
  346. package/dist/components/Image/Image.d.ts.map +1 -1
  347. package/dist/components/Image/Image.js +1 -1
  348. package/dist/components/Image/Image.js.map +1 -1
  349. package/dist/components/ImageBase/validators.js +1 -1
  350. package/dist/components/ImageBase/validators.js.map +1 -1
  351. package/dist/components/ModalPageHeader/ModalPageHeader.d.ts.map +1 -1
  352. package/dist/components/ModalPageHeader/ModalPageHeader.js +18 -16
  353. package/dist/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
  354. package/dist/components/ModalRoot/ModalRoot.d.ts.map +1 -1
  355. package/dist/components/ModalRoot/ModalRoot.js +4 -28
  356. package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
  357. package/dist/components/OnboardingTooltip/OnboardingTooltipContainer.d.ts +2 -2
  358. package/dist/components/OnboardingTooltip/OnboardingTooltipContainer.d.ts.map +1 -1
  359. package/dist/components/OnboardingTooltip/OnboardingTooltipContainer.js +4 -3
  360. package/dist/components/OnboardingTooltip/OnboardingTooltipContainer.js.map +1 -1
  361. package/dist/components/PullToRefresh/PullToRefresh.d.ts.map +1 -1
  362. package/dist/components/PullToRefresh/PullToRefresh.js +1 -3
  363. package/dist/components/PullToRefresh/PullToRefresh.js.map +1 -1
  364. package/dist/components/Radio/Radio.d.ts +5 -1
  365. package/dist/components/Radio/Radio.d.ts.map +1 -1
  366. package/dist/components/Radio/Radio.js +13 -76
  367. package/dist/components/Radio/Radio.js.map +1 -1
  368. package/dist/components/Radio/RadioInput/RadioInput.d.ts +6 -0
  369. package/dist/components/Radio/RadioInput/RadioInput.d.ts.map +1 -0
  370. package/dist/components/Radio/RadioInput/RadioInput.js +93 -0
  371. package/dist/components/Radio/RadioInput/RadioInput.js.map +1 -0
  372. package/dist/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  373. package/dist/components/SegmentedControl/SegmentedControl.js +1 -2
  374. package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
  375. package/dist/components/SelectionControl/SelectionControl.d.ts +14 -0
  376. package/dist/components/SelectionControl/SelectionControl.d.ts.map +1 -0
  377. package/dist/components/SelectionControl/SelectionControl.js +27 -0
  378. package/dist/components/SelectionControl/SelectionControl.js.map +1 -0
  379. package/dist/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.d.ts +7 -0
  380. package/dist/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.d.ts.map +1 -0
  381. package/dist/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js +46 -0
  382. package/dist/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js.map +1 -0
  383. package/dist/components/Textarea/Textarea.d.ts +1 -1
  384. package/dist/components/Textarea/Textarea.d.ts.map +1 -1
  385. package/dist/components/Textarea/Textarea.js +13 -3
  386. package/dist/components/Textarea/Textarea.js.map +1 -1
  387. package/dist/components/Textarea/useResizeTextarea.d.ts +1 -1
  388. package/dist/components/Textarea/useResizeTextarea.d.ts.map +1 -1
  389. package/dist/components/Textarea/useResizeTextarea.js +2 -2
  390. package/dist/components/Textarea/useResizeTextarea.js.map +1 -1
  391. package/dist/components/View/View.d.ts.map +1 -1
  392. package/dist/components/View/View.js +2 -4
  393. package/dist/components/View/View.js.map +1 -1
  394. package/dist/components/View/ViewInfinite.d.ts.map +1 -1
  395. package/dist/components/View/ViewInfinite.js +1 -3
  396. package/dist/components/View/ViewInfinite.js.map +1 -1
  397. package/dist/components/VisuallyHidden/VisuallyHidden.d.ts +1 -1
  398. package/dist/components/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
  399. package/dist/components/VisuallyHidden/VisuallyHidden.js +4 -3
  400. package/dist/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
  401. package/dist/components.css +2 -2
  402. package/dist/components.css.map +1 -1
  403. package/dist/components.js.tmp +1584 -1013
  404. package/dist/cssm/components/ActionSheet/ActionSheet.js +2 -1
  405. package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
  406. package/dist/cssm/components/ActionSheet/ActionSheetContext.d.ts +1 -0
  407. package/dist/cssm/components/ActionSheet/ActionSheetContext.d.ts.map +1 -1
  408. package/dist/cssm/components/ActionSheet/ActionSheetContext.js.map +1 -1
  409. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.d.ts.map +1 -1
  410. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js +38 -13
  411. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
  412. package/dist/cssm/components/ActionSheetItem/helpers.d.ts +10 -0
  413. package/dist/cssm/components/ActionSheetItem/helpers.d.ts.map +1 -0
  414. package/dist/cssm/components/ActionSheetItem/helpers.js +12 -0
  415. package/dist/cssm/components/ActionSheetItem/helpers.js.map +1 -0
  416. package/dist/cssm/components/Alert/Alert.js +1 -1
  417. package/dist/cssm/components/Alert/Alert.js.map +1 -1
  418. package/dist/cssm/components/Avatar/Avatar.d.ts +0 -1
  419. package/dist/cssm/components/Avatar/Avatar.d.ts.map +1 -1
  420. package/dist/cssm/components/Avatar/Avatar.js +1 -1
  421. package/dist/cssm/components/Avatar/Avatar.js.map +1 -1
  422. package/dist/cssm/components/Avatar/AvatarBadge/icons.d.ts +8 -3
  423. package/dist/cssm/components/Avatar/AvatarBadge/icons.d.ts.map +1 -1
  424. package/dist/cssm/components/Avatar/AvatarBadge/icons.js +2 -2
  425. package/dist/cssm/components/Avatar/AvatarBadge/icons.js.map +1 -1
  426. package/dist/cssm/components/BaseGallery/BaseGallery.d.ts.map +1 -1
  427. package/dist/cssm/components/BaseGallery/BaseGallery.js +0 -2
  428. package/dist/cssm/components/BaseGallery/BaseGallery.js.map +1 -1
  429. package/dist/cssm/components/Calendar/Calendar.js +1 -1
  430. package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
  431. package/dist/cssm/components/CalendarDays/CalendarDays.js +1 -1
  432. package/dist/cssm/components/CalendarDays/CalendarDays.js.map +1 -1
  433. package/dist/cssm/components/CalendarHeader/CalendarHeader.js +1 -1
  434. package/dist/cssm/components/CalendarHeader/CalendarHeader.js.map +1 -1
  435. package/dist/cssm/components/CalendarRange/CalendarRange.d.ts.map +1 -1
  436. package/dist/cssm/components/CalendarRange/CalendarRange.js +6 -4
  437. package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
  438. package/dist/cssm/components/CalendarTime/CalendarTime.js +1 -1
  439. package/dist/cssm/components/CalendarTime/CalendarTime.js.map +1 -1
  440. package/dist/cssm/components/Cell/Cell.d.ts.map +1 -1
  441. package/dist/cssm/components/Cell/Cell.js +2 -2
  442. package/dist/cssm/components/Cell/Cell.js.map +1 -1
  443. package/dist/cssm/components/Cell/Cell.module.css +12 -0
  444. package/dist/cssm/components/CellButton/CellButton.module.css +2 -2
  445. package/dist/cssm/components/Checkbox/Checkbox.d.ts +7 -5
  446. package/dist/cssm/components/Checkbox/Checkbox.d.ts.map +1 -1
  447. package/dist/cssm/components/Checkbox/Checkbox.js +28 -141
  448. package/dist/cssm/components/Checkbox/Checkbox.js.map +1 -1
  449. package/dist/cssm/components/Checkbox/CheckboxInput/CheckboxInput.d.ts +8 -0
  450. package/dist/cssm/components/Checkbox/CheckboxInput/CheckboxInput.d.ts.map +1 -0
  451. package/dist/cssm/components/Checkbox/CheckboxInput/CheckboxInput.js +113 -0
  452. package/dist/cssm/components/Checkbox/CheckboxInput/CheckboxInput.js.map +1 -0
  453. package/dist/cssm/components/Checkbox/CheckboxInput/CheckboxInput.module.css +30 -0
  454. package/dist/cssm/components/Checkbox/CheckboxSimple/CheckboxSimple.d.ts +3 -0
  455. package/dist/cssm/components/Checkbox/CheckboxSimple/CheckboxSimple.d.ts.map +1 -0
  456. package/dist/cssm/components/Checkbox/CheckboxSimple/CheckboxSimple.js +30 -0
  457. package/dist/cssm/components/Checkbox/CheckboxSimple/CheckboxSimple.js.map +1 -0
  458. package/dist/cssm/components/Checkbox/CheckboxSimple/CheckboxSimple.module.css +28 -0
  459. package/dist/cssm/components/ChipsInput/ChipsInput.d.ts.map +1 -1
  460. package/dist/cssm/components/ChipsInput/ChipsInput.js +1 -2
  461. package/dist/cssm/components/ChipsInput/ChipsInput.js.map +1 -1
  462. package/dist/cssm/components/ChipsInputBase/ChipsInputBase.js +1 -1
  463. package/dist/cssm/components/ChipsInputBase/ChipsInputBase.js.map +1 -1
  464. package/dist/cssm/components/ChipsInputBase/helpers.d.ts.map +1 -1
  465. package/dist/cssm/components/ChipsInputBase/helpers.js +0 -3
  466. package/dist/cssm/components/ChipsInputBase/helpers.js.map +1 -1
  467. package/dist/cssm/components/ChipsInputBase/types.d.ts +1 -1
  468. package/dist/cssm/components/ChipsInputBase/types.d.ts.map +1 -1
  469. package/dist/cssm/components/ChipsInputBase/types.js.map +1 -1
  470. package/dist/cssm/components/ChipsSelect/ChipsSelect.d.ts.map +1 -1
  471. package/dist/cssm/components/ChipsSelect/ChipsSelect.js +1 -7
  472. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  473. package/dist/cssm/components/Clickable/useState.d.ts +0 -5
  474. package/dist/cssm/components/Clickable/useState.d.ts.map +1 -1
  475. package/dist/cssm/components/Clickable/useState.js +2 -2
  476. package/dist/cssm/components/Clickable/useState.js.map +1 -1
  477. package/dist/cssm/components/CustomScrollView/CustomScrollView.d.ts +10 -1
  478. package/dist/cssm/components/CustomScrollView/CustomScrollView.d.ts.map +1 -1
  479. package/dist/cssm/components/CustomScrollView/CustomScrollView.js +39 -131
  480. package/dist/cssm/components/CustomScrollView/CustomScrollView.js.map +1 -1
  481. package/dist/cssm/components/CustomScrollView/CustomScrollView.module.css +52 -13
  482. package/dist/cssm/components/CustomScrollView/ScrollX.d.ts +3 -0
  483. package/dist/cssm/components/CustomScrollView/ScrollX.d.ts.map +1 -0
  484. package/dist/cssm/components/CustomScrollView/ScrollX.js +32 -0
  485. package/dist/cssm/components/CustomScrollView/ScrollX.js.map +1 -0
  486. package/dist/cssm/components/CustomScrollView/ScrollY.d.ts +3 -0
  487. package/dist/cssm/components/CustomScrollView/ScrollY.d.ts.map +1 -0
  488. package/dist/cssm/components/CustomScrollView/ScrollY.js +32 -0
  489. package/dist/cssm/components/CustomScrollView/ScrollY.js.map +1 -0
  490. package/dist/cssm/components/CustomScrollView/types.d.ts +21 -0
  491. package/dist/cssm/components/CustomScrollView/types.d.ts.map +1 -0
  492. package/dist/cssm/components/CustomScrollView/types.js +3 -0
  493. package/dist/cssm/components/CustomScrollView/types.js.map +1 -0
  494. package/dist/cssm/components/CustomScrollView/useCustomScrollViewResize.d.ts +8 -0
  495. package/dist/cssm/components/CustomScrollView/useCustomScrollViewResize.d.ts.map +1 -0
  496. package/dist/cssm/components/CustomScrollView/useCustomScrollViewResize.js +22 -0
  497. package/dist/cssm/components/CustomScrollView/useCustomScrollViewResize.js.map +1 -0
  498. package/dist/cssm/components/CustomScrollView/useDetectScrollDirection.d.ts +6 -0
  499. package/dist/cssm/components/CustomScrollView/useDetectScrollDirection.d.ts.map +1 -0
  500. package/dist/cssm/components/CustomScrollView/useDetectScrollDirection.js +20 -0
  501. package/dist/cssm/components/CustomScrollView/useDetectScrollDirection.js.map +1 -0
  502. package/dist/cssm/components/CustomScrollView/useDragAndDrop.d.ts +5 -0
  503. package/dist/cssm/components/CustomScrollView/useDragAndDrop.d.ts.map +1 -0
  504. package/dist/cssm/components/CustomScrollView/useDragAndDrop.js +46 -0
  505. package/dist/cssm/components/CustomScrollView/useDragAndDrop.js.map +1 -0
  506. package/dist/cssm/components/CustomScrollView/useHorizontalScrollController.d.ts +4 -0
  507. package/dist/cssm/components/CustomScrollView/useHorizontalScrollController.d.ts.map +1 -0
  508. package/dist/cssm/components/CustomScrollView/useHorizontalScrollController.js +91 -0
  509. package/dist/cssm/components/CustomScrollView/useHorizontalScrollController.js.map +1 -0
  510. package/dist/cssm/components/CustomScrollView/useTrackerVisibility.d.ts.map +1 -1
  511. package/dist/cssm/components/CustomScrollView/useTrackerVisibility.js +5 -0
  512. package/dist/cssm/components/CustomScrollView/useTrackerVisibility.js.map +1 -1
  513. package/dist/cssm/components/CustomScrollView/useVerticalScrollController.d.ts +4 -0
  514. package/dist/cssm/components/CustomScrollView/useVerticalScrollController.d.ts.map +1 -0
  515. package/dist/cssm/components/CustomScrollView/useVerticalScrollController.js +91 -0
  516. package/dist/cssm/components/CustomScrollView/useVerticalScrollController.js.map +1 -0
  517. package/dist/cssm/components/CustomSelect/CustomSelect.d.ts.map +1 -1
  518. package/dist/cssm/components/CustomSelect/CustomSelect.js +3 -4
  519. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  520. package/dist/cssm/components/DateInput/DateInput.js +2 -2
  521. package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
  522. package/dist/cssm/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  523. package/dist/cssm/components/DateRangeInput/DateRangeInput.js +4 -3
  524. package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
  525. package/dist/cssm/components/FixedLayout/FixedLayout.d.ts +2 -2
  526. package/dist/cssm/components/FixedLayout/FixedLayout.d.ts.map +1 -1
  527. package/dist/cssm/components/FixedLayout/FixedLayout.js +1 -1
  528. package/dist/cssm/components/FixedLayout/FixedLayout.js.map +1 -1
  529. package/dist/cssm/components/Flex/FlexItem/FlexItem.d.ts +3 -3
  530. package/dist/cssm/components/Flex/FlexItem/FlexItem.d.ts.map +1 -1
  531. package/dist/cssm/components/Flex/FlexItem/FlexItem.js.map +1 -1
  532. package/dist/cssm/components/FocusTrap/FocusTrap.js +1 -1
  533. package/dist/cssm/components/FocusTrap/FocusTrap.js.map +1 -1
  534. package/dist/cssm/components/FormField/FormField.module.css +0 -3
  535. package/dist/cssm/components/GridAvatar/GridAvatar.d.ts +0 -1
  536. package/dist/cssm/components/GridAvatar/GridAvatar.d.ts.map +1 -1
  537. package/dist/cssm/components/GridAvatar/GridAvatar.js +1 -1
  538. package/dist/cssm/components/GridAvatar/GridAvatar.js.map +1 -1
  539. package/dist/cssm/components/Group/Group.d.ts +1 -1
  540. package/dist/cssm/components/Group/Group.d.ts.map +1 -1
  541. package/dist/cssm/components/Group/Group.js +17 -12
  542. package/dist/cssm/components/Group/Group.js.map +1 -1
  543. package/dist/cssm/components/Group/Group.module.css +166 -139
  544. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.d.ts.map +1 -1
  545. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +7 -10
  546. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  547. package/dist/cssm/components/Image/Image.d.ts +0 -1
  548. package/dist/cssm/components/Image/Image.d.ts.map +1 -1
  549. package/dist/cssm/components/Image/Image.js +1 -1
  550. package/dist/cssm/components/Image/Image.js.map +1 -1
  551. package/dist/cssm/components/ImageBase/validators.js +1 -1
  552. package/dist/cssm/components/ImageBase/validators.js.map +1 -1
  553. package/dist/cssm/components/List/List.module.css +1 -0
  554. package/dist/cssm/components/ModalPageHeader/ModalPageHeader.d.ts.map +1 -1
  555. package/dist/cssm/components/ModalPageHeader/ModalPageHeader.js +18 -16
  556. package/dist/cssm/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
  557. package/dist/cssm/components/ModalRoot/ModalRoot.d.ts.map +1 -1
  558. package/dist/cssm/components/ModalRoot/ModalRoot.js +4 -28
  559. package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
  560. package/dist/cssm/components/OnboardingTooltip/OnboardingTooltipContainer.d.ts +2 -2
  561. package/dist/cssm/components/OnboardingTooltip/OnboardingTooltipContainer.d.ts.map +1 -1
  562. package/dist/cssm/components/OnboardingTooltip/OnboardingTooltipContainer.js +2 -2
  563. package/dist/cssm/components/OnboardingTooltip/OnboardingTooltipContainer.js.map +1 -1
  564. package/dist/cssm/components/PullToRefresh/PullToRefresh.d.ts.map +1 -1
  565. package/dist/cssm/components/PullToRefresh/PullToRefresh.js +1 -3
  566. package/dist/cssm/components/PullToRefresh/PullToRefresh.js.map +1 -1
  567. package/dist/cssm/components/Radio/Radio.d.ts +5 -1
  568. package/dist/cssm/components/Radio/Radio.d.ts.map +1 -1
  569. package/dist/cssm/components/Radio/Radio.js +13 -76
  570. package/dist/cssm/components/Radio/Radio.js.map +1 -1
  571. package/dist/cssm/components/Radio/Radio.module.css +0 -145
  572. package/dist/cssm/components/Radio/RadioInput/RadioInput.d.ts +6 -0
  573. package/dist/cssm/components/Radio/RadioInput/RadioInput.d.ts.map +1 -0
  574. package/dist/cssm/components/Radio/RadioInput/RadioInput.js +86 -0
  575. package/dist/cssm/components/Radio/RadioInput/RadioInput.js.map +1 -0
  576. package/dist/cssm/components/Radio/RadioInput/RadioInput.module.css +20 -0
  577. package/dist/cssm/components/Search/Search.module.css +3 -1
  578. package/dist/cssm/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  579. package/dist/cssm/components/SegmentedControl/SegmentedControl.js +1 -2
  580. package/dist/cssm/components/SegmentedControl/SegmentedControl.js.map +1 -1
  581. package/dist/cssm/components/SelectionControl/SelectionControl.d.ts +14 -0
  582. package/dist/cssm/components/SelectionControl/SelectionControl.d.ts.map +1 -0
  583. package/dist/cssm/components/SelectionControl/SelectionControl.js +28 -0
  584. package/dist/cssm/components/SelectionControl/SelectionControl.js.map +1 -0
  585. package/dist/cssm/components/SelectionControl/SelectionControl.module.css +35 -0
  586. package/dist/cssm/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.d.ts +7 -0
  587. package/dist/cssm/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.d.ts.map +1 -0
  588. package/dist/cssm/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js +39 -0
  589. package/dist/cssm/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js.map +1 -0
  590. package/dist/cssm/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.module.css +48 -0
  591. package/dist/cssm/components/Textarea/Textarea.d.ts +1 -1
  592. package/dist/cssm/components/Textarea/Textarea.d.ts.map +1 -1
  593. package/dist/cssm/components/Textarea/Textarea.js +11 -2
  594. package/dist/cssm/components/Textarea/Textarea.js.map +1 -1
  595. package/dist/cssm/components/Textarea/Textarea.module.css +3 -3
  596. package/dist/cssm/components/Textarea/useResizeTextarea.d.ts +1 -1
  597. package/dist/cssm/components/Textarea/useResizeTextarea.d.ts.map +1 -1
  598. package/dist/cssm/components/Textarea/useResizeTextarea.js +2 -2
  599. package/dist/cssm/components/Textarea/useResizeTextarea.js.map +1 -1
  600. package/dist/cssm/components/View/View.d.ts.map +1 -1
  601. package/dist/cssm/components/View/View.js +2 -4
  602. package/dist/cssm/components/View/View.js.map +1 -1
  603. package/dist/cssm/components/View/ViewInfinite.d.ts.map +1 -1
  604. package/dist/cssm/components/View/ViewInfinite.js +1 -3
  605. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  606. package/dist/cssm/components/VisuallyHidden/VisuallyHidden.d.ts +1 -1
  607. package/dist/cssm/components/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
  608. package/dist/cssm/components/VisuallyHidden/VisuallyHidden.js +2 -2
  609. package/dist/cssm/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
  610. package/dist/cssm/components/WriteBar/WriteBar.module.css +2 -0
  611. package/dist/cssm/hooks/useCalendar.d.ts.map +1 -1
  612. package/dist/cssm/hooks/useCalendar.js +1 -1
  613. package/dist/cssm/hooks/useCalendar.js.map +1 -1
  614. package/dist/cssm/hooks/useTodayDate.js +2 -2
  615. package/dist/cssm/hooks/useTodayDate.js.map +1 -1
  616. package/dist/cssm/index.d.ts +3 -0
  617. package/dist/cssm/index.d.ts.map +1 -1
  618. package/dist/cssm/index.js +2 -0
  619. package/dist/cssm/index.js.map +1 -1
  620. package/dist/cssm/lib/calendar.d.ts.map +1 -1
  621. package/dist/cssm/lib/calendar.js +15 -4
  622. package/dist/cssm/lib/calendar.js.map +1 -1
  623. package/dist/cssm/lib/date.d.ts +1 -28
  624. package/dist/cssm/lib/date.d.ts.map +1 -1
  625. package/dist/cssm/lib/date.js +8 -105
  626. package/dist/cssm/lib/date.js.map +1 -1
  627. package/dist/cssm/styles/themes.css +63 -19
  628. package/dist/hooks/useCalendar.d.ts.map +1 -1
  629. package/dist/hooks/useCalendar.js +1 -1
  630. package/dist/hooks/useCalendar.js.map +1 -1
  631. package/dist/hooks/useTodayDate.js +2 -2
  632. package/dist/hooks/useTodayDate.js.map +1 -1
  633. package/dist/index.d.ts +3 -0
  634. package/dist/index.d.ts.map +1 -1
  635. package/dist/index.js +2 -0
  636. package/dist/index.js.map +1 -1
  637. package/dist/lib/calendar.d.ts.map +1 -1
  638. package/dist/lib/calendar.js +15 -4
  639. package/dist/lib/calendar.js.map +1 -1
  640. package/dist/lib/date.d.ts +1 -28
  641. package/dist/lib/date.d.ts.map +1 -1
  642. package/dist/lib/date.js +8 -105
  643. package/dist/lib/date.js.map +1 -1
  644. package/dist/vkui.css +3 -3
  645. package/dist/vkui.css.map +1 -1
  646. package/dist/vkui.js.tmp +1586 -1012
  647. package/package.json +3 -4
  648. package/src/components/ActionSheet/ActionSheet.tsx +1 -1
  649. package/src/components/ActionSheet/ActionSheetContext.ts +1 -0
  650. package/src/components/ActionSheetItem/ActionSheetItem.tsx +43 -18
  651. package/src/components/ActionSheetItem/helpers.ts +11 -0
  652. package/src/components/Alert/Alert.tsx +1 -1
  653. package/src/components/Avatar/Avatar.tsx +1 -1
  654. package/src/components/Avatar/AvatarBadge/icons.tsx +9 -8
  655. package/src/components/BaseGallery/BaseGallery.tsx +0 -4
  656. package/src/components/Calendar/Calendar.tsx +1 -1
  657. package/src/components/CalendarDays/CalendarDays.tsx +1 -1
  658. package/src/components/CalendarHeader/CalendarHeader.tsx +1 -1
  659. package/src/components/CalendarRange/CalendarRange.tsx +5 -6
  660. package/src/components/CalendarTime/CalendarTime.tsx +1 -1
  661. package/src/components/Cell/Cell.module.css +10 -0
  662. package/src/components/Cell/Cell.tsx +13 -2
  663. package/src/components/CellButton/CellButton.module.css +2 -2
  664. package/src/components/Checkbox/Checkbox.tsx +30 -166
  665. package/src/components/Checkbox/CheckboxInput/CheckboxInput.module.css +30 -0
  666. package/src/components/Checkbox/CheckboxInput/CheckboxInput.tsx +174 -0
  667. package/src/components/Checkbox/CheckboxSimple/CheckboxSimple.module.css +28 -0
  668. package/src/components/Checkbox/CheckboxSimple/CheckboxSimple.tsx +49 -0
  669. package/src/components/ChipsInput/ChipsInput.tsx +3 -8
  670. package/src/components/ChipsInputBase/ChipsInputBase.tsx +1 -1
  671. package/src/components/ChipsInputBase/helpers.ts +0 -3
  672. package/src/components/ChipsInputBase/types.ts +1 -1
  673. package/src/components/ChipsSelect/ChipsSelect.tsx +1 -9
  674. package/src/components/Clickable/useState.tsx +2 -2
  675. package/src/components/CustomScrollView/CustomScrollView.module.css +49 -11
  676. package/src/components/CustomScrollView/CustomScrollView.tsx +56 -164
  677. package/src/components/CustomScrollView/ScrollX.tsx +57 -0
  678. package/src/components/CustomScrollView/ScrollY.tsx +57 -0
  679. package/src/components/CustomScrollView/types.ts +23 -0
  680. package/src/components/CustomScrollView/useCustomScrollViewResize.ts +32 -0
  681. package/src/components/CustomScrollView/useDetectScrollDirection.ts +21 -0
  682. package/src/components/CustomScrollView/useDragAndDrop.tsx +55 -0
  683. package/src/components/CustomScrollView/useHorizontalScrollController.tsx +120 -0
  684. package/src/components/CustomScrollView/useTrackerVisibility.ts +4 -0
  685. package/src/components/CustomScrollView/useVerticalScrollController.tsx +122 -0
  686. package/src/components/CustomSelect/CustomSelect.tsx +3 -5
  687. package/src/components/DateInput/DateInput.tsx +2 -2
  688. package/src/components/DateRangeInput/DateRangeInput.tsx +5 -4
  689. package/src/components/FixedLayout/FixedLayout.tsx +4 -4
  690. package/src/components/Flex/FlexItem/FlexItem.tsx +3 -3
  691. package/src/components/FocusTrap/FocusTrap.tsx +1 -1
  692. package/src/components/FormField/FormField.module.css +0 -3
  693. package/src/components/GridAvatar/GridAvatar.tsx +1 -1
  694. package/src/components/Group/Group.module.css +155 -132
  695. package/src/components/Group/Group.tsx +25 -19
  696. package/src/components/HorizontalScroll/HorizontalScroll.tsx +7 -12
  697. package/src/components/Image/Image.tsx +1 -1
  698. package/src/components/ImageBase/validators.ts +1 -1
  699. package/src/components/List/List.module.css +1 -0
  700. package/src/components/ModalPageHeader/ModalPageHeader.tsx +24 -22
  701. package/src/components/ModalRoot/ModalRoot.tsx +4 -32
  702. package/src/components/OnboardingTooltip/OnboardingTooltipContainer.tsx +4 -3
  703. package/src/components/PullToRefresh/PullToRefresh.tsx +0 -2
  704. package/src/components/Radio/Radio.module.css +0 -131
  705. package/src/components/Radio/Radio.tsx +14 -53
  706. package/src/components/Radio/RadioInput/RadioInput.module.css +20 -0
  707. package/src/components/Radio/RadioInput/RadioInput.tsx +58 -0
  708. package/src/components/Search/Search.module.css +1 -1
  709. package/src/components/SegmentedControl/SegmentedControl.tsx +0 -1
  710. package/src/components/SelectionControl/SelectionControl.module.css +33 -0
  711. package/src/components/SelectionControl/SelectionControl.tsx +44 -0
  712. package/src/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.module.css +44 -0
  713. package/src/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.tsx +43 -0
  714. package/src/components/Textarea/Textarea.module.css +3 -3
  715. package/src/components/Textarea/Textarea.tsx +9 -1
  716. package/src/components/Textarea/useResizeTextarea.ts +2 -1
  717. package/src/components/View/View.tsx +0 -2
  718. package/src/components/View/ViewInfinite.tsx +0 -2
  719. package/src/components/VisuallyHidden/VisuallyHidden.tsx +2 -0
  720. package/src/components/WriteBar/WriteBar.module.css +1 -1
  721. package/src/hooks/useCalendar.ts +1 -9
  722. package/src/hooks/useTodayDate.ts +2 -2
  723. package/src/index.ts +3 -0
  724. package/src/lib/calendar.ts +8 -7
  725. package/src/lib/date.ts +9 -140
  726. package/dist/cjs/lib/styles.d.ts +0 -2
  727. package/dist/cjs/lib/styles.d.ts.map +0 -1
  728. package/dist/cjs/lib/styles.js +0 -20
  729. package/dist/cjs/lib/styles.js.map +0 -1
  730. package/dist/cssm/components/Checkbox/Checkbox.module.css +0 -183
  731. package/dist/cssm/lib/styles.d.ts +0 -2
  732. package/dist/cssm/lib/styles.d.ts.map +0 -1
  733. package/dist/cssm/lib/styles.js +0 -10
  734. package/dist/cssm/lib/styles.js.map +0 -1
  735. package/dist/lib/styles.d.ts +0 -2
  736. package/dist/lib/styles.d.ts.map +0 -1
  737. package/dist/lib/styles.js +0 -10
  738. package/dist/lib/styles.js.map +0 -1
  739. package/src/components/Checkbox/Checkbox.module.css +0 -170
  740. package/src/lib/styles.ts +0 -12
@@ -1,159 +1,58 @@
1
- .Group {
2
- color: var(--vkui--color_text_primary);
3
- padding-block: 8px;
4
- }
1
+ /* stylelint-disable selector-max-universal */
5
2
 
6
- .Group__header:empty {
7
- display: none;
8
- }
3
+ /*
4
+ * Автоопределение mode:
5
+ *
6
+ * - sizeX="compact" (mobile) -> mode="plain"
7
+ * - sizeX="regular" (desktop) -> mode="card"
8
+ */
9
9
 
10
- .Group--mode-plain:not(:first-of-type) > .Group__header {
11
- -webkit-margin-before: -8px;
12
- margin-block-start: -8px;
13
- }
10
+ .Group {
11
+ --vkui_internal--Group_padding_size: 0;
14
12
 
15
- @media (max-width: 767.9px) {
16
- .Group--sizeX-none.Group--mode-none:not(:first-of-type) > .Group__header {
17
- -webkit-margin-before: -8px;
18
- margin-block-start: -8px;
19
- }
13
+ color: var(--vkui--color_text_primary);
14
+ padding-block: var(--vkui--spacing_size_m);
20
15
  }
21
16
 
22
- .Group--mode-card > .Group__header {
23
- -webkit-margin-before: -4px;
24
- margin-block-start: -4px;
17
+ .Group--padding-s {
18
+ --vkui_internal--Group_padding_size: var(--vkui--spacing_size_xs);
25
19
  }
26
20
 
27
- @media (min-width: 768px) {
28
- .Group--sizeX-none.Group--mode-none > .Group__header {
29
- -webkit-margin-before: -4px;
30
- margin-block-start: -4px;
31
- }
21
+ .Group--padding-m {
22
+ --vkui_internal--Group_padding_size: var(--vkui--spacing_size_m);
32
23
  }
33
24
 
34
- .Group__separator--spacing,
35
- .Group__separator--separator {
36
- display: none;
37
- }
25
+ /* разделитель при mode="card" */
38
26
 
39
- .Group__separator--spacing {
27
+ .Group--mode-card,
28
+ .Group--sizeX-regular.Group--mode-none {
29
+ padding: var(--vkui_internal--Group_padding_size);
40
30
  position: relative;
41
- box-sizing: border-box;
42
- }
43
-
44
- /* stylelint-disable-next-line selector-max-universal */
45
-
46
- .Group--mode-plain + * + .Group__separator--separator {
47
- display: block;
48
- }
49
-
50
- @media (max-width: 767.9px) {
51
- /* stylelint-disable-next-line selector-max-universal */
52
- .Group--sizeX-none.Group--mode-none + * + .Group__separator--separator {
53
- display: block;
54
- }
55
- }
56
-
57
- .Group--mode-card + .Group__separator--spacing {
58
- display: block;
59
- block-size: 16px;
60
- padding-block: 8px;
61
- padding-inline: 0;
62
- }
63
-
64
- .Group--sizeX-compact.Group--mode-card + .Group__separator--spacing {
65
- display: block;
66
- block-size: 8px;
67
- padding-block: 4px;
68
- }
69
-
70
- @media (min-width: 768px) {
71
- .Group--sizeX-none.Group--mode-none + .Group__separator--spacing {
72
- display: block;
73
- block-size: 16px;
74
- padding-block: 8px;
75
- padding-inline: 0;
76
- }
77
- }
78
-
79
- @media (max-width: 767.9px) {
80
- .Group--sizeX-none.Group--mode-card + .Group__separator--spacing {
81
- block-size: 8px;
82
- padding-block: 4px;
83
- }
84
- }
85
-
86
- .Group:last-of-type ~ .Group__separator {
87
- display: none;
88
- }
89
-
90
- .Group:last-of-type ~ .Group__separator--force,
91
- .Group--mode-card:last-of-type + .Group__separator--spacing {
92
- display: block;
93
- }
94
-
95
- @media (min-width: 768px) {
96
- .Group--sizeX-none.Group--mode-none:last-of-type + .Group__separator--spacing {
97
- display: block;
98
- }
99
- }
100
-
101
- .Group--mode-card.Group--padding-s {
102
- padding: 4px;
103
- }
104
-
105
- .Group--mode-card.Group--padding-m {
106
- padding: 8px;
31
+ background: var(--vkui--color_background_content);
32
+ border-radius: var(--vkui--size_border_radius_paper--regular);
107
33
  }
108
34
 
109
35
  @media (min-width: 768px) {
110
- .Group--sizeX-none.Group--inside-modal.Group--padding-s,
111
- .Group--sizeX-none.Group--mode-none.Group--padding-s {
112
- padding: 4px;
113
- }
114
-
115
- .Group--sizeX-none.Group--inside-modal.Group--padding-m,
116
- .Group--sizeX-none.Group--mode-none.Group--padding-m {
117
- padding: 8px;
36
+ .Group--sizeX-none.Group--mode-none {
37
+ padding: var(--vkui_internal--Group_padding_size);
38
+ position: relative;
39
+ background: var(--vkui--color_background_content);
40
+ border-radius: var(--vkui--size_border_radius_paper--regular);
118
41
  }
119
42
  }
120
43
 
121
- .Group--sizeX-compact,
122
44
  .Group--sizeX-compact.Group--mode-card {
123
45
  padding-inline: 0;
124
- }
125
-
126
- @media (max-width: 767.9px) {
127
- .Group--sizeX-none,
128
- .Group--sizeX-none.Group--mode-card {
129
- padding-inline: 0;
130
- }
131
- }
132
-
133
- .Group--mode-card {
134
- background: var(--vkui--color_background_content);
135
- border-radius: var(--vkui--size_border_radius_paper--regular);
136
- position: relative;
137
- }
138
-
139
- .Group--sizeX-compact.Group--mode-card {
140
46
  border-radius: var(--vkui--size_border_radius_promo--regular);
141
47
  }
142
48
 
143
49
  @media (max-width: 767.9px) {
144
50
  .Group--sizeX-none.Group--mode-card {
51
+ padding-inline: 0;
145
52
  border-radius: var(--vkui--size_border_radius_promo--regular);
146
53
  }
147
54
  }
148
55
 
149
- @media (min-width: 768px) {
150
- .Group--sizeX-none.Group--mode-none {
151
- background: var(--vkui--color_background_content);
152
- border-radius: var(--vkui--size_border_radius_paper--regular);
153
- position: relative;
154
- }
155
- }
156
-
157
56
  .Group--sizeX-compact.Group--mode-card:first-of-type {
158
57
  border-start-start-radius: 0;
159
58
  border-start-end-radius: 0;
@@ -170,7 +69,7 @@
170
69
  }
171
70
  }
172
71
 
173
- /**
72
+ /*
174
73
  * Изменено с ::after на ::before
175
74
  * потому что при ::after абсолютно позиционированный элемент накладывается
176
75
  * поверх любого другого абсолютно позиционированного элемента внутри Group,
@@ -178,7 +77,8 @@
178
77
  * См. пример: Slider c пропом withTooltip
179
78
  */
180
79
 
181
- .Group--mode-card::before {
80
+ .Group--mode-card::before,
81
+ .Group--sizeX-regular.Group--mode-none::before {
182
82
  content: '';
183
83
  inset-inline-start: 0;
184
84
  inset-block-start: 0;
@@ -214,27 +114,158 @@
214
114
  }
215
115
  }
216
116
 
217
- .Group--mode-plain + .Group__separator + .Group__separator {
218
- padding-block: 8px;
117
+ /*
118
+ * Header
119
+ */
120
+
121
+ .Group__header:empty {
122
+ display: none;
123
+ }
124
+
125
+ .Group--mode-plain:not(:first-of-type) > .Group__header,
126
+ .Group--sizeX-compact.Group--mode-none:not(:first-of-type) > .Group__header {
127
+ -webkit-margin-before: calc(-1 * var(--vkui--spacing_size_m));
128
+ margin-block-start: calc(-1 * var(--vkui--spacing_size_m));
219
129
  }
220
130
 
221
131
  @media (max-width: 767.9px) {
222
- .Group--sizeX-none.Group--mode-none + .Group__separator + .Group__separator {
223
- padding-block: 8px;
132
+ .Group--sizeX-none.Group--mode-none:not(:first-of-type) > .Group__header {
133
+ -webkit-margin-before: calc(-1 * var(--vkui--spacing_size_m));
134
+ margin-block-start: calc(-1 * var(--vkui--spacing_size_m));
135
+ }
136
+ }
137
+
138
+ .Group--mode-card > .Group__header,
139
+ .Group--sizeX-regular.Group--mode-none > .Group__header {
140
+ -webkit-margin-before: calc(-1 * var(--vkui--spacing_size_xs));
141
+ margin-block-start: calc(-1 * var(--vkui--spacing_size_xs));
142
+ }
143
+
144
+ @media (min-width: 768px) {
145
+ .Group--sizeX-none.Group--mode-none > .Group__header {
146
+ -webkit-margin-before: calc(-1 * var(--vkui--spacing_size_xs));
147
+ margin-block-start: calc(-1 * var(--vkui--spacing_size_xs));
224
148
  }
225
149
  }
226
150
 
151
+ /*
152
+ * Description
153
+ */
154
+
227
155
  .Group__description {
228
156
  display: block;
229
- padding-block: 4px 16px;
157
+ padding-block: var(--vkui--spacing_size_xs) var(--vkui--spacing_size_2xl);
230
158
  padding-inline: var(--vkui--size_base_padding_horizontal--regular);
231
159
  color: var(--vkui--color_text_secondary);
232
160
  }
233
161
 
162
+ /*
163
+ * Separator (sibling)
164
+ *
165
+ * ⚠️ Находится за пределами Group
166
+ */
167
+
168
+ .Group__separator-sibling {
169
+ --vkui_internal--Group__separator_hr: none;
170
+
171
+ position: relative;
172
+ box-sizing: border-box;
173
+ }
174
+
175
+ .Group__separator-sibling::before {
176
+ display: var(--vkui_internal--Group__separator_hr);
177
+ content: '';
178
+ block-size: var(--vkui--size_border--regular);
179
+ background: var(--vkui--color_separator_primary);
180
+ }
181
+
182
+ /* разделитель при mode="plain" */
183
+
184
+ .Group--mode-plain + .Group__separator-sibling,
185
+ .Group--sizeX-compact.Group--mode-none + .Group__separator-sibling {
186
+ --vkui_internal--Group__separator_hr: block;
187
+
188
+ padding-inline: var(--vkui--size_base_padding_horizontal--regular);
189
+ padding-block: var(--vkui--spacing_size_m);
190
+ }
191
+
192
+ @media (max-width: 767.9px) {
193
+ .Group--sizeX-none.Group--mode-none + .Group__separator-sibling {
194
+ --vkui_internal--Group__separator_hr: block;
195
+
196
+ padding-inline: var(--vkui--size_base_padding_horizontal--regular);
197
+ padding-block: var(--vkui--spacing_size_m);
198
+ }
199
+ }
200
+
201
+ .Group--mode-plain:last-of-type + .Group__separator-sibling:not(.Group__separator-sibling--forced) {
202
+ display: none;
203
+ }
204
+
205
+ @media (max-width: 767.9px) {
206
+ .Group--sizeX-none.Group--mode-none:last-of-type
207
+ + .Group__separator-sibling:not(.Group__separator-sibling--forced) {
208
+ display: none;
209
+ }
210
+ }
211
+
212
+ /* разделитель при mode="card" */
213
+
214
+ .Group--mode-card + .Group__separator-sibling,
215
+ .Group--sizeX-regular.Group--mode-none + .Group__separator-sibling {
216
+ block-size: var(--vkui--spacing_size_2xl);
217
+ padding-block: calc(var(--vkui--spacing_size_2xl) / 2);
218
+ }
219
+
220
+ @media (min-width: 768px) {
221
+ .Group--sizeX-none.Group--mode-none + .Group__separator-sibling {
222
+ block-size: var(--vkui--spacing_size_2xl);
223
+ padding-block: calc(var(--vkui--spacing_size_2xl) / 2);
224
+ }
225
+ }
226
+
227
+ .Group--sizeX-compact.Group--mode-card + .Group__separator-sibling {
228
+ block-size: var(--vkui--spacing_size_m);
229
+ padding-block: calc(var(--vkui--spacing_size_m) / 2);
230
+ }
231
+
232
+ @media (max-width: 767.9px) {
233
+ .Group--sizeX-none.Group--mode-card + .Group__separator-sibling {
234
+ block-size: var(--vkui--spacing_size_m);
235
+ padding-block: calc(var(--vkui--spacing_size_m) / 2);
236
+ }
237
+ }
238
+
239
+ /*
240
+ * Group вложенный в ModalPage
241
+ *
242
+ * note: ModalPage форсирует mode="plain" для Group
243
+ */
244
+
245
+ @media (min-width: 768px) {
246
+ .Group--mode-plain-inside-modal {
247
+ padding: var(--vkui--spacing_size_m);
248
+ }
249
+
250
+ .Group--mode-plain-inside-modal + .Group__separator-sibling {
251
+ padding-inline: calc(
252
+ var(--vkui--size_base_padding_horizontal--regular) + var(--vkui--spacing_size_m)
253
+ );
254
+ }
255
+ }
256
+
257
+ /*
258
+ * Group вложенный в Group
259
+ */
260
+
234
261
  .Group .Group {
235
262
  padding-inline: 0;
236
263
  }
237
264
 
265
+ .Group .Group + .Group__separator-sibling {
266
+ padding-inline: var(--vkui--size_base_padding_horizontal--regular);
267
+ }
268
+
238
269
  .Group .Group:first-of-type {
239
270
  -webkit-padding-before: 0;
240
271
  padding-block-start: 0;
@@ -250,8 +281,6 @@
250
281
  * PanelHeader
251
282
  */
252
283
 
253
- /* stylelint-disable selector-max-universal */
254
-
255
284
  /* stylelint-disable-next-line selector-pseudo-class-disallowed-list */
256
285
 
257
286
  :global(.vkuiInternalPanelHeader--vkcom) ~ .Group:first-of-type,
@@ -261,5 +290,3 @@
261
290
  border-start-end-radius: 0;
262
291
  border-start-start-radius: 0;
263
292
  }
264
-
265
- /* stylelint-enable selector-max-universal */
@@ -1 +1 @@
1
- {"version":3,"file":"HorizontalScroll.d.ts","sourceRoot":"","sources":["../../../../src/components/HorizontalScroll/HorizontalScroll.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAAE,MAAM,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAqBhE,MAAM,MAAM,qBAAqB,GAAG,CAAC,eAAe,EAAE,MAAM,KAAK,MAAM,CAAC;AAExE,MAAM,WAAW,qBACf,SAAQ,yBAAyB,CAAC,cAAc,CAAC,EAC/C,MAAM,CAAC,cAAc,CAAC;IACxB;;OAEG;IACH,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC;;OAEG;IACH,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;IACzC,SAAS,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;IACtB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAChC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AA2GD;;GAEG;AACH,eAAO,MAAM,gBAAgB,kKAY1B,qBAAqB,KAAG,KAAK,CAAC,SAsJhC,CAAC"}
1
+ {"version":3,"file":"HorizontalScroll.d.ts","sourceRoot":"","sources":["../../../../src/components/HorizontalScroll/HorizontalScroll.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAAE,MAAM,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAqBhE,MAAM,MAAM,qBAAqB,GAAG,CAAC,eAAe,EAAE,MAAM,KAAK,MAAM,CAAC;AAExE,MAAM,WAAW,qBACf,SAAQ,yBAAyB,CAAC,cAAc,CAAC,EAC/C,MAAM,CAAC,cAAc,CAAC;IACxB;;OAEG;IACH,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC;;OAEG;IACH,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;IACzC,SAAS,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;IACtB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAChC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAsGD;;GAEG;AACH,eAAO,MAAM,gBAAgB,kKAY1B,qBAAqB,KAAG,KAAK,CAAC,SAsJhC,CAAC"}
@@ -37,7 +37,7 @@ import styles from './HorizontalScroll.module.css';
37
37
  * Константа взята из полифила (468), на дизайн-ревью уточнили до 250
38
38
  * @var {number} SCROLL_ONE_FRAME_TIME время анимации скролла
39
39
  */ const SCROLL_ONE_FRAME_TIME = 250;
40
- function doScroll({ scrollElement, getScrollPosition, animationQueue, onScrollToEndBorder, onScrollEnd, onScrollStart, initialScrollWidth, scrollAnimationDuration = SCROLL_ONE_FRAME_TIME, textDirection }) {
40
+ function doScroll({ scrollElement, getScrollPosition, animationQueue, onScrollToEndBorder, onScrollEnd, onScrollStart, initialScrollWidth, scrollAnimationDuration, textDirection }) {
41
41
  if (!scrollElement || !getScrollPosition) {
42
42
  return;
43
43
  }
@@ -58,10 +58,6 @@ function doScroll({ scrollElement, getScrollPosition, animationQueue, onScrollTo
58
58
  }
59
59
  const startTime = now();
60
60
  (function scroll() {
61
- if (!scrollElement) {
62
- onScrollEnd();
63
- return;
64
- }
65
61
  const time = now();
66
62
  const elapsed = Math.min((time - startTime) / scrollAnimationDuration, 1);
67
63
  const value = easeInOutSine(elapsed);
@@ -84,9 +80,10 @@ function doScroll({ scrollElement, getScrollPosition, animationQueue, onScrollTo
84
80
  */ export const HorizontalScroll = ({ children, getScrollToLeft, getScrollToRight, showArrows = true, arrowSize = 'l', arrowOffsetY, scrollAnimationDuration = SCROLL_ONE_FRAME_TIME, getRef, scrollOnAnyWheel = false, inline = false, ...restProps })=>{
85
81
  const [canScrollLeft, setCanScrollLeft] = React.useState(false);
86
82
  const [canScrollRight, setCanScrollRight] = React.useState(false);
87
- const [directionRef, textDirection = 'ltr'] = useDirection();
88
- const setCanScrollStart = textDirection === 'ltr' ? setCanScrollLeft : setCanScrollRight;
89
- const setCanScrollEnd = textDirection === 'ltr' ? setCanScrollRight : setCanScrollLeft;
83
+ const [directionRef, textDirection] = useDirection();
84
+ const direction = textDirection || 'ltr';
85
+ const setCanScrollStart = direction === 'ltr' ? setCanScrollLeft : setCanScrollRight;
86
+ const setCanScrollEnd = direction === 'ltr' ? setCanScrollRight : setCanScrollLeft;
90
87
  const isCustomScrollingRef = React.useRef(false);
91
88
  const scrollerRef = useExternRef(getRef, directionRef);
92
89
  const animationQueue = React.useRef([]);
@@ -102,7 +99,7 @@ function doScroll({ scrollElement, getScrollPosition, animationQueue, onScrollTo
102
99
  onScrollStart: ()=>isCustomScrollingRef.current = true,
103
100
  initialScrollWidth: scrollElement?.firstElementChild?.scrollWidth || 0,
104
101
  scrollAnimationDuration,
105
- textDirection
102
+ textDirection: direction
106
103
  }));
107
104
  if (animationQueue.current.length === 1) {
108
105
  animationQueue.current[0]();
@@ -110,7 +107,7 @@ function doScroll({ scrollElement, getScrollPosition, animationQueue, onScrollTo
110
107
  }, [
111
108
  scrollerRef,
112
109
  scrollAnimationDuration,
113
- textDirection,
110
+ direction,
114
111
  setCanScrollEnd
115
112
  ]);
116
113
  const scrollToLeft = React.useCallback(()=>{
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/HorizontalScroll/HorizontalScroll.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, noop } from '@vkontakte/vkjs';\nimport { useAdaptivityHasPointer } from '../../hooks/useAdaptivityHasPointer';\nimport { useDirection } from '../../hooks/useDirection';\nimport { useEventListener } from '../../hooks/useEventListener';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { easeInOutSine } from '../../lib/fx';\nimport { HasRef, HTMLAttributesWithRootRef } from '../../types';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { ScrollArrow } from '../ScrollArrow/ScrollArrow';\nimport styles from './HorizontalScroll.module.css';\n\ninterface ScrollContext {\n scrollElement: HTMLElement | null;\n scrollAnimationDuration: number;\n animationQueue: VoidFunction[];\n getScrollPosition: (currentPosition: number) => number;\n onScrollToEndBorder: VoidFunction;\n onScrollEnd: VoidFunction;\n onScrollStart: VoidFunction;\n /**\n * Начальная ширина прокрутки.\n * В некоторых случаях может отличаться от текущей ширины прокрутки из-за transforms: translate\n */\n initialScrollWidth: number;\n textDirection: 'ltr' | 'rtl';\n}\n\nexport type ScrollPositionHandler = (currentPosition: number) => number;\n\nexport interface HorizontalScrollProps\n extends HTMLAttributesWithRootRef<HTMLDivElement>,\n HasRef<HTMLDivElement> {\n /**\n * Функция для расчета величины прокрутки при клике на левую стрелку.\n */\n getScrollToLeft?: ScrollPositionHandler;\n /**\n * Функция для расчета величины прокрутки при клике на правую стрелку.\n */\n getScrollToRight?: ScrollPositionHandler;\n arrowSize?: 'm' | 'l';\n /**\n * Смещает иконки кнопок навигации по вертикали.\n */\n arrowOffsetY?: number | string;\n showArrows?: boolean | 'always';\n scrollAnimationDuration?: number;\n /**\n * Добавляет возможность прокручивать контент на любое колесо мыши.\n * По умолчанию прокручивается как любой горизонтальный контент через shift.\n */\n scrollOnAnyWheel?: boolean;\n /**\n * Задает потомкам инлайновое положение (горизонально)\n *\n * TODO [>=7]: Сделать по умолчанию `true` (или удалить, применяя стили всегда)\n */\n inline?: boolean;\n}\n\n/**\n * timing method\n */\nfunction now() {\n return performance && performance.now ? performance.now() : Date.now();\n}\n\n/**\n * Округление к большему по модулю\n *\n * ## Пример\n *\n * ```ts\n * import { strict as assert } from 'node:assert';\n *\n * assert.equal(roundingAwayFromZero(5.1), 6)\n * assert.equal(roundingAwayFromZero(-5.1), -6)\n * ```\n */\nfunction roundingAwayFromZero(value: number): number {\n return value > 0 ? Math.ceil(value) : Math.floor(value);\n}\n\n/**\n * Округляем el.scrollLeft\n * https://github.com/VKCOM/VKUI/pull/2445\n */\nconst roundUpElementScrollLeft = (el: HTMLElement) => roundingAwayFromZero(el.scrollLeft);\n\n/**\n * Код анимации скрола, на основе полифила: https://github.com/iamdustan/smoothscroll\n * Константа взята из полифила (468), на дизайн-ревью уточнили до 250\n * @var {number} SCROLL_ONE_FRAME_TIME время анимации скролла\n */\nconst SCROLL_ONE_FRAME_TIME = 250;\n\nfunction doScroll({\n scrollElement,\n getScrollPosition,\n animationQueue,\n onScrollToEndBorder,\n onScrollEnd,\n onScrollStart,\n initialScrollWidth,\n scrollAnimationDuration = SCROLL_ONE_FRAME_TIME,\n textDirection,\n}: ScrollContext) {\n if (!scrollElement || !getScrollPosition) {\n return;\n }\n\n /**\n * крайнее значение сдвига\n */\n const extremeScrollLeft =\n (textDirection === 'ltr' ? 1 : -1) * (initialScrollWidth - scrollElement.offsetWidth);\n\n let startScrollLeft = roundUpElementScrollLeft(scrollElement);\n let endScrollLeft = getScrollPosition(startScrollLeft);\n\n onScrollStart();\n\n /**\n * Если окончание прокрутки вышло за ноль\n */\n if (startScrollLeft * endScrollLeft < 0) {\n endScrollLeft = 0;\n }\n\n if (Math.abs(endScrollLeft) >= Math.abs(extremeScrollLeft)) {\n onScrollToEndBorder();\n endScrollLeft = extremeScrollLeft;\n }\n\n const startTime = now();\n\n (function scroll() {\n if (!scrollElement) {\n onScrollEnd();\n return;\n }\n\n const time = now();\n const elapsed = Math.min((time - startTime) / scrollAnimationDuration, 1);\n\n const value = easeInOutSine(elapsed);\n\n const currentScrollLeft = startScrollLeft + (endScrollLeft - startScrollLeft) * value;\n scrollElement.scrollLeft = roundingAwayFromZero(currentScrollLeft);\n\n const scrollEnd =\n textDirection === 'ltr' ? Math.max(0, endScrollLeft) : Math.min(0, endScrollLeft);\n if (roundUpElementScrollLeft(scrollElement) !== scrollEnd && elapsed !== 1) {\n requestAnimationFrame(scroll);\n return;\n }\n\n onScrollEnd();\n animationQueue.shift();\n if (animationQueue.length > 0) {\n animationQueue[0]();\n }\n })();\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/HorizontalScroll\n */\nexport const HorizontalScroll = ({\n children,\n getScrollToLeft,\n getScrollToRight,\n showArrows = true,\n arrowSize = 'l',\n arrowOffsetY,\n scrollAnimationDuration = SCROLL_ONE_FRAME_TIME,\n getRef,\n scrollOnAnyWheel = false,\n inline = false,\n ...restProps\n}: HorizontalScrollProps): React.ReactNode => {\n const [canScrollLeft, setCanScrollLeft] = React.useState(false);\n const [canScrollRight, setCanScrollRight] = React.useState(false);\n const [directionRef, textDirection = 'ltr'] = useDirection<HTMLDivElement>();\n\n const setCanScrollStart = textDirection === 'ltr' ? setCanScrollLeft : setCanScrollRight;\n const setCanScrollEnd = textDirection === 'ltr' ? setCanScrollRight : setCanScrollLeft;\n\n const isCustomScrollingRef = React.useRef(false);\n\n const scrollerRef = useExternRef(getRef, directionRef);\n\n const animationQueue = React.useRef<VoidFunction[]>([]);\n\n const hasPointer = useAdaptivityHasPointer();\n\n const scrollTo = React.useCallback(\n (getScrollPosition: ScrollPositionHandler) => {\n const scrollElement = scrollerRef.current;\n\n animationQueue.current.push(() =>\n doScroll({\n scrollElement,\n getScrollPosition,\n animationQueue: animationQueue.current,\n onScrollToEndBorder: () => setCanScrollEnd(false),\n onScrollEnd: () => (isCustomScrollingRef.current = false),\n onScrollStart: () => (isCustomScrollingRef.current = true),\n initialScrollWidth: scrollElement?.firstElementChild?.scrollWidth || 0,\n scrollAnimationDuration,\n textDirection,\n }),\n );\n if (animationQueue.current.length === 1) {\n animationQueue.current[0]();\n }\n },\n [scrollerRef, scrollAnimationDuration, textDirection, setCanScrollEnd],\n );\n\n const scrollToLeft = React.useCallback(() => {\n const getScrollPosition =\n getScrollToLeft ?? ((i: number) => i - scrollerRef.current!.offsetWidth);\n scrollTo(getScrollPosition);\n }, [getScrollToLeft, scrollTo, scrollerRef]);\n\n const scrollToRight = React.useCallback(() => {\n const getScrollPosition =\n getScrollToRight ?? ((i: number) => i + scrollerRef.current!.offsetWidth);\n scrollTo(getScrollPosition);\n }, [getScrollToRight, scrollTo, scrollerRef]);\n\n const calculateArrowsVisibility = React.useCallback(() => {\n if (showArrows && hasPointer && scrollerRef.current && !isCustomScrollingRef.current) {\n const scrollElement = scrollerRef.current;\n\n setCanScrollStart(scrollElement.scrollLeft !== 0);\n setCanScrollEnd(\n Math.abs(roundUpElementScrollLeft(scrollElement)) + scrollElement.offsetWidth <\n scrollElement.scrollWidth,\n );\n }\n }, [showArrows, hasPointer, scrollerRef, setCanScrollStart, setCanScrollEnd]);\n\n const scrollEvent = useEventListener('scroll', calculateArrowsVisibility);\n React.useEffect(\n function addScrollerRefToScrollEvent() {\n if (!scrollerRef.current) {\n return noop;\n }\n\n scrollEvent.add(scrollerRef.current);\n return scrollEvent.remove;\n },\n [scrollEvent, scrollerRef],\n );\n\n React.useEffect(calculateArrowsVisibility, [calculateArrowsVisibility, children]);\n\n /**\n * Прокрутка с помощью любого колеса мыши\n */\n const onwheel = React.useCallback(\n (e: WheelEvent) => {\n scrollerRef.current!.scrollBy({ left: e.deltaX + e.deltaY, behavior: 'auto' });\n e.preventDefault();\n },\n [scrollerRef],\n );\n\n const wheelEvent = useEventListener('wheel', onwheel);\n React.useEffect(\n function addScrollerRefToWheelEvent() {\n if (!scrollerRef.current || !scrollOnAnyWheel) {\n return noop;\n }\n\n wheelEvent.add(scrollerRef.current);\n\n return wheelEvent.remove;\n },\n [wheelEvent, scrollerRef, scrollOnAnyWheel],\n );\n\n return (\n <RootComponent\n {...restProps}\n baseClassName={classNames(\n styles['HorizontalScroll'],\n 'vkuiInternalHorizontalScroll',\n showArrows === 'always' && styles['HorizontalScroll--withConstArrows'],\n inline && styles['HorizontalScroll--inline'],\n )}\n onMouseEnter={calculateArrowsVisibility}\n >\n {showArrows && (hasPointer || hasPointer === undefined) && canScrollLeft && (\n <ScrollArrow\n data-testid={process.env.NODE_ENV === 'test' ? 'ScrollArrow' : undefined}\n size={arrowSize}\n offsetY={arrowOffsetY}\n direction=\"left\"\n aria-hidden\n tabIndex={-1}\n className={classNames(\n styles['HorizontalScroll__arrow'],\n styles['HorizontalScroll__arrowLeft'],\n )}\n onClick={scrollToLeft}\n />\n )}\n {showArrows && (hasPointer || hasPointer === undefined) && canScrollRight && (\n <ScrollArrow\n data-testid={process.env.NODE_ENV === 'test' ? 'ScrollArrow' : undefined}\n size={arrowSize}\n offsetY={arrowOffsetY}\n direction=\"right\"\n aria-hidden\n tabIndex={-1}\n className={classNames(\n styles['HorizontalScroll__arrow'],\n styles['HorizontalScroll__arrowRight'],\n )}\n onClick={scrollToRight}\n />\n )}\n <div className={styles['HorizontalScroll__in']} ref={scrollerRef}>\n <div className={styles['HorizontalScroll__in-wrapper']}>{children}</div>\n </div>\n </RootComponent>\n );\n};\n"],"names":["React","classNames","noop","useAdaptivityHasPointer","useDirection","useEventListener","useExternRef","easeInOutSine","RootComponent","ScrollArrow","styles","now","performance","Date","roundingAwayFromZero","value","Math","ceil","floor","roundUpElementScrollLeft","el","scrollLeft","SCROLL_ONE_FRAME_TIME","doScroll","scrollElement","getScrollPosition","animationQueue","onScrollToEndBorder","onScrollEnd","onScrollStart","initialScrollWidth","scrollAnimationDuration","textDirection","extremeScrollLeft","offsetWidth","startScrollLeft","endScrollLeft","abs","startTime","scroll","time","elapsed","min","currentScrollLeft","scrollEnd","max","requestAnimationFrame","shift","length","HorizontalScroll","children","getScrollToLeft","getScrollToRight","showArrows","arrowSize","arrowOffsetY","getRef","scrollOnAnyWheel","inline","restProps","canScrollLeft","setCanScrollLeft","useState","canScrollRight","setCanScrollRight","directionRef","setCanScrollStart","setCanScrollEnd","isCustomScrollingRef","useRef","scrollerRef","hasPointer","scrollTo","useCallback","current","push","firstElementChild","scrollWidth","scrollToLeft","i","scrollToRight","calculateArrowsVisibility","scrollEvent","useEffect","addScrollerRefToScrollEvent","add","remove","onwheel","e","scrollBy","left","deltaX","deltaY","behavior","preventDefault","wheelEvent","addScrollerRefToWheelEvent","baseClassName","onMouseEnter","undefined","data-testid","process","env","NODE_ENV","size","offsetY","direction","aria-hidden","tabIndex","className","onClick","div","ref"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/components/HorizontalScroll/HorizontalScroll.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, noop } from '@vkontakte/vkjs';\nimport { useAdaptivityHasPointer } from '../../hooks/useAdaptivityHasPointer';\nimport { useDirection } from '../../hooks/useDirection';\nimport { useEventListener } from '../../hooks/useEventListener';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { easeInOutSine } from '../../lib/fx';\nimport { HasRef, HTMLAttributesWithRootRef } from '../../types';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { ScrollArrow } from '../ScrollArrow/ScrollArrow';\nimport styles from './HorizontalScroll.module.css';\n\ninterface ScrollContext {\n scrollElement: HTMLElement | null;\n scrollAnimationDuration: number;\n animationQueue: VoidFunction[];\n getScrollPosition: (currentPosition: number) => number;\n onScrollToEndBorder: VoidFunction;\n onScrollEnd: VoidFunction;\n onScrollStart: VoidFunction;\n /**\n * Начальная ширина прокрутки.\n * В некоторых случаях может отличаться от текущей ширины прокрутки из-за transforms: translate\n */\n initialScrollWidth: number;\n textDirection: 'ltr' | 'rtl';\n}\n\nexport type ScrollPositionHandler = (currentPosition: number) => number;\n\nexport interface HorizontalScrollProps\n extends HTMLAttributesWithRootRef<HTMLDivElement>,\n HasRef<HTMLDivElement> {\n /**\n * Функция для расчета величины прокрутки при клике на левую стрелку.\n */\n getScrollToLeft?: ScrollPositionHandler;\n /**\n * Функция для расчета величины прокрутки при клике на правую стрелку.\n */\n getScrollToRight?: ScrollPositionHandler;\n arrowSize?: 'm' | 'l';\n /**\n * Смещает иконки кнопок навигации по вертикали.\n */\n arrowOffsetY?: number | string;\n showArrows?: boolean | 'always';\n scrollAnimationDuration?: number;\n /**\n * Добавляет возможность прокручивать контент на любое колесо мыши.\n * По умолчанию прокручивается как любой горизонтальный контент через shift.\n */\n scrollOnAnyWheel?: boolean;\n /**\n * Задает потомкам инлайновое положение (горизонально)\n *\n * TODO [>=7]: Сделать по умолчанию `true` (или удалить, применяя стили всегда)\n */\n inline?: boolean;\n}\n\n/**\n * timing method\n */\nfunction now() {\n return performance && performance.now ? performance.now() : Date.now();\n}\n\n/**\n * Округление к большему по модулю\n *\n * ## Пример\n *\n * ```ts\n * import { strict as assert } from 'node:assert';\n *\n * assert.equal(roundingAwayFromZero(5.1), 6)\n * assert.equal(roundingAwayFromZero(-5.1), -6)\n * ```\n */\nfunction roundingAwayFromZero(value: number): number {\n return value > 0 ? Math.ceil(value) : Math.floor(value);\n}\n\n/**\n * Округляем el.scrollLeft\n * https://github.com/VKCOM/VKUI/pull/2445\n */\nconst roundUpElementScrollLeft = (el: HTMLElement) => roundingAwayFromZero(el.scrollLeft);\n\n/**\n * Код анимации скрола, на основе полифила: https://github.com/iamdustan/smoothscroll\n * Константа взята из полифила (468), на дизайн-ревью уточнили до 250\n * @var {number} SCROLL_ONE_FRAME_TIME время анимации скролла\n */\nconst SCROLL_ONE_FRAME_TIME = 250;\n\nfunction doScroll({\n scrollElement,\n getScrollPosition,\n animationQueue,\n onScrollToEndBorder,\n onScrollEnd,\n onScrollStart,\n initialScrollWidth,\n scrollAnimationDuration,\n textDirection,\n}: ScrollContext) {\n if (!scrollElement || !getScrollPosition) {\n return;\n }\n\n /**\n * крайнее значение сдвига\n */\n const extremeScrollLeft =\n (textDirection === 'ltr' ? 1 : -1) * (initialScrollWidth - scrollElement.offsetWidth);\n\n let startScrollLeft = roundUpElementScrollLeft(scrollElement);\n let endScrollLeft = getScrollPosition(startScrollLeft);\n\n onScrollStart();\n\n /**\n * Если окончание прокрутки вышло за ноль\n */\n if (startScrollLeft * endScrollLeft < 0) {\n endScrollLeft = 0;\n }\n\n if (Math.abs(endScrollLeft) >= Math.abs(extremeScrollLeft)) {\n onScrollToEndBorder();\n endScrollLeft = extremeScrollLeft;\n }\n\n const startTime = now();\n\n (function scroll() {\n const time = now();\n const elapsed = Math.min((time - startTime) / scrollAnimationDuration, 1);\n\n const value = easeInOutSine(elapsed);\n\n const currentScrollLeft = startScrollLeft + (endScrollLeft - startScrollLeft) * value;\n scrollElement.scrollLeft = roundingAwayFromZero(currentScrollLeft);\n\n const scrollEnd =\n textDirection === 'ltr' ? Math.max(0, endScrollLeft) : Math.min(0, endScrollLeft);\n if (roundUpElementScrollLeft(scrollElement) !== scrollEnd && elapsed !== 1) {\n requestAnimationFrame(scroll);\n return;\n }\n\n onScrollEnd();\n animationQueue.shift();\n if (animationQueue.length > 0) {\n animationQueue[0]();\n }\n })();\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/HorizontalScroll\n */\nexport const HorizontalScroll = ({\n children,\n getScrollToLeft,\n getScrollToRight,\n showArrows = true,\n arrowSize = 'l',\n arrowOffsetY,\n scrollAnimationDuration = SCROLL_ONE_FRAME_TIME,\n getRef,\n scrollOnAnyWheel = false,\n inline = false,\n ...restProps\n}: HorizontalScrollProps): React.ReactNode => {\n const [canScrollLeft, setCanScrollLeft] = React.useState(false);\n const [canScrollRight, setCanScrollRight] = React.useState(false);\n const [directionRef, textDirection] = useDirection<HTMLDivElement>();\n const direction = textDirection || 'ltr';\n const setCanScrollStart = direction === 'ltr' ? setCanScrollLeft : setCanScrollRight;\n const setCanScrollEnd = direction === 'ltr' ? setCanScrollRight : setCanScrollLeft;\n\n const isCustomScrollingRef = React.useRef(false);\n\n const scrollerRef = useExternRef(getRef, directionRef);\n\n const animationQueue = React.useRef<VoidFunction[]>([]);\n\n const hasPointer = useAdaptivityHasPointer();\n\n const scrollTo = React.useCallback(\n (getScrollPosition: ScrollPositionHandler) => {\n const scrollElement = scrollerRef.current;\n\n animationQueue.current.push(() =>\n doScroll({\n scrollElement,\n getScrollPosition,\n animationQueue: animationQueue.current,\n onScrollToEndBorder: () => setCanScrollEnd(false),\n onScrollEnd: () => (isCustomScrollingRef.current = false),\n onScrollStart: () => (isCustomScrollingRef.current = true),\n initialScrollWidth: scrollElement?.firstElementChild?.scrollWidth || 0,\n scrollAnimationDuration,\n textDirection: direction,\n }),\n );\n if (animationQueue.current.length === 1) {\n animationQueue.current[0]();\n }\n },\n [scrollerRef, scrollAnimationDuration, direction, setCanScrollEnd],\n );\n\n const scrollToLeft = React.useCallback(() => {\n const getScrollPosition =\n getScrollToLeft ?? ((i: number) => i - scrollerRef.current!.offsetWidth);\n scrollTo(getScrollPosition);\n }, [getScrollToLeft, scrollTo, scrollerRef]);\n\n const scrollToRight = React.useCallback(() => {\n const getScrollPosition =\n getScrollToRight ?? ((i: number) => i + scrollerRef.current!.offsetWidth);\n scrollTo(getScrollPosition);\n }, [getScrollToRight, scrollTo, scrollerRef]);\n\n const calculateArrowsVisibility = React.useCallback(() => {\n if (showArrows && hasPointer && scrollerRef.current && !isCustomScrollingRef.current) {\n const scrollElement = scrollerRef.current;\n\n setCanScrollStart(scrollElement.scrollLeft !== 0);\n setCanScrollEnd(\n Math.abs(roundUpElementScrollLeft(scrollElement)) + scrollElement.offsetWidth <\n scrollElement.scrollWidth,\n );\n }\n }, [showArrows, hasPointer, scrollerRef, setCanScrollStart, setCanScrollEnd]);\n\n const scrollEvent = useEventListener('scroll', calculateArrowsVisibility);\n React.useEffect(\n function addScrollerRefToScrollEvent() {\n if (!scrollerRef.current) {\n return noop;\n }\n\n scrollEvent.add(scrollerRef.current);\n return scrollEvent.remove;\n },\n [scrollEvent, scrollerRef],\n );\n\n React.useEffect(calculateArrowsVisibility, [calculateArrowsVisibility, children]);\n\n /**\n * Прокрутка с помощью любого колеса мыши\n */\n const onwheel = React.useCallback(\n (e: WheelEvent) => {\n scrollerRef.current!.scrollBy({ left: e.deltaX + e.deltaY, behavior: 'auto' });\n e.preventDefault();\n },\n [scrollerRef],\n );\n\n const wheelEvent = useEventListener('wheel', onwheel);\n React.useEffect(\n function addScrollerRefToWheelEvent() {\n if (!scrollerRef.current || !scrollOnAnyWheel) {\n return noop;\n }\n\n wheelEvent.add(scrollerRef.current);\n\n return wheelEvent.remove;\n },\n [wheelEvent, scrollerRef, scrollOnAnyWheel],\n );\n\n return (\n <RootComponent\n {...restProps}\n baseClassName={classNames(\n styles['HorizontalScroll'],\n 'vkuiInternalHorizontalScroll',\n showArrows === 'always' && styles['HorizontalScroll--withConstArrows'],\n inline && styles['HorizontalScroll--inline'],\n )}\n onMouseEnter={calculateArrowsVisibility}\n >\n {showArrows && (hasPointer || hasPointer === undefined) && canScrollLeft && (\n <ScrollArrow\n data-testid={process.env.NODE_ENV === 'test' ? 'ScrollArrow' : undefined}\n size={arrowSize}\n offsetY={arrowOffsetY}\n direction=\"left\"\n aria-hidden\n tabIndex={-1}\n className={classNames(\n styles['HorizontalScroll__arrow'],\n styles['HorizontalScroll__arrowLeft'],\n )}\n onClick={scrollToLeft}\n />\n )}\n {showArrows && (hasPointer || hasPointer === undefined) && canScrollRight && (\n <ScrollArrow\n data-testid={process.env.NODE_ENV === 'test' ? 'ScrollArrow' : undefined}\n size={arrowSize}\n offsetY={arrowOffsetY}\n direction=\"right\"\n aria-hidden\n tabIndex={-1}\n className={classNames(\n styles['HorizontalScroll__arrow'],\n styles['HorizontalScroll__arrowRight'],\n )}\n onClick={scrollToRight}\n />\n )}\n <div className={styles['HorizontalScroll__in']} ref={scrollerRef}>\n <div className={styles['HorizontalScroll__in-wrapper']}>{children}</div>\n </div>\n </RootComponent>\n );\n};\n"],"names":["React","classNames","noop","useAdaptivityHasPointer","useDirection","useEventListener","useExternRef","easeInOutSine","RootComponent","ScrollArrow","styles","now","performance","Date","roundingAwayFromZero","value","Math","ceil","floor","roundUpElementScrollLeft","el","scrollLeft","SCROLL_ONE_FRAME_TIME","doScroll","scrollElement","getScrollPosition","animationQueue","onScrollToEndBorder","onScrollEnd","onScrollStart","initialScrollWidth","scrollAnimationDuration","textDirection","extremeScrollLeft","offsetWidth","startScrollLeft","endScrollLeft","abs","startTime","scroll","time","elapsed","min","currentScrollLeft","scrollEnd","max","requestAnimationFrame","shift","length","HorizontalScroll","children","getScrollToLeft","getScrollToRight","showArrows","arrowSize","arrowOffsetY","getRef","scrollOnAnyWheel","inline","restProps","canScrollLeft","setCanScrollLeft","useState","canScrollRight","setCanScrollRight","directionRef","direction","setCanScrollStart","setCanScrollEnd","isCustomScrollingRef","useRef","scrollerRef","hasPointer","scrollTo","useCallback","current","push","firstElementChild","scrollWidth","scrollToLeft","i","scrollToRight","calculateArrowsVisibility","scrollEvent","useEffect","addScrollerRefToScrollEvent","add","remove","onwheel","e","scrollBy","left","deltaX","deltaY","behavior","preventDefault","wheelEvent","addScrollerRefToWheelEvent","baseClassName","onMouseEnter","undefined","data-testid","process","env","NODE_ENV","size","offsetY","aria-hidden","tabIndex","className","onClick","div","ref"],"mappings":"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"}
@@ -2,7 +2,6 @@ import * as React from 'react';
2
2
  import { ImageBase, type ImageBaseOverlayProps, type ImageBaseProps } from '../ImageBase/ImageBase';
3
3
  import { ImageBadge, type ImageBadgeProps } from './ImageBadge/ImageBadge';
4
4
  export type { ImageBadgeProps, ImageBaseOverlayProps as ImageOverlayProps };
5
- export declare const IMAGE_DEFAULT_SIZE = 48;
6
5
  export interface ImageProps extends Omit<ImageBaseProps, 'badge'> {
7
6
  /**
8
7
  * Размер закругления.
@@ -1 +1 @@
1
- {"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../../../../src/components/Image/Image.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,SAAS,EAAE,KAAK,qBAAqB,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACpG,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG3E,YAAY,EAAE,eAAe,EAAE,qBAAqB,IAAI,iBAAiB,EAAE,CAAC;AAE5E,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC;IAC/D;;OAEG;IACH,YAAY,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC/B;;OAEG;IACH,sBAAsB,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACzC;;OAEG;IACH,oBAAoB,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACvC;;OAEG;IACH,oBAAoB,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACvC;;OAEG;IACH,kBAAkB,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;CACtC;AAqED;;GAEG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG;IACzC,KAAK,EAAE,OAAO,UAAU,CAAC;IACzB,OAAO,EAAE,OAAO,SAAS,CAAC,OAAO,CAAC;CA2DnC,CAAC"}
1
+ {"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../../../../src/components/Image/Image.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,SAAS,EAAE,KAAK,qBAAqB,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACpG,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG3E,YAAY,EAAE,eAAe,EAAE,qBAAqB,IAAI,iBAAiB,EAAE,CAAC;AAI5E,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC;IAC/D;;OAEG;IACH,YAAY,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC/B;;OAEG;IACH,sBAAsB,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACzC;;OAEG;IACH,oBAAoB,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACvC;;OAEG;IACH,oBAAoB,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACvC;;OAEG;IACH,kBAAkB,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;CACtC;AAqED;;GAEG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG;IACzC,KAAK,EAAE,OAAO,UAAU,CAAC;IACzB,OAAO,EAAE,OAAO,SAAS,CAAC,OAAO,CAAC;CA2DnC,CAAC"}
@@ -4,7 +4,7 @@ import { classNames } from '@vkontakte/vkjs';
4
4
  import { ImageBase } from '../ImageBase/ImageBase';
5
5
  import { ImageBadge } from './ImageBadge/ImageBadge';
6
6
  import styles from './Image.module.css';
7
- export const IMAGE_DEFAULT_SIZE = 48;
7
+ const IMAGE_DEFAULT_SIZE = 48;
8
8
  const getBorderRadiusBySize = (size, borderRadius)=>{
9
9
  switch(borderRadius){
10
10
  case 's':
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Image/Image.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { ImageBase, type ImageBaseOverlayProps, type ImageBaseProps } from '../ImageBase/ImageBase';\nimport { ImageBadge, type ImageBadgeProps } from './ImageBadge/ImageBadge';\nimport styles from './Image.module.css';\n\nexport type { ImageBadgeProps, ImageBaseOverlayProps as ImageOverlayProps };\n\nexport const IMAGE_DEFAULT_SIZE = 48;\n\nexport interface ImageProps extends Omit<ImageBaseProps, 'badge'> {\n /**\n * Размер закругления.\n */\n borderRadius?: 's' | 'l' | 'm';\n /**\n * Размер закругления угла между сторонами начала блока и строки\n */\n borderStartStartRadius?: 's' | 'l' | 'm';\n /**\n * Размер закругления угла между стороной начала блока и стороной конца строки\n */\n borderStartEndRadius?: 's' | 'l' | 'm';\n /**\n * Размер закругления угла между стороной конца блока и стороной начала строки\n */\n borderEndStartRadius?: 's' | 'l' | 'm';\n /**\n * Размер закругления угла между сторонами конца блока и строки\n */\n borderEndEndRadius?: 's' | 'l' | 'm';\n}\n\nconst getBorderRadiusBySize = (\n size: Exclude<ImageBaseProps['size'], undefined>,\n borderRadius: Exclude<ImageProps['borderRadius'], undefined>,\n) => {\n switch (borderRadius) {\n case 's': {\n if (size <= 32) {\n return 2;\n }\n if (size <= 56) {\n return 3;\n }\n return 4;\n }\n case 'm': {\n if (size <= 32) {\n return 3;\n }\n if (size <= 48) {\n return 4;\n }\n if (size <= 72) {\n return 6;\n }\n if (size <= 80) {\n return 8;\n }\n return 10;\n }\n case 'l': {\n if (size <= 16) {\n return 4;\n }\n if (size <= 20) {\n return 5;\n }\n if (size <= 32) {\n return 6;\n }\n if (size <= 40) {\n return 8;\n }\n if (size <= 48) {\n return 10;\n }\n if (size <= 56) {\n return 12;\n }\n if (size <= 64) {\n return 14;\n }\n return 16;\n }\n }\n};\n\nconst getBorderRadiusBySizeInPx = (\n size: Exclude<ImageBaseProps['size'], undefined>,\n borderRadius: ImageProps['borderRadius'],\n) => {\n if (!borderRadius) {\n return undefined;\n }\n\n return `${getBorderRadiusBySize(size, borderRadius)}px`;\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Image\n */\nexport const Image: React.FC<ImageProps> & {\n Badge: typeof ImageBadge;\n Overlay: typeof ImageBase.Overlay;\n} = ({\n size = IMAGE_DEFAULT_SIZE,\n borderRadius = 'm',\n borderStartStartRadius,\n borderStartEndRadius,\n borderEndStartRadius,\n borderEndEndRadius,\n style,\n className,\n objectFit = 'cover',\n ...restProps\n}: ImageProps) => {\n const borderStyles = React.useMemo(\n () => ({\n '--vkui_internal--Image_border_radius': getBorderRadiusBySizeInPx(size, borderRadius),\n '--vkui_internal--Image_border_start_start_radius': getBorderRadiusBySizeInPx(\n size,\n borderStartStartRadius,\n ),\n '--vkui_internal--Image_border_start_end_radius': getBorderRadiusBySizeInPx(\n size,\n borderStartEndRadius,\n ),\n '--vkui_internal--Image_border_end_start_radius': getBorderRadiusBySizeInPx(\n size,\n borderEndStartRadius,\n ),\n '--vkui_internal--Image_border_end_end_radius': getBorderRadiusBySizeInPx(\n size,\n borderEndEndRadius,\n ),\n }),\n [\n borderRadius,\n borderStartStartRadius,\n borderStartEndRadius,\n borderEndStartRadius,\n borderEndEndRadius,\n size,\n ],\n );\n\n return (\n <ImageBase\n {...restProps}\n objectFit={objectFit}\n size={size}\n style={{ ...borderStyles, ...style }}\n className={classNames(\n className,\n styles['Image'],\n borderStartStartRadius && styles['Image--borderStartStartRadius'],\n borderStartEndRadius && styles['Image--borderStartEndRadius'],\n borderEndStartRadius && styles['Image--borderEndStartRadius'],\n borderEndEndRadius && styles['Image--borderEndEndRadius'],\n )}\n />\n );\n};\n\nImage.displayName = 'Image';\n\nImage.Badge = ImageBadge;\nImage.Badge.displayName = 'Image.Badge';\n\nImage.Overlay = ImageBase.Overlay;\nImage.Overlay.displayName = 'Image.Overlay';\n"],"names":["React","classNames","ImageBase","ImageBadge","styles","IMAGE_DEFAULT_SIZE","getBorderRadiusBySize","size","borderRadius","getBorderRadiusBySizeInPx","undefined","Image","borderStartStartRadius","borderStartEndRadius","borderEndStartRadius","borderEndEndRadius","style","className","objectFit","restProps","borderStyles","useMemo","displayName","Badge","Overlay"],"mappings":";AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,SAAS,QAAyD,yBAAyB;AACpG,SAASC,UAAU,QAA8B,0BAA0B;AAC3E,OAAOC,YAAY,qBAAqB;AAIxC,OAAO,MAAMC,qBAAqB,GAAG;AAyBrC,MAAMC,wBAAwB,CAC5BC,MACAC;IAEA,OAAQA;QACN,KAAK;YAAK;gBACR,IAAID,QAAQ,IAAI;oBACd,OAAO;gBACT;gBACA,IAAIA,QAAQ,IAAI;oBACd,OAAO;gBACT;gBACA,OAAO;YACT;QACA,KAAK;YAAK;gBACR,IAAIA,QAAQ,IAAI;oBACd,OAAO;gBACT;gBACA,IAAIA,QAAQ,IAAI;oBACd,OAAO;gBACT;gBACA,IAAIA,QAAQ,IAAI;oBACd,OAAO;gBACT;gBACA,IAAIA,QAAQ,IAAI;oBACd,OAAO;gBACT;gBACA,OAAO;YACT;QACA,KAAK;YAAK;gBACR,IAAIA,QAAQ,IAAI;oBACd,OAAO;gBACT;gBACA,IAAIA,QAAQ,IAAI;oBACd,OAAO;gBACT;gBACA,IAAIA,QAAQ,IAAI;oBACd,OAAO;gBACT;gBACA,IAAIA,QAAQ,IAAI;oBACd,OAAO;gBACT;gBACA,IAAIA,QAAQ,IAAI;oBACd,OAAO;gBACT;gBACA,IAAIA,QAAQ,IAAI;oBACd,OAAO;gBACT;gBACA,IAAIA,QAAQ,IAAI;oBACd,OAAO;gBACT;gBACA,OAAO;YACT;IACF;AACF;AAEA,MAAME,4BAA4B,CAChCF,MACAC;IAEA,IAAI,CAACA,cAAc;QACjB,OAAOE;IACT;IAEA,OAAO,CAAC,EAAEJ,sBAAsBC,MAAMC,cAAc,EAAE,CAAC;AACzD;AAEA;;CAEC,GACD,OAAO,MAAMG,QAGT,CAAC,EACHJ,OAAOF,kBAAkB,EACzBG,eAAe,GAAG,EAClBI,sBAAsB,EACtBC,oBAAoB,EACpBC,oBAAoB,EACpBC,kBAAkB,EAClBC,KAAK,EACLC,SAAS,EACTC,YAAY,OAAO,EACnB,GAAGC,WACQ;IACX,MAAMC,eAAepB,MAAMqB,OAAO,CAChC,IAAO,CAAA;YACL,wCAAwCZ,0BAA0BF,MAAMC;YACxE,oDAAoDC,0BAClDF,MACAK;YAEF,kDAAkDH,0BAChDF,MACAM;YAEF,kDAAkDJ,0BAChDF,MACAO;YAEF,gDAAgDL,0BAC9CF,MACAQ;QAEJ,CAAA,GACA;QACEP;QACAI;QACAC;QACAC;QACAC;QACAR;KACD;IAGH,qBACE,KAACL;QACE,GAAGiB,SAAS;QACbD,WAAWA;QACXX,MAAMA;QACNS,OAAO;YAAE,GAAGI,YAAY;YAAE,GAAGJ,KAAK;QAAC;QACnCC,WAAWhB,WACTgB,WACAb,MAAM,CAAC,QAAQ,EACfQ,0BAA0BR,MAAM,CAAC,gCAAgC,EACjES,wBAAwBT,MAAM,CAAC,8BAA8B,EAC7DU,wBAAwBV,MAAM,CAAC,8BAA8B,EAC7DW,sBAAsBX,MAAM,CAAC,4BAA4B;;AAIjE,EAAE;AAEFO,MAAMW,WAAW,GAAG;AAEpBX,MAAMY,KAAK,GAAGpB;AACdQ,MAAMY,KAAK,CAACD,WAAW,GAAG;AAE1BX,MAAMa,OAAO,GAAGtB,UAAUsB,OAAO;AACjCb,MAAMa,OAAO,CAACF,WAAW,GAAG"}
1
+ {"version":3,"sources":["../../../../src/components/Image/Image.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { ImageBase, type ImageBaseOverlayProps, type ImageBaseProps } from '../ImageBase/ImageBase';\nimport { ImageBadge, type ImageBadgeProps } from './ImageBadge/ImageBadge';\nimport styles from './Image.module.css';\n\nexport type { ImageBadgeProps, ImageBaseOverlayProps as ImageOverlayProps };\n\nconst IMAGE_DEFAULT_SIZE = 48;\n\nexport interface ImageProps extends Omit<ImageBaseProps, 'badge'> {\n /**\n * Размер закругления.\n */\n borderRadius?: 's' | 'l' | 'm';\n /**\n * Размер закругления угла между сторонами начала блока и строки\n */\n borderStartStartRadius?: 's' | 'l' | 'm';\n /**\n * Размер закругления угла между стороной начала блока и стороной конца строки\n */\n borderStartEndRadius?: 's' | 'l' | 'm';\n /**\n * Размер закругления угла между стороной конца блока и стороной начала строки\n */\n borderEndStartRadius?: 's' | 'l' | 'm';\n /**\n * Размер закругления угла между сторонами конца блока и строки\n */\n borderEndEndRadius?: 's' | 'l' | 'm';\n}\n\nconst getBorderRadiusBySize = (\n size: Exclude<ImageBaseProps['size'], undefined>,\n borderRadius: Exclude<ImageProps['borderRadius'], undefined>,\n) => {\n switch (borderRadius) {\n case 's': {\n if (size <= 32) {\n return 2;\n }\n if (size <= 56) {\n return 3;\n }\n return 4;\n }\n case 'm': {\n if (size <= 32) {\n return 3;\n }\n if (size <= 48) {\n return 4;\n }\n if (size <= 72) {\n return 6;\n }\n if (size <= 80) {\n return 8;\n }\n return 10;\n }\n case 'l': {\n if (size <= 16) {\n return 4;\n }\n if (size <= 20) {\n return 5;\n }\n if (size <= 32) {\n return 6;\n }\n if (size <= 40) {\n return 8;\n }\n if (size <= 48) {\n return 10;\n }\n if (size <= 56) {\n return 12;\n }\n if (size <= 64) {\n return 14;\n }\n return 16;\n }\n }\n};\n\nconst getBorderRadiusBySizeInPx = (\n size: Exclude<ImageBaseProps['size'], undefined>,\n borderRadius: ImageProps['borderRadius'],\n) => {\n if (!borderRadius) {\n return undefined;\n }\n\n return `${getBorderRadiusBySize(size, borderRadius)}px`;\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Image\n */\nexport const Image: React.FC<ImageProps> & {\n Badge: typeof ImageBadge;\n Overlay: typeof ImageBase.Overlay;\n} = ({\n size = IMAGE_DEFAULT_SIZE,\n borderRadius = 'm',\n borderStartStartRadius,\n borderStartEndRadius,\n borderEndStartRadius,\n borderEndEndRadius,\n style,\n className,\n objectFit = 'cover',\n ...restProps\n}: ImageProps) => {\n const borderStyles = React.useMemo(\n () => ({\n '--vkui_internal--Image_border_radius': getBorderRadiusBySizeInPx(size, borderRadius),\n '--vkui_internal--Image_border_start_start_radius': getBorderRadiusBySizeInPx(\n size,\n borderStartStartRadius,\n ),\n '--vkui_internal--Image_border_start_end_radius': getBorderRadiusBySizeInPx(\n size,\n borderStartEndRadius,\n ),\n '--vkui_internal--Image_border_end_start_radius': getBorderRadiusBySizeInPx(\n size,\n borderEndStartRadius,\n ),\n '--vkui_internal--Image_border_end_end_radius': getBorderRadiusBySizeInPx(\n size,\n borderEndEndRadius,\n ),\n }),\n [\n borderRadius,\n borderStartStartRadius,\n borderStartEndRadius,\n borderEndStartRadius,\n borderEndEndRadius,\n size,\n ],\n );\n\n return (\n <ImageBase\n {...restProps}\n objectFit={objectFit}\n size={size}\n style={{ ...borderStyles, ...style }}\n className={classNames(\n className,\n styles['Image'],\n borderStartStartRadius && styles['Image--borderStartStartRadius'],\n borderStartEndRadius && styles['Image--borderStartEndRadius'],\n borderEndStartRadius && styles['Image--borderEndStartRadius'],\n borderEndEndRadius && styles['Image--borderEndEndRadius'],\n )}\n />\n );\n};\n\nImage.displayName = 'Image';\n\nImage.Badge = ImageBadge;\nImage.Badge.displayName = 'Image.Badge';\n\nImage.Overlay = ImageBase.Overlay;\nImage.Overlay.displayName = 'Image.Overlay';\n"],"names":["React","classNames","ImageBase","ImageBadge","styles","IMAGE_DEFAULT_SIZE","getBorderRadiusBySize","size","borderRadius","getBorderRadiusBySizeInPx","undefined","Image","borderStartStartRadius","borderStartEndRadius","borderEndStartRadius","borderEndEndRadius","style","className","objectFit","restProps","borderStyles","useMemo","displayName","Badge","Overlay"],"mappings":";AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,SAAS,QAAyD,yBAAyB;AACpG,SAASC,UAAU,QAA8B,0BAA0B;AAC3E,OAAOC,YAAY,qBAAqB;AAIxC,MAAMC,qBAAqB;AAyB3B,MAAMC,wBAAwB,CAC5BC,MACAC;IAEA,OAAQA;QACN,KAAK;YAAK;gBACR,IAAID,QAAQ,IAAI;oBACd,OAAO;gBACT;gBACA,IAAIA,QAAQ,IAAI;oBACd,OAAO;gBACT;gBACA,OAAO;YACT;QACA,KAAK;YAAK;gBACR,IAAIA,QAAQ,IAAI;oBACd,OAAO;gBACT;gBACA,IAAIA,QAAQ,IAAI;oBACd,OAAO;gBACT;gBACA,IAAIA,QAAQ,IAAI;oBACd,OAAO;gBACT;gBACA,IAAIA,QAAQ,IAAI;oBACd,OAAO;gBACT;gBACA,OAAO;YACT;QACA,KAAK;YAAK;gBACR,IAAIA,QAAQ,IAAI;oBACd,OAAO;gBACT;gBACA,IAAIA,QAAQ,IAAI;oBACd,OAAO;gBACT;gBACA,IAAIA,QAAQ,IAAI;oBACd,OAAO;gBACT;gBACA,IAAIA,QAAQ,IAAI;oBACd,OAAO;gBACT;gBACA,IAAIA,QAAQ,IAAI;oBACd,OAAO;gBACT;gBACA,IAAIA,QAAQ,IAAI;oBACd,OAAO;gBACT;gBACA,IAAIA,QAAQ,IAAI;oBACd,OAAO;gBACT;gBACA,OAAO;YACT;IACF;AACF;AAEA,MAAME,4BAA4B,CAChCF,MACAC;IAEA,IAAI,CAACA,cAAc;QACjB,OAAOE;IACT;IAEA,OAAO,CAAC,EAAEJ,sBAAsBC,MAAMC,cAAc,EAAE,CAAC;AACzD;AAEA;;CAEC,GACD,OAAO,MAAMG,QAGT,CAAC,EACHJ,OAAOF,kBAAkB,EACzBG,eAAe,GAAG,EAClBI,sBAAsB,EACtBC,oBAAoB,EACpBC,oBAAoB,EACpBC,kBAAkB,EAClBC,KAAK,EACLC,SAAS,EACTC,YAAY,OAAO,EACnB,GAAGC,WACQ;IACX,MAAMC,eAAepB,MAAMqB,OAAO,CAChC,IAAO,CAAA;YACL,wCAAwCZ,0BAA0BF,MAAMC;YACxE,oDAAoDC,0BAClDF,MACAK;YAEF,kDAAkDH,0BAChDF,MACAM;YAEF,kDAAkDJ,0BAChDF,MACAO;YAEF,gDAAgDL,0BAC9CF,MACAQ;QAEJ,CAAA,GACA;QACEP;QACAI;QACAC;QACAC;QACAC;QACAR;KACD;IAGH,qBACE,KAACL;QACE,GAAGiB,SAAS;QACbD,WAAWA;QACXX,MAAMA;QACNS,OAAO;YAAE,GAAGI,YAAY;YAAE,GAAGJ,KAAK;QAAC;QACnCC,WAAWhB,WACTgB,WACAb,MAAM,CAAC,QAAQ,EACfQ,0BAA0BR,MAAM,CAAC,gCAAgC,EACjES,wBAAwBT,MAAM,CAAC,8BAA8B,EAC7DU,wBAAwBV,MAAM,CAAC,8BAA8B,EAC7DW,sBAAsBX,MAAM,CAAC,4BAA4B;;AAIjE,EAAE;AAEFO,MAAMW,WAAW,GAAG;AAEpBX,MAAMY,KAAK,GAAGpB;AACdQ,MAAMY,KAAK,CAACD,WAAW,GAAG;AAE1BX,MAAMa,OAAO,GAAGtB,UAAUsB,OAAO;AACjCb,MAAMa,OAAO,CAACF,WAAW,GAAG"}
@@ -51,7 +51,7 @@ export function validateFallbackIcon(imageSize, iconProp) {
51
51
  return validateIconComponentSizeByImageSize(imageSize, iconProp, getFallbackIconSizeByImageBaseSize, warnImageBase);
52
52
  }
53
53
  const mapOfExpectedSize = new Set(imageBaseSizes);
54
- const arrayOfSizes = Object.keys(mapOfExpectedSize).map((str)=>Number(str));
54
+ const arrayOfSizes = Array.from(mapOfExpectedSize).map((str)=>Number(str));
55
55
  const maxSize = arrayOfSizes.reduce((maxSize, size)=>size > maxSize ? size : maxSize, 0);
56
56
  export function validateSize(imageSize) {
57
57
  if (imageSize > maxSize || mapOfExpectedSize.has(imageSize)) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ImageBase/validators.ts"],"sourcesContent":["import { warnOnce } from '../../lib/warnOnce';\nimport {\n getBadgeIconSizeByImageBaseSize,\n getFallbackIconSizeByImageBaseSize,\n getOverlayIconSizeByImageBaseSize,\n} from './helpers';\nimport { imageBaseSizes } from './types';\n\n/**\n * Пример,\n *\n * Icon28User -> 28\n * Icon12Circle1 -> 12\n * Icon12Circle2 -> 12\n * Icon20TextHeading1Outline -> 20\n */\nfunction parseIconSizeByDisplayName(displayName: unknown): number | null {\n if (typeof displayName !== 'string') {\n return null;\n }\n\n const match = /Icon(\\d+)/.exec(displayName);\n\n return match ? Number(match[1]) : null;\n}\n\nfunction parseIconSizeByWidthProp(width: unknown): number | null {\n if (typeof width !== 'string' && typeof width !== 'number') {\n return null;\n }\n const size = Number(width);\n return size > 0 ? size : null;\n}\n\nfunction getElementDisplayName(element: JSX.Element): string | null {\n return element.type.displayName ?? null;\n}\n\nfunction getElementWidthProp(element: JSX.Element): number | string | null {\n return element.props.width ?? null;\n}\n\nfunction getIconSizeByElement(element: JSX.Element): number | null {\n const sizeByDisplayName = parseIconSizeByDisplayName(getElementDisplayName(element));\n const sizeByWidth = parseIconSizeByWidthProp(getElementWidthProp(element));\n return sizeByWidth ? sizeByWidth : sizeByDisplayName;\n}\n\ninterface IconProp {\n name: string;\n value: JSX.Element;\n}\n\ninterface SelectorFn {\n (imageSize: number): number;\n MAX_SIZE: number;\n}\n\nfunction validateIconComponentSizeByImageSize(\n imageSize: number,\n iconProp: IconProp,\n selectorFn: SelectorFn,\n logger: ReturnType<typeof warnOnce>,\n) {\n const iconSize = getIconSizeByElement(iconProp.value);\n\n if (iconSize === null) {\n return;\n }\n\n const result = selectorFn(imageSize);\n\n if (result === iconSize || (result === selectorFn.MAX_SIZE && iconSize >= result)) {\n return;\n }\n\n const iconName = getElementDisplayName(iconProp.value);\n const propMessage = iconName ? `${iconProp.name}={<${iconName} />}` : iconProp.name;\n\n logger(\n `Размер \\`${propMessage}\\` не соответствует дизайн-системе. Для \\`size={${imageSize}}\\` размер иконки для \\`${iconProp.name}\\` должен соответствовать <Icon${result}<name> />. Если такого размера нет, то используйте <${iconName} width={${result}} height={${result}} />`,\n 'log',\n );\n}\n\nconst warnImageBase = warnOnce('ImageBase');\n\nexport function validateFallbackIcon(imageSize: number, iconProp: IconProp): void {\n return validateIconComponentSizeByImageSize(\n imageSize,\n iconProp,\n getFallbackIconSizeByImageBaseSize,\n warnImageBase,\n );\n}\n\nconst mapOfExpectedSize = new Set<number>(imageBaseSizes);\n\nconst arrayOfSizes = Object.keys(mapOfExpectedSize).map((str) => Number(str));\nconst maxSize = arrayOfSizes.reduce((maxSize, size) => (size > maxSize ? size : maxSize), 0);\n\nexport function validateSize(imageSize: number): void {\n if (imageSize > maxSize || mapOfExpectedSize.has(imageSize)) {\n return;\n }\n warnImageBase(\n `\\`size={${imageSize}}\\` не соответствует дизайн-системе. Пожалуйста, используйте один из следующих вариантов: ${arrayOfSizes.join(\n ' | ',\n )}`,\n 'log',\n );\n}\n\nconst warnImageBaseBadge = warnOnce('ImageBase.Badge');\n\nexport function validateBadgeIcon(imageSize: number, iconProp: IconProp): void {\n if (imageSize < 24 && iconProp) {\n return warnImageBaseBadge('Не используйте бейдж при `size < 24`.', 'log');\n }\n validateIconComponentSizeByImageSize(\n imageSize,\n iconProp,\n getBadgeIconSizeByImageBaseSize,\n warnImageBaseBadge,\n );\n}\n\nconst warnImageBaseOverlay = warnOnce('ImageBase.Overlay');\n\nexport function validateOverlayIcon(imageSize: number, iconProp: IconProp): void {\n validateIconComponentSizeByImageSize(\n imageSize,\n iconProp,\n getOverlayIconSizeByImageBaseSize,\n warnImageBaseOverlay,\n );\n}\n"],"names":["warnOnce","getBadgeIconSizeByImageBaseSize","getFallbackIconSizeByImageBaseSize","getOverlayIconSizeByImageBaseSize","imageBaseSizes","parseIconSizeByDisplayName","displayName","match","exec","Number","parseIconSizeByWidthProp","width","size","getElementDisplayName","element","type","getElementWidthProp","props","getIconSizeByElement","sizeByDisplayName","sizeByWidth","validateIconComponentSizeByImageSize","imageSize","iconProp","selectorFn","logger","iconSize","value","result","MAX_SIZE","iconName","propMessage","name","warnImageBase","validateFallbackIcon","mapOfExpectedSize","Set","arrayOfSizes","Object","keys","map","str","maxSize","reduce","validateSize","has","join","warnImageBaseBadge","validateBadgeIcon","warnImageBaseOverlay","validateOverlayIcon"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,qBAAqB;AAC9C,SACEC,+BAA+B,EAC/BC,kCAAkC,EAClCC,iCAAiC,QAC5B,YAAY;AACnB,SAASC,cAAc,QAAQ,UAAU;AAEzC;;;;;;;CAOC,GACD,SAASC,2BAA2BC,WAAoB;IACtD,IAAI,OAAOA,gBAAgB,UAAU;QACnC,OAAO;IACT;IAEA,MAAMC,QAAQ,YAAYC,IAAI,CAACF;IAE/B,OAAOC,QAAQE,OAAOF,KAAK,CAAC,EAAE,IAAI;AACpC;AAEA,SAASG,yBAAyBC,KAAc;IAC9C,IAAI,OAAOA,UAAU,YAAY,OAAOA,UAAU,UAAU;QAC1D,OAAO;IACT;IACA,MAAMC,OAAOH,OAAOE;IACpB,OAAOC,OAAO,IAAIA,OAAO;AAC3B;AAEA,SAASC,sBAAsBC,OAAoB;IACjD,OAAOA,QAAQC,IAAI,CAACT,WAAW,IAAI;AACrC;AAEA,SAASU,oBAAoBF,OAAoB;IAC/C,OAAOA,QAAQG,KAAK,CAACN,KAAK,IAAI;AAChC;AAEA,SAASO,qBAAqBJ,OAAoB;IAChD,MAAMK,oBAAoBd,2BAA2BQ,sBAAsBC;IAC3E,MAAMM,cAAcV,yBAAyBM,oBAAoBF;IACjE,OAAOM,cAAcA,cAAcD;AACrC;AAYA,SAASE,qCACPC,SAAiB,EACjBC,QAAkB,EAClBC,UAAsB,EACtBC,MAAmC;IAEnC,MAAMC,WAAWR,qBAAqBK,SAASI,KAAK;IAEpD,IAAID,aAAa,MAAM;QACrB;IACF;IAEA,MAAME,SAASJ,WAAWF;IAE1B,IAAIM,WAAWF,YAAaE,WAAWJ,WAAWK,QAAQ,IAAIH,YAAYE,QAAS;QACjF;IACF;IAEA,MAAME,WAAWjB,sBAAsBU,SAASI,KAAK;IACrD,MAAMI,cAAcD,WAAW,CAAC,EAAEP,SAASS,IAAI,CAAC,GAAG,EAAEF,SAAS,IAAI,CAAC,GAAGP,SAASS,IAAI;IAEnFP,OACE,CAAC,SAAS,EAAEM,YAAY,gDAAgD,EAAET,UAAU,wBAAwB,EAAEC,SAASS,IAAI,CAAC,+BAA+B,EAAEJ,OAAO,oDAAoD,EAAEE,SAAS,QAAQ,EAAEF,OAAO,UAAU,EAAEA,OAAO,IAAI,CAAC,EAC5Q;AAEJ;AAEA,MAAMK,gBAAgBjC,SAAS;AAE/B,OAAO,SAASkC,qBAAqBZ,SAAiB,EAAEC,QAAkB;IACxE,OAAOF,qCACLC,WACAC,UACArB,oCACA+B;AAEJ;AAEA,MAAME,oBAAoB,IAAIC,IAAYhC;AAE1C,MAAMiC,eAAeC,OAAOC,IAAI,CAACJ,mBAAmBK,GAAG,CAAC,CAACC,MAAQhC,OAAOgC;AACxE,MAAMC,UAAUL,aAAaM,MAAM,CAAC,CAACD,SAAS9B,OAAUA,OAAO8B,UAAU9B,OAAO8B,SAAU;AAE1F,OAAO,SAASE,aAAatB,SAAiB;IAC5C,IAAIA,YAAYoB,WAAWP,kBAAkBU,GAAG,CAACvB,YAAY;QAC3D;IACF;IACAW,cACE,CAAC,QAAQ,EAAEX,UAAU,0FAA0F,EAAEe,aAAaS,IAAI,CAChI,OACA,CAAC,EACH;AAEJ;AAEA,MAAMC,qBAAqB/C,SAAS;AAEpC,OAAO,SAASgD,kBAAkB1B,SAAiB,EAAEC,QAAkB;IACrE,IAAID,YAAY,MAAMC,UAAU;QAC9B,OAAOwB,mBAAmB,yCAAyC;IACrE;IACA1B,qCACEC,WACAC,UACAtB,iCACA8C;AAEJ;AAEA,MAAME,uBAAuBjD,SAAS;AAEtC,OAAO,SAASkD,oBAAoB5B,SAAiB,EAAEC,QAAkB;IACvEF,qCACEC,WACAC,UACApB,mCACA8C;AAEJ"}
1
+ {"version":3,"sources":["../../../../src/components/ImageBase/validators.ts"],"sourcesContent":["import { warnOnce } from '../../lib/warnOnce';\nimport {\n getBadgeIconSizeByImageBaseSize,\n getFallbackIconSizeByImageBaseSize,\n getOverlayIconSizeByImageBaseSize,\n} from './helpers';\nimport { imageBaseSizes } from './types';\n\n/**\n * Пример,\n *\n * Icon28User -> 28\n * Icon12Circle1 -> 12\n * Icon12Circle2 -> 12\n * Icon20TextHeading1Outline -> 20\n */\nfunction parseIconSizeByDisplayName(displayName: unknown): number | null {\n if (typeof displayName !== 'string') {\n return null;\n }\n\n const match = /Icon(\\d+)/.exec(displayName);\n\n return match ? Number(match[1]) : null;\n}\n\nfunction parseIconSizeByWidthProp(width: unknown): number | null {\n if (typeof width !== 'string' && typeof width !== 'number') {\n return null;\n }\n const size = Number(width);\n return size > 0 ? size : null;\n}\n\nfunction getElementDisplayName(element: JSX.Element): string | null {\n return element.type.displayName ?? null;\n}\n\nfunction getElementWidthProp(element: JSX.Element): number | string | null {\n return element.props.width ?? null;\n}\n\nfunction getIconSizeByElement(element: JSX.Element): number | null {\n const sizeByDisplayName = parseIconSizeByDisplayName(getElementDisplayName(element));\n const sizeByWidth = parseIconSizeByWidthProp(getElementWidthProp(element));\n return sizeByWidth ? sizeByWidth : sizeByDisplayName;\n}\n\ninterface IconProp {\n name: string;\n value: JSX.Element;\n}\n\ninterface SelectorFn {\n (imageSize: number): number;\n MAX_SIZE: number;\n}\n\nfunction validateIconComponentSizeByImageSize(\n imageSize: number,\n iconProp: IconProp,\n selectorFn: SelectorFn,\n logger: ReturnType<typeof warnOnce>,\n) {\n const iconSize = getIconSizeByElement(iconProp.value);\n\n if (iconSize === null) {\n return;\n }\n\n const result = selectorFn(imageSize);\n\n if (result === iconSize || (result === selectorFn.MAX_SIZE && iconSize >= result)) {\n return;\n }\n\n const iconName = getElementDisplayName(iconProp.value);\n const propMessage = iconName ? `${iconProp.name}={<${iconName} />}` : iconProp.name;\n\n logger(\n `Размер \\`${propMessage}\\` не соответствует дизайн-системе. Для \\`size={${imageSize}}\\` размер иконки для \\`${iconProp.name}\\` должен соответствовать <Icon${result}<name> />. Если такого размера нет, то используйте <${iconName} width={${result}} height={${result}} />`,\n 'log',\n );\n}\n\nconst warnImageBase = warnOnce('ImageBase');\n\nexport function validateFallbackIcon(imageSize: number, iconProp: IconProp): void {\n return validateIconComponentSizeByImageSize(\n imageSize,\n iconProp,\n getFallbackIconSizeByImageBaseSize,\n warnImageBase,\n );\n}\n\nconst mapOfExpectedSize = new Set<number>(imageBaseSizes);\n\nconst arrayOfSizes = Array.from(mapOfExpectedSize).map((str) => Number(str));\nconst maxSize = arrayOfSizes.reduce((maxSize, size) => (size > maxSize ? size : maxSize), 0);\n\nexport function validateSize(imageSize: number): void {\n if (imageSize > maxSize || mapOfExpectedSize.has(imageSize)) {\n return;\n }\n warnImageBase(\n `\\`size={${imageSize}}\\` не соответствует дизайн-системе. Пожалуйста, используйте один из следующих вариантов: ${arrayOfSizes.join(\n ' | ',\n )}`,\n 'log',\n );\n}\n\nconst warnImageBaseBadge = warnOnce('ImageBase.Badge');\n\nexport function validateBadgeIcon(imageSize: number, iconProp: IconProp): void {\n if (imageSize < 24 && iconProp) {\n return warnImageBaseBadge('Не используйте бейдж при `size < 24`.', 'log');\n }\n validateIconComponentSizeByImageSize(\n imageSize,\n iconProp,\n getBadgeIconSizeByImageBaseSize,\n warnImageBaseBadge,\n );\n}\n\nconst warnImageBaseOverlay = warnOnce('ImageBase.Overlay');\n\nexport function validateOverlayIcon(imageSize: number, iconProp: IconProp): void {\n validateIconComponentSizeByImageSize(\n imageSize,\n iconProp,\n getOverlayIconSizeByImageBaseSize,\n warnImageBaseOverlay,\n );\n}\n"],"names":["warnOnce","getBadgeIconSizeByImageBaseSize","getFallbackIconSizeByImageBaseSize","getOverlayIconSizeByImageBaseSize","imageBaseSizes","parseIconSizeByDisplayName","displayName","match","exec","Number","parseIconSizeByWidthProp","width","size","getElementDisplayName","element","type","getElementWidthProp","props","getIconSizeByElement","sizeByDisplayName","sizeByWidth","validateIconComponentSizeByImageSize","imageSize","iconProp","selectorFn","logger","iconSize","value","result","MAX_SIZE","iconName","propMessage","name","warnImageBase","validateFallbackIcon","mapOfExpectedSize","Set","arrayOfSizes","Array","from","map","str","maxSize","reduce","validateSize","has","join","warnImageBaseBadge","validateBadgeIcon","warnImageBaseOverlay","validateOverlayIcon"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,qBAAqB;AAC9C,SACEC,+BAA+B,EAC/BC,kCAAkC,EAClCC,iCAAiC,QAC5B,YAAY;AACnB,SAASC,cAAc,QAAQ,UAAU;AAEzC;;;;;;;CAOC,GACD,SAASC,2BAA2BC,WAAoB;IACtD,IAAI,OAAOA,gBAAgB,UAAU;QACnC,OAAO;IACT;IAEA,MAAMC,QAAQ,YAAYC,IAAI,CAACF;IAE/B,OAAOC,QAAQE,OAAOF,KAAK,CAAC,EAAE,IAAI;AACpC;AAEA,SAASG,yBAAyBC,KAAc;IAC9C,IAAI,OAAOA,UAAU,YAAY,OAAOA,UAAU,UAAU;QAC1D,OAAO;IACT;IACA,MAAMC,OAAOH,OAAOE;IACpB,OAAOC,OAAO,IAAIA,OAAO;AAC3B;AAEA,SAASC,sBAAsBC,OAAoB;IACjD,OAAOA,QAAQC,IAAI,CAACT,WAAW,IAAI;AACrC;AAEA,SAASU,oBAAoBF,OAAoB;IAC/C,OAAOA,QAAQG,KAAK,CAACN,KAAK,IAAI;AAChC;AAEA,SAASO,qBAAqBJ,OAAoB;IAChD,MAAMK,oBAAoBd,2BAA2BQ,sBAAsBC;IAC3E,MAAMM,cAAcV,yBAAyBM,oBAAoBF;IACjE,OAAOM,cAAcA,cAAcD;AACrC;AAYA,SAASE,qCACPC,SAAiB,EACjBC,QAAkB,EAClBC,UAAsB,EACtBC,MAAmC;IAEnC,MAAMC,WAAWR,qBAAqBK,SAASI,KAAK;IAEpD,IAAID,aAAa,MAAM;QACrB;IACF;IAEA,MAAME,SAASJ,WAAWF;IAE1B,IAAIM,WAAWF,YAAaE,WAAWJ,WAAWK,QAAQ,IAAIH,YAAYE,QAAS;QACjF;IACF;IAEA,MAAME,WAAWjB,sBAAsBU,SAASI,KAAK;IACrD,MAAMI,cAAcD,WAAW,CAAC,EAAEP,SAASS,IAAI,CAAC,GAAG,EAAEF,SAAS,IAAI,CAAC,GAAGP,SAASS,IAAI;IAEnFP,OACE,CAAC,SAAS,EAAEM,YAAY,gDAAgD,EAAET,UAAU,wBAAwB,EAAEC,SAASS,IAAI,CAAC,+BAA+B,EAAEJ,OAAO,oDAAoD,EAAEE,SAAS,QAAQ,EAAEF,OAAO,UAAU,EAAEA,OAAO,IAAI,CAAC,EAC5Q;AAEJ;AAEA,MAAMK,gBAAgBjC,SAAS;AAE/B,OAAO,SAASkC,qBAAqBZ,SAAiB,EAAEC,QAAkB;IACxE,OAAOF,qCACLC,WACAC,UACArB,oCACA+B;AAEJ;AAEA,MAAME,oBAAoB,IAAIC,IAAYhC;AAE1C,MAAMiC,eAAeC,MAAMC,IAAI,CAACJ,mBAAmBK,GAAG,CAAC,CAACC,MAAQhC,OAAOgC;AACvE,MAAMC,UAAUL,aAAaM,MAAM,CAAC,CAACD,SAAS9B,OAAUA,OAAO8B,UAAU9B,OAAO8B,SAAU;AAE1F,OAAO,SAASE,aAAatB,SAAiB;IAC5C,IAAIA,YAAYoB,WAAWP,kBAAkBU,GAAG,CAACvB,YAAY;QAC3D;IACF;IACAW,cACE,CAAC,QAAQ,EAAEX,UAAU,0FAA0F,EAAEe,aAAaS,IAAI,CAChI,OACA,CAAC,EACH;AAEJ;AAEA,MAAMC,qBAAqB/C,SAAS;AAEpC,OAAO,SAASgD,kBAAkB1B,SAAiB,EAAEC,QAAkB;IACrE,IAAID,YAAY,MAAMC,UAAU;QAC9B,OAAOwB,mBAAmB,yCAAyC;IACrE;IACA1B,qCACEC,WACAC,UACAtB,iCACA8C;AAEJ;AAEA,MAAME,uBAAuBjD,SAAS;AAEtC,OAAO,SAASkD,oBAAoB5B,SAAiB,EAAEC,QAAkB;IACvEF,qCACEC,WACAC,UACApB,mCACA8C;AAEJ"}
@@ -1,5 +1,6 @@
1
1
  .List {
2
2
  display: grid;
3
+ grid-template-columns: minmax(0, 1fr);
3
4
  }
4
5
 
5
6
  .List__placeholder {