react-native-gesture-handler 2.2.0 → 2.3.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/LICENSE +1 -1
- package/README.md +5 -1
- package/RNGestureHandler.podspec +27 -3
- package/android/build.gradle +81 -8
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt +5 -1
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt +14 -12
- package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.kt +2 -4
- package/android/lib/src/main/java/com/swmansion/gesturehandler/ScaleGestureDetector.java +558 -0
- package/android/src/fabric/java/com/swmansion/gesturehandler/RNGestureHandlerComponentsRegistry.java +29 -0
- package/android/src/fabric/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +12 -0
- package/android/src/main/AndroidManifest.xml +1 -1
- package/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt +29 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +40 -13
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +111 -47
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt +9 -4
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +1 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt +17 -2
- package/android/src/main/jni/Android.mk +53 -0
- package/android/src/main/jni/OnLoad.cpp +9 -0
- package/android/src/main/jni/RNGestureHandlerComponentsRegistry.cpp +71 -0
- package/android/src/main/jni/RNGestureHandlerComponentsRegistry.h +34 -0
- package/android/src/main/jni/cpp-adapter.cpp +41 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java +47 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java +22 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerDelegate.java +25 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerInterface.java +16 -0
- package/android/src/paper/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +13 -0
- package/ios/Handlers/RNFlingHandler.m +2 -0
- package/ios/Handlers/RNPanHandler.m +2 -0
- package/ios/Handlers/RNPinchHandler.m +2 -0
- package/ios/Handlers/RNRotationHandler.m +2 -0
- package/ios/RNGestureHandler.h +3 -8
- package/ios/RNGestureHandler.m +2 -10
- package/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcuserdata/jakubpiasecki.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/RNGestureHandlerActionType.h +8 -0
- package/ios/RNGestureHandlerButtonComponentView.h +17 -0
- package/ios/RNGestureHandlerButtonComponentView.mm +48 -0
- package/ios/RNGestureHandlerButtonManager.h +5 -0
- package/ios/RNGestureHandlerButtonManager.m +30 -0
- package/ios/RNGestureHandlerManager.h +2 -4
- package/ios/{RNGestureHandlerManager.m → RNGestureHandlerManager.mm} +92 -20
- package/ios/{RNGestureHandlerModule.m → RNGestureHandlerModule.mm} +91 -36
- package/ios/RNGestureHandlerRegistry.h +1 -2
- package/ios/RNGestureHandlerRegistry.m +2 -11
- package/ios/RNGestureHandlerRootViewComponentView.mm +21 -0
- package/jest-utils/package.json +6 -0
- package/lib/commonjs/ActionType.js +15 -0
- package/lib/commonjs/ActionType.js.map +1 -0
- package/lib/commonjs/GestureHandlerRootView.android.js +6 -6
- package/lib/commonjs/GestureHandlerRootView.android.js.map +1 -1
- package/lib/commonjs/GestureHandlerRootView.js +2 -3
- package/lib/commonjs/GestureHandlerRootView.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.js +4 -2
- package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.web.js +1 -1
- package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/commonjs/components/DrawerLayout.js +2 -2
- package/lib/commonjs/components/DrawerLayout.js.map +1 -1
- package/lib/commonjs/components/GestureHandlerButton.js +5 -2
- package/lib/commonjs/components/GestureHandlerButton.js.map +1 -1
- package/lib/commonjs/components/Swipeable.js +22 -20
- package/lib/commonjs/components/Swipeable.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableOpacity.js +3 -1
- package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
- package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js +21 -0
- package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -0
- package/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js +21 -0
- package/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js.map +1 -0
- package/lib/commonjs/getShadowNodeFromRef.js +24 -0
- package/lib/commonjs/getShadowNodeFromRef.js.map +1 -0
- package/lib/commonjs/getShadowNodeFromRef.web.js +15 -0
- package/lib/commonjs/getShadowNodeFromRef.web.js.map +1 -0
- package/lib/commonjs/handlers/FlingGestureHandler.js +4 -2
- package/lib/commonjs/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/ForceTouchGestureHandler.js +8 -4
- package/lib/commonjs/handlers/ForceTouchGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/LongPressGestureHandler.js +4 -2
- package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/NativeViewGestureHandler.js +4 -2
- package/lib/commonjs/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/PanGestureHandler.js +4 -2
- package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/PinchGestureHandler.js +4 -2
- package/lib/commonjs/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/RotationGestureHandler.js +4 -2
- package/lib/commonjs/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/TapGestureHandler.js +4 -2
- package/lib/commonjs/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/createHandler.js +63 -9
- package/lib/commonjs/handlers/createHandler.js.map +1 -1
- package/lib/commonjs/handlers/createNativeWrapper.js +6 -2
- package/lib/commonjs/handlers/createNativeWrapper.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector.js +84 -32
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/commonjs/handlers/gestures/eventReceiver.js +25 -8
- package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -1
- package/lib/commonjs/handlers/gestures/forceTouchGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gesture.js +16 -1
- package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureStateManager.js +7 -4
- package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -1
- package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/pinchGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/reanimatedWrapper.js +4 -1
- package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -1
- package/lib/commonjs/handlers/handlersRegistry.js +42 -6
- package/lib/commonjs/handlers/handlersRegistry.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/init.js +10 -0
- package/lib/commonjs/init.js.map +1 -1
- package/lib/commonjs/jestUtils/index.js +20 -0
- package/lib/commonjs/jestUtils/index.js.map +1 -0
- package/lib/commonjs/jestUtils/jestUtils.js +375 -0
- package/lib/commonjs/jestUtils/jestUtils.js.map +1 -0
- package/lib/commonjs/utils.js +38 -0
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/module/ActionType.js +7 -0
- package/lib/module/ActionType.js.map +1 -0
- package/lib/module/GestureHandlerRootView.android.js +5 -6
- package/lib/module/GestureHandlerRootView.android.js.map +1 -1
- package/lib/module/GestureHandlerRootView.js +2 -3
- package/lib/module/GestureHandlerRootView.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.js +3 -2
- package/lib/module/RNGestureHandlerModule.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.web.js +1 -1
- package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/module/components/DrawerLayout.js +2 -2
- package/lib/module/components/DrawerLayout.js.map +1 -1
- package/lib/module/components/GestureHandlerButton.js +4 -2
- package/lib/module/components/GestureHandlerButton.js.map +1 -1
- package/lib/module/components/Swipeable.js +22 -20
- package/lib/module/components/Swipeable.js.map +1 -1
- package/lib/module/components/touchables/TouchableOpacity.js +4 -2
- package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
- package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js +9 -0
- package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -0
- package/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js +9 -0
- package/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js.map +1 -0
- package/lib/module/getShadowNodeFromRef.js +17 -0
- package/lib/module/getShadowNodeFromRef.js.map +1 -0
- package/lib/module/getShadowNodeFromRef.web.js +8 -0
- package/lib/module/getShadowNodeFromRef.web.js.map +1 -0
- package/lib/module/handlers/FlingGestureHandler.js +2 -1
- package/lib/module/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/handlers/ForceTouchGestureHandler.js +5 -3
- package/lib/module/handlers/ForceTouchGestureHandler.js.map +1 -1
- package/lib/module/handlers/LongPressGestureHandler.js +2 -1
- package/lib/module/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/module/handlers/NativeViewGestureHandler.js +2 -1
- package/lib/module/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/handlers/PanGestureHandler.js +2 -1
- package/lib/module/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/handlers/PinchGestureHandler.js +2 -1
- package/lib/module/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/module/handlers/RotationGestureHandler.js +2 -1
- package/lib/module/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/module/handlers/TapGestureHandler.js +2 -1
- package/lib/module/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/handlers/createHandler.js +62 -10
- package/lib/module/handlers/createHandler.js.map +1 -1
- package/lib/module/handlers/createNativeWrapper.js +6 -2
- package/lib/module/handlers/createNativeWrapper.js.map +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector.js +79 -32
- package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/module/handlers/gestures/eventReceiver.js +25 -7
- package/lib/module/handlers/gestures/eventReceiver.js.map +1 -1
- package/lib/module/handlers/gestures/forceTouchGesture.js.map +1 -1
- package/lib/module/handlers/gestures/gesture.js +16 -1
- package/lib/module/handlers/gestures/gesture.js.map +1 -1
- package/lib/module/handlers/gestures/gestureStateManager.js +6 -4
- package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -1
- package/lib/module/handlers/gestures/panGesture.js.map +1 -1
- package/lib/module/handlers/gestures/pinchGesture.js.map +1 -1
- package/lib/module/handlers/gestures/reanimatedWrapper.js +2 -1
- package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -1
- package/lib/module/handlers/handlersRegistry.js +34 -6
- package/lib/module/handlers/handlersRegistry.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/init.js +6 -0
- package/lib/module/init.js.map +1 -1
- package/lib/module/jestUtils/index.js +2 -0
- package/lib/module/jestUtils/index.js.map +1 -0
- package/lib/module/jestUtils/jestUtils.js +350 -0
- package/lib/module/jestUtils/jestUtils.js.map +1 -0
- package/lib/module/utils.js +28 -0
- package/lib/module/utils.js.map +1 -1
- package/lib/typescript/ActionType.d.ts +7 -0
- package/lib/typescript/GestureHandlerRootView.android.d.ts +5 -2
- package/lib/typescript/GestureHandlerRootView.d.ts +1 -1
- package/lib/typescript/RNGestureHandlerModule.d.ts +3 -1
- package/lib/typescript/RNGestureHandlerModule.web.d.ts +2 -1
- package/lib/typescript/components/GestureHandlerButton.d.ts +2 -2
- package/lib/typescript/components/Swipeable.d.ts +12 -4
- package/lib/typescript/components/touchables/TouchableOpacity.d.ts +5 -1
- package/lib/typescript/getShadowNodeFromRef.d.ts +1 -0
- package/lib/typescript/getShadowNodeFromRef.web.d.ts +1 -0
- package/lib/typescript/handlers/FlingGestureHandler.d.ts +1 -0
- package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +2 -1
- package/lib/typescript/handlers/LongPressGestureHandler.d.ts +1 -0
- package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +1 -0
- package/lib/typescript/handlers/PanGestureHandler.d.ts +1 -0
- package/lib/typescript/handlers/PinchGestureHandler.d.ts +1 -0
- package/lib/typescript/handlers/RotationGestureHandler.d.ts +1 -0
- package/lib/typescript/handlers/TapGestureHandler.d.ts +1 -0
- package/lib/typescript/handlers/gestureHandlerCommon.d.ts +2 -4
- package/lib/typescript/handlers/gestures/GestureDetector.d.ts +4 -1
- package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +1 -2
- package/lib/typescript/handlers/gestures/gesture.d.ts +5 -0
- package/lib/typescript/handlers/gestures/panGesture.d.ts +1 -2
- package/lib/typescript/handlers/gestures/pinchGesture.d.ts +1 -2
- package/lib/typescript/handlers/handlersRegistry.d.ts +11 -3
- package/lib/typescript/index.d.ts +3 -0
- package/lib/typescript/jestUtils/index.d.ts +1 -0
- package/lib/typescript/jestUtils/jestUtils.d.ts +28 -0
- package/lib/typescript/utils.d.ts +6 -0
- package/lib/typescript/web/constants.d.ts +0 -1
- package/package.json +40 -16
- package/src/ActionType.ts +9 -0
- package/src/GestureHandlerRootView.android.tsx +14 -14
- package/src/GestureHandlerRootView.tsx +4 -4
- package/src/RNGestureHandlerModule.ts +11 -6
- package/src/RNGestureHandlerModule.web.ts +2 -1
- package/src/components/DrawerLayout.tsx +8 -2
- package/src/components/GestureHandlerButton.tsx +7 -4
- package/src/components/Swipeable.tsx +28 -22
- package/src/components/touchables/TouchableOpacity.tsx +6 -2
- package/src/fabric/RNGestureHandlerButtonNativeComponent.js +27 -0
- package/src/fabric/RNGestureHandlerRootViewNativeComponent.js +19 -0
- package/src/getShadowNodeFromRef.ts +19 -0
- package/src/getShadowNodeFromRef.web.ts +7 -0
- package/src/handlers/FlingGestureHandler.ts +3 -1
- package/src/handlers/ForceTouchGestureHandler.ts +8 -2
- package/src/handlers/LongPressGestureHandler.ts +3 -1
- package/src/handlers/NativeViewGestureHandler.ts +3 -1
- package/src/handlers/PanGestureHandler.ts +3 -1
- package/src/handlers/PinchGestureHandler.ts +3 -1
- package/src/handlers/RotationGestureHandler.ts +3 -1
- package/src/handlers/TapGestureHandler.ts +3 -1
- package/src/handlers/createHandler.ts +69 -7
- package/src/handlers/createNativeWrapper.tsx +7 -1
- package/src/handlers/gestureHandlerCommon.ts +2 -5
- package/src/handlers/gestures/GestureDetector.tsx +110 -37
- package/src/handlers/gestures/eventReceiver.ts +23 -19
- package/src/handlers/gestures/forceTouchGesture.ts +1 -1
- package/src/handlers/gestures/gesture.ts +21 -1
- package/src/handlers/gestures/gestureStateManager.ts +9 -12
- package/src/handlers/gestures/panGesture.ts +1 -1
- package/src/handlers/gestures/pinchGesture.ts +1 -1
- package/src/handlers/gestures/reanimatedWrapper.ts +4 -1
- package/src/handlers/handlersRegistry.ts +44 -6
- package/src/index.ts +3 -0
- package/src/init.ts +6 -0
- package/src/jestUtils/index.ts +1 -0
- package/src/jestUtils/jestUtils.ts +506 -0
- package/src/utils.ts +38 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/BaseGestureHandlerInteractionController.kt +0 -18
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistryImpl.kt +0 -21
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerPackage.kt +0 -17
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
The MIT License (MIT)
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2016
|
|
3
|
+
Copyright (c) 2016 Software Mansion <swmansion.com>
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
package/README.md
CHANGED
|
@@ -11,6 +11,10 @@ It makes touch interactions and gesture tracking not only smooth, but also depen
|
|
|
11
11
|
|
|
12
12
|
Check [getting started](https://docs.swmansion.com/react-native-gesture-handler/docs/#installation) section of our docs for the detailed installation instructions.
|
|
13
13
|
|
|
14
|
+
## Fabric
|
|
15
|
+
|
|
16
|
+
To learn how to use `react-native-gesture-handler` with Fabric architecture, head over to [Fabric README](README-Fabric.md). Instructions on how to run Fabric Example within this repo can be found in the [FabricExample README](FabricExample/README.md).
|
|
17
|
+
|
|
14
18
|
## Documentation
|
|
15
19
|
|
|
16
20
|
Check out our dedicated documentation page for info about this library, API reference and more: [https://docs.swmansion.com/react-native-gesture-handler/docs/](https://docs.swmansion.com/react-native-gesture-handler/docs/)
|
|
@@ -31,7 +35,7 @@ Run `yarn android` or `yarn ios` (depending on which platform you want to run th
|
|
|
31
35
|
|
|
32
36
|
You will need to have an Android or iOS device or emulator connected as well as `react-native-cli` package installed globally.
|
|
33
37
|
|
|
34
|
-
## React
|
|
38
|
+
## React Native Support
|
|
35
39
|
|
|
36
40
|
| version | react-native version |
|
|
37
41
|
| ------- | -------------------- |
|
package/RNGestureHandler.podspec
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
require "json"
|
|
2
2
|
|
|
3
|
+
fabric_enabled = ENV['RCT_NEW_ARCH_ENABLED']
|
|
4
|
+
|
|
3
5
|
Pod::Spec.new do |s|
|
|
4
6
|
# NPM package specification
|
|
5
7
|
package = JSON.parse(File.read(File.join(File.dirname(__FILE__), "package.json")))
|
|
@@ -10,10 +12,32 @@ Pod::Spec.new do |s|
|
|
|
10
12
|
s.homepage = "https://github.com/software-mansion/react-native-gesture-handler"
|
|
11
13
|
s.license = "MIT"
|
|
12
14
|
s.author = { package["author"]["name"] => package["author"]["email"] }
|
|
13
|
-
s.platforms = { :ios => "9.0", :tvos => "9.0" }
|
|
14
15
|
s.source = { :git => "https://github.com/software-mansion/react-native-gesture-handler", :tag => "#{s.version}" }
|
|
15
|
-
s.source_files = "ios/**/*.{h,m}"
|
|
16
|
+
s.source_files = "ios/**/*.{h,m,mm}"
|
|
17
|
+
s.requires_arc = true
|
|
18
|
+
|
|
19
|
+
if fabric_enabled
|
|
20
|
+
# folly_version must match the version used in React Native
|
|
21
|
+
# See folly_version in react-native/React/FBReactNativeSpec/FBReactNativeSpec.podspec
|
|
22
|
+
folly_version = '2021.06.28.00-v2'
|
|
23
|
+
folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32'
|
|
24
|
+
|
|
25
|
+
s.pod_target_xcconfig = {
|
|
26
|
+
'HEADER_SEARCH_PATHS' => '"$(PODS_ROOT)/boost" "$(PODS_ROOT)/boost-for-react-native" "$(PODS_ROOT)/RCT-Folly"'
|
|
27
|
+
}
|
|
28
|
+
s.platforms = { ios: '11.0', tvos: '11.0' }
|
|
29
|
+
s.compiler_flags = folly_compiler_flags + ' -DRN_FABRIC_ENABLED'
|
|
16
30
|
|
|
17
|
-
|
|
31
|
+
s.dependency "React"
|
|
32
|
+
s.dependency "React-RCTFabric" # This is for fabric component
|
|
33
|
+
s.dependency "React-Codegen"
|
|
34
|
+
s.dependency "RCT-Folly", folly_version
|
|
35
|
+
s.dependency "RCTRequired"
|
|
36
|
+
s.dependency "RCTTypeSafety"
|
|
37
|
+
s.dependency "ReactCommon/turbomodule/core"
|
|
38
|
+
else
|
|
39
|
+
s.platforms = { :ios => "9.0", :tvos => "9.0" }
|
|
18
40
|
|
|
41
|
+
s.dependency "React-Core"
|
|
42
|
+
end
|
|
19
43
|
end
|
package/android/build.gradle
CHANGED
|
@@ -12,6 +12,17 @@ buildscript {
|
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
def isNewArchitectureEnabled() {
|
|
16
|
+
// To opt-in for the New Architecture, you can either:
|
|
17
|
+
// - Set `newArchEnabled` to true inside the `gradle.properties` file
|
|
18
|
+
// - Invoke gradle with `-newArchEnabled=true`
|
|
19
|
+
// - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true`
|
|
20
|
+
return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
if (isNewArchitectureEnabled()) {
|
|
24
|
+
apply plugin: 'com.facebook.react'
|
|
25
|
+
}
|
|
15
26
|
apply plugin: 'com.android.library'
|
|
16
27
|
apply plugin: 'kotlin-android'
|
|
17
28
|
|
|
@@ -45,18 +56,62 @@ android {
|
|
|
45
56
|
targetSdkVersion safeExtGet('targetSdkVersion', 28)
|
|
46
57
|
versionCode 1
|
|
47
58
|
versionName "1.0"
|
|
59
|
+
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
|
|
60
|
+
if (isNewArchitectureEnabled()) {
|
|
61
|
+
var appProject = rootProject.allprojects.find {it.plugins.hasPlugin('com.android.application')}
|
|
62
|
+
externalNativeBuild {
|
|
63
|
+
ndkBuild {
|
|
64
|
+
arguments "APP_PLATFORM=android-21",
|
|
65
|
+
"APP_STL=c++_shared",
|
|
66
|
+
"NDK_TOOLCHAIN_VERSION=clang",
|
|
67
|
+
"GENERATED_SRC_DIR=${appProject.buildDir}/generated/source",
|
|
68
|
+
"PROJECT_BUILD_DIR=${appProject.buildDir}",
|
|
69
|
+
"REACT_ANDROID_DIR=${appProject.rootDir}/../node_modules/react-native/ReactAndroid",
|
|
70
|
+
"REACT_ANDROID_BUILD_DIR=${appProject.rootDir}/../node_modules/react-native/ReactAndroid/build"
|
|
71
|
+
cFlags "-Wall", "-Werror", "-fexceptions", "-frtti", "-DWITH_INSPECTOR=1"
|
|
72
|
+
cppFlags "-std=c++17"
|
|
73
|
+
targets "rngesturehandler_modules"
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
if (isNewArchitectureEnabled()) {
|
|
80
|
+
externalNativeBuild {
|
|
81
|
+
ndkBuild {
|
|
82
|
+
path "src/main/jni/Android.mk"
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
packagingOptions {
|
|
88
|
+
// For some reason gradle only complains about the duplicated version of libreact_render libraries
|
|
89
|
+
// while there are more libraries copied in intermediates folder of the lib build directory, we exclude
|
|
90
|
+
// only the ones that make the build fail (ideally we should only include librngesturehandler_modules but we
|
|
91
|
+
// are only allowed to specify exclude patterns)
|
|
92
|
+
exclude "**/libreact_render*.so"
|
|
48
93
|
}
|
|
49
94
|
|
|
50
95
|
// Include "lib/" as sources, unfortunately react-native link can't handle
|
|
51
96
|
// setting up alternative gradle modules. We still have "lib" defined as a
|
|
52
97
|
// standalone gradle module just to be used in AndroidNativeExample
|
|
53
|
-
sourceSets {
|
|
54
|
-
|
|
98
|
+
sourceSets.main {
|
|
99
|
+
java {
|
|
100
|
+
srcDirs += 'lib/src/main/java'
|
|
55
101
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
102
|
+
// Include "common/" only when it's not provided by Reanimated to mitigate
|
|
103
|
+
// multiple definitions of the same class preventing build
|
|
104
|
+
if (!shouldUseCommonInterfaceFromReanimated()) {
|
|
105
|
+
srcDirs += 'common/src/main/java'
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (isNewArchitectureEnabled()) {
|
|
109
|
+
srcDirs += 'src/fabric/java'
|
|
110
|
+
} else {
|
|
111
|
+
// this folder also includes files from codegen so the library can compile with
|
|
112
|
+
// codegen turned off
|
|
113
|
+
srcDirs += 'src/paper/java'
|
|
114
|
+
}
|
|
60
115
|
}
|
|
61
116
|
}
|
|
62
117
|
}
|
|
@@ -65,12 +120,30 @@ def kotlin_version = safeExtGet('kotlinVersion', project.properties['RNGH_kotlin
|
|
|
65
120
|
|
|
66
121
|
dependencies {
|
|
67
122
|
//noinspection GradleDynamicVersion
|
|
123
|
+
if (isNewArchitectureEnabled()) {
|
|
124
|
+
implementation project(':ReactAndroid')
|
|
125
|
+
} else {
|
|
126
|
+
implementation 'com.facebook.react:react-native:+'
|
|
127
|
+
}
|
|
128
|
+
|
|
68
129
|
if (shouldUseCommonInterfaceFromReanimated()) {
|
|
69
130
|
// Include Reanimated as dependency to load the common interface
|
|
70
|
-
implementation project(':react-native-reanimated')
|
|
131
|
+
implementation (project(':react-native-reanimated')) {
|
|
132
|
+
exclude group:'com.facebook.fbjni' // resolves "Duplicate class com.facebook.jni.CppException"
|
|
133
|
+
}
|
|
71
134
|
}
|
|
72
|
-
|
|
135
|
+
|
|
73
136
|
implementation 'androidx.appcompat:appcompat:1.2.0'
|
|
74
137
|
implementation "androidx.core:core-ktx:1.6.0"
|
|
75
138
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
76
139
|
}
|
|
140
|
+
|
|
141
|
+
if (isNewArchitectureEnabled()) {
|
|
142
|
+
react {
|
|
143
|
+
reactRoot = rootProject.file("../node_modules/react-native/")
|
|
144
|
+
jsRootDir = file("../src/fabric/")
|
|
145
|
+
codegenDir = rootProject.file("../node_modules/react-native-codegen/")
|
|
146
|
+
libraryName = "rngesturehandler"
|
|
147
|
+
codegenJavaPackageName = "com.swmansion.gesturehandler"
|
|
148
|
+
}
|
|
149
|
+
}
|
|
@@ -34,7 +34,7 @@ open class GestureHandler<ConcreteGestureHandlerT : GestureHandler<ConcreteGestu
|
|
|
34
34
|
private set
|
|
35
35
|
var isEnabled = true
|
|
36
36
|
private set
|
|
37
|
-
var
|
|
37
|
+
var actionType = 0
|
|
38
38
|
|
|
39
39
|
var changedTouchesPayload: WritableArray? = null
|
|
40
40
|
private set
|
|
@@ -700,6 +700,10 @@ open class GestureHandler<ConcreteGestureHandlerT : GestureHandler<ConcreteGestu
|
|
|
700
700
|
const val DIRECTION_LEFT = 2
|
|
701
701
|
const val DIRECTION_UP = 4
|
|
702
702
|
const val DIRECTION_DOWN = 8
|
|
703
|
+
const val ACTION_TYPE_REANIMATED_WORKLET = 1
|
|
704
|
+
const val ACTION_TYPE_NATIVE_ANIMATED_EVENT = 2
|
|
705
|
+
const val ACTION_TYPE_JS_FUNCTION_OLD_API = 3
|
|
706
|
+
const val ACTION_TYPE_JS_FUNCTION_NEW_API = 4
|
|
703
707
|
private const val MAX_POINTERS_COUNT = 12
|
|
704
708
|
private lateinit var pointerProps: Array<PointerProperties?>
|
|
705
709
|
private lateinit var pointerCoords: Array<PointerCoords?>
|
package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt
CHANGED
|
@@ -383,11 +383,13 @@ class GestureHandlerOrchestrator(
|
|
|
383
383
|
val parentViewGroup: ViewGroup = parent
|
|
384
384
|
|
|
385
385
|
handlerRegistry.getHandlersForView(parent)?.let {
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
386
|
+
synchronized(it) {
|
|
387
|
+
for (handler in it) {
|
|
388
|
+
if (handler.isEnabled && handler.isWithinBounds(view, coords[0], coords[1])) {
|
|
389
|
+
found = true
|
|
390
|
+
recordHandlerIfNotPresent(handler, parentViewGroup)
|
|
391
|
+
handler.startTrackingPointer(pointerId)
|
|
392
|
+
}
|
|
391
393
|
}
|
|
392
394
|
}
|
|
393
395
|
}
|
|
@@ -402,13 +404,13 @@ class GestureHandlerOrchestrator(
|
|
|
402
404
|
private fun recordViewHandlersForPointer(view: View, coords: FloatArray, pointerId: Int): Boolean {
|
|
403
405
|
var found = false
|
|
404
406
|
handlerRegistry.getHandlersForView(view)?.let {
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
407
|
+
synchronized(it) {
|
|
408
|
+
for (handler in it) {
|
|
409
|
+
if (handler.isEnabled && handler.isWithinBounds(view, coords[0], coords[1])) {
|
|
410
|
+
recordHandlerIfNotPresent(handler, view)
|
|
411
|
+
handler.startTrackingPointer(pointerId)
|
|
412
|
+
found = true
|
|
413
|
+
}
|
|
412
414
|
}
|
|
413
415
|
}
|
|
414
416
|
}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
package com.swmansion.gesturehandler
|
|
2
2
|
|
|
3
3
|
import android.view.MotionEvent
|
|
4
|
-
import android.view.ScaleGestureDetector
|
|
5
|
-
import android.view.ScaleGestureDetector.OnScaleGestureListener
|
|
6
4
|
import android.view.ViewConfiguration
|
|
7
5
|
import kotlin.math.abs
|
|
8
6
|
|
|
@@ -19,7 +17,7 @@ class PinchGestureHandler : GestureHandler<PinchGestureHandler>() {
|
|
|
19
17
|
private var scaleGestureDetector: ScaleGestureDetector? = null
|
|
20
18
|
private var startingSpan = 0f
|
|
21
19
|
private var spanSlop = 0f
|
|
22
|
-
private val gestureListener: OnScaleGestureListener = object : OnScaleGestureListener {
|
|
20
|
+
private val gestureListener: ScaleGestureDetector.OnScaleGestureListener = object : ScaleGestureDetector.OnScaleGestureListener {
|
|
23
21
|
override fun onScale(detector: ScaleGestureDetector): Boolean {
|
|
24
22
|
val prevScaleFactor: Double = scale
|
|
25
23
|
scale *= detector.scaleFactor.toDouble()
|
|
@@ -28,7 +26,7 @@ class PinchGestureHandler : GestureHandler<PinchGestureHandler>() {
|
|
|
28
26
|
velocity = (scale - prevScaleFactor) / delta
|
|
29
27
|
}
|
|
30
28
|
if (abs(startingSpan - detector.currentSpan) >= spanSlop
|
|
31
|
-
|
|
29
|
+
&& state == STATE_BEGAN) {
|
|
32
30
|
activate()
|
|
33
31
|
}
|
|
34
32
|
return true
|