@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,318 +1,195 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
-
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
2
|
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
|
|
7
|
-
import _inherits from "@babel/runtime/helpers/inherits";
|
|
8
|
-
import _createSuper from "@babel/runtime/helpers/createSuper";
|
|
9
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
10
|
-
var _excluded = ["onStart", "onStartX", "onStartY", "onMove", "onMoveX", "onMoveY", "onLeave", "onEnter", "onEnd", "onEndX", "onEndY", "useCapture", "Component", "getRootRef", "noSlideClick", "window", "document"];
|
|
3
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
4
|
+
var _excluded = ["onStart", "onStartX", "onStartY", "onMove", "onMoveX", "onMoveY", "onLeave", "onEnter", "onEnd", "onEndX", "onEndY", "onClickCapture", "useCapture", "Component", "getRootRef", "noSlideClick"];
|
|
11
5
|
import { createScopedElement } from "../../lib/jsxRuntime";
|
|
12
6
|
import * as React from 'react';
|
|
13
7
|
import { getSupportedEvents, coordX, coordY, touchEnabled } from "../../lib/touch";
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
var Touch =
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
_defineProperty(_assertThisInitialized(_this), "onStart", function (e) {
|
|
53
|
-
_this.gesture = {
|
|
54
|
-
startX: coordX(e),
|
|
55
|
-
startY: coordY(e),
|
|
56
|
-
startT: new Date(),
|
|
57
|
-
isPressed: true
|
|
58
|
-
}; // Вызываем нужные колбеки из props
|
|
59
|
-
|
|
60
|
-
var outputEvent = _objectSpread(_objectSpread({}, _this.gesture), {}, {
|
|
8
|
+
import { useDOM } from "../../lib/dom";
|
|
9
|
+
import { useExternRef } from "../../hooks/useExternRef";
|
|
10
|
+
import { useEventListener } from "../../hooks/useEventListener";
|
|
11
|
+
import { useIsomorphicLayoutEffect } from "../../lib/useIsomorphicLayoutEffect";
|
|
12
|
+
export var Touch = function Touch(_ref) {
|
|
13
|
+
var onStart = _ref.onStart,
|
|
14
|
+
onStartX = _ref.onStartX,
|
|
15
|
+
onStartY = _ref.onStartY,
|
|
16
|
+
_onMove = _ref.onMove,
|
|
17
|
+
onMoveX = _ref.onMoveX,
|
|
18
|
+
onMoveY = _ref.onMoveY,
|
|
19
|
+
onLeave = _ref.onLeave,
|
|
20
|
+
onEnter = _ref.onEnter,
|
|
21
|
+
_onEnd = _ref.onEnd,
|
|
22
|
+
onEndX = _ref.onEndX,
|
|
23
|
+
onEndY = _ref.onEndY,
|
|
24
|
+
onClickCapture = _ref.onClickCapture,
|
|
25
|
+
_ref$useCapture = _ref.useCapture,
|
|
26
|
+
useCapture = _ref$useCapture === void 0 ? false : _ref$useCapture,
|
|
27
|
+
_ref$Component = _ref.Component,
|
|
28
|
+
Component = _ref$Component === void 0 ? 'div' : _ref$Component,
|
|
29
|
+
getRootRef = _ref.getRootRef,
|
|
30
|
+
_ref$noSlideClick = _ref.noSlideClick,
|
|
31
|
+
noSlideClick = _ref$noSlideClick === void 0 ? false : _ref$noSlideClick,
|
|
32
|
+
restProps = _objectWithoutProperties(_ref, _excluded);
|
|
33
|
+
|
|
34
|
+
var _useDOM = useDOM(),
|
|
35
|
+
document = _useDOM.document;
|
|
36
|
+
|
|
37
|
+
var events = React.useMemo(getSupportedEvents, []);
|
|
38
|
+
var didSlide = React.useRef(false);
|
|
39
|
+
var gesture = React.useRef({});
|
|
40
|
+
|
|
41
|
+
var handle = function handle(e, handers) {
|
|
42
|
+
return handers.forEach(function (cb) {
|
|
43
|
+
cb && cb(_objectSpread(_objectSpread({}, gesture.current), {}, {
|
|
61
44
|
originalEvent: e
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
if (_this.props.onStart) {
|
|
65
|
-
_this.props.onStart(outputEvent);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
if (_this.props.onStartX) {
|
|
69
|
-
_this.props.onStartX(outputEvent);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
if (_this.props.onStartY) {
|
|
73
|
-
_this.props.onStartY(outputEvent);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
!touchEnabled && _this.subscribe(_this.document);
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
_defineProperty(_assertThisInitialized(_this), "onMove", function (e) {
|
|
80
|
-
var _this$gesture = _this.gesture,
|
|
81
|
-
isPressed = _this$gesture.isPressed,
|
|
82
|
-
isX = _this$gesture.isX,
|
|
83
|
-
isY = _this$gesture.isY,
|
|
84
|
-
startX = _this$gesture.startX,
|
|
85
|
-
startY = _this$gesture.startY;
|
|
86
|
-
|
|
87
|
-
if (isPressed) {
|
|
88
|
-
// смещения
|
|
89
|
-
var shiftX = coordX(e) - startX;
|
|
90
|
-
var shiftY = coordY(e) - startY; // абсолютные значения смещений
|
|
91
|
-
|
|
92
|
-
var shiftXAbs = Math.abs(shiftX);
|
|
93
|
-
var shiftYAbs = Math.abs(shiftY); // Если определяем мультитач, то прерываем жест
|
|
94
|
-
|
|
95
|
-
if (!!e.touches && e.touches.length > 1) {
|
|
96
|
-
return _this.onEnd(e);
|
|
97
|
-
} // если мы ещё не определились
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
if (!isX && !isY) {
|
|
101
|
-
var willBeX = shiftXAbs >= 5 && shiftXAbs > shiftYAbs;
|
|
102
|
-
var willBeY = shiftYAbs >= 5 && shiftYAbs > shiftXAbs;
|
|
103
|
-
var willBeSlidedX = willBeX && !!_this.props.onMoveX || !!_this.props.onMove;
|
|
104
|
-
var willBeSlidedY = willBeY && !!_this.props.onMoveY || !!_this.props.onMove;
|
|
105
|
-
_this.gesture.isY = willBeY;
|
|
106
|
-
_this.gesture.isX = willBeX;
|
|
107
|
-
_this.gesture.isSlideX = willBeSlidedX;
|
|
108
|
-
_this.gesture.isSlideY = willBeSlidedY;
|
|
109
|
-
_this.gesture.isSlide = willBeSlidedX || willBeSlidedY;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
if (_this.gesture.isSlide) {
|
|
113
|
-
_this.gesture.shiftX = shiftX;
|
|
114
|
-
_this.gesture.shiftY = shiftY;
|
|
115
|
-
_this.gesture.shiftXAbs = shiftXAbs;
|
|
116
|
-
_this.gesture.shiftYAbs = shiftYAbs; // Вызываем нужные колбеки из props
|
|
117
|
-
|
|
118
|
-
var _outputEvent = _objectSpread(_objectSpread({}, _this.gesture), {}, {
|
|
119
|
-
originalEvent: e
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
if (_this.props.onMove) {
|
|
123
|
-
_this.props.onMove(_outputEvent);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
if (_this.gesture.isSlideX && _this.props.onMoveX) {
|
|
127
|
-
_this.props.onMoveX(_outputEvent);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
if (_this.gesture.isSlideY && _this.props.onMoveY) {
|
|
131
|
-
_this.props.onMoveY(_outputEvent);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
45
|
+
}));
|
|
135
46
|
});
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
var mouseEnterHandler = useEventListener('mouseenter', onEnter);
|
|
50
|
+
var mouseLeaveHandler = useEventListener('mouseleave', onLeave);
|
|
51
|
+
var startHandler = useEventListener(events[0], function (e) {
|
|
52
|
+
gesture.current = {
|
|
53
|
+
startX: coordX(e),
|
|
54
|
+
startY: coordY(e),
|
|
55
|
+
startT: new Date(),
|
|
56
|
+
isPressed: true
|
|
57
|
+
};
|
|
58
|
+
handle(e, [onStart, onStartX, onStartY]);
|
|
59
|
+
!touchEnabled() && subscribe(document);
|
|
60
|
+
}, {
|
|
61
|
+
capture: useCapture,
|
|
62
|
+
passive: false
|
|
63
|
+
});
|
|
64
|
+
var containerRef = useExternRef(getRootRef);
|
|
65
|
+
useIsomorphicLayoutEffect(function () {
|
|
66
|
+
var el = containerRef.current;
|
|
67
|
+
mouseEnterHandler.add(el);
|
|
68
|
+
mouseLeaveHandler.add(el);
|
|
69
|
+
startHandler.add(el);
|
|
70
|
+
touchEnabled() && subscribe(el);
|
|
71
|
+
}, [Component]);
|
|
72
|
+
|
|
73
|
+
function onMove(e) {
|
|
74
|
+
var _gesture$current = gesture.current,
|
|
75
|
+
isPressed = _gesture$current.isPressed,
|
|
76
|
+
isX = _gesture$current.isX,
|
|
77
|
+
isY = _gesture$current.isY,
|
|
78
|
+
startX = _gesture$current.startX,
|
|
79
|
+
startY = _gesture$current.startY;
|
|
80
|
+
|
|
81
|
+
if (isPressed) {
|
|
82
|
+
// смещения
|
|
83
|
+
var shiftX = coordX(e) - startX;
|
|
84
|
+
var shiftY = coordY(e) - startY; // абсолютные значения смещений
|
|
85
|
+
|
|
86
|
+
var shiftXAbs = Math.abs(shiftX);
|
|
87
|
+
var shiftYAbs = Math.abs(shiftY); // Если определяем мультитач, то прерываем жест
|
|
88
|
+
|
|
89
|
+
if (!!e.touches && e.touches.length > 1) {
|
|
90
|
+
return onEnd(e);
|
|
91
|
+
} // если мы ещё не определились
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
if (!isX && !isY) {
|
|
95
|
+
var willBeX = shiftXAbs >= 5 && shiftXAbs > shiftYAbs;
|
|
96
|
+
var willBeY = shiftYAbs >= 5 && shiftYAbs > shiftXAbs;
|
|
97
|
+
var willBeSlidedX = willBeX && (!!onMoveX || !!_onMove);
|
|
98
|
+
var willBeSlidedY = willBeY && (!!onMoveY || !!_onMove);
|
|
99
|
+
Object.assign(gesture.current, {
|
|
100
|
+
isY: willBeY,
|
|
101
|
+
isX: willBeX,
|
|
102
|
+
isSlideX: willBeSlidedX,
|
|
103
|
+
isSlideY: willBeSlidedY,
|
|
104
|
+
isSlide: willBeSlidedX || willBeSlidedY
|
|
148
105
|
});
|
|
149
|
-
|
|
150
|
-
if (_this.props.onEnd) {
|
|
151
|
-
_this.props.onEnd(_outputEvent2);
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
if (isSlideY && _this.props.onEndY) {
|
|
155
|
-
_this.props.onEndY(_outputEvent2);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
if (isSlideX && _this.props.onEndX) {
|
|
159
|
-
_this.props.onEndX(_outputEvent2);
|
|
160
|
-
}
|
|
161
106
|
}
|
|
162
107
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
108
|
+
if (gesture.current.isSlide) {
|
|
109
|
+
Object.assign(gesture.current, {
|
|
110
|
+
shiftX: shiftX,
|
|
111
|
+
shiftY: shiftY,
|
|
112
|
+
shiftXAbs: shiftXAbs,
|
|
113
|
+
shiftYAbs: shiftYAbs
|
|
114
|
+
});
|
|
115
|
+
handle(e, [_onMove, gesture.current.isSlideX && onMoveX, gesture.current.isSlideY && onMoveY]);
|
|
168
116
|
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
169
119
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
var target = e.target;
|
|
120
|
+
function onEnd(e) {
|
|
121
|
+
var _gesture$current2 = gesture.current,
|
|
122
|
+
isPressed = _gesture$current2.isPressed,
|
|
123
|
+
isSlide = _gesture$current2.isSlide,
|
|
124
|
+
isSlideX = _gesture$current2.isSlideX,
|
|
125
|
+
isSlideY = _gesture$current2.isSlideY;
|
|
177
126
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
});
|
|
127
|
+
if (isPressed) {
|
|
128
|
+
handle(e, [_onEnd, isSlideY && onEndY, isSlideX && onEndX]);
|
|
129
|
+
}
|
|
182
130
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
onClickCapture = _this$props.onClickCapture,
|
|
186
|
-
noSlideClick = _this$props.noSlideClick;
|
|
131
|
+
didSlide.current = isSlide;
|
|
132
|
+
gesture.current = {}; // Если это был тач-евент, симулируем отмену hover
|
|
187
133
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
134
|
+
if (e.type === 'touchend' || e.type === 'touchcancel') {
|
|
135
|
+
onLeave && onLeave(e);
|
|
136
|
+
}
|
|
191
137
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
}
|
|
138
|
+
!touchEnabled() && subscribe(null);
|
|
139
|
+
}
|
|
195
140
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
141
|
+
var listenerParams = {
|
|
142
|
+
capture: useCapture,
|
|
143
|
+
passive: false
|
|
144
|
+
};
|
|
145
|
+
var listeners = [useEventListener(events[1], onMove, listenerParams), useEventListener(events[2], onEnd, listenerParams), useEventListener(events[3], onEnd, listenerParams)];
|
|
201
146
|
|
|
202
|
-
|
|
147
|
+
function subscribe(el) {
|
|
148
|
+
listeners.forEach(function (l) {
|
|
149
|
+
return l.add(el);
|
|
203
150
|
});
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Обработчик событий dragstart
|
|
154
|
+
* Отменяет нативное браузерное поведение для вложенных ссылок и изображений
|
|
155
|
+
*/
|
|
204
156
|
|
|
205
|
-
_defineProperty(_assertThisInitialized(_this), "getRef", function (container) {
|
|
206
|
-
_this.container = container;
|
|
207
|
-
setRef(container, _this.props.getRootRef);
|
|
208
|
-
});
|
|
209
157
|
|
|
210
|
-
|
|
211
|
-
|
|
158
|
+
var onDragStart = function onDragStart(e) {
|
|
159
|
+
var target = e.target;
|
|
212
160
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
get: function get() {
|
|
216
|
-
return this.props.document;
|
|
161
|
+
if (target.tagName === 'A' || target.tagName === 'IMG') {
|
|
162
|
+
e.preventDefault();
|
|
217
163
|
}
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
capture: this.props.useCapture,
|
|
224
|
-
passive: false
|
|
225
|
-
});
|
|
226
|
-
touchEnabled && this.subscribe(this.container);
|
|
227
|
-
this.container.addEventListener('mouseenter', this.onEnter, {
|
|
228
|
-
capture: this.props.useCapture,
|
|
229
|
-
passive: true
|
|
230
|
-
});
|
|
231
|
-
this.container.addEventListener('mouseleave', this.onLeave, {
|
|
232
|
-
capture: this.props.useCapture,
|
|
233
|
-
passive: true
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
}, {
|
|
238
|
-
key: "componentWillUnmount",
|
|
239
|
-
value: function componentWillUnmount() {
|
|
240
|
-
this.container.removeEventListener(events[0], this.onStart);
|
|
241
|
-
this.unsubscribe();
|
|
242
|
-
this.container.removeEventListener('mouseenter', this.onEnter);
|
|
243
|
-
this.container.removeEventListener('mouseleave', this.onLeave);
|
|
244
|
-
}
|
|
245
|
-
/**
|
|
246
|
-
* Обработчик событий mouseenter
|
|
247
|
-
*
|
|
248
|
-
* @param {Object} e Браузерное событие
|
|
249
|
-
* @return {void}
|
|
250
|
-
*/
|
|
164
|
+
};
|
|
165
|
+
/**
|
|
166
|
+
* Обработчик клика по компоненту
|
|
167
|
+
* Отменяет переход по вложенной ссылке, если был зафиксирован свайп
|
|
168
|
+
*/
|
|
251
169
|
|
|
252
|
-
}, {
|
|
253
|
-
key: "subscribe",
|
|
254
|
-
value: function subscribe(element) {
|
|
255
|
-
var _this2 = this;
|
|
256
|
-
|
|
257
|
-
this.unsubscribe();
|
|
258
|
-
var listenerParams = {
|
|
259
|
-
capture: this.props.useCapture,
|
|
260
|
-
passive: false
|
|
261
|
-
};
|
|
262
|
-
element.addEventListener(events[1], this.onMove, listenerParams);
|
|
263
|
-
element.addEventListener(events[2], this.onEnd, listenerParams);
|
|
264
|
-
element.addEventListener(events[3], this.onEnd, listenerParams);
|
|
265
170
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
// https://github.com/VKCOM/VKUI/issues/444
|
|
270
|
-
element.removeEventListener(events[1], _this2.onMove, listenerParams);
|
|
271
|
-
element.removeEventListener(events[2], _this2.onEnd, listenerParams);
|
|
272
|
-
element.removeEventListener(events[3], _this2.onEnd, listenerParams);
|
|
273
|
-
_this2.unsubscribe = noop;
|
|
274
|
-
};
|
|
171
|
+
var postGestureClick = function postGestureClick(e) {
|
|
172
|
+
if (!didSlide.current) {
|
|
173
|
+
return onClickCapture && onClickCapture(e);
|
|
275
174
|
}
|
|
276
|
-
}, {
|
|
277
|
-
key: "render",
|
|
278
|
-
value: function render() {
|
|
279
|
-
var _this$props2 = this.props,
|
|
280
|
-
onStart = _this$props2.onStart,
|
|
281
|
-
onStartX = _this$props2.onStartX,
|
|
282
|
-
onStartY = _this$props2.onStartY,
|
|
283
|
-
onMove = _this$props2.onMove,
|
|
284
|
-
onMoveX = _this$props2.onMoveX,
|
|
285
|
-
onMoveY = _this$props2.onMoveY,
|
|
286
|
-
onLeave = _this$props2.onLeave,
|
|
287
|
-
onEnter = _this$props2.onEnter,
|
|
288
|
-
onEnd = _this$props2.onEnd,
|
|
289
|
-
onEndX = _this$props2.onEndX,
|
|
290
|
-
onEndY = _this$props2.onEndY,
|
|
291
|
-
useCapture = _this$props2.useCapture,
|
|
292
|
-
Component = _this$props2.Component,
|
|
293
|
-
getRootRef = _this$props2.getRootRef,
|
|
294
|
-
noSlideClick = _this$props2.noSlideClick,
|
|
295
|
-
window = _this$props2.window,
|
|
296
|
-
document = _this$props2.document,
|
|
297
|
-
restProps = _objectWithoutProperties(_this$props2, _excluded);
|
|
298
175
|
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
onClickCapture: this.postGestureClick,
|
|
302
|
-
ref: this.getRef
|
|
303
|
-
}), this.props.children);
|
|
176
|
+
if (e.target.tagName === 'A') {
|
|
177
|
+
e.preventDefault();
|
|
304
178
|
}
|
|
305
|
-
}]);
|
|
306
179
|
|
|
307
|
-
|
|
308
|
-
|
|
180
|
+
if (noSlideClick) {
|
|
181
|
+
e.stopPropagation();
|
|
182
|
+
} else {
|
|
183
|
+
onClickCapture && onClickCapture(e);
|
|
184
|
+
}
|
|
309
185
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
children: '',
|
|
313
|
-
useCapture: false,
|
|
314
|
-
noSlideClick: false
|
|
315
|
-
});
|
|
186
|
+
didSlide.current = false;
|
|
187
|
+
};
|
|
316
188
|
|
|
317
|
-
|
|
189
|
+
return createScopedElement(Component, _extends({}, restProps, {
|
|
190
|
+
onDragStart: onDragStart,
|
|
191
|
+
onClickCapture: postGestureClick,
|
|
192
|
+
ref: containerRef
|
|
193
|
+
}));
|
|
194
|
+
};
|
|
318
195
|
//# sourceMappingURL=Touch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Touch/Touch.tsx"],"names":["React","getSupportedEvents","coordX","coordY","touchEnabled","canUseDOM","withDOM","setRef","noop","events","Touch","e","props","onEnter","onLeave","gesture","startX","startY","startT","Date","isPressed","outputEvent","originalEvent","onStart","onStartX","onStartY","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","target","tagName","preventDefault","onClickCapture","noSlideClick","stopPropagation","container","getRootRef","addEventListener","capture","useCapture","passive","removeEventListener","element","listenerParams","Component","window","restProps","onDragStart","postGestureClick","getRef","children"],"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":["React","getSupportedEvents","coordX","coordY","touchEnabled","useDOM","useExternRef","useEventListener","useIsomorphicLayoutEffect","Touch","onStart","onStartX","onStartY","_onMove","onMove","onMoveX","onMoveY","onLeave","onEnter","_onEnd","onEnd","onEndX","onEndY","onClickCapture","useCapture","Component","getRootRef","noSlideClick","restProps","document","events","useMemo","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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.vkuiUsersStack{display:flex;align-items:center;color:#818c99;color:var(--text_secondary)}.vkuiUsersStack__photos{display:flex}.vkuiUsersStack__photo{background-position:center;background-repeat:no-repeat;background-size:cover;border-radius:50%;background-color:rgba(0,28,61,.08);background-color:var(--placeholder_icon_background)}.vkuiUsersStack__photo--others{display:flex;align-items:center;justify-content:center;color:#fff;background:#99a2ad;background:var(--content_placeholder_icon)}.vkuiUsersStack--size-xs .vkuiUsersStack__photo{width:16px;height:16px}.vkuiUsersStack--size-s .vkuiUsersStack__photo{width:24px;height:24px}.vkuiUsersStack--size-m .vkuiUsersStack__photo{width:32px;height:32px}.vkuiUsersStack__photo+.vkuiUsersStack__photo{margin-left
|
|
1
|
+
.vkuiUsersStack{display:flex;align-items:center;color:#818c99;color:var(--text_secondary)}.vkuiUsersStack__photos{display:flex}.vkuiUsersStack__photo{background-position:center;background-repeat:no-repeat;background-size:cover;border-radius:50%;background-color:rgba(0,28,61,.08);background-color:var(--placeholder_icon_background)}.vkuiUsersStack__photo--others{display:flex;align-items:center;justify-content:center;color:#fff;background:#99a2ad;background:var(--content_placeholder_icon)}.vkuiUsersStack--size-xs .vkuiUsersStack__photo{width:16px;height:16px}.vkuiUsersStack--size-s .vkuiUsersStack__photo{width:24px;height:24px}.vkuiUsersStack--size-m .vkuiUsersStack__photo{width:32px;height:32px}.vkuiUsersStack__photo+.vkuiUsersStack__photo{margin-left:-2px}.vkuiUsersStack--size-xs .vkuiUsersStack__photo+.vkuiUsersStack__photo{margin-left:-1px;-webkit-clip-path:url(#users_stack_mask_16_left);clip-path:url(#users_stack_mask_16_left)}.vkuiUsersStack--size-s .vkuiUsersStack__photo+.vkuiUsersStack__photo{-webkit-clip-path:url(#users_stack_mask_24_left);clip-path:url(#users_stack_mask_24_left)}.vkuiUsersStack--size-m .vkuiUsersStack__photo+.vkuiUsersStack__photo{-webkit-clip-path:url(#users_stack_mask_32_left);clip-path:url(#users_stack_mask_32_left)}.vkuiUsersStack--size-m.vkuiUsersStack--others .vkuiUsersStack__photo{-webkit-clip-path:url(#users_stack_mask_32_right);clip-path:url(#users_stack_mask_32_right)}.vkuiUsersStack--size-m.vkuiUsersStack--others .vkuiUsersStack__photo:last-child{-webkit-clip-path:none;clip-path:none}.vkuiUsersStack__text{min-width:0;flex:1;margin:0 0 0 8px}.vkuiUsersStack--l-vertical{flex-direction:column;justify-content:center}.vkuiUsersStack--l-vertical .vkuiUsersStack__text{margin:8px 0 0;text-align:center}.vkuiModalCardBase .vkuiUsersStack{margin-top:20px}.vkuiRichCell__bottom .vkuiUsersStack{padding:5px 0 0}
|
|
@@ -4,22 +4,17 @@ var _excluded = ["photos", "visibleCount", "size", "layout", "children"];
|
|
|
4
4
|
import { createScopedElement } from "../../lib/jsxRuntime";
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import { getClassName } from "../../helpers/getClassName";
|
|
7
|
-
import { useBrowserInfo } from "../../hooks/useBrowserInfo";
|
|
8
7
|
import { usePlatform } from "../../hooks/usePlatform";
|
|
9
8
|
import { hasReactNode } from "../../lib/utils";
|
|
10
9
|
import { classNames } from "../../lib/classNames";
|
|
11
|
-
import { System } from "../../lib/browser";
|
|
12
10
|
import { useIsomorphicLayoutEffect } from "../../lib/useIsomorphicLayoutEffect";
|
|
13
11
|
import Caption from "../Typography/Caption/Caption";
|
|
14
12
|
import Subhead from "../Typography/Subhead/Subhead";
|
|
15
13
|
import { createMasks } from "./masks";
|
|
14
|
+
import { useDOM } from "../../lib/dom";
|
|
16
15
|
import "./UsersStack.css";
|
|
17
16
|
|
|
18
17
|
var UsersStack = function UsersStack(props) {
|
|
19
|
-
var _useBrowserInfo = useBrowserInfo(),
|
|
20
|
-
system = _useBrowserInfo.system,
|
|
21
|
-
systemVersion = _useBrowserInfo.systemVersion;
|
|
22
|
-
|
|
23
18
|
var platform = usePlatform();
|
|
24
19
|
|
|
25
20
|
var photos = props.photos,
|
|
@@ -29,22 +24,18 @@ var UsersStack = function UsersStack(props) {
|
|
|
29
24
|
children = props.children,
|
|
30
25
|
restProps = _objectWithoutProperties(props, _excluded);
|
|
31
26
|
|
|
27
|
+
var _useDOM = useDOM(),
|
|
28
|
+
document = _useDOM.document;
|
|
29
|
+
|
|
32
30
|
useIsomorphicLayoutEffect(function () {
|
|
33
|
-
createMasks();
|
|
34
|
-
}, []);
|
|
31
|
+
createMasks(document);
|
|
32
|
+
}, [document]);
|
|
35
33
|
var othersCount = Math.max(0, photos.length - visibleCount);
|
|
36
34
|
var canShowOthers = othersCount > 0 && size === 'm';
|
|
37
35
|
var photosShown = photos.slice(0, visibleCount);
|
|
38
|
-
var canUseClipPath = true;
|
|
39
|
-
|
|
40
|
-
if (system === System.IOS) {
|
|
41
|
-
canUseClipPath = systemVersion && systemVersion.major >= 12;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
36
|
return createScopedElement("div", _extends({}, restProps, {
|
|
45
37
|
vkuiClass: classNames(getClassName('UsersStack', platform), "UsersStack--size-".concat(size), "UsersStack--l-".concat(layout), {
|
|
46
|
-
'UsersStack--others': canShowOthers
|
|
47
|
-
'UsersStack--simple': !canUseClipPath
|
|
38
|
+
'UsersStack--others': canShowOthers
|
|
48
39
|
})
|
|
49
40
|
}), createScopedElement("div", {
|
|
50
41
|
vkuiClass: "UsersStack__photos",
|