react-native-gesture-handler 2.8.0 → 2.10.0

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 (285) hide show
  1. package/README.md +1 -0
  2. package/RNGestureHandler.podspec +2 -2
  3. package/android/build.gradle +107 -65
  4. package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt +1 -1
  5. package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt +2 -0
  6. package/android/src/main/java/com/swmansion/gesturehandler/core/NativeViewGestureHandler.kt +39 -0
  7. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +9 -2
  8. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +14 -2
  9. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +5 -1
  10. package/android/src/main/jni/CMakeLists.txt +10 -44
  11. package/android/src/main/jni/cpp-adapter.cpp +16 -13
  12. package/ios/Handlers/RNFlingHandler.m +39 -37
  13. package/ios/Handlers/RNForceTouchHandler.m +19 -17
  14. package/ios/Handlers/RNLongPressHandler.m +20 -22
  15. package/ios/Handlers/RNManualHandler.m +2 -3
  16. package/ios/Handlers/RNNativeViewHandler.mm +96 -92
  17. package/ios/Handlers/RNPanHandler.m +28 -32
  18. package/ios/Handlers/RNPinchHandler.m +9 -10
  19. package/ios/Handlers/RNRotationHandler.m +11 -14
  20. package/ios/Handlers/RNTapHandler.m +26 -26
  21. package/ios/RNGestureHandler.h +31 -24
  22. package/ios/RNGestureHandler.m +278 -273
  23. package/ios/RNGestureHandlerActionType.h +6 -4
  24. package/ios/RNGestureHandlerButton.m +11 -12
  25. package/ios/RNGestureHandlerButtonComponentView.h +2 -2
  26. package/ios/RNGestureHandlerButtonComponentView.mm +2 -2
  27. package/ios/RNGestureHandlerButtonManager.m +6 -5
  28. package/ios/RNGestureHandlerDirection.h +4 -4
  29. package/ios/RNGestureHandlerEvents.h +3 -4
  30. package/ios/RNGestureHandlerEvents.m +114 -119
  31. package/ios/RNGestureHandlerManager.h +1 -2
  32. package/ios/RNGestureHandlerManager.mm +9 -9
  33. package/ios/RNGestureHandlerModule.h +1 -2
  34. package/ios/RNGestureHandlerModule.mm +142 -138
  35. package/ios/RNGestureHandlerPointerTracker.h +1 -1
  36. package/ios/RNGestureHandlerPointerTracker.m +40 -37
  37. package/ios/RNGestureHandlerRegistry.h +3 -1
  38. package/ios/RNGestureHandlerRegistry.m +24 -22
  39. package/ios/RNGestureHandlerRootViewComponentView.mm +2 -2
  40. package/ios/RNGestureHandlerState.h +6 -6
  41. package/ios/RNGestureHandlerStateManager.h +1 -1
  42. package/ios/RNManualActivationRecognizer.m +9 -9
  43. package/ios/RNRootViewGestureRecognizer.m +39 -42
  44. package/lib/commonjs/EnableNewWebImplementation.js +35 -0
  45. package/lib/commonjs/EnableNewWebImplementation.js.map +1 -0
  46. package/lib/commonjs/GestureHandlerRootViewContext.js +15 -0
  47. package/lib/commonjs/GestureHandlerRootViewContext.js.map +1 -0
  48. package/lib/commonjs/RNGestureHandlerModule.macos.js +6 -6
  49. package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -1
  50. package/lib/commonjs/RNGestureHandlerModule.web.js +6 -6
  51. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
  52. package/lib/commonjs/RNGestureHandlerModule.windows.js +6 -6
  53. package/lib/commonjs/RNGestureHandlerModule.windows.js.map +1 -1
  54. package/lib/commonjs/components/DrawerLayout.js.map +1 -1
  55. package/lib/commonjs/components/GestureComponents.web.js +6 -5
  56. package/lib/commonjs/components/GestureComponents.web.js.map +1 -1
  57. package/lib/commonjs/components/GestureHandlerButton.js +3 -5
  58. package/lib/commonjs/components/GestureHandlerButton.js.map +1 -1
  59. package/lib/commonjs/{GestureHandlerRootView.android.js → components/GestureHandlerRootView.android.js} +8 -7
  60. package/lib/commonjs/components/GestureHandlerRootView.android.js.map +1 -0
  61. package/lib/commonjs/{GestureHandlerRootView.js → components/GestureHandlerRootView.js} +8 -2
  62. package/lib/commonjs/components/GestureHandlerRootView.js.map +1 -0
  63. package/lib/commonjs/{GestureHandlerRootView.web.js → components/GestureHandlerRootView.web.js} +7 -1
  64. package/lib/commonjs/components/GestureHandlerRootView.web.js.map +1 -0
  65. package/lib/commonjs/components/Swipeable.js +17 -3
  66. package/lib/commonjs/components/Swipeable.js.map +1 -1
  67. package/lib/commonjs/{gestureHandlerRootHOC.js → components/gestureHandlerRootHOC.js} +2 -1
  68. package/lib/commonjs/components/gestureHandlerRootHOC.js.map +1 -0
  69. package/lib/commonjs/handlers/LongPressGestureHandler.js +3 -1
  70. package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -1
  71. package/lib/commonjs/handlers/TapGestureHandler.js +3 -1
  72. package/lib/commonjs/handlers/TapGestureHandler.js.map +1 -1
  73. package/lib/commonjs/handlers/createHandler.js +21 -13
  74. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  75. package/lib/commonjs/handlers/gestureHandlerCommon.js +5 -4
  76. package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
  77. package/lib/commonjs/handlers/gestures/GestureDetector.js +89 -37
  78. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
  79. package/lib/commonjs/handlers/gestures/longPressGesture.js +1 -0
  80. package/lib/commonjs/handlers/gestures/longPressGesture.js.map +1 -1
  81. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js +22 -19
  82. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -1
  83. package/lib/commonjs/handlers/gestures/tapGesture.js +1 -0
  84. package/lib/commonjs/handlers/gestures/tapGesture.js.map +1 -1
  85. package/lib/commonjs/index.js +16 -4
  86. package/lib/commonjs/index.js.map +1 -1
  87. package/lib/commonjs/utils.js +0 -6
  88. package/lib/commonjs/utils.js.map +1 -1
  89. package/lib/commonjs/web/handlers/FlingGestureHandler.js +0 -5
  90. package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
  91. package/lib/commonjs/web/handlers/GestureHandler.js +3 -0
  92. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
  93. package/lib/commonjs/web/handlers/LongPressGestureHandler.js +0 -1
  94. package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
  95. package/lib/commonjs/web/handlers/ManualGestureHandler.js +0 -5
  96. package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -1
  97. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +0 -6
  98. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
  99. package/lib/commonjs/web/handlers/PanGestureHandler.js +2 -12
  100. package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
  101. package/lib/commonjs/web/handlers/PinchGestureHandler.js +0 -5
  102. package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
  103. package/lib/commonjs/web/handlers/RotationGestureHandler.js +0 -6
  104. package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
  105. package/lib/commonjs/web/handlers/TapGestureHandler.js +0 -7
  106. package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
  107. package/lib/commonjs/web/tools/CircularBuffer.js +59 -0
  108. package/lib/commonjs/web/tools/CircularBuffer.js.map +1 -0
  109. package/lib/commonjs/web/tools/LeastSquareSolver.js +204 -0
  110. package/lib/commonjs/web/tools/LeastSquareSolver.js.map +1 -0
  111. package/lib/commonjs/web/tools/PointerEventManager.js +27 -0
  112. package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
  113. package/lib/commonjs/web/tools/PointerTracker.js +11 -7
  114. package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
  115. package/lib/commonjs/web/tools/VelocityTracker.js +111 -0
  116. package/lib/commonjs/web/tools/VelocityTracker.js.map +1 -0
  117. package/lib/commonjs/web_hammer/GestureHandler.js +1 -1
  118. package/lib/commonjs/web_hammer/GestureHandler.js.map +1 -1
  119. package/lib/module/EnableNewWebImplementation.js +22 -0
  120. package/lib/module/EnableNewWebImplementation.js.map +1 -0
  121. package/lib/module/GestureHandlerRootViewContext.js +3 -0
  122. package/lib/module/GestureHandlerRootViewContext.js.map +1 -0
  123. package/lib/module/RNGestureHandlerModule.macos.js +6 -6
  124. package/lib/module/RNGestureHandlerModule.macos.js.map +1 -1
  125. package/lib/module/RNGestureHandlerModule.web.js +6 -6
  126. package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
  127. package/lib/module/RNGestureHandlerModule.windows.js +6 -6
  128. package/lib/module/RNGestureHandlerModule.windows.js.map +1 -1
  129. package/lib/module/components/DrawerLayout.js.map +1 -1
  130. package/lib/module/components/GestureComponents.web.js +5 -6
  131. package/lib/module/components/GestureComponents.web.js.map +1 -1
  132. package/lib/module/components/GestureHandlerButton.js +1 -4
  133. package/lib/module/components/GestureHandlerButton.js.map +1 -1
  134. package/lib/module/components/GestureHandlerRootView.android.js +14 -0
  135. package/lib/module/components/GestureHandlerRootView.android.js.map +1 -0
  136. package/lib/module/{GestureHandlerRootView.js → components/GestureHandlerRootView.js} +5 -2
  137. package/lib/module/components/GestureHandlerRootView.js.map +1 -0
  138. package/lib/module/components/GestureHandlerRootView.web.js +9 -0
  139. package/lib/module/components/GestureHandlerRootView.web.js.map +1 -0
  140. package/lib/module/components/Swipeable.js +17 -3
  141. package/lib/module/components/Swipeable.js.map +1 -1
  142. package/lib/module/{gestureHandlerRootHOC.js → components/gestureHandlerRootHOC.js} +2 -1
  143. package/lib/module/components/gestureHandlerRootHOC.js.map +1 -0
  144. package/lib/module/handlers/LongPressGestureHandler.js +3 -1
  145. package/lib/module/handlers/LongPressGestureHandler.js.map +1 -1
  146. package/lib/module/handlers/TapGestureHandler.js +3 -1
  147. package/lib/module/handlers/TapGestureHandler.js.map +1 -1
  148. package/lib/module/handlers/createHandler.js +20 -13
  149. package/lib/module/handlers/createHandler.js.map +1 -1
  150. package/lib/module/handlers/gestureHandlerCommon.js +5 -4
  151. package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
  152. package/lib/module/handlers/gestures/GestureDetector.js +89 -38
  153. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
  154. package/lib/module/handlers/gestures/longPressGesture.js +1 -0
  155. package/lib/module/handlers/gestures/longPressGesture.js.map +1 -1
  156. package/lib/module/handlers/gestures/reanimatedWrapper.js +19 -16
  157. package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -1
  158. package/lib/module/handlers/gestures/tapGesture.js +1 -0
  159. package/lib/module/handlers/gestures/tapGesture.js.map +1 -1
  160. package/lib/module/index.js +4 -4
  161. package/lib/module/index.js.map +1 -1
  162. package/lib/module/utils.js +0 -4
  163. package/lib/module/utils.js.map +1 -1
  164. package/lib/module/web/handlers/FlingGestureHandler.js +0 -5
  165. package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
  166. package/lib/module/web/handlers/GestureHandler.js +3 -0
  167. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  168. package/lib/module/web/handlers/LongPressGestureHandler.js +0 -1
  169. package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
  170. package/lib/module/web/handlers/ManualGestureHandler.js +0 -5
  171. package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -1
  172. package/lib/module/web/handlers/NativeViewGestureHandler.js +0 -6
  173. package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
  174. package/lib/module/web/handlers/PanGestureHandler.js +2 -9
  175. package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
  176. package/lib/module/web/handlers/PinchGestureHandler.js +0 -5
  177. package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
  178. package/lib/module/web/handlers/RotationGestureHandler.js +0 -6
  179. package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
  180. package/lib/module/web/handlers/TapGestureHandler.js +0 -7
  181. package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
  182. package/lib/module/web/tools/CircularBuffer.js +50 -0
  183. package/lib/module/web/tools/CircularBuffer.js.map +1 -0
  184. package/lib/module/web/tools/LeastSquareSolver.js +195 -0
  185. package/lib/module/web/tools/LeastSquareSolver.js.map +1 -0
  186. package/lib/module/web/tools/PointerEventManager.js +27 -0
  187. package/lib/module/web/tools/PointerEventManager.js.map +1 -1
  188. package/lib/module/web/tools/PointerTracker.js +8 -7
  189. package/lib/module/web/tools/PointerTracker.js.map +1 -1
  190. package/lib/module/web/tools/VelocityTracker.js +98 -0
  191. package/lib/module/web/tools/VelocityTracker.js.map +1 -0
  192. package/lib/module/web_hammer/GestureHandler.js +1 -1
  193. package/lib/module/web_hammer/GestureHandler.js.map +1 -1
  194. package/lib/typescript/EnableNewWebImplementation.d.ts +3 -0
  195. package/lib/typescript/GestureHandlerRootViewContext.d.ts +3 -0
  196. package/lib/typescript/components/DrawerLayout.d.ts +3 -1
  197. package/lib/typescript/components/GestureComponents.web.d.ts +1 -1
  198. package/lib/typescript/components/Swipeable.d.ts +14 -2
  199. package/lib/typescript/components/gestureHandlerRootHOC.d.ts +3 -0
  200. package/lib/typescript/index.d.ts +4 -4
  201. package/lib/typescript/{fabric → specs}/RNGestureHandlerButtonNativeComponent.d.ts +1 -1
  202. package/lib/typescript/{fabric → specs}/RNGestureHandlerRootViewNativeComponent.d.ts +1 -1
  203. package/lib/typescript/utils.d.ts +0 -1
  204. package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +0 -1
  205. package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +0 -1
  206. package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +0 -1
  207. package/lib/typescript/web/handlers/PanGestureHandler.d.ts +0 -1
  208. package/lib/typescript/web/handlers/PinchGestureHandler.d.ts +0 -1
  209. package/lib/typescript/web/handlers/RotationGestureHandler.d.ts +0 -1
  210. package/lib/typescript/web/handlers/TapGestureHandler.d.ts +0 -1
  211. package/lib/typescript/web/tools/CircularBuffer.d.ts +11 -0
  212. package/lib/typescript/web/tools/LeastSquareSolver.d.ts +12 -0
  213. package/lib/typescript/web/tools/PointerEventManager.d.ts +2 -0
  214. package/lib/typescript/web/tools/PointerTracker.d.ts +1 -0
  215. package/lib/typescript/web/tools/VelocityTracker.d.ts +13 -0
  216. package/package.json +6 -7
  217. package/src/EnableNewWebImplementation.ts +35 -0
  218. package/src/GestureHandlerRootViewContext.ts +3 -0
  219. package/src/RNGestureHandlerModule.macos.ts +6 -6
  220. package/src/RNGestureHandlerModule.web.ts +6 -6
  221. package/src/RNGestureHandlerModule.windows.ts +6 -6
  222. package/src/components/DrawerLayout.tsx +8 -4
  223. package/src/components/GestureComponents.web.tsx +5 -6
  224. package/src/components/GestureHandlerButton.tsx +2 -7
  225. package/src/components/GestureHandlerRootView.android.tsx +24 -0
  226. package/src/{GestureHandlerRootView.tsx → components/GestureHandlerRootView.tsx} +7 -2
  227. package/src/{GestureHandlerRootView.web.tsx → components/GestureHandlerRootView.web.tsx} +6 -1
  228. package/src/components/Swipeable.tsx +43 -12
  229. package/src/{gestureHandlerRootHOC.tsx → components/gestureHandlerRootHOC.tsx} +4 -1
  230. package/src/handlers/LongPressGestureHandler.ts +3 -1
  231. package/src/handlers/TapGestureHandler.ts +3 -1
  232. package/src/handlers/createHandler.tsx +20 -9
  233. package/src/handlers/gestureHandlerCommon.ts +5 -6
  234. package/src/handlers/gestures/GestureDetector.tsx +99 -36
  235. package/src/handlers/gestures/longPressGesture.ts +1 -0
  236. package/src/handlers/gestures/reanimatedWrapper.ts +21 -20
  237. package/src/handlers/gestures/tapGesture.ts +1 -0
  238. package/src/index.ts +7 -3
  239. package/src/utils.ts +0 -5
  240. package/src/web/handlers/FlingGestureHandler.ts +0 -5
  241. package/src/web/handlers/GestureHandler.ts +3 -0
  242. package/src/web/handlers/LongPressGestureHandler.ts +0 -1
  243. package/src/web/handlers/ManualGestureHandler.ts +0 -5
  244. package/src/web/handlers/NativeViewGestureHandler.ts +0 -6
  245. package/src/web/handlers/PanGestureHandler.ts +2 -9
  246. package/src/web/handlers/PinchGestureHandler.ts +0 -5
  247. package/src/web/handlers/RotationGestureHandler.ts +0 -7
  248. package/src/web/handlers/TapGestureHandler.ts +0 -7
  249. package/src/web/tools/CircularBuffer.ts +42 -0
  250. package/src/web/tools/LeastSquareSolver.ts +182 -0
  251. package/src/web/tools/PointerEventManager.ts +29 -0
  252. package/src/web/tools/PointerTracker.ts +7 -7
  253. package/src/web/tools/VelocityTracker.ts +98 -0
  254. package/src/web_hammer/GestureHandler.ts +1 -1
  255. package/lib/commonjs/EnableExperimentalWebImplementation.js +0 -31
  256. package/lib/commonjs/EnableExperimentalWebImplementation.js.map +0 -1
  257. package/lib/commonjs/GestureHandlerRootView.android.js.map +0 -1
  258. package/lib/commonjs/GestureHandlerRootView.js.map +0 -1
  259. package/lib/commonjs/GestureHandlerRootView.web.js.map +0 -1
  260. package/lib/commonjs/gestureHandlerRootHOC.js.map +0 -1
  261. package/lib/module/EnableExperimentalWebImplementation.js +0 -20
  262. package/lib/module/EnableExperimentalWebImplementation.js.map +0 -1
  263. package/lib/module/GestureHandlerRootView.android.js +0 -14
  264. package/lib/module/GestureHandlerRootView.android.js.map +0 -1
  265. package/lib/module/GestureHandlerRootView.js.map +0 -1
  266. package/lib/module/GestureHandlerRootView.web.js +0 -6
  267. package/lib/module/GestureHandlerRootView.web.js.map +0 -1
  268. package/lib/module/gestureHandlerRootHOC.js.map +0 -1
  269. package/lib/typescript/EnableExperimentalWebImplementation.d.ts +0 -2
  270. package/lib/typescript/gestureHandlerRootHOC.d.ts +0 -3
  271. package/src/EnableExperimentalWebImplementation.ts +0 -27
  272. package/src/GestureHandlerRootView.android.tsx +0 -24
  273. /package/lib/commonjs/{fabric → specs}/RNGestureHandlerButtonNativeComponent.js +0 -0
  274. /package/lib/commonjs/{fabric → specs}/RNGestureHandlerButtonNativeComponent.js.map +0 -0
  275. /package/lib/commonjs/{fabric → specs}/RNGestureHandlerRootViewNativeComponent.js +0 -0
  276. /package/lib/commonjs/{fabric → specs}/RNGestureHandlerRootViewNativeComponent.js.map +0 -0
  277. /package/lib/module/{fabric → specs}/RNGestureHandlerButtonNativeComponent.js +0 -0
  278. /package/lib/module/{fabric → specs}/RNGestureHandlerButtonNativeComponent.js.map +0 -0
  279. /package/lib/module/{fabric → specs}/RNGestureHandlerRootViewNativeComponent.js +0 -0
  280. /package/lib/module/{fabric → specs}/RNGestureHandlerRootViewNativeComponent.js.map +0 -0
  281. /package/lib/typescript/{GestureHandlerRootView.android.d.ts → components/GestureHandlerRootView.android.d.ts} +0 -0
  282. /package/lib/typescript/{GestureHandlerRootView.d.ts → components/GestureHandlerRootView.d.ts} +0 -0
  283. /package/lib/typescript/{GestureHandlerRootView.web.d.ts → components/GestureHandlerRootView.web.d.ts} +0 -0
  284. /package/src/{fabric → specs}/RNGestureHandlerButtonNativeComponent.ts +0 -0
  285. /package/src/{fabric → specs}/RNGestureHandlerRootViewNativeComponent.ts +0 -0
@@ -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
-
@@ -12,8 +12,8 @@
12
12
 
13
13
  #import <React/RCTConvert.h>
14
14
 
15
- // RNBetterTapGestureRecognizer extends UIGestureRecognizer instead of UITapGestureRecognizer
16
- // because the latter does not allow for parameters like maxDelay, maxDuration, minPointers,
15
+ // RNBetterTapGestureRecognizer extends UIGestureRecognizer instead of UITapGestureRecognizer
16
+ // because the latter does not allow for parameters like maxDelay, maxDuration, minPointers,
17
17
  // maxDelta to be configured. Using our custom implementation of tap recognizer we are able
18
18
  // to support these.
19
19
 
@@ -27,7 +27,7 @@
27
27
  @property (nonatomic) CGFloat maxDeltaY;
28
28
  @property (nonatomic) NSInteger minPointers;
29
29
 
30
- - (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler;
30
+ - (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler;
31
31
 
32
32
  @end
33
33
 
@@ -43,7 +43,7 @@ static const NSInteger defaultMinPointers = 1;
43
43
  static const CGFloat defaultMaxDelay = 0.2;
44
44
  static const NSTimeInterval defaultMaxDuration = 0.5;
45
45
 
46
- - (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler
46
+ - (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler
47
47
  {
48
48
  if ((self = [super initWithTarget:gestureHandler action:@selector(handleGesture:)])) {
49
49
  _gestureHandler = gestureHandler;
@@ -73,7 +73,7 @@ static const NSTimeInterval defaultMaxDuration = 0.5;
73
73
  {
74
74
  [super touchesBegan:touches withEvent:event];
75
75
  [_gestureHandler.pointerTracker touchesBegan:touches withEvent:event];
76
-
76
+
77
77
  if (_tapsSoFar == 0) {
78
78
  // this recognizer sends UNDETERMINED -> BEGAN state change event before gestureRecognizerShouldBegin
79
79
  // is called (it resets the gesture handler), making it send whatever the last known state as oldState
@@ -100,28 +100,29 @@ static const NSTimeInterval defaultMaxDuration = 0.5;
100
100
  {
101
101
  [super touchesMoved:touches withEvent:event];
102
102
  [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event];
103
-
103
+
104
104
  NSInteger numberOfTouches = [touches count];
105
105
  if (numberOfTouches > _maxNumberOfTouches) {
106
106
  _maxNumberOfTouches = numberOfTouches;
107
107
  }
108
-
108
+
109
109
  if (self.state != UIGestureRecognizerStatePossible) {
110
110
  return;
111
111
  }
112
-
112
+
113
113
  if ([self shouldFailUnderCustomCriteria]) {
114
114
  self.state = UIGestureRecognizerStateFailed;
115
115
  [self triggerAction];
116
116
  [self reset];
117
117
  return;
118
118
  }
119
-
119
+
120
120
  self.state = UIGestureRecognizerStatePossible;
121
121
  [self triggerAction];
122
122
  }
123
123
 
124
- - (CGPoint)translationInView {
124
+ - (CGPoint)translationInView
125
+ {
125
126
  CGPoint currentPosition = [self locationInView:self.view.window];
126
127
  return CGPointMake(currentPosition.x - _initPosition.x, currentPosition.y - _initPosition.y);
127
128
  }
@@ -133,7 +134,7 @@ static const NSTimeInterval defaultMaxDuration = 0.5;
133
134
  return YES;
134
135
  }
135
136
  }
136
-
137
+
137
138
  CGPoint trans = [self translationInView];
138
139
  if (TEST_MAX_IF_NOT_NAN(fabs(trans.x), _maxDeltaX)) {
139
140
  return YES;
@@ -151,7 +152,7 @@ static const NSTimeInterval defaultMaxDuration = 0.5;
151
152
  {
152
153
  [super touchesEnded:touches withEvent:event];
153
154
  [_gestureHandler.pointerTracker touchesEnded:touches withEvent:event];
154
-
155
+
155
156
  if (_numberOfTaps == _tapsSoFar && _maxNumberOfTouches >= _minPointers) {
156
157
  self.state = UIGestureRecognizerStateEnded;
157
158
  [self reset];
@@ -164,7 +165,7 @@ static const NSTimeInterval defaultMaxDuration = 0.5;
164
165
  {
165
166
  [super touchesCancelled:touches withEvent:event];
166
167
  [_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event];
167
-
168
+
168
169
  self.state = UIGestureRecognizerStateCancelled;
169
170
  [self reset];
170
171
  }
@@ -186,7 +187,7 @@ static const NSTimeInterval defaultMaxDuration = 0.5;
186
187
  @end
187
188
 
188
189
  @implementation RNTapGestureHandler {
189
- RNGestureHandlerEventExtraData * _lastData;
190
+ RNGestureHandlerEventExtraData *_lastData;
190
191
  }
191
192
 
192
193
  - (instancetype)initWithTag:(NSNumber *)tag
@@ -201,7 +202,7 @@ static const NSTimeInterval defaultMaxDuration = 0.5;
201
202
  {
202
203
  [super resetConfig];
203
204
  RNBetterTapGestureRecognizer *recognizer = (RNBetterTapGestureRecognizer *)_recognizer;
204
-
205
+
205
206
  recognizer.numberOfTaps = defaultNumberOfTaps;
206
207
  recognizer.minPointers = defaultMinPointers;
207
208
  recognizer.maxDeltaX = NAN;
@@ -215,22 +216,22 @@ static const NSTimeInterval defaultMaxDuration = 0.5;
215
216
  {
216
217
  [super configure:config];
217
218
  RNBetterTapGestureRecognizer *recognizer = (RNBetterTapGestureRecognizer *)_recognizer;
218
-
219
+
219
220
  APPLY_INT_PROP(numberOfTaps);
220
221
  APPLY_INT_PROP(minPointers);
221
222
  APPLY_FLOAT_PROP(maxDeltaX);
222
223
  APPLY_FLOAT_PROP(maxDeltaY);
223
-
224
+
224
225
  id prop = config[@"maxDelayMs"];
225
226
  if (prop != nil) {
226
227
  recognizer.maxDelay = [RCTConvert CGFloat:prop] / 1000.0;
227
228
  }
228
-
229
+
229
230
  prop = config[@"maxDurationMs"];
230
231
  if (prop != nil) {
231
232
  recognizer.maxDuration = [RCTConvert CGFloat:prop] / 1000.0;
232
233
  }
233
-
234
+
234
235
  prop = config[@"maxDist"];
235
236
  if (prop != nil) {
236
237
  CGFloat dist = [RCTConvert CGFloat:prop];
@@ -240,12 +241,12 @@ static const NSTimeInterval defaultMaxDuration = 0.5;
240
241
 
241
242
  - (RNGestureHandlerEventExtraData *)eventExtraData:(UIGestureRecognizer *)recognizer
242
243
  {
243
- if (recognizer.state == UIGestureRecognizerStateEnded) {
244
- return _lastData;
245
- }
246
-
247
- _lastData = [super eventExtraData:recognizer];
244
+ if (recognizer.state == UIGestureRecognizerStateEnded) {
248
245
  return _lastData;
246
+ }
247
+
248
+ _lastData = [super eventExtraData:recognizer];
249
+ return _lastData;
249
250
  }
250
251
 
251
252
  - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
@@ -257,9 +258,8 @@ static const NSTimeInterval defaultMaxDuration = 0.5;
257
258
  RNGestureHandlerState savedState = _lastState;
258
259
  BOOL shouldBegin = [super gestureRecognizerShouldBegin:gestureRecognizer];
259
260
  _lastState = savedState;
260
-
261
+
261
262
  return shouldBegin;
262
263
  }
263
264
 
264
265
  @end
265
-
@@ -1,28 +1,39 @@
1
1
  #import "RNGestureHandlerActionType.h"
2
- #import "RNGestureHandlerState.h"
3
2
  #import "RNGestureHandlerDirection.h"
4
3
  #import "RNGestureHandlerEvents.h"
5
4
  #import "RNGestureHandlerPointerTracker.h"
5
+ #import "RNGestureHandlerState.h"
6
6
 
7
7
  #import <Foundation/Foundation.h>
8
- #import <UIKit/UIKit.h>
9
8
  #import <React/RCTConvert.h>
9
+ #import <UIKit/UIKit.h>
10
10
 
11
11
  #define VEC_LEN_SQ(pt) (pt.x * pt.x + pt.y * pt.y)
12
12
  #define TEST_MIN_IF_NOT_NAN(value, limit) \
13
- (!isnan(limit) && ((limit < 0 && value <= limit) || (limit >= 0 && value >= limit)))
14
-
15
- #define TEST_MAX_IF_NOT_NAN(value, max) \
16
- (!isnan(max) && ((max < 0 && value < max) || (max >= 0 && value > max)))
17
-
18
- #define APPLY_PROP(recognizer, config, type, prop, propName) do { \
19
- id value = config[propName]; \
20
- if (value != nil) { recognizer.prop = [RCTConvert type:value]; }\
21
- } while(0)
22
-
23
- #define APPLY_FLOAT_PROP(prop) do { APPLY_PROP(recognizer, config, CGFloat, prop, @#prop); } while(0)
24
- #define APPLY_INT_PROP(prop) do { APPLY_PROP(recognizer, config, NSInteger, prop, @#prop); } while(0)
25
- #define APPLY_NAMED_INT_PROP(prop, propName) do { APPLY_PROP(recognizer, config, NSInteger, prop, propName); } while(0)
13
+ (!isnan(limit) && ((limit < 0 && value <= limit) || (limit >= 0 && value >= limit)))
14
+
15
+ #define TEST_MAX_IF_NOT_NAN(value, max) (!isnan(max) && ((max < 0 && value < max) || (max >= 0 && value > max)))
16
+
17
+ #define APPLY_PROP(recognizer, config, type, prop, propName) \
18
+ do { \
19
+ id value = config[propName]; \
20
+ if (value != nil) { \
21
+ recognizer.prop = [RCTConvert type:value]; \
22
+ } \
23
+ } while (0)
24
+
25
+ #define APPLY_FLOAT_PROP(prop) \
26
+ do { \
27
+ APPLY_PROP(recognizer, config, CGFloat, prop, @ #prop); \
28
+ } while (0)
29
+ #define APPLY_INT_PROP(prop) \
30
+ do { \
31
+ APPLY_PROP(recognizer, config, NSInteger, prop, @ #prop); \
32
+ } while (0)
33
+ #define APPLY_NAMED_INT_PROP(prop, propName) \
34
+ do { \
35
+ APPLY_PROP(recognizer, config, NSInteger, prop, propName); \
36
+ } while (0)
26
37
 
27
38
  @protocol RNGestureHandlerEventEmitter
28
39
 
@@ -30,7 +41,6 @@ if (value != nil) { recognizer.prop = [RCTConvert type:value]; }\
30
41
 
31
42
  @end
32
43
 
33
-
34
44
  @protocol RNRootViewGestureRecognizerDelegate <UIGestureRecognizerDelegate>
35
45
 
36
46
  - (void)gestureRecognizer:(nullable UIGestureRecognizer *)gestureRecognizer
@@ -38,12 +48,11 @@ if (value != nil) { recognizer.prop = [RCTConvert type:value]; }\
38
48
 
39
49
  @end
40
50
 
41
-
42
51
  @interface RNGestureHandler : NSObject <UIGestureRecognizerDelegate> {
43
-
44
- @protected UIGestureRecognizer *_recognizer;
45
- @protected RNGestureHandlerState _lastState;
46
-
52
+ @protected
53
+ UIGestureRecognizer *_recognizer;
54
+ @protected
55
+ RNGestureHandlerState _lastState;
47
56
  }
48
57
 
49
58
  + (nullable RNGestureHandler *)findGestureHandlerByRecognizer:(nonnull UIGestureRecognizer *)recognizer;
@@ -76,8 +85,6 @@ if (value != nil) { recognizer.prop = [RCTConvert type:value]; }\
76
85
  forViewWithTag:(nonnull NSNumber *)reactTag
77
86
  withExtraData:(nonnull RNGestureHandlerEventExtraData *)extraData;
78
87
  - (void)sendEvent:(nonnull RNGestureHandlerStateChange *)event;
79
- - (void)sendTouchEventInState:(RNGestureHandlerState)state
80
- forViewWithTag:(nonnull NSNumber *)reactTag;
88
+ - (void)sendTouchEventInState:(RNGestureHandlerState)state forViewWithTag:(nonnull NSNumber *)reactTag;
81
89
 
82
90
  @end
83
-