@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/View/ViewInfinite.tsx"],"names":["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","IOS","isWebView","startX","innerWidth","browserSwipe","onSwipeBack","swipingBack","history","length","prevScrolls","getScroll","y","swipebackStartX","startT","swipeBackPrevPanel","swipeBackShift","shiftX","speed","Date","now","getTime","React","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","transitionEvent","supported","removeEventListener","name","addEventListener","clearTimeout","transitionFinishTimeout","setTimeout","ANDROID","VKCOM","shouldDisableTransitionMotion","animationEvent","animationFinishTimeout","activeElement","blur","panelNodes","panelId","canUseDOM","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","_1","nav","restProps","hasPopout","hasModal","filter","sort","isPrevPanel","isNextPanel","disableAnimation","modifiers","onMoveX","onEnd","el","calcPanelSwipeStyles","Component","SplitColContext","ConfigProviderContext","ScrollContext"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { transitionEvent, animationEvent } from '../../lib/supportEvents';\nimport { getClassName } from '../../helpers/getClassName';\nimport { IOS, ANDROID, VKCOM } from '../../lib/platform';\nimport Touch, { TouchEvent } from '../Touch/Touch';\nimport { HasPlatform } from '../../types';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { withContext } from '../../hoc/withContext';\nimport { ConfigProviderContext, ConfigProviderContextInterface } from '../ConfigProvider/ConfigProviderContext';\nimport { 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":["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","IOS","isWebView","startX","innerWidth","browserSwipe","onSwipeBack","swipingBack","history","length","prevScrolls","getScroll","y","swipebackStartX","startT","swipeBackPrevPanel","swipeBackShift","shiftX","speed","Date","now","getTime","React","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","transitionEvent","supported","removeEventListener","name","addEventListener","clearTimeout","transitionFinishTimeout","setTimeout","ANDROID","VKCOM","shouldDisableTransitionMotion","animationEvent","animationFinishTimeout","activeElement","blur","panelNodes","panelId","canUseDOM","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","_1","nav","restProps","hasPopout","hasModal","filter","sort","isPrevPanel","isNextPanel","disableAnimation","modifiers","onMoveX","onEnd","el","calcPanelSwipeStyles","Component","SplitColContext","ConfigProviderContext","ScrollContext"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { transitionEvent, animationEvent } from '../../lib/supportEvents';\nimport { getClassName } from '../../helpers/getClassName';\nimport { IOS, ANDROID, VKCOM } from '../../lib/platform';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport { HasPlatform } from '../../types';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { withContext } from '../../hoc/withContext';\nimport { ConfigProviderContext, ConfigProviderContextInterface } from '../ConfigProvider/ConfigProviderContext';\nimport { 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,6 +1,6 @@
1
1
  interface EventListenerHandle {
2
- add(el: HTMLElement | Document): void;
3
- remove(): void;
2
+ add: (el: HTMLElement | Document) => void;
3
+ remove: () => void;
4
4
  }
5
5
  export declare function useEventListener<K extends keyof GlobalEventHandlersEventMap>(event: K, _cb: (ev: GlobalEventHandlersEventMap[K]) => any, _options?: AddEventListenerOptions): EventListenerHandle;
6
6
  export declare function useEventListener(event: string, _cb: (ev: Event) => any, _options?: AddEventListenerOptions): EventListenerHandle;
@@ -25,11 +25,12 @@ function useEventListener(event, _cb, _options) {
25
25
  cbRef.current = _cb;
26
26
  }, [_cb]);
27
27
  var cb = React.useCallback(function (e) {
28
- return cbRef.current(e);
28
+ return cbRef.current && cbRef.current(e);
29
29
  }, []);
30
30
  var detach = React.useRef(_utils.noop);
31
31
  var remove = React.useCallback(function () {
32
- return detach.current();
32
+ detach.current();
33
+ detach.current = _utils.noop;
33
34
  }, []);
34
35
  var add = React.useCallback(function (el) {
35
36
  if (!_dom.canUseDOM) {
@@ -37,12 +38,16 @@ function useEventListener(event, _cb, _options) {
37
38
  }
38
39
 
39
40
  remove();
41
+
42
+ if (!el) {
43
+ return;
44
+ }
45
+
40
46
  var options = (0, _objectSpread2.default)({}, _options);
41
47
  el.addEventListener(event, cb, options);
42
48
 
43
49
  detach.current = function () {
44
- el.removeEventListener(event, cb, options);
45
- detach.current = _utils.noop;
50
+ return el.removeEventListener(event, cb, options);
46
51
  };
47
52
  }, []);
48
53
  React.useEffect(function () {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/useEventListener.ts"],"names":["useEventListener","event","_cb","_options","cbRef","React","useRef","current","cb","useCallback","e","detach","noop","remove","add","el","canUseDOM","options","addEventListener","removeEventListener","useEffect"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAaO,SAASA,gBAAT,CAA0BC,KAA1B,EAAyCC,GAAzC,EAAkEC,QAAlE,EAAsG;AAC3G,MAAMC,KAAK,GAAGC,KAAK,CAACC,MAAN,CAAaJ,GAAb,CAAd;AACA,4DAA0B,YAAM;AAC9BE,IAAAA,KAAK,CAACG,OAAN,GAAgBL,GAAhB;AACD,GAFD,EAEG,CAACA,GAAD,CAFH;AAGA,MAAMM,EAAE,GAAGH,KAAK,CAACI,WAAN,CAA8B,UAACC,CAAD;AAAA,WAAON,KAAK,CAACG,OAAN,CAAcG,CAAd,CAAP;AAAA,GAA9B,EAAuD,EAAvD,CAAX;AAEA,MAAMC,MAAM,GAAGN,KAAK,CAACC,MAAN,CAAaM,WAAb,CAAf;AACA,MAAMC,MAAM,GAAGR,KAAK,CAACI,WAAN,CAAkB;AAAA,WAAME,MAAM,CAACJ,OAAP,EAAN;AAAA,GAAlB,EAA0C,EAA1C,CAAf;AACA,MAAMO,GAAG,GAAGT,KAAK,CAACI,WAAN,CAAkB,UAACM,EAAD,EAAgC;AAC5D,QAAI,CAACC,cAAL,EAAgB;AACd;AACD;;AACDH,IAAAA,MAAM;AACN,QAAMI,OAAO,mCAAQd,QAAR,CAAb;AACAY,IAAAA,EAAE,CAACG,gBAAH,CAAoBjB,KAApB,EAA2BO,EAA3B,EAA+BS,OAA/B;;AACAN,IAAAA,MAAM,CAACJ,OAAP,GAAiB,YAAM;AACrBQ,MAAAA,EAAE,CAACI,mBAAH,CAAuBlB,KAAvB,EAA8BO,EAA9B,EAAkCS,OAAlC;AACAN,MAAAA,MAAM,CAACJ,OAAP,GAAiBK,WAAjB;AACD,KAHD;AAID,GAXW,EAWT,EAXS,CAAZ;AAYAP,EAAAA,KAAK,CAACe,SAAN,CAAgB;AAAA,WAAMP,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":["useEventListener","event","_cb","_options","cbRef","React","useRef","current","cb","useCallback","e","detach","noop","remove","add","el","canUseDOM","options","addEventListener","removeEventListener","useEffect"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAaO,SAASA,gBAAT,CAA0BC,KAA1B,EAAyCC,GAAzC,EAAkEC,QAAlE,EAAsG;AAC3G,MAAMC,KAAK,GAAGC,KAAK,CAACC,MAAN,CAAaJ,GAAb,CAAd;AACA,4DAA0B,YAAM;AAC9BE,IAAAA,KAAK,CAACG,OAAN,GAAgBL,GAAhB;AACD,GAFD,EAEG,CAACA,GAAD,CAFH;AAGA,MAAMM,EAAE,GAAGH,KAAK,CAACI,WAAN,CAA8B,UAACC,CAAD;AAAA,WAAON,KAAK,CAACG,OAAN,IAAiBH,KAAK,CAACG,OAAN,CAAcG,CAAd,CAAxB;AAAA,GAA9B,EAAwE,EAAxE,CAAX;AAEA,MAAMC,MAAM,GAAGN,KAAK,CAACC,MAAN,CAAaM,WAAb,CAAf;AACA,MAAMC,MAAM,GAAGR,KAAK,CAACI,WAAN,CAAkB,YAAM;AACrCE,IAAAA,MAAM,CAACJ,OAAP;AACAI,IAAAA,MAAM,CAACJ,OAAP,GAAiBK,WAAjB;AACD,GAHc,EAGZ,EAHY,CAAf;AAIA,MAAME,GAAG,GAAGT,KAAK,CAACI,WAAN,CAAkB,UAACM,EAAD,EAAgC;AAC5D,QAAI,CAACC,cAAL,EAAgB;AACd;AACD;;AACDH,IAAAA,MAAM;;AACN,QAAI,CAACE,EAAL,EAAS;AACP;AACD;;AACD,QAAME,OAAO,mCAAQd,QAAR,CAAb;AACAY,IAAAA,EAAE,CAACG,gBAAH,CAAoBjB,KAApB,EAA2BO,EAA3B,EAA+BS,OAA/B;;AACAN,IAAAA,MAAM,CAACJ,OAAP,GAAiB;AAAA,aAAMQ,EAAE,CAACI,mBAAH,CAAuBlB,KAAvB,EAA8BO,EAA9B,EAAkCS,OAAlC,CAAN;AAAA,KAAjB;AACD,GAXW,EAWT,EAXS,CAAZ;AAYAZ,EAAAA,KAAK,CAACe,SAAN,CAAgB;AAAA,WAAMP,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,19 +1,17 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
6
  exports.useGlobalEventListener = useGlobalEventListener;
9
7
 
10
- var React = _interopRequireWildcard(require("react"));
8
+ var _useIsomorphicLayoutEffect = require("../lib/useIsomorphicLayoutEffect");
11
9
 
12
10
  var _useEventListener = require("./useEventListener");
13
11
 
14
12
  function useGlobalEventListener(element, event, cb, options) {
15
13
  var listener = (0, _useEventListener.useEventListener)(event, cb, options);
16
- React.useEffect(function () {
14
+ (0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(function () {
17
15
  return cb ? listener.add(element) : listener.remove();
18
16
  }, [Boolean(cb)]);
19
17
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/useGlobalEventListener.ts"],"names":["useGlobalEventListener","element","event","cb","options","listener","React","useEffect","add","remove","Boolean"],"mappings":";;;;;;;;;AAAA;;AACA;;AAcO,SAASA,sBAAT,CAAgCC,OAAhC,EAA8CC,KAA9C,EAA6DC,EAA7D,EAAqFC,OAArF,EAAwH;AAC7H,MAAMC,QAAQ,GAAG,wCAAiBH,KAAjB,EAAwBC,EAAxB,EAA4BC,OAA5B,CAAjB;AACAE,EAAAA,KAAK,CAACC,SAAN,CAAgB;AAAA,WAAMJ,EAAE,GAAGE,QAAQ,CAACG,GAAT,CAAaP,OAAb,CAAH,GAA2BI,QAAQ,CAACI,MAAT,EAAnC;AAAA,GAAhB,EAAsE,CAACC,OAAO,CAACP,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":["useGlobalEventListener","element","event","cb","options","listener","add","remove","Boolean"],"mappings":";;;;;;;AAAA;;AACA;;AAcO,SAASA,sBAAT,CAAgCC,OAAhC,EAA8CC,KAA9C,EAA6DC,EAA7D,EAAqFC,OAArF,EAAwH;AAC7H,MAAMC,QAAQ,GAAG,wCAAiBH,KAAjB,EAAwBC,EAAxB,EAA4BC,OAA5B,CAAjB;AACA,4DAA0B;AAAA,WAAMD,EAAE,GAAGE,QAAQ,CAACC,GAAT,CAAaL,OAAb,CAAH,GAA2BI,QAAQ,CAACE,MAAT,EAAnC;AAAA,GAA1B,EAAgF,CAACC,OAAO,CAACL,EAAD,CAAR,CAAhF;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"}
@@ -17,6 +17,8 @@ var React = _interopRequireWildcard(require("react"));
17
17
 
18
18
  var _vkBridge = _interopRequireDefault(require("@vkontakte/vk-bridge"));
19
19
 
20
+ var _useIsomorphicLayoutEffect = require("../lib/useIsomorphicLayoutEffect");
21
+
20
22
  var initialState = {
21
23
  bottom: null,
22
24
  top: null,
@@ -51,15 +53,6 @@ _vkBridge.default.subscribe(function (e) {
51
53
  var insets = resolveInsets(e);
52
54
 
53
55
  if (insets) {
54
- // eslint-disable-next-line no-restricted-globals
55
- var htmlElement = document.documentElement;
56
-
57
- for (var key in insets) {
58
- if (insets.hasOwnProperty(key) && (insets[key] > 0 || key === 'bottom')) {
59
- htmlElement.style.setProperty("--safe-area-inset-".concat(key), "".concat(insets[key], "px"));
60
- }
61
- }
62
-
63
56
  initialState = insets;
64
57
  }
65
58
  });
@@ -70,7 +63,7 @@ function useInsets() {
70
63
  insets = _React$useState2[0],
71
64
  setInsets = _React$useState2[1];
72
65
 
73
- React.useEffect(function () {
66
+ (0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(function () {
74
67
  function connectListener(e) {
75
68
  var insets = resolveInsets(e);
76
69
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/useInsets.ts"],"names":["initialState","bottom","top","left","right","resolveInsets","e","detail","type","data","insets","vkBridge","subscribe","htmlElement","document","documentElement","key","hasOwnProperty","style","setProperty","useInsets","React","useState","setInsets","useEffect","connectListener","unsubscribe"],"mappings":";;;;;;;;;;;;;;;AAAA;;AACA;;AAEA,IAAIA,YAAoB,GAAG;AACzBC,EAAAA,MAAM,EAAE,IADiB;AAEzBC,EAAAA,GAAG,EAAE,IAFoB;AAGzBC,EAAAA,IAAI,EAAE,IAHmB;AAIzBC,EAAAA,KAAK,EAAE;AAJkB,CAA3B;;AAgBA,SAASC,aAAT,CAAuBC,CAAvB,EAAsD;AACpD,kBAAuBA,CAAC,CAACC,MAAzB;AAAA,MAAQC,IAAR,aAAQA,IAAR;AAAA,MAAcC,IAAd,aAAcA,IAAd;;AACA,UAAQD,IAAR;AACE,SAAK,sBAAL;AACA,SAAK,sBAAL;AAA6B;AAC3B,UAAQE,MAAR,GAAmBD,IAAnB,CAAQC,MAAR;;AACA,UAAIA,MAAJ,EAAY;AACV,2EACKA,MADL;AAEET,UAAAA,MAAM,EAAES,MAAM,CAACT,MAAP,GAAgB,GAAhB,GAAsB,CAAtB,GAA0BS,MAAM,CAACT,MAF3C,CAEmD;;AAFnD;AAID;;AATL;;AAWA,SAAO,IAAP;AACD;;AAEDU,kBAASC,SAAT,CAAmB,UAACN,CAAD,EAAoB;AACrC,MAAMI,MAAM,GAAGL,aAAa,CAACC,CAAD,CAA5B;;AACA,MAAII,MAAJ,EAAY;AACV;AACA,QAAMG,WAAW,GAAGC,QAAQ,CAACC,eAA7B;;AACA,SAAK,IAAIC,GAAT,IAAgBN,MAAhB,EAAwB;AACtB,UAAIA,MAAM,CAACO,cAAP,CAAsBD,GAAtB,MAA+BN,MAAM,CAACM,GAAD,CAAN,GAA8B,CAA9B,IAAmCA,GAAG,KAAK,QAA1E,CAAJ,EAAyF;AACvFH,QAAAA,WAAW,CAACK,KAAZ,CAAkBC,WAAlB,6BAAmDH,GAAnD,aAA6DN,MAAM,CAACM,GAAD,CAAnE;AACD;AACF;;AACDhB,IAAAA,YAAY,GAAGU,MAAf;AACD;AACF,CAZD;;AAcO,SAASU,SAAT,GAA6B;AAClC,wBAA4BC,KAAK,CAACC,QAAN,CAAuBtB,YAAvB,CAA5B;AAAA;AAAA,MAAOU,MAAP;AAAA,MAAea,SAAf;;AAEAF,EAAAA,KAAK,CAACG,SAAN,CAAgB,YAAM;AACpB,aAASC,eAAT,CAAyBnB,CAAzB,EAAyC;AACvC,UAAMI,MAAM,GAAGL,aAAa,CAACC,CAAD,CAA5B;;AACA,UAAII,MAAJ,EAAY;AACVa,QAAAA,SAAS,CAACb,MAAD,CAAT;AACD;AACF;;AAEDC,sBAASC,SAAT,CAAmBa,eAAnB;;AACA,WAAO,YAAM;AACXd,wBAASe,WAAT,CAAqBD,eAArB;AACD,KAFD;AAGD,GAZD,EAYG,EAZH;AAcA,SAAOf,MAAP;AACD","sourcesContent":["import * as React from 'react';\nimport vkBridge, { Insets } from '@vkontakte/vk-bridge';\n\nlet initialState: Insets = {\n bottom: null,\n top: null,\n left: null,\n right: null,\n};\n\ninterface BridgeEvent {\n detail: {\n type: string;\n data: {\n [index: string]: any;\n };\n };\n}\n\nfunction resolveInsets(e: BridgeEvent): Insets | null {\n const { type, data } = e.detail;\n switch (type) {\n case 'VKWebAppUpdateConfig':\n case 'VKWebAppUpdateInsets': // Устаревшее событие vk-bridge\n const { insets } = data;\n if (insets) {\n return {\n ...insets,\n bottom: insets.bottom > 150 ? 0 : insets.bottom, // если больше 150 – значит открылась клава и она сама работает как инсет, то есть наш нужно занулить\n };\n }\n }\n return null;\n}\n\nvkBridge.subscribe((e: BridgeEvent) => {\n const insets = resolveInsets(e);\n if (insets) {\n // eslint-disable-next-line no-restricted-globals\n const htmlElement = document.documentElement;\n for (let key in insets) {\n if (insets.hasOwnProperty(key) && (insets[key as keyof Insets] > 0 || key === 'bottom')) {\n htmlElement.style.setProperty(`--safe-area-inset-${key}`, `${insets[key as keyof Insets]}px`);\n }\n }\n initialState = insets;\n }\n});\n\nexport function useInsets(): Insets {\n const [insets, setInsets] = React.useState<Insets>(initialState);\n\n React.useEffect(() => {\n function connectListener(e: BridgeEvent) {\n const insets = resolveInsets(e);\n if (insets) {\n setInsets(insets);\n }\n }\n\n vkBridge.subscribe(connectListener);\n return () => {\n vkBridge.unsubscribe(connectListener);\n };\n }, []);\n\n return insets;\n}\n"],"file":"useInsets.js"}
1
+ {"version":3,"sources":["../../../src/hooks/useInsets.ts"],"names":["initialState","bottom","top","left","right","resolveInsets","e","detail","type","data","insets","vkBridge","subscribe","useInsets","React","useState","setInsets","connectListener","unsubscribe"],"mappings":";;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA,IAAIA,YAAoB,GAAG;AACzBC,EAAAA,MAAM,EAAE,IADiB;AAEzBC,EAAAA,GAAG,EAAE,IAFoB;AAGzBC,EAAAA,IAAI,EAAE,IAHmB;AAIzBC,EAAAA,KAAK,EAAE;AAJkB,CAA3B;;AAgBA,SAASC,aAAT,CAAuBC,CAAvB,EAAsD;AACpD,kBAAuBA,CAAC,CAACC,MAAzB;AAAA,MAAQC,IAAR,aAAQA,IAAR;AAAA,MAAcC,IAAd,aAAcA,IAAd;;AACA,UAAQD,IAAR;AACE,SAAK,sBAAL;AACA,SAAK,sBAAL;AAA6B;AAC3B,UAAQE,MAAR,GAAmBD,IAAnB,CAAQC,MAAR;;AACA,UAAIA,MAAJ,EAAY;AACV,2EACKA,MADL;AAEET,UAAAA,MAAM,EAAES,MAAM,CAACT,MAAP,GAAgB,GAAhB,GAAsB,CAAtB,GAA0BS,MAAM,CAACT,MAF3C,CAEmD;;AAFnD;AAID;;AATL;;AAWA,SAAO,IAAP;AACD;;AAEDU,kBAASC,SAAT,CAAmB,UAACN,CAAD,EAAoB;AACrC,MAAMI,MAAM,GAAGL,aAAa,CAACC,CAAD,CAA5B;;AACA,MAAII,MAAJ,EAAY;AACVV,IAAAA,YAAY,GAAGU,MAAf;AACD;AACF,CALD;;AAOO,SAASG,SAAT,GAA6B;AAClC,wBAA4BC,KAAK,CAACC,QAAN,CAAuBf,YAAvB,CAA5B;AAAA;AAAA,MAAOU,MAAP;AAAA,MAAeM,SAAf;;AAEA,4DAA0B,YAAM;AAC9B,aAASC,eAAT,CAAyBX,CAAzB,EAAyC;AACvC,UAAMI,MAAM,GAAGL,aAAa,CAACC,CAAD,CAA5B;;AACA,UAAII,MAAJ,EAAY;AACVM,QAAAA,SAAS,CAACN,MAAD,CAAT;AACD;AACF;;AAEDC,sBAASC,SAAT,CAAmBK,eAAnB;;AACA,WAAO,YAAM;AACXN,wBAASO,WAAT,CAAqBD,eAArB;AACD,KAFD;AAGD,GAZD,EAYG,EAZH;AAcA,SAAOP,MAAP;AACD","sourcesContent":["import * as React from 'react';\nimport vkBridge, { Insets } from '@vkontakte/vk-bridge';\nimport { useIsomorphicLayoutEffect } from '../lib/useIsomorphicLayoutEffect';\n\nlet initialState: Insets = {\n bottom: null,\n top: null,\n left: null,\n right: null,\n};\n\ninterface BridgeEvent {\n detail: {\n type: string;\n data: {\n [index: string]: any;\n };\n };\n}\n\nfunction resolveInsets(e: BridgeEvent): Insets | null {\n const { type, data } = e.detail;\n switch (type) {\n case 'VKWebAppUpdateConfig':\n case 'VKWebAppUpdateInsets': // Устаревшее событие vk-bridge\n const { insets } = data;\n if (insets) {\n return {\n ...insets,\n bottom: insets.bottom > 150 ? 0 : insets.bottom, // если больше 150 – значит открылась клава и она сама работает как инсет, то есть наш нужно занулить\n };\n }\n }\n return null;\n}\n\nvkBridge.subscribe((e: BridgeEvent) => {\n const insets = resolveInsets(e);\n if (insets) {\n initialState = insets;\n }\n});\n\nexport function useInsets(): Insets {\n const [insets, setInsets] = React.useState<Insets>(initialState);\n\n useIsomorphicLayoutEffect(() => {\n function connectListener(e: BridgeEvent) {\n const insets = resolveInsets(e);\n if (insets) {\n setInsets(insets);\n }\n }\n\n vkBridge.subscribe(connectListener);\n return () => {\n vkBridge.unsubscribe(connectListener);\n };\n }, []);\n\n return insets;\n}\n"],"file":"useInsets.js"}
@@ -0,0 +1,11 @@
1
+ interface SoftwareKeyboardState {
2
+ isOpened: boolean;
3
+ isPrecise: boolean;
4
+ }
5
+ /**
6
+ Проверяет, закрыла ли клавиатура часть экрана, 24% подошло к большиству устройств
7
+ Работает на iOS и Android, где софт-клавиатура ресайзит viewport в браузерах
8
+ */
9
+ export declare function getPreciseKeyboardState(window: any): boolean;
10
+ export declare function useKeyboard(): SoftwareKeyboardState;
11
+ export {};
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.getPreciseKeyboardState = getPreciseKeyboardState;
11
+ exports.useKeyboard = useKeyboard;
12
+
13
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
14
+
15
+ var React = _interopRequireWildcard(require("react"));
16
+
17
+ var _dom = require("../lib/dom");
18
+
19
+ var _useGlobalEventListener = require("./useGlobalEventListener");
20
+
21
+ /**
22
+ Проверяет, закрыла ли клавиатура часть экрана, 24% подошло к большиству устройств
23
+ Работает на iOS и Android, где софт-клавиатура ресайзит viewport в браузерах
24
+ */
25
+ function getPreciseKeyboardState(window) {
26
+ var availHeight = window.screen.availHeight;
27
+ var innerHeight = window.innerHeight;
28
+ var coveredViewportPercentage = Math.round((1 - innerHeight / availHeight) * 100);
29
+ return coveredViewportPercentage > 24;
30
+ }
31
+
32
+ function useKeyboard() {
33
+ var _useDOM = (0, _dom.useDOM)(),
34
+ window = _useDOM.window,
35
+ document = _useDOM.document;
36
+
37
+ var _React$useState = React.useState({
38
+ isOpened: false,
39
+ isPrecise: false
40
+ }),
41
+ _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
42
+ keyboardState = _React$useState2[0],
43
+ setKeyboardState = _React$useState2[1];
44
+
45
+ var transitionalTimeout = React.useRef(null);
46
+ var eventOptions = {
47
+ passive: true,
48
+ capture: false
49
+ };
50
+ /**
51
+ У полей с autoFocus не отлавливаются события focus, для этого вызываем вручную,
52
+ чтобы иметь хоть какое-то понимание происходящего.
53
+ */
54
+
55
+ React.useEffect(function () {
56
+ onFocus(true);
57
+ }, [onFocus]);
58
+
59
+ function onFocus(event) {
60
+ var _document$activeEleme, _document$activeEleme2;
61
+
62
+ clearTimeout(transitionalTimeout.current);
63
+ var returnObject = {
64
+ isOpened: (event === true || event.type === 'focusin') && (((_document$activeEleme = document.activeElement) === null || _document$activeEleme === void 0 ? void 0 : _document$activeEleme.tagName) === 'INPUT' || ((_document$activeEleme2 = document.activeElement) === null || _document$activeEleme2 === void 0 ? void 0 : _document$activeEleme2.tagName) === 'TEXTAREA'),
65
+ isPrecise: false
66
+ }; // Ожидаем прохождение анимации раскрытия клавиатуры
67
+
68
+ transitionalTimeout.current = setTimeout(function () {
69
+ returnObject.isPrecise = getPreciseKeyboardState(window);
70
+ setKeyboardState(returnObject);
71
+ }, 300);
72
+ }
73
+
74
+ (0, _useGlobalEventListener.useGlobalEventListener)(document, 'focusout', onFocus, eventOptions);
75
+ (0, _useGlobalEventListener.useGlobalEventListener)(document, 'focusin', onFocus, eventOptions);
76
+ return keyboardState;
77
+ }
78
+ //# sourceMappingURL=useKeyboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/hooks/useKeyboard.ts"],"names":["getPreciseKeyboardState","window","availHeight","screen","innerHeight","coveredViewportPercentage","Math","round","useKeyboard","document","React","useState","isOpened","isPrecise","keyboardState","setKeyboardState","transitionalTimeout","useRef","eventOptions","passive","capture","useEffect","onFocus","event","clearTimeout","current","returnObject","type","activeElement","tagName","setTimeout"],"mappings":";;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAOA;AACA;AACA;AACA;AACO,SAASA,uBAAT,CAAiCC,MAAjC,EAAuD;AAC5D,MAAQC,WAAR,GAAwBD,MAAM,CAACE,MAA/B,CAAQD,WAAR;AACA,MAAQE,WAAR,GAAwBH,MAAxB,CAAQG,WAAR;AAEA,MAAMC,yBAAyB,GAAGC,IAAI,CAACC,KAAL,CAAW,CAAC,IAAIH,WAAW,GAAGF,WAAnB,IAAkC,GAA7C,CAAlC;AACA,SAAOG,yBAAyB,GAAG,EAAnC;AACD;;AAEM,SAASG,WAAT,GAA8C;AACnD,gBAA6B,kBAA7B;AAAA,MAAQP,MAAR,WAAQA,MAAR;AAAA,MAAgBQ,QAAhB,WAAgBA,QAAhB;;AAEA,wBAA0CC,KAAK,CAACC,QAAN,CAAsC;AAC9EC,IAAAA,QAAQ,EAAE,KADoE;AAE9EC,IAAAA,SAAS,EAAE;AAFmE,GAAtC,CAA1C;AAAA;AAAA,MAAOC,aAAP;AAAA,MAAsBC,gBAAtB;;AAKA,MAAMC,mBAAmB,GAAGN,KAAK,CAACO,MAAN,CAAmD,IAAnD,CAA5B;AAEA,MAAMC,YAAY,GAAG;AACnBC,IAAAA,OAAO,EAAE,IADU;AAEnBC,IAAAA,OAAO,EAAE;AAFU,GAArB;AAKA;AACF;AACA;AACA;;AACEV,EAAAA,KAAK,CAACW,SAAN,CAAgB,YAAM;AACpBC,IAAAA,OAAO,CAAC,IAAD,CAAP;AACD,GAFD,EAEG,CAACA,OAAD,CAFH;;AAIA,WAASA,OAAT,CAAiBC,KAAjB,EAA2C;AAAA;;AACzCC,IAAAA,YAAY,CAACR,mBAAmB,CAACS,OAArB,CAAZ;AAEA,QAAIC,YAAY,GAAG;AACjBd,MAAAA,QAAQ,EAAE,CAACW,KAAK,KAAK,IAAV,IAAkBA,KAAK,CAACI,IAAN,KAAe,SAAlC,MACR,0BAAAlB,QAAQ,CAACmB,aAAT,gFAAwBC,OAAxB,MAAoC,OAApC,IACA,2BAAApB,QAAQ,CAACmB,aAAT,kFAAwBC,OAAxB,MAAoC,UAF5B,CADO;AAKjBhB,MAAAA,SAAS,EAAE;AALM,KAAnB,CAHyC,CAWzC;;AACAG,IAAAA,mBAAmB,CAACS,OAApB,GAA8BK,UAAU,CAAC,YAAM;AAC7CJ,MAAAA,YAAY,CAACb,SAAb,GAAyBb,uBAAuB,CAACC,MAAD,CAAhD;AACAc,MAAAA,gBAAgB,CAACW,YAAD,CAAhB;AACD,KAHuC,EAGrC,GAHqC,CAAxC;AAID;;AAED,sDAAuBjB,QAAvB,EAAiC,UAAjC,EAA6Ca,OAA7C,EAAsDJ,YAAtD;AACA,sDAAuBT,QAAvB,EAAiC,SAAjC,EAA4Ca,OAA5C,EAAqDJ,YAArD;AAEA,SAAOJ,aAAP;AACD","sourcesContent":["import * as React from 'react';\nimport { useDOM } from '../lib/dom';\nimport { useGlobalEventListener } from './useGlobalEventListener';\n\ninterface SoftwareKeyboardState {\n isOpened: boolean;\n isPrecise: boolean;\n}\n\n/**\n Проверяет, закрыла ли клавиатура часть экрана, 24% подошло к большиству устройств\n Работает на iOS и Android, где софт-клавиатура ресайзит viewport в браузерах\n */\nexport function getPreciseKeyboardState(window: any): boolean {\n const { availHeight } = window.screen;\n const { innerHeight } = window;\n\n const coveredViewportPercentage = Math.round((1 - innerHeight / availHeight) * 100);\n return coveredViewportPercentage > 24;\n}\n\nexport function useKeyboard(): SoftwareKeyboardState {\n const { window, document } = useDOM();\n\n const [keyboardState, setKeyboardState] = React.useState<SoftwareKeyboardState>({\n isOpened: false,\n isPrecise: false,\n });\n\n const transitionalTimeout = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const eventOptions = {\n passive: true,\n capture: false,\n };\n\n /**\n У полей с autoFocus не отлавливаются события focus, для этого вызываем вручную,\n чтобы иметь хоть какое-то понимание происходящего.\n */\n React.useEffect(() => {\n onFocus(true);\n }, [onFocus]);\n\n function onFocus(event: FocusEvent | true) {\n clearTimeout(transitionalTimeout.current);\n\n let returnObject = {\n isOpened: (event === true || event.type === 'focusin') && (\n document.activeElement?.tagName === 'INPUT' ||\n document.activeElement?.tagName === 'TEXTAREA'\n ),\n isPrecise: false,\n };\n\n // Ожидаем прохождение анимации раскрытия клавиатуры\n transitionalTimeout.current = setTimeout(() => {\n returnObject.isPrecise = getPreciseKeyboardState(window);\n setKeyboardState(returnObject);\n }, 300);\n }\n\n useGlobalEventListener(document, 'focusout', onFocus, eventOptions);\n useGlobalEventListener(document, 'focusin', onFocus, eventOptions);\n\n return keyboardState;\n}\n"],"file":"useKeyboard.js"}
@@ -23,13 +23,15 @@ function useKeyboardInputTracker() {
23
23
  var _useDOM = (0, _dom.useDOM)(),
24
24
  document = _useDOM.document;
25
25
 
26
- var _React$useState = React.useState(true),
26
+ var _React$useState = React.useState(false),
27
27
  _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
28
28
  isKeyboardInputActive = _React$useState2[0],
29
29
  toggleKeyboardInput = _React$useState2[1];
30
30
 
31
31
  var enableKeyboardInput = React.useCallback(function (e) {
32
- toggleKeyboardInput((0, _accessibility.pressedKey)(e) === _accessibility.Keys.TAB);
32
+ if ((0, _accessibility.pressedKey)(e) === _accessibility.Keys.TAB) {
33
+ toggleKeyboardInput(true);
34
+ }
33
35
  }, []);
34
36
  var disableKeyboardInput = React.useCallback(function () {
35
37
  toggleKeyboardInput(false);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/useKeyboardInputTracker.ts"],"names":["useKeyboardInputTracker","document","React","useState","isKeyboardInputActive","toggleKeyboardInput","enableKeyboardInput","useCallback","e","Keys","TAB","disableKeyboardInput","eventOptions","passive","capture"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEO,SAASA,uBAAT,GAA4C;AACjD,gBAAqB,kBAArB;AAAA,MAAQC,QAAR,WAAQA,QAAR;;AAEA,wBAAqDC,KAAK,CAACC,QAAN,CAAwB,IAAxB,CAArD;AAAA;AAAA,MAAOC,qBAAP;AAAA,MAA8BC,mBAA9B;;AAEA,MAAMC,mBAAmB,GAAGJ,KAAK,CAACK,WAAN,CAAkB,UAACC,CAAD,EAAsB;AAClEH,IAAAA,mBAAmB,CAAC,+BAAWG,CAAX,MAAkBC,oBAAKC,GAAxB,CAAnB;AACD,GAF2B,EAEzB,EAFyB,CAA5B;AAIA,MAAMC,oBAAoB,GAAGT,KAAK,CAACK,WAAN,CAAkB,YAAM;AACnDF,IAAAA,mBAAmB,CAAC,KAAD,CAAnB;AACD,GAF4B,EAE1B,EAF0B,CAA7B;AAIA,MAAMO,YAAY,GAAG;AACnBC,IAAAA,OAAO,EAAE,IADU;AAEnBC,IAAAA,OAAO,EAAE;AAFU,GAArB;AAKA,sDAAuBb,QAAvB,EAAiC,SAAjC,EAA4CK,mBAA5C,EAAiEM,YAAjE;AACA,sDAAuBX,QAAvB,EAAiC,WAAjC,EAA8CU,oBAA9C,EAAoEC,YAApE;AACA,sDAAuBX,QAAvB,EAAiC,YAAjC,EAA+CU,oBAA/C,EAAqEC,YAArE;AAEA,SAAOR,qBAAP;AACD","sourcesContent":["import * as React from 'react';\nimport { Keys, pressedKey } from '../lib/accessibility';\nimport { useDOM } from '../lib/dom';\nimport { useGlobalEventListener } from './useGlobalEventListener';\n\nexport function useKeyboardInputTracker(): boolean {\n const { document } = useDOM();\n\n const [isKeyboardInputActive, toggleKeyboardInput] = React.useState<boolean>(true);\n\n const enableKeyboardInput = React.useCallback((e: KeyboardEvent) => {\n toggleKeyboardInput(pressedKey(e) === Keys.TAB);\n }, []);\n\n const disableKeyboardInput = React.useCallback(() => {\n toggleKeyboardInput(false);\n }, []);\n\n const eventOptions = {\n passive: true,\n capture: true,\n };\n\n useGlobalEventListener(document, 'keydown', enableKeyboardInput, eventOptions);\n useGlobalEventListener(document, 'mousedown', disableKeyboardInput, eventOptions);\n useGlobalEventListener(document, 'touchstart', disableKeyboardInput, eventOptions);\n\n return isKeyboardInputActive;\n}\n"],"file":"useKeyboardInputTracker.js"}
1
+ {"version":3,"sources":["../../../src/hooks/useKeyboardInputTracker.ts"],"names":["useKeyboardInputTracker","document","React","useState","isKeyboardInputActive","toggleKeyboardInput","enableKeyboardInput","useCallback","e","Keys","TAB","disableKeyboardInput","eventOptions","passive","capture"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEO,SAASA,uBAAT,GAA4C;AACjD,gBAAqB,kBAArB;AAAA,MAAQC,QAAR,WAAQA,QAAR;;AAEA,wBAAqDC,KAAK,CAACC,QAAN,CAAwB,KAAxB,CAArD;AAAA;AAAA,MAAOC,qBAAP;AAAA,MAA8BC,mBAA9B;;AAEA,MAAMC,mBAAmB,GAAGJ,KAAK,CAACK,WAAN,CAAkB,UAACC,CAAD,EAAsB;AAClE,QAAI,+BAAWA,CAAX,MAAkBC,oBAAKC,GAA3B,EAAgC;AAC9BL,MAAAA,mBAAmB,CAAC,IAAD,CAAnB;AACD;AACF,GAJ2B,EAIzB,EAJyB,CAA5B;AAMA,MAAMM,oBAAoB,GAAGT,KAAK,CAACK,WAAN,CAAkB,YAAM;AACnDF,IAAAA,mBAAmB,CAAC,KAAD,CAAnB;AACD,GAF4B,EAE1B,EAF0B,CAA7B;AAIA,MAAMO,YAAY,GAAG;AACnBC,IAAAA,OAAO,EAAE,IADU;AAEnBC,IAAAA,OAAO,EAAE;AAFU,GAArB;AAKA,sDAAuBb,QAAvB,EAAiC,SAAjC,EAA4CK,mBAA5C,EAAiEM,YAAjE;AACA,sDAAuBX,QAAvB,EAAiC,WAAjC,EAA8CU,oBAA9C,EAAoEC,YAApE;AACA,sDAAuBX,QAAvB,EAAiC,YAAjC,EAA+CU,oBAA/C,EAAqEC,YAArE;AAEA,SAAOR,qBAAP;AACD","sourcesContent":["import * as React from 'react';\nimport { Keys, pressedKey } from '../lib/accessibility';\nimport { useDOM } from '../lib/dom';\nimport { useGlobalEventListener } from './useGlobalEventListener';\n\nexport function useKeyboardInputTracker(): boolean {\n const { document } = useDOM();\n\n const [isKeyboardInputActive, toggleKeyboardInput] = React.useState<boolean>(false);\n\n const enableKeyboardInput = React.useCallback((e: KeyboardEvent) => {\n if (pressedKey(e) === Keys.TAB) {\n toggleKeyboardInput(true);\n }\n }, []);\n\n const disableKeyboardInput = React.useCallback(() => {\n toggleKeyboardInput(false);\n }, []);\n\n const eventOptions = {\n passive: true,\n capture: true,\n };\n\n useGlobalEventListener(document, 'keydown', enableKeyboardInput, eventOptions);\n useGlobalEventListener(document, 'mousedown', disableKeyboardInput, eventOptions);\n useGlobalEventListener(document, 'touchstart', disableKeyboardInput, eventOptions);\n\n return isKeyboardInputActive;\n}\n"],"file":"useKeyboardInputTracker.js"}
@@ -197,7 +197,7 @@ export { default as Div } from './components/Div/Div';
197
197
  export type { DivProps } from './components/Div/Div';
198
198
  export { default as Tappable } from './components/Tappable/Tappable';
199
199
  export type { TappableProps } from './components/Tappable/Tappable';
200
- export { default as Touch } from './components/Touch/Touch';
200
+ export { Touch } from './components/Touch/Touch';
201
201
  export type { TouchProps } from './components/Touch/Touch';
202
202
  export { default as PanelSpinner } from './components/PanelSpinner/PanelSpinner';
203
203
  export type { PanelSpinnerProps } from './components/PanelSpinner/PanelSpinner';
package/dist/cjs/index.js CHANGED
@@ -554,7 +554,7 @@ Object.defineProperty(exports, "Tappable", {
554
554
  Object.defineProperty(exports, "Touch", {
555
555
  enumerable: true,
556
556
  get: function get() {
557
- return _Touch.default;
557
+ return _Touch.Touch;
558
558
  }
559
559
  });
560
560
  Object.defineProperty(exports, "PanelSpinner", {
@@ -988,7 +988,7 @@ var _Div = _interopRequireDefault(require("./components/Div/Div"));
988
988
 
989
989
  var _Tappable = _interopRequireDefault(require("./components/Tappable/Tappable"));
990
990
 
991
- var _Touch = _interopRequireDefault(require("./components/Touch/Touch"));
991
+ var _Touch = require("./components/Touch/Touch");
992
992
 
993
993
  var _PanelSpinner = _interopRequireDefault(require("./components/PanelSpinner/PanelSpinner"));
994
994