react-native-gesture-handler 2.4.1 → 2.6.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
}
|