@vkontakte/vkui 4.34.2 → 4.35.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 (453) hide show
  1. package/.browserslistrc +5 -0
  2. package/.cache/.eslintcache +1 -1
  3. package/.cache/.stylelintcache +1 -1
  4. package/.cache/.tsbuildinfo +237 -211
  5. package/.cache/ts/src/components/ConfigProvider/ConfigProviderContext.d.ts +1 -0
  6. package/.cache/ts/src/components/CustomSelect/CustomSelect.d.ts +1 -1
  7. package/.cache/ts/src/components/Dropdown/Dropdown.d.ts +46 -5
  8. package/.cache/ts/src/components/FocusTrap/FocusTrap.d.ts +1 -1
  9. package/.cache/ts/src/components/ModalRoot/ModalRoot.d.ts +1 -1
  10. package/.cache/ts/src/components/ModalRoot/ModalRootDesktop.d.ts +1 -1
  11. package/.cache/ts/src/components/Popper/Popper.d.ts +18 -1
  12. package/.cache/ts/src/components/PopperArrow/PopperArrow.d.ts +8 -0
  13. package/.cache/ts/src/components/RichTooltip/RichTooltip.d.ts +7 -2
  14. package/.cache/ts/src/components/Snackbar/Snackbar.d.ts +5 -1
  15. package/.cache/ts/src/components/SplitCol/SplitCol.d.ts +1 -0
  16. package/.cache/ts/src/components/Tabbar/Tabbar.d.ts +8 -1
  17. package/.cache/ts/src/components/Tabs/Tabs.d.ts +13 -2
  18. package/.cache/ts/src/components/TabsItem/TabsItem.d.ts +22 -1
  19. package/.cache/ts/src/components/TextTooltip/TextTooltip.d.ts +5 -1
  20. package/.cache/ts/src/components/Tooltip/Tooltip.d.ts +18 -1
  21. package/.cache/ts/src/components/Typography/Headline/Headline.d.ts +3 -3
  22. package/.cache/ts/src/components/View/View.d.ts +2 -18
  23. package/.cache/ts/src/components/View/ViewInfinite.d.ts +1 -1
  24. package/.cache/ts/src/components/WriteBar/WriteBar.d.ts +5 -1
  25. package/.cache/ts/src/tokenized/index.d.ts +26 -0
  26. package/.eslintrc.json +14 -4
  27. package/dist/cjs/components/CardScroll/CardScroll.js +3 -1
  28. package/dist/cjs/components/CardScroll/CardScroll.js.map +1 -1
  29. package/dist/cjs/components/ConfigProvider/ConfigProviderContext.js +7 -1
  30. package/dist/cjs/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  31. package/dist/cjs/components/CustomSelect/CustomSelect.js +477 -554
  32. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  33. package/dist/cjs/components/Dropdown/Dropdown.js +147 -26
  34. package/dist/cjs/components/Dropdown/Dropdown.js.map +1 -1
  35. package/dist/cjs/components/Epic/Epic.js +1 -6
  36. package/dist/cjs/components/Epic/Epic.js.map +1 -1
  37. package/dist/cjs/components/FocusTrap/FocusTrap.js +9 -10
  38. package/dist/cjs/components/FocusTrap/FocusTrap.js.map +1 -1
  39. package/dist/cjs/components/HorizontalCell/HorizontalCell.js +4 -7
  40. package/dist/cjs/components/HorizontalCell/HorizontalCell.js.map +1 -1
  41. package/dist/cjs/components/MiniInfoCell/MiniInfoCell.js +2 -2
  42. package/dist/cjs/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
  43. package/dist/cjs/components/Popper/Popper.js +11 -19
  44. package/dist/cjs/components/Popper/Popper.js.map +1 -1
  45. package/dist/cjs/components/PopperArrow/PopperArrow.js +40 -0
  46. package/dist/cjs/components/PopperArrow/PopperArrow.js.map +1 -0
  47. package/dist/cjs/components/RichTooltip/RichTooltip.js +6 -15
  48. package/dist/cjs/components/RichTooltip/RichTooltip.js.map +1 -1
  49. package/dist/cjs/components/SimpleCell/SimpleCell.js +20 -31
  50. package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
  51. package/dist/cjs/components/Snackbar/Snackbar.js +7 -11
  52. package/dist/cjs/components/Snackbar/Snackbar.js.map +1 -1
  53. package/dist/cjs/components/SplitCol/SplitCol.js +7 -1
  54. package/dist/cjs/components/SplitCol/SplitCol.js.map +1 -1
  55. package/dist/cjs/components/SplitLayout/SplitLayout.js +5 -8
  56. package/dist/cjs/components/SplitLayout/SplitLayout.js.map +1 -1
  57. package/dist/cjs/components/Tabbar/Tabbar.js +15 -14
  58. package/dist/cjs/components/Tabbar/Tabbar.js.map +1 -1
  59. package/dist/cjs/components/TabbarItem/TabbarItem.js +8 -10
  60. package/dist/cjs/components/TabbarItem/TabbarItem.js.map +1 -1
  61. package/dist/cjs/components/Tabs/Tabs.js +23 -5
  62. package/dist/cjs/components/Tabs/Tabs.js.map +1 -1
  63. package/dist/cjs/components/TabsItem/TabsItem.js +39 -22
  64. package/dist/cjs/components/TabsItem/TabsItem.js.map +1 -1
  65. package/dist/cjs/components/TextTooltip/TextTooltip.js +6 -9
  66. package/dist/cjs/components/TextTooltip/TextTooltip.js.map +1 -1
  67. package/dist/cjs/components/Tooltip/Tooltip.js +94 -71
  68. package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
  69. package/dist/cjs/components/Typography/Headline/Headline.js +11 -2
  70. package/dist/cjs/components/Typography/Headline/Headline.js.map +1 -1
  71. package/dist/cjs/components/View/View.js +388 -453
  72. package/dist/cjs/components/View/View.js.map +1 -1
  73. package/dist/cjs/components/WriteBar/WriteBar.js +12 -5
  74. package/dist/cjs/components/WriteBar/WriteBar.js.map +1 -1
  75. package/dist/cjs/components/WriteBarIcon/WriteBarIcon.js +3 -8
  76. package/dist/cjs/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
  77. package/dist/cjs/hooks/useOrientationChange.js +2 -1
  78. package/dist/cjs/hooks/useOrientationChange.js.map +1 -1
  79. package/dist/cjs/tokenized/index.js +104 -0
  80. package/dist/cjs/tokenized/index.js.map +1 -1
  81. package/dist/components/CardScroll/CardScroll.js +3 -1
  82. package/dist/components/CardScroll/CardScroll.js.map +1 -1
  83. package/dist/components/ConfigProvider/ConfigProviderContext.d.ts +1 -0
  84. package/dist/components/ConfigProvider/ConfigProviderContext.js +3 -0
  85. package/dist/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  86. package/dist/components/CustomSelect/CustomSelect.d.ts +1 -1
  87. package/dist/components/CustomSelect/CustomSelect.js +473 -580
  88. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  89. package/dist/components/Dropdown/Dropdown.d.ts +46 -5
  90. package/dist/components/Dropdown/Dropdown.js +137 -27
  91. package/dist/components/Dropdown/Dropdown.js.map +1 -1
  92. package/dist/components/Epic/Epic.js +1 -4
  93. package/dist/components/Epic/Epic.js.map +1 -1
  94. package/dist/components/FocusTrap/FocusTrap.d.ts +1 -1
  95. package/dist/components/FocusTrap/FocusTrap.js +9 -9
  96. package/dist/components/FocusTrap/FocusTrap.js.map +1 -1
  97. package/dist/components/HorizontalCell/HorizontalCell.js +3 -5
  98. package/dist/components/HorizontalCell/HorizontalCell.js.map +1 -1
  99. package/dist/components/MiniInfoCell/MiniInfoCell.js +2 -2
  100. package/dist/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
  101. package/dist/components/ModalRoot/ModalRoot.d.ts +1 -1
  102. package/dist/components/ModalRoot/ModalRootDesktop.d.ts +1 -1
  103. package/dist/components/Popper/Popper.d.ts +18 -1
  104. package/dist/components/Popper/Popper.js +10 -19
  105. package/dist/components/Popper/Popper.js.map +1 -1
  106. package/dist/components/PopperArrow/PopperArrow.d.ts +8 -0
  107. package/dist/components/PopperArrow/PopperArrow.js +27 -0
  108. package/dist/components/PopperArrow/PopperArrow.js.map +1 -0
  109. package/dist/components/RichTooltip/RichTooltip.d.ts +7 -2
  110. package/dist/components/RichTooltip/RichTooltip.js +5 -10
  111. package/dist/components/RichTooltip/RichTooltip.js.map +1 -1
  112. package/dist/components/SimpleCell/SimpleCell.js +18 -28
  113. package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
  114. package/dist/components/Snackbar/Snackbar.d.ts +5 -1
  115. package/dist/components/Snackbar/Snackbar.js +8 -11
  116. package/dist/components/Snackbar/Snackbar.js.map +1 -1
  117. package/dist/components/SplitCol/SplitCol.d.ts +1 -0
  118. package/dist/components/SplitCol/SplitCol.js +3 -0
  119. package/dist/components/SplitCol/SplitCol.js.map +1 -1
  120. package/dist/components/SplitLayout/SplitLayout.js +4 -7
  121. package/dist/components/SplitLayout/SplitLayout.js.map +1 -1
  122. package/dist/components/Tabbar/Tabbar.d.ts +8 -1
  123. package/dist/components/Tabbar/Tabbar.js +15 -14
  124. package/dist/components/Tabbar/Tabbar.js.map +1 -1
  125. package/dist/components/TabbarItem/TabbarItem.js +7 -9
  126. package/dist/components/TabbarItem/TabbarItem.js.map +1 -1
  127. package/dist/components/Tabs/Tabs.d.ts +13 -2
  128. package/dist/components/Tabs/Tabs.js +23 -5
  129. package/dist/components/Tabs/Tabs.js.map +1 -1
  130. package/dist/components/TabsItem/TabsItem.d.ts +22 -1
  131. package/dist/components/TabsItem/TabsItem.js +40 -21
  132. package/dist/components/TabsItem/TabsItem.js.map +1 -1
  133. package/dist/components/TextTooltip/TextTooltip.d.ts +5 -1
  134. package/dist/components/TextTooltip/TextTooltip.js +5 -7
  135. package/dist/components/TextTooltip/TextTooltip.js.map +1 -1
  136. package/dist/components/Tooltip/Tooltip.d.ts +18 -1
  137. package/dist/components/Tooltip/Tooltip.js +89 -68
  138. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  139. package/dist/components/Typography/Headline/Headline.d.ts +3 -3
  140. package/dist/components/Typography/Headline/Headline.js +10 -2
  141. package/dist/components/Typography/Headline/Headline.js.map +1 -1
  142. package/dist/components/View/View.d.ts +2 -18
  143. package/dist/components/View/View.js +384 -462
  144. package/dist/components/View/View.js.map +1 -1
  145. package/dist/components/View/ViewInfinite.d.ts +1 -1
  146. package/dist/components/WriteBar/WriteBar.d.ts +5 -1
  147. package/dist/components/WriteBar/WriteBar.js +10 -5
  148. package/dist/components/WriteBar/WriteBar.js.map +1 -1
  149. package/dist/components/WriteBarIcon/WriteBarIcon.js +3 -6
  150. package/dist/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
  151. package/dist/components.css +143 -127
  152. package/dist/components.css.map +1 -1
  153. package/dist/cssm/components/ActionSheet/ActionSheet.css +1 -1
  154. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.css +1 -1
  155. package/dist/cssm/components/Alert/Alert.css +1 -1
  156. package/dist/cssm/components/AppRoot/AppRoot.css +1 -1
  157. package/dist/cssm/components/Avatar/Avatar.css +3 -5
  158. package/dist/cssm/components/Badge/Badge.css +3 -3
  159. package/dist/cssm/components/Banner/Banner.css +5 -5
  160. package/dist/cssm/components/BaseGallery/BaseGallery.css +1 -1
  161. package/dist/cssm/components/Button/Button.css +53 -35
  162. package/dist/cssm/components/Calendar/Calendar.css +1 -1
  163. package/dist/cssm/components/CalendarDay/CalendarDay.css +1 -1
  164. package/dist/cssm/components/CalendarDays/CalendarDays.css +1 -1
  165. package/dist/cssm/components/CalendarHeader/CalendarHeader.css +1 -1
  166. package/dist/cssm/components/CalendarRange/CalendarRange.css +1 -1
  167. package/dist/cssm/components/CalendarTime/CalendarTime.css +1 -1
  168. package/dist/cssm/components/Card/Card.css +5 -6
  169. package/dist/cssm/components/CardGrid/CardGrid.css +1 -1
  170. package/dist/cssm/components/CardScroll/CardScroll.css +1 -1
  171. package/dist/cssm/components/CardScroll/CardScroll.js +3 -1
  172. package/dist/cssm/components/CardScroll/CardScroll.js.map +1 -1
  173. package/dist/cssm/components/Cell/Cell.css +3 -3
  174. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.css +1 -1
  175. package/dist/cssm/components/Cell/CellDragger/CellDragger.css +1 -1
  176. package/dist/cssm/components/CellButton/CellButton.css +1 -1
  177. package/dist/cssm/components/Checkbox/Checkbox.css +1 -1
  178. package/dist/cssm/components/Chip/Chip.css +1 -1
  179. package/dist/cssm/components/ChipsInput/ChipsInput.css +1 -1
  180. package/dist/cssm/components/ChipsSelect/ChipsSelect.css +1 -1
  181. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.d.ts +1 -0
  182. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.js +3 -0
  183. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  184. package/dist/cssm/components/ContentCard/ContentCard.css +1 -1
  185. package/dist/cssm/components/Counter/Counter.css +31 -31
  186. package/dist/cssm/components/CustomScrollView/CustomScrollView.css +1 -1
  187. package/dist/cssm/components/CustomSelect/CustomSelect.css +1 -1
  188. package/dist/cssm/components/CustomSelect/CustomSelect.d.ts +1 -1
  189. package/dist/cssm/components/CustomSelect/CustomSelect.js +473 -580
  190. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  191. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.css +3 -3
  192. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.css +3 -3
  193. package/dist/cssm/components/DateInput/DateInput.css +1 -1
  194. package/dist/cssm/components/DatePicker/DatePicker.css +1 -1
  195. package/dist/cssm/components/DateRangeInput/DateRangeInput.css +1 -1
  196. package/dist/cssm/components/Dropdown/Dropdown.css +1 -1
  197. package/dist/cssm/components/Dropdown/Dropdown.d.ts +46 -5
  198. package/dist/cssm/components/Dropdown/Dropdown.js +137 -27
  199. package/dist/cssm/components/Dropdown/Dropdown.js.map +1 -1
  200. package/dist/cssm/components/Epic/Epic.css +1 -1
  201. package/dist/cssm/components/Epic/Epic.js +1 -4
  202. package/dist/cssm/components/Epic/Epic.js.map +1 -1
  203. package/dist/cssm/components/FixedLayout/FixedLayout.css +1 -1
  204. package/dist/cssm/components/FocusTrap/FocusTrap.d.ts +1 -1
  205. package/dist/cssm/components/FocusTrap/FocusTrap.js +9 -9
  206. package/dist/cssm/components/FocusTrap/FocusTrap.js.map +1 -1
  207. package/dist/cssm/components/FocusVisible/FocusVisible.css +1 -1
  208. package/dist/cssm/components/Footer/Footer.css +1 -1
  209. package/dist/cssm/components/FormField/FormField.css +9 -9
  210. package/dist/cssm/components/FormItem/FormItem.css +1 -1
  211. package/dist/cssm/components/FormLayout/FormLayout.css +1 -1
  212. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.css +1 -1
  213. package/dist/cssm/components/FormStatus/FormStatus.css +1 -1
  214. package/dist/cssm/components/Gradient/Gradient.css +1 -1
  215. package/dist/cssm/components/GridAvatar/GridAvatar.css +1 -1
  216. package/dist/cssm/components/Group/Group.css +1 -1
  217. package/dist/cssm/components/Header/Header.css +1 -1
  218. package/dist/cssm/components/HorizontalCell/HorizontalCell.css +1 -1
  219. package/dist/cssm/components/HorizontalCell/HorizontalCell.js +3 -5
  220. package/dist/cssm/components/HorizontalCell/HorizontalCell.js.map +1 -1
  221. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.css +1 -1
  222. package/dist/cssm/components/HorizontalScroll/HorizontalScrollArrow.css +3 -3
  223. package/dist/cssm/components/IconButton/IconButton.css +1 -1
  224. package/dist/cssm/components/InfoRow/InfoRow.css +1 -1
  225. package/dist/cssm/components/InitialsAvatar/InitialsAvatar.css +1 -1
  226. package/dist/cssm/components/Input/Input.css +1 -1
  227. package/dist/cssm/components/InputLike/InputLike.css +1 -1
  228. package/dist/cssm/components/InputLike/InputLikeDivider.css +1 -1
  229. package/dist/cssm/components/Link/Link.css +1 -1
  230. package/dist/cssm/components/MiniInfoCell/MiniInfoCell.css +1 -1
  231. package/dist/cssm/components/MiniInfoCell/MiniInfoCell.js +2 -2
  232. package/dist/cssm/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
  233. package/dist/cssm/components/ModalCard/ModalCard.css +1 -1
  234. package/dist/cssm/components/ModalCardBase/ModalCardBase.css +3 -3
  235. package/dist/cssm/components/ModalDismissButton/ModalDismissButton.css +1 -1
  236. package/dist/cssm/components/ModalPage/ModalPage.css +1 -1
  237. package/dist/cssm/components/ModalPageHeader/ModalPageHeader.css +1 -1
  238. package/dist/cssm/components/ModalRoot/ModalRoot.css +1 -1
  239. package/dist/cssm/components/ModalRoot/ModalRoot.d.ts +1 -1
  240. package/dist/cssm/components/ModalRoot/ModalRootDesktop.d.ts +1 -1
  241. package/dist/cssm/components/Pagination/Pagination.css +1 -1
  242. package/dist/cssm/components/Panel/Panel.css +1 -1
  243. package/dist/cssm/components/PanelHeader/PanelHeader.css +1 -1
  244. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.css +1 -1
  245. package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.css +1 -1
  246. package/dist/cssm/components/PanelHeaderContext/PanelHeaderContext.css +1 -1
  247. package/dist/cssm/components/Placeholder/Placeholder.css +3 -3
  248. package/dist/cssm/components/PopoutRoot/PopoutRoot.css +1 -1
  249. package/dist/cssm/components/PopoutWrapper/PopoutWrapper.css +1 -1
  250. package/dist/cssm/components/Popper/Popper.css +1 -1
  251. package/dist/cssm/components/Popper/Popper.d.ts +18 -1
  252. package/dist/cssm/components/Popper/Popper.js +10 -19
  253. package/dist/cssm/components/Popper/Popper.js.map +1 -1
  254. package/dist/cssm/components/PopperArrow/PopperArrow.css +1 -0
  255. package/dist/cssm/components/PopperArrow/PopperArrow.d.ts +8 -0
  256. package/dist/cssm/components/PopperArrow/PopperArrow.js +28 -0
  257. package/dist/cssm/components/PopperArrow/PopperArrow.js.map +1 -0
  258. package/dist/cssm/components/Progress/Progress.css +1 -1
  259. package/dist/cssm/components/PromoBanner/PromoBanner.css +1 -1
  260. package/dist/cssm/components/PullToRefresh/PullToRefresh.css +3 -3
  261. package/dist/cssm/components/Radio/Radio.css +1 -1
  262. package/dist/cssm/components/RadioGroup/RadioGroup.css +1 -1
  263. package/dist/cssm/components/Removable/Removable.css +1 -1
  264. package/dist/cssm/components/RichCell/RichCell.css +3 -3
  265. package/dist/cssm/components/RichTooltip/RichTooltip.css +3 -1
  266. package/dist/cssm/components/RichTooltip/RichTooltip.d.ts +7 -2
  267. package/dist/cssm/components/RichTooltip/RichTooltip.js +5 -10
  268. package/dist/cssm/components/RichTooltip/RichTooltip.js.map +1 -1
  269. package/dist/cssm/components/Root/Root.css +1 -1
  270. package/dist/cssm/components/ScreenSpinner/ScreenSpinner.css +1 -1
  271. package/dist/cssm/components/Search/Search.css +1 -1
  272. package/dist/cssm/components/SegmentedControl/SegmentedControl.css +1 -1
  273. package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.css +1 -1
  274. package/dist/cssm/components/Select/Select.css +1 -1
  275. package/dist/cssm/components/Separator/Separator.css +1 -1
  276. package/dist/cssm/components/SimpleCell/SimpleCell.css +1 -1
  277. package/dist/cssm/components/SimpleCell/SimpleCell.js +18 -28
  278. package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
  279. package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.css +1 -1
  280. package/dist/cssm/components/Slider/Slider.css +3 -3
  281. package/dist/cssm/components/SliderSwitch/SliderSwitch.css +1 -1
  282. package/dist/cssm/components/Snackbar/Snackbar.css +1 -1
  283. package/dist/cssm/components/Snackbar/Snackbar.d.ts +5 -1
  284. package/dist/cssm/components/Snackbar/Snackbar.js +8 -11
  285. package/dist/cssm/components/Snackbar/Snackbar.js.map +1 -1
  286. package/dist/cssm/components/Spacing/Spacing.css +1 -1
  287. package/dist/cssm/components/Spinner/Spinner.css +1 -1
  288. package/dist/cssm/components/SplitCol/SplitCol.css +1 -1
  289. package/dist/cssm/components/SplitCol/SplitCol.d.ts +1 -0
  290. package/dist/cssm/components/SplitCol/SplitCol.js +3 -0
  291. package/dist/cssm/components/SplitCol/SplitCol.js.map +1 -1
  292. package/dist/cssm/components/SplitLayout/SplitLayout.css +1 -1
  293. package/dist/cssm/components/SplitLayout/SplitLayout.js +4 -7
  294. package/dist/cssm/components/SplitLayout/SplitLayout.js.map +1 -1
  295. package/dist/cssm/components/SubnavigationBar/SubnavigationBar.css +1 -1
  296. package/dist/cssm/components/SubnavigationButton/SubnavigationButton.css +1 -1
  297. package/dist/cssm/components/Switch/Switch.css +3 -3
  298. package/dist/cssm/components/Tabbar/Tabbar.css +5 -3
  299. package/dist/cssm/components/Tabbar/Tabbar.d.ts +8 -1
  300. package/dist/cssm/components/Tabbar/Tabbar.js +15 -14
  301. package/dist/cssm/components/Tabbar/Tabbar.js.map +1 -1
  302. package/dist/cssm/components/TabbarItem/TabbarItem.css +1 -1
  303. package/dist/cssm/components/TabbarItem/TabbarItem.js +7 -9
  304. package/dist/cssm/components/TabbarItem/TabbarItem.js.map +1 -1
  305. package/dist/cssm/components/Tabs/Tabs.css +1 -1
  306. package/dist/cssm/components/Tabs/Tabs.d.ts +13 -2
  307. package/dist/cssm/components/Tabs/Tabs.js +23 -5
  308. package/dist/cssm/components/Tabs/Tabs.js.map +1 -1
  309. package/dist/cssm/components/TabsItem/TabsItem.css +5 -1
  310. package/dist/cssm/components/TabsItem/TabsItem.d.ts +22 -1
  311. package/dist/cssm/components/TabsItem/TabsItem.js +40 -21
  312. package/dist/cssm/components/TabsItem/TabsItem.js.map +1 -1
  313. package/dist/cssm/components/Tappable/Tappable.css +5 -5
  314. package/dist/cssm/components/TextTooltip/TextTooltip.css +1 -1
  315. package/dist/cssm/components/TextTooltip/TextTooltip.d.ts +5 -1
  316. package/dist/cssm/components/TextTooltip/TextTooltip.js +5 -7
  317. package/dist/cssm/components/TextTooltip/TextTooltip.js.map +1 -1
  318. package/dist/cssm/components/Textarea/Textarea.css +1 -1
  319. package/dist/cssm/components/Tooltip/Tooltip.css +1 -1
  320. package/dist/cssm/components/Tooltip/Tooltip.d.ts +18 -1
  321. package/dist/cssm/components/Tooltip/Tooltip.js +89 -68
  322. package/dist/cssm/components/Tooltip/Tooltip.js.map +1 -1
  323. package/dist/cssm/components/Typography/Caption/Caption.css +1 -1
  324. package/dist/cssm/components/Typography/Footnote/Footnote.css +1 -1
  325. package/dist/cssm/components/Typography/Headline/Headline.css +1 -1
  326. package/dist/cssm/components/Typography/Headline/Headline.d.ts +3 -3
  327. package/dist/cssm/components/Typography/Headline/Headline.js +10 -2
  328. package/dist/cssm/components/Typography/Headline/Headline.js.map +1 -1
  329. package/dist/cssm/components/Typography/Paragraph/Paragraph.css +1 -1
  330. package/dist/cssm/components/Typography/Subhead/Subhead.css +1 -1
  331. package/dist/cssm/components/Typography/Text/Text.css +1 -1
  332. package/dist/cssm/components/Typography/Title/Title.css +1 -1
  333. package/dist/cssm/components/UsersStack/UsersStack.css +5 -5
  334. package/dist/cssm/components/View/View.css +1 -1
  335. package/dist/cssm/components/View/View.d.ts +2 -18
  336. package/dist/cssm/components/View/View.js +384 -462
  337. package/dist/cssm/components/View/View.js.map +1 -1
  338. package/dist/cssm/components/View/ViewIOS.css +1 -1
  339. package/dist/cssm/components/View/ViewInfinite.d.ts +1 -1
  340. package/dist/cssm/components/VisuallyHiddenInput/VisuallyHiddenInput.css +1 -1
  341. package/dist/cssm/components/WriteBar/WriteBar.css +3 -1
  342. package/dist/cssm/components/WriteBar/WriteBar.d.ts +5 -1
  343. package/dist/cssm/components/WriteBar/WriteBar.js +10 -5
  344. package/dist/cssm/components/WriteBar/WriteBar.js.map +1 -1
  345. package/dist/cssm/components/WriteBarIcon/WriteBarIcon.css +1 -1
  346. package/dist/cssm/components/WriteBarIcon/WriteBarIcon.js +3 -6
  347. package/dist/cssm/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
  348. package/dist/cssm/fonts/fonts.css +1 -1
  349. package/dist/cssm/hooks/useOrientationChange.js +2 -1
  350. package/dist/cssm/hooks/useOrientationChange.js.map +1 -1
  351. package/dist/cssm/lib/calendar.d.ts +2 -2
  352. package/dist/cssm/styles/animations.css +1 -1
  353. package/dist/cssm/styles/bright_light.css +1 -1
  354. package/dist/cssm/styles/common.css +1 -1
  355. package/dist/cssm/styles/components.css +143 -127
  356. package/dist/cssm/styles/constants.css +3 -10
  357. package/dist/cssm/styles/space_gray.css +1 -1
  358. package/dist/cssm/styles/themes.css +1 -16
  359. package/dist/cssm/styles/unstable.css +3 -1
  360. package/dist/cssm/styles/vkcom_dark.css +1 -6
  361. package/dist/cssm/styles/vkcom_light.css +1 -11
  362. package/dist/cssm/tokenized/index.d.ts +26 -0
  363. package/dist/cssm/tokenized/index.js +13 -0
  364. package/dist/cssm/tokenized/index.js.map +1 -1
  365. package/dist/default_scheme.css +1 -1
  366. package/dist/default_scheme.css.map +1 -1
  367. package/dist/fonts.css +1 -1
  368. package/dist/fonts.css.map +1 -1
  369. package/dist/hooks/useOrientationChange.js +2 -1
  370. package/dist/hooks/useOrientationChange.js.map +1 -1
  371. package/dist/lib/calendar.d.ts +2 -2
  372. package/dist/tokenized/index.d.ts +26 -0
  373. package/dist/tokenized/index.js +13 -0
  374. package/dist/tokenized/index.js.map +1 -1
  375. package/dist/unstable.css +3 -1
  376. package/dist/unstable.css.map +1 -1
  377. package/dist/vkui.css +144 -143
  378. package/dist/vkui.css.map +1 -1
  379. package/package.json +6 -5
  380. package/src/components/Badge/Badge.css +0 -5
  381. package/src/components/CardScroll/CardScroll.tsx +1 -1
  382. package/src/components/Cell/Cell.css +3 -2
  383. package/src/components/ChipsInput/ChipsInput.css +2 -0
  384. package/src/components/ConfigProvider/ConfigProviderContext.tsx +2 -0
  385. package/src/components/Counter/Counter.css +30 -0
  386. package/src/components/CustomScrollView/CustomScrollView.css +10 -5
  387. package/src/components/CustomSelect/CustomSelect.tsx +543 -574
  388. package/src/components/Dropdown/Dropdown.css +12 -0
  389. package/src/components/Dropdown/Dropdown.tsx +174 -20
  390. package/src/components/Dropdown/Readme.md +1 -0
  391. package/src/components/Epic/Epic.tsx +1 -4
  392. package/src/components/FixedLayout/Readme.md +103 -109
  393. package/src/components/FocusTrap/FocusTrap.tsx +10 -10
  394. package/src/components/Group/Group.css +1 -1
  395. package/src/components/HorizontalCell/HorizontalCell.css +25 -43
  396. package/src/components/HorizontalCell/HorizontalCell.tsx +3 -9
  397. package/src/components/HorizontalScroll/HorizontalScroll.css +23 -0
  398. package/src/components/Input/Input.css +2 -0
  399. package/src/components/MiniInfoCell/MiniInfoCell.css +13 -3
  400. package/src/components/MiniInfoCell/MiniInfoCell.tsx +3 -3
  401. package/src/components/Popper/Popper.css +0 -35
  402. package/src/components/Popper/Popper.tsx +29 -23
  403. package/src/components/PopperArrow/PopperArrow.css +34 -0
  404. package/src/components/PopperArrow/PopperArrow.tsx +40 -0
  405. package/src/components/RichTooltip/RichTooltip.css +44 -4
  406. package/src/components/RichTooltip/RichTooltip.tsx +9 -11
  407. package/src/components/SimpleCell/Readme.md +115 -129
  408. package/src/components/SimpleCell/SimpleCell.css +30 -68
  409. package/src/components/SimpleCell/SimpleCell.tsx +21 -25
  410. package/src/components/Snackbar/Readme.md +95 -123
  411. package/src/components/Snackbar/Snackbar.css +18 -27
  412. package/src/components/Snackbar/Snackbar.tsx +17 -11
  413. package/src/components/SplitCol/SplitCol.tsx +2 -0
  414. package/src/components/SplitLayout/SplitLayout.css +3 -7
  415. package/src/components/SplitLayout/SplitLayout.tsx +9 -6
  416. package/src/components/Tabbar/Tabbar.css +4 -1
  417. package/src/components/Tabbar/Tabbar.tsx +23 -12
  418. package/src/components/TabbarItem/TabbarItem.css +7 -5
  419. package/src/components/TabbarItem/TabbarItem.tsx +13 -7
  420. package/src/components/Tabs/Readme.md +191 -251
  421. package/src/components/Tabs/Tabs.css +27 -80
  422. package/src/components/Tabs/Tabs.tsx +45 -7
  423. package/src/components/TabsItem/Readme.md +1 -0
  424. package/src/components/TabsItem/TabsItem.css +191 -106
  425. package/src/components/TabsItem/TabsItem.tsx +72 -20
  426. package/src/components/TextTooltip/TextTooltip.css +41 -11
  427. package/src/components/TextTooltip/TextTooltip.tsx +9 -13
  428. package/src/components/Textarea/Textarea.css +2 -0
  429. package/src/components/Tooltip/Readme.md +128 -101
  430. package/src/components/Tooltip/Tooltip.css +29 -40
  431. package/src/components/Tooltip/Tooltip.tsx +98 -66
  432. package/src/components/Typography/Headline/Headline.tsx +15 -1
  433. package/src/components/View/Readme.md +2 -0
  434. package/src/components/View/View.tsx +451 -514
  435. package/src/components/WriteBar/WriteBar.css +27 -33
  436. package/src/components/WriteBar/WriteBar.tsx +16 -5
  437. package/src/components/WriteBarIcon/WriteBarIcon.css +6 -19
  438. package/src/components/WriteBarIcon/WriteBarIcon.tsx +6 -6
  439. package/src/hooks/useOrientationChange.ts +1 -0
  440. package/src/styles/components.css +1 -0
  441. package/src/styles/constants.css +8 -0
  442. package/src/tokenized/index.ts +39 -0
  443. package/tsconfig.json +1 -1
  444. package/.cache/ts/src/components/ClickPopper/ClickPopper.d.ts +0 -21
  445. package/dist/cjs/components/ClickPopper/ClickPopper.js +0 -96
  446. package/dist/cjs/components/ClickPopper/ClickPopper.js.map +0 -1
  447. package/dist/components/ClickPopper/ClickPopper.d.ts +0 -21
  448. package/dist/components/ClickPopper/ClickPopper.js +0 -71
  449. package/dist/components/ClickPopper/ClickPopper.js.map +0 -1
  450. package/dist/cssm/components/ClickPopper/ClickPopper.d.ts +0 -21
  451. package/dist/cssm/components/ClickPopper/ClickPopper.js +0 -71
  452. package/dist/cssm/components/ClickPopper/ClickPopper.js.map +0 -1
  453. package/src/components/ClickPopper/ClickPopper.tsx +0 -86
@@ -1,29 +1,28 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
4
- import _createClass from "@babel/runtime/helpers/createClass";
5
- import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
6
- import _inherits from "@babel/runtime/helpers/inherits";
7
- import _createSuper from "@babel/runtime/helpers/createSuper";
8
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
9
- var _excluded = ["popout", "modal", "platform", "activePanel", "splitCol", "configProvider", "history", "nav", "onTransition", "onSwipeBack", "onSwipeBackStart", "onSwipeBackCancel", "window", "document", "scroll"];
4
+ var _excluded = ["popout", "modal", "activePanel", "history", "nav", "onTransition", "onSwipeBack", "onSwipeBackStart", "onSwipeBackCancel", "children"];
10
5
  import { createScopedElement } from "../../lib/jsxRuntime";
11
6
  import * as React from "react";
12
7
  import { classNames } from "../../lib/classNames";
13
- import { transitionEvent, animationEvent } from "../../lib/supportEvents";
8
+ import { animationEvent } from "../../lib/supportEvents";
14
9
  import { IOS } from "../../lib/platform";
15
10
  import { Touch } from "../Touch/Touch";
16
- import { withPlatform } from "../../hoc/withPlatform";
17
- import { withContext } from "../../hoc/withContext";
18
- import { ConfigProviderContext } from "../ConfigProvider/ConfigProviderContext";
19
- import { SplitColContext } from "../SplitCol/SplitCol";
11
+ import { useConfigProvider } from "../ConfigProvider/ConfigProviderContext";
12
+ import { useSplitCol } from "../SplitCol/SplitCol";
20
13
  import { AppRootPortal } from "../AppRoot/AppRootPortal";
21
- import { canUseDOM, withDOM } from "../../lib/dom";
22
- import { ScrollContext } from "../AppRoot/ScrollContext";
14
+ import { canUseDOM, useDOM, blurActiveElement } from "../../lib/dom";
15
+ import { useScroll } from "../AppRoot/ScrollContext";
23
16
  import { NavTransitionProvider } from "../NavTransitionContext/NavTransitionContext";
24
17
  import { getNavId } from "../../lib/getNavId";
25
18
  import { warnOnce } from "../../lib/warnOnce";
19
+ import { usePlatform } from "../../hooks/usePlatform";
26
20
  import { swipeBackExcluded } from "./utils";
21
+ import { useWaitTransitionFinish } from "../../hooks/useWaitTransitionFinish";
22
+ import { useTimeout } from "../../hooks/useTimeout";
23
+ import { usePrevious } from "../../hooks/usePrevious";
24
+ import { useIsomorphicLayoutEffect } from "../../lib/useIsomorphicLayoutEffect";
25
+ import { noop } from "../../lib/utils";
27
26
  var SwipeBackResults;
28
27
 
29
28
  (function (SwipeBackResults) {
@@ -33,505 +32,428 @@ var SwipeBackResults;
33
32
 
34
33
  export var scrollsCache = {};
35
34
  var warn = warnOnce("View");
35
+ /**
36
+ * @see https://vkcom.github.io/VKUI/#/View
37
+ */
36
38
 
37
- var ViewComponent = /*#__PURE__*/function (_React$Component) {
38
- _inherits(ViewComponent, _React$Component);
39
-
40
- var _super = _createSuper(ViewComponent);
41
-
42
- function ViewComponent(props) {
43
- var _this;
44
-
45
- _classCallCheck(this, ViewComponent);
46
-
47
- _this = _super.call(this, props);
48
-
49
- _defineProperty(_assertThisInitialized(_this), "scrolls", scrollsCache[getNavId(_this.props)] || {});
50
-
51
- _defineProperty(_assertThisInitialized(_this), "transitionFinishTimeout", undefined);
52
-
53
- _defineProperty(_assertThisInitialized(_this), "animationFinishTimeout", undefined);
39
+ export var View = function View(_ref) {
40
+ var popout = _ref.popout,
41
+ modal = _ref.modal,
42
+ activePanelProp = _ref.activePanel,
43
+ history = _ref.history,
44
+ nav = _ref.nav,
45
+ onTransition = _ref.onTransition,
46
+ onSwipeBack = _ref.onSwipeBack,
47
+ onSwipeBackStart = _ref.onSwipeBackStart,
48
+ onSwipeBackCancelProp = _ref.onSwipeBackCancel,
49
+ children = _ref.children,
50
+ restProps = _objectWithoutProperties(_ref, _excluded);
51
+
52
+ if (process.env.NODE_ENV === "development") {
53
+ popout && warn("Свойство popout устарело и будет удалено в 5.0.0. Используйте одноименное свойство у SplitLayout.");
54
+ modal && warn("Свойство modal устарело и будет удалено в 5.0.0. Используйте одноименное свойство у SplitLayout.");
55
+ }
54
56
 
55
- _defineProperty(_assertThisInitialized(_this), "panelNodes", {});
57
+ var scrolls = React.useRef(scrollsCache[getNavId({
58
+ nav: nav,
59
+ id: restProps.id
60
+ })] || {});
61
+ var afterTransition = React.useRef(noop);
62
+ React.useEffect(function () {
63
+ return function () {
64
+ var id = getNavId({
65
+ nav: nav,
66
+ id: restProps.id
67
+ });
56
68
 
57
- _defineProperty(_assertThisInitialized(_this), "transitionEndHandler", function (e) {
58
- if ((!e || ["vkui-animation-ios-next-forward", "vkui-animation-ios-prev-back", "vkui-animation-view-next-forward", "vkui-animation-view-prev-back"].includes(e.animationName)) && _this.state.prevPanel !== null) {
59
- _this.flushTransition(_this.state.prevPanel, Boolean(_this.state.isBack));
69
+ if (id) {
70
+ scrollsCache[id] = scrolls.current;
60
71
  }
61
- });
62
-
63
- _defineProperty(_assertThisInitialized(_this), "swipingBackTransitionEndHandler", function (e) {
64
- // indexOf because of vendor prefixes in old browsers
65
- if (!e || e !== null && e !== void 0 && e.propertyName.includes("transform") && (e === null || e === void 0 ? void 0 : e.target) === _this.pickPanel(_this.state.swipeBackNextPanel)) {
66
- switch (_this.state.swipeBackResult) {
67
- case SwipeBackResults.fail:
68
- _this.onSwipeBackCancel();
72
+ };
73
+ });
74
+ var panelNodes = React.useRef({});
75
+
76
+ var _useDOM = useDOM(),
77
+ window = _useDOM.window,
78
+ document = _useDOM.document;
79
+
80
+ var scroll = useScroll();
81
+ var configProvider = useConfigProvider();
82
+ var splitCol = useSplitCol();
83
+ var platform = usePlatform();
84
+
85
+ var _React$useState = React.useState(false),
86
+ _React$useState2 = _slicedToArray(_React$useState, 2),
87
+ animated = _React$useState2[0],
88
+ setAnimated = _React$useState2[1];
89
+
90
+ var _React$useState3 = React.useState([activePanelProp]),
91
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
92
+ visiblePanels = _React$useState4[0],
93
+ setVisiblePanels = _React$useState4[1];
94
+
95
+ var _React$useState5 = React.useState(activePanelProp),
96
+ _React$useState6 = _slicedToArray(_React$useState5, 2),
97
+ activePanel = _React$useState6[0],
98
+ setActivePanel = _React$useState6[1];
99
+
100
+ var _React$useState7 = React.useState(undefined),
101
+ _React$useState8 = _slicedToArray(_React$useState7, 2),
102
+ isBack = _React$useState8[0],
103
+ setIsBack = _React$useState8[1];
104
+
105
+ var _React$useState9 = React.useState(null),
106
+ _React$useState10 = _slicedToArray(_React$useState9, 2),
107
+ prevPanel = _React$useState10[0],
108
+ setPrevPanel = _React$useState10[1];
109
+
110
+ var _React$useState11 = React.useState(null),
111
+ _React$useState12 = _slicedToArray(_React$useState11, 2),
112
+ nextPanel = _React$useState12[0],
113
+ setNextPanel = _React$useState12[1];
114
+
115
+ var _React$useState13 = React.useState(false),
116
+ _React$useState14 = _slicedToArray(_React$useState13, 2),
117
+ swipingBack = _React$useState14[0],
118
+ setSwipingBack = _React$useState14[1];
119
+
120
+ var _React$useState15 = React.useState(0),
121
+ _React$useState16 = _slicedToArray(_React$useState15, 2),
122
+ swipeBackStartX = _React$useState16[0],
123
+ setSwipeBackStartX = _React$useState16[1];
124
+
125
+ var _React$useState17 = React.useState(0),
126
+ _React$useState18 = _slicedToArray(_React$useState17, 2),
127
+ swipeBackShift = _React$useState18[0],
128
+ setSwipeBackShift = _React$useState18[1];
129
+
130
+ var _React$useState19 = React.useState(null),
131
+ _React$useState20 = _slicedToArray(_React$useState19, 2),
132
+ swipeBackNextPanel = _React$useState20[0],
133
+ setSwipeBackNextPanel = _React$useState20[1];
134
+
135
+ var _React$useState21 = React.useState(null),
136
+ _React$useState22 = _slicedToArray(_React$useState21, 2),
137
+ swipeBackPrevPanel = _React$useState22[0],
138
+ setSwipeBackPrevPanel = _React$useState22[1];
139
+
140
+ var _React$useState23 = React.useState(null),
141
+ _React$useState24 = _slicedToArray(_React$useState23, 2),
142
+ swipeBackResult = _React$useState24[0],
143
+ setSwipeBackResult = _React$useState24[1];
144
+
145
+ var _React$useState25 = React.useState(false),
146
+ _React$useState26 = _slicedToArray(_React$useState25, 2),
147
+ browserSwipe = _React$useState26[0],
148
+ setBrowserSwipe = _React$useState26[1];
149
+
150
+ var prevActivePanel = usePrevious(activePanelProp);
151
+ var prevSwipingBack = usePrevious(swipingBack);
152
+ var prevBrowserSwipe = usePrevious(browserSwipe);
153
+ var prevSwipeBackResult = usePrevious(swipeBackResult);
154
+ var prevSwipeBackPrevPanel = usePrevious(swipeBackPrevPanel);
155
+ var prevOnTransition = usePrevious(onTransition);
156
+ var hasPopout = !!popout;
157
+ var hasModal = !!modal;
158
+ var panels = React.Children.toArray(children).filter(function (panel) {
159
+ var panelId = getNavId(panel.props, warn);
160
+ return panelId !== undefined && visiblePanels.includes(panelId) || panelId === swipeBackPrevPanel || panelId === swipeBackNextPanel;
161
+ });
162
+ var disableAnimation = (configProvider === null || configProvider === void 0 ? void 0 : configProvider.transitionMotionEnabled) === false || !(splitCol !== null && splitCol !== void 0 && splitCol.animate);
163
+
164
+ var pickPanel = function pickPanel(id) {
165
+ if (id === null) {
166
+ return null;
167
+ }
69
168
 
70
- break;
169
+ return panelNodes.current[id];
170
+ };
71
171
 
72
- case SwipeBackResults.success:
73
- _this.onSwipeBackSuccess();
172
+ var flushTransition = React.useCallback(function (prevPanel, isBackTransition) {
173
+ if (isBackTransition) {
174
+ scrolls.current[prevPanel] = 0;
175
+ }
74
176
 
75
- }
177
+ setPrevPanel(null);
178
+ setNextPanel(null);
179
+ setVisiblePanels([activePanelProp]);
180
+ setActivePanel(activePanelProp);
181
+ setAnimated(false);
182
+ setIsBack(undefined);
183
+
184
+ afterTransition.current = function () {
185
+ scroll === null || scroll === void 0 ? void 0 : scroll.scrollTo(0, isBackTransition ? scrolls.current[activePanelProp] : 0);
186
+ onTransition && onTransition({
187
+ isBack: isBackTransition,
188
+ from: prevPanel,
189
+ to: activePanelProp
190
+ });
191
+ };
192
+ }, [activePanelProp, onTransition, scroll]);
193
+ useIsomorphicLayoutEffect(function () {
194
+ afterTransition.current();
195
+ afterTransition.current = noop;
196
+ }, [afterTransition.current]);
197
+ var transitionEndHandler = React.useCallback(function (e) {
198
+ if ((!e || ["vkui-animation-ios-next-forward", "vkui-animation-ios-prev-back", "vkui-animation-view-next-forward", "vkui-animation-view-prev-back"].includes(e.animationName)) && prevPanel !== null) {
199
+ flushTransition(prevPanel, Boolean(isBack));
200
+ }
201
+ }, [flushTransition, isBack, prevPanel]);
202
+
203
+ var _useWaitTransitionFin = useWaitTransitionFinish(),
204
+ waitTransitionFinish = _useWaitTransitionFin.waitTransitionFinish;
205
+
206
+ var animationFinishTimeout = useTimeout(transitionEndHandler, platform === IOS ? 600 : 300);
207
+ var onSwipeBackSuccess = React.useCallback(function () {
208
+ onSwipeBack && onSwipeBack();
209
+ }, [onSwipeBack]);
210
+ var onSwipeBackCancel = React.useCallback(function () {
211
+ onSwipeBackCancelProp && onSwipeBackCancelProp();
212
+ setSwipeBackPrevPanel(null);
213
+ setSwipeBackNextPanel(null);
214
+ setSwipingBack(false);
215
+ setSwipeBackResult(null);
216
+ setSwipeBackStartX(0);
217
+ setSwipeBackShift(0);
218
+ }, [onSwipeBackCancelProp]);
219
+ var swipingBackTransitionEndHandler = React.useCallback(function (e) {
220
+ // indexOf because of vendor prefixes in old browsers
221
+ if (!e || e !== null && e !== void 0 && e.propertyName.includes("transform") && (e === null || e === void 0 ? void 0 : e.target) === pickPanel(swipeBackNextPanel)) {
222
+ switch (swipeBackResult) {
223
+ case SwipeBackResults.fail:
224
+ onSwipeBackCancel();
225
+ break;
226
+
227
+ case SwipeBackResults.success:
228
+ onSwipeBackSuccess();
76
229
  }
77
- });
230
+ }
231
+ }, [onSwipeBackCancel, onSwipeBackSuccess, swipeBackNextPanel, swipeBackResult]);
78
232
 
79
- _defineProperty(_assertThisInitialized(_this), "onMoveX", function (e) {
80
- if (swipeBackExcluded(e)) {
81
- return;
82
- }
233
+ var onMoveX = function onMoveX(e) {
234
+ if (swipeBackExcluded(e)) {
235
+ return;
236
+ }
83
237
 
84
- var _this$props = _this.props,
85
- platform = _this$props.platform,
86
- configProvider = _this$props.configProvider;
238
+ if (platform === IOS && !(configProvider !== null && configProvider !== void 0 && configProvider.isWebView) && (e.startX <= 70 || e.startX >= window.innerWidth - 70) && !browserSwipe) {
239
+ setBrowserSwipe(true);
240
+ }
87
241
 
88
- if (platform === IOS && !(configProvider !== null && configProvider !== void 0 && configProvider.isWebView) && (e.startX <= 70 || e.startX >= _this.window.innerWidth - 70) && !_this.state.browserSwipe) {
89
- _this.setState({
90
- browserSwipe: true
91
- });
242
+ if (platform === IOS && configProvider !== null && configProvider !== void 0 && configProvider.isWebView && onSwipeBack) {
243
+ if (animated && e.startX <= 70 || !window) {
244
+ return;
92
245
  }
93
246
 
94
- if (platform === IOS && configProvider !== null && configProvider !== void 0 && configProvider.isWebView && _this.props.onSwipeBack) {
95
- var _this$props$history$l, _this$props$history;
96
-
97
- if (_this.state.animated && e.startX <= 70 || !_this.window) {
98
- return;
99
- }
100
-
101
- if (e.startX <= 70 && !_this.state.swipingBack && ((_this$props$history$l = (_this$props$history = _this.props.history) === null || _this$props$history === void 0 ? void 0 : _this$props$history.length) !== null && _this$props$history$l !== void 0 ? _this$props$history$l : 0) > 1) {
102
- if (_this.state.activePanel !== null) {
103
- var _this$props$scroll;
104
-
105
- _this.scrolls[_this.state.activePanel] = (_this$props$scroll = _this.props.scroll) === null || _this$props$scroll === void 0 ? void 0 : _this$props$scroll.getScroll().y;
106
- }
107
-
108
- _this.setState({
109
- swipingBack: true,
110
- swipeBackStartX: e.startX,
111
- swipeBackPrevPanel: _this.state.activePanel,
112
- swipeBackNextPanel: _this.props.history.slice(-2)[0]
113
- });
247
+ if (e.startX <= 70 && !swipingBack && history && history.length > 1) {
248
+ if (activePanel !== null) {
249
+ scrolls.current[activePanel] = scroll === null || scroll === void 0 ? void 0 : scroll.getScroll().y;
114
250
  }
115
251
 
116
- if (_this.state.swipingBack) {
117
- var swipeBackShift = 0;
118
-
119
- if (e.shiftX < 0) {
120
- swipeBackShift = 0;
121
- } else if (e.shiftX > _this.window.innerWidth - _this.state.swipeBackStartX) {
122
- var _this$window;
252
+ setSwipingBack(true);
253
+ setSwipeBackStartX(e.startX);
254
+ setSwipeBackPrevPanel(activePanel);
255
+ setSwipeBackNextPanel(history.slice(-2)[0]);
256
+ }
123
257
 
124
- swipeBackShift = (_this$window = _this.window) === null || _this$window === void 0 ? void 0 : _this$window.innerWidth;
125
- } else {
126
- swipeBackShift = e.shiftX;
127
- }
258
+ if (swipingBack) {
259
+ var _swipeBackShift = 0;
128
260
 
129
- _this.setState({
130
- swipeBackShift: swipeBackShift
131
- });
132
- }
133
- }
134
- });
135
-
136
- _defineProperty(_assertThisInitialized(_this), "onEnd", function (e) {
137
- if (_this.state.swipingBack && _this.window) {
138
- var _this$window$innerWid, _this$window2;
139
-
140
- var speed = _this.state.swipeBackShift / e.duration * 1000;
141
-
142
- if (_this.state.swipeBackShift === 0) {
143
- _this.onSwipeBackCancel();
144
- } else if (_this.state.swipeBackShift >= ((_this$window$innerWid = (_this$window2 = _this.window) === null || _this$window2 === void 0 ? void 0 : _this$window2.innerWidth) !== null && _this$window$innerWid !== void 0 ? _this$window$innerWid : 0)) {
145
- _this.onSwipeBackSuccess();
146
- } else if (speed > 250 || _this.state.swipeBackStartX + _this.state.swipeBackShift > _this.window.innerWidth / 2) {
147
- _this.setState({
148
- swipeBackResult: SwipeBackResults.success
149
- });
261
+ if (e.shiftX < 0) {
262
+ _swipeBackShift = 0;
263
+ } else if (e.shiftX > window.innerWidth - swipeBackStartX) {
264
+ _swipeBackShift = window === null || window === void 0 ? void 0 : window.innerWidth;
150
265
  } else {
151
- _this.setState({
152
- swipeBackResult: SwipeBackResults.fail
153
- });
266
+ _swipeBackShift = e.shiftX;
154
267
  }
155
- }
156
- });
157
-
158
- _this.state = {
159
- animated: false,
160
- visiblePanels: [props.activePanel],
161
- activePanel: props.activePanel,
162
- isBack: undefined,
163
- prevPanel: null,
164
- nextPanel: null,
165
- swipingBack: false,
166
- swipeBackStartX: 0,
167
- swipeBackShift: 0,
168
- swipeBackNextPanel: null,
169
- swipeBackPrevPanel: null,
170
- swipeBackResult: null,
171
- browserSwipe: false
172
- };
173
- return _this;
174
- }
175
268
 
176
- _createClass(ViewComponent, [{
177
- key: "document",
178
- get: function get() {
179
- return this.props.document;
180
- }
181
- }, {
182
- key: "window",
183
- get: function get() {
184
- return this.props.window;
185
- }
186
- }, {
187
- key: "panels",
188
- get: function get() {
189
- return React.Children.toArray(this.props.children);
190
- }
191
- }, {
192
- key: "componentDidMount",
193
- value: function componentDidMount() {
194
- if (process.env.NODE_ENV === "development") {
195
- var _this$props2 = this.props,
196
- popout = _this$props2.popout,
197
- modal = _this$props2.modal;
198
- popout && warn("Свойство popout устарело и будет удалено в 5.0.0. Используйте одноименное свойство у SplitLayout.");
199
- modal && warn("Свойство modal устарело и будет удалено в 5.0.0. Используйте одноименное свойство у SplitLayout.");
269
+ setSwipeBackShift(_swipeBackShift);
200
270
  }
201
271
  }
202
- }, {
203
- key: "componentWillUnmount",
204
- value: function componentWillUnmount() {
205
- var id = getNavId(this.props);
272
+ };
206
273
 
207
- if (id) {
208
- scrollsCache[id] = this.scrolls;
209
- }
274
+ var onEnd = React.useCallback(function (e) {
275
+ if (swipingBack && window) {
276
+ var _window$innerWidth;
210
277
 
211
- if (this.animationFinishTimeout) {
212
- clearTimeout(this.animationFinishTimeout);
278
+ var speed = swipeBackShift / e.duration * 1000;
279
+
280
+ if (swipeBackShift === 0) {
281
+ onSwipeBackCancel();
282
+ } else if (swipeBackShift >= ((_window$innerWidth = window === null || window === void 0 ? void 0 : window.innerWidth) !== null && _window$innerWidth !== void 0 ? _window$innerWidth : 0)) {
283
+ onSwipeBackSuccess();
284
+ } else if (speed > 250 || swipeBackStartX + swipeBackShift > window.innerWidth / 2) {
285
+ setSwipeBackResult(SwipeBackResults.success);
286
+ } else {
287
+ setSwipeBackResult(SwipeBackResults.fail);
213
288
  }
214
289
  }
215
- }, {
216
- key: "componentDidUpdate",
217
- value: function componentDidUpdate(prevProps, prevState) {
218
- var _this2 = this;
219
-
220
- this.props.popout && !prevProps.popout && this.blurActiveElement();
221
- this.props.modal && !prevProps.modal && this.blurActiveElement(); // Нужен переход
222
-
223
- if (prevProps.activePanel !== this.props.activePanel && !prevState.swipingBack && !prevState.browserSwipe) {
224
- var _this$props$scroll2;
225
-
226
- var firstLayerId = this.panels.map(function (panel) {
227
- return getNavId(panel.props, warn);
228
- }).find(function (id) {
229
- return id === prevProps.activePanel || id === _this2.props.activePanel;
230
- });
231
- var isBack = firstLayerId === this.props.activePanel;
232
- this.scrolls[prevProps.activePanel] = (_this$props$scroll2 = this.props.scroll) === null || _this$props$scroll2 === void 0 ? void 0 : _this$props$scroll2.getScroll().y;
290
+ }, [onSwipeBackCancel, onSwipeBackSuccess, swipeBackShift, swipeBackStartX, swipingBack, window]);
233
291
 
234
- if (this.shouldDisableTransitionMotion()) {
235
- this.flushTransition(prevProps.activePanel, isBack);
236
- } else {
237
- this.blurActiveElement();
238
- this.setState({
239
- visiblePanels: [prevProps.activePanel, this.props.activePanel],
240
- prevPanel: prevProps.activePanel,
241
- nextPanel: this.props.activePanel,
242
- activePanel: null,
243
- animated: true,
244
- isBack: isBack
245
- }); // Фолбек анимации перехода
246
-
247
- if (!animationEvent.supported) {
248
- if (this.animationFinishTimeout) {
249
- clearTimeout(this.animationFinishTimeout);
250
- }
251
-
252
- this.animationFinishTimeout = setTimeout(this.transitionEndHandler, this.props.platform === IOS ? 600 : 300);
253
- }
254
- }
255
- } // Закончилась анимация свайпа назад
256
-
257
-
258
- if (prevProps.activePanel !== this.props.activePanel && prevState.swipingBack) {
259
- var nextPanel = this.props.activePanel;
260
- var prevPanel = prevProps.activePanel;
261
-
262
- if (prevState.swipeBackPrevPanel !== null) {
263
- this.scrolls[prevState.swipeBackPrevPanel] = 0;
264
- }
265
-
266
- this.setState({
267
- swipeBackPrevPanel: null,
268
- swipeBackNextPanel: null,
269
- swipingBack: false,
270
- swipeBackResult: null,
271
- swipeBackStartX: 0,
272
- swipeBackShift: 0,
273
- activePanel: nextPanel,
274
- visiblePanels: [nextPanel]
275
- }, function () {
276
- if (_this2.state.activePanel !== null) {
277
- var _this2$props$scroll;
278
-
279
- (_this2$props$scroll = _this2.props.scroll) === null || _this2$props$scroll === void 0 ? void 0 : _this2$props$scroll.scrollTo(0, _this2.scrolls[_this2.state.activePanel]);
280
- }
281
-
282
- prevProps.onTransition && prevProps.onTransition({
283
- isBack: true,
284
- from: prevPanel,
285
- to: nextPanel
286
- });
287
- });
288
- } // Начался свайп назад
289
-
290
-
291
- if (!prevState.swipingBack && this.state.swipingBack) {
292
- this.props.onSwipeBackStart && this.props.onSwipeBackStart();
293
- } // Началась анимация завершения свайпа назад.
294
-
295
-
296
- if (!prevState.swipeBackResult && this.state.swipeBackResult) {
297
- this.waitTransitionFinish(this.pickPanel(this.state.swipeBackNextPanel), this.swipingBackTransitionEndHandler);
298
- } // Если свайп назад отменился (когда пользователь недостаточно сильно свайпнул)
299
-
300
-
301
- if (prevState.swipeBackResult === SwipeBackResults.fail && !this.state.swipeBackResult && this.state.activePanel !== null) {
302
- var _this$props$scroll3;
303
-
304
- (_this$props$scroll3 = this.props.scroll) === null || _this$props$scroll3 === void 0 ? void 0 : _this$props$scroll3.scrollTo(0, this.scrolls[this.state.activePanel]);
305
- } // Закончился Safari свайп
292
+ var calcPanelSwipeStyles = function calcPanelSwipeStyles(panelId) {
293
+ if (!canUseDOM || !window) {
294
+ return {};
295
+ }
306
296
 
297
+ var isPrev = panelId === swipeBackPrevPanel;
298
+ var isNext = panelId === swipeBackNextPanel;
307
299
 
308
- if (prevProps.activePanel !== this.props.activePanel && this.state.browserSwipe) {
309
- this.setState({
310
- browserSwipe: false,
311
- nextPanel: null,
312
- prevPanel: null,
313
- animated: false,
314
- visiblePanels: [this.props.activePanel],
315
- activePanel: this.props.activePanel
316
- });
317
- }
300
+ if (!isPrev && !isNext || swipeBackResult) {
301
+ return {};
318
302
  }
319
- }, {
320
- key: "shouldDisableTransitionMotion",
321
- value: function shouldDisableTransitionMotion() {
322
- var _this$props$configPro, _this$props$splitCol;
323
303
 
324
- return ((_this$props$configPro = this.props.configProvider) === null || _this$props$configPro === void 0 ? void 0 : _this$props$configPro.transitionMotionEnabled) === false || !((_this$props$splitCol = this.props.splitCol) !== null && _this$props$splitCol !== void 0 && _this$props$splitCol.animate);
325
- }
326
- }, {
327
- key: "waitTransitionFinish",
328
- value: function waitTransitionFinish(elem, eventHandler) {
329
- if (transitionEvent.supported && transitionEvent.name && elem) {
330
- elem.removeEventListener(transitionEvent.name, eventHandler);
331
- elem.addEventListener(transitionEvent.name, eventHandler);
332
- } else {
333
- if (this.transitionFinishTimeout) {
334
- clearTimeout(this.transitionFinishTimeout);
335
- }
304
+ var prevPanelTranslate = "".concat(swipeBackShift, "px");
305
+ var nextPanelTranslate = "".concat(-50 + swipeBackShift * 100 / window.innerWidth / 2, "%");
306
+ var prevPanelShadow = 0.3 * (window.innerWidth - swipeBackShift) / window.innerWidth;
336
307
 
337
- this.transitionFinishTimeout = setTimeout(eventHandler, this.props.platform === IOS ? 600 : 300);
338
- }
308
+ if (swipeBackResult) {
309
+ return isPrev ? {
310
+ boxShadow: "-2px 0 12px rgba(0, 0, 0, ".concat(prevPanelShadow, ")")
311
+ } : {};
339
312
  }
340
- }, {
341
- key: "blurActiveElement",
342
- value: function blurActiveElement() {
343
- var _this$document;
344
313
 
345
- if (typeof this.window !== "undefined" && (_this$document = this.document) !== null && _this$document !== void 0 && _this$document.activeElement) {
346
- this.document.activeElement.blur();
347
- }
314
+ if (isNext) {
315
+ return {
316
+ transform: "translate3d(".concat(nextPanelTranslate, ", 0, 0)"),
317
+ WebkitTransform: "translate3d(".concat(nextPanelTranslate, ", 0, 0)")
318
+ };
348
319
  }
349
- }, {
350
- key: "pickPanel",
351
- value: function pickPanel(id) {
352
- if (id === null) {
353
- return undefined;
354
- }
355
320
 
356
- return this.panelNodes[id];
321
+ if (isPrev) {
322
+ return {
323
+ transform: "translate3d(".concat(prevPanelTranslate, ", 0, 0)"),
324
+ WebkitTransform: "translate3d(".concat(prevPanelTranslate, ", 0, 0)"),
325
+ boxShadow: "-2px 0 12px rgba(0, 0, 0, ".concat(prevPanelShadow, ")")
326
+ };
357
327
  }
358
- }, {
359
- key: "flushTransition",
360
- value: function flushTransition(prevPanel, isBack) {
361
- var _this3 = this;
362
328
 
363
- var activePanel = this.props.activePanel;
329
+ return {};
330
+ };
331
+
332
+ React.useEffect(function () {
333
+ popout && blurActiveElement(document);
334
+ }, [document, popout]);
335
+ React.useEffect(function () {
336
+ modal && blurActiveElement(document);
337
+ }, [document, modal]);
338
+ React.useEffect(function () {
339
+ // Нужен переход
340
+ if (prevActivePanel && prevActivePanel !== activePanelProp && !prevSwipingBack && !prevBrowserSwipe) {
341
+ var firstLayerId = React.Children.toArray(children).map(function (panel) {
342
+ return getNavId(panel.props, warn);
343
+ }).find(function (id) {
344
+ return id === prevActivePanel || id === activePanelProp;
345
+ });
346
+ var isBackTransition = firstLayerId === activePanelProp;
347
+ scrolls.current[prevActivePanel] = scroll === null || scroll === void 0 ? void 0 : scroll.getScroll().y;
364
348
 
365
- if (isBack) {
366
- this.scrolls[prevPanel] = 0;
349
+ if (disableAnimation) {
350
+ flushTransition(prevActivePanel, isBackTransition);
351
+ } else {
352
+ blurActiveElement(document);
353
+ setVisiblePanels([prevActivePanel, activePanelProp]);
354
+ setPrevPanel(prevActivePanel);
355
+ setNextPanel(activePanelProp);
356
+ setActivePanel(null);
357
+ setAnimated(true);
358
+ setIsBack(isBackTransition); // Фолбек анимации перехода
359
+
360
+ if (!animationEvent.supported) {
361
+ animationFinishTimeout.set();
362
+ }
367
363
  }
364
+ } // Закончилась анимация свайпа назад
368
365
 
369
- this.setState({
370
- prevPanel: null,
371
- nextPanel: null,
372
- visiblePanels: [activePanel],
373
- activePanel: activePanel,
374
- animated: false,
375
- isBack: undefined
376
- }, function () {
377
- var _this3$props$scroll;
378
-
379
- (_this3$props$scroll = _this3.props.scroll) === null || _this3$props$scroll === void 0 ? void 0 : _this3$props$scroll.scrollTo(0, isBack ? _this3.scrolls[activePanel] : 0);
380
- _this3.props.onTransition && _this3.props.onTransition({
381
- isBack: isBack,
382
- from: prevPanel,
383
- to: activePanel
384
- });
385
- });
386
- }
387
- }, {
388
- key: "onSwipeBackSuccess",
389
- value: function onSwipeBackSuccess() {
390
- this.props.onSwipeBack && this.props.onSwipeBack();
391
- }
392
- }, {
393
- key: "onSwipeBackCancel",
394
- value: function onSwipeBackCancel() {
395
- this.props.onSwipeBackCancel && this.props.onSwipeBackCancel();
396
- this.setState({
397
- swipeBackPrevPanel: null,
398
- swipeBackNextPanel: null,
399
- swipingBack: false,
400
- swipeBackResult: null,
401
- swipeBackStartX: 0,
402
- swipeBackShift: 0
403
- });
404
- }
405
- }, {
406
- key: "calcPanelSwipeStyles",
407
- value: function calcPanelSwipeStyles(panelId) {
408
- if (!canUseDOM || !this.window) {
409
- return {};
410
- }
411
366
 
412
- var isPrev = panelId === this.state.swipeBackPrevPanel;
413
- var isNext = panelId === this.state.swipeBackNextPanel;
367
+ if (prevActivePanel && prevActivePanel !== activePanelProp && prevSwipingBack) {
368
+ var _nextPanel = activePanelProp;
369
+ var _prevPanel = prevActivePanel;
414
370
 
415
- if (!isPrev && !isNext || this.state.swipeBackResult) {
416
- return {};
371
+ if (prevSwipeBackPrevPanel) {
372
+ scrolls.current[prevSwipeBackPrevPanel] = 0;
417
373
  }
418
374
 
419
- var prevPanelTranslate = "".concat(this.state.swipeBackShift, "px");
420
- var nextPanelTranslate = "".concat(-50 + this.state.swipeBackShift * 100 / this.window.innerWidth / 2, "%");
421
- var prevPanelShadow = 0.3 * (this.window.innerWidth - this.state.swipeBackShift) / this.window.innerWidth;
375
+ setSwipeBackPrevPanel(null);
376
+ setSwipeBackNextPanel(null);
377
+ setSwipingBack(false);
378
+ setSwipeBackResult(null);
379
+ setSwipeBackStartX(0);
380
+ setSwipeBackShift(0);
381
+ setActivePanel(_nextPanel);
382
+ setVisiblePanels([_nextPanel]);
383
+
384
+ afterTransition.current = function () {
385
+ if (_nextPanel !== null) {
386
+ scroll === null || scroll === void 0 ? void 0 : scroll.scrollTo(0, scrolls.current[_nextPanel]);
387
+ }
422
388
 
423
- if (this.state.swipeBackResult) {
424
- return isPrev ? {
425
- boxShadow: "-2px 0 12px rgba(0, 0, 0, ".concat(prevPanelShadow, ")")
426
- } : {};
427
- }
389
+ prevOnTransition && prevOnTransition({
390
+ isBack: true,
391
+ from: _prevPanel,
392
+ to: _nextPanel
393
+ });
394
+ };
395
+ } // Начался свайп назад
428
396
 
429
- if (isNext) {
430
- return {
431
- transform: "translate3d(".concat(nextPanelTranslate, ", 0, 0)"),
432
- WebkitTransform: "translate3d(".concat(nextPanelTranslate, ", 0, 0)")
433
- };
434
- }
435
397
 
436
- if (isPrev) {
437
- return {
438
- transform: "translate3d(".concat(prevPanelTranslate, ", 0, 0)"),
439
- WebkitTransform: "translate3d(".concat(prevPanelTranslate, ", 0, 0)"),
440
- boxShadow: "-2px 0 12px rgba(0, 0, 0, ".concat(prevPanelShadow, ")")
441
- };
442
- }
398
+ if (!prevSwipingBack && swipingBack) {
399
+ onSwipeBackStart && onSwipeBackStart();
400
+ } // Началась анимация завершения свайпа назад.
443
401
 
444
- return {};
445
- }
446
- }, {
447
- key: "render",
448
- value: function render() {
449
- var _this4 = this;
450
-
451
- var _this$props3 = this.props,
452
- popout = _this$props3.popout,
453
- modal = _this$props3.modal,
454
- platform = _this$props3.platform,
455
- _1 = _this$props3.activePanel,
456
- splitCol = _this$props3.splitCol,
457
- configProvider = _this$props3.configProvider,
458
- history = _this$props3.history,
459
- nav = _this$props3.nav,
460
- onTransition = _this$props3.onTransition,
461
- onSwipeBack = _this$props3.onSwipeBack,
462
- onSwipeBackStart = _this$props3.onSwipeBackStart,
463
- onSwipeBackCancel = _this$props3.onSwipeBackCancel,
464
- window = _this$props3.window,
465
- document = _this$props3.document,
466
- scroll = _this$props3.scroll,
467
- restProps = _objectWithoutProperties(_this$props3, _excluded);
468
-
469
- var _this$state = this.state,
470
- prevPanel = _this$state.prevPanel,
471
- nextPanel = _this$state.nextPanel,
472
- activePanel = _this$state.activePanel,
473
- swipeBackPrevPanel = _this$state.swipeBackPrevPanel,
474
- swipeBackNextPanel = _this$state.swipeBackNextPanel,
475
- swipeBackResult = _this$state.swipeBackResult,
476
- isBack = _this$state.isBack,
477
- animated = _this$state.animated;
478
- var hasPopout = !!popout;
479
- var hasModal = !!modal;
480
- var panels = this.panels.filter(function (panel) {
481
- var panelId = getNavId(panel.props, warn);
482
- return panelId !== undefined && _this4.state.visiblePanels.includes(panelId) || panelId === swipeBackPrevPanel || panelId === swipeBackNextPanel;
483
- });
484
- var disableAnimation = this.shouldDisableTransitionMotion();
485
- return createScopedElement(Touch, _extends({
486
- Component: "section"
487
- }, restProps, {
488
- vkuiClass: classNames("View", platform === IOS && "View--ios", !disableAnimation && animated && "View--animated", !disableAnimation && this.state.swipingBack && "View--swiping-back", disableAnimation && "View--no-motion"),
489
- onMoveX: this.onMoveX,
490
- onEnd: this.onEnd
491
- }), createScopedElement("div", {
492
- vkuiClass: "View__panels"
493
- }, panels.map(function (panel) {
494
- var _this4$scrolls;
495
-
496
- var panelId = getNavId(panel.props, warn);
497
- var isPrev = panelId === prevPanel || panelId === swipeBackPrevPanel;
498
- var isTransitionTarget = animated && panelId === (isBack ? prevPanel : nextPanel);
499
- var compensateScroll = isPrev || panelId === swipeBackNextPanel || panelId === nextPanel && isBack;
500
- return createScopedElement("div", {
501
- vkuiClass: classNames("View__panel", panelId === activePanel && "View__panel--active", panelId === prevPanel && "View__panel--prev", panelId === nextPanel && "View__panel--next", panelId === swipeBackPrevPanel && "View__panel--swipe-back-prev", panelId === swipeBackNextPanel && "View__panel--swipe-back-next", swipeBackResult === SwipeBackResults.success && "View__panel--swipe-back-success", swipeBackResult === SwipeBackResults.fail && "View__panel--swipe-back-failed"),
502
- onAnimationEnd: isTransitionTarget ? _this4.transitionEndHandler : undefined,
503
- ref: function ref(el) {
504
- return panelId !== undefined && (_this4.panelNodes[panelId] = el);
505
- },
506
- style: _this4.calcPanelSwipeStyles(panelId),
507
- key: panelId
508
- }, createScopedElement("div", {
509
- vkuiClass: "View__panel-in",
510
- style: {
511
- marginTop: compensateScroll ? -((_this4$scrolls = _this4.scrolls[panelId]) !== null && _this4$scrolls !== void 0 ? _this4$scrolls : 0) : undefined
512
- }
513
- }, createScopedElement(NavTransitionProvider, {
514
- entering: panelId === nextPanel || panelId === swipeBackNextPanel
515
- }, panel)));
516
- })), createScopedElement(AppRootPortal, null, hasPopout && createScopedElement("div", {
517
- vkuiClass: "View__popout"
518
- }, popout), hasModal && createScopedElement("div", {
519
- vkuiClass: "View__modal"
520
- }, modal)));
521
- }
522
- }]);
523
402
 
524
- return ViewComponent;
525
- }(React.Component);
526
- /**
527
- * @see https://vkcom.github.io/VKUI/#/View
528
- */
403
+ if (!prevSwipeBackResult && swipeBackResult) {
404
+ waitTransitionFinish(pickPanel(swipeBackNextPanel), swipingBackTransitionEndHandler, platform === IOS ? 600 : 300);
405
+ } // Если свайп назад отменился (когда пользователь недостаточно сильно свайпнул)
529
406
 
530
407
 
531
- _defineProperty(ViewComponent, "defaultProps", {
532
- history: []
533
- });
408
+ if (prevSwipeBackResult === SwipeBackResults.fail && !swipeBackResult && activePanel !== null) {
409
+ scroll === null || scroll === void 0 ? void 0 : scroll.scrollTo(0, scrolls.current[activePanel]);
410
+ } // Закончился Safari свайп
534
411
 
535
- export var View = withContext(withContext(withContext(withPlatform(withDOM(ViewComponent)), SplitColContext, "splitCol"), ConfigProviderContext, "configProvider"), ScrollContext, "scroll");
536
- View.displayName = "View";
412
+
413
+ if (prevActivePanel !== activePanelProp && browserSwipe) {
414
+ setBrowserSwipe(false);
415
+ setNextPanel(null);
416
+ setPrevPanel(null);
417
+ setAnimated(false);
418
+ setVisiblePanels([activePanelProp]);
419
+ setActivePanel(activePanelProp);
420
+ }
421
+ }, [activePanelProp, activePanel, animationFinishTimeout, browserSwipe, children, disableAnimation, document, flushTransition, onSwipeBackStart, panels, platform, prevActivePanel, prevBrowserSwipe, prevOnTransition, prevSwipeBackPrevPanel, prevSwipeBackResult, prevSwipingBack, scroll, swipeBackNextPanel, swipeBackResult, swipingBack, swipingBackTransitionEndHandler, waitTransitionFinish]);
422
+ return createScopedElement(Touch, _extends({
423
+ Component: "section"
424
+ }, restProps, {
425
+ vkuiClass: classNames("View", platform === IOS && "View--ios", !disableAnimation && animated && "View--animated", !disableAnimation && swipingBack && "View--swiping-back", disableAnimation && "View--no-motion"),
426
+ onMoveX: onMoveX,
427
+ onEnd: onEnd
428
+ }), createScopedElement("div", {
429
+ vkuiClass: "View__panels"
430
+ }, panels.map(function (panel) {
431
+ var _scrolls$current;
432
+
433
+ var panelId = getNavId(panel.props, warn);
434
+ var isPrev = panelId === prevPanel || panelId === swipeBackPrevPanel;
435
+ var isTransitionTarget = animated && panelId === (isBack ? prevPanel : nextPanel);
436
+ var compensateScroll = isPrev || panelId === swipeBackNextPanel || panelId === nextPanel && isBack;
437
+ return createScopedElement("div", {
438
+ vkuiClass: classNames("View__panel", panelId === activePanel && "View__panel--active", panelId === prevPanel && "View__panel--prev", panelId === nextPanel && "View__panel--next", panelId === swipeBackPrevPanel && "View__panel--swipe-back-prev", panelId === swipeBackNextPanel && "View__panel--swipe-back-next", swipeBackResult === SwipeBackResults.success && "View__panel--swipe-back-success", swipeBackResult === SwipeBackResults.fail && "View__panel--swipe-back-failed"),
439
+ onAnimationEnd: isTransitionTarget ? transitionEndHandler : undefined,
440
+ ref: function ref(el) {
441
+ return panelId !== undefined && (panelNodes.current[panelId] = el);
442
+ },
443
+ style: calcPanelSwipeStyles(panelId),
444
+ key: panelId
445
+ }, createScopedElement("div", {
446
+ vkuiClass: "View__panel-in",
447
+ style: {
448
+ marginTop: compensateScroll ? -((_scrolls$current = scrolls.current[panelId]) !== null && _scrolls$current !== void 0 ? _scrolls$current : 0) : undefined
449
+ }
450
+ }, createScopedElement(NavTransitionProvider, {
451
+ entering: panelId === nextPanel || panelId === swipeBackNextPanel
452
+ }, panel)));
453
+ })), createScopedElement(AppRootPortal, null, hasPopout && createScopedElement("div", {
454
+ vkuiClass: "View__popout"
455
+ }, popout), hasModal && createScopedElement("div", {
456
+ vkuiClass: "View__modal"
457
+ }, modal)));
458
+ };
537
459
  //# sourceMappingURL=View.js.map