@vkontakte/vkui 4.20.0 → 4.22.1

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 (520) hide show
  1. package/.cache/.eslintcache +1 -1
  2. package/.cache/.stylelintcache +1 -1
  3. package/.cache/.tsbuildinfo +414 -116
  4. package/.cache/ts/src/components/Avatar/Avatar.d.ts +2 -0
  5. package/.cache/ts/src/components/Cell/Cell.d.ts +11 -0
  6. package/.cache/ts/src/components/Cell/CellCheckbox/CellCheckbox.d.ts +5 -0
  7. package/.cache/ts/src/components/Cell/CellDragger/CellDragger.d.ts +6 -0
  8. package/.cache/ts/src/components/Cell/useDraggable.d.ts +13 -0
  9. package/.cache/ts/src/components/CustomSelect/CustomSelect.d.ts +0 -1
  10. package/.cache/ts/src/components/DropdownIcon/DropdownIcon.d.ts +3 -0
  11. package/.cache/ts/src/components/FocusTrap/FocusTrap.d.ts +2 -3
  12. package/.cache/ts/src/components/FormField/FormField.d.ts +2 -3
  13. package/.cache/ts/src/components/FormItem/FormItem.d.ts +2 -3
  14. package/.cache/ts/src/components/FormLayout/FormLayout.d.ts +2 -4
  15. package/.cache/ts/src/components/GridAvatar/GridAvatar.d.ts +9 -0
  16. package/.cache/ts/src/components/HorizontalCell/HorizontalCell.d.ts +2 -3
  17. package/.cache/ts/src/components/HorizontalScroll/HorizontalScroll.d.ts +3 -2
  18. package/.cache/ts/src/components/InitialsAvatar/InitialsAvatar.d.ts +33 -0
  19. package/.cache/ts/src/components/Link/Link.d.ts +1 -2
  20. package/.cache/ts/src/components/ModalRoot/types.d.ts +0 -1
  21. package/.cache/ts/src/components/ModalRoot/useModalManager.d.ts +37 -0
  22. package/.cache/ts/src/components/Removable/Removable.d.ts +2 -1
  23. package/.cache/ts/src/components/SimpleCell/SimpleCell.d.ts +2 -2
  24. package/.cache/ts/src/components/SplitCol/SplitCol.d.ts +3 -3
  25. package/.cache/ts/src/components/SubnavigationBar/SubnavigationBar.d.ts +2 -1
  26. package/.cache/ts/src/components/Switch/Switch.d.ts +2 -3
  27. package/.cache/ts/src/components/TabbarItem/TabbarItem.d.ts +3 -1
  28. package/.cache/ts/src/components/Tappable/Tappable.d.ts +2 -3
  29. package/.cache/ts/src/components/Touch/Touch.d.ts +16 -17
  30. package/.cache/ts/src/components/Typography/Caption/Caption.d.ts +2 -2
  31. package/.cache/ts/src/components/Typography/Headline/Headline.d.ts +2 -2
  32. package/.cache/ts/src/components/Typography/Subhead/Subhead.d.ts +2 -2
  33. package/.cache/ts/src/components/Typography/Text/Text.d.ts +2 -3
  34. package/.cache/ts/src/components/Typography/Title/Title.d.ts +2 -2
  35. package/.cache/ts/src/components/View/utils.d.ts +2 -0
  36. package/.cache/ts/src/index.d.ts +4 -0
  37. package/.cache/ts/src/lib/accessibility.d.ts +1 -1
  38. package/.cache/ts/src/lib/supportEvents.d.ts +3 -1
  39. package/.cache/ts/src/types.d.ts +3 -0
  40. package/dist/cjs/components/ActionSheet/ActionSheet.js +7 -9
  41. package/dist/cjs/components/ActionSheet/ActionSheet.js.map +1 -1
  42. package/dist/cjs/components/Avatar/Avatar.d.ts +2 -0
  43. package/dist/cjs/components/Avatar/Avatar.js +7 -3
  44. package/dist/cjs/components/Avatar/Avatar.js.map +1 -1
  45. package/dist/cjs/components/Banner/Banner.js.map +1 -1
  46. package/dist/cjs/components/Button/Button.js.map +1 -1
  47. package/dist/cjs/components/CardScroll/CardScroll.js +1 -1
  48. package/dist/cjs/components/CardScroll/CardScroll.js.map +1 -1
  49. package/dist/cjs/components/Cell/Cell.d.ts +11 -0
  50. package/dist/cjs/components/Cell/Cell.js +109 -182
  51. package/dist/cjs/components/Cell/Cell.js.map +1 -1
  52. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.d.ts +5 -0
  53. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js +50 -0
  54. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -0
  55. package/dist/cjs/components/Cell/CellDragger/CellDragger.d.ts +6 -0
  56. package/dist/cjs/components/Cell/CellDragger/CellDragger.js +53 -0
  57. package/dist/cjs/components/Cell/CellDragger/CellDragger.js.map +1 -0
  58. package/dist/cjs/components/Cell/useDraggable.d.ts +13 -0
  59. package/dist/cjs/components/Cell/useDraggable.js +142 -0
  60. package/dist/cjs/components/Cell/useDraggable.js.map +1 -0
  61. package/dist/cjs/components/ChipsSelect/ChipsSelect.js +2 -2
  62. package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
  63. package/dist/cjs/components/Counter/Counter.js.map +1 -1
  64. package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +0 -1
  65. package/dist/cjs/components/CustomSelect/CustomSelect.js +2 -3
  66. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  67. package/dist/cjs/components/DropdownIcon/DropdownIcon.d.ts +3 -0
  68. package/dist/cjs/components/DropdownIcon/DropdownIcon.js +37 -0
  69. package/dist/cjs/components/DropdownIcon/DropdownIcon.js.map +1 -0
  70. package/dist/cjs/components/FocusTrap/FocusTrap.d.ts +2 -3
  71. package/dist/cjs/components/FocusTrap/FocusTrap.js +3 -5
  72. package/dist/cjs/components/FocusTrap/FocusTrap.js.map +1 -1
  73. package/dist/cjs/components/FormField/FormField.d.ts +2 -3
  74. package/dist/cjs/components/FormField/FormField.js.map +1 -1
  75. package/dist/cjs/components/FormItem/FormItem.d.ts +2 -3
  76. package/dist/cjs/components/FormItem/FormItem.js.map +1 -1
  77. package/dist/cjs/components/FormLayout/FormLayout.d.ts +2 -4
  78. package/dist/cjs/components/FormLayout/FormLayout.js.map +1 -1
  79. package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js +1 -0
  80. package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
  81. package/dist/cjs/components/GridAvatar/GridAvatar.d.ts +9 -0
  82. package/dist/cjs/components/GridAvatar/GridAvatar.js +61 -0
  83. package/dist/cjs/components/GridAvatar/GridAvatar.js.map +1 -0
  84. package/dist/cjs/components/Header/Header.js.map +1 -1
  85. package/dist/cjs/components/HorizontalCell/HorizontalCell.d.ts +2 -3
  86. package/dist/cjs/components/HorizontalCell/HorizontalCell.js.map +1 -1
  87. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.d.ts +3 -2
  88. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js +10 -13
  89. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  90. package/dist/cjs/components/InitialsAvatar/InitialsAvatar.d.ts +33 -0
  91. package/dist/cjs/components/InitialsAvatar/InitialsAvatar.js +64 -0
  92. package/dist/cjs/components/InitialsAvatar/InitialsAvatar.js.map +1 -0
  93. package/dist/cjs/components/Link/Link.d.ts +1 -2
  94. package/dist/cjs/components/Link/Link.js.map +1 -1
  95. package/dist/cjs/components/ModalRoot/ModalRoot.js +170 -373
  96. package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
  97. package/dist/cjs/components/ModalRoot/ModalRootContext.js +0 -3
  98. package/dist/cjs/components/ModalRoot/ModalRootContext.js.map +1 -1
  99. package/dist/cjs/components/ModalRoot/ModalRootDesktop.js +59 -241
  100. package/dist/cjs/components/ModalRoot/ModalRootDesktop.js.map +1 -1
  101. package/dist/cjs/components/ModalRoot/types.d.ts +0 -1
  102. package/dist/cjs/components/ModalRoot/types.js.map +1 -1
  103. package/dist/cjs/components/ModalRoot/useModalManager.d.ts +37 -0
  104. package/dist/cjs/components/ModalRoot/useModalManager.js +213 -0
  105. package/dist/cjs/components/ModalRoot/useModalManager.js.map +1 -0
  106. package/dist/cjs/components/NativeSelect/NativeSelect.js +2 -2
  107. package/dist/cjs/components/NativeSelect/NativeSelect.js.map +1 -1
  108. package/dist/cjs/components/Removable/Removable.d.ts +2 -1
  109. package/dist/cjs/components/Removable/Removable.js +75 -66
  110. package/dist/cjs/components/Removable/Removable.js.map +1 -1
  111. package/dist/cjs/components/SelectMimicry/SelectMimicry.js +2 -2
  112. package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
  113. package/dist/cjs/components/SimpleCell/SimpleCell.d.ts +2 -2
  114. package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
  115. package/dist/cjs/components/SplitCol/SplitCol.d.ts +3 -3
  116. package/dist/cjs/components/SplitCol/SplitCol.js +2 -4
  117. package/dist/cjs/components/SplitCol/SplitCol.js.map +1 -1
  118. package/dist/cjs/components/SubnavigationBar/SubnavigationBar.d.ts +2 -1
  119. package/dist/cjs/components/SubnavigationBar/SubnavigationBar.js +38 -11
  120. package/dist/cjs/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
  121. package/dist/cjs/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  122. package/dist/cjs/components/Switch/Switch.d.ts +2 -3
  123. package/dist/cjs/components/Switch/Switch.js +18 -8
  124. package/dist/cjs/components/Switch/Switch.js.map +1 -1
  125. package/dist/cjs/components/Tabbar/Tabbar.js +3 -1
  126. package/dist/cjs/components/Tabbar/Tabbar.js.map +1 -1
  127. package/dist/cjs/components/TabbarItem/TabbarItem.d.ts +3 -1
  128. package/dist/cjs/components/TabbarItem/TabbarItem.js +29 -11
  129. package/dist/cjs/components/TabbarItem/TabbarItem.js.map +1 -1
  130. package/dist/cjs/components/Tappable/Tappable.d.ts +2 -3
  131. package/dist/cjs/components/Tappable/Tappable.js.map +1 -1
  132. package/dist/cjs/components/Textarea/Textarea.js +9 -7
  133. package/dist/cjs/components/Textarea/Textarea.js.map +1 -1
  134. package/dist/cjs/components/Touch/Touch.d.ts +16 -17
  135. package/dist/cjs/components/Touch/Touch.js +21 -7
  136. package/dist/cjs/components/Touch/Touch.js.map +1 -1
  137. package/dist/cjs/components/Typography/Caption/Caption.d.ts +2 -2
  138. package/dist/cjs/components/Typography/Caption/Caption.js +4 -2
  139. package/dist/cjs/components/Typography/Caption/Caption.js.map +1 -1
  140. package/dist/cjs/components/Typography/Headline/Headline.d.ts +2 -2
  141. package/dist/cjs/components/Typography/Headline/Headline.js +2 -1
  142. package/dist/cjs/components/Typography/Headline/Headline.js.map +1 -1
  143. package/dist/cjs/components/Typography/Subhead/Subhead.d.ts +2 -2
  144. package/dist/cjs/components/Typography/Subhead/Subhead.js +2 -1
  145. package/dist/cjs/components/Typography/Subhead/Subhead.js.map +1 -1
  146. package/dist/cjs/components/Typography/Text/Text.d.ts +2 -3
  147. package/dist/cjs/components/Typography/Text/Text.js +2 -1
  148. package/dist/cjs/components/Typography/Text/Text.js.map +1 -1
  149. package/dist/cjs/components/Typography/Title/Title.d.ts +2 -2
  150. package/dist/cjs/components/Typography/Title/Title.js +9 -4
  151. package/dist/cjs/components/Typography/Title/Title.js.map +1 -1
  152. package/dist/cjs/components/View/View.js +68 -75
  153. package/dist/cjs/components/View/View.js.map +1 -1
  154. package/dist/cjs/components/View/ViewInfinite.js +78 -85
  155. package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
  156. package/dist/cjs/components/View/utils.d.ts +2 -0
  157. package/dist/cjs/components/View/utils.js +13 -0
  158. package/dist/cjs/components/View/utils.js.map +1 -0
  159. package/dist/cjs/index.d.ts +4 -0
  160. package/dist/cjs/index.js +16 -0
  161. package/dist/cjs/index.js.map +1 -1
  162. package/dist/cjs/lib/accessibility.d.ts +1 -1
  163. package/dist/cjs/lib/accessibility.js.map +1 -1
  164. package/dist/cjs/lib/prefixClass.js +7 -6
  165. package/dist/cjs/lib/prefixClass.js.map +1 -1
  166. package/dist/cjs/lib/supportEvents.d.ts +3 -1
  167. package/dist/cjs/lib/supportEvents.js +1 -4
  168. package/dist/cjs/lib/supportEvents.js.map +1 -1
  169. package/dist/cjs/types.d.ts +3 -0
  170. package/dist/components/ActionSheet/ActionSheet.js +6 -9
  171. package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
  172. package/dist/components/Avatar/Avatar.d.ts +2 -0
  173. package/dist/components/Avatar/Avatar.js +4 -2
  174. package/dist/components/Avatar/Avatar.js.map +1 -1
  175. package/dist/components/Banner/Banner.js.map +1 -1
  176. package/dist/components/Button/Button.js.map +1 -1
  177. package/dist/components/CardScroll/CardScroll.js +1 -1
  178. package/dist/components/CardScroll/CardScroll.js.map +1 -1
  179. package/dist/components/Cell/Cell.d.ts +11 -0
  180. package/dist/components/Cell/Cell.js +103 -177
  181. package/dist/components/Cell/Cell.js.map +1 -1
  182. package/dist/components/Cell/CellCheckbox/CellCheckbox.d.ts +5 -0
  183. package/dist/components/Cell/CellCheckbox/CellCheckbox.js +31 -0
  184. package/dist/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -0
  185. package/dist/components/Cell/CellDragger/CellDragger.d.ts +6 -0
  186. package/dist/components/Cell/CellDragger/CellDragger.js +30 -0
  187. package/dist/components/Cell/CellDragger/CellDragger.js.map +1 -0
  188. package/dist/components/Cell/useDraggable.d.ts +13 -0
  189. package/dist/components/Cell/useDraggable.js +126 -0
  190. package/dist/components/Cell/useDraggable.js.map +1 -0
  191. package/dist/components/ChipsSelect/ChipsSelect.js +2 -2
  192. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  193. package/dist/components/Counter/Counter.js.map +1 -1
  194. package/dist/components/CustomSelect/CustomSelect.d.ts +0 -1
  195. package/dist/components/CustomSelect/CustomSelect.js +3 -5
  196. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  197. package/dist/components/DropdownIcon/DropdownIcon.d.ts +3 -0
  198. package/dist/components/DropdownIcon/DropdownIcon.js +19 -0
  199. package/dist/components/DropdownIcon/DropdownIcon.js.map +1 -0
  200. package/dist/components/FocusTrap/FocusTrap.d.ts +2 -3
  201. package/dist/components/FocusTrap/FocusTrap.js +3 -5
  202. package/dist/components/FocusTrap/FocusTrap.js.map +1 -1
  203. package/dist/components/FormField/FormField.d.ts +2 -3
  204. package/dist/components/FormField/FormField.js.map +1 -1
  205. package/dist/components/FormItem/FormItem.d.ts +2 -3
  206. package/dist/components/FormItem/FormItem.js.map +1 -1
  207. package/dist/components/FormLayout/FormLayout.d.ts +2 -4
  208. package/dist/components/FormLayout/FormLayout.js.map +1 -1
  209. package/dist/components/FormLayoutGroup/FormLayoutGroup.js +1 -0
  210. package/dist/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
  211. package/dist/components/GridAvatar/GridAvatar.d.ts +9 -0
  212. package/dist/components/GridAvatar/GridAvatar.js +41 -0
  213. package/dist/components/GridAvatar/GridAvatar.js.map +1 -0
  214. package/dist/components/Header/Header.js.map +1 -1
  215. package/dist/components/HorizontalCell/HorizontalCell.d.ts +2 -3
  216. package/dist/components/HorizontalCell/HorizontalCell.js.map +1 -1
  217. package/dist/components/HorizontalScroll/HorizontalScroll.d.ts +3 -2
  218. package/dist/components/HorizontalScroll/HorizontalScroll.js +10 -12
  219. package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  220. package/dist/components/InitialsAvatar/InitialsAvatar.d.ts +33 -0
  221. package/dist/components/InitialsAvatar/InitialsAvatar.js +46 -0
  222. package/dist/components/InitialsAvatar/InitialsAvatar.js.map +1 -0
  223. package/dist/components/Link/Link.d.ts +1 -2
  224. package/dist/components/Link/Link.js.map +1 -1
  225. package/dist/components/ModalRoot/ModalRoot.js +167 -376
  226. package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
  227. package/dist/components/ModalRoot/ModalRootContext.js +0 -3
  228. package/dist/components/ModalRoot/ModalRootContext.js.map +1 -1
  229. package/dist/components/ModalRoot/ModalRootDesktop.js +58 -244
  230. package/dist/components/ModalRoot/ModalRootDesktop.js.map +1 -1
  231. package/dist/components/ModalRoot/types.d.ts +0 -1
  232. package/dist/components/ModalRoot/types.js.map +1 -1
  233. package/dist/components/ModalRoot/useModalManager.d.ts +37 -0
  234. package/dist/components/ModalRoot/useModalManager.js +189 -0
  235. package/dist/components/ModalRoot/useModalManager.js.map +1 -0
  236. package/dist/components/NativeSelect/NativeSelect.js +2 -2
  237. package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
  238. package/dist/components/Removable/Removable.d.ts +2 -1
  239. package/dist/components/Removable/Removable.js +73 -64
  240. package/dist/components/Removable/Removable.js.map +1 -1
  241. package/dist/components/SelectMimicry/SelectMimicry.js +2 -2
  242. package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
  243. package/dist/components/SimpleCell/SimpleCell.d.ts +2 -2
  244. package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
  245. package/dist/components/SplitCol/SplitCol.d.ts +3 -3
  246. package/dist/components/SplitCol/SplitCol.js +2 -4
  247. package/dist/components/SplitCol/SplitCol.js.map +1 -1
  248. package/dist/components/SubnavigationBar/SubnavigationBar.d.ts +2 -1
  249. package/dist/components/SubnavigationBar/SubnavigationBar.js +38 -11
  250. package/dist/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
  251. package/dist/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  252. package/dist/components/Switch/Switch.d.ts +2 -3
  253. package/dist/components/Switch/Switch.js +15 -8
  254. package/dist/components/Switch/Switch.js.map +1 -1
  255. package/dist/components/Tabbar/Tabbar.js +3 -1
  256. package/dist/components/Tabbar/Tabbar.js.map +1 -1
  257. package/dist/components/TabbarItem/TabbarItem.d.ts +3 -1
  258. package/dist/components/TabbarItem/TabbarItem.js +26 -10
  259. package/dist/components/TabbarItem/TabbarItem.js.map +1 -1
  260. package/dist/components/Tappable/Tappable.d.ts +2 -3
  261. package/dist/components/Tappable/Tappable.js.map +1 -1
  262. package/dist/components/Textarea/Textarea.js +9 -6
  263. package/dist/components/Textarea/Textarea.js.map +1 -1
  264. package/dist/components/Touch/Touch.d.ts +16 -17
  265. package/dist/components/Touch/Touch.js +21 -7
  266. package/dist/components/Touch/Touch.js.map +1 -1
  267. package/dist/components/Typography/Caption/Caption.d.ts +2 -2
  268. package/dist/components/Typography/Caption/Caption.js +4 -2
  269. package/dist/components/Typography/Caption/Caption.js.map +1 -1
  270. package/dist/components/Typography/Headline/Headline.d.ts +2 -2
  271. package/dist/components/Typography/Headline/Headline.js +2 -1
  272. package/dist/components/Typography/Headline/Headline.js.map +1 -1
  273. package/dist/components/Typography/Subhead/Subhead.d.ts +2 -2
  274. package/dist/components/Typography/Subhead/Subhead.js +2 -1
  275. package/dist/components/Typography/Subhead/Subhead.js.map +1 -1
  276. package/dist/components/Typography/Text/Text.d.ts +2 -3
  277. package/dist/components/Typography/Text/Text.js +2 -1
  278. package/dist/components/Typography/Text/Text.js.map +1 -1
  279. package/dist/components/Typography/Title/Title.d.ts +2 -2
  280. package/dist/components/Typography/Title/Title.js +9 -4
  281. package/dist/components/Typography/Title/Title.js.map +1 -1
  282. package/dist/components/View/View.js +67 -75
  283. package/dist/components/View/View.js.map +1 -1
  284. package/dist/components/View/ViewInfinite.js +79 -87
  285. package/dist/components/View/ViewInfinite.js.map +1 -1
  286. package/dist/components/View/utils.d.ts +2 -0
  287. package/dist/components/View/utils.js +6 -0
  288. package/dist/components/View/utils.js.map +1 -0
  289. package/dist/components.css +1 -1
  290. package/dist/components.css.map +1 -1
  291. package/dist/cssm/components/ActionSheet/ActionSheet.js +6 -9
  292. package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
  293. package/dist/cssm/components/Avatar/Avatar.js +4 -2
  294. package/dist/cssm/components/Avatar/Avatar.js.map +1 -1
  295. package/dist/cssm/components/Banner/Banner.js.map +1 -1
  296. package/dist/cssm/components/Button/Button.css +1 -1
  297. package/dist/cssm/components/Button/Button.js.map +1 -1
  298. package/dist/cssm/components/CardScroll/CardScroll.js +1 -1
  299. package/dist/cssm/components/CardScroll/CardScroll.js.map +1 -1
  300. package/dist/cssm/components/Cell/Cell.css +1 -1
  301. package/dist/cssm/components/Cell/Cell.js +103 -177
  302. package/dist/cssm/components/Cell/Cell.js.map +1 -1
  303. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.css +1 -0
  304. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js +32 -0
  305. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -0
  306. package/dist/cssm/components/Cell/CellDragger/CellDragger.css +1 -0
  307. package/dist/cssm/components/Cell/CellDragger/CellDragger.js +31 -0
  308. package/dist/cssm/components/Cell/CellDragger/CellDragger.js.map +1 -0
  309. package/dist/cssm/components/Cell/useDraggable.js +126 -0
  310. package/dist/cssm/components/Cell/useDraggable.js.map +1 -0
  311. package/dist/cssm/components/ChipsSelect/ChipsSelect.js +2 -2
  312. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  313. package/dist/cssm/components/Counter/Counter.js.map +1 -1
  314. package/dist/cssm/components/CustomSelect/CustomSelect.js +3 -5
  315. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  316. package/dist/cssm/components/DropdownIcon/DropdownIcon.css +1 -0
  317. package/dist/cssm/components/DropdownIcon/DropdownIcon.js +20 -0
  318. package/dist/cssm/components/DropdownIcon/DropdownIcon.js.map +1 -0
  319. package/dist/cssm/components/FocusTrap/FocusTrap.js +3 -5
  320. package/dist/cssm/components/FocusTrap/FocusTrap.js.map +1 -1
  321. package/dist/cssm/components/FocusVisible/FocusVisible.css +1 -1
  322. package/dist/cssm/components/FormField/FormField.css +1 -1
  323. package/dist/cssm/components/FormField/FormField.js.map +1 -1
  324. package/dist/cssm/components/FormItem/FormItem.css +1 -1
  325. package/dist/cssm/components/FormItem/FormItem.js.map +1 -1
  326. package/dist/cssm/components/FormLayout/FormLayout.js.map +1 -1
  327. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.css +1 -1
  328. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js +1 -0
  329. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
  330. package/dist/cssm/components/Gallery/Gallery.css +1 -1
  331. package/dist/cssm/components/GridAvatar/GridAvatar.css +1 -0
  332. package/dist/cssm/components/GridAvatar/GridAvatar.js +42 -0
  333. package/dist/cssm/components/GridAvatar/GridAvatar.js.map +1 -0
  334. package/dist/cssm/components/Header/Header.js.map +1 -1
  335. package/dist/cssm/components/HorizontalCell/HorizontalCell.js.map +1 -1
  336. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +10 -12
  337. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  338. package/dist/cssm/components/HorizontalScroll/HorizontalScrollArrow.css +1 -1
  339. package/dist/cssm/components/IconButton/IconButton.css +1 -1
  340. package/dist/cssm/components/InitialsAvatar/InitialsAvatar.css +1 -0
  341. package/dist/cssm/components/InitialsAvatar/InitialsAvatar.js +52 -0
  342. package/dist/cssm/components/InitialsAvatar/InitialsAvatar.js.map +1 -0
  343. package/dist/cssm/components/Link/Link.js.map +1 -1
  344. package/dist/cssm/components/ModalRoot/ModalRoot.js +167 -376
  345. package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
  346. package/dist/cssm/components/ModalRoot/ModalRootContext.js +0 -3
  347. package/dist/cssm/components/ModalRoot/ModalRootContext.js.map +1 -1
  348. package/dist/cssm/components/ModalRoot/ModalRootDesktop.js +58 -244
  349. package/dist/cssm/components/ModalRoot/ModalRootDesktop.js.map +1 -1
  350. package/dist/cssm/components/ModalRoot/types.js.map +1 -1
  351. package/dist/cssm/components/ModalRoot/useModalManager.js +189 -0
  352. package/dist/cssm/components/ModalRoot/useModalManager.js.map +1 -0
  353. package/dist/cssm/components/NativeSelect/NativeSelect.js +2 -2
  354. package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
  355. package/dist/cssm/components/Removable/Removable.css +1 -1
  356. package/dist/cssm/components/Removable/Removable.js +73 -64
  357. package/dist/cssm/components/Removable/Removable.js.map +1 -1
  358. package/dist/cssm/components/Search/Search.css +1 -1
  359. package/dist/cssm/components/Select/Select.css +1 -1
  360. package/dist/cssm/components/SelectMimicry/SelectMimicry.js +2 -2
  361. package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
  362. package/dist/cssm/components/SimpleCell/SimpleCell.css +1 -1
  363. package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
  364. package/dist/cssm/components/SplitCol/SplitCol.js +2 -4
  365. package/dist/cssm/components/SplitCol/SplitCol.js.map +1 -1
  366. package/dist/cssm/components/SubnavigationBar/SubnavigationBar.js +38 -11
  367. package/dist/cssm/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
  368. package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  369. package/dist/cssm/components/Switch/Switch.css +1 -1
  370. package/dist/cssm/components/Switch/Switch.js +15 -8
  371. package/dist/cssm/components/Switch/Switch.js.map +1 -1
  372. package/dist/cssm/components/Tabbar/Tabbar.css +1 -1
  373. package/dist/cssm/components/Tabbar/Tabbar.js +3 -1
  374. package/dist/cssm/components/Tabbar/Tabbar.js.map +1 -1
  375. package/dist/cssm/components/TabbarItem/TabbarItem.css +1 -1
  376. package/dist/cssm/components/TabbarItem/TabbarItem.js +26 -10
  377. package/dist/cssm/components/TabbarItem/TabbarItem.js.map +1 -1
  378. package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
  379. package/dist/cssm/components/Textarea/Textarea.js +9 -6
  380. package/dist/cssm/components/Textarea/Textarea.js.map +1 -1
  381. package/dist/cssm/components/Touch/Touch.js +21 -7
  382. package/dist/cssm/components/Touch/Touch.js.map +1 -1
  383. package/dist/cssm/components/Typography/Caption/Caption.js +4 -2
  384. package/dist/cssm/components/Typography/Caption/Caption.js.map +1 -1
  385. package/dist/cssm/components/Typography/Headline/Headline.js +2 -1
  386. package/dist/cssm/components/Typography/Headline/Headline.js.map +1 -1
  387. package/dist/cssm/components/Typography/Subhead/Subhead.js +2 -1
  388. package/dist/cssm/components/Typography/Subhead/Subhead.js.map +1 -1
  389. package/dist/cssm/components/Typography/Text/Text.js +2 -1
  390. package/dist/cssm/components/Typography/Text/Text.js.map +1 -1
  391. package/dist/cssm/components/Typography/Title/Title.js +9 -4
  392. package/dist/cssm/components/Typography/Title/Title.js.map +1 -1
  393. package/dist/cssm/components/View/View.js +67 -75
  394. package/dist/cssm/components/View/View.js.map +1 -1
  395. package/dist/cssm/components/View/ViewInfinite.js +79 -87
  396. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  397. package/dist/cssm/components/View/utils.js +6 -0
  398. package/dist/cssm/components/View/utils.js.map +1 -0
  399. package/dist/cssm/index.js +2 -0
  400. package/dist/cssm/index.js.map +1 -1
  401. package/dist/cssm/lib/accessibility.js.map +1 -1
  402. package/dist/cssm/lib/prefixClass.js +7 -6
  403. package/dist/cssm/lib/prefixClass.js.map +1 -1
  404. package/dist/cssm/lib/supportEvents.js +1 -4
  405. package/dist/cssm/lib/supportEvents.js.map +1 -1
  406. package/dist/cssm/styles/components.css +1 -1
  407. package/dist/cssm/styles/themes.css +1 -1
  408. package/dist/cssm/styles/vkcom_light.css +1 -1
  409. package/dist/index.d.ts +4 -0
  410. package/dist/index.js +2 -0
  411. package/dist/index.js.map +1 -1
  412. package/dist/lib/accessibility.d.ts +1 -1
  413. package/dist/lib/accessibility.js.map +1 -1
  414. package/dist/lib/prefixClass.js +7 -6
  415. package/dist/lib/prefixClass.js.map +1 -1
  416. package/dist/lib/supportEvents.d.ts +3 -1
  417. package/dist/lib/supportEvents.js +1 -4
  418. package/dist/lib/supportEvents.js.map +1 -1
  419. package/dist/types.d.ts +3 -0
  420. package/dist/vkui.css +2 -2
  421. package/dist/vkui.css.map +1 -1
  422. package/package.json +8 -4
  423. package/src/components/ActionSheet/ActionSheet.tsx +4 -5
  424. package/src/components/ActionSheet/Readme.md +18 -14
  425. package/src/components/Alert/Readme.md +15 -11
  426. package/src/components/Avatar/Avatar.tsx +5 -2
  427. package/src/components/Banner/Banner.tsx +4 -5
  428. package/src/components/Button/Button.css +26 -53
  429. package/src/components/Button/Button.tsx +2 -3
  430. package/src/components/Card/Readme.md +6 -6
  431. package/src/components/CardScroll/CardScroll.tsx +4 -1
  432. package/src/components/Cell/Cell.css +21 -58
  433. package/src/components/Cell/Cell.tsx +101 -162
  434. package/src/components/Cell/CellCheckbox/CellCheckbox.css +17 -0
  435. package/src/components/Cell/CellCheckbox/CellCheckbox.tsx +42 -0
  436. package/src/components/Cell/CellDragger/CellDragger.css +4 -0
  437. package/src/components/Cell/CellDragger/CellDragger.tsx +40 -0
  438. package/src/components/Cell/Readme.md +89 -51
  439. package/src/components/Cell/useDraggable.tsx +112 -0
  440. package/src/components/ChipsSelect/ChipsSelect.tsx +2 -2
  441. package/src/components/Counter/Counter.tsx +2 -2
  442. package/src/components/CustomSelect/CustomSelect.tsx +3 -4
  443. package/src/components/DropdownIcon/DropdownIcon.css +3 -0
  444. package/src/components/DropdownIcon/DropdownIcon.tsx +20 -0
  445. package/src/components/Epic/Readme.md +2 -1
  446. package/src/components/FocusTrap/FocusTrap.tsx +13 -11
  447. package/src/components/FocusVisible/FocusVisible.css +12 -4
  448. package/src/components/FormField/FormField.css +0 -1
  449. package/src/components/FormField/FormField.tsx +2 -2
  450. package/src/components/FormItem/FormItem.css +13 -14
  451. package/src/components/FormItem/FormItem.tsx +2 -3
  452. package/src/components/FormLayout/FormLayout.tsx +2 -4
  453. package/src/components/FormLayoutGroup/FormLayoutGroup.css +11 -7
  454. package/src/components/FormLayoutGroup/FormLayoutGroup.tsx +10 -1
  455. package/src/components/Gallery/Gallery.css +2 -3
  456. package/src/components/Gallery/Readme.md +89 -109
  457. package/src/components/GridAvatar/GridAvatar.css +37 -0
  458. package/src/components/GridAvatar/GridAvatar.tsx +55 -0
  459. package/src/components/GridAvatar/Readme.md +12 -0
  460. package/src/components/Group/Readme.md +18 -14
  461. package/src/components/Header/Header.tsx +4 -4
  462. package/src/components/HorizontalCell/HorizontalCell.tsx +3 -3
  463. package/src/components/HorizontalScroll/HorizontalScroll.tsx +14 -18
  464. package/src/components/HorizontalScroll/HorizontalScrollArrow.css +2 -2
  465. package/src/components/IconButton/IconButton.css +7 -0
  466. package/src/components/InitialsAvatar/InitialsAvatar.css +53 -0
  467. package/src/components/InitialsAvatar/InitialsAvatar.tsx +90 -0
  468. package/src/components/InitialsAvatar/Readme.md +14 -0
  469. package/src/components/Link/Link.tsx +1 -1
  470. package/src/components/MiniInfoCell/Readme.md +66 -62
  471. package/src/components/ModalDismissButton/Readme.md +13 -10
  472. package/src/components/ModalRoot/ModalRoot.tsx +159 -349
  473. package/src/components/ModalRoot/ModalRootContext.tsx +0 -1
  474. package/src/components/ModalRoot/ModalRootDesktop.tsx +54 -240
  475. package/src/components/ModalRoot/Readme.md +35 -27
  476. package/src/components/ModalRoot/types.ts +0 -1
  477. package/src/components/ModalRoot/useModalManager.tsx +174 -0
  478. package/src/components/NativeSelect/NativeSelect.tsx +2 -2
  479. package/src/components/Removable/Removable.css +16 -63
  480. package/src/components/Removable/Removable.tsx +84 -64
  481. package/src/components/ScreenSpinner/Readme.md +13 -9
  482. package/src/components/Search/Search.css +1 -1
  483. package/src/components/Select/Select.css +1 -1
  484. package/src/components/SelectMimicry/SelectMimicry.tsx +2 -2
  485. package/src/components/SimpleCell/SimpleCell.css +10 -18
  486. package/src/components/SimpleCell/SimpleCell.tsx +3 -5
  487. package/src/components/SplitCol/SplitCol.tsx +4 -8
  488. package/src/components/SplitLayout/Readme.md +2 -2
  489. package/src/components/SubnavigationBar/Readme.md +90 -86
  490. package/src/components/SubnavigationBar/SubnavigationBar.tsx +32 -14
  491. package/src/components/SubnavigationButton/SubnavigationButton.tsx +2 -3
  492. package/src/components/Switch/Readme.md +6 -6
  493. package/src/components/Switch/Switch.css +46 -15
  494. package/src/components/Switch/Switch.tsx +16 -8
  495. package/src/components/Tabbar/Tabbar.css +15 -4
  496. package/src/components/Tabbar/Tabbar.tsx +3 -1
  497. package/src/components/TabbarItem/Readme.md +72 -0
  498. package/src/components/TabbarItem/TabbarItem.css +65 -14
  499. package/src/components/TabbarItem/TabbarItem.tsx +46 -22
  500. package/src/components/Tappable/Tappable.tsx +2 -3
  501. package/src/components/Textarea/Readme.md +3 -0
  502. package/src/components/Textarea/Textarea.tsx +10 -6
  503. package/src/components/Touch/Touch.tsx +38 -25
  504. package/src/components/Typography/Caption/Caption.tsx +4 -4
  505. package/src/components/Typography/Headline/Headline.tsx +3 -3
  506. package/src/components/Typography/Subhead/Subhead.tsx +3 -3
  507. package/src/components/Typography/Text/Text.tsx +3 -4
  508. package/src/components/Typography/Title/Title.tsx +9 -5
  509. package/src/components/View/Readme.md +42 -56
  510. package/src/components/View/View.tsx +46 -61
  511. package/src/components/View/ViewInfinite.tsx +52 -67
  512. package/src/components/View/utils.ts +8 -0
  513. package/src/index.ts +4 -0
  514. package/src/lib/accessibility.ts +2 -2
  515. package/src/lib/prefixClass.ts +9 -6
  516. package/src/lib/supportEvents.ts +1 -4
  517. package/src/styles/components.css +4 -0
  518. package/src/styles/vkcom_light.css +3 -3
  519. package/src/testing/utils.tsx +34 -1
  520. package/src/types.ts +4 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/View/View.tsx"],"names":["warn","SwipeBackResults","scrollsCache","swipeBackExcludedTags","View","props","e","includes","animationName","activePanel","isBack","state","prevPanel","scrolls","setState","nextPanel","visiblePanels","animated","undefined","scroll","scrollTo","onTransition","from","to","propertyName","target","pickPanel","swipeBackNextPanel","swipeBackResult","fail","onSwipeBackCancel","success","onSwipeBackSuccess","originalEvent","tagName","toLowerCase","platform","configProvider","IOS","isWebView","startX","window","innerWidth","browserSwipe","onSwipeBack","swipingBack","history","length","getScroll","y","swipebackStartX","swipeBackPrevPanel","slice","swipeBackShift","shiftX","speed","duration","document","React","Children","toArray","children","id","prevProps","prevState","popout","blurActiveElement","modal","firstLayerId","panels","map","panel","find","waitAnimationFinish","transitionEndHandler","onSwipeBackStart","waitTransitionFinish","swipingBackTransitionEndHandler","transitionMotionEnabled","splitCol","animate","elem","eventHandler","transitionEvent","supported","removeEventListener","name","addEventListener","clearTimeout","transitionFinishTimeout","setTimeout","ANDROID","VKCOM","shouldDisableTransitionMotion","animationEvent","animationFinishTimeout","activeElement","blur","panelNodes","panelId","canUseDOM","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","_1","nav","restProps","hasPopout","hasModal","filter","disableAnimation","modifiers","onMoveX","onEnd","compensateScroll","el","calcPanelSwipeStyles","marginTop","Component","SplitColContext","ConfigProviderContext","ScrollContext"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { transitionEvent, animationEvent } from '../../lib/supportEvents';\nimport { getClassName } from '../../helpers/getClassName';\nimport { IOS, ANDROID, VKCOM } from '../../lib/platform';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport { HasPlatform } from '../../types';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { withContext } from '../../hoc/withContext';\nimport { ConfigProviderContext, ConfigProviderContextInterface } from '../ConfigProvider/ConfigProviderContext';\nimport { SplitColContext, SplitColContextProps } from '../SplitCol/SplitCol';\nimport { AppRootPortal } from '../AppRoot/AppRootPortal';\nimport { canUseDOM, withDOM, DOMProps } from '../../lib/dom';\nimport { ScrollContext, ScrollContextInterface } from '../AppRoot/ScrollContext';\nimport { NavTransitionProvider } from '../NavTransitionContext/NavTransitionContext';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport './View.css';\n\nconst warn = warnOnce('View');\n\nenum SwipeBackResults { fail = 1, success}\n\ninterface Scrolls {\n [index: string]: number;\n}\n\ninterface ViewsScrolls {\n [index: string]: Scrolls;\n}\n\ntype AnimationEventHandler = (e?: AnimationEvent) => void;\n\ntype TransitionEventHandler = (e?: TransitionEvent) => void;\n\nexport let scrollsCache: ViewsScrolls = {};\n\nconst swipeBackExcludedTags = ['input', 'textarea'];\n\nexport interface ViewProps extends React.HTMLAttributes<HTMLElement>, HasPlatform, NavIdProps {\n activePanel: string;\n /**\n * @deprecated будет удалено в 5.0.0. Используйте одноименное свойство у `SplitLayout`.\n *\n * Свойство для отрисовки `Alert`, `ActionSheet` и `ScreenSpinner`.\n */\n popout?: React.ReactNode;\n /**\n * @deprecated будет удалено в 5.0.0. Используйте одноименное свойство у `SplitLayout`.\n *\n * Свойство для отрисовки `ModalRoot`.\n */\n modal?: React.ReactNode;\n onTransition?(params: { isBack: boolean; from: string; to: string }): void;\n /**\n * callback свайпа назад\n */\n onSwipeBack?(): void;\n /**\n * callback начала анимации свайпа назад.\n */\n onSwipeBackStart?(): void;\n /**\n * callback завершения анимации отмененного пользователем свайпа\n */\n onSwipeBackCancel?(): void;\n history?: string[];\n /**\n * @ignore\n */\n splitCol?: SplitColContextProps;\n /**\n * @ignore\n */\n configProvider?: ConfigProviderContextInterface;\n /**\n * @ignore\n */\n scroll?: ScrollContextInterface;\n}\n\nexport interface ViewState {\n animated: boolean;\n\n visiblePanels: string[];\n activePanel: string;\n isBack: boolean;\n prevPanel: string;\n nextPanel: string;\n\n swipingBack: boolean;\n swipebackStartX: number;\n swipeBackShift: number;\n swipeBackNextPanel: string;\n swipeBackPrevPanel: string;\n swipeBackResult: SwipeBackResults;\n\n browserSwipe: boolean;\n}\n\nclass View extends React.Component<ViewProps & DOMProps, ViewState> {\n constructor(props: ViewProps) {\n super(props);\n\n this.state = {\n animated: false,\n\n visiblePanels: [props.activePanel],\n activePanel: props.activePanel,\n isBack: undefined,\n prevPanel: null,\n nextPanel: null,\n\n swipingBack: false,\n swipebackStartX: 0,\n swipeBackShift: 0,\n swipeBackNextPanel: null,\n swipeBackPrevPanel: null,\n swipeBackResult: null,\n\n browserSwipe: false,\n };\n }\n\n static defaultProps: Partial<ViewProps> = {\n history: [],\n };\n\n private readonly scrolls = scrollsCache[getNavId(this.props)] || {};\n private transitionFinishTimeout: ReturnType<typeof setTimeout>;\n private animationFinishTimeout: ReturnType<typeof setTimeout>;\n\n get document() {\n return this.props.document;\n }\n\n get window() {\n return this.props.window;\n }\n\n get panels() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n panelNodes: { [id: string]: HTMLDivElement } = {};\n\n componentWillUnmount() {\n const id = getNavId(this.props);\n if (id) {\n scrollsCache[id] = this.scrolls;\n }\n }\n\n componentDidUpdate(prevProps: ViewProps, prevState: ViewState) {\n this.props.popout && !prevProps.popout && this.blurActiveElement();\n this.props.modal && !prevProps.modal && this.blurActiveElement();\n\n // Нужен переход\n if (prevProps.activePanel !== this.props.activePanel && !prevState.swipingBack && !prevState.browserSwipe) {\n const firstLayerId = this.panels\n .map((panel) => getNavId(panel.props, warn))\n .find((id) => id === prevProps.activePanel || id === this.props.activePanel);\n\n const isBack = firstLayerId === this.props.activePanel;\n\n this.blurActiveElement();\n\n this.scrolls[prevProps.activePanel] = this.props.scroll.getScroll().y;\n this.setState({\n visiblePanels: [prevProps.activePanel, this.props.activePanel],\n prevPanel: prevProps.activePanel,\n nextPanel: this.props.activePanel,\n activePanel: null,\n animated: true,\n isBack,\n });\n }\n\n // Закончилась анимация свайпа назад\n if (prevProps.activePanel !== this.props.activePanel && prevState.swipingBack) {\n const nextPanel = this.props.activePanel;\n const prevPanel = prevProps.activePanel;\n this.scrolls[prevState.swipeBackPrevPanel] = 0;\n this.setState({\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipebackStartX: 0,\n swipeBackShift: 0,\n activePanel: nextPanel,\n visiblePanels: [nextPanel],\n }, () => {\n this.props.scroll.scrollTo(0, this.scrolls[this.state.activePanel]);\n prevProps.onTransition && prevProps.onTransition({ isBack: true, from: prevPanel, to: nextPanel });\n });\n }\n\n // Начался переход\n if (!prevState.animated && this.state.animated) {\n const { prevPanel, nextPanel, isBack } = this.state;\n this.waitAnimationFinish(this.pickPanel(isBack ? prevPanel : nextPanel), this.transitionEndHandler);\n }\n\n // Начался свайп назад\n if (!prevState.swipingBack && this.state.swipingBack) {\n this.props.onSwipeBackStart && this.props.onSwipeBackStart();\n }\n\n // Началась анимация завершения свайпа назад.\n if (!prevState.swipeBackResult && this.state.swipeBackResult) {\n this.waitTransitionFinish(this.pickPanel(this.state.swipeBackNextPanel), this.swipingBackTransitionEndHandler);\n }\n\n // Если свайп назад отменился (когда пользователь недостаточно сильно свайпнул)\n if (prevState.swipeBackResult === SwipeBackResults.fail && !this.state.swipeBackResult) {\n this.props.scroll.scrollTo(0, this.scrolls[this.state.activePanel]);\n }\n\n // Закончился Safari свайп\n if (prevProps.activePanel !== this.props.activePanel && this.state.browserSwipe) {\n this.setState({\n browserSwipe: false,\n nextPanel: null,\n prevPanel: null,\n animated: false,\n visiblePanels: [this.props.activePanel],\n activePanel: this.props.activePanel,\n });\n }\n }\n\n shouldDisableTransitionMotion(): boolean {\n return this.props.configProvider.transitionMotionEnabled === false ||\n !this.props.splitCol.animate;\n }\n\n waitTransitionFinish(elem: HTMLElement, eventHandler: TransitionEventHandler): void {\n if (transitionEvent.supported) {\n elem.removeEventListener(transitionEvent.name, eventHandler);\n elem.addEventListener(transitionEvent.name, eventHandler);\n } else {\n clearTimeout(this.transitionFinishTimeout);\n this.transitionFinishTimeout = setTimeout(eventHandler, this.props.platform === ANDROID || this.props.platform === VKCOM ? 300 : 600);\n }\n }\n\n waitAnimationFinish(elem: HTMLElement, eventHandler: AnimationEventHandler): void {\n if (this.shouldDisableTransitionMotion()) {\n eventHandler();\n return;\n }\n\n if (animationEvent.supported) {\n elem.removeEventListener(animationEvent.name, eventHandler);\n elem.addEventListener(animationEvent.name, eventHandler);\n } else {\n clearTimeout(this.animationFinishTimeout);\n this.animationFinishTimeout = setTimeout(eventHandler, this.props.platform === ANDROID || this.props.platform === VKCOM ? 300 : 600);\n }\n }\n\n blurActiveElement(): void {\n if (typeof this.window !== 'undefined' && this.document.activeElement) {\n (this.document.activeElement as HTMLElement).blur();\n }\n }\n\n pickPanel(id: string) {\n return this.panelNodes[id];\n }\n\n transitionEndHandler = (e?: AnimationEvent): void => {\n if (!e || [\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 const activePanel = this.props.activePanel;\n const isBack = this.state.isBack;\n const prevPanel = this.state.prevPanel;\n if (isBack) {\n this.scrolls[prevPanel] = 0;\n }\n this.setState({\n prevPanel: null,\n nextPanel: null,\n visiblePanels: [activePanel],\n activePanel: activePanel,\n animated: false,\n isBack: undefined,\n }, () => {\n isBack && this.props.scroll.scrollTo(0, this.scrolls[activePanel]);\n this.props.onTransition && this.props.onTransition({ isBack, from: prevPanel, to: activePanel });\n });\n }\n };\n\n swipingBackTransitionEndHandler = (e?: TransitionEvent): void => {\n // indexOf because of vendor prefixes in old browsers\n if (!e || e?.propertyName.includes('transform') && e?.target === this.pickPanel(this.state.swipeBackNextPanel)) {\n switch (this.state.swipeBackResult) {\n case SwipeBackResults.fail:\n this.onSwipeBackCancel();\n break;\n case SwipeBackResults.success:\n this.onSwipeBackSuccess();\n }\n }\n };\n\n onSwipeBackSuccess(): void {\n this.props.onSwipeBack && this.props.onSwipeBack();\n }\n\n onSwipeBackCancel(): void {\n this.props.onSwipeBackCancel && this.props.onSwipeBackCancel();\n this.setState({\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipebackStartX: 0,\n swipeBackShift: 0,\n });\n }\n\n onMoveX = (e: TouchEvent): void => {\n const target = e.originalEvent.target as HTMLElement;\n if (\n target &&\n typeof target.tagName === 'string' &&\n swipeBackExcludedTags.includes(target.tagName.toLowerCase())\n ) {\n return;\n }\n\n const { platform, configProvider } = this.props;\n\n if (platform === IOS && !configProvider.isWebView && (e.startX <= 70 || e.startX >= this.window.innerWidth - 70) && !this.state.browserSwipe) {\n this.setState({ browserSwipe: true });\n }\n\n if (platform === IOS && configProvider.isWebView && this.props.onSwipeBack) {\n if (this.state.animated && e.startX <= 70) {\n return;\n }\n\n if (e.startX <= 70 && !this.state.swipingBack && this.props.history.length > 1) {\n this.scrolls[this.state.activePanel] = this.props.scroll.getScroll().y;\n this.setState({\n swipingBack: true,\n swipebackStartX: e.startX,\n swipeBackPrevPanel: this.state.activePanel,\n swipeBackNextPanel: this.props.history.slice(-2)[0],\n });\n }\n if (this.state.swipingBack) {\n let swipeBackShift;\n if (e.shiftX < 0) {\n swipeBackShift = 0;\n } else if (e.shiftX > this.window.innerWidth - this.state.swipebackStartX) {\n swipeBackShift = this.window.innerWidth;\n } else {\n swipeBackShift = e.shiftX;\n }\n this.setState({ swipeBackShift });\n }\n }\n };\n\n onEnd = (e: TouchEvent): void => {\n if (this.state.swipingBack) {\n const speed = this.state.swipeBackShift / e.duration * 1000;\n if (this.state.swipeBackShift === 0) {\n this.onSwipeBackCancel();\n } else if (this.state.swipeBackShift >= this.window.innerWidth) {\n this.onSwipeBackSuccess();\n } else if (speed > 250 || this.state.swipebackStartX + this.state.swipeBackShift > this.window.innerWidth / 2) {\n this.setState({ swipeBackResult: SwipeBackResults.success });\n } else {\n this.setState({ swipeBackResult: SwipeBackResults.fail });\n }\n }\n };\n\n calcPanelSwipeStyles(panelId: string): React.CSSProperties {\n if (!canUseDOM) {\n return {};\n }\n\n const isPrev = panelId === this.state.swipeBackPrevPanel;\n const isNext = panelId === this.state.swipeBackNextPanel;\n\n if (!isPrev && !isNext || this.state.swipeBackResult) {\n return {};\n }\n\n let prevPanelTranslate = `${this.state.swipeBackShift}px`;\n let nextPanelTranslate = `${-50 + this.state.swipeBackShift * 100 / this.window.innerWidth / 2}%`;\n let prevPanelShadow = 0.3 * (this.window.innerWidth - this.state.swipeBackShift) / this.window.innerWidth;\n\n if (this.state.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 render() {\n const {\n popout, modal, platform,\n activePanel: _1, splitCol, configProvider, history, nav,\n onTransition, onSwipeBack, onSwipeBackStart, onSwipeBackCancel,\n window, document, scroll,\n ...restProps\n } = this.props;\n const {\n prevPanel, nextPanel, activePanel, swipeBackPrevPanel, swipeBackNextPanel,\n swipeBackResult, isBack,\n } = this.state;\n\n const hasPopout = !!popout;\n const hasModal = !!modal;\n\n const panels = this.panels.filter((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n\n return this.state.visiblePanels.includes(panelId) ||\n panelId === swipeBackPrevPanel ||\n panelId === swipeBackNextPanel;\n });\n\n const disableAnimation = this.shouldDisableTransitionMotion();\n\n const modifiers = {\n 'View--animated': !disableAnimation && this.state.animated,\n 'View--swiping-back': !disableAnimation && this.state.swipingBack,\n 'View--no-motion': disableAnimation,\n };\n\n return (\n <Touch\n Component=\"section\"\n {...restProps}\n vkuiClass={classNames(getClassName('View', platform), modifiers)}\n onMoveX={this.onMoveX}\n onEnd={this.onEnd}\n >\n <div vkuiClass=\"View__panels\">\n {panels.map((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n const isPrev = panelId === prevPanel || panelId === swipeBackPrevPanel;\n const compensateScroll = isPrev || panelId === swipeBackNextPanel || panelId === nextPanel && isBack;\n\n return (\n <div\n vkuiClass={classNames('View__panel', {\n 'View__panel--active': panelId === activePanel,\n 'View__panel--prev': panelId === prevPanel,\n 'View__panel--next': panelId === nextPanel,\n 'View__panel--swipe-back-prev': panelId === swipeBackPrevPanel,\n 'View__panel--swipe-back-next': panelId === swipeBackNextPanel,\n 'View__panel--swipe-back-success': swipeBackResult === SwipeBackResults.success,\n 'View__panel--swipe-back-failed': swipeBackResult === SwipeBackResults.fail,\n })}\n ref={(el) => this.panelNodes[panelId] = el}\n style={this.calcPanelSwipeStyles(panelId)}\n key={panelId}\n >\n <div vkuiClass=\"View__panel-in\" style={{ marginTop: compensateScroll ? -this.scrolls[panelId] : null }}>\n <NavTransitionProvider entering={panelId === nextPanel || panelId === swipeBackNextPanel}>\n {panel}\n </NavTransitionProvider>\n </div>\n </div>\n );\n })}\n </div>\n <AppRootPortal>\n {hasPopout && <div vkuiClass=\"View__popout\">{popout}</div>}\n {hasModal && <div vkuiClass=\"View__modal\">{modal}</div>}\n </AppRootPortal>\n </Touch>\n );\n }\n}\n\nexport default withContext(withContext(\n withContext(\n withPlatform(withDOM<ViewProps>(View)),\n SplitColContext, 'splitCol'),\n ConfigProviderContext, 'configProvider'),\nScrollContext, 'scroll');\n"],"file":"View.js"}
1
+ {"version":3,"sources":["../../../../src/components/View/View.tsx"],"names":["warn","SwipeBackResults","scrollsCache","View","props","e","includes","animationName","flushTransition","state","prevPanel","isBack","propertyName","target","pickPanel","swipeBackNextPanel","swipeBackResult","fail","onSwipeBackCancel","success","onSwipeBackSuccess","platform","configProvider","IOS","isWebView","startX","window","innerWidth","browserSwipe","setState","onSwipeBack","animated","swipingBack","history","length","scrolls","activePanel","scroll","getScroll","y","swipebackStartX","swipeBackPrevPanel","slice","swipeBackShift","shiftX","speed","duration","visiblePanels","undefined","nextPanel","document","React","Children","toArray","children","id","prevProps","prevState","popout","blurActiveElement","modal","firstLayerId","panels","map","panel","find","shouldDisableTransitionMotion","animationEvent","supported","clearTimeout","animationFinishTimeout","setTimeout","transitionEndHandler","ANDROID","VKCOM","scrollTo","onTransition","from","to","onSwipeBackStart","waitTransitionFinish","swipingBackTransitionEndHandler","transitionMotionEnabled","splitCol","animate","elem","eventHandler","transitionEvent","removeEventListener","name","addEventListener","transitionFinishTimeout","activeElement","blur","panelNodes","panelId","canUseDOM","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","_1","nav","restProps","hasPopout","hasModal","filter","disableAnimation","modifiers","onMoveX","onEnd","isTransitionTarget","compensateScroll","el","calcPanelSwipeStyles","marginTop","Component","SplitColContext","ConfigProviderContext","ScrollContext"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { transitionEvent, animationEvent } from '../../lib/supportEvents';\nimport { getClassName } from '../../helpers/getClassName';\nimport { IOS, ANDROID, VKCOM } from '../../lib/platform';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport { HasPlatform } from '../../types';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { withContext } from '../../hoc/withContext';\nimport { ConfigProviderContext, ConfigProviderContextInterface } from '../ConfigProvider/ConfigProviderContext';\nimport { SplitColContext, SplitColContextProps } from '../SplitCol/SplitCol';\nimport { AppRootPortal } from '../AppRoot/AppRootPortal';\nimport { canUseDOM, withDOM, DOMProps } from '../../lib/dom';\nimport { ScrollContext, ScrollContextInterface } from '../AppRoot/ScrollContext';\nimport { NavTransitionProvider } from '../NavTransitionContext/NavTransitionContext';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { swipeBackExcluded } from './utils';\nimport './View.css';\n\nconst warn = warnOnce('View');\n\nenum SwipeBackResults { fail = 1, success}\n\ninterface Scrolls {\n [index: string]: number;\n}\n\ninterface ViewsScrolls {\n [index: string]: Scrolls;\n}\n\ntype TransitionEventHandler = (e?: TransitionEvent) => void;\n\nexport let scrollsCache: ViewsScrolls = {};\n\nexport interface ViewProps extends React.HTMLAttributes<HTMLElement>, HasPlatform, NavIdProps {\n activePanel: string;\n /**\n * @deprecated будет удалено в 5.0.0. Используйте одноименное свойство у `SplitLayout`.\n *\n * Свойство для отрисовки `Alert`, `ActionSheet` и `ScreenSpinner`.\n */\n popout?: React.ReactNode;\n /**\n * @deprecated будет удалено в 5.0.0. Используйте одноименное свойство у `SplitLayout`.\n *\n * Свойство для отрисовки `ModalRoot`.\n */\n modal?: React.ReactNode;\n onTransition?(params: { isBack: boolean; from: string; to: string }): void;\n /**\n * callback свайпа назад\n */\n onSwipeBack?(): void;\n /**\n * callback начала анимации свайпа назад.\n */\n onSwipeBackStart?(): void;\n /**\n * callback завершения анимации отмененного пользователем свайпа\n */\n onSwipeBackCancel?(): void;\n history?: string[];\n /**\n * @ignore\n */\n splitCol?: SplitColContextProps;\n /**\n * @ignore\n */\n configProvider?: ConfigProviderContextInterface;\n /**\n * @ignore\n */\n scroll?: ScrollContextInterface;\n}\n\nexport interface ViewState {\n animated: boolean;\n\n visiblePanels: string[];\n activePanel: string;\n isBack: boolean;\n prevPanel: string;\n nextPanel: string;\n\n swipingBack: boolean;\n swipebackStartX: number;\n swipeBackShift: number;\n swipeBackNextPanel: string;\n swipeBackPrevPanel: string;\n swipeBackResult: SwipeBackResults;\n\n browserSwipe: boolean;\n}\n\nclass View extends React.Component<ViewProps & DOMProps, ViewState> {\n constructor(props: ViewProps) {\n super(props);\n\n this.state = {\n animated: false,\n\n visiblePanels: [props.activePanel],\n activePanel: props.activePanel,\n isBack: undefined,\n prevPanel: null,\n nextPanel: null,\n\n swipingBack: false,\n swipebackStartX: 0,\n swipeBackShift: 0,\n swipeBackNextPanel: null,\n swipeBackPrevPanel: null,\n swipeBackResult: null,\n\n browserSwipe: false,\n };\n }\n\n static defaultProps: Partial<ViewProps> = {\n history: [],\n };\n\n private readonly scrolls = scrollsCache[getNavId(this.props)] || {};\n private transitionFinishTimeout: ReturnType<typeof setTimeout>;\n private animationFinishTimeout: ReturnType<typeof setTimeout>;\n\n get document() {\n return this.props.document;\n }\n\n get window() {\n return this.props.window;\n }\n\n get panels() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n panelNodes: { [id: string]: HTMLDivElement } = {};\n\n componentWillUnmount() {\n const id = getNavId(this.props);\n if (id) {\n scrollsCache[id] = this.scrolls;\n }\n }\n\n componentDidUpdate(prevProps: ViewProps, prevState: ViewState) {\n this.props.popout && !prevProps.popout && this.blurActiveElement();\n this.props.modal && !prevProps.modal && this.blurActiveElement();\n\n // Нужен переход\n if (prevProps.activePanel !== this.props.activePanel && !prevState.swipingBack && !prevState.browserSwipe) {\n const firstLayerId = this.panels\n .map((panel) => getNavId(panel.props, warn))\n .find((id) => id === prevProps.activePanel || id === this.props.activePanel);\n\n const isBack = firstLayerId === this.props.activePanel;\n this.scrolls[prevProps.activePanel] = this.props.scroll.getScroll().y;\n\n if (this.shouldDisableTransitionMotion()) {\n this.flushTransition(prevProps.activePanel, isBack);\n } else {\n this.blurActiveElement();\n\n this.setState({\n visiblePanels: [prevProps.activePanel, this.props.activePanel],\n prevPanel: prevProps.activePanel,\n nextPanel: this.props.activePanel,\n activePanel: null,\n animated: true,\n isBack,\n });\n\n // Фолбек анимации перехода\n if (!animationEvent.supported) {\n clearTimeout(this.animationFinishTimeout);\n this.animationFinishTimeout = setTimeout(this.transitionEndHandler, this.props.platform === ANDROID || this.props.platform === VKCOM ? 300 : 600);\n }\n }\n }\n\n // Закончилась анимация свайпа назад\n if (prevProps.activePanel !== this.props.activePanel && prevState.swipingBack) {\n const nextPanel = this.props.activePanel;\n const prevPanel = prevProps.activePanel;\n this.scrolls[prevState.swipeBackPrevPanel] = 0;\n this.setState({\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipebackStartX: 0,\n swipeBackShift: 0,\n activePanel: nextPanel,\n visiblePanels: [nextPanel],\n }, () => {\n this.props.scroll.scrollTo(0, this.scrolls[this.state.activePanel]);\n prevProps.onTransition && prevProps.onTransition({ isBack: true, from: prevPanel, to: nextPanel });\n });\n }\n\n // Начался свайп назад\n if (!prevState.swipingBack && this.state.swipingBack) {\n this.props.onSwipeBackStart && this.props.onSwipeBackStart();\n }\n\n // Началась анимация завершения свайпа назад.\n if (!prevState.swipeBackResult && this.state.swipeBackResult) {\n this.waitTransitionFinish(this.pickPanel(this.state.swipeBackNextPanel), this.swipingBackTransitionEndHandler);\n }\n\n // Если свайп назад отменился (когда пользователь недостаточно сильно свайпнул)\n if (prevState.swipeBackResult === SwipeBackResults.fail && !this.state.swipeBackResult) {\n this.props.scroll.scrollTo(0, this.scrolls[this.state.activePanel]);\n }\n\n // Закончился Safari свайп\n if (prevProps.activePanel !== this.props.activePanel && this.state.browserSwipe) {\n this.setState({\n browserSwipe: false,\n nextPanel: null,\n prevPanel: null,\n animated: false,\n visiblePanels: [this.props.activePanel],\n activePanel: this.props.activePanel,\n });\n }\n }\n\n shouldDisableTransitionMotion(): boolean {\n return this.props.configProvider.transitionMotionEnabled === false ||\n !this.props.splitCol.animate;\n }\n\n waitTransitionFinish(elem: HTMLElement, eventHandler: TransitionEventHandler): void {\n if (transitionEvent.supported) {\n elem.removeEventListener(transitionEvent.name, eventHandler);\n elem.addEventListener(transitionEvent.name, eventHandler);\n } else {\n clearTimeout(this.transitionFinishTimeout);\n this.transitionFinishTimeout = setTimeout(eventHandler, this.props.platform === ANDROID || this.props.platform === VKCOM ? 300 : 600);\n }\n }\n\n blurActiveElement(): void {\n if (typeof this.window !== 'undefined' && this.document.activeElement) {\n (this.document.activeElement as HTMLElement).blur();\n }\n }\n\n pickPanel(id: string) {\n return this.panelNodes[id];\n }\n\n flushTransition(prevPanel: string, isBack: boolean) {\n const activePanel = this.props.activePanel;\n if (isBack) {\n this.scrolls[prevPanel] = 0;\n }\n this.setState({\n prevPanel: null,\n nextPanel: null,\n visiblePanels: [activePanel],\n activePanel,\n animated: false,\n isBack: undefined,\n }, () => {\n this.props.scroll.scrollTo(0, isBack ? this.scrolls[activePanel] : 0);\n this.props.onTransition && this.props.onTransition({ isBack, from: prevPanel, to: activePanel });\n });\n }\n\n transitionEndHandler = (e?: React.AnimationEvent): void => {\n if (!e || [\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 this.flushTransition(this.state.prevPanel, this.state.isBack);\n }\n };\n\n swipingBackTransitionEndHandler = (e?: TransitionEvent): void => {\n // indexOf because of vendor prefixes in old browsers\n if (!e || e?.propertyName.includes('transform') && e?.target === this.pickPanel(this.state.swipeBackNextPanel)) {\n switch (this.state.swipeBackResult) {\n case SwipeBackResults.fail:\n this.onSwipeBackCancel();\n break;\n case SwipeBackResults.success:\n this.onSwipeBackSuccess();\n }\n }\n };\n\n onSwipeBackSuccess(): void {\n this.props.onSwipeBack && this.props.onSwipeBack();\n }\n\n onSwipeBackCancel(): void {\n this.props.onSwipeBackCancel && this.props.onSwipeBackCancel();\n this.setState({\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipebackStartX: 0,\n swipeBackShift: 0,\n });\n }\n\n onMoveX = (e: TouchEvent): void => {\n if (swipeBackExcluded(e)) {\n return;\n }\n\n const { platform, configProvider } = this.props;\n\n if (platform === IOS && !configProvider.isWebView && (e.startX <= 70 || e.startX >= this.window.innerWidth - 70) && !this.state.browserSwipe) {\n this.setState({ browserSwipe: true });\n }\n\n if (platform === IOS && configProvider.isWebView && this.props.onSwipeBack) {\n if (this.state.animated && e.startX <= 70) {\n return;\n }\n\n if (e.startX <= 70 && !this.state.swipingBack && this.props.history.length > 1) {\n this.scrolls[this.state.activePanel] = this.props.scroll.getScroll().y;\n this.setState({\n swipingBack: true,\n swipebackStartX: e.startX,\n swipeBackPrevPanel: this.state.activePanel,\n swipeBackNextPanel: this.props.history.slice(-2)[0],\n });\n }\n if (this.state.swipingBack) {\n let swipeBackShift;\n if (e.shiftX < 0) {\n swipeBackShift = 0;\n } else if (e.shiftX > this.window.innerWidth - this.state.swipebackStartX) {\n swipeBackShift = this.window.innerWidth;\n } else {\n swipeBackShift = e.shiftX;\n }\n this.setState({ swipeBackShift });\n }\n }\n };\n\n onEnd = (e: TouchEvent): void => {\n if (this.state.swipingBack) {\n const speed = this.state.swipeBackShift / e.duration * 1000;\n if (this.state.swipeBackShift === 0) {\n this.onSwipeBackCancel();\n } else if (this.state.swipeBackShift >= this.window.innerWidth) {\n this.onSwipeBackSuccess();\n } else if (speed > 250 || this.state.swipebackStartX + this.state.swipeBackShift > this.window.innerWidth / 2) {\n this.setState({ swipeBackResult: SwipeBackResults.success });\n } else {\n this.setState({ swipeBackResult: SwipeBackResults.fail });\n }\n }\n };\n\n calcPanelSwipeStyles(panelId: string): React.CSSProperties {\n if (!canUseDOM) {\n return {};\n }\n\n const isPrev = panelId === this.state.swipeBackPrevPanel;\n const isNext = panelId === this.state.swipeBackNextPanel;\n\n if (!isPrev && !isNext || this.state.swipeBackResult) {\n return {};\n }\n\n let prevPanelTranslate = `${this.state.swipeBackShift}px`;\n let nextPanelTranslate = `${-50 + this.state.swipeBackShift * 100 / this.window.innerWidth / 2}%`;\n let prevPanelShadow = 0.3 * (this.window.innerWidth - this.state.swipeBackShift) / this.window.innerWidth;\n\n if (this.state.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 render() {\n const {\n popout, modal, platform,\n activePanel: _1, splitCol, configProvider, history, nav,\n onTransition, onSwipeBack, onSwipeBackStart, onSwipeBackCancel,\n window, document, scroll,\n ...restProps\n } = this.props;\n const {\n prevPanel, nextPanel, activePanel, swipeBackPrevPanel, swipeBackNextPanel,\n swipeBackResult, isBack, animated,\n } = this.state;\n\n const hasPopout = !!popout;\n const hasModal = !!modal;\n\n const panels = this.panels.filter((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n\n return this.state.visiblePanels.includes(panelId) ||\n panelId === swipeBackPrevPanel ||\n panelId === swipeBackNextPanel;\n });\n\n const disableAnimation = this.shouldDisableTransitionMotion();\n\n const modifiers = {\n 'View--animated': !disableAnimation && animated,\n 'View--swiping-back': !disableAnimation && this.state.swipingBack,\n 'View--no-motion': disableAnimation,\n };\n\n return (\n <Touch\n Component=\"section\"\n {...restProps}\n vkuiClass={classNames(getClassName('View', platform), modifiers)}\n onMoveX={this.onMoveX}\n onEnd={this.onEnd}\n >\n <div vkuiClass=\"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 = isPrev || panelId === swipeBackNextPanel || panelId === nextPanel && isBack;\n\n return (\n <div\n vkuiClass={classNames('View__panel', {\n 'View__panel--active': panelId === activePanel,\n 'View__panel--prev': panelId === prevPanel,\n 'View__panel--next': panelId === nextPanel,\n 'View__panel--swipe-back-prev': panelId === swipeBackPrevPanel,\n 'View__panel--swipe-back-next': panelId === swipeBackNextPanel,\n 'View__panel--swipe-back-success': swipeBackResult === SwipeBackResults.success,\n 'View__panel--swipe-back-failed': swipeBackResult === SwipeBackResults.fail,\n })}\n onAnimationEnd={isTransitionTarget ? this.transitionEndHandler : null}\n ref={(el) => this.panelNodes[panelId] = el}\n style={this.calcPanelSwipeStyles(panelId)}\n key={panelId}\n >\n <div vkuiClass=\"View__panel-in\" style={{ marginTop: compensateScroll ? -this.scrolls[panelId] : null }}>\n <NavTransitionProvider entering={panelId === nextPanel || panelId === swipeBackNextPanel}>\n {panel}\n </NavTransitionProvider>\n </div>\n </div>\n );\n })}\n </div>\n <AppRootPortal>\n {hasPopout && <div vkuiClass=\"View__popout\">{popout}</div>}\n {hasModal && <div vkuiClass=\"View__modal\">{modal}</div>}\n </AppRootPortal>\n </Touch>\n );\n }\n}\n\nexport default withContext(withContext(\n withContext(\n withPlatform(withDOM<ViewProps>(View)),\n SplitColContext, 'splitCol'),\n ConfigProviderContext, 'configProvider'),\nScrollContext, 'scroll');\n"],"file":"View.js"}
@@ -15,10 +15,10 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
15
15
 
16
16
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
17
17
 
18
- var _objectSpread7 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
19
-
20
18
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
21
19
 
20
+ var _objectSpread7 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
21
+
22
22
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
23
23
 
24
24
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -63,6 +63,8 @@ var _getNavId = require("../../lib/getNavId");
63
63
 
64
64
  var _warnOnce = require("../../lib/warnOnce");
65
65
 
66
+ var _utils = require("./utils");
67
+
66
68
  var _excluded = ["popout", "modal", "platform", "activePanel", "splitCol", "configProvider", "history", "id", "nav", "onTransition", "onSwipeBack", "onSwipeBackStart", "onSwipeBackCancel", "window", "document", "scroll", "isBackCheck"];
67
69
  var warn = (0, _warnOnce.warnOnce)('ViewInfinite');
68
70
  var SwipeBackResults;
@@ -73,7 +75,6 @@ var SwipeBackResults;
73
75
  })(SwipeBackResults || (SwipeBackResults = {}));
74
76
 
75
77
  var scrollsCache = {};
76
- var swipeBackExcludedTags = ['input', 'textarea'];
77
78
 
78
79
  var ViewInfinite = /*#__PURE__*/function (_React$Component) {
79
80
  (0, _inherits2.default)(ViewInfinite, _React$Component);
@@ -91,34 +92,7 @@ var ViewInfinite = /*#__PURE__*/function (_React$Component) {
91
92
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "panelNodes", {});
92
93
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "transitionEndHandler", function (e) {
93
94
  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)) {
94
- var activePanel = _this.props.activePanel;
95
- var prevPanel = _this.state.prevPanel;
96
- var isBack = _this.state.isBack;
97
- var prevPanelScrolls = (0, _toConsumableArray2.default)(_this.scrolls[prevPanel] || []).slice(0, -1);
98
- var newPanelScrolls = (0, _toConsumableArray2.default)(_this.scrolls[activePanel] || []);
99
- var scrollPosition = isBack ? newPanelScrolls.pop() : 0;
100
-
101
- if (isBack) {
102
- var _objectSpread2;
103
-
104
- _this.scrolls = (0, _objectSpread7.default)((0, _objectSpread7.default)({}, _this.scrolls), {}, (_objectSpread2 = {}, (0, _defineProperty2.default)(_objectSpread2, prevPanel, prevPanelScrolls), (0, _defineProperty2.default)(_objectSpread2, activePanel, newPanelScrolls), _objectSpread2));
105
- }
106
-
107
- _this.setState({
108
- prevPanel: null,
109
- nextPanel: null,
110
- visiblePanels: [activePanel],
111
- activePanel: activePanel,
112
- animated: false,
113
- isBack: undefined
114
- }, function () {
115
- isBack && _this.props.scroll.scrollTo(0, scrollPosition);
116
- _this.props.onTransition && _this.props.onTransition({
117
- isBack: isBack,
118
- from: prevPanel,
119
- to: activePanel
120
- });
121
- });
95
+ _this.flushTransition(_this.state.prevPanel, _this.state.isBack);
122
96
  }
123
97
  });
124
98
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "swipingBackTransitionEndHandler", function (e) {
@@ -137,9 +111,7 @@ var ViewInfinite = /*#__PURE__*/function (_React$Component) {
137
111
  }
138
112
  });
139
113
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onMoveX", function (e) {
140
- var target = e.originalEvent.target;
141
-
142
- if (target && typeof target.tagName === 'string' && swipeBackExcludedTags.includes(target.tagName.toLowerCase())) {
114
+ if ((0, _utils.swipeBackExcluded)(e)) {
143
115
  return;
144
116
  }
145
117
 
@@ -277,26 +249,36 @@ var ViewInfinite = /*#__PURE__*/function (_React$Component) {
277
249
  var prevScrolls = this.scrolls[prevProps.activePanel] || [];
278
250
  var scrolls = (0, _objectSpread7.default)((0, _objectSpread7.default)({}, this.scrolls), {}, (0, _defineProperty2.default)({}, prevProps.activePanel, [].concat((0, _toConsumableArray2.default)(prevScrolls), [this.props.scroll.getScroll().y])));
279
251
  this.scrolls = scrolls;
280
- this.setState({
281
- visiblePanels: [prevProps.activePanel, this.props.activePanel],
282
- prevPanel: prevProps.activePanel,
283
- nextPanel: this.props.activePanel,
284
- activePanel: null,
285
- animated: true,
286
- isBack: isBack
287
- });
252
+
253
+ if (this.shouldDisableTransitionMotion()) {
254
+ this.flushTransition(prevProps.activePanel, isBack);
255
+ } else {
256
+ this.setState({
257
+ visiblePanels: [prevProps.activePanel, this.props.activePanel],
258
+ prevPanel: prevProps.activePanel,
259
+ nextPanel: this.props.activePanel,
260
+ activePanel: null,
261
+ animated: true,
262
+ isBack: isBack
263
+ }); // Фолбек анимации перехода
264
+
265
+ if (!_supportEvents.animationEvent.supported) {
266
+ clearTimeout(this.animationFinishTimeout);
267
+ this.animationFinishTimeout = setTimeout(this.transitionEndHandler, this.props.platform === _platform.ANDROID || this.props.platform === _platform.VKCOM ? 300 : 600);
268
+ }
269
+ }
288
270
  } // Закончилась анимация свайпа назад
289
271
 
290
272
 
291
273
  if (prevProps.activePanel !== this.props.activePanel && prevState.swipingBack) {
292
- var _objectSpread5;
274
+ var _objectSpread4;
293
275
 
294
276
  var nextPanel = this.state.swipeBackNextPanel;
295
277
  var prevPanel = this.state.swipeBackPrevPanel;
296
278
  var prevPanelScrolls = (0, _toConsumableArray2.default)(this.scrolls[prevPanel] || []).slice(0, -1);
297
279
  var newPanelScrolls = (0, _toConsumableArray2.default)(this.scrolls[nextPanel] || []);
298
280
  var scrollPosition = newPanelScrolls.pop();
299
- this.scrolls = (0, _objectSpread7.default)((0, _objectSpread7.default)({}, this.scrolls), {}, (_objectSpread5 = {}, (0, _defineProperty2.default)(_objectSpread5, nextPanel, newPanelScrolls), (0, _defineProperty2.default)(_objectSpread5, prevPanel, prevPanelScrolls), _objectSpread5));
281
+ this.scrolls = (0, _objectSpread7.default)((0, _objectSpread7.default)({}, this.scrolls), {}, (_objectSpread4 = {}, (0, _defineProperty2.default)(_objectSpread4, nextPanel, newPanelScrolls), (0, _defineProperty2.default)(_objectSpread4, prevPanel, prevPanelScrolls), _objectSpread4));
300
282
  this.setState({
301
283
  swipeBackPrevPanel: null,
302
284
  swipeBackNextPanel: null,
@@ -315,15 +297,6 @@ var ViewInfinite = /*#__PURE__*/function (_React$Component) {
315
297
  to: nextPanel
316
298
  });
317
299
  });
318
- } // Начался переход
319
-
320
-
321
- if (!prevState.animated && this.state.animated) {
322
- var _this$state = this.state,
323
- _prevPanel = _this$state.prevPanel,
324
- _nextPanel = _this$state.nextPanel,
325
- _isBack = _this$state.isBack;
326
- this.waitAnimationFinish(this.pickPanel(_isBack ? _prevPanel : _nextPanel), this.transitionEndHandler);
327
300
  } // Начался свайп назад
328
301
 
329
302
 
@@ -374,22 +347,6 @@ var ViewInfinite = /*#__PURE__*/function (_React$Component) {
374
347
  this.transitionFinishTimeout = setTimeout(eventHandler, this.props.platform === _platform.ANDROID || this.props.platform === _platform.VKCOM ? 300 : 600);
375
348
  }
376
349
  }
377
- }, {
378
- key: "waitAnimationFinish",
379
- value: function waitAnimationFinish(elem, eventHandler) {
380
- if (this.shouldDisableTransitionMotion()) {
381
- eventHandler();
382
- return;
383
- }
384
-
385
- if (_supportEvents.animationEvent.supported) {
386
- elem.removeEventListener(_supportEvents.animationEvent.name, eventHandler);
387
- elem.addEventListener(_supportEvents.animationEvent.name, eventHandler);
388
- } else {
389
- clearTimeout(this.animationFinishTimeout);
390
- this.animationFinishTimeout = setTimeout(eventHandler, this.props.platform === _platform.ANDROID || this.props.platform === _platform.VKCOM ? 300 : 600);
391
- }
392
- }
393
350
  }, {
394
351
  key: "blurActiveElement",
395
352
  value: function blurActiveElement() {
@@ -402,6 +359,39 @@ var ViewInfinite = /*#__PURE__*/function (_React$Component) {
402
359
  value: function pickPanel(id) {
403
360
  return this.panelNodes[id];
404
361
  }
362
+ }, {
363
+ key: "flushTransition",
364
+ value: function flushTransition(prevPanel, isBack) {
365
+ var _this3 = this;
366
+
367
+ var activePanel = this.props.activePanel;
368
+ var prevPanelScrolls = (0, _toConsumableArray2.default)(this.scrolls[prevPanel] || []).slice(0, -1);
369
+ var newPanelScrolls = (0, _toConsumableArray2.default)(this.scrolls[activePanel] || []);
370
+ var scrollPosition = isBack ? newPanelScrolls.pop() : 0;
371
+
372
+ if (isBack) {
373
+ var _objectSpread6;
374
+
375
+ this.scrolls = (0, _objectSpread7.default)((0, _objectSpread7.default)({}, this.scrolls), {}, (_objectSpread6 = {}, (0, _defineProperty2.default)(_objectSpread6, prevPanel, prevPanelScrolls), (0, _defineProperty2.default)(_objectSpread6, activePanel, newPanelScrolls), _objectSpread6));
376
+ }
377
+
378
+ this.setState({
379
+ prevPanel: null,
380
+ nextPanel: null,
381
+ visiblePanels: [activePanel],
382
+ activePanel: activePanel,
383
+ animated: false,
384
+ isBack: undefined
385
+ }, function () {
386
+ _this3.props.scroll.scrollTo(0, isBack ? scrollPosition : 0);
387
+
388
+ _this3.props.onTransition && _this3.props.onTransition({
389
+ isBack: isBack,
390
+ from: prevPanel,
391
+ to: activePanel
392
+ });
393
+ });
394
+ }
405
395
  }, {
406
396
  key: "onSwipeBackSuccess",
407
397
  value: function onSwipeBackSuccess() {
@@ -464,7 +454,7 @@ var ViewInfinite = /*#__PURE__*/function (_React$Component) {
464
454
  }, {
465
455
  key: "render",
466
456
  value: function render() {
467
- var _this3 = this;
457
+ var _this4 = this;
468
458
 
469
459
  var _this$props2 = this.props,
470
460
  popout = _this$props2.popout,
@@ -485,31 +475,32 @@ var ViewInfinite = /*#__PURE__*/function (_React$Component) {
485
475
  scroll = _this$props2.scroll,
486
476
  isBackCheck = _this$props2.isBackCheck,
487
477
  restProps = (0, _objectWithoutProperties2.default)(_this$props2, _excluded);
488
- var _this$state2 = this.state,
489
- prevPanel = _this$state2.prevPanel,
490
- nextPanel = _this$state2.nextPanel,
491
- activePanel = _this$state2.activePanel,
492
- isBack = _this$state2.isBack,
493
- swipeBackPrevPanel = _this$state2.swipeBackPrevPanel,
494
- swipeBackNextPanel = _this$state2.swipeBackNextPanel,
495
- swipeBackResult = _this$state2.swipeBackResult,
496
- swipingBack = _this$state2.swipingBack;
478
+ var _this$state = this.state,
479
+ prevPanel = _this$state.prevPanel,
480
+ nextPanel = _this$state.nextPanel,
481
+ activePanel = _this$state.activePanel,
482
+ isBack = _this$state.isBack,
483
+ animated = _this$state.animated,
484
+ swipeBackPrevPanel = _this$state.swipeBackPrevPanel,
485
+ swipeBackNextPanel = _this$state.swipeBackNextPanel,
486
+ swipeBackResult = _this$state.swipeBackResult,
487
+ swipingBack = _this$state.swipingBack;
497
488
  var hasPopout = !!popout;
498
489
  var hasModal = !!modal;
499
490
  var panels = this.panels.filter(function (panel) {
500
491
  var panelId = (0, _getNavId.getNavId)(panel.props, warn);
501
- return _this3.state.visiblePanels.includes(panelId) || panelId === swipeBackPrevPanel || panelId === swipeBackNextPanel;
492
+ return _this4.state.visiblePanels.includes(panelId) || panelId === swipeBackPrevPanel || panelId === swipeBackNextPanel;
502
493
  }).sort(function (panel) {
503
494
  var panelId = (0, _getNavId.getNavId)(panel.props, warn);
504
495
  var isPrevPanel = panelId === prevPanel || panelId === swipeBackPrevPanel;
505
496
  var isNextPanel = panelId === nextPanel || panelId === swipeBackNextPanel;
506
497
 
507
498
  if (isNextPanel) {
508
- return swipingBack || _this3.state.isBack ? -1 : 1;
499
+ return swipingBack || _this4.state.isBack ? -1 : 1;
509
500
  }
510
501
 
511
502
  if (isPrevPanel) {
512
- return swipingBack || _this3.state.isBack ? 1 : -1;
503
+ return swipingBack || _this4.state.isBack ? 1 : -1;
513
504
  }
514
505
 
515
506
  return 0;
@@ -532,7 +523,8 @@ var ViewInfinite = /*#__PURE__*/function (_React$Component) {
532
523
  var panelId = (0, _getNavId.getNavId)(panel.props, warn);
533
524
  var isPrev = panelId === prevPanel || panelId === swipeBackPrevPanel;
534
525
  var compensateScroll = isPrev || panelId === swipeBackNextPanel || panelId === nextPanel && isBack;
535
- var scrollList = _this3.scrolls[panelId] || [];
526
+ var isTransitionTarget = animated && panelId === (isBack ? prevPanel : nextPanel);
527
+ var scrollList = _this4.scrolls[panelId] || [];
536
528
  var scroll = scrollList[scrollList.length - 1] || 0;
537
529
  return (0, _jsxRuntime.createScopedElement)("div", {
538
530
  vkuiClass: (0, _classNames.classNames)('View__panel', {
@@ -544,10 +536,11 @@ var ViewInfinite = /*#__PURE__*/function (_React$Component) {
544
536
  'View__panel--swipe-back-success': swipeBackResult === SwipeBackResults.success,
545
537
  'View__panel--swipe-back-failed': swipeBackResult === SwipeBackResults.fail
546
538
  }),
539
+ onAnimationEnd: isTransitionTarget ? _this4.transitionEndHandler : null,
547
540
  ref: function ref(el) {
548
- return _this3.panelNodes[panelId] = el;
541
+ return _this4.panelNodes[panelId] = el;
549
542
  },
550
- style: _this3.calcPanelSwipeStyles(panelId),
543
+ style: _this4.calcPanelSwipeStyles(panelId),
551
544
  key: panelId
552
545
  }, (0, _jsxRuntime.createScopedElement)("div", {
553
546
  vkuiClass: "View__panel-in",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/View/ViewInfinite.tsx"],"names":["warn","SwipeBackResults","scrollsCache","swipeBackExcludedTags","ViewInfinite","props","e","includes","animationName","activePanel","prevPanel","state","isBack","prevPanelScrolls","scrolls","slice","newPanelScrolls","scrollPosition","pop","setState","nextPanel","visiblePanels","animated","undefined","scroll","scrollTo","onTransition","from","to","propertyName","target","pickPanel","swipeBackNextPanel","swipeBackResult","fail","onSwipeBackCancel","success","onSwipeBackSuccess","originalEvent","tagName","toLowerCase","platform","configProvider","IOS","isWebView","startX","window","innerWidth","browserSwipe","onSwipeBack","swipingBack","history","length","prevScrolls","getScroll","y","swipebackStartX","swipeBackPrevPanel","swipeBackShift","shiftX","speed","duration","document","React","Children","toArray","children","id","prevProps","prevState","popout","blurActiveElement","modal","isBackCheck","firstLayerId","panels","map","panel","find","waitAnimationFinish","transitionEndHandler","onSwipeBackStart","waitTransitionFinish","swipingBackTransitionEndHandler","transitionMotionEnabled","splitCol","animate","elem","eventHandler","transitionEvent","supported","removeEventListener","name","addEventListener","clearTimeout","transitionFinishTimeout","setTimeout","ANDROID","VKCOM","shouldDisableTransitionMotion","animationEvent","animationFinishTimeout","activeElement","blur","panelNodes","panelId","canUseDOM","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","_1","nav","restProps","hasPopout","hasModal","filter","sort","isPrevPanel","isNextPanel","disableAnimation","modifiers","onMoveX","onEnd","compensateScroll","scrollList","el","calcPanelSwipeStyles","marginTop","Component","SplitColContext","ConfigProviderContext","ScrollContext"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { transitionEvent, animationEvent } from '../../lib/supportEvents';\nimport { getClassName } from '../../helpers/getClassName';\nimport { IOS, ANDROID, VKCOM } from '../../lib/platform';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport { HasPlatform } from '../../types';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { withContext } from '../../hoc/withContext';\nimport { ConfigProviderContext, ConfigProviderContextInterface } from '../ConfigProvider/ConfigProviderContext';\nimport { SplitColContext, SplitColContextProps } from '../SplitCol/SplitCol';\nimport { AppRootPortal } from '../AppRoot/AppRootPortal';\nimport { canUseDOM, withDOM, DOMProps } from '../../lib/dom';\nimport { ScrollContext, ScrollContextInterface } from '../AppRoot/ScrollContext';\nimport { NavTransitionProvider } from '../NavTransitionContext/NavTransitionContext';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport './View.css';\n\nconst warn = warnOnce('ViewInfinite');\n\nenum SwipeBackResults { fail = 1, success}\n\ninterface Scrolls {\n [index: string]: number[];\n}\n\ninterface ViewsScrolls {\n [index: string]: Scrolls;\n}\n\ntype AnimationEventHandler = (e?: AnimationEvent) => void;\n\ntype TransitionEventHandler = (e?: TransitionEvent) => void;\n\nlet scrollsCache: ViewsScrolls = {};\n\nconst swipeBackExcludedTags = ['input', 'textarea'];\n\nexport type TransitionParams = { from: string; to: string };\n\nexport interface ViewInfiniteProps extends React.HTMLAttributes<HTMLElement>, HasPlatform, NavIdProps {\n activePanel: string;\n popout?: React.ReactNode;\n modal?: React.ReactNode;\n onTransition?(params: TransitionParams & { isBack: boolean }): void;\n /**\n * callback свайпа назад\n */\n onSwipeBack?(): void;\n /**\n * callback начала анимации свайпа назад.\n */\n onSwipeBackStart?(): void;\n /**\n * callback завершения анимации отмененного пользователем свайпа\n */\n onSwipeBackCancel?(): void;\n history?: string[];\n isBackCheck?(params: TransitionParams): boolean;\n /**\n * @ignore\n */\n splitCol?: SplitColContextProps;\n /**\n * @ignore\n */\n configProvider?: ConfigProviderContextInterface;\n /**\n * @ignore\n */\n scroll?: ScrollContextInterface;\n}\n\nexport interface ViewInfiniteState {\n animated: boolean;\n\n visiblePanels: string[];\n activePanel: string;\n isBack: boolean;\n prevPanel: string;\n nextPanel: string;\n\n swipingBack: boolean;\n swipebackStartX: number;\n swipeBackShift: number;\n swipeBackNextPanel: string;\n swipeBackPrevPanel: string;\n swipeBackResult: SwipeBackResults;\n\n browserSwipe: boolean;\n}\n\nclass ViewInfinite extends React.Component<ViewInfiniteProps & DOMProps, ViewInfiniteState> {\n constructor(props: ViewInfiniteProps) {\n super(props);\n\n this.state = {\n animated: false,\n\n visiblePanels: [props.activePanel],\n activePanel: props.activePanel,\n isBack: undefined,\n prevPanel: null,\n nextPanel: null,\n\n swipingBack: false,\n swipebackStartX: 0,\n swipeBackShift: 0,\n swipeBackNextPanel: null,\n swipeBackPrevPanel: null,\n swipeBackResult: null,\n\n browserSwipe: false,\n };\n }\n\n static defaultProps: Partial<ViewInfiniteProps> = {\n history: [],\n };\n\n private scrolls = scrollsCache[getNavId(this.props, warn)] || {};\n private transitionFinishTimeout: ReturnType<typeof setTimeout>;\n private animationFinishTimeout: ReturnType<typeof setTimeout>;\n\n get document() {\n return this.props.document;\n }\n\n get window() {\n return this.props.window;\n }\n\n get panels() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n panelNodes: { [id: string]: HTMLDivElement } = {};\n\n componentWillUnmount() {\n const id = getNavId(this.props);\n if (id) {\n scrollsCache[id] = this.scrolls;\n }\n }\n\n componentDidUpdate(prevProps: ViewInfiniteProps, prevState: ViewInfiniteState) {\n this.props.popout && !prevProps.popout && this.blurActiveElement();\n this.props.modal && !prevProps.modal && this.blurActiveElement();\n\n // Нужен переход\n if (prevProps.activePanel !== this.props.activePanel && !prevState.swipingBack && !prevState.browserSwipe) {\n let isBack = false;\n\n if (this.props.isBackCheck) {\n isBack = this.props.isBackCheck({ from: prevProps.activePanel, to: this.props.activePanel });\n } else {\n const firstLayerId = this.panels\n .map((panel) => getNavId(panel.props, warn))\n .find((id) => id === prevProps.activePanel || id === this.props.activePanel);\n isBack = firstLayerId === this.props.activePanel;\n }\n\n this.blurActiveElement();\n\n const prevScrolls = this.scrolls[prevProps.activePanel] || [];\n const scrolls = {\n ...this.scrolls,\n [prevProps.activePanel]: [...prevScrolls, this.props.scroll.getScroll().y],\n };\n this.scrolls = scrolls;\n\n this.setState({\n visiblePanels: [prevProps.activePanel, this.props.activePanel],\n prevPanel: prevProps.activePanel,\n nextPanel: this.props.activePanel,\n activePanel: null,\n animated: true,\n isBack,\n });\n }\n\n // Закончилась анимация свайпа назад\n if (prevProps.activePanel !== this.props.activePanel && prevState.swipingBack) {\n const nextPanel = this.state.swipeBackNextPanel;\n const prevPanel = this.state.swipeBackPrevPanel;\n\n const prevPanelScrolls = [...this.scrolls[prevPanel] || []].slice(0, -1);\n const newPanelScrolls = [...this.scrolls[nextPanel] || []];\n const scrollPosition = newPanelScrolls.pop();\n this.scrolls = {\n ...this.scrolls,\n [nextPanel]: newPanelScrolls,\n [prevPanel]: prevPanelScrolls,\n };\n\n this.setState({\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipebackStartX: 0,\n swipeBackShift: 0,\n activePanel: nextPanel,\n visiblePanels: [nextPanel],\n }, () => {\n this.props.scroll.scrollTo(0, scrollPosition);\n prevProps.onTransition && prevProps.onTransition({ isBack: true, from: prevPanel, to: nextPanel });\n });\n }\n\n // Начался переход\n if (!prevState.animated && this.state.animated) {\n const { prevPanel, nextPanel, isBack } = this.state;\n this.waitAnimationFinish(this.pickPanel(isBack ? prevPanel : nextPanel), this.transitionEndHandler);\n }\n\n // Начался свайп назад\n if (!prevState.swipingBack && this.state.swipingBack) {\n this.props.onSwipeBackStart && this.props.onSwipeBackStart();\n }\n\n // Началась анимация завершения свайпа назад.\n if (!prevState.swipeBackResult && this.state.swipeBackResult) {\n this.waitTransitionFinish(this.pickPanel(this.state.swipeBackNextPanel), this.swipingBackTransitionEndHandler);\n }\n\n // Если свайп назад отменился (когда пользователь недостаточно сильно свайпнул)\n if (prevState.swipeBackResult === SwipeBackResults.fail && !this.state.swipeBackResult) {\n const newPanelScrolls = [...this.scrolls[this.state.activePanel] || []];\n const scrollPosition = newPanelScrolls.pop();\n this.scrolls = {\n ...this.scrolls,\n [this.state.activePanel]: newPanelScrolls,\n };\n\n this.props.scroll.scrollTo(0, scrollPosition);\n }\n\n // Закончился Safari свайп\n if (prevProps.activePanel !== this.props.activePanel && this.state.browserSwipe) {\n this.setState({\n browserSwipe: false,\n nextPanel: null,\n prevPanel: null,\n animated: false,\n visiblePanels: [this.props.activePanel],\n activePanel: this.props.activePanel,\n });\n }\n }\n\n shouldDisableTransitionMotion(): boolean {\n return this.props.configProvider.transitionMotionEnabled === false ||\n !this.props.splitCol.animate;\n }\n\n waitTransitionFinish(elem: HTMLElement, eventHandler: TransitionEventHandler): void {\n if (transitionEvent.supported) {\n elem.removeEventListener(transitionEvent.name, eventHandler);\n elem.addEventListener(transitionEvent.name, eventHandler);\n } else {\n clearTimeout(this.transitionFinishTimeout);\n this.transitionFinishTimeout = setTimeout(eventHandler, this.props.platform === ANDROID || this.props.platform === VKCOM ? 300 : 600);\n }\n }\n\n waitAnimationFinish(elem: HTMLElement, eventHandler: AnimationEventHandler): void {\n if (this.shouldDisableTransitionMotion()) {\n eventHandler();\n return;\n }\n\n if (animationEvent.supported) {\n elem.removeEventListener(animationEvent.name, eventHandler);\n elem.addEventListener(animationEvent.name, eventHandler);\n } else {\n clearTimeout(this.animationFinishTimeout);\n this.animationFinishTimeout = setTimeout(eventHandler, this.props.platform === ANDROID || this.props.platform === VKCOM ? 300 : 600);\n }\n }\n\n blurActiveElement(): void {\n if (typeof this.window !== 'undefined' && this.document.activeElement) {\n (this.document.activeElement as HTMLElement).blur();\n }\n }\n\n pickPanel(id: string) {\n return this.panelNodes[id];\n }\n\n transitionEndHandler = (e?: AnimationEvent): void => {\n if (!e || [\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 const activePanel = this.props.activePanel;\n const prevPanel = this.state.prevPanel;\n const isBack = this.state.isBack;\n\n const prevPanelScrolls = [...this.scrolls[prevPanel] || []].slice(0, -1);\n const newPanelScrolls = [...this.scrolls[activePanel] || []];\n const scrollPosition = isBack ? newPanelScrolls.pop() : 0;\n if (isBack) {\n this.scrolls = {\n ...this.scrolls,\n [prevPanel]: prevPanelScrolls,\n [activePanel]: newPanelScrolls,\n };\n }\n\n this.setState({\n prevPanel: null,\n nextPanel: null,\n visiblePanels: [activePanel],\n activePanel: activePanel,\n animated: false,\n isBack: undefined,\n }, () => {\n isBack && this.props.scroll.scrollTo(0, scrollPosition);\n this.props.onTransition && this.props.onTransition({ isBack, from: prevPanel, to: activePanel });\n });\n }\n };\n\n swipingBackTransitionEndHandler = (e?: TransitionEvent): void => {\n // indexOf because of vendor prefixes in old browsers\n if (!e || e.propertyName.includes('transform') && e.target === this.pickPanel(this.state.swipeBackNextPanel)) {\n switch (this.state.swipeBackResult) {\n case SwipeBackResults.fail:\n this.onSwipeBackCancel();\n break;\n case SwipeBackResults.success:\n this.onSwipeBackSuccess();\n }\n }\n };\n\n onSwipeBackSuccess(): void {\n this.props.onSwipeBack && this.props.onSwipeBack();\n }\n\n onSwipeBackCancel(): void {\n this.props.onSwipeBackCancel && this.props.onSwipeBackCancel();\n this.setState({\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipebackStartX: 0,\n swipeBackShift: 0,\n });\n }\n\n onMoveX = (e: TouchEvent): void => {\n const target = e.originalEvent.target as HTMLElement;\n if (\n target &&\n typeof target.tagName === 'string' &&\n swipeBackExcludedTags.includes(target.tagName.toLowerCase())\n ) {\n return;\n }\n\n const { platform, configProvider } = this.props;\n\n if (platform === IOS && !configProvider.isWebView && (e.startX <= 70 || e.startX >= this.window.innerWidth - 70) && !this.state.browserSwipe) {\n this.setState({ browserSwipe: true });\n }\n\n if (platform === IOS && configProvider.isWebView && this.props.onSwipeBack) {\n if (this.state.animated && e.startX <= 70) {\n return;\n }\n\n if (e.startX <= 70 && !this.state.swipingBack && this.props.history.length > 1) {\n const prevScrolls = this.scrolls[this.state.activePanel] || [];\n this.scrolls = {\n ...this.scrolls,\n [this.state.activePanel]: [...prevScrolls, this.props.scroll.getScroll().y],\n };\n\n this.setState({\n swipingBack: true,\n swipebackStartX: e.startX,\n swipeBackPrevPanel: this.state.activePanel,\n swipeBackNextPanel: this.props.history.slice(-2)[0],\n });\n }\n if (this.state.swipingBack) {\n let swipeBackShift;\n if (e.shiftX < 0) {\n swipeBackShift = 0;\n } else if (e.shiftX > this.window.innerWidth - this.state.swipebackStartX) {\n swipeBackShift = this.window.innerWidth;\n } else {\n swipeBackShift = e.shiftX;\n }\n this.setState({ swipeBackShift });\n }\n }\n };\n\n onEnd = (e: TouchEvent): void => {\n if (this.state.swipingBack) {\n const speed = this.state.swipeBackShift / e.duration * 1000;\n if (this.state.swipeBackShift === 0) {\n this.onSwipeBackCancel();\n } else if (this.state.swipeBackShift >= this.window.innerWidth) {\n this.onSwipeBackSuccess();\n } else if (speed > 250 || this.state.swipebackStartX + this.state.swipeBackShift > this.window.innerWidth / 2) {\n this.setState({ swipeBackResult: SwipeBackResults.success });\n } else {\n this.setState({ swipeBackResult: SwipeBackResults.fail });\n }\n }\n };\n\n calcPanelSwipeStyles(panelId: string): React.CSSProperties {\n if (!canUseDOM) {\n return {};\n }\n\n const isPrev = panelId === this.state.swipeBackPrevPanel;\n const isNext = panelId === this.state.swipeBackNextPanel;\n\n if (!isPrev && !isNext || this.state.swipeBackResult) {\n return {};\n }\n\n let prevPanelTranslate = `${this.state.swipeBackShift}px`;\n let nextPanelTranslate = `${-50 + this.state.swipeBackShift * 100 / this.window.innerWidth / 2}%`;\n let prevPanelShadow = 0.3 * (this.window.innerWidth - this.state.swipeBackShift) / this.window.innerWidth;\n\n if (this.state.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 render() {\n const {\n popout, modal, platform,\n activePanel: _1, splitCol, configProvider, history, id, nav,\n onTransition, onSwipeBack, onSwipeBackStart, onSwipeBackCancel,\n window, document, scroll, isBackCheck,\n ...restProps\n } = this.props;\n const {\n prevPanel, nextPanel, activePanel, isBack,\n swipeBackPrevPanel, swipeBackNextPanel, swipeBackResult, swipingBack,\n } = this.state;\n\n const hasPopout = !!popout;\n const hasModal = !!modal;\n\n const panels = this.panels\n .filter((panel) => {\n const panelId = getNavId(panel.props, warn);\n\n return this.state.visiblePanels.includes(panelId) ||\n panelId === swipeBackPrevPanel ||\n panelId === swipeBackNextPanel;\n })\n .sort((panel) => {\n const panelId = getNavId(panel.props, warn);\n const isPrevPanel = panelId === prevPanel || panelId === swipeBackPrevPanel;\n const isNextPanel = panelId === nextPanel || panelId === swipeBackNextPanel;\n\n if (isNextPanel) {\n return swipingBack || this.state.isBack ? -1 : 1;\n }\n\n if (isPrevPanel) {\n return swipingBack || this.state.isBack ? 1 : -1;\n }\n\n return 0;\n });\n\n const disableAnimation = this.shouldDisableTransitionMotion();\n\n const modifiers = {\n 'View--animated': !disableAnimation && this.state.animated,\n 'View--swiping-back': !disableAnimation && this.state.swipingBack,\n 'View--no-motion': disableAnimation,\n };\n\n return (\n <Touch\n Component=\"section\"\n {...restProps}\n vkuiClass={classNames(getClassName('View', platform), modifiers)}\n onMoveX={this.onMoveX}\n onEnd={this.onEnd}\n >\n <div vkuiClass=\"View__panels\">\n {panels.map((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n const isPrev = panelId === prevPanel || panelId === swipeBackPrevPanel;\n const compensateScroll = isPrev || panelId === swipeBackNextPanel || panelId === nextPanel && isBack;\n const scrollList = this.scrolls[panelId] || [];\n const scroll = scrollList[scrollList.length - 1] || 0;\n\n return (\n <div\n vkuiClass={classNames('View__panel', {\n 'View__panel--active': panelId === activePanel,\n 'View__panel--prev': panelId === prevPanel,\n 'View__panel--next': panelId === nextPanel,\n 'View__panel--swipe-back-prev': panelId === swipeBackPrevPanel,\n 'View__panel--swipe-back-next': panelId === swipeBackNextPanel,\n 'View__panel--swipe-back-success': swipeBackResult === SwipeBackResults.success,\n 'View__panel--swipe-back-failed': swipeBackResult === SwipeBackResults.fail,\n })}\n ref={(el) => this.panelNodes[panelId] = el}\n style={this.calcPanelSwipeStyles(panelId)}\n key={panelId}\n >\n <div vkuiClass=\"View__panel-in\" style={{ marginTop: compensateScroll ? -scroll : null }}>\n <NavTransitionProvider entering={panelId === nextPanel || panelId === swipeBackNextPanel}>\n {panel}\n </NavTransitionProvider>\n </div>\n </div>\n );\n })}\n </div>\n <AppRootPortal>\n {hasPopout && <div vkuiClass=\"View__popout\">{popout}</div>}\n {hasModal && <div vkuiClass=\"View__modal\">{modal}</div>}\n </AppRootPortal>\n </Touch>\n );\n }\n}\n\nexport default withContext(withContext(\n withContext(\n withPlatform(withDOM<ViewInfiniteProps>(ViewInfinite)),\n SplitColContext, 'splitCol'),\n ConfigProviderContext, 'configProvider'),\nScrollContext, 'scroll');\n"],"file":"ViewInfinite.js"}
1
+ {"version":3,"sources":["../../../../src/components/View/ViewInfinite.tsx"],"names":["warn","SwipeBackResults","scrollsCache","ViewInfinite","props","e","includes","animationName","flushTransition","state","prevPanel","isBack","propertyName","target","pickPanel","swipeBackNextPanel","swipeBackResult","fail","onSwipeBackCancel","success","onSwipeBackSuccess","platform","configProvider","IOS","isWebView","startX","window","innerWidth","browserSwipe","setState","onSwipeBack","animated","swipingBack","history","length","prevScrolls","scrolls","activePanel","scroll","getScroll","y","swipebackStartX","swipeBackPrevPanel","slice","swipeBackShift","shiftX","speed","duration","visiblePanels","undefined","nextPanel","document","React","Children","toArray","children","id","prevProps","prevState","popout","blurActiveElement","modal","isBackCheck","from","to","firstLayerId","panels","map","panel","find","shouldDisableTransitionMotion","animationEvent","supported","clearTimeout","animationFinishTimeout","setTimeout","transitionEndHandler","ANDROID","VKCOM","prevPanelScrolls","newPanelScrolls","scrollPosition","pop","scrollTo","onTransition","onSwipeBackStart","waitTransitionFinish","swipingBackTransitionEndHandler","transitionMotionEnabled","splitCol","animate","elem","eventHandler","transitionEvent","removeEventListener","name","addEventListener","transitionFinishTimeout","activeElement","blur","panelNodes","panelId","canUseDOM","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","_1","nav","restProps","hasPopout","hasModal","filter","sort","isPrevPanel","isNextPanel","disableAnimation","modifiers","onMoveX","onEnd","compensateScroll","isTransitionTarget","scrollList","el","calcPanelSwipeStyles","marginTop","Component","SplitColContext","ConfigProviderContext","ScrollContext"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { transitionEvent, animationEvent } from '../../lib/supportEvents';\nimport { getClassName } from '../../helpers/getClassName';\nimport { IOS, ANDROID, VKCOM } from '../../lib/platform';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport { HasPlatform } from '../../types';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { withContext } from '../../hoc/withContext';\nimport { ConfigProviderContext, ConfigProviderContextInterface } from '../ConfigProvider/ConfigProviderContext';\nimport { SplitColContext, SplitColContextProps } from '../SplitCol/SplitCol';\nimport { AppRootPortal } from '../AppRoot/AppRootPortal';\nimport { canUseDOM, withDOM, DOMProps } from '../../lib/dom';\nimport { ScrollContext, ScrollContextInterface } from '../AppRoot/ScrollContext';\nimport { NavTransitionProvider } from '../NavTransitionContext/NavTransitionContext';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { swipeBackExcluded } from './utils';\nimport './View.css';\n\nconst warn = warnOnce('ViewInfinite');\n\nenum SwipeBackResults { fail = 1, success}\n\ninterface Scrolls {\n [index: string]: number[];\n}\n\ninterface ViewsScrolls {\n [index: string]: Scrolls;\n}\n\ntype TransitionEventHandler = (e?: TransitionEvent) => void;\n\nlet scrollsCache: ViewsScrolls = {};\n\nexport type TransitionParams = { from: string; to: string };\n\nexport interface ViewInfiniteProps extends React.HTMLAttributes<HTMLElement>, HasPlatform, NavIdProps {\n activePanel: string;\n popout?: React.ReactNode;\n modal?: React.ReactNode;\n onTransition?(params: TransitionParams & { isBack: boolean }): void;\n /**\n * callback свайпа назад\n */\n onSwipeBack?(): void;\n /**\n * callback начала анимации свайпа назад.\n */\n onSwipeBackStart?(): void;\n /**\n * callback завершения анимации отмененного пользователем свайпа\n */\n onSwipeBackCancel?(): void;\n history?: string[];\n isBackCheck?(params: TransitionParams): boolean;\n /**\n * @ignore\n */\n splitCol?: SplitColContextProps;\n /**\n * @ignore\n */\n configProvider?: ConfigProviderContextInterface;\n /**\n * @ignore\n */\n scroll?: ScrollContextInterface;\n}\n\nexport interface ViewInfiniteState {\n animated: boolean;\n\n visiblePanels: string[];\n activePanel: string;\n isBack: boolean;\n prevPanel: string;\n nextPanel: string;\n\n swipingBack: boolean;\n swipebackStartX: number;\n swipeBackShift: number;\n swipeBackNextPanel: string;\n swipeBackPrevPanel: string;\n swipeBackResult: SwipeBackResults;\n\n browserSwipe: boolean;\n}\n\nclass ViewInfinite extends React.Component<ViewInfiniteProps & DOMProps, ViewInfiniteState> {\n constructor(props: ViewInfiniteProps) {\n super(props);\n\n this.state = {\n animated: false,\n\n visiblePanels: [props.activePanel],\n activePanel: props.activePanel,\n isBack: undefined,\n prevPanel: null,\n nextPanel: null,\n\n swipingBack: false,\n swipebackStartX: 0,\n swipeBackShift: 0,\n swipeBackNextPanel: null,\n swipeBackPrevPanel: null,\n swipeBackResult: null,\n\n browserSwipe: false,\n };\n }\n\n static defaultProps: Partial<ViewInfiniteProps> = {\n history: [],\n };\n\n private scrolls = scrollsCache[getNavId(this.props, warn)] || {};\n private transitionFinishTimeout: ReturnType<typeof setTimeout>;\n private animationFinishTimeout: ReturnType<typeof setTimeout>;\n\n get document() {\n return this.props.document;\n }\n\n get window() {\n return this.props.window;\n }\n\n get panels() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n panelNodes: { [id: string]: HTMLDivElement } = {};\n\n componentWillUnmount() {\n const id = getNavId(this.props);\n if (id) {\n scrollsCache[id] = this.scrolls;\n }\n }\n\n componentDidUpdate(prevProps: ViewInfiniteProps, prevState: ViewInfiniteState) {\n this.props.popout && !prevProps.popout && this.blurActiveElement();\n this.props.modal && !prevProps.modal && this.blurActiveElement();\n\n // Нужен переход\n if (prevProps.activePanel !== this.props.activePanel && !prevState.swipingBack && !prevState.browserSwipe) {\n let isBack = false;\n\n if (this.props.isBackCheck) {\n isBack = this.props.isBackCheck({ from: prevProps.activePanel, to: this.props.activePanel });\n } else {\n const firstLayerId = this.panels\n .map((panel) => getNavId(panel.props, warn))\n .find((id) => id === prevProps.activePanel || id === this.props.activePanel);\n isBack = firstLayerId === this.props.activePanel;\n }\n\n this.blurActiveElement();\n\n const prevScrolls = this.scrolls[prevProps.activePanel] || [];\n const scrolls = {\n ...this.scrolls,\n [prevProps.activePanel]: [...prevScrolls, this.props.scroll.getScroll().y],\n };\n this.scrolls = scrolls;\n\n if (this.shouldDisableTransitionMotion()) {\n this.flushTransition(prevProps.activePanel, isBack);\n } else {\n this.setState({\n visiblePanels: [prevProps.activePanel, this.props.activePanel],\n prevPanel: prevProps.activePanel,\n nextPanel: this.props.activePanel,\n activePanel: null,\n animated: true,\n isBack,\n });\n\n // Фолбек анимации перехода\n if (!animationEvent.supported) {\n clearTimeout(this.animationFinishTimeout);\n this.animationFinishTimeout = setTimeout(this.transitionEndHandler, this.props.platform === ANDROID || this.props.platform === VKCOM ? 300 : 600);\n }\n }\n }\n\n // Закончилась анимация свайпа назад\n if (prevProps.activePanel !== this.props.activePanel && prevState.swipingBack) {\n const nextPanel = this.state.swipeBackNextPanel;\n const prevPanel = this.state.swipeBackPrevPanel;\n\n const prevPanelScrolls = [...this.scrolls[prevPanel] || []].slice(0, -1);\n const newPanelScrolls = [...this.scrolls[nextPanel] || []];\n const scrollPosition = newPanelScrolls.pop();\n this.scrolls = {\n ...this.scrolls,\n [nextPanel]: newPanelScrolls,\n [prevPanel]: prevPanelScrolls,\n };\n\n this.setState({\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipebackStartX: 0,\n swipeBackShift: 0,\n activePanel: nextPanel,\n visiblePanels: [nextPanel],\n }, () => {\n this.props.scroll.scrollTo(0, scrollPosition);\n prevProps.onTransition && prevProps.onTransition({ isBack: true, from: prevPanel, to: nextPanel });\n });\n }\n\n // Начался свайп назад\n if (!prevState.swipingBack && this.state.swipingBack) {\n this.props.onSwipeBackStart && this.props.onSwipeBackStart();\n }\n\n // Началась анимация завершения свайпа назад.\n if (!prevState.swipeBackResult && this.state.swipeBackResult) {\n this.waitTransitionFinish(this.pickPanel(this.state.swipeBackNextPanel), this.swipingBackTransitionEndHandler);\n }\n\n // Если свайп назад отменился (когда пользователь недостаточно сильно свайпнул)\n if (prevState.swipeBackResult === SwipeBackResults.fail && !this.state.swipeBackResult) {\n const newPanelScrolls = [...this.scrolls[this.state.activePanel] || []];\n const scrollPosition = newPanelScrolls.pop();\n this.scrolls = {\n ...this.scrolls,\n [this.state.activePanel]: newPanelScrolls,\n };\n\n this.props.scroll.scrollTo(0, scrollPosition);\n }\n\n // Закончился Safari свайп\n if (prevProps.activePanel !== this.props.activePanel && this.state.browserSwipe) {\n this.setState({\n browserSwipe: false,\n nextPanel: null,\n prevPanel: null,\n animated: false,\n visiblePanels: [this.props.activePanel],\n activePanel: this.props.activePanel,\n });\n }\n }\n\n shouldDisableTransitionMotion(): boolean {\n return this.props.configProvider.transitionMotionEnabled === false ||\n !this.props.splitCol.animate;\n }\n\n waitTransitionFinish(elem: HTMLElement, eventHandler: TransitionEventHandler): void {\n if (transitionEvent.supported) {\n elem.removeEventListener(transitionEvent.name, eventHandler);\n elem.addEventListener(transitionEvent.name, eventHandler);\n } else {\n clearTimeout(this.transitionFinishTimeout);\n this.transitionFinishTimeout = setTimeout(eventHandler, this.props.platform === ANDROID || this.props.platform === VKCOM ? 300 : 600);\n }\n }\n\n blurActiveElement(): void {\n if (typeof this.window !== 'undefined' && this.document.activeElement) {\n (this.document.activeElement as HTMLElement).blur();\n }\n }\n\n pickPanel(id: string) {\n return this.panelNodes[id];\n }\n\n flushTransition(prevPanel: string, isBack: boolean) {\n const activePanel = this.props.activePanel;\n\n const prevPanelScrolls = [...this.scrolls[prevPanel] || []].slice(0, -1);\n const newPanelScrolls = [...this.scrolls[activePanel] || []];\n const scrollPosition = isBack ? newPanelScrolls.pop() : 0;\n if (isBack) {\n this.scrolls = {\n ...this.scrolls,\n [prevPanel]: prevPanelScrolls,\n [activePanel]: newPanelScrolls,\n };\n }\n\n this.setState({\n prevPanel: null,\n nextPanel: null,\n visiblePanels: [activePanel],\n activePanel: activePanel,\n animated: false,\n isBack: undefined,\n }, () => {\n this.props.scroll.scrollTo(0, isBack ? scrollPosition : 0);\n this.props.onTransition && this.props.onTransition({ isBack, from: prevPanel, to: activePanel });\n });\n }\n\n transitionEndHandler = (e?: React.AnimationEvent): void => {\n if (!e || [\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 this.flushTransition(this.state.prevPanel, this.state.isBack);\n }\n };\n\n swipingBackTransitionEndHandler = (e?: TransitionEvent): void => {\n // indexOf because of vendor prefixes in old browsers\n if (!e || e.propertyName.includes('transform') && e.target === this.pickPanel(this.state.swipeBackNextPanel)) {\n switch (this.state.swipeBackResult) {\n case SwipeBackResults.fail:\n this.onSwipeBackCancel();\n break;\n case SwipeBackResults.success:\n this.onSwipeBackSuccess();\n }\n }\n };\n\n onSwipeBackSuccess(): void {\n this.props.onSwipeBack && this.props.onSwipeBack();\n }\n\n onSwipeBackCancel(): void {\n this.props.onSwipeBackCancel && this.props.onSwipeBackCancel();\n this.setState({\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipebackStartX: 0,\n swipeBackShift: 0,\n });\n }\n\n onMoveX = (e: TouchEvent): void => {\n if (swipeBackExcluded(e)) {\n return;\n }\n\n const { platform, configProvider } = this.props;\n\n if (platform === IOS && !configProvider.isWebView && (e.startX <= 70 || e.startX >= this.window.innerWidth - 70) && !this.state.browserSwipe) {\n this.setState({ browserSwipe: true });\n }\n\n if (platform === IOS && configProvider.isWebView && this.props.onSwipeBack) {\n if (this.state.animated && e.startX <= 70) {\n return;\n }\n\n if (e.startX <= 70 && !this.state.swipingBack && this.props.history.length > 1) {\n const prevScrolls = this.scrolls[this.state.activePanel] || [];\n this.scrolls = {\n ...this.scrolls,\n [this.state.activePanel]: [...prevScrolls, this.props.scroll.getScroll().y],\n };\n\n this.setState({\n swipingBack: true,\n swipebackStartX: e.startX,\n swipeBackPrevPanel: this.state.activePanel,\n swipeBackNextPanel: this.props.history.slice(-2)[0],\n });\n }\n if (this.state.swipingBack) {\n let swipeBackShift;\n if (e.shiftX < 0) {\n swipeBackShift = 0;\n } else if (e.shiftX > this.window.innerWidth - this.state.swipebackStartX) {\n swipeBackShift = this.window.innerWidth;\n } else {\n swipeBackShift = e.shiftX;\n }\n this.setState({ swipeBackShift });\n }\n }\n };\n\n onEnd = (e: TouchEvent): void => {\n if (this.state.swipingBack) {\n const speed = this.state.swipeBackShift / e.duration * 1000;\n if (this.state.swipeBackShift === 0) {\n this.onSwipeBackCancel();\n } else if (this.state.swipeBackShift >= this.window.innerWidth) {\n this.onSwipeBackSuccess();\n } else if (speed > 250 || this.state.swipebackStartX + this.state.swipeBackShift > this.window.innerWidth / 2) {\n this.setState({ swipeBackResult: SwipeBackResults.success });\n } else {\n this.setState({ swipeBackResult: SwipeBackResults.fail });\n }\n }\n };\n\n calcPanelSwipeStyles(panelId: string): React.CSSProperties {\n if (!canUseDOM) {\n return {};\n }\n\n const isPrev = panelId === this.state.swipeBackPrevPanel;\n const isNext = panelId === this.state.swipeBackNextPanel;\n\n if (!isPrev && !isNext || this.state.swipeBackResult) {\n return {};\n }\n\n let prevPanelTranslate = `${this.state.swipeBackShift}px`;\n let nextPanelTranslate = `${-50 + this.state.swipeBackShift * 100 / this.window.innerWidth / 2}%`;\n let prevPanelShadow = 0.3 * (this.window.innerWidth - this.state.swipeBackShift) / this.window.innerWidth;\n\n if (this.state.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 render() {\n const {\n popout, modal, platform,\n activePanel: _1, splitCol, configProvider, history, id, nav,\n onTransition, onSwipeBack, onSwipeBackStart, onSwipeBackCancel,\n window, document, scroll, isBackCheck,\n ...restProps\n } = this.props;\n const {\n prevPanel, nextPanel, activePanel, isBack, animated,\n swipeBackPrevPanel, swipeBackNextPanel, swipeBackResult, swipingBack,\n } = this.state;\n\n const hasPopout = !!popout;\n const hasModal = !!modal;\n\n const panels = this.panels\n .filter((panel) => {\n const panelId = getNavId(panel.props, warn);\n\n return this.state.visiblePanels.includes(panelId) ||\n panelId === swipeBackPrevPanel ||\n panelId === swipeBackNextPanel;\n })\n .sort((panel) => {\n const panelId = getNavId(panel.props, warn);\n const isPrevPanel = panelId === prevPanel || panelId === swipeBackPrevPanel;\n const isNextPanel = panelId === nextPanel || panelId === swipeBackNextPanel;\n\n if (isNextPanel) {\n return swipingBack || this.state.isBack ? -1 : 1;\n }\n\n if (isPrevPanel) {\n return swipingBack || this.state.isBack ? 1 : -1;\n }\n\n return 0;\n });\n\n const disableAnimation = this.shouldDisableTransitionMotion();\n\n const modifiers = {\n 'View--animated': !disableAnimation && this.state.animated,\n 'View--swiping-back': !disableAnimation && this.state.swipingBack,\n 'View--no-motion': disableAnimation,\n };\n\n return (\n <Touch\n Component=\"section\"\n {...restProps}\n vkuiClass={classNames(getClassName('View', platform), modifiers)}\n onMoveX={this.onMoveX}\n onEnd={this.onEnd}\n >\n <div vkuiClass=\"View__panels\">\n {panels.map((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n const isPrev = panelId === prevPanel || panelId === swipeBackPrevPanel;\n const compensateScroll = isPrev || panelId === swipeBackNextPanel || panelId === nextPanel && isBack;\n const isTransitionTarget = animated && panelId === (isBack ? prevPanel : nextPanel);\n const scrollList = this.scrolls[panelId] || [];\n const scroll = scrollList[scrollList.length - 1] || 0;\n\n return (\n <div\n vkuiClass={classNames('View__panel', {\n 'View__panel--active': panelId === activePanel,\n 'View__panel--prev': panelId === prevPanel,\n 'View__panel--next': panelId === nextPanel,\n 'View__panel--swipe-back-prev': panelId === swipeBackPrevPanel,\n 'View__panel--swipe-back-next': panelId === swipeBackNextPanel,\n 'View__panel--swipe-back-success': swipeBackResult === SwipeBackResults.success,\n 'View__panel--swipe-back-failed': swipeBackResult === SwipeBackResults.fail,\n })}\n onAnimationEnd={isTransitionTarget ? this.transitionEndHandler : null}\n ref={(el) => this.panelNodes[panelId] = el}\n style={this.calcPanelSwipeStyles(panelId)}\n key={panelId}\n >\n <div vkuiClass=\"View__panel-in\" style={{ marginTop: compensateScroll ? -scroll : null }}>\n <NavTransitionProvider entering={panelId === nextPanel || panelId === swipeBackNextPanel}>\n {panel}\n </NavTransitionProvider>\n </div>\n </div>\n );\n })}\n </div>\n <AppRootPortal>\n {hasPopout && <div vkuiClass=\"View__popout\">{popout}</div>}\n {hasModal && <div vkuiClass=\"View__modal\">{modal}</div>}\n </AppRootPortal>\n </Touch>\n );\n }\n}\n\nexport default withContext(withContext(\n withContext(\n withPlatform(withDOM<ViewInfiniteProps>(ViewInfinite)),\n SplitColContext, 'splitCol'),\n ConfigProviderContext, 'configProvider'),\nScrollContext, 'scroll');\n"],"file":"ViewInfinite.js"}