react-native-gesture-handler 2.7.1 → 2.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (232) hide show
  1. package/RNGestureHandler.podspec +1 -1
  2. package/android/build.gradle +53 -46
  3. package/android/noreanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt +3 -3
  4. package/android/reanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt +7 -7
  5. package/android/src/fabric/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +2 -2
  6. package/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt +3 -3
  7. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/FlingGestureHandler.kt +12 -9
  8. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandler.kt +39 -31
  9. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandlerInteractionController.kt +1 -1
  10. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandlerOrchestrator.kt +28 -19
  11. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandlerRegistry.kt +1 -1
  12. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureUtils.kt +1 -1
  13. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/LongPressGestureHandler.kt +1 -1
  14. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/ManualGestureHandler.kt +1 -1
  15. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/NativeViewGestureHandler.kt +5 -5
  16. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/OnTouchEventListener.kt +1 -1
  17. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/PanGestureHandler.kt +7 -5
  18. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/PinchGestureHandler.kt +11 -4
  19. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/PointerEventsConfig.kt +1 -1
  20. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/RotationGestureDetector.kt +1 -1
  21. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/RotationGestureHandler.kt +7 -2
  22. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/ScaleGestureDetector.java +1 -1
  23. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/TapGestureHandler.kt +3 -3
  24. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/ViewConfigurationHelper.kt +1 -1
  25. package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/react}/Extensions.kt +3 -3
  26. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +8 -6
  27. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt +1 -5
  28. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +20 -8
  29. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt +1 -1
  30. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +3 -3
  31. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +40 -15
  32. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt +2 -2
  33. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +8 -6
  34. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +0 -2
  35. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt +4 -2
  36. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt +7 -7
  37. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt +5 -5
  38. package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt +2 -2
  39. package/android/src/main/jni/CMakeLists.txt +10 -44
  40. package/android/src/main/jni/cpp-adapter.cpp +16 -13
  41. package/android/src/paper/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +5 -5
  42. package/ios/Handlers/RNFlingHandler.m +39 -37
  43. package/ios/Handlers/RNForceTouchHandler.m +19 -17
  44. package/ios/Handlers/RNLongPressHandler.m +20 -22
  45. package/ios/Handlers/RNManualHandler.m +23 -8
  46. package/ios/Handlers/RNNativeViewHandler.mm +92 -88
  47. package/ios/Handlers/RNPanHandler.m +28 -32
  48. package/ios/Handlers/RNPinchHandler.m +9 -10
  49. package/ios/Handlers/RNRotationHandler.m +11 -14
  50. package/ios/Handlers/RNTapHandler.m +26 -26
  51. package/ios/RNGestureHandler.h +31 -24
  52. package/ios/RNGestureHandler.m +278 -273
  53. package/ios/RNGestureHandlerActionType.h +6 -4
  54. package/ios/RNGestureHandlerButton.m +11 -12
  55. package/ios/RNGestureHandlerButtonComponentView.mm +7 -8
  56. package/ios/RNGestureHandlerButtonManager.m +6 -5
  57. package/ios/RNGestureHandlerDirection.h +4 -4
  58. package/ios/RNGestureHandlerEvents.h +3 -4
  59. package/ios/RNGestureHandlerEvents.m +114 -119
  60. package/ios/RNGestureHandlerManager.h +1 -2
  61. package/ios/RNGestureHandlerManager.mm +176 -178
  62. package/ios/RNGestureHandlerModule.h +1 -2
  63. package/ios/RNGestureHandlerModule.mm +126 -122
  64. package/ios/RNGestureHandlerPointerTracker.h +1 -1
  65. package/ios/RNGestureHandlerPointerTracker.m +40 -37
  66. package/ios/RNGestureHandlerRegistry.h +3 -1
  67. package/ios/RNGestureHandlerRegistry.m +24 -22
  68. package/ios/RNGestureHandlerState.h +6 -6
  69. package/ios/RNGestureHandlerStateManager.h +1 -1
  70. package/ios/RNManualActivationRecognizer.m +9 -9
  71. package/ios/RNRootViewGestureRecognizer.m +36 -39
  72. package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -1
  73. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
  74. package/lib/commonjs/RNGestureHandlerModule.windows.js +156 -0
  75. package/lib/commonjs/RNGestureHandlerModule.windows.js.map +1 -0
  76. package/lib/commonjs/components/DrawerLayout.js +1 -0
  77. package/lib/commonjs/components/DrawerLayout.js.map +1 -1
  78. package/lib/commonjs/components/Swipeable.js.map +1 -1
  79. package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
  80. package/lib/commonjs/gestureHandlerRootHOC.js +2 -1
  81. package/lib/commonjs/gestureHandlerRootHOC.js.map +1 -1
  82. package/lib/commonjs/getShadowNodeFromRef.js +2 -2
  83. package/lib/commonjs/getShadowNodeFromRef.js.map +1 -1
  84. package/lib/commonjs/handlers/LongPressGestureHandler.js +3 -1
  85. package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -1
  86. package/lib/commonjs/handlers/TapGestureHandler.js +3 -1
  87. package/lib/commonjs/handlers/TapGestureHandler.js.map +1 -1
  88. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  89. package/lib/commonjs/handlers/gestureHandlerCommon.js +5 -2
  90. package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
  91. package/lib/commonjs/handlers/gestureHandlerTypesCompat.js +4 -0
  92. package/lib/commonjs/handlers/gestures/GestureDetector.js +87 -38
  93. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
  94. package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -1
  95. package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
  96. package/lib/commonjs/handlers/gestures/longPressGesture.js +1 -0
  97. package/lib/commonjs/handlers/gestures/longPressGesture.js.map +1 -1
  98. package/lib/commonjs/handlers/gestures/tapGesture.js +1 -0
  99. package/lib/commonjs/handlers/gestures/tapGesture.js.map +1 -1
  100. package/lib/commonjs/jestUtils/jestUtils.js.map +1 -1
  101. package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
  102. package/lib/commonjs/web/handlers/FlingGestureHandler.js +0 -1
  103. package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
  104. package/lib/commonjs/web/handlers/GestureHandler.js +28 -3
  105. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
  106. package/lib/commonjs/web/handlers/LongPressGestureHandler.js +0 -2
  107. package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
  108. package/lib/commonjs/web/handlers/ManualGestureHandler.js +15 -0
  109. package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -1
  110. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +0 -2
  111. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
  112. package/lib/commonjs/web/handlers/PanGestureHandler.js +0 -5
  113. package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
  114. package/lib/commonjs/web/handlers/PinchGestureHandler.js +0 -1
  115. package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
  116. package/lib/commonjs/web/handlers/RotationGestureHandler.js +0 -1
  117. package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
  118. package/lib/commonjs/web/handlers/TapGestureHandler.js +0 -2
  119. package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
  120. package/lib/commonjs/web/interfaces.js.map +1 -1
  121. package/lib/commonjs/web/tools/InteractionManager.js.map +1 -1
  122. package/lib/commonjs/web_hammer/GestureHandler.js.map +1 -1
  123. package/lib/commonjs/web_hammer/NodeManager.js +4 -1
  124. package/lib/commonjs/web_hammer/NodeManager.js.map +1 -1
  125. package/lib/commonjs/web_hammer/PanGestureHandler.js +25 -6
  126. package/lib/commonjs/web_hammer/PanGestureHandler.js.map +1 -1
  127. package/lib/module/RNGestureHandlerModule.macos.js.map +1 -1
  128. package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
  129. package/lib/module/RNGestureHandlerModule.windows.js +117 -0
  130. package/lib/module/RNGestureHandlerModule.windows.js.map +1 -0
  131. package/lib/module/components/DrawerLayout.js +1 -0
  132. package/lib/module/components/DrawerLayout.js.map +1 -1
  133. package/lib/module/components/Swipeable.js.map +1 -1
  134. package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
  135. package/lib/module/gestureHandlerRootHOC.js +2 -1
  136. package/lib/module/gestureHandlerRootHOC.js.map +1 -1
  137. package/lib/module/getShadowNodeFromRef.js +2 -2
  138. package/lib/module/getShadowNodeFromRef.js.map +1 -1
  139. package/lib/module/handlers/LongPressGestureHandler.js +3 -1
  140. package/lib/module/handlers/LongPressGestureHandler.js.map +1 -1
  141. package/lib/module/handlers/TapGestureHandler.js +3 -1
  142. package/lib/module/handlers/TapGestureHandler.js.map +1 -1
  143. package/lib/module/handlers/createHandler.js.map +1 -1
  144. package/lib/module/handlers/gestureHandlerCommon.js +5 -2
  145. package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
  146. package/lib/module/handlers/gestureHandlerTypesCompat.js +1 -1
  147. package/lib/module/handlers/gestures/GestureDetector.js +89 -39
  148. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
  149. package/lib/module/handlers/gestures/eventReceiver.js.map +1 -1
  150. package/lib/module/handlers/gestures/gesture.js.map +1 -1
  151. package/lib/module/handlers/gestures/longPressGesture.js +1 -0
  152. package/lib/module/handlers/gestures/longPressGesture.js.map +1 -1
  153. package/lib/module/handlers/gestures/tapGesture.js +1 -0
  154. package/lib/module/handlers/gestures/tapGesture.js.map +1 -1
  155. package/lib/module/jestUtils/jestUtils.js.map +1 -1
  156. package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
  157. package/lib/module/web/handlers/FlingGestureHandler.js +0 -1
  158. package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
  159. package/lib/module/web/handlers/GestureHandler.js +28 -3
  160. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  161. package/lib/module/web/handlers/LongPressGestureHandler.js +0 -2
  162. package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
  163. package/lib/module/web/handlers/ManualGestureHandler.js +15 -0
  164. package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -1
  165. package/lib/module/web/handlers/NativeViewGestureHandler.js +0 -2
  166. package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
  167. package/lib/module/web/handlers/PanGestureHandler.js +0 -5
  168. package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
  169. package/lib/module/web/handlers/PinchGestureHandler.js +0 -1
  170. package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
  171. package/lib/module/web/handlers/RotationGestureHandler.js +0 -1
  172. package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
  173. package/lib/module/web/handlers/TapGestureHandler.js +0 -2
  174. package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
  175. package/lib/module/web/interfaces.js.map +1 -1
  176. package/lib/module/web/tools/InteractionManager.js.map +1 -1
  177. package/lib/module/web_hammer/GestureHandler.js.map +1 -1
  178. package/lib/module/web_hammer/NodeManager.js +4 -1
  179. package/lib/module/web_hammer/NodeManager.js.map +1 -1
  180. package/lib/module/web_hammer/PanGestureHandler.js +25 -6
  181. package/lib/module/web_hammer/PanGestureHandler.js.map +1 -1
  182. package/lib/typescript/RNGestureHandlerModule.macos.d.ts +1 -1
  183. package/lib/typescript/RNGestureHandlerModule.web.d.ts +1 -1
  184. package/lib/typescript/RNGestureHandlerModule.windows.d.ts +48 -0
  185. package/lib/typescript/components/DrawerLayout.d.ts +10 -1
  186. package/lib/typescript/components/Swipeable.d.ts +3 -2
  187. package/lib/typescript/fabric/RNGestureHandlerButtonNativeComponent.d.ts +1 -1
  188. package/lib/typescript/fabric/RNGestureHandlerRootViewNativeComponent.d.ts +1 -1
  189. package/lib/typescript/gestureHandlerRootHOC.d.ts +1 -1
  190. package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +1 -1
  191. package/lib/typescript/handlers/PanGestureHandler.d.ts +1 -1
  192. package/lib/typescript/handlers/gestureHandlerCommon.d.ts +3 -1
  193. package/lib/typescript/handlers/gestures/GestureDetector.d.ts +3 -1
  194. package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +3 -1
  195. package/lib/typescript/web/interfaces.d.ts +3 -1
  196. package/lib/typescript/web/tools/NodeManager.d.ts +2 -2
  197. package/package.json +17 -14
  198. package/src/RNGestureHandlerModule.macos.ts +2 -2
  199. package/src/RNGestureHandlerModule.web.ts +2 -2
  200. package/src/RNGestureHandlerModule.windows.ts +140 -0
  201. package/src/components/DrawerLayout.tsx +22 -12
  202. package/src/components/Swipeable.tsx +16 -13
  203. package/src/components/touchables/TouchableOpacity.tsx +1 -1
  204. package/src/gestureHandlerRootHOC.tsx +4 -1
  205. package/src/getShadowNodeFromRef.ts +3 -3
  206. package/src/handlers/LongPressGestureHandler.ts +3 -1
  207. package/src/handlers/TapGestureHandler.ts +3 -1
  208. package/src/handlers/createHandler.tsx +13 -15
  209. package/src/handlers/gestureHandlerCommon.ts +9 -4
  210. package/src/handlers/gestureHandlerTypesCompat.ts +34 -17
  211. package/src/handlers/gestures/GestureDetector.tsx +117 -44
  212. package/src/handlers/gestures/eventReceiver.ts +2 -1
  213. package/src/handlers/gestures/gesture.ts +8 -12
  214. package/src/handlers/gestures/longPressGesture.ts +1 -0
  215. package/src/handlers/gestures/tapGesture.ts +1 -0
  216. package/src/jestUtils/jestUtils.ts +3 -4
  217. package/src/web/detectors/RotationGestureDetector.ts +2 -1
  218. package/src/web/handlers/FlingGestureHandler.ts +2 -3
  219. package/src/web/handlers/GestureHandler.ts +30 -11
  220. package/src/web/handlers/LongPressGestureHandler.ts +0 -3
  221. package/src/web/handlers/ManualGestureHandler.ts +10 -1
  222. package/src/web/handlers/NativeViewGestureHandler.ts +0 -2
  223. package/src/web/handlers/PanGestureHandler.ts +0 -6
  224. package/src/web/handlers/PinchGestureHandler.ts +0 -2
  225. package/src/web/handlers/RotationGestureHandler.ts +2 -5
  226. package/src/web/handlers/TapGestureHandler.ts +0 -3
  227. package/src/web/interfaces.ts +3 -0
  228. package/src/web/tools/InteractionManager.ts +2 -3
  229. package/src/web_hammer/GestureHandler.ts +6 -8
  230. package/src/web_hammer/NodeManager.ts +3 -1
  231. package/src/web_hammer/PanGestureHandler.ts +12 -6
  232. package/android/lib/build.gradle +0 -28
@@ -1,160 +1,158 @@
1
1
  #import "RNGestureHandlerManager.h"
2
2
 
3
- #import <React/RCTLog.h>
4
- #import <React/RCTViewManager.h>
5
3
  #import <React/RCTComponent.h>
6
- #import <React/RCTRootView.h>
7
- #import <React/RCTUIManager.h>
8
4
  #import <React/RCTEventDispatcher.h>
5
+ #import <React/RCTLog.h>
9
6
  #import <React/RCTRootContentView.h>
7
+ #import <React/RCTRootView.h>
8
+ #import <React/RCTUIManager.h>
9
+ #import <React/RCTViewManager.h>
10
10
 
11
- #import "RNGestureHandlerActionType.h"
12
- #import "RNGestureHandlerState.h"
13
11
  #import "RNGestureHandler.h"
12
+ #import "RNGestureHandlerActionType.h"
14
13
  #import "RNGestureHandlerRegistry.h"
14
+ #import "RNGestureHandlerState.h"
15
15
  #import "RNRootViewGestureRecognizer.h"
16
16
 
17
17
  #ifdef RN_FABRIC_ENABLED
18
- #import <React/RCTViewComponentView.h>
19
18
  #import <React/RCTSurfaceTouchHandler.h>
19
+ #import <React/RCTViewComponentView.h>
20
20
  #else
21
21
  #import <React/RCTTouchHandler.h>
22
22
  #endif // RN_FABRIC_ENABLED
23
23
 
24
- #import "Handlers/RNPanHandler.h"
25
- #import "Handlers/RNTapHandler.h"
26
24
  #import "Handlers/RNFlingHandler.h"
25
+ #import "Handlers/RNForceTouchHandler.h"
27
26
  #import "Handlers/RNLongPressHandler.h"
27
+ #import "Handlers/RNManualHandler.h"
28
28
  #import "Handlers/RNNativeViewHandler.h"
29
+ #import "Handlers/RNPanHandler.h"
29
30
  #import "Handlers/RNPinchHandler.h"
30
31
  #import "Handlers/RNRotationHandler.h"
31
- #import "Handlers/RNForceTouchHandler.h"
32
- #import "Handlers/RNManualHandler.h"
32
+ #import "Handlers/RNTapHandler.h"
33
33
 
34
34
  // We use the method below instead of RCTLog because we log out messages after the bridge gets
35
35
  // turned down in some cases. Which normally with RCTLog would cause a crash in DEBUG mode
36
- #define RCTLifecycleLog(...) RCTDefaultLogFunction(RCTLogLevelInfo, RCTLogSourceNative, @(__FILE__), @(__LINE__), [NSString stringWithFormat:__VA_ARGS__])
36
+ #define RCTLifecycleLog(...) \
37
+ RCTDefaultLogFunction( \
38
+ RCTLogLevelInfo, RCTLogSourceNative, @(__FILE__), @(__LINE__), [NSString stringWithFormat:__VA_ARGS__])
37
39
 
38
40
  @interface RNGestureHandlerManager () <RNGestureHandlerEventEmitter, RNRootViewGestureRecognizerDelegate>
39
41
 
40
42
  @end
41
43
 
42
- @implementation RNGestureHandlerManager
43
- {
44
- RNGestureHandlerRegistry *_registry;
45
- RCTUIManager *_uiManager;
46
- NSHashTable<RNRootViewGestureRecognizer *> *_rootViewGestureRecognizers;
47
- RCTEventDispatcher *_eventDispatcher;
48
- id _reanimatedModule;
44
+ @implementation RNGestureHandlerManager {
45
+ RNGestureHandlerRegistry *_registry;
46
+ RCTUIManager *_uiManager;
47
+ NSHashTable<RNRootViewGestureRecognizer *> *_rootViewGestureRecognizers;
48
+ RCTEventDispatcher *_eventDispatcher;
49
+ id _reanimatedModule;
49
50
  }
50
51
 
51
- - (instancetype)initWithUIManager:(RCTUIManager *)uiManager
52
- eventDispatcher:(RCTEventDispatcher *)eventDispatcher
52
+ - (instancetype)initWithUIManager:(RCTUIManager *)uiManager eventDispatcher:(RCTEventDispatcher *)eventDispatcher
53
53
  {
54
- if ((self = [super init])) {
55
- _uiManager = uiManager;
56
- _eventDispatcher = eventDispatcher;
57
- _registry = [RNGestureHandlerRegistry new];
58
- _rootViewGestureRecognizers = [NSHashTable hashTableWithOptions:NSPointerFunctionsWeakMemory];
59
- _reanimatedModule = nil;
60
- }
61
- return self;
54
+ if ((self = [super init])) {
55
+ _uiManager = uiManager;
56
+ _eventDispatcher = eventDispatcher;
57
+ _registry = [RNGestureHandlerRegistry new];
58
+ _rootViewGestureRecognizers = [NSHashTable hashTableWithOptions:NSPointerFunctionsWeakMemory];
59
+ _reanimatedModule = nil;
60
+ }
61
+ return self;
62
62
  }
63
63
 
64
- - (void)createGestureHandler:(NSString *)handlerName
65
- tag:(NSNumber *)handlerTag
66
- config:(NSDictionary *)config
64
+ - (void)createGestureHandler:(NSString *)handlerName tag:(NSNumber *)handlerTag config:(NSDictionary *)config
67
65
  {
68
- static NSDictionary *map;
69
- static dispatch_once_t mapToken;
70
- dispatch_once(&mapToken, ^{
71
- map = @{
72
- @"PanGestureHandler" : [RNPanGestureHandler class],
73
- @"TapGestureHandler" : [RNTapGestureHandler class],
74
- @"FlingGestureHandler" : [RNFlingGestureHandler class],
75
- @"LongPressGestureHandler": [RNLongPressGestureHandler class],
76
- @"NativeViewGestureHandler": [RNNativeViewGestureHandler class],
77
- @"PinchGestureHandler": [RNPinchGestureHandler class],
78
- @"RotationGestureHandler": [RNRotationGestureHandler class],
79
- @"ForceTouchGestureHandler": [RNForceTouchHandler class],
80
- @"ManualGestureHandler": [RNManualGestureHandler class],
81
- };
82
- });
83
-
84
- Class nodeClass = map[handlerName];
85
- if (!nodeClass) {
86
- RCTLogError(@"Gesture handler type %@ is not supported", handlerName);
87
- return;
88
- }
89
-
90
- RNGestureHandler *gestureHandler = [[nodeClass alloc] initWithTag:handlerTag];
91
- [gestureHandler configure:config];
92
- [_registry registerGestureHandler:gestureHandler];
93
-
94
- __weak id<RNGestureHandlerEventEmitter> emitter = self;
95
- gestureHandler.emitter = emitter;
66
+ static NSDictionary *map;
67
+ static dispatch_once_t mapToken;
68
+ dispatch_once(&mapToken, ^{
69
+ map = @{
70
+ @"PanGestureHandler" : [RNPanGestureHandler class],
71
+ @"TapGestureHandler" : [RNTapGestureHandler class],
72
+ @"FlingGestureHandler" : [RNFlingGestureHandler class],
73
+ @"LongPressGestureHandler" : [RNLongPressGestureHandler class],
74
+ @"NativeViewGestureHandler" : [RNNativeViewGestureHandler class],
75
+ @"PinchGestureHandler" : [RNPinchGestureHandler class],
76
+ @"RotationGestureHandler" : [RNRotationGestureHandler class],
77
+ @"ForceTouchGestureHandler" : [RNForceTouchHandler class],
78
+ @"ManualGestureHandler" : [RNManualGestureHandler class],
79
+ };
80
+ });
81
+
82
+ Class nodeClass = map[handlerName];
83
+ if (!nodeClass) {
84
+ RCTLogError(@"Gesture handler type %@ is not supported", handlerName);
85
+ return;
86
+ }
87
+
88
+ RNGestureHandler *gestureHandler = [[nodeClass alloc] initWithTag:handlerTag];
89
+ [gestureHandler configure:config];
90
+ [_registry registerGestureHandler:gestureHandler];
91
+
92
+ __weak id<RNGestureHandlerEventEmitter> emitter = self;
93
+ gestureHandler.emitter = emitter;
96
94
  }
97
95
 
98
-
99
96
  - (void)attachGestureHandler:(nonnull NSNumber *)handlerTag
100
97
  toViewWithTag:(nonnull NSNumber *)viewTag
101
98
  withActionType:(RNGestureHandlerActionType)actionType
102
99
  {
103
- UIView *view = [_uiManager viewForReactTag:viewTag];
104
-
100
+ UIView *view = [_uiManager viewForReactTag:viewTag];
101
+
105
102
  #ifdef RN_FABRIC_ENABLED
106
- if (view == nil) {
107
- // Happens when the view with given tag has been flattened.
108
- // We cannot attach gesture handler to a non-existent view.
109
- return;
103
+ if (view == nil) {
104
+ // Happens when the view with given tag has been flattened.
105
+ // We cannot attach gesture handler to a non-existent view.
106
+ return;
107
+ }
108
+
109
+ // I think it should be moved to RNNativeViewHandler, but that would require
110
+ // additional logic for setting contentView.reactTag, this works for now
111
+ if ([view isKindOfClass:[RCTViewComponentView class]]) {
112
+ RCTViewComponentView *componentView = (RCTViewComponentView *)view;
113
+ if (componentView.contentView != nil) {
114
+ view = componentView.contentView;
110
115
  }
111
-
112
- // I think it should be moved to RNNativeViewHandler, but that would require
113
- // additional logic for setting contentView.reactTag, this works for now
114
- if ([view isKindOfClass:[RCTViewComponentView class]]) {
115
- RCTViewComponentView *componentView = (RCTViewComponentView *)view;
116
- if (componentView.contentView != nil) {
117
- view = componentView.contentView;
118
- }
119
- }
120
-
121
- view.reactTag = viewTag; // necessary for RNReanimated eventHash (e.g. "42onGestureHandlerEvent"), also will be returned as event.target
116
+ }
117
+
118
+ view.reactTag = viewTag; // necessary for RNReanimated eventHash (e.g. "42onGestureHandlerEvent"), also will be
119
+ // returned as event.target
122
120
  #endif // RN_FABRIC_ENABLED
123
121
 
124
- [_registry attachHandlerWithTag:handlerTag toView:view withActionType:actionType];
122
+ [_registry attachHandlerWithTag:handlerTag toView:view withActionType:actionType];
125
123
 
126
- // register view if not already there
127
- [self registerViewWithGestureRecognizerAttachedIfNeeded:view];
124
+ // register view if not already there
125
+ [self registerViewWithGestureRecognizerAttachedIfNeeded:view];
128
126
  }
129
127
 
130
128
  - (void)updateGestureHandler:(NSNumber *)handlerTag config:(NSDictionary *)config
131
129
  {
132
- RNGestureHandler *handler = [_registry handlerWithTag:handlerTag];
133
- [handler configure:config];
130
+ RNGestureHandler *handler = [_registry handlerWithTag:handlerTag];
131
+ [handler configure:config];
134
132
  }
135
133
 
136
134
  - (void)dropGestureHandler:(NSNumber *)handlerTag
137
135
  {
138
- [_registry dropHandlerWithTag:handlerTag];
136
+ [_registry dropHandlerWithTag:handlerTag];
139
137
  }
140
138
 
141
139
  - (void)dropAllGestureHandlers
142
140
  {
143
- [_registry dropAllHandlers];
141
+ [_registry dropAllHandlers];
144
142
  }
145
143
 
146
144
  - (void)handleSetJSResponder:(NSNumber *)viewTag blockNativeResponder:(NSNumber *)blockNativeResponder
147
145
  {
148
- if ([blockNativeResponder boolValue]) {
149
- for (RNRootViewGestureRecognizer *recognizer in _rootViewGestureRecognizers) {
150
- [recognizer blockOtherRecognizers];
151
- }
146
+ if ([blockNativeResponder boolValue]) {
147
+ for (RNRootViewGestureRecognizer *recognizer in _rootViewGestureRecognizers) {
148
+ [recognizer blockOtherRecognizers];
152
149
  }
150
+ }
153
151
  }
154
152
 
155
153
  - (void)handleClearJSResponder
156
154
  {
157
- // ignore...
155
+ // ignore...
158
156
  }
159
157
 
160
158
  - (id)handlerWithTag:(NSNumber *)handlerTag
@@ -162,145 +160,145 @@
162
160
  return [_registry handlerWithTag:handlerTag];
163
161
  }
164
162
 
165
-
166
163
  #pragma mark Root Views Management
167
164
 
168
165
  - (void)registerViewWithGestureRecognizerAttachedIfNeeded:(UIView *)childView
169
166
  {
170
- UIView *parent = childView;
171
- while (parent != nil && ![parent respondsToSelector:@selector(touchHandler)]) parent = parent.superview;
172
-
173
- // Many views can return the same touchHandler so we check if the one we want to register
174
- // is not already present in the set.
175
- UIView *touchHandlerView = [[parent performSelector:@selector(touchHandler)] view];
176
-
177
- if (touchHandlerView == nil) {
167
+ UIView *parent = childView;
168
+ while (parent != nil && ![parent respondsToSelector:@selector(touchHandler)])
169
+ parent = parent.superview;
170
+
171
+ // Many views can return the same touchHandler so we check if the one we want to register
172
+ // is not already present in the set.
173
+ UIView *touchHandlerView = [[parent performSelector:@selector(touchHandler)] view];
174
+
175
+ if (touchHandlerView == nil) {
176
+ return;
177
+ }
178
+
179
+ for (UIGestureRecognizer *recognizer in touchHandlerView.gestureRecognizers) {
180
+ if ([recognizer isKindOfClass:[RNRootViewGestureRecognizer class]]) {
178
181
  return;
179
182
  }
180
-
181
- for (UIGestureRecognizer *recognizer in touchHandlerView.gestureRecognizers) {
182
- if ([recognizer isKindOfClass:[RNRootViewGestureRecognizer class]]) {
183
- return;
184
- }
185
- }
186
-
187
- RCTLifecycleLog(@"[GESTURE HANDLER] Initialize gesture handler for view %@", touchHandlerView);
188
- RNRootViewGestureRecognizer *recognizer = [RNRootViewGestureRecognizer new];
189
- recognizer.delegate = self;
190
- touchHandlerView.userInteractionEnabled = YES;
191
- [touchHandlerView addGestureRecognizer:recognizer];
192
- [_rootViewGestureRecognizers addObject:recognizer];
183
+ }
184
+
185
+ RCTLifecycleLog(@"[GESTURE HANDLER] Initialize gesture handler for view %@", touchHandlerView);
186
+ RNRootViewGestureRecognizer *recognizer = [RNRootViewGestureRecognizer new];
187
+ recognizer.delegate = self;
188
+ touchHandlerView.userInteractionEnabled = YES;
189
+ [touchHandlerView addGestureRecognizer:recognizer];
190
+ [_rootViewGestureRecognizers addObject:recognizer];
193
191
  }
194
192
 
195
193
  - (void)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
196
194
  didActivateInViewWithTouchHandler:(UIView *)viewWithTouchHandler
197
195
  {
198
- // Cancel touches in RN's root view in order to cancel all in-js recognizers
199
-
200
- // As scroll events are special-cased in RN responder implementation and sending them would
201
- // trigger JS responder change, we don't cancel touches if the handler that got activated is
202
- // a scroll recognizer. This way root view will keep sending touchMove and touchEnd events
203
- // and therefore allow JS responder to properly release the responder at the end of the touch
204
- // stream.
205
- // NOTE: this is not a proper fix and solving this problem requires upstream fixes to RN. In
206
- // particular if we have one PanHandler and ScrollView that can work simultaniously then when
207
- // the Pan handler activates it would still tigger cancel events.
208
- // Once the upstream fix lands the line below along with this comment can be removed
209
- if ([gestureRecognizer.view isKindOfClass:[UIScrollView class]]) return;
196
+ // Cancel touches in RN's root view in order to cancel all in-js recognizers
197
+
198
+ // As scroll events are special-cased in RN responder implementation and sending them would
199
+ // trigger JS responder change, we don't cancel touches if the handler that got activated is
200
+ // a scroll recognizer. This way root view will keep sending touchMove and touchEnd events
201
+ // and therefore allow JS responder to properly release the responder at the end of the touch
202
+ // stream.
203
+ // NOTE: this is not a proper fix and solving this problem requires upstream fixes to RN. In
204
+ // particular if we have one PanHandler and ScrollView that can work simultaniously then when
205
+ // the Pan handler activates it would still tigger cancel events.
206
+ // Once the upstream fix lands the line below along with this comment can be removed
207
+ if ([gestureRecognizer.view isKindOfClass:[UIScrollView class]])
208
+ return;
210
209
 
211
210
  #ifdef RN_FABRIC_ENABLED
212
- RCTSurfaceTouchHandler *touchHandler = [viewWithTouchHandler performSelector:@selector(touchHandler)];
211
+ RCTSurfaceTouchHandler *touchHandler = [viewWithTouchHandler performSelector:@selector(touchHandler)];
213
212
  #else
214
- RCTTouchHandler *touchHandler = [viewWithTouchHandler performSelector:@selector(touchHandler)];
213
+ RCTTouchHandler *touchHandler = [viewWithTouchHandler performSelector:@selector(touchHandler)];
215
214
  #endif
216
- [touchHandler setEnabled:NO];
217
- [touchHandler setEnabled:YES];
218
-
215
+ [touchHandler setEnabled:NO];
216
+ [touchHandler setEnabled:YES];
219
217
  }
220
218
 
221
219
  #pragma mark Events
222
220
 
223
221
  - (void)sendEvent:(RNGestureHandlerStateChange *)event withActionType:(RNGestureHandlerActionType)actionType
224
222
  {
225
- switch (actionType) {
226
- case RNGestureHandlerActionTypeReanimatedWorklet:
227
- [self sendEventForReanimated:event];
228
- break;
229
-
230
- case RNGestureHandlerActionTypeNativeAnimatedEvent:
231
- if ([event.eventName isEqualToString:@"onGestureHandlerEvent"]) {
232
- [self sendEventForNativeAnimatedEvent:event];
233
- } else {
234
- // Although onGestureEvent prop is an Animated.event with useNativeDriver: true,
235
- // onHandlerStateChange prop is still a regular JS function.
236
- // Also, Animated.event is only supported with old API.
237
- [self sendEventForJSFunctionOldAPI:event];
238
- }
239
- break;
240
-
241
- case RNGestureHandlerActionTypeJSFunctionOldAPI:
242
- [self sendEventForJSFunctionOldAPI:event];
243
- break;
244
-
245
- case RNGestureHandlerActionTypeJSFunctionNewAPI:
246
- [self sendEventForJSFunctionNewAPI:event];
247
- break;
248
- }
223
+ switch (actionType) {
224
+ case RNGestureHandlerActionTypeReanimatedWorklet:
225
+ [self sendEventForReanimated:event];
226
+ break;
227
+
228
+ case RNGestureHandlerActionTypeNativeAnimatedEvent:
229
+ if ([event.eventName isEqualToString:@"onGestureHandlerEvent"]) {
230
+ [self sendEventForNativeAnimatedEvent:event];
231
+ } else {
232
+ // Although onGestureEvent prop is an Animated.event with useNativeDriver: true,
233
+ // onHandlerStateChange prop is still a regular JS function.
234
+ // Also, Animated.event is only supported with old API.
235
+ [self sendEventForJSFunctionOldAPI:event];
236
+ }
237
+ break;
238
+
239
+ case RNGestureHandlerActionTypeJSFunctionOldAPI:
240
+ [self sendEventForJSFunctionOldAPI:event];
241
+ break;
242
+
243
+ case RNGestureHandlerActionTypeJSFunctionNewAPI:
244
+ [self sendEventForJSFunctionNewAPI:event];
245
+ break;
246
+ }
249
247
  }
250
248
 
251
249
  - (void)sendEventForReanimated:(RNGestureHandlerStateChange *)event
252
250
  {
253
- // Delivers the event to Reanimated.
251
+ // Delivers the event to Reanimated.
254
252
  #ifdef RN_FABRIC_ENABLED
255
- // Send event directly to Reanimated
256
- if (_reanimatedModule == nil) {
257
- _reanimatedModule = [_uiManager.bridge moduleForName:@"ReanimatedModule"];
258
- }
259
-
260
- [_reanimatedModule eventDispatcherWillDispatchEvent:event];
253
+ // Send event directly to Reanimated
254
+ if (_reanimatedModule == nil) {
255
+ _reanimatedModule = [_uiManager.bridge moduleForName:@"ReanimatedModule"];
256
+ }
257
+
258
+ [_reanimatedModule eventDispatcherWillDispatchEvent:event];
261
259
  #else
262
- // In the old architecture, Reanimated overwrites RCTEventDispatcher
263
- // with REAEventDispatcher and intercepts all direct events.
264
- [self sendEventForDirectEvent:event];
260
+ // In the old architecture, Reanimated overwrites RCTEventDispatcher
261
+ // with REAEventDispatcher and intercepts all direct events.
262
+ [self sendEventForDirectEvent:event];
265
263
  #endif // RN_FABRIC_ENABLED
266
264
  }
267
265
 
268
266
  - (void)sendEventForNativeAnimatedEvent:(RNGestureHandlerStateChange *)event
269
267
  {
270
- // Delivers the event to NativeAnimatedModule.
271
- // Currently, NativeAnimated[Turbo]Module is RCTEventDispatcherObserver so we can
272
- // simply send a direct event which is handled by the observer but ignored on JS side.
273
- // TODO: send event directly to NativeAnimated[Turbo]Module
274
- [self sendEventForDirectEvent:event];
268
+ // Delivers the event to NativeAnimatedModule.
269
+ // Currently, NativeAnimated[Turbo]Module is RCTEventDispatcherObserver so we can
270
+ // simply send a direct event which is handled by the observer but ignored on JS side.
271
+ // TODO: send event directly to NativeAnimated[Turbo]Module
272
+ [self sendEventForDirectEvent:event];
275
273
  }
276
274
 
277
275
  - (void)sendEventForJSFunctionOldAPI:(RNGestureHandlerStateChange *)event
278
276
  {
279
- // Delivers the event to JS (old RNGH API).
277
+ // Delivers the event to JS (old RNGH API).
280
278
  #ifdef RN_FABRIC_ENABLED
281
- [self sendEventForDeviceEvent:event];
279
+ [self sendEventForDeviceEvent:event];
282
280
  #else
283
- [self sendEventForDirectEvent:event];
281
+ [self sendEventForDirectEvent:event];
284
282
  #endif // RN_FABRIC_ENABLED
285
283
  }
286
284
 
287
285
  - (void)sendEventForJSFunctionNewAPI:(RNGestureHandlerStateChange *)event
288
286
  {
289
- // Delivers the event to JS (new RNGH API).
290
- [self sendEventForDeviceEvent:event];
287
+ // Delivers the event to JS (new RNGH API).
288
+ [self sendEventForDeviceEvent:event];
291
289
  }
292
290
 
293
291
  - (void)sendEventForDirectEvent:(RNGestureHandlerStateChange *)event
294
292
  {
295
- // Delivers the event to JS as a direct event.
296
- [_eventDispatcher sendEvent:event];
293
+ // Delivers the event to JS as a direct event.
294
+ [_eventDispatcher sendEvent:event];
297
295
  }
298
296
 
299
297
  - (void)sendEventForDeviceEvent:(RNGestureHandlerStateChange *)event
300
298
  {
301
- // Delivers the event to JS as a device event.
302
- NSMutableDictionary *body = [[event arguments] objectAtIndex:2];
303
- [_eventDispatcher sendDeviceEventWithName:@"onGestureHandlerStateChange" body:body];
299
+ // Delivers the event to JS as a device event.
300
+ NSMutableDictionary *body = [[event arguments] objectAtIndex:2];
301
+ [_eventDispatcher sendDeviceEventWithName:@"onGestureHandlerStateChange" body:body];
304
302
  }
305
303
 
306
304
  @end
@@ -1,8 +1,7 @@
1
- #import <React/RCTEventEmitter.h>
2
1
  #import <React/RCTBridgeModule.h>
2
+ #import <React/RCTEventEmitter.h>
3
3
  #import <React/RCTUIManager.h>
4
4
 
5
5
  @interface RNGestureHandlerModule : RCTEventEmitter <RCTBridgeModule>
6
6
 
7
7
  @end
8
-