@vkontakte/vkui 4.15.0 → 4.16.2

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 (349) hide show
  1. package/.cache/.eslintcache +1 -1
  2. package/.cache/.stylelintcache +1 -1
  3. package/.cache/.tsbuildinfo +391 -282
  4. package/.cache/ts/src/components/AppRoot/AppRoot.d.ts +1 -0
  5. package/.cache/ts/src/components/ChipsSelect/ChipsSelect.d.ts +1 -1
  6. package/.cache/ts/src/components/CustomSelect/CustomSelect.d.ts +2 -2
  7. package/.cache/ts/src/components/FixedLayout/FixedLayout.d.ts +4 -9
  8. package/.cache/ts/src/components/ModalPage/ModalPage.d.ts +1 -2
  9. package/.cache/ts/src/components/Root/Root.d.ts +5 -27
  10. package/.cache/ts/src/components/SimpleCheckbox/SimpleCheckbox.d.ts +9 -0
  11. package/.cache/ts/src/components/Tappable/Tappable.d.ts +12 -9
  12. package/.cache/ts/src/components/Touch/Touch.d.ts +1 -2
  13. package/.cache/ts/src/components/UsersStack/masks.d.ts +1 -1
  14. package/.cache/ts/src/hooks/useEventListener.d.ts +2 -2
  15. package/.cache/ts/src/hooks/useKeyboard.d.ts +11 -0
  16. package/.cache/ts/src/index.d.ts +1 -1
  17. package/.cache/ts/src/lib/select.d.ts +7 -0
  18. package/.cache/ts/src/lib/touch.d.ts +1 -1
  19. package/.cache/ts/src/lib/utils.d.ts +2 -3
  20. package/.cache/ts/src/types.d.ts +2 -6
  21. package/.cache/ts/src/unstable/index.d.ts +2 -0
  22. package/babel.cjs.config.js +7 -1
  23. package/babel.config.js +7 -1
  24. package/dist/cjs/components/AppRoot/AppRoot.d.ts +1 -0
  25. package/dist/cjs/components/AppRoot/AppRoot.js +29 -1
  26. package/dist/cjs/components/AppRoot/AppRoot.js.map +1 -1
  27. package/dist/cjs/components/Banner/Banner.js +1 -1
  28. package/dist/cjs/components/Banner/Banner.js.map +1 -1
  29. package/dist/cjs/components/Cell/Cell.js +3 -3
  30. package/dist/cjs/components/Cell/Cell.js.map +1 -1
  31. package/dist/cjs/components/ChipsSelect/ChipsSelect.d.ts +1 -1
  32. package/dist/cjs/components/ChipsSelect/ChipsSelect.js +5 -6
  33. package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
  34. package/dist/cjs/components/ChipsSelect/useChipsSelect.js +2 -2
  35. package/dist/cjs/components/ChipsSelect/useChipsSelect.js.map +1 -1
  36. package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +2 -2
  37. package/dist/cjs/components/CustomSelect/CustomSelect.js +3 -3
  38. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  39. package/dist/cjs/components/FixedLayout/FixedLayout.d.ts +4 -9
  40. package/dist/cjs/components/FixedLayout/FixedLayout.js +91 -179
  41. package/dist/cjs/components/FixedLayout/FixedLayout.js.map +1 -1
  42. package/dist/cjs/components/Gallery/Gallery.js +2 -2
  43. package/dist/cjs/components/Gallery/Gallery.js.map +1 -1
  44. package/dist/cjs/components/Header/Header.js +1 -1
  45. package/dist/cjs/components/Header/Header.js.map +1 -1
  46. package/dist/cjs/components/ModalCardBase/ModalCardBase.js +6 -1
  47. package/dist/cjs/components/ModalCardBase/ModalCardBase.js.map +1 -1
  48. package/dist/cjs/components/ModalPage/ModalPage.d.ts +1 -2
  49. package/dist/cjs/components/ModalPage/ModalPage.js.map +1 -1
  50. package/dist/cjs/components/ModalRoot/ModalRoot.js +2 -2
  51. package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
  52. package/dist/cjs/components/Panel/Panel.js +2 -2
  53. package/dist/cjs/components/Panel/Panel.js.map +1 -1
  54. package/dist/cjs/components/PanelHeaderContent/PanelHeaderContent.js +0 -1
  55. package/dist/cjs/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
  56. package/dist/cjs/components/PullToRefresh/PullToRefresh.js +2 -2
  57. package/dist/cjs/components/PullToRefresh/PullToRefresh.js.map +1 -1
  58. package/dist/cjs/components/RangeSlider/UniversalSlider.js +2 -2
  59. package/dist/cjs/components/RangeSlider/UniversalSlider.js.map +1 -1
  60. package/dist/cjs/components/Root/Root.d.ts +5 -27
  61. package/dist/cjs/components/Root/Root.js +158 -214
  62. package/dist/cjs/components/Root/Root.js.map +1 -1
  63. package/dist/cjs/components/Search/Search.js +3 -3
  64. package/dist/cjs/components/Search/Search.js.map +1 -1
  65. package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
  66. package/dist/cjs/components/SimpleCheckbox/SimpleCheckbox.d.ts +9 -0
  67. package/dist/cjs/components/SimpleCheckbox/SimpleCheckbox.js +126 -0
  68. package/dist/cjs/components/SimpleCheckbox/SimpleCheckbox.js.map +1 -0
  69. package/dist/cjs/components/Snackbar/Snackbar.js +2 -2
  70. package/dist/cjs/components/Snackbar/Snackbar.js.map +1 -1
  71. package/dist/cjs/components/Tappable/Tappable.d.ts +12 -9
  72. package/dist/cjs/components/Tappable/Tappable.js +47 -36
  73. package/dist/cjs/components/Tappable/Tappable.js.map +1 -1
  74. package/dist/cjs/components/Touch/Touch.d.ts +1 -2
  75. package/dist/cjs/components/Touch/Touch.js +172 -283
  76. package/dist/cjs/components/Touch/Touch.js.map +1 -1
  77. package/dist/cjs/components/UsersStack/UsersStack.js +9 -18
  78. package/dist/cjs/components/UsersStack/UsersStack.js.map +1 -1
  79. package/dist/cjs/components/UsersStack/masks.d.ts +1 -1
  80. package/dist/cjs/components/UsersStack/masks.js +5 -8
  81. package/dist/cjs/components/UsersStack/masks.js.map +1 -1
  82. package/dist/cjs/components/View/View.js +2 -2
  83. package/dist/cjs/components/View/View.js.map +1 -1
  84. package/dist/cjs/components/View/ViewInfinite.js +2 -2
  85. package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
  86. package/dist/cjs/hooks/useEventListener.d.ts +2 -2
  87. package/dist/cjs/hooks/useEventListener.js +9 -4
  88. package/dist/cjs/hooks/useEventListener.js.map +1 -1
  89. package/dist/cjs/hooks/useGlobalEventListener.js +2 -4
  90. package/dist/cjs/hooks/useGlobalEventListener.js.map +1 -1
  91. package/dist/cjs/hooks/useInsets.js +3 -10
  92. package/dist/cjs/hooks/useInsets.js.map +1 -1
  93. package/dist/cjs/hooks/useKeyboard.d.ts +11 -0
  94. package/dist/cjs/hooks/useKeyboard.js +78 -0
  95. package/dist/cjs/hooks/useKeyboard.js.map +1 -0
  96. package/dist/cjs/hooks/useKeyboardInputTracker.js +4 -2
  97. package/dist/cjs/hooks/useKeyboardInputTracker.js.map +1 -1
  98. package/dist/cjs/index.d.ts +1 -1
  99. package/dist/cjs/index.js +2 -2
  100. package/dist/cjs/index.js.map +1 -1
  101. package/dist/cjs/lib/select.d.ts +7 -0
  102. package/dist/cjs/lib/select.js +73 -0
  103. package/dist/cjs/lib/select.js.map +1 -0
  104. package/dist/cjs/lib/touch.d.ts +1 -1
  105. package/dist/cjs/lib/touch.js +6 -2
  106. package/dist/cjs/lib/touch.js.map +1 -1
  107. package/dist/cjs/lib/utils.d.ts +2 -3
  108. package/dist/cjs/lib/utils.js.map +1 -1
  109. package/dist/cjs/types.d.ts +2 -6
  110. package/dist/cjs/unstable/index.d.ts +2 -0
  111. package/dist/cjs/unstable/index.js +8 -0
  112. package/dist/cjs/unstable/index.js.map +1 -1
  113. package/dist/components/AppRoot/AppRoot.d.ts +1 -0
  114. package/dist/components/AppRoot/AppRoot.js +29 -5
  115. package/dist/components/AppRoot/AppRoot.js.map +1 -1
  116. package/dist/components/Banner/Banner.js +1 -1
  117. package/dist/components/Banner/Banner.js.map +1 -1
  118. package/dist/components/Cell/Cell.js +1 -1
  119. package/dist/components/Cell/Cell.js.map +1 -1
  120. package/dist/components/ChipsSelect/ChipsSelect.d.ts +1 -1
  121. package/dist/components/ChipsSelect/ChipsSelect.js +4 -6
  122. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  123. package/dist/components/ChipsSelect/useChipsSelect.js +2 -2
  124. package/dist/components/ChipsSelect/useChipsSelect.js.map +1 -1
  125. package/dist/components/CustomSelect/CustomSelect.d.ts +2 -2
  126. package/dist/components/CustomSelect/CustomSelect.js +2 -3
  127. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  128. package/dist/components/FixedLayout/FixedLayout.d.ts +4 -9
  129. package/dist/components/FixedLayout/FixedLayout.js +84 -175
  130. package/dist/components/FixedLayout/FixedLayout.js.map +1 -1
  131. package/dist/components/Gallery/Gallery.js +1 -1
  132. package/dist/components/Gallery/Gallery.js.map +1 -1
  133. package/dist/components/Header/Header.js +1 -1
  134. package/dist/components/Header/Header.js.map +1 -1
  135. package/dist/components/ModalCardBase/ModalCardBase.js +5 -1
  136. package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
  137. package/dist/components/ModalPage/ModalPage.d.ts +1 -2
  138. package/dist/components/ModalPage/ModalPage.js.map +1 -1
  139. package/dist/components/ModalRoot/ModalRoot.js +1 -1
  140. package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
  141. package/dist/components/Panel/Panel.js +1 -1
  142. package/dist/components/Panel/Panel.js.map +1 -1
  143. package/dist/components/PanelHeaderContent/PanelHeaderContent.js +0 -1
  144. package/dist/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
  145. package/dist/components/PullToRefresh/PullToRefresh.js +1 -1
  146. package/dist/components/PullToRefresh/PullToRefresh.js.map +1 -1
  147. package/dist/components/RangeSlider/UniversalSlider.js +1 -1
  148. package/dist/components/RangeSlider/UniversalSlider.js.map +1 -1
  149. package/dist/components/Root/Root.d.ts +5 -27
  150. package/dist/components/Root/Root.js +152 -207
  151. package/dist/components/Root/Root.js.map +1 -1
  152. package/dist/components/Search/Search.js +1 -1
  153. package/dist/components/Search/Search.js.map +1 -1
  154. package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
  155. package/dist/components/SimpleCheckbox/SimpleCheckbox.d.ts +9 -0
  156. package/dist/components/SimpleCheckbox/SimpleCheckbox.js +97 -0
  157. package/dist/components/SimpleCheckbox/SimpleCheckbox.js.map +1 -0
  158. package/dist/components/Snackbar/Snackbar.js +1 -1
  159. package/dist/components/Snackbar/Snackbar.js.map +1 -1
  160. package/dist/components/Tappable/Tappable.d.ts +12 -9
  161. package/dist/components/Tappable/Tappable.js +45 -37
  162. package/dist/components/Tappable/Tappable.js.map +1 -1
  163. package/dist/components/Touch/Touch.d.ts +1 -2
  164. package/dist/components/Touch/Touch.js +163 -286
  165. package/dist/components/Touch/Touch.js.map +1 -1
  166. package/dist/components/UsersStack/UsersStack.js +7 -16
  167. package/dist/components/UsersStack/UsersStack.js.map +1 -1
  168. package/dist/components/UsersStack/masks.d.ts +1 -1
  169. package/dist/components/UsersStack/masks.js +6 -9
  170. package/dist/components/UsersStack/masks.js.map +1 -1
  171. package/dist/components/View/View.js +1 -1
  172. package/dist/components/View/View.js.map +1 -1
  173. package/dist/components/View/ViewInfinite.js +1 -1
  174. package/dist/components/View/ViewInfinite.js.map +1 -1
  175. package/dist/components.css +1 -1
  176. package/dist/components.css.map +1 -1
  177. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.css +1 -1
  178. package/dist/cssm/components/AppRoot/AppRoot.css +1 -0
  179. package/dist/cssm/components/AppRoot/AppRoot.js +30 -2
  180. package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
  181. package/dist/cssm/components/Banner/Banner.css +1 -1
  182. package/dist/cssm/components/Banner/Banner.js +1 -1
  183. package/dist/cssm/components/Banner/Banner.js.map +1 -1
  184. package/dist/cssm/components/Cell/Cell.js +1 -1
  185. package/dist/cssm/components/Cell/Cell.js.map +1 -1
  186. package/dist/cssm/components/ChipsSelect/ChipsSelect.js +4 -6
  187. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  188. package/dist/cssm/components/ChipsSelect/useChipsSelect.js +2 -2
  189. package/dist/cssm/components/ChipsSelect/useChipsSelect.js.map +1 -1
  190. package/dist/cssm/components/CustomSelect/CustomSelect.js +2 -3
  191. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  192. package/dist/cssm/components/FixedLayout/FixedLayout.js +84 -175
  193. package/dist/cssm/components/FixedLayout/FixedLayout.js.map +1 -1
  194. package/dist/cssm/components/Gallery/Gallery.js +1 -1
  195. package/dist/cssm/components/Gallery/Gallery.js.map +1 -1
  196. package/dist/cssm/components/Header/Header.js +1 -1
  197. package/dist/cssm/components/Header/Header.js.map +1 -1
  198. package/dist/cssm/components/ModalCardBase/ModalCardBase.css +1 -1
  199. package/dist/cssm/components/ModalCardBase/ModalCardBase.js +5 -1
  200. package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
  201. package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
  202. package/dist/cssm/components/ModalRoot/ModalRoot.css +1 -1
  203. package/dist/cssm/components/ModalRoot/ModalRoot.js +1 -1
  204. package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
  205. package/dist/cssm/components/Panel/Panel.js +1 -1
  206. package/dist/cssm/components/Panel/Panel.js.map +1 -1
  207. package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.css +1 -1
  208. package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.js +0 -1
  209. package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
  210. package/dist/cssm/components/PullToRefresh/PullToRefresh.js +1 -1
  211. package/dist/cssm/components/PullToRefresh/PullToRefresh.js.map +1 -1
  212. package/dist/cssm/components/RangeSlider/UniversalSlider.js +1 -1
  213. package/dist/cssm/components/RangeSlider/UniversalSlider.js.map +1 -1
  214. package/dist/cssm/components/Root/Root.js +152 -207
  215. package/dist/cssm/components/Root/Root.js.map +1 -1
  216. package/dist/cssm/components/Search/Search.js +1 -1
  217. package/dist/cssm/components/Search/Search.js.map +1 -1
  218. package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
  219. package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.css +1 -0
  220. package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.js +98 -0
  221. package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.js.map +1 -0
  222. package/dist/cssm/components/Snackbar/Snackbar.js +1 -1
  223. package/dist/cssm/components/Snackbar/Snackbar.js.map +1 -1
  224. package/dist/cssm/components/Tappable/Tappable.js +45 -37
  225. package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
  226. package/dist/cssm/components/Touch/Touch.js +163 -286
  227. package/dist/cssm/components/Touch/Touch.js.map +1 -1
  228. package/dist/cssm/components/UsersStack/UsersStack.css +1 -1
  229. package/dist/cssm/components/UsersStack/UsersStack.js +7 -16
  230. package/dist/cssm/components/UsersStack/UsersStack.js.map +1 -1
  231. package/dist/cssm/components/UsersStack/masks.js +6 -9
  232. package/dist/cssm/components/UsersStack/masks.js.map +1 -1
  233. package/dist/cssm/components/View/View.js +1 -1
  234. package/dist/cssm/components/View/View.js.map +1 -1
  235. package/dist/cssm/components/View/ViewInfinite.js +1 -1
  236. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  237. package/dist/cssm/hooks/useEventListener.js +8 -4
  238. package/dist/cssm/hooks/useEventListener.js.map +1 -1
  239. package/dist/cssm/hooks/useGlobalEventListener.js +2 -2
  240. package/dist/cssm/hooks/useGlobalEventListener.js.map +1 -1
  241. package/dist/cssm/hooks/useInsets.js +2 -10
  242. package/dist/cssm/hooks/useInsets.js.map +1 -1
  243. package/dist/cssm/hooks/useKeyboard.js +62 -0
  244. package/dist/cssm/hooks/useKeyboard.js.map +1 -0
  245. package/dist/cssm/hooks/useKeyboardInputTracker.js +4 -2
  246. package/dist/cssm/hooks/useKeyboardInputTracker.js.map +1 -1
  247. package/dist/cssm/index.js +1 -1
  248. package/dist/cssm/index.js.map +1 -1
  249. package/dist/cssm/lib/select.js +62 -0
  250. package/dist/cssm/lib/select.js.map +1 -0
  251. package/dist/cssm/lib/touch.js +5 -2
  252. package/dist/cssm/lib/touch.js.map +1 -1
  253. package/dist/cssm/lib/utils.js.map +1 -1
  254. package/dist/cssm/styles/animations.css +1 -1
  255. package/dist/cssm/styles/common.css +1 -1
  256. package/dist/cssm/styles/components.css +1 -1
  257. package/dist/cssm/styles/constants.css +1 -1
  258. package/dist/cssm/styles/unstable.css +1 -1
  259. package/dist/cssm/unstable/index.js +1 -0
  260. package/dist/cssm/unstable/index.js.map +1 -1
  261. package/dist/hooks/useEventListener.d.ts +2 -2
  262. package/dist/hooks/useEventListener.js +8 -4
  263. package/dist/hooks/useEventListener.js.map +1 -1
  264. package/dist/hooks/useGlobalEventListener.js +2 -2
  265. package/dist/hooks/useGlobalEventListener.js.map +1 -1
  266. package/dist/hooks/useInsets.js +2 -10
  267. package/dist/hooks/useInsets.js.map +1 -1
  268. package/dist/hooks/useKeyboard.d.ts +11 -0
  269. package/dist/hooks/useKeyboard.js +62 -0
  270. package/dist/hooks/useKeyboard.js.map +1 -0
  271. package/dist/hooks/useKeyboardInputTracker.js +4 -2
  272. package/dist/hooks/useKeyboardInputTracker.js.map +1 -1
  273. package/dist/index.d.ts +1 -1
  274. package/dist/index.js +1 -1
  275. package/dist/index.js.map +1 -1
  276. package/dist/lib/select.d.ts +7 -0
  277. package/dist/lib/select.js +62 -0
  278. package/dist/lib/select.js.map +1 -0
  279. package/dist/lib/touch.d.ts +1 -1
  280. package/dist/lib/touch.js +5 -2
  281. package/dist/lib/touch.js.map +1 -1
  282. package/dist/lib/utils.d.ts +2 -3
  283. package/dist/lib/utils.js.map +1 -1
  284. package/dist/types.d.ts +2 -6
  285. package/dist/unstable/index.d.ts +2 -0
  286. package/dist/unstable/index.js +1 -0
  287. package/dist/unstable/index.js.map +1 -1
  288. package/dist/unstable.css +1 -1
  289. package/dist/unstable.css.map +1 -1
  290. package/dist/vkui.css +1 -1
  291. package/dist/vkui.css.map +1 -1
  292. package/package.json +4 -2
  293. package/postcss.config.js +1 -1
  294. package/src/components/ActionSheetItem/ActionSheetItem.css +4 -8
  295. package/src/components/AppRoot/AppRoot.css +20 -0
  296. package/src/components/AppRoot/AppRoot.tsx +30 -0
  297. package/src/components/Banner/Banner.css +4 -0
  298. package/src/components/Banner/Banner.tsx +1 -1
  299. package/src/components/Cell/Cell.tsx +1 -1
  300. package/src/components/ChipsSelect/ChipsSelect.tsx +4 -7
  301. package/src/components/ChipsSelect/Readme.md +0 -2
  302. package/src/components/ChipsSelect/useChipsSelect.ts +1 -1
  303. package/src/components/CustomSelect/CustomSelect.tsx +3 -2
  304. package/src/components/FixedLayout/FixedLayout.tsx +61 -147
  305. package/src/components/Gallery/Gallery.tsx +1 -1
  306. package/src/components/Header/Header.tsx +1 -1
  307. package/src/components/ModalCardBase/ModalCardBase.css +4 -0
  308. package/src/components/ModalCardBase/ModalCardBase.tsx +5 -1
  309. package/src/components/ModalPage/ModalPage.tsx +1 -2
  310. package/src/components/ModalRoot/ModalRoot.css +10 -0
  311. package/src/components/ModalRoot/ModalRoot.tsx +1 -1
  312. package/src/components/Panel/Panel.tsx +1 -1
  313. package/src/components/PanelHeaderContent/PanelHeaderContent.css +2 -1
  314. package/src/components/PanelHeaderContent/PanelHeaderContent.tsx +2 -2
  315. package/src/components/PullToRefresh/PullToRefresh.tsx +1 -1
  316. package/src/components/RangeSlider/UniversalSlider.tsx +1 -1
  317. package/src/components/Root/Readme.md +27 -37
  318. package/src/components/Root/Root.tsx +112 -191
  319. package/src/components/Search/Search.tsx +1 -1
  320. package/src/components/Separator/Readme.md +3 -1
  321. package/src/components/SimpleCell/SimpleCell.tsx +1 -1
  322. package/src/components/SimpleCheckbox/Readme.md +17 -0
  323. package/src/components/SimpleCheckbox/SimpleCheckbox.css +115 -0
  324. package/src/components/SimpleCheckbox/SimpleCheckbox.tsx +105 -0
  325. package/src/components/Snackbar/Snackbar.tsx +1 -1
  326. package/src/components/Tappable/Tappable.tsx +28 -37
  327. package/src/components/Touch/Touch.tsx +100 -238
  328. package/src/components/UsersStack/UsersStack.css +5 -9
  329. package/src/components/UsersStack/UsersStack.tsx +4 -11
  330. package/src/components/UsersStack/masks.tsx +6 -9
  331. package/src/components/View/Readme.md +34 -42
  332. package/src/components/View/View.tsx +1 -1
  333. package/src/components/View/ViewInfinite.tsx +1 -1
  334. package/src/hooks/useEventListener.ts +11 -8
  335. package/src/hooks/useGlobalEventListener.ts +2 -2
  336. package/src/hooks/useInsets.ts +2 -8
  337. package/src/hooks/useKeyboard.ts +67 -0
  338. package/src/hooks/useKeyboardInputTracker.ts +4 -2
  339. package/src/index.ts +1 -1
  340. package/src/lib/select.ts +53 -0
  341. package/src/lib/touch.ts +2 -2
  342. package/src/lib/utils.ts +3 -4
  343. package/src/styles/animations.css +0 -14
  344. package/src/styles/common.css +0 -21
  345. package/src/styles/components.css +2 -0
  346. package/src/styles/constants.css +3 -0
  347. package/src/styles/unstable.css +1 -0
  348. package/src/types.ts +2 -8
  349. package/src/unstable/index.ts +3 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/UsersStack/UsersStack.tsx"],"names":["React","getClassName","useBrowserInfo","usePlatform","hasReactNode","classNames","System","useIsomorphicLayoutEffect","Caption","Subhead","createMasks","UsersStack","props","system","systemVersion","platform","photos","visibleCount","size","layout","children","restProps","othersCount","Math","max","length","canShowOthers","photosShown","slice","canUseClipPath","IOS","major","map","photo","i","backgroundImage","defaultProps","memo"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport { useBrowserInfo } from '../../hooks/useBrowserInfo';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { hasReactNode } from '../../lib/utils';\nimport { classNames } from '../../lib/classNames';\nimport { System } from '../../lib/browser';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport Caption from '../Typography/Caption/Caption';\nimport Subhead from '../Typography/Subhead/Subhead';\nimport { createMasks } from './masks';\nimport './UsersStack.css';\n\nexport interface UsersStackProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Массив ссылок на фотографии\n */\n photos?: string[];\n /**\n * Размер аватарок\n */\n size?: 'xs' | 's' | 'm';\n /**\n * Вертикальный режим рекомендуется использовать с размером `m`\n */\n layout?: 'vertical' | 'horizontal';\n /**\n * Количество аватарок, которые будут показаны.\n * Если в массиве `photos` больше элементов и используется размер `m`, то будет показано количество остальных элементов\n */\n visibleCount?: number;\n}\n\nconst UsersStack: React.FC<UsersStackProps> = (props: UsersStackProps) => {\n const { system, systemVersion } = useBrowserInfo();\n const platform = usePlatform();\n const { photos, visibleCount, size, layout, children, ...restProps } = props;\n\n useIsomorphicLayoutEffect(() => {\n createMasks();\n }, []);\n\n const othersCount = Math.max(0, photos.length - visibleCount);\n const canShowOthers = othersCount > 0 && size === 'm';\n\n const photosShown = photos.slice(0, visibleCount);\n\n let canUseClipPath = true;\n if (system === System.IOS) {\n canUseClipPath = systemVersion && systemVersion.major >= 12;\n }\n\n return (\n <div\n {...restProps}\n vkuiClass={\n classNames(\n getClassName('UsersStack', platform),\n `UsersStack--size-${size}`,\n `UsersStack--l-${layout}`,\n {\n 'UsersStack--others': canShowOthers,\n 'UsersStack--simple': !canUseClipPath,\n },\n )\n }\n >\n <div vkuiClass=\"UsersStack__photos\" role=\"presentation\">\n {photosShown.map((photo, i) => (\n <div\n key={i}\n vkuiClass=\"UsersStack__photo\"\n style={{ backgroundImage: `url(${photo})` }}\n />\n ))}\n\n {canShowOthers &&\n <Caption weight=\"medium\" level=\"1\" vkuiClass=\"UsersStack__photo UsersStack__photo--others\" aria-hidden=\"true\">\n <span>+{othersCount}</span>\n </Caption>\n }\n </div>\n {hasReactNode(children) && <Subhead Component=\"span\" weight=\"regular\" vkuiClass=\"UsersStack__text\">{children}</Subhead>}\n </div>\n );\n};\n\nUsersStack.defaultProps = {\n photos: [],\n size: 's',\n visibleCount: 3,\n layout: 'horizontal',\n};\n\nexport default React.memo(UsersStack);\n"],"file":"UsersStack.js"}
1
+ {"version":3,"sources":["../../../../src/components/UsersStack/UsersStack.tsx"],"names":["React","getClassName","usePlatform","hasReactNode","classNames","useIsomorphicLayoutEffect","Caption","Subhead","createMasks","useDOM","UsersStack","props","platform","photos","visibleCount","size","layout","children","restProps","document","othersCount","Math","max","length","canShowOthers","photosShown","slice","map","photo","i","backgroundImage","defaultProps","memo"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,YAAT;AACA,SAASC,WAAT;AACA,SAASC,YAAT;AACA,SAASC,UAAT;AACA,SAASC,yBAAT;AACA,OAAOC,OAAP;AACA,OAAOC,OAAP;AACA,SAASC,WAAT;AACA,SAASC,MAAT;AACA;;AAsBA,IAAMC,UAAqC,GAAG,SAAxCA,UAAwC,CAACC,KAAD,EAA4B;AACxE,MAAMC,QAAQ,GAAGV,WAAW,EAA5B;;AACA,MAAQW,MAAR,GAAuEF,KAAvE,CAAQE,MAAR;AAAA,MAAgBC,YAAhB,GAAuEH,KAAvE,CAAgBG,YAAhB;AAAA,MAA8BC,IAA9B,GAAuEJ,KAAvE,CAA8BI,IAA9B;AAAA,MAAoCC,MAApC,GAAuEL,KAAvE,CAAoCK,MAApC;AAAA,MAA4CC,QAA5C,GAAuEN,KAAvE,CAA4CM,QAA5C;AAAA,MAAyDC,SAAzD,4BAAuEP,KAAvE;;AACA,gBAAqBF,MAAM,EAA3B;AAAA,MAAQU,QAAR,WAAQA,QAAR;;AAEAd,EAAAA,yBAAyB,CAAC,YAAM;AAC9BG,IAAAA,WAAW,CAACW,QAAD,CAAX;AACD,GAFwB,EAEtB,CAACA,QAAD,CAFsB,CAAzB;AAIA,MAAMC,WAAW,GAAGC,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYT,MAAM,CAACU,MAAP,GAAgBT,YAA5B,CAApB;AACA,MAAMU,aAAa,GAAGJ,WAAW,GAAG,CAAd,IAAmBL,IAAI,KAAK,GAAlD;AAEA,MAAMU,WAAW,GAAGZ,MAAM,CAACa,KAAP,CAAa,CAAb,EAAgBZ,YAAhB,CAApB;AAEA,SACE,wCACMI,SADN;AAEE,IAAA,SAAS,EACPd,UAAU,CACRH,YAAY,CAAC,YAAD,EAAeW,QAAf,CADJ,6BAEYG,IAFZ,2BAGSC,MAHT,GAIR;AACE,4BAAsBQ;AADxB,KAJQ;AAHd,MAaE;AAAK,IAAA,SAAS,EAAC,oBAAf;AAAoC,IAAA,IAAI,EAAC;AAAzC,KACGC,WAAW,CAACE,GAAZ,CAAgB,UAACC,KAAD,EAAQC,CAAR;AAAA,WACf;AACE,MAAA,GAAG,EAAEA,CADP;AAEE,MAAA,SAAS,EAAC,mBAFZ;AAGE,MAAA,KAAK,EAAE;AAAEC,QAAAA,eAAe,gBAASF,KAAT;AAAjB;AAHT,MADe;AAAA,GAAhB,CADH,EASGJ,aAAa,IACZ,oBAAC,OAAD;AAAS,IAAA,MAAM,EAAC,QAAhB;AAAyB,IAAA,KAAK,EAAC,GAA/B;AAAmC,IAAA,SAAS,EAAC,6CAA7C;AAA2F,mBAAY;AAAvG,KACE,uCAAQJ,WAAR,CADF,CAVJ,CAbF,EA4BGjB,YAAY,CAACc,QAAD,CAAZ,IAA0B,oBAAC,OAAD;AAAS,IAAA,SAAS,EAAC,MAAnB;AAA0B,IAAA,MAAM,EAAC,SAAjC;AAA2C,IAAA,SAAS,EAAC;AAArD,KAAyEA,QAAzE,CA5B7B,CADF;AAgCD,CA9CD;;AAgDAP,UAAU,CAACqB,YAAX,GAA0B;AACxBlB,EAAAA,MAAM,EAAE,EADgB;AAExBE,EAAAA,IAAI,EAAE,GAFkB;AAGxBD,EAAAA,YAAY,EAAE,CAHU;AAIxBE,EAAAA,MAAM,EAAE;AAJgB,CAA1B;AAOA,4BAAehB,KAAK,CAACgC,IAAN,CAAWtB,UAAX,CAAf","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { hasReactNode } from '../../lib/utils';\nimport { classNames } from '../../lib/classNames';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport Caption from '../Typography/Caption/Caption';\nimport Subhead from '../Typography/Subhead/Subhead';\nimport { createMasks } from './masks';\nimport { useDOM } from '../../lib/dom';\nimport './UsersStack.css';\n\nexport interface UsersStackProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Массив ссылок на фотографии\n */\n photos?: string[];\n /**\n * Размер аватарок\n */\n size?: 'xs' | 's' | 'm';\n /**\n * Вертикальный режим рекомендуется использовать с размером `m`\n */\n layout?: 'vertical' | 'horizontal';\n /**\n * Количество аватарок, которые будут показаны.\n * Если в массиве `photos` больше элементов и используется размер `m`, то будет показано количество остальных элементов\n */\n visibleCount?: number;\n}\n\nconst UsersStack: React.FC<UsersStackProps> = (props: UsersStackProps) => {\n const platform = usePlatform();\n const { photos, visibleCount, size, layout, children, ...restProps } = props;\n const { document } = useDOM();\n\n useIsomorphicLayoutEffect(() => {\n createMasks(document);\n }, [document]);\n\n const othersCount = Math.max(0, photos.length - visibleCount);\n const canShowOthers = othersCount > 0 && size === 'm';\n\n const photosShown = photos.slice(0, visibleCount);\n\n return (\n <div\n {...restProps}\n vkuiClass={\n classNames(\n getClassName('UsersStack', platform),\n `UsersStack--size-${size}`,\n `UsersStack--l-${layout}`,\n {\n 'UsersStack--others': canShowOthers,\n },\n )\n }\n >\n <div vkuiClass=\"UsersStack__photos\" role=\"presentation\">\n {photosShown.map((photo, i) => (\n <div\n key={i}\n vkuiClass=\"UsersStack__photo\"\n style={{ backgroundImage: `url(${photo})` }}\n />\n ))}\n\n {canShowOthers &&\n <Caption weight=\"medium\" level=\"1\" vkuiClass=\"UsersStack__photo UsersStack__photo--others\" aria-hidden=\"true\">\n <span>+{othersCount}</span>\n </Caption>\n }\n </div>\n {hasReactNode(children) && <Subhead Component=\"span\" weight=\"regular\" vkuiClass=\"UsersStack__text\">{children}</Subhead>}\n </div>\n );\n};\n\nUsersStack.defaultProps = {\n photos: [],\n size: 's',\n visibleCount: 3,\n layout: 'horizontal',\n};\n\nexport default React.memo(UsersStack);\n"],"file":"UsersStack.js"}
@@ -1,7 +1,7 @@
1
- import { canUseDOM, onDOMLoaded } from "../../lib/dom";
2
- var masksCreated = false;
3
- export function createMasks() {
4
- if (!canUseDOM || masksCreated) {
1
+ import { canUseDOM } from "../../lib/dom";
2
+ var masksCreated = [];
3
+ export function createMasks(document) {
4
+ if (!canUseDOM || masksCreated.includes(document)) {
5
5
  return;
6
6
  } // eslint-disable-next-line no-restricted-globals
7
7
 
@@ -14,10 +14,7 @@ export function createMasks() {
14
14
  svgElement.style.width = '0px';
15
15
  svgElement.style.height = '0px';
16
16
  svgElement.innerHTML = "<defs>\n <clipPath id=\"users_stack_mask_16_left\">\n <path transform=\"translate(1.5 0)\" d=\"M1.20772 8C1.20772 6.32671 0.768742 4.75626 0 3.39821C1.44342 1.34278 3.8277 0 6.52463 0C10.9293 0 14.5 3.58172 14.5 8C14.5 12.4183 10.9293 16 6.52463 16C3.8277 16 1.44342 14.6572 0 12.6018C0.768742 11.2437 1.20772 9.6733 1.20772 8Z\"></path>\n </clipPath>\n\n <clipPath id=\"users_stack_mask_24_left\">\n <path d=\"M3.9971785,12 C3.9971785,9.49005736 3.33667467,7.13438366 2.18,5.09731189 C4.35181237,2.01417617 7.93927741,0 11.9971785,0 C18.6245955,0 23.9971785,5.372583 23.9971785,12 C23.9971785,18.627417 18.6245955,24 11.9971785,24 C7.93927741,24 4.35181237,21.9858238 2.18,18.9026881 C3.33667467,16.8656163 3.9971785,14.5099426 3.9971785,12 Z\"></path>\n </clipPath>\n\n <clipPath id=\"users_stack_mask_24_right\">\n <path d=\"M21.8171785,5.09731189 C20.6605038,7.13438366 20,9.49005736 20,12 C20,14.5099426 20.6605038,16.8656163 21.8171785,18.9026881 C19.6453661,21.9858238 16.0579011,24 12,24 C5.372583,24 3.90798505e-14,18.627417 3.90798505e-14,12 C3.90798505e-14,5.372583 5.372583,0 12,0 C16.0579011,0 19.6453661,2.01417617 21.8171785,5.09731189 Z\"></path>\n </clipPath>\n\n <clipPath id=\"users_stack_mask_32_left\">\n <path d=\"M2.13430019,23.9892466 C3.32858917,21.5820026 4,18.8694095 4,16 C4,13.1305905 3.32858917,10.4179974 2.13430019,8.0107534 C4.89924175,3.22241289 10.0733034,-2.30926389e-14 16,-2.30926389e-14 C24.836556,-2.30926389e-14 32,7.163444 32,16 C32,24.836556 24.836556,32 16,32 C10.0733034,32 4.89924175,28.7775871 2.13430019,23.9892466 L2.13430019,23.9892466 Z\"></path>\n </clipPath>\n\n <clipPath id=\"users_stack_mask_32_right\">\n <path d=\"M29.8656998,8.0107534 C28.6714108,10.4179974 28,13.1305905 28,16 C28,18.8694095 28.6714108,21.5820026 29.8656998,23.9892466 C27.1007583,28.7775871 21.9266966,32 16,32 C7.163444,32 3.90798505e-14,24.836556 3.90798505e-14,16 C3.90798505e-14,7.163444 7.163444,0 16,0 C21.9266966,0 27.1007583,3.22241289 29.8656998,8.0107534 Z\"></path>\n </clipPath>\n</defs>";
17
- onDOMLoaded(function () {
18
- // eslint-disable-next-line no-restricted-globals
19
- document.body.appendChild(svgElement);
20
- });
21
- masksCreated = true;
17
+ document.body.appendChild(svgElement);
18
+ masksCreated.push(document);
22
19
  }
23
20
  //# sourceMappingURL=masks.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/UsersStack/masks.tsx"],"names":["canUseDOM","onDOMLoaded","masksCreated","createMasks","svgElement","document","createElementNS","setAttributeNS","style","position","width","height","innerHTML","body","appendChild"],"mappings":"AAAA,SAASA,SAAT,EAAoBC,WAApB;AAEA,IAAIC,YAAY,GAAG,KAAnB;AAEA,OAAO,SAASC,WAAT,GAA6B;AAClC,MAAI,CAACH,SAAD,IAAcE,YAAlB,EAAgC;AAC9B;AACD,GAHiC,CAKlC;;;AACA,MAAME,UAAU,GAAGC,QAAQ,CAACC,eAAT,CAAyB,4BAAzB,EAAuD,KAAvD,CAAnB;AACAF,EAAAA,UAAU,CAACG,cAAX,CAA0B,IAA1B,EAAgC,IAAhC,EAAsC,oBAAtC;AACAH,EAAAA,UAAU,CAACG,cAAX,CAA0B,IAA1B,EAAgC,OAAhC,EAAyC,GAAzC;AACAH,EAAAA,UAAU,CAACG,cAAX,CAA0B,IAA1B,EAAgC,QAAhC,EAA0C,GAA1C;AACAH,EAAAA,UAAU,CAACI,KAAX,CAAiBC,QAAjB,GAA4B,UAA5B;AACAL,EAAAA,UAAU,CAACI,KAAX,CAAiBE,KAAjB,GAAyB,KAAzB;AACAN,EAAAA,UAAU,CAACI,KAAX,CAAiBG,MAAjB,GAA0B,KAA1B;AAEAP,EAAAA,UAAU,CAACQ,SAAX;AAsBAX,EAAAA,WAAW,CAAC,YAAM;AAChB;AACAI,IAAAA,QAAQ,CAACQ,IAAT,CAAcC,WAAd,CAA0BV,UAA1B;AACD,GAHU,CAAX;AAIAF,EAAAA,YAAY,GAAG,IAAf;AACD","sourcesContent":["import { canUseDOM, onDOMLoaded } from '../../lib/dom';\n\nlet masksCreated = false;\n\nexport function createMasks(): void {\n if (!canUseDOM || masksCreated) {\n return;\n }\n\n // eslint-disable-next-line no-restricted-globals\n const svgElement = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgElement.setAttributeNS(null, 'id', '__SVG_MASKS_NODE__');\n svgElement.setAttributeNS(null, 'width', '0');\n svgElement.setAttributeNS(null, 'height', '0');\n svgElement.style.position = 'absolute';\n svgElement.style.width = '0px';\n svgElement.style.height = '0px';\n\n svgElement.innerHTML = `<defs>\n <clipPath id=\"users_stack_mask_16_left\">\n <path transform=\"translate(1.5 0)\" d=\"M1.20772 8C1.20772 6.32671 0.768742 4.75626 0 3.39821C1.44342 1.34278 3.8277 0 6.52463 0C10.9293 0 14.5 3.58172 14.5 8C14.5 12.4183 10.9293 16 6.52463 16C3.8277 16 1.44342 14.6572 0 12.6018C0.768742 11.2437 1.20772 9.6733 1.20772 8Z\"></path>\n </clipPath>\n\n <clipPath id=\"users_stack_mask_24_left\">\n <path d=\"M3.9971785,12 C3.9971785,9.49005736 3.33667467,7.13438366 2.18,5.09731189 C4.35181237,2.01417617 7.93927741,0 11.9971785,0 C18.6245955,0 23.9971785,5.372583 23.9971785,12 C23.9971785,18.627417 18.6245955,24 11.9971785,24 C7.93927741,24 4.35181237,21.9858238 2.18,18.9026881 C3.33667467,16.8656163 3.9971785,14.5099426 3.9971785,12 Z\"></path>\n </clipPath>\n\n <clipPath id=\"users_stack_mask_24_right\">\n <path d=\"M21.8171785,5.09731189 C20.6605038,7.13438366 20,9.49005736 20,12 C20,14.5099426 20.6605038,16.8656163 21.8171785,18.9026881 C19.6453661,21.9858238 16.0579011,24 12,24 C5.372583,24 3.90798505e-14,18.627417 3.90798505e-14,12 C3.90798505e-14,5.372583 5.372583,0 12,0 C16.0579011,0 19.6453661,2.01417617 21.8171785,5.09731189 Z\"></path>\n </clipPath>\n\n <clipPath id=\"users_stack_mask_32_left\">\n <path d=\"M2.13430019,23.9892466 C3.32858917,21.5820026 4,18.8694095 4,16 C4,13.1305905 3.32858917,10.4179974 2.13430019,8.0107534 C4.89924175,3.22241289 10.0733034,-2.30926389e-14 16,-2.30926389e-14 C24.836556,-2.30926389e-14 32,7.163444 32,16 C32,24.836556 24.836556,32 16,32 C10.0733034,32 4.89924175,28.7775871 2.13430019,23.9892466 L2.13430019,23.9892466 Z\"></path>\n </clipPath>\n\n <clipPath id=\"users_stack_mask_32_right\">\n <path d=\"M29.8656998,8.0107534 C28.6714108,10.4179974 28,13.1305905 28,16 C28,18.8694095 28.6714108,21.5820026 29.8656998,23.9892466 C27.1007583,28.7775871 21.9266966,32 16,32 C7.163444,32 3.90798505e-14,24.836556 3.90798505e-14,16 C3.90798505e-14,7.163444 7.163444,0 16,0 C21.9266966,0 27.1007583,3.22241289 29.8656998,8.0107534 Z\"></path>\n </clipPath>\n</defs>`;\n\n onDOMLoaded(() => {\n // eslint-disable-next-line no-restricted-globals\n document.body.appendChild(svgElement);\n });\n masksCreated = true;\n}\n"],"file":"masks.js"}
1
+ {"version":3,"sources":["../../../../src/components/UsersStack/masks.tsx"],"names":["canUseDOM","masksCreated","createMasks","document","includes","svgElement","createElementNS","setAttributeNS","style","position","width","height","innerHTML","body","appendChild","push"],"mappings":"AAAA,SAASA,SAAT;AAEA,IAAMC,YAAwB,GAAG,EAAjC;AAEA,OAAO,SAASC,WAAT,CAAqBC,QAArB,EAA+C;AACpD,MAAI,CAACH,SAAD,IAAcC,YAAY,CAACG,QAAb,CAAsBD,QAAtB,CAAlB,EAAmD;AACjD;AACD,GAHmD,CAKpD;;;AACA,MAAME,UAAU,GAAGF,QAAQ,CAACG,eAAT,CAAyB,4BAAzB,EAAuD,KAAvD,CAAnB;AACAD,EAAAA,UAAU,CAACE,cAAX,CAA0B,IAA1B,EAAgC,IAAhC,EAAsC,oBAAtC;AACAF,EAAAA,UAAU,CAACE,cAAX,CAA0B,IAA1B,EAAgC,OAAhC,EAAyC,GAAzC;AACAF,EAAAA,UAAU,CAACE,cAAX,CAA0B,IAA1B,EAAgC,QAAhC,EAA0C,GAA1C;AACAF,EAAAA,UAAU,CAACG,KAAX,CAAiBC,QAAjB,GAA4B,UAA5B;AACAJ,EAAAA,UAAU,CAACG,KAAX,CAAiBE,KAAjB,GAAyB,KAAzB;AACAL,EAAAA,UAAU,CAACG,KAAX,CAAiBG,MAAjB,GAA0B,KAA1B;AAEAN,EAAAA,UAAU,CAACO,SAAX;AAsBAT,EAAAA,QAAQ,CAACU,IAAT,CAAcC,WAAd,CAA0BT,UAA1B;AACAJ,EAAAA,YAAY,CAACc,IAAb,CAAkBZ,QAAlB;AACD","sourcesContent":["import { canUseDOM } from '../../lib/dom';\n\nconst masksCreated: Document[] = [];\n\nexport function createMasks(document: Document): void {\n if (!canUseDOM || masksCreated.includes(document)) {\n return;\n }\n\n // eslint-disable-next-line no-restricted-globals\n const svgElement = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgElement.setAttributeNS(null, 'id', '__SVG_MASKS_NODE__');\n svgElement.setAttributeNS(null, 'width', '0');\n svgElement.setAttributeNS(null, 'height', '0');\n svgElement.style.position = 'absolute';\n svgElement.style.width = '0px';\n svgElement.style.height = '0px';\n\n svgElement.innerHTML = `<defs>\n <clipPath id=\"users_stack_mask_16_left\">\n <path transform=\"translate(1.5 0)\" d=\"M1.20772 8C1.20772 6.32671 0.768742 4.75626 0 3.39821C1.44342 1.34278 3.8277 0 6.52463 0C10.9293 0 14.5 3.58172 14.5 8C14.5 12.4183 10.9293 16 6.52463 16C3.8277 16 1.44342 14.6572 0 12.6018C0.768742 11.2437 1.20772 9.6733 1.20772 8Z\"></path>\n </clipPath>\n\n <clipPath id=\"users_stack_mask_24_left\">\n <path d=\"M3.9971785,12 C3.9971785,9.49005736 3.33667467,7.13438366 2.18,5.09731189 C4.35181237,2.01417617 7.93927741,0 11.9971785,0 C18.6245955,0 23.9971785,5.372583 23.9971785,12 C23.9971785,18.627417 18.6245955,24 11.9971785,24 C7.93927741,24 4.35181237,21.9858238 2.18,18.9026881 C3.33667467,16.8656163 3.9971785,14.5099426 3.9971785,12 Z\"></path>\n </clipPath>\n\n <clipPath id=\"users_stack_mask_24_right\">\n <path d=\"M21.8171785,5.09731189 C20.6605038,7.13438366 20,9.49005736 20,12 C20,14.5099426 20.6605038,16.8656163 21.8171785,18.9026881 C19.6453661,21.9858238 16.0579011,24 12,24 C5.372583,24 3.90798505e-14,18.627417 3.90798505e-14,12 C3.90798505e-14,5.372583 5.372583,0 12,0 C16.0579011,0 19.6453661,2.01417617 21.8171785,5.09731189 Z\"></path>\n </clipPath>\n\n <clipPath id=\"users_stack_mask_32_left\">\n <path d=\"M2.13430019,23.9892466 C3.32858917,21.5820026 4,18.8694095 4,16 C4,13.1305905 3.32858917,10.4179974 2.13430019,8.0107534 C4.89924175,3.22241289 10.0733034,-2.30926389e-14 16,-2.30926389e-14 C24.836556,-2.30926389e-14 32,7.163444 32,16 C32,24.836556 24.836556,32 16,32 C10.0733034,32 4.89924175,28.7775871 2.13430019,23.9892466 L2.13430019,23.9892466 Z\"></path>\n </clipPath>\n\n <clipPath id=\"users_stack_mask_32_right\">\n <path d=\"M29.8656998,8.0107534 C28.6714108,10.4179974 28,13.1305905 28,16 C28,18.8694095 28.6714108,21.5820026 29.8656998,23.9892466 C27.1007583,28.7775871 21.9266966,32 16,32 C7.163444,32 3.90798505e-14,24.836556 3.90798505e-14,16 C3.90798505e-14,7.163444 7.163444,0 16,0 C21.9266966,0 27.1007583,3.22241289 29.8656998,8.0107534 Z\"></path>\n </clipPath>\n</defs>`;\n\n document.body.appendChild(svgElement);\n masksCreated.push(document);\n}\n"],"file":"masks.js"}
@@ -14,7 +14,7 @@ import { classNames } from "../../lib/classNames";
14
14
  import { transitionEvent, animationEvent } from "../../lib/supportEvents";
15
15
  import { getClassName } from "../../helpers/getClassName";
16
16
  import { IOS, ANDROID, VKCOM } from "../../lib/platform";
17
- import Touch from "../Touch/Touch";
17
+ import { Touch } from "../Touch/Touch";
18
18
  import { removeObjectKeys } from "../../lib/removeObjectKeys";
19
19
  import { withPlatform } from "../../hoc/withPlatform";
20
20
  import { withContext } from "../../hoc/withContext";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/View/View.tsx"],"names":["React","classNames","transitionEvent","animationEvent","getClassName","IOS","ANDROID","VKCOM","Touch","removeObjectKeys","withPlatform","withContext","ConfigProviderContext","createCustomEvent","SplitColContext","AppRootPortal","canUseDOM","withDOM","ScrollContext","getNavId","warnOnce","warn","transitionStartEventName","transitionEndEventName","SwipeBackResults","scrollsCache","swipeBackExcludedTags","View","props","e","includes","animationName","activePanel","isBack","state","prevPanel","document","dispatchEvent","window","setState","nextPanel","visiblePanels","animated","undefined","scrolls","scroll","scrollTo","onTransition","from","to","propertyName","target","pickPanel","swipeBackNextPanel","swipeBackResult","fail","onSwipeBackCancel","success","onSwipeBackSuccess","originalEvent","tagName","toLowerCase","platform","configProvider","isWebView","startX","innerWidth","browserSwipe","onSwipeBack","swipingBack","history","length","swipebackStartX","startT","swipeBackPrevPanel","slice","getScroll","y","swipeBackShift","shiftX","speed","Date","now","getTime","Children","toArray","children","id","prevProps","prevState","popout","blurActiveElement","modal","firstLayerId","panels","map","panel","find","transitionStartEventData","detail","CustomEvent","nextPanelElement","prevPanelElement","scrollTop","waitAnimationFinish","transitionEndHandler","onSwipeBackStart","waitTransitionFinish","swipingBackTransitionEndHandler","transitionMotionEnabled","splitCol","animate","elem","eventHandler","supported","removeEventListener","name","addEventListener","clearTimeout","transitionFinishTimeout","setTimeout","shouldDisableTransitionMotion","animationFinishTimeout","activeElement","blur","panelNodes","panelId","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","_1","nav","restProps","hasPopout","hasModal","filter","disableAnimation","modifiers","onMoveX","onEnd","el","calcPanelSwipeStyles","Component"],"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 { removeObjectKeys } from '../../lib/removeObjectKeys';\nimport { HasPlatform } from '../../types';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { withContext } from '../../hoc/withContext';\nimport { ConfigProviderContext, ConfigProviderContextInterface } from '../ConfigProvider/ConfigProviderContext';\nimport { createCustomEvent } from '../../lib/utils';\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 { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport './View.css';\n\nconst warn = warnOnce('View');\nexport const transitionStartEventName = 'VKUI:View:transition-start';\nexport const transitionEndEventName = 'VKUI:View:transition-end';\n\nenum SwipeBackResults { fail = 1, success}\n\ninterface Scrolls {\n [index: string]: number;\n}\n\nexport type TransitionStartEventDetail = {\n scrolls: Scrolls;\n from: string;\n to: string;\n isBack: boolean;\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 scrolls: Scrolls;\n animated: boolean;\n startT?: Date;\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 scrolls: scrollsCache[getNavId(props)] || {},\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 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.state.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.setState({\n visiblePanels: [prevProps.activePanel, this.props.activePanel],\n prevPanel: prevProps.activePanel,\n nextPanel: this.props.activePanel,\n activePanel: null,\n animated: true,\n scrolls: {\n ...prevState.scrolls,\n [prevProps.activePanel]: this.props.scroll.getScroll().y,\n },\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.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 scrolls: removeObjectKeys(prevState.scrolls, [prevState.swipeBackPrevPanel]),\n }, () => {\n this.document.dispatchEvent(createCustomEvent(this.window, transitionEndEventName));\n this.props.scroll.scrollTo(0, prevState.scrolls[this.state.activePanel]);\n prevProps.onTransition && prevProps.onTransition({ isBack: true, from: prevPanel, to: nextPanel });\n });\n }\n\n const scrolls = this.state.scrolls;\n\n // Начался переход\n if (!prevState.animated && this.state.animated) {\n const transitionStartEventData = {\n detail: {\n from: this.state.prevPanel,\n to: this.state.nextPanel,\n isBack: this.state.isBack,\n scrolls,\n },\n };\n this.document.dispatchEvent(new (this.window as any).CustomEvent(transitionStartEventName, transitionStartEventData));\n const nextPanelElement = this.pickPanel(this.state.nextPanel);\n const prevPanelElement = this.pickPanel(this.state.prevPanel);\n\n prevPanelElement.scrollTop = scrolls[this.state.prevPanel];\n if (this.state.isBack) {\n nextPanelElement.scrollTop = scrolls[this.state.nextPanel];\n }\n this.waitAnimationFinish(this.pickPanel(this.state.isBack ? this.state.prevPanel : this.state.nextPanel), this.transitionEndHandler);\n }\n\n // Начался свайп назад\n if (!prevState.swipingBack && this.state.swipingBack) {\n const transitionStartEventData = {\n detail: {\n from: this.state.swipeBackPrevPanel,\n to: this.state.swipeBackNextPanel,\n scrolls,\n },\n };\n this.document.dispatchEvent(new (this.window as any).CustomEvent(transitionStartEventName, transitionStartEventData));\n this.props.onSwipeBackStart && this.props.onSwipeBackStart();\n const nextPanelElement = this.pickPanel(this.state.swipeBackNextPanel);\n const prevPanelElement = this.pickPanel(this.state.swipeBackPrevPanel);\n\n nextPanelElement.scrollTop = scrolls[this.state.swipeBackNextPanel];\n prevPanelElement.scrollTop = scrolls[this.state.swipeBackPrevPanel];\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, 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 this.document.dispatchEvent(createCustomEvent(this.window, transitionEndEventName));\n this.setState({\n prevPanel: null,\n nextPanel: null,\n visiblePanels: [activePanel],\n activePanel: activePanel,\n animated: false,\n isBack: undefined,\n scrolls: isBack ? removeObjectKeys(this.state.scrolls, [prevPanel]) : this.state.scrolls,\n }, () => {\n isBack && this.props.scroll.scrollTo(0, this.state.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 this.document.dispatchEvent(createCustomEvent(this.window, transitionEndEventName));\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.setState({\n swipingBack: true,\n swipebackStartX: e.startX,\n startT: e.startT,\n swipeBackPrevPanel: this.state.activePanel,\n swipeBackNextPanel: this.props.history.slice(-2)[0],\n scrolls: {\n ...this.state.scrolls,\n [this.state.activePanel]: this.props.scroll.getScroll().y,\n },\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 = (): void => {\n if (this.state.swipingBack) {\n const speed = this.state.swipeBackShift / (Date.now() - this.state.startT.getTime()) * 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 { prevPanel, nextPanel, activePanel, swipeBackPrevPanel, swipeBackNextPanel, swipeBackResult } = 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\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 data-vkui-active-panel={panelId === activePanel ? 'true' : ''}\n style={this.calcPanelSwipeStyles(panelId)}\n key={panelId}\n >\n <div vkuiClass=\"View__panel-in\">\n {panel}\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":["React","classNames","transitionEvent","animationEvent","getClassName","IOS","ANDROID","VKCOM","Touch","removeObjectKeys","withPlatform","withContext","ConfigProviderContext","createCustomEvent","SplitColContext","AppRootPortal","canUseDOM","withDOM","ScrollContext","getNavId","warnOnce","warn","transitionStartEventName","transitionEndEventName","SwipeBackResults","scrollsCache","swipeBackExcludedTags","View","props","e","includes","animationName","activePanel","isBack","state","prevPanel","document","dispatchEvent","window","setState","nextPanel","visiblePanels","animated","undefined","scrolls","scroll","scrollTo","onTransition","from","to","propertyName","target","pickPanel","swipeBackNextPanel","swipeBackResult","fail","onSwipeBackCancel","success","onSwipeBackSuccess","originalEvent","tagName","toLowerCase","platform","configProvider","isWebView","startX","innerWidth","browserSwipe","onSwipeBack","swipingBack","history","length","swipebackStartX","startT","swipeBackPrevPanel","slice","getScroll","y","swipeBackShift","shiftX","speed","Date","now","getTime","Children","toArray","children","id","prevProps","prevState","popout","blurActiveElement","modal","firstLayerId","panels","map","panel","find","transitionStartEventData","detail","CustomEvent","nextPanelElement","prevPanelElement","scrollTop","waitAnimationFinish","transitionEndHandler","onSwipeBackStart","waitTransitionFinish","swipingBackTransitionEndHandler","transitionMotionEnabled","splitCol","animate","elem","eventHandler","supported","removeEventListener","name","addEventListener","clearTimeout","transitionFinishTimeout","setTimeout","shouldDisableTransitionMotion","animationFinishTimeout","activeElement","blur","panelNodes","panelId","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","_1","nav","restProps","hasPopout","hasModal","filter","disableAnimation","modifiers","onMoveX","onEnd","el","calcPanelSwipeStyles","Component"],"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 { removeObjectKeys } from '../../lib/removeObjectKeys';\nimport { HasPlatform } from '../../types';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { withContext } from '../../hoc/withContext';\nimport { ConfigProviderContext, ConfigProviderContextInterface } from '../ConfigProvider/ConfigProviderContext';\nimport { createCustomEvent } from '../../lib/utils';\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 { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport './View.css';\n\nconst warn = warnOnce('View');\nexport const transitionStartEventName = 'VKUI:View:transition-start';\nexport const transitionEndEventName = 'VKUI:View:transition-end';\n\nenum SwipeBackResults { fail = 1, success}\n\ninterface Scrolls {\n [index: string]: number;\n}\n\nexport type TransitionStartEventDetail = {\n scrolls: Scrolls;\n from: string;\n to: string;\n isBack: boolean;\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 scrolls: Scrolls;\n animated: boolean;\n startT?: Date;\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 scrolls: scrollsCache[getNavId(props)] || {},\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 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.state.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.setState({\n visiblePanels: [prevProps.activePanel, this.props.activePanel],\n prevPanel: prevProps.activePanel,\n nextPanel: this.props.activePanel,\n activePanel: null,\n animated: true,\n scrolls: {\n ...prevState.scrolls,\n [prevProps.activePanel]: this.props.scroll.getScroll().y,\n },\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.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 scrolls: removeObjectKeys(prevState.scrolls, [prevState.swipeBackPrevPanel]),\n }, () => {\n this.document.dispatchEvent(createCustomEvent(this.window, transitionEndEventName));\n this.props.scroll.scrollTo(0, prevState.scrolls[this.state.activePanel]);\n prevProps.onTransition && prevProps.onTransition({ isBack: true, from: prevPanel, to: nextPanel });\n });\n }\n\n const scrolls = this.state.scrolls;\n\n // Начался переход\n if (!prevState.animated && this.state.animated) {\n const transitionStartEventData = {\n detail: {\n from: this.state.prevPanel,\n to: this.state.nextPanel,\n isBack: this.state.isBack,\n scrolls,\n },\n };\n this.document.dispatchEvent(new (this.window as any).CustomEvent(transitionStartEventName, transitionStartEventData));\n const nextPanelElement = this.pickPanel(this.state.nextPanel);\n const prevPanelElement = this.pickPanel(this.state.prevPanel);\n\n prevPanelElement.scrollTop = scrolls[this.state.prevPanel];\n if (this.state.isBack) {\n nextPanelElement.scrollTop = scrolls[this.state.nextPanel];\n }\n this.waitAnimationFinish(this.pickPanel(this.state.isBack ? this.state.prevPanel : this.state.nextPanel), this.transitionEndHandler);\n }\n\n // Начался свайп назад\n if (!prevState.swipingBack && this.state.swipingBack) {\n const transitionStartEventData = {\n detail: {\n from: this.state.swipeBackPrevPanel,\n to: this.state.swipeBackNextPanel,\n scrolls,\n },\n };\n this.document.dispatchEvent(new (this.window as any).CustomEvent(transitionStartEventName, transitionStartEventData));\n this.props.onSwipeBackStart && this.props.onSwipeBackStart();\n const nextPanelElement = this.pickPanel(this.state.swipeBackNextPanel);\n const prevPanelElement = this.pickPanel(this.state.swipeBackPrevPanel);\n\n nextPanelElement.scrollTop = scrolls[this.state.swipeBackNextPanel];\n prevPanelElement.scrollTop = scrolls[this.state.swipeBackPrevPanel];\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, 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 this.document.dispatchEvent(createCustomEvent(this.window, transitionEndEventName));\n this.setState({\n prevPanel: null,\n nextPanel: null,\n visiblePanels: [activePanel],\n activePanel: activePanel,\n animated: false,\n isBack: undefined,\n scrolls: isBack ? removeObjectKeys(this.state.scrolls, [prevPanel]) : this.state.scrolls,\n }, () => {\n isBack && this.props.scroll.scrollTo(0, this.state.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 this.document.dispatchEvent(createCustomEvent(this.window, transitionEndEventName));\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.setState({\n swipingBack: true,\n swipebackStartX: e.startX,\n startT: e.startT,\n swipeBackPrevPanel: this.state.activePanel,\n swipeBackNextPanel: this.props.history.slice(-2)[0],\n scrolls: {\n ...this.state.scrolls,\n [this.state.activePanel]: this.props.scroll.getScroll().y,\n },\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 = (): void => {\n if (this.state.swipingBack) {\n const speed = this.state.swipeBackShift / (Date.now() - this.state.startT.getTime()) * 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 { prevPanel, nextPanel, activePanel, swipeBackPrevPanel, swipeBackNextPanel, swipeBackResult } = 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\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 data-vkui-active-panel={panelId === activePanel ? 'true' : ''}\n style={this.calcPanelSwipeStyles(panelId)}\n key={panelId}\n >\n <div vkuiClass=\"View__panel-in\">\n {panel}\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,7 +15,7 @@ import { classNames } from "../../lib/classNames";
15
15
  import { transitionEvent, animationEvent } from "../../lib/supportEvents";
16
16
  import { getClassName } from "../../helpers/getClassName";
17
17
  import { IOS, ANDROID, VKCOM } from "../../lib/platform";
18
- import Touch from "../Touch/Touch";
18
+ import { Touch } from "../Touch/Touch";
19
19
  import { withPlatform } from "../../hoc/withPlatform";
20
20
  import { withContext } from "../../hoc/withContext";
21
21
  import { ConfigProviderContext } from "../ConfigProvider/ConfigProviderContext";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/View/ViewInfinite.tsx"],"names":["React","classNames","transitionEvent","animationEvent","getClassName","IOS","ANDROID","VKCOM","Touch","withPlatform","withContext","ConfigProviderContext","createCustomEvent","SplitColContext","AppRootPortal","canUseDOM","withDOM","ScrollContext","getNavId","warnOnce","warn","transitionStartEventName","transitionEndEventName","SwipeBackResults","scrollsCache","swipeBackExcludedTags","ViewInfinite","props","e","includes","animationName","activePanel","prevPanel","state","isBack","prevPanelScrolls","scrolls","slice","newPanelScrolls","scrollPosition","pop","document","dispatchEvent","window","setState","nextPanel","visiblePanels","animated","undefined","scroll","scrollTo","onTransition","from","to","propertyName","target","pickPanel","swipeBackNextPanel","swipeBackResult","fail","onSwipeBackCancel","success","onSwipeBackSuccess","originalEvent","tagName","toLowerCase","platform","configProvider","isWebView","startX","innerWidth","browserSwipe","onSwipeBack","swipingBack","history","length","prevScrolls","getScroll","y","swipebackStartX","startT","swipeBackPrevPanel","swipeBackShift","shiftX","speed","Date","now","getTime","Children","toArray","children","id","prevProps","prevState","popout","blurActiveElement","modal","isBackCheck","firstLayerId","panels","map","panel","find","newScrolls","transitionStartEventData","detail","CustomEvent","nextPanelElement","prevPanelElement","scrollTop","getLastPanelScrollPosition","waitAnimationFinish","transitionEndHandler","onSwipeBackStart","waitTransitionFinish","swipingBackTransitionEndHandler","transitionMotionEnabled","splitCol","animate","elem","eventHandler","supported","removeEventListener","name","addEventListener","clearTimeout","transitionFinishTimeout","setTimeout","shouldDisableTransitionMotion","animationFinishTimeout","activeElement","blur","panelNodes","panelId","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","_1","nav","restProps","hasPopout","hasModal","filter","sort","isPrevPanel","isNextPanel","disableAnimation","modifiers","onMoveX","onEnd","el","calcPanelSwipeStyles","Component"],"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 { createCustomEvent } from '../../lib/utils';\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 { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport './View.css';\n\nconst warn = warnOnce('ViewInfinite');\nexport const transitionStartEventName = 'VKUI:View:transition-start';\nexport const transitionEndEventName = 'VKUI:View:transition-end';\n\nenum SwipeBackResults { fail = 1, success}\n\ninterface Scrolls {\n [index: string]: number[];\n}\n\nexport type TransitionStartEventDetail = {\n scrolls: Scrolls;\n from: string;\n to: string;\n isBack: boolean;\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 scrolls: Scrolls;\n animated: boolean;\n startT?: Date;\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 scrolls: scrollsCache[getNavId(props, warn)] || {},\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 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.state.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 = prevState.scrolls[prevProps.activePanel] || [];\n const scrolls = {\n ...prevState.scrolls,\n [prevProps.activePanel]: [...prevScrolls, this.props.scroll.getScroll().y],\n };\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 scrolls,\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 = [...prevState.scrolls[prevPanel] || []].slice(0, -1);\n const newPanelScrolls = [...prevState.scrolls[nextPanel] || []];\n const scrollPosition = newPanelScrolls.pop();\n const newScrolls = {\n ...prevState.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 scrolls: newScrolls,\n }, () => {\n this.document.dispatchEvent(createCustomEvent(this.window, transitionEndEventName));\n this.props.scroll.scrollTo(0, scrollPosition);\n prevProps.onTransition && prevProps.onTransition({ isBack: true, from: prevPanel, to: nextPanel });\n });\n }\n\n const scrolls = this.state.scrolls;\n\n // Начался переход\n if (!prevState.animated && this.state.animated) {\n const transitionStartEventData = {\n detail: {\n from: this.state.prevPanel,\n to: this.state.nextPanel,\n isBack: this.state.isBack,\n scrolls,\n },\n };\n this.document.dispatchEvent(new (this.window as any).CustomEvent(transitionStartEventName, transitionStartEventData));\n const nextPanelElement = this.pickPanel(this.state.nextPanel);\n const prevPanelElement = this.pickPanel(this.state.prevPanel);\n\n prevPanelElement.scrollTop = this.getLastPanelScrollPosition(scrolls, this.state.prevPanel);\n if (this.state.isBack) {\n nextPanelElement.scrollTop = this.getLastPanelScrollPosition(scrolls, this.state.nextPanel);\n }\n this.waitAnimationFinish(this.pickPanel(this.state.isBack ? this.state.prevPanel : this.state.nextPanel), this.transitionEndHandler);\n }\n\n // Начался свайп назад\n if (!prevState.swipingBack && this.state.swipingBack) {\n const transitionStartEventData = {\n detail: {\n from: this.state.swipeBackPrevPanel,\n to: this.state.swipeBackNextPanel,\n scrolls,\n },\n };\n this.document.dispatchEvent(new (this.window as any).CustomEvent(transitionStartEventName, transitionStartEventData));\n this.props.onSwipeBackStart && this.props.onSwipeBackStart();\n const nextPanelElement = this.pickPanel(this.state.swipeBackNextPanel);\n const prevPanelElement = this.pickPanel(this.state.swipeBackPrevPanel);\n\n nextPanelElement.scrollTop = this.getLastPanelScrollPosition(scrolls, this.state.swipeBackNextPanel);\n prevPanelElement.scrollTop = this.getLastPanelScrollPosition(scrolls, this.state.swipeBackPrevPanel);\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 = [...scrolls[this.state.activePanel] || []];\n const scrollPosition = newPanelScrolls.pop();\n const newScrolls = {\n ...scrolls,\n [this.state.activePanel]: newPanelScrolls,\n };\n\n this.props.scroll.scrollTo(0, scrollPosition);\n\n this.setState({ scrolls: newScrolls });\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 getLastPanelScrollPosition(scrolls: Scrolls, panel: string) {\n return scrolls[panel]?.length > 0 ? scrolls[panel][scrolls[panel].length - 1] : 0;\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.state.scrolls[prevPanel] || []].slice(0, -1);\n const newPanelScrolls = [...this.state.scrolls[activePanel] || []];\n const scrollPosition = isBack ? newPanelScrolls.pop() : 0;\n const scrolls = isBack\n ? {\n ...this.state.scrolls || {},\n [prevPanel]: prevPanelScrolls,\n [activePanel]: newPanelScrolls,\n }\n : this.state.scrolls;\n\n this.document.dispatchEvent(createCustomEvent(this.window, transitionEndEventName));\n this.setState({\n prevPanel: null,\n nextPanel: null,\n visiblePanels: [activePanel],\n activePanel: activePanel,\n animated: false,\n isBack: undefined,\n scrolls,\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 this.document.dispatchEvent(createCustomEvent(this.window, transitionEndEventName));\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.state.scrolls[this.state.activePanel] || [];\n const scrolls = {\n ...this.state.scrolls,\n [this.state.activePanel]: [...prevScrolls, this.props.scroll.getScroll().y],\n };\n\n this.setState({\n swipingBack: true,\n swipebackStartX: e.startX,\n startT: e.startT,\n swipeBackPrevPanel: this.state.activePanel,\n swipeBackNextPanel: this.props.history.slice(-2)[0],\n scrolls,\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 = (): void => {\n if (this.state.swipingBack) {\n const speed = this.state.swipeBackShift / (Date.now() - this.state.startT.getTime()) * 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 { prevPanel, nextPanel, activePanel, swipeBackPrevPanel, swipeBackNextPanel, swipeBackResult, swipingBack } = 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\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 data-vkui-active-panel={panelId === activePanel ? 'true' : ''}\n style={this.calcPanelSwipeStyles(panelId)}\n key={panelId}\n >\n <div vkuiClass=\"View__panel-in\">\n {panel}\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":["React","classNames","transitionEvent","animationEvent","getClassName","IOS","ANDROID","VKCOM","Touch","withPlatform","withContext","ConfigProviderContext","createCustomEvent","SplitColContext","AppRootPortal","canUseDOM","withDOM","ScrollContext","getNavId","warnOnce","warn","transitionStartEventName","transitionEndEventName","SwipeBackResults","scrollsCache","swipeBackExcludedTags","ViewInfinite","props","e","includes","animationName","activePanel","prevPanel","state","isBack","prevPanelScrolls","scrolls","slice","newPanelScrolls","scrollPosition","pop","document","dispatchEvent","window","setState","nextPanel","visiblePanels","animated","undefined","scroll","scrollTo","onTransition","from","to","propertyName","target","pickPanel","swipeBackNextPanel","swipeBackResult","fail","onSwipeBackCancel","success","onSwipeBackSuccess","originalEvent","tagName","toLowerCase","platform","configProvider","isWebView","startX","innerWidth","browserSwipe","onSwipeBack","swipingBack","history","length","prevScrolls","getScroll","y","swipebackStartX","startT","swipeBackPrevPanel","swipeBackShift","shiftX","speed","Date","now","getTime","Children","toArray","children","id","prevProps","prevState","popout","blurActiveElement","modal","isBackCheck","firstLayerId","panels","map","panel","find","newScrolls","transitionStartEventData","detail","CustomEvent","nextPanelElement","prevPanelElement","scrollTop","getLastPanelScrollPosition","waitAnimationFinish","transitionEndHandler","onSwipeBackStart","waitTransitionFinish","swipingBackTransitionEndHandler","transitionMotionEnabled","splitCol","animate","elem","eventHandler","supported","removeEventListener","name","addEventListener","clearTimeout","transitionFinishTimeout","setTimeout","shouldDisableTransitionMotion","animationFinishTimeout","activeElement","blur","panelNodes","panelId","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","_1","nav","restProps","hasPopout","hasModal","filter","sort","isPrevPanel","isNextPanel","disableAnimation","modifiers","onMoveX","onEnd","el","calcPanelSwipeStyles","Component"],"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 { createCustomEvent } from '../../lib/utils';\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 { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport './View.css';\n\nconst warn = warnOnce('ViewInfinite');\nexport const transitionStartEventName = 'VKUI:View:transition-start';\nexport const transitionEndEventName = 'VKUI:View:transition-end';\n\nenum SwipeBackResults { fail = 1, success}\n\ninterface Scrolls {\n [index: string]: number[];\n}\n\nexport type TransitionStartEventDetail = {\n scrolls: Scrolls;\n from: string;\n to: string;\n isBack: boolean;\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 scrolls: Scrolls;\n animated: boolean;\n startT?: Date;\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 scrolls: scrollsCache[getNavId(props, warn)] || {},\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 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.state.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 = prevState.scrolls[prevProps.activePanel] || [];\n const scrolls = {\n ...prevState.scrolls,\n [prevProps.activePanel]: [...prevScrolls, this.props.scroll.getScroll().y],\n };\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 scrolls,\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 = [...prevState.scrolls[prevPanel] || []].slice(0, -1);\n const newPanelScrolls = [...prevState.scrolls[nextPanel] || []];\n const scrollPosition = newPanelScrolls.pop();\n const newScrolls = {\n ...prevState.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 scrolls: newScrolls,\n }, () => {\n this.document.dispatchEvent(createCustomEvent(this.window, transitionEndEventName));\n this.props.scroll.scrollTo(0, scrollPosition);\n prevProps.onTransition && prevProps.onTransition({ isBack: true, from: prevPanel, to: nextPanel });\n });\n }\n\n const scrolls = this.state.scrolls;\n\n // Начался переход\n if (!prevState.animated && this.state.animated) {\n const transitionStartEventData = {\n detail: {\n from: this.state.prevPanel,\n to: this.state.nextPanel,\n isBack: this.state.isBack,\n scrolls,\n },\n };\n this.document.dispatchEvent(new (this.window as any).CustomEvent(transitionStartEventName, transitionStartEventData));\n const nextPanelElement = this.pickPanel(this.state.nextPanel);\n const prevPanelElement = this.pickPanel(this.state.prevPanel);\n\n prevPanelElement.scrollTop = this.getLastPanelScrollPosition(scrolls, this.state.prevPanel);\n if (this.state.isBack) {\n nextPanelElement.scrollTop = this.getLastPanelScrollPosition(scrolls, this.state.nextPanel);\n }\n this.waitAnimationFinish(this.pickPanel(this.state.isBack ? this.state.prevPanel : this.state.nextPanel), this.transitionEndHandler);\n }\n\n // Начался свайп назад\n if (!prevState.swipingBack && this.state.swipingBack) {\n const transitionStartEventData = {\n detail: {\n from: this.state.swipeBackPrevPanel,\n to: this.state.swipeBackNextPanel,\n scrolls,\n },\n };\n this.document.dispatchEvent(new (this.window as any).CustomEvent(transitionStartEventName, transitionStartEventData));\n this.props.onSwipeBackStart && this.props.onSwipeBackStart();\n const nextPanelElement = this.pickPanel(this.state.swipeBackNextPanel);\n const prevPanelElement = this.pickPanel(this.state.swipeBackPrevPanel);\n\n nextPanelElement.scrollTop = this.getLastPanelScrollPosition(scrolls, this.state.swipeBackNextPanel);\n prevPanelElement.scrollTop = this.getLastPanelScrollPosition(scrolls, this.state.swipeBackPrevPanel);\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 = [...scrolls[this.state.activePanel] || []];\n const scrollPosition = newPanelScrolls.pop();\n const newScrolls = {\n ...scrolls,\n [this.state.activePanel]: newPanelScrolls,\n };\n\n this.props.scroll.scrollTo(0, scrollPosition);\n\n this.setState({ scrolls: newScrolls });\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 getLastPanelScrollPosition(scrolls: Scrolls, panel: string) {\n return scrolls[panel]?.length > 0 ? scrolls[panel][scrolls[panel].length - 1] : 0;\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.state.scrolls[prevPanel] || []].slice(0, -1);\n const newPanelScrolls = [...this.state.scrolls[activePanel] || []];\n const scrollPosition = isBack ? newPanelScrolls.pop() : 0;\n const scrolls = isBack\n ? {\n ...this.state.scrolls || {},\n [prevPanel]: prevPanelScrolls,\n [activePanel]: newPanelScrolls,\n }\n : this.state.scrolls;\n\n this.document.dispatchEvent(createCustomEvent(this.window, transitionEndEventName));\n this.setState({\n prevPanel: null,\n nextPanel: null,\n visiblePanels: [activePanel],\n activePanel: activePanel,\n animated: false,\n isBack: undefined,\n scrolls,\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 this.document.dispatchEvent(createCustomEvent(this.window, transitionEndEventName));\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.state.scrolls[this.state.activePanel] || [];\n const scrolls = {\n ...this.state.scrolls,\n [this.state.activePanel]: [...prevScrolls, this.props.scroll.getScroll().y],\n };\n\n this.setState({\n swipingBack: true,\n swipebackStartX: e.startX,\n startT: e.startT,\n swipeBackPrevPanel: this.state.activePanel,\n swipeBackNextPanel: this.props.history.slice(-2)[0],\n scrolls,\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 = (): void => {\n if (this.state.swipingBack) {\n const speed = this.state.swipeBackShift / (Date.now() - this.state.startT.getTime()) * 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 { prevPanel, nextPanel, activePanel, swipeBackPrevPanel, swipeBackNextPanel, swipeBackResult, swipingBack } = 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\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 data-vkui-active-panel={panelId === activePanel ? 'true' : ''}\n style={this.calcPanelSwipeStyles(panelId)}\n key={panelId}\n >\n <div vkuiClass=\"View__panel-in\">\n {panel}\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"}
@@ -9,11 +9,12 @@ export function useEventListener(event, _cb, _options) {
9
9
  cbRef.current = _cb;
10
10
  }, [_cb]);
11
11
  var cb = React.useCallback(function (e) {
12
- return cbRef.current(e);
12
+ return cbRef.current && cbRef.current(e);
13
13
  }, []);
14
14
  var detach = React.useRef(noop);
15
15
  var remove = React.useCallback(function () {
16
- return detach.current();
16
+ detach.current();
17
+ detach.current = noop;
17
18
  }, []);
18
19
  var add = React.useCallback(function (el) {
19
20
  if (!canUseDOM) {
@@ -22,13 +23,16 @@ export function useEventListener(event, _cb, _options) {
22
23
 
23
24
  remove();
24
25
 
26
+ if (!el) {
27
+ return;
28
+ }
29
+
25
30
  var options = _objectSpread({}, _options);
26
31
 
27
32
  el.addEventListener(event, cb, options);
28
33
 
29
34
  detach.current = function () {
30
- el.removeEventListener(event, cb, options);
31
- detach.current = noop;
35
+ return el.removeEventListener(event, cb, options);
32
36
  };
33
37
  }, []);
34
38
  React.useEffect(function () {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/useEventListener.ts"],"names":["React","noop","canUseDOM","useIsomorphicLayoutEffect","useEventListener","event","_cb","_options","cbRef","useRef","current","cb","useCallback","e","detach","remove","add","el","options","addEventListener","removeEventListener","useEffect"],"mappings":";AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,IAAT;AACA,SAASC,SAAT;AACA,SAASC,yBAAT;AAaA,OAAO,SAASC,gBAAT,CAA0BC,KAA1B,EAAyCC,GAAzC,EAAkEC,QAAlE,EAAsG;AAC3G,MAAMC,KAAK,GAAGR,KAAK,CAACS,MAAN,CAAaH,GAAb,CAAd;AACAH,EAAAA,yBAAyB,CAAC,YAAM;AAC9BK,IAAAA,KAAK,CAACE,OAAN,GAAgBJ,GAAhB;AACD,GAFwB,EAEtB,CAACA,GAAD,CAFsB,CAAzB;AAGA,MAAMK,EAAE,GAAGX,KAAK,CAACY,WAAN,CAA8B,UAACC,CAAD;AAAA,WAAOL,KAAK,CAACE,OAAN,CAAcG,CAAd,CAAP;AAAA,GAA9B,EAAuD,EAAvD,CAAX;AAEA,MAAMC,MAAM,GAAGd,KAAK,CAACS,MAAN,CAAaR,IAAb,CAAf;AACA,MAAMc,MAAM,GAAGf,KAAK,CAACY,WAAN,CAAkB;AAAA,WAAME,MAAM,CAACJ,OAAP,EAAN;AAAA,GAAlB,EAA0C,EAA1C,CAAf;AACA,MAAMM,GAAG,GAAGhB,KAAK,CAACY,WAAN,CAAkB,UAACK,EAAD,EAAgC;AAC5D,QAAI,CAACf,SAAL,EAAgB;AACd;AACD;;AACDa,IAAAA,MAAM;;AACN,QAAMG,OAAO,qBAAQX,QAAR,CAAb;;AACAU,IAAAA,EAAE,CAACE,gBAAH,CAAoBd,KAApB,EAA2BM,EAA3B,EAA+BO,OAA/B;;AACAJ,IAAAA,MAAM,CAACJ,OAAP,GAAiB,YAAM;AACrBO,MAAAA,EAAE,CAACG,mBAAH,CAAuBf,KAAvB,EAA8BM,EAA9B,EAAkCO,OAAlC;AACAJ,MAAAA,MAAM,CAACJ,OAAP,GAAiBT,IAAjB;AACD,KAHD;AAID,GAXW,EAWT,EAXS,CAAZ;AAYAD,EAAAA,KAAK,CAACqB,SAAN,CAAgB;AAAA,WAAMN,MAAN;AAAA,GAAhB,EAA8B,EAA9B;AAEA,SAAO;AAAEC,IAAAA,GAAG,EAAHA,GAAF;AAAOD,IAAAA,MAAM,EAANA;AAAP,GAAP;AACD","sourcesContent":["import * as React from 'react';\nimport { noop } from '../lib/utils';\nimport { canUseDOM } from '../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../lib/useIsomorphicLayoutEffect';\n\ninterface EventListenerHandle {\n add(el: HTMLElement | Document): void;\n remove(): void;\n}\n\nexport function useEventListener<K extends keyof GlobalEventHandlersEventMap>(\n event: K,\n _cb: (ev: GlobalEventHandlersEventMap[K]) => any,\n _options?: AddEventListenerOptions,\n): EventListenerHandle;\nexport function useEventListener(event: string, _cb: (ev: Event) => any, _options?: AddEventListenerOptions): EventListenerHandle;\nexport function useEventListener(event: string, _cb: (ev: Event) => any, _options?: AddEventListenerOptions) {\n const cbRef = React.useRef(_cb);\n useIsomorphicLayoutEffect(() => {\n cbRef.current = _cb;\n }, [_cb]);\n const cb = React.useCallback<typeof _cb>((e) => cbRef.current(e), []);\n\n const detach = React.useRef(noop);\n const remove = React.useCallback(() => detach.current(), []);\n const add = React.useCallback((el: HTMLElement | Document) => {\n if (!canUseDOM) {\n return;\n }\n remove();\n const options = { ..._options };\n el.addEventListener(event, cb, options);\n detach.current = () => {\n el.removeEventListener(event, cb, options);\n detach.current = noop;\n };\n }, []);\n React.useEffect(() => remove, []);\n\n return { add, remove };\n}\n"],"file":"useEventListener.js"}
1
+ {"version":3,"sources":["../../../src/hooks/useEventListener.ts"],"names":["React","noop","canUseDOM","useIsomorphicLayoutEffect","useEventListener","event","_cb","_options","cbRef","useRef","current","cb","useCallback","e","detach","remove","add","el","options","addEventListener","removeEventListener","useEffect"],"mappings":";AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,IAAT;AACA,SAASC,SAAT;AACA,SAASC,yBAAT;AAaA,OAAO,SAASC,gBAAT,CAA0BC,KAA1B,EAAyCC,GAAzC,EAAkEC,QAAlE,EAAsG;AAC3G,MAAMC,KAAK,GAAGR,KAAK,CAACS,MAAN,CAAaH,GAAb,CAAd;AACAH,EAAAA,yBAAyB,CAAC,YAAM;AAC9BK,IAAAA,KAAK,CAACE,OAAN,GAAgBJ,GAAhB;AACD,GAFwB,EAEtB,CAACA,GAAD,CAFsB,CAAzB;AAGA,MAAMK,EAAE,GAAGX,KAAK,CAACY,WAAN,CAA8B,UAACC,CAAD;AAAA,WAAOL,KAAK,CAACE,OAAN,IAAiBF,KAAK,CAACE,OAAN,CAAcG,CAAd,CAAxB;AAAA,GAA9B,EAAwE,EAAxE,CAAX;AAEA,MAAMC,MAAM,GAAGd,KAAK,CAACS,MAAN,CAAaR,IAAb,CAAf;AACA,MAAMc,MAAM,GAAGf,KAAK,CAACY,WAAN,CAAkB,YAAM;AACrCE,IAAAA,MAAM,CAACJ,OAAP;AACAI,IAAAA,MAAM,CAACJ,OAAP,GAAiBT,IAAjB;AACD,GAHc,EAGZ,EAHY,CAAf;AAIA,MAAMe,GAAG,GAAGhB,KAAK,CAACY,WAAN,CAAkB,UAACK,EAAD,EAAgC;AAC5D,QAAI,CAACf,SAAL,EAAgB;AACd;AACD;;AACDa,IAAAA,MAAM;;AACN,QAAI,CAACE,EAAL,EAAS;AACP;AACD;;AACD,QAAMC,OAAO,qBAAQX,QAAR,CAAb;;AACAU,IAAAA,EAAE,CAACE,gBAAH,CAAoBd,KAApB,EAA2BM,EAA3B,EAA+BO,OAA/B;;AACAJ,IAAAA,MAAM,CAACJ,OAAP,GAAiB;AAAA,aAAMO,EAAE,CAACG,mBAAH,CAAuBf,KAAvB,EAA8BM,EAA9B,EAAkCO,OAAlC,CAAN;AAAA,KAAjB;AACD,GAXW,EAWT,EAXS,CAAZ;AAYAlB,EAAAA,KAAK,CAACqB,SAAN,CAAgB;AAAA,WAAMN,MAAN;AAAA,GAAhB,EAA8B,EAA9B;AAEA,SAAO;AAAEC,IAAAA,GAAG,EAAHA,GAAF;AAAOD,IAAAA,MAAM,EAANA;AAAP,GAAP;AACD","sourcesContent":["import * as React from 'react';\nimport { noop } from '../lib/utils';\nimport { canUseDOM } from '../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../lib/useIsomorphicLayoutEffect';\n\ninterface EventListenerHandle {\n add: (el: HTMLElement | Document) => void;\n remove: () => void;\n}\n\nexport function useEventListener<K extends keyof GlobalEventHandlersEventMap>(\n event: K,\n _cb: (ev: GlobalEventHandlersEventMap[K]) => any,\n _options?: AddEventListenerOptions,\n): EventListenerHandle;\nexport function useEventListener(event: string, _cb: (ev: Event) => any, _options?: AddEventListenerOptions): EventListenerHandle;\nexport function useEventListener(event: string, _cb: (ev: Event) => any, _options?: AddEventListenerOptions) {\n const cbRef = React.useRef(_cb);\n useIsomorphicLayoutEffect(() => {\n cbRef.current = _cb;\n }, [_cb]);\n const cb = React.useCallback<typeof _cb>((e) => cbRef.current && cbRef.current(e), []);\n\n const detach = React.useRef(noop);\n const remove = React.useCallback(() => {\n detach.current();\n detach.current = noop;\n }, []);\n const add = React.useCallback((el: HTMLElement | Document) => {\n if (!canUseDOM) {\n return;\n }\n remove();\n if (!el) {\n return;\n }\n const options = { ..._options };\n el.addEventListener(event, cb, options);\n detach.current = () => el.removeEventListener(event, cb, options);\n }, []);\n React.useEffect(() => remove, []);\n\n return { add, remove };\n}\n"],"file":"useEventListener.js"}
@@ -1,8 +1,8 @@
1
- import * as React from 'react';
1
+ import { useIsomorphicLayoutEffect } from "../lib/useIsomorphicLayoutEffect";
2
2
  import { useEventListener } from "./useEventListener";
3
3
  export function useGlobalEventListener(element, event, cb, options) {
4
4
  var listener = useEventListener(event, cb, options);
5
- React.useEffect(function () {
5
+ useIsomorphicLayoutEffect(function () {
6
6
  return cb ? listener.add(element) : listener.remove();
7
7
  }, [Boolean(cb)]);
8
8
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/useGlobalEventListener.ts"],"names":["React","useEventListener","useGlobalEventListener","element","event","cb","options","listener","useEffect","add","remove","Boolean"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,gBAAT;AAcA,OAAO,SAASC,sBAAT,CAAgCC,OAAhC,EAA8CC,KAA9C,EAA6DC,EAA7D,EAAqFC,OAArF,EAAwH;AAC7H,MAAMC,QAAQ,GAAGN,gBAAgB,CAACG,KAAD,EAAQC,EAAR,EAAYC,OAAZ,CAAjC;AACAN,EAAAA,KAAK,CAACQ,SAAN,CAAgB;AAAA,WAAMH,EAAE,GAAGE,QAAQ,CAACE,GAAT,CAAaN,OAAb,CAAH,GAA2BI,QAAQ,CAACG,MAAT,EAAnC;AAAA,GAAhB,EAAsE,CAACC,OAAO,CAACN,EAAD,CAAR,CAAtE;AACD","sourcesContent":["import * as React from 'react';\nimport { useEventListener } from './useEventListener';\n\nexport function useGlobalEventListener<K extends keyof GlobalEventHandlersEventMap>(\n element: HTMLElement | HTMLDocument | Window,\n event: K,\n cb: false | null | ((ev: GlobalEventHandlersEventMap[K]) => any),\n options?: AddEventListenerOptions,\n): void;\nexport function useGlobalEventListener(\n element: HTMLElement | HTMLDocument | Window,\n event: string,\n cb: false | null | ((ev: Event) => any),\n options?: AddEventListenerOptions,\n): void;\nexport function useGlobalEventListener(element: any, event: string, cb: (ev: Event) => any, options?: AddEventListenerOptions) {\n const listener = useEventListener(event, cb, options);\n React.useEffect(() => cb ? listener.add(element) : listener.remove(), [Boolean(cb)]);\n}\n"],"file":"useGlobalEventListener.js"}
1
+ {"version":3,"sources":["../../../src/hooks/useGlobalEventListener.ts"],"names":["useIsomorphicLayoutEffect","useEventListener","useGlobalEventListener","element","event","cb","options","listener","add","remove","Boolean"],"mappings":"AAAA,SAASA,yBAAT;AACA,SAASC,gBAAT;AAcA,OAAO,SAASC,sBAAT,CAAgCC,OAAhC,EAA8CC,KAA9C,EAA6DC,EAA7D,EAAqFC,OAArF,EAAwH;AAC7H,MAAMC,QAAQ,GAAGN,gBAAgB,CAACG,KAAD,EAAQC,EAAR,EAAYC,OAAZ,CAAjC;AACAN,EAAAA,yBAAyB,CAAC;AAAA,WAAMK,EAAE,GAAGE,QAAQ,CAACC,GAAT,CAAaL,OAAb,CAAH,GAA2BI,QAAQ,CAACE,MAAT,EAAnC;AAAA,GAAD,EAAuD,CAACC,OAAO,CAACL,EAAD,CAAR,CAAvD,CAAzB;AACD","sourcesContent":["import { useIsomorphicLayoutEffect } from '../lib/useIsomorphicLayoutEffect';\nimport { useEventListener } from './useEventListener';\n\nexport function useGlobalEventListener<K extends keyof GlobalEventHandlersEventMap>(\n element: HTMLElement | HTMLDocument | Window,\n event: K,\n cb: false | null | ((ev: GlobalEventHandlersEventMap[K]) => any),\n options?: AddEventListenerOptions,\n): void;\nexport function useGlobalEventListener(\n element: HTMLElement | HTMLDocument | Window,\n event: string,\n cb: false | null | ((ev: Event) => any),\n options?: AddEventListenerOptions,\n): void;\nexport function useGlobalEventListener(element: any, event: string, cb: (ev: Event) => any, options?: AddEventListenerOptions) {\n const listener = useEventListener(event, cb, options);\n useIsomorphicLayoutEffect(() => cb ? listener.add(element) : listener.remove(), [Boolean(cb)]);\n}\n"],"file":"useGlobalEventListener.js"}