react-native-gesture-handler 1.10.3 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +10 -8
- 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 +744 -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 +596 -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 +292 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.kt +90 -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 +81 -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/RNGestureHandler.xcodeproj/project.xcworkspace/xcuserdata/jakubpiasecki.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/RNGestureHandler.xcodeproj/xcuserdata/jakubpiasecki.xcuserdatad/xcschemes/xcschememanagement.plist +19 -0
- 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 +65 -84
- 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 +40 -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 +55 -77
- 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 +11 -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 +67 -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
|
Binary file
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
3
|
+
<plist version="1.0">
|
4
|
+
<dict>
|
5
|
+
<key>SchemeUserState</key>
|
6
|
+
<dict>
|
7
|
+
<key>RNGestureHandler-tvOS.xcscheme_^#shared#^_</key>
|
8
|
+
<dict>
|
9
|
+
<key>orderHint</key>
|
10
|
+
<integer>1</integer>
|
11
|
+
</dict>
|
12
|
+
<key>RNGestureHandler.xcscheme_^#shared#^_</key>
|
13
|
+
<dict>
|
14
|
+
<key>orderHint</key>
|
15
|
+
<integer>0</integer>
|
16
|
+
</dict>
|
17
|
+
</dict>
|
18
|
+
</dict>
|
19
|
+
</plist>
|
@@ -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
|