react-native-gesture-handler 1.10.3 → 2.1.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerPackage.java
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
package com.swmansion.gesturehandler.react;
|
2
|
-
|
3
|
-
import com.facebook.react.ReactPackage;
|
4
|
-
import com.facebook.react.bridge.NativeModule;
|
5
|
-
import com.facebook.react.bridge.ReactApplicationContext;
|
6
|
-
import com.facebook.react.common.MapBuilder;
|
7
|
-
import com.facebook.react.uimanager.ThemedReactContext;
|
8
|
-
import com.facebook.react.uimanager.ViewGroupManager;
|
9
|
-
import com.facebook.react.uimanager.ViewManager;
|
10
|
-
import com.facebook.react.views.view.ReactViewManager;
|
11
|
-
|
12
|
-
import java.util.Arrays;
|
13
|
-
import java.util.List;
|
14
|
-
import java.util.Map;
|
15
|
-
|
16
|
-
import androidx.annotation.Nullable;
|
17
|
-
|
18
|
-
public class RNGestureHandlerPackage implements ReactPackage {
|
19
|
-
|
20
|
-
@Override
|
21
|
-
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
|
22
|
-
return Arrays.<NativeModule>asList(new RNGestureHandlerModule(reactContext));
|
23
|
-
}
|
24
|
-
|
25
|
-
@Override
|
26
|
-
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
|
27
|
-
return Arrays.<ViewManager>asList(
|
28
|
-
new RNGestureHandlerRootViewManager(),
|
29
|
-
new RNGestureHandlerButtonViewManager());
|
30
|
-
}
|
31
|
-
}
|
package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.java
DELETED
@@ -1,101 +0,0 @@
|
|
1
|
-
package com.swmansion.gesturehandler.react;
|
2
|
-
|
3
|
-
import android.util.SparseArray;
|
4
|
-
import android.view.View;
|
5
|
-
|
6
|
-
import com.facebook.react.bridge.UiThreadUtil;
|
7
|
-
import com.swmansion.gesturehandler.GestureHandler;
|
8
|
-
import com.swmansion.gesturehandler.GestureHandlerRegistry;
|
9
|
-
|
10
|
-
import java.util.ArrayList;
|
11
|
-
|
12
|
-
import androidx.annotation.Nullable;
|
13
|
-
|
14
|
-
public class RNGestureHandlerRegistry implements GestureHandlerRegistry {
|
15
|
-
|
16
|
-
private final SparseArray<GestureHandler> mHandlers = new SparseArray<>();
|
17
|
-
private final SparseArray<Integer> mAttachedTo = new SparseArray<>();
|
18
|
-
private final SparseArray<ArrayList<GestureHandler>> mHandlersForView = new SparseArray<>();
|
19
|
-
|
20
|
-
public synchronized void registerHandler(GestureHandler handler) {
|
21
|
-
mHandlers.put(handler.getTag(), handler);
|
22
|
-
}
|
23
|
-
|
24
|
-
public synchronized @Nullable GestureHandler getHandler(int handlerTag) {
|
25
|
-
return mHandlers.get(handlerTag);
|
26
|
-
}
|
27
|
-
|
28
|
-
public synchronized boolean attachHandlerToView(int handlerTag, int viewTag) {
|
29
|
-
GestureHandler handler = mHandlers.get(handlerTag);
|
30
|
-
if (handler != null) {
|
31
|
-
detachHandler(handler);
|
32
|
-
registerHandlerForViewWithTag(viewTag, handler);
|
33
|
-
return true;
|
34
|
-
} else {
|
35
|
-
return false;
|
36
|
-
}
|
37
|
-
}
|
38
|
-
|
39
|
-
private synchronized void registerHandlerForViewWithTag(int viewTag, GestureHandler handler) {
|
40
|
-
if (mAttachedTo.get(handler.getTag()) != null) {
|
41
|
-
throw new IllegalStateException("Handler " + handler + " already attached");
|
42
|
-
}
|
43
|
-
mAttachedTo.put(handler.getTag(), viewTag);
|
44
|
-
ArrayList<GestureHandler> listToAdd = mHandlersForView.get(viewTag);
|
45
|
-
if (listToAdd == null) {
|
46
|
-
listToAdd = new ArrayList<>(1);
|
47
|
-
listToAdd.add(handler);
|
48
|
-
mHandlersForView.put(viewTag, listToAdd);
|
49
|
-
} else {
|
50
|
-
listToAdd.add(handler);
|
51
|
-
}
|
52
|
-
}
|
53
|
-
|
54
|
-
private synchronized void detachHandler(final GestureHandler handler) {
|
55
|
-
Integer attachedToView = mAttachedTo.get(handler.getTag());
|
56
|
-
if (attachedToView != null) {
|
57
|
-
mAttachedTo.remove(handler.getTag());
|
58
|
-
ArrayList<GestureHandler> attachedHandlers = mHandlersForView.get(attachedToView);
|
59
|
-
if (attachedHandlers != null) {
|
60
|
-
attachedHandlers.remove(handler);
|
61
|
-
if (attachedHandlers.size() == 0) {
|
62
|
-
mHandlersForView.remove(attachedToView);
|
63
|
-
}
|
64
|
-
}
|
65
|
-
}
|
66
|
-
if (handler.getView() != null) {
|
67
|
-
// Handler is in "prepared" state which means it is registered in the orchestrator and can
|
68
|
-
// receive touch events. This means that before we remove it from the registry we need to
|
69
|
-
// "cancel" it so that orchestrator does no longer keep a reference to it.
|
70
|
-
UiThreadUtil.runOnUiThread(new Runnable() {
|
71
|
-
@Override
|
72
|
-
public void run() {
|
73
|
-
handler.cancel();
|
74
|
-
}
|
75
|
-
});
|
76
|
-
}
|
77
|
-
}
|
78
|
-
|
79
|
-
public synchronized void dropHandler(int handlerTag) {
|
80
|
-
GestureHandler handler = mHandlers.get(handlerTag);
|
81
|
-
if (handler != null) {
|
82
|
-
detachHandler(handler);
|
83
|
-
mHandlers.remove(handlerTag);
|
84
|
-
}
|
85
|
-
}
|
86
|
-
|
87
|
-
public synchronized void dropAllHandlers() {
|
88
|
-
mHandlers.clear();
|
89
|
-
mAttachedTo.clear();
|
90
|
-
mHandlersForView.clear();
|
91
|
-
}
|
92
|
-
|
93
|
-
public synchronized ArrayList<GestureHandler> getHandlersForViewWithTag(int viewTag) {
|
94
|
-
return mHandlersForView.get(viewTag);
|
95
|
-
}
|
96
|
-
|
97
|
-
@Override
|
98
|
-
public synchronized ArrayList<GestureHandler> getHandlersForView(View view) {
|
99
|
-
return getHandlersForViewWithTag(view.getId());
|
100
|
-
}
|
101
|
-
}
|
package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.java
DELETED
@@ -1,151 +0,0 @@
|
|
1
|
-
package com.swmansion.gesturehandler.react;
|
2
|
-
|
3
|
-
import android.os.SystemClock;
|
4
|
-
import android.util.Log;
|
5
|
-
import android.view.MotionEvent;
|
6
|
-
import android.view.ViewGroup;
|
7
|
-
import android.view.ViewParent;
|
8
|
-
|
9
|
-
import com.facebook.react.ReactRootView;
|
10
|
-
import com.facebook.react.bridge.ReactContext;
|
11
|
-
import com.facebook.react.bridge.UiThreadUtil;
|
12
|
-
import com.facebook.react.common.ReactConstants;
|
13
|
-
import com.facebook.react.views.modal.RNGHModalUtils;
|
14
|
-
import com.swmansion.gesturehandler.GestureHandler;
|
15
|
-
import com.swmansion.gesturehandler.GestureHandlerOrchestrator;
|
16
|
-
|
17
|
-
public class RNGestureHandlerRootHelper {
|
18
|
-
|
19
|
-
private static final float MIN_ALPHA_FOR_TOUCH = 0.1f;
|
20
|
-
|
21
|
-
private final ReactContext mContext;
|
22
|
-
private final GestureHandlerOrchestrator mOrchestrator;
|
23
|
-
private final GestureHandler mJSGestureHandler;
|
24
|
-
private final ViewGroup mRootView;
|
25
|
-
|
26
|
-
private boolean mShouldIntercept = false;
|
27
|
-
private boolean mPassingTouch = false;
|
28
|
-
|
29
|
-
private static ViewGroup findRootViewTag(ViewGroup viewGroup) {
|
30
|
-
UiThreadUtil.assertOnUiThread();
|
31
|
-
ViewParent parent = viewGroup;
|
32
|
-
while (parent != null && !(parent instanceof ReactRootView || RNGHModalUtils.isDialogRootViewGroup(parent))) {
|
33
|
-
parent = parent.getParent();
|
34
|
-
}
|
35
|
-
if (parent == null) {
|
36
|
-
throw new IllegalStateException("View " + viewGroup + " has not been mounted under" +
|
37
|
-
" ReactRootView");
|
38
|
-
}
|
39
|
-
return (ViewGroup) parent;
|
40
|
-
}
|
41
|
-
|
42
|
-
public RNGestureHandlerRootHelper(ReactContext context, ViewGroup wrappedView) {
|
43
|
-
UiThreadUtil.assertOnUiThread();
|
44
|
-
int wrappedViewTag = wrappedView.getId();
|
45
|
-
if (wrappedViewTag < 1) {
|
46
|
-
throw new IllegalStateException("Expect view tag to be set for " + wrappedView);
|
47
|
-
}
|
48
|
-
|
49
|
-
RNGestureHandlerModule module = context.getNativeModule(RNGestureHandlerModule.class);
|
50
|
-
RNGestureHandlerRegistry registry = module.getRegistry();
|
51
|
-
|
52
|
-
mRootView = findRootViewTag(wrappedView);
|
53
|
-
|
54
|
-
Log.i(
|
55
|
-
ReactConstants.TAG,
|
56
|
-
"[GESTURE HANDLER] Initialize gesture handler for root view " + mRootView);
|
57
|
-
|
58
|
-
mContext = context;
|
59
|
-
mOrchestrator = new GestureHandlerOrchestrator(
|
60
|
-
wrappedView, registry, new RNViewConfigurationHelper());
|
61
|
-
mOrchestrator.setMinimumAlphaForTraversal(MIN_ALPHA_FOR_TOUCH);
|
62
|
-
|
63
|
-
mJSGestureHandler = new RootViewGestureHandler();
|
64
|
-
mJSGestureHandler.setTag(-wrappedViewTag);
|
65
|
-
registry.registerHandler(mJSGestureHandler);
|
66
|
-
registry.attachHandlerToView(mJSGestureHandler.getTag(), wrappedViewTag);
|
67
|
-
|
68
|
-
module.registerRootHelper(this);
|
69
|
-
}
|
70
|
-
|
71
|
-
public void tearDown() {
|
72
|
-
Log.i(
|
73
|
-
ReactConstants.TAG,
|
74
|
-
"[GESTURE HANDLER] Tearing down gesture handler registered for root view " + mRootView);
|
75
|
-
RNGestureHandlerModule module = mContext.getNativeModule(RNGestureHandlerModule.class);
|
76
|
-
module.getRegistry().dropHandler(mJSGestureHandler.getTag());
|
77
|
-
module.unregisterRootHelper(this);
|
78
|
-
}
|
79
|
-
|
80
|
-
public ViewGroup getRootView() {
|
81
|
-
return mRootView;
|
82
|
-
}
|
83
|
-
|
84
|
-
private class RootViewGestureHandler extends GestureHandler {
|
85
|
-
@Override
|
86
|
-
protected void onHandle(MotionEvent event) {
|
87
|
-
int currentState = getState();
|
88
|
-
if (currentState == STATE_UNDETERMINED) {
|
89
|
-
begin();
|
90
|
-
mShouldIntercept = false;
|
91
|
-
}
|
92
|
-
if (event.getActionMasked() == MotionEvent.ACTION_UP) {
|
93
|
-
end();
|
94
|
-
}
|
95
|
-
}
|
96
|
-
|
97
|
-
@Override
|
98
|
-
protected void onCancel() {
|
99
|
-
mShouldIntercept = true;
|
100
|
-
long time = SystemClock.uptimeMillis();
|
101
|
-
MotionEvent event = MotionEvent.obtain(time, time, MotionEvent.ACTION_CANCEL, 0, 0, 0);
|
102
|
-
event.setAction(MotionEvent.ACTION_CANCEL);
|
103
|
-
if (mRootView instanceof ReactRootView) {
|
104
|
-
((ReactRootView) mRootView).onChildStartedNativeGesture(event);
|
105
|
-
} else {
|
106
|
-
RNGHModalUtils.dialogRootViewGroupOnChildStartedNativeGesture(mRootView, event);
|
107
|
-
}
|
108
|
-
}
|
109
|
-
}
|
110
|
-
|
111
|
-
public void requestDisallowInterceptTouchEvent(boolean disallowIntercept) {
|
112
|
-
// If this method gets called it means that some native view is attempting to grab lock for
|
113
|
-
// touch event delivery. In that case we cancel all gesture recognizers
|
114
|
-
if (mOrchestrator != null && !mPassingTouch) {
|
115
|
-
// if we are in the process of delivering touch events via GH orchestrator, we don't want to
|
116
|
-
// treat it as a native gesture capturing the lock
|
117
|
-
tryCancelAllHandlers();
|
118
|
-
}
|
119
|
-
}
|
120
|
-
|
121
|
-
public boolean dispatchTouchEvent(MotionEvent ev) {
|
122
|
-
// We mark `mPassingTouch` before we get into `mOrchestrator.onTouchEvent` so that we can tell
|
123
|
-
// if `requestDisallow` has been called as a result of a normal gesture handling process or
|
124
|
-
// as a result of one of the gesture handlers activating
|
125
|
-
mPassingTouch = true;
|
126
|
-
mOrchestrator.onTouchEvent(ev);
|
127
|
-
mPassingTouch = false;
|
128
|
-
|
129
|
-
return mShouldIntercept;
|
130
|
-
}
|
131
|
-
|
132
|
-
private void tryCancelAllHandlers() {
|
133
|
-
// In order to cancel handlers we activate handler that is hooked to the root view
|
134
|
-
if (mJSGestureHandler != null && mJSGestureHandler.getState() == GestureHandler.STATE_BEGAN) {
|
135
|
-
// Try activate main JS handler
|
136
|
-
mJSGestureHandler.activate();
|
137
|
-
mJSGestureHandler.end();
|
138
|
-
}
|
139
|
-
}
|
140
|
-
|
141
|
-
/*package*/ void handleSetJSResponder(final int viewTag, final boolean blockNativeResponder) {
|
142
|
-
if (blockNativeResponder) {
|
143
|
-
UiThreadUtil.runOnUiThread(new Runnable() {
|
144
|
-
@Override
|
145
|
-
public void run() {
|
146
|
-
tryCancelAllHandlers();
|
147
|
-
}
|
148
|
-
});
|
149
|
-
}
|
150
|
-
}
|
151
|
-
}
|
package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.java
DELETED
@@ -1,76 +0,0 @@
|
|
1
|
-
package com.swmansion.gesturehandler.react;
|
2
|
-
|
3
|
-
import android.util.Log;
|
4
|
-
import android.content.Context;
|
5
|
-
import android.view.MotionEvent;
|
6
|
-
import android.view.ViewGroup;
|
7
|
-
import android.view.ViewParent;
|
8
|
-
|
9
|
-
import com.facebook.infer.annotation.Assertions;
|
10
|
-
import com.facebook.react.bridge.ReactContext;
|
11
|
-
import com.facebook.react.bridge.UiThreadUtil;
|
12
|
-
import com.facebook.react.common.ReactConstants;
|
13
|
-
import com.facebook.react.views.view.ReactViewGroup;
|
14
|
-
|
15
|
-
import androidx.annotation.Nullable;
|
16
|
-
|
17
|
-
public class RNGestureHandlerRootView extends ReactViewGroup {
|
18
|
-
|
19
|
-
private static boolean hasGestureHandlerEnabledRootView(ViewGroup viewGroup) {
|
20
|
-
UiThreadUtil.assertOnUiThread();
|
21
|
-
ViewParent parent = viewGroup.getParent();
|
22
|
-
while (parent != null) {
|
23
|
-
if (parent instanceof RNGestureHandlerEnabledRootView || parent instanceof RNGestureHandlerRootView) {
|
24
|
-
return true;
|
25
|
-
}
|
26
|
-
parent = parent.getParent();
|
27
|
-
}
|
28
|
-
return false;
|
29
|
-
}
|
30
|
-
|
31
|
-
private boolean mEnabled;
|
32
|
-
private @Nullable RNGestureHandlerRootHelper mRootHelper;
|
33
|
-
|
34
|
-
public RNGestureHandlerRootView(Context context) {
|
35
|
-
super(context);
|
36
|
-
}
|
37
|
-
|
38
|
-
@Override
|
39
|
-
protected void onAttachedToWindow() {
|
40
|
-
super.onAttachedToWindow();
|
41
|
-
|
42
|
-
mEnabled = !hasGestureHandlerEnabledRootView(this);
|
43
|
-
|
44
|
-
if (!mEnabled) {
|
45
|
-
Log.i(
|
46
|
-
ReactConstants.TAG,
|
47
|
-
"[GESTURE HANDLER] Gesture handler is already enabled for a parent view");
|
48
|
-
}
|
49
|
-
|
50
|
-
if (mEnabled && mRootHelper == null) {
|
51
|
-
mRootHelper = new RNGestureHandlerRootHelper((ReactContext) getContext(), this);
|
52
|
-
}
|
53
|
-
}
|
54
|
-
|
55
|
-
public void tearDown() {
|
56
|
-
if (mRootHelper != null) {
|
57
|
-
mRootHelper.tearDown();
|
58
|
-
}
|
59
|
-
}
|
60
|
-
|
61
|
-
@Override
|
62
|
-
public boolean dispatchTouchEvent(MotionEvent ev) {
|
63
|
-
if (mEnabled && Assertions.assertNotNull(mRootHelper).dispatchTouchEvent(ev)) {
|
64
|
-
return true;
|
65
|
-
}
|
66
|
-
return super.dispatchTouchEvent(ev);
|
67
|
-
}
|
68
|
-
|
69
|
-
@Override
|
70
|
-
public void requestDisallowInterceptTouchEvent(boolean disallowIntercept) {
|
71
|
-
if (mEnabled) {
|
72
|
-
Assertions.assertNotNull(mRootHelper).requestDisallowInterceptTouchEvent(disallowIntercept);
|
73
|
-
}
|
74
|
-
super.requestDisallowInterceptTouchEvent(disallowIntercept);
|
75
|
-
}
|
76
|
-
}
|
@@ -1,49 +0,0 @@
|
|
1
|
-
package com.swmansion.gesturehandler.react;
|
2
|
-
|
3
|
-
import com.facebook.react.common.MapBuilder;
|
4
|
-
import com.facebook.react.module.annotations.ReactModule;
|
5
|
-
import com.facebook.react.uimanager.ThemedReactContext;
|
6
|
-
import com.facebook.react.uimanager.ViewGroupManager;
|
7
|
-
|
8
|
-
import java.util.Map;
|
9
|
-
|
10
|
-
import androidx.annotation.Nullable;
|
11
|
-
|
12
|
-
/**
|
13
|
-
* React native's view manager used for creating instances of {@link }RNGestureHandlerRootView}. It
|
14
|
-
* is being used by projects using react-native-navigation where for each screen new root view need
|
15
|
-
* to be provided.
|
16
|
-
*/
|
17
|
-
@ReactModule(name = RNGestureHandlerRootViewManager.REACT_CLASS)
|
18
|
-
public class RNGestureHandlerRootViewManager extends ViewGroupManager<RNGestureHandlerRootView> {
|
19
|
-
|
20
|
-
public static final String REACT_CLASS = "GestureHandlerRootView";
|
21
|
-
|
22
|
-
@Override
|
23
|
-
public String getName() {
|
24
|
-
return REACT_CLASS;
|
25
|
-
}
|
26
|
-
|
27
|
-
@Override
|
28
|
-
protected RNGestureHandlerRootView createViewInstance(ThemedReactContext reactContext) {
|
29
|
-
return new RNGestureHandlerRootView(reactContext);
|
30
|
-
}
|
31
|
-
|
32
|
-
@Override
|
33
|
-
public void onDropViewInstance(RNGestureHandlerRootView view) {
|
34
|
-
view.tearDown();
|
35
|
-
}
|
36
|
-
|
37
|
-
/**
|
38
|
-
* The following event configuration is necessary even if you are not using
|
39
|
-
* GestureHandlerRootView component directly.
|
40
|
-
*/
|
41
|
-
@Override
|
42
|
-
public @Nullable Map getExportedCustomDirectEventTypeConstants() {
|
43
|
-
return MapBuilder.of(
|
44
|
-
RNGestureHandlerEvent.EVENT_NAME,
|
45
|
-
MapBuilder.of("registrationName", RNGestureHandlerEvent.EVENT_NAME),
|
46
|
-
RNGestureHandlerStateChangeEvent.EVENT_NAME,
|
47
|
-
MapBuilder.of("registrationName", RNGestureHandlerStateChangeEvent.EVENT_NAME));
|
48
|
-
}
|
49
|
-
}
|
@@ -1,82 +0,0 @@
|
|
1
|
-
package com.swmansion.gesturehandler.react;
|
2
|
-
|
3
|
-
import androidx.core.util.Pools;
|
4
|
-
|
5
|
-
import com.facebook.react.bridge.Arguments;
|
6
|
-
import com.facebook.react.bridge.WritableMap;
|
7
|
-
import com.facebook.react.uimanager.events.Event;
|
8
|
-
import com.facebook.react.uimanager.events.RCTEventEmitter;
|
9
|
-
import com.swmansion.gesturehandler.GestureHandler;
|
10
|
-
|
11
|
-
import androidx.annotation.Nullable;
|
12
|
-
|
13
|
-
public class RNGestureHandlerStateChangeEvent extends Event<RNGestureHandlerStateChangeEvent>{
|
14
|
-
|
15
|
-
public static final String EVENT_NAME = "onGestureHandlerStateChange";
|
16
|
-
|
17
|
-
private static final int TOUCH_EVENTS_POOL_SIZE = 7; // magic
|
18
|
-
|
19
|
-
private static final Pools.SynchronizedPool<RNGestureHandlerStateChangeEvent> EVENTS_POOL =
|
20
|
-
new Pools.SynchronizedPool<>(TOUCH_EVENTS_POOL_SIZE);
|
21
|
-
|
22
|
-
public static RNGestureHandlerStateChangeEvent obtain(
|
23
|
-
GestureHandler handler,
|
24
|
-
int newState,
|
25
|
-
int oldState,
|
26
|
-
@Nullable RNGestureHandlerEventDataExtractor dataExtractor) {
|
27
|
-
RNGestureHandlerStateChangeEvent event = EVENTS_POOL.acquire();
|
28
|
-
if (event == null) {
|
29
|
-
event = new RNGestureHandlerStateChangeEvent();
|
30
|
-
}
|
31
|
-
event.init(handler, newState, oldState, dataExtractor);
|
32
|
-
return event;
|
33
|
-
}
|
34
|
-
|
35
|
-
private WritableMap mExtraData;
|
36
|
-
|
37
|
-
private RNGestureHandlerStateChangeEvent() {
|
38
|
-
}
|
39
|
-
|
40
|
-
private void init(
|
41
|
-
GestureHandler handler,
|
42
|
-
int newState,
|
43
|
-
int oldState,
|
44
|
-
@Nullable RNGestureHandlerEventDataExtractor dataExtractor) {
|
45
|
-
super.init(handler.getView().getId());
|
46
|
-
mExtraData = Arguments.createMap();
|
47
|
-
if (dataExtractor != null) {
|
48
|
-
dataExtractor.extractEventData(handler, mExtraData);
|
49
|
-
}
|
50
|
-
mExtraData.putInt("handlerTag", handler.getTag());
|
51
|
-
mExtraData.putInt("state", newState);
|
52
|
-
mExtraData.putInt("oldState", oldState);
|
53
|
-
}
|
54
|
-
|
55
|
-
@Override
|
56
|
-
public void onDispose() {
|
57
|
-
mExtraData = null;
|
58
|
-
EVENTS_POOL.release(this);
|
59
|
-
}
|
60
|
-
|
61
|
-
@Override
|
62
|
-
public String getEventName() {
|
63
|
-
return EVENT_NAME;
|
64
|
-
}
|
65
|
-
|
66
|
-
@Override
|
67
|
-
public boolean canCoalesce() {
|
68
|
-
// TODO: coalescing
|
69
|
-
return false;
|
70
|
-
}
|
71
|
-
|
72
|
-
@Override
|
73
|
-
public short getCoalescingKey() {
|
74
|
-
// TODO: coalescing
|
75
|
-
return 0;
|
76
|
-
}
|
77
|
-
|
78
|
-
@Override
|
79
|
-
public void dispatch(RCTEventEmitter rctEventEmitter) {
|
80
|
-
rctEventEmitter.receiveEvent(getViewTag(), EVENT_NAME, mExtraData);
|
81
|
-
}
|
82
|
-
}
|
package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.java
DELETED
@@ -1,61 +0,0 @@
|
|
1
|
-
package com.swmansion.gesturehandler.react;
|
2
|
-
|
3
|
-
import android.os.Build;
|
4
|
-
import android.view.View;
|
5
|
-
import android.view.ViewGroup;
|
6
|
-
|
7
|
-
import com.facebook.react.uimanager.PointerEvents;
|
8
|
-
import com.facebook.react.uimanager.ReactPointerEventsView;
|
9
|
-
import com.facebook.react.views.view.ReactViewGroup;
|
10
|
-
import com.swmansion.gesturehandler.PointerEventsConfig;
|
11
|
-
import com.swmansion.gesturehandler.ViewConfigurationHelper;
|
12
|
-
|
13
|
-
public class RNViewConfigurationHelper implements ViewConfigurationHelper {
|
14
|
-
|
15
|
-
@Override
|
16
|
-
public PointerEventsConfig getPointerEventsConfigForView(View view) {
|
17
|
-
PointerEvents pointerEvents;
|
18
|
-
pointerEvents = view instanceof ReactPointerEventsView ?
|
19
|
-
((ReactPointerEventsView) view).getPointerEvents() :
|
20
|
-
PointerEvents.AUTO;
|
21
|
-
|
22
|
-
// Views that are disabled should never be the target of pointer events. However, their children
|
23
|
-
// can be because some views (SwipeRefreshLayout) use enabled but still have children that can
|
24
|
-
// be valid targets.
|
25
|
-
if (!view.isEnabled()) {
|
26
|
-
if (pointerEvents == PointerEvents.AUTO) {
|
27
|
-
return PointerEventsConfig.BOX_NONE;
|
28
|
-
} else if (pointerEvents == PointerEvents.BOX_ONLY) {
|
29
|
-
return PointerEventsConfig.NONE;
|
30
|
-
}
|
31
|
-
}
|
32
|
-
|
33
|
-
switch (pointerEvents) {
|
34
|
-
case BOX_ONLY: return PointerEventsConfig.BOX_ONLY;
|
35
|
-
case BOX_NONE: return PointerEventsConfig.BOX_NONE;
|
36
|
-
case NONE: return PointerEventsConfig.NONE;
|
37
|
-
}
|
38
|
-
|
39
|
-
return PointerEventsConfig.AUTO;
|
40
|
-
}
|
41
|
-
|
42
|
-
@Override
|
43
|
-
public View getChildInDrawingOrderAtIndex(ViewGroup parent, int index) {
|
44
|
-
if (parent instanceof ReactViewGroup) {
|
45
|
-
return parent.getChildAt(((ReactViewGroup) parent).getZIndexMappedChildIndex(index));
|
46
|
-
}
|
47
|
-
return parent.getChildAt(index);
|
48
|
-
}
|
49
|
-
|
50
|
-
@Override
|
51
|
-
public boolean isViewClippingChildren(ViewGroup view) {
|
52
|
-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2 && !view.getClipChildren()) {
|
53
|
-
if (view instanceof ReactViewGroup) {
|
54
|
-
String overflow = ((ReactViewGroup) view).getOverflow();
|
55
|
-
return "hidden".equals(overflow);
|
56
|
-
}
|
57
|
-
return false;
|
58
|
-
}
|
59
|
-
return true;
|
60
|
-
}
|
61
|
-
}
|