react-native-gesture-handler 2.2.0 → 2.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (260) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +5 -1
  3. package/RNGestureHandler.podspec +27 -3
  4. package/android/build.gradle +81 -8
  5. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt +5 -1
  6. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt +14 -12
  7. package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.kt +2 -4
  8. package/android/lib/src/main/java/com/swmansion/gesturehandler/ScaleGestureDetector.java +558 -0
  9. package/android/src/fabric/java/com/swmansion/gesturehandler/RNGestureHandlerComponentsRegistry.java +29 -0
  10. package/android/src/fabric/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +12 -0
  11. package/android/src/main/AndroidManifest.xml +1 -1
  12. package/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt +29 -0
  13. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +40 -13
  14. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +111 -47
  15. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt +9 -4
  16. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +1 -1
  17. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt +17 -2
  18. package/android/src/main/jni/Android.mk +53 -0
  19. package/android/src/main/jni/OnLoad.cpp +9 -0
  20. package/android/src/main/jni/RNGestureHandlerComponentsRegistry.cpp +71 -0
  21. package/android/src/main/jni/RNGestureHandlerComponentsRegistry.h +34 -0
  22. package/android/src/main/jni/cpp-adapter.cpp +41 -0
  23. package/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java +47 -0
  24. package/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java +22 -0
  25. package/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerDelegate.java +25 -0
  26. package/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerInterface.java +16 -0
  27. package/android/src/paper/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +13 -0
  28. package/ios/Handlers/RNFlingHandler.m +2 -0
  29. package/ios/Handlers/RNPanHandler.m +2 -0
  30. package/ios/Handlers/RNPinchHandler.m +2 -0
  31. package/ios/Handlers/RNRotationHandler.m +2 -0
  32. package/ios/RNGestureHandler.h +3 -8
  33. package/ios/RNGestureHandler.m +2 -10
  34. package/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcuserdata/jakubpiasecki.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  35. package/ios/RNGestureHandlerActionType.h +8 -0
  36. package/ios/RNGestureHandlerButtonComponentView.h +17 -0
  37. package/ios/RNGestureHandlerButtonComponentView.mm +48 -0
  38. package/ios/RNGestureHandlerButtonManager.h +5 -0
  39. package/ios/RNGestureHandlerButtonManager.m +30 -0
  40. package/ios/RNGestureHandlerManager.h +2 -4
  41. package/ios/{RNGestureHandlerManager.m → RNGestureHandlerManager.mm} +92 -20
  42. package/ios/{RNGestureHandlerModule.m → RNGestureHandlerModule.mm} +91 -36
  43. package/ios/RNGestureHandlerRegistry.h +1 -2
  44. package/ios/RNGestureHandlerRegistry.m +2 -11
  45. package/ios/RNGestureHandlerRootViewComponentView.mm +21 -0
  46. package/jest-utils/package.json +6 -0
  47. package/lib/commonjs/ActionType.js +15 -0
  48. package/lib/commonjs/ActionType.js.map +1 -0
  49. package/lib/commonjs/GestureHandlerRootView.android.js +6 -6
  50. package/lib/commonjs/GestureHandlerRootView.android.js.map +1 -1
  51. package/lib/commonjs/GestureHandlerRootView.js +2 -3
  52. package/lib/commonjs/GestureHandlerRootView.js.map +1 -1
  53. package/lib/commonjs/RNGestureHandlerModule.js +4 -2
  54. package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
  55. package/lib/commonjs/RNGestureHandlerModule.web.js +1 -1
  56. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
  57. package/lib/commonjs/components/DrawerLayout.js +2 -2
  58. package/lib/commonjs/components/DrawerLayout.js.map +1 -1
  59. package/lib/commonjs/components/GestureHandlerButton.js +5 -2
  60. package/lib/commonjs/components/GestureHandlerButton.js.map +1 -1
  61. package/lib/commonjs/components/Swipeable.js +22 -20
  62. package/lib/commonjs/components/Swipeable.js.map +1 -1
  63. package/lib/commonjs/components/touchables/TouchableOpacity.js +3 -1
  64. package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
  65. package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js +21 -0
  66. package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -0
  67. package/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js +21 -0
  68. package/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js.map +1 -0
  69. package/lib/commonjs/getShadowNodeFromRef.js +24 -0
  70. package/lib/commonjs/getShadowNodeFromRef.js.map +1 -0
  71. package/lib/commonjs/getShadowNodeFromRef.web.js +15 -0
  72. package/lib/commonjs/getShadowNodeFromRef.web.js.map +1 -0
  73. package/lib/commonjs/handlers/FlingGestureHandler.js +4 -2
  74. package/lib/commonjs/handlers/FlingGestureHandler.js.map +1 -1
  75. package/lib/commonjs/handlers/ForceTouchGestureHandler.js +8 -4
  76. package/lib/commonjs/handlers/ForceTouchGestureHandler.js.map +1 -1
  77. package/lib/commonjs/handlers/LongPressGestureHandler.js +4 -2
  78. package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -1
  79. package/lib/commonjs/handlers/NativeViewGestureHandler.js +4 -2
  80. package/lib/commonjs/handlers/NativeViewGestureHandler.js.map +1 -1
  81. package/lib/commonjs/handlers/PanGestureHandler.js +4 -2
  82. package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -1
  83. package/lib/commonjs/handlers/PinchGestureHandler.js +4 -2
  84. package/lib/commonjs/handlers/PinchGestureHandler.js.map +1 -1
  85. package/lib/commonjs/handlers/RotationGestureHandler.js +4 -2
  86. package/lib/commonjs/handlers/RotationGestureHandler.js.map +1 -1
  87. package/lib/commonjs/handlers/TapGestureHandler.js +4 -2
  88. package/lib/commonjs/handlers/TapGestureHandler.js.map +1 -1
  89. package/lib/commonjs/handlers/createHandler.js +63 -9
  90. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  91. package/lib/commonjs/handlers/createNativeWrapper.js +6 -2
  92. package/lib/commonjs/handlers/createNativeWrapper.js.map +1 -1
  93. package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
  94. package/lib/commonjs/handlers/gestures/GestureDetector.js +84 -32
  95. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
  96. package/lib/commonjs/handlers/gestures/eventReceiver.js +25 -8
  97. package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -1
  98. package/lib/commonjs/handlers/gestures/forceTouchGesture.js.map +1 -1
  99. package/lib/commonjs/handlers/gestures/gesture.js +16 -1
  100. package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
  101. package/lib/commonjs/handlers/gestures/gestureStateManager.js +7 -4
  102. package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -1
  103. package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -1
  104. package/lib/commonjs/handlers/gestures/pinchGesture.js.map +1 -1
  105. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js +4 -1
  106. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -1
  107. package/lib/commonjs/handlers/handlersRegistry.js +42 -6
  108. package/lib/commonjs/handlers/handlersRegistry.js.map +1 -1
  109. package/lib/commonjs/index.js.map +1 -1
  110. package/lib/commonjs/init.js +10 -0
  111. package/lib/commonjs/init.js.map +1 -1
  112. package/lib/commonjs/jestUtils/index.js +20 -0
  113. package/lib/commonjs/jestUtils/index.js.map +1 -0
  114. package/lib/commonjs/jestUtils/jestUtils.js +375 -0
  115. package/lib/commonjs/jestUtils/jestUtils.js.map +1 -0
  116. package/lib/commonjs/utils.js +38 -0
  117. package/lib/commonjs/utils.js.map +1 -1
  118. package/lib/module/ActionType.js +7 -0
  119. package/lib/module/ActionType.js.map +1 -0
  120. package/lib/module/GestureHandlerRootView.android.js +5 -6
  121. package/lib/module/GestureHandlerRootView.android.js.map +1 -1
  122. package/lib/module/GestureHandlerRootView.js +2 -3
  123. package/lib/module/GestureHandlerRootView.js.map +1 -1
  124. package/lib/module/RNGestureHandlerModule.js +3 -2
  125. package/lib/module/RNGestureHandlerModule.js.map +1 -1
  126. package/lib/module/RNGestureHandlerModule.web.js +1 -1
  127. package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
  128. package/lib/module/components/DrawerLayout.js +2 -2
  129. package/lib/module/components/DrawerLayout.js.map +1 -1
  130. package/lib/module/components/GestureHandlerButton.js +4 -2
  131. package/lib/module/components/GestureHandlerButton.js.map +1 -1
  132. package/lib/module/components/Swipeable.js +22 -20
  133. package/lib/module/components/Swipeable.js.map +1 -1
  134. package/lib/module/components/touchables/TouchableOpacity.js +4 -2
  135. package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
  136. package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js +9 -0
  137. package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -0
  138. package/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js +9 -0
  139. package/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js.map +1 -0
  140. package/lib/module/getShadowNodeFromRef.js +17 -0
  141. package/lib/module/getShadowNodeFromRef.js.map +1 -0
  142. package/lib/module/getShadowNodeFromRef.web.js +8 -0
  143. package/lib/module/getShadowNodeFromRef.web.js.map +1 -0
  144. package/lib/module/handlers/FlingGestureHandler.js +2 -1
  145. package/lib/module/handlers/FlingGestureHandler.js.map +1 -1
  146. package/lib/module/handlers/ForceTouchGestureHandler.js +5 -3
  147. package/lib/module/handlers/ForceTouchGestureHandler.js.map +1 -1
  148. package/lib/module/handlers/LongPressGestureHandler.js +2 -1
  149. package/lib/module/handlers/LongPressGestureHandler.js.map +1 -1
  150. package/lib/module/handlers/NativeViewGestureHandler.js +2 -1
  151. package/lib/module/handlers/NativeViewGestureHandler.js.map +1 -1
  152. package/lib/module/handlers/PanGestureHandler.js +2 -1
  153. package/lib/module/handlers/PanGestureHandler.js.map +1 -1
  154. package/lib/module/handlers/PinchGestureHandler.js +2 -1
  155. package/lib/module/handlers/PinchGestureHandler.js.map +1 -1
  156. package/lib/module/handlers/RotationGestureHandler.js +2 -1
  157. package/lib/module/handlers/RotationGestureHandler.js.map +1 -1
  158. package/lib/module/handlers/TapGestureHandler.js +2 -1
  159. package/lib/module/handlers/TapGestureHandler.js.map +1 -1
  160. package/lib/module/handlers/createHandler.js +62 -10
  161. package/lib/module/handlers/createHandler.js.map +1 -1
  162. package/lib/module/handlers/createNativeWrapper.js +6 -2
  163. package/lib/module/handlers/createNativeWrapper.js.map +1 -1
  164. package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
  165. package/lib/module/handlers/gestures/GestureDetector.js +79 -32
  166. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
  167. package/lib/module/handlers/gestures/eventReceiver.js +25 -7
  168. package/lib/module/handlers/gestures/eventReceiver.js.map +1 -1
  169. package/lib/module/handlers/gestures/forceTouchGesture.js.map +1 -1
  170. package/lib/module/handlers/gestures/gesture.js +16 -1
  171. package/lib/module/handlers/gestures/gesture.js.map +1 -1
  172. package/lib/module/handlers/gestures/gestureStateManager.js +6 -4
  173. package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -1
  174. package/lib/module/handlers/gestures/panGesture.js.map +1 -1
  175. package/lib/module/handlers/gestures/pinchGesture.js.map +1 -1
  176. package/lib/module/handlers/gestures/reanimatedWrapper.js +2 -1
  177. package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -1
  178. package/lib/module/handlers/handlersRegistry.js +34 -6
  179. package/lib/module/handlers/handlersRegistry.js.map +1 -1
  180. package/lib/module/index.js.map +1 -1
  181. package/lib/module/init.js +6 -0
  182. package/lib/module/init.js.map +1 -1
  183. package/lib/module/jestUtils/index.js +2 -0
  184. package/lib/module/jestUtils/index.js.map +1 -0
  185. package/lib/module/jestUtils/jestUtils.js +350 -0
  186. package/lib/module/jestUtils/jestUtils.js.map +1 -0
  187. package/lib/module/utils.js +28 -0
  188. package/lib/module/utils.js.map +1 -1
  189. package/lib/typescript/ActionType.d.ts +7 -0
  190. package/lib/typescript/GestureHandlerRootView.android.d.ts +5 -2
  191. package/lib/typescript/GestureHandlerRootView.d.ts +1 -1
  192. package/lib/typescript/RNGestureHandlerModule.d.ts +3 -1
  193. package/lib/typescript/RNGestureHandlerModule.web.d.ts +2 -1
  194. package/lib/typescript/components/GestureHandlerButton.d.ts +2 -2
  195. package/lib/typescript/components/Swipeable.d.ts +12 -4
  196. package/lib/typescript/components/touchables/TouchableOpacity.d.ts +5 -1
  197. package/lib/typescript/getShadowNodeFromRef.d.ts +1 -0
  198. package/lib/typescript/getShadowNodeFromRef.web.d.ts +1 -0
  199. package/lib/typescript/handlers/FlingGestureHandler.d.ts +1 -0
  200. package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +2 -1
  201. package/lib/typescript/handlers/LongPressGestureHandler.d.ts +1 -0
  202. package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +1 -0
  203. package/lib/typescript/handlers/PanGestureHandler.d.ts +1 -0
  204. package/lib/typescript/handlers/PinchGestureHandler.d.ts +1 -0
  205. package/lib/typescript/handlers/RotationGestureHandler.d.ts +1 -0
  206. package/lib/typescript/handlers/TapGestureHandler.d.ts +1 -0
  207. package/lib/typescript/handlers/gestureHandlerCommon.d.ts +2 -4
  208. package/lib/typescript/handlers/gestures/GestureDetector.d.ts +4 -1
  209. package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +1 -2
  210. package/lib/typescript/handlers/gestures/gesture.d.ts +5 -0
  211. package/lib/typescript/handlers/gestures/panGesture.d.ts +1 -2
  212. package/lib/typescript/handlers/gestures/pinchGesture.d.ts +1 -2
  213. package/lib/typescript/handlers/handlersRegistry.d.ts +11 -3
  214. package/lib/typescript/index.d.ts +3 -0
  215. package/lib/typescript/jestUtils/index.d.ts +1 -0
  216. package/lib/typescript/jestUtils/jestUtils.d.ts +28 -0
  217. package/lib/typescript/utils.d.ts +6 -0
  218. package/lib/typescript/web/constants.d.ts +0 -1
  219. package/package.json +40 -16
  220. package/src/ActionType.ts +9 -0
  221. package/src/GestureHandlerRootView.android.tsx +14 -14
  222. package/src/GestureHandlerRootView.tsx +4 -4
  223. package/src/RNGestureHandlerModule.ts +11 -6
  224. package/src/RNGestureHandlerModule.web.ts +2 -1
  225. package/src/components/DrawerLayout.tsx +8 -2
  226. package/src/components/GestureHandlerButton.tsx +7 -4
  227. package/src/components/Swipeable.tsx +28 -22
  228. package/src/components/touchables/TouchableOpacity.tsx +6 -2
  229. package/src/fabric/RNGestureHandlerButtonNativeComponent.js +27 -0
  230. package/src/fabric/RNGestureHandlerRootViewNativeComponent.js +19 -0
  231. package/src/getShadowNodeFromRef.ts +19 -0
  232. package/src/getShadowNodeFromRef.web.ts +7 -0
  233. package/src/handlers/FlingGestureHandler.ts +3 -1
  234. package/src/handlers/ForceTouchGestureHandler.ts +8 -2
  235. package/src/handlers/LongPressGestureHandler.ts +3 -1
  236. package/src/handlers/NativeViewGestureHandler.ts +3 -1
  237. package/src/handlers/PanGestureHandler.ts +3 -1
  238. package/src/handlers/PinchGestureHandler.ts +3 -1
  239. package/src/handlers/RotationGestureHandler.ts +3 -1
  240. package/src/handlers/TapGestureHandler.ts +3 -1
  241. package/src/handlers/createHandler.ts +69 -7
  242. package/src/handlers/createNativeWrapper.tsx +7 -1
  243. package/src/handlers/gestureHandlerCommon.ts +2 -5
  244. package/src/handlers/gestures/GestureDetector.tsx +110 -37
  245. package/src/handlers/gestures/eventReceiver.ts +23 -19
  246. package/src/handlers/gestures/forceTouchGesture.ts +1 -1
  247. package/src/handlers/gestures/gesture.ts +21 -1
  248. package/src/handlers/gestures/gestureStateManager.ts +9 -12
  249. package/src/handlers/gestures/panGesture.ts +1 -1
  250. package/src/handlers/gestures/pinchGesture.ts +1 -1
  251. package/src/handlers/gestures/reanimatedWrapper.ts +4 -1
  252. package/src/handlers/handlersRegistry.ts +44 -6
  253. package/src/index.ts +3 -0
  254. package/src/init.ts +6 -0
  255. package/src/jestUtils/index.ts +1 -0
  256. package/src/jestUtils/jestUtils.ts +506 -0
  257. package/src/utils.ts +38 -0
  258. package/android/lib/src/main/java/com/swmansion/gesturehandler/BaseGestureHandlerInteractionController.kt +0 -18
  259. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistryImpl.kt +0 -21
  260. 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 Krzysztof Magiera
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 native Support
38
+ ## React Native Support
35
39
 
36
40
  | version | react-native version |
37
41
  | ------- | -------------------- |
@@ -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
- s.dependency "React-Core"
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
@@ -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
- main.java.srcDirs += 'lib/src/main/java'
98
+ sourceSets.main {
99
+ java {
100
+ srcDirs += 'lib/src/main/java'
55
101
 
56
- // Include "common/" only when it's not provided by Reanimated to mitigate
57
- // multiple definitions of the same class preventing build
58
- if (!shouldUseCommonInterfaceFromReanimated()) {
59
- main.java.srcDirs += 'common/src/main/java'
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
- implementation 'com.facebook.react:react-native:+'
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 usesDeviceEvents = false
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?>
@@ -383,11 +383,13 @@ class GestureHandlerOrchestrator(
383
383
  val parentViewGroup: ViewGroup = parent
384
384
 
385
385
  handlerRegistry.getHandlersForView(parent)?.let {
386
- for (handler in it) {
387
- if (handler.isEnabled && handler.isWithinBounds(view, coords[0], coords[1])) {
388
- found = true
389
- recordHandlerIfNotPresent(handler, parentViewGroup)
390
- handler.startTrackingPointer(pointerId)
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
- val size = it.size
406
- for (i in 0 until size) {
407
- val handler = it[i]
408
- if (handler.isEnabled && handler.isWithinBounds(view, coords[0], coords[1])) {
409
- recordHandlerIfNotPresent(handler, view)
410
- handler.startTrackingPointer(pointerId)
411
- found = true
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
- && state == STATE_BEGAN) {
29
+ && state == STATE_BEGAN) {
32
30
  activate()
33
31
  }
34
32
  return true