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
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
#import "Handlers/RNPinchHandler.h"
|
|
28
28
|
#import "Handlers/RNRotationHandler.h"
|
|
29
29
|
#import "Handlers/RNForceTouchHandler.h"
|
|
30
|
+
#import "Handlers/RNManualHandler.h"
|
|
30
31
|
|
|
31
32
|
// We use the method below instead of RCTLog because we log out messages after the bridge gets
|
|
32
33
|
// turned down in some cases. Which normally with RCTLog would cause a crash in DEBUG mode
|
|
@@ -40,7 +41,7 @@
|
|
|
40
41
|
{
|
|
41
42
|
RNGestureHandlerRegistry *_registry;
|
|
42
43
|
RCTUIManager *_uiManager;
|
|
43
|
-
NSHashTable<
|
|
44
|
+
NSHashTable<RNRootViewGestureRecognizer *> *_rootViewGestureRecognizers;
|
|
44
45
|
RCTEventDispatcher *_eventDispatcher;
|
|
45
46
|
}
|
|
46
47
|
|
|
@@ -51,7 +52,7 @@
|
|
|
51
52
|
_uiManager = uiManager;
|
|
52
53
|
_eventDispatcher = eventDispatcher;
|
|
53
54
|
_registry = [RNGestureHandlerRegistry new];
|
|
54
|
-
|
|
55
|
+
_rootViewGestureRecognizers = [NSHashTable hashTableWithOptions:NSPointerFunctionsWeakMemory];
|
|
55
56
|
}
|
|
56
57
|
return self;
|
|
57
58
|
}
|
|
@@ -72,6 +73,7 @@
|
|
|
72
73
|
@"PinchGestureHandler": [RNPinchGestureHandler class],
|
|
73
74
|
@"RotationGestureHandler": [RNRotationGestureHandler class],
|
|
74
75
|
@"ForceTouchGestureHandler": [RNForceTouchHandler class],
|
|
76
|
+
@"ManualGestureHandler": [RNManualGestureHandler class],
|
|
75
77
|
};
|
|
76
78
|
});
|
|
77
79
|
|
|
@@ -97,8 +99,19 @@
|
|
|
97
99
|
|
|
98
100
|
[_registry attachHandlerWithTag:handlerTag toView:view];
|
|
99
101
|
|
|
100
|
-
// register
|
|
101
|
-
[self
|
|
102
|
+
// register view if not already there
|
|
103
|
+
[self registerViewWithGestureRecognizerAttachedIfNeeded:view];
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
- (void)attachGestureHandlerForDeviceEvents:(nonnull NSNumber *)handlerTag
|
|
107
|
+
toViewWithTag:(nonnull NSNumber *)viewTag
|
|
108
|
+
{
|
|
109
|
+
UIView *view = [_uiManager viewForReactTag:viewTag];
|
|
110
|
+
|
|
111
|
+
[_registry attachHandlerWithTagForDeviceEvents:handlerTag toView:view];
|
|
112
|
+
|
|
113
|
+
// register view if not already there
|
|
114
|
+
[self registerViewWithGestureRecognizerAttachedIfNeeded:view];
|
|
102
115
|
}
|
|
103
116
|
|
|
104
117
|
- (void)updateGestureHandler:(NSNumber *)handlerTag config:(NSDictionary *)config
|
|
@@ -115,12 +128,8 @@
|
|
|
115
128
|
- (void)handleSetJSResponder:(NSNumber *)viewTag blockNativeResponder:(NSNumber *)blockNativeResponder
|
|
116
129
|
{
|
|
117
130
|
if ([blockNativeResponder boolValue]) {
|
|
118
|
-
for (
|
|
119
|
-
|
|
120
|
-
if ([recognizer isKindOfClass:[RNRootViewGestureRecognizer class]]) {
|
|
121
|
-
[(RNRootViewGestureRecognizer *)recognizer blockOtherRecognizers];
|
|
122
|
-
}
|
|
123
|
-
}
|
|
131
|
+
for (RNRootViewGestureRecognizer *recognizer in _rootViewGestureRecognizers) {
|
|
132
|
+
[recognizer blockOtherRecognizers];
|
|
124
133
|
}
|
|
125
134
|
}
|
|
126
135
|
}
|
|
@@ -130,27 +139,43 @@
|
|
|
130
139
|
// ignore...
|
|
131
140
|
}
|
|
132
141
|
|
|
142
|
+
- (id)handlerWithTag:(NSNumber *)handlerTag
|
|
143
|
+
{
|
|
144
|
+
return [_registry handlerWithTag:handlerTag];
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
|
|
133
148
|
#pragma mark Root Views Management
|
|
134
149
|
|
|
135
|
-
- (void)
|
|
150
|
+
- (void)registerViewWithGestureRecognizerAttachedIfNeeded:(UIView *)childView
|
|
136
151
|
{
|
|
137
152
|
UIView *parent = childView;
|
|
138
|
-
while (parent != nil && ![parent
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
153
|
+
while (parent != nil && ![parent respondsToSelector:@selector(touchHandler)]) parent = parent.superview;
|
|
154
|
+
|
|
155
|
+
// Many views can return the same touchHandler so we check if the one we want to register
|
|
156
|
+
// is not already present in the set.
|
|
157
|
+
UIView *touchHandlerView = [[parent performSelector:@selector(touchHandler)] view];
|
|
158
|
+
|
|
159
|
+
if (touchHandlerView == nil) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
for (UIGestureRecognizer *recognizer in touchHandlerView.gestureRecognizers) {
|
|
164
|
+
if ([recognizer isKindOfClass:[RNRootViewGestureRecognizer class]]) {
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
149
167
|
}
|
|
168
|
+
|
|
169
|
+
RCTLifecycleLog(@"[GESTURE HANDLER] Initialize gesture handler for view %@", touchHandlerView);
|
|
170
|
+
RNRootViewGestureRecognizer *recognizer = [RNRootViewGestureRecognizer new];
|
|
171
|
+
recognizer.delegate = self;
|
|
172
|
+
touchHandlerView.userInteractionEnabled = YES;
|
|
173
|
+
[touchHandlerView addGestureRecognizer:recognizer];
|
|
174
|
+
[_rootViewGestureRecognizers addObject:recognizer];
|
|
150
175
|
}
|
|
151
176
|
|
|
152
177
|
- (void)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
|
|
153
|
-
|
|
178
|
+
didActivateInViewWithTouchHandler:(UIView *)viewWithTouchHandler
|
|
154
179
|
{
|
|
155
180
|
// Cancel touches in RN's root view in order to cancel all in-js recognizers
|
|
156
181
|
|
|
@@ -165,17 +190,8 @@
|
|
|
165
190
|
// Once the upstream fix lands the line below along with this comment can be removed
|
|
166
191
|
if ([gestureRecognizer.view isKindOfClass:[UIScrollView class]]) return;
|
|
167
192
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
[((RCTRootContentView*)rootContentView).touchHandler cancel];
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
- (void)dealloc
|
|
175
|
-
{
|
|
176
|
-
if ([_rootViews count] > 0) {
|
|
177
|
-
RCTLifecycleLog(@"[GESTURE HANDLER] Tearing down gesture handler registered for views %@", _rootViews);
|
|
178
|
-
}
|
|
193
|
+
RCTTouchHandler *touchHandler = [viewWithTouchHandler performSelector:@selector(touchHandler)];
|
|
194
|
+
[touchHandler cancel];
|
|
179
195
|
}
|
|
180
196
|
|
|
181
197
|
#pragma mark Events
|
|
@@ -190,4 +206,16 @@
|
|
|
190
206
|
[_eventDispatcher sendEvent:event];
|
|
191
207
|
}
|
|
192
208
|
|
|
209
|
+
- (void)sendTouchDeviceEvent:(RNGestureHandlerEvent *)event
|
|
210
|
+
{
|
|
211
|
+
NSMutableDictionary *body = [[event arguments] objectAtIndex:2];
|
|
212
|
+
[_eventDispatcher sendDeviceEventWithName:@"onGestureHandlerEvent" body:body];
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
- (void)sendStateChangeDeviceEvent:(RNGestureHandlerStateChange *)event
|
|
216
|
+
{
|
|
217
|
+
NSMutableDictionary *body = [[event arguments] objectAtIndex:2];
|
|
218
|
+
[_eventDispatcher sendDeviceEventWithName:@"onGestureHandlerStateChange" body:body];
|
|
219
|
+
}
|
|
220
|
+
|
|
193
221
|
@end
|
|
@@ -13,8 +13,9 @@
|
|
|
13
13
|
#import "RNGestureHandlerManager.h"
|
|
14
14
|
|
|
15
15
|
#import "RNGestureHandlerButton.h"
|
|
16
|
+
#import "RNGestureHandlerStateManager.h"
|
|
16
17
|
|
|
17
|
-
@interface RNGestureHandlerModule () <RCTUIManagerObserver>
|
|
18
|
+
@interface RNGestureHandlerModule () <RCTUIManagerObserver, RNGestureHandlerStateManager>
|
|
18
19
|
|
|
19
20
|
@end
|
|
20
21
|
|
|
@@ -102,10 +103,14 @@ RCT_EXPORT_METHOD(createGestureHandler:(nonnull NSString *)handlerName tag:(nonn
|
|
|
102
103
|
}];
|
|
103
104
|
}
|
|
104
105
|
|
|
105
|
-
RCT_EXPORT_METHOD(attachGestureHandler:(nonnull NSNumber *)handlerTag toViewWithTag:(nonnull NSNumber *)viewTag)
|
|
106
|
+
RCT_EXPORT_METHOD(attachGestureHandler:(nonnull NSNumber *)handlerTag toViewWithTag:(nonnull NSNumber *)viewTag useDeviceEvents: (BOOL)useDeviceEvents)
|
|
106
107
|
{
|
|
107
108
|
[self addOperationBlock:^(RNGestureHandlerManager *manager) {
|
|
108
|
-
|
|
109
|
+
if (useDeviceEvents) {
|
|
110
|
+
[manager attachGestureHandlerForDeviceEvents:handlerTag toViewWithTag:viewTag];
|
|
111
|
+
} else {
|
|
112
|
+
[manager attachGestureHandler:handlerTag toViewWithTag:viewTag];
|
|
113
|
+
}
|
|
109
114
|
}];
|
|
110
115
|
}
|
|
111
116
|
|
|
@@ -137,6 +142,37 @@ RCT_EXPORT_METHOD(handleClearJSResponder)
|
|
|
137
142
|
}];
|
|
138
143
|
}
|
|
139
144
|
|
|
145
|
+
- (void)setGestureState:(int)state forHandler:(int)handlerTag
|
|
146
|
+
{
|
|
147
|
+
RNGestureHandler *handler = [_manager handlerWithTag:@(handlerTag)];
|
|
148
|
+
|
|
149
|
+
if (handler != nil) {
|
|
150
|
+
if (state == 1) { // FAILED
|
|
151
|
+
handler.recognizer.state = UIGestureRecognizerStateFailed;
|
|
152
|
+
} else if (state == 2) { // BEGAN
|
|
153
|
+
handler.recognizer.state = UIGestureRecognizerStatePossible;
|
|
154
|
+
} else if (state == 3) { // CANCELLED
|
|
155
|
+
handler.recognizer.state = UIGestureRecognizerStateCancelled;
|
|
156
|
+
} else if (state == 4) { // ACTIVE
|
|
157
|
+
[handler stopActivationBlocker];
|
|
158
|
+
handler.recognizer.state = UIGestureRecognizerStateBegan;
|
|
159
|
+
} else if (state == 5) { // ENDED
|
|
160
|
+
handler.recognizer.state = UIGestureRecognizerStateEnded;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// if the gesture was set to finish, cancel all pointers it was tracking
|
|
165
|
+
if (state == 1 || state == 3 || state == 5) {
|
|
166
|
+
[handler.pointerTracker cancelPointers];
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// do not send state change event when activating because it bypasses
|
|
170
|
+
// shouldRequireFailureOfGestureRecognizer
|
|
171
|
+
if (state != 4) {
|
|
172
|
+
[handler handleGesture:handler.recognizer];
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
140
176
|
#pragma mark -- Batch handling
|
|
141
177
|
|
|
142
178
|
- (void)addOperationBlock:(GestureHandlerOperation)operation
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#import <Foundation/Foundation.h>
|
|
2
|
+
|
|
3
|
+
#import "RNTouchEventType.h"
|
|
4
|
+
|
|
5
|
+
#define MAX_POINTERS_COUNT 12
|
|
6
|
+
|
|
7
|
+
@class RNGestureHandler;
|
|
8
|
+
|
|
9
|
+
@interface RNGestureHandlerPointerTracker : NSObject
|
|
10
|
+
|
|
11
|
+
@property (nonatomic) RNTouchEventType eventType;
|
|
12
|
+
@property (nonatomic) NSArray<NSDictionary *> *changedPointersData;
|
|
13
|
+
@property (nonatomic) NSArray<NSDictionary *> *allPointersData;
|
|
14
|
+
@property (nonatomic) int trackedPointersCount;
|
|
15
|
+
|
|
16
|
+
- (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler;
|
|
17
|
+
|
|
18
|
+
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event;
|
|
19
|
+
- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event;
|
|
20
|
+
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event;
|
|
21
|
+
- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event;
|
|
22
|
+
- (void)reset;
|
|
23
|
+
- (void)cancelPointers;
|
|
24
|
+
|
|
25
|
+
@end
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
#import "RNGestureHandlerPointerTracker.h"
|
|
2
|
+
#import "RNGestureHandler.h"
|
|
3
|
+
|
|
4
|
+
#import <React/UIView+React.h>
|
|
5
|
+
|
|
6
|
+
@implementation RNGestureHandlerPointerTracker {
|
|
7
|
+
__weak RNGestureHandler *_gestureHandler;
|
|
8
|
+
UITouch *_trackedPointers[MAX_POINTERS_COUNT];
|
|
9
|
+
int _trackedPointersCount;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
- (id)initWithGestureHandler:(id)gestureHandler
|
|
13
|
+
{
|
|
14
|
+
_gestureHandler = gestureHandler;
|
|
15
|
+
_trackedPointersCount = 0;
|
|
16
|
+
_changedPointersData = nil;
|
|
17
|
+
_allPointersData = nil;
|
|
18
|
+
|
|
19
|
+
for (int i = 0; i < MAX_POINTERS_COUNT; i++) {
|
|
20
|
+
_trackedPointers[i] = nil;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return self;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
- (int)registerTouch:(UITouch *)touch
|
|
27
|
+
{
|
|
28
|
+
for (int index = 0; index < MAX_POINTERS_COUNT; index++) {
|
|
29
|
+
if (_trackedPointers[index] == nil) {
|
|
30
|
+
_trackedPointers[index] = touch;
|
|
31
|
+
return index;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return -1;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
- (int)unregisterTouch:(UITouch *)touch
|
|
39
|
+
{
|
|
40
|
+
for (int index = 0; index < MAX_POINTERS_COUNT; index++) {
|
|
41
|
+
if (_trackedPointers[index] == touch) {
|
|
42
|
+
_trackedPointers[index] = nil;
|
|
43
|
+
return index;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return -1;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
- (int)findTouchIndex:(UITouch *)touch
|
|
51
|
+
{
|
|
52
|
+
for (int index = 0; index < MAX_POINTERS_COUNT; index++) {
|
|
53
|
+
if (_trackedPointers[index] == touch) {
|
|
54
|
+
return index;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return -1;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
- (int)registeredTouchesCount
|
|
61
|
+
{
|
|
62
|
+
int count = 0;
|
|
63
|
+
for (int i = 0; i < MAX_POINTERS_COUNT; i++) {
|
|
64
|
+
if (_trackedPointers[i] != nil) {
|
|
65
|
+
count++;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return count;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
- (NSDictionary *)extractPointerData:(int)index
|
|
72
|
+
forTouch:(UITouch *)touch
|
|
73
|
+
{
|
|
74
|
+
CGPoint relativePos = [touch locationInView:_gestureHandler.recognizer.view];
|
|
75
|
+
CGPoint absolutePos = [touch locationInView:_gestureHandler.recognizer.view.window];
|
|
76
|
+
|
|
77
|
+
return @{@"id": @(index),
|
|
78
|
+
@"x": @(relativePos.x),
|
|
79
|
+
@"y": @(relativePos.y),
|
|
80
|
+
@"absoluteX": @(absolutePos.x),
|
|
81
|
+
@"absoluteY": @(absolutePos.y)};
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
- (void)extractAllTouches {
|
|
85
|
+
int registeredTouches = [self registeredTouchesCount];
|
|
86
|
+
|
|
87
|
+
NSDictionary *data[registeredTouches];
|
|
88
|
+
int nextIndex = 0;
|
|
89
|
+
|
|
90
|
+
for (int i = 0; i < MAX_POINTERS_COUNT; i++) {
|
|
91
|
+
UITouch *touch = _trackedPointers[i];
|
|
92
|
+
if (touch != nil) {
|
|
93
|
+
data[nextIndex++] = [self extractPointerData:i forTouch:touch];
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
_allPointersData = [[NSArray alloc] initWithObjects:data count:registeredTouches];
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
|
|
101
|
+
{
|
|
102
|
+
if (!_gestureHandler.needsPointerData) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
_eventType = RNTouchEventTypePointerDown;
|
|
107
|
+
|
|
108
|
+
NSDictionary *data[touches.count];
|
|
109
|
+
|
|
110
|
+
for (int i = 0; i < [touches count]; i++) {
|
|
111
|
+
UITouch *touch = [[touches allObjects] objectAtIndex:i];
|
|
112
|
+
int index = [self registerTouch:touch];
|
|
113
|
+
if (index >= 0) {
|
|
114
|
+
_trackedPointersCount++;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
data[i] = [self extractPointerData:index forTouch:touch];
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
_changedPointersData = [[NSArray alloc] initWithObjects:data count:[touches count]];
|
|
121
|
+
// extract all touches last to include the ones that were just added
|
|
122
|
+
[self extractAllTouches];
|
|
123
|
+
[self sendEvent];
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
|
|
127
|
+
{
|
|
128
|
+
if (!_gestureHandler.needsPointerData) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
_eventType = RNTouchEventTypePointerMove;
|
|
133
|
+
|
|
134
|
+
NSDictionary *data[touches.count];
|
|
135
|
+
|
|
136
|
+
for (int i = 0; i < [touches count]; i++) {
|
|
137
|
+
UITouch *touch = [[touches allObjects] objectAtIndex:i];
|
|
138
|
+
int index = [self findTouchIndex:touch];
|
|
139
|
+
data[i] = [self extractPointerData:index forTouch:touch];
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
_changedPointersData = [[NSArray alloc] initWithObjects:data count:[touches count]];
|
|
143
|
+
[self extractAllTouches];
|
|
144
|
+
[self sendEvent];
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
|
|
148
|
+
{
|
|
149
|
+
if (!_gestureHandler.needsPointerData) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// extract all touches first to include the ones that were just lifted
|
|
154
|
+
[self extractAllTouches];
|
|
155
|
+
|
|
156
|
+
_eventType = RNTouchEventTypePointerUp;
|
|
157
|
+
|
|
158
|
+
NSDictionary *data[touches.count];
|
|
159
|
+
|
|
160
|
+
for (int i = 0; i < [touches count]; i++) {
|
|
161
|
+
UITouch *touch = [[touches allObjects] objectAtIndex:i];
|
|
162
|
+
int index = [self unregisterTouch:touch];
|
|
163
|
+
if (index >= 0) {
|
|
164
|
+
_trackedPointersCount--;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
data[i] = [self extractPointerData:index forTouch:touch];
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
_changedPointersData = [[NSArray alloc] initWithObjects:data count:[touches count]];
|
|
171
|
+
[self sendEvent];
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
|
|
175
|
+
{
|
|
176
|
+
if (!_gestureHandler.needsPointerData) {
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
[self reset];
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
- (void)reset
|
|
184
|
+
{
|
|
185
|
+
if (!_gestureHandler.needsPointerData) {
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
if (_trackedPointersCount == 0) {
|
|
190
|
+
// gesture has finished because all pointers were lifted, reset event type to send state change event
|
|
191
|
+
_eventType = RNTouchEventTypeUndetermined;
|
|
192
|
+
} else {
|
|
193
|
+
// turns out that the gesture may be made to fail without calling touchesCancelled in that case there
|
|
194
|
+
// are still tracked pointers but the recognizer state is already set to UIGestureRecognizerStateFailed
|
|
195
|
+
// we need to clear the pointers and send info about their cancellation
|
|
196
|
+
[self cancelPointers];
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
[_gestureHandler reset];
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
- (void)cancelPointers
|
|
203
|
+
{
|
|
204
|
+
// extract all touches first to include the ones that were just cancelled
|
|
205
|
+
[self extractAllTouches];
|
|
206
|
+
|
|
207
|
+
int registeredTouches = [self registeredTouchesCount];
|
|
208
|
+
|
|
209
|
+
if (registeredTouches > 0) {
|
|
210
|
+
int nextIndex = 0;
|
|
211
|
+
NSDictionary *data[registeredTouches];
|
|
212
|
+
|
|
213
|
+
for (int i = 0; i < MAX_POINTERS_COUNT; i++) {
|
|
214
|
+
UITouch *touch = _trackedPointers[i];
|
|
215
|
+
if (touch != nil) {
|
|
216
|
+
data[nextIndex++] = [self extractPointerData:i forTouch:touch];
|
|
217
|
+
[self unregisterTouch:touch];
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
_eventType = RNTouchEventTypeCancelled;
|
|
222
|
+
_changedPointersData = [[NSArray alloc] initWithObjects:data count:registeredTouches];
|
|
223
|
+
[self sendEvent];
|
|
224
|
+
_trackedPointersCount = 0;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
- (void)sendEvent
|
|
229
|
+
{
|
|
230
|
+
if (!_gestureHandler.needsPointerData) {
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
[_gestureHandler sendTouchEventInState:[_gestureHandler state] forViewWithTag:_gestureHandler.recognizer.view.reactTag];
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
@end
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
- (nullable RNGestureHandler *)handlerWithTag:(nonnull NSNumber *)handlerTag;
|
|
14
14
|
- (void)registerGestureHandler:(nonnull RNGestureHandler *)gestureHandler;
|
|
15
15
|
- (void)attachHandlerWithTag:(nonnull NSNumber *)handlerTag toView:(nonnull UIView *)view;
|
|
16
|
+
- (void)attachHandlerWithTagForDeviceEvents:(nonnull NSNumber *)handlerTag toView:(nonnull UIView *)view;
|
|
16
17
|
- (void)dropHandlerWithTag:(nonnull NSNumber *)handlerTag;
|
|
17
18
|
|
|
18
19
|
@end
|
|
@@ -37,6 +37,16 @@
|
|
|
37
37
|
RNGestureHandler *handler = _handlers[handlerTag];
|
|
38
38
|
RCTAssert(handler != nil, @"Handler for tag %@ does not exists", handlerTag);
|
|
39
39
|
[handler unbindFromView];
|
|
40
|
+
handler.usesDeviceEvents = NO;
|
|
41
|
+
[handler bindToView:view];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
- (void)attachHandlerWithTagForDeviceEvents:(NSNumber *)handlerTag toView:(UIView *)view
|
|
45
|
+
{
|
|
46
|
+
RNGestureHandler *handler = _handlers[handlerTag];
|
|
47
|
+
RCTAssert(handler != nil, @"Handler for tag %@ does not exists", handlerTag);
|
|
48
|
+
[handler unbindFromView];
|
|
49
|
+
handler.usesDeviceEvents = YES;
|
|
40
50
|
[handler bindToView:view];
|
|
41
51
|
}
|
|
42
52
|
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#import <UIKit/UIGestureRecognizerSubclass.h>
|
|
2
|
+
|
|
3
|
+
@class RNGestureHandler;
|
|
4
|
+
|
|
5
|
+
@interface RNManualActivationRecognizer : UIGestureRecognizer <UIGestureRecognizerDelegate>
|
|
6
|
+
|
|
7
|
+
- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler;
|
|
8
|
+
- (void)fail;
|
|
9
|
+
|
|
10
|
+
@end
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
#import "RNManualActivationRecognizer.h"
|
|
2
|
+
#import "RNGestureHandler.h"
|
|
3
|
+
|
|
4
|
+
@implementation RNManualActivationRecognizer {
|
|
5
|
+
RNGestureHandler *_handler;
|
|
6
|
+
int _activePointers;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler
|
|
10
|
+
{
|
|
11
|
+
if ((self = [super initWithTarget:self action:nil])) {
|
|
12
|
+
_handler = gestureHandler;
|
|
13
|
+
self.delegate = self;
|
|
14
|
+
_activePointers = 0;
|
|
15
|
+
}
|
|
16
|
+
return self;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
|
|
20
|
+
{
|
|
21
|
+
[super touchesBegan:touches withEvent:event];
|
|
22
|
+
|
|
23
|
+
_activePointers += touches.count;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
|
|
27
|
+
{
|
|
28
|
+
[super touchesMoved:touches withEvent:event];
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
|
|
32
|
+
{
|
|
33
|
+
[super touchesEnded:touches withEvent:event];
|
|
34
|
+
|
|
35
|
+
_activePointers -= touches.count;
|
|
36
|
+
|
|
37
|
+
if (_activePointers == 0) {
|
|
38
|
+
[self fail];
|
|
39
|
+
[self reset];
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
|
|
44
|
+
{
|
|
45
|
+
[super touchesCancelled:touches withEvent:event];
|
|
46
|
+
|
|
47
|
+
_activePointers = 0;
|
|
48
|
+
[self reset];
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
- (void)reset
|
|
52
|
+
{
|
|
53
|
+
self.enabled = YES;
|
|
54
|
+
[super reset];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
- (void)fail
|
|
58
|
+
{
|
|
59
|
+
self.enabled = NO;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
|
|
63
|
+
shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
|
|
64
|
+
{
|
|
65
|
+
return YES;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
- (BOOL)shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
|
|
69
|
+
{
|
|
70
|
+
RNGestureHandler *handler = [RNGestureHandler findGestureHandlerByRecognizer:otherGestureRecognizer];
|
|
71
|
+
if (handler != nil) {
|
|
72
|
+
if (handler.tag == _handler.tag) {
|
|
73
|
+
return YES;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return NO;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
@end
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
{
|
|
51
51
|
// When this method is called it means that one of handlers has activated, in this case we want
|
|
52
52
|
// to send an info to JS so that it cancells all JS responders
|
|
53
|
-
[self.delegate gestureRecognizer:preventingGestureRecognizer
|
|
53
|
+
[self.delegate gestureRecognizer:preventingGestureRecognizer didActivateInViewWithTouchHandler:self.view];
|
|
54
54
|
return [super canBePreventedByGestureRecognizer:preventingGestureRecognizer];
|
|
55
55
|
}
|
|
56
56
|
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.EventType = void 0;
|
|
7
|
+
const EventType = {
|
|
8
|
+
UNDETERMINED: 0,
|
|
9
|
+
TOUCHES_DOWN: 1,
|
|
10
|
+
TOUCHES_MOVE: 2,
|
|
11
|
+
TOUCHES_UP: 3,
|
|
12
|
+
TOUCHES_CANCELLED: 4
|
|
13
|
+
}; // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value
|
|
14
|
+
|
|
15
|
+
exports.EventType = EventType;
|
|
16
|
+
//# sourceMappingURL=EventType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["EventType.ts"],"names":["EventType","UNDETERMINED","TOUCHES_DOWN","TOUCHES_MOVE","TOUCHES_UP","TOUCHES_CANCELLED"],"mappings":";;;;;;AAAO,MAAMA,SAAS,GAAG;AACvBC,EAAAA,YAAY,EAAE,CADS;AAEvBC,EAAAA,YAAY,EAAE,CAFS;AAGvBC,EAAAA,YAAY,EAAE,CAHS;AAIvBC,EAAAA,UAAU,EAAE,CAJW;AAKvBC,EAAAA,iBAAiB,EAAE;AALI,CAAlB,C,CAQP","sourcesContent":["export const EventType = {\n UNDETERMINED: 0,\n TOUCHES_DOWN: 1,\n TOUCHES_MOVE: 2,\n TOUCHES_UP: 3,\n TOUCHES_CANCELLED: 4,\n} as const;\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value\nexport type EventType = typeof EventType[keyof typeof EventType];\n"]}
|
|
@@ -14,23 +14,11 @@ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return
|
|
|
14
14
|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
15
15
|
|
|
16
16
|
const GestureHandlerRootViewNative = (0, _reactNative.requireNativeComponent)('GestureHandlerRootView');
|
|
17
|
-
const GestureHandlerRootViewContext = /*#__PURE__*/React.createContext(false);
|
|
18
17
|
|
|
19
18
|
function GestureHandlerRootView({
|
|
20
19
|
children,
|
|
21
20
|
...rest
|
|
22
21
|
}) {
|
|
23
|
-
return /*#__PURE__*/React.createElement(
|
|
24
|
-
if (available) {
|
|
25
|
-
// If we already have a parent wrapped in the gesture handler root view,
|
|
26
|
-
// We don't need to wrap it again in root view
|
|
27
|
-
// We still wrap it in a normal view so our styling stays the same
|
|
28
|
-
return /*#__PURE__*/React.createElement(_reactNative.View, rest, children);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
return /*#__PURE__*/React.createElement(GestureHandlerRootViewContext.Provider, {
|
|
32
|
-
value: true
|
|
33
|
-
}, /*#__PURE__*/React.createElement(GestureHandlerRootViewNative, rest, children));
|
|
34
|
-
});
|
|
22
|
+
return /*#__PURE__*/React.createElement(GestureHandlerRootViewNative, rest, children);
|
|
35
23
|
}
|
|
36
24
|
//# sourceMappingURL=GestureHandlerRootView.android.js.map
|