react-native-gesture-handler 1.10.3 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (382) hide show
  1. package/README.md +7 -6
  2. package/android/build.gradle +49 -1
  3. package/android/common/src/main/java/com/swmansion/common/GestureHandlerStateManager.kt +5 -0
  4. package/android/gradle.properties +19 -0
  5. package/android/lib/src/main/java/com/swmansion/gesturehandler/BaseGestureHandlerInteractionController.kt +18 -0
  6. package/android/lib/src/main/java/com/swmansion/gesturehandler/Extensions.kt +11 -0
  7. package/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.kt +96 -0
  8. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt +713 -0
  9. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerInteractionController.kt +8 -0
  10. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt +562 -0
  11. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistry.kt +8 -0
  12. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistryImpl.kt +21 -0
  13. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureUtils.kt +49 -0
  14. package/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.kt +97 -0
  15. package/android/lib/src/main/java/com/swmansion/gesturehandler/ManualGestureHandler.kt +11 -0
  16. package/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.kt +129 -0
  17. package/android/lib/src/main/java/com/swmansion/gesturehandler/OnTouchEventListener.kt +9 -0
  18. package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.kt +289 -0
  19. package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.kt +88 -0
  20. package/android/lib/src/main/java/com/swmansion/gesturehandler/{PointerEventsConfig.java → PointerEventsConfig.kt} +3 -5
  21. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureDetector.kt +125 -0
  22. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.kt +79 -0
  23. package/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.kt +167 -0
  24. package/android/lib/src/main/java/com/swmansion/gesturehandler/ViewConfigurationHelper.kt +10 -0
  25. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +348 -0
  26. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt +57 -0
  27. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +59 -0
  28. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt +8 -0
  29. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +61 -0
  30. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +686 -0
  31. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerPackage.kt +17 -0
  32. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt +95 -0
  33. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +132 -0
  34. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootInterface.kt +5 -0
  35. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +68 -0
  36. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt +34 -0
  37. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt +66 -0
  38. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt +69 -0
  39. package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt +51 -0
  40. package/ios/Handlers/RNFlingHandler.m +78 -5
  41. package/ios/Handlers/RNForceTouchHandler.m +29 -4
  42. package/ios/Handlers/RNLongPressHandler.m +105 -3
  43. package/ios/Handlers/RNManualHandler.h +4 -0
  44. package/ios/Handlers/RNManualHandler.m +73 -0
  45. package/ios/Handlers/RNNativeViewHandler.m +30 -2
  46. package/ios/Handlers/RNPanHandler.m +64 -4
  47. package/ios/Handlers/RNPinchHandler.m +61 -2
  48. package/ios/Handlers/RNRotationHandler.m +60 -1
  49. package/ios/Handlers/RNTapHandler.m +55 -8
  50. package/ios/RNGestureHandler.h +18 -4
  51. package/ios/RNGestureHandler.m +123 -13
  52. package/ios/RNGestureHandlerEvents.h +9 -0
  53. package/ios/RNGestureHandlerEvents.m +34 -0
  54. package/ios/RNGestureHandlerManager.h +7 -0
  55. package/ios/RNGestureHandlerManager.m +62 -34
  56. package/ios/RNGestureHandlerModule.m +39 -3
  57. package/ios/RNGestureHandlerPointerTracker.h +25 -0
  58. package/ios/RNGestureHandlerPointerTracker.m +237 -0
  59. package/ios/RNGestureHandlerRegistry.h +1 -0
  60. package/ios/RNGestureHandlerRegistry.m +10 -0
  61. package/ios/RNGestureHandlerStateManager.h +5 -0
  62. package/ios/RNManualActivationRecognizer.h +10 -0
  63. package/ios/RNManualActivationRecognizer.m +80 -0
  64. package/ios/RNRootViewGestureRecognizer.m +1 -1
  65. package/ios/RNTouchEventType.h +9 -0
  66. package/lib/commonjs/EventType.js +16 -0
  67. package/lib/commonjs/EventType.js.map +1 -0
  68. package/lib/commonjs/GestureHandlerRootView.android.js +1 -13
  69. package/lib/commonjs/GestureHandlerRootView.android.js.map +1 -1
  70. package/lib/commonjs/GestureHandlerRootView.js +11 -3
  71. package/lib/commonjs/GestureHandlerRootView.js.map +1 -1
  72. package/lib/commonjs/RNGestureHandlerModule.js +3 -1
  73. package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
  74. package/lib/commonjs/RNGestureHandlerModule.web.js +2 -2
  75. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
  76. package/lib/commonjs/components/DrawerLayout.js +41 -37
  77. package/lib/commonjs/components/DrawerLayout.js.map +1 -1
  78. package/lib/commonjs/components/GestureButtons.js.map +1 -1
  79. package/lib/commonjs/components/GestureComponents.js +31 -12
  80. package/lib/commonjs/components/GestureComponents.js.map +1 -1
  81. package/lib/commonjs/components/Swipeable.js +10 -6
  82. package/lib/commonjs/components/Swipeable.js.map +1 -1
  83. package/lib/commonjs/components/touchables/GenericTouchable.js +2 -1
  84. package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
  85. package/lib/commonjs/components/touchables/TouchableOpacity.js +1 -1
  86. package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
  87. package/lib/commonjs/gestureHandlerRootHOC.js +1 -1
  88. package/lib/commonjs/gestureHandlerRootHOC.js.map +1 -1
  89. package/lib/commonjs/handlers/FlingGestureHandler.js +23 -0
  90. package/lib/commonjs/handlers/FlingGestureHandler.js.map +1 -0
  91. package/lib/commonjs/handlers/ForceTouchGestureHandler.js +44 -0
  92. package/lib/commonjs/handlers/ForceTouchGestureHandler.js.map +1 -0
  93. package/lib/commonjs/handlers/LongPressGestureHandler.js +23 -0
  94. package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -0
  95. package/lib/commonjs/handlers/NativeViewGestureHandler.js +6 -4
  96. package/lib/commonjs/handlers/NativeViewGestureHandler.js.map +1 -1
  97. package/lib/commonjs/handlers/PanGestureHandler.js +121 -0
  98. package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -0
  99. package/lib/commonjs/handlers/PinchGestureHandler.js +21 -0
  100. package/lib/commonjs/handlers/PinchGestureHandler.js.map +1 -0
  101. package/lib/commonjs/handlers/RotationGestureHandler.js +21 -0
  102. package/lib/commonjs/handlers/RotationGestureHandler.js.map +1 -0
  103. package/lib/commonjs/handlers/TapGestureHandler.js +23 -0
  104. package/lib/commonjs/handlers/TapGestureHandler.js.map +1 -0
  105. package/lib/commonjs/handlers/createHandler.js +52 -83
  106. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  107. package/lib/commonjs/handlers/gestureHandlerCommon.js +80 -0
  108. package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -0
  109. package/lib/commonjs/handlers/gestures/GestureDetector.js +440 -0
  110. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -0
  111. package/lib/commonjs/handlers/gestures/eventReceiver.js +135 -0
  112. package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -0
  113. package/lib/commonjs/handlers/gestures/flingGesture.js +34 -0
  114. package/lib/commonjs/handlers/gestures/flingGesture.js.map +1 -0
  115. package/lib/commonjs/handlers/gestures/forceTouchGesture.js +65 -0
  116. package/lib/commonjs/handlers/gestures/forceTouchGesture.js.map +1 -0
  117. package/lib/commonjs/handlers/gestures/gesture.js +193 -0
  118. package/lib/commonjs/handlers/gestures/gesture.js.map +1 -0
  119. package/lib/commonjs/handlers/gestures/gestureComposition.js +94 -0
  120. package/lib/commonjs/handlers/gestures/gestureComposition.js.map +1 -0
  121. package/lib/commonjs/handlers/gestures/gestureObjects.js +85 -0
  122. package/lib/commonjs/handlers/gestures/gestureObjects.js.map +1 -0
  123. package/lib/commonjs/handlers/gestures/gestureStateManager.js +58 -0
  124. package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -0
  125. package/lib/commonjs/handlers/gestures/longPressGesture.js +34 -0
  126. package/lib/commonjs/handlers/gestures/longPressGesture.js.map +1 -0
  127. package/lib/commonjs/handlers/gestures/manualGesture.js +31 -0
  128. package/lib/commonjs/handlers/gestures/manualGesture.js.map +1 -0
  129. package/lib/commonjs/handlers/gestures/nativeGesture.js +34 -0
  130. package/lib/commonjs/handlers/gestures/nativeGesture.js.map +1 -0
  131. package/lib/commonjs/handlers/gestures/panGesture.js +144 -0
  132. package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -0
  133. package/lib/commonjs/handlers/gestures/pinchGesture.js +45 -0
  134. package/lib/commonjs/handlers/gestures/pinchGesture.js.map +1 -0
  135. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js +24 -0
  136. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -0
  137. package/lib/commonjs/handlers/gestures/rotationGesture.js +45 -0
  138. package/lib/commonjs/handlers/gestures/rotationGesture.js.map +1 -0
  139. package/lib/commonjs/handlers/gestures/tapGesture.js +59 -0
  140. package/lib/commonjs/handlers/gestures/tapGesture.js.map +1 -0
  141. package/lib/commonjs/handlers/handlersRegistry.js +31 -0
  142. package/lib/commonjs/handlers/handlersRegistry.js.map +1 -0
  143. package/lib/commonjs/index.js +146 -8
  144. package/lib/commonjs/index.js.map +1 -1
  145. package/lib/commonjs/init.js +13 -0
  146. package/lib/commonjs/init.js.map +1 -0
  147. package/lib/commonjs/mocks.js +31 -2
  148. package/lib/commonjs/mocks.js.map +1 -1
  149. package/lib/commonjs/utils.js +15 -0
  150. package/lib/commonjs/utils.js.map +1 -0
  151. package/lib/commonjs/web/Errors.js +1 -1
  152. package/lib/commonjs/web/Errors.js.map +1 -1
  153. package/lib/commonjs/web/GestureHandler.js +4 -6
  154. package/lib/commonjs/web/GestureHandler.js.map +1 -1
  155. package/lib/commonjs/web/NodeManager.js +8 -2
  156. package/lib/commonjs/web/NodeManager.js.map +1 -1
  157. package/lib/module/EventType.js +8 -0
  158. package/lib/module/EventType.js.map +1 -0
  159. package/lib/module/GestureHandlerRootView.android.js +2 -14
  160. package/lib/module/GestureHandlerRootView.android.js.map +1 -1
  161. package/lib/module/GestureHandlerRootView.js +5 -1
  162. package/lib/module/GestureHandlerRootView.js.map +1 -1
  163. package/lib/module/RNGestureHandlerModule.js +3 -1
  164. package/lib/module/RNGestureHandlerModule.js.map +1 -1
  165. package/lib/module/RNGestureHandlerModule.web.js +2 -2
  166. package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
  167. package/lib/module/components/DrawerLayout.js +43 -40
  168. package/lib/module/components/DrawerLayout.js.map +1 -1
  169. package/lib/module/components/GestureButtons.js.map +1 -1
  170. package/lib/module/components/GestureComponents.js +29 -11
  171. package/lib/module/components/GestureComponents.js.map +1 -1
  172. package/lib/module/components/Swipeable.js +9 -6
  173. package/lib/module/components/Swipeable.js.map +1 -1
  174. package/lib/module/components/touchables/GenericTouchable.js +2 -1
  175. package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
  176. package/lib/module/components/touchables/TouchableOpacity.js +1 -1
  177. package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
  178. package/lib/module/gestureHandlerRootHOC.js +1 -1
  179. package/lib/module/gestureHandlerRootHOC.js.map +1 -1
  180. package/lib/module/handlers/FlingGestureHandler.js +10 -0
  181. package/lib/module/handlers/FlingGestureHandler.js.map +1 -0
  182. package/lib/module/handlers/ForceTouchGestureHandler.js +29 -0
  183. package/lib/module/handlers/ForceTouchGestureHandler.js.map +1 -0
  184. package/lib/module/handlers/LongPressGestureHandler.js +10 -0
  185. package/lib/module/handlers/LongPressGestureHandler.js.map +1 -0
  186. package/lib/module/handlers/NativeViewGestureHandler.js +4 -3
  187. package/lib/module/handlers/NativeViewGestureHandler.js.map +1 -1
  188. package/lib/module/handlers/PanGestureHandler.js +106 -0
  189. package/lib/module/handlers/PanGestureHandler.js.map +1 -0
  190. package/lib/module/handlers/PinchGestureHandler.js +9 -0
  191. package/lib/module/handlers/PinchGestureHandler.js.map +1 -0
  192. package/lib/module/handlers/RotationGestureHandler.js +9 -0
  193. package/lib/module/handlers/RotationGestureHandler.js.map +1 -0
  194. package/lib/module/handlers/TapGestureHandler.js +10 -0
  195. package/lib/module/handlers/TapGestureHandler.js.map +1 -0
  196. package/lib/module/handlers/createHandler.js +41 -76
  197. package/lib/module/handlers/createHandler.js.map +1 -1
  198. package/lib/module/handlers/gestureHandlerCommon.js +66 -0
  199. package/lib/module/handlers/gestureHandlerCommon.js.map +1 -0
  200. package/lib/module/handlers/gestures/GestureDetector.js +402 -0
  201. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -0
  202. package/lib/module/handlers/gestures/eventReceiver.js +120 -0
  203. package/lib/module/handlers/gestures/eventReceiver.js.map +1 -0
  204. package/lib/module/handlers/gestures/flingGesture.js +24 -0
  205. package/lib/module/handlers/gestures/flingGesture.js.map +1 -0
  206. package/lib/module/handlers/gestures/forceTouchGesture.js +56 -0
  207. package/lib/module/handlers/gestures/forceTouchGesture.js.map +1 -0
  208. package/lib/module/handlers/gestures/gesture.js +175 -0
  209. package/lib/module/handlers/gestures/gesture.js.map +1 -0
  210. package/lib/module/handlers/gestures/gestureComposition.js +79 -0
  211. package/lib/module/handlers/gestures/gestureComposition.js.map +1 -0
  212. package/lib/module/handlers/gestures/gestureObjects.js +67 -0
  213. package/lib/module/handlers/gestures/gestureObjects.js.map +1 -0
  214. package/lib/module/handlers/gestures/gestureStateManager.js +48 -0
  215. package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -0
  216. package/lib/module/handlers/gestures/longPressGesture.js +24 -0
  217. package/lib/module/handlers/gestures/longPressGesture.js.map +1 -0
  218. package/lib/module/handlers/gestures/manualGesture.js +22 -0
  219. package/lib/module/handlers/gestures/manualGesture.js.map +1 -0
  220. package/lib/module/handlers/gestures/nativeGesture.js +24 -0
  221. package/lib/module/handlers/gestures/nativeGesture.js.map +1 -0
  222. package/lib/module/handlers/gestures/panGesture.js +135 -0
  223. package/lib/module/handlers/gestures/panGesture.js.map +1 -0
  224. package/lib/module/handlers/gestures/pinchGesture.js +36 -0
  225. package/lib/module/handlers/gestures/pinchGesture.js.map +1 -0
  226. package/lib/module/handlers/gestures/reanimatedWrapper.js +19 -0
  227. package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -0
  228. package/lib/module/handlers/gestures/rotationGesture.js +36 -0
  229. package/lib/module/handlers/gestures/rotationGesture.js.map +1 -0
  230. package/lib/module/handlers/gestures/tapGesture.js +49 -0
  231. package/lib/module/handlers/gestures/tapGesture.js.map +1 -0
  232. package/lib/module/handlers/handlersRegistry.js +16 -0
  233. package/lib/module/handlers/handlersRegistry.js.map +1 -0
  234. package/lib/module/index.js +22 -1
  235. package/lib/module/index.js.map +1 -1
  236. package/lib/module/init.js +5 -0
  237. package/lib/module/init.js.map +1 -0
  238. package/lib/module/mocks.js +31 -2
  239. package/lib/module/mocks.js.map +1 -1
  240. package/lib/module/utils.js +8 -0
  241. package/lib/module/utils.js.map +1 -0
  242. package/lib/module/web/Errors.js +1 -1
  243. package/lib/module/web/Errors.js.map +1 -1
  244. package/lib/module/web/GestureHandler.js +4 -6
  245. package/lib/module/web/GestureHandler.js.map +1 -1
  246. package/lib/module/web/NodeManager.js +8 -2
  247. package/lib/module/web/NodeManager.js.map +1 -1
  248. package/lib/typescript/EventType.d.ts +8 -0
  249. package/lib/typescript/GestureHandlerRootView.android.d.ts +2 -4
  250. package/lib/typescript/GestureHandlerRootView.d.ts +5 -2
  251. package/lib/typescript/RNGestureHandlerModule.d.ts +1 -1
  252. package/lib/typescript/RNGestureHandlerModule.web.d.ts +1 -1
  253. package/lib/typescript/components/DrawerLayout.d.ts +50 -1
  254. package/lib/typescript/components/GestureButtons.d.ts +36 -0
  255. package/lib/typescript/components/GestureComponents.d.ts +8 -35
  256. package/lib/typescript/components/Swipeable.d.ts +73 -6
  257. package/lib/typescript/components/touchables/GenericTouchable.d.ts +2 -2
  258. package/lib/typescript/components/touchables/TouchableHighlight.d.ts +1 -0
  259. package/lib/typescript/components/touchables/TouchableOpacity.d.ts +1 -0
  260. package/lib/typescript/handlers/FlingGestureHandler.d.ts +33 -0
  261. package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +43 -0
  262. package/lib/typescript/handlers/LongPressGestureHandler.d.ts +55 -0
  263. package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +19 -4
  264. package/lib/typescript/handlers/PanGestureHandler.d.ts +137 -0
  265. package/lib/typescript/handlers/PinchGestureHandler.d.ts +28 -0
  266. package/lib/typescript/handlers/RotationGestureHandler.d.ts +28 -0
  267. package/lib/typescript/handlers/TapGestureHandler.d.ts +56 -0
  268. package/lib/typescript/handlers/createHandler.d.ts +1 -1
  269. package/lib/typescript/handlers/gestureHandlerCommon.d.ts +62 -0
  270. package/lib/typescript/handlers/gestureHandlerTypesCompat.d.ts +8 -1
  271. package/lib/typescript/handlers/gestures/GestureDetector.d.ts +16 -0
  272. package/lib/typescript/handlers/gestures/eventReceiver.d.ts +2 -0
  273. package/lib/typescript/handlers/gestures/flingGesture.d.ts +9 -0
  274. package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +16 -0
  275. package/lib/typescript/handlers/gestures/gesture.d.ts +97 -0
  276. package/lib/typescript/handlers/gestures/gestureComposition.d.ts +21 -0
  277. package/lib/typescript/handlers/gestures/gestureObjects.d.ts +39 -0
  278. package/lib/typescript/handlers/gestures/gestureStateManager.d.ts +9 -0
  279. package/lib/typescript/handlers/gestures/longPressGesture.d.ts +9 -0
  280. package/lib/typescript/handlers/gestures/manualGesture.d.ts +7 -0
  281. package/lib/typescript/handlers/gestures/nativeGesture.d.ts +9 -0
  282. package/lib/typescript/handlers/gestures/panGesture.d.ts +26 -0
  283. package/lib/typescript/handlers/gestures/pinchGesture.d.ts +12 -0
  284. package/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts +14 -0
  285. package/lib/typescript/handlers/gestures/rotationGesture.d.ts +12 -0
  286. package/lib/typescript/handlers/gestures/tapGesture.d.ts +14 -0
  287. package/lib/typescript/handlers/handlersRegistry.d.ts +6 -0
  288. package/lib/typescript/index.d.ts +29 -2
  289. package/lib/typescript/init.d.ts +1 -0
  290. package/lib/typescript/mocks.d.ts +21 -2
  291. package/lib/typescript/utils.d.ts +1 -0
  292. package/lib/typescript/web/FlingGestureHandler.d.ts +0 -1
  293. package/lib/typescript/web/GestureHandler.d.ts +0 -1
  294. package/lib/typescript/web/PanGestureHandler.d.ts +0 -1
  295. package/lib/typescript/web/PinchGestureHandler.d.ts +0 -1
  296. package/lib/typescript/web/PressGestureHandler.d.ts +0 -1
  297. package/lib/typescript/web/RotationGestureHandler.d.ts +0 -1
  298. package/lib/typescript/web/TapGestureHandler.d.ts +0 -1
  299. package/package.json +8 -5
  300. package/src/EventType.ts +10 -0
  301. package/src/GestureHandlerRootView.android.tsx +9 -25
  302. package/src/GestureHandlerRootView.tsx +11 -2
  303. package/src/RNGestureHandlerModule.ts +5 -1
  304. package/src/RNGestureHandlerModule.web.ts +1 -0
  305. package/src/components/DrawerLayout.tsx +114 -41
  306. package/src/components/GestureButtons.tsx +45 -5
  307. package/src/components/GestureComponents.tsx +47 -41
  308. package/src/components/Swipeable.tsx +108 -21
  309. package/src/components/touchables/GenericTouchable.tsx +2 -1
  310. package/src/components/touchables/TouchableOpacity.tsx +1 -1
  311. package/src/handlers/FlingGestureHandler.ts +57 -0
  312. package/src/handlers/ForceTouchGestureHandler.ts +83 -0
  313. package/src/handlers/LongPressGestureHandler.ts +84 -0
  314. package/src/handlers/NativeViewGestureHandler.ts +31 -7
  315. package/src/handlers/PanGestureHandler.ts +321 -0
  316. package/src/handlers/PinchGestureHandler.ts +46 -0
  317. package/src/handlers/RotationGestureHandler.ts +46 -0
  318. package/src/handlers/TapGestureHandler.ts +90 -0
  319. package/src/handlers/createHandler.ts +54 -79
  320. package/src/handlers/gestureHandlerCommon.ts +185 -0
  321. package/src/handlers/gestureHandlerTypesCompat.ts +19 -5
  322. package/src/handlers/gestures/GestureDetector.tsx +519 -0
  323. package/src/handlers/gestures/eventReceiver.ts +151 -0
  324. package/src/handlers/gestures/flingGesture.ts +27 -0
  325. package/src/handlers/gestures/forceTouchGesture.ts +74 -0
  326. package/src/handlers/gestures/gesture.ts +292 -0
  327. package/src/handlers/gestures/gestureComposition.ts +109 -0
  328. package/src/handlers/gestures/gestureObjects.ts +79 -0
  329. package/src/handlers/gestures/gestureStateManager.ts +60 -0
  330. package/src/handlers/gestures/longPressGesture.ts +27 -0
  331. package/src/handlers/gestures/manualGesture.ts +31 -0
  332. package/src/handlers/gestures/nativeGesture.ts +27 -0
  333. package/src/handlers/gestures/panGesture.ts +147 -0
  334. package/src/handlers/gestures/pinchGesture.ts +51 -0
  335. package/src/handlers/gestures/reanimatedWrapper.ts +45 -0
  336. package/src/handlers/gestures/rotationGesture.ts +51 -0
  337. package/src/handlers/gestures/tapGesture.ts +52 -0
  338. package/src/handlers/handlersRegistry.ts +22 -0
  339. package/src/index.ts +57 -17
  340. package/src/init.ts +5 -0
  341. package/src/mocks.ts +42 -2
  342. package/src/utils.ts +7 -0
  343. package/src/web/GestureHandler.ts +1 -2
  344. package/src/web/NodeManager.ts +5 -0
  345. package/android/lib/src/main/java/com/swmansion/gesturehandler/BaseGestureHandlerInteractionController.java +0 -23
  346. package/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.java +0 -110
  347. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.java +0 -531
  348. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerInteractionController.java +0 -8
  349. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.java +0 -543
  350. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistry.java +0 -10
  351. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistryImpl.java +0 -29
  352. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureUtils.java +0 -53
  353. package/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.java +0 -81
  354. package/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.java +0 -110
  355. package/android/lib/src/main/java/com/swmansion/gesturehandler/OnTouchEventListener.java +0 -8
  356. package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.java +0 -312
  357. package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.java +0 -109
  358. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureDetector.java +0 -169
  359. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.java +0 -96
  360. package/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.java +0 -172
  361. package/android/lib/src/main/java/com/swmansion/gesturehandler/ViewConfigurationHelper.java +0 -10
  362. package/android/src/main/java/com/facebook/react/views/modal/RNGHModalUtils.java +0 -21
  363. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.java +0 -296
  364. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.java +0 -72
  365. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.java +0 -77
  366. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.java +0 -8
  367. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.java +0 -86
  368. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.java +0 -731
  369. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerPackage.java +0 -31
  370. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.java +0 -101
  371. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.java +0 -151
  372. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootInterface.java +0 -7
  373. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.java +0 -76
  374. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.java +0 -49
  375. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.java +0 -82
  376. package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.java +0 -61
  377. package/lib/commonjs/handlers/gestureHandlers.js +0 -236
  378. package/lib/commonjs/handlers/gestureHandlers.js.map +0 -1
  379. package/lib/module/handlers/gestureHandlers.js +0 -216
  380. package/lib/module/handlers/gestureHandlers.js.map +0 -1
  381. package/lib/typescript/handlers/gestureHandlers.d.ts +0 -158
  382. package/src/handlers/gestureHandlers.ts +0 -511
@@ -20,15 +20,19 @@
20
20
  UITouch *_firstTouch;
21
21
  }
22
22
 
23
+ static const CGFloat defaultForce = 0;
24
+ static const CGFloat defaultMinForce = 0.2;
25
+ static const CGFloat defaultMaxForce = NAN;
26
+ static const BOOL defaultFeedbackOnActivation = NO;
23
27
 
24
28
  - (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler
25
29
  {
26
30
  if ((self = [super initWithTarget:gestureHandler action:@selector(handleGesture:)])) {
27
31
  _gestureHandler = gestureHandler;
28
- _force = 0;
29
- _minForce = 0.2;
30
- _maxForce = NAN;
31
- _feedbackOnActivation = NO;
32
+ _force = defaultForce;
33
+ _minForce = defaultMinForce;
34
+ _maxForce = defaultMaxForce;
35
+ _feedbackOnActivation = defaultFeedbackOnActivation;
32
36
  }
33
37
  return self;
34
38
  }
@@ -40,6 +44,8 @@
40
44
  return;
41
45
  }
42
46
  [super touchesBegan:touches withEvent:event];
47
+ [_gestureHandler.pointerTracker touchesBegan:touches withEvent:event];
48
+
43
49
  _firstTouch = [touches anyObject];
44
50
  [self handleForceWithTouches:touches];
45
51
  self.state = UIGestureRecognizerStatePossible;
@@ -52,6 +58,7 @@
52
58
  return;
53
59
  }
54
60
  [super touchesMoved:touches withEvent:event];
61
+ [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event];
55
62
 
56
63
  [self handleForceWithTouches:touches];
57
64
 
@@ -92,6 +99,7 @@
92
99
  return;
93
100
  }
94
101
  [super touchesEnded:touches withEvent:event];
102
+ [_gestureHandler.pointerTracker touchesEnded:touches withEvent:event];
95
103
  if (self.state == UIGestureRecognizerStateBegan || self.state == UIGestureRecognizerStateChanged) {
96
104
  self.state = UIGestureRecognizerStateEnded;
97
105
  } else {
@@ -99,11 +107,18 @@
99
107
  }
100
108
  }
101
109
 
110
+ - (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
111
+ {
112
+ [super touchesCancelled:touches withEvent:event];
113
+ [_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event];
114
+ }
115
+
102
116
  - (void)handleForceWithTouches:(NSSet<UITouch *> *)touches {
103
117
  _force = _firstTouch.force / _firstTouch.maximumPossibleForce;
104
118
  }
105
119
 
106
120
  - (void)reset {
121
+ [_gestureHandler.pointerTracker reset];
107
122
  [super reset];
108
123
  _force = 0;
109
124
  _firstTouch = NULL;
@@ -121,6 +136,16 @@
121
136
  return self;
122
137
  }
123
138
 
139
+ - (void)resetConfig
140
+ {
141
+ [super resetConfig];
142
+ RNForceTouchGestureRecognizer *recognizer = (RNForceTouchGestureRecognizer *)_recognizer;
143
+
144
+ recognizer.feedbackOnActivation = defaultFeedbackOnActivation;
145
+ recognizer.maxForce = defaultMaxForce;
146
+ recognizer.minForce = defaultMinForce;
147
+ }
148
+
124
149
  - (void)configure:(NSDictionary *)config
125
150
  {
126
151
  [super configure:config];
@@ -12,33 +12,107 @@
12
12
 
13
13
  #import <React/RCTConvert.h>
14
14
 
15
- @interface RNBetterLongPressGestureRecognizer : UILongPressGestureRecognizer
15
+ #import <mach/mach_time.h>
16
+
17
+ @interface RNBetterLongPressGestureRecognizer : UILongPressGestureRecognizer {
18
+ uint64_t startTime;
19
+ uint64_t previousTime;
20
+ }
16
21
 
17
22
  - (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler;
23
+ - (void)handleGesture:(UIGestureRecognizer *)recognizer;
24
+ - (NSUInteger) getDuration;
18
25
 
19
26
  @end
20
27
 
21
28
  @implementation RNBetterLongPressGestureRecognizer {
22
29
  __weak RNGestureHandler *_gestureHandler;
30
+ CGPoint _initPosition;
23
31
  }
24
32
 
25
33
  - (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler
26
34
  {
27
- if ((self = [super initWithTarget:gestureHandler action:@selector(handleGesture:)])) {
35
+ if ((self = [super initWithTarget:self action:@selector(handleGesture:)])) {
28
36
  _gestureHandler = gestureHandler;
29
37
  }
30
38
  return self;
31
39
  }
32
40
 
41
+ - (void)handleGesture:(UIGestureRecognizer *)recognizer
42
+ {
43
+ previousTime = mach_absolute_time();
44
+ [_gestureHandler handleGesture:recognizer];
45
+ }
46
+
47
+ - (void)triggerAction
48
+ {
49
+ [self handleGesture:self];
50
+ }
51
+
52
+ - (CGPoint)translationInView
53
+ {
54
+ CGPoint currentPosition = [self locationInView:self.view];
55
+ return CGPointMake(currentPosition.x - _initPosition.x, currentPosition.y - _initPosition.y);
56
+ }
57
+
58
+ - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
59
+ {
60
+ [super touchesBegan:touches withEvent:event];
61
+ [_gestureHandler.pointerTracker touchesBegan:touches withEvent:event];
62
+
63
+ _initPosition = [self locationInView:self.view];
64
+ startTime = mach_absolute_time();
65
+ [_gestureHandler reset];
66
+ [self triggerAction];
67
+ }
68
+
33
69
  - (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
34
70
  {
35
71
  [super touchesMoved:touches withEvent:event];
36
- if (_gestureHandler.shouldCancelWhenOutside && ![_gestureHandler containsPointInView]) {
72
+ [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event];
73
+
74
+ CGPoint trans = [self translationInView];
75
+ if ((_gestureHandler.shouldCancelWhenOutside && ![_gestureHandler containsPointInView])
76
+ || (TEST_MAX_IF_NOT_NAN(fabs(trans.y * trans.y + trans.x + trans.x), self.allowableMovement * self.allowableMovement))) {
37
77
  self.enabled = NO;
38
78
  self.enabled = YES;
39
79
  }
40
80
  }
41
81
 
82
+ - (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
83
+ {
84
+ [super touchesEnded:touches withEvent:event];
85
+ [_gestureHandler.pointerTracker touchesEnded:touches withEvent:event];
86
+ }
87
+
88
+ - (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
89
+ {
90
+ [super touchesCancelled:touches withEvent:event];
91
+ [_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event];
92
+ }
93
+
94
+ - (void)reset
95
+ {
96
+ if (self.state == UIGestureRecognizerStateFailed) {
97
+ [self triggerAction];
98
+ }
99
+
100
+ [_gestureHandler.pointerTracker reset];
101
+
102
+ [super reset];
103
+ }
104
+
105
+ - (NSUInteger)getDuration
106
+ {
107
+ static mach_timebase_info_data_t sTimebaseInfo;
108
+
109
+ if (sTimebaseInfo.denom == 0) {
110
+ mach_timebase_info(&sTimebaseInfo);
111
+ }
112
+
113
+ return (NSUInteger)(((previousTime - startTime) * sTimebaseInfo.numer / (sTimebaseInfo.denom * 1000000)));
114
+ }
115
+
42
116
  @end
43
117
 
44
118
 
@@ -52,6 +126,15 @@
52
126
  return self;
53
127
  }
54
128
 
129
+ - (void)resetConfig
130
+ {
131
+ [super resetConfig];
132
+ UILongPressGestureRecognizer *recognizer = (UILongPressGestureRecognizer *)_recognizer;
133
+
134
+ recognizer.minimumPressDuration = 0.5;
135
+ recognizer.allowableMovement = 10;
136
+ }
137
+
55
138
  - (void)configure:(NSDictionary *)config
56
139
  {
57
140
  [super configure:config];
@@ -79,5 +162,24 @@
79
162
  }
80
163
  return [super state];
81
164
  }
165
+
166
+ - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
167
+ {
168
+ //same as TapGH, this needs to be unified when all handlers are updated
169
+ RNGestureHandlerState savedState = _lastState;
170
+ BOOL shouldBegin = [super gestureRecognizerShouldBegin:gestureRecognizer];
171
+ _lastState = savedState;
172
+
173
+ return shouldBegin;
174
+ }
175
+
176
+ - (RNGestureHandlerEventExtraData *)eventExtraData:(UIGestureRecognizer *)recognizer
177
+ {
178
+ return [RNGestureHandlerEventExtraData
179
+ forPosition:[recognizer locationInView:recognizer.view]
180
+ withAbsolutePosition:[recognizer locationInView:recognizer.view.window]
181
+ withNumberOfTouches:recognizer.numberOfTouches
182
+ withDuration:[(RNBetterLongPressGestureRecognizer*)recognizer getDuration]];
183
+ }
82
184
  @end
83
185
 
@@ -0,0 +1,4 @@
1
+ #import "RNGestureHandler.h"
2
+
3
+ @interface RNManualGestureHandler : RNGestureHandler
4
+ @end
@@ -0,0 +1,73 @@
1
+ #import "RNManualHandler.h"
2
+
3
+ @interface RNManualRecognizer : UIGestureRecognizer
4
+
5
+ - (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler;
6
+
7
+ @end
8
+
9
+ @implementation RNManualRecognizer {
10
+ __weak RNGestureHandler *_gestureHandler;
11
+ BOOL _shouldSendBeginEvent;
12
+ }
13
+
14
+ - (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler
15
+ {
16
+ if ((self = [super initWithTarget:gestureHandler action:@selector(handleGesture:)])) {
17
+ _gestureHandler = gestureHandler;
18
+ _shouldSendBeginEvent = YES;
19
+ }
20
+ return self;
21
+ }
22
+
23
+ - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
24
+ {
25
+ [super touchesBegan:touches withEvent:event];
26
+ [_gestureHandler.pointerTracker touchesBegan:touches withEvent:event];
27
+
28
+ if (_shouldSendBeginEvent) {
29
+ [_gestureHandler handleGesture:self];
30
+ _shouldSendBeginEvent = NO;
31
+ }
32
+ }
33
+
34
+ - (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
35
+ {
36
+ [super touchesMoved:touches withEvent:event];
37
+ [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event];
38
+ }
39
+
40
+ - (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
41
+ {
42
+ [super touchesEnded:touches withEvent:event];
43
+ [_gestureHandler.pointerTracker touchesEnded:touches withEvent:event];
44
+ }
45
+
46
+ - (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
47
+ {
48
+ [super touchesCancelled:touches withEvent:event];
49
+ [_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event];
50
+ }
51
+
52
+ - (void)reset
53
+ {
54
+ [_gestureHandler.pointerTracker reset];
55
+ [super reset];
56
+
57
+ _shouldSendBeginEvent = YES;
58
+ }
59
+
60
+ @end
61
+
62
+ @implementation RNManualGestureHandler
63
+
64
+ - (instancetype)initWithTag:(NSNumber *)tag
65
+ {
66
+ if ((self = [super initWithTag:tag])) {
67
+ _recognizer = [[RNManualRecognizer alloc] initWithGestureHandler:self];
68
+
69
+ }
70
+ return self;
71
+ }
72
+
73
+ @end
@@ -16,20 +16,48 @@
16
16
 
17
17
  #pragma mark RNDummyGestureRecognizer
18
18
 
19
- @implementation RNDummyGestureRecognizer
19
+ @implementation RNDummyGestureRecognizer {
20
+ __weak RNGestureHandler *_gestureHandler;
21
+ }
22
+
23
+ - (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler
24
+ {
25
+ if ((self = [super initWithTarget:gestureHandler action:@selector(handleGesture:)])) {
26
+ _gestureHandler = gestureHandler;
27
+ }
28
+ return self;
29
+ }
30
+
31
+ - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
32
+ {
33
+ [_gestureHandler.pointerTracker touchesBegan:touches withEvent:event];
34
+ }
35
+
36
+ - (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
37
+ {
38
+ [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event];
39
+ }
20
40
 
21
41
  - (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
22
42
  {
43
+ [_gestureHandler.pointerTracker touchesEnded:touches withEvent:event];
23
44
  self.state = UIGestureRecognizerStateFailed;
24
45
  [self reset];
25
46
  }
26
47
 
27
48
  - (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
28
49
  {
50
+ [_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event];
29
51
  self.state = UIGestureRecognizerStateCancelled;
30
52
  [self reset];
31
53
  }
32
54
 
55
+ -(void)reset
56
+ {
57
+ [_gestureHandler.pointerTracker reset];
58
+ [super reset];
59
+ }
60
+
33
61
  @end
34
62
 
35
63
  #pragma mark RNNativeViewgestureHandler
@@ -42,7 +70,7 @@
42
70
  - (instancetype)initWithTag:(NSNumber *)tag
43
71
  {
44
72
  if ((self = [super initWithTag:tag])) {
45
- _recognizer = [[RNDummyGestureRecognizer alloc] init];
73
+ _recognizer = [[RNDummyGestureRecognizer alloc] initWithGestureHandler:self];
46
74
  }
47
75
  return self;
48
76
  }
@@ -61,6 +61,11 @@
61
61
  return self;
62
62
  }
63
63
 
64
+ - (void)triggerAction
65
+ {
66
+ [_gestureHandler handleGesture:self];
67
+ }
68
+
64
69
  - (void)setMinimumNumberOfTouches:(NSUInteger)minimumNumberOfTouches
65
70
  {
66
71
  _realMinimumNumberOfTouches = minimumNumberOfTouches;
@@ -68,6 +73,9 @@
68
73
 
69
74
  - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
70
75
  {
76
+ if ([self numberOfTouches] == 0) {
77
+ [_gestureHandler reset];
78
+ }
71
79
  #if !TARGET_OS_TV
72
80
  if (_hasCustomActivationCriteria) {
73
81
  // We use "minimumNumberOfTouches" property to prevent pan handler from recognizing
@@ -79,11 +87,15 @@
79
87
  }
80
88
  #endif
81
89
  [super touchesBegan:touches withEvent:event];
90
+ [self triggerAction];
91
+ [_gestureHandler.pointerTracker touchesBegan:touches withEvent:event];
82
92
  }
83
93
 
84
94
  - (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
85
95
  {
86
96
  [super touchesMoved:touches withEvent:event];
97
+ [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event];
98
+
87
99
  if (self.state == UIGestureRecognizerStatePossible && [self shouldFailUnderCustomCriteria]) {
88
100
  self.state = UIGestureRecognizerStateFailed;
89
101
  return;
@@ -112,8 +124,22 @@
112
124
  }
113
125
  }
114
126
 
127
+ - (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
128
+ {
129
+ [super touchesEnded:touches withEvent:event];
130
+ [_gestureHandler.pointerTracker touchesEnded:touches withEvent:event];
131
+ }
132
+
133
+ - (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
134
+ {
135
+ [super touchesCancelled:touches withEvent:event];
136
+ [_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event];
137
+ }
138
+
115
139
  - (void)reset
116
140
  {
141
+ [self triggerAction];
142
+ [_gestureHandler.pointerTracker reset];
117
143
  self.enabled = YES;
118
144
  [super reset];
119
145
  }
@@ -128,7 +154,7 @@
128
154
 
129
155
  - (BOOL)shouldFailUnderCustomCriteria
130
156
  {
131
- CGPoint trans = [self translationInView:self.view];
157
+ CGPoint trans = [self translationInView:self.view.window];
132
158
  if (!isnan(_failOffsetXStart) && trans.x < _failOffsetXStart) {
133
159
  return YES;
134
160
  }
@@ -146,7 +172,7 @@
146
172
 
147
173
  - (BOOL)shouldActivateUnderCustomCriteria
148
174
  {
149
- CGPoint trans = [self translationInView:self.view];
175
+ CGPoint trans = [self translationInView:self.view.window];
150
176
  if (!isnan(_activeOffsetXStart) && trans.x < _activeOffsetXStart) {
151
177
  return YES;
152
178
  }
@@ -190,6 +216,32 @@
190
216
  return self;
191
217
  }
192
218
 
219
+ - (void)resetConfig
220
+ {
221
+ [super resetConfig];
222
+ RNBetterPanGestureRecognizer *recognizer = (RNBetterPanGestureRecognizer *)_recognizer;
223
+ recognizer.minVelocityX = NAN;
224
+ recognizer.minVelocityY = NAN;
225
+ recognizer.activeOffsetXStart = NAN;
226
+ recognizer.activeOffsetXEnd = NAN;
227
+ recognizer.failOffsetXStart = NAN;
228
+ recognizer.failOffsetXEnd = NAN;
229
+ recognizer.activeOffsetYStart = NAN;
230
+ recognizer.activeOffsetYEnd = NAN;
231
+ recognizer.failOffsetYStart = NAN;
232
+ recognizer.failOffsetYStart = NAN;
233
+ recognizer.failOffsetYEnd = NAN;
234
+ #if !TARGET_OS_TV && __IPHONE_OS_VERSION_MAX_ALLOWED >= 130400
235
+ if (@available(iOS 13.4, *)) {
236
+ recognizer.allowedScrollTypesMask = 0;
237
+ }
238
+ #endif
239
+ recognizer.minimumNumberOfTouches = 1;
240
+ recognizer.maximumNumberOfTouches = NSUIntegerMax;
241
+ recognizer.minDistSq = NAN;
242
+ recognizer.minVelocitySq = NAN;
243
+ }
244
+
193
245
  - (void)configure:(NSDictionary *)config
194
246
  {
195
247
  [super configure:config];
@@ -232,15 +284,23 @@
232
284
  [recognizer updateHasCustomActivationCriteria];
233
285
  }
234
286
 
287
+ - (BOOL) gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
288
+ {
289
+ RNGestureHandlerState savedState = _lastState;
290
+ BOOL shouldBegin = [super gestureRecognizerShouldBegin:gestureRecognizer];
291
+ _lastState = savedState;
292
+
293
+ return shouldBegin;
294
+ }
295
+
235
296
  - (RNGestureHandlerEventExtraData *)eventExtraData:(UIPanGestureRecognizer *)recognizer
236
297
  {
237
298
  return [RNGestureHandlerEventExtraData
238
299
  forPan:[recognizer locationInView:recognizer.view]
239
300
  withAbsolutePosition:[recognizer locationInView:recognizer.view.window]
240
- withTranslation:[recognizer translationInView:recognizer.view]
301
+ withTranslation:[recognizer translationInView:recognizer.view.window]
241
302
  withVelocity:[recognizer velocityInView:recognizer.view.window]
242
303
  withNumberOfTouches:recognizer.numberOfTouches];
243
304
  }
244
305
 
245
306
  @end
246
-
@@ -1,3 +1,5 @@
1
+
2
+
1
3
  //
2
4
  // RNPinchHandler.m
3
5
  // RNGestureHandler
@@ -8,13 +10,71 @@
8
10
 
9
11
  #import "RNPinchHandler.h"
10
12
 
13
+ @interface RNBetterPinchRecognizer : UIPinchGestureRecognizer
14
+
15
+ - (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler;
16
+
17
+ @end
18
+
19
+ @implementation RNBetterPinchRecognizer {
20
+ __weak RNGestureHandler *_gestureHandler;
21
+ }
22
+
23
+ - (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler
24
+ {
25
+ if ((self = [super initWithTarget:self action:@selector(handleGesture:)])) {
26
+ _gestureHandler = gestureHandler;
27
+ }
28
+ return self;
29
+ }
30
+
31
+ - (void)handleGesture:(UIGestureRecognizer *)recognizer
32
+ {
33
+ if (self.state == UIGestureRecognizerStateBegan) {
34
+ self.scale = 1;
35
+ }
36
+ [_gestureHandler handleGesture:recognizer];
37
+ }
38
+
39
+ - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
40
+ {
41
+ [super touchesBegan:touches withEvent:event];
42
+ [_gestureHandler.pointerTracker touchesBegan:touches withEvent:event];
43
+ }
44
+
45
+ - (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
46
+ {
47
+ [super touchesMoved:touches withEvent:event];
48
+ [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event];
49
+ }
50
+
51
+ - (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
52
+ {
53
+ [super touchesEnded:touches withEvent:event];
54
+ [_gestureHandler.pointerTracker touchesEnded:touches withEvent:event];
55
+ }
56
+
57
+ - (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
58
+ {
59
+ [super touchesCancelled:touches withEvent:event];
60
+ [_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event];
61
+ }
62
+
63
+ - (void)reset
64
+ {
65
+ [_gestureHandler.pointerTracker reset];
66
+ [super reset];
67
+ }
68
+
69
+ @end
70
+
11
71
  @implementation RNPinchGestureHandler
12
72
 
13
73
  - (instancetype)initWithTag:(NSNumber *)tag
14
74
  {
15
75
  if ((self = [super initWithTag:tag])) {
16
76
  #if !TARGET_OS_TV
17
- _recognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];
77
+ _recognizer = [[RNBetterPinchRecognizer alloc] initWithGestureHandler:self];
18
78
  #endif
19
79
  }
20
80
  return self;
@@ -32,4 +92,3 @@
32
92
  #endif
33
93
 
34
94
  @end
35
-
@@ -8,13 +8,72 @@
8
8
 
9
9
  #import "RNRotationHandler.h"
10
10
 
11
+ @interface RNBetterRotationRecognizer : UIRotationGestureRecognizer
12
+
13
+ - (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler;
14
+
15
+ @end
16
+
17
+ @implementation RNBetterRotationRecognizer {
18
+ __weak RNGestureHandler *_gestureHandler;
19
+ }
20
+
21
+ - (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler
22
+ {
23
+ if ((self = [super initWithTarget:self action:@selector(handleGesture:)])) {
24
+ _gestureHandler = gestureHandler;
25
+ }
26
+ return self;
27
+ }
28
+
29
+ - (void)handleGesture:(UIGestureRecognizer *)recognizer
30
+ {
31
+ if (self.state == UIGestureRecognizerStateBegan) {
32
+ self.rotation = 0;
33
+ }
34
+ [_gestureHandler handleGesture:recognizer];
35
+ }
36
+
37
+
38
+ - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
39
+ {
40
+ [super touchesBegan:touches withEvent:event];
41
+ [_gestureHandler.pointerTracker touchesBegan:touches withEvent:event];
42
+ }
43
+
44
+ - (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
45
+ {
46
+ [super touchesMoved:touches withEvent:event];
47
+ [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event];
48
+ }
49
+
50
+ - (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
51
+ {
52
+ [super touchesEnded:touches withEvent:event];
53
+ [_gestureHandler.pointerTracker touchesEnded:touches withEvent:event];
54
+ }
55
+
56
+ - (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
57
+ {
58
+ [super touchesCancelled:touches withEvent:event];
59
+ [_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event];
60
+ }
61
+
62
+ - (void)reset
63
+ {
64
+ [_gestureHandler.pointerTracker reset];
65
+ [super reset];
66
+ }
67
+
68
+ @end
69
+
11
70
  @implementation RNRotationGestureHandler
12
71
 
13
72
  - (instancetype)initWithTag:(NSNumber *)tag
14
73
  {
15
74
  if ((self = [super initWithTag:tag])) {
16
75
  #if !TARGET_OS_TV
17
- _recognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];
76
+ _recognizer = [[RNBetterRotationRecognizer alloc] initWithGestureHandler:self];
18
77
  #endif
19
78
  }
20
79
  return self;