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.
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