react-native-gesture-handler 2.4.1 → 2.6.0
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 +4 -2
- package/RNGestureHandler.podspec +17 -5
- package/android/build.gradle +71 -15
- package/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.kt +2 -1
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt +9 -5
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt +32 -6
- package/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.kt +5 -2
- package/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.kt +105 -23
- package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.kt +30 -2
- package/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.kt +3 -2
- package/android/src/fabric/java/com/swmansion/gesturehandler/RNGestureHandlerComponentsRegistry.java +1 -1
- package/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt +0 -8
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +74 -84
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +7 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +5 -1
- package/android/src/main/jni/CMakeLists.txt +59 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java +12 -9
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java +1 -0
- package/ios/Handlers/RNFlingHandler.m +43 -1
- package/ios/Handlers/{RNNativeViewHandler.m → RNNativeViewHandler.mm} +13 -1
- package/ios/Handlers/RNPanHandler.m +27 -0
- package/ios/RNGestureHandler.h +1 -0
- package/ios/RNGestureHandler.m +22 -4
- package/ios/RNGestureHandlerButtonComponentView.mm +1 -1
- package/ios/RNGestureHandlerManager.mm +10 -7
- package/ios/RNGestureHandlerModule.mm +4 -1
- package/ios/RNGestureHandlerRootViewComponentView.mm +1 -1
- package/ios/RNManualActivationRecognizer.m +10 -3
- package/ios/RNRootViewGestureRecognizer.m +12 -1
- package/lib/commonjs/EnableExperimentalWebImplementation.js +24 -0
- package/lib/commonjs/EnableExperimentalWebImplementation.js.map +1 -0
- package/lib/commonjs/RNGestureHandlerModule.macos.js +138 -0
- package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -0
- package/lib/commonjs/RNGestureHandlerModule.web.js +87 -25
- package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/commonjs/RNRenderer.js +16 -0
- package/lib/commonjs/RNRenderer.js.map +1 -0
- package/lib/commonjs/RNRenderer.web.js +11 -0
- package/lib/commonjs/RNRenderer.web.js.map +1 -0
- package/lib/commonjs/components/DrawerLayout.js +41 -12
- package/lib/commonjs/components/DrawerLayout.js.map +1 -1
- package/lib/commonjs/components/GestureButtons.js +42 -9
- package/lib/commonjs/components/GestureButtons.js.map +1 -1
- package/lib/commonjs/components/GestureComponents.js +41 -4
- package/lib/commonjs/components/GestureComponents.js.map +1 -1
- package/lib/commonjs/components/GestureComponents.web.js +7 -2
- package/lib/commonjs/components/GestureComponents.web.js.map +1 -1
- package/lib/commonjs/components/Swipeable.js +3 -1
- package/lib/commonjs/components/Swipeable.js.map +1 -1
- package/lib/commonjs/components/touchables/GenericTouchable.js +5 -1
- package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
- package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
- package/lib/commonjs/handlers/ForceTouchGestureHandler.js +2 -1
- package/lib/commonjs/handlers/ForceTouchGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/PanGestureHandler.js +1 -1
- package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/PressabilityDebugView.js +14 -0
- package/lib/commonjs/handlers/PressabilityDebugView.js.map +1 -0
- package/lib/commonjs/handlers/PressabilityDebugView.web.js +12 -0
- package/lib/commonjs/handlers/PressabilityDebugView.web.js.map +1 -0
- package/lib/commonjs/handlers/createHandler.js +33 -12
- package/lib/commonjs/handlers/createHandler.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector.js +150 -75
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gesture.js +13 -2
- package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureStateManager.js +13 -9
- package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -1
- package/lib/commonjs/handlers/gestures/panGesture.js +5 -0
- package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/reanimatedWrapper.js +7 -0
- package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -1
- package/lib/commonjs/index.js +14 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/utils.js +6 -3
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/commonjs/web/constants.js +3 -51
- package/lib/commonjs/web/constants.js.map +1 -1
- package/lib/commonjs/web/detectors/RotationGestureDetector.js +169 -0
- package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -0
- package/lib/commonjs/web/detectors/ScaleGestureDetector.js +167 -0
- package/lib/commonjs/web/detectors/ScaleGestureDetector.js.map +1 -0
- package/lib/commonjs/web/handlers/FlingGestureHandler.js +154 -0
- package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -0
- package/lib/commonjs/web/handlers/GestureHandler.js +538 -0
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -0
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js +147 -0
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -0
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +116 -0
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -0
- package/lib/commonjs/web/handlers/PanGestureHandler.js +451 -0
- package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -0
- package/lib/commonjs/web/handlers/PinchGestureHandler.js +171 -0
- package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -0
- package/lib/commonjs/web/handlers/RotationGestureHandler.js +187 -0
- package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -0
- package/lib/commonjs/web/handlers/TapGestureHandler.js +296 -0
- package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -0
- package/lib/commonjs/web/interfaces.js +34 -0
- package/lib/commonjs/web/interfaces.js.map +1 -0
- package/lib/commonjs/web/tools/EventManager.js +169 -0
- package/lib/commonjs/web/tools/EventManager.js.map +1 -0
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +283 -0
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -0
- package/lib/commonjs/web/tools/InteractionManager.js +102 -0
- package/lib/commonjs/web/tools/InteractionManager.js.map +1 -0
- package/lib/commonjs/web/tools/NodeManager.js +48 -0
- package/lib/commonjs/web/tools/NodeManager.js.map +1 -0
- package/lib/commonjs/web/tools/PointerTracker.js +132 -0
- package/lib/commonjs/web/tools/PointerTracker.js.map +1 -0
- package/lib/commonjs/{web → web_hammer}/DiscreteGestureHandler.js +0 -0
- package/lib/commonjs/{web → web_hammer}/DiscreteGestureHandler.js.map +0 -0
- package/lib/commonjs/{web → web_hammer}/DraggingGestureHandler.js +0 -0
- package/lib/commonjs/{web → web_hammer}/DraggingGestureHandler.js.map +0 -0
- package/lib/commonjs/{web → web_hammer}/Errors.js +0 -0
- package/lib/commonjs/{web → web_hammer}/Errors.js.map +0 -0
- package/lib/commonjs/{web → web_hammer}/FlingGestureHandler.js +0 -0
- package/lib/commonjs/{web → web_hammer}/FlingGestureHandler.js.map +0 -0
- package/lib/commonjs/{web → web_hammer}/GestureHandler.js +83 -42
- package/lib/commonjs/web_hammer/GestureHandler.js.map +1 -0
- package/lib/commonjs/{web → web_hammer}/IndiscreteGestureHandler.js +0 -0
- package/lib/commonjs/{web → web_hammer}/IndiscreteGestureHandler.js.map +0 -0
- package/lib/commonjs/{web → web_hammer}/LongPressGestureHandler.js +0 -0
- package/lib/commonjs/{web → web_hammer}/LongPressGestureHandler.js.map +0 -0
- package/lib/commonjs/{web → web_hammer}/NativeViewGestureHandler.js +4 -0
- package/lib/commonjs/web_hammer/NativeViewGestureHandler.js.map +1 -0
- package/lib/commonjs/{web → web_hammer}/NodeManager.js +0 -0
- package/lib/commonjs/web_hammer/NodeManager.js.map +1 -0
- package/lib/commonjs/{web → web_hammer}/PanGestureHandler.js +0 -0
- package/lib/commonjs/{web → web_hammer}/PanGestureHandler.js.map +0 -0
- package/lib/commonjs/{web → web_hammer}/PinchGestureHandler.js +0 -0
- package/lib/commonjs/{web → web_hammer}/PinchGestureHandler.js.map +0 -0
- package/lib/commonjs/{web → web_hammer}/PressGestureHandler.js +0 -0
- package/lib/commonjs/{web → web_hammer}/PressGestureHandler.js.map +0 -0
- package/lib/commonjs/{web → web_hammer}/RotationGestureHandler.js +0 -0
- package/lib/commonjs/{web → web_hammer}/RotationGestureHandler.js.map +0 -0
- package/lib/commonjs/{web → web_hammer}/TapGestureHandler.js +0 -0
- package/lib/commonjs/{web → web_hammer}/TapGestureHandler.js.map +0 -0
- package/lib/commonjs/web_hammer/constants.js +64 -0
- package/lib/commonjs/web_hammer/constants.js.map +1 -0
- package/lib/commonjs/{web → web_hammer}/utils.js +0 -0
- package/lib/commonjs/{web → web_hammer}/utils.js.map +1 -1
- package/lib/module/EnableExperimentalWebImplementation.js +15 -0
- package/lib/module/EnableExperimentalWebImplementation.js.map +1 -0
- package/lib/module/RNGestureHandlerModule.macos.js +102 -0
- package/lib/module/RNGestureHandlerModule.macos.js.map +1 -0
- package/lib/module/RNGestureHandlerModule.web.js +73 -24
- package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/module/RNRenderer.js +4 -0
- package/lib/module/RNRenderer.js.map +1 -0
- package/lib/module/RNRenderer.web.js +4 -0
- package/lib/module/RNRenderer.web.js.map +1 -0
- package/lib/module/components/DrawerLayout.js +41 -12
- package/lib/module/components/DrawerLayout.js.map +1 -1
- package/lib/module/components/GestureButtons.js +43 -9
- package/lib/module/components/GestureButtons.js.map +1 -1
- package/lib/module/components/GestureComponents.js +39 -4
- package/lib/module/components/GestureComponents.js.map +1 -1
- package/lib/module/components/GestureComponents.web.js +6 -2
- package/lib/module/components/GestureComponents.web.js.map +1 -1
- package/lib/module/components/Swipeable.js +3 -1
- package/lib/module/components/Swipeable.js.map +1 -1
- package/lib/module/components/touchables/GenericTouchable.js +5 -1
- package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
- package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
- package/lib/module/handlers/ForceTouchGestureHandler.js +1 -1
- package/lib/module/handlers/ForceTouchGestureHandler.js.map +1 -1
- package/lib/module/handlers/PanGestureHandler.js +1 -1
- package/lib/module/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/handlers/PressabilityDebugView.js +3 -0
- package/lib/module/handlers/PressabilityDebugView.js.map +1 -0
- package/lib/module/handlers/PressabilityDebugView.web.js +5 -0
- package/lib/module/handlers/PressabilityDebugView.web.js.map +1 -0
- package/lib/module/handlers/createHandler.js +35 -14
- package/lib/module/handlers/createHandler.js.map +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector.js +147 -74
- package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/module/handlers/gestures/gesture.js +13 -2
- package/lib/module/handlers/gestures/gesture.js.map +1 -1
- package/lib/module/handlers/gestures/gestureStateManager.js +13 -9
- package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -1
- package/lib/module/handlers/gestures/panGesture.js +5 -0
- package/lib/module/handlers/gestures/panGesture.js.map +1 -1
- package/lib/module/handlers/gestures/reanimatedWrapper.js +7 -0
- package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -1
- package/lib/module/index.js +2 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/utils.js +2 -1
- package/lib/module/utils.js.map +1 -1
- package/lib/module/web/constants.js +1 -36
- package/lib/module/web/constants.js.map +1 -1
- package/lib/module/web/detectors/RotationGestureDetector.js +159 -0
- package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -0
- package/lib/module/web/detectors/ScaleGestureDetector.js +156 -0
- package/lib/module/web/detectors/ScaleGestureDetector.js.map +1 -0
- package/lib/module/web/handlers/FlingGestureHandler.js +139 -0
- package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -0
- package/lib/module/web/handlers/GestureHandler.js +521 -0
- package/lib/module/web/handlers/GestureHandler.js.map +1 -0
- package/lib/module/web/handlers/LongPressGestureHandler.js +133 -0
- package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -0
- package/lib/module/web/handlers/NativeViewGestureHandler.js +103 -0
- package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -0
- package/lib/module/web/handlers/PanGestureHandler.js +434 -0
- package/lib/module/web/handlers/PanGestureHandler.js.map +1 -0
- package/lib/module/web/handlers/PinchGestureHandler.js +155 -0
- package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -0
- package/lib/module/web/handlers/RotationGestureHandler.js +171 -0
- package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -0
- package/lib/module/web/handlers/TapGestureHandler.js +281 -0
- package/lib/module/web/handlers/TapGestureHandler.js.map +1 -0
- package/lib/module/web/interfaces.js +26 -0
- package/lib/module/web/interfaces.js.map +1 -0
- package/lib/module/web/tools/EventManager.js +160 -0
- package/lib/module/web/tools/EventManager.js.map +1 -0
- package/lib/module/web/tools/GestureHandlerOrchestrator.js +270 -0
- package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -0
- package/lib/module/web/tools/InteractionManager.js +93 -0
- package/lib/module/web/tools/InteractionManager.js.map +1 -0
- package/lib/module/web/tools/NodeManager.js +39 -0
- package/lib/module/web/tools/NodeManager.js.map +1 -0
- package/lib/module/web/tools/PointerTracker.js +122 -0
- package/lib/module/web/tools/PointerTracker.js.map +1 -0
- package/lib/module/{web → web_hammer}/DiscreteGestureHandler.js +0 -0
- package/lib/module/{web → web_hammer}/DiscreteGestureHandler.js.map +0 -0
- package/lib/module/{web → web_hammer}/DraggingGestureHandler.js +0 -0
- package/lib/module/{web → web_hammer}/DraggingGestureHandler.js.map +0 -0
- package/lib/module/{web → web_hammer}/Errors.js +0 -0
- package/lib/module/{web → web_hammer}/Errors.js.map +0 -0
- package/lib/module/{web → web_hammer}/FlingGestureHandler.js +0 -0
- package/lib/module/{web → web_hammer}/FlingGestureHandler.js.map +0 -0
- package/lib/module/{web → web_hammer}/GestureHandler.js +83 -42
- package/lib/module/web_hammer/GestureHandler.js.map +1 -0
- package/lib/module/{web → web_hammer}/IndiscreteGestureHandler.js +0 -0
- package/lib/module/{web → web_hammer}/IndiscreteGestureHandler.js.map +0 -0
- package/lib/module/{web → web_hammer}/LongPressGestureHandler.js +0 -0
- package/lib/module/{web → web_hammer}/LongPressGestureHandler.js.map +0 -0
- package/lib/module/{web → web_hammer}/NativeViewGestureHandler.js +4 -0
- package/lib/module/web_hammer/NativeViewGestureHandler.js.map +1 -0
- package/lib/module/{web → web_hammer}/NodeManager.js +0 -0
- package/lib/module/web_hammer/NodeManager.js.map +1 -0
- package/lib/module/{web → web_hammer}/PanGestureHandler.js +0 -0
- package/lib/module/{web → web_hammer}/PanGestureHandler.js.map +0 -0
- package/lib/module/{web → web_hammer}/PinchGestureHandler.js +0 -0
- package/lib/module/{web → web_hammer}/PinchGestureHandler.js.map +0 -0
- package/lib/module/{web → web_hammer}/PressGestureHandler.js +0 -0
- package/lib/module/{web → web_hammer}/PressGestureHandler.js.map +0 -0
- package/lib/module/{web → web_hammer}/RotationGestureHandler.js +0 -0
- package/lib/module/{web → web_hammer}/RotationGestureHandler.js.map +0 -0
- package/lib/module/{web → web_hammer}/TapGestureHandler.js +0 -0
- package/lib/module/{web → web_hammer}/TapGestureHandler.js.map +0 -0
- package/lib/module/web_hammer/constants.js +43 -0
- package/lib/module/web_hammer/constants.js.map +1 -0
- package/lib/module/{web → web_hammer}/utils.js +0 -0
- package/lib/module/{web → web_hammer}/utils.js.map +1 -1
- package/lib/typescript/EnableExperimentalWebImplementation.d.ts +2 -0
- package/lib/typescript/RNGestureHandlerModule.macos.d.ts +44 -0
- package/lib/typescript/RNGestureHandlerModule.web.d.ts +29 -18
- package/lib/typescript/RNRenderer.d.ts +1 -0
- package/lib/typescript/RNRenderer.web.d.ts +3 -0
- package/lib/typescript/components/DrawerLayout.d.ts +4 -1
- package/lib/typescript/components/GestureButtons.d.ts +22 -0
- package/lib/typescript/components/GestureComponents.d.ts +7 -3
- package/lib/typescript/components/GestureComponents.web.d.ts +1 -0
- package/lib/typescript/components/Swipeable.d.ts +1 -1
- package/lib/typescript/fabric/RNGestureHandlerButtonNativeComponent.d.ts +1 -0
- package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +2 -2
- package/lib/typescript/handlers/PanGestureHandler.d.ts +2 -1
- package/lib/typescript/handlers/PressabilityDebugView.d.ts +1 -0
- package/lib/typescript/handlers/PressabilityDebugView.web.d.ts +1 -0
- package/lib/typescript/handlers/gestureHandlerCommon.d.ts +1 -0
- package/lib/typescript/handlers/gestures/GestureDetector.d.ts +2 -1
- package/lib/typescript/handlers/gestures/gesture.d.ts +3 -0
- package/lib/typescript/handlers/gestures/panGesture.d.ts +1 -0
- package/lib/typescript/index.d.ts +2 -1
- package/lib/typescript/web/constants.d.ts +1 -33
- package/lib/typescript/web/detectors/RotationGestureDetector.d.ts +30 -0
- package/lib/typescript/web/detectors/ScaleGestureDetector.d.ts +30 -0
- package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +31 -0
- package/lib/typescript/web/handlers/GestureHandler.d.ts +84 -0
- package/lib/typescript/web/handlers/LongPressGestureHandler.d.ts +33 -0
- package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +16 -0
- package/lib/typescript/web/handlers/PanGestureHandler.d.ts +68 -0
- package/lib/typescript/web/handlers/PinchGestureHandler.d.ts +30 -0
- package/lib/typescript/web/handlers/RotationGestureHandler.d.ts +30 -0
- package/lib/typescript/web/handlers/TapGestureHandler.d.ts +49 -0
- package/lib/typescript/web/interfaces.d.ts +97 -0
- package/lib/typescript/web/tools/EventManager.d.ts +28 -0
- package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts +28 -0
- package/lib/typescript/web/tools/InteractionManager.d.ts +13 -0
- package/lib/typescript/web/tools/NodeManager.d.ts +11 -0
- package/lib/typescript/web/tools/PointerTracker.d.ts +28 -0
- package/lib/typescript/{web → web_hammer}/DiscreteGestureHandler.d.ts +0 -0
- package/lib/typescript/{web → web_hammer}/DraggingGestureHandler.d.ts +0 -0
- package/lib/typescript/{web → web_hammer}/Errors.d.ts +0 -0
- package/lib/typescript/{web → web_hammer}/FlingGestureHandler.d.ts +1 -0
- package/lib/typescript/{web → web_hammer}/GestureHandler.d.ts +6 -0
- package/lib/typescript/{web → web_hammer}/IndiscreteGestureHandler.d.ts +1 -0
- package/lib/typescript/{web → web_hammer}/LongPressGestureHandler.d.ts +1 -0
- package/lib/typescript/{web → web_hammer}/NativeViewGestureHandler.d.ts +1 -0
- package/lib/typescript/web_hammer/NodeManager.d.ts +8 -0
- package/lib/typescript/{web → web_hammer}/PanGestureHandler.d.ts +1 -0
- package/lib/typescript/{web → web_hammer}/PinchGestureHandler.d.ts +0 -0
- package/lib/typescript/{web → web_hammer}/PressGestureHandler.d.ts +2 -0
- package/lib/typescript/{web → web_hammer}/RotationGestureHandler.d.ts +0 -0
- package/lib/typescript/{web → web_hammer}/TapGestureHandler.d.ts +1 -0
- package/lib/typescript/web_hammer/constants.d.ts +39 -0
- package/lib/typescript/{web → web_hammer}/utils.d.ts +0 -0
- package/package.json +1 -1
- package/src/EnableExperimentalWebImplementation.ts +18 -0
- package/src/RNGestureHandlerModule.macos.ts +114 -0
- package/src/RNGestureHandlerModule.web.ts +89 -26
- package/src/RNRenderer.ts +3 -0
- package/src/RNRenderer.web.ts +3 -0
- package/src/components/DrawerLayout.tsx +37 -14
- package/src/components/GestureButtons.tsx +64 -0
- package/src/components/GestureComponents.tsx +66 -6
- package/src/components/GestureComponents.web.tsx +5 -0
- package/src/components/Swipeable.tsx +3 -1
- package/src/components/touchables/GenericTouchable.tsx +2 -0
- package/src/fabric/RNGestureHandlerButtonNativeComponent.ts +1 -0
- package/src/handlers/ForceTouchGestureHandler.ts +3 -2
- package/src/handlers/PanGestureHandler.ts +2 -0
- package/src/handlers/PressabilityDebugView.tsx +2 -0
- package/src/handlers/PressabilityDebugView.web.tsx +4 -0
- package/src/handlers/{createHandler.ts → createHandler.tsx} +45 -19
- package/src/handlers/gestureHandlerCommon.ts +2 -0
- package/src/handlers/gestures/GestureDetector.tsx +185 -93
- package/src/handlers/gestures/gesture.ts +16 -0
- package/src/handlers/gestures/gestureStateManager.ts +13 -8
- package/src/handlers/gestures/panGesture.ts +5 -0
- package/src/handlers/gestures/reanimatedWrapper.ts +7 -0
- package/src/index.ts +3 -0
- package/src/utils.ts +3 -1
- package/src/web/constants.ts +1 -41
- package/src/web/detectors/RotationGestureDetector.ts +199 -0
- package/src/web/detectors/ScaleGestureDetector.ts +208 -0
- package/src/web/handlers/FlingGestureHandler.ts +146 -0
- package/src/web/handlers/GestureHandler.ts +572 -0
- package/src/web/handlers/LongPressGestureHandler.ts +122 -0
- package/src/web/handlers/NativeViewGestureHandler.ts +109 -0
- package/src/web/handlers/PanGestureHandler.ts +488 -0
- package/src/web/handlers/PinchGestureHandler.ts +162 -0
- package/src/web/handlers/RotationGestureHandler.ts +181 -0
- package/src/web/handlers/TapGestureHandler.ts +275 -0
- package/src/web/interfaces.ts +114 -0
- package/src/web/tools/EventManager.ts +186 -0
- package/src/web/tools/GestureHandlerOrchestrator.ts +329 -0
- package/src/web/tools/InteractionManager.ts +108 -0
- package/src/web/tools/NodeManager.ts +43 -0
- package/src/web/tools/PointerTracker.ts +130 -0
- package/src/{web → web_hammer}/DiscreteGestureHandler.ts +0 -0
- package/src/{web → web_hammer}/DraggingGestureHandler.ts +0 -0
- package/src/{web → web_hammer}/Errors.ts +0 -0
- package/src/{web → web_hammer}/FlingGestureHandler.ts +0 -0
- package/src/{web → web_hammer}/GestureHandler.ts +102 -55
- package/src/{web → web_hammer}/IndiscreteGestureHandler.ts +0 -0
- package/src/{web → web_hammer}/LongPressGestureHandler.ts +0 -0
- package/src/{web → web_hammer}/NativeViewGestureHandler.ts +4 -0
- package/src/{web → web_hammer}/NodeManager.ts +6 -3
- package/src/{web → web_hammer}/PanGestureHandler.ts +0 -0
- package/src/{web → web_hammer}/PinchGestureHandler.ts +0 -0
- package/src/{web → web_hammer}/PressGestureHandler.ts +0 -0
- package/src/{web → web_hammer}/RotationGestureHandler.ts +0 -0
- package/src/{web → web_hammer}/TapGestureHandler.ts +0 -0
- package/src/web_hammer/constants.ts +48 -0
- package/src/{web → web_hammer}/utils.ts +1 -1
- package/android/src/main/jni/Android.mk +0 -53
- package/android/src/main/jni/OnLoad.cpp +0 -9
- package/android/src/main/jni/RNGestureHandlerComponentsRegistry.cpp +0 -71
- package/android/src/main/jni/RNGestureHandlerComponentsRegistry.h +0 -34
- package/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcuserdata/jakubpiasecki.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/RNGestureHandler.xcodeproj/xcuserdata/jakubpiasecki.xcuserdatad/xcschemes/xcschememanagement.plist +0 -19
- package/lib/commonjs/web/GestureHandler.js.map +0 -1
- package/lib/commonjs/web/NativeViewGestureHandler.js.map +0 -1
- package/lib/commonjs/web/NodeManager.js.map +0 -1
- package/lib/module/web/GestureHandler.js.map +0 -1
- package/lib/module/web/NativeViewGestureHandler.js.map +0 -1
- package/lib/module/web/NodeManager.js.map +0 -1
- package/lib/typescript/web/NodeManager.d.ts +0 -8
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import GestureHandler from '../handlers/GestureHandler';
|
|
2
|
+
import { Config, Handler } from '../interfaces';
|
|
3
|
+
|
|
4
|
+
export default class InteractionManager {
|
|
5
|
+
private readonly waitForRelations: Map<number, number[]> = new Map();
|
|
6
|
+
private readonly simultaneousRelations: Map<number, number[]> = new Map();
|
|
7
|
+
|
|
8
|
+
public configureInteractions(handler: GestureHandler, config: Config) {
|
|
9
|
+
this.dropRelationsForHandlerWithTag(handler.getTag());
|
|
10
|
+
|
|
11
|
+
if (config.waitFor) {
|
|
12
|
+
const waitFor: number[] = [];
|
|
13
|
+
config.waitFor.forEach((handler: Handler): void => {
|
|
14
|
+
if (typeof handler === 'number') {
|
|
15
|
+
waitFor.push(handler);
|
|
16
|
+
} else {
|
|
17
|
+
waitFor.push(handler.handlerTag);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
this.waitForRelations.set(handler.getTag(), waitFor);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (config.simultaneousHandlers) {
|
|
25
|
+
const simultaneousHandlers: number[] = [];
|
|
26
|
+
config.simultaneousHandlers.forEach((handler: Handler): void => {
|
|
27
|
+
if (typeof handler === 'number') {
|
|
28
|
+
simultaneousHandlers.push(handler);
|
|
29
|
+
} else {
|
|
30
|
+
simultaneousHandlers.push(handler.handlerTag);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
this.simultaneousRelations.set(handler.getTag(), simultaneousHandlers);
|
|
35
|
+
}
|
|
36
|
+
handler.setInteractionManager(this);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
public shouldWaitForHandlerFailure(
|
|
40
|
+
handler: GestureHandler,
|
|
41
|
+
otherHandler: GestureHandler
|
|
42
|
+
): boolean {
|
|
43
|
+
const waitFor: number[] | undefined = this.waitForRelations.get(
|
|
44
|
+
handler.getTag()
|
|
45
|
+
);
|
|
46
|
+
if (!waitFor) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
let shouldWait = false;
|
|
51
|
+
|
|
52
|
+
waitFor.forEach((tag: number): void => {
|
|
53
|
+
if (tag === otherHandler.getTag()) {
|
|
54
|
+
shouldWait = true;
|
|
55
|
+
return; //Returns from callback
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
return shouldWait;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
public shouldRecognizeSimultaneously(
|
|
63
|
+
handler: GestureHandler,
|
|
64
|
+
otherHandler: GestureHandler
|
|
65
|
+
): boolean {
|
|
66
|
+
const simultaneousHandlers:
|
|
67
|
+
| number[]
|
|
68
|
+
| undefined = this.simultaneousRelations.get(handler.getTag());
|
|
69
|
+
if (!simultaneousHandlers) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
let shouldRecognizeSimultaneously = false;
|
|
74
|
+
|
|
75
|
+
simultaneousHandlers.forEach((tag: number): void => {
|
|
76
|
+
if (tag === otherHandler.getTag()) {
|
|
77
|
+
shouldRecognizeSimultaneously = true;
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
return shouldRecognizeSimultaneously;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
public shouldRequireHandlerToWaitForFailure(
|
|
86
|
+
_handler: GestureHandler,
|
|
87
|
+
_otherHandler: GestureHandler
|
|
88
|
+
): boolean {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
public shouldHandlerBeCancelledBy(
|
|
93
|
+
_handler: GestureHandler,
|
|
94
|
+
_otherHandler: GestureHandler
|
|
95
|
+
): boolean {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
public dropRelationsForHandlerWithTag(handlerTag: number): void {
|
|
100
|
+
this.waitForRelations.delete(handlerTag);
|
|
101
|
+
this.simultaneousRelations.delete(handlerTag);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
public reset() {
|
|
105
|
+
this.waitForRelations.clear();
|
|
106
|
+
this.simultaneousRelations.clear();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ValueOf } from '../../typeUtils';
|
|
2
|
+
import { Gestures } from '../../RNGestureHandlerModule.web';
|
|
3
|
+
|
|
4
|
+
// eslint-disable-next-line @typescript-eslint/no-extraneous-class
|
|
5
|
+
export default class NodeManager {
|
|
6
|
+
private static gestures: Record<
|
|
7
|
+
number,
|
|
8
|
+
InstanceType<ValueOf<typeof Gestures>>
|
|
9
|
+
> = {};
|
|
10
|
+
|
|
11
|
+
static getHandler(tag: number) {
|
|
12
|
+
if (tag in this.gestures) {
|
|
13
|
+
return this.gestures[tag];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
throw new Error(`No handler for tag ${tag}`);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
static createGestureHandler(
|
|
20
|
+
handlerTag: number,
|
|
21
|
+
handler: InstanceType<ValueOf<typeof Gestures>>
|
|
22
|
+
) {
|
|
23
|
+
if (handlerTag in this.gestures) {
|
|
24
|
+
throw new Error(`Handler with tag ${handlerTag} already exists`);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
this.gestures[handlerTag] = handler;
|
|
28
|
+
this.gestures[handlerTag].setTag(handlerTag);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
static dropGestureHandler(handlerTag: number) {
|
|
32
|
+
if (!(handlerTag in this.gestures)) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
|
37
|
+
delete this.gestures[handlerTag];
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
static getNodes() {
|
|
41
|
+
return { ...this.gestures };
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { AdaptedPointerEvent } from '../interfaces';
|
|
2
|
+
|
|
3
|
+
interface TrackerElement {
|
|
4
|
+
lastX: number;
|
|
5
|
+
lastY: number;
|
|
6
|
+
|
|
7
|
+
timeStamp: number;
|
|
8
|
+
|
|
9
|
+
velocityX: number;
|
|
10
|
+
velocityY: number;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const VELOCITY_FACTOR = 0.2;
|
|
14
|
+
|
|
15
|
+
export default class PointerTracker {
|
|
16
|
+
private trackedPointers: Map<number, TrackerElement> = new Map<
|
|
17
|
+
number,
|
|
18
|
+
TrackerElement
|
|
19
|
+
>();
|
|
20
|
+
|
|
21
|
+
public addToTracker(event: AdaptedPointerEvent): void {
|
|
22
|
+
if (this.trackedPointers.has(event.pointerId)) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const newElement: TrackerElement = {
|
|
27
|
+
lastX: event.x,
|
|
28
|
+
lastY: event.y,
|
|
29
|
+
timeStamp: event.time,
|
|
30
|
+
velocityX: 0,
|
|
31
|
+
velocityY: 0,
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
this.trackedPointers.set(event.pointerId, newElement);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
public removeFromTracker(pointerId: number): void {
|
|
38
|
+
this.trackedPointers.delete(pointerId);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
public track(event: AdaptedPointerEvent): void {
|
|
42
|
+
const element: TrackerElement = this.trackedPointers.get(
|
|
43
|
+
event.pointerId
|
|
44
|
+
) as TrackerElement;
|
|
45
|
+
|
|
46
|
+
if (!element) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const dx = event.x - element.lastX;
|
|
51
|
+
const dy = event.y - element.lastY;
|
|
52
|
+
const dt = event.time - element.timeStamp;
|
|
53
|
+
|
|
54
|
+
element.velocityX = (dx / dt) * 1000 * VELOCITY_FACTOR;
|
|
55
|
+
element.velocityY = (dy / dt) * 1000 * VELOCITY_FACTOR;
|
|
56
|
+
|
|
57
|
+
element.lastX = event.x;
|
|
58
|
+
element.lastY = event.y;
|
|
59
|
+
|
|
60
|
+
this.trackedPointers.set(event.pointerId, element);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
public getVelocityX(pointerId: number): number {
|
|
64
|
+
return this.trackedPointers.get(pointerId)?.velocityX as number;
|
|
65
|
+
}
|
|
66
|
+
public getVelocityY(pointerId: number): number {
|
|
67
|
+
return this.trackedPointers.get(pointerId)?.velocityY as number;
|
|
68
|
+
}
|
|
69
|
+
public getLastX(pointerId: number): number {
|
|
70
|
+
return this.trackedPointers.get(pointerId)?.lastX as number;
|
|
71
|
+
}
|
|
72
|
+
public getLastY(pointerId: number): number {
|
|
73
|
+
return this.trackedPointers.get(pointerId)?.lastY as number;
|
|
74
|
+
}
|
|
75
|
+
public getLastAvgX(): number {
|
|
76
|
+
return this.getSumX() / this.trackedPointers.size;
|
|
77
|
+
}
|
|
78
|
+
public getLastAvgY(): number {
|
|
79
|
+
return this.getSumY() / this.trackedPointers.size;
|
|
80
|
+
}
|
|
81
|
+
public getSumX(ignoredPointer?: number): number {
|
|
82
|
+
let sumX = 0;
|
|
83
|
+
|
|
84
|
+
this.trackedPointers.forEach((value, key) => {
|
|
85
|
+
if (key !== ignoredPointer) {
|
|
86
|
+
sumX += value.lastX;
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
return sumX;
|
|
91
|
+
}
|
|
92
|
+
public getSumY(ignoredPointer?: number): number {
|
|
93
|
+
let sumY = 0;
|
|
94
|
+
|
|
95
|
+
this.trackedPointers.forEach((value, key) => {
|
|
96
|
+
if (key !== ignoredPointer) {
|
|
97
|
+
sumY += value.lastY;
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
return sumY;
|
|
102
|
+
}
|
|
103
|
+
public getTrackedPointersCount(): number {
|
|
104
|
+
return this.trackedPointers.size;
|
|
105
|
+
}
|
|
106
|
+
public getTrackedPointersID(): number[] {
|
|
107
|
+
const keys: number[] = [];
|
|
108
|
+
|
|
109
|
+
this.trackedPointers.forEach((_value, key) => {
|
|
110
|
+
keys.push(key);
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
return keys;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
public getData(): Map<number, TrackerElement> {
|
|
117
|
+
return this.trackedPointers;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
public resetTracker(): void {
|
|
121
|
+
this.trackedPointers.clear();
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
public static shareCommonPointers(
|
|
125
|
+
stPointers: number[],
|
|
126
|
+
ndPointers: number[]
|
|
127
|
+
): boolean {
|
|
128
|
+
return stPointers.some((pointerId) => ndPointers.includes(pointerId));
|
|
129
|
+
}
|
|
130
|
+
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -29,6 +29,7 @@ export type Config = Partial<{
|
|
|
29
29
|
activeOffsetYStart: number;
|
|
30
30
|
activeOffsetYEnd: number;
|
|
31
31
|
waitFor: any[] | null;
|
|
32
|
+
simultaneousHandlers: any[] | null;
|
|
32
33
|
}>;
|
|
33
34
|
|
|
34
35
|
type NativeEvent = ReturnType<GestureHandler['transformEventData']>;
|
|
@@ -61,6 +62,12 @@ abstract class GestureHandler {
|
|
|
61
62
|
return `${this.name}${this.gestureInstance}`;
|
|
62
63
|
}
|
|
63
64
|
|
|
65
|
+
// a simple way to check if GestureHandler is NativeViewGestureHandler, since importing it
|
|
66
|
+
// here to use instanceof would cause import cycle
|
|
67
|
+
get isNative() {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
|
|
64
71
|
get isDiscrete() {
|
|
65
72
|
return false;
|
|
66
73
|
}
|
|
@@ -115,7 +122,7 @@ abstract class GestureHandler {
|
|
|
115
122
|
updateGestureConfig({ enabled = true, ...props }) {
|
|
116
123
|
this.clearSelfAsPending();
|
|
117
124
|
|
|
118
|
-
this.config = ensureConfig({ enabled, ...props });
|
|
125
|
+
this.config = this.ensureConfig({ enabled, ...props });
|
|
119
126
|
this.hasCustomActivationCriteria = this.updateHasCustomActivationCriteria(
|
|
120
127
|
this.config
|
|
121
128
|
);
|
|
@@ -259,6 +266,12 @@ abstract class GestureHandler {
|
|
|
259
266
|
}
|
|
260
267
|
}
|
|
261
268
|
|
|
269
|
+
shouldUseTouchEvents(config: Config) {
|
|
270
|
+
return (
|
|
271
|
+
config.simultaneousHandlers?.some((handler) => handler.isNative) ?? false
|
|
272
|
+
);
|
|
273
|
+
}
|
|
274
|
+
|
|
262
275
|
setView(ref: Parameters<typeof findNodeHandle>['0'], propsRef: any) {
|
|
263
276
|
if (ref == null) {
|
|
264
277
|
this.destroy();
|
|
@@ -266,11 +279,22 @@ abstract class GestureHandler {
|
|
|
266
279
|
return;
|
|
267
280
|
}
|
|
268
281
|
|
|
282
|
+
// @ts-ignore window doesn't exist on global type as we don't want to use Node types
|
|
283
|
+
const SUPPORTS_TOUCH = 'ontouchstart' in window;
|
|
269
284
|
this.propsRef = propsRef;
|
|
270
285
|
this.ref = ref;
|
|
271
286
|
|
|
272
287
|
this.view = findNodeHandle(ref);
|
|
273
|
-
|
|
288
|
+
|
|
289
|
+
// When the browser starts handling the gesture (e.g. scrolling), it sends a pointercancel event and stops
|
|
290
|
+
// sending additional pointer events. This is not the case with touch events, so if the gesture is simultaneous
|
|
291
|
+
// with a NativeGestureHandler, we need to check if touch events are supported and use them if possible.
|
|
292
|
+
this.hammer =
|
|
293
|
+
SUPPORTS_TOUCH && this.shouldUseTouchEvents(this.config)
|
|
294
|
+
? new Hammer.Manager(this.view as any, {
|
|
295
|
+
inputClass: Hammer.TouchInput,
|
|
296
|
+
})
|
|
297
|
+
: new Hammer.Manager(this.view as any);
|
|
274
298
|
|
|
275
299
|
this.oldState = State.UNDETERMINED;
|
|
276
300
|
this.previousState = State.UNDETERMINED;
|
|
@@ -446,6 +470,82 @@ abstract class GestureHandler {
|
|
|
446
470
|
};
|
|
447
471
|
|
|
448
472
|
simulateCancelEvent(_inputData: any) {}
|
|
473
|
+
|
|
474
|
+
// Validate the props
|
|
475
|
+
ensureConfig(config: Config): Required<Config> {
|
|
476
|
+
const props = { ...config };
|
|
477
|
+
|
|
478
|
+
// TODO(TS) We use ! to assert that if property is present then value is not empty (null, undefined)
|
|
479
|
+
if ('minDist' in config) {
|
|
480
|
+
props.minDist = config.minDist;
|
|
481
|
+
props.minDistSq = props.minDist! * props.minDist!;
|
|
482
|
+
}
|
|
483
|
+
if ('minVelocity' in config) {
|
|
484
|
+
props.minVelocity = config.minVelocity;
|
|
485
|
+
props.minVelocitySq = props.minVelocity! * props.minVelocity!;
|
|
486
|
+
}
|
|
487
|
+
if ('maxDist' in config) {
|
|
488
|
+
props.maxDist = config.maxDist;
|
|
489
|
+
props.maxDistSq = config.maxDist! * config.maxDist!;
|
|
490
|
+
}
|
|
491
|
+
if ('waitFor' in config) {
|
|
492
|
+
props.waitFor = asArray(config.waitFor)
|
|
493
|
+
.map(({ handlerTag }: { handlerTag: number }) =>
|
|
494
|
+
NodeManager.getHandler(handlerTag)
|
|
495
|
+
)
|
|
496
|
+
.filter((v) => v);
|
|
497
|
+
} else {
|
|
498
|
+
props.waitFor = null;
|
|
499
|
+
}
|
|
500
|
+
if ('simultaneousHandlers' in config) {
|
|
501
|
+
const shouldUseTouchEvents = this.shouldUseTouchEvents(this.config);
|
|
502
|
+
props.simultaneousHandlers = asArray(config.simultaneousHandlers)
|
|
503
|
+
.map((handler: number | GestureHandler) => {
|
|
504
|
+
if (typeof handler === 'number') {
|
|
505
|
+
return NodeManager.getHandler(handler);
|
|
506
|
+
} else {
|
|
507
|
+
return NodeManager.getHandler(handler.handlerTag);
|
|
508
|
+
}
|
|
509
|
+
})
|
|
510
|
+
.filter((v) => v);
|
|
511
|
+
|
|
512
|
+
if (shouldUseTouchEvents !== this.shouldUseTouchEvents(props)) {
|
|
513
|
+
requestAnimationFrame(() => {
|
|
514
|
+
// if the undelying event API needs to be changed, we need to unmount and mount
|
|
515
|
+
// the hammer instance again.
|
|
516
|
+
this.destroy();
|
|
517
|
+
this.setView(this.ref, this.propsRef);
|
|
518
|
+
});
|
|
519
|
+
}
|
|
520
|
+
} else {
|
|
521
|
+
props.simultaneousHandlers = null;
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
const configProps = [
|
|
525
|
+
'minPointers',
|
|
526
|
+
'maxPointers',
|
|
527
|
+
'minDist',
|
|
528
|
+
'maxDist',
|
|
529
|
+
'maxDistSq',
|
|
530
|
+
'minVelocitySq',
|
|
531
|
+
'minDistSq',
|
|
532
|
+
'minVelocity',
|
|
533
|
+
'failOffsetXStart',
|
|
534
|
+
'failOffsetYStart',
|
|
535
|
+
'failOffsetXEnd',
|
|
536
|
+
'failOffsetYEnd',
|
|
537
|
+
'activeOffsetXStart',
|
|
538
|
+
'activeOffsetXEnd',
|
|
539
|
+
'activeOffsetYStart',
|
|
540
|
+
'activeOffsetYEnd',
|
|
541
|
+
] as const;
|
|
542
|
+
configProps.forEach((prop: typeof configProps[number]) => {
|
|
543
|
+
if (typeof props[prop] === 'undefined') {
|
|
544
|
+
props[prop] = Number.NaN;
|
|
545
|
+
}
|
|
546
|
+
});
|
|
547
|
+
return props as Required<Config>; // TODO(TS) how to convince TS that props are filled?
|
|
548
|
+
}
|
|
449
549
|
}
|
|
450
550
|
|
|
451
551
|
// TODO(TS) investigate this method
|
|
@@ -492,59 +592,6 @@ function invokeNullableMethod(
|
|
|
492
592
|
}
|
|
493
593
|
}
|
|
494
594
|
|
|
495
|
-
// Validate the props
|
|
496
|
-
function ensureConfig(config: Config): Required<Config> {
|
|
497
|
-
const props = { ...config };
|
|
498
|
-
|
|
499
|
-
// TODO(TS) We use ! to assert that if property is present then value is not empty (null, undefined)
|
|
500
|
-
if ('minDist' in config) {
|
|
501
|
-
props.minDist = config.minDist;
|
|
502
|
-
props.minDistSq = props.minDist! * props.minDist!;
|
|
503
|
-
}
|
|
504
|
-
if ('minVelocity' in config) {
|
|
505
|
-
props.minVelocity = config.minVelocity;
|
|
506
|
-
props.minVelocitySq = props.minVelocity! * props.minVelocity!;
|
|
507
|
-
}
|
|
508
|
-
if ('maxDist' in config) {
|
|
509
|
-
props.maxDist = config.maxDist;
|
|
510
|
-
props.maxDistSq = config.maxDist! * config.maxDist!;
|
|
511
|
-
}
|
|
512
|
-
if ('waitFor' in config) {
|
|
513
|
-
props.waitFor = asArray(config.waitFor)
|
|
514
|
-
.map(({ handlerTag }: { handlerTag: number }) =>
|
|
515
|
-
NodeManager.getHandler(handlerTag)
|
|
516
|
-
)
|
|
517
|
-
.filter((v) => v);
|
|
518
|
-
} else {
|
|
519
|
-
props.waitFor = null;
|
|
520
|
-
}
|
|
521
|
-
|
|
522
|
-
const configProps = [
|
|
523
|
-
'minPointers',
|
|
524
|
-
'maxPointers',
|
|
525
|
-
'minDist',
|
|
526
|
-
'maxDist',
|
|
527
|
-
'maxDistSq',
|
|
528
|
-
'minVelocitySq',
|
|
529
|
-
'minDistSq',
|
|
530
|
-
'minVelocity',
|
|
531
|
-
'failOffsetXStart',
|
|
532
|
-
'failOffsetYStart',
|
|
533
|
-
'failOffsetXEnd',
|
|
534
|
-
'failOffsetYEnd',
|
|
535
|
-
'activeOffsetXStart',
|
|
536
|
-
'activeOffsetXEnd',
|
|
537
|
-
'activeOffsetYStart',
|
|
538
|
-
'activeOffsetYEnd',
|
|
539
|
-
] as const;
|
|
540
|
-
configProps.forEach((prop: typeof configProps[number]) => {
|
|
541
|
-
if (typeof props[prop] === 'undefined') {
|
|
542
|
-
props[prop] = Number.NaN;
|
|
543
|
-
}
|
|
544
|
-
});
|
|
545
|
-
return props as Required<Config>; // TODO(TS) how to convince TS that props are filled?
|
|
546
|
-
}
|
|
547
|
-
|
|
548
595
|
function asArray<T>(value: T | T[]) {
|
|
549
596
|
// TODO(TS) use config.waitFor type
|
|
550
597
|
return value == null ? [] : Array.isArray(value) ? value : [value];
|
|
File without changes
|
|
File without changes
|
|
@@ -5,6 +5,10 @@ import PressGestureHandler from './PressGestureHandler';
|
|
|
5
5
|
import { TEST_MIN_IF_NOT_NAN, VEC_LEN_SQ } from './utils';
|
|
6
6
|
|
|
7
7
|
class NativeViewGestureHandler extends PressGestureHandler {
|
|
8
|
+
get isNative() {
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
|
|
8
12
|
onRawEvent(ev: HammerInputExt) {
|
|
9
13
|
super.onRawEvent(ev);
|
|
10
14
|
if (!ev.isFinal) {
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { ValueOf } from '../typeUtils';
|
|
2
|
-
import {
|
|
2
|
+
import { HammerGestures } from '../RNGestureHandlerModule.web';
|
|
3
3
|
|
|
4
|
-
const gestures: Record<
|
|
4
|
+
const gestures: Record<
|
|
5
|
+
number,
|
|
6
|
+
InstanceType<ValueOf<typeof HammerGestures>>
|
|
7
|
+
> = {};
|
|
5
8
|
|
|
6
9
|
export function getHandler(tag: number) {
|
|
7
10
|
if (tag in gestures) return gestures[tag];
|
|
@@ -11,7 +14,7 @@ export function getHandler(tag: number) {
|
|
|
11
14
|
|
|
12
15
|
export function createGestureHandler(
|
|
13
16
|
handlerTag: number,
|
|
14
|
-
handler: InstanceType<ValueOf<typeof
|
|
17
|
+
handler: InstanceType<ValueOf<typeof HammerGestures>>
|
|
15
18
|
) {
|
|
16
19
|
if (handlerTag in gestures) {
|
|
17
20
|
throw new Error(`Handler with tag ${handlerTag} already exists`);
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import Hammer from '@egjs/hammerjs';
|
|
2
|
+
|
|
3
|
+
import { State } from '../State';
|
|
4
|
+
|
|
5
|
+
export const CONTENT_TOUCHES_DELAY = 240;
|
|
6
|
+
export const CONTENT_TOUCHES_QUICK_TAP_END_DELAY = 50;
|
|
7
|
+
export const MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD = 0.1;
|
|
8
|
+
export const MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD = 7;
|
|
9
|
+
export const DEG_RAD = Math.PI / 180;
|
|
10
|
+
|
|
11
|
+
// Map Hammer values to RNGH
|
|
12
|
+
export const EventMap = {
|
|
13
|
+
[Hammer.INPUT_START]: State.BEGAN,
|
|
14
|
+
[Hammer.INPUT_MOVE]: State.ACTIVE,
|
|
15
|
+
[Hammer.INPUT_END]: State.END,
|
|
16
|
+
[Hammer.INPUT_CANCEL]: State.FAILED,
|
|
17
|
+
} as const;
|
|
18
|
+
|
|
19
|
+
export const Direction = {
|
|
20
|
+
RIGHT: 1,
|
|
21
|
+
LEFT: 2,
|
|
22
|
+
UP: 4,
|
|
23
|
+
DOWN: 8,
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export const DirectionMap = {
|
|
27
|
+
[Hammer.DIRECTION_RIGHT]: Direction.RIGHT,
|
|
28
|
+
[Hammer.DIRECTION_LEFT]: Direction.LEFT,
|
|
29
|
+
[Hammer.DIRECTION_UP]: Direction.UP,
|
|
30
|
+
[Hammer.DIRECTION_DOWN]: Direction.DOWN,
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export const HammerInputNames = {
|
|
34
|
+
[Hammer.INPUT_START]: 'START',
|
|
35
|
+
[Hammer.INPUT_MOVE]: 'MOVE',
|
|
36
|
+
[Hammer.INPUT_END]: 'END',
|
|
37
|
+
[Hammer.INPUT_CANCEL]: 'CANCEL',
|
|
38
|
+
};
|
|
39
|
+
export const HammerDirectionNames = {
|
|
40
|
+
[Hammer.DIRECTION_HORIZONTAL]: 'HORIZONTAL',
|
|
41
|
+
[Hammer.DIRECTION_UP]: 'UP',
|
|
42
|
+
[Hammer.DIRECTION_DOWN]: 'DOWN',
|
|
43
|
+
[Hammer.DIRECTION_VERTICAL]: 'VERTICAL',
|
|
44
|
+
[Hammer.DIRECTION_NONE]: 'NONE',
|
|
45
|
+
[Hammer.DIRECTION_ALL]: 'ALL',
|
|
46
|
+
[Hammer.DIRECTION_RIGHT]: 'RIGHT',
|
|
47
|
+
[Hammer.DIRECTION_LEFT]: 'LEFT',
|
|
48
|
+
};
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
GESTURE_HANDLER_MAIN_THIS_DIR := $(call my-dir)
|
|
2
|
-
|
|
3
|
-
include $(REACT_ANDROID_DIR)/Android-prebuilt.mk
|
|
4
|
-
|
|
5
|
-
# libreact_render_uimanager
|
|
6
|
-
include $(CLEAR_VARS)
|
|
7
|
-
LOCAL_MODULE := libreact_render_uimanager
|
|
8
|
-
LOCAL_SRC_FILES := $(REACT_NDK_EXPORT_DIR)/$(TARGET_ARCH_ABI)/libreact_render_uimanager.so
|
|
9
|
-
LOCAL_EXPORT_C_INCLUDES := \
|
|
10
|
-
$(REACT_COMMON_DIR)/react/renderer/uimanager
|
|
11
|
-
include $(PREBUILT_SHARED_LIBRARY)
|
|
12
|
-
# end libreact_render_uimanager
|
|
13
|
-
|
|
14
|
-
include $(GESTURE_HANDLER_MAIN_THIS_DIR)/../../../build/generated/source/codegen/jni/Android.mk
|
|
15
|
-
|
|
16
|
-
include $(CLEAR_VARS)
|
|
17
|
-
|
|
18
|
-
LOCAL_PATH := $(GESTURE_HANDLER_MAIN_THIS_DIR)
|
|
19
|
-
LOCAL_MODULE := rngesturehandler_modules
|
|
20
|
-
|
|
21
|
-
LOCAL_C_INCLUDES := $(LOCAL_PATH) $(GENERATED_SRC_DIR)/codegen/jni
|
|
22
|
-
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp) $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp)
|
|
23
|
-
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) $(GENERATED_SRC_DIR)/codegen/jni
|
|
24
|
-
|
|
25
|
-
# Please note as one of the library listed is libreact_codegen_samplelibrary
|
|
26
|
-
# This name will be generated as libreact_codegen_<library-name>
|
|
27
|
-
# where <library-name> is the one you specified in the Gradle configuration
|
|
28
|
-
LOCAL_SHARED_LIBRARIES := libjsi \
|
|
29
|
-
libfbjni \
|
|
30
|
-
libglog \
|
|
31
|
-
libfolly_json \
|
|
32
|
-
libyoga \
|
|
33
|
-
libreact_nativemodule_core \
|
|
34
|
-
libturbomodulejsijni \
|
|
35
|
-
librrc_view \
|
|
36
|
-
libreact_render_core \
|
|
37
|
-
libreact_render_graphics \
|
|
38
|
-
libfabricjni \
|
|
39
|
-
libfolly_futures \
|
|
40
|
-
libreact_debug \
|
|
41
|
-
libreact_render_componentregistry \
|
|
42
|
-
libreact_render_debug \
|
|
43
|
-
libruntimeexecutor \
|
|
44
|
-
libreact_render_mapbuffer \
|
|
45
|
-
libreact_render_uimanager \
|
|
46
|
-
libreact_codegen_rncore \
|
|
47
|
-
libreact_codegen_rngesturehandler
|
|
48
|
-
|
|
49
|
-
LOCAL_CFLAGS := \
|
|
50
|
-
-DLOG_TAG=\"ReactNative\"
|
|
51
|
-
LOCAL_CFLAGS += -fexceptions -frtti -std=c++17 -Wall
|
|
52
|
-
|
|
53
|
-
include $(BUILD_SHARED_LIBRARY)
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
#include <fbjni/fbjni.h>
|
|
2
|
-
|
|
3
|
-
#include "RNGestureHandlerComponentsRegistry.h"
|
|
4
|
-
|
|
5
|
-
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {
|
|
6
|
-
return facebook::jni::initialize(vm, [] {
|
|
7
|
-
facebook::react::RNGestureHandlerComponentsRegistry::registerNatives();
|
|
8
|
-
});
|
|
9
|
-
}
|