react-native-gesture-handler 2.16.0-rc.0 → 2.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
+
}
|