react-native-gesture-handler 2.16.0-rc.0 → 2.16.1
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +1 -0
- package/android/noreanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt +2 -0
- package/android/paper/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java +9 -0
- package/android/paper/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java +3 -0
- package/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt +2 -2
- package/android/src/main/java/com/swmansion/gesturehandler/core/DiagonalDirections.kt +8 -0
- package/android/src/main/java/com/swmansion/gesturehandler/core/FlingGestureHandler.kt +61 -24
- package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt +17 -22
- package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt +30 -11
- package/android/src/main/java/com/swmansion/gesturehandler/core/GestureUtils.kt +3 -0
- package/android/src/main/java/com/swmansion/gesturehandler/core/Vector.kt +66 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +119 -19
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt +2 -2
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +1 -4
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +4 -2
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +1 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt +1 -4
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt +4 -7
- package/apple/Handlers/RNLongPressHandler.m +5 -13
- package/apple/Handlers/RNPinchHandler.m +12 -1
- package/apple/RNGestureHandler.m +3 -1
- package/lib/commonjs/Directions.js +19 -6
- package/lib/commonjs/Directions.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.js +97 -4
- package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.native.js +16 -0
- package/lib/commonjs/RNGestureHandlerModule.native.js.map +1 -0
- package/lib/commonjs/RNRenderer.js +5 -10
- package/lib/commonjs/RNRenderer.js.map +1 -1
- package/lib/commonjs/RNRenderer.native.js +16 -0
- package/lib/commonjs/RNRenderer.native.js.map +1 -0
- package/lib/commonjs/components/DrawerLayout.js.map +1 -1
- package/lib/commonjs/components/GestureComponents.js +19 -82
- package/lib/commonjs/components/GestureComponents.js.map +1 -1
- package/lib/commonjs/components/GestureComponents.native.js +115 -0
- package/lib/commonjs/components/GestureComponents.native.js.map +1 -0
- package/lib/commonjs/components/GestureHandlerButton.js +13 -3
- package/lib/commonjs/components/GestureHandlerButton.js.map +1 -1
- package/lib/commonjs/components/GestureHandlerButton.native.js +14 -0
- package/lib/commonjs/components/GestureHandlerButton.native.js.map +1 -0
- package/lib/commonjs/components/GestureHandlerRootView.js +0 -6
- package/lib/commonjs/components/GestureHandlerRootView.js.map +1 -1
- package/lib/commonjs/components/{GestureHandlerRootView.web.js → GestureHandlerRootView.native.js} +7 -1
- package/lib/commonjs/components/GestureHandlerRootView.native.js.map +1 -0
- package/lib/commonjs/components/Swipeable.js +3 -1
- package/lib/commonjs/components/Swipeable.js.map +1 -1
- package/lib/commonjs/components/touchables/GenericTouchable.js +1 -0
- package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
- package/lib/commonjs/getReactNativeVersion.js +1 -12
- package/lib/commonjs/getReactNativeVersion.js.map +1 -1
- package/lib/commonjs/getReactNativeVersion.native.js +22 -0
- package/lib/commonjs/getReactNativeVersion.native.js.map +1 -0
- package/lib/commonjs/getShadowNodeFromRef.js +5 -34
- package/lib/commonjs/getShadowNodeFromRef.js.map +1 -1
- package/lib/commonjs/getShadowNodeFromRef.native.js +44 -0
- package/lib/commonjs/getShadowNodeFromRef.native.js.map +1 -0
- package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/PressabilityDebugView.js +5 -7
- package/lib/commonjs/handlers/PressabilityDebugView.js.map +1 -1
- package/lib/commonjs/handlers/PressabilityDebugView.native.js +14 -0
- package/lib/commonjs/handlers/PressabilityDebugView.native.js.map +1 -0
- package/lib/commonjs/handlers/createHandler.js +11 -5
- package/lib/commonjs/handlers/createHandler.js.map +1 -1
- package/lib/commonjs/handlers/customDirectEventTypes.js +11 -0
- package/lib/commonjs/handlers/customDirectEventTypes.js.map +1 -0
- package/lib/commonjs/handlers/customDirectEventTypes.native.js +14 -0
- package/lib/commonjs/handlers/customDirectEventTypes.native.js.map +1 -0
- package/lib/commonjs/handlers/gestureHandlerCommon.js +13 -2
- package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector.js +25 -0
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/commonjs/handlers/gestures/flingGesture.js +13 -0
- package/lib/commonjs/handlers/gestures/flingGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/forceTouchGesture.js +17 -0
- package/lib/commonjs/handlers/gestures/forceTouchGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gesture.js +135 -0
- package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureObjects.js +66 -0
- package/lib/commonjs/handlers/gestures/gestureObjects.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureStateManager.web.js +1 -1
- package/lib/commonjs/handlers/gestures/gestureStateManager.web.js.map +1 -1
- package/lib/commonjs/handlers/gestures/hoverGesture.js +1 -1
- package/lib/commonjs/handlers/gestures/hoverGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/longPressGesture.js +12 -0
- package/lib/commonjs/handlers/gestures/longPressGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/nativeGesture.js +10 -0
- package/lib/commonjs/handlers/gestures/nativeGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/panGesture.js +76 -0
- package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/tapGesture.js +42 -0
- package/lib/commonjs/handlers/gestures/tapGesture.js.map +1 -1
- package/lib/commonjs/index.js +8 -8
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/mocks.js +2 -0
- package/lib/commonjs/mocks.js.map +1 -1
- package/lib/commonjs/specs/RNGestureHandlerButtonNativeComponent.js.map +1 -1
- package/lib/commonjs/utils.js +5 -1
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/commonjs/web/Gestures.js +66 -0
- package/lib/commonjs/web/Gestures.js.map +1 -0
- package/lib/commonjs/web/constants.js +3 -8
- package/lib/commonjs/web/constants.js.map +1 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js +36 -12
- package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/GestureHandler.js +11 -9
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/IGestureHandler.js +2 -0
- package/lib/commonjs/web/handlers/IGestureHandler.js.map +1 -0
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +5 -6
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PanGestureHandler.js +3 -1
- package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/web/interfaces.js +1 -13
- package/lib/commonjs/web/interfaces.js.map +1 -1
- package/lib/commonjs/web/tools/EventManager.js.map +1 -1
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +114 -115
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js +10 -5
- package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js.map +1 -1
- package/lib/commonjs/web/tools/InteractionManager.js +12 -3
- package/lib/commonjs/web/tools/InteractionManager.js.map +1 -1
- package/lib/commonjs/web/tools/NodeManager.js.map +1 -1
- package/lib/commonjs/web/tools/PointerEventManager.js +55 -27
- package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
- package/lib/commonjs/web/tools/TouchEventManager.js +26 -5
- package/lib/commonjs/web/tools/TouchEventManager.js.map +1 -1
- package/lib/commonjs/web/tools/Vector.js +58 -0
- package/lib/commonjs/web/tools/Vector.js.map +1 -0
- package/lib/commonjs/web/utils.js +9 -1
- package/lib/commonjs/web/utils.js.map +1 -1
- package/lib/commonjs/web_hammer/NodeManager.js.map +1 -1
- package/lib/module/Directions.js +16 -4
- package/lib/module/Directions.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.js +84 -4
- package/lib/module/RNGestureHandlerModule.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.native.js +5 -0
- package/lib/module/RNGestureHandlerModule.native.js.map +1 -0
- package/lib/module/RNRenderer.js +3 -3
- package/lib/module/RNRenderer.js.map +1 -1
- package/lib/module/RNRenderer.native.js +4 -0
- package/lib/module/RNRenderer.native.js.map +1 -0
- package/lib/module/components/DrawerLayout.js.map +1 -1
- package/lib/module/components/GestureComponents.js +18 -80
- package/lib/module/components/GestureComponents.js.map +1 -1
- package/lib/module/components/GestureComponents.native.js +90 -0
- package/lib/module/components/GestureComponents.native.js.map +1 -0
- package/lib/module/components/GestureHandlerButton.js +8 -2
- package/lib/module/components/GestureHandlerButton.js.map +1 -1
- package/lib/module/components/GestureHandlerButton.native.js +3 -0
- package/lib/module/components/GestureHandlerButton.native.js.map +1 -0
- package/lib/module/components/GestureHandlerRootView.js +0 -5
- package/lib/module/components/GestureHandlerRootView.js.map +1 -1
- package/lib/module/components/{GestureHandlerRootView.web.js → GestureHandlerRootView.native.js} +6 -1
- package/lib/module/components/GestureHandlerRootView.native.js.map +1 -0
- package/lib/module/components/Swipeable.js +3 -1
- package/lib/module/components/Swipeable.js.map +1 -1
- package/lib/module/components/touchables/GenericTouchable.js +1 -0
- package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
- package/lib/module/getReactNativeVersion.js +1 -7
- package/lib/module/getReactNativeVersion.js.map +1 -1
- package/lib/module/getReactNativeVersion.native.js +10 -0
- package/lib/module/getReactNativeVersion.native.js.map +1 -0
- package/lib/module/getShadowNodeFromRef.js +4 -33
- package/lib/module/getShadowNodeFromRef.js.map +1 -1
- package/lib/module/getShadowNodeFromRef.native.js +37 -0
- package/lib/module/getShadowNodeFromRef.native.js.map +1 -0
- package/lib/module/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/handlers/PressabilityDebugView.js +4 -2
- package/lib/module/handlers/PressabilityDebugView.js.map +1 -1
- package/lib/module/handlers/PressabilityDebugView.native.js +3 -0
- package/lib/module/handlers/PressabilityDebugView.native.js.map +1 -0
- package/lib/module/handlers/createHandler.js +11 -6
- package/lib/module/handlers/createHandler.js.map +1 -1
- package/lib/module/handlers/customDirectEventTypes.js +5 -0
- package/lib/module/handlers/customDirectEventTypes.js.map +1 -0
- package/lib/module/handlers/customDirectEventTypes.native.js +3 -0
- package/lib/module/handlers/customDirectEventTypes.native.js.map +1 -0
- package/lib/module/handlers/gestureHandlerCommon.js +11 -1
- package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector.js +25 -0
- package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/module/handlers/gestures/flingGesture.js +13 -0
- package/lib/module/handlers/gestures/flingGesture.js.map +1 -1
- package/lib/module/handlers/gestures/forceTouchGesture.js +17 -0
- package/lib/module/handlers/gestures/forceTouchGesture.js.map +1 -1
- package/lib/module/handlers/gestures/gesture.js +135 -0
- package/lib/module/handlers/gestures/gesture.js.map +1 -1
- package/lib/module/handlers/gestures/gestureObjects.js +67 -0
- package/lib/module/handlers/gestures/gestureObjects.js.map +1 -1
- package/lib/module/handlers/gestures/gestureStateManager.web.js +1 -1
- package/lib/module/handlers/gestures/gestureStateManager.web.js.map +1 -1
- package/lib/module/handlers/gestures/hoverGesture.js +1 -1
- package/lib/module/handlers/gestures/hoverGesture.js.map +1 -1
- package/lib/module/handlers/gestures/longPressGesture.js +12 -0
- package/lib/module/handlers/gestures/longPressGesture.js.map +1 -1
- package/lib/module/handlers/gestures/nativeGesture.js +10 -0
- package/lib/module/handlers/gestures/nativeGesture.js.map +1 -1
- package/lib/module/handlers/gestures/panGesture.js +76 -0
- package/lib/module/handlers/gestures/panGesture.js.map +1 -1
- package/lib/module/handlers/gestures/tapGesture.js +42 -0
- package/lib/module/handlers/gestures/tapGesture.js.map +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/mocks.js +2 -0
- package/lib/module/mocks.js.map +1 -1
- package/lib/module/specs/RNGestureHandlerButtonNativeComponent.js.map +1 -1
- package/lib/module/utils.js +5 -1
- package/lib/module/utils.js.map +1 -1
- package/lib/module/web/Gestures.js +39 -0
- package/lib/module/web/Gestures.js.map +1 -0
- package/lib/module/web/constants.js +1 -6
- package/lib/module/web/constants.js.map +1 -1
- package/lib/module/web/handlers/FlingGestureHandler.js +34 -12
- package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js +10 -9
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/handlers/IGestureHandler.js +2 -0
- package/lib/module/web/handlers/IGestureHandler.js.map +1 -0
- package/lib/module/web/handlers/NativeViewGestureHandler.js +5 -6
- package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PanGestureHandler.js +3 -1
- package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/web/interfaces.js +0 -11
- package/lib/module/web/interfaces.js.map +1 -1
- package/lib/module/web/tools/EventManager.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerOrchestrator.js +114 -115
- package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerWebDelegate.js +9 -4
- package/lib/module/web/tools/GestureHandlerWebDelegate.js.map +1 -1
- package/lib/module/web/tools/InteractionManager.js +9 -3
- package/lib/module/web/tools/InteractionManager.js.map +1 -1
- package/lib/module/web/tools/NodeManager.js.map +1 -1
- package/lib/module/web/tools/PointerEventManager.js +53 -26
- package/lib/module/web/tools/PointerEventManager.js.map +1 -1
- package/lib/module/web/tools/TouchEventManager.js +26 -5
- package/lib/module/web/tools/TouchEventManager.js.map +1 -1
- package/lib/module/web/tools/Vector.js +47 -0
- package/lib/module/web/tools/Vector.js.map +1 -0
- package/lib/module/web/utils.js +2 -0
- package/lib/module/web/utils.js.map +1 -1
- package/lib/module/web_hammer/NodeManager.js.map +1 -1
- package/lib/typescript/Directions.d.ts +7 -0
- package/lib/typescript/RNGestureHandlerModule.d.ts +15 -2
- package/lib/typescript/RNGestureHandlerModule.native.d.ts +2 -0
- package/lib/typescript/RNRenderer.d.ts +3 -1
- package/lib/typescript/RNRenderer.native.d.ts +1 -0
- package/lib/typescript/components/DrawerLayout.d.ts +1 -2
- package/lib/typescript/components/GestureComponents.d.ts +7 -21
- package/lib/typescript/components/GestureComponents.native.d.ts +22 -0
- package/lib/typescript/components/GestureHandlerButton.d.ts +3 -3
- package/lib/typescript/components/GestureHandlerButton.native.d.ts +4 -0
- package/lib/typescript/components/touchables/GenericTouchable.d.ts +2 -1
- package/lib/typescript/getReactNativeVersion.d.ts +1 -4
- package/lib/typescript/getReactNativeVersion.native.d.ts +4 -0
- package/lib/typescript/getShadowNodeFromRef.d.ts +1 -1
- package/lib/typescript/getShadowNodeFromRef.native.d.ts +1 -0
- package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +1 -1
- package/lib/typescript/handlers/PanGestureHandler.d.ts +4 -4
- package/lib/typescript/handlers/PressabilityDebugView.d.ts +1 -1
- package/lib/typescript/handlers/PressabilityDebugView.native.d.ts +1 -0
- package/lib/typescript/handlers/customDirectEventTypes.d.ts +2 -0
- package/lib/typescript/handlers/customDirectEventTypes.native.d.ts +1 -0
- package/lib/typescript/handlers/gestureHandlerCommon.d.ts +11 -2
- package/lib/typescript/handlers/gestures/GestureDetector.d.ts +38 -1
- package/lib/typescript/handlers/gestures/flingGesture.d.ts +11 -0
- package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +14 -0
- package/lib/typescript/handlers/gestures/gesture.d.ts +114 -2
- package/lib/typescript/handlers/gestures/gestureObjects.d.ts +57 -0
- package/lib/typescript/handlers/gestures/hoverGesture.d.ts +1 -1
- package/lib/typescript/handlers/gestures/longPressGesture.d.ts +10 -0
- package/lib/typescript/handlers/gestures/nativeGesture.d.ts +8 -0
- package/lib/typescript/handlers/gestures/panGesture.d.ts +67 -4
- package/lib/typescript/handlers/gestures/tapGesture.d.ts +35 -0
- package/lib/typescript/index.d.ts +1 -1
- package/lib/typescript/mocks.d.ts +1 -0
- package/lib/typescript/specs/RNGestureHandlerButtonNativeComponent.d.ts +4 -1
- package/lib/typescript/web/Gestures.d.ts +36 -0
- package/lib/typescript/web/constants.d.ts +1 -6
- package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +3 -3
- package/lib/typescript/web/handlers/GestureHandler.d.ts +13 -11
- package/lib/typescript/web/handlers/IGestureHandler.d.ts +38 -0
- package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +1 -0
- package/lib/typescript/web/interfaces.d.ts +8 -10
- package/lib/typescript/web/tools/EventManager.d.ts +15 -12
- package/lib/typescript/web/tools/GestureHandlerDelegate.d.ts +3 -4
- package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts +7 -5
- package/lib/typescript/web/tools/GestureHandlerWebDelegate.d.ts +3 -3
- package/lib/typescript/web/tools/InteractionManager.d.ts +6 -6
- package/lib/typescript/web/tools/NodeManager.d.ts +4 -3
- package/lib/typescript/web/tools/PointerEventManager.d.ts +11 -2
- package/lib/typescript/web/tools/TouchEventManager.d.ts +6 -1
- package/lib/typescript/web/tools/Vector.d.ts +15 -0
- package/lib/typescript/web/utils.d.ts +4 -4
- package/lib/typescript/web_hammer/NodeManager.d.ts +1 -1
- package/package.json +4 -2
- package/src/Directions.ts +21 -4
- package/src/RNGestureHandlerModule.native.ts +5 -0
- package/src/RNGestureHandlerModule.ts +104 -4
- package/src/RNRenderer.native.ts +3 -0
- package/src/RNRenderer.ts +3 -3
- package/src/components/DrawerLayout.tsx +1 -1
- package/src/components/GestureComponents.native.tsx +148 -0
- package/src/components/GestureComponents.tsx +24 -131
- package/src/components/GestureHandlerButton.native.tsx +5 -0
- package/src/components/GestureHandlerButton.tsx +5 -4
- package/src/components/{GestureHandlerRootView.web.tsx → GestureHandlerRootView.native.tsx} +6 -0
- package/src/components/GestureHandlerRootView.tsx +0 -6
- package/src/components/Swipeable.tsx +2 -0
- package/src/components/touchables/GenericTouchable.tsx +3 -0
- package/src/getReactNativeVersion.native.ts +11 -0
- package/src/getReactNativeVersion.ts +1 -9
- package/src/getShadowNodeFromRef.native.ts +44 -0
- package/src/getShadowNodeFromRef.ts +4 -41
- package/src/handlers/PanGestureHandler.ts +8 -4
- package/src/handlers/PressabilityDebugView.native.tsx +2 -0
- package/src/handlers/PressabilityDebugView.tsx +4 -2
- package/src/handlers/createHandler.tsx +24 -14
- package/src/handlers/customDirectEventTypes.native.ts +2 -0
- package/src/handlers/customDirectEventTypes.ts +5 -0
- package/src/handlers/gestureHandlerCommon.ts +28 -1
- package/src/handlers/gestures/GestureDetector.tsx +62 -4
- package/src/handlers/gestures/flingGesture.ts +11 -0
- package/src/handlers/gestures/forceTouchGesture.ts +14 -0
- package/src/handlers/gestures/gesture.ts +114 -1
- package/src/handlers/gestures/gestureObjects.ts +57 -0
- package/src/handlers/gestures/gestureStateManager.web.ts +1 -1
- package/src/handlers/gestures/hoverGesture.ts +1 -1
- package/src/handlers/gestures/longPressGesture.ts +10 -0
- package/src/handlers/gestures/nativeGesture.ts +8 -0
- package/src/handlers/gestures/panGesture.ts +75 -4
- package/src/handlers/gestures/tapGesture.ts +35 -0
- package/src/index.ts +1 -1
- package/src/mocks.ts +2 -0
- package/src/specs/RNGestureHandlerButtonNativeComponent.ts +4 -0
- package/src/utils.ts +9 -2
- package/src/web/Gestures.ts +41 -0
- package/src/web/constants.ts +1 -7
- package/src/web/handlers/FlingGestureHandler.ts +54 -24
- package/src/web/handlers/GestureHandler.ts +23 -19
- package/src/web/handlers/IGestureHandler.ts +50 -0
- package/src/web/handlers/NativeViewGestureHandler.ts +5 -6
- package/src/web/handlers/PanGestureHandler.ts +4 -0
- package/src/web/interfaces.ts +14 -10
- package/src/web/tools/EventManager.ts +16 -14
- package/src/web/tools/GestureHandlerDelegate.ts +3 -4
- package/src/web/tools/GestureHandlerOrchestrator.ts +160 -145
- package/src/web/tools/GestureHandlerWebDelegate.ts +14 -9
- package/src/web/tools/InteractionManager.ts +18 -12
- package/src/web/tools/NodeManager.ts +4 -3
- package/src/web/tools/PointerEventManager.ts +181 -166
- package/src/web/tools/TouchEventManager.ts +126 -114
- package/src/web/tools/Vector.ts +60 -0
- package/src/web/utils.ts +7 -4
- package/src/web_hammer/NodeManager.ts +1 -1
- package/lib/commonjs/RNGestureHandlerModule.web.js +0 -163
- package/lib/commonjs/RNGestureHandlerModule.web.js.map +0 -1
- package/lib/commonjs/RNRenderer.web.js +0 -11
- package/lib/commonjs/RNRenderer.web.js.map +0 -1
- package/lib/commonjs/components/GestureComponents.web.js +0 -52
- package/lib/commonjs/components/GestureComponents.web.js.map +0 -1
- package/lib/commonjs/components/GestureHandlerButton.web.js +0 -24
- package/lib/commonjs/components/GestureHandlerButton.web.js.map +0 -1
- package/lib/commonjs/components/GestureHandlerRootView.web.js.map +0 -1
- package/lib/commonjs/getReactNativeVersion.web.js +0 -11
- package/lib/commonjs/getReactNativeVersion.web.js.map +0 -1
- package/lib/commonjs/getShadowNodeFromRef.web.js +0 -15
- package/lib/commonjs/getShadowNodeFromRef.web.js.map +0 -1
- package/lib/commonjs/handlers/PressabilityDebugView.web.js +0 -12
- package/lib/commonjs/handlers/PressabilityDebugView.web.js.map +0 -1
- package/lib/module/RNGestureHandlerModule.web.js +0 -122
- package/lib/module/RNGestureHandlerModule.web.js.map +0 -1
- package/lib/module/RNRenderer.web.js +0 -4
- package/lib/module/RNRenderer.web.js.map +0 -1
- package/lib/module/components/GestureComponents.web.js +0 -28
- package/lib/module/components/GestureComponents.web.js.map +0 -1
- package/lib/module/components/GestureHandlerButton.web.js +0 -9
- package/lib/module/components/GestureHandlerButton.web.js.map +0 -1
- package/lib/module/components/GestureHandlerRootView.web.js.map +0 -1
- package/lib/module/getReactNativeVersion.web.js +0 -4
- package/lib/module/getReactNativeVersion.web.js.map +0 -1
- package/lib/module/getShadowNodeFromRef.web.js +0 -8
- package/lib/module/getShadowNodeFromRef.web.js.map +0 -1
- package/lib/module/handlers/PressabilityDebugView.web.js +0 -5
- package/lib/module/handlers/PressabilityDebugView.web.js.map +0 -1
- package/lib/typescript/RNGestureHandlerModule.web.d.ts +0 -50
- package/lib/typescript/RNRenderer.web.d.ts +0 -3
- package/lib/typescript/components/GestureComponents.web.d.ts +0 -8
- package/lib/typescript/components/GestureHandlerButton.web.d.ts +0 -4
- package/lib/typescript/getReactNativeVersion.web.d.ts +0 -1
- package/lib/typescript/getShadowNodeFromRef.web.d.ts +0 -1
- package/lib/typescript/handlers/PressabilityDebugView.web.d.ts +0 -1
- package/src/RNGestureHandlerModule.web.ts +0 -146
- package/src/RNRenderer.web.ts +0 -3
- package/src/components/GestureComponents.web.tsx +0 -41
- package/src/components/GestureHandlerButton.web.tsx +0 -6
- package/src/getReactNativeVersion.web.ts +0 -3
- package/src/getShadowNodeFromRef.web.ts +0 -7
- package/src/handlers/PressabilityDebugView.web.tsx +0 -4
- /package/lib/typescript/components/{GestureHandlerRootView.web.d.ts → GestureHandlerRootView.native.d.ts} +0 -0
@@ -43,7 +43,14 @@ export class PanGesture extends ContinousBaseGesture<
|
|
43
43
|
this.handlerName = 'PanGestureHandler';
|
44
44
|
}
|
45
45
|
|
46
|
-
|
46
|
+
/**
|
47
|
+
* Range along Y axis (in points) where fingers travels without activation of gesture.
|
48
|
+
* @param offset
|
49
|
+
* @see https://docs.swmansion.com/react-native-gesture-handler/docs/gestures/pan-gesture#activeoffsetyvalue-number--number
|
50
|
+
*/
|
51
|
+
activeOffsetY(
|
52
|
+
offset: number | [activeOffsetYStart: number, activeOffsetYEnd: number]
|
53
|
+
) {
|
47
54
|
if (Array.isArray(offset)) {
|
48
55
|
this.config.activeOffsetYStart = offset[0];
|
49
56
|
this.config.activeOffsetYEnd = offset[1];
|
@@ -55,7 +62,14 @@ export class PanGesture extends ContinousBaseGesture<
|
|
55
62
|
return this;
|
56
63
|
}
|
57
64
|
|
58
|
-
|
65
|
+
/**
|
66
|
+
* Range along X axis (in points) where fingers travels without activation of gesture.
|
67
|
+
* @param offset
|
68
|
+
* @see https://docs.swmansion.com/react-native-gesture-handler/docs/gestures/pan-gesture#activeoffsetxvalue-number--number
|
69
|
+
*/
|
70
|
+
activeOffsetX(
|
71
|
+
offset: number | [activeOffsetXStart: number, activeOffsetXEnd: number]
|
72
|
+
) {
|
59
73
|
if (Array.isArray(offset)) {
|
60
74
|
this.config.activeOffsetXStart = offset[0];
|
61
75
|
this.config.activeOffsetXEnd = offset[1];
|
@@ -67,7 +81,14 @@ export class PanGesture extends ContinousBaseGesture<
|
|
67
81
|
return this;
|
68
82
|
}
|
69
83
|
|
70
|
-
|
84
|
+
/**
|
85
|
+
* When the finger moves outside this range (in points) along Y axis and gesture hasn't yet activated it will fail recognizing the gesture.
|
86
|
+
* @param offset
|
87
|
+
* @see https://docs.swmansion.com/react-native-gesture-handler/docs/gestures/pan-gesture#failoffsetyvalue-number--number
|
88
|
+
*/
|
89
|
+
failOffsetY(
|
90
|
+
offset: number | [failOffsetYStart: number, failOffsetYEnd: number]
|
91
|
+
) {
|
71
92
|
if (Array.isArray(offset)) {
|
72
93
|
this.config.failOffsetYStart = offset[0];
|
73
94
|
this.config.failOffsetYEnd = offset[1];
|
@@ -79,7 +100,14 @@ export class PanGesture extends ContinousBaseGesture<
|
|
79
100
|
return this;
|
80
101
|
}
|
81
102
|
|
82
|
-
|
103
|
+
/**
|
104
|
+
* When the finger moves outside this range (in points) along X axis and gesture hasn't yet activated it will fail recognizing the gesture.
|
105
|
+
* @param offset
|
106
|
+
* @see https://docs.swmansion.com/react-native-gesture-handler/docs/gestures/pan-gesture#failoffsetxvalue-number--number
|
107
|
+
*/
|
108
|
+
failOffsetX(
|
109
|
+
offset: number | [failOffsetXStart: number, failOffsetXEnd: number]
|
110
|
+
) {
|
83
111
|
if (Array.isArray(offset)) {
|
84
112
|
this.config.failOffsetXStart = offset[0];
|
85
113
|
this.config.failOffsetXEnd = offset[1];
|
@@ -91,46 +119,89 @@ export class PanGesture extends ContinousBaseGesture<
|
|
91
119
|
return this;
|
92
120
|
}
|
93
121
|
|
122
|
+
/**
|
123
|
+
* A number of fingers that is required to be placed before gesture can activate. Should be a higher or equal to 0 integer.
|
124
|
+
* @param minPointers
|
125
|
+
*/
|
94
126
|
minPointers(minPointers: number) {
|
95
127
|
this.config.minPointers = minPointers;
|
96
128
|
return this;
|
97
129
|
}
|
98
130
|
|
131
|
+
/**
|
132
|
+
* When the given number of fingers is placed on the screen and gesture hasn't yet activated it will fail recognizing the gesture.
|
133
|
+
* Should be a higher or equal to 0 integer.
|
134
|
+
* @param maxPointers
|
135
|
+
*/
|
99
136
|
maxPointers(maxPointers: number) {
|
100
137
|
this.config.maxPointers = maxPointers;
|
101
138
|
return this;
|
102
139
|
}
|
103
140
|
|
141
|
+
/**
|
142
|
+
* Minimum distance the finger (or multiple finger) need to travel before the gesture activates.
|
143
|
+
* Expressed in points.
|
144
|
+
* @param distance
|
145
|
+
*/
|
104
146
|
minDistance(distance: number) {
|
105
147
|
this.config.minDist = distance;
|
106
148
|
return this;
|
107
149
|
}
|
108
150
|
|
151
|
+
/**
|
152
|
+
* Minimum velocity the finger has to reach in order to activate handler.
|
153
|
+
* @param velocity
|
154
|
+
*/
|
109
155
|
minVelocity(velocity: number) {
|
110
156
|
this.config.minVelocity = velocity;
|
111
157
|
return this;
|
112
158
|
}
|
113
159
|
|
160
|
+
/**
|
161
|
+
* Minimum velocity along X axis the finger has to reach in order to activate handler.
|
162
|
+
* @param velocity
|
163
|
+
*/
|
114
164
|
minVelocityX(velocity: number) {
|
115
165
|
this.config.minVelocityX = velocity;
|
116
166
|
return this;
|
117
167
|
}
|
118
168
|
|
169
|
+
/**
|
170
|
+
* Minimum velocity along Y axis the finger has to reach in order to activate handler.
|
171
|
+
* @param velocity
|
172
|
+
*/
|
119
173
|
minVelocityY(velocity: number) {
|
120
174
|
this.config.minVelocityY = velocity;
|
121
175
|
return this;
|
122
176
|
}
|
123
177
|
|
178
|
+
/**
|
179
|
+
* #### Android only
|
180
|
+
* Android, by default, will calculate translation values based on the position of the leading pointer (the first one that was placed on the screen).
|
181
|
+
* This modifier allows that behavior to be changed to the one that is default on iOS - the averaged position of all active pointers will be used to calculate the translation values.
|
182
|
+
* @param value
|
183
|
+
*/
|
124
184
|
averageTouches(value: boolean) {
|
125
185
|
this.config.avgTouches = value;
|
126
186
|
return this;
|
127
187
|
}
|
128
188
|
|
189
|
+
/**
|
190
|
+
* #### iOS only
|
191
|
+
* Enables two-finger gestures on supported devices, for example iPads with trackpads.
|
192
|
+
* @param value
|
193
|
+
* @see https://docs.swmansion.com/react-native-gesture-handler/docs/gestures/pan-gesture/#enabletrackpadtwofingergesturevalue-boolean-ios-only
|
194
|
+
*/
|
129
195
|
enableTrackpadTwoFingerGesture(value: boolean) {
|
130
196
|
this.config.enableTrackpadTwoFingerGesture = value;
|
131
197
|
return this;
|
132
198
|
}
|
133
199
|
|
200
|
+
/**
|
201
|
+
* Duration in milliseconds of the LongPress gesture before Pan is allowed to activate.
|
202
|
+
* @param duration
|
203
|
+
* @see https://docs.swmansion.com/react-native-gesture-handler/docs/gestures/pan-gesture/#activateafterlongpressduration-number
|
204
|
+
*/
|
134
205
|
activateAfterLongPress(duration: number) {
|
135
206
|
this.config.activateAfterLongPress = duration;
|
136
207
|
return this;
|
@@ -14,36 +14,71 @@ export class TapGesture extends BaseGesture<TapGestureHandlerEventPayload> {
|
|
14
14
|
this.shouldCancelWhenOutside(true);
|
15
15
|
}
|
16
16
|
|
17
|
+
/**
|
18
|
+
* Minimum number of pointers (fingers) required to be placed before the gesture activates.
|
19
|
+
* Should be a positive integer. The default value is 1.
|
20
|
+
* @param minPointers
|
21
|
+
*/
|
17
22
|
minPointers(minPointers: number) {
|
18
23
|
this.config.minPointers = minPointers;
|
19
24
|
return this;
|
20
25
|
}
|
21
26
|
|
27
|
+
/**
|
28
|
+
* Number of tap gestures required to activate the gesture.
|
29
|
+
* The default value is 1.
|
30
|
+
* @param count
|
31
|
+
*/
|
22
32
|
numberOfTaps(count: number) {
|
23
33
|
this.config.numberOfTaps = count;
|
24
34
|
return this;
|
25
35
|
}
|
26
36
|
|
37
|
+
/**
|
38
|
+
* Maximum distance, expressed in points, that defines how far the finger is allowed to travel during a tap gesture.
|
39
|
+
* @param maxDist
|
40
|
+
* @see https://docs.swmansion.com/react-native-gesture-handler/docs/gestures/tap-gesture#maxdistancevalue-number
|
41
|
+
*/
|
27
42
|
maxDistance(maxDist: number) {
|
28
43
|
this.config.maxDist = maxDist;
|
29
44
|
return this;
|
30
45
|
}
|
31
46
|
|
47
|
+
/**
|
48
|
+
* Maximum time, expressed in milliseconds, that defines how fast a finger must be released after a touch.
|
49
|
+
* The default value is 500.
|
50
|
+
* @param duration
|
51
|
+
*/
|
32
52
|
maxDuration(duration: number) {
|
33
53
|
this.config.maxDurationMs = duration;
|
34
54
|
return this;
|
35
55
|
}
|
36
56
|
|
57
|
+
/**
|
58
|
+
* Maximum time, expressed in milliseconds, that can pass before the next tap — if many taps are required.
|
59
|
+
* The default value is 500.
|
60
|
+
* @param delay
|
61
|
+
*/
|
37
62
|
maxDelay(delay: number) {
|
38
63
|
this.config.maxDelayMs = delay;
|
39
64
|
return this;
|
40
65
|
}
|
41
66
|
|
67
|
+
/**
|
68
|
+
* Maximum distance, expressed in points, that defines how far the finger is allowed to travel along the X axis during a tap gesture.
|
69
|
+
* @param delta
|
70
|
+
* @see https://docs.swmansion.com/react-native-gesture-handler/docs/gestures/tap-gesture#maxdeltaxvalue-number
|
71
|
+
*/
|
42
72
|
maxDeltaX(delta: number) {
|
43
73
|
this.config.maxDeltaX = delta;
|
44
74
|
return this;
|
45
75
|
}
|
46
76
|
|
77
|
+
/**
|
78
|
+
* Maximum distance, expressed in points, that defines how far the finger is allowed to travel along the Y axis during a tap gesture.
|
79
|
+
* @param delta
|
80
|
+
* @see https://docs.swmansion.com/react-native-gesture-handler/docs/gestures/tap-gesture#maxdeltayvalue-number
|
81
|
+
*/
|
47
82
|
maxDeltaY(delta: number) {
|
48
83
|
this.config.maxDeltaY = delta;
|
49
84
|
return this;
|
package/src/index.ts
CHANGED
@@ -2,7 +2,6 @@ import { initialize } from './init';
|
|
2
2
|
|
3
3
|
export { Directions } from './Directions';
|
4
4
|
export { State } from './State';
|
5
|
-
export { MouseButton } from './web/interfaces';
|
6
5
|
export { PointerType } from './PointerType';
|
7
6
|
export { default as gestureHandlerRootHOC } from './components/gestureHandlerRootHOC';
|
8
7
|
export { default as GestureHandlerRootView } from './components/GestureHandlerRootView';
|
@@ -20,6 +19,7 @@ export type {
|
|
20
19
|
GestureUpdateEvent,
|
21
20
|
GestureStateChangeEvent,
|
22
21
|
} from './handlers/gestureHandlerCommon';
|
22
|
+
export { MouseButton } from './handlers/gestureHandlerCommon';
|
23
23
|
export type { GestureType } from './handlers/gestures/gesture';
|
24
24
|
export type {
|
25
25
|
TapGestureHandlerEventPayload,
|
package/src/mocks.ts
CHANGED
@@ -22,6 +22,7 @@ const createGestureHandler = NOOP;
|
|
22
22
|
const dropGestureHandler = NOOP;
|
23
23
|
const updateGestureHandler = NOOP;
|
24
24
|
const flushOperations = NOOP;
|
25
|
+
const install = NOOP;
|
25
26
|
const NativeViewGestureHandler = View;
|
26
27
|
const TapGestureHandler = View;
|
27
28
|
const ForceTouchGestureHandler = View;
|
@@ -61,6 +62,7 @@ export default {
|
|
61
62
|
dropGestureHandler,
|
62
63
|
updateGestureHandler,
|
63
64
|
flushOperations,
|
65
|
+
install,
|
64
66
|
// probably can be removed
|
65
67
|
Directions,
|
66
68
|
State,
|
@@ -2,6 +2,7 @@ import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNati
|
|
2
2
|
import type {
|
3
3
|
Int32,
|
4
4
|
WithDefault,
|
5
|
+
Float,
|
5
6
|
} from 'react-native/Libraries/Types/CodegenTypes';
|
6
7
|
import type { ViewProps, ColorValue } from 'react-native';
|
7
8
|
|
@@ -13,6 +14,9 @@ interface NativeProps extends ViewProps {
|
|
13
14
|
rippleColor?: ColorValue;
|
14
15
|
rippleRadius?: Int32;
|
15
16
|
touchSoundDisabled?: WithDefault<boolean, false>;
|
17
|
+
borderWidth?: Float;
|
18
|
+
borderColor?: ColorValue;
|
19
|
+
borderStyle?: WithDefault<string, 'solid'>;
|
16
20
|
}
|
17
21
|
|
18
22
|
export default codegenNativeComponent<NativeProps>('RNGestureHandlerButton');
|
package/src/utils.ts
CHANGED
@@ -18,7 +18,10 @@ export function withPrevAndCurrent<T, Transformed>(
|
|
18
18
|
const currentArr = [...array];
|
19
19
|
const transformedArr: Transformed[] = [];
|
20
20
|
currentArr.forEach((current, i) => {
|
21
|
-
|
21
|
+
// This type cast is fine and solves problem mentioned in https://github.com/software-mansion/react-native-gesture-handler/pull/2867 (namely that `previous` can be undefined).
|
22
|
+
// Unfortunately, linter on our CI does not allow this type of casting as it is unnecessary. To bypass that we use eslint-disable.
|
23
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
24
|
+
const previous = previousArr[i] as Transformed | null;
|
22
25
|
const transformed = mapFn(previous, current);
|
23
26
|
previousArr.push(transformed);
|
24
27
|
transformedArr.push(transformed);
|
@@ -50,5 +53,9 @@ export function isFabric(): boolean {
|
|
50
53
|
export function isRemoteDebuggingEnabled(): boolean {
|
51
54
|
// react-native-reanimated checks if in remote debugging in the same way
|
52
55
|
// @ts-ignore global is available but node types are not included
|
53
|
-
|
56
|
+
const localGlobal = global as any;
|
57
|
+
return (
|
58
|
+
(!localGlobal.nativeCallSyncHook || !!localGlobal.__REMOTEDEV__) &&
|
59
|
+
!localGlobal.RN$Bridgeless
|
60
|
+
);
|
54
61
|
}
|
@@ -0,0 +1,41 @@
|
|
1
|
+
// Gesture Handlers
|
2
|
+
import PanGestureHandler from './handlers/PanGestureHandler';
|
3
|
+
import TapGestureHandler from './handlers/TapGestureHandler';
|
4
|
+
import LongPressGestureHandler from './handlers/LongPressGestureHandler';
|
5
|
+
import PinchGestureHandler from './handlers/PinchGestureHandler';
|
6
|
+
import RotationGestureHandler from './handlers/RotationGestureHandler';
|
7
|
+
import FlingGestureHandler from './handlers/FlingGestureHandler';
|
8
|
+
import NativeViewGestureHandler from './handlers/NativeViewGestureHandler';
|
9
|
+
import ManualGestureHandler from './handlers/ManualGestureHandler';
|
10
|
+
import HoverGestureHandler from './handlers/HoverGestureHandler';
|
11
|
+
|
12
|
+
//Hammer Handlers
|
13
|
+
import HammerNativeViewGestureHandler from '../web_hammer/NativeViewGestureHandler';
|
14
|
+
import HammerPanGestureHandler from '../web_hammer/PanGestureHandler';
|
15
|
+
import HammerTapGestureHandler from '../web_hammer/TapGestureHandler';
|
16
|
+
import HammerLongPressGestureHandler from '../web_hammer/LongPressGestureHandler';
|
17
|
+
import HammerPinchGestureHandler from '../web_hammer/PinchGestureHandler';
|
18
|
+
import HammerRotationGestureHandler from '../web_hammer/RotationGestureHandler';
|
19
|
+
import HammerFlingGestureHandler from '../web_hammer/FlingGestureHandler';
|
20
|
+
|
21
|
+
export const Gestures = {
|
22
|
+
NativeViewGestureHandler,
|
23
|
+
PanGestureHandler,
|
24
|
+
TapGestureHandler,
|
25
|
+
LongPressGestureHandler,
|
26
|
+
PinchGestureHandler,
|
27
|
+
RotationGestureHandler,
|
28
|
+
FlingGestureHandler,
|
29
|
+
ManualGestureHandler,
|
30
|
+
HoverGestureHandler,
|
31
|
+
};
|
32
|
+
|
33
|
+
export const HammerGestures = {
|
34
|
+
NativeViewGestureHandler: HammerNativeViewGestureHandler,
|
35
|
+
PanGestureHandler: HammerPanGestureHandler,
|
36
|
+
TapGestureHandler: HammerTapGestureHandler,
|
37
|
+
LongPressGestureHandler: HammerLongPressGestureHandler,
|
38
|
+
PinchGestureHandler: HammerPinchGestureHandler,
|
39
|
+
RotationGestureHandler: HammerRotationGestureHandler,
|
40
|
+
FlingGestureHandler: HammerFlingGestureHandler,
|
41
|
+
};
|
package/src/web/constants.ts
CHANGED
@@ -1,25 +1,28 @@
|
|
1
1
|
import { State } from '../../State';
|
2
|
-
import {
|
2
|
+
import { DiagonalDirections, Directions } from '../../Directions';
|
3
3
|
import { AdaptedEvent, Config } from '../interfaces';
|
4
4
|
|
5
5
|
import GestureHandler from './GestureHandler';
|
6
|
+
import Vector from '../tools/Vector';
|
7
|
+
import { coneToDeviation } from '../utils';
|
6
8
|
|
7
9
|
const DEFAULT_MAX_DURATION_MS = 800;
|
8
|
-
const
|
9
|
-
const
|
10
|
+
const DEFAULT_MIN_VELOCITY = 700;
|
11
|
+
const DEFAULT_ALIGNMENT_CONE = 30;
|
12
|
+
const DEFAULT_DIRECTION = Directions.RIGHT;
|
10
13
|
const DEFAULT_NUMBER_OF_TOUCHES_REQUIRED = 1;
|
11
14
|
|
15
|
+
const AXIAL_DEVIATION_COSINE = coneToDeviation(DEFAULT_ALIGNMENT_CONE);
|
16
|
+
const DIAGONAL_DEVIATION_COSINE = coneToDeviation(90 - DEFAULT_ALIGNMENT_CONE);
|
17
|
+
|
12
18
|
export default class FlingGestureHandler extends GestureHandler {
|
13
19
|
private numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;
|
14
|
-
private direction = DEFAULT_DIRECTION;
|
20
|
+
private direction: Directions = DEFAULT_DIRECTION;
|
15
21
|
|
16
22
|
private maxDurationMs = DEFAULT_MAX_DURATION_MS;
|
17
|
-
private
|
23
|
+
private minVelocity = DEFAULT_MIN_VELOCITY;
|
18
24
|
private delayTimeout!: number;
|
19
25
|
|
20
|
-
private startX = 0;
|
21
|
-
private startY = 0;
|
22
|
-
|
23
26
|
private maxNumberOfPointersSimultaneously = 0;
|
24
27
|
private keyPointer = NaN;
|
25
28
|
|
@@ -40,9 +43,6 @@ export default class FlingGestureHandler extends GestureHandler {
|
|
40
43
|
}
|
41
44
|
|
42
45
|
private startFling(): void {
|
43
|
-
this.startX = this.tracker.getLastX(this.keyPointer);
|
44
|
-
this.startY = this.tracker.getLastY(this.keyPointer);
|
45
|
-
|
46
46
|
this.begin();
|
47
47
|
|
48
48
|
this.maxNumberOfPointersSimultaneously = 1;
|
@@ -51,21 +51,43 @@ export default class FlingGestureHandler extends GestureHandler {
|
|
51
51
|
}
|
52
52
|
|
53
53
|
private tryEndFling(): boolean {
|
54
|
+
const velocityVector = Vector.fromVelocity(this.tracker, this.keyPointer);
|
55
|
+
|
56
|
+
const getAlignment = (
|
57
|
+
direction: Directions | DiagonalDirections,
|
58
|
+
minimalAlignmentCosine: number
|
59
|
+
) => {
|
60
|
+
return (
|
61
|
+
(direction & this.direction) === direction &&
|
62
|
+
velocityVector.isSimilar(
|
63
|
+
Vector.fromDirection(direction),
|
64
|
+
minimalAlignmentCosine
|
65
|
+
)
|
66
|
+
);
|
67
|
+
};
|
68
|
+
|
69
|
+
const axialDirectionsList = Object.values(Directions);
|
70
|
+
const diagonalDirectionsList = Object.values(DiagonalDirections);
|
71
|
+
|
72
|
+
// list of alignments to all activated directions
|
73
|
+
const axialAlignmentList = axialDirectionsList.map((direction) =>
|
74
|
+
getAlignment(direction, AXIAL_DEVIATION_COSINE)
|
75
|
+
);
|
76
|
+
|
77
|
+
const diagonalAlignmentList = diagonalDirectionsList.map((direction) =>
|
78
|
+
getAlignment(direction, DIAGONAL_DEVIATION_COSINE)
|
79
|
+
);
|
80
|
+
|
81
|
+
const isAligned =
|
82
|
+
axialAlignmentList.some(Boolean) || diagonalAlignmentList.some(Boolean);
|
83
|
+
|
84
|
+
const isFast = velocityVector.magnitude > this.minVelocity;
|
85
|
+
|
54
86
|
if (
|
55
87
|
this.maxNumberOfPointersSimultaneously ===
|
56
88
|
this.numberOfPointersRequired &&
|
57
|
-
|
58
|
-
|
59
|
-
this.minAcceptableDelta) ||
|
60
|
-
(this.direction & Direction.LEFT &&
|
61
|
-
this.startX - this.tracker.getLastX(this.keyPointer) >
|
62
|
-
this.minAcceptableDelta) ||
|
63
|
-
(this.direction & Direction.UP &&
|
64
|
-
this.startY - this.tracker.getLastY(this.keyPointer) >
|
65
|
-
this.minAcceptableDelta) ||
|
66
|
-
(this.direction & Direction.DOWN &&
|
67
|
-
this.tracker.getLastY(this.keyPointer) - this.startY >
|
68
|
-
this.minAcceptableDelta))
|
89
|
+
isAligned &&
|
90
|
+
isFast
|
69
91
|
) {
|
70
92
|
clearTimeout(this.delayTimeout);
|
71
93
|
this.activate();
|
@@ -120,7 +142,7 @@ export default class FlingGestureHandler extends GestureHandler {
|
|
120
142
|
}
|
121
143
|
}
|
122
144
|
|
123
|
-
|
145
|
+
private pointerMoveAction(event: AdaptedEvent): void {
|
124
146
|
this.tracker.track(event);
|
125
147
|
|
126
148
|
if (this.currentState !== State.BEGAN) {
|
@@ -128,10 +150,18 @@ export default class FlingGestureHandler extends GestureHandler {
|
|
128
150
|
}
|
129
151
|
|
130
152
|
this.tryEndFling();
|
153
|
+
}
|
131
154
|
|
155
|
+
protected onPointerMove(event: AdaptedEvent): void {
|
156
|
+
this.pointerMoveAction(event);
|
132
157
|
super.onPointerMove(event);
|
133
158
|
}
|
134
159
|
|
160
|
+
protected onPointerOutOfBounds(event: AdaptedEvent): void {
|
161
|
+
this.pointerMoveAction(event);
|
162
|
+
super.onPointerOutOfBounds(event);
|
163
|
+
}
|
164
|
+
|
135
165
|
protected onPointerUp(event: AdaptedEvent): void {
|
136
166
|
super.onPointerUp(event);
|
137
167
|
this.onUp(event);
|
@@ -9,20 +9,21 @@ import {
|
|
9
9
|
ResultTouchEvent,
|
10
10
|
TouchEventType,
|
11
11
|
EventTypes,
|
12
|
-
MouseButton,
|
13
12
|
} from '../interfaces';
|
14
13
|
import EventManager from '../tools/EventManager';
|
15
14
|
import GestureHandlerOrchestrator from '../tools/GestureHandlerOrchestrator';
|
16
15
|
import InteractionManager from '../tools/InteractionManager';
|
17
16
|
import PointerTracker, { TrackerElement } from '../tools/PointerTracker';
|
18
17
|
import { GestureHandlerDelegate } from '../tools/GestureHandlerDelegate';
|
18
|
+
import IGestureHandler from './IGestureHandler';
|
19
|
+
import { MouseButton } from '../../handlers/gestureHandlerCommon';
|
19
20
|
import { PointerType } from '../../PointerType';
|
20
21
|
|
21
|
-
export default abstract class GestureHandler {
|
22
|
+
export default abstract class GestureHandler implements IGestureHandler {
|
22
23
|
private lastSentState: State | null = null;
|
23
24
|
protected currentState: State = State.UNDETERMINED;
|
24
25
|
|
25
|
-
protected
|
26
|
+
protected shouldCancelWhenOutside = false;
|
26
27
|
protected hasCustomActivationCriteria = false;
|
27
28
|
protected enabled = false;
|
28
29
|
|
@@ -40,9 +41,11 @@ export default abstract class GestureHandler {
|
|
40
41
|
protected shouldResetProgress = false;
|
41
42
|
protected pointerType: PointerType = PointerType.MOUSE;
|
42
43
|
|
43
|
-
protected delegate: GestureHandlerDelegate<unknown>;
|
44
|
+
protected delegate: GestureHandlerDelegate<unknown, IGestureHandler>;
|
44
45
|
|
45
|
-
public constructor(
|
46
|
+
public constructor(
|
47
|
+
delegate: GestureHandlerDelegate<unknown, IGestureHandler>
|
48
|
+
) {
|
46
49
|
this.delegate = delegate;
|
47
50
|
}
|
48
51
|
|
@@ -71,7 +74,8 @@ export default abstract class GestureHandler {
|
|
71
74
|
manager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this));
|
72
75
|
manager.setOnPointerMoveOver(this.onPointerMoveOver.bind(this));
|
73
76
|
manager.setOnPointerMoveOut(this.onPointerMoveOut.bind(this));
|
74
|
-
|
77
|
+
|
78
|
+
manager.registerListeners();
|
75
79
|
}
|
76
80
|
|
77
81
|
//
|
@@ -172,13 +176,13 @@ export default abstract class GestureHandler {
|
|
172
176
|
}
|
173
177
|
}
|
174
178
|
|
175
|
-
public activate(
|
179
|
+
public activate(force = false) {
|
176
180
|
if (
|
177
|
-
this.
|
178
|
-
this.currentState === State.
|
181
|
+
(this.config.manualActivation !== true || force) &&
|
182
|
+
(this.currentState === State.UNDETERMINED ||
|
183
|
+
this.currentState === State.BEGAN)
|
179
184
|
) {
|
180
185
|
this.delegate.onActivate();
|
181
|
-
|
182
186
|
this.moveToState(State.ACTIVE);
|
183
187
|
}
|
184
188
|
}
|
@@ -229,7 +233,7 @@ export default abstract class GestureHandler {
|
|
229
233
|
this.activationIndex = value;
|
230
234
|
}
|
231
235
|
|
232
|
-
public shouldWaitForHandlerFailure(handler:
|
236
|
+
public shouldWaitForHandlerFailure(handler: IGestureHandler): boolean {
|
233
237
|
if (handler === this) {
|
234
238
|
return false;
|
235
239
|
}
|
@@ -240,7 +244,7 @@ export default abstract class GestureHandler {
|
|
240
244
|
);
|
241
245
|
}
|
242
246
|
|
243
|
-
public shouldRequireToWaitForFailure(handler:
|
247
|
+
public shouldRequireToWaitForFailure(handler: IGestureHandler): boolean {
|
244
248
|
if (handler === this) {
|
245
249
|
return false;
|
246
250
|
}
|
@@ -251,7 +255,7 @@ export default abstract class GestureHandler {
|
|
251
255
|
);
|
252
256
|
}
|
253
257
|
|
254
|
-
public shouldRecognizeSimultaneously(handler:
|
258
|
+
public shouldRecognizeSimultaneously(handler: IGestureHandler): boolean {
|
255
259
|
if (handler === this) {
|
256
260
|
return true;
|
257
261
|
}
|
@@ -262,7 +266,7 @@ export default abstract class GestureHandler {
|
|
262
266
|
);
|
263
267
|
}
|
264
268
|
|
265
|
-
public shouldBeCancelledByOther(handler:
|
269
|
+
public shouldBeCancelledByOther(handler: IGestureHandler): boolean {
|
266
270
|
if (handler === this) {
|
267
271
|
return false;
|
268
272
|
}
|
@@ -313,7 +317,7 @@ export default abstract class GestureHandler {
|
|
313
317
|
}
|
314
318
|
}
|
315
319
|
protected onPointerLeave(event: AdaptedEvent): void {
|
316
|
-
if (this.
|
320
|
+
if (this.shouldCancelWhenOutside) {
|
317
321
|
switch (this.currentState) {
|
318
322
|
case State.ACTIVE:
|
319
323
|
this.cancel();
|
@@ -358,7 +362,7 @@ export default abstract class GestureHandler {
|
|
358
362
|
if (
|
359
363
|
this.enabled &&
|
360
364
|
this.active &&
|
361
|
-
(!out || (out && !this.
|
365
|
+
(!out || (out && !this.shouldCancelWhenOutside))
|
362
366
|
) {
|
363
367
|
this.sendEvent(this.currentState, this.currentState);
|
364
368
|
}
|
@@ -772,7 +776,7 @@ export default abstract class GestureHandler {
|
|
772
776
|
return this.config;
|
773
777
|
}
|
774
778
|
|
775
|
-
public getDelegate(): GestureHandlerDelegate<unknown> {
|
779
|
+
public getDelegate(): GestureHandlerDelegate<unknown, IGestureHandler> {
|
776
780
|
return this.delegate;
|
777
781
|
}
|
778
782
|
|
@@ -801,11 +805,11 @@ export default abstract class GestureHandler {
|
|
801
805
|
}
|
802
806
|
|
803
807
|
protected setShouldCancelWhenOutside(shouldCancel: boolean) {
|
804
|
-
this.
|
808
|
+
this.shouldCancelWhenOutside = shouldCancel;
|
805
809
|
}
|
806
810
|
|
807
811
|
protected getShouldCancelWhenOutside(): boolean {
|
808
|
-
return this.
|
812
|
+
return this.shouldCancelWhenOutside;
|
809
813
|
}
|
810
814
|
|
811
815
|
public getPointerType(): PointerType {
|
@@ -0,0 +1,50 @@
|
|
1
|
+
import type { PointerType } from '../../PointerType';
|
2
|
+
import type { MouseButton } from '../../handlers/gestureHandlerCommon';
|
3
|
+
import type { State } from '../../State';
|
4
|
+
import type { Config } from '../interfaces';
|
5
|
+
import type EventManager from '../tools/EventManager';
|
6
|
+
import type { GestureHandlerDelegate } from '../tools/GestureHandlerDelegate';
|
7
|
+
import type PointerTracker from '../tools/PointerTracker';
|
8
|
+
|
9
|
+
export default interface IGestureHandler {
|
10
|
+
getTag: () => number;
|
11
|
+
getState: () => State;
|
12
|
+
getConfig: () => Config;
|
13
|
+
getDelegate: () => GestureHandlerDelegate<unknown, this>;
|
14
|
+
|
15
|
+
attachEventManager: (manager: EventManager<unknown>) => void;
|
16
|
+
|
17
|
+
isButtonInConfig: (
|
18
|
+
mouseButton: MouseButton | undefined
|
19
|
+
) => boolean | number | undefined;
|
20
|
+
getPointerType: () => PointerType;
|
21
|
+
|
22
|
+
getTracker: () => PointerTracker;
|
23
|
+
getTrackedPointersID: () => number[];
|
24
|
+
|
25
|
+
begin: () => void;
|
26
|
+
activate: (force: boolean) => void;
|
27
|
+
end: () => void;
|
28
|
+
fail: () => void;
|
29
|
+
cancel: () => void;
|
30
|
+
|
31
|
+
reset: () => void;
|
32
|
+
isEnabled: () => boolean;
|
33
|
+
isActive: () => boolean;
|
34
|
+
setActive: (value: boolean) => void;
|
35
|
+
isAwaiting: () => boolean;
|
36
|
+
setAwaiting: (value: boolean) => void;
|
37
|
+
setActivationIndex: (value: number) => void;
|
38
|
+
setShouldResetProgress: (value: boolean) => void;
|
39
|
+
|
40
|
+
shouldWaitForHandlerFailure: (handler: IGestureHandler) => boolean;
|
41
|
+
shouldRequireToWaitForFailure: (handler: IGestureHandler) => boolean;
|
42
|
+
shouldRecognizeSimultaneously: (handler: IGestureHandler) => boolean;
|
43
|
+
shouldBeCancelledByOther: (handler: IGestureHandler) => boolean;
|
44
|
+
|
45
|
+
sendEvent: (newState: State, oldState: State) => void;
|
46
|
+
|
47
|
+
updateGestureConfig: (config: Config) => void;
|
48
|
+
|
49
|
+
isButton?: () => boolean;
|
50
|
+
}
|