@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/Touch/Touch.tsx"],"names":["events","Touch","e","props","onEnter","onLeave","gesture","startX","startY","startT","Date","isPressed","outputEvent","originalEvent","onStart","onStartX","onStartY","touchEnabled","subscribe","document","isX","isY","shiftX","shiftY","shiftXAbs","Math","abs","shiftYAbs","touches","length","onEnd","willBeX","willBeY","willBeSlidedX","onMoveX","onMove","willBeSlidedY","onMoveY","isSlideX","isSlideY","isSlide","onEndY","onEndX","didSlide","type","unsubscribe","noop","target","tagName","preventDefault","onClickCapture","noSlideClick","stopPropagation","container","getRootRef","canUseDOM","addEventListener","capture","useCapture","passive","removeEventListener","element","listenerParams","Component","window","restProps","onDragStart","postGestureClick","getRef","children","React"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n getSupportedEvents,\n coordX,\n coordY,\n touchEnabled,\n VKUITouchEvent,\n VKUITouchEventHander,\n} from '../../lib/touch';\nimport { HasRootRef } from '../../types';\nimport { canUseDOM, DOMProps, withDOM } from '../../lib/dom';\nimport { setRef, noop } from '../../lib/utils';\n\nexport interface TouchProps extends React.AllHTMLAttributes<HTMLElement>, HasRootRef<HTMLElement> {\n onEnter?(outputEvent: MouseEvent): void;\n onLeave?(outputEvent: MouseEvent): void;\n onStart?(outputEvent: TouchEvent): void;\n onStartX?(outputEvent: TouchEvent): void;\n onStartY?(outputEvent: TouchEvent): void;\n onMove?(outputEvent: TouchEvent): void;\n onMoveX?(outputEvent: TouchEvent): void;\n onMoveY?(outputEvent: TouchEvent): void;\n onEnd?(outputEvent: TouchEvent): void;\n onEndX?(outputEvent: TouchEvent): void;\n onEndY?(outputEvent: TouchEvent): void;\n useCapture?: boolean;\n noSlideClick?: boolean;\n Component?: React.ElementType;\n}\n\nexport interface Gesture {\n startX?: number;\n startY?: number;\n startT?: Date;\n isPressed?: boolean;\n isY?: boolean;\n isX?: boolean;\n isSlideX?: boolean;\n isSlideY?: boolean;\n isSlide?: boolean;\n shiftX?: number;\n shiftY?: number;\n shiftXAbs?: number;\n shiftYAbs?: number;\n}\n\nexport interface TouchEvent extends Gesture {\n originalEvent: VKUITouchEvent;\n}\n\nexport type TouchEventHandler = (e: TouchEvent) => void;\nexport type ClickHandler = (e: React.MouseEvent<HTMLElement>) => void;\nexport type DragHandler = (e: React.DragEvent<HTMLElement>) => void;\n\nconst events = getSupportedEvents();\n\nclass Touch extends React.Component<TouchProps & DOMProps> {\n didSlide = false;\n gesture: Partial<Gesture> = {};\n container: HTMLElement;\n\n static defaultProps: TouchProps = {\n Component: 'div',\n children: '',\n useCapture: false,\n noSlideClick: false,\n };\n\n get document() {\n return this.props.document;\n }\n\n componentDidMount() {\n if (canUseDOM) {\n this.container.addEventListener(events[0], this.onStart, { capture: this.props.useCapture, passive: false });\n touchEnabled && this.subscribe(this.container);\n\n this.container.addEventListener('mouseenter', this.onEnter, { capture: this.props.useCapture, passive: true });\n this.container.addEventListener('mouseleave', this.onLeave, { capture: this.props.useCapture, passive: true });\n }\n }\n\n componentWillUnmount() {\n this.container.removeEventListener(events[0], this.onStart);\n this.unsubscribe();\n\n this.container.removeEventListener('mouseenter', this.onEnter);\n this.container.removeEventListener('mouseleave', this.onLeave);\n }\n\n /**\n * Обработчик событий mouseenter\n *\n * @param {Object} e Браузерное событие\n * @return {void}\n */\n onEnter = (e: MouseEvent) => {\n if (this.props.onEnter) {\n this.props.onEnter(e);\n }\n };\n\n /**\n * Обработчик событий mouseleave\n *\n * @param {Object} e Браузерное событие\n * @param {boolean} simulated флаг, с которым обработчик был вызван симулятивно\n * @return {void}\n */\n onLeave = (e: MouseEvent) => {\n if (this.props.onLeave) {\n this.props.onLeave(e);\n }\n };\n\n /**\n * Обработчик событий touchstart\n *\n * @param {Object} e Браузерное событие\n * @return {void}\n */\n onStart: VKUITouchEventHander = (e: VKUITouchEvent) => {\n this.gesture = {\n startX: coordX(e),\n startY: coordY(e),\n startT: new Date(),\n isPressed: true,\n };\n\n // Вызываем нужные колбеки из props\n const outputEvent = {\n ...this.gesture,\n originalEvent: e,\n };\n\n if (this.props.onStart) {\n this.props.onStart(outputEvent);\n }\n\n if (this.props.onStartX) {\n this.props.onStartX(outputEvent);\n }\n\n if (this.props.onStartY) {\n this.props.onStartY(outputEvent);\n }\n\n !touchEnabled && this.subscribe(this.document);\n };\n\n /**\n * Обработчик событий touchmove\n *\n * @param {Object} e Браузерное событие\n * @return {void}\n */\n onMove: VKUITouchEventHander = (e: VKUITouchEvent) => {\n const { isPressed, isX, isY, startX, startY } = this.gesture;\n\n if (isPressed) {\n // смещения\n const shiftX = coordX(e) - startX;\n const shiftY = coordY(e) - startY;\n\n // абсолютные значения смещений\n const shiftXAbs = Math.abs(shiftX);\n const shiftYAbs = Math.abs(shiftY);\n\n // Если определяем мультитач, то прерываем жест\n if (!!e.touches && e.touches.length > 1) {\n return this.onEnd(e);\n }\n\n // если мы ещё не определились\n if (!isX && !isY) {\n let willBeX = shiftXAbs >= 5 && shiftXAbs > shiftYAbs;\n let willBeY = shiftYAbs >= 5 && shiftYAbs > shiftXAbs;\n let willBeSlidedX = willBeX && !!this.props.onMoveX || !!this.props.onMove;\n let willBeSlidedY = willBeY && !!this.props.onMoveY || !!this.props.onMove;\n\n this.gesture.isY = willBeY;\n this.gesture.isX = willBeX;\n this.gesture.isSlideX = willBeSlidedX;\n this.gesture.isSlideY = willBeSlidedY;\n this.gesture.isSlide = willBeSlidedX || willBeSlidedY;\n }\n\n if (this.gesture.isSlide) {\n this.gesture.shiftX = shiftX;\n this.gesture.shiftY = shiftY;\n this.gesture.shiftXAbs = shiftXAbs;\n this.gesture.shiftYAbs = shiftYAbs;\n\n // Вызываем нужные колбеки из props\n const outputEvent: TouchEvent = {\n ...this.gesture,\n originalEvent: e,\n };\n\n if (this.props.onMove) {\n this.props.onMove(outputEvent);\n }\n\n if (this.gesture.isSlideX && this.props.onMoveX) {\n this.props.onMoveX(outputEvent);\n }\n\n if (this.gesture.isSlideY && this.props.onMoveY) {\n this.props.onMoveY(outputEvent);\n }\n }\n }\n };\n\n /**\n * Обработчик событий touchend, touchcancel\n *\n * @param {Object} e Браузерное событие\n * @return {void}\n */\n onEnd: VKUITouchEventHander = (e: VKUITouchEvent) => {\n const { isPressed, isSlide, isSlideX, isSlideY } = this.gesture;\n\n if (isPressed) {\n // Вызываем нужные колбеки из props\n const outputEvent: TouchEvent = {\n ...this.gesture,\n originalEvent: e,\n };\n\n if (this.props.onEnd) {\n this.props.onEnd(outputEvent);\n }\n\n if (isSlideY && this.props.onEndY) {\n this.props.onEndY(outputEvent);\n }\n\n if (isSlideX && this.props.onEndX) {\n this.props.onEndX(outputEvent);\n }\n }\n\n this.didSlide = isSlide;\n this.gesture = {};\n\n // Если это был тач-евент, симулируем отмену hover\n if (e.type === 'touchend' || e.type === 'touchcancel') {\n this.onLeave(e);\n }\n\n !touchEnabled && this.unsubscribe();\n };\n\n subscribe(element: HTMLElement | Document) {\n this.unsubscribe();\n const listenerParams = { capture: this.props.useCapture, passive: false };\n element.addEventListener(events[1], this.onMove, listenerParams);\n element.addEventListener(events[2], this.onEnd, listenerParams);\n element.addEventListener(events[3], this.onEnd, listenerParams);\n this.unsubscribe = () => {\n // Здесь нужен последний аргумент с такими же параметрами, потому что\n // некоторые браузеры на странных вендорах типа Meizu не удаляют обработчик.\n // https://github.com/VKCOM/VKUI/issues/444\n element.removeEventListener(events[1], this.onMove, listenerParams);\n element.removeEventListener(events[2], this.onEnd, listenerParams);\n element.removeEventListener(events[3], this.onEnd, listenerParams);\n this.unsubscribe = noop;\n };\n }\n unsubscribe = noop;\n\n /**\n * Обработчик событий dragstart\n * Отменяет нативное браузерное поведение для вложенных ссылок и изображений\n *\n * @param {Object} e Браузерное событие\n * @return {void}\n */\n onDragStart: DragHandler = (e: React.DragEvent<HTMLElement>) => {\n const target = e.target as HTMLElement;\n if (target.tagName === 'A' || target.tagName === 'IMG') {\n e.preventDefault();\n }\n };\n\n /**\n * Обработчик клика по компоненту\n * Отменяет переход по вложенной ссылке, если был зафиксирован свайп\n *\n * @param {Object} e Браузерное событие\n * @return {void}\n */\n postGestureClick: ClickHandler = (e) => {\n const { onClickCapture, noSlideClick } = this.props;\n if (!this.didSlide) {\n return onClickCapture && onClickCapture(e);\n }\n if ((e.target as HTMLElement).tagName === 'A') {\n e.preventDefault();\n }\n if (noSlideClick) {\n e.stopPropagation();\n } else {\n onClickCapture && onClickCapture(e);\n }\n this.didSlide = false;\n };\n\n getRef: React.RefCallback<HTMLElement> = (container) => {\n this.container = container;\n setRef(container, this.props.getRootRef);\n };\n\n render() {\n const {\n onStart,\n onStartX,\n onStartY,\n onMove,\n onMoveX,\n onMoveY,\n onLeave,\n onEnter,\n onEnd,\n onEndX,\n onEndY,\n useCapture,\n Component,\n getRootRef,\n noSlideClick,\n window,\n document,\n ...restProps\n } = this.props;\n\n return (\n <Component\n {...restProps}\n onDragStart={this.onDragStart}\n onClickCapture={this.postGestureClick}\n ref={this.getRef}\n >\n {this.props.children}\n </Component>\n );\n }\n}\n\nexport default withDOM<TouchProps>(Touch);\n"],"file":"Touch.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Touch/Touch.tsx"],"names":["Touch","onStart","onStartX","onStartY","_onMove","onMove","onMoveX","onMoveY","onLeave","onEnter","_onEnd","onEnd","onEndX","onEndY","onClickCapture","useCapture","Component","getRootRef","noSlideClick","restProps","document","events","React","useMemo","getSupportedEvents","didSlide","useRef","gesture","handle","e","handers","forEach","cb","current","originalEvent","mouseEnterHandler","mouseLeaveHandler","startHandler","startX","startY","startT","Date","isPressed","subscribe","capture","passive","containerRef","el","add","isX","isY","shiftX","shiftY","shiftXAbs","Math","abs","shiftYAbs","touches","length","willBeX","willBeY","willBeSlidedX","willBeSlidedY","Object","assign","isSlideX","isSlideY","isSlide","type","listenerParams","listeners","l","onDragStart","target","tagName","preventDefault","postGestureClick","stopPropagation"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { getSupportedEvents, coordX, coordY, touchEnabled, VKUITouchEvent } from '../../lib/touch';\nimport { HasRootRef } from '../../types';\nimport { useDOM } from '../../lib/dom';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useEventListener } from '../../hooks/useEventListener';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\n\nexport interface TouchProps extends React.AllHTMLAttributes<HTMLElement>, HasRootRef<HTMLElement> {\n onEnter?(outputEvent: MouseEvent): void;\n onLeave?(outputEvent: MouseEvent): void;\n onStart?(outputEvent: TouchEvent): void;\n onStartX?(outputEvent: TouchEvent): void;\n onStartY?(outputEvent: TouchEvent): void;\n onMove?(outputEvent: TouchEvent): void;\n onMoveX?(outputEvent: TouchEvent): void;\n onMoveY?(outputEvent: TouchEvent): void;\n onEnd?(outputEvent: TouchEvent): void;\n onEndX?(outputEvent: TouchEvent): void;\n onEndY?(outputEvent: TouchEvent): void;\n useCapture?: boolean;\n noSlideClick?: boolean;\n Component?: React.ElementType;\n}\n\nexport interface Gesture {\n startX?: number;\n startY?: number;\n startT?: Date;\n isPressed?: boolean;\n isY?: boolean;\n isX?: boolean;\n isSlideX?: boolean;\n isSlideY?: boolean;\n isSlide?: boolean;\n shiftX?: number;\n shiftY?: number;\n shiftXAbs?: number;\n shiftYAbs?: number;\n}\n\nexport interface TouchEvent extends Gesture {\n originalEvent: VKUITouchEvent;\n}\n\nexport type TouchEventHandler = (e: TouchEvent) => void;\nexport type ClickHandler = (e: React.MouseEvent<HTMLElement>) => void;\nexport type DragHandler = (e: React.DragEvent<HTMLElement>) => void;\n\nexport const Touch: React.FC<TouchProps> = ({\n onStart,\n onStartX,\n onStartY,\n onMove: _onMove,\n onMoveX,\n onMoveY,\n onLeave,\n onEnter,\n onEnd: _onEnd,\n onEndX,\n onEndY,\n onClickCapture,\n useCapture = false,\n Component = 'div',\n getRootRef,\n noSlideClick = false,\n ...restProps\n}) => {\n const { document } = useDOM();\n const events = React.useMemo(getSupportedEvents, []);\n const didSlide = React.useRef(false);\n const gesture = React.useRef<Partial<Gesture>>({});\n const handle = (e: any, handers: any[]) => handers.forEach((cb) => {\n cb && cb({ ...gesture.current, originalEvent: e });\n });\n\n const mouseEnterHandler = useEventListener('mouseenter', onEnter);\n const mouseLeaveHandler = useEventListener('mouseleave', onLeave);\n const startHandler = useEventListener(events[0], (e: VKUITouchEvent) => {\n gesture.current = {\n startX: coordX(e),\n startY: coordY(e),\n startT: new Date(),\n isPressed: true,\n };\n\n handle(e, [onStart, onStartX, onStartY]);\n !touchEnabled() && subscribe(document);\n }, { capture: useCapture, passive: false });\n const containerRef = useExternRef(getRootRef);\n\n useIsomorphicLayoutEffect(() => {\n const el = containerRef.current;\n mouseEnterHandler.add(el);\n mouseLeaveHandler.add(el);\n startHandler.add(el);\n touchEnabled() && subscribe(el);\n }, [Component]);\n\n function onMove(e: VKUITouchEvent) {\n const { isPressed, isX, isY, startX, startY } = gesture.current;\n\n if (isPressed) {\n // смещения\n const shiftX = coordX(e) - startX;\n const shiftY = coordY(e) - startY;\n\n // абсолютные значения смещений\n const shiftXAbs = Math.abs(shiftX);\n const shiftYAbs = Math.abs(shiftY);\n\n // Если определяем мультитач, то прерываем жест\n if (!!e.touches && e.touches.length > 1) {\n return onEnd(e);\n }\n\n // если мы ещё не определились\n if (!isX && !isY) {\n const willBeX = shiftXAbs >= 5 && shiftXAbs > shiftYAbs;\n const willBeY = shiftYAbs >= 5 && shiftYAbs > shiftXAbs;\n const willBeSlidedX = willBeX && (!!onMoveX || !!_onMove);\n const willBeSlidedY = willBeY && (!!onMoveY || !!_onMove);\n\n Object.assign(gesture.current, {\n isY: willBeY,\n isX: willBeX,\n isSlideX: willBeSlidedX,\n isSlideY: willBeSlidedY,\n isSlide: willBeSlidedX || willBeSlidedY,\n });\n }\n\n if (gesture.current.isSlide) {\n Object.assign(gesture.current, {\n shiftX,\n shiftY,\n shiftXAbs,\n shiftYAbs,\n });\n\n handle(e, [_onMove, gesture.current.isSlideX && onMoveX, gesture.current.isSlideY && onMoveY]);\n }\n }\n }\n\n function onEnd(e: VKUITouchEvent) {\n const { isPressed, isSlide, isSlideX, isSlideY } = gesture.current;\n\n if (isPressed) {\n handle(e, [_onEnd, isSlideY && onEndY, isSlideX && onEndX]);\n }\n\n didSlide.current = isSlide;\n gesture.current = {};\n\n // Если это был тач-евент, симулируем отмену hover\n if (e.type === 'touchend' || e.type === 'touchcancel') {\n onLeave && onLeave(e);\n }\n\n !touchEnabled() && subscribe(null);\n }\n\n const listenerParams = { capture: useCapture, passive: false };\n const listeners = [\n useEventListener(events[1], onMove, listenerParams),\n useEventListener(events[2], onEnd, listenerParams),\n useEventListener(events[3], onEnd, listenerParams),\n ];\n function subscribe(el: HTMLElement | Document | null) {\n listeners.forEach((l) => l.add(el));\n }\n\n /**\n * Обработчик событий dragstart\n * Отменяет нативное браузерное поведение для вложенных ссылок и изображений\n */\n const onDragStart = (e: React.DragEvent<HTMLElement>) => {\n const target = e.target as HTMLElement;\n if (target.tagName === 'A' || target.tagName === 'IMG') {\n e.preventDefault();\n }\n };\n\n /**\n * Обработчик клика по компоненту\n * Отменяет переход по вложенной ссылке, если был зафиксирован свайп\n */\n const postGestureClick: typeof onClickCapture = (e) => {\n if (!didSlide.current) {\n return onClickCapture && onClickCapture(e);\n }\n if ((e.target as HTMLElement).tagName === 'A') {\n e.preventDefault();\n }\n if (noSlideClick) {\n e.stopPropagation();\n } else {\n onClickCapture && onClickCapture(e);\n }\n didSlide.current = false;\n };\n\n return (\n <Component\n {...restProps}\n onDragStart={onDragStart}\n onClickCapture={postGestureClick}\n ref={containerRef}\n />\n );\n};\n"],"file":"Touch.js"}
|
|
@@ -19,16 +19,12 @@ var React = _interopRequireWildcard(require("react"));
|
|
|
19
19
|
|
|
20
20
|
var _getClassName = require("../../helpers/getClassName");
|
|
21
21
|
|
|
22
|
-
var _useBrowserInfo2 = require("../../hooks/useBrowserInfo");
|
|
23
|
-
|
|
24
22
|
var _usePlatform = require("../../hooks/usePlatform");
|
|
25
23
|
|
|
26
24
|
var _utils = require("../../lib/utils");
|
|
27
25
|
|
|
28
26
|
var _classNames = require("../../lib/classNames");
|
|
29
27
|
|
|
30
|
-
var _browser = require("../../lib/browser");
|
|
31
|
-
|
|
32
28
|
var _useIsomorphicLayoutEffect = require("../../lib/useIsomorphicLayoutEffect");
|
|
33
29
|
|
|
34
30
|
var _Caption = _interopRequireDefault(require("../Typography/Caption/Caption"));
|
|
@@ -37,13 +33,11 @@ var _Subhead = _interopRequireDefault(require("../Typography/Subhead/Subhead"));
|
|
|
37
33
|
|
|
38
34
|
var _masks = require("./masks");
|
|
39
35
|
|
|
36
|
+
var _dom = require("../../lib/dom");
|
|
37
|
+
|
|
40
38
|
var _excluded = ["photos", "visibleCount", "size", "layout", "children"];
|
|
41
39
|
|
|
42
40
|
var UsersStack = function UsersStack(props) {
|
|
43
|
-
var _useBrowserInfo = (0, _useBrowserInfo2.useBrowserInfo)(),
|
|
44
|
-
system = _useBrowserInfo.system,
|
|
45
|
-
systemVersion = _useBrowserInfo.systemVersion;
|
|
46
|
-
|
|
47
41
|
var platform = (0, _usePlatform.usePlatform)();
|
|
48
42
|
var photos = props.photos,
|
|
49
43
|
visibleCount = props.visibleCount,
|
|
@@ -51,22 +45,19 @@ var UsersStack = function UsersStack(props) {
|
|
|
51
45
|
layout = props.layout,
|
|
52
46
|
children = props.children,
|
|
53
47
|
restProps = (0, _objectWithoutProperties2.default)(props, _excluded);
|
|
48
|
+
|
|
49
|
+
var _useDOM = (0, _dom.useDOM)(),
|
|
50
|
+
document = _useDOM.document;
|
|
51
|
+
|
|
54
52
|
(0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(function () {
|
|
55
|
-
(0, _masks.createMasks)();
|
|
56
|
-
}, []);
|
|
53
|
+
(0, _masks.createMasks)(document);
|
|
54
|
+
}, [document]);
|
|
57
55
|
var othersCount = Math.max(0, photos.length - visibleCount);
|
|
58
56
|
var canShowOthers = othersCount > 0 && size === 'm';
|
|
59
57
|
var photosShown = photos.slice(0, visibleCount);
|
|
60
|
-
var canUseClipPath = true;
|
|
61
|
-
|
|
62
|
-
if (system === _browser.System.IOS) {
|
|
63
|
-
canUseClipPath = systemVersion && systemVersion.major >= 12;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
58
|
return (0, _jsxRuntime.createScopedElement)("div", (0, _extends2.default)({}, restProps, {
|
|
67
59
|
vkuiClass: (0, _classNames.classNames)((0, _getClassName.getClassName)('UsersStack', platform), "UsersStack--size-".concat(size), "UsersStack--l-".concat(layout), {
|
|
68
|
-
'UsersStack--others': canShowOthers
|
|
69
|
-
'UsersStack--simple': !canUseClipPath
|
|
60
|
+
'UsersStack--others': canShowOthers
|
|
70
61
|
})
|
|
71
62
|
}), (0, _jsxRuntime.createScopedElement)("div", {
|
|
72
63
|
vkuiClass: "UsersStack__photos",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/UsersStack/UsersStack.tsx"],"names":["UsersStack","props","
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/UsersStack/UsersStack.tsx"],"names":["UsersStack","props","platform","photos","visibleCount","size","layout","children","restProps","document","othersCount","Math","max","length","canShowOthers","photosShown","slice","map","photo","i","backgroundImage","defaultProps","React","memo"],"mappings":";;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAuBA,IAAMA,UAAqC,GAAG,SAAxCA,UAAwC,CAACC,KAAD,EAA4B;AACxE,MAAMC,QAAQ,GAAG,+BAAjB;AACA,MAAQC,MAAR,GAAuEF,KAAvE,CAAQE,MAAR;AAAA,MAAgBC,YAAhB,GAAuEH,KAAvE,CAAgBG,YAAhB;AAAA,MAA8BC,IAA9B,GAAuEJ,KAAvE,CAA8BI,IAA9B;AAAA,MAAoCC,MAApC,GAAuEL,KAAvE,CAAoCK,MAApC;AAAA,MAA4CC,QAA5C,GAAuEN,KAAvE,CAA4CM,QAA5C;AAAA,MAAyDC,SAAzD,0CAAuEP,KAAvE;;AACA,gBAAqB,kBAArB;AAAA,MAAQQ,QAAR,WAAQA,QAAR;;AAEA,4DAA0B,YAAM;AAC9B,4BAAYA,QAAZ;AACD,GAFD,EAEG,CAACA,QAAD,CAFH;AAIA,MAAMC,WAAW,GAAGC,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYT,MAAM,CAACU,MAAP,GAAgBT,YAA5B,CAApB;AACA,MAAMU,aAAa,GAAGJ,WAAW,GAAG,CAAd,IAAmBL,IAAI,KAAK,GAAlD;AAEA,MAAMU,WAAW,GAAGZ,MAAM,CAACa,KAAP,CAAa,CAAb,EAAgBZ,YAAhB,CAApB;AAEA,SACE,uEACMI,SADN;AAEE,IAAA,SAAS,EACP,4BACE,gCAAa,YAAb,EAA2BN,QAA3B,CADF,6BAEsBG,IAFtB,2BAGmBC,MAHnB,GAIE;AACE,4BAAsBQ;AADxB,KAJF;AAHJ,MAaE;AAAK,IAAA,SAAS,EAAC,oBAAf;AAAoC,IAAA,IAAI,EAAC;AAAzC,KACGC,WAAW,CAACE,GAAZ,CAAgB,UAACC,KAAD,EAAQC,CAAR;AAAA,WACf;AACE,MAAA,GAAG,EAAEA,CADP;AAEE,MAAA,SAAS,EAAC,mBAFZ;AAGE,MAAA,KAAK,EAAE;AAAEC,QAAAA,eAAe,gBAASF,KAAT;AAAjB;AAHT,MADe;AAAA,GAAhB,CADH,EASGJ,aAAa,IACZ,qCAAC,gBAAD;AAAS,IAAA,MAAM,EAAC,QAAhB;AAAyB,IAAA,KAAK,EAAC,GAA/B;AAAmC,IAAA,SAAS,EAAC,6CAA7C;AAA2F,mBAAY;AAAvG,KACE,wDAAQJ,WAAR,CADF,CAVJ,CAbF,EA4BG,yBAAaH,QAAb,KAA0B,qCAAC,gBAAD;AAAS,IAAA,SAAS,EAAC,MAAnB;AAA0B,IAAA,MAAM,EAAC,SAAjC;AAA2C,IAAA,SAAS,EAAC;AAArD,KAAyEA,QAAzE,CA5B7B,CADF;AAgCD,CA9CD;;AAgDAP,UAAU,CAACqB,YAAX,GAA0B;AACxBlB,EAAAA,MAAM,EAAE,EADgB;AAExBE,EAAAA,IAAI,EAAE,GAFkB;AAGxBD,EAAAA,YAAY,EAAE,CAHU;AAIxBE,EAAAA,MAAM,EAAE;AAJgB,CAA1B;;4BAOegB,KAAK,CAACC,IAAN,CAAWvB,UAAX,C","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { hasReactNode } from '../../lib/utils';\nimport { classNames } from '../../lib/classNames';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport Caption from '../Typography/Caption/Caption';\nimport Subhead from '../Typography/Subhead/Subhead';\nimport { createMasks } from './masks';\nimport { useDOM } from '../../lib/dom';\nimport './UsersStack.css';\n\nexport interface UsersStackProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Массив ссылок на фотографии\n */\n photos?: string[];\n /**\n * Размер аватарок\n */\n size?: 'xs' | 's' | 'm';\n /**\n * Вертикальный режим рекомендуется использовать с размером `m`\n */\n layout?: 'vertical' | 'horizontal';\n /**\n * Количество аватарок, которые будут показаны.\n * Если в массиве `photos` больше элементов и используется размер `m`, то будет показано количество остальных элементов\n */\n visibleCount?: number;\n}\n\nconst UsersStack: React.FC<UsersStackProps> = (props: UsersStackProps) => {\n const platform = usePlatform();\n const { photos, visibleCount, size, layout, children, ...restProps } = props;\n const { document } = useDOM();\n\n useIsomorphicLayoutEffect(() => {\n createMasks(document);\n }, [document]);\n\n const othersCount = Math.max(0, photos.length - visibleCount);\n const canShowOthers = othersCount > 0 && size === 'm';\n\n const photosShown = photos.slice(0, visibleCount);\n\n return (\n <div\n {...restProps}\n vkuiClass={\n classNames(\n getClassName('UsersStack', platform),\n `UsersStack--size-${size}`,\n `UsersStack--l-${layout}`,\n {\n 'UsersStack--others': canShowOthers,\n },\n )\n }\n >\n <div vkuiClass=\"UsersStack__photos\" role=\"presentation\">\n {photosShown.map((photo, i) => (\n <div\n key={i}\n vkuiClass=\"UsersStack__photo\"\n style={{ backgroundImage: `url(${photo})` }}\n />\n ))}\n\n {canShowOthers &&\n <Caption weight=\"medium\" level=\"1\" vkuiClass=\"UsersStack__photo UsersStack__photo--others\" aria-hidden=\"true\">\n <span>+{othersCount}</span>\n </Caption>\n }\n </div>\n {hasReactNode(children) && <Subhead Component=\"span\" weight=\"regular\" vkuiClass=\"UsersStack__text\">{children}</Subhead>}\n </div>\n );\n};\n\nUsersStack.defaultProps = {\n photos: [],\n size: 's',\n visibleCount: 3,\n layout: 'horizontal',\n};\n\nexport default React.memo(UsersStack);\n"],"file":"UsersStack.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function createMasks(): void;
|
|
1
|
+
export declare function createMasks(document: Document): void;
|
|
@@ -7,10 +7,10 @@ exports.createMasks = createMasks;
|
|
|
7
7
|
|
|
8
8
|
var _dom = require("../../lib/dom");
|
|
9
9
|
|
|
10
|
-
var masksCreated =
|
|
10
|
+
var masksCreated = [];
|
|
11
11
|
|
|
12
|
-
function createMasks() {
|
|
13
|
-
if (!_dom.canUseDOM || masksCreated) {
|
|
12
|
+
function createMasks(document) {
|
|
13
|
+
if (!_dom.canUseDOM || masksCreated.includes(document)) {
|
|
14
14
|
return;
|
|
15
15
|
} // eslint-disable-next-line no-restricted-globals
|
|
16
16
|
|
|
@@ -23,10 +23,7 @@ function createMasks() {
|
|
|
23
23
|
svgElement.style.width = '0px';
|
|
24
24
|
svgElement.style.height = '0px';
|
|
25
25
|
svgElement.innerHTML = "<defs>\n <clipPath id=\"users_stack_mask_16_left\">\n <path transform=\"translate(1.5 0)\" d=\"M1.20772 8C1.20772 6.32671 0.768742 4.75626 0 3.39821C1.44342 1.34278 3.8277 0 6.52463 0C10.9293 0 14.5 3.58172 14.5 8C14.5 12.4183 10.9293 16 6.52463 16C3.8277 16 1.44342 14.6572 0 12.6018C0.768742 11.2437 1.20772 9.6733 1.20772 8Z\"></path>\n </clipPath>\n\n <clipPath id=\"users_stack_mask_24_left\">\n <path d=\"M3.9971785,12 C3.9971785,9.49005736 3.33667467,7.13438366 2.18,5.09731189 C4.35181237,2.01417617 7.93927741,0 11.9971785,0 C18.6245955,0 23.9971785,5.372583 23.9971785,12 C23.9971785,18.627417 18.6245955,24 11.9971785,24 C7.93927741,24 4.35181237,21.9858238 2.18,18.9026881 C3.33667467,16.8656163 3.9971785,14.5099426 3.9971785,12 Z\"></path>\n </clipPath>\n\n <clipPath id=\"users_stack_mask_24_right\">\n <path d=\"M21.8171785,5.09731189 C20.6605038,7.13438366 20,9.49005736 20,12 C20,14.5099426 20.6605038,16.8656163 21.8171785,18.9026881 C19.6453661,21.9858238 16.0579011,24 12,24 C5.372583,24 3.90798505e-14,18.627417 3.90798505e-14,12 C3.90798505e-14,5.372583 5.372583,0 12,0 C16.0579011,0 19.6453661,2.01417617 21.8171785,5.09731189 Z\"></path>\n </clipPath>\n\n <clipPath id=\"users_stack_mask_32_left\">\n <path d=\"M2.13430019,23.9892466 C3.32858917,21.5820026 4,18.8694095 4,16 C4,13.1305905 3.32858917,10.4179974 2.13430019,8.0107534 C4.89924175,3.22241289 10.0733034,-2.30926389e-14 16,-2.30926389e-14 C24.836556,-2.30926389e-14 32,7.163444 32,16 C32,24.836556 24.836556,32 16,32 C10.0733034,32 4.89924175,28.7775871 2.13430019,23.9892466 L2.13430019,23.9892466 Z\"></path>\n </clipPath>\n\n <clipPath id=\"users_stack_mask_32_right\">\n <path d=\"M29.8656998,8.0107534 C28.6714108,10.4179974 28,13.1305905 28,16 C28,18.8694095 28.6714108,21.5820026 29.8656998,23.9892466 C27.1007583,28.7775871 21.9266966,32 16,32 C7.163444,32 3.90798505e-14,24.836556 3.90798505e-14,16 C3.90798505e-14,7.163444 7.163444,0 16,0 C21.9266966,0 27.1007583,3.22241289 29.8656998,8.0107534 Z\"></path>\n </clipPath>\n</defs>";
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
document.body.appendChild(svgElement);
|
|
29
|
-
});
|
|
30
|
-
masksCreated = true;
|
|
26
|
+
document.body.appendChild(svgElement);
|
|
27
|
+
masksCreated.push(document);
|
|
31
28
|
}
|
|
32
29
|
//# sourceMappingURL=masks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/UsersStack/masks.tsx"],"names":["masksCreated","createMasks","canUseDOM","
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/UsersStack/masks.tsx"],"names":["masksCreated","createMasks","document","canUseDOM","includes","svgElement","createElementNS","setAttributeNS","style","position","width","height","innerHTML","body","appendChild","push"],"mappings":";;;;;;;AAAA;;AAEA,IAAMA,YAAwB,GAAG,EAAjC;;AAEO,SAASC,WAAT,CAAqBC,QAArB,EAA+C;AACpD,MAAI,CAACC,cAAD,IAAcH,YAAY,CAACI,QAAb,CAAsBF,QAAtB,CAAlB,EAAmD;AACjD;AACD,GAHmD,CAKpD;;;AACA,MAAMG,UAAU,GAAGH,QAAQ,CAACI,eAAT,CAAyB,4BAAzB,EAAuD,KAAvD,CAAnB;AACAD,EAAAA,UAAU,CAACE,cAAX,CAA0B,IAA1B,EAAgC,IAAhC,EAAsC,oBAAtC;AACAF,EAAAA,UAAU,CAACE,cAAX,CAA0B,IAA1B,EAAgC,OAAhC,EAAyC,GAAzC;AACAF,EAAAA,UAAU,CAACE,cAAX,CAA0B,IAA1B,EAAgC,QAAhC,EAA0C,GAA1C;AACAF,EAAAA,UAAU,CAACG,KAAX,CAAiBC,QAAjB,GAA4B,UAA5B;AACAJ,EAAAA,UAAU,CAACG,KAAX,CAAiBE,KAAjB,GAAyB,KAAzB;AACAL,EAAAA,UAAU,CAACG,KAAX,CAAiBG,MAAjB,GAA0B,KAA1B;AAEAN,EAAAA,UAAU,CAACO,SAAX;AAsBAV,EAAAA,QAAQ,CAACW,IAAT,CAAcC,WAAd,CAA0BT,UAA1B;AACAL,EAAAA,YAAY,CAACe,IAAb,CAAkBb,QAAlB;AACD","sourcesContent":["import { canUseDOM } from '../../lib/dom';\n\nconst masksCreated: Document[] = [];\n\nexport function createMasks(document: Document): void {\n if (!canUseDOM || masksCreated.includes(document)) {\n return;\n }\n\n // eslint-disable-next-line no-restricted-globals\n const svgElement = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgElement.setAttributeNS(null, 'id', '__SVG_MASKS_NODE__');\n svgElement.setAttributeNS(null, 'width', '0');\n svgElement.setAttributeNS(null, 'height', '0');\n svgElement.style.position = 'absolute';\n svgElement.style.width = '0px';\n svgElement.style.height = '0px';\n\n svgElement.innerHTML = `<defs>\n <clipPath id=\"users_stack_mask_16_left\">\n <path transform=\"translate(1.5 0)\" d=\"M1.20772 8C1.20772 6.32671 0.768742 4.75626 0 3.39821C1.44342 1.34278 3.8277 0 6.52463 0C10.9293 0 14.5 3.58172 14.5 8C14.5 12.4183 10.9293 16 6.52463 16C3.8277 16 1.44342 14.6572 0 12.6018C0.768742 11.2437 1.20772 9.6733 1.20772 8Z\"></path>\n </clipPath>\n\n <clipPath id=\"users_stack_mask_24_left\">\n <path d=\"M3.9971785,12 C3.9971785,9.49005736 3.33667467,7.13438366 2.18,5.09731189 C4.35181237,2.01417617 7.93927741,0 11.9971785,0 C18.6245955,0 23.9971785,5.372583 23.9971785,12 C23.9971785,18.627417 18.6245955,24 11.9971785,24 C7.93927741,24 4.35181237,21.9858238 2.18,18.9026881 C3.33667467,16.8656163 3.9971785,14.5099426 3.9971785,12 Z\"></path>\n </clipPath>\n\n <clipPath id=\"users_stack_mask_24_right\">\n <path d=\"M21.8171785,5.09731189 C20.6605038,7.13438366 20,9.49005736 20,12 C20,14.5099426 20.6605038,16.8656163 21.8171785,18.9026881 C19.6453661,21.9858238 16.0579011,24 12,24 C5.372583,24 3.90798505e-14,18.627417 3.90798505e-14,12 C3.90798505e-14,5.372583 5.372583,0 12,0 C16.0579011,0 19.6453661,2.01417617 21.8171785,5.09731189 Z\"></path>\n </clipPath>\n\n <clipPath id=\"users_stack_mask_32_left\">\n <path d=\"M2.13430019,23.9892466 C3.32858917,21.5820026 4,18.8694095 4,16 C4,13.1305905 3.32858917,10.4179974 2.13430019,8.0107534 C4.89924175,3.22241289 10.0733034,-2.30926389e-14 16,-2.30926389e-14 C24.836556,-2.30926389e-14 32,7.163444 32,16 C32,24.836556 24.836556,32 16,32 C10.0733034,32 4.89924175,28.7775871 2.13430019,23.9892466 L2.13430019,23.9892466 Z\"></path>\n </clipPath>\n\n <clipPath id=\"users_stack_mask_32_right\">\n <path d=\"M29.8656998,8.0107534 C28.6714108,10.4179974 28,13.1305905 28,16 C28,18.8694095 28.6714108,21.5820026 29.8656998,23.9892466 C27.1007583,28.7775871 21.9266966,32 16,32 C7.163444,32 3.90798505e-14,24.836556 3.90798505e-14,16 C3.90798505e-14,7.163444 7.163444,0 16,0 C21.9266966,0 27.1007583,3.22241289 29.8656998,8.0107534 Z\"></path>\n </clipPath>\n</defs>`;\n\n document.body.appendChild(svgElement);\n masksCreated.push(document);\n}\n"],"file":"masks.js"}
|
|
@@ -39,7 +39,7 @@ var _getClassName = require("../../helpers/getClassName");
|
|
|
39
39
|
|
|
40
40
|
var _platform = require("../../lib/platform");
|
|
41
41
|
|
|
42
|
-
var _Touch =
|
|
42
|
+
var _Touch = require("../Touch/Touch");
|
|
43
43
|
|
|
44
44
|
var _removeObjectKeys = require("../../lib/removeObjectKeys");
|
|
45
45
|
|
|
@@ -513,7 +513,7 @@ var View = /*#__PURE__*/function (_React$Component) {
|
|
|
513
513
|
'View--swiping-back': !disableAnimation && this.state.swipingBack,
|
|
514
514
|
'View--no-motion': disableAnimation
|
|
515
515
|
};
|
|
516
|
-
return (0, _jsxRuntime.createScopedElement)(_Touch.
|
|
516
|
+
return (0, _jsxRuntime.createScopedElement)(_Touch.Touch, (0, _extends2.default)({
|
|
517
517
|
Component: "section"
|
|
518
518
|
}, restProps, {
|
|
519
519
|
vkuiClass: (0, _classNames.classNames)((0, _getClassName.getClassName)('View', platform), modifiers),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/View/View.tsx"],"names":["warn","transitionStartEventName","transitionEndEventName","SwipeBackResults","scrollsCache","swipeBackExcludedTags","View","props","e","includes","animationName","activePanel","isBack","state","prevPanel","document","dispatchEvent","window","setState","nextPanel","visiblePanels","animated","undefined","scrolls","scroll","scrollTo","onTransition","from","to","propertyName","target","pickPanel","swipeBackNextPanel","swipeBackResult","fail","onSwipeBackCancel","success","onSwipeBackSuccess","originalEvent","tagName","toLowerCase","platform","configProvider","IOS","isWebView","startX","innerWidth","browserSwipe","onSwipeBack","swipingBack","history","length","swipebackStartX","startT","swipeBackPrevPanel","slice","getScroll","y","swipeBackShift","shiftX","speed","Date","now","getTime","React","Children","toArray","children","id","prevProps","prevState","popout","blurActiveElement","modal","firstLayerId","panels","map","panel","find","transitionStartEventData","detail","CustomEvent","nextPanelElement","prevPanelElement","scrollTop","waitAnimationFinish","transitionEndHandler","onSwipeBackStart","waitTransitionFinish","swipingBackTransitionEndHandler","transitionMotionEnabled","splitCol","animate","elem","eventHandler","transitionEvent","supported","removeEventListener","name","addEventListener","clearTimeout","transitionFinishTimeout","setTimeout","ANDROID","VKCOM","shouldDisableTransitionMotion","animationEvent","animationFinishTimeout","activeElement","blur","panelNodes","panelId","canUseDOM","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","_1","nav","restProps","hasPopout","hasModal","filter","disableAnimation","modifiers","onMoveX","onEnd","el","calcPanelSwipeStyles","Component","SplitColContext","ConfigProviderContext","ScrollContext"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { transitionEvent, animationEvent } from '../../lib/supportEvents';\nimport { getClassName } from '../../helpers/getClassName';\nimport { IOS, ANDROID, VKCOM } from '../../lib/platform';\nimport Touch, { TouchEvent } from '../Touch/Touch';\nimport { removeObjectKeys } from '../../lib/removeObjectKeys';\nimport { HasPlatform } from '../../types';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { withContext } from '../../hoc/withContext';\nimport { ConfigProviderContext, ConfigProviderContextInterface } from '../ConfigProvider/ConfigProviderContext';\nimport { createCustomEvent } from '../../lib/utils';\nimport { SplitColContext, SplitColContextProps } from '../SplitCol/SplitCol';\nimport { AppRootPortal } from '../AppRoot/AppRootPortal';\nimport { canUseDOM, withDOM, DOMProps } from '../../lib/dom';\nimport { ScrollContext, ScrollContextInterface } from '../AppRoot/ScrollContext';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport './View.css';\n\nconst warn = warnOnce('View');\nexport const transitionStartEventName = 'VKUI:View:transition-start';\nexport const transitionEndEventName = 'VKUI:View:transition-end';\n\nenum SwipeBackResults { fail = 1, success}\n\ninterface Scrolls {\n [index: string]: number;\n}\n\nexport type TransitionStartEventDetail = {\n scrolls: Scrolls;\n from: string;\n to: string;\n isBack: boolean;\n};\n\ninterface ViewsScrolls {\n [index: string]: Scrolls;\n}\n\ntype AnimationEventHandler = (e?: AnimationEvent) => void;\n\ntype TransitionEventHandler = (e?: TransitionEvent) => void;\n\nexport let scrollsCache: ViewsScrolls = {};\n\nconst swipeBackExcludedTags = ['input', 'textarea'];\n\nexport interface ViewProps extends React.HTMLAttributes<HTMLElement>, HasPlatform, NavIdProps {\n activePanel: string;\n /**\n * @deprecated будет удалено в 5.0.0. Используйте одноименное свойство у `SplitLayout`.\n *\n * Свойство для отрисовки `Alert`, `ActionSheet` и `ScreenSpinner`.\n */\n popout?: React.ReactNode;\n /**\n * @deprecated будет удалено в 5.0.0. Используйте одноименное свойство у `SplitLayout`.\n *\n * Свойство для отрисовки `ModalRoot`.\n */\n modal?: React.ReactNode;\n onTransition?(params: { isBack: boolean; from: string; to: string }): void;\n /**\n * callback свайпа назад\n */\n onSwipeBack?(): void;\n /**\n * callback начала анимации свайпа назад.\n */\n onSwipeBackStart?(): void;\n /**\n * callback завершения анимации отмененного пользователем свайпа\n */\n onSwipeBackCancel?(): void;\n history?: string[];\n /**\n * @ignore\n */\n splitCol?: SplitColContextProps;\n /**\n * @ignore\n */\n configProvider?: ConfigProviderContextInterface;\n /**\n * @ignore\n */\n scroll?: ScrollContextInterface;\n}\n\nexport interface ViewState {\n scrolls: Scrolls;\n animated: boolean;\n startT?: Date;\n\n visiblePanels: string[];\n activePanel: string;\n isBack: boolean;\n prevPanel: string;\n nextPanel: string;\n\n swipingBack: boolean;\n swipebackStartX: number;\n swipeBackShift: number;\n swipeBackNextPanel: string;\n swipeBackPrevPanel: string;\n swipeBackResult: SwipeBackResults;\n\n browserSwipe: boolean;\n}\n\nclass View extends React.Component<ViewProps & DOMProps, ViewState> {\n constructor(props: ViewProps) {\n super(props);\n\n this.state = {\n scrolls: scrollsCache[getNavId(props)] || {},\n animated: false,\n\n visiblePanels: [props.activePanel],\n activePanel: props.activePanel,\n isBack: undefined,\n prevPanel: null,\n nextPanel: null,\n\n swipingBack: false,\n swipebackStartX: 0,\n swipeBackShift: 0,\n swipeBackNextPanel: null,\n swipeBackPrevPanel: null,\n swipeBackResult: null,\n\n browserSwipe: false,\n };\n }\n\n static defaultProps: Partial<ViewProps> = {\n history: [],\n };\n\n private transitionFinishTimeout: ReturnType<typeof setTimeout>;\n private animationFinishTimeout: ReturnType<typeof setTimeout>;\n\n get document() {\n return this.props.document;\n }\n\n get window() {\n return this.props.window;\n }\n\n get panels() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n panelNodes: { [id: string]: HTMLDivElement } = {};\n\n componentWillUnmount() {\n const id = getNavId(this.props);\n if (id) {\n scrollsCache[id] = this.state.scrolls;\n }\n }\n\n componentDidUpdate(prevProps: ViewProps, prevState: ViewState) {\n this.props.popout && !prevProps.popout && this.blurActiveElement();\n this.props.modal && !prevProps.modal && this.blurActiveElement();\n\n // Нужен переход\n if (prevProps.activePanel !== this.props.activePanel && !prevState.swipingBack && !prevState.browserSwipe) {\n const firstLayerId = this.panels\n .map((panel) => getNavId(panel.props, warn))\n .find((id) => id === prevProps.activePanel || id === this.props.activePanel);\n\n const isBack = firstLayerId === this.props.activePanel;\n\n this.blurActiveElement();\n\n this.setState({\n visiblePanels: [prevProps.activePanel, this.props.activePanel],\n prevPanel: prevProps.activePanel,\n nextPanel: this.props.activePanel,\n activePanel: null,\n animated: true,\n scrolls: {\n ...prevState.scrolls,\n [prevProps.activePanel]: this.props.scroll.getScroll().y,\n },\n isBack,\n });\n }\n\n // Закончилась анимация свайпа назад\n if (prevProps.activePanel !== this.props.activePanel && prevState.swipingBack) {\n const nextPanel = this.props.activePanel;\n const prevPanel = prevProps.activePanel;\n this.setState({\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipebackStartX: 0,\n swipeBackShift: 0,\n activePanel: nextPanel,\n visiblePanels: [nextPanel],\n scrolls: removeObjectKeys(prevState.scrolls, [prevState.swipeBackPrevPanel]),\n }, () => {\n this.document.dispatchEvent(createCustomEvent(this.window, transitionEndEventName));\n this.props.scroll.scrollTo(0, prevState.scrolls[this.state.activePanel]);\n prevProps.onTransition && prevProps.onTransition({ isBack: true, from: prevPanel, to: nextPanel });\n });\n }\n\n const scrolls = this.state.scrolls;\n\n // Начался переход\n if (!prevState.animated && this.state.animated) {\n const transitionStartEventData = {\n detail: {\n from: this.state.prevPanel,\n to: this.state.nextPanel,\n isBack: this.state.isBack,\n scrolls,\n },\n };\n this.document.dispatchEvent(new (this.window as any).CustomEvent(transitionStartEventName, transitionStartEventData));\n const nextPanelElement = this.pickPanel(this.state.nextPanel);\n const prevPanelElement = this.pickPanel(this.state.prevPanel);\n\n prevPanelElement.scrollTop = scrolls[this.state.prevPanel];\n if (this.state.isBack) {\n nextPanelElement.scrollTop = scrolls[this.state.nextPanel];\n }\n this.waitAnimationFinish(this.pickPanel(this.state.isBack ? this.state.prevPanel : this.state.nextPanel), this.transitionEndHandler);\n }\n\n // Начался свайп назад\n if (!prevState.swipingBack && this.state.swipingBack) {\n const transitionStartEventData = {\n detail: {\n from: this.state.swipeBackPrevPanel,\n to: this.state.swipeBackNextPanel,\n scrolls,\n },\n };\n this.document.dispatchEvent(new (this.window as any).CustomEvent(transitionStartEventName, transitionStartEventData));\n this.props.onSwipeBackStart && this.props.onSwipeBackStart();\n const nextPanelElement = this.pickPanel(this.state.swipeBackNextPanel);\n const prevPanelElement = this.pickPanel(this.state.swipeBackPrevPanel);\n\n nextPanelElement.scrollTop = scrolls[this.state.swipeBackNextPanel];\n prevPanelElement.scrollTop = scrolls[this.state.swipeBackPrevPanel];\n }\n\n // Началась анимация завершения свайпа назад.\n if (!prevState.swipeBackResult && this.state.swipeBackResult) {\n this.waitTransitionFinish(this.pickPanel(this.state.swipeBackNextPanel), this.swipingBackTransitionEndHandler);\n }\n\n // Если свайп назад отменился (когда пользователь недостаточно сильно свайпнул)\n if (prevState.swipeBackResult === SwipeBackResults.fail && !this.state.swipeBackResult) {\n this.props.scroll.scrollTo(0, scrolls[this.state.activePanel]);\n }\n\n // Закончился Safari свайп\n if (prevProps.activePanel !== this.props.activePanel && this.state.browserSwipe) {\n this.setState({\n browserSwipe: false,\n nextPanel: null,\n prevPanel: null,\n animated: false,\n visiblePanels: [this.props.activePanel],\n activePanel: this.props.activePanel,\n });\n }\n }\n\n shouldDisableTransitionMotion(): boolean {\n return this.props.configProvider.transitionMotionEnabled === false ||\n !this.props.splitCol.animate;\n }\n\n waitTransitionFinish(elem: HTMLElement, eventHandler: TransitionEventHandler): void {\n if (transitionEvent.supported) {\n elem.removeEventListener(transitionEvent.name, eventHandler);\n elem.addEventListener(transitionEvent.name, eventHandler);\n } else {\n clearTimeout(this.transitionFinishTimeout);\n this.transitionFinishTimeout = setTimeout(eventHandler, this.props.platform === ANDROID || this.props.platform === VKCOM ? 300 : 600);\n }\n }\n\n waitAnimationFinish(elem: HTMLElement, eventHandler: AnimationEventHandler): void {\n if (this.shouldDisableTransitionMotion()) {\n eventHandler();\n return;\n }\n\n if (animationEvent.supported) {\n elem.removeEventListener(animationEvent.name, eventHandler);\n elem.addEventListener(animationEvent.name, eventHandler);\n } else {\n clearTimeout(this.animationFinishTimeout);\n this.animationFinishTimeout = setTimeout(eventHandler, this.props.platform === ANDROID || this.props.platform === VKCOM ? 300 : 600);\n }\n }\n\n blurActiveElement(): void {\n if (typeof this.window !== 'undefined' && this.document.activeElement) {\n (this.document.activeElement as HTMLElement).blur();\n }\n }\n\n pickPanel(id: string) {\n return this.panelNodes[id];\n }\n\n transitionEndHandler = (e?: AnimationEvent): void => {\n if (!e || [\n 'vkui-animation-ios-next-forward',\n 'vkui-animation-ios-prev-back',\n 'vkui-animation-view-next-forward',\n 'vkui-animation-view-prev-back',\n ].includes(e.animationName)) {\n const activePanel = this.props.activePanel;\n const isBack = this.state.isBack;\n const prevPanel = this.state.prevPanel;\n this.document.dispatchEvent(createCustomEvent(this.window, transitionEndEventName));\n this.setState({\n prevPanel: null,\n nextPanel: null,\n visiblePanels: [activePanel],\n activePanel: activePanel,\n animated: false,\n isBack: undefined,\n scrolls: isBack ? removeObjectKeys(this.state.scrolls, [prevPanel]) : this.state.scrolls,\n }, () => {\n isBack && this.props.scroll.scrollTo(0, this.state.scrolls[activePanel]);\n this.props.onTransition && this.props.onTransition({ isBack, from: prevPanel, to: activePanel });\n });\n }\n };\n\n swipingBackTransitionEndHandler = (e?: TransitionEvent): void => {\n // indexOf because of vendor prefixes in old browsers\n if (!e || e?.propertyName.includes('transform') && e?.target === this.pickPanel(this.state.swipeBackNextPanel)) {\n switch (this.state.swipeBackResult) {\n case SwipeBackResults.fail:\n this.onSwipeBackCancel();\n break;\n case SwipeBackResults.success:\n this.onSwipeBackSuccess();\n }\n }\n };\n\n onSwipeBackSuccess(): void {\n this.props.onSwipeBack && this.props.onSwipeBack();\n }\n\n onSwipeBackCancel(): void {\n this.props.onSwipeBackCancel && this.props.onSwipeBackCancel();\n this.setState({\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipebackStartX: 0,\n swipeBackShift: 0,\n }, () => {\n this.document.dispatchEvent(createCustomEvent(this.window, transitionEndEventName));\n });\n }\n\n onMoveX = (e: TouchEvent): void => {\n const target = e.originalEvent.target as HTMLElement;\n if (\n target &&\n typeof target.tagName === 'string' &&\n swipeBackExcludedTags.includes(target.tagName.toLowerCase())\n ) {\n return;\n }\n\n const { platform, configProvider } = this.props;\n\n if (platform === IOS && !configProvider.isWebView && (e.startX <= 70 || e.startX >= this.window.innerWidth - 70) && !this.state.browserSwipe) {\n this.setState({ browserSwipe: true });\n }\n\n if (platform === IOS && configProvider.isWebView && this.props.onSwipeBack) {\n if (this.state.animated && e.startX <= 70) {\n return;\n }\n\n if (e.startX <= 70 && !this.state.swipingBack && this.props.history.length > 1) {\n this.setState({\n swipingBack: true,\n swipebackStartX: e.startX,\n startT: e.startT,\n swipeBackPrevPanel: this.state.activePanel,\n swipeBackNextPanel: this.props.history.slice(-2)[0],\n scrolls: {\n ...this.state.scrolls,\n [this.state.activePanel]: this.props.scroll.getScroll().y,\n },\n });\n }\n if (this.state.swipingBack) {\n let swipeBackShift;\n if (e.shiftX < 0) {\n swipeBackShift = 0;\n } else if (e.shiftX > this.window.innerWidth - this.state.swipebackStartX) {\n swipeBackShift = this.window.innerWidth;\n } else {\n swipeBackShift = e.shiftX;\n }\n this.setState({ swipeBackShift });\n }\n }\n };\n\n onEnd = (): void => {\n if (this.state.swipingBack) {\n const speed = this.state.swipeBackShift / (Date.now() - this.state.startT.getTime()) * 1000;\n if (this.state.swipeBackShift === 0) {\n this.onSwipeBackCancel();\n } else if (this.state.swipeBackShift >= this.window.innerWidth) {\n this.onSwipeBackSuccess();\n } else if (speed > 250 || this.state.swipebackStartX + this.state.swipeBackShift > this.window.innerWidth / 2) {\n this.setState({ swipeBackResult: SwipeBackResults.success });\n } else {\n this.setState({ swipeBackResult: SwipeBackResults.fail });\n }\n }\n };\n\n calcPanelSwipeStyles(panelId: string): React.CSSProperties {\n if (!canUseDOM) {\n return {};\n }\n\n const isPrev = panelId === this.state.swipeBackPrevPanel;\n const isNext = panelId === this.state.swipeBackNextPanel;\n\n if (!isPrev && !isNext || this.state.swipeBackResult) {\n return {};\n }\n\n let prevPanelTranslate = `${this.state.swipeBackShift}px`;\n let nextPanelTranslate = `${-50 + this.state.swipeBackShift * 100 / this.window.innerWidth / 2}%`;\n let prevPanelShadow = 0.3 * (this.window.innerWidth - this.state.swipeBackShift) / this.window.innerWidth;\n\n if (this.state.swipeBackResult) {\n return isPrev ? { boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})` } : {};\n }\n\n if (isNext) {\n return {\n transform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n };\n }\n if (isPrev) {\n return {\n transform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})`,\n };\n }\n\n return {};\n }\n\n render() {\n const {\n popout, modal, platform,\n activePanel: _1, splitCol, configProvider, history, nav,\n onTransition, onSwipeBack, onSwipeBackStart, onSwipeBackCancel,\n window, document, scroll,\n ...restProps\n } = this.props;\n const { prevPanel, nextPanel, activePanel, swipeBackPrevPanel, swipeBackNextPanel, swipeBackResult } = this.state;\n\n const hasPopout = !!popout;\n const hasModal = !!modal;\n\n const panels = this.panels.filter((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n\n return this.state.visiblePanels.includes(panelId) ||\n panelId === swipeBackPrevPanel ||\n panelId === swipeBackNextPanel;\n });\n\n const disableAnimation = this.shouldDisableTransitionMotion();\n\n const modifiers = {\n 'View--animated': !disableAnimation && this.state.animated,\n 'View--swiping-back': !disableAnimation && this.state.swipingBack,\n 'View--no-motion': disableAnimation,\n };\n\n return (\n <Touch\n Component=\"section\"\n {...restProps}\n vkuiClass={classNames(getClassName('View', platform), modifiers)}\n onMoveX={this.onMoveX}\n onEnd={this.onEnd}\n >\n <div vkuiClass=\"View__panels\">\n {panels.map((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n\n return (\n <div\n vkuiClass={classNames('View__panel', {\n 'View__panel--active': panelId === activePanel,\n 'View__panel--prev': panelId === prevPanel,\n 'View__panel--next': panelId === nextPanel,\n 'View__panel--swipe-back-prev': panelId === swipeBackPrevPanel,\n 'View__panel--swipe-back-next': panelId === swipeBackNextPanel,\n 'View__panel--swipe-back-success': swipeBackResult === SwipeBackResults.success,\n 'View__panel--swipe-back-failed': swipeBackResult === SwipeBackResults.fail,\n })}\n ref={(el) => this.panelNodes[panelId] = el}\n data-vkui-active-panel={panelId === activePanel ? 'true' : ''}\n style={this.calcPanelSwipeStyles(panelId)}\n key={panelId}\n >\n <div vkuiClass=\"View__panel-in\">\n {panel}\n </div>\n </div>\n );\n })}\n </div>\n <AppRootPortal>\n {hasPopout && <div vkuiClass=\"View__popout\">{popout}</div>}\n {hasModal && <div vkuiClass=\"View__modal\">{modal}</div>}\n </AppRootPortal>\n </Touch>\n );\n }\n}\n\nexport default withContext(withContext(\n withContext(\n withPlatform(withDOM<ViewProps>(View)),\n SplitColContext, 'splitCol'),\n ConfigProviderContext, 'configProvider'),\nScrollContext, 'scroll');\n"],"file":"View.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/View/View.tsx"],"names":["warn","transitionStartEventName","transitionEndEventName","SwipeBackResults","scrollsCache","swipeBackExcludedTags","View","props","e","includes","animationName","activePanel","isBack","state","prevPanel","document","dispatchEvent","window","setState","nextPanel","visiblePanels","animated","undefined","scrolls","scroll","scrollTo","onTransition","from","to","propertyName","target","pickPanel","swipeBackNextPanel","swipeBackResult","fail","onSwipeBackCancel","success","onSwipeBackSuccess","originalEvent","tagName","toLowerCase","platform","configProvider","IOS","isWebView","startX","innerWidth","browserSwipe","onSwipeBack","swipingBack","history","length","swipebackStartX","startT","swipeBackPrevPanel","slice","getScroll","y","swipeBackShift","shiftX","speed","Date","now","getTime","React","Children","toArray","children","id","prevProps","prevState","popout","blurActiveElement","modal","firstLayerId","panels","map","panel","find","transitionStartEventData","detail","CustomEvent","nextPanelElement","prevPanelElement","scrollTop","waitAnimationFinish","transitionEndHandler","onSwipeBackStart","waitTransitionFinish","swipingBackTransitionEndHandler","transitionMotionEnabled","splitCol","animate","elem","eventHandler","transitionEvent","supported","removeEventListener","name","addEventListener","clearTimeout","transitionFinishTimeout","setTimeout","ANDROID","VKCOM","shouldDisableTransitionMotion","animationEvent","animationFinishTimeout","activeElement","blur","panelNodes","panelId","canUseDOM","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","_1","nav","restProps","hasPopout","hasModal","filter","disableAnimation","modifiers","onMoveX","onEnd","el","calcPanelSwipeStyles","Component","SplitColContext","ConfigProviderContext","ScrollContext"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { transitionEvent, animationEvent } from '../../lib/supportEvents';\nimport { getClassName } from '../../helpers/getClassName';\nimport { IOS, ANDROID, VKCOM } from '../../lib/platform';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport { removeObjectKeys } from '../../lib/removeObjectKeys';\nimport { HasPlatform } from '../../types';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { withContext } from '../../hoc/withContext';\nimport { ConfigProviderContext, ConfigProviderContextInterface } from '../ConfigProvider/ConfigProviderContext';\nimport { createCustomEvent } from '../../lib/utils';\nimport { SplitColContext, SplitColContextProps } from '../SplitCol/SplitCol';\nimport { AppRootPortal } from '../AppRoot/AppRootPortal';\nimport { canUseDOM, withDOM, DOMProps } from '../../lib/dom';\nimport { ScrollContext, ScrollContextInterface } from '../AppRoot/ScrollContext';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport './View.css';\n\nconst warn = warnOnce('View');\nexport const transitionStartEventName = 'VKUI:View:transition-start';\nexport const transitionEndEventName = 'VKUI:View:transition-end';\n\nenum SwipeBackResults { fail = 1, success}\n\ninterface Scrolls {\n [index: string]: number;\n}\n\nexport type TransitionStartEventDetail = {\n scrolls: Scrolls;\n from: string;\n to: string;\n isBack: boolean;\n};\n\ninterface ViewsScrolls {\n [index: string]: Scrolls;\n}\n\ntype AnimationEventHandler = (e?: AnimationEvent) => void;\n\ntype TransitionEventHandler = (e?: TransitionEvent) => void;\n\nexport let scrollsCache: ViewsScrolls = {};\n\nconst swipeBackExcludedTags = ['input', 'textarea'];\n\nexport interface ViewProps extends React.HTMLAttributes<HTMLElement>, HasPlatform, NavIdProps {\n activePanel: string;\n /**\n * @deprecated будет удалено в 5.0.0. Используйте одноименное свойство у `SplitLayout`.\n *\n * Свойство для отрисовки `Alert`, `ActionSheet` и `ScreenSpinner`.\n */\n popout?: React.ReactNode;\n /**\n * @deprecated будет удалено в 5.0.0. Используйте одноименное свойство у `SplitLayout`.\n *\n * Свойство для отрисовки `ModalRoot`.\n */\n modal?: React.ReactNode;\n onTransition?(params: { isBack: boolean; from: string; to: string }): void;\n /**\n * callback свайпа назад\n */\n onSwipeBack?(): void;\n /**\n * callback начала анимации свайпа назад.\n */\n onSwipeBackStart?(): void;\n /**\n * callback завершения анимации отмененного пользователем свайпа\n */\n onSwipeBackCancel?(): void;\n history?: string[];\n /**\n * @ignore\n */\n splitCol?: SplitColContextProps;\n /**\n * @ignore\n */\n configProvider?: ConfigProviderContextInterface;\n /**\n * @ignore\n */\n scroll?: ScrollContextInterface;\n}\n\nexport interface ViewState {\n scrolls: Scrolls;\n animated: boolean;\n startT?: Date;\n\n visiblePanels: string[];\n activePanel: string;\n isBack: boolean;\n prevPanel: string;\n nextPanel: string;\n\n swipingBack: boolean;\n swipebackStartX: number;\n swipeBackShift: number;\n swipeBackNextPanel: string;\n swipeBackPrevPanel: string;\n swipeBackResult: SwipeBackResults;\n\n browserSwipe: boolean;\n}\n\nclass View extends React.Component<ViewProps & DOMProps, ViewState> {\n constructor(props: ViewProps) {\n super(props);\n\n this.state = {\n scrolls: scrollsCache[getNavId(props)] || {},\n animated: false,\n\n visiblePanels: [props.activePanel],\n activePanel: props.activePanel,\n isBack: undefined,\n prevPanel: null,\n nextPanel: null,\n\n swipingBack: false,\n swipebackStartX: 0,\n swipeBackShift: 0,\n swipeBackNextPanel: null,\n swipeBackPrevPanel: null,\n swipeBackResult: null,\n\n browserSwipe: false,\n };\n }\n\n static defaultProps: Partial<ViewProps> = {\n history: [],\n };\n\n private transitionFinishTimeout: ReturnType<typeof setTimeout>;\n private animationFinishTimeout: ReturnType<typeof setTimeout>;\n\n get document() {\n return this.props.document;\n }\n\n get window() {\n return this.props.window;\n }\n\n get panels() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n panelNodes: { [id: string]: HTMLDivElement } = {};\n\n componentWillUnmount() {\n const id = getNavId(this.props);\n if (id) {\n scrollsCache[id] = this.state.scrolls;\n }\n }\n\n componentDidUpdate(prevProps: ViewProps, prevState: ViewState) {\n this.props.popout && !prevProps.popout && this.blurActiveElement();\n this.props.modal && !prevProps.modal && this.blurActiveElement();\n\n // Нужен переход\n if (prevProps.activePanel !== this.props.activePanel && !prevState.swipingBack && !prevState.browserSwipe) {\n const firstLayerId = this.panels\n .map((panel) => getNavId(panel.props, warn))\n .find((id) => id === prevProps.activePanel || id === this.props.activePanel);\n\n const isBack = firstLayerId === this.props.activePanel;\n\n this.blurActiveElement();\n\n this.setState({\n visiblePanels: [prevProps.activePanel, this.props.activePanel],\n prevPanel: prevProps.activePanel,\n nextPanel: this.props.activePanel,\n activePanel: null,\n animated: true,\n scrolls: {\n ...prevState.scrolls,\n [prevProps.activePanel]: this.props.scroll.getScroll().y,\n },\n isBack,\n });\n }\n\n // Закончилась анимация свайпа назад\n if (prevProps.activePanel !== this.props.activePanel && prevState.swipingBack) {\n const nextPanel = this.props.activePanel;\n const prevPanel = prevProps.activePanel;\n this.setState({\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipebackStartX: 0,\n swipeBackShift: 0,\n activePanel: nextPanel,\n visiblePanels: [nextPanel],\n scrolls: removeObjectKeys(prevState.scrolls, [prevState.swipeBackPrevPanel]),\n }, () => {\n this.document.dispatchEvent(createCustomEvent(this.window, transitionEndEventName));\n this.props.scroll.scrollTo(0, prevState.scrolls[this.state.activePanel]);\n prevProps.onTransition && prevProps.onTransition({ isBack: true, from: prevPanel, to: nextPanel });\n });\n }\n\n const scrolls = this.state.scrolls;\n\n // Начался переход\n if (!prevState.animated && this.state.animated) {\n const transitionStartEventData = {\n detail: {\n from: this.state.prevPanel,\n to: this.state.nextPanel,\n isBack: this.state.isBack,\n scrolls,\n },\n };\n this.document.dispatchEvent(new (this.window as any).CustomEvent(transitionStartEventName, transitionStartEventData));\n const nextPanelElement = this.pickPanel(this.state.nextPanel);\n const prevPanelElement = this.pickPanel(this.state.prevPanel);\n\n prevPanelElement.scrollTop = scrolls[this.state.prevPanel];\n if (this.state.isBack) {\n nextPanelElement.scrollTop = scrolls[this.state.nextPanel];\n }\n this.waitAnimationFinish(this.pickPanel(this.state.isBack ? this.state.prevPanel : this.state.nextPanel), this.transitionEndHandler);\n }\n\n // Начался свайп назад\n if (!prevState.swipingBack && this.state.swipingBack) {\n const transitionStartEventData = {\n detail: {\n from: this.state.swipeBackPrevPanel,\n to: this.state.swipeBackNextPanel,\n scrolls,\n },\n };\n this.document.dispatchEvent(new (this.window as any).CustomEvent(transitionStartEventName, transitionStartEventData));\n this.props.onSwipeBackStart && this.props.onSwipeBackStart();\n const nextPanelElement = this.pickPanel(this.state.swipeBackNextPanel);\n const prevPanelElement = this.pickPanel(this.state.swipeBackPrevPanel);\n\n nextPanelElement.scrollTop = scrolls[this.state.swipeBackNextPanel];\n prevPanelElement.scrollTop = scrolls[this.state.swipeBackPrevPanel];\n }\n\n // Началась анимация завершения свайпа назад.\n if (!prevState.swipeBackResult && this.state.swipeBackResult) {\n this.waitTransitionFinish(this.pickPanel(this.state.swipeBackNextPanel), this.swipingBackTransitionEndHandler);\n }\n\n // Если свайп назад отменился (когда пользователь недостаточно сильно свайпнул)\n if (prevState.swipeBackResult === SwipeBackResults.fail && !this.state.swipeBackResult) {\n this.props.scroll.scrollTo(0, scrolls[this.state.activePanel]);\n }\n\n // Закончился Safari свайп\n if (prevProps.activePanel !== this.props.activePanel && this.state.browserSwipe) {\n this.setState({\n browserSwipe: false,\n nextPanel: null,\n prevPanel: null,\n animated: false,\n visiblePanels: [this.props.activePanel],\n activePanel: this.props.activePanel,\n });\n }\n }\n\n shouldDisableTransitionMotion(): boolean {\n return this.props.configProvider.transitionMotionEnabled === false ||\n !this.props.splitCol.animate;\n }\n\n waitTransitionFinish(elem: HTMLElement, eventHandler: TransitionEventHandler): void {\n if (transitionEvent.supported) {\n elem.removeEventListener(transitionEvent.name, eventHandler);\n elem.addEventListener(transitionEvent.name, eventHandler);\n } else {\n clearTimeout(this.transitionFinishTimeout);\n this.transitionFinishTimeout = setTimeout(eventHandler, this.props.platform === ANDROID || this.props.platform === VKCOM ? 300 : 600);\n }\n }\n\n waitAnimationFinish(elem: HTMLElement, eventHandler: AnimationEventHandler): void {\n if (this.shouldDisableTransitionMotion()) {\n eventHandler();\n return;\n }\n\n if (animationEvent.supported) {\n elem.removeEventListener(animationEvent.name, eventHandler);\n elem.addEventListener(animationEvent.name, eventHandler);\n } else {\n clearTimeout(this.animationFinishTimeout);\n this.animationFinishTimeout = setTimeout(eventHandler, this.props.platform === ANDROID || this.props.platform === VKCOM ? 300 : 600);\n }\n }\n\n blurActiveElement(): void {\n if (typeof this.window !== 'undefined' && this.document.activeElement) {\n (this.document.activeElement as HTMLElement).blur();\n }\n }\n\n pickPanel(id: string) {\n return this.panelNodes[id];\n }\n\n transitionEndHandler = (e?: AnimationEvent): void => {\n if (!e || [\n 'vkui-animation-ios-next-forward',\n 'vkui-animation-ios-prev-back',\n 'vkui-animation-view-next-forward',\n 'vkui-animation-view-prev-back',\n ].includes(e.animationName)) {\n const activePanel = this.props.activePanel;\n const isBack = this.state.isBack;\n const prevPanel = this.state.prevPanel;\n this.document.dispatchEvent(createCustomEvent(this.window, transitionEndEventName));\n this.setState({\n prevPanel: null,\n nextPanel: null,\n visiblePanels: [activePanel],\n activePanel: activePanel,\n animated: false,\n isBack: undefined,\n scrolls: isBack ? removeObjectKeys(this.state.scrolls, [prevPanel]) : this.state.scrolls,\n }, () => {\n isBack && this.props.scroll.scrollTo(0, this.state.scrolls[activePanel]);\n this.props.onTransition && this.props.onTransition({ isBack, from: prevPanel, to: activePanel });\n });\n }\n };\n\n swipingBackTransitionEndHandler = (e?: TransitionEvent): void => {\n // indexOf because of vendor prefixes in old browsers\n if (!e || e?.propertyName.includes('transform') && e?.target === this.pickPanel(this.state.swipeBackNextPanel)) {\n switch (this.state.swipeBackResult) {\n case SwipeBackResults.fail:\n this.onSwipeBackCancel();\n break;\n case SwipeBackResults.success:\n this.onSwipeBackSuccess();\n }\n }\n };\n\n onSwipeBackSuccess(): void {\n this.props.onSwipeBack && this.props.onSwipeBack();\n }\n\n onSwipeBackCancel(): void {\n this.props.onSwipeBackCancel && this.props.onSwipeBackCancel();\n this.setState({\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipebackStartX: 0,\n swipeBackShift: 0,\n }, () => {\n this.document.dispatchEvent(createCustomEvent(this.window, transitionEndEventName));\n });\n }\n\n onMoveX = (e: TouchEvent): void => {\n const target = e.originalEvent.target as HTMLElement;\n if (\n target &&\n typeof target.tagName === 'string' &&\n swipeBackExcludedTags.includes(target.tagName.toLowerCase())\n ) {\n return;\n }\n\n const { platform, configProvider } = this.props;\n\n if (platform === IOS && !configProvider.isWebView && (e.startX <= 70 || e.startX >= this.window.innerWidth - 70) && !this.state.browserSwipe) {\n this.setState({ browserSwipe: true });\n }\n\n if (platform === IOS && configProvider.isWebView && this.props.onSwipeBack) {\n if (this.state.animated && e.startX <= 70) {\n return;\n }\n\n if (e.startX <= 70 && !this.state.swipingBack && this.props.history.length > 1) {\n this.setState({\n swipingBack: true,\n swipebackStartX: e.startX,\n startT: e.startT,\n swipeBackPrevPanel: this.state.activePanel,\n swipeBackNextPanel: this.props.history.slice(-2)[0],\n scrolls: {\n ...this.state.scrolls,\n [this.state.activePanel]: this.props.scroll.getScroll().y,\n },\n });\n }\n if (this.state.swipingBack) {\n let swipeBackShift;\n if (e.shiftX < 0) {\n swipeBackShift = 0;\n } else if (e.shiftX > this.window.innerWidth - this.state.swipebackStartX) {\n swipeBackShift = this.window.innerWidth;\n } else {\n swipeBackShift = e.shiftX;\n }\n this.setState({ swipeBackShift });\n }\n }\n };\n\n onEnd = (): void => {\n if (this.state.swipingBack) {\n const speed = this.state.swipeBackShift / (Date.now() - this.state.startT.getTime()) * 1000;\n if (this.state.swipeBackShift === 0) {\n this.onSwipeBackCancel();\n } else if (this.state.swipeBackShift >= this.window.innerWidth) {\n this.onSwipeBackSuccess();\n } else if (speed > 250 || this.state.swipebackStartX + this.state.swipeBackShift > this.window.innerWidth / 2) {\n this.setState({ swipeBackResult: SwipeBackResults.success });\n } else {\n this.setState({ swipeBackResult: SwipeBackResults.fail });\n }\n }\n };\n\n calcPanelSwipeStyles(panelId: string): React.CSSProperties {\n if (!canUseDOM) {\n return {};\n }\n\n const isPrev = panelId === this.state.swipeBackPrevPanel;\n const isNext = panelId === this.state.swipeBackNextPanel;\n\n if (!isPrev && !isNext || this.state.swipeBackResult) {\n return {};\n }\n\n let prevPanelTranslate = `${this.state.swipeBackShift}px`;\n let nextPanelTranslate = `${-50 + this.state.swipeBackShift * 100 / this.window.innerWidth / 2}%`;\n let prevPanelShadow = 0.3 * (this.window.innerWidth - this.state.swipeBackShift) / this.window.innerWidth;\n\n if (this.state.swipeBackResult) {\n return isPrev ? { boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})` } : {};\n }\n\n if (isNext) {\n return {\n transform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n };\n }\n if (isPrev) {\n return {\n transform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})`,\n };\n }\n\n return {};\n }\n\n render() {\n const {\n popout, modal, platform,\n activePanel: _1, splitCol, configProvider, history, nav,\n onTransition, onSwipeBack, onSwipeBackStart, onSwipeBackCancel,\n window, document, scroll,\n ...restProps\n } = this.props;\n const { prevPanel, nextPanel, activePanel, swipeBackPrevPanel, swipeBackNextPanel, swipeBackResult } = this.state;\n\n const hasPopout = !!popout;\n const hasModal = !!modal;\n\n const panels = this.panels.filter((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n\n return this.state.visiblePanels.includes(panelId) ||\n panelId === swipeBackPrevPanel ||\n panelId === swipeBackNextPanel;\n });\n\n const disableAnimation = this.shouldDisableTransitionMotion();\n\n const modifiers = {\n 'View--animated': !disableAnimation && this.state.animated,\n 'View--swiping-back': !disableAnimation && this.state.swipingBack,\n 'View--no-motion': disableAnimation,\n };\n\n return (\n <Touch\n Component=\"section\"\n {...restProps}\n vkuiClass={classNames(getClassName('View', platform), modifiers)}\n onMoveX={this.onMoveX}\n onEnd={this.onEnd}\n >\n <div vkuiClass=\"View__panels\">\n {panels.map((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n\n return (\n <div\n vkuiClass={classNames('View__panel', {\n 'View__panel--active': panelId === activePanel,\n 'View__panel--prev': panelId === prevPanel,\n 'View__panel--next': panelId === nextPanel,\n 'View__panel--swipe-back-prev': panelId === swipeBackPrevPanel,\n 'View__panel--swipe-back-next': panelId === swipeBackNextPanel,\n 'View__panel--swipe-back-success': swipeBackResult === SwipeBackResults.success,\n 'View__panel--swipe-back-failed': swipeBackResult === SwipeBackResults.fail,\n })}\n ref={(el) => this.panelNodes[panelId] = el}\n data-vkui-active-panel={panelId === activePanel ? 'true' : ''}\n style={this.calcPanelSwipeStyles(panelId)}\n key={panelId}\n >\n <div vkuiClass=\"View__panel-in\">\n {panel}\n </div>\n </div>\n );\n })}\n </div>\n <AppRootPortal>\n {hasPopout && <div vkuiClass=\"View__popout\">{popout}</div>}\n {hasModal && <div vkuiClass=\"View__modal\">{modal}</div>}\n </AppRootPortal>\n </Touch>\n );\n }\n}\n\nexport default withContext(withContext(\n withContext(\n withPlatform(withDOM<ViewProps>(View)),\n SplitColContext, 'splitCol'),\n ConfigProviderContext, 'configProvider'),\nScrollContext, 'scroll');\n"],"file":"View.js"}
|
|
@@ -41,7 +41,7 @@ var _getClassName = require("../../helpers/getClassName");
|
|
|
41
41
|
|
|
42
42
|
var _platform = require("../../lib/platform");
|
|
43
43
|
|
|
44
|
-
var _Touch =
|
|
44
|
+
var _Touch = require("../Touch/Touch");
|
|
45
45
|
|
|
46
46
|
var _withPlatform = require("../../hoc/withPlatform");
|
|
47
47
|
|
|
@@ -574,7 +574,7 @@ var ViewInfinite = /*#__PURE__*/function (_React$Component) {
|
|
|
574
574
|
'View--swiping-back': !disableAnimation && this.state.swipingBack,
|
|
575
575
|
'View--no-motion': disableAnimation
|
|
576
576
|
};
|
|
577
|
-
return (0, _jsxRuntime.createScopedElement)(_Touch.
|
|
577
|
+
return (0, _jsxRuntime.createScopedElement)(_Touch.Touch, (0, _extends2.default)({
|
|
578
578
|
Component: "section"
|
|
579
579
|
}, restProps, {
|
|
580
580
|
vkuiClass: (0, _classNames.classNames)((0, _getClassName.getClassName)('View', platform), modifiers),
|