react-native-gesture-handler 1.10.3 → 2.1.2
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 +7 -6
- package/android/build.gradle +49 -1
- package/android/common/src/main/java/com/swmansion/common/GestureHandlerStateManager.kt +5 -0
- package/android/gradle.properties +19 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/BaseGestureHandlerInteractionController.kt +18 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/Extensions.kt +11 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.kt +96 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt +713 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerInteractionController.kt +8 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt +562 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistry.kt +8 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistryImpl.kt +21 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureUtils.kt +49 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.kt +97 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/ManualGestureHandler.kt +11 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.kt +129 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/OnTouchEventListener.kt +9 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.kt +289 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.kt +88 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/{PointerEventsConfig.java → PointerEventsConfig.kt} +3 -5
- package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureDetector.kt +125 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.kt +79 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.kt +167 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/ViewConfigurationHelper.kt +10 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +348 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt +57 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +59 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt +8 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +61 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +686 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerPackage.kt +17 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt +95 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +132 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootInterface.kt +5 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +68 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt +34 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt +66 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt +69 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt +51 -0
- package/ios/Handlers/RNFlingHandler.m +78 -5
- package/ios/Handlers/RNForceTouchHandler.m +29 -4
- package/ios/Handlers/RNLongPressHandler.m +105 -3
- package/ios/Handlers/RNManualHandler.h +4 -0
- package/ios/Handlers/RNManualHandler.m +73 -0
- package/ios/Handlers/RNNativeViewHandler.m +30 -2
- package/ios/Handlers/RNPanHandler.m +64 -4
- package/ios/Handlers/RNPinchHandler.m +61 -2
- package/ios/Handlers/RNRotationHandler.m +60 -1
- package/ios/Handlers/RNTapHandler.m +55 -8
- package/ios/RNGestureHandler.h +18 -4
- package/ios/RNGestureHandler.m +123 -13
- package/ios/RNGestureHandlerEvents.h +9 -0
- package/ios/RNGestureHandlerEvents.m +34 -0
- package/ios/RNGestureHandlerManager.h +7 -0
- package/ios/RNGestureHandlerManager.m +62 -34
- package/ios/RNGestureHandlerModule.m +39 -3
- package/ios/RNGestureHandlerPointerTracker.h +25 -0
- package/ios/RNGestureHandlerPointerTracker.m +237 -0
- package/ios/RNGestureHandlerRegistry.h +1 -0
- package/ios/RNGestureHandlerRegistry.m +10 -0
- package/ios/RNGestureHandlerStateManager.h +5 -0
- package/ios/RNManualActivationRecognizer.h +10 -0
- package/ios/RNManualActivationRecognizer.m +80 -0
- package/ios/RNRootViewGestureRecognizer.m +1 -1
- package/ios/RNTouchEventType.h +9 -0
- package/lib/commonjs/EventType.js +16 -0
- package/lib/commonjs/EventType.js.map +1 -0
- package/lib/commonjs/GestureHandlerRootView.android.js +1 -13
- package/lib/commonjs/GestureHandlerRootView.android.js.map +1 -1
- package/lib/commonjs/GestureHandlerRootView.js +11 -3
- package/lib/commonjs/GestureHandlerRootView.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.js +3 -1
- package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.web.js +2 -2
- package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/commonjs/components/DrawerLayout.js +41 -37
- package/lib/commonjs/components/DrawerLayout.js.map +1 -1
- package/lib/commonjs/components/GestureButtons.js.map +1 -1
- package/lib/commonjs/components/GestureComponents.js +31 -12
- package/lib/commonjs/components/GestureComponents.js.map +1 -1
- package/lib/commonjs/components/Swipeable.js +10 -6
- package/lib/commonjs/components/Swipeable.js.map +1 -1
- package/lib/commonjs/components/touchables/GenericTouchable.js +2 -1
- package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableOpacity.js +1 -1
- package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
- package/lib/commonjs/gestureHandlerRootHOC.js +1 -1
- package/lib/commonjs/gestureHandlerRootHOC.js.map +1 -1
- package/lib/commonjs/handlers/FlingGestureHandler.js +23 -0
- package/lib/commonjs/handlers/FlingGestureHandler.js.map +1 -0
- package/lib/commonjs/handlers/ForceTouchGestureHandler.js +44 -0
- package/lib/commonjs/handlers/ForceTouchGestureHandler.js.map +1 -0
- package/lib/commonjs/handlers/LongPressGestureHandler.js +23 -0
- package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -0
- package/lib/commonjs/handlers/NativeViewGestureHandler.js +6 -4
- package/lib/commonjs/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/PanGestureHandler.js +121 -0
- package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -0
- package/lib/commonjs/handlers/PinchGestureHandler.js +21 -0
- package/lib/commonjs/handlers/PinchGestureHandler.js.map +1 -0
- package/lib/commonjs/handlers/RotationGestureHandler.js +21 -0
- package/lib/commonjs/handlers/RotationGestureHandler.js.map +1 -0
- package/lib/commonjs/handlers/TapGestureHandler.js +23 -0
- package/lib/commonjs/handlers/TapGestureHandler.js.map +1 -0
- package/lib/commonjs/handlers/createHandler.js +52 -83
- package/lib/commonjs/handlers/createHandler.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerCommon.js +80 -0
- package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector.js +440 -0
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -0
- package/lib/commonjs/handlers/gestures/eventReceiver.js +135 -0
- package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -0
- package/lib/commonjs/handlers/gestures/flingGesture.js +34 -0
- package/lib/commonjs/handlers/gestures/flingGesture.js.map +1 -0
- package/lib/commonjs/handlers/gestures/forceTouchGesture.js +65 -0
- package/lib/commonjs/handlers/gestures/forceTouchGesture.js.map +1 -0
- package/lib/commonjs/handlers/gestures/gesture.js +193 -0
- package/lib/commonjs/handlers/gestures/gesture.js.map +1 -0
- package/lib/commonjs/handlers/gestures/gestureComposition.js +94 -0
- package/lib/commonjs/handlers/gestures/gestureComposition.js.map +1 -0
- package/lib/commonjs/handlers/gestures/gestureObjects.js +85 -0
- package/lib/commonjs/handlers/gestures/gestureObjects.js.map +1 -0
- package/lib/commonjs/handlers/gestures/gestureStateManager.js +58 -0
- package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -0
- package/lib/commonjs/handlers/gestures/longPressGesture.js +34 -0
- package/lib/commonjs/handlers/gestures/longPressGesture.js.map +1 -0
- package/lib/commonjs/handlers/gestures/manualGesture.js +31 -0
- package/lib/commonjs/handlers/gestures/manualGesture.js.map +1 -0
- package/lib/commonjs/handlers/gestures/nativeGesture.js +34 -0
- package/lib/commonjs/handlers/gestures/nativeGesture.js.map +1 -0
- package/lib/commonjs/handlers/gestures/panGesture.js +144 -0
- package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -0
- package/lib/commonjs/handlers/gestures/pinchGesture.js +45 -0
- package/lib/commonjs/handlers/gestures/pinchGesture.js.map +1 -0
- package/lib/commonjs/handlers/gestures/reanimatedWrapper.js +24 -0
- package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -0
- package/lib/commonjs/handlers/gestures/rotationGesture.js +45 -0
- package/lib/commonjs/handlers/gestures/rotationGesture.js.map +1 -0
- package/lib/commonjs/handlers/gestures/tapGesture.js +59 -0
- package/lib/commonjs/handlers/gestures/tapGesture.js.map +1 -0
- package/lib/commonjs/handlers/handlersRegistry.js +31 -0
- package/lib/commonjs/handlers/handlersRegistry.js.map +1 -0
- package/lib/commonjs/index.js +146 -8
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/init.js +13 -0
- package/lib/commonjs/init.js.map +1 -0
- package/lib/commonjs/mocks.js +31 -2
- package/lib/commonjs/mocks.js.map +1 -1
- package/lib/commonjs/utils.js +15 -0
- package/lib/commonjs/utils.js.map +1 -0
- package/lib/commonjs/web/Errors.js +1 -1
- package/lib/commonjs/web/Errors.js.map +1 -1
- package/lib/commonjs/web/GestureHandler.js +4 -6
- package/lib/commonjs/web/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/NodeManager.js +8 -2
- package/lib/commonjs/web/NodeManager.js.map +1 -1
- package/lib/module/EventType.js +8 -0
- package/lib/module/EventType.js.map +1 -0
- package/lib/module/GestureHandlerRootView.android.js +2 -14
- package/lib/module/GestureHandlerRootView.android.js.map +1 -1
- package/lib/module/GestureHandlerRootView.js +5 -1
- package/lib/module/GestureHandlerRootView.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.js +3 -1
- package/lib/module/RNGestureHandlerModule.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.web.js +2 -2
- package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/module/components/DrawerLayout.js +43 -40
- package/lib/module/components/DrawerLayout.js.map +1 -1
- package/lib/module/components/GestureButtons.js.map +1 -1
- package/lib/module/components/GestureComponents.js +29 -11
- package/lib/module/components/GestureComponents.js.map +1 -1
- package/lib/module/components/Swipeable.js +9 -6
- package/lib/module/components/Swipeable.js.map +1 -1
- package/lib/module/components/touchables/GenericTouchable.js +2 -1
- package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
- package/lib/module/components/touchables/TouchableOpacity.js +1 -1
- package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
- package/lib/module/gestureHandlerRootHOC.js +1 -1
- package/lib/module/gestureHandlerRootHOC.js.map +1 -1
- package/lib/module/handlers/FlingGestureHandler.js +10 -0
- package/lib/module/handlers/FlingGestureHandler.js.map +1 -0
- package/lib/module/handlers/ForceTouchGestureHandler.js +29 -0
- package/lib/module/handlers/ForceTouchGestureHandler.js.map +1 -0
- package/lib/module/handlers/LongPressGestureHandler.js +10 -0
- package/lib/module/handlers/LongPressGestureHandler.js.map +1 -0
- package/lib/module/handlers/NativeViewGestureHandler.js +4 -3
- package/lib/module/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/handlers/PanGestureHandler.js +106 -0
- package/lib/module/handlers/PanGestureHandler.js.map +1 -0
- package/lib/module/handlers/PinchGestureHandler.js +9 -0
- package/lib/module/handlers/PinchGestureHandler.js.map +1 -0
- package/lib/module/handlers/RotationGestureHandler.js +9 -0
- package/lib/module/handlers/RotationGestureHandler.js.map +1 -0
- package/lib/module/handlers/TapGestureHandler.js +10 -0
- package/lib/module/handlers/TapGestureHandler.js.map +1 -0
- package/lib/module/handlers/createHandler.js +41 -76
- package/lib/module/handlers/createHandler.js.map +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js +66 -0
- package/lib/module/handlers/gestureHandlerCommon.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector.js +402 -0
- package/lib/module/handlers/gestures/GestureDetector.js.map +1 -0
- package/lib/module/handlers/gestures/eventReceiver.js +120 -0
- package/lib/module/handlers/gestures/eventReceiver.js.map +1 -0
- package/lib/module/handlers/gestures/flingGesture.js +24 -0
- package/lib/module/handlers/gestures/flingGesture.js.map +1 -0
- package/lib/module/handlers/gestures/forceTouchGesture.js +56 -0
- package/lib/module/handlers/gestures/forceTouchGesture.js.map +1 -0
- package/lib/module/handlers/gestures/gesture.js +175 -0
- package/lib/module/handlers/gestures/gesture.js.map +1 -0
- package/lib/module/handlers/gestures/gestureComposition.js +79 -0
- package/lib/module/handlers/gestures/gestureComposition.js.map +1 -0
- package/lib/module/handlers/gestures/gestureObjects.js +67 -0
- package/lib/module/handlers/gestures/gestureObjects.js.map +1 -0
- package/lib/module/handlers/gestures/gestureStateManager.js +48 -0
- package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -0
- package/lib/module/handlers/gestures/longPressGesture.js +24 -0
- package/lib/module/handlers/gestures/longPressGesture.js.map +1 -0
- package/lib/module/handlers/gestures/manualGesture.js +22 -0
- package/lib/module/handlers/gestures/manualGesture.js.map +1 -0
- package/lib/module/handlers/gestures/nativeGesture.js +24 -0
- package/lib/module/handlers/gestures/nativeGesture.js.map +1 -0
- package/lib/module/handlers/gestures/panGesture.js +135 -0
- package/lib/module/handlers/gestures/panGesture.js.map +1 -0
- package/lib/module/handlers/gestures/pinchGesture.js +36 -0
- package/lib/module/handlers/gestures/pinchGesture.js.map +1 -0
- package/lib/module/handlers/gestures/reanimatedWrapper.js +19 -0
- package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -0
- package/lib/module/handlers/gestures/rotationGesture.js +36 -0
- package/lib/module/handlers/gestures/rotationGesture.js.map +1 -0
- package/lib/module/handlers/gestures/tapGesture.js +49 -0
- package/lib/module/handlers/gestures/tapGesture.js.map +1 -0
- package/lib/module/handlers/handlersRegistry.js +16 -0
- package/lib/module/handlers/handlersRegistry.js.map +1 -0
- package/lib/module/index.js +22 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/init.js +5 -0
- package/lib/module/init.js.map +1 -0
- package/lib/module/mocks.js +31 -2
- package/lib/module/mocks.js.map +1 -1
- package/lib/module/utils.js +8 -0
- package/lib/module/utils.js.map +1 -0
- package/lib/module/web/Errors.js +1 -1
- package/lib/module/web/Errors.js.map +1 -1
- package/lib/module/web/GestureHandler.js +4 -6
- package/lib/module/web/GestureHandler.js.map +1 -1
- package/lib/module/web/NodeManager.js +8 -2
- package/lib/module/web/NodeManager.js.map +1 -1
- package/lib/typescript/EventType.d.ts +8 -0
- package/lib/typescript/GestureHandlerRootView.android.d.ts +2 -4
- package/lib/typescript/GestureHandlerRootView.d.ts +5 -2
- package/lib/typescript/RNGestureHandlerModule.d.ts +1 -1
- package/lib/typescript/RNGestureHandlerModule.web.d.ts +1 -1
- package/lib/typescript/components/DrawerLayout.d.ts +50 -1
- package/lib/typescript/components/GestureButtons.d.ts +36 -0
- package/lib/typescript/components/GestureComponents.d.ts +8 -35
- package/lib/typescript/components/Swipeable.d.ts +73 -6
- package/lib/typescript/components/touchables/GenericTouchable.d.ts +2 -2
- package/lib/typescript/components/touchables/TouchableHighlight.d.ts +1 -0
- package/lib/typescript/components/touchables/TouchableOpacity.d.ts +1 -0
- package/lib/typescript/handlers/FlingGestureHandler.d.ts +33 -0
- package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +43 -0
- package/lib/typescript/handlers/LongPressGestureHandler.d.ts +55 -0
- package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +19 -4
- package/lib/typescript/handlers/PanGestureHandler.d.ts +137 -0
- package/lib/typescript/handlers/PinchGestureHandler.d.ts +28 -0
- package/lib/typescript/handlers/RotationGestureHandler.d.ts +28 -0
- package/lib/typescript/handlers/TapGestureHandler.d.ts +56 -0
- package/lib/typescript/handlers/createHandler.d.ts +1 -1
- package/lib/typescript/handlers/gestureHandlerCommon.d.ts +62 -0
- package/lib/typescript/handlers/gestureHandlerTypesCompat.d.ts +8 -1
- package/lib/typescript/handlers/gestures/GestureDetector.d.ts +16 -0
- package/lib/typescript/handlers/gestures/eventReceiver.d.ts +2 -0
- package/lib/typescript/handlers/gestures/flingGesture.d.ts +9 -0
- package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +16 -0
- package/lib/typescript/handlers/gestures/gesture.d.ts +97 -0
- package/lib/typescript/handlers/gestures/gestureComposition.d.ts +21 -0
- package/lib/typescript/handlers/gestures/gestureObjects.d.ts +39 -0
- package/lib/typescript/handlers/gestures/gestureStateManager.d.ts +9 -0
- package/lib/typescript/handlers/gestures/longPressGesture.d.ts +9 -0
- package/lib/typescript/handlers/gestures/manualGesture.d.ts +7 -0
- package/lib/typescript/handlers/gestures/nativeGesture.d.ts +9 -0
- package/lib/typescript/handlers/gestures/panGesture.d.ts +26 -0
- package/lib/typescript/handlers/gestures/pinchGesture.d.ts +12 -0
- package/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts +14 -0
- package/lib/typescript/handlers/gestures/rotationGesture.d.ts +12 -0
- package/lib/typescript/handlers/gestures/tapGesture.d.ts +14 -0
- package/lib/typescript/handlers/handlersRegistry.d.ts +6 -0
- package/lib/typescript/index.d.ts +29 -2
- package/lib/typescript/init.d.ts +1 -0
- package/lib/typescript/mocks.d.ts +21 -2
- package/lib/typescript/utils.d.ts +1 -0
- package/lib/typescript/web/FlingGestureHandler.d.ts +0 -1
- package/lib/typescript/web/GestureHandler.d.ts +0 -1
- package/lib/typescript/web/PanGestureHandler.d.ts +0 -1
- package/lib/typescript/web/PinchGestureHandler.d.ts +0 -1
- package/lib/typescript/web/PressGestureHandler.d.ts +0 -1
- package/lib/typescript/web/RotationGestureHandler.d.ts +0 -1
- package/lib/typescript/web/TapGestureHandler.d.ts +0 -1
- package/package.json +8 -5
- package/src/EventType.ts +10 -0
- package/src/GestureHandlerRootView.android.tsx +9 -25
- package/src/GestureHandlerRootView.tsx +11 -2
- package/src/RNGestureHandlerModule.ts +5 -1
- package/src/RNGestureHandlerModule.web.ts +1 -0
- package/src/components/DrawerLayout.tsx +114 -41
- package/src/components/GestureButtons.tsx +45 -5
- package/src/components/GestureComponents.tsx +47 -41
- package/src/components/Swipeable.tsx +108 -21
- package/src/components/touchables/GenericTouchable.tsx +2 -1
- package/src/components/touchables/TouchableOpacity.tsx +1 -1
- package/src/handlers/FlingGestureHandler.ts +57 -0
- package/src/handlers/ForceTouchGestureHandler.ts +83 -0
- package/src/handlers/LongPressGestureHandler.ts +84 -0
- package/src/handlers/NativeViewGestureHandler.ts +31 -7
- package/src/handlers/PanGestureHandler.ts +321 -0
- package/src/handlers/PinchGestureHandler.ts +46 -0
- package/src/handlers/RotationGestureHandler.ts +46 -0
- package/src/handlers/TapGestureHandler.ts +90 -0
- package/src/handlers/createHandler.ts +54 -79
- package/src/handlers/gestureHandlerCommon.ts +185 -0
- package/src/handlers/gestureHandlerTypesCompat.ts +19 -5
- package/src/handlers/gestures/GestureDetector.tsx +519 -0
- package/src/handlers/gestures/eventReceiver.ts +151 -0
- package/src/handlers/gestures/flingGesture.ts +27 -0
- package/src/handlers/gestures/forceTouchGesture.ts +74 -0
- package/src/handlers/gestures/gesture.ts +292 -0
- package/src/handlers/gestures/gestureComposition.ts +109 -0
- package/src/handlers/gestures/gestureObjects.ts +79 -0
- package/src/handlers/gestures/gestureStateManager.ts +60 -0
- package/src/handlers/gestures/longPressGesture.ts +27 -0
- package/src/handlers/gestures/manualGesture.ts +31 -0
- package/src/handlers/gestures/nativeGesture.ts +27 -0
- package/src/handlers/gestures/panGesture.ts +147 -0
- package/src/handlers/gestures/pinchGesture.ts +51 -0
- package/src/handlers/gestures/reanimatedWrapper.ts +45 -0
- package/src/handlers/gestures/rotationGesture.ts +51 -0
- package/src/handlers/gestures/tapGesture.ts +52 -0
- package/src/handlers/handlersRegistry.ts +22 -0
- package/src/index.ts +57 -17
- package/src/init.ts +5 -0
- package/src/mocks.ts +42 -2
- package/src/utils.ts +7 -0
- package/src/web/GestureHandler.ts +1 -2
- package/src/web/NodeManager.ts +5 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/BaseGestureHandlerInteractionController.java +0 -23
- package/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.java +0 -110
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.java +0 -531
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerInteractionController.java +0 -8
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.java +0 -543
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistry.java +0 -10
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistryImpl.java +0 -29
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureUtils.java +0 -53
- package/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.java +0 -81
- package/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.java +0 -110
- package/android/lib/src/main/java/com/swmansion/gesturehandler/OnTouchEventListener.java +0 -8
- package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.java +0 -312
- package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.java +0 -109
- package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureDetector.java +0 -169
- package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.java +0 -96
- package/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.java +0 -172
- package/android/lib/src/main/java/com/swmansion/gesturehandler/ViewConfigurationHelper.java +0 -10
- package/android/src/main/java/com/facebook/react/views/modal/RNGHModalUtils.java +0 -21
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.java +0 -296
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.java +0 -72
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.java +0 -77
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.java +0 -8
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.java +0 -86
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.java +0 -731
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerPackage.java +0 -31
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.java +0 -101
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.java +0 -151
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootInterface.java +0 -7
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.java +0 -76
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.java +0 -49
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.java +0 -82
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.java +0 -61
- package/lib/commonjs/handlers/gestureHandlers.js +0 -236
- package/lib/commonjs/handlers/gestureHandlers.js.map +0 -1
- package/lib/module/handlers/gestureHandlers.js +0 -216
- package/lib/module/handlers/gestureHandlers.js.map +0 -1
- package/lib/typescript/handlers/gestureHandlers.d.ts +0 -158
- package/src/handlers/gestureHandlers.ts +0 -511
|
@@ -38,15 +38,20 @@
|
|
|
38
38
|
NSInteger _maxNumberOfTouches;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
+
static const NSUInteger defaultNumberOfTaps = 1;
|
|
42
|
+
static const NSInteger defaultMinPointers = 1;
|
|
43
|
+
static const CGFloat defaultMaxDelay = 0.2;
|
|
44
|
+
static const NSTimeInterval defaultMaxDuration = 0.5;
|
|
45
|
+
|
|
41
46
|
- (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler
|
|
42
47
|
{
|
|
43
48
|
if ((self = [super initWithTarget:gestureHandler action:@selector(handleGesture:)])) {
|
|
44
49
|
_gestureHandler = gestureHandler;
|
|
45
50
|
_tapsSoFar = 0;
|
|
46
|
-
_numberOfTaps =
|
|
47
|
-
_minPointers =
|
|
48
|
-
_maxDelay =
|
|
49
|
-
_maxDuration =
|
|
51
|
+
_numberOfTaps = defaultNumberOfTaps;
|
|
52
|
+
_minPointers = defaultMinPointers;
|
|
53
|
+
_maxDelay = defaultMaxDelay;
|
|
54
|
+
_maxDuration = defaultMaxDuration;
|
|
50
55
|
_maxDeltaX = NAN;
|
|
51
56
|
_maxDeltaY = NAN;
|
|
52
57
|
_maxDistSq = NAN;
|
|
@@ -67,8 +72,14 @@
|
|
|
67
72
|
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
|
|
68
73
|
{
|
|
69
74
|
[super touchesBegan:touches withEvent:event];
|
|
75
|
+
[_gestureHandler.pointerTracker touchesBegan:touches withEvent:event];
|
|
76
|
+
|
|
70
77
|
if (_tapsSoFar == 0) {
|
|
71
|
-
|
|
78
|
+
// this recognizer sends UNDETERMINED -> BEGAN state change event before gestureRecognizerShouldBegin
|
|
79
|
+
// is called (it resets the gesture handler), making it send whatever the last known state as oldState
|
|
80
|
+
// in the event. If we reset it here it correctly sends UNDETERMINED as oldState.
|
|
81
|
+
[_gestureHandler reset];
|
|
82
|
+
_initPosition = [self locationInView:self.view.window];
|
|
72
83
|
}
|
|
73
84
|
_tapsSoFar++;
|
|
74
85
|
if (_tapsSoFar) {
|
|
@@ -88,6 +99,8 @@
|
|
|
88
99
|
- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
|
|
89
100
|
{
|
|
90
101
|
[super touchesMoved:touches withEvent:event];
|
|
102
|
+
[_gestureHandler.pointerTracker touchesMoved:touches withEvent:event];
|
|
103
|
+
|
|
91
104
|
NSInteger numberOfTouches = [touches count];
|
|
92
105
|
if (numberOfTouches > _maxNumberOfTouches) {
|
|
93
106
|
_maxNumberOfTouches = numberOfTouches;
|
|
@@ -109,7 +122,7 @@
|
|
|
109
122
|
}
|
|
110
123
|
|
|
111
124
|
- (CGPoint)translationInView {
|
|
112
|
-
CGPoint currentPosition = [self locationInView:self.view];
|
|
125
|
+
CGPoint currentPosition = [self locationInView:self.view.window];
|
|
113
126
|
return CGPointMake(currentPosition.x - _initPosition.x, currentPosition.y - _initPosition.y);
|
|
114
127
|
}
|
|
115
128
|
|
|
@@ -128,7 +141,7 @@
|
|
|
128
141
|
if (TEST_MAX_IF_NOT_NAN(fabs(trans.y), _maxDeltaY)) {
|
|
129
142
|
return YES;
|
|
130
143
|
}
|
|
131
|
-
if (TEST_MAX_IF_NOT_NAN(fabs(trans.y * trans.y + trans.x
|
|
144
|
+
if (TEST_MAX_IF_NOT_NAN(fabs(trans.y * trans.y + trans.x * trans.x), _maxDistSq)) {
|
|
132
145
|
return YES;
|
|
133
146
|
}
|
|
134
147
|
return NO;
|
|
@@ -137,6 +150,8 @@
|
|
|
137
150
|
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
|
|
138
151
|
{
|
|
139
152
|
[super touchesEnded:touches withEvent:event];
|
|
153
|
+
[_gestureHandler.pointerTracker touchesEnded:touches withEvent:event];
|
|
154
|
+
|
|
140
155
|
if (_numberOfTaps == _tapsSoFar && _maxNumberOfTouches >= _minPointers) {
|
|
141
156
|
self.state = UIGestureRecognizerStateEnded;
|
|
142
157
|
[self reset];
|
|
@@ -148,6 +163,8 @@
|
|
|
148
163
|
- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
|
|
149
164
|
{
|
|
150
165
|
[super touchesCancelled:touches withEvent:event];
|
|
166
|
+
[_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event];
|
|
167
|
+
|
|
151
168
|
self.state = UIGestureRecognizerStateCancelled;
|
|
152
169
|
[self reset];
|
|
153
170
|
}
|
|
@@ -157,6 +174,8 @@
|
|
|
157
174
|
if (self.state == UIGestureRecognizerStateFailed) {
|
|
158
175
|
[self triggerAction];
|
|
159
176
|
}
|
|
177
|
+
[_gestureHandler.pointerTracker reset];
|
|
178
|
+
|
|
160
179
|
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(cancel) object:nil];
|
|
161
180
|
_tapsSoFar = 0;
|
|
162
181
|
_maxNumberOfTouches = 0;
|
|
@@ -178,6 +197,20 @@
|
|
|
178
197
|
return self;
|
|
179
198
|
}
|
|
180
199
|
|
|
200
|
+
- (void)resetConfig
|
|
201
|
+
{
|
|
202
|
+
[super resetConfig];
|
|
203
|
+
RNBetterTapGestureRecognizer *recognizer = (RNBetterTapGestureRecognizer *)_recognizer;
|
|
204
|
+
|
|
205
|
+
recognizer.numberOfTaps = defaultNumberOfTaps;
|
|
206
|
+
recognizer.minPointers = defaultMinPointers;
|
|
207
|
+
recognizer.maxDeltaX = NAN;
|
|
208
|
+
recognizer.maxDeltaY = NAN;
|
|
209
|
+
recognizer.maxDelay = defaultMaxDelay;
|
|
210
|
+
recognizer.maxDuration = defaultMaxDuration;
|
|
211
|
+
recognizer.maxDistSq = NAN;
|
|
212
|
+
}
|
|
213
|
+
|
|
181
214
|
- (void)configure:(NSDictionary *)config
|
|
182
215
|
{
|
|
183
216
|
[super configure:config];
|
|
@@ -205,7 +238,8 @@
|
|
|
205
238
|
}
|
|
206
239
|
}
|
|
207
240
|
|
|
208
|
-
- (RNGestureHandlerEventExtraData *)eventExtraData:(UIGestureRecognizer *)recognizer
|
|
241
|
+
- (RNGestureHandlerEventExtraData *)eventExtraData:(UIGestureRecognizer *)recognizer
|
|
242
|
+
{
|
|
209
243
|
if (recognizer.state == UIGestureRecognizerStateEnded) {
|
|
210
244
|
return _lastData;
|
|
211
245
|
}
|
|
@@ -214,5 +248,18 @@
|
|
|
214
248
|
return _lastData;
|
|
215
249
|
}
|
|
216
250
|
|
|
251
|
+
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
|
|
252
|
+
{
|
|
253
|
+
// UNDETERMINED -> BEGAN state change event is sent before this method is called,
|
|
254
|
+
// in RNGestureHandler it resets _lastSatate variable, making is seem like handler
|
|
255
|
+
// went from UNDETERMINED to BEGAN and then from UNDETERMINED to ACTIVE.
|
|
256
|
+
// This way we preserve _lastState between events and keep correct state flow.
|
|
257
|
+
RNGestureHandlerState savedState = _lastState;
|
|
258
|
+
BOOL shouldBegin = [super gestureRecognizerShouldBegin:gestureRecognizer];
|
|
259
|
+
_lastState = savedState;
|
|
260
|
+
|
|
261
|
+
return shouldBegin;
|
|
262
|
+
}
|
|
263
|
+
|
|
217
264
|
@end
|
|
218
265
|
|
package/ios/RNGestureHandler.h
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#import "RNGestureHandlerState.h"
|
|
2
2
|
#import "RNGestureHandlerDirection.h"
|
|
3
3
|
#import "RNGestureHandlerEvents.h"
|
|
4
|
+
#import "RNGestureHandlerPointerTracker.h"
|
|
4
5
|
|
|
5
6
|
#import <Foundation/Foundation.h>
|
|
6
7
|
#import <UIKit/UIKit.h>
|
|
@@ -15,7 +16,7 @@
|
|
|
15
16
|
|
|
16
17
|
#define APPLY_PROP(recognizer, config, type, prop, propName) do { \
|
|
17
18
|
id value = config[propName]; \
|
|
18
|
-
if (value != nil) recognizer.prop = [RCTConvert type:value]; \
|
|
19
|
+
if (value != nil) { recognizer.prop = [RCTConvert type:value]; }\
|
|
19
20
|
} while(0)
|
|
20
21
|
|
|
21
22
|
#define APPLY_FLOAT_PROP(prop) do { APPLY_PROP(recognizer, config, CGFloat, prop, @#prop); } while(0)
|
|
@@ -28,13 +29,17 @@ if (value != nil) recognizer.prop = [RCTConvert type:value]; \
|
|
|
28
29
|
|
|
29
30
|
- (void)sendStateChangeEvent:(nonnull RNGestureHandlerStateChange *)event;
|
|
30
31
|
|
|
32
|
+
- (void)sendTouchDeviceEvent:(nonnull RNGestureHandlerEvent *)event;
|
|
33
|
+
|
|
34
|
+
- (void)sendStateChangeDeviceEvent:(nonnull RNGestureHandlerStateChange *)event;
|
|
35
|
+
|
|
31
36
|
@end
|
|
32
37
|
|
|
33
38
|
|
|
34
39
|
@protocol RNRootViewGestureRecognizerDelegate <UIGestureRecognizerDelegate>
|
|
35
40
|
|
|
36
41
|
- (void)gestureRecognizer:(nullable UIGestureRecognizer *)gestureRecognizer
|
|
37
|
-
|
|
42
|
+
didActivateInViewWithTouchHandler:(nullable UIView *)viewWithTouchHandler;
|
|
38
43
|
|
|
39
44
|
@end
|
|
40
45
|
|
|
@@ -53,21 +58,30 @@ if (value != nil) recognizer.prop = [RCTConvert type:value]; \
|
|
|
53
58
|
@property (nonatomic, readonly, nonnull) NSNumber *tag;
|
|
54
59
|
@property (nonatomic, weak, nullable) id<RNGestureHandlerEventEmitter> emitter;
|
|
55
60
|
@property (nonatomic, readonly, nullable) UIGestureRecognizer *recognizer;
|
|
61
|
+
@property (nonatomic, readonly, nullable) RNGestureHandlerPointerTracker *pointerTracker;
|
|
56
62
|
@property (nonatomic) BOOL enabled;
|
|
57
|
-
@property(nonatomic) BOOL
|
|
63
|
+
@property (nonatomic) BOOL usesDeviceEvents;
|
|
64
|
+
@property (nonatomic) BOOL shouldCancelWhenOutside;
|
|
65
|
+
@property (nonatomic) BOOL needsPointerData;
|
|
66
|
+
@property (nonatomic) BOOL manualActivation;
|
|
58
67
|
|
|
59
68
|
- (void)bindToView:(nonnull UIView *)view;
|
|
60
69
|
- (void)unbindFromView;
|
|
70
|
+
- (void)resetConfig NS_REQUIRES_SUPER;
|
|
61
71
|
- (void)configure:(nullable NSDictionary *)config NS_REQUIRES_SUPER;
|
|
62
72
|
- (void)handleGesture:(nonnull id)recognizer;
|
|
63
73
|
- (BOOL)containsPointInView;
|
|
64
74
|
- (RNGestureHandlerState)state;
|
|
65
75
|
- (nullable RNGestureHandlerEventExtraData *)eventExtraData:(nonnull id)recognizer;
|
|
66
76
|
|
|
77
|
+
- (void)stopActivationBlocker;
|
|
67
78
|
- (void)reset;
|
|
68
79
|
- (void)sendEventsInState:(RNGestureHandlerState)state
|
|
69
80
|
forViewWithTag:(nonnull NSNumber *)reactTag
|
|
70
|
-
withExtraData:(RNGestureHandlerEventExtraData *)extraData;
|
|
81
|
+
withExtraData:(nonnull RNGestureHandlerEventExtraData *)extraData;
|
|
82
|
+
- (void)sendStateChangeEvent:(nonnull RNGestureHandlerStateChange *)event;
|
|
83
|
+
- (void)sendTouchEventInState:(RNGestureHandlerState)state
|
|
84
|
+
forViewWithTag:(nonnull NSNumber *)reactTag;
|
|
71
85
|
|
|
72
86
|
@end
|
|
73
87
|
|
package/ios/RNGestureHandler.m
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#import "RNGestureHandler.h"
|
|
2
|
+
#import "RNManualActivationRecognizer.h"
|
|
2
3
|
|
|
3
4
|
#import "Handlers/RNNativeViewHandler.h"
|
|
4
5
|
|
|
@@ -61,6 +62,9 @@ CGRect RNGHHitSlopInsetRect(CGRect rect, RNGHHitSlop hitSlop) {
|
|
|
61
62
|
static NSHashTable<RNGestureHandler *> *allGestureHandlers;
|
|
62
63
|
|
|
63
64
|
@implementation RNGestureHandler {
|
|
65
|
+
RNGestureHandlerPointerTracker *_pointerTracker;
|
|
66
|
+
RNGestureHandlerState _state;
|
|
67
|
+
RNManualActivationRecognizer *_manualActivationRecognizer;
|
|
64
68
|
NSArray<NSNumber *> *_handlersToWaitFor;
|
|
65
69
|
NSArray<NSNumber *> *_simultaneousHandlers;
|
|
66
70
|
RNGHHitSlop _hitSlop;
|
|
@@ -70,9 +74,12 @@ static NSHashTable<RNGestureHandler *> *allGestureHandlers;
|
|
|
70
74
|
- (instancetype)initWithTag:(NSNumber *)tag
|
|
71
75
|
{
|
|
72
76
|
if ((self = [super init])) {
|
|
77
|
+
_pointerTracker = [[RNGestureHandlerPointerTracker alloc] initWithGestureHandler:self];
|
|
73
78
|
_tag = tag;
|
|
74
79
|
_lastState = RNGestureHandlerStateUndetermined;
|
|
75
80
|
_hitSlop = RNGHHitSlopEmpty;
|
|
81
|
+
_state = RNGestureHandlerStateBegan;
|
|
82
|
+
_manualActivationRecognizer = nil;
|
|
76
83
|
|
|
77
84
|
static dispatch_once_t onceToken;
|
|
78
85
|
dispatch_once(&onceToken, ^{
|
|
@@ -84,23 +91,42 @@ static NSHashTable<RNGestureHandler *> *allGestureHandlers;
|
|
|
84
91
|
return self;
|
|
85
92
|
}
|
|
86
93
|
|
|
94
|
+
- (void)resetConfig
|
|
95
|
+
{
|
|
96
|
+
self.enabled = YES;
|
|
97
|
+
_shouldCancelWhenOutside = NO;
|
|
98
|
+
_handlersToWaitFor = nil;
|
|
99
|
+
_simultaneousHandlers = nil;
|
|
100
|
+
_hitSlop = RNGHHitSlopEmpty;
|
|
101
|
+
_needsPointerData = NO;
|
|
102
|
+
|
|
103
|
+
self.manualActivation = NO;
|
|
104
|
+
}
|
|
105
|
+
|
|
87
106
|
- (void)configure:(NSDictionary *)config
|
|
88
107
|
{
|
|
108
|
+
[self resetConfig];
|
|
89
109
|
_handlersToWaitFor = [RCTConvert NSNumberArray:config[@"waitFor"]];
|
|
90
110
|
_simultaneousHandlers = [RCTConvert NSNumberArray:config[@"simultaneousHandlers"]];
|
|
91
111
|
|
|
92
112
|
id prop = config[@"enabled"];
|
|
93
113
|
if (prop != nil) {
|
|
94
114
|
self.enabled = [RCTConvert BOOL:prop];
|
|
95
|
-
} else {
|
|
96
|
-
self.enabled = YES;
|
|
97
115
|
}
|
|
98
116
|
|
|
99
117
|
prop = config[@"shouldCancelWhenOutside"];
|
|
100
118
|
if (prop != nil) {
|
|
101
119
|
_shouldCancelWhenOutside = [RCTConvert BOOL:prop];
|
|
102
|
-
}
|
|
103
|
-
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
prop = config[@"needsPointerData"];
|
|
123
|
+
if (prop != nil) {
|
|
124
|
+
_needsPointerData = [RCTConvert BOOL:prop];
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
prop = config[@"manualActivation"];
|
|
128
|
+
if (prop != nil) {
|
|
129
|
+
self.manualActivation = [RCTConvert BOOL:prop];
|
|
104
130
|
}
|
|
105
131
|
|
|
106
132
|
prop = config[@"hitSlop"];
|
|
@@ -141,12 +167,16 @@ static NSHashTable<RNGestureHandler *> *allGestureHandlers;
|
|
|
141
167
|
view.userInteractionEnabled = YES;
|
|
142
168
|
self.recognizer.delegate = self;
|
|
143
169
|
[view addGestureRecognizer:self.recognizer];
|
|
170
|
+
|
|
171
|
+
[self bindManualActivationToView:view];
|
|
144
172
|
}
|
|
145
173
|
|
|
146
174
|
- (void)unbindFromView
|
|
147
175
|
{
|
|
148
176
|
[self.recognizer.view removeGestureRecognizer:self.recognizer];
|
|
149
177
|
self.recognizer.delegate = nil;
|
|
178
|
+
|
|
179
|
+
[self unbindManualActivation];
|
|
150
180
|
}
|
|
151
181
|
|
|
152
182
|
- (RNGestureHandlerEventExtraData *)eventExtraData:(UIGestureRecognizer *)recognizer
|
|
@@ -159,6 +189,7 @@ static NSHashTable<RNGestureHandler *> *allGestureHandlers;
|
|
|
159
189
|
|
|
160
190
|
- (void)handleGesture:(UIGestureRecognizer *)recognizer
|
|
161
191
|
{
|
|
192
|
+
_state = [self recognizerState];
|
|
162
193
|
RNGestureHandlerEventExtraData *eventData = [self eventExtraData:recognizer];
|
|
163
194
|
[self sendEventsInState:self.state forViewWithTag:recognizer.view.reactTag withExtraData:eventData];
|
|
164
195
|
}
|
|
@@ -176,11 +207,12 @@ static NSHashTable<RNGestureHandler *> *allGestureHandlers;
|
|
|
176
207
|
self->_eventCoalescingKey = nextEventCoalescingKey++;
|
|
177
208
|
|
|
178
209
|
} else if (state == RNGestureHandlerStateEnd && _lastState != RNGestureHandlerStateActive) {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
210
|
+
id event = [[RNGestureHandlerStateChange alloc] initWithReactTag:reactTag
|
|
211
|
+
handlerTag:_tag
|
|
212
|
+
state:RNGestureHandlerStateActive
|
|
213
|
+
prevState:_lastState
|
|
214
|
+
extraData:extraData];
|
|
215
|
+
[self sendStateChangeEvent:event];
|
|
184
216
|
_lastState = RNGestureHandlerStateActive;
|
|
185
217
|
}
|
|
186
218
|
id stateEvent = [[RNGestureHandlerStateChange alloc] initWithReactTag:reactTag
|
|
@@ -188,7 +220,7 @@ static NSHashTable<RNGestureHandler *> *allGestureHandlers;
|
|
|
188
220
|
state:state
|
|
189
221
|
prevState:_lastState
|
|
190
222
|
extraData:extraData];
|
|
191
|
-
[self
|
|
223
|
+
[self sendStateChangeEvent:stateEvent];
|
|
192
224
|
_lastState = state;
|
|
193
225
|
}
|
|
194
226
|
|
|
@@ -198,11 +230,36 @@ static NSHashTable<RNGestureHandler *> *allGestureHandlers;
|
|
|
198
230
|
state:state
|
|
199
231
|
extraData:extraData
|
|
200
232
|
coalescingKey:self->_eventCoalescingKey];
|
|
201
|
-
[self
|
|
233
|
+
[self sendStateChangeEvent:touchEvent];
|
|
202
234
|
}
|
|
203
235
|
}
|
|
204
236
|
|
|
205
|
-
- (
|
|
237
|
+
- (void)sendStateChangeEvent:(RNGestureHandlerStateChange *)event
|
|
238
|
+
{
|
|
239
|
+
if (self.usesDeviceEvents) {
|
|
240
|
+
[self.emitter sendStateChangeDeviceEvent:event];
|
|
241
|
+
} else {
|
|
242
|
+
[self.emitter sendStateChangeEvent:event];
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
- (void)sendTouchEventInState:(RNGestureHandlerState)state
|
|
247
|
+
forViewWithTag:(NSNumber *)reactTag
|
|
248
|
+
{
|
|
249
|
+
id extraData = [RNGestureHandlerEventExtraData forEventType:_pointerTracker.eventType
|
|
250
|
+
withChangedPointers:_pointerTracker.changedPointersData
|
|
251
|
+
withAllPointers:_pointerTracker.allPointersData
|
|
252
|
+
withNumberOfTouches:_pointerTracker.trackedPointersCount];
|
|
253
|
+
id event = [[RNGestureHandlerEvent alloc] initWithReactTag:reactTag handlerTag:_tag state:state extraData:extraData coalescingKey:[_tag intValue]];
|
|
254
|
+
|
|
255
|
+
if (self.usesDeviceEvents) {
|
|
256
|
+
[self.emitter sendStateChangeDeviceEvent:event];
|
|
257
|
+
} else {
|
|
258
|
+
[self.emitter sendStateChangeEvent:event];
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
- (RNGestureHandlerState)recognizerState
|
|
206
263
|
{
|
|
207
264
|
switch (_recognizer.state) {
|
|
208
265
|
case UIGestureRecognizerStateBegan:
|
|
@@ -220,6 +277,52 @@ static NSHashTable<RNGestureHandler *> *allGestureHandlers;
|
|
|
220
277
|
return RNGestureHandlerStateUndetermined;
|
|
221
278
|
}
|
|
222
279
|
|
|
280
|
+
- (RNGestureHandlerState)state
|
|
281
|
+
{
|
|
282
|
+
// instead of mapping state of the recognizer directly, use value mapped when handleGesture was
|
|
283
|
+
// called, making it correct while awaiting for another handler failure
|
|
284
|
+
return _state;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
#pragma mark Manual activation
|
|
288
|
+
|
|
289
|
+
- (void)stopActivationBlocker
|
|
290
|
+
{
|
|
291
|
+
if (_manualActivationRecognizer != nil) {
|
|
292
|
+
[_manualActivationRecognizer fail];
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
- (void)setManualActivation:(BOOL)manualActivation
|
|
297
|
+
{
|
|
298
|
+
_manualActivation = manualActivation;
|
|
299
|
+
|
|
300
|
+
if (manualActivation) {
|
|
301
|
+
_manualActivationRecognizer = [[RNManualActivationRecognizer alloc] initWithGestureHandler:self];
|
|
302
|
+
|
|
303
|
+
if (_recognizer.view != nil) {
|
|
304
|
+
[_recognizer.view addGestureRecognizer:_manualActivationRecognizer];
|
|
305
|
+
}
|
|
306
|
+
} else if (_manualActivationRecognizer != nil) {
|
|
307
|
+
[_manualActivationRecognizer.view removeGestureRecognizer:_manualActivationRecognizer];
|
|
308
|
+
_manualActivationRecognizer = nil;
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
- (void)bindManualActivationToView:(UIView *)view
|
|
313
|
+
{
|
|
314
|
+
if (_manualActivationRecognizer != nil) {
|
|
315
|
+
[view addGestureRecognizer:_manualActivationRecognizer];
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
- (void)unbindManualActivation
|
|
320
|
+
{
|
|
321
|
+
if (_manualActivationRecognizer != nil) {
|
|
322
|
+
[_manualActivationRecognizer.view removeGestureRecognizer:_manualActivationRecognizer];
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
|
|
223
326
|
#pragma mark UIGestureRecognizerDelegate
|
|
224
327
|
|
|
225
328
|
+ (RNGestureHandler *)findGestureHandlerByRecognizer:(UIGestureRecognizer *)recognizer
|
|
@@ -297,7 +400,14 @@ shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherG
|
|
|
297
400
|
|
|
298
401
|
- (void)reset
|
|
299
402
|
{
|
|
300
|
-
|
|
403
|
+
// do not reset states while gesture is tracking pointers, as gestureRecognizerShouldBegin
|
|
404
|
+
// might be called after some pointers are down, and after state manipulation by the user.
|
|
405
|
+
// Pointer tracker calls this method when it resets, and in that case it no longer tracks
|
|
406
|
+
// any pointers, thus entering this if
|
|
407
|
+
if (!_needsPointerData || _pointerTracker.trackedPointersCount == 0) {
|
|
408
|
+
_lastState = RNGestureHandlerStateUndetermined;
|
|
409
|
+
_state = RNGestureHandlerStateBegan;
|
|
410
|
+
}
|
|
301
411
|
}
|
|
302
412
|
|
|
303
413
|
- (BOOL)containsPointInView
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
#import <UIKit/UIKit.h>
|
|
5
5
|
|
|
6
6
|
#import "RNGestureHandlerState.h"
|
|
7
|
+
#import "RNTouchEventType.h"
|
|
7
8
|
|
|
8
9
|
@interface RNGestureHandlerEventExtraData : NSObject
|
|
9
10
|
|
|
@@ -14,6 +15,10 @@
|
|
|
14
15
|
+ (RNGestureHandlerEventExtraData *)forPosition:(CGPoint)position
|
|
15
16
|
withAbsolutePosition:(CGPoint)absolutePosition
|
|
16
17
|
withNumberOfTouches:(NSUInteger)numberOfTouches;
|
|
18
|
+
+ (RNGestureHandlerEventExtraData *)forPosition:(CGPoint)position
|
|
19
|
+
withAbsolutePosition:(CGPoint)absolutePosition
|
|
20
|
+
withNumberOfTouches:(NSUInteger)numberOfTouches
|
|
21
|
+
withDuration:(NSUInteger)duration;
|
|
17
22
|
+ (RNGestureHandlerEventExtraData *)forPan:(CGPoint)position
|
|
18
23
|
withAbsolutePosition:(CGPoint)absolutePosition
|
|
19
24
|
withTranslation:(CGPoint)translation
|
|
@@ -31,6 +36,10 @@
|
|
|
31
36
|
withAnchorPoint:(CGPoint)anchorPoint
|
|
32
37
|
withVelocity:(CGFloat)velocity
|
|
33
38
|
withNumberOfTouches:(NSUInteger)numberOfTouches;
|
|
39
|
+
+ (RNGestureHandlerEventExtraData *)forEventType:(RNTouchEventType)eventType
|
|
40
|
+
withChangedPointers:(NSArray<NSDictionary *> *)changedPointers
|
|
41
|
+
withAllPointers:(NSArray<NSDictionary *> *)allPointers
|
|
42
|
+
withNumberOfTouches:(NSUInteger)numberOfTouches;
|
|
34
43
|
+ (RNGestureHandlerEventExtraData *)forPointerInside:(BOOL)pointerInside;
|
|
35
44
|
@end
|
|
36
45
|
|
|
@@ -25,6 +25,22 @@
|
|
|
25
25
|
@"numberOfPointers": @(numberOfTouches)}];
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
+ (RNGestureHandlerEventExtraData *)forPosition:(CGPoint)position
|
|
29
|
+
withAbsolutePosition:(CGPoint)absolutePosition
|
|
30
|
+
withNumberOfTouches:(NSUInteger)numberOfTouches
|
|
31
|
+
withDuration:(NSUInteger)duration
|
|
32
|
+
{
|
|
33
|
+
return [[RNGestureHandlerEventExtraData alloc]
|
|
34
|
+
initWithData:@{
|
|
35
|
+
@"x": @(position.x),
|
|
36
|
+
@"y": @(position.y),
|
|
37
|
+
@"absoluteX": @(absolutePosition.x),
|
|
38
|
+
@"absoluteY": @(absolutePosition.y),
|
|
39
|
+
@"numberOfPointers": @(numberOfTouches),
|
|
40
|
+
@"duration":@(duration)
|
|
41
|
+
}];
|
|
42
|
+
}
|
|
43
|
+
|
|
28
44
|
+ (RNGestureHandlerEventExtraData *)forPan:(CGPoint)position
|
|
29
45
|
withAbsolutePosition:(CGPoint)absolutePosition
|
|
30
46
|
withTranslation:(CGPoint)translation
|
|
@@ -87,6 +103,24 @@
|
|
|
87
103
|
@"numberOfPointers": @(numberOfTouches)}];
|
|
88
104
|
}
|
|
89
105
|
|
|
106
|
+
+ (RNGestureHandlerEventExtraData *)forEventType:(RNTouchEventType)eventType
|
|
107
|
+
withChangedPointers:(NSArray<NSDictionary *> *)changedPointers
|
|
108
|
+
withAllPointers:(NSArray<NSDictionary *> *)allPointers
|
|
109
|
+
withNumberOfTouches:(NSUInteger)numberOfTouches
|
|
110
|
+
{
|
|
111
|
+
if (changedPointers == nil || allPointers == nil) {
|
|
112
|
+
changedPointers = @[];
|
|
113
|
+
allPointers = @[];
|
|
114
|
+
eventType = RNTouchEventTypeUndetermined;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
return [[RNGestureHandlerEventExtraData alloc]
|
|
118
|
+
initWithData:@{@"eventType": @(eventType),
|
|
119
|
+
@"changedTouches": changedPointers,
|
|
120
|
+
@"allTouches": allPointers,
|
|
121
|
+
@"numberOfTouches": @(numberOfTouches)}];
|
|
122
|
+
}
|
|
123
|
+
|
|
90
124
|
+ (RNGestureHandlerEventExtraData *)forPointerInside:(BOOL)pointerInside
|
|
91
125
|
{
|
|
92
126
|
return [[RNGestureHandlerEventExtraData alloc]
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
#import <React/RCTBridgeModule.h>
|
|
4
4
|
|
|
5
|
+
#import "RNGestureHandler.h"
|
|
6
|
+
|
|
5
7
|
@class RCTUIManager;
|
|
6
8
|
@class RCTEventDispatcher;
|
|
7
9
|
|
|
@@ -17,6 +19,9 @@
|
|
|
17
19
|
- (void)attachGestureHandler:(nonnull NSNumber *)handlerTag
|
|
18
20
|
toViewWithTag:(nonnull NSNumber *)viewTag;
|
|
19
21
|
|
|
22
|
+
- (void)attachGestureHandlerForDeviceEvents:(nonnull NSNumber *)handlerTag
|
|
23
|
+
toViewWithTag:(nonnull NSNumber *)viewTag;
|
|
24
|
+
|
|
20
25
|
- (void)updateGestureHandler:(nonnull NSNumber *)handlerTag config:(nonnull NSDictionary *)config;
|
|
21
26
|
|
|
22
27
|
- (void)dropGestureHandler:(nonnull NSNumber *)handlerTag;
|
|
@@ -26,4 +31,6 @@
|
|
|
26
31
|
|
|
27
32
|
- (void)handleClearJSResponder;
|
|
28
33
|
|
|
34
|
+
- (nullable RNGestureHandler *)handlerWithTag:(nonnull NSNumber *)handlerTag;
|
|
35
|
+
|
|
29
36
|
@end
|