@vkontakte/vkui 4.20.0 → 4.22.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (520) hide show
  1. package/.cache/.eslintcache +1 -1
  2. package/.cache/.stylelintcache +1 -1
  3. package/.cache/.tsbuildinfo +414 -116
  4. package/.cache/ts/src/components/Avatar/Avatar.d.ts +2 -0
  5. package/.cache/ts/src/components/Cell/Cell.d.ts +11 -0
  6. package/.cache/ts/src/components/Cell/CellCheckbox/CellCheckbox.d.ts +5 -0
  7. package/.cache/ts/src/components/Cell/CellDragger/CellDragger.d.ts +6 -0
  8. package/.cache/ts/src/components/Cell/useDraggable.d.ts +13 -0
  9. package/.cache/ts/src/components/CustomSelect/CustomSelect.d.ts +0 -1
  10. package/.cache/ts/src/components/DropdownIcon/DropdownIcon.d.ts +3 -0
  11. package/.cache/ts/src/components/FocusTrap/FocusTrap.d.ts +2 -3
  12. package/.cache/ts/src/components/FormField/FormField.d.ts +2 -3
  13. package/.cache/ts/src/components/FormItem/FormItem.d.ts +2 -3
  14. package/.cache/ts/src/components/FormLayout/FormLayout.d.ts +2 -4
  15. package/.cache/ts/src/components/GridAvatar/GridAvatar.d.ts +9 -0
  16. package/.cache/ts/src/components/HorizontalCell/HorizontalCell.d.ts +2 -3
  17. package/.cache/ts/src/components/HorizontalScroll/HorizontalScroll.d.ts +3 -2
  18. package/.cache/ts/src/components/InitialsAvatar/InitialsAvatar.d.ts +33 -0
  19. package/.cache/ts/src/components/Link/Link.d.ts +1 -2
  20. package/.cache/ts/src/components/ModalRoot/types.d.ts +0 -1
  21. package/.cache/ts/src/components/ModalRoot/useModalManager.d.ts +37 -0
  22. package/.cache/ts/src/components/Removable/Removable.d.ts +2 -1
  23. package/.cache/ts/src/components/SimpleCell/SimpleCell.d.ts +2 -2
  24. package/.cache/ts/src/components/SplitCol/SplitCol.d.ts +3 -3
  25. package/.cache/ts/src/components/SubnavigationBar/SubnavigationBar.d.ts +2 -1
  26. package/.cache/ts/src/components/Switch/Switch.d.ts +2 -3
  27. package/.cache/ts/src/components/TabbarItem/TabbarItem.d.ts +3 -1
  28. package/.cache/ts/src/components/Tappable/Tappable.d.ts +2 -3
  29. package/.cache/ts/src/components/Touch/Touch.d.ts +16 -17
  30. package/.cache/ts/src/components/Typography/Caption/Caption.d.ts +2 -2
  31. package/.cache/ts/src/components/Typography/Headline/Headline.d.ts +2 -2
  32. package/.cache/ts/src/components/Typography/Subhead/Subhead.d.ts +2 -2
  33. package/.cache/ts/src/components/Typography/Text/Text.d.ts +2 -3
  34. package/.cache/ts/src/components/Typography/Title/Title.d.ts +2 -2
  35. package/.cache/ts/src/components/View/utils.d.ts +2 -0
  36. package/.cache/ts/src/index.d.ts +4 -0
  37. package/.cache/ts/src/lib/accessibility.d.ts +1 -1
  38. package/.cache/ts/src/lib/supportEvents.d.ts +3 -1
  39. package/.cache/ts/src/types.d.ts +3 -0
  40. package/dist/cjs/components/ActionSheet/ActionSheet.js +7 -9
  41. package/dist/cjs/components/ActionSheet/ActionSheet.js.map +1 -1
  42. package/dist/cjs/components/Avatar/Avatar.d.ts +2 -0
  43. package/dist/cjs/components/Avatar/Avatar.js +7 -3
  44. package/dist/cjs/components/Avatar/Avatar.js.map +1 -1
  45. package/dist/cjs/components/Banner/Banner.js.map +1 -1
  46. package/dist/cjs/components/Button/Button.js.map +1 -1
  47. package/dist/cjs/components/CardScroll/CardScroll.js +1 -1
  48. package/dist/cjs/components/CardScroll/CardScroll.js.map +1 -1
  49. package/dist/cjs/components/Cell/Cell.d.ts +11 -0
  50. package/dist/cjs/components/Cell/Cell.js +109 -182
  51. package/dist/cjs/components/Cell/Cell.js.map +1 -1
  52. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.d.ts +5 -0
  53. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js +50 -0
  54. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -0
  55. package/dist/cjs/components/Cell/CellDragger/CellDragger.d.ts +6 -0
  56. package/dist/cjs/components/Cell/CellDragger/CellDragger.js +53 -0
  57. package/dist/cjs/components/Cell/CellDragger/CellDragger.js.map +1 -0
  58. package/dist/cjs/components/Cell/useDraggable.d.ts +13 -0
  59. package/dist/cjs/components/Cell/useDraggable.js +142 -0
  60. package/dist/cjs/components/Cell/useDraggable.js.map +1 -0
  61. package/dist/cjs/components/ChipsSelect/ChipsSelect.js +2 -2
  62. package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
  63. package/dist/cjs/components/Counter/Counter.js.map +1 -1
  64. package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +0 -1
  65. package/dist/cjs/components/CustomSelect/CustomSelect.js +2 -3
  66. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  67. package/dist/cjs/components/DropdownIcon/DropdownIcon.d.ts +3 -0
  68. package/dist/cjs/components/DropdownIcon/DropdownIcon.js +37 -0
  69. package/dist/cjs/components/DropdownIcon/DropdownIcon.js.map +1 -0
  70. package/dist/cjs/components/FocusTrap/FocusTrap.d.ts +2 -3
  71. package/dist/cjs/components/FocusTrap/FocusTrap.js +3 -5
  72. package/dist/cjs/components/FocusTrap/FocusTrap.js.map +1 -1
  73. package/dist/cjs/components/FormField/FormField.d.ts +2 -3
  74. package/dist/cjs/components/FormField/FormField.js.map +1 -1
  75. package/dist/cjs/components/FormItem/FormItem.d.ts +2 -3
  76. package/dist/cjs/components/FormItem/FormItem.js.map +1 -1
  77. package/dist/cjs/components/FormLayout/FormLayout.d.ts +2 -4
  78. package/dist/cjs/components/FormLayout/FormLayout.js.map +1 -1
  79. package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js +1 -0
  80. package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
  81. package/dist/cjs/components/GridAvatar/GridAvatar.d.ts +9 -0
  82. package/dist/cjs/components/GridAvatar/GridAvatar.js +61 -0
  83. package/dist/cjs/components/GridAvatar/GridAvatar.js.map +1 -0
  84. package/dist/cjs/components/Header/Header.js.map +1 -1
  85. package/dist/cjs/components/HorizontalCell/HorizontalCell.d.ts +2 -3
  86. package/dist/cjs/components/HorizontalCell/HorizontalCell.js.map +1 -1
  87. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.d.ts +3 -2
  88. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js +10 -13
  89. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  90. package/dist/cjs/components/InitialsAvatar/InitialsAvatar.d.ts +33 -0
  91. package/dist/cjs/components/InitialsAvatar/InitialsAvatar.js +64 -0
  92. package/dist/cjs/components/InitialsAvatar/InitialsAvatar.js.map +1 -0
  93. package/dist/cjs/components/Link/Link.d.ts +1 -2
  94. package/dist/cjs/components/Link/Link.js.map +1 -1
  95. package/dist/cjs/components/ModalRoot/ModalRoot.js +170 -373
  96. package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
  97. package/dist/cjs/components/ModalRoot/ModalRootContext.js +0 -3
  98. package/dist/cjs/components/ModalRoot/ModalRootContext.js.map +1 -1
  99. package/dist/cjs/components/ModalRoot/ModalRootDesktop.js +59 -241
  100. package/dist/cjs/components/ModalRoot/ModalRootDesktop.js.map +1 -1
  101. package/dist/cjs/components/ModalRoot/types.d.ts +0 -1
  102. package/dist/cjs/components/ModalRoot/types.js.map +1 -1
  103. package/dist/cjs/components/ModalRoot/useModalManager.d.ts +37 -0
  104. package/dist/cjs/components/ModalRoot/useModalManager.js +213 -0
  105. package/dist/cjs/components/ModalRoot/useModalManager.js.map +1 -0
  106. package/dist/cjs/components/NativeSelect/NativeSelect.js +2 -2
  107. package/dist/cjs/components/NativeSelect/NativeSelect.js.map +1 -1
  108. package/dist/cjs/components/Removable/Removable.d.ts +2 -1
  109. package/dist/cjs/components/Removable/Removable.js +75 -66
  110. package/dist/cjs/components/Removable/Removable.js.map +1 -1
  111. package/dist/cjs/components/SelectMimicry/SelectMimicry.js +2 -2
  112. package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
  113. package/dist/cjs/components/SimpleCell/SimpleCell.d.ts +2 -2
  114. package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
  115. package/dist/cjs/components/SplitCol/SplitCol.d.ts +3 -3
  116. package/dist/cjs/components/SplitCol/SplitCol.js +2 -4
  117. package/dist/cjs/components/SplitCol/SplitCol.js.map +1 -1
  118. package/dist/cjs/components/SubnavigationBar/SubnavigationBar.d.ts +2 -1
  119. package/dist/cjs/components/SubnavigationBar/SubnavigationBar.js +38 -11
  120. package/dist/cjs/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
  121. package/dist/cjs/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  122. package/dist/cjs/components/Switch/Switch.d.ts +2 -3
  123. package/dist/cjs/components/Switch/Switch.js +18 -8
  124. package/dist/cjs/components/Switch/Switch.js.map +1 -1
  125. package/dist/cjs/components/Tabbar/Tabbar.js +3 -1
  126. package/dist/cjs/components/Tabbar/Tabbar.js.map +1 -1
  127. package/dist/cjs/components/TabbarItem/TabbarItem.d.ts +3 -1
  128. package/dist/cjs/components/TabbarItem/TabbarItem.js +29 -11
  129. package/dist/cjs/components/TabbarItem/TabbarItem.js.map +1 -1
  130. package/dist/cjs/components/Tappable/Tappable.d.ts +2 -3
  131. package/dist/cjs/components/Tappable/Tappable.js.map +1 -1
  132. package/dist/cjs/components/Textarea/Textarea.js +9 -7
  133. package/dist/cjs/components/Textarea/Textarea.js.map +1 -1
  134. package/dist/cjs/components/Touch/Touch.d.ts +16 -17
  135. package/dist/cjs/components/Touch/Touch.js +21 -7
  136. package/dist/cjs/components/Touch/Touch.js.map +1 -1
  137. package/dist/cjs/components/Typography/Caption/Caption.d.ts +2 -2
  138. package/dist/cjs/components/Typography/Caption/Caption.js +4 -2
  139. package/dist/cjs/components/Typography/Caption/Caption.js.map +1 -1
  140. package/dist/cjs/components/Typography/Headline/Headline.d.ts +2 -2
  141. package/dist/cjs/components/Typography/Headline/Headline.js +2 -1
  142. package/dist/cjs/components/Typography/Headline/Headline.js.map +1 -1
  143. package/dist/cjs/components/Typography/Subhead/Subhead.d.ts +2 -2
  144. package/dist/cjs/components/Typography/Subhead/Subhead.js +2 -1
  145. package/dist/cjs/components/Typography/Subhead/Subhead.js.map +1 -1
  146. package/dist/cjs/components/Typography/Text/Text.d.ts +2 -3
  147. package/dist/cjs/components/Typography/Text/Text.js +2 -1
  148. package/dist/cjs/components/Typography/Text/Text.js.map +1 -1
  149. package/dist/cjs/components/Typography/Title/Title.d.ts +2 -2
  150. package/dist/cjs/components/Typography/Title/Title.js +9 -4
  151. package/dist/cjs/components/Typography/Title/Title.js.map +1 -1
  152. package/dist/cjs/components/View/View.js +68 -75
  153. package/dist/cjs/components/View/View.js.map +1 -1
  154. package/dist/cjs/components/View/ViewInfinite.js +78 -85
  155. package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
  156. package/dist/cjs/components/View/utils.d.ts +2 -0
  157. package/dist/cjs/components/View/utils.js +13 -0
  158. package/dist/cjs/components/View/utils.js.map +1 -0
  159. package/dist/cjs/index.d.ts +4 -0
  160. package/dist/cjs/index.js +16 -0
  161. package/dist/cjs/index.js.map +1 -1
  162. package/dist/cjs/lib/accessibility.d.ts +1 -1
  163. package/dist/cjs/lib/accessibility.js.map +1 -1
  164. package/dist/cjs/lib/prefixClass.js +7 -6
  165. package/dist/cjs/lib/prefixClass.js.map +1 -1
  166. package/dist/cjs/lib/supportEvents.d.ts +3 -1
  167. package/dist/cjs/lib/supportEvents.js +1 -4
  168. package/dist/cjs/lib/supportEvents.js.map +1 -1
  169. package/dist/cjs/types.d.ts +3 -0
  170. package/dist/components/ActionSheet/ActionSheet.js +6 -9
  171. package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
  172. package/dist/components/Avatar/Avatar.d.ts +2 -0
  173. package/dist/components/Avatar/Avatar.js +4 -2
  174. package/dist/components/Avatar/Avatar.js.map +1 -1
  175. package/dist/components/Banner/Banner.js.map +1 -1
  176. package/dist/components/Button/Button.js.map +1 -1
  177. package/dist/components/CardScroll/CardScroll.js +1 -1
  178. package/dist/components/CardScroll/CardScroll.js.map +1 -1
  179. package/dist/components/Cell/Cell.d.ts +11 -0
  180. package/dist/components/Cell/Cell.js +103 -177
  181. package/dist/components/Cell/Cell.js.map +1 -1
  182. package/dist/components/Cell/CellCheckbox/CellCheckbox.d.ts +5 -0
  183. package/dist/components/Cell/CellCheckbox/CellCheckbox.js +31 -0
  184. package/dist/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -0
  185. package/dist/components/Cell/CellDragger/CellDragger.d.ts +6 -0
  186. package/dist/components/Cell/CellDragger/CellDragger.js +30 -0
  187. package/dist/components/Cell/CellDragger/CellDragger.js.map +1 -0
  188. package/dist/components/Cell/useDraggable.d.ts +13 -0
  189. package/dist/components/Cell/useDraggable.js +126 -0
  190. package/dist/components/Cell/useDraggable.js.map +1 -0
  191. package/dist/components/ChipsSelect/ChipsSelect.js +2 -2
  192. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  193. package/dist/components/Counter/Counter.js.map +1 -1
  194. package/dist/components/CustomSelect/CustomSelect.d.ts +0 -1
  195. package/dist/components/CustomSelect/CustomSelect.js +3 -5
  196. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  197. package/dist/components/DropdownIcon/DropdownIcon.d.ts +3 -0
  198. package/dist/components/DropdownIcon/DropdownIcon.js +19 -0
  199. package/dist/components/DropdownIcon/DropdownIcon.js.map +1 -0
  200. package/dist/components/FocusTrap/FocusTrap.d.ts +2 -3
  201. package/dist/components/FocusTrap/FocusTrap.js +3 -5
  202. package/dist/components/FocusTrap/FocusTrap.js.map +1 -1
  203. package/dist/components/FormField/FormField.d.ts +2 -3
  204. package/dist/components/FormField/FormField.js.map +1 -1
  205. package/dist/components/FormItem/FormItem.d.ts +2 -3
  206. package/dist/components/FormItem/FormItem.js.map +1 -1
  207. package/dist/components/FormLayout/FormLayout.d.ts +2 -4
  208. package/dist/components/FormLayout/FormLayout.js.map +1 -1
  209. package/dist/components/FormLayoutGroup/FormLayoutGroup.js +1 -0
  210. package/dist/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
  211. package/dist/components/GridAvatar/GridAvatar.d.ts +9 -0
  212. package/dist/components/GridAvatar/GridAvatar.js +41 -0
  213. package/dist/components/GridAvatar/GridAvatar.js.map +1 -0
  214. package/dist/components/Header/Header.js.map +1 -1
  215. package/dist/components/HorizontalCell/HorizontalCell.d.ts +2 -3
  216. package/dist/components/HorizontalCell/HorizontalCell.js.map +1 -1
  217. package/dist/components/HorizontalScroll/HorizontalScroll.d.ts +3 -2
  218. package/dist/components/HorizontalScroll/HorizontalScroll.js +10 -12
  219. package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  220. package/dist/components/InitialsAvatar/InitialsAvatar.d.ts +33 -0
  221. package/dist/components/InitialsAvatar/InitialsAvatar.js +46 -0
  222. package/dist/components/InitialsAvatar/InitialsAvatar.js.map +1 -0
  223. package/dist/components/Link/Link.d.ts +1 -2
  224. package/dist/components/Link/Link.js.map +1 -1
  225. package/dist/components/ModalRoot/ModalRoot.js +167 -376
  226. package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
  227. package/dist/components/ModalRoot/ModalRootContext.js +0 -3
  228. package/dist/components/ModalRoot/ModalRootContext.js.map +1 -1
  229. package/dist/components/ModalRoot/ModalRootDesktop.js +58 -244
  230. package/dist/components/ModalRoot/ModalRootDesktop.js.map +1 -1
  231. package/dist/components/ModalRoot/types.d.ts +0 -1
  232. package/dist/components/ModalRoot/types.js.map +1 -1
  233. package/dist/components/ModalRoot/useModalManager.d.ts +37 -0
  234. package/dist/components/ModalRoot/useModalManager.js +189 -0
  235. package/dist/components/ModalRoot/useModalManager.js.map +1 -0
  236. package/dist/components/NativeSelect/NativeSelect.js +2 -2
  237. package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
  238. package/dist/components/Removable/Removable.d.ts +2 -1
  239. package/dist/components/Removable/Removable.js +73 -64
  240. package/dist/components/Removable/Removable.js.map +1 -1
  241. package/dist/components/SelectMimicry/SelectMimicry.js +2 -2
  242. package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
  243. package/dist/components/SimpleCell/SimpleCell.d.ts +2 -2
  244. package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
  245. package/dist/components/SplitCol/SplitCol.d.ts +3 -3
  246. package/dist/components/SplitCol/SplitCol.js +2 -4
  247. package/dist/components/SplitCol/SplitCol.js.map +1 -1
  248. package/dist/components/SubnavigationBar/SubnavigationBar.d.ts +2 -1
  249. package/dist/components/SubnavigationBar/SubnavigationBar.js +38 -11
  250. package/dist/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
  251. package/dist/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  252. package/dist/components/Switch/Switch.d.ts +2 -3
  253. package/dist/components/Switch/Switch.js +15 -8
  254. package/dist/components/Switch/Switch.js.map +1 -1
  255. package/dist/components/Tabbar/Tabbar.js +3 -1
  256. package/dist/components/Tabbar/Tabbar.js.map +1 -1
  257. package/dist/components/TabbarItem/TabbarItem.d.ts +3 -1
  258. package/dist/components/TabbarItem/TabbarItem.js +26 -10
  259. package/dist/components/TabbarItem/TabbarItem.js.map +1 -1
  260. package/dist/components/Tappable/Tappable.d.ts +2 -3
  261. package/dist/components/Tappable/Tappable.js.map +1 -1
  262. package/dist/components/Textarea/Textarea.js +9 -6
  263. package/dist/components/Textarea/Textarea.js.map +1 -1
  264. package/dist/components/Touch/Touch.d.ts +16 -17
  265. package/dist/components/Touch/Touch.js +21 -7
  266. package/dist/components/Touch/Touch.js.map +1 -1
  267. package/dist/components/Typography/Caption/Caption.d.ts +2 -2
  268. package/dist/components/Typography/Caption/Caption.js +4 -2
  269. package/dist/components/Typography/Caption/Caption.js.map +1 -1
  270. package/dist/components/Typography/Headline/Headline.d.ts +2 -2
  271. package/dist/components/Typography/Headline/Headline.js +2 -1
  272. package/dist/components/Typography/Headline/Headline.js.map +1 -1
  273. package/dist/components/Typography/Subhead/Subhead.d.ts +2 -2
  274. package/dist/components/Typography/Subhead/Subhead.js +2 -1
  275. package/dist/components/Typography/Subhead/Subhead.js.map +1 -1
  276. package/dist/components/Typography/Text/Text.d.ts +2 -3
  277. package/dist/components/Typography/Text/Text.js +2 -1
  278. package/dist/components/Typography/Text/Text.js.map +1 -1
  279. package/dist/components/Typography/Title/Title.d.ts +2 -2
  280. package/dist/components/Typography/Title/Title.js +9 -4
  281. package/dist/components/Typography/Title/Title.js.map +1 -1
  282. package/dist/components/View/View.js +67 -75
  283. package/dist/components/View/View.js.map +1 -1
  284. package/dist/components/View/ViewInfinite.js +79 -87
  285. package/dist/components/View/ViewInfinite.js.map +1 -1
  286. package/dist/components/View/utils.d.ts +2 -0
  287. package/dist/components/View/utils.js +6 -0
  288. package/dist/components/View/utils.js.map +1 -0
  289. package/dist/components.css +1 -1
  290. package/dist/components.css.map +1 -1
  291. package/dist/cssm/components/ActionSheet/ActionSheet.js +6 -9
  292. package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
  293. package/dist/cssm/components/Avatar/Avatar.js +4 -2
  294. package/dist/cssm/components/Avatar/Avatar.js.map +1 -1
  295. package/dist/cssm/components/Banner/Banner.js.map +1 -1
  296. package/dist/cssm/components/Button/Button.css +1 -1
  297. package/dist/cssm/components/Button/Button.js.map +1 -1
  298. package/dist/cssm/components/CardScroll/CardScroll.js +1 -1
  299. package/dist/cssm/components/CardScroll/CardScroll.js.map +1 -1
  300. package/dist/cssm/components/Cell/Cell.css +1 -1
  301. package/dist/cssm/components/Cell/Cell.js +103 -177
  302. package/dist/cssm/components/Cell/Cell.js.map +1 -1
  303. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.css +1 -0
  304. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js +32 -0
  305. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -0
  306. package/dist/cssm/components/Cell/CellDragger/CellDragger.css +1 -0
  307. package/dist/cssm/components/Cell/CellDragger/CellDragger.js +31 -0
  308. package/dist/cssm/components/Cell/CellDragger/CellDragger.js.map +1 -0
  309. package/dist/cssm/components/Cell/useDraggable.js +126 -0
  310. package/dist/cssm/components/Cell/useDraggable.js.map +1 -0
  311. package/dist/cssm/components/ChipsSelect/ChipsSelect.js +2 -2
  312. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  313. package/dist/cssm/components/Counter/Counter.js.map +1 -1
  314. package/dist/cssm/components/CustomSelect/CustomSelect.js +3 -5
  315. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  316. package/dist/cssm/components/DropdownIcon/DropdownIcon.css +1 -0
  317. package/dist/cssm/components/DropdownIcon/DropdownIcon.js +20 -0
  318. package/dist/cssm/components/DropdownIcon/DropdownIcon.js.map +1 -0
  319. package/dist/cssm/components/FocusTrap/FocusTrap.js +3 -5
  320. package/dist/cssm/components/FocusTrap/FocusTrap.js.map +1 -1
  321. package/dist/cssm/components/FocusVisible/FocusVisible.css +1 -1
  322. package/dist/cssm/components/FormField/FormField.css +1 -1
  323. package/dist/cssm/components/FormField/FormField.js.map +1 -1
  324. package/dist/cssm/components/FormItem/FormItem.css +1 -1
  325. package/dist/cssm/components/FormItem/FormItem.js.map +1 -1
  326. package/dist/cssm/components/FormLayout/FormLayout.js.map +1 -1
  327. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.css +1 -1
  328. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js +1 -0
  329. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
  330. package/dist/cssm/components/Gallery/Gallery.css +1 -1
  331. package/dist/cssm/components/GridAvatar/GridAvatar.css +1 -0
  332. package/dist/cssm/components/GridAvatar/GridAvatar.js +42 -0
  333. package/dist/cssm/components/GridAvatar/GridAvatar.js.map +1 -0
  334. package/dist/cssm/components/Header/Header.js.map +1 -1
  335. package/dist/cssm/components/HorizontalCell/HorizontalCell.js.map +1 -1
  336. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +10 -12
  337. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  338. package/dist/cssm/components/HorizontalScroll/HorizontalScrollArrow.css +1 -1
  339. package/dist/cssm/components/IconButton/IconButton.css +1 -1
  340. package/dist/cssm/components/InitialsAvatar/InitialsAvatar.css +1 -0
  341. package/dist/cssm/components/InitialsAvatar/InitialsAvatar.js +52 -0
  342. package/dist/cssm/components/InitialsAvatar/InitialsAvatar.js.map +1 -0
  343. package/dist/cssm/components/Link/Link.js.map +1 -1
  344. package/dist/cssm/components/ModalRoot/ModalRoot.js +167 -376
  345. package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
  346. package/dist/cssm/components/ModalRoot/ModalRootContext.js +0 -3
  347. package/dist/cssm/components/ModalRoot/ModalRootContext.js.map +1 -1
  348. package/dist/cssm/components/ModalRoot/ModalRootDesktop.js +58 -244
  349. package/dist/cssm/components/ModalRoot/ModalRootDesktop.js.map +1 -1
  350. package/dist/cssm/components/ModalRoot/types.js.map +1 -1
  351. package/dist/cssm/components/ModalRoot/useModalManager.js +189 -0
  352. package/dist/cssm/components/ModalRoot/useModalManager.js.map +1 -0
  353. package/dist/cssm/components/NativeSelect/NativeSelect.js +2 -2
  354. package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
  355. package/dist/cssm/components/Removable/Removable.css +1 -1
  356. package/dist/cssm/components/Removable/Removable.js +73 -64
  357. package/dist/cssm/components/Removable/Removable.js.map +1 -1
  358. package/dist/cssm/components/Search/Search.css +1 -1
  359. package/dist/cssm/components/Select/Select.css +1 -1
  360. package/dist/cssm/components/SelectMimicry/SelectMimicry.js +2 -2
  361. package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
  362. package/dist/cssm/components/SimpleCell/SimpleCell.css +1 -1
  363. package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
  364. package/dist/cssm/components/SplitCol/SplitCol.js +2 -4
  365. package/dist/cssm/components/SplitCol/SplitCol.js.map +1 -1
  366. package/dist/cssm/components/SubnavigationBar/SubnavigationBar.js +38 -11
  367. package/dist/cssm/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
  368. package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  369. package/dist/cssm/components/Switch/Switch.css +1 -1
  370. package/dist/cssm/components/Switch/Switch.js +15 -8
  371. package/dist/cssm/components/Switch/Switch.js.map +1 -1
  372. package/dist/cssm/components/Tabbar/Tabbar.css +1 -1
  373. package/dist/cssm/components/Tabbar/Tabbar.js +3 -1
  374. package/dist/cssm/components/Tabbar/Tabbar.js.map +1 -1
  375. package/dist/cssm/components/TabbarItem/TabbarItem.css +1 -1
  376. package/dist/cssm/components/TabbarItem/TabbarItem.js +26 -10
  377. package/dist/cssm/components/TabbarItem/TabbarItem.js.map +1 -1
  378. package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
  379. package/dist/cssm/components/Textarea/Textarea.js +9 -6
  380. package/dist/cssm/components/Textarea/Textarea.js.map +1 -1
  381. package/dist/cssm/components/Touch/Touch.js +21 -7
  382. package/dist/cssm/components/Touch/Touch.js.map +1 -1
  383. package/dist/cssm/components/Typography/Caption/Caption.js +4 -2
  384. package/dist/cssm/components/Typography/Caption/Caption.js.map +1 -1
  385. package/dist/cssm/components/Typography/Headline/Headline.js +2 -1
  386. package/dist/cssm/components/Typography/Headline/Headline.js.map +1 -1
  387. package/dist/cssm/components/Typography/Subhead/Subhead.js +2 -1
  388. package/dist/cssm/components/Typography/Subhead/Subhead.js.map +1 -1
  389. package/dist/cssm/components/Typography/Text/Text.js +2 -1
  390. package/dist/cssm/components/Typography/Text/Text.js.map +1 -1
  391. package/dist/cssm/components/Typography/Title/Title.js +9 -4
  392. package/dist/cssm/components/Typography/Title/Title.js.map +1 -1
  393. package/dist/cssm/components/View/View.js +67 -75
  394. package/dist/cssm/components/View/View.js.map +1 -1
  395. package/dist/cssm/components/View/ViewInfinite.js +79 -87
  396. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  397. package/dist/cssm/components/View/utils.js +6 -0
  398. package/dist/cssm/components/View/utils.js.map +1 -0
  399. package/dist/cssm/index.js +2 -0
  400. package/dist/cssm/index.js.map +1 -1
  401. package/dist/cssm/lib/accessibility.js.map +1 -1
  402. package/dist/cssm/lib/prefixClass.js +7 -6
  403. package/dist/cssm/lib/prefixClass.js.map +1 -1
  404. package/dist/cssm/lib/supportEvents.js +1 -4
  405. package/dist/cssm/lib/supportEvents.js.map +1 -1
  406. package/dist/cssm/styles/components.css +1 -1
  407. package/dist/cssm/styles/themes.css +1 -1
  408. package/dist/cssm/styles/vkcom_light.css +1 -1
  409. package/dist/index.d.ts +4 -0
  410. package/dist/index.js +2 -0
  411. package/dist/index.js.map +1 -1
  412. package/dist/lib/accessibility.d.ts +1 -1
  413. package/dist/lib/accessibility.js.map +1 -1
  414. package/dist/lib/prefixClass.js +7 -6
  415. package/dist/lib/prefixClass.js.map +1 -1
  416. package/dist/lib/supportEvents.d.ts +3 -1
  417. package/dist/lib/supportEvents.js +1 -4
  418. package/dist/lib/supportEvents.js.map +1 -1
  419. package/dist/types.d.ts +3 -0
  420. package/dist/vkui.css +2 -2
  421. package/dist/vkui.css.map +1 -1
  422. package/package.json +8 -4
  423. package/src/components/ActionSheet/ActionSheet.tsx +4 -5
  424. package/src/components/ActionSheet/Readme.md +18 -14
  425. package/src/components/Alert/Readme.md +15 -11
  426. package/src/components/Avatar/Avatar.tsx +5 -2
  427. package/src/components/Banner/Banner.tsx +4 -5
  428. package/src/components/Button/Button.css +26 -53
  429. package/src/components/Button/Button.tsx +2 -3
  430. package/src/components/Card/Readme.md +6 -6
  431. package/src/components/CardScroll/CardScroll.tsx +4 -1
  432. package/src/components/Cell/Cell.css +21 -58
  433. package/src/components/Cell/Cell.tsx +101 -162
  434. package/src/components/Cell/CellCheckbox/CellCheckbox.css +17 -0
  435. package/src/components/Cell/CellCheckbox/CellCheckbox.tsx +42 -0
  436. package/src/components/Cell/CellDragger/CellDragger.css +4 -0
  437. package/src/components/Cell/CellDragger/CellDragger.tsx +40 -0
  438. package/src/components/Cell/Readme.md +89 -51
  439. package/src/components/Cell/useDraggable.tsx +112 -0
  440. package/src/components/ChipsSelect/ChipsSelect.tsx +2 -2
  441. package/src/components/Counter/Counter.tsx +2 -2
  442. package/src/components/CustomSelect/CustomSelect.tsx +3 -4
  443. package/src/components/DropdownIcon/DropdownIcon.css +3 -0
  444. package/src/components/DropdownIcon/DropdownIcon.tsx +20 -0
  445. package/src/components/Epic/Readme.md +2 -1
  446. package/src/components/FocusTrap/FocusTrap.tsx +13 -11
  447. package/src/components/FocusVisible/FocusVisible.css +12 -4
  448. package/src/components/FormField/FormField.css +0 -1
  449. package/src/components/FormField/FormField.tsx +2 -2
  450. package/src/components/FormItem/FormItem.css +13 -14
  451. package/src/components/FormItem/FormItem.tsx +2 -3
  452. package/src/components/FormLayout/FormLayout.tsx +2 -4
  453. package/src/components/FormLayoutGroup/FormLayoutGroup.css +11 -7
  454. package/src/components/FormLayoutGroup/FormLayoutGroup.tsx +10 -1
  455. package/src/components/Gallery/Gallery.css +2 -3
  456. package/src/components/Gallery/Readme.md +89 -109
  457. package/src/components/GridAvatar/GridAvatar.css +37 -0
  458. package/src/components/GridAvatar/GridAvatar.tsx +55 -0
  459. package/src/components/GridAvatar/Readme.md +12 -0
  460. package/src/components/Group/Readme.md +18 -14
  461. package/src/components/Header/Header.tsx +4 -4
  462. package/src/components/HorizontalCell/HorizontalCell.tsx +3 -3
  463. package/src/components/HorizontalScroll/HorizontalScroll.tsx +14 -18
  464. package/src/components/HorizontalScroll/HorizontalScrollArrow.css +2 -2
  465. package/src/components/IconButton/IconButton.css +7 -0
  466. package/src/components/InitialsAvatar/InitialsAvatar.css +53 -0
  467. package/src/components/InitialsAvatar/InitialsAvatar.tsx +90 -0
  468. package/src/components/InitialsAvatar/Readme.md +14 -0
  469. package/src/components/Link/Link.tsx +1 -1
  470. package/src/components/MiniInfoCell/Readme.md +66 -62
  471. package/src/components/ModalDismissButton/Readme.md +13 -10
  472. package/src/components/ModalRoot/ModalRoot.tsx +159 -349
  473. package/src/components/ModalRoot/ModalRootContext.tsx +0 -1
  474. package/src/components/ModalRoot/ModalRootDesktop.tsx +54 -240
  475. package/src/components/ModalRoot/Readme.md +35 -27
  476. package/src/components/ModalRoot/types.ts +0 -1
  477. package/src/components/ModalRoot/useModalManager.tsx +174 -0
  478. package/src/components/NativeSelect/NativeSelect.tsx +2 -2
  479. package/src/components/Removable/Removable.css +16 -63
  480. package/src/components/Removable/Removable.tsx +84 -64
  481. package/src/components/ScreenSpinner/Readme.md +13 -9
  482. package/src/components/Search/Search.css +1 -1
  483. package/src/components/Select/Select.css +1 -1
  484. package/src/components/SelectMimicry/SelectMimicry.tsx +2 -2
  485. package/src/components/SimpleCell/SimpleCell.css +10 -18
  486. package/src/components/SimpleCell/SimpleCell.tsx +3 -5
  487. package/src/components/SplitCol/SplitCol.tsx +4 -8
  488. package/src/components/SplitLayout/Readme.md +2 -2
  489. package/src/components/SubnavigationBar/Readme.md +90 -86
  490. package/src/components/SubnavigationBar/SubnavigationBar.tsx +32 -14
  491. package/src/components/SubnavigationButton/SubnavigationButton.tsx +2 -3
  492. package/src/components/Switch/Readme.md +6 -6
  493. package/src/components/Switch/Switch.css +46 -15
  494. package/src/components/Switch/Switch.tsx +16 -8
  495. package/src/components/Tabbar/Tabbar.css +15 -4
  496. package/src/components/Tabbar/Tabbar.tsx +3 -1
  497. package/src/components/TabbarItem/Readme.md +72 -0
  498. package/src/components/TabbarItem/TabbarItem.css +65 -14
  499. package/src/components/TabbarItem/TabbarItem.tsx +46 -22
  500. package/src/components/Tappable/Tappable.tsx +2 -3
  501. package/src/components/Textarea/Readme.md +3 -0
  502. package/src/components/Textarea/Textarea.tsx +10 -6
  503. package/src/components/Touch/Touch.tsx +38 -25
  504. package/src/components/Typography/Caption/Caption.tsx +4 -4
  505. package/src/components/Typography/Headline/Headline.tsx +3 -3
  506. package/src/components/Typography/Subhead/Subhead.tsx +3 -3
  507. package/src/components/Typography/Text/Text.tsx +3 -4
  508. package/src/components/Typography/Title/Title.tsx +9 -5
  509. package/src/components/View/Readme.md +42 -56
  510. package/src/components/View/View.tsx +46 -61
  511. package/src/components/View/ViewInfinite.tsx +52 -67
  512. package/src/components/View/utils.ts +8 -0
  513. package/src/index.ts +4 -0
  514. package/src/lib/accessibility.ts +2 -2
  515. package/src/lib/prefixClass.ts +9 -6
  516. package/src/lib/supportEvents.ts +1 -4
  517. package/src/styles/components.css +4 -0
  518. package/src/styles/vkcom_light.css +3 -3
  519. package/src/testing/utils.tsx +34 -1
  520. package/src/types.ts +4 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ModalRoot/ModalRoot.tsx"],"names":["warn","IS_DEV","process","env","NODE_ENV","numberInRange","number","range","rangeTranslate","Math","max","min","ModalRootTouchComponent","props","React","createRef","event","originalEvent","preventDefault","activeModal","state","nextModal","modalState","modalsState","animateTranslate","translateY","modalId","undefined","type","ModalType","PAGE","dynamicContentHeight","switching","waitTransitionFinish","requestAnimationFrame","checkPageContentHeight","e","onPageTouchMove","CARD","onCardTouchMove","onPageTouchEnd","onCardTouchEnd","target","contentElement","contains","contentScrolled","clearTimeout","contentScrollStopTimeout","setTimeout","activeTransitions","newState","prevModal","visibleModals","animated","history","restoreFocusTo","focus","setState","activeModalState","doCloseModal","touchDown","onClose","id","isBack","inited","dragging","maskElementRef","initModalsState","modalRootContext","updateModalHeight","registerModal","data","Object","assign","triggerActiveModalClose","isInsideModal","frameIds","platform","ANDROID","VKCOM","document","window","Children","toArray","children","getModals","reduce","acc","Modal","modalProps","settlingHeight","initActiveModal","toggleDocumentScrolling","IOS","removeEventListener","updateModalTranslate","prevProps","prevState","includes","splice","indexOf","push","closeActiveModal","switchPrevNext","enabled","documentScrolling","preventTouch","passive","addEventListener","MODAL_PAGE_DEFAULT_PERCENT_HEIGHT","initPageModal","initCardModal","contentHeight","firstElementChild","offsetHeight","prevTranslateY","expandable","clientHeight","collapsed","expanded","translateYFrom","expandedRange","collapsedRange","hiddenRange","shiftHalf","visiblePart","headerHeight","headerElement","height","innerElement","parentElement","modalElement","prevModalState","currentModalState","needAnimate","prevNextSwitchEndHandler","setMaskOpacity","shiftY","isY","viewportRef","current","stopPropagation","touchStartContentScrollTop","scrollTop","touchMovePositive","shiftYPercent","innerHeight","shiftYCurrent","touchShiftYPercent","translateYCurrent","startY","setStateCallback","shiftYEndPercent","expectTranslateY","duration","hidden","eventHandler","transitionEvent","supported","onceHandler","name","timeout","nextModalState","prevIsPage","prevIsCard","nextIsPage","nextIsCard","activeElement","percent","frameId","cancelAnimationFrame","footerElement","footerHeight","factor","forceOpacity","maskAnimationFrame","opacity","style","toString","configProvider","webviewType","WebviewType","VKAPPS","onTouchMove","onTouchEnd","onScroll","map","isPage","key","Component","ModalRootTouch","ConfigProviderContext"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport TouchRootContext from '../Touch/TouchContext';\nimport { getClassName } from '../../helpers/getClassName';\nimport { classNames } from '../../lib/classNames';\nimport { setTransformStyle } from '../../lib/styles';\nimport { rubber } from '../../lib/touch';\nimport { isFunction } from '../../lib/utils';\nimport { ANDROID, IOS, VKCOM } from '../../lib/platform';\nimport { transitionEvent } from '../../lib/supportEvents';\nimport { HasPlatform } from '../../types';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { withContext } from '../../hoc/withContext';\nimport ModalRootContext, { ModalRootContextInterface } from './ModalRootContext';\nimport {\n ConfigProviderContext,\n ConfigProviderContextInterface,\n WebviewType,\n} from '../ConfigProvider/ConfigProviderContext';\nimport { ModalsState, ModalsStateEntry, ModalType, TranslateRange } from './types';\nimport { MODAL_PAGE_DEFAULT_PERCENT_HEIGHT } from './constants';\nimport { DOMProps, withDOM } from '../../lib/dom';\nimport { getNavId } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport './ModalRoot.css';\n\nconst warn = warnOnce('ModalRoot');\nconst IS_DEV = process.env.NODE_ENV === 'development';\n\nfunction numberInRange(number: number, range: TranslateRange) {\n return number >= range[0] && number <= range[1];\n}\n\nfunction rangeTranslate(number: number) {\n return Math.max(0, Math.min(98, number));\n}\n\nexport interface ModalRootProps extends HasPlatform {\n activeModal?: string | null;\n\n /**\n * Будет вызвано при закрытии активной модалки с её id\n */\n onClose?(modalId: string): void;\n /**\n * @ignore\n */\n configProvider?: ConfigProviderContextInterface;\n}\n\ninterface ModalRootState {\n activeModal?: string;\n prevModal?: string;\n nextModal?: string;\n visibleModals?: string[];\n animated?: boolean;\n switching?: boolean;\n history?: string[];\n isBack?: boolean;\n inited?: boolean;\n touchDown?: boolean;\n dragging?: boolean;\n}\n\nclass ModalRootTouchComponent extends React.Component<ModalRootProps & DOMProps, ModalRootState> {\n constructor(props: ModalRootProps) {\n super(props);\n\n const activeModal = props.activeModal;\n\n this.state = {\n activeModal: null,\n prevModal: null,\n nextModal: activeModal,\n visibleModals: activeModal ? [activeModal] : [],\n animated: !!activeModal,\n switching: false,\n history: activeModal ? [activeModal] : [],\n isBack: false,\n inited: false,\n touchDown: false,\n dragging: false,\n };\n\n this.activeTransitions = 0;\n this.maskElementRef = React.createRef();\n\n this.initModalsState();\n\n this.modalRootContext = {\n updateModalHeight: this.updateModalHeight,\n registerModal: ({ id, ...data }) => Object.assign(this.modalsState[id], data),\n onClose: this.triggerActiveModalClose,\n isInsideModal: true,\n };\n\n this.frameIds = {};\n }\n\n private modalsState: ModalsState;\n private documentScrolling: boolean;\n private activeTransitions: number;\n private readonly maskElementRef: React.RefObject<HTMLDivElement>;\n private readonly viewportRef = React.createRef<HTMLDivElement>();\n private maskAnimationFrame: number;\n private readonly modalRootContext: ModalRootContextInterface;\n private readonly frameIds: {\n [index: string]: number;\n };\n private restoreFocusTo: HTMLElement;\n\n get timeout(): number {\n return this.props.platform === ANDROID || this.props.platform === VKCOM ? 320 : 400;\n }\n\n get document(): Document {\n return this.props.document;\n }\n\n get window(): Window {\n return this.props.window;\n }\n\n getModals() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n initModalsState() {\n this.modalsState = this.getModals().reduce<ModalsState>((acc, Modal) => {\n const modalProps = Modal.props;\n const state: ModalsStateEntry = {\n id: getNavId(modalProps, warn),\n onClose: Modal.props.onClose,\n dynamicContentHeight: !!modalProps.dynamicContentHeight,\n };\n\n // ModalPage props\n if (typeof modalProps.settlingHeight === 'number') {\n state.settlingHeight = modalProps.settlingHeight;\n }\n\n acc[state.id] = state;\n return acc;\n }, {});\n }\n\n componentDidMount() {\n this.initActiveModal();\n }\n\n componentWillUnmount() {\n this.toggleDocumentScrolling(true);\n if (this.props.platform === IOS) {\n this.window.removeEventListener('resize', this.updateModalTranslate, false);\n }\n }\n\n componentDidUpdate(prevProps: ModalRootProps, prevState: ModalRootState) {\n if (this.props.activeModal !== prevProps.activeModal && !this.state.switching) {\n const nextModal = this.props.activeModal;\n const prevModal = prevProps.activeModal;\n\n if (IS_DEV && nextModal !== null && !this.modalsState[nextModal]) {\n return warn(`[componentDidUpdate] nextModal ${nextModal} not found`);\n }\n\n let history = [...this.state.history];\n let isBack = false;\n\n if (nextModal === null) {\n history = [];\n } else if (history.includes(nextModal)) {\n history = history.splice(0, history.indexOf(nextModal) + 1);\n isBack = true;\n } else {\n history.push(nextModal);\n }\n\n return this.setState({\n activeModal: null,\n nextModal,\n prevModal,\n visibleModals: [nextModal, prevModal],\n history,\n isBack,\n animated: true,\n inited: false,\n switching: false,\n }, () => {\n if (nextModal === null) {\n this.closeActiveModal();\n } else {\n this.initActiveModal();\n }\n });\n }\n\n if (this.state.switching && !prevState.switching) {\n requestAnimationFrame(() => this.switchPrevNext());\n }\n\n if (!this.state.activeModal && !this.state.prevModal && !this.state.nextModal) {\n this.toggleDocumentScrolling(true);\n } else {\n this.toggleDocumentScrolling(false);\n }\n }\n\n /* Отключает скролл документа */\n toggleDocumentScrolling(enabled: boolean) {\n if (this.documentScrolling === enabled) {\n return;\n }\n this.documentScrolling = enabled;\n\n if (enabled) {\n // Здесь нужен последний аргумент с такими же параметрами, потому что\n // некоторые браузеры на странных вендорах типа Meizu не удаляют обработчик.\n // https://github.com/VKCOM/VKUI/issues/444\n // @ts-ignore (В интерфейсе EventListenerOptions нет поля passive)\n this.window.removeEventListener('touchmove', this.preventTouch, { passive: false });\n } else {\n this.window.addEventListener('touchmove', this.preventTouch, { passive: false });\n }\n }\n\n preventTouch = (event: any) => {\n if (!event) {\n return false;\n }\n while (event.originalEvent) {\n event = event.originalEvent;\n }\n if (event.preventDefault) {\n event.preventDefault();\n }\n return false;\n };\n\n /**\n * Инициализирует модалку перед анимацией открытия\n */\n initActiveModal() {\n const activeModal = this.state.activeModal || this.state.nextModal;\n if (!activeModal) {\n return;\n }\n\n const modalState = this.modalsState[activeModal];\n // Отслеживаем изменение размеров viewport (Необходимо для iOS)\n if (this.props.platform === IOS) {\n this.window.addEventListener('resize', this.updateModalTranslate, false);\n }\n\n switch (modalState.type) {\n case ModalType.PAGE:\n modalState.settlingHeight = modalState.settlingHeight || MODAL_PAGE_DEFAULT_PERCENT_HEIGHT;\n this.initPageModal(modalState);\n break;\n\n case ModalType.CARD:\n this.initCardModal(modalState);\n break;\n\n default:\n if (IS_DEV) {\n warn('[initActiveModal] modalState.type is unknown');\n }\n }\n\n this.setState({ inited: true, switching: true });\n }\n\n updateModalTranslate = () => {\n const activeModal = this.state.activeModal || this.state.nextModal;\n if (!activeModal) {\n return;\n }\n\n const modalState = this.modalsState[activeModal];\n this.animateTranslate(modalState, modalState.translateY);\n };\n\n initPageModal(modalState: ModalsStateEntry) {\n const { contentElement } = modalState;\n const contentHeight = (contentElement.firstElementChild as HTMLElement).offsetHeight;\n\n let prevTranslateY = modalState.translateY;\n\n modalState.expandable = contentHeight > contentElement.clientHeight || modalState.settlingHeight === 100;\n\n let collapsed = false;\n let expanded = false;\n let translateYFrom;\n let translateY;\n let expandedRange: TranslateRange;\n let collapsedRange: TranslateRange;\n let hiddenRange: TranslateRange;\n\n if (modalState.expandable) {\n translateYFrom = 100 - modalState.settlingHeight;\n\n const shiftHalf = translateYFrom / 2;\n const visiblePart = 100 - translateYFrom;\n\n expandedRange = [0, shiftHalf];\n collapsedRange = [shiftHalf, translateYFrom + visiblePart / 4];\n hiddenRange = [translateYFrom + visiblePart / 4, 100];\n\n collapsed = translateYFrom > 0;\n expanded = translateYFrom <= 0;\n translateY = translateYFrom;\n } else {\n const headerHeight = modalState.headerElement.offsetHeight;\n const height = contentHeight + headerHeight;\n\n translateYFrom = 100 - height / modalState.innerElement.parentElement.offsetHeight * 100;\n translateY = translateYFrom;\n\n expandedRange = [translateY, translateY + 25];\n collapsedRange = [translateY + 25, translateY + 25];\n hiddenRange = [translateY + 25, translateY + 100];\n }\n\n // Если модалка может открываться на весь экран, и новый сдвиг больше предыдущего, то откроем её на весь экран\n if (modalState.expandable && translateY > prevTranslateY || modalState.settlingHeight === 100) {\n translateY = 0;\n }\n\n modalState.expandedRange = expandedRange;\n modalState.collapsedRange = collapsedRange;\n modalState.hiddenRange = hiddenRange;\n modalState.translateY = translateY;\n modalState.translateYFrom = translateYFrom;\n modalState.collapsed = collapsed;\n modalState.expanded = expanded;\n }\n\n initCardModal(modalState: ModalsStateEntry) {\n modalState.translateY = 0;\n }\n\n checkPageContentHeight() {\n const { activeModal, nextModal } = this.state;\n const modalId = activeModal || nextModal;\n\n const modalState = this.modalsState[modalId];\n if (modalState?.type === ModalType.PAGE && modalState?.modalElement) {\n const prevModalState = { ...modalState };\n this.initPageModal(modalState);\n const currentModalState = { ...modalState };\n\n let needAnimate = false;\n\n if (prevModalState.expandable === currentModalState.expandable) {\n if (prevModalState.translateYFrom !== currentModalState.translateYFrom) {\n needAnimate = true;\n }\n } else {\n needAnimate = true;\n }\n\n if (needAnimate) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n }\n }\n\n updateModalHeight = () => {\n const { activeModal, nextModal } = this.state;\n\n const modalId = activeModal || nextModal;\n const modalState = modalId ? this.modalsState[modalId] : undefined;\n\n if (modalState && modalState.type === ModalType.PAGE && modalState.dynamicContentHeight) {\n if (this.state.switching) {\n this.waitTransitionFinish(modalState, () => {\n requestAnimationFrame(() => this.checkPageContentHeight());\n });\n } else {\n requestAnimationFrame(() => this.checkPageContentHeight());\n }\n }\n };\n\n closeActiveModal() {\n // Сбрасываем состояния, которые могут помешать закрытию модального окна\n this.setState({ touchDown: false, switching: false });\n\n if (this.props.platform === IOS) {\n this.window.removeEventListener('resize', this.updateModalTranslate, false);\n }\n\n const { prevModal } = this.state;\n if (!prevModal) {\n return warn(`[closeActiveModal] prevModal is ${prevModal}`);\n }\n\n const prevModalState = this.modalsState[prevModal];\n\n this.waitTransitionFinish(prevModalState, this.prevNextSwitchEndHandler);\n this.animateTranslate(prevModalState, 100);\n this.setMaskOpacity(prevModalState, 0);\n }\n\n onTouchMove = (e: TouchEvent) => {\n if (this.state.switching) {\n return;\n }\n const activeModal = this.state.activeModal || this.state.nextModal;\n if (!activeModal) {\n return;\n }\n\n const modalState = this.modalsState[activeModal];\n\n if (modalState.type === ModalType.PAGE) {\n return this.onPageTouchMove(e, modalState);\n }\n\n if (modalState.type === ModalType.CARD) {\n return this.onCardTouchMove(e, modalState);\n }\n };\n\n onPageTouchMove(event: TouchEvent, modalState: ModalsStateEntry) {\n const { shiftY, originalEvent } = event;\n const target = originalEvent.target as HTMLElement;\n\n if (!event.isY) {\n if (this.viewportRef.current.contains(target)) {\n originalEvent.preventDefault();\n }\n return;\n }\n\n if (!modalState.innerElement.contains(target)) {\n return originalEvent.preventDefault();\n }\n\n originalEvent.stopPropagation();\n\n const { expandable, contentScrolled, collapsed, expanded } = modalState;\n\n if (!this.state.touchDown) {\n modalState.touchStartContentScrollTop = modalState.contentElement.scrollTop;\n this.setState({ touchDown: true });\n }\n\n if (contentScrolled) {\n return;\n }\n\n if (modalState.touchMovePositive === null) {\n modalState.touchMovePositive = shiftY > 0;\n }\n\n if (\n !modalState.expandable ||\n collapsed ||\n expanded && modalState.touchMovePositive && modalState.touchStartContentScrollTop === 0 ||\n modalState.headerElement.contains(target)\n ) {\n originalEvent.preventDefault();\n\n if (!expandable && shiftY < 0) {\n return;\n }\n\n !this.state.dragging && this.setState({ dragging: true });\n\n const shiftYPercent = shiftY / this.window.innerHeight * 100;\n const shiftYCurrent = rubber(shiftYPercent, 72, 0.8, this.props.platform === ANDROID || this.props.platform === VKCOM);\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = rangeTranslate(modalState.translateY + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onCardTouchMove(event: TouchEvent, modalState: ModalsStateEntry) {\n const { originalEvent, shiftY } = event;\n const target = originalEvent.target as HTMLElement;\n if (modalState.innerElement.contains(target)) {\n if (!this.state.touchDown) {\n this.setState({ touchDown: true, dragging: true });\n }\n\n const shiftYPercent = shiftY / modalState.innerElement.offsetHeight * 100;\n const shiftYCurrent = rubber(shiftYPercent, 72, 1.2, this.props.platform === ANDROID || this.props.platform === VKCOM);\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = Math.max(0, modalState.translateY + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onTouchEnd = (e: TouchEvent) => {\n const activeModal = this.state.activeModal || this.state.nextModal;\n if (!activeModal) {\n return;\n }\n const modalState = this.modalsState[activeModal];\n\n if (modalState.type === ModalType.PAGE) {\n return this.onPageTouchEnd(e, modalState);\n }\n\n if (modalState.type === ModalType.CARD) {\n return this.onCardTouchEnd(e, modalState);\n }\n };\n\n onPageTouchEnd(event: TouchEvent, modalState: ModalsStateEntry) {\n const { startY, shiftY } = event;\n\n modalState.contentScrolled = false;\n modalState.touchMovePositive = null;\n\n let setStateCallback;\n\n if (this.state.dragging) {\n const shiftYEndPercent = (startY + shiftY) / this.window.innerHeight * 100;\n\n let translateY = modalState.translateYCurrent;\n const expectTranslateY = translateY / event.duration * 240 * 0.6 * (modalState.touchShiftYPercent < 0 ? -1 : 1);\n translateY = rangeTranslate(translateY + expectTranslateY);\n\n if (modalState.settlingHeight !== 100) {\n if (numberInRange(translateY, modalState.expandedRange)) {\n translateY = modalState.expandedRange[0];\n } else if (numberInRange(translateY, modalState.collapsedRange)) {\n translateY = modalState.translateYFrom;\n } else if (numberInRange(translateY, modalState.hiddenRange)) {\n translateY = 100;\n } else {\n translateY = modalState.translateYFrom;\n }\n } else {\n if (numberInRange(translateY, [0, 25])) {\n translateY = 0;\n } else {\n translateY = 100;\n }\n }\n\n if (translateY !== 100 && shiftYEndPercent >= 75) {\n translateY = 100;\n }\n\n modalState.translateY = translateY;\n modalState.translateYCurrent = translateY;\n modalState.collapsed = translateY > 0 && translateY < shiftYEndPercent;\n modalState.expanded = translateY === 0;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.doCloseModal(modalState);\n }\n\n setStateCallback = () => {\n if (!modalState.hidden) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n\n this.setMaskOpacity(modalState);\n };\n }\n\n this.setState({\n touchDown: false,\n dragging: false,\n }, setStateCallback);\n }\n\n onCardTouchEnd({ duration }: TouchEvent, modalState: ModalsStateEntry) {\n let setStateCallback;\n\n if (this.state.dragging) {\n let translateY = modalState.translateYCurrent;\n\n const expectTranslateY = translateY / duration * 240 * 0.6 * (modalState.touchShiftYPercent < 0 ? -1 : 1);\n translateY = Math.max(0, translateY + expectTranslateY);\n\n if (translateY >= 30) {\n translateY = 100;\n } else {\n translateY = 0;\n }\n\n modalState.translateY = translateY;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.doCloseModal(modalState);\n }\n\n setStateCallback = () => {\n if (!modalState.hidden) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n\n this.setMaskOpacity(modalState);\n };\n }\n\n this.setState({\n touchDown: false,\n dragging: false,\n }, setStateCallback);\n }\n\n onScroll = (e: React.SyntheticEvent) => {\n const activeModal = this.state.activeModal;\n\n const target = e.target as HTMLElement;\n\n if (!activeModal) {\n return;\n }\n const modalState = this.modalsState[activeModal];\n if (modalState.type === ModalType.PAGE && modalState.contentElement.contains(target)) {\n modalState.contentScrolled = true;\n\n clearTimeout(modalState.contentScrollStopTimeout);\n\n modalState.contentScrollStopTimeout = setTimeout(() => {\n if (modalState.contentScrolled) {\n modalState.contentScrolled = false;\n }\n }, 250);\n }\n };\n\n waitTransitionFinish(modalState: ModalsStateEntry, eventHandler: () => void) {\n if (transitionEvent.supported) {\n const onceHandler = () => {\n modalState.innerElement.removeEventListener(transitionEvent.name, onceHandler);\n eventHandler();\n };\n\n modalState.innerElement.addEventListener(transitionEvent.name, onceHandler);\n } else {\n setTimeout(eventHandler, this.timeout);\n }\n }\n\n switchPrevNext() {\n const { prevModal, nextModal } = this.state;\n\n const prevModalState = this.modalsState[prevModal];\n const nextModalState = this.modalsState[nextModal];\n\n if (IS_DEV && !prevModalState && !nextModalState) {\n return warn(`[switchPrevNext] prevModal is ${prevModal}, nextModal is ${nextModal}`);\n }\n\n const prevIsPage = !!prevModalState && prevModalState.type === ModalType.PAGE;\n const prevIsCard = !!prevModalState && prevModalState.type === ModalType.CARD;\n\n const nextIsPage = !!nextModalState && nextModalState.type === ModalType.PAGE;\n const nextIsCard = !!nextModalState && nextModalState.type === ModalType.CARD;\n\n // Ждём полного скрытия предыдущей модалки\n if (prevModalState && (nextIsCard || prevIsCard && nextIsPage)) {\n this.waitTransitionFinish(prevModalState, () => {\n this.activeTransitions += 1;\n this.waitTransitionFinish(nextModalState, this.prevNextSwitchEndHandler);\n this.animateTranslate(nextModalState, nextModalState.translateY);\n });\n\n return this.animateTranslate(prevModalState, 100);\n }\n\n if (prevModalState && nextIsPage) {\n this.activeTransitions += 1;\n this.waitTransitionFinish(prevModalState, this.prevNextSwitchEndHandler);\n\n if (prevIsPage && prevModalState.translateY <= nextModalState.translateYFrom && !this.state.isBack) {\n this.animateTranslate(prevModalState, nextModalState.translateYFrom + 10);\n } else {\n this.animateTranslate(prevModalState, 100);\n }\n }\n\n if (!prevModal && this.document.activeElement) {\n this.restoreFocusTo = this.document.activeElement as HTMLElement;\n }\n\n this.activeTransitions += 1;\n this.waitTransitionFinish(nextModalState, this.prevNextSwitchEndHandler);\n this.animateTranslate(nextModalState, nextModalState.translateY);\n }\n\n prevNextSwitchEndHandler = () => {\n this.activeTransitions = Math.max(0, this.activeTransitions - 1);\n if (this.activeTransitions > 0) {\n return;\n }\n\n const activeModal = this.state.nextModal;\n\n const newState: ModalRootState = {\n prevModal: null,\n nextModal: null,\n visibleModals: [activeModal],\n activeModal: activeModal,\n animated: false,\n switching: false,\n };\n\n if (!activeModal) {\n newState.history = [];\n if (this.restoreFocusTo) {\n this.restoreFocusTo.focus();\n }\n }\n\n this.setState(newState);\n };\n\n /**\n * Анимирует сдвиг модалки\n *\n * @param {ModalsStateEntry} modalState\n * @param {number} percent Процент сдвига: 0 – полностью открыта, 100 – полностью закрыта\n */\n animateTranslate(modalState: ModalsStateEntry, percent: number) {\n const frameId = `animateTranslateFrame${modalState.id}`;\n\n cancelAnimationFrame(this.frameIds[frameId]);\n\n this.frameIds[frameId] = requestAnimationFrame(() => {\n setTransformStyle(modalState.innerElement, `translate3d(0, ${percent}%, 0)`);\n\n if (modalState.type === ModalType.PAGE && modalState.footerElement) {\n const footerHeight = modalState.footerElement.offsetHeight;\n const factor = modalState.innerElement.offsetHeight * (percent / 100);\n\n setTransformStyle(modalState.footerElement, `translateY(calc(${footerHeight}px * -${factor / footerHeight}))`);\n }\n });\n }\n\n /* Устанавливает прозрачность для полупрозрачной подложки */\n setMaskOpacity(modalState: ModalsStateEntry, forceOpacity: number = null) {\n if (forceOpacity === null && this.state.history[0] !== modalState.id) {\n return;\n }\n\n cancelAnimationFrame(this.maskAnimationFrame);\n this.maskAnimationFrame = requestAnimationFrame(() => {\n if (this.maskElementRef.current) {\n const { translateY, translateYCurrent } = modalState;\n\n const opacity = forceOpacity === null ? 1 - (translateYCurrent - translateY) / (100 - translateY) || 0 : forceOpacity;\n this.maskElementRef.current.style.opacity = Math.max(0, Math.min(100, opacity)).toString();\n }\n });\n }\n\n /**\n * Закрывает текущую модалку\n */\n triggerActiveModalClose = () => {\n const activeModalState = this.modalsState[this.state.activeModal];\n if (activeModalState) {\n this.doCloseModal(activeModalState);\n }\n };\n\n private readonly doCloseModal = (modalState: ModalsStateEntry) => {\n // Сбрасываем состояния, которые могут помешать закрытию модального окна\n this.setState({ touchDown: false, switching: false });\n\n if (isFunction(modalState.onClose)) {\n modalState.onClose();\n } else if (isFunction(this.props.onClose)) {\n this.props.onClose(modalState.id);\n } else if (IS_DEV) {\n warn('onClose is undefined');\n }\n };\n\n render() {\n const { prevModal, activeModal, nextModal, visibleModals, animated, touchDown, dragging, switching } = this.state;\n\n if (!activeModal && !prevModal && !nextModal && !animated) {\n return null;\n }\n\n return (\n <TouchRootContext.Provider value={true}>\n <ModalRootContext.Provider value={this.modalRootContext}>\n <Touch\n vkuiClass={classNames(getClassName('ModalRoot', this.props.platform), {\n 'ModalRoot--vkapps': this.props.configProvider.webviewType === WebviewType.VKAPPS,\n 'ModalRoot--touched': touchDown,\n 'ModalRoot--switching': switching,\n })}\n onMove={this.onTouchMove}\n onEnd={this.onTouchEnd}\n onScroll={this.onScroll}\n >\n <div\n vkuiClass=\"ModalRoot__mask\"\n onClick={this.triggerActiveModalClose}\n ref={this.maskElementRef}\n />\n <div vkuiClass=\"ModalRoot__viewport\" ref={this.viewportRef}>\n {this.getModals().map((Modal) => {\n const modalId = getNavId(Modal.props, warn);\n if (!visibleModals.includes(modalId)) {\n return null;\n }\n const modalState = { ...this.modalsState[modalId] };\n\n const isPage = modalState.type === ModalType.PAGE;\n const key = `modal-${modalId}`;\n\n return (\n <FocusTrap\n key={key}\n getRootRef={(e) => this.modalsState[modalId].modalElement = e}\n onClose={this.triggerActiveModalClose}\n timeout={this.timeout}\n vkuiClass={classNames('ModalRoot__modal', {\n 'ModalRoot__modal--active': modalId === activeModal,\n 'ModalRoot__modal--prev': modalId === prevModal,\n 'ModalRoot__modal--next': modalId === nextModal,\n\n 'ModalRoot__modal--dragging': dragging,\n\n 'ModalRoot__modal--expandable': isPage && modalState.expandable,\n 'ModalRoot__modal--expanded': isPage && modalState.expanded,\n 'ModalRoot__modal--collapsed': isPage && modalState.collapsed,\n })}\n restoreFocus={false}\n >{Modal}</FocusTrap>\n );\n })}\n </div>\n </Touch>\n </ModalRootContext.Provider>\n </TouchRootContext.Provider>\n );\n }\n}\n\nexport const ModalRootTouch = withContext(withPlatform(withDOM<ModalRootProps>(ModalRootTouchComponent)), ConfigProviderContext, 'configProvider');\n"],"file":"ModalRoot.js"}
1
+ {"version":3,"sources":["../../../../src/components/ModalRoot/ModalRoot.tsx"],"names":["warn","IS_DEV","process","env","NODE_ENV","numberInRange","number","range","rangeTranslate","Math","max","min","ModalRootTouchComponent","props","React","createRef","event","originalEvent","preventDefault","modalState","getModalState","activeModal","animateTranslate","translateY","type","ModalType","PAGE","dynamicContentHeight","enteringModal","waitTransitionFinish","requestAnimationFrame","checkPageContentHeight","e","exitingModal","onPageTouchMove","CARD","onCardTouchMove","onPageTouchEnd","onCardTouchEnd","target","contentElement","contains","contentScrolled","clearTimeout","contentScrollStopTimeout","setTimeout","state","touchDown","dragging","maskElementRef","modalRootContext","updateModalHeight","registerModal","id","data","Object","assign","onClose","closeActiveModal","isInsideModal","frameIds","platform","ANDROID","VKCOM","document","window","Children","toArray","children","IOS","addEventListener","updateModalTranslate","toggleDocumentScrolling","removeEventListener","prevProps","closeModal","enteringState","innerElement","style","transitionDelay","onEnter","delayEnter","timeout","restoreFocusTo","activeElement","focus","enabled","documentScrolling","preventTouch","passive","modalElement","prevModalState","initPageModal","currentModalState","needAnimate","expandable","translateYFrom","setState","nextModalState","nextIsPage","prevIsPage","onExit","exitTranslate","isBack","setMaskOpacity","shiftY","isY","viewportRef","current","stopPropagation","collapsed","expanded","touchStartContentScrollTop","scrollTop","touchMovePositive","headerElement","shiftYPercent","innerHeight","shiftYCurrent","touchShiftYPercent","translateYCurrent","offsetHeight","startY","setStateCallback","shiftYEndPercent","expectTranslateY","duration","settlingHeight","expandedRange","collapsedRange","hiddenRange","hidden","eventHandler","transitionEvent","supported","onceHandler","name","percent","frameId","cancelAnimationFrame","forceOpacity","history","maskAnimationFrame","opacity","toString","configProvider","webviewType","WebviewType","VKAPPS","onTouchMove","onTouchEnd","onScroll","getModals","map","Modal","modalId","isPage","key","Component","ModalRootTouch","initModal","ConfigProviderContext","MODAL_PAGE_DEFAULT_PERCENT_HEIGHT","initCardModal","contentHeight","firstElementChild","prevTranslateY","clientHeight","shiftHalf","visiblePart","headerHeight","height","parentElement"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport TouchRootContext from '../Touch/TouchContext';\nimport { getClassName } from '../../helpers/getClassName';\nimport { classNames } from '../../lib/classNames';\nimport { setTransformStyle } from '../../lib/styles';\nimport { rubber } from '../../lib/touch';\nimport { ANDROID, IOS, VKCOM } from '../../lib/platform';\nimport { transitionEvent } from '../../lib/supportEvents';\nimport { HasPlatform } from '../../types';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { withContext } from '../../hoc/withContext';\nimport ModalRootContext, { ModalRootContextInterface } from './ModalRootContext';\nimport {\n ConfigProviderContext,\n ConfigProviderContextInterface,\n WebviewType,\n} from '../ConfigProvider/ConfigProviderContext';\nimport { ModalsStateEntry, ModalType, TranslateRange } from './types';\nimport { MODAL_PAGE_DEFAULT_PERCENT_HEIGHT } from './constants';\nimport { DOMProps, withDOM } from '../../lib/dom';\nimport { getNavId } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { ModalTransitionProps, withModalManager } from './useModalManager';\nimport './ModalRoot.css';\n\nconst warn = warnOnce('ModalRoot');\nconst IS_DEV = process.env.NODE_ENV === 'development';\n\nfunction numberInRange(number: number, range: TranslateRange) {\n return number >= range[0] && number <= range[1];\n}\n\nfunction rangeTranslate(number: number) {\n return Math.max(0, Math.min(98, number));\n}\n\nexport interface ModalRootProps extends HasPlatform {\n activeModal?: string | null;\n\n /**\n * Будет вызвано при закрытии активной модалки с её id\n */\n onClose?(modalId: string): void;\n /**\n * @ignore\n */\n configProvider?: ConfigProviderContextInterface;\n}\n\ninterface ModalRootState {\n touchDown?: boolean;\n dragging?: boolean;\n}\n\nclass ModalRootTouchComponent extends React.Component<ModalRootProps & DOMProps & ModalTransitionProps, ModalRootState> {\n constructor(props: ModalRootProps & ModalTransitionProps) {\n super(props);\n this.state = {\n touchDown: false,\n dragging: false,\n };\n\n this.maskElementRef = React.createRef();\n\n this.modalRootContext = {\n updateModalHeight: this.updateModalHeight,\n registerModal: ({ id, ...data }) => Object.assign(this.getModalState(id), data),\n onClose: () => this.props.closeActiveModal(),\n isInsideModal: true,\n };\n\n this.frameIds = {};\n }\n\n private documentScrolling: boolean;\n private readonly maskElementRef: React.RefObject<HTMLDivElement>;\n private readonly viewportRef = React.createRef<HTMLDivElement>();\n private maskAnimationFrame: number;\n private readonly modalRootContext: ModalRootContextInterface;\n private readonly frameIds: {\n [index: string]: number;\n };\n private restoreFocusTo: HTMLElement;\n\n get timeout(): number {\n return this.props.platform === ANDROID || this.props.platform === VKCOM ? 320 : 400;\n }\n\n get document(): Document {\n return this.props.document;\n }\n\n get window(): Window {\n return this.props.window;\n }\n\n getModalState(id: string) {\n return this.props.getModalState(id);\n }\n\n getModals() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n componentDidMount() {\n // Отслеживаем изменение размеров viewport (Необходимо для iOS)\n if (this.props.platform === IOS) {\n this.window.addEventListener('resize', this.updateModalTranslate, false);\n }\n }\n\n componentWillUnmount() {\n this.toggleDocumentScrolling(true);\n this.window.removeEventListener('resize', this.updateModalTranslate, false);\n }\n\n componentDidUpdate(prevProps: ModalRootProps & ModalTransitionProps) {\n // transition phase 2: animate exiting modal\n if (this.props.exitingModal && this.props.exitingModal !== prevProps.exitingModal) {\n this.closeModal(this.props.exitingModal);\n }\n\n // transition phase 3: animate entering modal\n if (this.props.enteringModal && this.props.enteringModal !== prevProps.enteringModal) {\n const { enteringModal } = this.props;\n const enteringState = this.getModalState(enteringModal);\n this.waitTransitionFinish(enteringState, () => {\n enteringState.innerElement.style.transitionDelay = null;\n this.props.onEnter(enteringModal);\n });\n enteringState.innerElement.style.transitionDelay = this.props.delayEnter ? `${this.timeout}ms` : null;\n this.animateTranslate(enteringState, enteringState.translateY);\n }\n\n // focus restoration\n if (this.props.activeModal && !prevProps.activeModal) {\n this.restoreFocusTo = this.document.activeElement as HTMLElement;\n }\n if (!this.props.activeModal && !this.props.exitingModal && this.restoreFocusTo) {\n this.restoreFocusTo.focus();\n this.restoreFocusTo = null;\n }\n\n this.toggleDocumentScrolling(!this.props.activeModal && !this.props.exitingModal);\n }\n\n /* Отключает скролл документа */\n toggleDocumentScrolling(enabled: boolean) {\n if (this.documentScrolling === enabled) {\n return;\n }\n this.documentScrolling = enabled;\n\n if (enabled) {\n // Здесь нужен последний аргумент с такими же параметрами, потому что\n // некоторые браузеры на странных вендорах типа Meizu не удаляют обработчик.\n // https://github.com/VKCOM/VKUI/issues/444\n // @ts-ignore (В интерфейсе EventListenerOptions нет поля passive)\n this.window.removeEventListener('touchmove', this.preventTouch, { passive: false });\n } else {\n this.window.addEventListener('touchmove', this.preventTouch, { passive: false });\n }\n }\n\n preventTouch = (event: any) => {\n if (!event) {\n return false;\n }\n while (event.originalEvent) {\n event = event.originalEvent;\n }\n if (event.preventDefault) {\n event.preventDefault();\n }\n return false;\n };\n\n updateModalTranslate = () => {\n const modalState = this.getModalState(this.props.activeModal);\n modalState && this.animateTranslate(modalState, modalState.translateY);\n };\n\n checkPageContentHeight() {\n const modalState = this.getModalState(this.props.activeModal);\n\n if (modalState?.type === ModalType.PAGE && modalState?.modalElement) {\n const prevModalState = { ...modalState };\n initPageModal(modalState);\n const currentModalState = { ...modalState };\n\n let needAnimate = false;\n\n if (prevModalState.expandable === currentModalState.expandable) {\n if (prevModalState.translateYFrom !== currentModalState.translateYFrom) {\n needAnimate = true;\n }\n } else {\n needAnimate = true;\n }\n\n if (needAnimate) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n }\n }\n\n updateModalHeight = () => {\n const modalState = this.getModalState(this.props.activeModal);\n\n if (modalState && modalState.type === ModalType.PAGE && modalState.dynamicContentHeight) {\n if (this.props.enteringModal) {\n this.waitTransitionFinish(modalState, () => {\n requestAnimationFrame(() => this.checkPageContentHeight());\n });\n } else {\n requestAnimationFrame(() => this.checkPageContentHeight());\n }\n }\n };\n\n closeModal(id: string) {\n // Сбрасываем состояния, которые могут помешать закрытию модального окна\n this.setState({ touchDown: false });\n\n const prevModalState = this.getModalState(id);\n\n if (!prevModalState) {\n id && warn(`[closeActiveModal] Modal ${id} does not exist - not closing`);\n return;\n }\n\n const nextModalState = this.getModalState(this.props.activeModal);\n const nextIsPage = !!nextModalState && nextModalState.type === ModalType.PAGE;\n\n const prevIsPage = !!prevModalState && prevModalState.type === ModalType.PAGE;\n this.waitTransitionFinish(prevModalState, () => this.props.onExit(id));\n const exitTranslate = prevIsPage && nextIsPage && prevModalState.translateY <= nextModalState.translateYFrom && !this.props.isBack\n ? nextModalState.translateYFrom + 10\n : 100;\n this.animateTranslate(prevModalState, exitTranslate);\n\n if (!nextModalState) {\n // NOTE: was only for clean exit\n this.setMaskOpacity(prevModalState, 0);\n }\n }\n\n onTouchMove = (e: TouchEvent) => {\n if (this.props.exitingModal) {\n return;\n }\n const modalState = this.getModalState(this.props.activeModal);\n if (!modalState) {\n return;\n }\n\n if (modalState.type === ModalType.PAGE) {\n return this.onPageTouchMove(e, modalState);\n }\n\n if (modalState.type === ModalType.CARD) {\n return this.onCardTouchMove(e, modalState);\n }\n };\n\n onPageTouchMove(event: TouchEvent, modalState: ModalsStateEntry) {\n const { shiftY, originalEvent } = event;\n const target = originalEvent.target as HTMLElement;\n\n if (!event.isY) {\n if (this.viewportRef.current.contains(target)) {\n originalEvent.preventDefault();\n }\n return;\n }\n\n if (!modalState.innerElement.contains(target)) {\n return originalEvent.preventDefault();\n }\n\n originalEvent.stopPropagation();\n\n const { expandable, contentScrolled, collapsed, expanded } = modalState;\n\n if (!this.state.touchDown) {\n modalState.touchStartContentScrollTop = modalState.contentElement.scrollTop;\n this.setState({ touchDown: true });\n }\n\n if (contentScrolled) {\n return;\n }\n\n if (modalState.touchMovePositive === null) {\n modalState.touchMovePositive = shiftY > 0;\n }\n\n if (\n !modalState.expandable ||\n collapsed ||\n expanded && modalState.touchMovePositive && modalState.touchStartContentScrollTop === 0 ||\n modalState.headerElement.contains(target)\n ) {\n originalEvent.preventDefault();\n\n if (!expandable && shiftY < 0) {\n return;\n }\n\n !this.state.dragging && this.setState({ dragging: true });\n\n const shiftYPercent = shiftY / this.window.innerHeight * 100;\n const shiftYCurrent = rubber(shiftYPercent, 72, 0.8, this.props.platform === ANDROID || this.props.platform === VKCOM);\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = rangeTranslate(modalState.translateY + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onCardTouchMove(event: TouchEvent, modalState: ModalsStateEntry) {\n const { originalEvent, shiftY } = event;\n const target = originalEvent.target as HTMLElement;\n if (modalState.innerElement.contains(target)) {\n if (!this.state.touchDown) {\n this.setState({ touchDown: true, dragging: true });\n }\n\n const shiftYPercent = shiftY / modalState.innerElement.offsetHeight * 100;\n const shiftYCurrent = rubber(shiftYPercent, 72, 1.2, this.props.platform === ANDROID || this.props.platform === VKCOM);\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = Math.max(0, modalState.translateY + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onTouchEnd = (e: TouchEvent) => {\n const modalState = this.getModalState(this.props.activeModal);\n\n if (modalState.type === ModalType.PAGE) {\n return this.onPageTouchEnd(e, modalState);\n }\n\n if (modalState.type === ModalType.CARD) {\n return this.onCardTouchEnd(e, modalState);\n }\n };\n\n onPageTouchEnd(event: TouchEvent, modalState: ModalsStateEntry) {\n const { startY, shiftY } = event;\n\n modalState.contentScrolled = false;\n modalState.touchMovePositive = null;\n\n let setStateCallback;\n\n if (this.state.dragging) {\n const shiftYEndPercent = (startY + shiftY) / this.window.innerHeight * 100;\n\n let translateY = modalState.translateYCurrent;\n const expectTranslateY = translateY / event.duration * 240 * 0.6 * (modalState.touchShiftYPercent < 0 ? -1 : 1);\n translateY = rangeTranslate(translateY + expectTranslateY);\n\n if (modalState.settlingHeight !== 100) {\n if (numberInRange(translateY, modalState.expandedRange)) {\n translateY = modalState.expandedRange[0];\n } else if (numberInRange(translateY, modalState.collapsedRange)) {\n translateY = modalState.translateYFrom;\n } else if (numberInRange(translateY, modalState.hiddenRange)) {\n translateY = 100;\n } else {\n translateY = modalState.translateYFrom;\n }\n } else {\n if (numberInRange(translateY, [0, 25])) {\n translateY = 0;\n } else {\n translateY = 100;\n }\n }\n\n if (translateY !== 100 && shiftYEndPercent >= 75) {\n translateY = 100;\n }\n\n modalState.translateY = translateY;\n modalState.translateYCurrent = translateY;\n modalState.collapsed = translateY > 0 && translateY < shiftYEndPercent;\n modalState.expanded = translateY === 0;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.props.closeActiveModal();\n }\n\n setStateCallback = () => {\n if (!modalState.hidden) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n\n this.setMaskOpacity(modalState);\n };\n }\n\n this.setState({\n touchDown: false,\n dragging: false,\n }, setStateCallback);\n }\n\n onCardTouchEnd({ duration }: TouchEvent, modalState: ModalsStateEntry) {\n let setStateCallback;\n\n if (this.state.dragging) {\n let translateY = modalState.translateYCurrent;\n\n const expectTranslateY = translateY / duration * 240 * 0.6 * (modalState.touchShiftYPercent < 0 ? -1 : 1);\n translateY = Math.max(0, translateY + expectTranslateY);\n\n if (translateY >= 30) {\n translateY = 100;\n } else {\n translateY = 0;\n }\n\n modalState.translateY = translateY;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.props.closeActiveModal();\n }\n\n setStateCallback = () => {\n if (!modalState.hidden) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n\n this.setMaskOpacity(modalState);\n };\n }\n\n this.setState({\n touchDown: false,\n dragging: false,\n }, setStateCallback);\n }\n\n onScroll = (e: React.SyntheticEvent) => {\n const activeModal = this.props.activeModal;\n\n const target = e.target as HTMLElement;\n\n if (!activeModal) {\n return;\n }\n const modalState = this.getModalState(activeModal);\n if (modalState.type === ModalType.PAGE && modalState.contentElement.contains(target)) {\n modalState.contentScrolled = true;\n\n clearTimeout(modalState.contentScrollStopTimeout);\n\n modalState.contentScrollStopTimeout = setTimeout(() => {\n if (modalState.contentScrolled) {\n modalState.contentScrolled = false;\n }\n }, 250);\n }\n };\n\n waitTransitionFinish(modalState: ModalsStateEntry, eventHandler: () => void) {\n if (transitionEvent.supported) {\n const onceHandler = () => {\n modalState.innerElement.removeEventListener(transitionEvent.name, onceHandler);\n eventHandler();\n };\n\n modalState.innerElement.addEventListener(transitionEvent.name, onceHandler);\n } else {\n setTimeout(eventHandler, this.timeout);\n }\n }\n\n /**\n * Анимирует сдвиг модалки\n *\n * @param {ModalsStateEntry} modalState\n * @param {number} percent Процент сдвига: 0 – полностью открыта, 100 – полностью закрыта\n */\n animateTranslate(modalState: ModalsStateEntry, percent: number) {\n const frameId = `animateTranslateFrame${modalState.id}`;\n\n cancelAnimationFrame(this.frameIds[frameId]);\n\n this.frameIds[frameId] = requestAnimationFrame(() => {\n setTransformStyle(modalState.innerElement, `translate3d(0, ${percent}%, 0)`);\n });\n }\n\n /* Устанавливает прозрачность для полупрозрачной подложки */\n setMaskOpacity(modalState: ModalsStateEntry, forceOpacity: number = null) {\n if (forceOpacity === null && this.props.history[0] !== modalState.id) {\n return;\n }\n\n cancelAnimationFrame(this.maskAnimationFrame);\n this.maskAnimationFrame = requestAnimationFrame(() => {\n if (this.maskElementRef.current) {\n const { translateY, translateYCurrent } = modalState;\n\n const opacity = forceOpacity === null ? 1 - (translateYCurrent - translateY) / (100 - translateY) || 0 : forceOpacity;\n this.maskElementRef.current.style.opacity = Math.max(0, Math.min(100, opacity)).toString();\n }\n });\n }\n\n render() {\n const { activeModal, exitingModal, enteringModal } = this.props;\n const { touchDown, dragging } = this.state;\n\n if (!activeModal && !exitingModal) {\n return null;\n }\n\n return (\n <TouchRootContext.Provider value={true}>\n <ModalRootContext.Provider value={this.modalRootContext}>\n <Touch\n vkuiClass={classNames(getClassName('ModalRoot', this.props.platform), {\n 'ModalRoot--vkapps': this.props.configProvider.webviewType === WebviewType.VKAPPS,\n 'ModalRoot--touched': touchDown,\n 'ModalRoot--switching': !!(enteringModal || exitingModal),\n })}\n onMove={this.onTouchMove}\n onEnd={this.onTouchEnd}\n onScroll={this.onScroll}\n >\n <div\n vkuiClass=\"ModalRoot__mask\"\n onClick={this.props.closeActiveModal}\n ref={this.maskElementRef}\n />\n <div vkuiClass=\"ModalRoot__viewport\" ref={this.viewportRef}>\n {this.getModals().map((Modal) => {\n const modalId = getNavId(Modal.props, warn);\n if (modalId !== activeModal && modalId !== exitingModal) {\n return null;\n }\n const modalState = { ...this.getModalState(modalId) };\n\n const isPage = modalState.type === ModalType.PAGE;\n const key = `modal-${modalId}`;\n\n return (\n <FocusTrap\n key={key}\n getRootRef={(e) => this.getModalState(modalId).modalElement = e}\n onClose={this.props.closeActiveModal}\n timeout={this.timeout}\n vkuiClass={classNames('ModalRoot__modal', {\n 'ModalRoot__modal--active': modalId === activeModal,\n 'ModalRoot__modal--prev': modalId === exitingModal,\n 'ModalRoot__modal--next': exitingModal && modalId === activeModal || modalId === enteringModal,\n\n 'ModalRoot__modal--dragging': dragging,\n\n 'ModalRoot__modal--expandable': isPage && modalState.expandable,\n 'ModalRoot__modal--expanded': isPage && modalState.expanded,\n 'ModalRoot__modal--collapsed': isPage && modalState.collapsed,\n })}\n restoreFocus={false}\n >{Modal}</FocusTrap>\n );\n })}\n </div>\n </Touch>\n </ModalRootContext.Provider>\n </TouchRootContext.Provider>\n );\n }\n}\n\nexport const ModalRootTouch = withContext(withPlatform(withDOM<ModalRootProps>(\n withModalManager(initModal)(ModalRootTouchComponent),\n)), ConfigProviderContext, 'configProvider');\n\n/**\n * Инициализирует модалку перед анимацией открытия\n */\nfunction initModal(modalState: ModalsStateEntry) {\n switch (modalState.type) {\n case ModalType.PAGE:\n modalState.settlingHeight = modalState.settlingHeight || MODAL_PAGE_DEFAULT_PERCENT_HEIGHT;\n return initPageModal(modalState);\n case ModalType.CARD:\n return initCardModal(modalState);\n default:\n IS_DEV && warn('[initActiveModal] modalState.type is unknown');\n }\n}\n\nfunction initPageModal(modalState: ModalsStateEntry) {\n const { contentElement } = modalState;\n const contentHeight = (contentElement.firstElementChild as HTMLElement).offsetHeight;\n\n let prevTranslateY = modalState.translateY;\n\n modalState.expandable = contentHeight > contentElement.clientHeight || modalState.settlingHeight === 100;\n\n let collapsed = false;\n let expanded = false;\n let translateYFrom;\n let translateY;\n let expandedRange: TranslateRange;\n let collapsedRange: TranslateRange;\n let hiddenRange: TranslateRange;\n\n if (modalState.expandable) {\n translateYFrom = 100 - modalState.settlingHeight;\n\n const shiftHalf = translateYFrom / 2;\n const visiblePart = 100 - translateYFrom;\n\n expandedRange = [0, shiftHalf];\n collapsedRange = [shiftHalf, translateYFrom + visiblePart / 4];\n hiddenRange = [translateYFrom + visiblePart / 4, 100];\n\n collapsed = translateYFrom > 0;\n expanded = translateYFrom <= 0;\n translateY = translateYFrom;\n } else {\n const headerHeight = modalState.headerElement.offsetHeight;\n const height = contentHeight + headerHeight;\n\n translateYFrom = 100 - height / modalState.innerElement.parentElement.offsetHeight * 100;\n translateY = translateYFrom;\n\n expandedRange = [translateY, translateY + 25];\n collapsedRange = [translateY + 25, translateY + 25];\n hiddenRange = [translateY + 25, translateY + 100];\n }\n\n // Если модалка может открываться на весь экран, и новый сдвиг больше предыдущего, то откроем её на весь экран\n if (modalState.expandable && translateY > prevTranslateY || modalState.settlingHeight === 100) {\n translateY = 0;\n }\n\n modalState.expandedRange = expandedRange;\n modalState.collapsedRange = collapsedRange;\n modalState.hiddenRange = hiddenRange;\n modalState.translateY = translateY;\n modalState.translateYFrom = translateYFrom;\n modalState.collapsed = collapsed;\n modalState.expanded = expanded;\n}\n\nfunction initCardModal(modalState: ModalsStateEntry) {\n modalState.translateY = 0;\n}\n"],"file":"ModalRoot.js"}
@@ -64,9 +64,6 @@ function useModalRegistry(id, type) {
64
64
  },
65
65
  contentElement: function contentElement(e) {
66
66
  return elements.contentElement = e;
67
- },
68
- footerElement: function footerElement(e) {
69
- return elements.footerElement = e;
70
67
  }
71
68
  }).current;
72
69
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ModalRoot/ModalRootContext.tsx"],"names":["ModalRootContext","React","createContext","updateModalHeight","undefined","registerModal","isInsideModal","useModalRegistry","id","type","modalContext","useContext","elements","useRef","current","reset","Object","keys","reduce","acc","k","refs","modalElement","e","innerElement","headerElement","contentElement","footerElement"],"mappings":";;;;;;;;;;;;;;;;AAAA;;AACA;;AAaO,IAAMA,gBAAgB,gBAAGC,KAAK,CAACC,aAAN,CAA+C;AAC7EC,EAAAA,iBAAiB,EAAE;AAAA,WAAMC,SAAN;AAAA,GAD0D;AAE7EC,EAAAA,aAAa,EAAE;AAAA,WAAMD,SAAN;AAAA,GAF8D;AAG7EE,EAAAA,aAAa,EAAE;AAH8D,CAA/C,CAAzB;AAMP;AACA;AACA;;;;AACO,SAASC,gBAAT,CAA0BC,EAA1B,EAAsCC,IAAtC,EAAuD;AAC5D,MAAMC,YAAY,GAAGT,KAAK,CAACU,UAAN,CAAiBX,gBAAjB,CAArB;AACA,MAAMY,QAAQ,GAAGX,KAAK,CAACY,MAAN,CAA4B,EAA5B,EAAgCC,OAAjD;AACA,4DAA0B,YAAM;AAC9BJ,IAAAA,YAAY,CAACL,aAAb,6DAAgCO,QAAhC;AAA0CH,MAAAA,IAAI,EAAJA,IAA1C;AAAgDD,MAAAA,EAAE,EAAFA;AAAhD,QAD8B,CAE9B;;AACA,QAAMO,KAAK,GAAGC,MAAM,CAACC,IAAP,CAAYL,QAAZ,EAAsBM,MAAtB,CACZ,UAACC,GAAD,EAAMC,CAAN;AAAA,yEAAuCD,GAAvC,yCAA6CC,CAA7C,EAAiD,IAAjD;AAAA,KADY,EAEZ;AAAEX,MAAAA,IAAI,EAAJA,IAAF;AAAQD,MAAAA,EAAE,EAAFA;AAAR,KAFY,CAAd;AAGA,WAAO;AAAA,aAAME,YAAY,CAACL,aAAb,CAA2BU,KAA3B,CAAN;AAAA,KAAP;AACD,GAPD,EAOG,EAPH;AASA,MAAMM,IAAI,GAAGpB,KAAK,CAACY,MAAN,CAAkC;AAC7CS,IAAAA,YAAY,EAAE,sBAACC,CAAD;AAAA,aAAOX,QAAQ,CAACU,YAAT,GAAwBC,CAA/B;AAAA,KAD+B;AAE7CC,IAAAA,YAAY,EAAE,sBAACD,CAAD;AAAA,aAAOX,QAAQ,CAACY,YAAT,GAAwBD,CAA/B;AAAA,KAF+B;AAG7CE,IAAAA,aAAa,EAAE,uBAACF,CAAD;AAAA,aAAOX,QAAQ,CAACa,aAAT,GAAyBF,CAAhC;AAAA,KAH8B;AAI7CG,IAAAA,cAAc,EAAE,wBAACH,CAAD;AAAA,aAAOX,QAAQ,CAACc,cAAT,GAA0BH,CAAjC;AAAA,KAJ6B;AAK7CI,IAAAA,aAAa,EAAE,uBAACJ,CAAD;AAAA,aAAOX,QAAQ,CAACe,aAAT,GAAyBJ,CAAhC;AAAA;AAL8B,GAAlC,EAMVT,OANH;AAOA,SAAO;AAAEO,IAAAA,IAAI,EAAJA;AAAF,GAAP;AACD;;eAEcrB,gB","sourcesContent":["import * as React from 'react';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { ModalElements, ModalsStateEntry, ModalType } from './types';\n\nexport type ModalRegistryEntry = ModalElements & Required<Pick<ModalsStateEntry, 'type' | 'id'>>;\ntype ModalRefs = { [k in keyof ModalElements]: (e: ModalElements[k]) => void };\n\nexport interface ModalRootContextInterface {\n updateModalHeight: VoidFunction;\n registerModal(data: ModalRegistryEntry): void;\n onClose?: VoidFunction;\n isInsideModal: boolean;\n}\n\nexport const ModalRootContext = React.createContext<ModalRootContextInterface>({\n updateModalHeight: () => undefined,\n registerModal: () => undefined,\n isInsideModal: false,\n});\n\n/**\n * All referenced elements must be static\n */\nexport function useModalRegistry(id: string, type: ModalType) {\n const modalContext = React.useContext(ModalRootContext);\n const elements = React.useRef<ModalElements>({}).current;\n useIsomorphicLayoutEffect(() => {\n modalContext.registerModal({ ...elements, type, id });\n // unset refs on unmount to prevent leak\n const reset = Object.keys(elements).reduce<ModalRegistryEntry>(\n (acc, k: keyof ModalElements) => ({ ...acc, [k]: null }),\n { type, id });\n return () => modalContext.registerModal(reset);\n }, []);\n\n const refs = React.useRef<Required<ModalRefs>>({\n modalElement: (e) => elements.modalElement = e,\n innerElement: (e) => elements.innerElement = e,\n headerElement: (e) => elements.headerElement = e,\n contentElement: (e) => elements.contentElement = e,\n footerElement: (e) => elements.footerElement = e,\n }).current;\n return { refs };\n}\n\nexport default ModalRootContext;\n"],"file":"ModalRootContext.js"}
1
+ {"version":3,"sources":["../../../../src/components/ModalRoot/ModalRootContext.tsx"],"names":["ModalRootContext","React","createContext","updateModalHeight","undefined","registerModal","isInsideModal","useModalRegistry","id","type","modalContext","useContext","elements","useRef","current","reset","Object","keys","reduce","acc","k","refs","modalElement","e","innerElement","headerElement","contentElement"],"mappings":";;;;;;;;;;;;;;;;AAAA;;AACA;;AAaO,IAAMA,gBAAgB,gBAAGC,KAAK,CAACC,aAAN,CAA+C;AAC7EC,EAAAA,iBAAiB,EAAE;AAAA,WAAMC,SAAN;AAAA,GAD0D;AAE7EC,EAAAA,aAAa,EAAE;AAAA,WAAMD,SAAN;AAAA,GAF8D;AAG7EE,EAAAA,aAAa,EAAE;AAH8D,CAA/C,CAAzB;AAMP;AACA;AACA;;;;AACO,SAASC,gBAAT,CAA0BC,EAA1B,EAAsCC,IAAtC,EAAuD;AAC5D,MAAMC,YAAY,GAAGT,KAAK,CAACU,UAAN,CAAiBX,gBAAjB,CAArB;AACA,MAAMY,QAAQ,GAAGX,KAAK,CAACY,MAAN,CAA4B,EAA5B,EAAgCC,OAAjD;AACA,4DAA0B,YAAM;AAC9BJ,IAAAA,YAAY,CAACL,aAAb,6DAAgCO,QAAhC;AAA0CH,MAAAA,IAAI,EAAJA,IAA1C;AAAgDD,MAAAA,EAAE,EAAFA;AAAhD,QAD8B,CAE9B;;AACA,QAAMO,KAAK,GAAGC,MAAM,CAACC,IAAP,CAAYL,QAAZ,EAAsBM,MAAtB,CACZ,UAACC,GAAD,EAAMC,CAAN;AAAA,yEAAuCD,GAAvC,yCAA6CC,CAA7C,EAAiD,IAAjD;AAAA,KADY,EAEZ;AAAEX,MAAAA,IAAI,EAAJA,IAAF;AAAQD,MAAAA,EAAE,EAAFA;AAAR,KAFY,CAAd;AAGA,WAAO;AAAA,aAAME,YAAY,CAACL,aAAb,CAA2BU,KAA3B,CAAN;AAAA,KAAP;AACD,GAPD,EAOG,EAPH;AASA,MAAMM,IAAI,GAAGpB,KAAK,CAACY,MAAN,CAAkC;AAC7CS,IAAAA,YAAY,EAAE,sBAACC,CAAD;AAAA,aAAOX,QAAQ,CAACU,YAAT,GAAwBC,CAA/B;AAAA,KAD+B;AAE7CC,IAAAA,YAAY,EAAE,sBAACD,CAAD;AAAA,aAAOX,QAAQ,CAACY,YAAT,GAAwBD,CAA/B;AAAA,KAF+B;AAG7CE,IAAAA,aAAa,EAAE,uBAACF,CAAD;AAAA,aAAOX,QAAQ,CAACa,aAAT,GAAyBF,CAAhC;AAAA,KAH8B;AAI7CG,IAAAA,cAAc,EAAE,wBAACH,CAAD;AAAA,aAAOX,QAAQ,CAACc,cAAT,GAA0BH,CAAjC;AAAA;AAJ6B,GAAlC,EAKVT,OALH;AAMA,SAAO;AAAEO,IAAAA,IAAI,EAAJA;AAAF,GAAP;AACD;;eAEcrB,gB","sourcesContent":["import * as React from 'react';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { ModalElements, ModalsStateEntry, ModalType } from './types';\n\nexport type ModalRegistryEntry = ModalElements & Required<Pick<ModalsStateEntry, 'type' | 'id'>>;\ntype ModalRefs = { [k in keyof ModalElements]: (e: ModalElements[k]) => void };\n\nexport interface ModalRootContextInterface {\n updateModalHeight: VoidFunction;\n registerModal(data: ModalRegistryEntry): void;\n onClose?: VoidFunction;\n isInsideModal: boolean;\n}\n\nexport const ModalRootContext = React.createContext<ModalRootContextInterface>({\n updateModalHeight: () => undefined,\n registerModal: () => undefined,\n isInsideModal: false,\n});\n\n/**\n * All referenced elements must be static\n */\nexport function useModalRegistry(id: string, type: ModalType) {\n const modalContext = React.useContext(ModalRootContext);\n const elements = React.useRef<ModalElements>({}).current;\n useIsomorphicLayoutEffect(() => {\n modalContext.registerModal({ ...elements, type, id });\n // unset refs on unmount to prevent leak\n const reset = Object.keys(elements).reduce<ModalRegistryEntry>(\n (acc, k: keyof ModalElements) => ({ ...acc, [k]: null }),\n { type, id });\n return () => modalContext.registerModal(reset);\n }, []);\n\n const refs = React.useRef<Required<ModalRefs>>({\n modalElement: (e) => elements.modalElement = e,\n innerElement: (e) => elements.innerElement = e,\n headerElement: (e) => elements.headerElement = e,\n contentElement: (e) => elements.contentElement = e,\n }).current;\n return { refs };\n}\n\nexport default ModalRootContext;\n"],"file":"ModalRootContext.js"}