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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { UserSelect, ActiveCursor } from '../handlers/gestureHandlerCommon';
|
|
1
|
+
import { UserSelect, ActiveCursor, MouseButton, TouchAction } from '../handlers/gestureHandlerCommon';
|
|
2
2
|
import { Directions } from '../Directions';
|
|
3
3
|
import { State } from '../State';
|
|
4
4
|
import { PointerType } from '../PointerType';
|
|
@@ -15,7 +15,7 @@ export interface HitSlop {
|
|
|
15
15
|
export interface Handler {
|
|
16
16
|
handlerTag: number;
|
|
17
17
|
}
|
|
18
|
-
type ConfigArgs = number | boolean | HitSlop | UserSelect | ActiveCursor | Directions | Handler[] | null | undefined;
|
|
18
|
+
type ConfigArgs = number | boolean | HitSlop | UserSelect | TouchAction | ActiveCursor | Directions | Handler[] | null | undefined;
|
|
19
19
|
export interface Config extends Record<string, ConfigArgs> {
|
|
20
20
|
enabled?: boolean;
|
|
21
21
|
simultaneousHandlers?: Handler[] | null;
|
|
@@ -27,6 +27,8 @@ export interface Config extends Record<string, ConfigArgs> {
|
|
|
27
27
|
activeCursor?: ActiveCursor;
|
|
28
28
|
mouseButton?: MouseButton;
|
|
29
29
|
enableContextMenu?: boolean;
|
|
30
|
+
touchAction?: TouchAction;
|
|
31
|
+
manualActivation?: boolean;
|
|
30
32
|
activateAfterLongPress?: number;
|
|
31
33
|
failOffsetXStart?: number;
|
|
32
34
|
failOffsetYStart?: number;
|
|
@@ -67,6 +69,10 @@ interface NativeEvent extends Record<string, NativeEventArgs> {
|
|
|
67
69
|
oldState?: State;
|
|
68
70
|
pointerType: PointerType;
|
|
69
71
|
}
|
|
72
|
+
export interface Point {
|
|
73
|
+
x: number;
|
|
74
|
+
y: number;
|
|
75
|
+
}
|
|
70
76
|
export interface PointerData {
|
|
71
77
|
id: number;
|
|
72
78
|
x: number;
|
|
@@ -109,14 +115,6 @@ export interface AdaptedEvent {
|
|
|
109
115
|
changedTouches?: TouchList;
|
|
110
116
|
touchEventType?: TouchEventType;
|
|
111
117
|
}
|
|
112
|
-
export declare enum MouseButton {
|
|
113
|
-
LEFT = 1,
|
|
114
|
-
RIGHT = 2,
|
|
115
|
-
MIDDLE = 4,
|
|
116
|
-
BUTTON_4 = 8,
|
|
117
|
-
BUTTON_5 = 16,
|
|
118
|
-
ALL = 31
|
|
119
|
-
}
|
|
120
118
|
export declare enum EventTypes {
|
|
121
119
|
DOWN = 0,
|
|
122
120
|
ADDITIONAL_POINTER_DOWN = 1,
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { AdaptedEvent, EventTypes, TouchEventType } from '../interfaces';
|
|
2
|
+
type PointerEventCallback = (event: AdaptedEvent) => void;
|
|
2
3
|
export default abstract class EventManager<T> {
|
|
3
4
|
protected readonly view: T;
|
|
4
5
|
protected pointersInBounds: number[];
|
|
5
6
|
protected activePointersCounter: number;
|
|
6
7
|
constructor(view: T);
|
|
7
|
-
abstract
|
|
8
|
+
abstract registerListeners(): void;
|
|
9
|
+
abstract unregisterListeners(): void;
|
|
8
10
|
protected abstract mapEvent(event: Event, eventType: EventTypes, index?: number, touchEventType?: TouchEventType): AdaptedEvent;
|
|
9
11
|
protected onPointerDown(_event: AdaptedEvent): void;
|
|
10
12
|
protected onPointerAdd(_event: AdaptedEvent): void;
|
|
@@ -17,18 +19,19 @@ export default abstract class EventManager<T> {
|
|
|
17
19
|
protected onPointerOutOfBounds(_event: AdaptedEvent): void;
|
|
18
20
|
protected onPointerMoveOver(_event: AdaptedEvent): void;
|
|
19
21
|
protected onPointerMoveOut(_event: AdaptedEvent): void;
|
|
20
|
-
setOnPointerDown(callback:
|
|
21
|
-
setOnPointerAdd(callback:
|
|
22
|
-
setOnPointerUp(callback:
|
|
23
|
-
setOnPointerRemove(callback:
|
|
24
|
-
setOnPointerMove(callback:
|
|
25
|
-
setOnPointerLeave(callback:
|
|
26
|
-
setOnPointerEnter(callback:
|
|
27
|
-
setOnPointerCancel(callback:
|
|
28
|
-
setOnPointerOutOfBounds(callback:
|
|
29
|
-
setOnPointerMoveOver(callback:
|
|
30
|
-
setOnPointerMoveOut(callback:
|
|
22
|
+
setOnPointerDown(callback: PointerEventCallback): void;
|
|
23
|
+
setOnPointerAdd(callback: PointerEventCallback): void;
|
|
24
|
+
setOnPointerUp(callback: PointerEventCallback): void;
|
|
25
|
+
setOnPointerRemove(callback: PointerEventCallback): void;
|
|
26
|
+
setOnPointerMove(callback: PointerEventCallback): void;
|
|
27
|
+
setOnPointerLeave(callback: PointerEventCallback): void;
|
|
28
|
+
setOnPointerEnter(callback: PointerEventCallback): void;
|
|
29
|
+
setOnPointerCancel(callback: PointerEventCallback): void;
|
|
30
|
+
setOnPointerOutOfBounds(callback: PointerEventCallback): void;
|
|
31
|
+
setOnPointerMoveOver(callback: PointerEventCallback): void;
|
|
32
|
+
setOnPointerMoveOut(callback: PointerEventCallback): void;
|
|
31
33
|
protected markAsInBounds(pointerId: number): void;
|
|
32
34
|
protected markAsOutOfBounds(pointerId: number): void;
|
|
33
35
|
resetManager(): void;
|
|
34
36
|
}
|
|
37
|
+
export {};
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type GestureHandler from '../handlers/GestureHandler';
|
|
2
1
|
import { Config } from '../interfaces';
|
|
3
2
|
export interface MeasureResult {
|
|
4
3
|
pageX: number;
|
|
@@ -6,9 +5,9 @@ export interface MeasureResult {
|
|
|
6
5
|
width: number;
|
|
7
6
|
height: number;
|
|
8
7
|
}
|
|
9
|
-
export interface GestureHandlerDelegate<
|
|
10
|
-
getView():
|
|
11
|
-
init(viewRef: number, handler:
|
|
8
|
+
export interface GestureHandlerDelegate<TComponent, THandler> {
|
|
9
|
+
getView(): TComponent;
|
|
10
|
+
init(viewRef: number, handler: THandler): void;
|
|
12
11
|
isPointerInBounds({ x, y }: {
|
|
13
12
|
x: number;
|
|
14
13
|
y: number;
|
|
@@ -1,29 +1,31 @@
|
|
|
1
1
|
import { State } from '../../State';
|
|
2
|
-
import
|
|
2
|
+
import type IGestureHandler from '../handlers/IGestureHandler';
|
|
3
3
|
export default class GestureHandlerOrchestrator {
|
|
4
4
|
private static instance;
|
|
5
5
|
private gestureHandlers;
|
|
6
6
|
private awaitingHandlers;
|
|
7
|
+
private awaitingHandlersTags;
|
|
7
8
|
private handlingChangeSemaphore;
|
|
8
9
|
private activationIndex;
|
|
9
10
|
private constructor();
|
|
10
11
|
private scheduleFinishedHandlersCleanup;
|
|
11
12
|
private cleanHandler;
|
|
12
|
-
removeHandlerFromOrchestrator(handler:
|
|
13
|
+
removeHandlerFromOrchestrator(handler: IGestureHandler): void;
|
|
13
14
|
private cleanupFinishedHandlers;
|
|
14
15
|
private hasOtherHandlerToWaitFor;
|
|
16
|
+
private shouldBeCancelledByFinishedHandler;
|
|
15
17
|
private tryActivate;
|
|
16
18
|
private shouldActivate;
|
|
17
19
|
private cleanupAwaitingHandlers;
|
|
18
|
-
onHandlerStateChange(handler:
|
|
20
|
+
onHandlerStateChange(handler: IGestureHandler, newState: State, oldState: State, sendIfDisabled?: boolean): void;
|
|
19
21
|
private makeActive;
|
|
20
22
|
private addAwaitingHandler;
|
|
21
|
-
recordHandlerIfNotPresent(handler:
|
|
23
|
+
recordHandlerIfNotPresent(handler: IGestureHandler): void;
|
|
22
24
|
private shouldHandlerWaitForOther;
|
|
23
25
|
private canRunSimultaneously;
|
|
24
26
|
private shouldHandlerBeCancelledBy;
|
|
25
27
|
private checkOverlap;
|
|
26
28
|
private isFinished;
|
|
27
|
-
cancelMouseAndPenGestures(currentHandler:
|
|
29
|
+
cancelMouseAndPenGestures(currentHandler: IGestureHandler): void;
|
|
28
30
|
static getInstance(): GestureHandlerOrchestrator;
|
|
29
31
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import type IGestureHandler from '../handlers/IGestureHandler';
|
|
2
2
|
import { GestureHandlerDelegate, MeasureResult } from './GestureHandlerDelegate';
|
|
3
3
|
import { Config } from '../interfaces';
|
|
4
|
-
export declare class GestureHandlerWebDelegate implements GestureHandlerDelegate<HTMLElement> {
|
|
4
|
+
export declare class GestureHandlerWebDelegate implements GestureHandlerDelegate<HTMLElement, IGestureHandler> {
|
|
5
5
|
private view;
|
|
6
6
|
private gestureHandler;
|
|
7
7
|
private eventManagers;
|
|
8
8
|
getView(): HTMLElement;
|
|
9
|
-
init(viewRef: number, handler:
|
|
9
|
+
init(viewRef: number, handler: IGestureHandler): void;
|
|
10
10
|
isPointerInBounds({ x, y }: {
|
|
11
11
|
x: number;
|
|
12
12
|
y: number;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type IGestureHandler from '../handlers/IGestureHandler';
|
|
2
2
|
import { Config } from '../interfaces';
|
|
3
3
|
export default class InteractionManager {
|
|
4
4
|
private static instance;
|
|
@@ -6,11 +6,11 @@ export default class InteractionManager {
|
|
|
6
6
|
private readonly simultaneousRelations;
|
|
7
7
|
private readonly blocksHandlersRelations;
|
|
8
8
|
private constructor();
|
|
9
|
-
configureInteractions(handler:
|
|
10
|
-
shouldWaitForHandlerFailure(handler:
|
|
11
|
-
shouldRecognizeSimultaneously(handler:
|
|
12
|
-
shouldRequireHandlerToWaitForFailure(handler:
|
|
13
|
-
shouldHandlerBeCancelledBy(_handler:
|
|
9
|
+
configureInteractions(handler: IGestureHandler, config: Config): void;
|
|
10
|
+
shouldWaitForHandlerFailure(handler: IGestureHandler, otherHandler: IGestureHandler): boolean;
|
|
11
|
+
shouldRecognizeSimultaneously(handler: IGestureHandler, otherHandler: IGestureHandler): boolean;
|
|
12
|
+
shouldRequireHandlerToWaitForFailure(handler: IGestureHandler, otherHandler: IGestureHandler): boolean;
|
|
13
|
+
shouldHandlerBeCancelledBy(_handler: IGestureHandler, otherHandler: IGestureHandler): boolean;
|
|
14
14
|
dropRelationsForHandlerWithTag(handlerTag: number): void;
|
|
15
15
|
reset(): void;
|
|
16
16
|
static getInstance(): InteractionManager;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { ValueOf } from '../../typeUtils';
|
|
2
|
-
import { Gestures } from '
|
|
2
|
+
import { Gestures } from '../Gestures';
|
|
3
|
+
import type IGestureHandler from '../handlers/IGestureHandler';
|
|
3
4
|
export default abstract class NodeManager {
|
|
4
5
|
private static gestures;
|
|
5
|
-
static getHandler(tag: number):
|
|
6
|
+
static getHandler(tag: number): IGestureHandler;
|
|
6
7
|
static createGestureHandler(handlerTag: number, handler: InstanceType<ValueOf<typeof Gestures>>): void;
|
|
7
8
|
static dropGestureHandler(handlerTag: number): void;
|
|
8
9
|
static getNodes(): {
|
|
9
|
-
[x: number]: import("../handlers/
|
|
10
|
+
[x: number]: import("../handlers/PanGestureHandler").default | import("../handlers/TapGestureHandler").default | import("../handlers/LongPressGestureHandler").default | import("../handlers/PinchGestureHandler").default | import("../handlers/RotationGestureHandler").default | import("../handlers/FlingGestureHandler").default | import("../handlers/NativeViewGestureHandler").default | import("../handlers/ManualGestureHandler").default | import("../handlers/HoverGestureHandler").default;
|
|
10
11
|
};
|
|
11
12
|
}
|
|
@@ -1,10 +1,19 @@
|
|
|
1
|
-
import { AdaptedEvent, EventTypes } from '../interfaces';
|
|
2
1
|
import EventManager from './EventManager';
|
|
2
|
+
import { AdaptedEvent, EventTypes } from '../interfaces';
|
|
3
3
|
export default class PointerEventManager extends EventManager<HTMLElement> {
|
|
4
4
|
private trackedPointers;
|
|
5
5
|
private readonly mouseButtonsMapper;
|
|
6
|
+
private lastPosition;
|
|
6
7
|
constructor(view: HTMLElement);
|
|
7
|
-
|
|
8
|
+
private pointerDownCallback;
|
|
9
|
+
private pointerUpCallback;
|
|
10
|
+
private pointerMoveCallback;
|
|
11
|
+
private pointerCancelCallback;
|
|
12
|
+
private pointerEnterCallback;
|
|
13
|
+
private pointerLeaveCallback;
|
|
14
|
+
private lostPointerCaptureCallback;
|
|
15
|
+
registerListeners(): void;
|
|
16
|
+
unregisterListeners(): void;
|
|
8
17
|
protected mapEvent(event: PointerEvent, eventType: EventTypes): AdaptedEvent;
|
|
9
18
|
resetManager(): void;
|
|
10
19
|
}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { AdaptedEvent, EventTypes, TouchEventType } from '../interfaces';
|
|
2
2
|
import EventManager from './EventManager';
|
|
3
3
|
export default class TouchEventManager extends EventManager<HTMLElement> {
|
|
4
|
-
|
|
4
|
+
private touchStartCallback;
|
|
5
|
+
private touchMoveCallback;
|
|
6
|
+
private touchEndCallback;
|
|
7
|
+
private touchCancelCallback;
|
|
8
|
+
registerListeners(): void;
|
|
9
|
+
unregisterListeners(): void;
|
|
5
10
|
protected mapEvent(event: TouchEvent, eventType: EventTypes, index: number, touchEventType: TouchEventType): AdaptedEvent;
|
|
6
11
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DiagonalDirections, Directions } from '../../Directions';
|
|
2
|
+
import PointerTracker from './PointerTracker';
|
|
3
|
+
export default class Vector {
|
|
4
|
+
private readonly x;
|
|
5
|
+
private readonly y;
|
|
6
|
+
private readonly unitX;
|
|
7
|
+
private readonly unitY;
|
|
8
|
+
private readonly _magnitude;
|
|
9
|
+
constructor(x: number, y: number);
|
|
10
|
+
static fromDirection(direction: Directions | DiagonalDirections): Vector;
|
|
11
|
+
static fromVelocity(tracker: PointerTracker, pointerId: number): Vector;
|
|
12
|
+
get magnitude(): number;
|
|
13
|
+
computeSimilarity(vector: Vector): number;
|
|
14
|
+
isSimilar(vector: Vector, threshold: number): boolean;
|
|
15
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PointerType } from '../PointerType';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
y: number;
|
|
5
|
-
}): boolean;
|
|
2
|
+
import { Point } from './interfaces';
|
|
3
|
+
export declare function isPointerInBounds(view: HTMLElement, { x, y }: Point): boolean;
|
|
6
4
|
export declare const PointerTypeMapping: Map<string, PointerType>;
|
|
5
|
+
export declare const degToRad: (degrees: number) => number;
|
|
6
|
+
export declare const coneToDeviation: (degrees: number) => number;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ValueOf } from '../typeUtils';
|
|
2
|
-
import { HammerGestures } from '../
|
|
2
|
+
import { HammerGestures } from '../web/Gestures';
|
|
3
3
|
export declare function getHandler(tag: number): import("./NativeViewGestureHandler").default | import("./PanGestureHandler").default | import("./TapGestureHandler").default | import("./LongPressGestureHandler").default | import("./PinchGestureHandler").default | import("./RotationGestureHandler").default | import("./FlingGestureHandler").default;
|
|
4
4
|
export declare function createGestureHandler(handlerTag: number, handler: InstanceType<ValueOf<typeof HammerGestures>>): void;
|
|
5
5
|
export declare function dropGestureHandler(handlerTag: number): void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-gesture-handler",
|
|
3
|
-
"version": "2.16.
|
|
3
|
+
"version": "2.16.1",
|
|
4
4
|
"description": "Experimental implementation of a new declarative API for gesture handling in react-native",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"prepare": "bob build && husky install",
|
|
@@ -98,6 +98,7 @@
|
|
|
98
98
|
"husky": "^8.0.1",
|
|
99
99
|
"jest": "^26.6.3",
|
|
100
100
|
"lint-staged": "^12.3.2",
|
|
101
|
+
"madge": "^6.1.0",
|
|
101
102
|
"prettier": "^2.7.1",
|
|
102
103
|
"react": "18.2.0",
|
|
103
104
|
"react-dom": "^16.12.0",
|
|
@@ -151,5 +152,6 @@
|
|
|
151
152
|
"android": {
|
|
152
153
|
"javaPackageName": "com.swmansion.gesturehandler"
|
|
153
154
|
}
|
|
154
|
-
}
|
|
155
|
+
},
|
|
156
|
+
"packageManager": "yarn@1.22.22"
|
|
155
157
|
}
|
package/src/Directions.ts
CHANGED
|
@@ -1,9 +1,26 @@
|
|
|
1
|
+
const RIGHT = 1;
|
|
2
|
+
const LEFT = 2;
|
|
3
|
+
const UP = 4;
|
|
4
|
+
const DOWN = 8;
|
|
5
|
+
|
|
6
|
+
// public interface
|
|
1
7
|
export const Directions = {
|
|
2
|
-
RIGHT:
|
|
3
|
-
LEFT:
|
|
4
|
-
UP:
|
|
5
|
-
DOWN:
|
|
8
|
+
RIGHT: RIGHT,
|
|
9
|
+
LEFT: LEFT,
|
|
10
|
+
UP: UP,
|
|
11
|
+
DOWN: DOWN,
|
|
12
|
+
} as const;
|
|
13
|
+
|
|
14
|
+
// internal interface
|
|
15
|
+
export const DiagonalDirections = {
|
|
16
|
+
UP_RIGHT: UP | RIGHT,
|
|
17
|
+
DOWN_RIGHT: DOWN | RIGHT,
|
|
18
|
+
UP_LEFT: UP | LEFT,
|
|
19
|
+
DOWN_LEFT: DOWN | LEFT,
|
|
6
20
|
} as const;
|
|
7
21
|
|
|
8
22
|
// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value
|
|
9
23
|
export type Directions = typeof Directions[keyof typeof Directions];
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
|
25
|
+
export type DiagonalDirections =
|
|
26
|
+
typeof DiagonalDirections[keyof typeof DiagonalDirections];
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// Reexport the native module spec used by codegen. The relevant files are inluded on Android
|
|
2
|
+
// to ensure the compatibility with the old arch, while iOS doesn't require those at all.
|
|
3
|
+
|
|
4
|
+
import Module from './specs/NativeRNGestureHandlerModule';
|
|
5
|
+
export default Module;
|
|
@@ -1,5 +1,105 @@
|
|
|
1
|
-
|
|
2
|
-
// to ensure the compatibility with the old arch, while iOS doesn't require those at all.
|
|
1
|
+
import React from 'react';
|
|
3
2
|
|
|
4
|
-
import
|
|
5
|
-
|
|
3
|
+
import type { ActionType } from './ActionType';
|
|
4
|
+
import { isNewWebImplementationEnabled } from './EnableNewWebImplementation';
|
|
5
|
+
import { Gestures, HammerGestures } from './web/Gestures';
|
|
6
|
+
import type { Config } from './web/interfaces';
|
|
7
|
+
import InteractionManager from './web/tools/InteractionManager';
|
|
8
|
+
import NodeManager from './web/tools/NodeManager';
|
|
9
|
+
import * as HammerNodeManager from './web_hammer/NodeManager';
|
|
10
|
+
import { GestureHandlerWebDelegate } from './web/tools/GestureHandlerWebDelegate';
|
|
11
|
+
|
|
12
|
+
export default {
|
|
13
|
+
handleSetJSResponder(tag: number, blockNativeResponder: boolean) {
|
|
14
|
+
console.warn('handleSetJSResponder: ', tag, blockNativeResponder);
|
|
15
|
+
},
|
|
16
|
+
handleClearJSResponder() {
|
|
17
|
+
console.warn('handleClearJSResponder: ');
|
|
18
|
+
},
|
|
19
|
+
createGestureHandler<T>(
|
|
20
|
+
handlerName: keyof typeof Gestures,
|
|
21
|
+
handlerTag: number,
|
|
22
|
+
config: T
|
|
23
|
+
) {
|
|
24
|
+
if (isNewWebImplementationEnabled()) {
|
|
25
|
+
if (!(handlerName in Gestures)) {
|
|
26
|
+
throw new Error(
|
|
27
|
+
`react-native-gesture-handler: ${handlerName} is not supported on web.`
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const GestureClass = Gestures[handlerName];
|
|
32
|
+
NodeManager.createGestureHandler(
|
|
33
|
+
handlerTag,
|
|
34
|
+
new GestureClass(new GestureHandlerWebDelegate())
|
|
35
|
+
);
|
|
36
|
+
InteractionManager.getInstance().configureInteractions(
|
|
37
|
+
NodeManager.getHandler(handlerTag),
|
|
38
|
+
config as unknown as Config
|
|
39
|
+
);
|
|
40
|
+
} else {
|
|
41
|
+
if (!(handlerName in HammerGestures)) {
|
|
42
|
+
throw new Error(
|
|
43
|
+
`react-native-gesture-handler: ${handlerName} is not supported on web.`
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// @ts-ignore If it doesn't exist, the error is thrown
|
|
48
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
49
|
+
const GestureClass = HammerGestures[handlerName];
|
|
50
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
51
|
+
HammerNodeManager.createGestureHandler(handlerTag, new GestureClass());
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
this.updateGestureHandler(handlerTag, config as unknown as Config);
|
|
55
|
+
},
|
|
56
|
+
attachGestureHandler(
|
|
57
|
+
handlerTag: number,
|
|
58
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
59
|
+
newView: any,
|
|
60
|
+
_actionType: ActionType,
|
|
61
|
+
propsRef: React.RefObject<unknown>
|
|
62
|
+
) {
|
|
63
|
+
if (
|
|
64
|
+
!(newView instanceof HTMLElement || newView instanceof React.Component)
|
|
65
|
+
) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (isNewWebImplementationEnabled()) {
|
|
70
|
+
//@ts-ignore Types should be HTMLElement or React.Component
|
|
71
|
+
NodeManager.getHandler(handlerTag).init(newView, propsRef);
|
|
72
|
+
} else {
|
|
73
|
+
//@ts-ignore Types should be HTMLElement or React.Component
|
|
74
|
+
HammerNodeManager.getHandler(handlerTag).setView(newView, propsRef);
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
updateGestureHandler(handlerTag: number, newConfig: Config) {
|
|
78
|
+
if (isNewWebImplementationEnabled()) {
|
|
79
|
+
NodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);
|
|
80
|
+
|
|
81
|
+
InteractionManager.getInstance().configureInteractions(
|
|
82
|
+
NodeManager.getHandler(handlerTag),
|
|
83
|
+
newConfig
|
|
84
|
+
);
|
|
85
|
+
} else {
|
|
86
|
+
HammerNodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
getGestureHandlerNode(handlerTag: number) {
|
|
90
|
+
if (isNewWebImplementationEnabled()) {
|
|
91
|
+
return NodeManager.getHandler(handlerTag);
|
|
92
|
+
} else {
|
|
93
|
+
return HammerNodeManager.getHandler(handlerTag);
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
dropGestureHandler(handlerTag: number) {
|
|
97
|
+
if (isNewWebImplementationEnabled()) {
|
|
98
|
+
NodeManager.dropGestureHandler(handlerTag);
|
|
99
|
+
} else {
|
|
100
|
+
HammerNodeManager.dropGestureHandler(handlerTag);
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
104
|
+
flushOperations() {},
|
|
105
|
+
};
|
package/src/RNRenderer.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
export const RNRenderer = {
|
|
2
|
+
findHostInstance_DEPRECATED: (_ref: any) => null,
|
|
3
|
+
};
|
|
@@ -28,6 +28,7 @@ import {
|
|
|
28
28
|
HandlerStateChangeEvent,
|
|
29
29
|
UserSelect,
|
|
30
30
|
ActiveCursor,
|
|
31
|
+
MouseButton,
|
|
31
32
|
} from '../handlers/gestureHandlerCommon';
|
|
32
33
|
import {
|
|
33
34
|
PanGestureHandler,
|
|
@@ -38,7 +39,6 @@ import {
|
|
|
38
39
|
TapGestureHandlerEventPayload,
|
|
39
40
|
} from '../handlers/TapGestureHandler';
|
|
40
41
|
import { State } from '../State';
|
|
41
|
-
import { MouseButton } from '../web/interfaces';
|
|
42
42
|
|
|
43
43
|
const DRAG_TOSS = 0.05;
|
|
44
44
|
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
PropsWithChildren,
|
|
4
|
+
ForwardedRef,
|
|
5
|
+
RefAttributes,
|
|
6
|
+
ReactElement,
|
|
7
|
+
} from 'react';
|
|
8
|
+
import {
|
|
9
|
+
ScrollView as RNScrollView,
|
|
10
|
+
ScrollViewProps as RNScrollViewProps,
|
|
11
|
+
Switch as RNSwitch,
|
|
12
|
+
SwitchProps as RNSwitchProps,
|
|
13
|
+
TextInput as RNTextInput,
|
|
14
|
+
TextInputProps as RNTextInputProps,
|
|
15
|
+
DrawerLayoutAndroid as RNDrawerLayoutAndroid,
|
|
16
|
+
DrawerLayoutAndroidProps as RNDrawerLayoutAndroidProps,
|
|
17
|
+
FlatList as RNFlatList,
|
|
18
|
+
FlatListProps as RNFlatListProps,
|
|
19
|
+
RefreshControl as RNRefreshControl,
|
|
20
|
+
} from 'react-native';
|
|
21
|
+
|
|
22
|
+
import createNativeWrapper from '../handlers/createNativeWrapper';
|
|
23
|
+
|
|
24
|
+
import {
|
|
25
|
+
NativeViewGestureHandlerProps,
|
|
26
|
+
nativeViewProps,
|
|
27
|
+
} from '../handlers/NativeViewGestureHandler';
|
|
28
|
+
|
|
29
|
+
import { toArray } from '../utils';
|
|
30
|
+
|
|
31
|
+
export const RefreshControl = createNativeWrapper(RNRefreshControl, {
|
|
32
|
+
disallowInterruption: true,
|
|
33
|
+
shouldCancelWhenOutside: false,
|
|
34
|
+
});
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
|
36
|
+
export type RefreshControl = typeof RefreshControl & RNRefreshControl;
|
|
37
|
+
|
|
38
|
+
const GHScrollView = createNativeWrapper<PropsWithChildren<RNScrollViewProps>>(
|
|
39
|
+
RNScrollView,
|
|
40
|
+
{
|
|
41
|
+
disallowInterruption: true,
|
|
42
|
+
shouldCancelWhenOutside: false,
|
|
43
|
+
}
|
|
44
|
+
);
|
|
45
|
+
export const ScrollView = React.forwardRef<
|
|
46
|
+
RNScrollView,
|
|
47
|
+
RNScrollViewProps & NativeViewGestureHandlerProps
|
|
48
|
+
>((props, ref) => {
|
|
49
|
+
const refreshControlGestureRef = React.useRef<RefreshControl>(null);
|
|
50
|
+
const { refreshControl, waitFor, ...rest } = props;
|
|
51
|
+
|
|
52
|
+
return (
|
|
53
|
+
<GHScrollView
|
|
54
|
+
{...rest}
|
|
55
|
+
// @ts-ignore `ref` exists on `GHScrollView`
|
|
56
|
+
ref={ref}
|
|
57
|
+
waitFor={[...toArray(waitFor ?? []), refreshControlGestureRef]}
|
|
58
|
+
// @ts-ignore we don't pass `refreshing` prop as we only want to override the ref
|
|
59
|
+
refreshControl={
|
|
60
|
+
refreshControl
|
|
61
|
+
? React.cloneElement(refreshControl, {
|
|
62
|
+
// @ts-ignore for reasons unknown to me, `ref` doesn't exist on the type inferred by TS
|
|
63
|
+
ref: refreshControlGestureRef,
|
|
64
|
+
})
|
|
65
|
+
: undefined
|
|
66
|
+
}
|
|
67
|
+
/>
|
|
68
|
+
);
|
|
69
|
+
});
|
|
70
|
+
// backward type compatibility with https://github.com/software-mansion/react-native-gesture-handler/blob/db78d3ca7d48e8ba57482d3fe9b0a15aa79d9932/react-native-gesture-handler.d.ts#L440-L457
|
|
71
|
+
// include methods of wrapped components by creating an intersection type with the RN component instead of duplicating them.
|
|
72
|
+
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
|
73
|
+
export type ScrollView = typeof GHScrollView & RNScrollView;
|
|
74
|
+
|
|
75
|
+
export const Switch = createNativeWrapper<RNSwitchProps>(RNSwitch, {
|
|
76
|
+
shouldCancelWhenOutside: false,
|
|
77
|
+
shouldActivateOnStart: true,
|
|
78
|
+
disallowInterruption: true,
|
|
79
|
+
});
|
|
80
|
+
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
|
81
|
+
export type Switch = typeof Switch & RNSwitch;
|
|
82
|
+
|
|
83
|
+
export const TextInput = createNativeWrapper<RNTextInputProps>(RNTextInput);
|
|
84
|
+
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
|
85
|
+
export type TextInput = typeof TextInput & RNTextInput;
|
|
86
|
+
|
|
87
|
+
export const DrawerLayoutAndroid = createNativeWrapper<
|
|
88
|
+
PropsWithChildren<RNDrawerLayoutAndroidProps>
|
|
89
|
+
>(RNDrawerLayoutAndroid, { disallowInterruption: true });
|
|
90
|
+
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
|
91
|
+
export type DrawerLayoutAndroid = typeof DrawerLayoutAndroid &
|
|
92
|
+
RNDrawerLayoutAndroid;
|
|
93
|
+
|
|
94
|
+
export const FlatList = React.forwardRef((props, ref) => {
|
|
95
|
+
const refreshControlGestureRef = React.useRef<RefreshControl>(null);
|
|
96
|
+
|
|
97
|
+
const { waitFor, refreshControl, ...rest } = props;
|
|
98
|
+
|
|
99
|
+
const flatListProps = {};
|
|
100
|
+
const scrollViewProps = {};
|
|
101
|
+
for (const [propName, value] of Object.entries(rest)) {
|
|
102
|
+
// https://github.com/microsoft/TypeScript/issues/26255
|
|
103
|
+
if ((nativeViewProps as readonly string[]).includes(propName)) {
|
|
104
|
+
// @ts-ignore - this function cannot have generic type so we have to ignore this error
|
|
105
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
106
|
+
scrollViewProps[propName] = value;
|
|
107
|
+
} else {
|
|
108
|
+
// @ts-ignore - this function cannot have generic type so we have to ignore this error
|
|
109
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
110
|
+
flatListProps[propName] = value;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return (
|
|
115
|
+
// @ts-ignore - this function cannot have generic type so we have to ignore this error
|
|
116
|
+
<RNFlatList
|
|
117
|
+
ref={ref}
|
|
118
|
+
{...flatListProps}
|
|
119
|
+
renderScrollComponent={(scrollProps) => (
|
|
120
|
+
<ScrollView
|
|
121
|
+
{...{
|
|
122
|
+
...scrollProps,
|
|
123
|
+
...scrollViewProps,
|
|
124
|
+
waitFor: [...toArray(waitFor ?? []), refreshControlGestureRef],
|
|
125
|
+
}}
|
|
126
|
+
/>
|
|
127
|
+
)}
|
|
128
|
+
// @ts-ignore we don't pass `refreshing` prop as we only want to override the ref
|
|
129
|
+
refreshControl={
|
|
130
|
+
refreshControl
|
|
131
|
+
? React.cloneElement(refreshControl, {
|
|
132
|
+
// @ts-ignore for reasons unknown to me, `ref` doesn't exist on the type inferred by TS
|
|
133
|
+
ref: refreshControlGestureRef,
|
|
134
|
+
})
|
|
135
|
+
: undefined
|
|
136
|
+
}
|
|
137
|
+
/>
|
|
138
|
+
);
|
|
139
|
+
}) as <ItemT = any>(
|
|
140
|
+
props: PropsWithChildren<
|
|
141
|
+
RNFlatListProps<ItemT> &
|
|
142
|
+
RefAttributes<FlatList<ItemT>> &
|
|
143
|
+
NativeViewGestureHandlerProps
|
|
144
|
+
>,
|
|
145
|
+
ref: ForwardedRef<FlatList<ItemT>>
|
|
146
|
+
) => ReactElement | null;
|
|
147
|
+
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
|
148
|
+
export type FlatList<ItemT = any> = typeof FlatList & RNFlatList<ItemT>;
|