@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.
- package/.cache/.eslintcache +1 -1
- package/.cache/.stylelintcache +1 -1
- package/.cache/.tsbuildinfo +391 -282
- package/.cache/ts/src/components/AppRoot/AppRoot.d.ts +1 -0
- package/.cache/ts/src/components/ChipsSelect/ChipsSelect.d.ts +1 -1
- package/.cache/ts/src/components/CustomSelect/CustomSelect.d.ts +2 -2
- package/.cache/ts/src/components/FixedLayout/FixedLayout.d.ts +4 -9
- package/.cache/ts/src/components/ModalPage/ModalPage.d.ts +1 -2
- package/.cache/ts/src/components/Root/Root.d.ts +5 -27
- package/.cache/ts/src/components/SimpleCheckbox/SimpleCheckbox.d.ts +9 -0
- package/.cache/ts/src/components/Tappable/Tappable.d.ts +12 -9
- package/.cache/ts/src/components/Touch/Touch.d.ts +1 -2
- package/.cache/ts/src/components/UsersStack/masks.d.ts +1 -1
- package/.cache/ts/src/hooks/useEventListener.d.ts +2 -2
- package/.cache/ts/src/hooks/useKeyboard.d.ts +11 -0
- package/.cache/ts/src/index.d.ts +1 -1
- package/.cache/ts/src/lib/select.d.ts +7 -0
- package/.cache/ts/src/lib/touch.d.ts +1 -1
- package/.cache/ts/src/lib/utils.d.ts +2 -3
- package/.cache/ts/src/types.d.ts +2 -6
- package/.cache/ts/src/unstable/index.d.ts +2 -0
- package/babel.cjs.config.js +7 -1
- package/babel.config.js +7 -1
- package/dist/cjs/components/AppRoot/AppRoot.d.ts +1 -0
- package/dist/cjs/components/AppRoot/AppRoot.js +29 -1
- package/dist/cjs/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/cjs/components/Banner/Banner.js +1 -1
- package/dist/cjs/components/Banner/Banner.js.map +1 -1
- package/dist/cjs/components/Cell/Cell.js +3 -3
- package/dist/cjs/components/Cell/Cell.js.map +1 -1
- package/dist/cjs/components/ChipsSelect/ChipsSelect.d.ts +1 -1
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js +5 -6
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cjs/components/ChipsSelect/useChipsSelect.js +2 -2
- package/dist/cjs/components/ChipsSelect/useChipsSelect.js.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +2 -2
- package/dist/cjs/components/CustomSelect/CustomSelect.js +3 -3
- package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cjs/components/FixedLayout/FixedLayout.d.ts +4 -9
- package/dist/cjs/components/FixedLayout/FixedLayout.js +91 -179
- package/dist/cjs/components/FixedLayout/FixedLayout.js.map +1 -1
- package/dist/cjs/components/Gallery/Gallery.js +2 -2
- package/dist/cjs/components/Gallery/Gallery.js.map +1 -1
- package/dist/cjs/components/Header/Header.js +1 -1
- package/dist/cjs/components/Header/Header.js.map +1 -1
- package/dist/cjs/components/ModalCardBase/ModalCardBase.js +6 -1
- package/dist/cjs/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/cjs/components/ModalPage/ModalPage.d.ts +1 -2
- package/dist/cjs/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRoot.js +2 -2
- package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cjs/components/Panel/Panel.js +2 -2
- package/dist/cjs/components/Panel/Panel.js.map +1 -1
- package/dist/cjs/components/PanelHeaderContent/PanelHeaderContent.js +0 -1
- package/dist/cjs/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
- package/dist/cjs/components/PullToRefresh/PullToRefresh.js +2 -2
- package/dist/cjs/components/PullToRefresh/PullToRefresh.js.map +1 -1
- package/dist/cjs/components/RangeSlider/UniversalSlider.js +2 -2
- package/dist/cjs/components/RangeSlider/UniversalSlider.js.map +1 -1
- package/dist/cjs/components/Root/Root.d.ts +5 -27
- package/dist/cjs/components/Root/Root.js +158 -214
- package/dist/cjs/components/Root/Root.js.map +1 -1
- package/dist/cjs/components/Search/Search.js +3 -3
- package/dist/cjs/components/Search/Search.js.map +1 -1
- package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cjs/components/SimpleCheckbox/SimpleCheckbox.d.ts +9 -0
- package/dist/cjs/components/SimpleCheckbox/SimpleCheckbox.js +126 -0
- package/dist/cjs/components/SimpleCheckbox/SimpleCheckbox.js.map +1 -0
- package/dist/cjs/components/Snackbar/Snackbar.js +2 -2
- package/dist/cjs/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/cjs/components/Tappable/Tappable.d.ts +12 -9
- package/dist/cjs/components/Tappable/Tappable.js +47 -36
- package/dist/cjs/components/Tappable/Tappable.js.map +1 -1
- package/dist/cjs/components/Touch/Touch.d.ts +1 -2
- package/dist/cjs/components/Touch/Touch.js +172 -283
- package/dist/cjs/components/Touch/Touch.js.map +1 -1
- package/dist/cjs/components/UsersStack/UsersStack.js +9 -18
- package/dist/cjs/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/cjs/components/UsersStack/masks.d.ts +1 -1
- package/dist/cjs/components/UsersStack/masks.js +5 -8
- package/dist/cjs/components/UsersStack/masks.js.map +1 -1
- package/dist/cjs/components/View/View.js +2 -2
- package/dist/cjs/components/View/View.js.map +1 -1
- package/dist/cjs/components/View/ViewInfinite.js +2 -2
- package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
- package/dist/cjs/hooks/useEventListener.d.ts +2 -2
- package/dist/cjs/hooks/useEventListener.js +9 -4
- package/dist/cjs/hooks/useEventListener.js.map +1 -1
- package/dist/cjs/hooks/useGlobalEventListener.js +2 -4
- package/dist/cjs/hooks/useGlobalEventListener.js.map +1 -1
- package/dist/cjs/hooks/useInsets.js +3 -10
- package/dist/cjs/hooks/useInsets.js.map +1 -1
- package/dist/cjs/hooks/useKeyboard.d.ts +11 -0
- package/dist/cjs/hooks/useKeyboard.js +78 -0
- package/dist/cjs/hooks/useKeyboard.js.map +1 -0
- package/dist/cjs/hooks/useKeyboardInputTracker.js +4 -2
- package/dist/cjs/hooks/useKeyboardInputTracker.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/select.d.ts +7 -0
- package/dist/cjs/lib/select.js +73 -0
- package/dist/cjs/lib/select.js.map +1 -0
- package/dist/cjs/lib/touch.d.ts +1 -1
- package/dist/cjs/lib/touch.js +6 -2
- package/dist/cjs/lib/touch.js.map +1 -1
- package/dist/cjs/lib/utils.d.ts +2 -3
- package/dist/cjs/lib/utils.js.map +1 -1
- package/dist/cjs/types.d.ts +2 -6
- package/dist/cjs/unstable/index.d.ts +2 -0
- package/dist/cjs/unstable/index.js +8 -0
- package/dist/cjs/unstable/index.js.map +1 -1
- package/dist/components/AppRoot/AppRoot.d.ts +1 -0
- package/dist/components/AppRoot/AppRoot.js +29 -5
- package/dist/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/components/Banner/Banner.js +1 -1
- package/dist/components/Banner/Banner.js.map +1 -1
- package/dist/components/Cell/Cell.js +1 -1
- package/dist/components/Cell/Cell.js.map +1 -1
- package/dist/components/ChipsSelect/ChipsSelect.d.ts +1 -1
- package/dist/components/ChipsSelect/ChipsSelect.js +4 -6
- package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/components/ChipsSelect/useChipsSelect.js +2 -2
- package/dist/components/ChipsSelect/useChipsSelect.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.d.ts +2 -2
- package/dist/components/CustomSelect/CustomSelect.js +2 -3
- package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/components/FixedLayout/FixedLayout.d.ts +4 -9
- package/dist/components/FixedLayout/FixedLayout.js +84 -175
- package/dist/components/FixedLayout/FixedLayout.js.map +1 -1
- package/dist/components/Gallery/Gallery.js +1 -1
- package/dist/components/Gallery/Gallery.js.map +1 -1
- package/dist/components/Header/Header.js +1 -1
- package/dist/components/Header/Header.js.map +1 -1
- package/dist/components/ModalCardBase/ModalCardBase.js +5 -1
- package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/components/ModalPage/ModalPage.d.ts +1 -2
- package/dist/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/components/ModalRoot/ModalRoot.js +1 -1
- package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/components/Panel/Panel.js +1 -1
- package/dist/components/Panel/Panel.js.map +1 -1
- package/dist/components/PanelHeaderContent/PanelHeaderContent.js +0 -1
- package/dist/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
- package/dist/components/PullToRefresh/PullToRefresh.js +1 -1
- package/dist/components/PullToRefresh/PullToRefresh.js.map +1 -1
- package/dist/components/RangeSlider/UniversalSlider.js +1 -1
- package/dist/components/RangeSlider/UniversalSlider.js.map +1 -1
- package/dist/components/Root/Root.d.ts +5 -27
- package/dist/components/Root/Root.js +152 -207
- package/dist/components/Root/Root.js.map +1 -1
- package/dist/components/Search/Search.js +1 -1
- package/dist/components/Search/Search.js.map +1 -1
- package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/components/SimpleCheckbox/SimpleCheckbox.d.ts +9 -0
- package/dist/components/SimpleCheckbox/SimpleCheckbox.js +97 -0
- package/dist/components/SimpleCheckbox/SimpleCheckbox.js.map +1 -0
- package/dist/components/Snackbar/Snackbar.js +1 -1
- package/dist/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/components/Tappable/Tappable.d.ts +12 -9
- package/dist/components/Tappable/Tappable.js +45 -37
- package/dist/components/Tappable/Tappable.js.map +1 -1
- package/dist/components/Touch/Touch.d.ts +1 -2
- package/dist/components/Touch/Touch.js +163 -286
- package/dist/components/Touch/Touch.js.map +1 -1
- package/dist/components/UsersStack/UsersStack.js +7 -16
- package/dist/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/components/UsersStack/masks.d.ts +1 -1
- package/dist/components/UsersStack/masks.js +6 -9
- package/dist/components/UsersStack/masks.js.map +1 -1
- package/dist/components/View/View.js +1 -1
- package/dist/components/View/View.js.map +1 -1
- package/dist/components/View/ViewInfinite.js +1 -1
- package/dist/components/View/ViewInfinite.js.map +1 -1
- package/dist/components.css +1 -1
- package/dist/components.css.map +1 -1
- package/dist/cssm/components/ActionSheetItem/ActionSheetItem.css +1 -1
- package/dist/cssm/components/AppRoot/AppRoot.css +1 -0
- package/dist/cssm/components/AppRoot/AppRoot.js +30 -2
- package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/cssm/components/Banner/Banner.css +1 -1
- package/dist/cssm/components/Banner/Banner.js +1 -1
- package/dist/cssm/components/Banner/Banner.js.map +1 -1
- package/dist/cssm/components/Cell/Cell.js +1 -1
- package/dist/cssm/components/Cell/Cell.js.map +1 -1
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js +4 -6
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cssm/components/ChipsSelect/useChipsSelect.js +2 -2
- package/dist/cssm/components/ChipsSelect/useChipsSelect.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.js +2 -3
- package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cssm/components/FixedLayout/FixedLayout.js +84 -175
- package/dist/cssm/components/FixedLayout/FixedLayout.js.map +1 -1
- package/dist/cssm/components/Gallery/Gallery.js +1 -1
- package/dist/cssm/components/Gallery/Gallery.js.map +1 -1
- package/dist/cssm/components/Header/Header.js +1 -1
- package/dist/cssm/components/Header/Header.js.map +1 -1
- package/dist/cssm/components/ModalCardBase/ModalCardBase.css +1 -1
- package/dist/cssm/components/ModalCardBase/ModalCardBase.js +5 -1
- package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRoot.css +1 -1
- package/dist/cssm/components/ModalRoot/ModalRoot.js +1 -1
- package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cssm/components/Panel/Panel.js +1 -1
- package/dist/cssm/components/Panel/Panel.js.map +1 -1
- package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.css +1 -1
- package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.js +0 -1
- package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
- package/dist/cssm/components/PullToRefresh/PullToRefresh.js +1 -1
- package/dist/cssm/components/PullToRefresh/PullToRefresh.js.map +1 -1
- package/dist/cssm/components/RangeSlider/UniversalSlider.js +1 -1
- package/dist/cssm/components/RangeSlider/UniversalSlider.js.map +1 -1
- package/dist/cssm/components/Root/Root.js +152 -207
- package/dist/cssm/components/Root/Root.js.map +1 -1
- package/dist/cssm/components/Search/Search.js +1 -1
- package/dist/cssm/components/Search/Search.js.map +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.css +1 -0
- package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.js +98 -0
- package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.js.map +1 -0
- package/dist/cssm/components/Snackbar/Snackbar.js +1 -1
- package/dist/cssm/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/cssm/components/Tappable/Tappable.js +45 -37
- package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
- package/dist/cssm/components/Touch/Touch.js +163 -286
- package/dist/cssm/components/Touch/Touch.js.map +1 -1
- package/dist/cssm/components/UsersStack/UsersStack.css +1 -1
- package/dist/cssm/components/UsersStack/UsersStack.js +7 -16
- package/dist/cssm/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/cssm/components/UsersStack/masks.js +6 -9
- package/dist/cssm/components/UsersStack/masks.js.map +1 -1
- package/dist/cssm/components/View/View.js +1 -1
- package/dist/cssm/components/View/View.js.map +1 -1
- package/dist/cssm/components/View/ViewInfinite.js +1 -1
- package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
- package/dist/cssm/hooks/useEventListener.js +8 -4
- package/dist/cssm/hooks/useEventListener.js.map +1 -1
- package/dist/cssm/hooks/useGlobalEventListener.js +2 -2
- package/dist/cssm/hooks/useGlobalEventListener.js.map +1 -1
- package/dist/cssm/hooks/useInsets.js +2 -10
- package/dist/cssm/hooks/useInsets.js.map +1 -1
- package/dist/cssm/hooks/useKeyboard.js +62 -0
- package/dist/cssm/hooks/useKeyboard.js.map +1 -0
- package/dist/cssm/hooks/useKeyboardInputTracker.js +4 -2
- package/dist/cssm/hooks/useKeyboardInputTracker.js.map +1 -1
- package/dist/cssm/index.js +1 -1
- package/dist/cssm/index.js.map +1 -1
- package/dist/cssm/lib/select.js +62 -0
- package/dist/cssm/lib/select.js.map +1 -0
- package/dist/cssm/lib/touch.js +5 -2
- package/dist/cssm/lib/touch.js.map +1 -1
- package/dist/cssm/lib/utils.js.map +1 -1
- package/dist/cssm/styles/animations.css +1 -1
- package/dist/cssm/styles/common.css +1 -1
- package/dist/cssm/styles/components.css +1 -1
- package/dist/cssm/styles/constants.css +1 -1
- package/dist/cssm/styles/unstable.css +1 -1
- package/dist/cssm/unstable/index.js +1 -0
- package/dist/cssm/unstable/index.js.map +1 -1
- package/dist/hooks/useEventListener.d.ts +2 -2
- package/dist/hooks/useEventListener.js +8 -4
- package/dist/hooks/useEventListener.js.map +1 -1
- package/dist/hooks/useGlobalEventListener.js +2 -2
- package/dist/hooks/useGlobalEventListener.js.map +1 -1
- package/dist/hooks/useInsets.js +2 -10
- package/dist/hooks/useInsets.js.map +1 -1
- package/dist/hooks/useKeyboard.d.ts +11 -0
- package/dist/hooks/useKeyboard.js +62 -0
- package/dist/hooks/useKeyboard.js.map +1 -0
- package/dist/hooks/useKeyboardInputTracker.js +4 -2
- package/dist/hooks/useKeyboardInputTracker.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/select.d.ts +7 -0
- package/dist/lib/select.js +62 -0
- package/dist/lib/select.js.map +1 -0
- package/dist/lib/touch.d.ts +1 -1
- package/dist/lib/touch.js +5 -2
- package/dist/lib/touch.js.map +1 -1
- package/dist/lib/utils.d.ts +2 -3
- package/dist/lib/utils.js.map +1 -1
- package/dist/types.d.ts +2 -6
- package/dist/unstable/index.d.ts +2 -0
- package/dist/unstable/index.js +1 -0
- package/dist/unstable/index.js.map +1 -1
- package/dist/unstable.css +1 -1
- package/dist/unstable.css.map +1 -1
- package/dist/vkui.css +1 -1
- package/dist/vkui.css.map +1 -1
- package/package.json +4 -2
- package/postcss.config.js +1 -1
- package/src/components/ActionSheetItem/ActionSheetItem.css +4 -8
- package/src/components/AppRoot/AppRoot.css +20 -0
- package/src/components/AppRoot/AppRoot.tsx +30 -0
- package/src/components/Banner/Banner.css +4 -0
- package/src/components/Banner/Banner.tsx +1 -1
- package/src/components/Cell/Cell.tsx +1 -1
- package/src/components/ChipsSelect/ChipsSelect.tsx +4 -7
- package/src/components/ChipsSelect/Readme.md +0 -2
- package/src/components/ChipsSelect/useChipsSelect.ts +1 -1
- package/src/components/CustomSelect/CustomSelect.tsx +3 -2
- package/src/components/FixedLayout/FixedLayout.tsx +61 -147
- package/src/components/Gallery/Gallery.tsx +1 -1
- package/src/components/Header/Header.tsx +1 -1
- package/src/components/ModalCardBase/ModalCardBase.css +4 -0
- package/src/components/ModalCardBase/ModalCardBase.tsx +5 -1
- package/src/components/ModalPage/ModalPage.tsx +1 -2
- package/src/components/ModalRoot/ModalRoot.css +10 -0
- package/src/components/ModalRoot/ModalRoot.tsx +1 -1
- package/src/components/Panel/Panel.tsx +1 -1
- package/src/components/PanelHeaderContent/PanelHeaderContent.css +2 -1
- package/src/components/PanelHeaderContent/PanelHeaderContent.tsx +2 -2
- package/src/components/PullToRefresh/PullToRefresh.tsx +1 -1
- package/src/components/RangeSlider/UniversalSlider.tsx +1 -1
- package/src/components/Root/Readme.md +27 -37
- package/src/components/Root/Root.tsx +112 -191
- package/src/components/Search/Search.tsx +1 -1
- package/src/components/Separator/Readme.md +3 -1
- package/src/components/SimpleCell/SimpleCell.tsx +1 -1
- package/src/components/SimpleCheckbox/Readme.md +17 -0
- package/src/components/SimpleCheckbox/SimpleCheckbox.css +115 -0
- package/src/components/SimpleCheckbox/SimpleCheckbox.tsx +105 -0
- package/src/components/Snackbar/Snackbar.tsx +1 -1
- package/src/components/Tappable/Tappable.tsx +28 -37
- package/src/components/Touch/Touch.tsx +100 -238
- package/src/components/UsersStack/UsersStack.css +5 -9
- package/src/components/UsersStack/UsersStack.tsx +4 -11
- package/src/components/UsersStack/masks.tsx +6 -9
- package/src/components/View/Readme.md +34 -42
- package/src/components/View/View.tsx +1 -1
- package/src/components/View/ViewInfinite.tsx +1 -1
- package/src/hooks/useEventListener.ts +11 -8
- package/src/hooks/useGlobalEventListener.ts +2 -2
- package/src/hooks/useInsets.ts +2 -8
- package/src/hooks/useKeyboard.ts +67 -0
- package/src/hooks/useKeyboardInputTracker.ts +4 -2
- package/src/index.ts +1 -1
- package/src/lib/select.ts +53 -0
- package/src/lib/touch.ts +2 -2
- package/src/lib/utils.ts +3 -4
- package/src/styles/animations.css +0 -14
- package/src/styles/common.css +0 -21
- package/src/styles/components.css +2 -0
- package/src/styles/constants.css +3 -0
- package/src/styles/unstable.css +1 -0
- package/src/types.ts +2 -8
- package/src/unstable/index.ts +3 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ModalCardBase/ModalCardBase.tsx"],"names":["hasReactNode","Title","Headline","classNames","getClassName","usePlatform","ViewHeight","ViewWidth","withAdaptivity","PanelHeaderButton","IOS","ModalDismissButton","Icon24Dismiss","ModalCardBase","getRootRef","icon","header","subheader","children","actions","actionsLayout","viewWidth","hasMouse","viewHeight","onClose","restProps","platform","isDesktop","SMALL_TABLET","MEDIUM","canShowCloseBtn","canShowCloseBtnIos"],"mappings":";;;;AACA,SAASA,YAAT;AACA,OAAOC,KAAP;AACA,OAAOC,QAAP;AACA,SAASC,UAAT;AACA,SAASC,YAAT;AACA,SAASC,WAAT;AACA,SAA0BC,UAA1B,EAAsCC,SAAtC,EAAiDC,cAAjD;AAEA,SAASC,iBAAT;AACA,SAASC,GAAT;AACA,OAAOC,kBAAP;AACA,SAASC,aAAT,QAA8B,kBAA9B;AAmCA,OAAO,IAAMC,aAA2C,
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ModalCardBase/ModalCardBase.tsx"],"names":["hasReactNode","Title","Headline","classNames","getClassName","usePlatform","ViewHeight","ViewWidth","withAdaptivity","PanelHeaderButton","IOS","ModalDismissButton","Icon24Dismiss","useKeyboard","ModalCardBase","getRootRef","icon","header","subheader","children","actions","actionsLayout","viewWidth","hasMouse","viewHeight","onClose","restProps","platform","isDesktop","SMALL_TABLET","MEDIUM","isSoftwareKeyboardOpened","isOpened","canShowCloseBtn","canShowCloseBtnIos"],"mappings":";;;;AACA,SAASA,YAAT;AACA,OAAOC,KAAP;AACA,OAAOC,QAAP;AACA,SAASC,UAAT;AACA,SAASC,YAAT;AACA,SAASC,WAAT;AACA,SAA0BC,UAA1B,EAAsCC,SAAtC,EAAiDC,cAAjD;AAEA,SAASC,iBAAT;AACA,SAASC,GAAT;AACA,OAAOC,kBAAP;AACA,SAASC,aAAT,QAA8B,kBAA9B;AACA,SAASC,WAAT;AAmCA,OAAO,IAAMC,aAA2C,GAAGN,cAAc,CAAC,gBAa9B;AAAA,MAZ1CO,UAY0C,QAZ1CA,UAY0C;AAAA,MAX1CC,IAW0C,QAX1CA,IAW0C;AAAA,MAV1CC,MAU0C,QAV1CA,MAU0C;AAAA,MAT1CC,SAS0C,QAT1CA,SAS0C;AAAA,MAR1CC,QAQ0C,QAR1CA,QAQ0C;AAAA,MAP1CC,OAO0C,QAP1CA,OAO0C;AAAA,MAN1CC,aAM0C,QAN1CA,aAM0C;AAAA,MAL1CC,SAK0C,QAL1CA,SAK0C;AAAA,MAJ1CC,QAI0C,QAJ1CA,QAI0C;AAAA,MAH1CC,UAG0C,QAH1CA,UAG0C;AAAA,MAF1CC,OAE0C,QAF1CA,OAE0C;AAAA,MADvCC,SACuC;;AAC1C,MAAMC,QAAQ,GAAGtB,WAAW,EAA5B;AACA,MAAMuB,SAAS,GAAGN,SAAS,IAAIf,SAAS,CAACsB,YAAvB,KAAwCN,QAAQ,IAAIC,UAAU,IAAIlB,UAAU,CAACwB,MAA7E,CAAlB;AACA,MAAMC,wBAAwB,GAAGlB,WAAW,GAAGmB,QAA/C;AAEA,MAAMC,eAAe,GAAGX,SAAS,IAAIf,SAAS,CAACsB,YAA/C;AACA,MAAMK,kBAAkB,GAAGP,QAAQ,KAAKjB,GAAb,IAAoB,CAACuB,eAAhD;AAEA,SACE,wCACMP,SADN;AAEE,IAAA,SAAS,EAAEvB,UAAU,CAACC,YAAY,CAAC,eAAD,EAAkBuB,QAAlB,CAAb,EAA0C;AAC7D,gCAA0BC;AADmC,KAA1C,CAFvB;AAKE,IAAA,GAAG,EAAEb;AALP,MAOE;AAAK,IAAA,SAAS,EAAEZ,UAAU,CAAC,0BAAD,EAA6B;AACrD,0DAAoD4B;AADC,KAA7B;AAA1B,KAGG/B,YAAY,CAACgB,IAAD,CAAZ,IAAsB;AAAK,IAAA,SAAS,EAAC;AAAf,KAAsCA,IAAtC,CAHzB,EAIGhB,YAAY,CAACiB,MAAD,CAAZ,IAAwB,oBAAC,KAAD;AAAO,IAAA,KAAK,EAAC,GAAb;AAAiB,IAAA,MAAM,EAAC,UAAxB;AAAmC,IAAA,SAAS,EAAC;AAA7C,KAAsEA,MAAtE,CAJ3B,EAKGjB,YAAY,CAACkB,SAAD,CAAZ,IAA2B,oBAAC,QAAD;AAAU,IAAA,MAAM,EAAC,SAAjB;AAA2B,IAAA,SAAS,EAAC;AAArC,KAAiEA,SAAjE,CAL9B,EAOGC,QAPH,EASGnB,YAAY,CAACoB,OAAD,CAAZ,IACC;AAAK,IAAA,SAAS,EAAEjB,UAAU,CAAC,wBAAD,EAA2B;AACnD,mCAA6BkB,aAAa,KAAK;AADI,KAA3B;AAA1B,KAGGD,OAHH,CAVJ,EAiBGa,eAAe,IAAI,oBAAC,kBAAD;AAAoB,IAAA,OAAO,EAAER;AAA7B,IAjBtB,EAkBGS,kBAAkB,IACjB,oBAAC,iBAAD;AAAmB,IAAA,SAAS,EAAC,oBAA7B;AAAkD,IAAA,OAAO,EAAET;AAA3D,KACE,oBAAC,aAAD,OADF,CAnBJ,CAPF,CADF;AAkCD,CAvDwE,EAuDtE;AACDH,EAAAA,SAAS,EAAE,IADV;AAEDE,EAAAA,UAAU,EAAE,IAFX;AAGDD,EAAAA,QAAQ,EAAE;AAHT,CAvDsE,CAAlE","sourcesContent":["import * as React from 'react';\nimport { hasReactNode } from '../../lib/utils';\nimport Title from '../Typography/Title/Title';\nimport Headline from '../Typography/Headline/Headline';\nimport { classNames } from '../../lib/classNames';\nimport { getClassName } from '../../helpers/getClassName';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { AdaptivityProps, ViewHeight, ViewWidth, withAdaptivity } from '../../hoc/withAdaptivity';\nimport { HasRootRef } from '../../types';\nimport { PanelHeaderButton } from '../PanelHeaderButton/PanelHeaderButton';\nimport { IOS } from '../../lib/platform';\nimport ModalDismissButton from '../ModalDismissButton/ModalDismissButton';\nimport { Icon24Dismiss } from '@vkontakte/icons';\nimport { useKeyboard } from '../../hooks/useKeyboard';\nimport './ModalCardBase.css';\n\nexport interface ModalCardBaseProps extends React.HTMLAttributes<HTMLDivElement>, HasRootRef<HTMLDivElement> {\n /**\n * Иконка.\n *\n * Может быть компонентом иконки, например, `<Icon56MoneyTransferOutline />`, или `<Avatar size={72} src=\"\" />`\n */\n icon?: React.ReactNode;\n\n /**\n * Заголовок карточки\n */\n header?: React.ReactNode;\n\n /**\n * Подзаголовок\n */\n subheader?: React.ReactNode;\n\n /**\n * Кнопки-действия.\n *\n * Рекомендуется использовать `<Button size=\"l\" mode=\"primary\" />` или `<Button size=\"l\" mode=\"secondary\" />`\n */\n actions?: React.ReactNode;\n\n /**\n * Тип отображения кнопок: вертикальный или горизонтальный\n */\n actionsLayout?: 'vertical' | 'horizontal';\n onClose?: VoidFunction;\n}\n\nexport const ModalCardBase: React.FC<ModalCardBaseProps> = withAdaptivity(({\n getRootRef,\n icon,\n header,\n subheader,\n children,\n actions,\n actionsLayout,\n viewWidth,\n hasMouse,\n viewHeight,\n onClose,\n ...restProps\n}: ModalCardBaseProps & AdaptivityProps) => {\n const platform = usePlatform();\n const isDesktop = viewWidth >= ViewWidth.SMALL_TABLET && (hasMouse || viewHeight >= ViewHeight.MEDIUM);\n const isSoftwareKeyboardOpened = useKeyboard().isOpened;\n\n const canShowCloseBtn = viewWidth >= ViewWidth.SMALL_TABLET;\n const canShowCloseBtnIos = platform === IOS && !canShowCloseBtn;\n\n return (\n <div\n {...restProps}\n vkuiClass={classNames(getClassName('ModalCardBase', platform), {\n 'ModalCardBase--desktop': isDesktop,\n })}\n ref={getRootRef}\n >\n <div vkuiClass={classNames('ModalCardBase__container', {\n 'ModalCardBase__container--softwareKeyboardOpened': isSoftwareKeyboardOpened,\n })}>\n {hasReactNode(icon) && <div vkuiClass=\"ModalCardBase__icon\">{icon}</div>}\n {hasReactNode(header) && <Title level=\"2\" weight=\"semibold\" vkuiClass=\"ModalCardBase__header\">{header}</Title>}\n {hasReactNode(subheader) && <Headline weight=\"regular\" vkuiClass=\"ModalCardBase__subheader\">{subheader}</Headline>}\n\n {children}\n\n {hasReactNode(actions) &&\n <div vkuiClass={classNames('ModalCardBase__actions', {\n 'ModalCardBase__actions--v': actionsLayout === 'vertical',\n })}>\n {actions}\n </div>\n }\n\n {canShowCloseBtn && <ModalDismissButton onClick={onClose} />}\n {canShowCloseBtnIos &&\n <PanelHeaderButton vkuiClass=\"ModalCard__dismiss\" onClick={onClose}>\n <Icon24Dismiss />\n </PanelHeaderButton>\n }\n </div>\n </div>\n );\n}, {\n viewWidth: true,\n viewHeight: true,\n hasMouse: true,\n});\n\n"],"file":"ModalCardBase.js"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { AdaptivityProps } from '../../hoc/withAdaptivity';
|
|
3
|
-
import { Ref } from '../../types';
|
|
4
3
|
import { NavIdProps } from '../../lib/getNavId';
|
|
5
4
|
import './ModalPage.css';
|
|
6
5
|
export interface ModalPageProps extends React.HTMLAttributes<HTMLDivElement>, AdaptivityProps, NavIdProps {
|
|
@@ -17,7 +16,7 @@ export interface ModalPageProps extends React.HTMLAttributes<HTMLDivElement>, Ad
|
|
|
17
16
|
* Если высота контента в модальной странице может поменяться, нужно установить это свойство
|
|
18
17
|
*/
|
|
19
18
|
dynamicContentHeight?: boolean;
|
|
20
|
-
getModalContentRef?: Ref<HTMLDivElement>;
|
|
19
|
+
getModalContentRef?: React.Ref<HTMLDivElement>;
|
|
21
20
|
}
|
|
22
21
|
declare const _default: React.FC<ModalPageProps>;
|
|
23
22
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ModalPage/ModalPage.tsx"],"names":["React","getClassName","classNames","ModalRootContext","useModalRegistry","usePlatform","withAdaptivity","ViewHeight","ViewWidth","ModalDismissButton","multiRef","ModalType","getNavId","warnOnce","warn","ModalPage","props","platform","useContext","updateModalHeight","children","header","viewWidth","viewHeight","sizeX","hasMouse","onClose","settlingHeight","dynamicContentHeight","getModalContentRef","nav","restProps","useEffect","isDesktop","SMALL_TABLET","MEDIUM","canShowCloseBtn","modalContext","PAGE","refs","innerElement","headerElement","contentElement","defaultProps"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,YAAT;AACA,SAASC,UAAT;AACA,SAASC,gBAAT,EAA2BC,gBAA3B;AACA,SAASC,WAAT;AACA,SAASC,cAAT,EAA0CC,UAA1C,EAAsDC,SAAtD;AACA,OAAOC,kBAAP;
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ModalPage/ModalPage.tsx"],"names":["React","getClassName","classNames","ModalRootContext","useModalRegistry","usePlatform","withAdaptivity","ViewHeight","ViewWidth","ModalDismissButton","multiRef","ModalType","getNavId","warnOnce","warn","ModalPage","props","platform","useContext","updateModalHeight","children","header","viewWidth","viewHeight","sizeX","hasMouse","onClose","settlingHeight","dynamicContentHeight","getModalContentRef","nav","restProps","useEffect","isDesktop","SMALL_TABLET","MEDIUM","canShowCloseBtn","modalContext","PAGE","refs","innerElement","headerElement","contentElement","defaultProps"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport { classNames } from '../../lib/classNames';\nimport { ModalRootContext, useModalRegistry } from '../ModalRoot/ModalRootContext';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { withAdaptivity, AdaptivityProps, ViewHeight, ViewWidth } from '../../hoc/withAdaptivity';\nimport ModalDismissButton from '../ModalDismissButton/ModalDismissButton';\nimport { multiRef } from '../../lib/utils';\nimport { ModalType } from '../ModalRoot/types';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport './ModalPage.css';\n\nexport interface ModalPageProps extends React.HTMLAttributes<HTMLDivElement>, AdaptivityProps, NavIdProps {\n /**\n * Шапка модальной страницы, `<ModalPageHeader />`\n */\n header?: React.ReactNode;\n onClose?: VoidFunction;\n /**\n * Процент, на который изначально будет открыта модальная страница. При `settlingHeight={100}` модальная страница раскрывается на всю высоту.\n */\n settlingHeight?: number;\n /**\n * Если высота контента в модальной странице может поменяться, нужно установить это свойство\n */\n dynamicContentHeight?: boolean;\n getModalContentRef?: React.Ref<HTMLDivElement>;\n}\n\nconst warn = warnOnce('ModalPage');\nconst ModalPage: React.FC<ModalPageProps> = (props: ModalPageProps) => {\n const platform = usePlatform();\n const { updateModalHeight } = React.useContext(ModalRootContext);\n const {\n children,\n header,\n viewWidth,\n viewHeight,\n sizeX,\n hasMouse,\n onClose,\n settlingHeight,\n dynamicContentHeight,\n getModalContentRef,\n nav,\n ...restProps\n } = props;\n\n React.useEffect(() => {\n updateModalHeight();\n }, [children]);\n\n const isDesktop = viewWidth >= ViewWidth.SMALL_TABLET && (hasMouse || viewHeight >= ViewHeight.MEDIUM);\n const canShowCloseBtn = viewWidth >= ViewWidth.SMALL_TABLET;\n\n const modalContext = React.useContext(ModalRootContext);\n const { refs } = useModalRegistry(getNavId(props, warn), ModalType.PAGE);\n\n return (\n <div\n {...restProps}\n vkuiClass={classNames(getClassName('ModalPage', platform), `ModalPage--sizeX-${sizeX}`, {\n 'ModalPage--desktop': isDesktop,\n })}\n >\n <div vkuiClass=\"ModalPage__in-wrap\" ref={refs.innerElement}>\n <div vkuiClass=\"ModalPage__in\">\n <div vkuiClass=\"ModalPage__header\" ref={refs.headerElement}>\n {header}\n </div>\n\n <div vkuiClass=\"ModalPage__content-wrap\">\n <div vkuiClass=\"ModalPage__content\" ref={multiRef<HTMLDivElement>(refs.contentElement, getModalContentRef)}>\n <div vkuiClass=\"ModalPage__content-in\">\n {children}\n </div>\n </div>\n </div>\n {canShowCloseBtn && <ModalDismissButton onClick={onClose || modalContext.onClose} />}\n </div>\n </div>\n </div>\n );\n};\n\nModalPage.defaultProps = {\n settlingHeight: 75,\n};\n\nexport default withAdaptivity(ModalPage, {\n viewWidth: true,\n viewHeight: true,\n sizeX: true,\n hasMouse: true,\n});\n"],"file":"ModalPage.js"}
|
|
@@ -10,7 +10,7 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
|
10
10
|
var _excluded = ["id"];
|
|
11
11
|
import { createScopedElement } from "../../lib/jsxRuntime";
|
|
12
12
|
import * as React from 'react';
|
|
13
|
-
import Touch from "../Touch/Touch";
|
|
13
|
+
import { Touch } from "../Touch/Touch";
|
|
14
14
|
import TouchRootContext from "../Touch/TouchContext";
|
|
15
15
|
import { getClassName } from "../../helpers/getClassName";
|
|
16
16
|
import { classNames } from "../../lib/classNames";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ModalRoot/ModalRoot.tsx"],"names":["React","Touch","TouchRootContext","getClassName","classNames","setTransformStyle","rubber","isFunction","ANDROID","IOS","VKCOM","transitionEvent","withPlatform","withContext","ModalRootContext","ConfigProviderContext","WebviewType","ModalType","MODAL_PAGE_DEFAULT_PERCENT_HEIGHT","withDOM","getNavId","warnOnce","warn","IS_DEV","process","env","NODE_ENV","numberInRange","number","range","rangeTranslate","Math","max","min","ModalRootTouchComponent","props","createRef","event","originalEvent","preventDefault","activeModal","state","nextModal","modalState","modalsState","animateTranslate","translateY","modalId","undefined","type","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","setState","activeModalState","doCloseModal","touchDown","onClose","id","isBack","inited","dragging","maskElementRef","initModalsState","modalRootContext","updateModalHeight","registerModal","data","Object","assign","triggerActiveModalClose","isInsideModal","frameIds","document","window","Children","toArray","children","getModals","reduce","acc","Modal","modalProps","settlingHeight","initActiveModal","toggleDocumentScrolling","platform","removeEventListener","updateModalTranslate","prevProps","prevState","includes","splice","indexOf","push","closeActiveModal","switchPrevNext","enabled","documentScrolling","preventTouch","passive","addEventListener","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","startT","isY","viewportRef","current","stopPropagation","touchStartTime","touchStartContentScrollTop","scrollTop","touchMovePositive","shiftYPercent","innerHeight","shiftYCurrent","touchShiftYPercent","translateYCurrent","startY","setStateCallback","shiftYEndPercent","expectTranslateY","Date","now","getTime","hidden","eventHandler","supported","onceHandler","name","nextModalState","prevIsPage","prevIsCard","nextIsPage","nextIsCard","percent","frameId","cancelAnimationFrame","footerElement","footerHeight","factor","forceOpacity","maskAnimationFrame","opacity","style","toString","configProvider","webviewType","VKAPPS","onTouchMove","onTouchEnd","onScroll","map","isPage","key","Component","ModalRootTouch"],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,OAAOC,KAAP;AACA,OAAOC,gBAAP;AACA,SAASC,YAAT;AACA,SAASC,UAAT;AACA,SAASC,iBAAT;AACA,SAASC,MAAT;AACA,SAASC,UAAT;AACA,SAASC,OAAT,EAAkBC,GAAlB,EAAuBC,KAAvB;AACA,SAASC,eAAT;AAEA,SAASC,YAAT;AACA,SAASC,WAAT;AACA,OAAOC,gBAAP;AACA,SACEC,qBADF,EAGEC,WAHF;AAKA,SAAwCC,SAAxC;AACA,SAASC,iCAAT;AACA,SAAmBC,OAAnB;AACA,SAASC,QAAT;AACA,SAASC,QAAT;AAGA,IAAMC,IAAI,GAAGD,QAAQ,CAAC,WAAD,CAArB;AACA,IAAME,MAAM,GAAGC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAxC;;AAEA,SAASC,aAAT,CAAuBC,MAAvB,EAAuCC,KAAvC,EAA8D;AAC5D,SAAOD,MAAM,IAAIC,KAAK,CAAC,CAAD,CAAf,IAAsBD,MAAM,IAAIC,KAAK,CAAC,CAAD,CAA5C;AACD;;AAED,SAASC,cAAT,CAAwBF,MAAxB,EAAwC;AACtC,SAAOG,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYD,IAAI,CAACE,GAAL,CAAS,EAAT,EAAaL,MAAb,CAAZ,CAAP;AACD;;IA6BKM,uB;;;;;AACJ,mCAAYC,KAAZ,EAAmC;AAAA;;AAAA;;AACjC,8BAAMA,KAAN;;AADiC;;AAAA;;AAAA;;AAAA;;AAAA,+EAsCJnC,KAAK,CAACoC,SAAN,EAtCI;;AAAA;;AAAA;;AAAA;;AAAA,mEA4JpB,UAACC,KAAD,EAAgB;AAC7B,UAAI,CAACA,KAAL,EAAY;AACV,eAAO,KAAP;AACD;;AACD,aAAOA,KAAK,CAACC,aAAb,EAA4B;AAC1BD,QAAAA,KAAK,GAAGA,KAAK,CAACC,aAAd;AACD;;AACD,UAAID,KAAK,CAACE,cAAV,EAA0B;AACxBF,QAAAA,KAAK,CAACE,cAAN;AACD;;AACD,aAAO,KAAP;AACD,KAvKkC;;AAAA,2EA2MZ,YAAM;AAC3B,UAAMC,WAAW,GAAG,MAAKC,KAAL,CAAWD,WAAX,IAA0B,MAAKC,KAAL,CAAWC,SAAzD;;AACA,UAAI,CAACF,WAAL,EAAkB;AAChB;AACD;;AAED,UAAMG,UAAU,GAAG,MAAKC,WAAL,CAAiBJ,WAAjB,CAAnB;;AACA,YAAKK,gBAAL,CAAsBF,UAAtB,EAAkCA,UAAU,CAACG,UAA7C;AACD,KAnNkC;;AAAA,wEA0Sf,YAAM;AACxB,wBAAmC,MAAKL,KAAxC;AAAA,UAAQD,WAAR,eAAQA,WAAR;AAAA,UAAqBE,SAArB,eAAqBA,SAArB;AAEA,UAAMK,OAAO,GAAGP,WAAW,IAAIE,SAA/B;AACA,UAAMC,UAAU,GAAGI,OAAO,GAAG,MAAKH,WAAL,CAAiBG,OAAjB,CAAH,GAA+BC,SAAzD;;AAEA,UAAIL,UAAU,IAAIA,UAAU,CAACM,IAAX,KAAoBhC,SAAS,CAACiC,IAA5C,IAAoDP,UAAU,CAACQ,oBAAnE,EAAyF;AACvF,YAAI,MAAKV,KAAL,CAAWW,SAAf,EAA0B;AACxB,gBAAKC,oBAAL,CAA0BV,UAA1B,EAAsC,YAAM;AAC1CW,YAAAA,qBAAqB,CAAC;AAAA,qBAAM,MAAKC,sBAAL,EAAN;AAAA,aAAD,CAArB;AACD,WAFD;AAGD,SAJD,MAIO;AACLD,UAAAA,qBAAqB,CAAC;AAAA,mBAAM,MAAKC,sBAAL,EAAN;AAAA,WAAD,CAArB;AACD;AACF;AACF,KAzTkC;;AAAA,kEA+UrB,UAACC,CAAD,EAAmB;AAC/B,UAAI,MAAKf,KAAL,CAAWW,SAAf,EAA0B;AACxB;AACD;;AACD,UAAMZ,WAAW,GAAG,MAAKC,KAAL,CAAWD,WAAX,IAA0B,MAAKC,KAAL,CAAWC,SAAzD;;AACA,UAAI,CAACF,WAAL,EAAkB;AAChB;AACD;;AAED,UAAMG,UAAU,GAAG,MAAKC,WAAL,CAAiBJ,WAAjB,CAAnB;;AAEA,UAAIG,UAAU,CAACM,IAAX,KAAoBhC,SAAS,CAACiC,IAAlC,EAAwC;AACtC,eAAO,MAAKO,eAAL,CAAqBD,CAArB,EAAwBb,UAAxB,CAAP;AACD;;AAED,UAAIA,UAAU,CAACM,IAAX,KAAoBhC,SAAS,CAACyC,IAAlC,EAAwC;AACtC,eAAO,MAAKC,eAAL,CAAqBH,CAArB,EAAwBb,UAAxB,CAAP;AACD;AACF,KAjWkC;;AAAA,iEAibtB,UAACa,CAAD,EAAmB;AAC9B,UAAMhB,WAAW,GAAG,MAAKC,KAAL,CAAWD,WAAX,IAA0B,MAAKC,KAAL,CAAWC,SAAzD;;AACA,UAAI,CAACF,WAAL,EAAkB;AAChB;AACD;;AACD,UAAMG,UAAU,GAAG,MAAKC,WAAL,CAAiBJ,WAAjB,CAAnB;;AAEA,UAAIG,UAAU,CAACM,IAAX,KAAoBhC,SAAS,CAACiC,IAAlC,EAAwC;AACtC,eAAO,MAAKU,cAAL,CAAoBJ,CAApB,EAAuBb,UAAvB,CAAP;AACD;;AAED,UAAIA,UAAU,CAACM,IAAX,KAAoBhC,SAAS,CAACyC,IAAlC,EAAwC;AACtC,eAAO,MAAKG,cAAL,CAAoBlB,UAApB,CAAP;AACD;AACF,KA/bkC;;AAAA,+DAoiBxB,UAACa,CAAD,EAA6B;AACtC,UAAMhB,WAAW,GAAG,MAAKC,KAAL,CAAWD,WAA/B;AAEA,UAAMsB,MAAM,GAAGN,CAAC,CAACM,MAAjB;;AAEA,UAAI,CAACtB,WAAL,EAAkB;AAChB;AACD;;AACD,UAAMG,UAAU,GAAG,MAAKC,WAAL,CAAiBJ,WAAjB,CAAnB;;AACA,UAAIG,UAAU,CAACM,IAAX,KAAoBhC,SAAS,CAACiC,IAA9B,IAAsCP,UAAU,CAACoB,cAAX,CAA0BC,QAA1B,CAAmCF,MAAnC,CAA1C,EAAsF;AACpFnB,QAAAA,UAAU,CAACsB,eAAX,GAA6B,IAA7B;AAEAC,QAAAA,YAAY,CAACvB,UAAU,CAACwB,wBAAZ,CAAZ;AAEAxB,QAAAA,UAAU,CAACwB,wBAAX,GAAsCC,UAAU,CAAC,YAAM;AACrD,cAAIzB,UAAU,CAACsB,eAAf,EAAgC;AAC9BtB,YAAAA,UAAU,CAACsB,eAAX,GAA6B,KAA7B;AACD;AACF,SAJ+C,EAI7C,GAJ6C,CAAhD;AAKD;AACF,KAxjBkC;;AAAA,+EAknBR,YAAM;AAC/B,YAAKI,iBAAL,GAAyBtC,IAAI,CAACC,GAAL,CAAS,CAAT,EAAY,MAAKqC,iBAAL,GAAyB,CAArC,CAAzB;;AACA,UAAI,MAAKA,iBAAL,GAAyB,CAA7B,EAAgC;AAC9B;AACD;;AAED,UAAM7B,WAAW,GAAG,MAAKC,KAAL,CAAWC,SAA/B;AAEA,UAAM4B,QAAwB,GAAG;AAC/BC,QAAAA,SAAS,EAAE,IADoB;AAE/B7B,QAAAA,SAAS,EAAE,IAFoB;AAG/B8B,QAAAA,aAAa,EAAE,CAAChC,WAAD,CAHgB;AAI/BA,QAAAA,WAAW,EAAEA,WAJkB;AAK/BiC,QAAAA,QAAQ,EAAE,KALqB;AAM/BrB,QAAAA,SAAS,EAAE;AANoB,OAAjC;;AASA,UAAI,CAACZ,WAAL,EAAkB;AAChB8B,QAAAA,QAAQ,CAACI,OAAT,GAAmB,EAAnB;AACD;;AAED,YAAKC,QAAL,CAAcL,QAAd;AACD,KAxoBkC;;AAAA,8EAqrBT,YAAM;AAC9B,UAAMM,gBAAgB,GAAG,MAAKhC,WAAL,CAAiB,MAAKH,KAAL,CAAWD,WAA5B,CAAzB;;AACA,UAAIoC,gBAAJ,EAAsB;AACpB,cAAKC,YAAL,CAAkBD,gBAAlB;AACD;AACF,KA1rBkC;;AAAA,mEA4rBH,UAACjC,UAAD,EAAkC;AAChE;AACA,YAAKgC,QAAL,CAAc;AAAEG,QAAAA,SAAS,EAAE,KAAb;AAAoB1B,QAAAA,SAAS,EAAE;AAA/B,OAAd;;AAEA,UAAI7C,UAAU,CAACoC,UAAU,CAACoC,OAAZ,CAAd,EAAoC;AAClCpC,QAAAA,UAAU,CAACoC,OAAX;AACD,OAFD,MAEO,IAAIxE,UAAU,CAAC,MAAK4B,KAAL,CAAW4C,OAAZ,CAAd,EAAoC;AACzC,cAAK5C,KAAL,CAAW4C,OAAX,CAAmBpC,UAAU,CAACqC,EAA9B;AACD,OAFM,MAEA,IAAIzD,MAAJ,EAAY;AACjBD,QAAAA,IAAI,CAAC,sBAAD,CAAJ;AACD;AACF,KAvsBkC;;AAGjC,QAAMkB,YAAW,GAAGL,KAAK,CAACK,WAA1B;AAEA,UAAKC,KAAL,GAAa;AACXD,MAAAA,WAAW,EAAE,IADF;AAEX+B,MAAAA,SAAS,EAAE,IAFA;AAGX7B,MAAAA,SAAS,EAAEF,YAHA;AAIXgC,MAAAA,aAAa,EAAEhC,YAAW,GAAG,CAACA,YAAD,CAAH,GAAmB,EAJlC;AAKXiC,MAAAA,QAAQ,EAAE,CAAC,CAACjC,YALD;AAMXY,MAAAA,SAAS,EAAE,KANA;AAOXsB,MAAAA,OAAO,EAAElC,YAAW,GAAG,CAACA,YAAD,CAAH,GAAmB,EAP5B;AAQXyC,MAAAA,MAAM,EAAE,KARG;AASXC,MAAAA,MAAM,EAAE,KATG;AAUXJ,MAAAA,SAAS,EAAE,KAVA;AAWXK,MAAAA,QAAQ,EAAE;AAXC,KAAb;AAcA,UAAKd,iBAAL,GAAyB,CAAzB;AACA,UAAKe,cAAL,gBAAsBpF,KAAK,CAACoC,SAAN,EAAtB;;AAEA,UAAKiD,eAAL;;AAEA,UAAKC,gBAAL,GAAwB;AACtBC,MAAAA,iBAAiB,EAAE,MAAKA,iBADF;AAEtBC,MAAAA,aAAa,EAAE;AAAA,YAAGR,EAAH,QAAGA,EAAH;AAAA,YAAUS,IAAV;;AAAA,eAAqBC,MAAM,CAACC,MAAP,CAAc,MAAK/C,WAAL,CAAiBoC,EAAjB,CAAd,EAAoCS,IAApC,CAArB;AAAA,OAFO;AAGtBV,MAAAA,OAAO,EAAE,MAAKa,uBAHQ;AAItBC,MAAAA,aAAa,EAAE;AAJO,KAAxB;AAOA,UAAKC,QAAL,GAAgB,EAAhB;AA/BiC;AAgClC;;;;SAaD,eAAyB;AACvB,aAAO,KAAK3D,KAAL,CAAW4D,QAAlB;AACD;;;SAED,eAAqB;AACnB,aAAO,KAAK5D,KAAL,CAAW6D,MAAlB;AACD;;;WAED,qBAAY;AACV,aAAOhG,KAAK,CAACiG,QAAN,CAAeC,OAAf,CAAuB,KAAK/D,KAAL,CAAWgE,QAAlC,CAAP;AACD;;;WAED,2BAAkB;AAChB,WAAKvD,WAAL,GAAmB,KAAKwD,SAAL,GAAiBC,MAAjB,CAAqC,UAACC,GAAD,EAAMC,KAAN,EAAgB;AACtE,YAAMC,UAAU,GAAGD,KAAK,CAACpE,KAAzB;AACA,YAAMM,KAAuB,GAAG;AAC9BuC,UAAAA,EAAE,EAAE5D,QAAQ,CAACoF,UAAD,EAAalF,IAAb,CADkB;AAE9ByD,UAAAA,OAAO,EAAEwB,KAAK,CAACpE,KAAN,CAAY4C,OAFS;AAG9B5B,UAAAA,oBAAoB,EAAE,CAAC,CAACqD,UAAU,CAACrD;AAHL,SAAhC,CAFsE,CAQtE;;AACA,YAAI,OAAOqD,UAAU,CAACC,cAAlB,KAAqC,QAAzC,EAAmD;AACjDhE,UAAAA,KAAK,CAACgE,cAAN,GAAuBD,UAAU,CAACC,cAAlC;AACD;;AAEDH,QAAAA,GAAG,CAAC7D,KAAK,CAACuC,EAAP,CAAH,GAAgBvC,KAAhB;AACA,eAAO6D,GAAP;AACD,OAfkB,EAehB,EAfgB,CAAnB;AAgBD;;;WAED,6BAAoB;AAClB,WAAKI,eAAL;AACD;;;WAED,gCAAuB;AACrB,WAAKC,uBAAL,CAA6B,IAA7B;;AACA,UAAI,KAAKxE,KAAL,CAAWyE,QAAX,KAAwBnG,GAA5B,EAAiC;AAC/B,aAAKuF,MAAL,CAAYa,mBAAZ,CAAgC,QAAhC,EAA0C,KAAKC,oBAA/C,EAAqE,KAArE;AACD;AACF;;;WAED,4BAAmBC,SAAnB,EAA8CC,SAA9C,EAAyE;AAAA;;AACvE,UAAI,KAAK7E,KAAL,CAAWK,WAAX,KAA2BuE,SAAS,CAACvE,WAArC,IAAoD,CAAC,KAAKC,KAAL,CAAWW,SAApE,EAA+E;AAC7E,YAAMV,SAAS,GAAG,KAAKP,KAAL,CAAWK,WAA7B;AACA,YAAM+B,SAAS,GAAGwC,SAAS,CAACvE,WAA5B;;AAEA,YAAIjB,MAAM,IAAImB,SAAS,KAAK,IAAxB,IAAgC,CAAC,KAAKE,WAAL,CAAiBF,SAAjB,CAArC,EAAkE;AAChE,iBAAOpB,IAAI,0CAAmCoB,SAAnC,gBAAX;AACD;;AAED,YAAIgC,OAAO,sBAAO,KAAKjC,KAAL,CAAWiC,OAAlB,CAAX;;AACA,YAAIO,MAAM,GAAG,KAAb;;AAEA,YAAIvC,SAAS,KAAK,IAAlB,EAAwB;AACtBgC,UAAAA,OAAO,GAAG,EAAV;AACD,SAFD,MAEO,IAAIA,OAAO,CAACuC,QAAR,CAAiBvE,SAAjB,CAAJ,EAAiC;AACtCgC,UAAAA,OAAO,GAAGA,OAAO,CAACwC,MAAR,CAAe,CAAf,EAAkBxC,OAAO,CAACyC,OAAR,CAAgBzE,SAAhB,IAA6B,CAA/C,CAAV;AACAuC,UAAAA,MAAM,GAAG,IAAT;AACD,SAHM,MAGA;AACLP,UAAAA,OAAO,CAAC0C,IAAR,CAAa1E,SAAb;AACD;;AAED,eAAO,KAAKiC,QAAL,CAAc;AACnBnC,UAAAA,WAAW,EAAE,IADM;AAEnBE,UAAAA,SAAS,EAATA,SAFmB;AAGnB6B,UAAAA,SAAS,EAATA,SAHmB;AAInBC,UAAAA,aAAa,EAAE,CAAC9B,SAAD,EAAY6B,SAAZ,CAJI;AAKnBG,UAAAA,OAAO,EAAPA,OALmB;AAMnBO,UAAAA,MAAM,EAANA,MANmB;AAOnBR,UAAAA,QAAQ,EAAE,IAPS;AAQnBS,UAAAA,MAAM,EAAE,KARW;AASnB9B,UAAAA,SAAS,EAAE;AATQ,SAAd,EAUJ,YAAM;AACP,cAAIV,SAAS,KAAK,IAAlB,EAAwB;AACtB,YAAA,MAAI,CAAC2E,gBAAL;AACD,WAFD,MAEO;AACL,YAAA,MAAI,CAACX,eAAL;AACD;AACF,SAhBM,CAAP;AAiBD;;AAED,UAAI,KAAKjE,KAAL,CAAWW,SAAX,IAAwB,CAAC4D,SAAS,CAAC5D,SAAvC,EAAkD;AAChDE,QAAAA,qBAAqB,CAAC;AAAA,iBAAM,MAAI,CAACgE,cAAL,EAAN;AAAA,SAAD,CAArB;AACD;;AAED,UAAI,CAAC,KAAK7E,KAAL,CAAWD,WAAZ,IAA2B,CAAC,KAAKC,KAAL,CAAW8B,SAAvC,IAAoD,CAAC,KAAK9B,KAAL,CAAWC,SAApE,EAA+E;AAC7E,aAAKiE,uBAAL,CAA6B,IAA7B;AACD,OAFD,MAEO;AACL,aAAKA,uBAAL,CAA6B,KAA7B;AACD;AACF;AAED;;;;WACA,iCAAwBY,OAAxB,EAA0C;AACxC,UAAI,KAAKC,iBAAL,KAA2BD,OAA/B,EAAwC;AACtC;AACD;;AACD,WAAKC,iBAAL,GAAyBD,OAAzB;;AAEA,UAAIA,OAAJ,EAAa;AACX;AACA;AACA;AACA;AACA,aAAKvB,MAAL,CAAYa,mBAAZ,CAAgC,WAAhC,EAA6C,KAAKY,YAAlD,EAAgE;AAAEC,UAAAA,OAAO,EAAE;AAAX,SAAhE;AACD,OAND,MAMO;AACL,aAAK1B,MAAL,CAAY2B,gBAAZ,CAA6B,WAA7B,EAA0C,KAAKF,YAA/C,EAA6D;AAAEC,UAAAA,OAAO,EAAE;AAAX,SAA7D;AACD;AACF;;;;AAeD;AACF;AACA;AACE,+BAAkB;AAChB,UAAMlF,WAAW,GAAG,KAAKC,KAAL,CAAWD,WAAX,IAA0B,KAAKC,KAAL,CAAWC,SAAzD;;AACA,UAAI,CAACF,WAAL,EAAkB;AAChB;AACD;;AAED,UAAMG,UAAU,GAAG,KAAKC,WAAL,CAAiBJ,WAAjB,CAAnB,CANgB,CAOhB;;AACA,UAAI,KAAKL,KAAL,CAAWyE,QAAX,KAAwBnG,GAA5B,EAAiC;AAC/B,aAAKuF,MAAL,CAAY2B,gBAAZ,CAA6B,QAA7B,EAAuC,KAAKb,oBAA5C,EAAkE,KAAlE;AACD;;AAED,cAAQnE,UAAU,CAACM,IAAnB;AACE,aAAKhC,SAAS,CAACiC,IAAf;AACEP,UAAAA,UAAU,CAAC8D,cAAX,GAA4B9D,UAAU,CAAC8D,cAAX,IAA6BvF,iCAAzD;AACA,eAAK0G,aAAL,CAAmBjF,UAAnB;AACA;;AAEF,aAAK1B,SAAS,CAACyC,IAAf;AACE,eAAKmE,aAAL,CAAmBlF,UAAnB;AACA;;AAEF;AACE,cAAIpB,MAAJ,EAAY;AACVD,YAAAA,IAAI,CAAC,8CAAD,CAAJ;AACD;;AAbL;;AAgBA,WAAKqD,QAAL,CAAc;AAAEO,QAAAA,MAAM,EAAE,IAAV;AAAgB9B,QAAAA,SAAS,EAAE;AAA3B,OAAd;AACD;;;WAYD,uBAAcT,UAAd,EAA4C;AAC1C,UAAQoB,cAAR,GAA2BpB,UAA3B,CAAQoB,cAAR;AACA,UAAM+D,aAAa,GAAI/D,cAAc,CAACgE,iBAAhB,CAAkDC,YAAxE;AAEA,UAAIC,cAAc,GAAGtF,UAAU,CAACG,UAAhC;AAEAH,MAAAA,UAAU,CAACuF,UAAX,GAAwBJ,aAAa,GAAG/D,cAAc,CAACoE,YAA/B,IAA+CxF,UAAU,CAAC8D,cAAX,KAA8B,GAArG;AAEA,UAAI2B,SAAS,GAAG,KAAhB;AACA,UAAIC,QAAQ,GAAG,KAAf;AACA,UAAIC,cAAJ;AACA,UAAIxF,UAAJ;AACA,UAAIyF,aAAJ;AACA,UAAIC,cAAJ;AACA,UAAIC,WAAJ;;AAEA,UAAI9F,UAAU,CAACuF,UAAf,EAA2B;AACzBI,QAAAA,cAAc,GAAG,MAAM3F,UAAU,CAAC8D,cAAlC;AAEA,YAAMiC,SAAS,GAAGJ,cAAc,GAAG,CAAnC;AACA,YAAMK,WAAW,GAAG,MAAML,cAA1B;AAEAC,QAAAA,aAAa,GAAG,CAAC,CAAD,EAAIG,SAAJ,CAAhB;AACAF,QAAAA,cAAc,GAAG,CAACE,SAAD,EAAYJ,cAAc,GAAGK,WAAW,GAAG,CAA3C,CAAjB;AACAF,QAAAA,WAAW,GAAG,CAACH,cAAc,GAAGK,WAAW,GAAG,CAAhC,EAAmC,GAAnC,CAAd;AAEAP,QAAAA,SAAS,GAAGE,cAAc,GAAG,CAA7B;AACAD,QAAAA,QAAQ,GAAGC,cAAc,IAAI,CAA7B;AACAxF,QAAAA,UAAU,GAAGwF,cAAb;AACD,OAbD,MAaO;AACL,YAAMM,YAAY,GAAGjG,UAAU,CAACkG,aAAX,CAAyBb,YAA9C;AACA,YAAMc,MAAM,GAAGhB,aAAa,GAAGc,YAA/B;AAEAN,QAAAA,cAAc,GAAG,MAAMQ,MAAM,GAAGnG,UAAU,CAACoG,YAAX,CAAwBC,aAAxB,CAAsChB,YAA/C,GAA8D,GAArF;AACAlF,QAAAA,UAAU,GAAGwF,cAAb;AAEAC,QAAAA,aAAa,GAAG,CAACzF,UAAD,EAAaA,UAAU,GAAG,EAA1B,CAAhB;AACA0F,QAAAA,cAAc,GAAG,CAAC1F,UAAU,GAAG,EAAd,EAAkBA,UAAU,GAAG,EAA/B,CAAjB;AACA2F,QAAAA,WAAW,GAAG,CAAC3F,UAAU,GAAG,EAAd,EAAkBA,UAAU,GAAG,GAA/B,CAAd;AACD,OAvCyC,CAyC1C;;;AACA,UAAIH,UAAU,CAACuF,UAAX,IAAyBpF,UAAU,GAAGmF,cAAtC,IAAwDtF,UAAU,CAAC8D,cAAX,KAA8B,GAA1F,EAA+F;AAC7F3D,QAAAA,UAAU,GAAG,CAAb;AACD;;AAEDH,MAAAA,UAAU,CAAC4F,aAAX,GAA2BA,aAA3B;AACA5F,MAAAA,UAAU,CAAC6F,cAAX,GAA4BA,cAA5B;AACA7F,MAAAA,UAAU,CAAC8F,WAAX,GAAyBA,WAAzB;AACA9F,MAAAA,UAAU,CAACG,UAAX,GAAwBA,UAAxB;AACAH,MAAAA,UAAU,CAAC2F,cAAX,GAA4BA,cAA5B;AACA3F,MAAAA,UAAU,CAACyF,SAAX,GAAuBA,SAAvB;AACAzF,MAAAA,UAAU,CAAC0F,QAAX,GAAsBA,QAAtB;AACD;;;WAED,uBAAc1F,UAAd,EAA4C;AAC1CA,MAAAA,UAAU,CAACG,UAAX,GAAwB,CAAxB;AACD;;;WAED,kCAAyB;AACvB,yBAAmC,KAAKL,KAAxC;AAAA,UAAQD,WAAR,gBAAQA,WAAR;AAAA,UAAqBE,SAArB,gBAAqBA,SAArB;AACA,UAAMK,OAAO,GAAGP,WAAW,IAAIE,SAA/B;AAEA,UAAMC,UAAU,GAAG,KAAKC,WAAL,CAAiBG,OAAjB,CAAnB;;AACA,UAAI,CAAAJ,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEM,IAAZ,MAAqBhC,SAAS,CAACiC,IAA/B,IAAuCP,UAAvC,aAAuCA,UAAvC,eAAuCA,UAAU,CAAEsG,YAAvD,EAAqE;AACnE,YAAMC,cAAc,qBAAQvG,UAAR,CAApB;;AACA,aAAKiF,aAAL,CAAmBjF,UAAnB;;AACA,YAAMwG,iBAAiB,qBAAQxG,UAAR,CAAvB;;AAEA,YAAIyG,WAAW,GAAG,KAAlB;;AAEA,YAAIF,cAAc,CAAChB,UAAf,KAA8BiB,iBAAiB,CAACjB,UAApD,EAAgE;AAC9D,cAAIgB,cAAc,CAACZ,cAAf,KAAkCa,iBAAiB,CAACb,cAAxD,EAAwE;AACtEc,YAAAA,WAAW,GAAG,IAAd;AACD;AACF,SAJD,MAIO;AACLA,UAAAA,WAAW,GAAG,IAAd;AACD;;AAED,YAAIA,WAAJ,EAAiB;AACf,eAAKvG,gBAAL,CAAsBF,UAAtB,EAAkCA,UAAU,CAACG,UAA7C;AACD;AACF;AACF;;;WAmBD,4BAAmB;AACjB;AACA,WAAK6B,QAAL,CAAc;AAAEG,QAAAA,SAAS,EAAE,KAAb;AAAoB1B,QAAAA,SAAS,EAAE;AAA/B,OAAd;;AAEA,UAAI,KAAKjB,KAAL,CAAWyE,QAAX,KAAwBnG,GAA5B,EAAiC;AAC/B,aAAKuF,MAAL,CAAYa,mBAAZ,CAAgC,QAAhC,EAA0C,KAAKC,oBAA/C,EAAqE,KAArE;AACD;;AAED,UAAQvC,SAAR,GAAsB,KAAK9B,KAA3B,CAAQ8B,SAAR;;AACA,UAAI,CAACA,SAAL,EAAgB;AACd,eAAOjD,IAAI,2CAAoCiD,SAApC,EAAX;AACD;;AAED,UAAM2E,cAAc,GAAG,KAAKtG,WAAL,CAAiB2B,SAAjB,CAAvB;AAEA,WAAKlB,oBAAL,CAA0B6F,cAA1B,EAA0C,KAAKG,wBAA/C;AACA,WAAKxG,gBAAL,CAAsBqG,cAAtB,EAAsC,GAAtC;AACA,WAAKI,cAAL,CAAoBJ,cAApB,EAAoC,CAApC;AACD;;;WAsBD,yBAAgB7G,KAAhB,EAAmCM,UAAnC,EAAiE;AAC/D,UAAQ4G,MAAR,GAA0ClH,KAA1C,CAAQkH,MAAR;AAAA,UAAgBC,MAAhB,GAA0CnH,KAA1C,CAAgBmH,MAAhB;AAAA,UAAwBlH,aAAxB,GAA0CD,KAA1C,CAAwBC,aAAxB;AACA,UAAMwB,MAAM,GAAGxB,aAAa,CAACwB,MAA7B;;AAEA,UAAI,CAACzB,KAAK,CAACoH,GAAX,EAAgB;AACd,YAAI,KAAKC,WAAL,CAAiBC,OAAjB,CAAyB3F,QAAzB,CAAkCF,MAAlC,CAAJ,EAA+C;AAC7CxB,UAAAA,aAAa,CAACC,cAAd;AACD;;AACD;AACD;;AAED,UAAI,CAACI,UAAU,CAACoG,YAAX,CAAwB/E,QAAxB,CAAiCF,MAAjC,CAAL,EAA+C;AAC7C,eAAOxB,aAAa,CAACC,cAAd,EAAP;AACD;;AAEDD,MAAAA,aAAa,CAACsH,eAAd;AAEA,UAAQ1B,UAAR,GAA6DvF,UAA7D,CAAQuF,UAAR;AAAA,UAAoBjE,eAApB,GAA6DtB,UAA7D,CAAoBsB,eAApB;AAAA,UAAqCmE,SAArC,GAA6DzF,UAA7D,CAAqCyF,SAArC;AAAA,UAAgDC,QAAhD,GAA6D1F,UAA7D,CAAgD0F,QAAhD;;AAEA,UAAI,CAAC,KAAK5F,KAAL,CAAWqC,SAAhB,EAA2B;AACzBnC,QAAAA,UAAU,CAACkH,cAAX,GAA4BL,MAA5B;AACA7G,QAAAA,UAAU,CAACmH,0BAAX,GAAwCnH,UAAU,CAACoB,cAAX,CAA0BgG,SAAlE;AACA,aAAKpF,QAAL,CAAc;AAAEG,UAAAA,SAAS,EAAE;AAAb,SAAd;AACD;;AAED,UAAIb,eAAJ,EAAqB;AACnB;AACD;;AAED,UAAItB,UAAU,CAACqH,iBAAX,KAAiC,IAArC,EAA2C;AACzCrH,QAAAA,UAAU,CAACqH,iBAAX,GAA+BT,MAAM,GAAG,CAAxC;AACD;;AAED,UACE,CAAC5G,UAAU,CAACuF,UAAZ,IACAE,SADA,IAEAC,QAAQ,IAAI1F,UAAU,CAACqH,iBAAvB,IAA4CrH,UAAU,CAACmH,0BAAX,KAA0C,CAFtF,IAGAnH,UAAU,CAACkG,aAAX,CAAyB7E,QAAzB,CAAkCF,MAAlC,CAJF,EAKE;AACAxB,QAAAA,aAAa,CAACC,cAAd;;AAEA,YAAI,CAAC2F,UAAD,IAAeqB,MAAM,GAAG,CAA5B,EAA+B;AAC7B;AACD;;AAED,SAAC,KAAK9G,KAAL,CAAW0C,QAAZ,IAAwB,KAAKR,QAAL,CAAc;AAAEQ,UAAAA,QAAQ,EAAE;AAAZ,SAAd,CAAxB;AAEA,YAAM8E,aAAa,GAAGV,MAAM,GAAG,KAAKvD,MAAL,CAAYkE,WAArB,GAAmC,GAAzD;AACA,YAAMC,aAAa,GAAG7J,MAAM,CAAC2J,aAAD,EAAgB,EAAhB,EAAoB,GAApB,EAAyB,KAAK9H,KAAL,CAAWyE,QAAX,KAAwBpG,OAAxB,IAAmC,KAAK2B,KAAL,CAAWyE,QAAX,KAAwBlG,KAApF,CAA5B;AAEAiC,QAAAA,UAAU,CAACyH,kBAAX,GAAgCH,aAAhC;AACAtH,QAAAA,UAAU,CAAC0H,iBAAX,GAA+BvI,cAAc,CAACa,UAAU,CAACG,UAAX,GAAwBqH,aAAzB,CAA7C;AAEA,aAAKtH,gBAAL,CAAsBF,UAAtB,EAAkCA,UAAU,CAAC0H,iBAA7C;AACA,aAAKf,cAAL,CAAoB3G,UAApB;AACD;AACF;;;WAED,yBAAgBN,KAAhB,EAAmCM,UAAnC,EAAiE;AAC/D,UAAQL,aAAR,GAA0CD,KAA1C,CAAQC,aAAR;AAAA,UAAuBiH,MAAvB,GAA0ClH,KAA1C,CAAuBkH,MAAvB;AAAA,UAA+BC,MAA/B,GAA0CnH,KAA1C,CAA+BmH,MAA/B;AACA,UAAM1F,MAAM,GAAGxB,aAAa,CAACwB,MAA7B;;AACA,UAAInB,UAAU,CAACoG,YAAX,CAAwB/E,QAAxB,CAAiCF,MAAjC,CAAJ,EAA8C;AAC5C,YAAI,CAAC,KAAKrB,KAAL,CAAWqC,SAAhB,EAA2B;AACzBnC,UAAAA,UAAU,CAACkH,cAAX,GAA4BL,MAA5B;AACA,eAAK7E,QAAL,CAAc;AAAEG,YAAAA,SAAS,EAAE,IAAb;AAAmBK,YAAAA,QAAQ,EAAE;AAA7B,WAAd;AACD;;AAED,YAAM8E,aAAa,GAAGV,MAAM,GAAG5G,UAAU,CAACoG,YAAX,CAAwBf,YAAjC,GAAgD,GAAtE;AACA,YAAMmC,aAAa,GAAG7J,MAAM,CAAC2J,aAAD,EAAgB,EAAhB,EAAoB,GAApB,EAAyB,KAAK9H,KAAL,CAAWyE,QAAX,KAAwBpG,OAAxB,IAAmC,KAAK2B,KAAL,CAAWyE,QAAX,KAAwBlG,KAApF,CAA5B;AAEAiC,QAAAA,UAAU,CAACyH,kBAAX,GAAgCH,aAAhC;AACAtH,QAAAA,UAAU,CAAC0H,iBAAX,GAA+BtI,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYW,UAAU,CAACG,UAAX,GAAwBqH,aAApC,CAA/B;AAEA,aAAKtH,gBAAL,CAAsBF,UAAtB,EAAkCA,UAAU,CAAC0H,iBAA7C;AACA,aAAKf,cAAL,CAAoB3G,UAApB;AACD;AACF;;;WAkBD,wBAAeN,KAAf,EAAkCM,UAAlC,EAAgE;AAAA;;AAC9D,UAAQ2H,MAAR,GAA2BjI,KAA3B,CAAQiI,MAAR;AAAA,UAAgBf,MAAhB,GAA2BlH,KAA3B,CAAgBkH,MAAhB;AAEA5G,MAAAA,UAAU,CAACsB,eAAX,GAA6B,KAA7B;AACAtB,MAAAA,UAAU,CAACqH,iBAAX,GAA+B,IAA/B;AAEA,UAAIO,gBAAJ;;AAEA,UAAI,KAAK9H,KAAL,CAAW0C,QAAf,EAAyB;AACvB,YAAMqF,gBAAgB,GAAG,CAACF,MAAM,GAAGf,MAAV,IAAoB,KAAKvD,MAAL,CAAYkE,WAAhC,GAA8C,GAAvE;AAEA,YAAIpH,UAAU,GAAGH,UAAU,CAAC0H,iBAA5B;AACA,YAAMI,gBAAgB,GAAG3H,UAAU,IAAI4H,IAAI,CAACC,GAAL,KAAahI,UAAU,CAACkH,cAAX,CAA0Be,OAA1B,EAAjB,CAAV,GAAkE,GAAlE,GAAwE,GAAxE,IAA+EjI,UAAU,CAACyH,kBAAX,GAAgC,CAAhC,GAAoC,CAAC,CAArC,GAAyC,CAAxH,CAAzB;AACAtH,QAAAA,UAAU,GAAGhB,cAAc,CAACgB,UAAU,GAAG2H,gBAAd,CAA3B;;AAEA,YAAI9H,UAAU,CAAC8D,cAAX,KAA8B,GAAlC,EAAuC;AACrC,cAAI9E,aAAa,CAACmB,UAAD,EAAaH,UAAU,CAAC4F,aAAxB,CAAjB,EAAyD;AACvDzF,YAAAA,UAAU,GAAGH,UAAU,CAAC4F,aAAX,CAAyB,CAAzB,CAAb;AACD,WAFD,MAEO,IAAI5G,aAAa,CAACmB,UAAD,EAAaH,UAAU,CAAC6F,cAAxB,CAAjB,EAA0D;AAC/D1F,YAAAA,UAAU,GAAGH,UAAU,CAAC2F,cAAxB;AACD,WAFM,MAEA,IAAI3G,aAAa,CAACmB,UAAD,EAAaH,UAAU,CAAC8F,WAAxB,CAAjB,EAAuD;AAC5D3F,YAAAA,UAAU,GAAG,GAAb;AACD,WAFM,MAEA;AACLA,YAAAA,UAAU,GAAGH,UAAU,CAAC2F,cAAxB;AACD;AACF,SAVD,MAUO;AACL,cAAI3G,aAAa,CAACmB,UAAD,EAAa,CAAC,CAAD,EAAI,EAAJ,CAAb,CAAjB,EAAwC;AACtCA,YAAAA,UAAU,GAAG,CAAb;AACD,WAFD,MAEO;AACLA,YAAAA,UAAU,GAAG,GAAb;AACD;AACF;;AAED,YAAIA,UAAU,KAAK,GAAf,IAAsB0H,gBAAgB,IAAI,EAA9C,EAAkD;AAChD1H,UAAAA,UAAU,GAAG,GAAb;AACD;;AAEDH,QAAAA,UAAU,CAACG,UAAX,GAAwBA,UAAxB;AACAH,QAAAA,UAAU,CAAC0H,iBAAX,GAA+BvH,UAA/B;AACAH,QAAAA,UAAU,CAACyF,SAAX,GAAuBtF,UAAU,GAAG,CAAb,IAAkBA,UAAU,GAAG0H,gBAAtD;AACA7H,QAAAA,UAAU,CAAC0F,QAAX,GAAsBvF,UAAU,KAAK,CAArC;AACAH,QAAAA,UAAU,CAACkI,MAAX,GAAoB/H,UAAU,KAAK,GAAnC;;AAEA,YAAIH,UAAU,CAACkI,MAAf,EAAuB;AACrB,eAAKhG,YAAL,CAAkBlC,UAAlB;AACD;;AAED4H,QAAAA,gBAAgB,GAAG,4BAAM;AACvB,cAAI,CAAC5H,UAAU,CAACkI,MAAhB,EAAwB;AACtB,YAAA,MAAI,CAAChI,gBAAL,CAAsBF,UAAtB,EAAkCA,UAAU,CAACG,UAA7C;AACD;;AAED,UAAA,MAAI,CAACwG,cAAL,CAAoB3G,UAApB;AACD,SAND;AAOD;;AAED,WAAKgC,QAAL,CAAc;AACZG,QAAAA,SAAS,EAAE,KADC;AAEZK,QAAAA,QAAQ,EAAE;AAFE,OAAd,EAGGoF,gBAHH;AAID;;;WAED,wBAAe5H,UAAf,EAA6C;AAAA;;AAC3C,UAAI4H,gBAAJ;;AAEA,UAAI,KAAK9H,KAAL,CAAW0C,QAAf,EAAyB;AACvB,YAAIrC,UAAU,GAAGH,UAAU,CAAC0H,iBAA5B;AAEA,YAAMI,gBAAgB,GAAG3H,UAAU,IAAI4H,IAAI,CAACC,GAAL,KAAahI,UAAU,CAACkH,cAAX,CAA0Be,OAA1B,EAAjB,CAAV,GAAkE,GAAlE,GAAwE,GAAxE,IAA+EjI,UAAU,CAACyH,kBAAX,GAAgC,CAAhC,GAAoC,CAAC,CAArC,GAAyC,CAAxH,CAAzB;AACAtH,QAAAA,UAAU,GAAGf,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYc,UAAU,GAAG2H,gBAAzB,CAAb;;AAEA,YAAI3H,UAAU,IAAI,EAAlB,EAAsB;AACpBA,UAAAA,UAAU,GAAG,GAAb;AACD,SAFD,MAEO;AACLA,UAAAA,UAAU,GAAG,CAAb;AACD;;AAEDH,QAAAA,UAAU,CAACG,UAAX,GAAwBA,UAAxB;AACAH,QAAAA,UAAU,CAACkI,MAAX,GAAoB/H,UAAU,KAAK,GAAnC;;AAEA,YAAIH,UAAU,CAACkI,MAAf,EAAuB;AACrB,eAAKhG,YAAL,CAAkBlC,UAAlB;AACD;;AAED4H,QAAAA,gBAAgB,GAAG,4BAAM;AACvB,cAAI,CAAC5H,UAAU,CAACkI,MAAhB,EAAwB;AACtB,YAAA,MAAI,CAAChI,gBAAL,CAAsBF,UAAtB,EAAkCA,UAAU,CAACG,UAA7C;AACD;;AAED,UAAA,MAAI,CAACwG,cAAL,CAAoB3G,UAApB;AACD,SAND;AAOD;;AAED,WAAKgC,QAAL,CAAc;AACZG,QAAAA,SAAS,EAAE,KADC;AAEZK,QAAAA,QAAQ,EAAE;AAFE,OAAd,EAGGoF,gBAHH;AAID;;;WAwBD,8BAAqB5H,UAArB,EAAmDmI,YAAnD,EAA6E;AAC3E,UAAInK,eAAe,CAACoK,SAApB,EAA+B;AAC7B,YAAMC,WAAW,GAAG,SAAdA,WAAc,GAAM;AACxBrI,UAAAA,UAAU,CAACoG,YAAX,CAAwBlC,mBAAxB,CAA4ClG,eAAe,CAACsK,IAA5D,EAAkED,WAAlE;AACAF,UAAAA,YAAY;AACb,SAHD;;AAKAnI,QAAAA,UAAU,CAACoG,YAAX,CAAwBpB,gBAAxB,CAAyChH,eAAe,CAACsK,IAAzD,EAA+DD,WAA/D;AACD,OAPD,MAOO;AACL5G,QAAAA,UAAU,CAAC0G,YAAD,EAAe,KAAK3I,KAAL,CAAWyE,QAAX,KAAwBpG,OAAxB,IAAmC,KAAK2B,KAAL,CAAWyE,QAAX,KAAwBlG,KAA3D,GAAmE,GAAnE,GAAyE,GAAxF,CAAV;AACD;AACF;;;WAED,0BAAiB;AAAA;;AACf,yBAAiC,KAAK+B,KAAtC;AAAA,UAAQ8B,SAAR,gBAAQA,SAAR;AAAA,UAAmB7B,SAAnB,gBAAmBA,SAAnB;AAEA,UAAMwG,cAAc,GAAG,KAAKtG,WAAL,CAAiB2B,SAAjB,CAAvB;AACA,UAAM2G,cAAc,GAAG,KAAKtI,WAAL,CAAiBF,SAAjB,CAAvB;;AAEA,UAAInB,MAAM,IAAI,CAAC2H,cAAX,IAA6B,CAACgC,cAAlC,EAAkD;AAChD,eAAO5J,IAAI,yCAAkCiD,SAAlC,4BAA6D7B,SAA7D,EAAX;AACD;;AAED,UAAMyI,UAAU,GAAG,CAAC,CAACjC,cAAF,IAAoBA,cAAc,CAACjG,IAAf,KAAwBhC,SAAS,CAACiC,IAAzE;AACA,UAAMkI,UAAU,GAAG,CAAC,CAAClC,cAAF,IAAoBA,cAAc,CAACjG,IAAf,KAAwBhC,SAAS,CAACyC,IAAzE;AAEA,UAAM2H,UAAU,GAAG,CAAC,CAACH,cAAF,IAAoBA,cAAc,CAACjI,IAAf,KAAwBhC,SAAS,CAACiC,IAAzE;AACA,UAAMoI,UAAU,GAAG,CAAC,CAACJ,cAAF,IAAoBA,cAAc,CAACjI,IAAf,KAAwBhC,SAAS,CAACyC,IAAzE,CAde,CAgBf;;AACA,UAAIwF,cAAc,KAAKoC,UAAU,IAAIF,UAAU,IAAIC,UAAjC,CAAlB,EAAgE;AAC9D,aAAKhI,oBAAL,CAA0B6F,cAA1B,EAA0C,YAAM;AAC9C,UAAA,MAAI,CAAC7E,iBAAL,IAA0B,CAA1B;;AACA,UAAA,MAAI,CAAChB,oBAAL,CAA0B6H,cAA1B,EAA0C,MAAI,CAAC7B,wBAA/C;;AACA,UAAA,MAAI,CAACxG,gBAAL,CAAsBqI,cAAtB,EAAsCA,cAAc,CAACpI,UAArD;AACD,SAJD;AAMA,eAAO,KAAKD,gBAAL,CAAsBqG,cAAtB,EAAsC,GAAtC,CAAP;AACD;;AAED,UAAIA,cAAc,IAAImC,UAAtB,EAAkC;AAChC,aAAKhH,iBAAL,IAA0B,CAA1B;AACA,aAAKhB,oBAAL,CAA0B6F,cAA1B,EAA0C,KAAKG,wBAA/C;;AAEA,YAAI8B,UAAU,IAAIjC,cAAc,CAACpG,UAAf,IAA6BoI,cAAc,CAAC5C,cAA1D,IAA4E,CAAC,KAAK7F,KAAL,CAAWwC,MAA5F,EAAoG;AAClG,eAAKpC,gBAAL,CAAsBqG,cAAtB,EAAsCgC,cAAc,CAAC5C,cAAf,GAAgC,EAAtE;AACD,SAFD,MAEO;AACL,eAAKzF,gBAAL,CAAsBqG,cAAtB,EAAsC,GAAtC;AACD;AACF;;AAED,WAAK7E,iBAAL,IAA0B,CAA1B;AACA,WAAKhB,oBAAL,CAA0B6H,cAA1B,EAA0C,KAAK7B,wBAA/C;AACA,WAAKxG,gBAAL,CAAsBqI,cAAtB,EAAsCA,cAAc,CAACpI,UAArD;AACD;;;;AA0BD;AACF;AACA;AACA;AACA;AACA;AACE,8BAAiBH,UAAjB,EAA+C4I,OAA/C,EAAgE;AAC9D,UAAMC,OAAO,kCAA2B7I,UAAU,CAACqC,EAAtC,CAAb;AAEAyG,MAAAA,oBAAoB,CAAC,KAAK3F,QAAL,CAAc0F,OAAd,CAAD,CAApB;AAEA,WAAK1F,QAAL,CAAc0F,OAAd,IAAyBlI,qBAAqB,CAAC,YAAM;AACnDjD,QAAAA,iBAAiB,CAACsC,UAAU,CAACoG,YAAZ,2BAA4CwC,OAA5C,WAAjB;;AAEA,YAAI5I,UAAU,CAACM,IAAX,KAAoBhC,SAAS,CAACiC,IAA9B,IAAsCP,UAAU,CAAC+I,aAArD,EAAoE;AAClE,cAAMC,YAAY,GAAGhJ,UAAU,CAAC+I,aAAX,CAAyB1D,YAA9C;AACA,cAAM4D,MAAM,GAAGjJ,UAAU,CAACoG,YAAX,CAAwBf,YAAxB,IAAwCuD,OAAO,GAAG,GAAlD,CAAf;AAEAlL,UAAAA,iBAAiB,CAACsC,UAAU,CAAC+I,aAAZ,4BAA8CC,YAA9C,mBAAmEC,MAAM,GAAGD,YAA5E,QAAjB;AACD;AACF,OAT6C,CAA9C;AAUD;AAED;;;;WACA,wBAAehJ,UAAf,EAA0E;AAAA;;AAAA,UAA7BkJ,YAA6B,uEAAN,IAAM;;AACxE,UAAIA,YAAY,KAAK,IAAjB,IAAyB,KAAKpJ,KAAL,CAAWiC,OAAX,CAAmB,CAAnB,MAA0B/B,UAAU,CAACqC,EAAlE,EAAsE;AACpE;AACD;;AAEDyG,MAAAA,oBAAoB,CAAC,KAAKK,kBAAN,CAApB;AACA,WAAKA,kBAAL,GAA0BxI,qBAAqB,CAAC,YAAM;AACpD,YAAI,MAAI,CAAC8B,cAAL,CAAoBuE,OAAxB,EAAiC;AAC/B,cAAQ7G,UAAR,GAA0CH,UAA1C,CAAQG,UAAR;AAAA,cAAoBuH,iBAApB,GAA0C1H,UAA1C,CAAoB0H,iBAApB;AAEA,cAAM0B,OAAO,GAAGF,YAAY,KAAK,IAAjB,GAAwB,IAAI,CAACxB,iBAAiB,GAAGvH,UAArB,KAAoC,MAAMA,UAA1C,CAAJ,IAA6D,CAArF,GAAyF+I,YAAzG;AACA,UAAA,MAAI,CAACzG,cAAL,CAAoBuE,OAApB,CAA4BqC,KAA5B,CAAkCD,OAAlC,GAA4ChK,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYD,IAAI,CAACE,GAAL,CAAS,GAAT,EAAc8J,OAAd,CAAZ,EAAoCE,QAApC,EAA5C;AACD;AACF,OAP8C,CAA/C;AAQD;AAED;AACF;AACA;;;;WAqBE,kBAAS;AAAA;;AACP,yBAAuG,KAAKxJ,KAA5G;AAAA,UAAQ8B,SAAR,gBAAQA,SAAR;AAAA,UAAmB/B,WAAnB,gBAAmBA,WAAnB;AAAA,UAAgCE,SAAhC,gBAAgCA,SAAhC;AAAA,UAA2C8B,aAA3C,gBAA2CA,aAA3C;AAAA,UAA0DC,QAA1D,gBAA0DA,QAA1D;AAAA,UAAoEK,SAApE,gBAAoEA,SAApE;AAAA,UAA+EK,QAA/E,gBAA+EA,QAA/E;AAAA,UAAyF/B,SAAzF,gBAAyFA,SAAzF;;AAEA,UAAI,CAACZ,WAAD,IAAgB,CAAC+B,SAAjB,IAA8B,CAAC7B,SAA/B,IAA4C,CAAC+B,QAAjD,EAA2D;AACzD,eAAO,IAAP;AACD;;AAED,aACE,oBAAC,gBAAD,CAAkB,QAAlB;AAA2B,QAAA,KAAK,EAAE;AAAlC,SACE,oBAAC,gBAAD,CAAkB,QAAlB;AAA2B,QAAA,KAAK,EAAE,KAAKa;AAAvC,SACE,oBAAC,KAAD;AACE,QAAA,SAAS,EAAElF,UAAU,CAACD,YAAY,CAAC,WAAD,EAAc,KAAKgC,KAAL,CAAWyE,QAAzB,CAAb,EAAiD;AACpE,+BAAqB,KAAKzE,KAAL,CAAW+J,cAAX,CAA0BC,WAA1B,KAA0CnL,WAAW,CAACoL,MADP;AAEpE,gCAAsBtH,SAF8C;AAGpE,kCAAwB1B;AAH4C,SAAjD,CADvB;AAME,QAAA,MAAM,EAAE,KAAKiJ,WANf;AAOE,QAAA,KAAK,EAAE,KAAKC,UAPd;AAQE,QAAA,QAAQ,EAAE,KAAKC;AARjB,SAUE;AACE,QAAA,SAAS,EAAC,iBADZ;AAEE,QAAA,OAAO,EAAE,KAAK3G,uBAFhB;AAGE,QAAA,GAAG,EAAE,KAAKR;AAHZ,QAVF,EAeE;AAAK,QAAA,SAAS,EAAC,qBAAf;AAAqC,QAAA,GAAG,EAAE,KAAKsE;AAA/C,SACG,KAAKtD,SAAL,GAAiBoG,GAAjB,CAAqB,UAACjG,KAAD,EAAW;AAC/B,YAAMxD,OAAO,GAAG3B,QAAQ,CAACmF,KAAK,CAACpE,KAAP,EAAcb,IAAd,CAAxB;;AACA,YAAI,CAACkD,aAAa,CAACyC,QAAd,CAAuBlE,OAAvB,CAAL,EAAsC;AACpC,iBAAO,IAAP;AACD;;AACD,YAAMJ,UAAU,qBAAQ,MAAI,CAACC,WAAL,CAAiBG,OAAjB,CAAR,CAAhB;;AAEA,YAAM0J,MAAM,GAAG9J,UAAU,CAACM,IAAX,KAAoBhC,SAAS,CAACiC,IAA7C;AACA,YAAMwJ,GAAG,mBAAY3J,OAAZ,CAAT;AAEA,eACE;AACE,UAAA,GAAG,EAAE2J,GADP;AAEE,UAAA,GAAG,EAAE,aAAClJ,CAAD;AAAA,mBAAO,MAAI,CAACZ,WAAL,CAAiBG,OAAjB,EAA0BkG,YAA1B,GAAyCzF,CAAhD;AAAA,WAFP;AAGE,UAAA,SAAS,EAAEpD,UAAU,CAAC,kBAAD,EAAqB;AACxC,wCAA4B2C,OAAO,KAAKP,WADA;AAExC,sCAA0BO,OAAO,KAAKwB,SAFE;AAGxC,sCAA0BxB,OAAO,KAAKL,SAHE;AAKxC,0CAA8ByC,QALU;AAOxC,4CAAgCsH,MAAM,IAAI9J,UAAU,CAACuF,UAPb;AAQxC,0CAA8BuE,MAAM,IAAI9J,UAAU,CAAC0F,QARX;AASxC,2CAA+BoE,MAAM,IAAI9J,UAAU,CAACyF;AATZ,WAArB;AAHvB,WAcE7B,KAdF,CADF;AAiBD,OA3BA,CADH,CAfF,CADF,CADF,CADF;AAoDD;;;;EArwBmCvG,KAAK,CAAC2M,S;;AAwwB5C,OAAO,IAAMC,cAAc,GAAG/L,WAAW,CAACD,YAAY,CAACO,OAAO,CAAiBe,uBAAjB,CAAR,CAAb,EAAiEnB,qBAAjE,EAAwF,gBAAxF,CAAlC","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 './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\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, startT, 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.touchStartTime = startT;\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, startT } = event;\n const target = originalEvent.target as HTMLElement;\n if (modalState.innerElement.contains(target)) {\n if (!this.state.touchDown) {\n modalState.touchStartTime = startT;\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(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 / (Date.now() - modalState.touchStartTime.getTime()) * 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(modalState: ModalsStateEntry) {\n let setStateCallback;\n\n if (this.state.dragging) {\n let translateY = modalState.translateYCurrent;\n\n const expectTranslateY = translateY / (Date.now() - modalState.touchStartTime.getTime()) * 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.props.platform === ANDROID || this.props.platform === VKCOM ? 320 : 400);\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 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 }\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 <div\n key={key}\n ref={(e) => this.modalsState[modalId].modalElement = e}\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 >{Modal}</div>\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":["React","Touch","TouchRootContext","getClassName","classNames","setTransformStyle","rubber","isFunction","ANDROID","IOS","VKCOM","transitionEvent","withPlatform","withContext","ModalRootContext","ConfigProviderContext","WebviewType","ModalType","MODAL_PAGE_DEFAULT_PERCENT_HEIGHT","withDOM","getNavId","warnOnce","warn","IS_DEV","process","env","NODE_ENV","numberInRange","number","range","rangeTranslate","Math","max","min","ModalRootTouchComponent","props","createRef","event","originalEvent","preventDefault","activeModal","state","nextModal","modalState","modalsState","animateTranslate","translateY","modalId","undefined","type","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","setState","activeModalState","doCloseModal","touchDown","onClose","id","isBack","inited","dragging","maskElementRef","initModalsState","modalRootContext","updateModalHeight","registerModal","data","Object","assign","triggerActiveModalClose","isInsideModal","frameIds","document","window","Children","toArray","children","getModals","reduce","acc","Modal","modalProps","settlingHeight","initActiveModal","toggleDocumentScrolling","platform","removeEventListener","updateModalTranslate","prevProps","prevState","includes","splice","indexOf","push","closeActiveModal","switchPrevNext","enabled","documentScrolling","preventTouch","passive","addEventListener","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","startT","isY","viewportRef","current","stopPropagation","touchStartTime","touchStartContentScrollTop","scrollTop","touchMovePositive","shiftYPercent","innerHeight","shiftYCurrent","touchShiftYPercent","translateYCurrent","startY","setStateCallback","shiftYEndPercent","expectTranslateY","Date","now","getTime","hidden","eventHandler","supported","onceHandler","name","nextModalState","prevIsPage","prevIsCard","nextIsPage","nextIsCard","percent","frameId","cancelAnimationFrame","footerElement","footerHeight","factor","forceOpacity","maskAnimationFrame","opacity","style","toString","configProvider","webviewType","VKAPPS","onTouchMove","onTouchEnd","onScroll","map","isPage","key","Component","ModalRootTouch"],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,KAAT;AACA,OAAOC,gBAAP;AACA,SAASC,YAAT;AACA,SAASC,UAAT;AACA,SAASC,iBAAT;AACA,SAASC,MAAT;AACA,SAASC,UAAT;AACA,SAASC,OAAT,EAAkBC,GAAlB,EAAuBC,KAAvB;AACA,SAASC,eAAT;AAEA,SAASC,YAAT;AACA,SAASC,WAAT;AACA,OAAOC,gBAAP;AACA,SACEC,qBADF,EAGEC,WAHF;AAKA,SAAwCC,SAAxC;AACA,SAASC,iCAAT;AACA,SAAmBC,OAAnB;AACA,SAASC,QAAT;AACA,SAASC,QAAT;AAGA,IAAMC,IAAI,GAAGD,QAAQ,CAAC,WAAD,CAArB;AACA,IAAME,MAAM,GAAGC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAxC;;AAEA,SAASC,aAAT,CAAuBC,MAAvB,EAAuCC,KAAvC,EAA8D;AAC5D,SAAOD,MAAM,IAAIC,KAAK,CAAC,CAAD,CAAf,IAAsBD,MAAM,IAAIC,KAAK,CAAC,CAAD,CAA5C;AACD;;AAED,SAASC,cAAT,CAAwBF,MAAxB,EAAwC;AACtC,SAAOG,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYD,IAAI,CAACE,GAAL,CAAS,EAAT,EAAaL,MAAb,CAAZ,CAAP;AACD;;IA6BKM,uB;;;;;AACJ,mCAAYC,KAAZ,EAAmC;AAAA;;AAAA;;AACjC,8BAAMA,KAAN;;AADiC;;AAAA;;AAAA;;AAAA;;AAAA,+EAsCJnC,KAAK,CAACoC,SAAN,EAtCI;;AAAA;;AAAA;;AAAA;;AAAA,mEA4JpB,UAACC,KAAD,EAAgB;AAC7B,UAAI,CAACA,KAAL,EAAY;AACV,eAAO,KAAP;AACD;;AACD,aAAOA,KAAK,CAACC,aAAb,EAA4B;AAC1BD,QAAAA,KAAK,GAAGA,KAAK,CAACC,aAAd;AACD;;AACD,UAAID,KAAK,CAACE,cAAV,EAA0B;AACxBF,QAAAA,KAAK,CAACE,cAAN;AACD;;AACD,aAAO,KAAP;AACD,KAvKkC;;AAAA,2EA2MZ,YAAM;AAC3B,UAAMC,WAAW,GAAG,MAAKC,KAAL,CAAWD,WAAX,IAA0B,MAAKC,KAAL,CAAWC,SAAzD;;AACA,UAAI,CAACF,WAAL,EAAkB;AAChB;AACD;;AAED,UAAMG,UAAU,GAAG,MAAKC,WAAL,CAAiBJ,WAAjB,CAAnB;;AACA,YAAKK,gBAAL,CAAsBF,UAAtB,EAAkCA,UAAU,CAACG,UAA7C;AACD,KAnNkC;;AAAA,wEA0Sf,YAAM;AACxB,wBAAmC,MAAKL,KAAxC;AAAA,UAAQD,WAAR,eAAQA,WAAR;AAAA,UAAqBE,SAArB,eAAqBA,SAArB;AAEA,UAAMK,OAAO,GAAGP,WAAW,IAAIE,SAA/B;AACA,UAAMC,UAAU,GAAGI,OAAO,GAAG,MAAKH,WAAL,CAAiBG,OAAjB,CAAH,GAA+BC,SAAzD;;AAEA,UAAIL,UAAU,IAAIA,UAAU,CAACM,IAAX,KAAoBhC,SAAS,CAACiC,IAA5C,IAAoDP,UAAU,CAACQ,oBAAnE,EAAyF;AACvF,YAAI,MAAKV,KAAL,CAAWW,SAAf,EAA0B;AACxB,gBAAKC,oBAAL,CAA0BV,UAA1B,EAAsC,YAAM;AAC1CW,YAAAA,qBAAqB,CAAC;AAAA,qBAAM,MAAKC,sBAAL,EAAN;AAAA,aAAD,CAArB;AACD,WAFD;AAGD,SAJD,MAIO;AACLD,UAAAA,qBAAqB,CAAC;AAAA,mBAAM,MAAKC,sBAAL,EAAN;AAAA,WAAD,CAArB;AACD;AACF;AACF,KAzTkC;;AAAA,kEA+UrB,UAACC,CAAD,EAAmB;AAC/B,UAAI,MAAKf,KAAL,CAAWW,SAAf,EAA0B;AACxB;AACD;;AACD,UAAMZ,WAAW,GAAG,MAAKC,KAAL,CAAWD,WAAX,IAA0B,MAAKC,KAAL,CAAWC,SAAzD;;AACA,UAAI,CAACF,WAAL,EAAkB;AAChB;AACD;;AAED,UAAMG,UAAU,GAAG,MAAKC,WAAL,CAAiBJ,WAAjB,CAAnB;;AAEA,UAAIG,UAAU,CAACM,IAAX,KAAoBhC,SAAS,CAACiC,IAAlC,EAAwC;AACtC,eAAO,MAAKO,eAAL,CAAqBD,CAArB,EAAwBb,UAAxB,CAAP;AACD;;AAED,UAAIA,UAAU,CAACM,IAAX,KAAoBhC,SAAS,CAACyC,IAAlC,EAAwC;AACtC,eAAO,MAAKC,eAAL,CAAqBH,CAArB,EAAwBb,UAAxB,CAAP;AACD;AACF,KAjWkC;;AAAA,iEAibtB,UAACa,CAAD,EAAmB;AAC9B,UAAMhB,WAAW,GAAG,MAAKC,KAAL,CAAWD,WAAX,IAA0B,MAAKC,KAAL,CAAWC,SAAzD;;AACA,UAAI,CAACF,WAAL,EAAkB;AAChB;AACD;;AACD,UAAMG,UAAU,GAAG,MAAKC,WAAL,CAAiBJ,WAAjB,CAAnB;;AAEA,UAAIG,UAAU,CAACM,IAAX,KAAoBhC,SAAS,CAACiC,IAAlC,EAAwC;AACtC,eAAO,MAAKU,cAAL,CAAoBJ,CAApB,EAAuBb,UAAvB,CAAP;AACD;;AAED,UAAIA,UAAU,CAACM,IAAX,KAAoBhC,SAAS,CAACyC,IAAlC,EAAwC;AACtC,eAAO,MAAKG,cAAL,CAAoBlB,UAApB,CAAP;AACD;AACF,KA/bkC;;AAAA,+DAoiBxB,UAACa,CAAD,EAA6B;AACtC,UAAMhB,WAAW,GAAG,MAAKC,KAAL,CAAWD,WAA/B;AAEA,UAAMsB,MAAM,GAAGN,CAAC,CAACM,MAAjB;;AAEA,UAAI,CAACtB,WAAL,EAAkB;AAChB;AACD;;AACD,UAAMG,UAAU,GAAG,MAAKC,WAAL,CAAiBJ,WAAjB,CAAnB;;AACA,UAAIG,UAAU,CAACM,IAAX,KAAoBhC,SAAS,CAACiC,IAA9B,IAAsCP,UAAU,CAACoB,cAAX,CAA0BC,QAA1B,CAAmCF,MAAnC,CAA1C,EAAsF;AACpFnB,QAAAA,UAAU,CAACsB,eAAX,GAA6B,IAA7B;AAEAC,QAAAA,YAAY,CAACvB,UAAU,CAACwB,wBAAZ,CAAZ;AAEAxB,QAAAA,UAAU,CAACwB,wBAAX,GAAsCC,UAAU,CAAC,YAAM;AACrD,cAAIzB,UAAU,CAACsB,eAAf,EAAgC;AAC9BtB,YAAAA,UAAU,CAACsB,eAAX,GAA6B,KAA7B;AACD;AACF,SAJ+C,EAI7C,GAJ6C,CAAhD;AAKD;AACF,KAxjBkC;;AAAA,+EAknBR,YAAM;AAC/B,YAAKI,iBAAL,GAAyBtC,IAAI,CAACC,GAAL,CAAS,CAAT,EAAY,MAAKqC,iBAAL,GAAyB,CAArC,CAAzB;;AACA,UAAI,MAAKA,iBAAL,GAAyB,CAA7B,EAAgC;AAC9B;AACD;;AAED,UAAM7B,WAAW,GAAG,MAAKC,KAAL,CAAWC,SAA/B;AAEA,UAAM4B,QAAwB,GAAG;AAC/BC,QAAAA,SAAS,EAAE,IADoB;AAE/B7B,QAAAA,SAAS,EAAE,IAFoB;AAG/B8B,QAAAA,aAAa,EAAE,CAAChC,WAAD,CAHgB;AAI/BA,QAAAA,WAAW,EAAEA,WAJkB;AAK/BiC,QAAAA,QAAQ,EAAE,KALqB;AAM/BrB,QAAAA,SAAS,EAAE;AANoB,OAAjC;;AASA,UAAI,CAACZ,WAAL,EAAkB;AAChB8B,QAAAA,QAAQ,CAACI,OAAT,GAAmB,EAAnB;AACD;;AAED,YAAKC,QAAL,CAAcL,QAAd;AACD,KAxoBkC;;AAAA,8EAqrBT,YAAM;AAC9B,UAAMM,gBAAgB,GAAG,MAAKhC,WAAL,CAAiB,MAAKH,KAAL,CAAWD,WAA5B,CAAzB;;AACA,UAAIoC,gBAAJ,EAAsB;AACpB,cAAKC,YAAL,CAAkBD,gBAAlB;AACD;AACF,KA1rBkC;;AAAA,mEA4rBH,UAACjC,UAAD,EAAkC;AAChE;AACA,YAAKgC,QAAL,CAAc;AAAEG,QAAAA,SAAS,EAAE,KAAb;AAAoB1B,QAAAA,SAAS,EAAE;AAA/B,OAAd;;AAEA,UAAI7C,UAAU,CAACoC,UAAU,CAACoC,OAAZ,CAAd,EAAoC;AAClCpC,QAAAA,UAAU,CAACoC,OAAX;AACD,OAFD,MAEO,IAAIxE,UAAU,CAAC,MAAK4B,KAAL,CAAW4C,OAAZ,CAAd,EAAoC;AACzC,cAAK5C,KAAL,CAAW4C,OAAX,CAAmBpC,UAAU,CAACqC,EAA9B;AACD,OAFM,MAEA,IAAIzD,MAAJ,EAAY;AACjBD,QAAAA,IAAI,CAAC,sBAAD,CAAJ;AACD;AACF,KAvsBkC;;AAGjC,QAAMkB,YAAW,GAAGL,KAAK,CAACK,WAA1B;AAEA,UAAKC,KAAL,GAAa;AACXD,MAAAA,WAAW,EAAE,IADF;AAEX+B,MAAAA,SAAS,EAAE,IAFA;AAGX7B,MAAAA,SAAS,EAAEF,YAHA;AAIXgC,MAAAA,aAAa,EAAEhC,YAAW,GAAG,CAACA,YAAD,CAAH,GAAmB,EAJlC;AAKXiC,MAAAA,QAAQ,EAAE,CAAC,CAACjC,YALD;AAMXY,MAAAA,SAAS,EAAE,KANA;AAOXsB,MAAAA,OAAO,EAAElC,YAAW,GAAG,CAACA,YAAD,CAAH,GAAmB,EAP5B;AAQXyC,MAAAA,MAAM,EAAE,KARG;AASXC,MAAAA,MAAM,EAAE,KATG;AAUXJ,MAAAA,SAAS,EAAE,KAVA;AAWXK,MAAAA,QAAQ,EAAE;AAXC,KAAb;AAcA,UAAKd,iBAAL,GAAyB,CAAzB;AACA,UAAKe,cAAL,gBAAsBpF,KAAK,CAACoC,SAAN,EAAtB;;AAEA,UAAKiD,eAAL;;AAEA,UAAKC,gBAAL,GAAwB;AACtBC,MAAAA,iBAAiB,EAAE,MAAKA,iBADF;AAEtBC,MAAAA,aAAa,EAAE;AAAA,YAAGR,EAAH,QAAGA,EAAH;AAAA,YAAUS,IAAV;;AAAA,eAAqBC,MAAM,CAACC,MAAP,CAAc,MAAK/C,WAAL,CAAiBoC,EAAjB,CAAd,EAAoCS,IAApC,CAArB;AAAA,OAFO;AAGtBV,MAAAA,OAAO,EAAE,MAAKa,uBAHQ;AAItBC,MAAAA,aAAa,EAAE;AAJO,KAAxB;AAOA,UAAKC,QAAL,GAAgB,EAAhB;AA/BiC;AAgClC;;;;SAaD,eAAyB;AACvB,aAAO,KAAK3D,KAAL,CAAW4D,QAAlB;AACD;;;SAED,eAAqB;AACnB,aAAO,KAAK5D,KAAL,CAAW6D,MAAlB;AACD;;;WAED,qBAAY;AACV,aAAOhG,KAAK,CAACiG,QAAN,CAAeC,OAAf,CAAuB,KAAK/D,KAAL,CAAWgE,QAAlC,CAAP;AACD;;;WAED,2BAAkB;AAChB,WAAKvD,WAAL,GAAmB,KAAKwD,SAAL,GAAiBC,MAAjB,CAAqC,UAACC,GAAD,EAAMC,KAAN,EAAgB;AACtE,YAAMC,UAAU,GAAGD,KAAK,CAACpE,KAAzB;AACA,YAAMM,KAAuB,GAAG;AAC9BuC,UAAAA,EAAE,EAAE5D,QAAQ,CAACoF,UAAD,EAAalF,IAAb,CADkB;AAE9ByD,UAAAA,OAAO,EAAEwB,KAAK,CAACpE,KAAN,CAAY4C,OAFS;AAG9B5B,UAAAA,oBAAoB,EAAE,CAAC,CAACqD,UAAU,CAACrD;AAHL,SAAhC,CAFsE,CAQtE;;AACA,YAAI,OAAOqD,UAAU,CAACC,cAAlB,KAAqC,QAAzC,EAAmD;AACjDhE,UAAAA,KAAK,CAACgE,cAAN,GAAuBD,UAAU,CAACC,cAAlC;AACD;;AAEDH,QAAAA,GAAG,CAAC7D,KAAK,CAACuC,EAAP,CAAH,GAAgBvC,KAAhB;AACA,eAAO6D,GAAP;AACD,OAfkB,EAehB,EAfgB,CAAnB;AAgBD;;;WAED,6BAAoB;AAClB,WAAKI,eAAL;AACD;;;WAED,gCAAuB;AACrB,WAAKC,uBAAL,CAA6B,IAA7B;;AACA,UAAI,KAAKxE,KAAL,CAAWyE,QAAX,KAAwBnG,GAA5B,EAAiC;AAC/B,aAAKuF,MAAL,CAAYa,mBAAZ,CAAgC,QAAhC,EAA0C,KAAKC,oBAA/C,EAAqE,KAArE;AACD;AACF;;;WAED,4BAAmBC,SAAnB,EAA8CC,SAA9C,EAAyE;AAAA;;AACvE,UAAI,KAAK7E,KAAL,CAAWK,WAAX,KAA2BuE,SAAS,CAACvE,WAArC,IAAoD,CAAC,KAAKC,KAAL,CAAWW,SAApE,EAA+E;AAC7E,YAAMV,SAAS,GAAG,KAAKP,KAAL,CAAWK,WAA7B;AACA,YAAM+B,SAAS,GAAGwC,SAAS,CAACvE,WAA5B;;AAEA,YAAIjB,MAAM,IAAImB,SAAS,KAAK,IAAxB,IAAgC,CAAC,KAAKE,WAAL,CAAiBF,SAAjB,CAArC,EAAkE;AAChE,iBAAOpB,IAAI,0CAAmCoB,SAAnC,gBAAX;AACD;;AAED,YAAIgC,OAAO,sBAAO,KAAKjC,KAAL,CAAWiC,OAAlB,CAAX;;AACA,YAAIO,MAAM,GAAG,KAAb;;AAEA,YAAIvC,SAAS,KAAK,IAAlB,EAAwB;AACtBgC,UAAAA,OAAO,GAAG,EAAV;AACD,SAFD,MAEO,IAAIA,OAAO,CAACuC,QAAR,CAAiBvE,SAAjB,CAAJ,EAAiC;AACtCgC,UAAAA,OAAO,GAAGA,OAAO,CAACwC,MAAR,CAAe,CAAf,EAAkBxC,OAAO,CAACyC,OAAR,CAAgBzE,SAAhB,IAA6B,CAA/C,CAAV;AACAuC,UAAAA,MAAM,GAAG,IAAT;AACD,SAHM,MAGA;AACLP,UAAAA,OAAO,CAAC0C,IAAR,CAAa1E,SAAb;AACD;;AAED,eAAO,KAAKiC,QAAL,CAAc;AACnBnC,UAAAA,WAAW,EAAE,IADM;AAEnBE,UAAAA,SAAS,EAATA,SAFmB;AAGnB6B,UAAAA,SAAS,EAATA,SAHmB;AAInBC,UAAAA,aAAa,EAAE,CAAC9B,SAAD,EAAY6B,SAAZ,CAJI;AAKnBG,UAAAA,OAAO,EAAPA,OALmB;AAMnBO,UAAAA,MAAM,EAANA,MANmB;AAOnBR,UAAAA,QAAQ,EAAE,IAPS;AAQnBS,UAAAA,MAAM,EAAE,KARW;AASnB9B,UAAAA,SAAS,EAAE;AATQ,SAAd,EAUJ,YAAM;AACP,cAAIV,SAAS,KAAK,IAAlB,EAAwB;AACtB,YAAA,MAAI,CAAC2E,gBAAL;AACD,WAFD,MAEO;AACL,YAAA,MAAI,CAACX,eAAL;AACD;AACF,SAhBM,CAAP;AAiBD;;AAED,UAAI,KAAKjE,KAAL,CAAWW,SAAX,IAAwB,CAAC4D,SAAS,CAAC5D,SAAvC,EAAkD;AAChDE,QAAAA,qBAAqB,CAAC;AAAA,iBAAM,MAAI,CAACgE,cAAL,EAAN;AAAA,SAAD,CAArB;AACD;;AAED,UAAI,CAAC,KAAK7E,KAAL,CAAWD,WAAZ,IAA2B,CAAC,KAAKC,KAAL,CAAW8B,SAAvC,IAAoD,CAAC,KAAK9B,KAAL,CAAWC,SAApE,EAA+E;AAC7E,aAAKiE,uBAAL,CAA6B,IAA7B;AACD,OAFD,MAEO;AACL,aAAKA,uBAAL,CAA6B,KAA7B;AACD;AACF;AAED;;;;WACA,iCAAwBY,OAAxB,EAA0C;AACxC,UAAI,KAAKC,iBAAL,KAA2BD,OAA/B,EAAwC;AACtC;AACD;;AACD,WAAKC,iBAAL,GAAyBD,OAAzB;;AAEA,UAAIA,OAAJ,EAAa;AACX;AACA;AACA;AACA;AACA,aAAKvB,MAAL,CAAYa,mBAAZ,CAAgC,WAAhC,EAA6C,KAAKY,YAAlD,EAAgE;AAAEC,UAAAA,OAAO,EAAE;AAAX,SAAhE;AACD,OAND,MAMO;AACL,aAAK1B,MAAL,CAAY2B,gBAAZ,CAA6B,WAA7B,EAA0C,KAAKF,YAA/C,EAA6D;AAAEC,UAAAA,OAAO,EAAE;AAAX,SAA7D;AACD;AACF;;;;AAeD;AACF;AACA;AACE,+BAAkB;AAChB,UAAMlF,WAAW,GAAG,KAAKC,KAAL,CAAWD,WAAX,IAA0B,KAAKC,KAAL,CAAWC,SAAzD;;AACA,UAAI,CAACF,WAAL,EAAkB;AAChB;AACD;;AAED,UAAMG,UAAU,GAAG,KAAKC,WAAL,CAAiBJ,WAAjB,CAAnB,CANgB,CAOhB;;AACA,UAAI,KAAKL,KAAL,CAAWyE,QAAX,KAAwBnG,GAA5B,EAAiC;AAC/B,aAAKuF,MAAL,CAAY2B,gBAAZ,CAA6B,QAA7B,EAAuC,KAAKb,oBAA5C,EAAkE,KAAlE;AACD;;AAED,cAAQnE,UAAU,CAACM,IAAnB;AACE,aAAKhC,SAAS,CAACiC,IAAf;AACEP,UAAAA,UAAU,CAAC8D,cAAX,GAA4B9D,UAAU,CAAC8D,cAAX,IAA6BvF,iCAAzD;AACA,eAAK0G,aAAL,CAAmBjF,UAAnB;AACA;;AAEF,aAAK1B,SAAS,CAACyC,IAAf;AACE,eAAKmE,aAAL,CAAmBlF,UAAnB;AACA;;AAEF;AACE,cAAIpB,MAAJ,EAAY;AACVD,YAAAA,IAAI,CAAC,8CAAD,CAAJ;AACD;;AAbL;;AAgBA,WAAKqD,QAAL,CAAc;AAAEO,QAAAA,MAAM,EAAE,IAAV;AAAgB9B,QAAAA,SAAS,EAAE;AAA3B,OAAd;AACD;;;WAYD,uBAAcT,UAAd,EAA4C;AAC1C,UAAQoB,cAAR,GAA2BpB,UAA3B,CAAQoB,cAAR;AACA,UAAM+D,aAAa,GAAI/D,cAAc,CAACgE,iBAAhB,CAAkDC,YAAxE;AAEA,UAAIC,cAAc,GAAGtF,UAAU,CAACG,UAAhC;AAEAH,MAAAA,UAAU,CAACuF,UAAX,GAAwBJ,aAAa,GAAG/D,cAAc,CAACoE,YAA/B,IAA+CxF,UAAU,CAAC8D,cAAX,KAA8B,GAArG;AAEA,UAAI2B,SAAS,GAAG,KAAhB;AACA,UAAIC,QAAQ,GAAG,KAAf;AACA,UAAIC,cAAJ;AACA,UAAIxF,UAAJ;AACA,UAAIyF,aAAJ;AACA,UAAIC,cAAJ;AACA,UAAIC,WAAJ;;AAEA,UAAI9F,UAAU,CAACuF,UAAf,EAA2B;AACzBI,QAAAA,cAAc,GAAG,MAAM3F,UAAU,CAAC8D,cAAlC;AAEA,YAAMiC,SAAS,GAAGJ,cAAc,GAAG,CAAnC;AACA,YAAMK,WAAW,GAAG,MAAML,cAA1B;AAEAC,QAAAA,aAAa,GAAG,CAAC,CAAD,EAAIG,SAAJ,CAAhB;AACAF,QAAAA,cAAc,GAAG,CAACE,SAAD,EAAYJ,cAAc,GAAGK,WAAW,GAAG,CAA3C,CAAjB;AACAF,QAAAA,WAAW,GAAG,CAACH,cAAc,GAAGK,WAAW,GAAG,CAAhC,EAAmC,GAAnC,CAAd;AAEAP,QAAAA,SAAS,GAAGE,cAAc,GAAG,CAA7B;AACAD,QAAAA,QAAQ,GAAGC,cAAc,IAAI,CAA7B;AACAxF,QAAAA,UAAU,GAAGwF,cAAb;AACD,OAbD,MAaO;AACL,YAAMM,YAAY,GAAGjG,UAAU,CAACkG,aAAX,CAAyBb,YAA9C;AACA,YAAMc,MAAM,GAAGhB,aAAa,GAAGc,YAA/B;AAEAN,QAAAA,cAAc,GAAG,MAAMQ,MAAM,GAAGnG,UAAU,CAACoG,YAAX,CAAwBC,aAAxB,CAAsChB,YAA/C,GAA8D,GAArF;AACAlF,QAAAA,UAAU,GAAGwF,cAAb;AAEAC,QAAAA,aAAa,GAAG,CAACzF,UAAD,EAAaA,UAAU,GAAG,EAA1B,CAAhB;AACA0F,QAAAA,cAAc,GAAG,CAAC1F,UAAU,GAAG,EAAd,EAAkBA,UAAU,GAAG,EAA/B,CAAjB;AACA2F,QAAAA,WAAW,GAAG,CAAC3F,UAAU,GAAG,EAAd,EAAkBA,UAAU,GAAG,GAA/B,CAAd;AACD,OAvCyC,CAyC1C;;;AACA,UAAIH,UAAU,CAACuF,UAAX,IAAyBpF,UAAU,GAAGmF,cAAtC,IAAwDtF,UAAU,CAAC8D,cAAX,KAA8B,GAA1F,EAA+F;AAC7F3D,QAAAA,UAAU,GAAG,CAAb;AACD;;AAEDH,MAAAA,UAAU,CAAC4F,aAAX,GAA2BA,aAA3B;AACA5F,MAAAA,UAAU,CAAC6F,cAAX,GAA4BA,cAA5B;AACA7F,MAAAA,UAAU,CAAC8F,WAAX,GAAyBA,WAAzB;AACA9F,MAAAA,UAAU,CAACG,UAAX,GAAwBA,UAAxB;AACAH,MAAAA,UAAU,CAAC2F,cAAX,GAA4BA,cAA5B;AACA3F,MAAAA,UAAU,CAACyF,SAAX,GAAuBA,SAAvB;AACAzF,MAAAA,UAAU,CAAC0F,QAAX,GAAsBA,QAAtB;AACD;;;WAED,uBAAc1F,UAAd,EAA4C;AAC1CA,MAAAA,UAAU,CAACG,UAAX,GAAwB,CAAxB;AACD;;;WAED,kCAAyB;AACvB,yBAAmC,KAAKL,KAAxC;AAAA,UAAQD,WAAR,gBAAQA,WAAR;AAAA,UAAqBE,SAArB,gBAAqBA,SAArB;AACA,UAAMK,OAAO,GAAGP,WAAW,IAAIE,SAA/B;AAEA,UAAMC,UAAU,GAAG,KAAKC,WAAL,CAAiBG,OAAjB,CAAnB;;AACA,UAAI,CAAAJ,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEM,IAAZ,MAAqBhC,SAAS,CAACiC,IAA/B,IAAuCP,UAAvC,aAAuCA,UAAvC,eAAuCA,UAAU,CAAEsG,YAAvD,EAAqE;AACnE,YAAMC,cAAc,qBAAQvG,UAAR,CAApB;;AACA,aAAKiF,aAAL,CAAmBjF,UAAnB;;AACA,YAAMwG,iBAAiB,qBAAQxG,UAAR,CAAvB;;AAEA,YAAIyG,WAAW,GAAG,KAAlB;;AAEA,YAAIF,cAAc,CAAChB,UAAf,KAA8BiB,iBAAiB,CAACjB,UAApD,EAAgE;AAC9D,cAAIgB,cAAc,CAACZ,cAAf,KAAkCa,iBAAiB,CAACb,cAAxD,EAAwE;AACtEc,YAAAA,WAAW,GAAG,IAAd;AACD;AACF,SAJD,MAIO;AACLA,UAAAA,WAAW,GAAG,IAAd;AACD;;AAED,YAAIA,WAAJ,EAAiB;AACf,eAAKvG,gBAAL,CAAsBF,UAAtB,EAAkCA,UAAU,CAACG,UAA7C;AACD;AACF;AACF;;;WAmBD,4BAAmB;AACjB;AACA,WAAK6B,QAAL,CAAc;AAAEG,QAAAA,SAAS,EAAE,KAAb;AAAoB1B,QAAAA,SAAS,EAAE;AAA/B,OAAd;;AAEA,UAAI,KAAKjB,KAAL,CAAWyE,QAAX,KAAwBnG,GAA5B,EAAiC;AAC/B,aAAKuF,MAAL,CAAYa,mBAAZ,CAAgC,QAAhC,EAA0C,KAAKC,oBAA/C,EAAqE,KAArE;AACD;;AAED,UAAQvC,SAAR,GAAsB,KAAK9B,KAA3B,CAAQ8B,SAAR;;AACA,UAAI,CAACA,SAAL,EAAgB;AACd,eAAOjD,IAAI,2CAAoCiD,SAApC,EAAX;AACD;;AAED,UAAM2E,cAAc,GAAG,KAAKtG,WAAL,CAAiB2B,SAAjB,CAAvB;AAEA,WAAKlB,oBAAL,CAA0B6F,cAA1B,EAA0C,KAAKG,wBAA/C;AACA,WAAKxG,gBAAL,CAAsBqG,cAAtB,EAAsC,GAAtC;AACA,WAAKI,cAAL,CAAoBJ,cAApB,EAAoC,CAApC;AACD;;;WAsBD,yBAAgB7G,KAAhB,EAAmCM,UAAnC,EAAiE;AAC/D,UAAQ4G,MAAR,GAA0ClH,KAA1C,CAAQkH,MAAR;AAAA,UAAgBC,MAAhB,GAA0CnH,KAA1C,CAAgBmH,MAAhB;AAAA,UAAwBlH,aAAxB,GAA0CD,KAA1C,CAAwBC,aAAxB;AACA,UAAMwB,MAAM,GAAGxB,aAAa,CAACwB,MAA7B;;AAEA,UAAI,CAACzB,KAAK,CAACoH,GAAX,EAAgB;AACd,YAAI,KAAKC,WAAL,CAAiBC,OAAjB,CAAyB3F,QAAzB,CAAkCF,MAAlC,CAAJ,EAA+C;AAC7CxB,UAAAA,aAAa,CAACC,cAAd;AACD;;AACD;AACD;;AAED,UAAI,CAACI,UAAU,CAACoG,YAAX,CAAwB/E,QAAxB,CAAiCF,MAAjC,CAAL,EAA+C;AAC7C,eAAOxB,aAAa,CAACC,cAAd,EAAP;AACD;;AAEDD,MAAAA,aAAa,CAACsH,eAAd;AAEA,UAAQ1B,UAAR,GAA6DvF,UAA7D,CAAQuF,UAAR;AAAA,UAAoBjE,eAApB,GAA6DtB,UAA7D,CAAoBsB,eAApB;AAAA,UAAqCmE,SAArC,GAA6DzF,UAA7D,CAAqCyF,SAArC;AAAA,UAAgDC,QAAhD,GAA6D1F,UAA7D,CAAgD0F,QAAhD;;AAEA,UAAI,CAAC,KAAK5F,KAAL,CAAWqC,SAAhB,EAA2B;AACzBnC,QAAAA,UAAU,CAACkH,cAAX,GAA4BL,MAA5B;AACA7G,QAAAA,UAAU,CAACmH,0BAAX,GAAwCnH,UAAU,CAACoB,cAAX,CAA0BgG,SAAlE;AACA,aAAKpF,QAAL,CAAc;AAAEG,UAAAA,SAAS,EAAE;AAAb,SAAd;AACD;;AAED,UAAIb,eAAJ,EAAqB;AACnB;AACD;;AAED,UAAItB,UAAU,CAACqH,iBAAX,KAAiC,IAArC,EAA2C;AACzCrH,QAAAA,UAAU,CAACqH,iBAAX,GAA+BT,MAAM,GAAG,CAAxC;AACD;;AAED,UACE,CAAC5G,UAAU,CAACuF,UAAZ,IACAE,SADA,IAEAC,QAAQ,IAAI1F,UAAU,CAACqH,iBAAvB,IAA4CrH,UAAU,CAACmH,0BAAX,KAA0C,CAFtF,IAGAnH,UAAU,CAACkG,aAAX,CAAyB7E,QAAzB,CAAkCF,MAAlC,CAJF,EAKE;AACAxB,QAAAA,aAAa,CAACC,cAAd;;AAEA,YAAI,CAAC2F,UAAD,IAAeqB,MAAM,GAAG,CAA5B,EAA+B;AAC7B;AACD;;AAED,SAAC,KAAK9G,KAAL,CAAW0C,QAAZ,IAAwB,KAAKR,QAAL,CAAc;AAAEQ,UAAAA,QAAQ,EAAE;AAAZ,SAAd,CAAxB;AAEA,YAAM8E,aAAa,GAAGV,MAAM,GAAG,KAAKvD,MAAL,CAAYkE,WAArB,GAAmC,GAAzD;AACA,YAAMC,aAAa,GAAG7J,MAAM,CAAC2J,aAAD,EAAgB,EAAhB,EAAoB,GAApB,EAAyB,KAAK9H,KAAL,CAAWyE,QAAX,KAAwBpG,OAAxB,IAAmC,KAAK2B,KAAL,CAAWyE,QAAX,KAAwBlG,KAApF,CAA5B;AAEAiC,QAAAA,UAAU,CAACyH,kBAAX,GAAgCH,aAAhC;AACAtH,QAAAA,UAAU,CAAC0H,iBAAX,GAA+BvI,cAAc,CAACa,UAAU,CAACG,UAAX,GAAwBqH,aAAzB,CAA7C;AAEA,aAAKtH,gBAAL,CAAsBF,UAAtB,EAAkCA,UAAU,CAAC0H,iBAA7C;AACA,aAAKf,cAAL,CAAoB3G,UAApB;AACD;AACF;;;WAED,yBAAgBN,KAAhB,EAAmCM,UAAnC,EAAiE;AAC/D,UAAQL,aAAR,GAA0CD,KAA1C,CAAQC,aAAR;AAAA,UAAuBiH,MAAvB,GAA0ClH,KAA1C,CAAuBkH,MAAvB;AAAA,UAA+BC,MAA/B,GAA0CnH,KAA1C,CAA+BmH,MAA/B;AACA,UAAM1F,MAAM,GAAGxB,aAAa,CAACwB,MAA7B;;AACA,UAAInB,UAAU,CAACoG,YAAX,CAAwB/E,QAAxB,CAAiCF,MAAjC,CAAJ,EAA8C;AAC5C,YAAI,CAAC,KAAKrB,KAAL,CAAWqC,SAAhB,EAA2B;AACzBnC,UAAAA,UAAU,CAACkH,cAAX,GAA4BL,MAA5B;AACA,eAAK7E,QAAL,CAAc;AAAEG,YAAAA,SAAS,EAAE,IAAb;AAAmBK,YAAAA,QAAQ,EAAE;AAA7B,WAAd;AACD;;AAED,YAAM8E,aAAa,GAAGV,MAAM,GAAG5G,UAAU,CAACoG,YAAX,CAAwBf,YAAjC,GAAgD,GAAtE;AACA,YAAMmC,aAAa,GAAG7J,MAAM,CAAC2J,aAAD,EAAgB,EAAhB,EAAoB,GAApB,EAAyB,KAAK9H,KAAL,CAAWyE,QAAX,KAAwBpG,OAAxB,IAAmC,KAAK2B,KAAL,CAAWyE,QAAX,KAAwBlG,KAApF,CAA5B;AAEAiC,QAAAA,UAAU,CAACyH,kBAAX,GAAgCH,aAAhC;AACAtH,QAAAA,UAAU,CAAC0H,iBAAX,GAA+BtI,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYW,UAAU,CAACG,UAAX,GAAwBqH,aAApC,CAA/B;AAEA,aAAKtH,gBAAL,CAAsBF,UAAtB,EAAkCA,UAAU,CAAC0H,iBAA7C;AACA,aAAKf,cAAL,CAAoB3G,UAApB;AACD;AACF;;;WAkBD,wBAAeN,KAAf,EAAkCM,UAAlC,EAAgE;AAAA;;AAC9D,UAAQ2H,MAAR,GAA2BjI,KAA3B,CAAQiI,MAAR;AAAA,UAAgBf,MAAhB,GAA2BlH,KAA3B,CAAgBkH,MAAhB;AAEA5G,MAAAA,UAAU,CAACsB,eAAX,GAA6B,KAA7B;AACAtB,MAAAA,UAAU,CAACqH,iBAAX,GAA+B,IAA/B;AAEA,UAAIO,gBAAJ;;AAEA,UAAI,KAAK9H,KAAL,CAAW0C,QAAf,EAAyB;AACvB,YAAMqF,gBAAgB,GAAG,CAACF,MAAM,GAAGf,MAAV,IAAoB,KAAKvD,MAAL,CAAYkE,WAAhC,GAA8C,GAAvE;AAEA,YAAIpH,UAAU,GAAGH,UAAU,CAAC0H,iBAA5B;AACA,YAAMI,gBAAgB,GAAG3H,UAAU,IAAI4H,IAAI,CAACC,GAAL,KAAahI,UAAU,CAACkH,cAAX,CAA0Be,OAA1B,EAAjB,CAAV,GAAkE,GAAlE,GAAwE,GAAxE,IAA+EjI,UAAU,CAACyH,kBAAX,GAAgC,CAAhC,GAAoC,CAAC,CAArC,GAAyC,CAAxH,CAAzB;AACAtH,QAAAA,UAAU,GAAGhB,cAAc,CAACgB,UAAU,GAAG2H,gBAAd,CAA3B;;AAEA,YAAI9H,UAAU,CAAC8D,cAAX,KAA8B,GAAlC,EAAuC;AACrC,cAAI9E,aAAa,CAACmB,UAAD,EAAaH,UAAU,CAAC4F,aAAxB,CAAjB,EAAyD;AACvDzF,YAAAA,UAAU,GAAGH,UAAU,CAAC4F,aAAX,CAAyB,CAAzB,CAAb;AACD,WAFD,MAEO,IAAI5G,aAAa,CAACmB,UAAD,EAAaH,UAAU,CAAC6F,cAAxB,CAAjB,EAA0D;AAC/D1F,YAAAA,UAAU,GAAGH,UAAU,CAAC2F,cAAxB;AACD,WAFM,MAEA,IAAI3G,aAAa,CAACmB,UAAD,EAAaH,UAAU,CAAC8F,WAAxB,CAAjB,EAAuD;AAC5D3F,YAAAA,UAAU,GAAG,GAAb;AACD,WAFM,MAEA;AACLA,YAAAA,UAAU,GAAGH,UAAU,CAAC2F,cAAxB;AACD;AACF,SAVD,MAUO;AACL,cAAI3G,aAAa,CAACmB,UAAD,EAAa,CAAC,CAAD,EAAI,EAAJ,CAAb,CAAjB,EAAwC;AACtCA,YAAAA,UAAU,GAAG,CAAb;AACD,WAFD,MAEO;AACLA,YAAAA,UAAU,GAAG,GAAb;AACD;AACF;;AAED,YAAIA,UAAU,KAAK,GAAf,IAAsB0H,gBAAgB,IAAI,EAA9C,EAAkD;AAChD1H,UAAAA,UAAU,GAAG,GAAb;AACD;;AAEDH,QAAAA,UAAU,CAACG,UAAX,GAAwBA,UAAxB;AACAH,QAAAA,UAAU,CAAC0H,iBAAX,GAA+BvH,UAA/B;AACAH,QAAAA,UAAU,CAACyF,SAAX,GAAuBtF,UAAU,GAAG,CAAb,IAAkBA,UAAU,GAAG0H,gBAAtD;AACA7H,QAAAA,UAAU,CAAC0F,QAAX,GAAsBvF,UAAU,KAAK,CAArC;AACAH,QAAAA,UAAU,CAACkI,MAAX,GAAoB/H,UAAU,KAAK,GAAnC;;AAEA,YAAIH,UAAU,CAACkI,MAAf,EAAuB;AACrB,eAAKhG,YAAL,CAAkBlC,UAAlB;AACD;;AAED4H,QAAAA,gBAAgB,GAAG,4BAAM;AACvB,cAAI,CAAC5H,UAAU,CAACkI,MAAhB,EAAwB;AACtB,YAAA,MAAI,CAAChI,gBAAL,CAAsBF,UAAtB,EAAkCA,UAAU,CAACG,UAA7C;AACD;;AAED,UAAA,MAAI,CAACwG,cAAL,CAAoB3G,UAApB;AACD,SAND;AAOD;;AAED,WAAKgC,QAAL,CAAc;AACZG,QAAAA,SAAS,EAAE,KADC;AAEZK,QAAAA,QAAQ,EAAE;AAFE,OAAd,EAGGoF,gBAHH;AAID;;;WAED,wBAAe5H,UAAf,EAA6C;AAAA;;AAC3C,UAAI4H,gBAAJ;;AAEA,UAAI,KAAK9H,KAAL,CAAW0C,QAAf,EAAyB;AACvB,YAAIrC,UAAU,GAAGH,UAAU,CAAC0H,iBAA5B;AAEA,YAAMI,gBAAgB,GAAG3H,UAAU,IAAI4H,IAAI,CAACC,GAAL,KAAahI,UAAU,CAACkH,cAAX,CAA0Be,OAA1B,EAAjB,CAAV,GAAkE,GAAlE,GAAwE,GAAxE,IAA+EjI,UAAU,CAACyH,kBAAX,GAAgC,CAAhC,GAAoC,CAAC,CAArC,GAAyC,CAAxH,CAAzB;AACAtH,QAAAA,UAAU,GAAGf,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYc,UAAU,GAAG2H,gBAAzB,CAAb;;AAEA,YAAI3H,UAAU,IAAI,EAAlB,EAAsB;AACpBA,UAAAA,UAAU,GAAG,GAAb;AACD,SAFD,MAEO;AACLA,UAAAA,UAAU,GAAG,CAAb;AACD;;AAEDH,QAAAA,UAAU,CAACG,UAAX,GAAwBA,UAAxB;AACAH,QAAAA,UAAU,CAACkI,MAAX,GAAoB/H,UAAU,KAAK,GAAnC;;AAEA,YAAIH,UAAU,CAACkI,MAAf,EAAuB;AACrB,eAAKhG,YAAL,CAAkBlC,UAAlB;AACD;;AAED4H,QAAAA,gBAAgB,GAAG,4BAAM;AACvB,cAAI,CAAC5H,UAAU,CAACkI,MAAhB,EAAwB;AACtB,YAAA,MAAI,CAAChI,gBAAL,CAAsBF,UAAtB,EAAkCA,UAAU,CAACG,UAA7C;AACD;;AAED,UAAA,MAAI,CAACwG,cAAL,CAAoB3G,UAApB;AACD,SAND;AAOD;;AAED,WAAKgC,QAAL,CAAc;AACZG,QAAAA,SAAS,EAAE,KADC;AAEZK,QAAAA,QAAQ,EAAE;AAFE,OAAd,EAGGoF,gBAHH;AAID;;;WAwBD,8BAAqB5H,UAArB,EAAmDmI,YAAnD,EAA6E;AAC3E,UAAInK,eAAe,CAACoK,SAApB,EAA+B;AAC7B,YAAMC,WAAW,GAAG,SAAdA,WAAc,GAAM;AACxBrI,UAAAA,UAAU,CAACoG,YAAX,CAAwBlC,mBAAxB,CAA4ClG,eAAe,CAACsK,IAA5D,EAAkED,WAAlE;AACAF,UAAAA,YAAY;AACb,SAHD;;AAKAnI,QAAAA,UAAU,CAACoG,YAAX,CAAwBpB,gBAAxB,CAAyChH,eAAe,CAACsK,IAAzD,EAA+DD,WAA/D;AACD,OAPD,MAOO;AACL5G,QAAAA,UAAU,CAAC0G,YAAD,EAAe,KAAK3I,KAAL,CAAWyE,QAAX,KAAwBpG,OAAxB,IAAmC,KAAK2B,KAAL,CAAWyE,QAAX,KAAwBlG,KAA3D,GAAmE,GAAnE,GAAyE,GAAxF,CAAV;AACD;AACF;;;WAED,0BAAiB;AAAA;;AACf,yBAAiC,KAAK+B,KAAtC;AAAA,UAAQ8B,SAAR,gBAAQA,SAAR;AAAA,UAAmB7B,SAAnB,gBAAmBA,SAAnB;AAEA,UAAMwG,cAAc,GAAG,KAAKtG,WAAL,CAAiB2B,SAAjB,CAAvB;AACA,UAAM2G,cAAc,GAAG,KAAKtI,WAAL,CAAiBF,SAAjB,CAAvB;;AAEA,UAAInB,MAAM,IAAI,CAAC2H,cAAX,IAA6B,CAACgC,cAAlC,EAAkD;AAChD,eAAO5J,IAAI,yCAAkCiD,SAAlC,4BAA6D7B,SAA7D,EAAX;AACD;;AAED,UAAMyI,UAAU,GAAG,CAAC,CAACjC,cAAF,IAAoBA,cAAc,CAACjG,IAAf,KAAwBhC,SAAS,CAACiC,IAAzE;AACA,UAAMkI,UAAU,GAAG,CAAC,CAAClC,cAAF,IAAoBA,cAAc,CAACjG,IAAf,KAAwBhC,SAAS,CAACyC,IAAzE;AAEA,UAAM2H,UAAU,GAAG,CAAC,CAACH,cAAF,IAAoBA,cAAc,CAACjI,IAAf,KAAwBhC,SAAS,CAACiC,IAAzE;AACA,UAAMoI,UAAU,GAAG,CAAC,CAACJ,cAAF,IAAoBA,cAAc,CAACjI,IAAf,KAAwBhC,SAAS,CAACyC,IAAzE,CAde,CAgBf;;AACA,UAAIwF,cAAc,KAAKoC,UAAU,IAAIF,UAAU,IAAIC,UAAjC,CAAlB,EAAgE;AAC9D,aAAKhI,oBAAL,CAA0B6F,cAA1B,EAA0C,YAAM;AAC9C,UAAA,MAAI,CAAC7E,iBAAL,IAA0B,CAA1B;;AACA,UAAA,MAAI,CAAChB,oBAAL,CAA0B6H,cAA1B,EAA0C,MAAI,CAAC7B,wBAA/C;;AACA,UAAA,MAAI,CAACxG,gBAAL,CAAsBqI,cAAtB,EAAsCA,cAAc,CAACpI,UAArD;AACD,SAJD;AAMA,eAAO,KAAKD,gBAAL,CAAsBqG,cAAtB,EAAsC,GAAtC,CAAP;AACD;;AAED,UAAIA,cAAc,IAAImC,UAAtB,EAAkC;AAChC,aAAKhH,iBAAL,IAA0B,CAA1B;AACA,aAAKhB,oBAAL,CAA0B6F,cAA1B,EAA0C,KAAKG,wBAA/C;;AAEA,YAAI8B,UAAU,IAAIjC,cAAc,CAACpG,UAAf,IAA6BoI,cAAc,CAAC5C,cAA1D,IAA4E,CAAC,KAAK7F,KAAL,CAAWwC,MAA5F,EAAoG;AAClG,eAAKpC,gBAAL,CAAsBqG,cAAtB,EAAsCgC,cAAc,CAAC5C,cAAf,GAAgC,EAAtE;AACD,SAFD,MAEO;AACL,eAAKzF,gBAAL,CAAsBqG,cAAtB,EAAsC,GAAtC;AACD;AACF;;AAED,WAAK7E,iBAAL,IAA0B,CAA1B;AACA,WAAKhB,oBAAL,CAA0B6H,cAA1B,EAA0C,KAAK7B,wBAA/C;AACA,WAAKxG,gBAAL,CAAsBqI,cAAtB,EAAsCA,cAAc,CAACpI,UAArD;AACD;;;;AA0BD;AACF;AACA;AACA;AACA;AACA;AACE,8BAAiBH,UAAjB,EAA+C4I,OAA/C,EAAgE;AAC9D,UAAMC,OAAO,kCAA2B7I,UAAU,CAACqC,EAAtC,CAAb;AAEAyG,MAAAA,oBAAoB,CAAC,KAAK3F,QAAL,CAAc0F,OAAd,CAAD,CAApB;AAEA,WAAK1F,QAAL,CAAc0F,OAAd,IAAyBlI,qBAAqB,CAAC,YAAM;AACnDjD,QAAAA,iBAAiB,CAACsC,UAAU,CAACoG,YAAZ,2BAA4CwC,OAA5C,WAAjB;;AAEA,YAAI5I,UAAU,CAACM,IAAX,KAAoBhC,SAAS,CAACiC,IAA9B,IAAsCP,UAAU,CAAC+I,aAArD,EAAoE;AAClE,cAAMC,YAAY,GAAGhJ,UAAU,CAAC+I,aAAX,CAAyB1D,YAA9C;AACA,cAAM4D,MAAM,GAAGjJ,UAAU,CAACoG,YAAX,CAAwBf,YAAxB,IAAwCuD,OAAO,GAAG,GAAlD,CAAf;AAEAlL,UAAAA,iBAAiB,CAACsC,UAAU,CAAC+I,aAAZ,4BAA8CC,YAA9C,mBAAmEC,MAAM,GAAGD,YAA5E,QAAjB;AACD;AACF,OAT6C,CAA9C;AAUD;AAED;;;;WACA,wBAAehJ,UAAf,EAA0E;AAAA;;AAAA,UAA7BkJ,YAA6B,uEAAN,IAAM;;AACxE,UAAIA,YAAY,KAAK,IAAjB,IAAyB,KAAKpJ,KAAL,CAAWiC,OAAX,CAAmB,CAAnB,MAA0B/B,UAAU,CAACqC,EAAlE,EAAsE;AACpE;AACD;;AAEDyG,MAAAA,oBAAoB,CAAC,KAAKK,kBAAN,CAApB;AACA,WAAKA,kBAAL,GAA0BxI,qBAAqB,CAAC,YAAM;AACpD,YAAI,MAAI,CAAC8B,cAAL,CAAoBuE,OAAxB,EAAiC;AAC/B,cAAQ7G,UAAR,GAA0CH,UAA1C,CAAQG,UAAR;AAAA,cAAoBuH,iBAApB,GAA0C1H,UAA1C,CAAoB0H,iBAApB;AAEA,cAAM0B,OAAO,GAAGF,YAAY,KAAK,IAAjB,GAAwB,IAAI,CAACxB,iBAAiB,GAAGvH,UAArB,KAAoC,MAAMA,UAA1C,CAAJ,IAA6D,CAArF,GAAyF+I,YAAzG;AACA,UAAA,MAAI,CAACzG,cAAL,CAAoBuE,OAApB,CAA4BqC,KAA5B,CAAkCD,OAAlC,GAA4ChK,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYD,IAAI,CAACE,GAAL,CAAS,GAAT,EAAc8J,OAAd,CAAZ,EAAoCE,QAApC,EAA5C;AACD;AACF,OAP8C,CAA/C;AAQD;AAED;AACF;AACA;;;;WAqBE,kBAAS;AAAA;;AACP,yBAAuG,KAAKxJ,KAA5G;AAAA,UAAQ8B,SAAR,gBAAQA,SAAR;AAAA,UAAmB/B,WAAnB,gBAAmBA,WAAnB;AAAA,UAAgCE,SAAhC,gBAAgCA,SAAhC;AAAA,UAA2C8B,aAA3C,gBAA2CA,aAA3C;AAAA,UAA0DC,QAA1D,gBAA0DA,QAA1D;AAAA,UAAoEK,SAApE,gBAAoEA,SAApE;AAAA,UAA+EK,QAA/E,gBAA+EA,QAA/E;AAAA,UAAyF/B,SAAzF,gBAAyFA,SAAzF;;AAEA,UAAI,CAACZ,WAAD,IAAgB,CAAC+B,SAAjB,IAA8B,CAAC7B,SAA/B,IAA4C,CAAC+B,QAAjD,EAA2D;AACzD,eAAO,IAAP;AACD;;AAED,aACE,oBAAC,gBAAD,CAAkB,QAAlB;AAA2B,QAAA,KAAK,EAAE;AAAlC,SACE,oBAAC,gBAAD,CAAkB,QAAlB;AAA2B,QAAA,KAAK,EAAE,KAAKa;AAAvC,SACE,oBAAC,KAAD;AACE,QAAA,SAAS,EAAElF,UAAU,CAACD,YAAY,CAAC,WAAD,EAAc,KAAKgC,KAAL,CAAWyE,QAAzB,CAAb,EAAiD;AACpE,+BAAqB,KAAKzE,KAAL,CAAW+J,cAAX,CAA0BC,WAA1B,KAA0CnL,WAAW,CAACoL,MADP;AAEpE,gCAAsBtH,SAF8C;AAGpE,kCAAwB1B;AAH4C,SAAjD,CADvB;AAME,QAAA,MAAM,EAAE,KAAKiJ,WANf;AAOE,QAAA,KAAK,EAAE,KAAKC,UAPd;AAQE,QAAA,QAAQ,EAAE,KAAKC;AARjB,SAUE;AACE,QAAA,SAAS,EAAC,iBADZ;AAEE,QAAA,OAAO,EAAE,KAAK3G,uBAFhB;AAGE,QAAA,GAAG,EAAE,KAAKR;AAHZ,QAVF,EAeE;AAAK,QAAA,SAAS,EAAC,qBAAf;AAAqC,QAAA,GAAG,EAAE,KAAKsE;AAA/C,SACG,KAAKtD,SAAL,GAAiBoG,GAAjB,CAAqB,UAACjG,KAAD,EAAW;AAC/B,YAAMxD,OAAO,GAAG3B,QAAQ,CAACmF,KAAK,CAACpE,KAAP,EAAcb,IAAd,CAAxB;;AACA,YAAI,CAACkD,aAAa,CAACyC,QAAd,CAAuBlE,OAAvB,CAAL,EAAsC;AACpC,iBAAO,IAAP;AACD;;AACD,YAAMJ,UAAU,qBAAQ,MAAI,CAACC,WAAL,CAAiBG,OAAjB,CAAR,CAAhB;;AAEA,YAAM0J,MAAM,GAAG9J,UAAU,CAACM,IAAX,KAAoBhC,SAAS,CAACiC,IAA7C;AACA,YAAMwJ,GAAG,mBAAY3J,OAAZ,CAAT;AAEA,eACE;AACE,UAAA,GAAG,EAAE2J,GADP;AAEE,UAAA,GAAG,EAAE,aAAClJ,CAAD;AAAA,mBAAO,MAAI,CAACZ,WAAL,CAAiBG,OAAjB,EAA0BkG,YAA1B,GAAyCzF,CAAhD;AAAA,WAFP;AAGE,UAAA,SAAS,EAAEpD,UAAU,CAAC,kBAAD,EAAqB;AACxC,wCAA4B2C,OAAO,KAAKP,WADA;AAExC,sCAA0BO,OAAO,KAAKwB,SAFE;AAGxC,sCAA0BxB,OAAO,KAAKL,SAHE;AAKxC,0CAA8ByC,QALU;AAOxC,4CAAgCsH,MAAM,IAAI9J,UAAU,CAACuF,UAPb;AAQxC,0CAA8BuE,MAAM,IAAI9J,UAAU,CAAC0F,QARX;AASxC,2CAA+BoE,MAAM,IAAI9J,UAAU,CAACyF;AATZ,WAArB;AAHvB,WAcE7B,KAdF,CADF;AAiBD,OA3BA,CADH,CAfF,CADF,CADF,CADF;AAoDD;;;;EArwBmCvG,KAAK,CAAC2M,S;;AAwwB5C,OAAO,IAAMC,cAAc,GAAG/L,WAAW,CAACD,YAAY,CAACO,OAAO,CAAiBe,uBAAjB,CAAR,CAAb,EAAiEnB,qBAAjE,EAAwF,gBAAxF,CAAlC","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 './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\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, startT, 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.touchStartTime = startT;\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, startT } = event;\n const target = originalEvent.target as HTMLElement;\n if (modalState.innerElement.contains(target)) {\n if (!this.state.touchDown) {\n modalState.touchStartTime = startT;\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(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 / (Date.now() - modalState.touchStartTime.getTime()) * 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(modalState: ModalsStateEntry) {\n let setStateCallback;\n\n if (this.state.dragging) {\n let translateY = modalState.translateYCurrent;\n\n const expectTranslateY = translateY / (Date.now() - modalState.touchStartTime.getTime()) * 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.props.platform === ANDROID || this.props.platform === VKCOM ? 320 : 400);\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 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 }\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 <div\n key={key}\n ref={(e) => this.modalsState[modalId].modalElement = e}\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 >{Modal}</div>\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"}
|
|
@@ -6,7 +6,7 @@ import { createScopedElement } from "../../lib/jsxRuntime";
|
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import { getClassName } from "../../helpers/getClassName";
|
|
8
8
|
import { classNames } from "../../lib/classNames";
|
|
9
|
-
import Touch from "../Touch/Touch";
|
|
9
|
+
import { Touch } from "../Touch/Touch";
|
|
10
10
|
import { TooltipContainer } from "../Tooltip/TooltipContainer";
|
|
11
11
|
import { withAdaptivity } from "../../hoc/withAdaptivity";
|
|
12
12
|
import { PanelContext } from "./PanelContext";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/Panel/Panel.tsx"],"names":["React","getClassName","classNames","Touch","TooltipContainer","withAdaptivity","PanelContext","IOS","usePlatform","getNavId","useExternRef","warnOnce","warn","PanelComponent","props","centered","children","getRootRef","sizeX","nav","restProps","platform","containerRef","navId","childContext","useMemo","panel","getPanelNode","current","displayName","defaultProps","Panel"],"mappings":";;;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,YAAT;AACA,SAASC,UAAT;AACA,
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Panel/Panel.tsx"],"names":["React","getClassName","classNames","Touch","TooltipContainer","withAdaptivity","PanelContext","IOS","usePlatform","getNavId","useExternRef","warnOnce","warn","PanelComponent","props","centered","children","getRootRef","sizeX","nav","restProps","platform","containerRef","navId","childContext","useMemo","panel","getPanelNode","current","displayName","defaultProps","Panel"],"mappings":";;;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,YAAT;AACA,SAASC,UAAT;AACA,SAASC,KAAT;AACA,SAASC,gBAAT;AAEA,SAASC,cAAT;AACA,SAASC,YAAT;AACA,SAASC,GAAT;AACA,SAASC,WAAT;AACA,SAASC,QAAT;AACA,SAASC,YAAT;AACA,SAASC,QAAT;AAQA,IAAMC,IAAI,GAAGD,QAAQ,CAAC,OAAD,CAArB;;AACA,IAAME,cAAoC,GAAG,SAAvCA,cAAuC,CAACC,KAAD,EAAuB;AAClE,MAAQC,QAAR,GAAqED,KAArE,CAAQC,QAAR;AAAA,MAAkBC,QAAlB,GAAqEF,KAArE,CAAkBE,QAAlB;AAAA,MAA4BC,UAA5B,GAAqEH,KAArE,CAA4BG,UAA5B;AAAA,MAAwCC,KAAxC,GAAqEJ,KAArE,CAAwCI,KAAxC;AAAA,MAA+CC,GAA/C,GAAqEL,KAArE,CAA+CK,GAA/C;AAAA,MAAuDC,SAAvD,4BAAqEN,KAArE;;AAEA,MAAMO,QAAQ,GAAGb,WAAW,EAA5B;AACA,MAAMc,YAAY,GAAGZ,YAAY,CAACO,UAAD,CAAjC;AAEA,MAAMM,KAAK,GAAGd,QAAQ,CAACK,KAAD,EAAQF,IAAR,CAAtB;AAEA,MAAMY,YAAY,GAAGxB,KAAK,CAACyB,OAAN,CAAiC,YAAM;AAC1D,WAAO;AACLC,MAAAA,KAAK,EAAEH,KADF;AAELI,MAAAA,YAAY,EAAE;AAAA,eAAML,YAAY,CAACM,OAAnB;AAAA;AAFT,KAAP;AAID,GALoB,EAKlB,CAACL,KAAD,CALkB,CAArB;AAOA,SACE,oBAAC,YAAD,CAAc,QAAd;AAAuB,IAAA,KAAK,EAAEC;AAA9B,KACE,wCACMJ,SADN;AAEE,IAAA,GAAG,EAAEE,YAFP;AAGE,IAAA,SAAS,EAAEpB,UAAU,CAACD,YAAY,CAAC,OAAD,EAAUoB,QAAV,CAAb,mBAA4CH,KAA5C;AACnB,yBAAmBH;AADA,8BAEFG,KAFE,GAEQ,IAFR;AAHvB,MAQE,oBAAC,KAAD;AAAO,IAAA,SAAS,EAAEd,gBAAlB;AAAoC,IAAA,SAAS,EAAC;AAA9C,KACGiB,QAAQ,KAAKd,GAAb,IAAoB;AAAK,IAAA,SAAS,EAAC;AAAf,IADvB,EAEE;AAAK,IAAA,SAAS,EAAC;AAAf,IAFF,EAGGQ,QAAQ,GAAG;AAAK,IAAA,SAAS,EAAC;AAAf,KAAkCC,QAAlC,CAAH,GAAuDA,QAHlE,EAIE;AAAK,IAAA,SAAS,EAAC;AAAf,IAJF,CARF,CADF,CADF;AAmBD,CAlCD;;AAoCAH,cAAc,CAACgB,WAAf,GAA6B,OAA7B;AAEAhB,cAAc,CAACiB,YAAf,GAA8B;AAC5Bd,EAAAA,QAAQ,EAAE,EADkB;AAE5BD,EAAAA,QAAQ,EAAE;AAFkB,CAA9B;AAKA,OAAO,IAAMgB,KAAK,GAAG1B,cAAc,CAACQ,cAAD,EAAiB;AAClDK,EAAAA,KAAK,EAAE;AAD2C,CAAjB,CAA5B","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport { classNames } from '../../lib/classNames';\nimport { Touch } from '../Touch/Touch';\nimport { TooltipContainer } from '../Tooltip/TooltipContainer';\nimport { HasRootRef } from '../../types';\nimport { withAdaptivity, AdaptivityProps } from '../../hoc/withAdaptivity';\nimport { PanelContext, PanelContextProps } from './PanelContext';\nimport { IOS } from '../../lib/platform';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { warnOnce } from '../../lib/warnOnce';\nimport './Panel.css';\n\nexport interface PanelProps extends React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement>, AdaptivityProps, NavIdProps {\n centered?: boolean;\n}\n\nconst warn = warnOnce('Panel');\nconst PanelComponent: React.FC<PanelProps> = (props: PanelProps) => {\n const { centered, children, getRootRef, sizeX, nav, ...restProps } = props;\n\n const platform = usePlatform();\n const containerRef = useExternRef(getRootRef);\n\n const navId = getNavId(props, warn);\n\n const childContext = React.useMemo<PanelContextProps>(() => {\n return {\n panel: navId,\n getPanelNode: () => containerRef.current,\n };\n }, [navId]);\n\n return (\n <PanelContext.Provider value={childContext}>\n <div\n {...restProps}\n ref={containerRef}\n vkuiClass={classNames(getClassName('Panel', platform), `Panel--${sizeX}`, {\n 'Panel--centered': centered,\n [`Panel--sizeX-${sizeX}`]: true,\n })}\n >\n <Touch Component={TooltipContainer} vkuiClass=\"Panel__in\">\n {platform === IOS && <div vkuiClass=\"Panel__fade\" />}\n <div vkuiClass=\"Panel__in-before\" />\n {centered ? <div vkuiClass=\"Panel__centered\">{children}</div> : children}\n <div vkuiClass=\"Panel__in-after\" />\n </Touch>\n </div>\n </PanelContext.Provider>\n );\n};\n\nPanelComponent.displayName = 'Panel';\n\nPanelComponent.defaultProps = {\n children: '',\n centered: false,\n};\n\nexport const Panel = withAdaptivity(PanelComponent, {\n sizeX: true,\n});\n"],"file":"Panel.js"}
|
|
@@ -46,7 +46,6 @@ var PanelHeaderContent = function PanelHeaderContent(_ref) {
|
|
|
46
46
|
}, status), createScopedElement("div", {
|
|
47
47
|
vkuiClass: "PanelHeaderContent__children"
|
|
48
48
|
}, hasReactNode(status) ? createScopedElement(Headline, {
|
|
49
|
-
vkuiClass: "PanelHeaderContent__children-in",
|
|
50
49
|
Component: "span",
|
|
51
50
|
weight: "medium"
|
|
52
51
|
}, children) : createScopedElement("span", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/PanelHeaderContent/PanelHeaderContent.tsx"],"names":["getClassName","Tappable","usePlatform","hasReactNode","Caption","Headline","IOS","PanelHeaderContent","className","style","aside","status","before","children","onClick","restProps","InComponent","rootProps","platform","inProps","activeEffectDelay","hasActive","activeMode","baseClassNames"],"mappings":";;;;;AACA,SAASA,YAAT;AACA,OAAOC,QAAP;AACA,SAASC,WAAT;AACA,SAASC,YAAT;AACA,OAAOC,OAAP;AACA,OAAOC,QAAP;AACA,SAASC,GAAT;;AASA,IAAMC,kBAAoE,GAAG,SAAvEA,kBAAuE,OAS9C;AAAA,MAR7BC,SAQ6B,QAR7BA,SAQ6B;AAAA,MAP7BC,KAO6B,QAP7BA,KAO6B;AAAA,MAN7BC,KAM6B,QAN7BA,KAM6B;AAAA,MAL7BC,MAK6B,QAL7BA,MAK6B;AAAA,MAJ7BC,MAI6B,QAJ7BA,MAI6B;AAAA,MAH7BC,QAG6B,QAH7BA,QAG6B;AAAA,MAF7BC,OAE6B,QAF7BA,OAE6B;AAAA,MAD1BC,SAC0B;;AAC7B,MAAMC,WAAW,GAAGF,OAAO,GAAGb,QAAH,GAAc,KAAzC;AACA,MAAMgB,SAAS,GAAGH,OAAO,GAAG,EAAH,GAAQC,SAAjC;AACA,MAAMG,QAAQ,GAAGhB,WAAW,EAA5B;AACA,MAAMiB,OAAO,GAAGL,OAAO,mCAClBC,SADkB;AAErBD,IAAAA,OAAO,EAAPA,OAFqB;AAGrBM,IAAAA,iBAAiB,EAAE,GAHE;AAIrBC,IAAAA,SAAS,EAAEH,QAAQ,KAAKZ,GAJH;AAKrBgB,IAAAA,UAAU,EAAE;AALS,OAMnB,EANJ;AAOA,MAAMC,cAAc,GAAGvB,YAAY,CAAC,oBAAD,EAAuBkB,QAAvB,CAAnC;AAEA,SACE,wCAASD,SAAT;AAAoB,IAAA,SAAS,EAAEM,cAA/B;AAA+C,IAAA,KAAK,EAAEd,KAAtD;AAA6D,IAAA,SAAS,EAAED;AAAxE,MACGL,YAAY,CAACS,MAAD,CAAZ,IAAwB;AAAK,IAAA,SAAS,EAAC;AAAf,KAA6CA,MAA7C,CAD3B,EAEE,oBAAC,WAAD,eACMO,OADN;AAEE,IAAA,SAAS,EAAC;AAFZ,MAIGhB,YAAY,CAACQ,MAAD,CAAZ,IACC,oBAAC,OAAD;AAAS,IAAA,KAAK,EAAC,GAAf;AAAmB,IAAA,MAAM,EAAC,SAA1B;AAAoC,IAAA,SAAS,EAAC;AAA9C,KACGA,MADH,CALJ,EASE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGR,YAAY,CAACQ,MAAD,CAAZ,
|
|
1
|
+
{"version":3,"sources":["../../../src/components/PanelHeaderContent/PanelHeaderContent.tsx"],"names":["getClassName","Tappable","usePlatform","hasReactNode","Caption","Headline","IOS","PanelHeaderContent","className","style","aside","status","before","children","onClick","restProps","InComponent","rootProps","platform","inProps","activeEffectDelay","hasActive","activeMode","baseClassNames"],"mappings":";;;;;AACA,SAASA,YAAT;AACA,OAAOC,QAAP;AACA,SAASC,WAAT;AACA,SAASC,YAAT;AACA,OAAOC,OAAP;AACA,OAAOC,QAAP;AACA,SAASC,GAAT;;AASA,IAAMC,kBAAoE,GAAG,SAAvEA,kBAAuE,OAS9C;AAAA,MAR7BC,SAQ6B,QAR7BA,SAQ6B;AAAA,MAP7BC,KAO6B,QAP7BA,KAO6B;AAAA,MAN7BC,KAM6B,QAN7BA,KAM6B;AAAA,MAL7BC,MAK6B,QAL7BA,MAK6B;AAAA,MAJ7BC,MAI6B,QAJ7BA,MAI6B;AAAA,MAH7BC,QAG6B,QAH7BA,QAG6B;AAAA,MAF7BC,OAE6B,QAF7BA,OAE6B;AAAA,MAD1BC,SAC0B;;AAC7B,MAAMC,WAAW,GAAGF,OAAO,GAAGb,QAAH,GAAc,KAAzC;AACA,MAAMgB,SAAS,GAAGH,OAAO,GAAG,EAAH,GAAQC,SAAjC;AACA,MAAMG,QAAQ,GAAGhB,WAAW,EAA5B;AACA,MAAMiB,OAAO,GAAGL,OAAO,mCAClBC,SADkB;AAErBD,IAAAA,OAAO,EAAPA,OAFqB;AAGrBM,IAAAA,iBAAiB,EAAE,GAHE;AAIrBC,IAAAA,SAAS,EAAEH,QAAQ,KAAKZ,GAJH;AAKrBgB,IAAAA,UAAU,EAAE;AALS,OAMnB,EANJ;AAOA,MAAMC,cAAc,GAAGvB,YAAY,CAAC,oBAAD,EAAuBkB,QAAvB,CAAnC;AAEA,SACE,wCAASD,SAAT;AAAoB,IAAA,SAAS,EAAEM,cAA/B;AAA+C,IAAA,KAAK,EAAEd,KAAtD;AAA6D,IAAA,SAAS,EAAED;AAAxE,MACGL,YAAY,CAACS,MAAD,CAAZ,IAAwB;AAAK,IAAA,SAAS,EAAC;AAAf,KAA6CA,MAA7C,CAD3B,EAEE,oBAAC,WAAD,eACMO,OADN;AAEE,IAAA,SAAS,EAAC;AAFZ,MAIGhB,YAAY,CAACQ,MAAD,CAAZ,IACC,oBAAC,OAAD;AAAS,IAAA,KAAK,EAAC,GAAf;AAAmB,IAAA,MAAM,EAAC,SAA1B;AAAoC,IAAA,SAAS,EAAC;AAA9C,KACGA,MADH,CALJ,EASE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGR,YAAY,CAACQ,MAAD,CAAZ,GACC,oBAAC,QAAD;AAAU,IAAA,SAAS,EAAC,MAApB;AAA2B,IAAA,MAAM,EAAC;AAAlC,KACGE,QADH,CADD,GAIG;AAAM,IAAA,SAAS,EAAC;AAAhB,KAAmDA,QAAnD,CALN,EAOGV,YAAY,CAACO,KAAD,CAAZ,IAAuB;AAAK,IAAA,SAAS,EAAC;AAAf,KAA4CA,KAA5C,CAP1B,CATF,EAkBGP,YAAY,CAACS,MAAD,CAAZ,IAAwB;AAAK,IAAA,SAAS,EAAC;AAAf,IAlB3B,CAFF,CADF;AAyBD,CA/CD;;AAiDA,eAAeL,kBAAf","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport Tappable from '../Tappable/Tappable';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { hasReactNode } from '../../lib/utils';\nimport Caption from '../Typography/Caption/Caption';\nimport Headline from '../Typography/Headline/Headline';\nimport { IOS } from '../../lib/platform';\nimport './PanelHeaderContent.css';\n\nexport interface PanelHeaderContentProps extends React.HTMLAttributes<HTMLDivElement> {\n aside?: React.ReactNode;\n before?: React.ReactNode;\n status?: React.ReactNode;\n}\n\nconst PanelHeaderContent: React.FunctionComponent<PanelHeaderContentProps> = ({\n className,\n style,\n aside,\n status,\n before,\n children,\n onClick,\n ...restProps\n}: PanelHeaderContentProps) => {\n const InComponent = onClick ? Tappable : 'div';\n const rootProps = onClick ? {} : restProps;\n const platform = usePlatform();\n const inProps = onClick ? {\n ...restProps,\n onClick,\n activeEffectDelay: 200,\n hasActive: platform === IOS,\n activeMode: 'opacity',\n } : {};\n const baseClassNames = getClassName('PanelHeaderContent', platform);\n\n return (\n <div {...rootProps} vkuiClass={baseClassNames} style={style} className={className}>\n {hasReactNode(before) && <div vkuiClass=\"PanelHeaderContent__before\">{before}</div>}\n <InComponent\n {...inProps}\n vkuiClass=\"PanelHeaderContent__in\"\n >\n {hasReactNode(status) &&\n <Caption level=\"1\" weight=\"regular\" vkuiClass=\"PanelHeaderContent__status\">\n {status}\n </Caption>\n }\n <div vkuiClass=\"PanelHeaderContent__children\">\n {hasReactNode(status) ?\n <Headline Component=\"span\" weight=\"medium\">\n {children}\n </Headline>\n : <span vkuiClass=\"PanelHeaderContent__children-in\">{children}</span>\n }\n {hasReactNode(aside) && <div vkuiClass=\"PanelHeaderContent__aside\">{aside}</div>}\n </div>\n {hasReactNode(before) && <div vkuiClass=\"PanelHeaderContent__width\" />}\n </InComponent>\n </div>\n );\n};\n\nexport default PanelHeaderContent;\n"],"file":"PanelHeaderContent.js"}
|
|
@@ -9,7 +9,7 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
|
9
9
|
var _excluded = ["children", "onRefresh", "isFetching", "platform", "window", "document", "scroll"];
|
|
10
10
|
import { createScopedElement } from "../../lib/jsxRuntime";
|
|
11
11
|
import * as React from 'react';
|
|
12
|
-
import Touch from "../Touch/Touch";
|
|
12
|
+
import { Touch } from "../Touch/Touch";
|
|
13
13
|
import TouchRootContext from "../Touch/TouchContext";
|
|
14
14
|
import FixedLayout from "../FixedLayout/FixedLayout";
|
|
15
15
|
import { classNames } from "../../lib/classNames";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/PullToRefresh/PullToRefresh.tsx"],"names":["React","Touch","TouchRootContext","FixedLayout","classNames","IOS","ANDROID","VKCOM","getClassName","PullToRefreshSpinner","withPlatform","canUseDOM","withDOM","runTapticImpactOccurred","withContext","ScrollContext","cancelEvent","event","originalEvent","preventDefault","cancelable","stopPropagation","PullToRefresh","props","e","state","refreshing","setState","touchDown","isY","shiftY","params","start","max","pageYOffset","scroll","getScroll","y","watching","positionMultiplier","shift","Math","touchY","currentY","min","maxY","progress","abs","spinnerY","spinnerProgress","canRefresh","contentShift","platform","runRefreshing","refreshingFinished","resetRefreshingState","contentRef","createRef","document","addEventListener","onWindowTouchMove","passive","removeEventListener","prevProps","isFetching","onRefreshingFinish","onRefresh","children","window","restProps","spinnerTransform","contentTransform","onTouchStart","onTouchMove","onTouchEnd","transform","WebkitTransform","opacity","PureComponent"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport Touch, { TouchProps, TouchEvent } from '../Touch/Touch';\nimport TouchRootContext from '../Touch/TouchContext';\nimport FixedLayout from '../FixedLayout/FixedLayout';\nimport { classNames } from '../../lib/classNames';\nimport { IOS, ANDROID, VKCOM } from '../../lib/platform';\nimport { getClassName } from '../../helpers/getClassName';\nimport PullToRefreshSpinner from './PullToRefreshSpinner';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { AnyFunction, HasPlatform } from '../../types';\nimport { canUseDOM, DOMProps, withDOM } from '../../lib/dom';\nimport { runTapticImpactOccurred } from '../../lib/taptic';\nimport { withContext } from '../../hoc/withContext';\nimport { ScrollContext, ScrollContextInterface } from '../AppRoot/ScrollContext';\nimport './PullToRefresh.css';\n\nexport interface PullToRefreshProps extends TouchProps, HasPlatform {\n /**\n * Будет вызвана для обновления контента\n */\n onRefresh: AnyFunction;\n /**\n * Определяет, выполняется ли обновление. Для скрытия спиннера после получения контента необходимо передать `false`\n */\n isFetching?: boolean;\n /** @ignore */\n scroll?: ScrollContextInterface;\n}\n\nexport interface PullToRefreshState {\n watching: boolean;\n refreshing: boolean;\n canRefresh: boolean;\n\n touchDown: boolean;\n refreshingFinished: boolean;\n\n touchY: number;\n spinnerY: PullToRefreshParams['start'];\n spinnerProgress: number;\n contentShift: number;\n}\n\nexport interface PullToRefreshParams {\n start: number;\n max: number;\n maxY: number;\n refreshing: number;\n positionMultiplier: number;\n}\n\nexport type TouchEventHandler = (event: TouchEvent) => void;\n\nfunction cancelEvent(event: any) {\n if (!event) {\n return false;\n }\n while (event.originalEvent) {\n event = event.originalEvent;\n }\n if (event.preventDefault && event.cancelable) {\n event.preventDefault();\n }\n if (event.stopPropagation) {\n event.stopPropagation();\n }\n return false;\n}\n\nclass PullToRefresh extends React.PureComponent<PullToRefreshProps & DOMProps, PullToRefreshState> {\n constructor(props: PullToRefreshProps) {\n super(props);\n\n this.params = {\n start: props.platform === ANDROID || props.platform === VKCOM ? -45 : -10,\n max: props.platform === ANDROID || props.platform === VKCOM ? 80 : 50,\n maxY: props.platform === ANDROID || props.platform === VKCOM ? 80 : 400,\n refreshing: props.platform === ANDROID || props.platform === VKCOM ? 50 : 36,\n\n positionMultiplier: props.platform === ANDROID || props.platform === VKCOM ? 1 : 0.21,\n };\n\n this.state = {\n watching: false,\n refreshing: false,\n canRefresh: false,\n\n touchDown: false,\n refreshingFinished: false,\n\n touchY: 0,\n spinnerY: this.params.start,\n spinnerProgress: 0,\n contentShift: 0,\n };\n\n this.contentRef = React.createRef();\n }\n\n params: PullToRefreshParams;\n\n contentRef: React.RefObject<HTMLDivElement>;\n\n get document() {\n return this.props.document;\n }\n\n componentDidMount() {\n if (canUseDOM) {\n this.document.addEventListener('touchmove', this.onWindowTouchMove, {\n // @ts-ignore\n cancelable: true,\n passive: false,\n });\n }\n }\n\n componentWillUnmount() {\n // Здесь нужен последний аргумент с такими же параметрами, потому что\n // некоторые браузеры на странных вендорах типа Meizu не удаляют обработчик.\n // https://github.com/VKCOM/VKUI/issues/444\n if (canUseDOM) {\n this.document.removeEventListener('touchmove', this.onWindowTouchMove, {\n // @ts-ignore\n cancelable: true,\n passive: false,\n });\n }\n }\n\n componentDidUpdate(prevProps: PullToRefreshProps) {\n if (prevProps.isFetching && !this.props.isFetching) {\n this.onRefreshingFinish();\n }\n }\n\n onTouchStart: TouchEventHandler = (e: TouchEvent) => {\n if (this.state.refreshing) {\n cancelEvent(e);\n }\n this.setState({ touchDown: true });\n };\n\n onWindowTouchMove: EventListener = (event: Event) => {\n if (this.state.refreshing) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n onTouchMove: TouchEventHandler = (e: TouchEvent) => {\n const { isY, shiftY } = e;\n const { start, max } = this.params;\n const pageYOffset = this.props.scroll.getScroll().y;\n\n const { refreshing, watching, touchDown } = this.state;\n\n if (watching && touchDown) {\n cancelEvent(e);\n\n const { positionMultiplier } = this.params;\n\n const shift = Math.max(0, shiftY - this.state.touchY);\n\n const currentY = Math.max(start, Math.min(this.params.maxY, start + shift * positionMultiplier));\n const progress = currentY > -10 ? Math.abs((currentY + 10) / max) * 80 : 0;\n\n this.setState({\n spinnerY: currentY,\n spinnerProgress: Math.min(80, Math.max(0, progress)),\n canRefresh: progress > 80,\n contentShift: (currentY + 10) * 2.3,\n });\n\n if (progress > 85 && !refreshing && this.props.platform === IOS) {\n this.runRefreshing();\n }\n } else if (isY && pageYOffset === 0 && shiftY > 0 && !refreshing && touchDown) {\n cancelEvent(e);\n\n this.setState({\n watching: true,\n touchY: shiftY,\n spinnerY: start,\n spinnerProgress: 0,\n });\n }\n };\n\n onTouchEnd: VoidFunction = () => {\n const { refreshing, canRefresh, refreshingFinished } = this.state;\n\n this.setState({\n watching: false,\n touchDown: false,\n }, () => {\n if (canRefresh && !refreshing) {\n this.runRefreshing();\n } else if (refreshing && refreshingFinished) {\n this.resetRefreshingState();\n } else {\n this.setState({\n spinnerY: refreshing ? this.params.refreshing : this.params.start,\n spinnerProgress: 0,\n contentShift: 0,\n });\n }\n });\n };\n\n runRefreshing() {\n if (!this.state.refreshing && this.props.onRefresh) {\n this.setState({\n refreshing: true,\n spinnerY: this.props.platform === ANDROID || this.props.platform === VKCOM ? this.params.refreshing : this.state.spinnerY,\n });\n\n this.props.onRefresh();\n runTapticImpactOccurred('light');\n }\n }\n\n onRefreshingFinish: VoidFunction = () => {\n this.setState({\n refreshingFinished: true,\n }, () => {\n !this.state.touchDown && this.resetRefreshingState();\n });\n };\n\n resetRefreshingState() {\n this.setState({\n watching: false,\n canRefresh: false,\n refreshing: false,\n refreshingFinished: false,\n spinnerY: this.params.start,\n spinnerProgress: 0,\n contentShift: 0,\n });\n }\n\n render() {\n const { children, onRefresh, isFetching, platform, window, document, scroll, ...restProps } = this.props;\n const { watching, refreshing, spinnerY, spinnerProgress, canRefresh, touchDown, contentShift } = this.state;\n\n const spinnerTransform = `translate3d(0, ${spinnerY}px, 0)`;\n let contentTransform = '';\n\n if (platform === IOS && refreshing && !touchDown) {\n contentTransform = 'translate3d(0, 100px, 0)';\n } else if (platform === IOS && (contentShift || refreshing)) {\n contentTransform = `translate3d(0, ${contentShift}px, 0)`;\n }\n\n return (\n <TouchRootContext.Provider value={true}>\n <Touch\n {...restProps}\n onStart={this.onTouchStart}\n onMove={this.onTouchMove}\n onEnd={this.onTouchEnd}\n vkuiClass={classNames(getClassName('PullToRefresh', platform), {\n 'PullToRefresh--watching': watching,\n 'PullToRefresh--refreshing': refreshing,\n })}\n >\n <FixedLayout vkuiClass=\"PullToRefresh__controls\">\n <PullToRefreshSpinner\n style={{\n transform: spinnerTransform,\n WebkitTransform: spinnerTransform,\n opacity: watching || refreshing || canRefresh ? 1 : 0,\n }}\n on={refreshing}\n progress={refreshing ? null : spinnerProgress}\n />\n </FixedLayout>\n\n <div\n vkuiClass=\"PullToRefresh__content\"\n ref={this.contentRef}\n style={{\n transform: contentTransform,\n WebkitTransform: contentTransform,\n }}\n >\n {children}\n </div>\n </Touch>\n </TouchRootContext.Provider>\n );\n }\n}\n\nexport default withContext(\n withPlatform(withDOM<PullToRefreshProps>(PullToRefresh)),\n ScrollContext, 'scroll');\n"],"file":"PullToRefresh.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/PullToRefresh/PullToRefresh.tsx"],"names":["React","Touch","TouchRootContext","FixedLayout","classNames","IOS","ANDROID","VKCOM","getClassName","PullToRefreshSpinner","withPlatform","canUseDOM","withDOM","runTapticImpactOccurred","withContext","ScrollContext","cancelEvent","event","originalEvent","preventDefault","cancelable","stopPropagation","PullToRefresh","props","e","state","refreshing","setState","touchDown","isY","shiftY","params","start","max","pageYOffset","scroll","getScroll","y","watching","positionMultiplier","shift","Math","touchY","currentY","min","maxY","progress","abs","spinnerY","spinnerProgress","canRefresh","contentShift","platform","runRefreshing","refreshingFinished","resetRefreshingState","contentRef","createRef","document","addEventListener","onWindowTouchMove","passive","removeEventListener","prevProps","isFetching","onRefreshingFinish","onRefresh","children","window","restProps","spinnerTransform","contentTransform","onTouchStart","onTouchMove","onTouchEnd","transform","WebkitTransform","opacity","PureComponent"],"mappings":";;;;;;;;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,KAAT;AACA,OAAOC,gBAAP;AACA,OAAOC,WAAP;AACA,SAASC,UAAT;AACA,SAASC,GAAT,EAAcC,OAAd,EAAuBC,KAAvB;AACA,SAASC,YAAT;AACA,OAAOC,oBAAP;AACA,SAASC,YAAT;AAEA,SAASC,SAAT,EAA8BC,OAA9B;AACA,SAASC,uBAAT;AACA,SAASC,WAAT;AACA,SAASC,aAAT;;AAwCA,SAASC,WAAT,CAAqBC,KAArB,EAAiC;AAC/B,MAAI,CAACA,KAAL,EAAY;AACV,WAAO,KAAP;AACD;;AACD,SAAOA,KAAK,CAACC,aAAb,EAA4B;AAC1BD,IAAAA,KAAK,GAAGA,KAAK,CAACC,aAAd;AACD;;AACD,MAAID,KAAK,CAACE,cAAN,IAAwBF,KAAK,CAACG,UAAlC,EAA8C;AAC5CH,IAAAA,KAAK,CAACE,cAAN;AACD;;AACD,MAAIF,KAAK,CAACI,eAAV,EAA2B;AACzBJ,IAAAA,KAAK,CAACI,eAAN;AACD;;AACD,SAAO,KAAP;AACD;;IAEKC,a;;;;;AACJ,yBAAYC,KAAZ,EAAuC;AAAA;;AAAA;;AACrC,8BAAMA,KAAN;;AADqC;;AAAA;;AAAA,mEAkEL,UAACC,CAAD,EAAmB;AACnD,UAAI,MAAKC,KAAL,CAAWC,UAAf,EAA2B;AACzBV,QAAAA,WAAW,CAACQ,CAAD,CAAX;AACD;;AACD,YAAKG,QAAL,CAAc;AAAEC,QAAAA,SAAS,EAAE;AAAb,OAAd;AACD,KAvEsC;;AAAA,wEAyEJ,UAACX,KAAD,EAAkB;AACnD,UAAI,MAAKQ,KAAL,CAAWC,UAAf,EAA2B;AACzBT,QAAAA,KAAK,CAACE,cAAN;AACAF,QAAAA,KAAK,CAACI,eAAN;AACD;AACF,KA9EsC;;AAAA,kEAgFN,UAACG,CAAD,EAAmB;AAClD,UAAQK,GAAR,GAAwBL,CAAxB,CAAQK,GAAR;AAAA,UAAaC,MAAb,GAAwBN,CAAxB,CAAaM,MAAb;AACA,yBAAuB,MAAKC,MAA5B;AAAA,UAAQC,KAAR,gBAAQA,KAAR;AAAA,UAAeC,GAAf,gBAAeA,GAAf;;AACA,UAAMC,WAAW,GAAG,MAAKX,KAAL,CAAWY,MAAX,CAAkBC,SAAlB,GAA8BC,CAAlD;;AAEA,wBAA4C,MAAKZ,KAAjD;AAAA,UAAQC,UAAR,eAAQA,UAAR;AAAA,UAAoBY,QAApB,eAAoBA,QAApB;AAAA,UAA8BV,SAA9B,eAA8BA,SAA9B;;AAEA,UAAIU,QAAQ,IAAIV,SAAhB,EAA2B;AACzBZ,QAAAA,WAAW,CAACQ,CAAD,CAAX;AAEA,YAAQe,kBAAR,GAA+B,MAAKR,MAApC,CAAQQ,kBAAR;AAEA,YAAMC,KAAK,GAAGC,IAAI,CAACR,GAAL,CAAS,CAAT,EAAYH,MAAM,GAAG,MAAKL,KAAL,CAAWiB,MAAhC,CAAd;AAEA,YAAMC,QAAQ,GAAGF,IAAI,CAACR,GAAL,CAASD,KAAT,EAAgBS,IAAI,CAACG,GAAL,CAAS,MAAKb,MAAL,CAAYc,IAArB,EAA2Bb,KAAK,GAAGQ,KAAK,GAAGD,kBAA3C,CAAhB,CAAjB;AACA,YAAMO,QAAQ,GAAGH,QAAQ,GAAG,CAAC,EAAZ,GAAiBF,IAAI,CAACM,GAAL,CAAS,CAACJ,QAAQ,GAAG,EAAZ,IAAkBV,GAA3B,IAAkC,EAAnD,GAAwD,CAAzE;;AAEA,cAAKN,QAAL,CAAc;AACZqB,UAAAA,QAAQ,EAAEL,QADE;AAEZM,UAAAA,eAAe,EAAER,IAAI,CAACG,GAAL,CAAS,EAAT,EAAaH,IAAI,CAACR,GAAL,CAAS,CAAT,EAAYa,QAAZ,CAAb,CAFL;AAGZI,UAAAA,UAAU,EAAEJ,QAAQ,GAAG,EAHX;AAIZK,UAAAA,YAAY,EAAE,CAACR,QAAQ,GAAG,EAAZ,IAAkB;AAJpB,SAAd;;AAOA,YAAIG,QAAQ,GAAG,EAAX,IAAiB,CAACpB,UAAlB,IAAgC,MAAKH,KAAL,CAAW6B,QAAX,KAAwB/C,GAA5D,EAAiE;AAC/D,gBAAKgD,aAAL;AACD;AACF,OApBD,MAoBO,IAAIxB,GAAG,IAAIK,WAAW,KAAK,CAAvB,IAA4BJ,MAAM,GAAG,CAArC,IAA0C,CAACJ,UAA3C,IAAyDE,SAA7D,EAAwE;AAC7EZ,QAAAA,WAAW,CAACQ,CAAD,CAAX;;AAEA,cAAKG,QAAL,CAAc;AACZW,UAAAA,QAAQ,EAAE,IADE;AAEZI,UAAAA,MAAM,EAAEZ,MAFI;AAGZkB,UAAAA,QAAQ,EAAEhB,KAHE;AAIZiB,UAAAA,eAAe,EAAE;AAJL,SAAd;AAMD;AACF,KArHsC;;AAAA,iEAuHZ,YAAM;AAC/B,yBAAuD,MAAKxB,KAA5D;AAAA,UAAQC,UAAR,gBAAQA,UAAR;AAAA,UAAoBwB,UAApB,gBAAoBA,UAApB;AAAA,UAAgCI,kBAAhC,gBAAgCA,kBAAhC;;AAEA,YAAK3B,QAAL,CAAc;AACZW,QAAAA,QAAQ,EAAE,KADE;AAEZV,QAAAA,SAAS,EAAE;AAFC,OAAd,EAGG,YAAM;AACP,YAAIsB,UAAU,IAAI,CAACxB,UAAnB,EAA+B;AAC7B,gBAAK2B,aAAL;AACD,SAFD,MAEO,IAAI3B,UAAU,IAAI4B,kBAAlB,EAAsC;AAC3C,gBAAKC,oBAAL;AACD,SAFM,MAEA;AACL,gBAAK5B,QAAL,CAAc;AACZqB,YAAAA,QAAQ,EAAEtB,UAAU,GAAG,MAAKK,MAAL,CAAYL,UAAf,GAA4B,MAAKK,MAAL,CAAYC,KADhD;AAEZiB,YAAAA,eAAe,EAAE,CAFL;AAGZE,YAAAA,YAAY,EAAE;AAHF,WAAd;AAKD;AACF,OAfD;AAgBD,KA1IsC;;AAAA,yEAwJJ,YAAM;AACvC,YAAKxB,QAAL,CAAc;AACZ2B,QAAAA,kBAAkB,EAAE;AADR,OAAd,EAEG,YAAM;AACP,SAAC,MAAK7B,KAAL,CAAWG,SAAZ,IAAyB,MAAK2B,oBAAL,EAAzB;AACD,OAJD;AAKD,KA9JsC;;AAGrC,UAAKxB,MAAL,GAAc;AACZC,MAAAA,KAAK,EAAET,KAAK,CAAC6B,QAAN,KAAmB9C,OAAnB,IAA8BiB,KAAK,CAAC6B,QAAN,KAAmB7C,KAAjD,GAAyD,CAAC,EAA1D,GAA+D,CAAC,EAD3D;AAEZ0B,MAAAA,GAAG,EAAEV,KAAK,CAAC6B,QAAN,KAAmB9C,OAAnB,IAA8BiB,KAAK,CAAC6B,QAAN,KAAmB7C,KAAjD,GAAyD,EAAzD,GAA8D,EAFvD;AAGZsC,MAAAA,IAAI,EAAEtB,KAAK,CAAC6B,QAAN,KAAmB9C,OAAnB,IAA8BiB,KAAK,CAAC6B,QAAN,KAAmB7C,KAAjD,GAAyD,EAAzD,GAA8D,GAHxD;AAIZmB,MAAAA,UAAU,EAAEH,KAAK,CAAC6B,QAAN,KAAmB9C,OAAnB,IAA8BiB,KAAK,CAAC6B,QAAN,KAAmB7C,KAAjD,GAAyD,EAAzD,GAA8D,EAJ9D;AAMZgC,MAAAA,kBAAkB,EAAEhB,KAAK,CAAC6B,QAAN,KAAmB9C,OAAnB,IAA8BiB,KAAK,CAAC6B,QAAN,KAAmB7C,KAAjD,GAAyD,CAAzD,GAA6D;AANrE,KAAd;AASA,UAAKkB,KAAL,GAAa;AACXa,MAAAA,QAAQ,EAAE,KADC;AAEXZ,MAAAA,UAAU,EAAE,KAFD;AAGXwB,MAAAA,UAAU,EAAE,KAHD;AAKXtB,MAAAA,SAAS,EAAE,KALA;AAMX0B,MAAAA,kBAAkB,EAAE,KANT;AAQXZ,MAAAA,MAAM,EAAE,CARG;AASXM,MAAAA,QAAQ,EAAE,MAAKjB,MAAL,CAAYC,KATX;AAUXiB,MAAAA,eAAe,EAAE,CAVN;AAWXE,MAAAA,YAAY,EAAE;AAXH,KAAb;AAcA,UAAKK,UAAL,gBAAkBxD,KAAK,CAACyD,SAAN,EAAlB;AA1BqC;AA2BtC;;;;SAMD,eAAe;AACb,aAAO,KAAKlC,KAAL,CAAWmC,QAAlB;AACD;;;WAED,6BAAoB;AAClB,UAAI/C,SAAJ,EAAe;AACb,aAAK+C,QAAL,CAAcC,gBAAd,CAA+B,WAA/B,EAA4C,KAAKC,iBAAjD,EAAoE;AAClE;AACAxC,UAAAA,UAAU,EAAE,IAFsD;AAGlEyC,UAAAA,OAAO,EAAE;AAHyD,SAApE;AAKD;AACF;;;WAED,gCAAuB;AACrB;AACA;AACA;AACA,UAAIlD,SAAJ,EAAe;AACb,aAAK+C,QAAL,CAAcI,mBAAd,CAAkC,WAAlC,EAA+C,KAAKF,iBAApD,EAAuE;AACrE;AACAxC,UAAAA,UAAU,EAAE,IAFyD;AAGrEyC,UAAAA,OAAO,EAAE;AAH4D,SAAvE;AAKD;AACF;;;WAED,4BAAmBE,SAAnB,EAAkD;AAChD,UAAIA,SAAS,CAACC,UAAV,IAAwB,CAAC,KAAKzC,KAAL,CAAWyC,UAAxC,EAAoD;AAClD,aAAKC,kBAAL;AACD;AACF;;;WA4ED,yBAAgB;AACd,UAAI,CAAC,KAAKxC,KAAL,CAAWC,UAAZ,IAA0B,KAAKH,KAAL,CAAW2C,SAAzC,EAAoD;AAClD,aAAKvC,QAAL,CAAc;AACZD,UAAAA,UAAU,EAAE,IADA;AAEZsB,UAAAA,QAAQ,EAAE,KAAKzB,KAAL,CAAW6B,QAAX,KAAwB9C,OAAxB,IAAmC,KAAKiB,KAAL,CAAW6B,QAAX,KAAwB7C,KAA3D,GAAmE,KAAKwB,MAAL,CAAYL,UAA/E,GAA4F,KAAKD,KAAL,CAAWuB;AAFrG,SAAd;AAKA,aAAKzB,KAAL,CAAW2C,SAAX;AACArD,QAAAA,uBAAuB,CAAC,OAAD,CAAvB;AACD;AACF;;;WAUD,gCAAuB;AACrB,WAAKc,QAAL,CAAc;AACZW,QAAAA,QAAQ,EAAE,KADE;AAEZY,QAAAA,UAAU,EAAE,KAFA;AAGZxB,QAAAA,UAAU,EAAE,KAHA;AAIZ4B,QAAAA,kBAAkB,EAAE,KAJR;AAKZN,QAAAA,QAAQ,EAAE,KAAKjB,MAAL,CAAYC,KALV;AAMZiB,QAAAA,eAAe,EAAE,CANL;AAOZE,QAAAA,YAAY,EAAE;AAPF,OAAd;AASD;;;WAED,kBAAS;AACP,wBAA8F,KAAK5B,KAAnG;AAAA,UAAQ4C,QAAR,eAAQA,QAAR;AAAA,UAAkBD,SAAlB,eAAkBA,SAAlB;AAAA,UAA6BF,UAA7B,eAA6BA,UAA7B;AAAA,UAAyCZ,QAAzC,eAAyCA,QAAzC;AAAA,UAAmDgB,MAAnD,eAAmDA,MAAnD;AAAA,UAA2DV,QAA3D,eAA2DA,QAA3D;AAAA,UAAqEvB,MAArE,eAAqEA,MAArE;AAAA,UAAgFkC,SAAhF;;AACA,yBAAiG,KAAK5C,KAAtG;AAAA,UAAQa,QAAR,gBAAQA,QAAR;AAAA,UAAkBZ,UAAlB,gBAAkBA,UAAlB;AAAA,UAA8BsB,QAA9B,gBAA8BA,QAA9B;AAAA,UAAwCC,eAAxC,gBAAwCA,eAAxC;AAAA,UAAyDC,UAAzD,gBAAyDA,UAAzD;AAAA,UAAqEtB,SAArE,gBAAqEA,SAArE;AAAA,UAAgFuB,YAAhF,gBAAgFA,YAAhF;AAEA,UAAMmB,gBAAgB,4BAAqBtB,QAArB,WAAtB;AACA,UAAIuB,gBAAgB,GAAG,EAAvB;;AAEA,UAAInB,QAAQ,KAAK/C,GAAb,IAAoBqB,UAApB,IAAkC,CAACE,SAAvC,EAAkD;AAChD2C,QAAAA,gBAAgB,GAAG,0BAAnB;AACD,OAFD,MAEO,IAAInB,QAAQ,KAAK/C,GAAb,KAAqB8C,YAAY,IAAIzB,UAArC,CAAJ,EAAsD;AAC3D6C,QAAAA,gBAAgB,4BAAqBpB,YAArB,WAAhB;AACD;;AAED,aACE,oBAAC,gBAAD,CAAkB,QAAlB;AAA2B,QAAA,KAAK,EAAE;AAAlC,SACE,oBAAC,KAAD,eACMkB,SADN;AAEE,QAAA,OAAO,EAAE,KAAKG,YAFhB;AAGE,QAAA,MAAM,EAAE,KAAKC,WAHf;AAIE,QAAA,KAAK,EAAE,KAAKC,UAJd;AAKE,QAAA,SAAS,EAAEtE,UAAU,CAACI,YAAY,CAAC,eAAD,EAAkB4C,QAAlB,CAAb,EAA0C;AAC7D,qCAA2Bd,QADkC;AAE7D,uCAA6BZ;AAFgC,SAA1C;AALvB,UAUE,oBAAC,WAAD;AAAa,QAAA,SAAS,EAAC;AAAvB,SACE,oBAAC,oBAAD;AACE,QAAA,KAAK,EAAE;AACLiD,UAAAA,SAAS,EAAEL,gBADN;AAELM,UAAAA,eAAe,EAAEN,gBAFZ;AAGLO,UAAAA,OAAO,EAAEvC,QAAQ,IAAIZ,UAAZ,IAA0BwB,UAA1B,GAAuC,CAAvC,GAA2C;AAH/C,SADT;AAME,QAAA,EAAE,EAAExB,UANN;AAOE,QAAA,QAAQ,EAAEA,UAAU,GAAG,IAAH,GAAUuB;AAPhC,QADF,CAVF,EAsBE;AACE,QAAA,SAAS,EAAC,wBADZ;AAEE,QAAA,GAAG,EAAE,KAAKO,UAFZ;AAGE,QAAA,KAAK,EAAE;AACLmB,UAAAA,SAAS,EAAEJ,gBADN;AAELK,UAAAA,eAAe,EAAEL;AAFZ;AAHT,SAQGJ,QARH,CAtBF,CADF,CADF;AAqCD;;;;EA/NyBnE,KAAK,CAAC8E,a;;AAkOlC,eAAehE,WAAW,CACxBJ,YAAY,CAACE,OAAO,CAAqBU,aAArB,CAAR,CADY,EAExBP,aAFwB,EAET,QAFS,CAA1B","sourcesContent":["import * as React from 'react';\nimport { Touch, TouchProps, TouchEvent } from '../Touch/Touch';\nimport TouchRootContext from '../Touch/TouchContext';\nimport FixedLayout from '../FixedLayout/FixedLayout';\nimport { classNames } from '../../lib/classNames';\nimport { IOS, ANDROID, VKCOM } from '../../lib/platform';\nimport { getClassName } from '../../helpers/getClassName';\nimport PullToRefreshSpinner from './PullToRefreshSpinner';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { AnyFunction, HasPlatform } from '../../types';\nimport { canUseDOM, DOMProps, withDOM } from '../../lib/dom';\nimport { runTapticImpactOccurred } from '../../lib/taptic';\nimport { withContext } from '../../hoc/withContext';\nimport { ScrollContext, ScrollContextInterface } from '../AppRoot/ScrollContext';\nimport './PullToRefresh.css';\n\nexport interface PullToRefreshProps extends TouchProps, HasPlatform {\n /**\n * Будет вызвана для обновления контента\n */\n onRefresh: AnyFunction;\n /**\n * Определяет, выполняется ли обновление. Для скрытия спиннера после получения контента необходимо передать `false`\n */\n isFetching?: boolean;\n /** @ignore */\n scroll?: ScrollContextInterface;\n}\n\nexport interface PullToRefreshState {\n watching: boolean;\n refreshing: boolean;\n canRefresh: boolean;\n\n touchDown: boolean;\n refreshingFinished: boolean;\n\n touchY: number;\n spinnerY: PullToRefreshParams['start'];\n spinnerProgress: number;\n contentShift: number;\n}\n\nexport interface PullToRefreshParams {\n start: number;\n max: number;\n maxY: number;\n refreshing: number;\n positionMultiplier: number;\n}\n\nexport type TouchEventHandler = (event: TouchEvent) => void;\n\nfunction cancelEvent(event: any) {\n if (!event) {\n return false;\n }\n while (event.originalEvent) {\n event = event.originalEvent;\n }\n if (event.preventDefault && event.cancelable) {\n event.preventDefault();\n }\n if (event.stopPropagation) {\n event.stopPropagation();\n }\n return false;\n}\n\nclass PullToRefresh extends React.PureComponent<PullToRefreshProps & DOMProps, PullToRefreshState> {\n constructor(props: PullToRefreshProps) {\n super(props);\n\n this.params = {\n start: props.platform === ANDROID || props.platform === VKCOM ? -45 : -10,\n max: props.platform === ANDROID || props.platform === VKCOM ? 80 : 50,\n maxY: props.platform === ANDROID || props.platform === VKCOM ? 80 : 400,\n refreshing: props.platform === ANDROID || props.platform === VKCOM ? 50 : 36,\n\n positionMultiplier: props.platform === ANDROID || props.platform === VKCOM ? 1 : 0.21,\n };\n\n this.state = {\n watching: false,\n refreshing: false,\n canRefresh: false,\n\n touchDown: false,\n refreshingFinished: false,\n\n touchY: 0,\n spinnerY: this.params.start,\n spinnerProgress: 0,\n contentShift: 0,\n };\n\n this.contentRef = React.createRef();\n }\n\n params: PullToRefreshParams;\n\n contentRef: React.RefObject<HTMLDivElement>;\n\n get document() {\n return this.props.document;\n }\n\n componentDidMount() {\n if (canUseDOM) {\n this.document.addEventListener('touchmove', this.onWindowTouchMove, {\n // @ts-ignore\n cancelable: true,\n passive: false,\n });\n }\n }\n\n componentWillUnmount() {\n // Здесь нужен последний аргумент с такими же параметрами, потому что\n // некоторые браузеры на странных вендорах типа Meizu не удаляют обработчик.\n // https://github.com/VKCOM/VKUI/issues/444\n if (canUseDOM) {\n this.document.removeEventListener('touchmove', this.onWindowTouchMove, {\n // @ts-ignore\n cancelable: true,\n passive: false,\n });\n }\n }\n\n componentDidUpdate(prevProps: PullToRefreshProps) {\n if (prevProps.isFetching && !this.props.isFetching) {\n this.onRefreshingFinish();\n }\n }\n\n onTouchStart: TouchEventHandler = (e: TouchEvent) => {\n if (this.state.refreshing) {\n cancelEvent(e);\n }\n this.setState({ touchDown: true });\n };\n\n onWindowTouchMove: EventListener = (event: Event) => {\n if (this.state.refreshing) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n onTouchMove: TouchEventHandler = (e: TouchEvent) => {\n const { isY, shiftY } = e;\n const { start, max } = this.params;\n const pageYOffset = this.props.scroll.getScroll().y;\n\n const { refreshing, watching, touchDown } = this.state;\n\n if (watching && touchDown) {\n cancelEvent(e);\n\n const { positionMultiplier } = this.params;\n\n const shift = Math.max(0, shiftY - this.state.touchY);\n\n const currentY = Math.max(start, Math.min(this.params.maxY, start + shift * positionMultiplier));\n const progress = currentY > -10 ? Math.abs((currentY + 10) / max) * 80 : 0;\n\n this.setState({\n spinnerY: currentY,\n spinnerProgress: Math.min(80, Math.max(0, progress)),\n canRefresh: progress > 80,\n contentShift: (currentY + 10) * 2.3,\n });\n\n if (progress > 85 && !refreshing && this.props.platform === IOS) {\n this.runRefreshing();\n }\n } else if (isY && pageYOffset === 0 && shiftY > 0 && !refreshing && touchDown) {\n cancelEvent(e);\n\n this.setState({\n watching: true,\n touchY: shiftY,\n spinnerY: start,\n spinnerProgress: 0,\n });\n }\n };\n\n onTouchEnd: VoidFunction = () => {\n const { refreshing, canRefresh, refreshingFinished } = this.state;\n\n this.setState({\n watching: false,\n touchDown: false,\n }, () => {\n if (canRefresh && !refreshing) {\n this.runRefreshing();\n } else if (refreshing && refreshingFinished) {\n this.resetRefreshingState();\n } else {\n this.setState({\n spinnerY: refreshing ? this.params.refreshing : this.params.start,\n spinnerProgress: 0,\n contentShift: 0,\n });\n }\n });\n };\n\n runRefreshing() {\n if (!this.state.refreshing && this.props.onRefresh) {\n this.setState({\n refreshing: true,\n spinnerY: this.props.platform === ANDROID || this.props.platform === VKCOM ? this.params.refreshing : this.state.spinnerY,\n });\n\n this.props.onRefresh();\n runTapticImpactOccurred('light');\n }\n }\n\n onRefreshingFinish: VoidFunction = () => {\n this.setState({\n refreshingFinished: true,\n }, () => {\n !this.state.touchDown && this.resetRefreshingState();\n });\n };\n\n resetRefreshingState() {\n this.setState({\n watching: false,\n canRefresh: false,\n refreshing: false,\n refreshingFinished: false,\n spinnerY: this.params.start,\n spinnerProgress: 0,\n contentShift: 0,\n });\n }\n\n render() {\n const { children, onRefresh, isFetching, platform, window, document, scroll, ...restProps } = this.props;\n const { watching, refreshing, spinnerY, spinnerProgress, canRefresh, touchDown, contentShift } = this.state;\n\n const spinnerTransform = `translate3d(0, ${spinnerY}px, 0)`;\n let contentTransform = '';\n\n if (platform === IOS && refreshing && !touchDown) {\n contentTransform = 'translate3d(0, 100px, 0)';\n } else if (platform === IOS && (contentShift || refreshing)) {\n contentTransform = `translate3d(0, ${contentShift}px, 0)`;\n }\n\n return (\n <TouchRootContext.Provider value={true}>\n <Touch\n {...restProps}\n onStart={this.onTouchStart}\n onMove={this.onTouchMove}\n onEnd={this.onTouchEnd}\n vkuiClass={classNames(getClassName('PullToRefresh', platform), {\n 'PullToRefresh--watching': watching,\n 'PullToRefresh--refreshing': refreshing,\n })}\n >\n <FixedLayout vkuiClass=\"PullToRefresh__controls\">\n <PullToRefreshSpinner\n style={{\n transform: spinnerTransform,\n WebkitTransform: spinnerTransform,\n opacity: watching || refreshing || canRefresh ? 1 : 0,\n }}\n on={refreshing}\n progress={refreshing ? null : spinnerProgress}\n />\n </FixedLayout>\n\n <div\n vkuiClass=\"PullToRefresh__content\"\n ref={this.contentRef}\n style={{\n transform: contentTransform,\n WebkitTransform: contentTransform,\n }}\n >\n {children}\n </div>\n </Touch>\n </TouchRootContext.Provider>\n );\n }\n}\n\nexport default withContext(\n withPlatform(withDOM<PullToRefreshProps>(PullToRefresh)),\n ScrollContext, 'scroll');\n"],"file":"PullToRefresh.js"}
|
|
@@ -4,7 +4,7 @@ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProper
|
|
|
4
4
|
var _excluded = ["min", "max", "step", "value", "defaultValue", "onChange", "getRootRef", "sizeY", "disabled"];
|
|
5
5
|
import { createScopedElement } from "../../lib/jsxRuntime";
|
|
6
6
|
import * as React from 'react';
|
|
7
|
-
import Touch from "../Touch/Touch";
|
|
7
|
+
import { Touch } from "../Touch/Touch";
|
|
8
8
|
import { getClassName } from "../../helpers/getClassName";
|
|
9
9
|
import { classNames } from "../../lib/classNames";
|
|
10
10
|
import { rescale } from "../../helpers/math";
|