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
@@ -27,37 +27,37 @@
27
27
 
28
28
  - (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler
29
29
  {
30
- if ((self = [super initWithTarget:gestureHandler action:@selector(handleGesture:)])) {
31
- _gestureHandler = gestureHandler;
32
- }
33
- return self;
30
+ if ((self = [super initWithTarget:gestureHandler action:@selector(handleGesture:)])) {
31
+ _gestureHandler = gestureHandler;
32
+ }
33
+ return self;
34
34
  }
35
35
 
36
36
  - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
37
37
  {
38
- [_gestureHandler.pointerTracker touchesBegan:touches withEvent:event];
38
+ [_gestureHandler.pointerTracker touchesBegan:touches withEvent:event];
39
39
  }
40
40
 
41
41
  - (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
42
42
  {
43
- [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event];
43
+ [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event];
44
44
  }
45
45
 
46
46
  - (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
47
47
  {
48
- [_gestureHandler.pointerTracker touchesEnded:touches withEvent:event];
49
- self.state = UIGestureRecognizerStateFailed;
50
- [self reset];
48
+ [_gestureHandler.pointerTracker touchesEnded:touches withEvent:event];
49
+ self.state = UIGestureRecognizerStateFailed;
50
+ [self reset];
51
51
  }
52
52
 
53
53
  - (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
54
54
  {
55
- [_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event];
56
- self.state = UIGestureRecognizerStateCancelled;
57
- [self reset];
55
+ [_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event];
56
+ self.state = UIGestureRecognizerStateCancelled;
57
+ [self reset];
58
58
  }
59
59
 
60
- -(void)reset
60
+ - (void)reset
61
61
  {
62
62
  [_gestureHandler.pointerTracker reset];
63
63
  [super reset];
@@ -68,122 +68,126 @@
68
68
  #pragma mark RNNativeViewgestureHandler
69
69
 
70
70
  @implementation RNNativeViewGestureHandler {
71
- BOOL _shouldActivateOnStart;
72
- BOOL _disallowInterruption;
71
+ BOOL _shouldActivateOnStart;
72
+ BOOL _disallowInterruption;
73
73
  }
74
74
 
75
75
  - (instancetype)initWithTag:(NSNumber *)tag
76
76
  {
77
- if ((self = [super initWithTag:tag])) {
78
- _recognizer = [[RNDummyGestureRecognizer alloc] initWithGestureHandler:self];
79
- }
80
- return self;
77
+ if ((self = [super initWithTag:tag])) {
78
+ _recognizer = [[RNDummyGestureRecognizer alloc] initWithGestureHandler:self];
79
+ }
80
+ return self;
81
81
  }
82
82
 
83
83
  - (void)configure:(NSDictionary *)config
84
84
  {
85
- [super configure:config];
86
- _shouldActivateOnStart = [RCTConvert BOOL:config[@"shouldActivateOnStart"]];
87
- _disallowInterruption = [RCTConvert BOOL:config[@"disallowInterruption"]];
85
+ [super configure:config];
86
+ _shouldActivateOnStart = [RCTConvert BOOL:config[@"shouldActivateOnStart"]];
87
+ _disallowInterruption = [RCTConvert BOOL:config[@"disallowInterruption"]];
88
88
  }
89
89
 
90
90
  - (void)bindToView:(UIView *)view
91
91
  {
92
- // For UIControl based views (UIButton, UISwitch) we provide special handling that would allow
93
- // for properties like `disallowInterruption` to work.
94
- if ([view isKindOfClass:[UIControl class]]) {
95
- UIControl *control = (UIControl *)view;
96
- [control addTarget:self action:@selector(handleTouchDown:forEvent:) forControlEvents:UIControlEventTouchDown];
97
- [control addTarget:self action:@selector(handleTouchUpOutside:forEvent:) forControlEvents:UIControlEventTouchUpOutside];
98
- [control addTarget:self action:@selector(handleTouchUpInside:forEvent:) forControlEvents:UIControlEventTouchUpInside];
99
- [control addTarget:self action:@selector(handleDragExit:forEvent:) forControlEvents:UIControlEventTouchDragExit];
100
- [control addTarget:self action:@selector(handleDragEnter:forEvent:) forControlEvents:UIControlEventTouchDragEnter];
101
- [control addTarget:self action:@selector(handleTouchCancel:forEvent:) forControlEvents:UIControlEventTouchCancel];
102
- } else {
103
- [super bindToView:view];
104
- }
105
-
106
- // We can restore default scrollview behaviour to delay touches to scrollview's children
107
- // because gesture handler system can handle cancellation of scroll recognizer when JS responder
108
- // is set
92
+ // For UIControl based views (UIButton, UISwitch) we provide special handling that would allow
93
+ // for properties like `disallowInterruption` to work.
94
+ if ([view isKindOfClass:[UIControl class]]) {
95
+ UIControl *control = (UIControl *)view;
96
+ [control addTarget:self action:@selector(handleTouchDown:forEvent:) forControlEvents:UIControlEventTouchDown];
97
+ [control addTarget:self
98
+ action:@selector(handleTouchUpOutside:forEvent:)
99
+ forControlEvents:UIControlEventTouchUpOutside];
100
+ [control addTarget:self
101
+ action:@selector(handleTouchUpInside:forEvent:)
102
+ forControlEvents:UIControlEventTouchUpInside];
103
+ [control addTarget:self action:@selector(handleDragExit:forEvent:) forControlEvents:UIControlEventTouchDragExit];
104
+ [control addTarget:self action:@selector(handleDragEnter:forEvent:) forControlEvents:UIControlEventTouchDragEnter];
105
+ [control addTarget:self action:@selector(handleTouchCancel:forEvent:) forControlEvents:UIControlEventTouchCancel];
106
+ } else {
107
+ [super bindToView:view];
108
+ }
109
+
110
+ // We can restore default scrollview behaviour to delay touches to scrollview's children
111
+ // because gesture handler system can handle cancellation of scroll recognizer when JS responder
112
+ // is set
109
113
  #ifdef RN_FABRIC_ENABLED
110
- if ([view isKindOfClass:[RCTScrollViewComponentView class]]) {
111
- UIScrollView *scrollView = ((RCTScrollViewComponentView *)view).scrollView;
112
- scrollView.delaysContentTouches = YES;
113
- }
114
+ if ([view isKindOfClass:[RCTScrollViewComponentView class]]) {
115
+ UIScrollView *scrollView = ((RCTScrollViewComponentView *)view).scrollView;
116
+ scrollView.delaysContentTouches = YES;
117
+ }
114
118
  #else
115
- if ([view isKindOfClass:[RCTScrollView class]]) {
116
- // This part of the code is coupled with RN implementation of ScrollView native wrapper and
117
- // we expect for RCTScrollView component to contain a subclass of UIScrollview as the only
118
- // subview
119
- UIScrollView *scrollView = [view.subviews objectAtIndex:0];
120
- scrollView.delaysContentTouches = YES;
121
- }
119
+ if ([view isKindOfClass:[RCTScrollView class]]) {
120
+ // This part of the code is coupled with RN implementation of ScrollView native wrapper and
121
+ // we expect for RCTScrollView component to contain a subclass of UIScrollview as the only
122
+ // subview
123
+ UIScrollView *scrollView = [view.subviews objectAtIndex:0];
124
+ scrollView.delaysContentTouches = YES;
125
+ }
122
126
  #endif // RN_FABRIC_ENABLED
123
127
  }
124
128
 
125
129
  - (void)handleTouchDown:(UIView *)sender forEvent:(UIEvent *)event
126
130
  {
127
- [self reset];
128
-
129
- if (_disallowInterruption) {
130
- // When `disallowInterruption` is set we cancel all gesture handlers when this UIControl
131
- // gets DOWN event
132
- for (UITouch *touch in [event allTouches]) {
133
- for (UIGestureRecognizer *recogn in [touch gestureRecognizers]) {
134
- recogn.enabled = NO;
135
- recogn.enabled = YES;
136
- }
137
- }
131
+ [self reset];
132
+
133
+ if (_disallowInterruption) {
134
+ // When `disallowInterruption` is set we cancel all gesture handlers when this UIControl
135
+ // gets DOWN event
136
+ for (UITouch *touch in [event allTouches]) {
137
+ for (UIGestureRecognizer *recogn in [touch gestureRecognizers]) {
138
+ recogn.enabled = NO;
139
+ recogn.enabled = YES;
140
+ }
138
141
  }
142
+ }
139
143
 
140
- [self sendEventsInState:RNGestureHandlerStateActive
141
- forViewWithTag:sender.reactTag
142
- withExtraData:[RNGestureHandlerEventExtraData forPointerInside:YES]];
144
+ [self sendEventsInState:RNGestureHandlerStateActive
145
+ forViewWithTag:sender.reactTag
146
+ withExtraData:[RNGestureHandlerEventExtraData forPointerInside:YES]];
143
147
  }
144
148
 
145
149
  - (void)handleTouchUpOutside:(UIView *)sender forEvent:(UIEvent *)event
146
150
  {
147
- [self sendEventsInState:RNGestureHandlerStateEnd
148
- forViewWithTag:sender.reactTag
149
- withExtraData:[RNGestureHandlerEventExtraData forPointerInside:NO]];
151
+ [self sendEventsInState:RNGestureHandlerStateEnd
152
+ forViewWithTag:sender.reactTag
153
+ withExtraData:[RNGestureHandlerEventExtraData forPointerInside:NO]];
150
154
  }
151
155
 
152
156
  - (void)handleTouchUpInside:(UIView *)sender forEvent:(UIEvent *)event
153
157
  {
154
- [self sendEventsInState:RNGestureHandlerStateEnd
155
- forViewWithTag:sender.reactTag
156
- withExtraData:[RNGestureHandlerEventExtraData forPointerInside:YES]];
158
+ [self sendEventsInState:RNGestureHandlerStateEnd
159
+ forViewWithTag:sender.reactTag
160
+ withExtraData:[RNGestureHandlerEventExtraData forPointerInside:YES]];
157
161
  }
158
162
 
159
163
  - (void)handleDragExit:(UIView *)sender forEvent:(UIEvent *)event
160
164
  {
161
- // Pointer is moved outside of the view bounds, we cancel button when `shouldCancelWhenOutside` is set
162
- if (self.shouldCancelWhenOutside) {
163
- UIControl *control = (UIControl *)sender;
164
- [control cancelTrackingWithEvent:event];
165
- [self sendEventsInState:RNGestureHandlerStateEnd
166
- forViewWithTag:sender.reactTag
167
- withExtraData:[RNGestureHandlerEventExtraData forPointerInside:NO]];
168
- } else {
169
- [self sendEventsInState:RNGestureHandlerStateActive
170
- forViewWithTag:sender.reactTag
171
- withExtraData:[RNGestureHandlerEventExtraData forPointerInside:NO]];
172
- }
165
+ // Pointer is moved outside of the view bounds, we cancel button when `shouldCancelWhenOutside` is set
166
+ if (self.shouldCancelWhenOutside) {
167
+ UIControl *control = (UIControl *)sender;
168
+ [control cancelTrackingWithEvent:event];
169
+ [self sendEventsInState:RNGestureHandlerStateEnd
170
+ forViewWithTag:sender.reactTag
171
+ withExtraData:[RNGestureHandlerEventExtraData forPointerInside:NO]];
172
+ } else {
173
+ [self sendEventsInState:RNGestureHandlerStateActive
174
+ forViewWithTag:sender.reactTag
175
+ withExtraData:[RNGestureHandlerEventExtraData forPointerInside:NO]];
176
+ }
173
177
  }
174
178
 
175
179
  - (void)handleDragEnter:(UIView *)sender forEvent:(UIEvent *)event
176
180
  {
177
- [self sendEventsInState:RNGestureHandlerStateActive
178
- forViewWithTag:sender.reactTag
179
- withExtraData:[RNGestureHandlerEventExtraData forPointerInside:YES]];
181
+ [self sendEventsInState:RNGestureHandlerStateActive
182
+ forViewWithTag:sender.reactTag
183
+ withExtraData:[RNGestureHandlerEventExtraData forPointerInside:YES]];
180
184
  }
181
185
 
182
186
  - (void)handleTouchCancel:(UIView *)sender forEvent:(UIEvent *)event
183
187
  {
184
- [self sendEventsInState:RNGestureHandlerStateCancelled
185
- forViewWithTag:sender.reactTag
186
- withExtraData:[RNGestureHandlerEventExtraData forPointerInside:NO]];
188
+ [self sendEventsInState:RNGestureHandlerStateCancelled
189
+ forViewWithTag:sender.reactTag
190
+ withExtraData:[RNGestureHandlerEventExtraData forPointerInside:NO]];
187
191
  }
188
192
 
189
193
  @end
@@ -26,19 +26,17 @@
26
26
  @property (nonatomic) CGFloat failOffsetYEnd;
27
27
  @property (nonatomic) CGFloat activateAfterLongPress;
28
28
 
29
-
30
- - (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler;
29
+ - (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler;
31
30
 
32
31
  @end
33
32
 
34
-
35
33
  @implementation RNBetterPanGestureRecognizer {
36
34
  __weak RNGestureHandler *_gestureHandler;
37
35
  NSUInteger _realMinimumNumberOfTouches;
38
36
  BOOL _hasCustomActivationCriteria;
39
37
  }
40
38
 
41
- - (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler
39
+ - (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler
42
40
  {
43
41
  if ((self = [super initWithTarget:gestureHandler action:@selector(handleGesture:)])) {
44
42
  _gestureHandler = gestureHandler;
@@ -96,9 +94,9 @@
96
94
  }
97
95
  #endif
98
96
  [super touchesBegan:touches withEvent:event];
99
- [self triggerAction];
100
97
  [_gestureHandler.pointerTracker touchesBegan:touches withEvent:event];
101
-
98
+ [self triggerAction];
99
+
102
100
  if (!isnan(_activateAfterLongPress)) {
103
101
  [self performSelector:@selector(activateAfterLongPress) withObject:nil afterDelay:_activateAfterLongPress];
104
102
  }
@@ -108,7 +106,7 @@
108
106
  {
109
107
  [super touchesMoved:touches withEvent:event];
110
108
  [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event];
111
-
109
+
112
110
  if (self.state == UIGestureRecognizerStatePossible && [self shouldFailUnderCustomCriteria]) {
113
111
  self.state = UIGestureRecognizerStateFailed;
114
112
  return;
@@ -119,14 +117,14 @@
119
117
  // then UIGestureRecognizer's sate machine will only transition to
120
118
  // UIGestureRecognizerStateCancelled even if you set the state to
121
119
  // UIGestureRecognizerStateFailed here. Making the behavior explicit.
122
- self.state = (self.state == UIGestureRecognizerStatePossible)
123
- ? UIGestureRecognizerStateFailed
124
- : UIGestureRecognizerStateCancelled;
120
+ self.state = (self.state == UIGestureRecognizerStatePossible) ? UIGestureRecognizerStateFailed
121
+ : UIGestureRecognizerStateCancelled;
125
122
  [self reset];
126
123
  return;
127
124
  }
128
125
  }
129
- if (_hasCustomActivationCriteria && self.state == UIGestureRecognizerStatePossible && [self shouldActivateUnderCustomCriteria]) {
126
+ if (_hasCustomActivationCriteria && self.state == UIGestureRecognizerStatePossible &&
127
+ [self shouldActivateUnderCustomCriteria]) {
130
128
  #if !TARGET_OS_TV
131
129
  super.minimumNumberOfTouches = _realMinimumNumberOfTouches;
132
130
  if ([self numberOfTouches] >= _realMinimumNumberOfTouches) {
@@ -160,10 +158,9 @@
160
158
 
161
159
  - (void)updateHasCustomActivationCriteria
162
160
  {
163
- _hasCustomActivationCriteria = !isnan(_minDistSq)
164
- || !isnan(_minVelocityX) || !isnan(_minVelocityY) || !isnan(_minVelocitySq)
165
- || !isnan(_activeOffsetXStart) || !isnan(_activeOffsetXEnd)
166
- || !isnan(_activeOffsetYStart) || !isnan(_activeOffsetYEnd);
161
+ _hasCustomActivationCriteria = !isnan(_minDistSq) || !isnan(_minVelocityX) || !isnan(_minVelocityY) ||
162
+ !isnan(_minVelocitySq) || !isnan(_activeOffsetXStart) || !isnan(_activeOffsetXEnd) ||
163
+ !isnan(_activeOffsetYStart) || !isnan(_activeOffsetYEnd);
167
164
  }
168
165
 
169
166
  - (BOOL)shouldFailUnderCustomCriteria
@@ -174,7 +171,7 @@
174
171
  [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(activateAfterLongPress) object:nil];
175
172
  return YES;
176
173
  }
177
-
174
+
178
175
  if (!isnan(_failOffsetXStart) && trans.x < _failOffsetXStart) {
179
176
  return YES;
180
177
  }
@@ -205,11 +202,11 @@
205
202
  if (!isnan(_activeOffsetYEnd) && trans.y > _activeOffsetYEnd) {
206
203
  return YES;
207
204
  }
208
-
205
+
209
206
  if (TEST_MIN_IF_NOT_NAN(VEC_LEN_SQ(trans), _minDistSq)) {
210
207
  return YES;
211
208
  }
212
-
209
+
213
210
  CGPoint velocity = [self velocityInView:self.view];
214
211
  if (TEST_MIN_IF_NOT_NAN(velocity.x, _minVelocityX)) {
215
212
  return YES;
@@ -220,7 +217,7 @@
220
217
  if (TEST_MIN_IF_NOT_NAN(VEC_LEN_SQ(velocity), _minVelocitySq)) {
221
218
  return YES;
222
219
  }
223
-
220
+
224
221
  return NO;
225
222
  }
226
223
 
@@ -269,7 +266,7 @@
269
266
  {
270
267
  [super configure:config];
271
268
  RNBetterPanGestureRecognizer *recognizer = (RNBetterPanGestureRecognizer *)_recognizer;
272
-
269
+
273
270
  APPLY_FLOAT_PROP(minVelocityX);
274
271
  APPLY_FLOAT_PROP(minVelocityY);
275
272
  APPLY_FLOAT_PROP(activeOffsetXStart);
@@ -284,7 +281,7 @@
284
281
  #if !TARGET_OS_TV && __IPHONE_OS_VERSION_MAX_ALLOWED >= 130400
285
282
  if (@available(iOS 13.4, *)) {
286
283
  bool enableTrackpadTwoFingerGesture = [RCTConvert BOOL:config[@"enableTrackpadTwoFingerGesture"]];
287
- if(enableTrackpadTwoFingerGesture){
284
+ if (enableTrackpadTwoFingerGesture) {
288
285
  recognizer.allowedScrollTypesMask = UIScrollTypeMaskAll;
289
286
  }
290
287
  }
@@ -292,19 +289,19 @@
292
289
  APPLY_NAMED_INT_PROP(minimumNumberOfTouches, @"minPointers");
293
290
  APPLY_NAMED_INT_PROP(maximumNumberOfTouches, @"maxPointers");
294
291
  #endif
295
-
292
+
296
293
  id prop = config[@"minDist"];
297
294
  if (prop != nil) {
298
295
  CGFloat dist = [RCTConvert CGFloat:prop];
299
296
  recognizer.minDistSq = dist * dist;
300
297
  }
301
-
298
+
302
299
  prop = config[@"minVelocity"];
303
300
  if (prop != nil) {
304
301
  CGFloat velocity = [RCTConvert CGFloat:prop];
305
302
  recognizer.minVelocitySq = velocity * velocity;
306
303
  }
307
-
304
+
308
305
  prop = config[@"activateAfterLongPress"];
309
306
  if (prop != nil) {
310
307
  recognizer.activateAfterLongPress = [RCTConvert CGFloat:prop] / 1000.0;
@@ -313,23 +310,22 @@
313
310
  [recognizer updateHasCustomActivationCriteria];
314
311
  }
315
312
 
316
- - (BOOL) gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
313
+ - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
317
314
  {
318
315
  RNGestureHandlerState savedState = _lastState;
319
316
  BOOL shouldBegin = [super gestureRecognizerShouldBegin:gestureRecognizer];
320
317
  _lastState = savedState;
321
-
318
+
322
319
  return shouldBegin;
323
320
  }
324
321
 
325
322
  - (RNGestureHandlerEventExtraData *)eventExtraData:(UIPanGestureRecognizer *)recognizer
326
323
  {
327
- return [RNGestureHandlerEventExtraData
328
- forPan:[recognizer locationInView:recognizer.view]
329
- withAbsolutePosition:[recognizer locationInView:recognizer.view.window]
330
- withTranslation:[recognizer translationInView:recognizer.view.window]
331
- withVelocity:[recognizer velocityInView:recognizer.view.window]
332
- withNumberOfTouches:recognizer.numberOfTouches];
324
+ return [RNGestureHandlerEventExtraData forPan:[recognizer locationInView:recognizer.view]
325
+ withAbsolutePosition:[recognizer locationInView:recognizer.view.window]
326
+ withTranslation:[recognizer translationInView:recognizer.view.window]
327
+ withVelocity:[recognizer velocityInView:recognizer.view.window]
328
+ withNumberOfTouches:recognizer.numberOfTouches];
333
329
  }
334
330
 
335
331
  @end
@@ -13,7 +13,7 @@
13
13
  #if !TARGET_OS_TV
14
14
  @interface RNBetterPinchRecognizer : UIPinchGestureRecognizer
15
15
 
16
- - (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler;
16
+ - (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler;
17
17
 
18
18
  @end
19
19
 
@@ -74,22 +74,21 @@
74
74
 
75
75
  - (instancetype)initWithTag:(NSNumber *)tag
76
76
  {
77
- if ((self = [super initWithTag:tag])) {
77
+ if ((self = [super initWithTag:tag])) {
78
78
  #if !TARGET_OS_TV
79
- _recognizer = [[RNBetterPinchRecognizer alloc] initWithGestureHandler:self];
79
+ _recognizer = [[RNBetterPinchRecognizer alloc] initWithGestureHandler:self];
80
80
  #endif
81
- }
82
- return self;
81
+ }
82
+ return self;
83
83
  }
84
84
 
85
85
  #if !TARGET_OS_TV
86
86
  - (RNGestureHandlerEventExtraData *)eventExtraData:(UIPinchGestureRecognizer *)recognizer
87
87
  {
88
- return [RNGestureHandlerEventExtraData
89
- forPinch:recognizer.scale
90
- withFocalPoint:[recognizer locationInView:recognizer.view]
91
- withVelocity:recognizer.velocity
92
- withNumberOfTouches:recognizer.numberOfTouches];
88
+ return [RNGestureHandlerEventExtraData forPinch:recognizer.scale
89
+ withFocalPoint:[recognizer locationInView:recognizer.view]
90
+ withVelocity:recognizer.velocity
91
+ withNumberOfTouches:recognizer.numberOfTouches];
93
92
  }
94
93
  #endif
95
94
 
@@ -11,7 +11,7 @@
11
11
  #if !TARGET_OS_TV
12
12
  @interface RNBetterRotationRecognizer : UIRotationGestureRecognizer
13
13
 
14
- - (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler;
14
+ - (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler;
15
15
 
16
16
  @end
17
17
 
@@ -35,7 +35,6 @@
35
35
  [_gestureHandler handleGesture:recognizer];
36
36
  }
37
37
 
38
-
39
38
  - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
40
39
  {
41
40
  [super touchesBegan:touches withEvent:event];
@@ -73,24 +72,22 @@
73
72
 
74
73
  - (instancetype)initWithTag:(NSNumber *)tag
75
74
  {
76
- if ((self = [super initWithTag:tag])) {
77
- #if !TARGET_OS_TV
78
- _recognizer = [[RNBetterRotationRecognizer alloc] initWithGestureHandler:self];
79
- #endif
80
- }
81
- return self;
75
+ if ((self = [super initWithTag:tag])) {
76
+ #if !TARGET_OS_TV
77
+ _recognizer = [[RNBetterRotationRecognizer alloc] initWithGestureHandler:self];
78
+ #endif
79
+ }
80
+ return self;
82
81
  }
83
82
 
84
83
  #if !TARGET_OS_TV
85
84
  - (RNGestureHandlerEventExtraData *)eventExtraData:(UIRotationGestureRecognizer *)recognizer
86
85
  {
87
- return [RNGestureHandlerEventExtraData
88
- forRotation:recognizer.rotation
89
- withAnchorPoint:[recognizer locationInView:recognizer.view]
90
- withVelocity:recognizer.velocity
91
- withNumberOfTouches:recognizer.numberOfTouches];
86
+ return [RNGestureHandlerEventExtraData forRotation:recognizer.rotation
87
+ withAnchorPoint:[recognizer locationInView:recognizer.view]
88
+ withVelocity:recognizer.velocity
89
+ withNumberOfTouches:recognizer.numberOfTouches];
92
90
  }
93
91
  #endif
94
92
 
95
93
  @end
96
-