@vkontakte/vkui 5.1.0 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (516) hide show
  1. package/LICENSE +25 -0
  2. package/README.md +118 -0
  3. package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.js +1 -1
  4. package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
  5. package/dist/cjs/components/AppRoot/AppRoot.js +7 -4
  6. package/dist/cjs/components/AppRoot/AppRoot.js.map +1 -1
  7. package/dist/cjs/components/Avatar/Avatar.d.ts +1 -1
  8. package/dist/cjs/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.d.ts +1 -1
  9. package/dist/cjs/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js +5 -4
  10. package/dist/cjs/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js.map +1 -1
  11. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js +7 -4
  12. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
  13. package/dist/cjs/components/Checkbox/Checkbox.d.ts +3 -2
  14. package/dist/cjs/components/Checkbox/Checkbox.js +12 -2
  15. package/dist/cjs/components/Checkbox/Checkbox.js.map +1 -1
  16. package/dist/cjs/components/ChipsSelect/ChipsSelect.js +0 -4
  17. package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
  18. package/dist/cjs/components/ContentCard/ContentCard.js +2 -1
  19. package/dist/cjs/components/ContentCard/ContentCard.js.map +1 -1
  20. package/dist/cjs/components/CustomSelect/CustomSelect.js +11 -7
  21. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  22. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +2 -3
  23. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js +21 -72
  24. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  25. package/dist/cjs/components/DateInput/DateInput.d.ts +3 -2
  26. package/dist/cjs/components/DateInput/DateInput.js +3 -3
  27. package/dist/cjs/components/DateInput/DateInput.js.map +1 -1
  28. package/dist/cjs/components/DateRangeInput/DateRangeInput.d.ts +2 -2
  29. package/dist/cjs/components/DateRangeInput/DateRangeInput.js +3 -2
  30. package/dist/cjs/components/DateRangeInput/DateRangeInput.js.map +1 -1
  31. package/dist/cjs/components/Epic/Epic.js +1 -1
  32. package/dist/cjs/components/Epic/Epic.js.map +1 -1
  33. package/dist/cjs/components/FixedLayout/FixedLayout.js +2 -2
  34. package/dist/cjs/components/FixedLayout/FixedLayout.js.map +1 -1
  35. package/dist/cjs/components/FormField/FormField.js +6 -10
  36. package/dist/cjs/components/FormField/FormField.js.map +1 -1
  37. package/dist/cjs/components/IconButton/IconButton.js +9 -0
  38. package/dist/cjs/components/IconButton/IconButton.js.map +1 -1
  39. package/dist/cjs/components/ModalCard/ModalCard.d.ts +1 -1
  40. package/dist/cjs/components/ModalCard/ModalCard.js +4 -2
  41. package/dist/cjs/components/ModalCard/ModalCard.js.map +1 -1
  42. package/dist/cjs/components/ModalCardBase/ModalCardBase.d.ts +5 -1
  43. package/dist/cjs/components/ModalCardBase/ModalCardBase.js +9 -2
  44. package/dist/cjs/components/ModalCardBase/ModalCardBase.js.map +1 -1
  45. package/dist/cjs/components/ModalPage/ModalPage.d.ts +2 -6
  46. package/dist/cjs/components/ModalPage/ModalPage.js +13 -7
  47. package/dist/cjs/components/ModalPage/ModalPage.js.map +1 -1
  48. package/dist/cjs/components/ModalRoot/ModalRoot.js +1 -2
  49. package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
  50. package/dist/cjs/components/NativeSelect/NativeSelect.d.ts +1 -1
  51. package/dist/cjs/components/NativeSelect/NativeSelect.js +2 -2
  52. package/dist/cjs/components/NativeSelect/NativeSelect.js.map +1 -1
  53. package/dist/cjs/components/PanelHeader/PanelHeader.js +18 -4
  54. package/dist/cjs/components/PanelHeader/PanelHeader.js.map +1 -1
  55. package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js +11 -2
  56. package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  57. package/dist/cjs/components/Popover/Popover.js +4 -1
  58. package/dist/cjs/components/Popover/Popover.js.map +1 -1
  59. package/dist/cjs/components/Popper/Popper.d.ts +12 -9
  60. package/dist/cjs/components/Popper/Popper.js +92 -119
  61. package/dist/cjs/components/Popper/Popper.js.map +1 -1
  62. package/dist/cjs/components/PopperArrow/PopperArrow.d.ts +15 -5
  63. package/dist/cjs/components/PopperArrow/PopperArrow.js +44 -17
  64. package/dist/cjs/components/PopperArrow/PopperArrow.js.map +1 -1
  65. package/dist/cjs/components/Progress/Progress.js +3 -1
  66. package/dist/cjs/components/Progress/Progress.js.map +1 -1
  67. package/dist/cjs/components/Root/Root.js +2 -2
  68. package/dist/cjs/components/Root/Root.js.map +1 -1
  69. package/dist/cjs/components/Select/Select.d.ts +1 -5
  70. package/dist/cjs/components/Select/Select.js +13 -41
  71. package/dist/cjs/components/Select/Select.js.map +1 -1
  72. package/dist/cjs/components/SelectMimicry/SelectMimicry.d.ts +1 -1
  73. package/dist/cjs/components/SelectMimicry/SelectMimicry.js +2 -2
  74. package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
  75. package/dist/cjs/components/SelectTypography/SelectTypography.d.ts +11 -0
  76. package/dist/cjs/components/SelectTypography/SelectTypography.js +48 -0
  77. package/dist/cjs/components/SelectTypography/SelectTypography.js.map +1 -0
  78. package/dist/cjs/components/Slider/Slider.d.ts +1 -1
  79. package/dist/cjs/components/Slider/Slider.js +4 -3
  80. package/dist/cjs/components/Slider/Slider.js.map +1 -1
  81. package/dist/cjs/components/Spacing/Spacing.js +2 -1
  82. package/dist/cjs/components/Spacing/Spacing.js.map +1 -1
  83. package/dist/cjs/components/SplitCol/SplitCol.d.ts +0 -6
  84. package/dist/cjs/components/SplitCol/SplitCol.js +3 -11
  85. package/dist/cjs/components/SplitCol/SplitCol.js.map +1 -1
  86. package/dist/cjs/components/SplitCol/SplitColContext.d.ts +7 -0
  87. package/dist/cjs/components/SplitCol/SplitColContext.js +18 -0
  88. package/dist/cjs/components/SplitCol/SplitColContext.js.map +1 -0
  89. package/dist/cjs/components/Switch/Switch.js +2 -3
  90. package/dist/cjs/components/Switch/Switch.js.map +1 -1
  91. package/dist/cjs/components/TabbarItem/TabbarItem.js +9 -0
  92. package/dist/cjs/components/TabbarItem/TabbarItem.js.map +1 -1
  93. package/dist/cjs/components/Tabs/Tabs.js +6 -15
  94. package/dist/cjs/components/Tabs/Tabs.js.map +1 -1
  95. package/dist/cjs/components/Tooltip/Tooltip.d.ts +3 -3
  96. package/dist/cjs/components/Tooltip/Tooltip.js +116 -151
  97. package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
  98. package/dist/cjs/components/Touch/Touch.js +4 -4
  99. package/dist/cjs/components/Touch/Touch.js.map +1 -1
  100. package/dist/cjs/components/View/View.js +2 -2
  101. package/dist/cjs/components/View/View.js.map +1 -1
  102. package/dist/cjs/components/View/ViewInfinite.d.ts +1 -1
  103. package/dist/cjs/components/View/ViewInfinite.js +2 -2
  104. package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
  105. package/dist/cjs/components/WriteBarIcon/WriteBarIcon.js +10 -8
  106. package/dist/cjs/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
  107. package/dist/cjs/index.d.ts +37 -30
  108. package/dist/cjs/index.js +13 -13
  109. package/dist/cjs/index.js.map +1 -1
  110. package/dist/cjs/lib/floating/adapters.d.ts +2 -0
  111. package/dist/cjs/lib/floating/adapters.js +63 -0
  112. package/dist/cjs/lib/floating/adapters.js.map +1 -0
  113. package/dist/cjs/lib/floating/functions.d.ts +10 -0
  114. package/dist/cjs/lib/floating/functions.js +36 -0
  115. package/dist/cjs/lib/floating/functions.js.map +1 -0
  116. package/dist/cjs/lib/floating/index.d.ts +4 -0
  117. package/dist/cjs/lib/floating/index.js +75 -0
  118. package/dist/cjs/lib/floating/index.js.map +1 -0
  119. package/dist/cjs/lib/floating/types.d.ts +4 -0
  120. package/dist/cjs/lib/floating/types.js +6 -0
  121. package/dist/cjs/lib/floating/types.js.map +1 -0
  122. package/dist/cjs/lib/useIsomorphicLayoutEffect.d.ts +1 -1
  123. package/dist/cjs/lib/warnOnce.d.ts +7 -0
  124. package/dist/cjs/lib/warnOnce.js +14 -0
  125. package/dist/cjs/lib/warnOnce.js.map +1 -1
  126. package/dist/cjs/shared/breakpoints.d.ts +2 -2
  127. package/dist/cjs/shared/breakpoints.js +12 -13
  128. package/dist/cjs/shared/breakpoints.js.map +1 -1
  129. package/dist/components/AdaptivityProvider/AdaptivityProvider.js +1 -1
  130. package/dist/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
  131. package/dist/components/AppRoot/AppRoot.js +7 -4
  132. package/dist/components/AppRoot/AppRoot.js.map +1 -1
  133. package/dist/components/Avatar/Avatar.d.ts +1 -1
  134. package/dist/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.d.ts +1 -1
  135. package/dist/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js +5 -4
  136. package/dist/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js.map +1 -1
  137. package/dist/components/Cell/CellCheckbox/CellCheckbox.js +7 -4
  138. package/dist/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
  139. package/dist/components/Checkbox/Checkbox.d.ts +3 -2
  140. package/dist/components/Checkbox/Checkbox.js +12 -2
  141. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  142. package/dist/components/ChipsSelect/ChipsSelect.js +0 -4
  143. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  144. package/dist/components/ContentCard/ContentCard.js +2 -1
  145. package/dist/components/ContentCard/ContentCard.js.map +1 -1
  146. package/dist/components/CustomSelect/CustomSelect.js +12 -8
  147. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  148. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +2 -3
  149. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js +22 -73
  150. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  151. package/dist/components/DateInput/DateInput.d.ts +3 -2
  152. package/dist/components/DateInput/DateInput.js +3 -3
  153. package/dist/components/DateInput/DateInput.js.map +1 -1
  154. package/dist/components/DateRangeInput/DateRangeInput.d.ts +2 -2
  155. package/dist/components/DateRangeInput/DateRangeInput.js +3 -2
  156. package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
  157. package/dist/components/Epic/Epic.js +1 -1
  158. package/dist/components/Epic/Epic.js.map +1 -1
  159. package/dist/components/FixedLayout/FixedLayout.js +1 -1
  160. package/dist/components/FixedLayout/FixedLayout.js.map +1 -1
  161. package/dist/components/FormField/FormField.js +6 -10
  162. package/dist/components/FormField/FormField.js.map +1 -1
  163. package/dist/components/IconButton/IconButton.js +9 -0
  164. package/dist/components/IconButton/IconButton.js.map +1 -1
  165. package/dist/components/ModalCard/ModalCard.d.ts +1 -1
  166. package/dist/components/ModalCard/ModalCard.js +4 -2
  167. package/dist/components/ModalCard/ModalCard.js.map +1 -1
  168. package/dist/components/ModalCardBase/ModalCardBase.d.ts +5 -1
  169. package/dist/components/ModalCardBase/ModalCardBase.js +9 -2
  170. package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
  171. package/dist/components/ModalPage/ModalPage.d.ts +2 -6
  172. package/dist/components/ModalPage/ModalPage.js +13 -7
  173. package/dist/components/ModalPage/ModalPage.js.map +1 -1
  174. package/dist/components/ModalRoot/ModalRoot.js +1 -2
  175. package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
  176. package/dist/components/NativeSelect/NativeSelect.d.ts +1 -1
  177. package/dist/components/NativeSelect/NativeSelect.js +1 -1
  178. package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
  179. package/dist/components/PanelHeader/PanelHeader.js +18 -4
  180. package/dist/components/PanelHeader/PanelHeader.js.map +1 -1
  181. package/dist/components/PanelHeaderButton/PanelHeaderButton.js +11 -2
  182. package/dist/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  183. package/dist/components/Popover/Popover.js +4 -1
  184. package/dist/components/Popover/Popover.js.map +1 -1
  185. package/dist/components/Popper/Popper.d.ts +12 -9
  186. package/dist/components/Popper/Popper.js +93 -120
  187. package/dist/components/Popper/Popper.js.map +1 -1
  188. package/dist/components/PopperArrow/PopperArrow.d.ts +15 -5
  189. package/dist/components/PopperArrow/PopperArrow.js +40 -15
  190. package/dist/components/PopperArrow/PopperArrow.js.map +1 -1
  191. package/dist/components/Progress/Progress.js +3 -1
  192. package/dist/components/Progress/Progress.js.map +1 -1
  193. package/dist/components/Root/Root.js +1 -1
  194. package/dist/components/Root/Root.js.map +1 -1
  195. package/dist/components/Select/Select.d.ts +1 -5
  196. package/dist/components/Select/Select.js +12 -39
  197. package/dist/components/Select/Select.js.map +1 -1
  198. package/dist/components/SelectMimicry/SelectMimicry.d.ts +1 -1
  199. package/dist/components/SelectMimicry/SelectMimicry.js +1 -1
  200. package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
  201. package/dist/components/SelectTypography/SelectTypography.d.ts +11 -0
  202. package/dist/components/SelectTypography/SelectTypography.js +39 -0
  203. package/dist/components/SelectTypography/SelectTypography.js.map +1 -0
  204. package/dist/components/Slider/Slider.d.ts +1 -1
  205. package/dist/components/Slider/Slider.js +4 -3
  206. package/dist/components/Slider/Slider.js.map +1 -1
  207. package/dist/components/Spacing/Spacing.js +2 -1
  208. package/dist/components/Spacing/Spacing.js.map +1 -1
  209. package/dist/components/SplitCol/SplitCol.d.ts +0 -6
  210. package/dist/components/SplitCol/SplitCol.js +1 -7
  211. package/dist/components/SplitCol/SplitCol.js.map +1 -1
  212. package/dist/components/SplitCol/SplitColContext.d.ts +7 -0
  213. package/dist/components/SplitCol/SplitColContext.js +9 -0
  214. package/dist/components/SplitCol/SplitColContext.js.map +1 -0
  215. package/dist/components/Switch/Switch.js +2 -3
  216. package/dist/components/Switch/Switch.js.map +1 -1
  217. package/dist/components/TabbarItem/TabbarItem.js +9 -0
  218. package/dist/components/TabbarItem/TabbarItem.js.map +1 -1
  219. package/dist/components/Tabs/Tabs.js +6 -15
  220. package/dist/components/Tabs/Tabs.js.map +1 -1
  221. package/dist/components/Tooltip/Tooltip.d.ts +3 -3
  222. package/dist/components/Tooltip/Tooltip.js +116 -151
  223. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  224. package/dist/components/Touch/Touch.js +4 -4
  225. package/dist/components/Touch/Touch.js.map +1 -1
  226. package/dist/components/View/View.js +1 -1
  227. package/dist/components/View/View.js.map +1 -1
  228. package/dist/components/View/ViewInfinite.d.ts +1 -1
  229. package/dist/components/View/ViewInfinite.js +1 -1
  230. package/dist/components/View/ViewInfinite.js.map +1 -1
  231. package/dist/components/WriteBarIcon/WriteBarIcon.js +11 -9
  232. package/dist/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
  233. package/dist/components.css +142 -2
  234. package/dist/components.css.map +1 -1
  235. package/dist/components.js.tmp +61921 -4
  236. package/dist/cssm/components/ActionSheet/ActionSheet.module.css +1 -1
  237. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.module.css +1 -1
  238. package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js +1 -1
  239. package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
  240. package/dist/cssm/components/Alert/Alert.module.css +1 -1
  241. package/dist/cssm/components/AppRoot/AppRoot.js +7 -4
  242. package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
  243. package/dist/cssm/components/AppRoot/AppRoot.module.css +1 -1
  244. package/dist/cssm/components/Avatar/Avatar.d.ts +1 -1
  245. package/dist/cssm/components/Avatar/Avatar.module.css +1 -1
  246. package/dist/cssm/components/Avatar/AvatarBadge/AvatarBadge.module.css +1 -1
  247. package/dist/cssm/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.d.ts +1 -1
  248. package/dist/cssm/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js +5 -4
  249. package/dist/cssm/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js.map +1 -1
  250. package/dist/cssm/components/Badge/Badge.module.css +1 -1
  251. package/dist/cssm/components/Banner/Banner.module.css +1 -1
  252. package/dist/cssm/components/BaseGallery/BaseGallery.module.css +1 -1
  253. package/dist/cssm/components/Button/Button.module.css +1 -1
  254. package/dist/cssm/components/ButtonGroup/ButtonGroup.module.css +1 -1
  255. package/dist/cssm/components/Calendar/Calendar.module.css +1 -1
  256. package/dist/cssm/components/CalendarDay/CalendarDay.module.css +1 -1
  257. package/dist/cssm/components/CalendarDays/CalendarDays.module.css +1 -1
  258. package/dist/cssm/components/CalendarHeader/CalendarHeader.module.css +1 -1
  259. package/dist/cssm/components/CalendarRange/CalendarRange.module.css +1 -1
  260. package/dist/cssm/components/CalendarTime/CalendarTime.module.css +1 -1
  261. package/dist/cssm/components/Card/Card.module.css +2 -2
  262. package/dist/cssm/components/CardGrid/CardGrid.module.css +1 -1
  263. package/dist/cssm/components/CardScroll/CardScroll.module.css +1 -1
  264. package/dist/cssm/components/Cell/Cell.module.css +1 -1
  265. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js +7 -4
  266. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
  267. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.module.css +1 -1
  268. package/dist/cssm/components/Cell/CellDragger/CellDragger.module.css +1 -1
  269. package/dist/cssm/components/CellButton/CellButton.module.css +1 -1
  270. package/dist/cssm/components/Checkbox/Checkbox.d.ts +3 -2
  271. package/dist/cssm/components/Checkbox/Checkbox.js +12 -2
  272. package/dist/cssm/components/Checkbox/Checkbox.js.map +1 -1
  273. package/dist/cssm/components/Checkbox/Checkbox.module.css +1 -1
  274. package/dist/cssm/components/Chip/Chip.module.css +1 -1
  275. package/dist/cssm/components/ChipsInputBase/ChipsInputBase.module.css +1 -1
  276. package/dist/cssm/components/ChipsSelect/ChipsSelect.js +0 -4
  277. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  278. package/dist/cssm/components/ChipsSelect/ChipsSelect.module.css +1 -1
  279. package/dist/cssm/components/ContentCard/ContentCard.js +2 -1
  280. package/dist/cssm/components/ContentCard/ContentCard.js.map +1 -1
  281. package/dist/cssm/components/ContentCard/ContentCard.module.css +1 -1
  282. package/dist/cssm/components/Counter/Counter.module.css +1 -1
  283. package/dist/cssm/components/CustomScrollView/CustomScrollView.module.css +1 -1
  284. package/dist/cssm/components/CustomSelect/CustomSelect.js +12 -8
  285. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  286. package/dist/cssm/components/CustomSelect/CustomSelect.module.css +1 -1
  287. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +2 -3
  288. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js +22 -73
  289. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  290. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.module.css +1 -1
  291. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.module.css +1 -1
  292. package/dist/cssm/components/DateInput/DateInput.d.ts +3 -2
  293. package/dist/cssm/components/DateInput/DateInput.js +4 -3
  294. package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
  295. package/dist/cssm/components/DateInput/DateInput.module.css +1 -1
  296. package/dist/cssm/components/DateRangeInput/DateRangeInput.d.ts +2 -2
  297. package/dist/cssm/components/DateRangeInput/DateRangeInput.js +3 -2
  298. package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
  299. package/dist/cssm/components/DateRangeInput/DateRangeInput.module.css +1 -1
  300. package/dist/cssm/components/Div/Div.module.css +1 -1
  301. package/dist/cssm/components/Epic/Epic.js +1 -1
  302. package/dist/cssm/components/Epic/Epic.js.map +1 -1
  303. package/dist/cssm/components/FixedLayout/FixedLayout.js +1 -1
  304. package/dist/cssm/components/FixedLayout/FixedLayout.js.map +1 -1
  305. package/dist/cssm/components/FixedLayout/FixedLayout.module.css +1 -1
  306. package/dist/cssm/components/FocusVisible/FocusVisible.module.css +1 -1
  307. package/dist/cssm/components/Footer/Footer.module.css +1 -1
  308. package/dist/cssm/components/FormField/FormField.js +6 -10
  309. package/dist/cssm/components/FormField/FormField.js.map +1 -1
  310. package/dist/cssm/components/FormField/FormField.module.css +1 -1
  311. package/dist/cssm/components/FormItem/FormItem.module.css +1 -1
  312. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.module.css +1 -1
  313. package/dist/cssm/components/FormStatus/FormStatus.module.css +1 -1
  314. package/dist/cssm/components/Gradient/Gradient.module.css +1 -1
  315. package/dist/cssm/components/Group/Group.module.css +1 -1
  316. package/dist/cssm/components/Header/Header.module.css +1 -1
  317. package/dist/cssm/components/HorizontalCell/HorizontalCell.module.css +1 -1
  318. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.module.css +1 -1
  319. package/dist/cssm/components/HorizontalScroll/HorizontalScrollArrow.module.css +1 -1
  320. package/dist/cssm/components/IconButton/IconButton.js +9 -0
  321. package/dist/cssm/components/IconButton/IconButton.js.map +1 -1
  322. package/dist/cssm/components/IconButton/IconButton.module.css +1 -1
  323. package/dist/cssm/components/ImageBase/ImageBase.module.css +1 -1
  324. package/dist/cssm/components/ImageBase/ImageBaseBadge/ImageBaseBadge.module.css +1 -1
  325. package/dist/cssm/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.module.css +1 -1
  326. package/dist/cssm/components/InfoRow/InfoRow.module.css +1 -1
  327. package/dist/cssm/components/Input/Input.module.css +1 -1
  328. package/dist/cssm/components/InputLike/InputLike.module.css +1 -1
  329. package/dist/cssm/components/InputLike/InputLikeDivider.module.css +1 -1
  330. package/dist/cssm/components/Link/Link.module.css +1 -1
  331. package/dist/cssm/components/MiniInfoCell/MiniInfoCell.module.css +1 -1
  332. package/dist/cssm/components/ModalCard/ModalCard.d.ts +1 -1
  333. package/dist/cssm/components/ModalCard/ModalCard.js +4 -2
  334. package/dist/cssm/components/ModalCard/ModalCard.js.map +1 -1
  335. package/dist/cssm/components/ModalCard/ModalCard.module.css +1 -1
  336. package/dist/cssm/components/ModalCardBase/ModalCardBase.d.ts +5 -1
  337. package/dist/cssm/components/ModalCardBase/ModalCardBase.js +9 -2
  338. package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
  339. package/dist/cssm/components/ModalCardBase/ModalCardBase.module.css +1 -1
  340. package/dist/cssm/components/ModalDismissButton/ModalDismissButton.module.css +1 -1
  341. package/dist/cssm/components/ModalPage/ModalPage.d.ts +2 -6
  342. package/dist/cssm/components/ModalPage/ModalPage.js +13 -7
  343. package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
  344. package/dist/cssm/components/ModalPage/ModalPage.module.css +1 -1
  345. package/dist/cssm/components/ModalPageHeader/ModalPageHeader.module.css +1 -1
  346. package/dist/cssm/components/ModalRoot/ModalRoot.js +1 -2
  347. package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
  348. package/dist/cssm/components/ModalRoot/ModalRoot.module.css +1 -1
  349. package/dist/cssm/components/NativeSelect/NativeSelect.d.ts +1 -1
  350. package/dist/cssm/components/NativeSelect/NativeSelect.js +1 -1
  351. package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
  352. package/dist/cssm/components/Pagination/Pagination.module.css +1 -1
  353. package/dist/cssm/components/Panel/Panel.module.css +1 -1
  354. package/dist/cssm/components/PanelHeader/PanelHeader.js +18 -4
  355. package/dist/cssm/components/PanelHeader/PanelHeader.js.map +1 -1
  356. package/dist/cssm/components/PanelHeader/PanelHeader.module.css +1 -1
  357. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js +11 -2
  358. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  359. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.module.css +1 -1
  360. package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.module.css +1 -1
  361. package/dist/cssm/components/PanelHeaderContext/PanelHeaderContext.module.css +1 -1
  362. package/dist/cssm/components/Placeholder/Placeholder.module.css +1 -1
  363. package/dist/cssm/components/PopoutRoot/PopoutRoot.module.css +1 -1
  364. package/dist/cssm/components/PopoutWrapper/PopoutWrapper.module.css +1 -1
  365. package/dist/cssm/components/Popover/Popover.js +4 -1
  366. package/dist/cssm/components/Popover/Popover.js.map +1 -1
  367. package/dist/cssm/components/Popover/Popover.module.css +1 -1
  368. package/dist/cssm/components/Popper/Popper.d.ts +12 -9
  369. package/dist/cssm/components/Popper/Popper.js +93 -120
  370. package/dist/cssm/components/Popper/Popper.js.map +1 -1
  371. package/dist/cssm/components/Popper/Popper.module.css +1 -1
  372. package/dist/cssm/components/PopperArrow/PopperArrow.d.ts +15 -5
  373. package/dist/cssm/components/PopperArrow/PopperArrow.js +40 -15
  374. package/dist/cssm/components/PopperArrow/PopperArrow.js.map +1 -1
  375. package/dist/cssm/components/PopperArrow/PopperArrow.module.css +1 -1
  376. package/dist/cssm/components/Progress/Progress.js +3 -1
  377. package/dist/cssm/components/Progress/Progress.js.map +1 -1
  378. package/dist/cssm/components/Progress/Progress.module.css +1 -1
  379. package/dist/cssm/components/PromoBanner/PromoBanner.module.css +1 -1
  380. package/dist/cssm/components/PullToRefresh/PullToRefresh.module.css +1 -1
  381. package/dist/cssm/components/Radio/Radio.module.css +1 -1
  382. package/dist/cssm/components/RadioGroup/RadioGroup.module.css +1 -1
  383. package/dist/cssm/components/Removable/Removable.module.css +1 -1
  384. package/dist/cssm/components/RichCell/RichCell.module.css +1 -1
  385. package/dist/cssm/components/RichTooltip/RichTooltip.module.css +1 -1
  386. package/dist/cssm/components/Root/Root.js +1 -1
  387. package/dist/cssm/components/Root/Root.js.map +1 -1
  388. package/dist/cssm/components/Root/Root.module.css +1 -1
  389. package/dist/cssm/components/ScreenSpinner/ScreenSpinner.module.css +1 -1
  390. package/dist/cssm/components/Search/Search.module.css +1 -1
  391. package/dist/cssm/components/SegmentedControl/SegmentedControl.module.css +1 -1
  392. package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.module.css +1 -1
  393. package/dist/cssm/components/Select/Select.d.ts +1 -5
  394. package/dist/cssm/components/Select/Select.js +12 -39
  395. package/dist/cssm/components/Select/Select.js.map +1 -1
  396. package/dist/cssm/components/Select/Select.module.css +1 -1
  397. package/dist/cssm/components/SelectMimicry/SelectMimicry.d.ts +1 -1
  398. package/dist/cssm/components/SelectMimicry/SelectMimicry.js +1 -1
  399. package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
  400. package/dist/cssm/components/SelectTypography/SelectTypography.d.ts +11 -0
  401. package/dist/cssm/components/SelectTypography/SelectTypography.js +40 -0
  402. package/dist/cssm/components/SelectTypography/SelectTypography.js.map +1 -0
  403. package/dist/cssm/components/SelectTypography/SelectTypography.module.css +1 -0
  404. package/dist/cssm/components/Separator/Separator.module.css +1 -1
  405. package/dist/cssm/components/SimpleCell/SimpleCell.module.css +1 -1
  406. package/dist/cssm/components/Slider/Slider.d.ts +1 -1
  407. package/dist/cssm/components/Slider/Slider.js +4 -3
  408. package/dist/cssm/components/Slider/Slider.js.map +1 -1
  409. package/dist/cssm/components/Slider/Slider.module.css +1 -1
  410. package/dist/cssm/components/Snackbar/Snackbar.module.css +1 -1
  411. package/dist/cssm/components/Spacing/Spacing.js +2 -1
  412. package/dist/cssm/components/Spacing/Spacing.js.map +1 -1
  413. package/dist/cssm/components/Spacing/Spacing.module.css +1 -1
  414. package/dist/cssm/components/Spinner/Spinner.module.css +1 -1
  415. package/dist/cssm/components/SplitCol/SplitCol.d.ts +0 -6
  416. package/dist/cssm/components/SplitCol/SplitCol.js +1 -7
  417. package/dist/cssm/components/SplitCol/SplitCol.js.map +1 -1
  418. package/dist/cssm/components/SplitCol/SplitCol.module.css +1 -1
  419. package/dist/cssm/components/SplitCol/SplitColContext.d.ts +7 -0
  420. package/dist/cssm/components/SplitCol/SplitColContext.js +9 -0
  421. package/dist/cssm/components/SplitCol/SplitColContext.js.map +1 -0
  422. package/dist/cssm/components/SplitLayout/SplitLayout.module.css +1 -1
  423. package/dist/cssm/components/SubnavigationBar/SubnavigationBar.module.css +1 -1
  424. package/dist/cssm/components/SubnavigationButton/SubnavigationButton.module.css +1 -1
  425. package/dist/cssm/components/Switch/Switch.js +2 -3
  426. package/dist/cssm/components/Switch/Switch.js.map +1 -1
  427. package/dist/cssm/components/Switch/Switch.module.css +1 -1
  428. package/dist/cssm/components/Tabbar/Tabbar.module.css +1 -1
  429. package/dist/cssm/components/TabbarItem/TabbarItem.js +9 -0
  430. package/dist/cssm/components/TabbarItem/TabbarItem.js.map +1 -1
  431. package/dist/cssm/components/TabbarItem/TabbarItem.module.css +1 -1
  432. package/dist/cssm/components/Tabs/Tabs.js +6 -15
  433. package/dist/cssm/components/Tabs/Tabs.js.map +1 -1
  434. package/dist/cssm/components/Tabs/Tabs.module.css +1 -1
  435. package/dist/cssm/components/TabsItem/TabsItem.module.css +1 -1
  436. package/dist/cssm/components/Tappable/Tappable.module.css +1 -1
  437. package/dist/cssm/components/TextTooltip/TextTooltip.module.css +1 -1
  438. package/dist/cssm/components/Textarea/Textarea.module.css +1 -1
  439. package/dist/cssm/components/Tooltip/Tooltip.d.ts +3 -3
  440. package/dist/cssm/components/Tooltip/Tooltip.js +122 -151
  441. package/dist/cssm/components/Tooltip/Tooltip.js.map +1 -1
  442. package/dist/cssm/components/Tooltip/Tooltip.module.css +1 -1
  443. package/dist/cssm/components/Touch/Touch.js +4 -4
  444. package/dist/cssm/components/Touch/Touch.js.map +1 -1
  445. package/dist/cssm/components/Typography/Caption/Caption.module.css +1 -1
  446. package/dist/cssm/components/Typography/Footnote/Footnote.module.css +1 -1
  447. package/dist/cssm/components/Typography/Headline/Headline.module.css +1 -1
  448. package/dist/cssm/components/Typography/Paragraph/Paragraph.module.css +1 -1
  449. package/dist/cssm/components/Typography/Subhead/Subhead.module.css +1 -1
  450. package/dist/cssm/components/Typography/Text/Text.module.css +1 -1
  451. package/dist/cssm/components/Typography/Title/Title.module.css +1 -1
  452. package/dist/cssm/components/UsersStack/UsersStack.module.css +1 -1
  453. package/dist/cssm/components/View/View.js +1 -1
  454. package/dist/cssm/components/View/View.js.map +1 -1
  455. package/dist/cssm/components/View/View.module.css +1 -1
  456. package/dist/cssm/components/View/ViewIOS.module.css +1 -1
  457. package/dist/cssm/components/View/ViewInfinite.d.ts +1 -1
  458. package/dist/cssm/components/View/ViewInfinite.js +1 -1
  459. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  460. package/dist/cssm/components/WriteBar/WriteBar.module.css +1 -1
  461. package/dist/cssm/components/WriteBarIcon/WriteBarIcon.js +11 -9
  462. package/dist/cssm/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
  463. package/dist/cssm/components/WriteBarIcon/WriteBarIcon.module.css +1 -1
  464. package/dist/cssm/index.d.ts +37 -30
  465. package/dist/cssm/index.js +24 -18
  466. package/dist/cssm/index.js.map +1 -1
  467. package/dist/cssm/lib/floating/adapters.d.ts +2 -0
  468. package/dist/cssm/lib/floating/adapters.js +56 -0
  469. package/dist/cssm/lib/floating/adapters.js.map +1 -0
  470. package/dist/cssm/lib/floating/functions.d.ts +10 -0
  471. package/dist/cssm/lib/floating/functions.js +28 -0
  472. package/dist/cssm/lib/floating/functions.js.map +1 -0
  473. package/dist/cssm/lib/floating/index.d.ts +4 -0
  474. package/dist/cssm/lib/floating/index.js +4 -0
  475. package/dist/cssm/lib/floating/index.js.map +1 -0
  476. package/dist/cssm/lib/floating/types.d.ts +4 -0
  477. package/dist/cssm/lib/floating/types.js +2 -0
  478. package/dist/cssm/lib/floating/types.js.map +1 -0
  479. package/dist/cssm/lib/useIsomorphicLayoutEffect.d.ts +1 -1
  480. package/dist/cssm/lib/warnOnce.d.ts +7 -0
  481. package/dist/cssm/lib/warnOnce.js +12 -0
  482. package/dist/cssm/lib/warnOnce.js.map +1 -1
  483. package/dist/cssm/shared/breakpoints.d.ts +2 -2
  484. package/dist/cssm/shared/breakpoints.js +12 -13
  485. package/dist/cssm/shared/breakpoints.js.map +1 -1
  486. package/dist/cssm/styles/adaptivity.module.css +1 -1
  487. package/dist/cssm/styles/common.css +1 -1
  488. package/dist/cssm/styles/themes.css +1 -1
  489. package/dist/index.d.ts +37 -30
  490. package/dist/index.js +22 -16
  491. package/dist/index.js.map +1 -1
  492. package/dist/lib/floating/adapters.d.ts +2 -0
  493. package/dist/lib/floating/adapters.js +56 -0
  494. package/dist/lib/floating/adapters.js.map +1 -0
  495. package/dist/lib/floating/functions.d.ts +10 -0
  496. package/dist/lib/floating/functions.js +28 -0
  497. package/dist/lib/floating/functions.js.map +1 -0
  498. package/dist/lib/floating/index.d.ts +4 -0
  499. package/dist/lib/floating/index.js +4 -0
  500. package/dist/lib/floating/index.js.map +1 -0
  501. package/dist/lib/floating/types.d.ts +4 -0
  502. package/dist/lib/floating/types.js +2 -0
  503. package/dist/lib/floating/types.js.map +1 -0
  504. package/dist/lib/useIsomorphicLayoutEffect.d.ts +1 -1
  505. package/dist/lib/warnOnce.d.ts +7 -0
  506. package/dist/lib/warnOnce.js +12 -0
  507. package/dist/lib/warnOnce.js.map +1 -1
  508. package/dist/shared/breakpoints.d.ts +2 -2
  509. package/dist/shared/breakpoints.js +12 -13
  510. package/dist/shared/breakpoints.js.map +1 -1
  511. package/dist/stable.js.tmp +69 -21
  512. package/dist/vkui.css +143 -3
  513. package/dist/vkui.css.map +1 -1
  514. package/dist/vkui.js.tmp +61837 -0
  515. package/package.json +6 -6
  516. package/dist/cssm/styles/components.css +0 -3
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.js","names":["React","ReactDOM","classNames","hasReactNode","Subhead","useNavTransition","PopperArrow","usePopper","tooltipContainerAttr","useExternRef","useDOM","warnOnce","useGlobalEventListener","isDOMTypeElement","element","isValidElement","type","warn","IS_DEV","process","env","NODE_ENV","SimpleTooltip","forwardRef","ref","appearance","header","text","arrow","style","popperStyles","attributes","className","container","containerClassName","restContainerAttributes","styles","mapAlignX","x","getPlacement","alignX","alignY","filter","p","join","isVerticalPlacement","placement","startsWith","Tooltip","children","isShown","_isShown","offsetX","offsetY","onClose","cornerOffset","cornerAbsoluteOffset","restProps","entering","useState","tooltipRef","setTooltipRef","target","setTarget","multiChildren","Children","count","primitiveChild","JSON","stringify","Boolean","tooltipContainer","useMemo","closest","strategy","position","Error","modifiers","name","options","offset","push","padding","enabled","phase","fn","state","modifiersData","undefined","y","_placement","document","passive","childRef","props","getRootRef","patchedRef","child","cloneElement","createPortal","el","popper"],"sources":["../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { Subhead } from '../Typography/Subhead/Subhead';\nimport { useNavTransition } from '../NavTransitionContext/NavTransitionContext';\nimport { PopperArrow } from '../PopperArrow/PopperArrow';\nimport { Modifier, usePopper } from 'react-popper';\nimport { Placement } from '@popperjs/core';\nimport { tooltipContainerAttr } from './TooltipContainer';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useDOM } from '../../lib/dom';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport { HasRootRef } from '../../types';\nimport styles from './Tooltip.module.css';\n\ninterface SimpleTooltipProps extends Partial<TooltipProps> {\n target?: HTMLDivElement;\n style?: {\n arrow: React.CSSProperties;\n container: React.CSSProperties;\n };\n attributes?: {\n arrow: React.HTMLAttributes<HTMLDivElement> | null;\n container: React.HTMLAttributes<HTMLDivElement> | null;\n };\n className?: string;\n}\n\n/**\n * Перебиваем `ref`.\n *\n * В оригинальном `React.DOMElement` задаётся `React.LegacyRef<T>`, в котором есть `string`.\n * Когда как `{ ref: \"string\" }` уже давно депрекейтнут.\n */\ninterface DOMElement<P extends React.HTMLAttributes<T> | React.SVGAttributes<T>, T extends Element>\n extends React.DOMElement<P, T> {\n ref: React.Ref<T>;\n}\n\nconst isDOMTypeElement = <\n P extends React.HTMLAttributes<T> | React.SVGAttributes<T>,\n T extends Element,\n>(\n element: React.ReactElement,\n): element is DOMElement<P, T> => {\n return React.isValidElement(element) && typeof element.type === 'string';\n};\n\nconst warn = warnOnce('Tooltip');\nconst IS_DEV = process.env.NODE_ENV === 'development';\n\nconst SimpleTooltip = React.forwardRef<HTMLDivElement, SimpleTooltipProps>(function SimpleTooltip(\n { appearance = 'accent', header, text, arrow, style: popperStyles = {}, attributes, className },\n ref,\n) {\n const { className: containerClassName, ...restContainerAttributes } = attributes?.container ?? {};\n\n return (\n <div\n className={classNames(\n styles['Tooltip'],\n styles[`Tooltip--appearance-${appearance}`],\n className,\n )}\n >\n <div\n className={classNames(styles['Tooltip__container'], containerClassName)}\n ref={ref}\n style={popperStyles.container}\n {...restContainerAttributes}\n >\n {arrow && (\n <PopperArrow\n style={popperStyles.arrow}\n attributes={attributes?.arrow}\n arrowClassName={styles['Tooltip__arrow']}\n />\n )}\n <div className={styles['Tooltip__content']}>\n {header && (\n <Subhead weight=\"2\" className={styles['Tooltip__title']}>\n {header}\n </Subhead>\n )}\n {text && <Subhead className={styles['Tooltip__text']}>{text}</Subhead>}\n </div>\n </div>\n </div>\n );\n});\n\nexport interface TooltipProps {\n /**\n * **Важно**: если в `children` передан React-компонент, то необходимо убедиться в том, что он поддерживает\n * свойство `getRootRef`, которое должно возвращаться ссылку на корневой DOM-элемент компонента,\n * иначе тултип показан не будет. Если передан React-element, то такой проблемы нет.\n */\n children: React.ReactElement<HasRootRef<any>> | React.ReactElement;\n /**\n * Стиль отображения подсказки\n */\n appearance?: 'accent' | 'neutral' | 'white' | 'black' | 'inversion';\n /**\n * Если передан `false`, то рисуется просто `children`.\n */\n isShown?: boolean;\n /**\n * Текст тултипа.\n */\n text?: React.ReactNode;\n /**\n * Заголовок тултипа.\n */\n header?: React.ReactNode;\n /**\n * Положение по горизонтали (прижатие к левому или правому краю `children`).\n * Если не задано, позиция по горизонтали определятся автоматически\n */\n alignX?: 'center' | 'left' | 'right';\n /**\n * Положение по вертикали (расположение над или под `children`).\n * Если не задано, позиция по вертикали определятся автоматически\n */\n alignY?: 'top' | 'bottom';\n /**\n * Сдвиг по горизонтали (относительно портала, в котором рисуется тултип).\n */\n offsetX?: number;\n /**\n * Сдвиг по вертикали (относительно портала, в котором рисуется тултип).\n */\n offsetY?: number;\n /**\n * Отображать ли стрелку, указывающую на якорный элемент\n */\n arrow?: boolean;\n /**\n * Сдвиг стрелочки относительно центра дочернего элемента.\n */\n cornerOffset?: number;\n /**\n * Сдвиг стрелочки относительно ширины тултипа\n */\n cornerAbsoluteOffset?: number;\n /**\n * Callback, который вызывается при клике по любому месту в пределах экрана.\n */\n onClose?: () => void;\n /**\n * По умолчанию компонент выберет наилучшее расположение сам. Но его можно задать извне с помощью этого свойства\n */\n placement?: Placement;\n /**\n * Пользовательские css-классы, будут добавлены на root-элемент\n */\n className?: string;\n}\n\nfunction mapAlignX(x: TooltipProps['alignX']) {\n switch (x) {\n case 'left':\n return 'start';\n case 'right':\n return 'end';\n default:\n return '';\n }\n}\nfunction getPlacement(alignX: TooltipProps['alignX'], alignY: TooltipProps['alignY']): Placement {\n return [alignY || 'bottom', mapAlignX(alignX || 'left')]\n .filter((p) => !!p)\n .join('-') as Placement;\n}\nfunction isVerticalPlacement(placement: Placement) {\n return placement.startsWith('top') || placement.startsWith('bottom');\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Tooltip\n */\nexport const Tooltip = ({\n children,\n isShown: _isShown = true,\n offsetX = 0,\n offsetY = 15,\n alignX,\n alignY,\n onClose,\n cornerOffset = 0,\n cornerAbsoluteOffset,\n appearance,\n arrow = true,\n placement,\n ...restProps\n}: TooltipProps) => {\n const { entering } = useNavTransition();\n const isShown = _isShown && !entering;\n const [tooltipRef, setTooltipRef] = React.useState<HTMLElement | null>(null);\n const [target, setTarget] = React.useState<HTMLElement>();\n\n if (IS_DEV) {\n const multiChildren = React.Children.count(children) > 1;\n // Empty children is a noop\n const primitiveChild = hasReactNode(children) && typeof children !== 'object';\n (multiChildren || primitiveChild) &&\n warn(\n [\n 'children должен быть одним React элементом, получено',\n multiChildren && 'несколько',\n primitiveChild && JSON.stringify(children),\n ]\n .filter(Boolean)\n .join(' '),\n 'error',\n );\n }\n\n /* eslint-disable no-restricted-properties */\n /* eslint-disable @typescript-eslint/no-unnecessary-type-assertion*/\n const tooltipContainer = React.useMemo(\n () => target?.closest(`[${tooltipContainerAttr}]`) as HTMLDivElement,\n [target],\n );\n const strategy = React.useMemo(\n () => (target?.style.position === 'fixed' ? 'fixed' : 'absolute'),\n [target],\n );\n /* eslint-enable @typescript-eslint/no-unnecessary-type-assertion*/\n /* eslint-enable no-restricted-properties */\n\n if (IS_DEV && target && !tooltipContainer) {\n throw new Error('Use TooltipContainer for Tooltip outside Panel (see docs)');\n }\n\n const modifiers = React.useMemo(() => {\n const modifiers: Array<Modifier<string>> = [\n {\n name: 'offset',\n options: {\n offset: [offsetX, offsetY],\n },\n },\n {\n name: 'preventOverflow',\n },\n {\n name: 'flip',\n },\n ];\n\n if (arrow) {\n modifiers.push({\n name: 'arrow',\n options: {\n padding: 14,\n },\n });\n modifiers.push({\n name: 'arrowOffset',\n enabled: true,\n phase: 'main',\n fn({ state }) {\n if (!state.modifiersData.arrow) {\n return;\n }\n if (isVerticalPlacement(state.placement)) {\n if (cornerAbsoluteOffset !== undefined) {\n state.modifiersData.arrow.x = cornerAbsoluteOffset;\n } else {\n if (state.modifiersData.arrow?.x !== undefined) {\n state.modifiersData.arrow.x += cornerOffset;\n }\n }\n } else {\n if (cornerAbsoluteOffset !== undefined) {\n state.modifiersData.arrow.y = cornerAbsoluteOffset;\n } else {\n if (state.modifiersData.arrow?.y !== undefined) {\n state.modifiersData.arrow.y += cornerOffset;\n }\n }\n }\n },\n });\n }\n\n return modifiers;\n }, [arrow, cornerAbsoluteOffset, cornerOffset, offsetX, offsetY]);\n\n const _placement = placement ?? getPlacement(alignX, alignY);\n const { styles: popperStyles, attributes } = usePopper(target, tooltipRef, {\n strategy,\n placement: _placement,\n modifiers,\n });\n\n const { document } = useDOM();\n useGlobalEventListener(document, 'click', isShown && onClose, {\n passive: true,\n });\n // NOTE: setting isShown to true used to trigger usePopper().forceUpdate()\n\n const childRef = isDOMTypeElement<React.HTMLAttributes<HTMLElement>, HTMLElement>(children)\n ? children.ref\n : React.isValidElement<HasRootRef<HTMLElement>>(children)\n ? children.props.getRootRef\n : null;\n const patchedRef = useExternRef(setTarget, childRef);\n const child = React.isValidElement(children)\n ? React.cloneElement(children, {\n [isDOMTypeElement(children) ? 'ref' : 'getRootRef']: patchedRef,\n })\n : children;\n\n return (\n <React.Fragment>\n {child}\n {isShown &&\n target != null &&\n ReactDOM.createPortal(\n <SimpleTooltip\n {...restProps}\n appearance={appearance}\n arrow={arrow}\n ref={(el) => setTooltipRef(el)}\n style={{\n arrow: popperStyles.arrow,\n container: popperStyles.popper,\n }}\n attributes={{\n arrow: attributes.arrow ?? null,\n container: attributes.popper ?? null,\n }}\n />,\n tooltipContainer,\n )}\n </React.Fragment>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"Tooltip.js","names":["React","ReactDOM","classNames","hasReactNode","Subhead","useNavTransition","PopperArrow","useFloating","checkIsNotAutoPlacement","convertFloatingDataToReactCSSProperties","offsetMiddleware","shiftMiddleware","flipMiddleware","arrowMiddleware","autoUpdateFloatingElement","getAutoPlacementAlign","autoPlacementMiddleware","tooltipContainerAttr","useExternRef","useDOM","warnOnce","useGlobalEventListener","isDOMTypeElement","element","isValidElement","type","warn","stylesAppearance","accent","neutral","white","black","inversion","mapAlignX","x","getDefaultPlacement","alignX","alignY","filter","p","join","isVerticalPlacement","placement","startsWith","Tooltip","children","isShown","isShownProp","offsetX","offsetY","onClose","cornerOffset","cornerAbsoluteOffset","appearance","arrow","placementProp","text","header","className","restProps","arrowRef","useRef","useState","target","setTarget","tooltipContainer","useMemo","closest","entering","isNotAutoPlacement","process","env","NODE_ENV","multiChildren","Children","count","primitiveChild","JSON","stringify","Boolean","floatingPositionStrategy","style","position","Error","memoizedMiddlewares","middlewares","crossAxis","mainAxis","push","alignment","padding","name","fn","middlewareData","Promise","resolve","undefined","y","strategy","middleware","whileElementsMounted","floatingDataX","floatingDataY","resolvedPlacement","refs","arrowCoords","document","capture","passive","childRef","ref","props","getRootRef","patchedRef","setReference","child","cloneElement","createPortal","setFloating"],"sources":["../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { Subhead } from '../Typography/Subhead/Subhead';\nimport { useNavTransition } from '../NavTransitionContext/NavTransitionContext';\nimport { PopperArrow } from '../PopperArrow/PopperArrow';\nimport {\n type Placement,\n type PlacementWithAuto,\n type UseFloatingMiddleware,\n useFloating,\n checkIsNotAutoPlacement,\n convertFloatingDataToReactCSSProperties,\n offsetMiddleware,\n shiftMiddleware,\n flipMiddleware,\n arrowMiddleware,\n autoUpdateFloatingElement,\n getAutoPlacementAlign,\n autoPlacementMiddleware,\n} from '../../lib/floating';\nimport { tooltipContainerAttr } from './TooltipContainer';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useDOM } from '../../lib/dom';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport { HasRootRef } from '../../types';\nimport styles from './Tooltip.module.css';\n\n/**\n * Перебиваем `ref`.\n *\n * В оригинальном `React.DOMElement` задаётся `React.LegacyRef<T>`, в котором есть `string`.\n * Когда как `{ ref: \"string\" }` уже давно депрекейтнут.\n */\ninterface DOMElement<P extends React.HTMLAttributes<T> | React.SVGAttributes<T>, T extends Element>\n extends React.DOMElement<P, T> {\n ref: React.Ref<T>;\n}\n\nconst isDOMTypeElement = <\n P extends React.HTMLAttributes<T> | React.SVGAttributes<T>,\n T extends Element,\n>(\n element: React.ReactElement,\n): element is DOMElement<P, T> => {\n return React.isValidElement(element) && typeof element.type === 'string';\n};\n\nconst warn = warnOnce('Tooltip');\n\nconst stylesAppearance = {\n accent: styles['Tooltip--appearance-accent'],\n neutral: styles['Tooltip--appearance-neutral'],\n white: styles['Tooltip--appearance-white'],\n black: styles['Tooltip--appearance-black'],\n inversion: styles['Tooltip--appearance-inversion'],\n};\n\nexport interface TooltipProps {\n /**\n * **Важно**: если в `children` передан React-компонент, то необходимо убедиться в том, что он поддерживает\n * свойство `getRootRef`, которое должно возвращаться ссылку на корневой DOM-элемент компонента,\n * иначе тултип показан не будет. Если передан React-element, то такой проблемы нет.\n */\n children: React.ReactElement<HasRootRef<any>> | React.ReactElement;\n /**\n * Стиль отображения подсказки\n */\n appearance?: 'accent' | 'neutral' | 'white' | 'black' | 'inversion';\n /**\n * Если передан `false`, то рисуется просто `children`.\n */\n isShown?: boolean;\n /**\n * Текст тултипа.\n */\n text?: React.ReactNode;\n /**\n * Заголовок тултипа.\n */\n header?: React.ReactNode;\n /**\n * Положение по горизонтали (прижатие к левому или правому краю `children`).\n * Если не задано, позиция по горизонтали определятся автоматически\n */\n alignX?: 'center' | 'left' | 'right';\n /**\n * Положение по вертикали (расположение над или под `children`).\n * Если не задано, позиция по вертикали определятся автоматически\n */\n alignY?: 'top' | 'bottom';\n /**\n * Сдвиг по горизонтали (относительно портала, в котором рисуется тултип).\n */\n offsetX?: number;\n /**\n * Сдвиг по вертикали (относительно портала, в котором рисуется тултип).\n */\n offsetY?: number;\n /**\n * Отображать ли стрелку, указывающую на якорный элемент\n */\n arrow?: boolean;\n /**\n * Сдвиг стрелочки относительно центра дочернего элемента.\n */\n cornerOffset?: number;\n /**\n * Сдвиг стрелочки относительно ширины тултипа\n */\n cornerAbsoluteOffset?: number;\n /**\n * Callback, который вызывается при клике по любому месту в пределах экрана.\n */\n onClose?: () => void;\n /**\n * По умолчанию компонент выберет наилучшее расположение сам. Но его можно задать извне с помощью этого свойства\n */\n placement?: PlacementWithAuto;\n /**\n * Пользовательские css-классы, будут добавлены на root-элемент\n */\n className?: string;\n}\n\nfunction mapAlignX(x: TooltipProps['alignX']) {\n switch (x) {\n case 'left':\n return 'start';\n case 'right':\n return 'end';\n default:\n return '';\n }\n}\nfunction getDefaultPlacement(\n alignX: TooltipProps['alignX'],\n alignY: TooltipProps['alignY'],\n): Placement {\n return [alignY || 'bottom', mapAlignX(alignX || 'left')]\n .filter((p) => !!p)\n .join('-') as Placement;\n}\nfunction isVerticalPlacement(placement: PlacementWithAuto) {\n return placement.startsWith('top') || placement.startsWith('bottom');\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Tooltip\n */\nexport const Tooltip = ({\n children,\n isShown: isShownProp = true,\n offsetX = 0,\n offsetY = 15,\n alignX,\n alignY,\n onClose,\n cornerOffset = 0,\n cornerAbsoluteOffset,\n appearance = 'accent',\n arrow = true,\n placement: placementProp,\n text,\n header,\n className,\n ...restProps\n}: TooltipProps) => {\n const arrowRef = React.useRef<HTMLDivElement>(null);\n const [target, setTarget] = React.useState<HTMLElement | null>(null);\n /* eslint-disable no-restricted-properties */\n const tooltipContainer = React.useMemo(\n () => target?.closest<HTMLDivElement>(`[${tooltipContainerAttr}]`),\n [target],\n );\n const { entering } = useNavTransition();\n const isShown = isShownProp && tooltipContainer && !entering;\n\n const placement = placementProp || getDefaultPlacement(alignX, alignY);\n const isNotAutoPlacement = checkIsNotAutoPlacement(placement);\n\n if (process.env.NODE_ENV === 'development') {\n const multiChildren = React.Children.count(children) > 1;\n // Empty children is a noop\n const primitiveChild = hasReactNode(children) && typeof children !== 'object';\n (multiChildren || primitiveChild) &&\n warn(\n [\n 'children должен быть одним React элементом, получено',\n multiChildren && 'несколько',\n primitiveChild && JSON.stringify(children),\n ]\n .filter(Boolean)\n .join(' '),\n 'error',\n );\n }\n\n const floatingPositionStrategy = React.useMemo(\n () => (target?.style.position === 'fixed' ? 'fixed' : 'absolute'),\n [target],\n );\n\n if (process.env.NODE_ENV === 'development' && target && !tooltipContainer) {\n throw new Error('Use TooltipContainer for Tooltip outside Panel (see docs)');\n }\n\n const memoizedMiddlewares = React.useMemo(() => {\n const middlewares: UseFloatingMiddleware[] = [\n offsetMiddleware({\n crossAxis: offsetX,\n mainAxis: offsetY,\n }),\n ];\n\n // см. https://floating-ui.com/docs/flip#conflict-with-autoplacement\n if (isNotAutoPlacement) {\n middlewares.push(flipMiddleware());\n } else {\n middlewares.push(\n autoPlacementMiddleware({\n alignment: placement ? getAutoPlacementAlign(placement) : null,\n }),\n );\n }\n\n middlewares.push(shiftMiddleware());\n\n // см. https://floating-ui.com/docs/arrow#order\n if (arrow) {\n middlewares.push(\n arrowMiddleware({\n element: arrowRef,\n padding: 14,\n }),\n );\n middlewares.push({\n name: 'arrowOffset',\n fn({ placement, middlewareData }) {\n if (!middlewareData.arrow) {\n return Promise.resolve({});\n }\n if (isVerticalPlacement(placement)) {\n if (cornerAbsoluteOffset !== undefined) {\n middlewareData.arrow.x = cornerAbsoluteOffset;\n } else if (middlewareData.arrow.x !== undefined) {\n middlewareData.arrow.x += cornerOffset;\n }\n } else {\n if (cornerAbsoluteOffset !== undefined) {\n middlewareData.arrow.y = cornerAbsoluteOffset;\n } else if (middlewareData.arrow.y !== undefined) {\n middlewareData.arrow.y += cornerOffset;\n }\n }\n return Promise.resolve({});\n },\n });\n }\n\n return middlewares;\n }, [arrow, cornerAbsoluteOffset, cornerOffset, offsetX, offsetY, placement, isNotAutoPlacement]);\n\n const {\n x: floatingDataX,\n y: floatingDataY,\n placement: resolvedPlacement,\n refs,\n middlewareData: { arrow: arrowCoords },\n } = useFloating({\n strategy: floatingPositionStrategy,\n placement: isNotAutoPlacement ? placement : undefined,\n middleware: memoizedMiddlewares,\n whileElementsMounted: autoUpdateFloatingElement,\n });\n\n const { document } = useDOM();\n useGlobalEventListener(document, 'click', isShown && onClose, {\n capture: true,\n passive: true,\n });\n\n const childRef = isDOMTypeElement<React.HTMLAttributes<HTMLElement>, HTMLElement>(children)\n ? children.ref\n : React.isValidElement<HasRootRef<HTMLElement>>(children)\n ? children.props.getRootRef\n : null;\n const patchedRef = useExternRef<HTMLElement>(setTarget, refs.setReference, childRef);\n const child = React.isValidElement(children)\n ? React.cloneElement(children, {\n [isDOMTypeElement(children) ? 'ref' : 'getRootRef']: patchedRef,\n })\n : children;\n\n return (\n <React.Fragment>\n {child}\n {isShown &&\n target != null &&\n ReactDOM.createPortal(\n <div\n {...restProps}\n className={classNames(styles['Tooltip'], stylesAppearance[appearance], className)}\n >\n <div\n ref={refs.setFloating}\n style={convertFloatingDataToReactCSSProperties(\n floatingPositionStrategy,\n floatingDataX,\n floatingDataY,\n )}\n >\n {arrow && (\n <PopperArrow\n coords={arrowCoords}\n placement={resolvedPlacement}\n arrowClassName={styles['Tooltip__arrow']}\n getRootRef={arrowRef}\n />\n )}\n <div className={styles['Tooltip__content']}>\n {header && (\n <Subhead weight=\"2\" className={styles['Tooltip__title']}>\n {header}\n </Subhead>\n )}\n {text && <Subhead className={styles['Tooltip__text']}>{text}</Subhead>}\n </div>\n </div>\n </div>,\n tooltipContainer,\n )}\n </React.Fragment>\n );\n};\n"],"mappings":"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"}
@@ -188,12 +188,12 @@ export var Touch = function Touch(_ref) {
188
188
  if (!didSlide.current) {
189
189
  return onClickCapture && onClickCapture(e);
190
190
  }
191
- // eslint-disable-next-line no-restricted-properties
192
- if (e.target.closest('a')) {
193
- e.preventDefault();
194
- }
195
191
  if (noSlideClick) {
196
192
  e.stopPropagation();
193
+
194
+ // https://github.com/VKCOM/VKUI/issues/1977
195
+ // https://github.com/VKCOM/VKUI/issues/3892
196
+ e.preventDefault();
197
197
  } else {
198
198
  onClickCapture && onClickCapture(e);
199
199
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Touch.js","names":["React","getSupportedEvents","coordX","coordY","touchEnabled","useDOM","useExternRef","useEventListener","useIsomorphicLayoutEffect","Touch","onStart","onStartX","onStartY","_onMove","onMove","onMoveX","onMoveY","onLeave","onEnter","_onEnd","onEnd","onEndX","onEndY","onClickCapture","usePointerHover","slideThreshold","useCapture","Component","getRootRef","noSlideClick","stopPropagation","restProps","document","events","useMemo","didSlide","useRef","gesture","handle","e","handlers","forEach","cb","duration","Date","now","current","startT","getTime","originalEvent","enterHandler","leaveHandler","startHandler","initGesture","subscribe","target","capture","passive","containerRef","el","add","isPressed","isX","isY","startX","startY","shiftX","shiftY","shiftXAbs","Math","abs","shiftYAbs","touches","length","willBeX","willBeY","willBeSlidedX","willBeSlidedY","Object","assign","isSlideX","isSlideY","isSlide","Boolean","unsubscribe","listenerParams","listeners","l","remove","onDragStart","tagName","preventDefault","postGestureClick","closest"],"sources":["../../../src/components/Touch/Touch.tsx"],"sourcesContent":["import * as React from 'react';\nimport { getSupportedEvents, coordX, coordY, touchEnabled, VKUITouchEvent } from '../../lib/touch';\nimport { HasComponent, HasRootRef } from '../../types';\nimport { useDOM } from '../../lib/dom';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useEventListener } from '../../hooks/useEventListener';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\n\nexport interface TouchProps\n extends React.AllHTMLAttributes<HTMLElement>,\n HasRootRef<HTMLElement>,\n HasComponent {\n /**\n * Привязать onEnter и onLeave через pointer-events - работает на disabled-инпутах\n */\n usePointerHover?: boolean;\n useCapture?: boolean;\n slideThreshold?: number;\n noSlideClick?: boolean;\n onEnter?: HoverHandler;\n onLeave?: HoverHandler;\n onStart?: TouchEventHandler;\n onStartX?: TouchEventHandler;\n onStartY?: TouchEventHandler;\n onMove?: TouchEventHandler;\n onMoveX?: TouchEventHandler;\n onMoveY?: TouchEventHandler;\n onEnd?: TouchEventHandler;\n onEndX?: TouchEventHandler;\n onEndY?: TouchEventHandler;\n stopPropagation?: boolean;\n}\n\nexport interface Gesture {\n startX: number;\n startY: number;\n startT: Date;\n duration: number;\n isPressed: boolean;\n isY: boolean;\n isX: boolean;\n isSlideX: boolean;\n isSlideY: boolean;\n isSlide: boolean;\n shiftX: number;\n shiftY: number;\n shiftXAbs: number;\n shiftYAbs: number;\n}\n\nexport interface TouchEvent extends Gesture {\n originalEvent: VKUITouchEvent;\n}\n\ntype HoverHandler = (outputEvent: MouseEvent) => void;\nexport type TouchEventHandler = (e: TouchEvent) => void;\nexport type ClickHandler = (e: React.MouseEvent<HTMLElement>) => void;\nexport type DragHandler = (e: React.DragEvent<HTMLElement>) => void;\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Touch\n */\nexport const Touch = ({\n onStart,\n onStartX,\n onStartY,\n onMove: _onMove,\n onMoveX,\n onMoveY,\n onLeave,\n onEnter,\n onEnd: _onEnd,\n onEndX,\n onEndY,\n onClickCapture,\n usePointerHover,\n slideThreshold = 5,\n useCapture = false,\n Component = 'div',\n getRootRef,\n noSlideClick = false,\n stopPropagation = false,\n ...restProps\n}: TouchProps) => {\n const { document } = useDOM();\n const events = React.useMemo(getSupportedEvents, []);\n const didSlide = React.useRef(false);\n const gesture = React.useRef<Partial<Gesture> | null>(null);\n const handle = (e: VKUITouchEvent, handlers: Array<TouchEventHandler | undefined | false>) => {\n stopPropagation && e.stopPropagation();\n handlers.forEach((cb) => {\n const duration = Date.now() - (gesture.current?.startT?.getTime() ?? 0);\n cb && cb({ ...(gesture.current as Gesture), duration, originalEvent: e });\n });\n };\n\n const enterHandler = useEventListener(usePointerHover ? 'pointerenter' : 'mouseenter', onEnter);\n const leaveHandler = useEventListener(usePointerHover ? 'pointerleave' : 'mouseleave', onLeave);\n const startHandler = useEventListener(\n events[0],\n (e: VKUITouchEvent) => {\n gesture.current = initGesture(coordX(e), coordY(e));\n\n handle(e, [onStart, onStartX, onStartY]);\n // 1 line, 2 bad specs, 2 workarounds:\n subscribe(\n touchEnabled()\n ? // Touch events fire on initial target, and won't bubble if its removed\n // see: #235, #1968, https://stackoverflow.com/a/45760014\n (e.target as HTMLElement)\n : // Mouse events fire on the element under pointer, so we lose move / end\n // if pointer goes outside container.\n // Can be fixed by PointerEvents' setPointerCapture later\n document,\n );\n },\n { capture: useCapture, passive: false },\n );\n const containerRef = useExternRef(getRootRef);\n\n useIsomorphicLayoutEffect(() => {\n const el = containerRef.current;\n if (el) {\n enterHandler.add(el);\n leaveHandler.add(el);\n startHandler.add(el);\n }\n }, [Component]);\n\n function onMove(e: VKUITouchEvent) {\n const { isPressed, isX, isY, startX = 0, startY = 0 } = gesture.current ?? {};\n\n if (isPressed) {\n // смещения\n const shiftX = coordX(e) - startX;\n const shiftY = coordY(e) - startY;\n\n // абсолютные значения смещений\n const shiftXAbs = Math.abs(shiftX);\n const shiftYAbs = Math.abs(shiftY);\n\n // Если определяем мультитач, то прерываем жест\n if (!!e.touches && e.touches.length > 1) {\n return onEnd(e);\n }\n\n // если мы ещё не определились\n if (!isX && !isY) {\n const willBeX = shiftXAbs >= slideThreshold && shiftXAbs > shiftYAbs;\n const willBeY = shiftYAbs >= slideThreshold && shiftYAbs > shiftXAbs;\n const willBeSlidedX = willBeX && (!!onMoveX || !!_onMove);\n const willBeSlidedY = willBeY && (!!onMoveY || !!_onMove);\n\n if (gesture.current) {\n Object.assign(gesture.current, {\n isY: willBeY,\n isX: willBeX,\n isSlideX: willBeSlidedX,\n isSlideY: willBeSlidedY,\n isSlide: willBeSlidedX || willBeSlidedY,\n });\n }\n }\n\n if (gesture.current?.isSlide) {\n Object.assign(gesture.current, {\n shiftX,\n shiftY,\n shiftXAbs,\n shiftYAbs,\n });\n\n handle(e, [\n _onMove,\n gesture.current.isSlideX && onMoveX,\n gesture.current.isSlideY && onMoveY,\n ]);\n }\n }\n }\n\n function onEnd(e: VKUITouchEvent) {\n const { isPressed, isSlide, isSlideX, isSlideY } = gesture.current ?? {};\n\n if (isPressed) {\n handle(e, [_onEnd, isSlideY && onEndY, isSlideX && onEndX]);\n }\n\n didSlide.current = Boolean(isSlide);\n gesture.current = {};\n\n // Если это был тач-евент, симулируем отмену hover\n if (touchEnabled()) {\n onLeave && onLeave(e);\n }\n unsubscribe();\n }\n\n const listenerParams = { capture: useCapture, passive: false };\n const listeners = [\n useEventListener(events[1], onMove, listenerParams),\n useEventListener(events[2], onEnd, listenerParams),\n useEventListener(events[3], onEnd, listenerParams),\n ];\n function subscribe(el: HTMLElement | Document | null | undefined) {\n if (el) {\n listeners.forEach((l) => l.add(el));\n }\n }\n function unsubscribe() {\n listeners.forEach((l) => l.remove());\n }\n\n /**\n * Обработчик событий dragstart\n * Отменяет нативное браузерное поведение для вложенных ссылок и изображений\n */\n const onDragStart = (e: React.DragEvent<HTMLElement>) => {\n const target = e.target as HTMLElement;\n if (target.tagName === 'A' || target.tagName === 'IMG') {\n e.preventDefault();\n }\n };\n\n /**\n * Обработчик клика по компоненту\n * Отменяет переход по вложенной ссылке, если был зафиксирован свайп\n */\n const postGestureClick: typeof onClickCapture = (e) => {\n if (!didSlide.current) {\n return onClickCapture && onClickCapture(e);\n }\n // eslint-disable-next-line no-restricted-properties\n if ((e.target as HTMLElement).closest('a')) {\n e.preventDefault();\n }\n if (noSlideClick) {\n e.stopPropagation();\n } else {\n onClickCapture && onClickCapture(e);\n }\n didSlide.current = false;\n };\n\n return (\n <Component\n {...restProps}\n onDragStart={onDragStart}\n onClickCapture={postGestureClick}\n ref={containerRef}\n />\n );\n};\n\nfunction initGesture(startX: number, startY: number): Gesture {\n return {\n startX,\n startY,\n startT: new Date(),\n duration: 0,\n isPressed: true,\n isY: false,\n isX: false,\n isSlideX: false,\n isSlideY: false,\n isSlide: false,\n shiftX: 0,\n shiftY: 0,\n shiftXAbs: 0,\n shiftYAbs: 0,\n };\n}\n"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,kBAAkB,EAAEC,MAAM,EAAEC,MAAM,EAAEC,YAAY,QAAwB,iBAAiB;AAElG,SAASC,MAAM,QAAQ,eAAe;AACtC,SAASC,YAAY,QAAQ,0BAA0B;AACvD,SAASC,gBAAgB,QAAQ,8BAA8B;AAC/D,SAASC,yBAAyB,QAAQ,qCAAqC;AAqD/E;AACA;AACA;AACA,OAAO,IAAMC,KAAK,GAAG,SAARA,KAAK,OAqBA;EAAA,IApBhBC,OAAO,QAAPA,OAAO;IACPC,QAAQ,QAARA,QAAQ;IACRC,QAAQ,QAARA,QAAQ;IACAC,OAAO,QAAfC,MAAM;IACNC,OAAO,QAAPA,OAAO;IACPC,OAAO,QAAPA,OAAO;IACPC,OAAO,QAAPA,OAAO;IACPC,OAAO,QAAPA,OAAO;IACAC,MAAM,QAAbC,KAAK;IACLC,MAAM,QAANA,MAAM;IACNC,MAAM,QAANA,MAAM;IACNC,cAAc,QAAdA,cAAc;IACdC,eAAe,QAAfA,eAAe;IAAA,2BACfC,cAAc;IAAdA,cAAc,oCAAG,CAAC;IAAA,uBAClBC,UAAU;IAAVA,UAAU,gCAAG,KAAK;IAAA,sBAClBC,SAAS;IAATA,SAAS,+BAAG,KAAK;IACjBC,UAAU,QAAVA,UAAU;IAAA,yBACVC,YAAY;IAAZA,YAAY,kCAAG,KAAK;IAAA,4BACpBC,eAAe;IAAfA,eAAe,qCAAG,KAAK;IACpBC,SAAS;EAEZ,cAAqB1B,MAAM,EAAE;IAArB2B,QAAQ,WAARA,QAAQ;EAChB,IAAMC,MAAM,GAAGjC,KAAK,CAACkC,OAAO,CAACjC,kBAAkB,EAAE,EAAE,CAAC;EACpD,IAAMkC,QAAQ,GAAGnC,KAAK,CAACoC,MAAM,CAAC,KAAK,CAAC;EACpC,IAAMC,OAAO,GAAGrC,KAAK,CAACoC,MAAM,CAA0B,IAAI,CAAC;EAC3D,IAAME,MAAM,GAAG,SAATA,MAAM,CAAIC,CAAiB,EAAEC,QAAsD,EAAK;IAC5FV,eAAe,IAAIS,CAAC,CAACT,eAAe,EAAE;IACtCU,QAAQ,CAACC,OAAO,CAAC,UAACC,EAAE,EAAK;MAAA;MACvB,IAAMC,QAAQ,GAAGC,IAAI,CAACC,GAAG,EAAE,iDAAIR,OAAO,CAACS,OAAO,+EAAf,iBAAiBC,MAAM,2DAAvB,uBAAyBC,OAAO,EAAE,yEAAI,CAAC,CAAC;MACvEN,EAAE,IAAIA,EAAE,iCAAOL,OAAO,CAACS,OAAO;QAAcH,QAAQ,EAARA,QAAQ;QAAEM,aAAa,EAAEV;MAAC,GAAG;IAC3E,CAAC,CAAC;EACJ,CAAC;EAED,IAAMW,YAAY,GAAG3C,gBAAgB,CAACiB,eAAe,GAAG,cAAc,GAAG,YAAY,EAAEN,OAAO,CAAC;EAC/F,IAAMiC,YAAY,GAAG5C,gBAAgB,CAACiB,eAAe,GAAG,cAAc,GAAG,YAAY,EAAEP,OAAO,CAAC;EAC/F,IAAMmC,YAAY,GAAG7C,gBAAgB,CACnC0B,MAAM,CAAC,CAAC,CAAC,EACT,UAACM,CAAiB,EAAK;IACrBF,OAAO,CAACS,OAAO,GAAGO,WAAW,CAACnD,MAAM,CAACqC,CAAC,CAAC,EAAEpC,MAAM,CAACoC,CAAC,CAAC,CAAC;IAEnDD,MAAM,CAACC,CAAC,EAAE,CAAC7B,OAAO,EAAEC,QAAQ,EAAEC,QAAQ,CAAC,CAAC;IACxC;IACA0C,SAAS,CACPlD,YAAY,EAAE;IACV;IACA;IACCmC,CAAC,CAACgB,MAAM;IACT;IACA;IACA;IACAvB,QAAQ,CACb;EACH,CAAC,EACD;IAAEwB,OAAO,EAAE9B,UAAU;IAAE+B,OAAO,EAAE;EAAM,CAAC,CACxC;EACD,IAAMC,YAAY,GAAGpD,YAAY,CAACsB,UAAU,CAAC;EAE7CpB,yBAAyB,CAAC,YAAM;IAC9B,IAAMmD,EAAE,GAAGD,YAAY,CAACZ,OAAO;IAC/B,IAAIa,EAAE,EAAE;MACNT,YAAY,CAACU,GAAG,CAACD,EAAE,CAAC;MACpBR,YAAY,CAACS,GAAG,CAACD,EAAE,CAAC;MACpBP,YAAY,CAACQ,GAAG,CAACD,EAAE,CAAC;IACtB;EACF,CAAC,EAAE,CAAChC,SAAS,CAAC,CAAC;EAEf,SAASb,MAAM,CAACyB,CAAiB,EAAE;IAAA;IACjC,iCAAwDF,OAAO,CAACS,OAAO,iEAAI,CAAC,CAAC;MAArEe,SAAS,SAATA,SAAS;MAAEC,GAAG,SAAHA,GAAG;MAAEC,GAAG,SAAHA,GAAG;MAAA,qBAAEC,MAAM;MAANA,MAAM,6BAAG,CAAC;MAAA,qBAAEC,MAAM;MAANA,MAAM,6BAAG,CAAC;IAEnD,IAAIJ,SAAS,EAAE;MAAA;MACb;MACA,IAAMK,MAAM,GAAGhE,MAAM,CAACqC,CAAC,CAAC,GAAGyB,MAAM;MACjC,IAAMG,MAAM,GAAGhE,MAAM,CAACoC,CAAC,CAAC,GAAG0B,MAAM;;MAEjC;MACA,IAAMG,SAAS,GAAGC,IAAI,CAACC,GAAG,CAACJ,MAAM,CAAC;MAClC,IAAMK,SAAS,GAAGF,IAAI,CAACC,GAAG,CAACH,MAAM,CAAC;;MAElC;MACA,IAAI,CAAC,CAAC5B,CAAC,CAACiC,OAAO,IAAIjC,CAAC,CAACiC,OAAO,CAACC,MAAM,GAAG,CAAC,EAAE;QACvC,OAAOrD,KAAK,CAACmB,CAAC,CAAC;MACjB;;MAEA;MACA,IAAI,CAACuB,GAAG,IAAI,CAACC,GAAG,EAAE;QAChB,IAAMW,OAAO,GAAGN,SAAS,IAAI3C,cAAc,IAAI2C,SAAS,GAAGG,SAAS;QACpE,IAAMI,OAAO,GAAGJ,SAAS,IAAI9C,cAAc,IAAI8C,SAAS,GAAGH,SAAS;QACpE,IAAMQ,aAAa,GAAGF,OAAO,KAAK,CAAC,CAAC3D,OAAO,IAAI,CAAC,CAACF,OAAO,CAAC;QACzD,IAAMgE,aAAa,GAAGF,OAAO,KAAK,CAAC,CAAC3D,OAAO,IAAI,CAAC,CAACH,OAAO,CAAC;QAEzD,IAAIwB,OAAO,CAACS,OAAO,EAAE;UACnBgC,MAAM,CAACC,MAAM,CAAC1C,OAAO,CAACS,OAAO,EAAE;YAC7BiB,GAAG,EAAEY,OAAO;YACZb,GAAG,EAAEY,OAAO;YACZM,QAAQ,EAAEJ,aAAa;YACvBK,QAAQ,EAAEJ,aAAa;YACvBK,OAAO,EAAEN,aAAa,IAAIC;UAC5B,CAAC,CAAC;QACJ;MACF;MAEA,yBAAIxC,OAAO,CAACS,OAAO,8CAAf,kBAAiBoC,OAAO,EAAE;QAC5BJ,MAAM,CAACC,MAAM,CAAC1C,OAAO,CAACS,OAAO,EAAE;UAC7BoB,MAAM,EAANA,MAAM;UACNC,MAAM,EAANA,MAAM;UACNC,SAAS,EAATA,SAAS;UACTG,SAAS,EAATA;QACF,CAAC,CAAC;QAEFjC,MAAM,CAACC,CAAC,EAAE,CACR1B,OAAO,EACPwB,OAAO,CAACS,OAAO,CAACkC,QAAQ,IAAIjE,OAAO,EACnCsB,OAAO,CAACS,OAAO,CAACmC,QAAQ,IAAIjE,OAAO,CACpC,CAAC;MACJ;IACF;EACF;EAEA,SAASI,KAAK,CAACmB,CAAiB,EAAE;IAAA;IAChC,iCAAmDF,OAAO,CAACS,OAAO,iEAAI,CAAC,CAAC;MAAhEe,SAAS,SAATA,SAAS;MAAEqB,OAAO,SAAPA,OAAO;MAAEF,QAAQ,SAARA,QAAQ;MAAEC,QAAQ,SAARA,QAAQ;IAE9C,IAAIpB,SAAS,EAAE;MACbvB,MAAM,CAACC,CAAC,EAAE,CAACpB,MAAM,EAAE8D,QAAQ,IAAI3D,MAAM,EAAE0D,QAAQ,IAAI3D,MAAM,CAAC,CAAC;IAC7D;IAEAc,QAAQ,CAACW,OAAO,GAAGqC,OAAO,CAACD,OAAO,CAAC;IACnC7C,OAAO,CAACS,OAAO,GAAG,CAAC,CAAC;;IAEpB;IACA,IAAI1C,YAAY,EAAE,EAAE;MAClBa,OAAO,IAAIA,OAAO,CAACsB,CAAC,CAAC;IACvB;IACA6C,WAAW,EAAE;EACf;EAEA,IAAMC,cAAc,GAAG;IAAE7B,OAAO,EAAE9B,UAAU;IAAE+B,OAAO,EAAE;EAAM,CAAC;EAC9D,IAAM6B,SAAS,GAAG,CAChB/E,gBAAgB,CAAC0B,MAAM,CAAC,CAAC,CAAC,EAAEnB,MAAM,EAAEuE,cAAc,CAAC,EACnD9E,gBAAgB,CAAC0B,MAAM,CAAC,CAAC,CAAC,EAAEb,KAAK,EAAEiE,cAAc,CAAC,EAClD9E,gBAAgB,CAAC0B,MAAM,CAAC,CAAC,CAAC,EAAEb,KAAK,EAAEiE,cAAc,CAAC,CACnD;EACD,SAAS/B,SAAS,CAACK,EAA6C,EAAE;IAChE,IAAIA,EAAE,EAAE;MACN2B,SAAS,CAAC7C,OAAO,CAAC,UAAC8C,CAAC;QAAA,OAAKA,CAAC,CAAC3B,GAAG,CAACD,EAAE,CAAC;MAAA,EAAC;IACrC;EACF;EACA,SAASyB,WAAW,GAAG;IACrBE,SAAS,CAAC7C,OAAO,CAAC,UAAC8C,CAAC;MAAA,OAAKA,CAAC,CAACC,MAAM,EAAE;IAAA,EAAC;EACtC;;EAEA;AACF;AACA;AACA;EACE,IAAMC,WAAW,GAAG,SAAdA,WAAW,CAAIlD,CAA+B,EAAK;IACvD,IAAMgB,MAAM,GAAGhB,CAAC,CAACgB,MAAqB;IACtC,IAAIA,MAAM,CAACmC,OAAO,KAAK,GAAG,IAAInC,MAAM,CAACmC,OAAO,KAAK,KAAK,EAAE;MACtDnD,CAAC,CAACoD,cAAc,EAAE;IACpB;EACF,CAAC;;EAED;AACF;AACA;AACA;EACE,IAAMC,gBAAuC,GAAG,SAA1CA,gBAAuC,CAAIrD,CAAC,EAAK;IACrD,IAAI,CAACJ,QAAQ,CAACW,OAAO,EAAE;MACrB,OAAOvB,cAAc,IAAIA,cAAc,CAACgB,CAAC,CAAC;IAC5C;IACA;IACA,IAAKA,CAAC,CAACgB,MAAM,CAAiBsC,OAAO,CAAC,GAAG,CAAC,EAAE;MAC1CtD,CAAC,CAACoD,cAAc,EAAE;IACpB;IACA,IAAI9D,YAAY,EAAE;MAChBU,CAAC,CAACT,eAAe,EAAE;IACrB,CAAC,MAAM;MACLP,cAAc,IAAIA,cAAc,CAACgB,CAAC,CAAC;IACrC;IACAJ,QAAQ,CAACW,OAAO,GAAG,KAAK;EAC1B,CAAC;EAED,oBACE,oBAAC,SAAS,eACJf,SAAS;IACb,WAAW,EAAE0D,WAAY;IACzB,cAAc,EAAEG,gBAAiB;IACjC,GAAG,EAAElC;EAAa,GAClB;AAEN,CAAC;AAED,SAASL,WAAW,CAACW,MAAc,EAAEC,MAAc,EAAW;EAC5D,OAAO;IACLD,MAAM,EAANA,MAAM;IACNC,MAAM,EAANA,MAAM;IACNlB,MAAM,EAAE,IAAIH,IAAI,EAAE;IAClBD,QAAQ,EAAE,CAAC;IACXkB,SAAS,EAAE,IAAI;IACfE,GAAG,EAAE,KAAK;IACVD,GAAG,EAAE,KAAK;IACVkB,QAAQ,EAAE,KAAK;IACfC,QAAQ,EAAE,KAAK;IACfC,OAAO,EAAE,KAAK;IACdhB,MAAM,EAAE,CAAC;IACTC,MAAM,EAAE,CAAC;IACTC,SAAS,EAAE,CAAC;IACZG,SAAS,EAAE;EACb,CAAC;AACH"}
1
+ {"version":3,"file":"Touch.js","names":["React","getSupportedEvents","coordX","coordY","touchEnabled","useDOM","useExternRef","useEventListener","useIsomorphicLayoutEffect","Touch","onStart","onStartX","onStartY","_onMove","onMove","onMoveX","onMoveY","onLeave","onEnter","_onEnd","onEnd","onEndX","onEndY","onClickCapture","usePointerHover","slideThreshold","useCapture","Component","getRootRef","noSlideClick","stopPropagation","restProps","document","events","useMemo","didSlide","useRef","gesture","handle","e","handlers","forEach","cb","duration","Date","now","current","startT","getTime","originalEvent","enterHandler","leaveHandler","startHandler","initGesture","subscribe","target","capture","passive","containerRef","el","add","isPressed","isX","isY","startX","startY","shiftX","shiftY","shiftXAbs","Math","abs","shiftYAbs","touches","length","willBeX","willBeY","willBeSlidedX","willBeSlidedY","Object","assign","isSlideX","isSlideY","isSlide","Boolean","unsubscribe","listenerParams","listeners","l","remove","onDragStart","tagName","preventDefault","postGestureClick"],"sources":["../../../src/components/Touch/Touch.tsx"],"sourcesContent":["import * as React from 'react';\nimport { getSupportedEvents, coordX, coordY, touchEnabled, VKUITouchEvent } from '../../lib/touch';\nimport { HasComponent, HasRootRef } from '../../types';\nimport { useDOM } from '../../lib/dom';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useEventListener } from '../../hooks/useEventListener';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\n\nexport interface TouchProps\n extends React.AllHTMLAttributes<HTMLElement>,\n HasRootRef<HTMLElement>,\n HasComponent {\n /**\n * Привязать onEnter и onLeave через pointer-events - работает на disabled-инпутах\n */\n usePointerHover?: boolean;\n useCapture?: boolean;\n slideThreshold?: number;\n noSlideClick?: boolean;\n onEnter?: HoverHandler;\n onLeave?: HoverHandler;\n onStart?: TouchEventHandler;\n onStartX?: TouchEventHandler;\n onStartY?: TouchEventHandler;\n onMove?: TouchEventHandler;\n onMoveX?: TouchEventHandler;\n onMoveY?: TouchEventHandler;\n onEnd?: TouchEventHandler;\n onEndX?: TouchEventHandler;\n onEndY?: TouchEventHandler;\n stopPropagation?: boolean;\n}\n\nexport interface Gesture {\n startX: number;\n startY: number;\n startT: Date;\n duration: number;\n isPressed: boolean;\n isY: boolean;\n isX: boolean;\n isSlideX: boolean;\n isSlideY: boolean;\n isSlide: boolean;\n shiftX: number;\n shiftY: number;\n shiftXAbs: number;\n shiftYAbs: number;\n}\n\nexport interface TouchEvent extends Gesture {\n originalEvent: VKUITouchEvent;\n}\n\ntype HoverHandler = (outputEvent: MouseEvent) => void;\nexport type TouchEventHandler = (e: TouchEvent) => void;\nexport type ClickHandler = (e: React.MouseEvent<HTMLElement>) => void;\nexport type DragHandler = (e: React.DragEvent<HTMLElement>) => void;\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Touch\n */\nexport const Touch = ({\n onStart,\n onStartX,\n onStartY,\n onMove: _onMove,\n onMoveX,\n onMoveY,\n onLeave,\n onEnter,\n onEnd: _onEnd,\n onEndX,\n onEndY,\n onClickCapture,\n usePointerHover,\n slideThreshold = 5,\n useCapture = false,\n Component = 'div',\n getRootRef,\n noSlideClick = false,\n stopPropagation = false,\n ...restProps\n}: TouchProps) => {\n const { document } = useDOM();\n const events = React.useMemo(getSupportedEvents, []);\n const didSlide = React.useRef(false);\n const gesture = React.useRef<Partial<Gesture> | null>(null);\n const handle = (e: VKUITouchEvent, handlers: Array<TouchEventHandler | undefined | false>) => {\n stopPropagation && e.stopPropagation();\n handlers.forEach((cb) => {\n const duration = Date.now() - (gesture.current?.startT?.getTime() ?? 0);\n cb && cb({ ...(gesture.current as Gesture), duration, originalEvent: e });\n });\n };\n\n const enterHandler = useEventListener(usePointerHover ? 'pointerenter' : 'mouseenter', onEnter);\n const leaveHandler = useEventListener(usePointerHover ? 'pointerleave' : 'mouseleave', onLeave);\n const startHandler = useEventListener(\n events[0],\n (e: VKUITouchEvent) => {\n gesture.current = initGesture(coordX(e), coordY(e));\n\n handle(e, [onStart, onStartX, onStartY]);\n // 1 line, 2 bad specs, 2 workarounds:\n subscribe(\n touchEnabled()\n ? // Touch events fire on initial target, and won't bubble if its removed\n // see: #235, #1968, https://stackoverflow.com/a/45760014\n (e.target as HTMLElement)\n : // Mouse events fire on the element under pointer, so we lose move / end\n // if pointer goes outside container.\n // Can be fixed by PointerEvents' setPointerCapture later\n document,\n );\n },\n { capture: useCapture, passive: false },\n );\n const containerRef = useExternRef(getRootRef);\n\n useIsomorphicLayoutEffect(() => {\n const el = containerRef.current;\n if (el) {\n enterHandler.add(el);\n leaveHandler.add(el);\n startHandler.add(el);\n }\n }, [Component]);\n\n function onMove(e: VKUITouchEvent) {\n const { isPressed, isX, isY, startX = 0, startY = 0 } = gesture.current ?? {};\n\n if (isPressed) {\n // смещения\n const shiftX = coordX(e) - startX;\n const shiftY = coordY(e) - startY;\n\n // абсолютные значения смещений\n const shiftXAbs = Math.abs(shiftX);\n const shiftYAbs = Math.abs(shiftY);\n\n // Если определяем мультитач, то прерываем жест\n if (!!e.touches && e.touches.length > 1) {\n return onEnd(e);\n }\n\n // если мы ещё не определились\n if (!isX && !isY) {\n const willBeX = shiftXAbs >= slideThreshold && shiftXAbs > shiftYAbs;\n const willBeY = shiftYAbs >= slideThreshold && shiftYAbs > shiftXAbs;\n const willBeSlidedX = willBeX && (!!onMoveX || !!_onMove);\n const willBeSlidedY = willBeY && (!!onMoveY || !!_onMove);\n\n if (gesture.current) {\n Object.assign(gesture.current, {\n isY: willBeY,\n isX: willBeX,\n isSlideX: willBeSlidedX,\n isSlideY: willBeSlidedY,\n isSlide: willBeSlidedX || willBeSlidedY,\n });\n }\n }\n\n if (gesture.current?.isSlide) {\n Object.assign(gesture.current, {\n shiftX,\n shiftY,\n shiftXAbs,\n shiftYAbs,\n });\n\n handle(e, [\n _onMove,\n gesture.current.isSlideX && onMoveX,\n gesture.current.isSlideY && onMoveY,\n ]);\n }\n }\n }\n\n function onEnd(e: VKUITouchEvent) {\n const { isPressed, isSlide, isSlideX, isSlideY } = gesture.current ?? {};\n\n if (isPressed) {\n handle(e, [_onEnd, isSlideY && onEndY, isSlideX && onEndX]);\n }\n\n didSlide.current = Boolean(isSlide);\n gesture.current = {};\n\n // Если это был тач-евент, симулируем отмену hover\n if (touchEnabled()) {\n onLeave && onLeave(e);\n }\n unsubscribe();\n }\n\n const listenerParams = { capture: useCapture, passive: false };\n const listeners = [\n useEventListener(events[1], onMove, listenerParams),\n useEventListener(events[2], onEnd, listenerParams),\n useEventListener(events[3], onEnd, listenerParams),\n ];\n function subscribe(el: HTMLElement | Document | null | undefined) {\n if (el) {\n listeners.forEach((l) => l.add(el));\n }\n }\n function unsubscribe() {\n listeners.forEach((l) => l.remove());\n }\n\n /**\n * Обработчик событий dragstart\n * Отменяет нативное браузерное поведение для вложенных ссылок и изображений\n */\n const onDragStart = (e: React.DragEvent<HTMLElement>) => {\n const target = e.target as HTMLElement;\n if (target.tagName === 'A' || target.tagName === 'IMG') {\n e.preventDefault();\n }\n };\n\n /**\n * Обработчик клика по компоненту\n * Отменяет переход по вложенной ссылке, если был зафиксирован свайп\n */\n const postGestureClick: typeof onClickCapture = (e) => {\n if (!didSlide.current) {\n return onClickCapture && onClickCapture(e);\n }\n\n if (noSlideClick) {\n e.stopPropagation();\n\n // https://github.com/VKCOM/VKUI/issues/1977\n // https://github.com/VKCOM/VKUI/issues/3892\n e.preventDefault();\n } else {\n onClickCapture && onClickCapture(e);\n }\n\n didSlide.current = false;\n };\n\n return (\n <Component\n {...restProps}\n onDragStart={onDragStart}\n onClickCapture={postGestureClick}\n ref={containerRef}\n />\n );\n};\n\nfunction initGesture(startX: number, startY: number): Gesture {\n return {\n startX,\n startY,\n startT: new Date(),\n duration: 0,\n isPressed: true,\n isY: false,\n isX: false,\n isSlideX: false,\n isSlideY: false,\n isSlide: false,\n shiftX: 0,\n shiftY: 0,\n shiftXAbs: 0,\n shiftYAbs: 0,\n };\n}\n"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,kBAAkB,EAAEC,MAAM,EAAEC,MAAM,EAAEC,YAAY,QAAwB,iBAAiB;AAElG,SAASC,MAAM,QAAQ,eAAe;AACtC,SAASC,YAAY,QAAQ,0BAA0B;AACvD,SAASC,gBAAgB,QAAQ,8BAA8B;AAC/D,SAASC,yBAAyB,QAAQ,qCAAqC;AAqD/E;AACA;AACA;AACA,OAAO,IAAMC,KAAK,GAAG,SAARA,KAAK,OAqBA;EAAA,IApBhBC,OAAO,QAAPA,OAAO;IACPC,QAAQ,QAARA,QAAQ;IACRC,QAAQ,QAARA,QAAQ;IACAC,OAAO,QAAfC,MAAM;IACNC,OAAO,QAAPA,OAAO;IACPC,OAAO,QAAPA,OAAO;IACPC,OAAO,QAAPA,OAAO;IACPC,OAAO,QAAPA,OAAO;IACAC,MAAM,QAAbC,KAAK;IACLC,MAAM,QAANA,MAAM;IACNC,MAAM,QAANA,MAAM;IACNC,cAAc,QAAdA,cAAc;IACdC,eAAe,QAAfA,eAAe;IAAA,2BACfC,cAAc;IAAdA,cAAc,oCAAG,CAAC;IAAA,uBAClBC,UAAU;IAAVA,UAAU,gCAAG,KAAK;IAAA,sBAClBC,SAAS;IAATA,SAAS,+BAAG,KAAK;IACjBC,UAAU,QAAVA,UAAU;IAAA,yBACVC,YAAY;IAAZA,YAAY,kCAAG,KAAK;IAAA,4BACpBC,eAAe;IAAfA,eAAe,qCAAG,KAAK;IACpBC,SAAS;EAEZ,cAAqB1B,MAAM,EAAE;IAArB2B,QAAQ,WAARA,QAAQ;EAChB,IAAMC,MAAM,GAAGjC,KAAK,CAACkC,OAAO,CAACjC,kBAAkB,EAAE,EAAE,CAAC;EACpD,IAAMkC,QAAQ,GAAGnC,KAAK,CAACoC,MAAM,CAAC,KAAK,CAAC;EACpC,IAAMC,OAAO,GAAGrC,KAAK,CAACoC,MAAM,CAA0B,IAAI,CAAC;EAC3D,IAAME,MAAM,GAAG,SAATA,MAAM,CAAIC,CAAiB,EAAEC,QAAsD,EAAK;IAC5FV,eAAe,IAAIS,CAAC,CAACT,eAAe,EAAE;IACtCU,QAAQ,CAACC,OAAO,CAAC,UAACC,EAAE,EAAK;MAAA;MACvB,IAAMC,QAAQ,GAAGC,IAAI,CAACC,GAAG,EAAE,iDAAIR,OAAO,CAACS,OAAO,+EAAf,iBAAiBC,MAAM,2DAAvB,uBAAyBC,OAAO,EAAE,yEAAI,CAAC,CAAC;MACvEN,EAAE,IAAIA,EAAE,iCAAOL,OAAO,CAACS,OAAO;QAAcH,QAAQ,EAARA,QAAQ;QAAEM,aAAa,EAAEV;MAAC,GAAG;IAC3E,CAAC,CAAC;EACJ,CAAC;EAED,IAAMW,YAAY,GAAG3C,gBAAgB,CAACiB,eAAe,GAAG,cAAc,GAAG,YAAY,EAAEN,OAAO,CAAC;EAC/F,IAAMiC,YAAY,GAAG5C,gBAAgB,CAACiB,eAAe,GAAG,cAAc,GAAG,YAAY,EAAEP,OAAO,CAAC;EAC/F,IAAMmC,YAAY,GAAG7C,gBAAgB,CACnC0B,MAAM,CAAC,CAAC,CAAC,EACT,UAACM,CAAiB,EAAK;IACrBF,OAAO,CAACS,OAAO,GAAGO,WAAW,CAACnD,MAAM,CAACqC,CAAC,CAAC,EAAEpC,MAAM,CAACoC,CAAC,CAAC,CAAC;IAEnDD,MAAM,CAACC,CAAC,EAAE,CAAC7B,OAAO,EAAEC,QAAQ,EAAEC,QAAQ,CAAC,CAAC;IACxC;IACA0C,SAAS,CACPlD,YAAY,EAAE;IACV;IACA;IACCmC,CAAC,CAACgB,MAAM;IACT;IACA;IACA;IACAvB,QAAQ,CACb;EACH,CAAC,EACD;IAAEwB,OAAO,EAAE9B,UAAU;IAAE+B,OAAO,EAAE;EAAM,CAAC,CACxC;EACD,IAAMC,YAAY,GAAGpD,YAAY,CAACsB,UAAU,CAAC;EAE7CpB,yBAAyB,CAAC,YAAM;IAC9B,IAAMmD,EAAE,GAAGD,YAAY,CAACZ,OAAO;IAC/B,IAAIa,EAAE,EAAE;MACNT,YAAY,CAACU,GAAG,CAACD,EAAE,CAAC;MACpBR,YAAY,CAACS,GAAG,CAACD,EAAE,CAAC;MACpBP,YAAY,CAACQ,GAAG,CAACD,EAAE,CAAC;IACtB;EACF,CAAC,EAAE,CAAChC,SAAS,CAAC,CAAC;EAEf,SAASb,MAAM,CAACyB,CAAiB,EAAE;IAAA;IACjC,iCAAwDF,OAAO,CAACS,OAAO,iEAAI,CAAC,CAAC;MAArEe,SAAS,SAATA,SAAS;MAAEC,GAAG,SAAHA,GAAG;MAAEC,GAAG,SAAHA,GAAG;MAAA,qBAAEC,MAAM;MAANA,MAAM,6BAAG,CAAC;MAAA,qBAAEC,MAAM;MAANA,MAAM,6BAAG,CAAC;IAEnD,IAAIJ,SAAS,EAAE;MAAA;MACb;MACA,IAAMK,MAAM,GAAGhE,MAAM,CAACqC,CAAC,CAAC,GAAGyB,MAAM;MACjC,IAAMG,MAAM,GAAGhE,MAAM,CAACoC,CAAC,CAAC,GAAG0B,MAAM;;MAEjC;MACA,IAAMG,SAAS,GAAGC,IAAI,CAACC,GAAG,CAACJ,MAAM,CAAC;MAClC,IAAMK,SAAS,GAAGF,IAAI,CAACC,GAAG,CAACH,MAAM,CAAC;;MAElC;MACA,IAAI,CAAC,CAAC5B,CAAC,CAACiC,OAAO,IAAIjC,CAAC,CAACiC,OAAO,CAACC,MAAM,GAAG,CAAC,EAAE;QACvC,OAAOrD,KAAK,CAACmB,CAAC,CAAC;MACjB;;MAEA;MACA,IAAI,CAACuB,GAAG,IAAI,CAACC,GAAG,EAAE;QAChB,IAAMW,OAAO,GAAGN,SAAS,IAAI3C,cAAc,IAAI2C,SAAS,GAAGG,SAAS;QACpE,IAAMI,OAAO,GAAGJ,SAAS,IAAI9C,cAAc,IAAI8C,SAAS,GAAGH,SAAS;QACpE,IAAMQ,aAAa,GAAGF,OAAO,KAAK,CAAC,CAAC3D,OAAO,IAAI,CAAC,CAACF,OAAO,CAAC;QACzD,IAAMgE,aAAa,GAAGF,OAAO,KAAK,CAAC,CAAC3D,OAAO,IAAI,CAAC,CAACH,OAAO,CAAC;QAEzD,IAAIwB,OAAO,CAACS,OAAO,EAAE;UACnBgC,MAAM,CAACC,MAAM,CAAC1C,OAAO,CAACS,OAAO,EAAE;YAC7BiB,GAAG,EAAEY,OAAO;YACZb,GAAG,EAAEY,OAAO;YACZM,QAAQ,EAAEJ,aAAa;YACvBK,QAAQ,EAAEJ,aAAa;YACvBK,OAAO,EAAEN,aAAa,IAAIC;UAC5B,CAAC,CAAC;QACJ;MACF;MAEA,yBAAIxC,OAAO,CAACS,OAAO,8CAAf,kBAAiBoC,OAAO,EAAE;QAC5BJ,MAAM,CAACC,MAAM,CAAC1C,OAAO,CAACS,OAAO,EAAE;UAC7BoB,MAAM,EAANA,MAAM;UACNC,MAAM,EAANA,MAAM;UACNC,SAAS,EAATA,SAAS;UACTG,SAAS,EAATA;QACF,CAAC,CAAC;QAEFjC,MAAM,CAACC,CAAC,EAAE,CACR1B,OAAO,EACPwB,OAAO,CAACS,OAAO,CAACkC,QAAQ,IAAIjE,OAAO,EACnCsB,OAAO,CAACS,OAAO,CAACmC,QAAQ,IAAIjE,OAAO,CACpC,CAAC;MACJ;IACF;EACF;EAEA,SAASI,KAAK,CAACmB,CAAiB,EAAE;IAAA;IAChC,iCAAmDF,OAAO,CAACS,OAAO,iEAAI,CAAC,CAAC;MAAhEe,SAAS,SAATA,SAAS;MAAEqB,OAAO,SAAPA,OAAO;MAAEF,QAAQ,SAARA,QAAQ;MAAEC,QAAQ,SAARA,QAAQ;IAE9C,IAAIpB,SAAS,EAAE;MACbvB,MAAM,CAACC,CAAC,EAAE,CAACpB,MAAM,EAAE8D,QAAQ,IAAI3D,MAAM,EAAE0D,QAAQ,IAAI3D,MAAM,CAAC,CAAC;IAC7D;IAEAc,QAAQ,CAACW,OAAO,GAAGqC,OAAO,CAACD,OAAO,CAAC;IACnC7C,OAAO,CAACS,OAAO,GAAG,CAAC,CAAC;;IAEpB;IACA,IAAI1C,YAAY,EAAE,EAAE;MAClBa,OAAO,IAAIA,OAAO,CAACsB,CAAC,CAAC;IACvB;IACA6C,WAAW,EAAE;EACf;EAEA,IAAMC,cAAc,GAAG;IAAE7B,OAAO,EAAE9B,UAAU;IAAE+B,OAAO,EAAE;EAAM,CAAC;EAC9D,IAAM6B,SAAS,GAAG,CAChB/E,gBAAgB,CAAC0B,MAAM,CAAC,CAAC,CAAC,EAAEnB,MAAM,EAAEuE,cAAc,CAAC,EACnD9E,gBAAgB,CAAC0B,MAAM,CAAC,CAAC,CAAC,EAAEb,KAAK,EAAEiE,cAAc,CAAC,EAClD9E,gBAAgB,CAAC0B,MAAM,CAAC,CAAC,CAAC,EAAEb,KAAK,EAAEiE,cAAc,CAAC,CACnD;EACD,SAAS/B,SAAS,CAACK,EAA6C,EAAE;IAChE,IAAIA,EAAE,EAAE;MACN2B,SAAS,CAAC7C,OAAO,CAAC,UAAC8C,CAAC;QAAA,OAAKA,CAAC,CAAC3B,GAAG,CAACD,EAAE,CAAC;MAAA,EAAC;IACrC;EACF;EACA,SAASyB,WAAW,GAAG;IACrBE,SAAS,CAAC7C,OAAO,CAAC,UAAC8C,CAAC;MAAA,OAAKA,CAAC,CAACC,MAAM,EAAE;IAAA,EAAC;EACtC;;EAEA;AACF;AACA;AACA;EACE,IAAMC,WAAW,GAAG,SAAdA,WAAW,CAAIlD,CAA+B,EAAK;IACvD,IAAMgB,MAAM,GAAGhB,CAAC,CAACgB,MAAqB;IACtC,IAAIA,MAAM,CAACmC,OAAO,KAAK,GAAG,IAAInC,MAAM,CAACmC,OAAO,KAAK,KAAK,EAAE;MACtDnD,CAAC,CAACoD,cAAc,EAAE;IACpB;EACF,CAAC;;EAED;AACF;AACA;AACA;EACE,IAAMC,gBAAuC,GAAG,SAA1CA,gBAAuC,CAAIrD,CAAC,EAAK;IACrD,IAAI,CAACJ,QAAQ,CAACW,OAAO,EAAE;MACrB,OAAOvB,cAAc,IAAIA,cAAc,CAACgB,CAAC,CAAC;IAC5C;IAEA,IAAIV,YAAY,EAAE;MAChBU,CAAC,CAACT,eAAe,EAAE;;MAEnB;MACA;MACAS,CAAC,CAACoD,cAAc,EAAE;IACpB,CAAC,MAAM;MACLpE,cAAc,IAAIA,cAAc,CAACgB,CAAC,CAAC;IACrC;IAEAJ,QAAQ,CAACW,OAAO,GAAG,KAAK;EAC1B,CAAC;EAED,oBACE,oBAAC,SAAS,eACJf,SAAS;IACb,WAAW,EAAE0D,WAAY;IACzB,cAAc,EAAEG,gBAAiB;IACjC,GAAG,EAAElC;EAAa,GAClB;AAEN,CAAC;AAED,SAASL,WAAW,CAACW,MAAc,EAAEC,MAAc,EAAW;EAC5D,OAAO;IACLD,MAAM,EAANA,MAAM;IACNC,MAAM,EAANA,MAAM;IACNlB,MAAM,EAAE,IAAIH,IAAI,EAAE;IAClBD,QAAQ,EAAE,CAAC;IACXkB,SAAS,EAAE,IAAI;IACfE,GAAG,EAAE,KAAK;IACVD,GAAG,EAAE,KAAK;IACVkB,QAAQ,EAAE,KAAK;IACfC,QAAQ,EAAE,KAAK;IACfC,OAAO,EAAE,KAAK;IACdhB,MAAM,EAAE,CAAC;IACTC,MAAM,EAAE,CAAC;IACTC,SAAS,EAAE,CAAC;IACZG,SAAS,EAAE;EACb,CAAC;AACH"}
@@ -8,7 +8,7 @@ import { animationEvent } from '../../lib/supportEvents';
8
8
  import { Platform } from '../../lib/platform';
9
9
  import { Touch } from '../Touch/Touch';
10
10
  import { useConfigProvider } from '../ConfigProvider/ConfigProviderContext';
11
- import { useSplitCol } from '../SplitCol/SplitCol';
11
+ import { useSplitCol } from '../SplitCol/SplitColContext';
12
12
  import { canUseDOM, useDOM, blurActiveElement } from '../../lib/dom';
13
13
  import { useScroll } from '../AppRoot/ScrollContext';
14
14
  import { NavTransitionProvider } from '../NavTransitionContext/NavTransitionContext';
@@ -1 +1 @@
1
- {"version":3,"file":"View.js","names":["React","classNames","noop","animationEvent","Platform","Touch","useConfigProvider","useSplitCol","canUseDOM","useDOM","blurActiveElement","useScroll","NavTransitionProvider","getNavId","warnOnce","usePlatform","swipeBackExcluded","useWaitTransitionFinish","useTimeout","usePrevious","useIsomorphicLayoutEffect","SWIPE_BACK_AREA","SwipeBackResults","scrollsCache","warn","View","activePanelProp","activePanel","history","nav","onTransition","onSwipeBack","onSwipeBackStart","onSwipeBackCancelProp","onSwipeBackCancel","children","className","restProps","scrolls","useRef","id","afterTransition","useEffect","current","panelNodes","window","document","scroll","configProvider","splitCol","platform","useState","animated","setAnimated","visiblePanels","setVisiblePanels","setActivePanel","undefined","isBack","setIsBack","prevPanel","setPrevPanel","nextPanel","setNextPanel","swipingBack","setSwipingBack","swipeBackPrevented","setSwipeBackPrevented","swipeBackStartX","setSwipeBackStartX","swipeBackShift","setSwipeBackShift","swipeBackNextPanel","setSwipeBackNextPanel","swipeBackPrevPanel","setSwipeBackPrevPanel","swipeBackResult","setSwipeBackResult","browserSwipe","setBrowserSwipe","prevActivePanel","prevSwipingBack","prevBrowserSwipe","prevSwipeBackResult","prevSwipeBackPrevPanel","prevOnTransition","panels","Children","toArray","filter","panel","panelId","props","includes","disableAnimation","transitionMotionEnabled","animate","VKCOM","pickPanel","flushTransition","useCallback","isBackTransition","scrollTo","from","to","transitionEndHandler","e","animationName","Boolean","waitTransitionFinish","animationFinishTimeout","IOS","onSwipeBackSuccess","swipingBackTransitionEndHandler","propertyName","target","fail","success","onMoveX","event","isWebView","startX","innerWidth","length","payload","getScroll","y","slice","shiftX","onEnd","speed","duration","calcPanelSwipeStyles","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","firstLayerId","map","find","supported","set","isTransitionTarget","compensateScroll","el","marginTop"],"sources":["../../../src/components/View/View.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, noop } from '@vkontakte/vkjs';\nimport { animationEvent } from '../../lib/supportEvents';\nimport { Platform } from '../../lib/platform';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport { useConfigProvider } from '../ConfigProvider/ConfigProviderContext';\nimport { useSplitCol } from '../SplitCol/SplitCol';\nimport { canUseDOM, useDOM, blurActiveElement } from '../../lib/dom';\nimport { useScroll } from '../AppRoot/ScrollContext';\nimport { NavTransitionProvider } from '../NavTransitionContext/NavTransitionContext';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { swipeBackExcluded } from './utils';\nimport { useWaitTransitionFinish } from '../../hooks/useWaitTransitionFinish';\nimport { useTimeout } from '../../hooks/useTimeout';\nimport { usePrevious } from '../../hooks/usePrevious';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport styles from './View.module.css';\nimport iosStyles from './ViewIOS.module.css';\n\nconst SWIPE_BACK_AREA = 70;\n\nenum SwipeBackResults {\n fail = 1,\n success,\n}\n\ninterface Scrolls {\n [index: string]: number | undefined;\n}\n\ninterface ViewsScrolls {\n [index: string]: Scrolls;\n}\n\nexport let scrollsCache: ViewsScrolls = {};\n\nexport interface ViewProps extends React.HTMLAttributes<HTMLElement>, NavIdProps {\n activePanel: string;\n onTransition?(params: { isBack: boolean; from: string; to: string }): void;\n /**\n * callback свайпа назад\n */\n onSwipeBack?(): void;\n /**\n * callback начала анимации свайпа назад.\n *\n * Чтобы остановить свайп назад, возвращайте `\"prevent\"`.\n */\n onSwipeBackStart?(activePanel: string | null): void | 'prevent';\n /**\n * callback завершения анимации отмененного пользователем свайпа\n */\n onSwipeBackCancel?(): void;\n history?: string[];\n}\n\nexport interface ViewState {\n animated: boolean;\n\n visiblePanels: string[];\n activePanel: string | null;\n isBack: boolean | undefined;\n prevPanel: string | null;\n nextPanel: string | null;\n\n swipingBack: boolean;\n swipeBackStartX: number;\n swipeBackShift: number;\n swipeBackNextPanel: string | null;\n swipeBackPrevPanel: string | null;\n swipeBackResult: SwipeBackResults | null;\n\n browserSwipe: boolean;\n}\n\nconst warn = warnOnce('View');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/View\n */\nexport const View = ({\n activePanel: activePanelProp,\n history,\n nav,\n onTransition,\n onSwipeBack,\n onSwipeBackStart,\n onSwipeBackCancel: onSwipeBackCancelProp,\n children,\n className,\n ...restProps\n}: ViewProps) => {\n const scrolls = React.useRef(scrollsCache[getNavId({ nav, id: restProps.id }) as string] || {});\n const afterTransition = React.useRef(noop);\n\n React.useEffect(() => () => {\n const id = getNavId({ nav, id: restProps.id });\n if (id) {\n scrollsCache[id] = scrolls.current;\n }\n });\n\n const panelNodes = React.useRef<{ [id: string]: HTMLDivElement | null }>({});\n\n const { window, document } = useDOM();\n const scroll = useScroll();\n const configProvider = useConfigProvider();\n const splitCol = useSplitCol();\n const platform = usePlatform();\n\n const [animated, setAnimated] = React.useState(false);\n\n const [visiblePanels, setVisiblePanels] = React.useState([activePanelProp]);\n const [activePanel, setActivePanel] = React.useState<string | null>(activePanelProp);\n const [isBack, setIsBack] = React.useState<boolean | undefined>(undefined);\n const [prevPanel, setPrevPanel] = React.useState<string | null>(null);\n const [nextPanel, setNextPanel] = React.useState<string | null>(null);\n\n const [swipingBack, setSwipingBack] = React.useState<boolean>(false);\n const [swipeBackPrevented, setSwipeBackPrevented] = React.useState<boolean>(false);\n const [swipeBackStartX, setSwipeBackStartX] = React.useState<number>(0);\n const [swipeBackShift, setSwipeBackShift] = React.useState<number>(0);\n const [swipeBackNextPanel, setSwipeBackNextPanel] = React.useState<string | null>(null);\n const [swipeBackPrevPanel, setSwipeBackPrevPanel] = React.useState<string | null>(null);\n const [swipeBackResult, setSwipeBackResult] = React.useState<SwipeBackResults | null>(null);\n\n const [browserSwipe, setBrowserSwipe] = React.useState(false);\n\n const prevActivePanel = usePrevious(activePanelProp);\n const prevSwipingBack = usePrevious(swipingBack);\n const prevBrowserSwipe = usePrevious(browserSwipe);\n const prevSwipeBackResult = usePrevious(swipeBackResult);\n const prevSwipeBackPrevPanel = usePrevious(swipeBackPrevPanel);\n const prevOnTransition = usePrevious(onTransition);\n\n const panels = (React.Children.toArray(children) as React.ReactElement[]).filter(\n (panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n\n return (\n (panelId !== undefined && visiblePanels.includes(panelId)) ||\n panelId === swipeBackPrevPanel ||\n panelId === swipeBackNextPanel\n );\n },\n );\n\n const disableAnimation =\n configProvider?.transitionMotionEnabled === false ||\n !splitCol?.animate ||\n platform === Platform.VKCOM;\n\n const pickPanel = (id: string | null) => {\n if (id === null) {\n return null;\n }\n return panelNodes.current[id];\n };\n\n const flushTransition = React.useCallback(\n (prevPanel: string, isBackTransition: boolean) => {\n if (isBackTransition) {\n scrolls.current[prevPanel] = 0;\n }\n setPrevPanel(null);\n setNextPanel(null);\n setVisiblePanels([activePanelProp]);\n setActivePanel(activePanelProp);\n setAnimated(false);\n setIsBack(undefined);\n\n afterTransition.current = () => {\n scroll?.scrollTo(0, isBackTransition ? scrolls.current[activePanelProp] : 0);\n onTransition &&\n onTransition({\n isBack: isBackTransition,\n from: prevPanel,\n to: activePanelProp,\n });\n };\n },\n [activePanelProp, onTransition, scroll],\n );\n\n useIsomorphicLayoutEffect(() => {\n afterTransition.current();\n afterTransition.current = noop;\n }, [afterTransition.current]);\n\n const transitionEndHandler = React.useCallback(\n (e?: React.AnimationEvent): void => {\n if (\n (!e ||\n [\n 'vkui-animation-ios-next-forward',\n 'vkui-animation-ios-prev-back',\n 'vkui-animation-view-next-forward',\n 'vkui-animation-view-prev-back',\n ].includes(e.animationName)) &&\n prevPanel !== null\n ) {\n flushTransition(prevPanel, Boolean(isBack));\n }\n },\n [flushTransition, isBack, prevPanel],\n );\n\n const { waitTransitionFinish } = useWaitTransitionFinish();\n const animationFinishTimeout = useTimeout(\n transitionEndHandler,\n platform === Platform.IOS ? 600 : 300,\n );\n\n const onSwipeBackSuccess = React.useCallback(() => {\n onSwipeBack && onSwipeBack();\n }, [onSwipeBack]);\n\n const onSwipeBackCancel = React.useCallback(() => {\n onSwipeBackCancelProp && onSwipeBackCancelProp();\n setSwipeBackPrevPanel(null);\n setSwipeBackNextPanel(null);\n setSwipingBack(false);\n setSwipeBackResult(null);\n setSwipeBackStartX(0);\n setSwipeBackShift(0);\n }, [onSwipeBackCancelProp]);\n\n const swipingBackTransitionEndHandler = React.useCallback(\n (e?: TransitionEvent): void => {\n // indexOf because of vendor prefixes in old browsers\n if (\n !e ||\n (e?.propertyName.includes('transform') && e?.target === pickPanel(swipeBackNextPanel))\n ) {\n switch (swipeBackResult) {\n case SwipeBackResults.fail:\n onSwipeBackCancel();\n break;\n case SwipeBackResults.success:\n onSwipeBackSuccess();\n }\n }\n },\n [onSwipeBackCancel, onSwipeBackSuccess, swipeBackNextPanel, swipeBackResult],\n );\n\n const onMoveX = (event: TouchEvent): void => {\n if (\n platform !== Platform.IOS ||\n swipeBackPrevented ||\n swipeBackExcluded(event) ||\n disableAnimation\n ) {\n return;\n }\n\n if (!configProvider?.isWebView) {\n if (\n (event.startX <= SWIPE_BACK_AREA || event.startX >= window!.innerWidth - SWIPE_BACK_AREA) &&\n !browserSwipe\n ) {\n setBrowserSwipe(true);\n }\n\n return;\n }\n\n if (!onSwipeBack || (animated && event.startX <= SWIPE_BACK_AREA)) {\n return;\n }\n\n if (!swipingBack && event.startX <= SWIPE_BACK_AREA && history && history.length > 1) {\n // Начался свайп назад\n if (onSwipeBackStart) {\n const payload = onSwipeBackStart(activePanel);\n if (payload === 'prevent') {\n setSwipeBackPrevented(true);\n return;\n }\n }\n\n if (activePanel !== null) {\n // Note: вызываем закрытие клавиатуры. В iOS это нативное поведение при свайпе.\n blurActiveElement(document);\n scrolls.current[activePanel] = scroll?.getScroll().y;\n }\n\n setSwipingBack(true);\n setSwipeBackStartX(event.startX);\n setSwipeBackPrevPanel(activePanel);\n setSwipeBackNextPanel(history.slice(-2)[0]);\n }\n\n if (swipingBack) {\n let swipeBackShift = 0;\n if (event.shiftX < 0) {\n swipeBackShift = 0;\n } else if (event.shiftX > window!.innerWidth - swipeBackStartX) {\n swipeBackShift = window!.innerWidth;\n } else {\n swipeBackShift = event.shiftX;\n }\n setSwipeBackShift(swipeBackShift);\n }\n };\n\n const onEnd = React.useCallback(\n (event: TouchEvent): void => {\n if (swipingBack) {\n const speed = (swipeBackShift / event.duration) * 1000;\n if (swipeBackShift === 0) {\n onSwipeBackCancel();\n } else if (swipeBackShift >= (window!.innerWidth ?? 0)) {\n onSwipeBackSuccess();\n } else if (speed > 250 || swipeBackStartX + swipeBackShift > window!.innerWidth / 2) {\n setSwipeBackResult(SwipeBackResults.success);\n } else {\n setSwipeBackResult(SwipeBackResults.fail);\n }\n }\n if (swipeBackPrevented) {\n setSwipeBackPrevented(false);\n }\n },\n [\n onSwipeBackCancel,\n onSwipeBackSuccess,\n swipeBackShift,\n swipeBackStartX,\n swipingBack,\n swipeBackPrevented,\n window,\n ],\n );\n\n const calcPanelSwipeStyles = (panelId: string | undefined): React.CSSProperties => {\n if (!canUseDOM || !window) {\n return {};\n }\n\n const isPrev = panelId === swipeBackPrevPanel;\n const isNext = panelId === swipeBackNextPanel;\n\n if ((!isPrev && !isNext) || swipeBackResult) {\n return {};\n }\n\n let prevPanelTranslate = `${swipeBackShift}px`;\n let nextPanelTranslate = `${-50 + (swipeBackShift * 100) / window.innerWidth / 2}%`;\n let prevPanelShadow = (0.3 * (window.innerWidth - swipeBackShift)) / window.innerWidth;\n\n if (swipeBackResult) {\n return isPrev ? { boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})` } : {};\n }\n\n if (isNext) {\n return {\n transform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n };\n }\n if (isPrev) {\n return {\n transform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})`,\n };\n }\n\n return {};\n };\n\n React.useEffect(() => {\n // Нужен переход\n if (\n prevActivePanel &&\n prevActivePanel !== activePanelProp &&\n !prevSwipingBack &&\n !prevBrowserSwipe\n ) {\n const firstLayerId = (React.Children.toArray(children) as React.ReactElement[])\n .map((panel) => getNavId(panel.props, warn))\n .find((id) => id === prevActivePanel || id === activePanelProp);\n\n const isBackTransition = firstLayerId === activePanelProp;\n scrolls.current[prevActivePanel] = scroll?.getScroll().y;\n\n if (disableAnimation) {\n flushTransition(prevActivePanel, isBackTransition);\n } else {\n blurActiveElement(document);\n\n setVisiblePanels([prevActivePanel, activePanelProp]);\n setPrevPanel(prevActivePanel);\n setNextPanel(activePanelProp);\n setActivePanel(null);\n setAnimated(true);\n setIsBack(isBackTransition);\n\n // Фолбек анимации перехода\n if (!animationEvent.supported) {\n animationFinishTimeout.set();\n }\n }\n }\n\n // Закончилась анимация свайпа назад\n if (prevActivePanel && prevActivePanel !== activePanelProp && prevSwipingBack) {\n const nextPanel = activePanelProp;\n const prevPanel = prevActivePanel;\n if (prevSwipeBackPrevPanel) {\n scrolls.current[prevSwipeBackPrevPanel] = 0;\n }\n\n setSwipeBackPrevPanel(null);\n setSwipeBackNextPanel(null);\n setSwipingBack(false);\n setSwipeBackResult(null);\n setSwipeBackStartX(0);\n setSwipeBackShift(0);\n setActivePanel(nextPanel);\n setVisiblePanels([nextPanel]);\n\n afterTransition.current = () => {\n if (nextPanel !== null) {\n scroll?.scrollTo(0, scrolls.current[nextPanel]);\n }\n prevOnTransition &&\n prevOnTransition({\n isBack: true,\n from: prevPanel,\n to: nextPanel,\n });\n };\n }\n\n // Началась анимация завершения свайпа назад.\n if (!prevSwipeBackResult && swipeBackResult) {\n waitTransitionFinish(\n pickPanel(swipeBackNextPanel),\n swipingBackTransitionEndHandler,\n platform === Platform.IOS ? 600 : 300,\n );\n }\n\n // Если свайп назад отменился (когда пользователь недостаточно сильно свайпнул)\n if (prevSwipeBackResult === SwipeBackResults.fail && !swipeBackResult && activePanel !== null) {\n scroll?.scrollTo(0, scrolls.current[activePanel]);\n }\n\n // Закончился Safari свайп\n if (prevActivePanel !== activePanelProp && browserSwipe) {\n setBrowserSwipe(false);\n setNextPanel(null);\n setPrevPanel(null);\n setAnimated(false);\n setVisiblePanels([activePanelProp]);\n setActivePanel(activePanelProp);\n }\n }, [\n activePanelProp,\n activePanel,\n animationFinishTimeout,\n browserSwipe,\n children,\n disableAnimation,\n document,\n flushTransition,\n onSwipeBackStart,\n panels,\n platform,\n prevActivePanel,\n prevBrowserSwipe,\n prevOnTransition,\n prevSwipeBackPrevPanel,\n prevSwipeBackResult,\n prevSwipingBack,\n scroll,\n swipeBackNextPanel,\n swipeBackResult,\n swipingBack,\n swipingBackTransitionEndHandler,\n waitTransitionFinish,\n ]);\n\n return (\n <Touch\n Component=\"section\"\n {...restProps}\n className={classNames(\n styles['View'],\n platform === Platform.IOS && iosStyles['View--ios'],\n !disableAnimation && animated && styles['View--animated'],\n !disableAnimation && swipingBack && styles['View--swiping-back'],\n disableAnimation && styles['View--no-motion'],\n className,\n )}\n onMoveX={onMoveX}\n onEnd={onEnd}\n >\n <div className={styles['View__panels']}>\n {panels.map((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n const isPrev = panelId === prevPanel || panelId === swipeBackPrevPanel;\n const isTransitionTarget = animated && panelId === (isBack ? prevPanel : nextPanel);\n const compensateScroll =\n isPrev || panelId === swipeBackNextPanel || (panelId === nextPanel && isBack);\n\n return (\n <div\n className={classNames(\n styles['View__panel'],\n panelId === activePanel && iosStyles['View__panel--active'],\n panelId === prevPanel && styles['View__panel--prev'],\n panelId === nextPanel && styles['View__panel--next'],\n panelId === swipeBackPrevPanel && iosStyles['View__panel--swipe-back-prev'],\n panelId === swipeBackNextPanel && iosStyles['View__panel--swipe-back-next'],\n swipeBackResult === SwipeBackResults.success &&\n iosStyles['View__panel--swipe-back-success'],\n swipeBackResult === SwipeBackResults.fail &&\n iosStyles['View__panel--swipe-back-failed'],\n )}\n onAnimationEnd={isTransitionTarget ? transitionEndHandler : undefined}\n ref={(el) => panelId !== undefined && (panelNodes.current[panelId] = el)}\n style={calcPanelSwipeStyles(panelId)}\n key={panelId}\n >\n <div\n className={styles['View__panel-in']}\n style={{\n marginTop: compensateScroll ? -(scrolls.current[panelId] ?? 0) : undefined,\n }}\n >\n <NavTransitionProvider\n entering={panelId === nextPanel || panelId === swipeBackNextPanel}\n >\n {panel}\n </NavTransitionProvider>\n </div>\n </div>\n );\n })}\n </div>\n </Touch>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"View.js","names":["React","classNames","noop","animationEvent","Platform","Touch","useConfigProvider","useSplitCol","canUseDOM","useDOM","blurActiveElement","useScroll","NavTransitionProvider","getNavId","warnOnce","usePlatform","swipeBackExcluded","useWaitTransitionFinish","useTimeout","usePrevious","useIsomorphicLayoutEffect","SWIPE_BACK_AREA","SwipeBackResults","scrollsCache","warn","View","activePanelProp","activePanel","history","nav","onTransition","onSwipeBack","onSwipeBackStart","onSwipeBackCancelProp","onSwipeBackCancel","children","className","restProps","scrolls","useRef","id","afterTransition","useEffect","current","panelNodes","window","document","scroll","configProvider","splitCol","platform","useState","animated","setAnimated","visiblePanels","setVisiblePanels","setActivePanel","undefined","isBack","setIsBack","prevPanel","setPrevPanel","nextPanel","setNextPanel","swipingBack","setSwipingBack","swipeBackPrevented","setSwipeBackPrevented","swipeBackStartX","setSwipeBackStartX","swipeBackShift","setSwipeBackShift","swipeBackNextPanel","setSwipeBackNextPanel","swipeBackPrevPanel","setSwipeBackPrevPanel","swipeBackResult","setSwipeBackResult","browserSwipe","setBrowserSwipe","prevActivePanel","prevSwipingBack","prevBrowserSwipe","prevSwipeBackResult","prevSwipeBackPrevPanel","prevOnTransition","panels","Children","toArray","filter","panel","panelId","props","includes","disableAnimation","transitionMotionEnabled","animate","VKCOM","pickPanel","flushTransition","useCallback","isBackTransition","scrollTo","from","to","transitionEndHandler","e","animationName","Boolean","waitTransitionFinish","animationFinishTimeout","IOS","onSwipeBackSuccess","swipingBackTransitionEndHandler","propertyName","target","fail","success","onMoveX","event","isWebView","startX","innerWidth","length","payload","getScroll","y","slice","shiftX","onEnd","speed","duration","calcPanelSwipeStyles","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","firstLayerId","map","find","supported","set","isTransitionTarget","compensateScroll","el","marginTop"],"sources":["../../../src/components/View/View.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, noop } from '@vkontakte/vkjs';\nimport { animationEvent } from '../../lib/supportEvents';\nimport { Platform } from '../../lib/platform';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport { useConfigProvider } from '../ConfigProvider/ConfigProviderContext';\nimport { useSplitCol } from '../SplitCol/SplitColContext';\nimport { canUseDOM, useDOM, blurActiveElement } from '../../lib/dom';\nimport { useScroll } from '../AppRoot/ScrollContext';\nimport { NavTransitionProvider } from '../NavTransitionContext/NavTransitionContext';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { swipeBackExcluded } from './utils';\nimport { useWaitTransitionFinish } from '../../hooks/useWaitTransitionFinish';\nimport { useTimeout } from '../../hooks/useTimeout';\nimport { usePrevious } from '../../hooks/usePrevious';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport styles from './View.module.css';\nimport iosStyles from './ViewIOS.module.css';\n\nconst SWIPE_BACK_AREA = 70;\n\nenum SwipeBackResults {\n fail = 1,\n success,\n}\n\ninterface Scrolls {\n [index: string]: number | undefined;\n}\n\ninterface ViewsScrolls {\n [index: string]: Scrolls;\n}\n\nexport let scrollsCache: ViewsScrolls = {};\n\nexport interface ViewProps extends React.HTMLAttributes<HTMLElement>, NavIdProps {\n activePanel: string;\n onTransition?(params: { isBack: boolean; from: string; to: string }): void;\n /**\n * callback свайпа назад\n */\n onSwipeBack?(): void;\n /**\n * callback начала анимации свайпа назад.\n *\n * Чтобы остановить свайп назад, возвращайте `\"prevent\"`.\n */\n onSwipeBackStart?(activePanel: string | null): void | 'prevent';\n /**\n * callback завершения анимации отмененного пользователем свайпа\n */\n onSwipeBackCancel?(): void;\n history?: string[];\n}\n\nexport interface ViewState {\n animated: boolean;\n\n visiblePanels: string[];\n activePanel: string | null;\n isBack: boolean | undefined;\n prevPanel: string | null;\n nextPanel: string | null;\n\n swipingBack: boolean;\n swipeBackStartX: number;\n swipeBackShift: number;\n swipeBackNextPanel: string | null;\n swipeBackPrevPanel: string | null;\n swipeBackResult: SwipeBackResults | null;\n\n browserSwipe: boolean;\n}\n\nconst warn = warnOnce('View');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/View\n */\nexport const View = ({\n activePanel: activePanelProp,\n history,\n nav,\n onTransition,\n onSwipeBack,\n onSwipeBackStart,\n onSwipeBackCancel: onSwipeBackCancelProp,\n children,\n className,\n ...restProps\n}: ViewProps) => {\n const scrolls = React.useRef(scrollsCache[getNavId({ nav, id: restProps.id }) as string] || {});\n const afterTransition = React.useRef(noop);\n\n React.useEffect(() => () => {\n const id = getNavId({ nav, id: restProps.id });\n if (id) {\n scrollsCache[id] = scrolls.current;\n }\n });\n\n const panelNodes = React.useRef<{ [id: string]: HTMLDivElement | null }>({});\n\n const { window, document } = useDOM();\n const scroll = useScroll();\n const configProvider = useConfigProvider();\n const splitCol = useSplitCol();\n const platform = usePlatform();\n\n const [animated, setAnimated] = React.useState(false);\n\n const [visiblePanels, setVisiblePanels] = React.useState([activePanelProp]);\n const [activePanel, setActivePanel] = React.useState<string | null>(activePanelProp);\n const [isBack, setIsBack] = React.useState<boolean | undefined>(undefined);\n const [prevPanel, setPrevPanel] = React.useState<string | null>(null);\n const [nextPanel, setNextPanel] = React.useState<string | null>(null);\n\n const [swipingBack, setSwipingBack] = React.useState<boolean>(false);\n const [swipeBackPrevented, setSwipeBackPrevented] = React.useState<boolean>(false);\n const [swipeBackStartX, setSwipeBackStartX] = React.useState<number>(0);\n const [swipeBackShift, setSwipeBackShift] = React.useState<number>(0);\n const [swipeBackNextPanel, setSwipeBackNextPanel] = React.useState<string | null>(null);\n const [swipeBackPrevPanel, setSwipeBackPrevPanel] = React.useState<string | null>(null);\n const [swipeBackResult, setSwipeBackResult] = React.useState<SwipeBackResults | null>(null);\n\n const [browserSwipe, setBrowserSwipe] = React.useState(false);\n\n const prevActivePanel = usePrevious(activePanelProp);\n const prevSwipingBack = usePrevious(swipingBack);\n const prevBrowserSwipe = usePrevious(browserSwipe);\n const prevSwipeBackResult = usePrevious(swipeBackResult);\n const prevSwipeBackPrevPanel = usePrevious(swipeBackPrevPanel);\n const prevOnTransition = usePrevious(onTransition);\n\n const panels = (React.Children.toArray(children) as React.ReactElement[]).filter(\n (panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n\n return (\n (panelId !== undefined && visiblePanels.includes(panelId)) ||\n panelId === swipeBackPrevPanel ||\n panelId === swipeBackNextPanel\n );\n },\n );\n\n const disableAnimation =\n configProvider?.transitionMotionEnabled === false ||\n !splitCol?.animate ||\n platform === Platform.VKCOM;\n\n const pickPanel = (id: string | null) => {\n if (id === null) {\n return null;\n }\n return panelNodes.current[id];\n };\n\n const flushTransition = React.useCallback(\n (prevPanel: string, isBackTransition: boolean) => {\n if (isBackTransition) {\n scrolls.current[prevPanel] = 0;\n }\n setPrevPanel(null);\n setNextPanel(null);\n setVisiblePanels([activePanelProp]);\n setActivePanel(activePanelProp);\n setAnimated(false);\n setIsBack(undefined);\n\n afterTransition.current = () => {\n scroll?.scrollTo(0, isBackTransition ? scrolls.current[activePanelProp] : 0);\n onTransition &&\n onTransition({\n isBack: isBackTransition,\n from: prevPanel,\n to: activePanelProp,\n });\n };\n },\n [activePanelProp, onTransition, scroll],\n );\n\n useIsomorphicLayoutEffect(() => {\n afterTransition.current();\n afterTransition.current = noop;\n }, [afterTransition.current]);\n\n const transitionEndHandler = React.useCallback(\n (e?: React.AnimationEvent): void => {\n if (\n (!e ||\n [\n 'vkui-animation-ios-next-forward',\n 'vkui-animation-ios-prev-back',\n 'vkui-animation-view-next-forward',\n 'vkui-animation-view-prev-back',\n ].includes(e.animationName)) &&\n prevPanel !== null\n ) {\n flushTransition(prevPanel, Boolean(isBack));\n }\n },\n [flushTransition, isBack, prevPanel],\n );\n\n const { waitTransitionFinish } = useWaitTransitionFinish();\n const animationFinishTimeout = useTimeout(\n transitionEndHandler,\n platform === Platform.IOS ? 600 : 300,\n );\n\n const onSwipeBackSuccess = React.useCallback(() => {\n onSwipeBack && onSwipeBack();\n }, [onSwipeBack]);\n\n const onSwipeBackCancel = React.useCallback(() => {\n onSwipeBackCancelProp && onSwipeBackCancelProp();\n setSwipeBackPrevPanel(null);\n setSwipeBackNextPanel(null);\n setSwipingBack(false);\n setSwipeBackResult(null);\n setSwipeBackStartX(0);\n setSwipeBackShift(0);\n }, [onSwipeBackCancelProp]);\n\n const swipingBackTransitionEndHandler = React.useCallback(\n (e?: TransitionEvent): void => {\n // indexOf because of vendor prefixes in old browsers\n if (\n !e ||\n (e?.propertyName.includes('transform') && e?.target === pickPanel(swipeBackNextPanel))\n ) {\n switch (swipeBackResult) {\n case SwipeBackResults.fail:\n onSwipeBackCancel();\n break;\n case SwipeBackResults.success:\n onSwipeBackSuccess();\n }\n }\n },\n [onSwipeBackCancel, onSwipeBackSuccess, swipeBackNextPanel, swipeBackResult],\n );\n\n const onMoveX = (event: TouchEvent): void => {\n if (\n platform !== Platform.IOS ||\n swipeBackPrevented ||\n swipeBackExcluded(event) ||\n disableAnimation\n ) {\n return;\n }\n\n if (!configProvider?.isWebView) {\n if (\n (event.startX <= SWIPE_BACK_AREA || event.startX >= window!.innerWidth - SWIPE_BACK_AREA) &&\n !browserSwipe\n ) {\n setBrowserSwipe(true);\n }\n\n return;\n }\n\n if (!onSwipeBack || (animated && event.startX <= SWIPE_BACK_AREA)) {\n return;\n }\n\n if (!swipingBack && event.startX <= SWIPE_BACK_AREA && history && history.length > 1) {\n // Начался свайп назад\n if (onSwipeBackStart) {\n const payload = onSwipeBackStart(activePanel);\n if (payload === 'prevent') {\n setSwipeBackPrevented(true);\n return;\n }\n }\n\n if (activePanel !== null) {\n // Note: вызываем закрытие клавиатуры. В iOS это нативное поведение при свайпе.\n blurActiveElement(document);\n scrolls.current[activePanel] = scroll?.getScroll().y;\n }\n\n setSwipingBack(true);\n setSwipeBackStartX(event.startX);\n setSwipeBackPrevPanel(activePanel);\n setSwipeBackNextPanel(history.slice(-2)[0]);\n }\n\n if (swipingBack) {\n let swipeBackShift = 0;\n if (event.shiftX < 0) {\n swipeBackShift = 0;\n } else if (event.shiftX > window!.innerWidth - swipeBackStartX) {\n swipeBackShift = window!.innerWidth;\n } else {\n swipeBackShift = event.shiftX;\n }\n setSwipeBackShift(swipeBackShift);\n }\n };\n\n const onEnd = React.useCallback(\n (event: TouchEvent): void => {\n if (swipingBack) {\n const speed = (swipeBackShift / event.duration) * 1000;\n if (swipeBackShift === 0) {\n onSwipeBackCancel();\n } else if (swipeBackShift >= (window!.innerWidth ?? 0)) {\n onSwipeBackSuccess();\n } else if (speed > 250 || swipeBackStartX + swipeBackShift > window!.innerWidth / 2) {\n setSwipeBackResult(SwipeBackResults.success);\n } else {\n setSwipeBackResult(SwipeBackResults.fail);\n }\n }\n if (swipeBackPrevented) {\n setSwipeBackPrevented(false);\n }\n },\n [\n onSwipeBackCancel,\n onSwipeBackSuccess,\n swipeBackShift,\n swipeBackStartX,\n swipingBack,\n swipeBackPrevented,\n window,\n ],\n );\n\n const calcPanelSwipeStyles = (panelId: string | undefined): React.CSSProperties => {\n if (!canUseDOM || !window) {\n return {};\n }\n\n const isPrev = panelId === swipeBackPrevPanel;\n const isNext = panelId === swipeBackNextPanel;\n\n if ((!isPrev && !isNext) || swipeBackResult) {\n return {};\n }\n\n let prevPanelTranslate = `${swipeBackShift}px`;\n let nextPanelTranslate = `${-50 + (swipeBackShift * 100) / window.innerWidth / 2}%`;\n let prevPanelShadow = (0.3 * (window.innerWidth - swipeBackShift)) / window.innerWidth;\n\n if (swipeBackResult) {\n return isPrev ? { boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})` } : {};\n }\n\n if (isNext) {\n return {\n transform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n };\n }\n if (isPrev) {\n return {\n transform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})`,\n };\n }\n\n return {};\n };\n\n React.useEffect(() => {\n // Нужен переход\n if (\n prevActivePanel &&\n prevActivePanel !== activePanelProp &&\n !prevSwipingBack &&\n !prevBrowserSwipe\n ) {\n const firstLayerId = (React.Children.toArray(children) as React.ReactElement[])\n .map((panel) => getNavId(panel.props, warn))\n .find((id) => id === prevActivePanel || id === activePanelProp);\n\n const isBackTransition = firstLayerId === activePanelProp;\n scrolls.current[prevActivePanel] = scroll?.getScroll().y;\n\n if (disableAnimation) {\n flushTransition(prevActivePanel, isBackTransition);\n } else {\n blurActiveElement(document);\n\n setVisiblePanels([prevActivePanel, activePanelProp]);\n setPrevPanel(prevActivePanel);\n setNextPanel(activePanelProp);\n setActivePanel(null);\n setAnimated(true);\n setIsBack(isBackTransition);\n\n // Фолбек анимации перехода\n if (!animationEvent.supported) {\n animationFinishTimeout.set();\n }\n }\n }\n\n // Закончилась анимация свайпа назад\n if (prevActivePanel && prevActivePanel !== activePanelProp && prevSwipingBack) {\n const nextPanel = activePanelProp;\n const prevPanel = prevActivePanel;\n if (prevSwipeBackPrevPanel) {\n scrolls.current[prevSwipeBackPrevPanel] = 0;\n }\n\n setSwipeBackPrevPanel(null);\n setSwipeBackNextPanel(null);\n setSwipingBack(false);\n setSwipeBackResult(null);\n setSwipeBackStartX(0);\n setSwipeBackShift(0);\n setActivePanel(nextPanel);\n setVisiblePanels([nextPanel]);\n\n afterTransition.current = () => {\n if (nextPanel !== null) {\n scroll?.scrollTo(0, scrolls.current[nextPanel]);\n }\n prevOnTransition &&\n prevOnTransition({\n isBack: true,\n from: prevPanel,\n to: nextPanel,\n });\n };\n }\n\n // Началась анимация завершения свайпа назад.\n if (!prevSwipeBackResult && swipeBackResult) {\n waitTransitionFinish(\n pickPanel(swipeBackNextPanel),\n swipingBackTransitionEndHandler,\n platform === Platform.IOS ? 600 : 300,\n );\n }\n\n // Если свайп назад отменился (когда пользователь недостаточно сильно свайпнул)\n if (prevSwipeBackResult === SwipeBackResults.fail && !swipeBackResult && activePanel !== null) {\n scroll?.scrollTo(0, scrolls.current[activePanel]);\n }\n\n // Закончился Safari свайп\n if (prevActivePanel !== activePanelProp && browserSwipe) {\n setBrowserSwipe(false);\n setNextPanel(null);\n setPrevPanel(null);\n setAnimated(false);\n setVisiblePanels([activePanelProp]);\n setActivePanel(activePanelProp);\n }\n }, [\n activePanelProp,\n activePanel,\n animationFinishTimeout,\n browserSwipe,\n children,\n disableAnimation,\n document,\n flushTransition,\n onSwipeBackStart,\n panels,\n platform,\n prevActivePanel,\n prevBrowserSwipe,\n prevOnTransition,\n prevSwipeBackPrevPanel,\n prevSwipeBackResult,\n prevSwipingBack,\n scroll,\n swipeBackNextPanel,\n swipeBackResult,\n swipingBack,\n swipingBackTransitionEndHandler,\n waitTransitionFinish,\n ]);\n\n return (\n <Touch\n Component=\"section\"\n {...restProps}\n className={classNames(\n styles['View'],\n platform === Platform.IOS && iosStyles['View--ios'],\n !disableAnimation && animated && styles['View--animated'],\n !disableAnimation && swipingBack && styles['View--swiping-back'],\n disableAnimation && styles['View--no-motion'],\n className,\n )}\n onMoveX={onMoveX}\n onEnd={onEnd}\n >\n <div className={styles['View__panels']}>\n {panels.map((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n const isPrev = panelId === prevPanel || panelId === swipeBackPrevPanel;\n const isTransitionTarget = animated && panelId === (isBack ? prevPanel : nextPanel);\n const compensateScroll =\n isPrev || panelId === swipeBackNextPanel || (panelId === nextPanel && isBack);\n\n return (\n <div\n className={classNames(\n styles['View__panel'],\n panelId === activePanel && iosStyles['View__panel--active'],\n panelId === prevPanel && styles['View__panel--prev'],\n panelId === nextPanel && styles['View__panel--next'],\n panelId === swipeBackPrevPanel && iosStyles['View__panel--swipe-back-prev'],\n panelId === swipeBackNextPanel && iosStyles['View__panel--swipe-back-next'],\n swipeBackResult === SwipeBackResults.success &&\n iosStyles['View__panel--swipe-back-success'],\n swipeBackResult === SwipeBackResults.fail &&\n iosStyles['View__panel--swipe-back-failed'],\n )}\n onAnimationEnd={isTransitionTarget ? transitionEndHandler : undefined}\n ref={(el) => panelId !== undefined && (panelNodes.current[panelId] = el)}\n style={calcPanelSwipeStyles(panelId)}\n key={panelId}\n >\n <div\n className={styles['View__panel-in']}\n style={{\n marginTop: compensateScroll ? -(scrolls.current[panelId] ?? 0) : undefined,\n }}\n >\n <NavTransitionProvider\n entering={panelId === nextPanel || panelId === swipeBackNextPanel}\n >\n {panel}\n </NavTransitionProvider>\n </div>\n </div>\n );\n })}\n </div>\n </Touch>\n );\n};\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { HasPlatform } from '../../types';
3
3
  import { ConfigProviderContextInterface } from '../ConfigProvider/ConfigProviderContext';
4
- import { SplitColContextProps } from '../SplitCol/SplitCol';
4
+ import { SplitColContextProps } from '../SplitCol/SplitColContext';
5
5
  import { ScrollContextInterface } from '../AppRoot/ScrollContext';
6
6
  import { NavIdProps } from '../../lib/getNavId';
7
7
  declare enum SwipeBackResults {
@@ -18,7 +18,7 @@ import { Touch } from '../Touch/Touch';
18
18
  import { withPlatform } from '../../hoc/withPlatform';
19
19
  import { withContext } from '../../hoc/withContext';
20
20
  import { ConfigProviderContext } from '../ConfigProvider/ConfigProviderContext';
21
- import { SplitColContext } from '../SplitCol/SplitCol';
21
+ import { SplitColContext } from '../SplitCol/SplitColContext';
22
22
  import { AppRootPortal } from '../AppRoot/AppRootPortal';
23
23
  import { canUseDOM, withDOM } from '../../lib/dom';
24
24
  import { ScrollContext } from '../AppRoot/ScrollContext';