react-native-gesture-handler 1.10.1 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (580) hide show
  1. package/DrawerLayout/package.json +3 -3
  2. package/README.md +7 -6
  3. package/Swipeable/package.json +3 -3
  4. package/android/build.gradle +48 -1
  5. package/android/common/src/main/java/com/swmansion/common/GestureHandlerStateManager.kt +5 -0
  6. package/android/gradle.properties +19 -0
  7. package/android/lib/src/main/java/com/swmansion/gesturehandler/BaseGestureHandlerInteractionController.kt +18 -0
  8. package/android/lib/src/main/java/com/swmansion/gesturehandler/Extensions.kt +11 -0
  9. package/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.kt +96 -0
  10. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt +713 -0
  11. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerInteractionController.kt +8 -0
  12. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt +562 -0
  13. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistry.kt +8 -0
  14. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistryImpl.kt +21 -0
  15. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureUtils.kt +49 -0
  16. package/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.kt +97 -0
  17. package/android/lib/src/main/java/com/swmansion/gesturehandler/ManualGestureHandler.kt +11 -0
  18. package/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.kt +129 -0
  19. package/android/lib/src/main/java/com/swmansion/gesturehandler/OnTouchEventListener.kt +9 -0
  20. package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.kt +289 -0
  21. package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.kt +88 -0
  22. package/android/lib/src/main/java/com/swmansion/gesturehandler/{PointerEventsConfig.java → PointerEventsConfig.kt} +3 -5
  23. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureDetector.kt +125 -0
  24. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.kt +79 -0
  25. package/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.kt +167 -0
  26. package/android/lib/src/main/java/com/swmansion/gesturehandler/ViewConfigurationHelper.kt +10 -0
  27. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +348 -0
  28. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt +57 -0
  29. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +59 -0
  30. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt +8 -0
  31. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +61 -0
  32. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +686 -0
  33. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerPackage.kt +17 -0
  34. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt +95 -0
  35. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +132 -0
  36. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootInterface.kt +5 -0
  37. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +68 -0
  38. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt +34 -0
  39. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt +66 -0
  40. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt +69 -0
  41. package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt +51 -0
  42. package/ios/Handlers/RNFlingHandler.m +78 -5
  43. package/ios/Handlers/RNForceTouchHandler.m +29 -4
  44. package/ios/Handlers/RNLongPressHandler.m +105 -3
  45. package/ios/Handlers/RNManualHandler.h +4 -0
  46. package/ios/Handlers/RNManualHandler.m +73 -0
  47. package/ios/Handlers/RNNativeViewHandler.m +30 -2
  48. package/ios/Handlers/RNPanHandler.m +64 -4
  49. package/ios/Handlers/RNPinchHandler.m +61 -2
  50. package/ios/Handlers/RNRotationHandler.m +60 -1
  51. package/ios/Handlers/RNTapHandler.m +55 -8
  52. package/ios/RNGestureHandler.h +18 -4
  53. package/ios/RNGestureHandler.m +123 -13
  54. package/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcuserdata/jakubpiasecki.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  55. package/ios/RNGestureHandler.xcodeproj/xcuserdata/jakubpiasecki.xcuserdatad/xcschemes/xcschememanagement.plist +19 -0
  56. package/ios/RNGestureHandlerEvents.h +9 -0
  57. package/ios/RNGestureHandlerEvents.m +34 -0
  58. package/ios/RNGestureHandlerManager.h +7 -0
  59. package/ios/RNGestureHandlerManager.m +62 -34
  60. package/ios/RNGestureHandlerModule.m +39 -3
  61. package/ios/RNGestureHandlerPointerTracker.h +25 -0
  62. package/ios/RNGestureHandlerPointerTracker.m +237 -0
  63. package/ios/RNGestureHandlerRegistry.h +1 -0
  64. package/ios/RNGestureHandlerRegistry.m +10 -0
  65. package/ios/RNGestureHandlerStateManager.h +5 -0
  66. package/ios/RNManualActivationRecognizer.h +10 -0
  67. package/ios/RNManualActivationRecognizer.m +80 -0
  68. package/ios/RNRootViewGestureRecognizer.m +1 -1
  69. package/ios/RNTouchEventType.h +9 -0
  70. package/jestSetup.js +7 -1
  71. package/lib/commonjs/Directions.js +15 -0
  72. package/lib/commonjs/Directions.js.map +1 -0
  73. package/lib/commonjs/EventType.js +16 -0
  74. package/lib/commonjs/EventType.js.map +1 -0
  75. package/lib/commonjs/GestureHandlerRootView.android.js +24 -0
  76. package/lib/commonjs/GestureHandlerRootView.android.js.map +1 -0
  77. package/lib/commonjs/GestureHandlerRootView.js +20 -0
  78. package/lib/commonjs/GestureHandlerRootView.js.map +1 -0
  79. package/lib/commonjs/PlatformConstants.js +15 -0
  80. package/lib/commonjs/PlatformConstants.js.map +1 -0
  81. package/lib/commonjs/PlatformConstants.web.js +14 -0
  82. package/lib/commonjs/PlatformConstants.web.js.map +1 -0
  83. package/lib/commonjs/RNGestureHandlerModule.js +22 -0
  84. package/lib/commonjs/RNGestureHandlerModule.js.map +1 -0
  85. package/lib/commonjs/RNGestureHandlerModule.web.js +80 -0
  86. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -0
  87. package/lib/commonjs/State.js +18 -0
  88. package/lib/commonjs/State.js.map +1 -0
  89. package/lib/commonjs/components/DrawerLayout.js +535 -0
  90. package/lib/commonjs/components/DrawerLayout.js.map +1 -0
  91. package/lib/commonjs/components/GestureButtons.js +207 -0
  92. package/lib/commonjs/components/GestureButtons.js.map +1 -0
  93. package/lib/commonjs/components/GestureComponents.js +76 -0
  94. package/lib/commonjs/components/GestureComponents.js.map +1 -0
  95. package/lib/commonjs/components/GestureComponents.web.js +46 -0
  96. package/lib/commonjs/components/GestureComponents.web.js.map +1 -0
  97. package/lib/commonjs/components/GestureHandlerButton.js +13 -0
  98. package/lib/commonjs/components/GestureHandlerButton.js.map +1 -0
  99. package/lib/commonjs/components/GestureHandlerButton.web.js +24 -0
  100. package/lib/commonjs/components/GestureHandlerButton.web.js.map +1 -0
  101. package/lib/commonjs/components/Swipeable.js +365 -0
  102. package/lib/commonjs/components/Swipeable.js.map +1 -0
  103. package/lib/commonjs/components/touchables/GenericTouchable.js +278 -0
  104. package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -0
  105. package/lib/commonjs/components/touchables/TouchableHighlight.js +109 -0
  106. package/lib/commonjs/components/touchables/TouchableHighlight.js.map +1 -0
  107. package/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js +100 -0
  108. package/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js.map +1 -0
  109. package/lib/commonjs/components/touchables/TouchableNativeFeedback.js +12 -0
  110. package/lib/commonjs/components/touchables/TouchableNativeFeedback.js.map +1 -0
  111. package/lib/commonjs/components/touchables/TouchableOpacity.js +75 -0
  112. package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -0
  113. package/lib/commonjs/components/touchables/TouchableWithoutFeedback.js +26 -0
  114. package/lib/commonjs/components/touchables/TouchableWithoutFeedback.js.map +1 -0
  115. package/lib/commonjs/components/touchables/index.js +40 -0
  116. package/lib/commonjs/components/touchables/index.js.map +1 -0
  117. package/lib/commonjs/gestureHandlerRootHOC.js +39 -0
  118. package/lib/commonjs/gestureHandlerRootHOC.js.map +1 -0
  119. package/lib/commonjs/handlers/FlingGestureHandler.js +23 -0
  120. package/lib/commonjs/handlers/FlingGestureHandler.js.map +1 -0
  121. package/lib/commonjs/handlers/ForceTouchGestureHandler.js +44 -0
  122. package/lib/commonjs/handlers/ForceTouchGestureHandler.js.map +1 -0
  123. package/lib/commonjs/handlers/LongPressGestureHandler.js +23 -0
  124. package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -0
  125. package/lib/commonjs/handlers/NativeViewGestureHandler.js +25 -0
  126. package/lib/commonjs/handlers/NativeViewGestureHandler.js.map +1 -0
  127. package/lib/commonjs/handlers/PanGestureHandler.js +121 -0
  128. package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -0
  129. package/lib/commonjs/handlers/PinchGestureHandler.js +21 -0
  130. package/lib/commonjs/handlers/PinchGestureHandler.js.map +1 -0
  131. package/lib/commonjs/handlers/RotationGestureHandler.js +21 -0
  132. package/lib/commonjs/handlers/RotationGestureHandler.js.map +1 -0
  133. package/lib/commonjs/handlers/TapGestureHandler.js +23 -0
  134. package/lib/commonjs/handlers/TapGestureHandler.js.map +1 -0
  135. package/lib/commonjs/handlers/createHandler.js +373 -0
  136. package/lib/commonjs/handlers/createHandler.js.map +1 -0
  137. package/lib/commonjs/handlers/createNativeWrapper.js +70 -0
  138. package/lib/commonjs/handlers/createNativeWrapper.js.map +1 -0
  139. package/lib/commonjs/handlers/gestureHandlerCommon.js +80 -0
  140. package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -0
  141. package/lib/commonjs/handlers/gestureHandlerTypesCompat.js +2 -0
  142. package/lib/commonjs/handlers/gestureHandlerTypesCompat.js.map +1 -0
  143. package/lib/commonjs/handlers/gestures/GestureDetector.js +426 -0
  144. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -0
  145. package/lib/commonjs/handlers/gestures/eventReceiver.js +124 -0
  146. package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -0
  147. package/lib/commonjs/handlers/gestures/flingGesture.js +34 -0
  148. package/lib/commonjs/handlers/gestures/flingGesture.js.map +1 -0
  149. package/lib/commonjs/handlers/gestures/forceTouchGesture.js +39 -0
  150. package/lib/commonjs/handlers/gestures/forceTouchGesture.js.map +1 -0
  151. package/lib/commonjs/handlers/gestures/gesture.js +185 -0
  152. package/lib/commonjs/handlers/gestures/gesture.js.map +1 -0
  153. package/lib/commonjs/handlers/gestures/gestureComposition.js +94 -0
  154. package/lib/commonjs/handlers/gestures/gestureComposition.js.map +1 -0
  155. package/lib/commonjs/handlers/gestures/gestureObjects.js +85 -0
  156. package/lib/commonjs/handlers/gestures/gestureObjects.js.map +1 -0
  157. package/lib/commonjs/handlers/gestures/gestureStateManager.js +58 -0
  158. package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -0
  159. package/lib/commonjs/handlers/gestures/longPressGesture.js +34 -0
  160. package/lib/commonjs/handlers/gestures/longPressGesture.js.map +1 -0
  161. package/lib/commonjs/handlers/gestures/manualGesture.js +19 -0
  162. package/lib/commonjs/handlers/gestures/manualGesture.js.map +1 -0
  163. package/lib/commonjs/handlers/gestures/nativeGesture.js +34 -0
  164. package/lib/commonjs/handlers/gestures/nativeGesture.js.map +1 -0
  165. package/lib/commonjs/handlers/gestures/panGesture.js +116 -0
  166. package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -0
  167. package/lib/commonjs/handlers/gestures/pinchGesture.js +19 -0
  168. package/lib/commonjs/handlers/gestures/pinchGesture.js.map +1 -0
  169. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js +24 -0
  170. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -0
  171. package/lib/commonjs/handlers/gestures/rotationGesture.js +19 -0
  172. package/lib/commonjs/handlers/gestures/rotationGesture.js.map +1 -0
  173. package/lib/commonjs/handlers/gestures/tapGesture.js +59 -0
  174. package/lib/commonjs/handlers/gestures/tapGesture.js.map +1 -0
  175. package/lib/commonjs/handlers/handlersRegistry.js +31 -0
  176. package/lib/commonjs/handlers/handlersRegistry.js.map +1 -0
  177. package/lib/commonjs/index.js +338 -0
  178. package/lib/commonjs/index.js.map +1 -0
  179. package/lib/commonjs/init.js +13 -0
  180. package/lib/commonjs/init.js.map +1 -0
  181. package/lib/commonjs/mocks.js +64 -0
  182. package/lib/commonjs/mocks.js.map +1 -0
  183. package/lib/commonjs/typeUtils.js +2 -0
  184. package/lib/commonjs/typeUtils.js.map +1 -0
  185. package/lib/commonjs/utils.js +15 -0
  186. package/lib/commonjs/utils.js.map +1 -0
  187. package/lib/commonjs/web/DiscreteGestureHandler.js +105 -0
  188. package/lib/commonjs/web/DiscreteGestureHandler.js.map +1 -0
  189. package/lib/commonjs/web/DraggingGestureHandler.js +53 -0
  190. package/lib/commonjs/web/DraggingGestureHandler.js.map +1 -0
  191. package/lib/commonjs/web/Errors.js +16 -0
  192. package/lib/commonjs/web/Errors.js.map +1 -0
  193. package/lib/commonjs/web/FlingGestureHandler.js +170 -0
  194. package/lib/commonjs/web/FlingGestureHandler.js.map +1 -0
  195. package/lib/commonjs/web/GestureHandler.js +533 -0
  196. package/lib/commonjs/web/GestureHandler.js.map +1 -0
  197. package/lib/commonjs/web/IndiscreteGestureHandler.js +54 -0
  198. package/lib/commonjs/web/IndiscreteGestureHandler.js.map +1 -0
  199. package/lib/commonjs/web/LongPressGestureHandler.js +71 -0
  200. package/lib/commonjs/web/LongPressGestureHandler.js.map +1 -0
  201. package/lib/commonjs/web/NativeViewGestureHandler.js +62 -0
  202. package/lib/commonjs/web/NativeViewGestureHandler.js.map +1 -0
  203. package/lib/commonjs/web/NodeManager.js +43 -0
  204. package/lib/commonjs/web/NodeManager.js.map +1 -0
  205. package/lib/commonjs/web/PanGestureHandler.js +189 -0
  206. package/lib/commonjs/web/PanGestureHandler.js.map +1 -0
  207. package/lib/commonjs/web/PinchGestureHandler.js +40 -0
  208. package/lib/commonjs/web/PinchGestureHandler.js.map +1 -0
  209. package/lib/commonjs/web/PressGestureHandler.js +188 -0
  210. package/lib/commonjs/web/PressGestureHandler.js.map +1 -0
  211. package/lib/commonjs/web/RotationGestureHandler.js +44 -0
  212. package/lib/commonjs/web/RotationGestureHandler.js.map +1 -0
  213. package/lib/commonjs/web/TapGestureHandler.js +192 -0
  214. package/lib/commonjs/web/TapGestureHandler.js.map +1 -0
  215. package/lib/commonjs/web/constants.js +64 -0
  216. package/lib/commonjs/web/constants.js.map +1 -0
  217. package/lib/commonjs/web/utils.js +42 -0
  218. package/lib/commonjs/web/utils.js.map +1 -0
  219. package/lib/module/Directions.js +7 -0
  220. package/lib/module/Directions.js.map +1 -0
  221. package/lib/module/EventType.js +8 -0
  222. package/lib/module/EventType.js.map +1 -0
  223. package/lib/module/GestureHandlerRootView.android.js +10 -0
  224. package/lib/module/GestureHandlerRootView.android.js.map +1 -0
  225. package/lib/module/GestureHandlerRootView.js +7 -0
  226. package/lib/module/GestureHandlerRootView.js.map +1 -0
  227. package/lib/module/PlatformConstants.js +5 -0
  228. package/lib/module/PlatformConstants.js.map +1 -0
  229. package/lib/module/PlatformConstants.web.js +7 -0
  230. package/lib/module/PlatformConstants.web.js.map +1 -0
  231. package/lib/module/RNGestureHandlerModule.js +13 -0
  232. package/lib/module/RNGestureHandlerModule.js.map +1 -0
  233. package/lib/module/RNGestureHandlerModule.web.js +56 -0
  234. package/lib/module/RNGestureHandlerModule.web.js.map +1 -0
  235. package/lib/module/State.js +10 -0
  236. package/lib/module/State.js.map +1 -0
  237. package/lib/module/components/DrawerLayout.js +520 -0
  238. package/lib/module/components/DrawerLayout.js.map +1 -0
  239. package/lib/module/components/GestureButtons.js +172 -0
  240. package/lib/module/components/GestureButtons.js.map +1 -0
  241. package/lib/module/components/GestureComponents.js +53 -0
  242. package/lib/module/components/GestureComponents.js.map +1 -0
  243. package/lib/module/components/GestureComponents.web.js +25 -0
  244. package/lib/module/components/GestureComponents.web.js.map +1 -0
  245. package/{dist/src → lib/module}/components/GestureHandlerButton.js +1 -0
  246. package/lib/module/components/GestureHandlerButton.js.map +1 -0
  247. package/lib/module/components/GestureHandlerButton.web.js +9 -0
  248. package/lib/module/components/GestureHandlerButton.web.js.map +1 -0
  249. package/lib/module/components/Swipeable.js +347 -0
  250. package/lib/module/components/Swipeable.js.map +1 -0
  251. package/lib/module/components/touchables/GenericTouchable.js +262 -0
  252. package/lib/module/components/touchables/GenericTouchable.js.map +1 -0
  253. package/lib/module/components/touchables/TouchableHighlight.js +95 -0
  254. package/lib/module/components/touchables/TouchableHighlight.js.map +1 -0
  255. package/lib/module/components/touchables/TouchableNativeFeedback.android.js +84 -0
  256. package/lib/module/components/touchables/TouchableNativeFeedback.android.js.map +1 -0
  257. package/{dist/src → lib/module}/components/touchables/TouchableNativeFeedback.js +1 -0
  258. package/lib/module/components/touchables/TouchableNativeFeedback.js.map +1 -0
  259. package/lib/module/components/touchables/TouchableOpacity.js +61 -0
  260. package/lib/module/components/touchables/TouchableOpacity.js.map +1 -0
  261. package/lib/module/components/touchables/TouchableWithoutFeedback.js +10 -0
  262. package/lib/module/components/touchables/TouchableWithoutFeedback.js.map +1 -0
  263. package/{dist/src → lib/module}/components/touchables/index.js +1 -0
  264. package/lib/module/components/touchables/index.js.map +1 -0
  265. package/lib/module/gestureHandlerRootHOC.js +21 -0
  266. package/lib/module/gestureHandlerRootHOC.js.map +1 -0
  267. package/lib/module/handlers/FlingGestureHandler.js +10 -0
  268. package/lib/module/handlers/FlingGestureHandler.js.map +1 -0
  269. package/lib/module/handlers/ForceTouchGestureHandler.js +29 -0
  270. package/lib/module/handlers/ForceTouchGestureHandler.js.map +1 -0
  271. package/lib/module/handlers/LongPressGestureHandler.js +10 -0
  272. package/lib/module/handlers/LongPressGestureHandler.js.map +1 -0
  273. package/lib/module/handlers/NativeViewGestureHandler.js +11 -0
  274. package/lib/module/handlers/NativeViewGestureHandler.js.map +1 -0
  275. package/lib/module/handlers/PanGestureHandler.js +106 -0
  276. package/lib/module/handlers/PanGestureHandler.js.map +1 -0
  277. package/lib/module/handlers/PinchGestureHandler.js +9 -0
  278. package/lib/module/handlers/PinchGestureHandler.js.map +1 -0
  279. package/lib/module/handlers/RotationGestureHandler.js +9 -0
  280. package/lib/module/handlers/RotationGestureHandler.js.map +1 -0
  281. package/lib/module/handlers/TapGestureHandler.js +10 -0
  282. package/lib/module/handlers/TapGestureHandler.js.map +1 -0
  283. package/lib/module/handlers/createHandler.js +348 -0
  284. package/lib/module/handlers/createHandler.js.map +1 -0
  285. package/lib/module/handlers/createNativeWrapper.js +58 -0
  286. package/lib/module/handlers/createNativeWrapper.js.map +1 -0
  287. package/lib/module/handlers/gestureHandlerCommon.js +66 -0
  288. package/lib/module/handlers/gestureHandlerCommon.js.map +1 -0
  289. package/lib/module/handlers/gestureHandlerTypesCompat.js +2 -0
  290. package/lib/module/handlers/gestureHandlerTypesCompat.js.map +1 -0
  291. package/lib/module/handlers/gestures/GestureDetector.js +389 -0
  292. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -0
  293. package/lib/module/handlers/gestures/eventReceiver.js +109 -0
  294. package/lib/module/handlers/gestures/eventReceiver.js.map +1 -0
  295. package/lib/module/handlers/gestures/flingGesture.js +24 -0
  296. package/lib/module/handlers/gestures/flingGesture.js.map +1 -0
  297. package/lib/module/handlers/gestures/forceTouchGesture.js +29 -0
  298. package/lib/module/handlers/gestures/forceTouchGesture.js.map +1 -0
  299. package/lib/module/handlers/gestures/gesture.js +167 -0
  300. package/lib/module/handlers/gestures/gesture.js.map +1 -0
  301. package/lib/module/handlers/gestures/gestureComposition.js +79 -0
  302. package/lib/module/handlers/gestures/gestureComposition.js.map +1 -0
  303. package/lib/module/handlers/gestures/gestureObjects.js +67 -0
  304. package/lib/module/handlers/gestures/gestureObjects.js.map +1 -0
  305. package/lib/module/handlers/gestures/gestureStateManager.js +48 -0
  306. package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -0
  307. package/lib/module/handlers/gestures/longPressGesture.js +24 -0
  308. package/lib/module/handlers/gestures/longPressGesture.js.map +1 -0
  309. package/lib/module/handlers/gestures/manualGesture.js +9 -0
  310. package/lib/module/handlers/gestures/manualGesture.js.map +1 -0
  311. package/lib/module/handlers/gestures/nativeGesture.js +24 -0
  312. package/lib/module/handlers/gestures/nativeGesture.js.map +1 -0
  313. package/lib/module/handlers/gestures/panGesture.js +106 -0
  314. package/lib/module/handlers/gestures/panGesture.js.map +1 -0
  315. package/lib/module/handlers/gestures/pinchGesture.js +9 -0
  316. package/lib/module/handlers/gestures/pinchGesture.js.map +1 -0
  317. package/lib/module/handlers/gestures/reanimatedWrapper.js +19 -0
  318. package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -0
  319. package/lib/module/handlers/gestures/rotationGesture.js +9 -0
  320. package/lib/module/handlers/gestures/rotationGesture.js.map +1 -0
  321. package/lib/module/handlers/gestures/tapGesture.js +49 -0
  322. package/lib/module/handlers/gestures/tapGesture.js.map +1 -0
  323. package/lib/module/handlers/handlersRegistry.js +16 -0
  324. package/lib/module/handlers/handlersRegistry.js.map +1 -0
  325. package/lib/module/index.js +34 -0
  326. package/lib/module/index.js.map +1 -0
  327. package/lib/module/init.js +5 -0
  328. package/lib/module/init.js.map +1 -0
  329. package/lib/module/mocks.js +54 -0
  330. package/lib/module/mocks.js.map +1 -0
  331. package/lib/module/typeUtils.js +2 -0
  332. package/lib/module/typeUtils.js.map +1 -0
  333. package/lib/module/utils.js +8 -0
  334. package/lib/module/utils.js.map +1 -0
  335. package/lib/module/web/DiscreteGestureHandler.js +94 -0
  336. package/lib/module/web/DiscreteGestureHandler.js.map +1 -0
  337. package/lib/module/web/DraggingGestureHandler.js +40 -0
  338. package/lib/module/web/DraggingGestureHandler.js.map +1 -0
  339. package/lib/module/web/Errors.js +7 -0
  340. package/lib/module/web/Errors.js.map +1 -0
  341. package/lib/module/web/FlingGestureHandler.js +156 -0
  342. package/lib/module/web/FlingGestureHandler.js.map +1 -0
  343. package/lib/module/web/GestureHandler.js +518 -0
  344. package/lib/module/web/GestureHandler.js.map +1 -0
  345. package/lib/module/web/IndiscreteGestureHandler.js +44 -0
  346. package/lib/module/web/IndiscreteGestureHandler.js.map +1 -0
  347. package/lib/module/web/LongPressGestureHandler.js +58 -0
  348. package/lib/module/web/LongPressGestureHandler.js.map +1 -0
  349. package/lib/module/web/NativeViewGestureHandler.js +45 -0
  350. package/lib/module/web/NativeViewGestureHandler.js.map +1 -0
  351. package/lib/module/web/NodeManager.js +30 -0
  352. package/lib/module/web/NodeManager.js.map +1 -0
  353. package/lib/module/web/PanGestureHandler.js +175 -0
  354. package/lib/module/web/PanGestureHandler.js.map +1 -0
  355. package/lib/module/web/PinchGestureHandler.js +29 -0
  356. package/lib/module/web/PinchGestureHandler.js.map +1 -0
  357. package/lib/module/web/PressGestureHandler.js +174 -0
  358. package/lib/module/web/PressGestureHandler.js.map +1 -0
  359. package/lib/module/web/RotationGestureHandler.js +32 -0
  360. package/lib/module/web/RotationGestureHandler.js.map +1 -0
  361. package/lib/module/web/TapGestureHandler.js +180 -0
  362. package/lib/module/web/TapGestureHandler.js.map +1 -0
  363. package/lib/module/web/constants.js +43 -0
  364. package/lib/module/web/constants.js.map +1 -0
  365. package/lib/module/web/utils.js +19 -0
  366. package/lib/module/web/utils.js.map +1 -0
  367. package/lib/typescript/Directions.d.ts +7 -0
  368. package/lib/typescript/EventType.d.ts +8 -0
  369. package/lib/typescript/GestureHandlerRootView.android.d.ts +2 -0
  370. package/lib/typescript/GestureHandlerRootView.d.ts +5 -0
  371. package/{dist/src → lib/typescript}/PlatformConstants.d.ts +0 -0
  372. package/{dist/src → lib/typescript}/PlatformConstants.web.d.ts +0 -0
  373. package/{dist/src → lib/typescript}/RNGestureHandlerModule.d.ts +1 -8
  374. package/{dist/src → lib/typescript}/RNGestureHandlerModule.web.d.ts +1 -1
  375. package/{dist/src → lib/typescript}/State.d.ts +0 -0
  376. package/{dist/src → lib/typescript}/components/DrawerLayout.d.ts +50 -1
  377. package/{dist/src → lib/typescript}/components/GestureButtons.d.ts +36 -0
  378. package/lib/typescript/components/GestureComponents.d.ts +18 -0
  379. package/{dist/src → lib/typescript}/components/GestureComponents.web.d.ts +4 -4
  380. package/{dist/src → lib/typescript}/components/GestureHandlerButton.d.ts +0 -0
  381. package/{dist/src → lib/typescript}/components/GestureHandlerButton.web.d.ts +0 -0
  382. package/lib/typescript/components/Swipeable.d.ts +150 -0
  383. package/{dist/src → lib/typescript}/components/touchables/GenericTouchable.d.ts +3 -3
  384. package/{dist/src → lib/typescript}/components/touchables/TouchableHighlight.d.ts +1 -0
  385. package/{dist/src → lib/typescript}/components/touchables/TouchableNativeFeedback.android.d.ts +0 -0
  386. package/{dist/src → lib/typescript}/components/touchables/TouchableNativeFeedback.d.ts +0 -0
  387. package/{dist/src → lib/typescript}/components/touchables/TouchableOpacity.d.ts +1 -0
  388. package/{dist/src → lib/typescript}/components/touchables/TouchableWithoutFeedback.d.ts +0 -0
  389. package/{dist/src → lib/typescript}/components/touchables/index.d.ts +0 -0
  390. package/{dist/src → lib/typescript}/gestureHandlerRootHOC.d.ts +0 -0
  391. package/lib/typescript/handlers/FlingGestureHandler.d.ts +33 -0
  392. package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +43 -0
  393. package/lib/typescript/handlers/LongPressGestureHandler.d.ts +55 -0
  394. package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +27 -0
  395. package/lib/typescript/handlers/PanGestureHandler.d.ts +137 -0
  396. package/lib/typescript/handlers/PinchGestureHandler.d.ts +28 -0
  397. package/lib/typescript/handlers/RotationGestureHandler.d.ts +28 -0
  398. package/lib/typescript/handlers/TapGestureHandler.d.ts +56 -0
  399. package/{dist/src → lib/typescript}/handlers/createHandler.d.ts +1 -1
  400. package/{dist/src → lib/typescript}/handlers/createNativeWrapper.d.ts +0 -0
  401. package/lib/typescript/handlers/gestureHandlerCommon.d.ts +62 -0
  402. package/{dist/src → lib/typescript}/handlers/gestureHandlerTypesCompat.d.ts +8 -1
  403. package/lib/typescript/handlers/gestures/GestureDetector.d.ts +16 -0
  404. package/lib/typescript/handlers/gestures/eventReceiver.d.ts +2 -0
  405. package/lib/typescript/handlers/gestures/flingGesture.d.ts +9 -0
  406. package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +10 -0
  407. package/lib/typescript/handlers/gestures/gesture.d.ts +93 -0
  408. package/lib/typescript/handlers/gestures/gestureComposition.d.ts +21 -0
  409. package/lib/typescript/handlers/gestures/gestureObjects.d.ts +39 -0
  410. package/lib/typescript/handlers/gestures/gestureStateManager.d.ts +9 -0
  411. package/lib/typescript/handlers/gestures/longPressGesture.d.ts +9 -0
  412. package/lib/typescript/handlers/gestures/manualGesture.d.ts +5 -0
  413. package/lib/typescript/handlers/gestures/nativeGesture.d.ts +9 -0
  414. package/lib/typescript/handlers/gestures/panGesture.d.ts +19 -0
  415. package/lib/typescript/handlers/gestures/pinchGesture.d.ts +6 -0
  416. package/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts +14 -0
  417. package/lib/typescript/handlers/gestures/rotationGesture.d.ts +6 -0
  418. package/lib/typescript/handlers/gestures/tapGesture.d.ts +14 -0
  419. package/lib/typescript/handlers/handlersRegistry.d.ts +6 -0
  420. package/lib/typescript/index.d.ts +44 -0
  421. package/lib/typescript/init.d.ts +1 -0
  422. package/lib/typescript/mocks.d.ts +43 -0
  423. package/{dist/src → lib/typescript}/typeUtils.d.ts +0 -0
  424. package/lib/typescript/utils.d.ts +1 -0
  425. package/{dist/src → lib/typescript}/web/DiscreteGestureHandler.d.ts +0 -0
  426. package/{dist/src → lib/typescript}/web/DraggingGestureHandler.d.ts +0 -0
  427. package/{dist/src → lib/typescript}/web/Errors.d.ts +0 -0
  428. package/{dist/src → lib/typescript}/web/FlingGestureHandler.d.ts +0 -1
  429. package/{dist/src → lib/typescript}/web/GestureHandler.d.ts +0 -1
  430. package/{dist/src → lib/typescript}/web/IndiscreteGestureHandler.d.ts +0 -0
  431. package/{dist/src → lib/typescript}/web/LongPressGestureHandler.d.ts +0 -0
  432. package/{dist/src → lib/typescript}/web/NativeViewGestureHandler.d.ts +0 -0
  433. package/{dist/src → lib/typescript}/web/NodeManager.d.ts +0 -0
  434. package/{dist/src → lib/typescript}/web/PanGestureHandler.d.ts +0 -1
  435. package/{dist/src → lib/typescript}/web/PinchGestureHandler.d.ts +0 -1
  436. package/{dist/src → lib/typescript}/web/PressGestureHandler.d.ts +0 -1
  437. package/{dist/src → lib/typescript}/web/RotationGestureHandler.d.ts +0 -1
  438. package/{dist/src → lib/typescript}/web/TapGestureHandler.d.ts +0 -1
  439. package/{dist/src → lib/typescript}/web/constants.d.ts +0 -0
  440. package/{dist/src → lib/typescript}/web/utils.d.ts +0 -0
  441. package/package.json +38 -15
  442. package/src/Directions.ts +8 -2
  443. package/src/EventType.ts +10 -0
  444. package/src/GestureHandlerRootView.android.tsx +9 -25
  445. package/src/GestureHandlerRootView.tsx +11 -2
  446. package/src/PlatformConstants.ts +3 -2
  447. package/src/RNGestureHandlerModule.ts +15 -9
  448. package/src/RNGestureHandlerModule.web.ts +1 -0
  449. package/src/components/DrawerLayout.tsx +114 -41
  450. package/src/components/GestureButtons.tsx +45 -5
  451. package/src/components/GestureComponents.tsx +47 -41
  452. package/src/components/Swipeable.tsx +108 -21
  453. package/src/components/touchables/GenericTouchable.tsx +3 -2
  454. package/src/components/touchables/TouchableOpacity.tsx +1 -1
  455. package/src/handlers/FlingGestureHandler.ts +57 -0
  456. package/src/handlers/ForceTouchGestureHandler.ts +83 -0
  457. package/src/handlers/LongPressGestureHandler.ts +84 -0
  458. package/src/handlers/NativeViewGestureHandler.ts +31 -7
  459. package/src/handlers/PanGestureHandler.ts +321 -0
  460. package/src/handlers/PinchGestureHandler.ts +46 -0
  461. package/src/handlers/RotationGestureHandler.ts +46 -0
  462. package/src/handlers/TapGestureHandler.ts +90 -0
  463. package/src/handlers/createHandler.ts +60 -81
  464. package/src/handlers/gestureHandlerCommon.ts +185 -0
  465. package/src/handlers/gestureHandlerTypesCompat.ts +19 -5
  466. package/src/handlers/gestures/GestureDetector.tsx +498 -0
  467. package/src/handlers/gestures/eventReceiver.ts +135 -0
  468. package/src/handlers/gestures/flingGesture.ts +27 -0
  469. package/src/handlers/gestures/forceTouchGesture.ts +32 -0
  470. package/src/handlers/gestures/gesture.ts +279 -0
  471. package/src/handlers/gestures/gestureComposition.ts +109 -0
  472. package/src/handlers/gestures/gestureObjects.ts +79 -0
  473. package/src/handlers/gestures/gestureStateManager.ts +60 -0
  474. package/src/handlers/gestures/longPressGesture.ts +27 -0
  475. package/src/handlers/gestures/manualGesture.ts +11 -0
  476. package/src/handlers/gestures/nativeGesture.ts +27 -0
  477. package/src/handlers/gestures/panGesture.ts +105 -0
  478. package/src/handlers/gestures/pinchGesture.ts +12 -0
  479. package/src/handlers/gestures/reanimatedWrapper.ts +45 -0
  480. package/src/handlers/gestures/rotationGesture.ts +12 -0
  481. package/src/handlers/gestures/tapGesture.ts +52 -0
  482. package/src/handlers/handlersRegistry.ts +22 -0
  483. package/src/index.ts +156 -0
  484. package/src/init.ts +5 -0
  485. package/src/mocks.ts +65 -0
  486. package/src/utils.ts +7 -0
  487. package/src/web/GestureHandler.ts +2 -3
  488. package/src/web/NativeViewGestureHandler.ts +1 -3
  489. package/src/web/NodeManager.ts +5 -0
  490. package/android/lib/src/main/java/com/swmansion/gesturehandler/BaseGestureHandlerInteractionController.java +0 -23
  491. package/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.java +0 -110
  492. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.java +0 -531
  493. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerInteractionController.java +0 -8
  494. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.java +0 -543
  495. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistry.java +0 -10
  496. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistryImpl.java +0 -29
  497. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureUtils.java +0 -53
  498. package/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.java +0 -81
  499. package/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.java +0 -110
  500. package/android/lib/src/main/java/com/swmansion/gesturehandler/OnTouchEventListener.java +0 -8
  501. package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.java +0 -312
  502. package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.java +0 -109
  503. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureDetector.java +0 -169
  504. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.java +0 -96
  505. package/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.java +0 -172
  506. package/android/lib/src/main/java/com/swmansion/gesturehandler/ViewConfigurationHelper.java +0 -10
  507. package/android/src/main/java/com/facebook/react/views/modal/RNGHModalUtils.java +0 -21
  508. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.java +0 -296
  509. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.java +0 -72
  510. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.java +0 -77
  511. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.java +0 -8
  512. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.java +0 -86
  513. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.java +0 -731
  514. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerPackage.java +0 -31
  515. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.java +0 -101
  516. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.java +0 -151
  517. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootInterface.java +0 -7
  518. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.java +0 -76
  519. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.java +0 -49
  520. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.java +0 -82
  521. package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.java +0 -61
  522. package/dist/index.d.ts +0 -13
  523. package/dist/index.js +0 -16
  524. package/dist/src/Directions.d.ts +0 -7
  525. package/dist/src/Directions.js +0 -2
  526. package/dist/src/GestureHandlerRootView.android.d.ts +0 -4
  527. package/dist/src/GestureHandlerRootView.android.expo.d.ts +0 -2
  528. package/dist/src/GestureHandlerRootView.android.expo.js +0 -2
  529. package/dist/src/GestureHandlerRootView.android.js +0 -21
  530. package/dist/src/GestureHandlerRootView.d.ts +0 -2
  531. package/dist/src/GestureHandlerRootView.js +0 -2
  532. package/dist/src/PlatformConstants.js +0 -2
  533. package/dist/src/PlatformConstants.web.js +0 -5
  534. package/dist/src/RNGestureHandlerModule.js +0 -3
  535. package/dist/src/RNGestureHandlerModule.web.js +0 -47
  536. package/dist/src/State.js +0 -9
  537. package/dist/src/__mocks__/RNGestureHandlerModule.d.ts +0 -23
  538. package/dist/src/__mocks__/RNGestureHandlerModule.js +0 -25
  539. package/dist/src/components/DrawerLayout.js +0 -391
  540. package/dist/src/components/GestureButtons.js +0 -113
  541. package/dist/src/components/GestureComponents.d.ts +0 -45
  542. package/dist/src/components/GestureComponents.js +0 -18
  543. package/dist/src/components/GestureComponents.web.js +0 -18
  544. package/dist/src/components/GestureHandlerButton.web.js +0 -3
  545. package/dist/src/components/Swipeable.d.ts +0 -83
  546. package/dist/src/components/Swipeable.js +0 -249
  547. package/dist/src/components/touchables/GenericTouchable.js +0 -210
  548. package/dist/src/components/touchables/TouchableHighlight.js +0 -73
  549. package/dist/src/components/touchables/TouchableNativeFeedback.android.js +0 -63
  550. package/dist/src/components/touchables/TouchableOpacity.js +0 -50
  551. package/dist/src/components/touchables/TouchableWithoutFeedback.js +0 -5
  552. package/dist/src/gestureHandlerRootHOC.js +0 -17
  553. package/dist/src/handlers/NativeViewGestureHandler.d.ts +0 -12
  554. package/dist/src/handlers/NativeViewGestureHandler.js +0 -13
  555. package/dist/src/handlers/createHandler.js +0 -292
  556. package/dist/src/handlers/createNativeWrapper.js +0 -51
  557. package/dist/src/handlers/gestureHandlerTypesCompat.js +0 -1
  558. package/dist/src/handlers/gestureHandlers.d.ts +0 -158
  559. package/dist/src/handlers/gestureHandlers.js +0 -247
  560. package/dist/src/typeUtils.js +0 -1
  561. package/dist/src/web/DiscreteGestureHandler.js +0 -48
  562. package/dist/src/web/DraggingGestureHandler.js +0 -25
  563. package/dist/src/web/Errors.js +0 -5
  564. package/dist/src/web/FlingGestureHandler.js +0 -119
  565. package/dist/src/web/GestureHandler.js +0 -413
  566. package/dist/src/web/IndiscreteGestureHandler.js +0 -26
  567. package/dist/src/web/LongPressGestureHandler.js +0 -46
  568. package/dist/src/web/NativeViewGestureHandler.js +0 -39
  569. package/dist/src/web/NodeManager.js +0 -22
  570. package/dist/src/web/PanGestureHandler.js +0 -145
  571. package/dist/src/web/PinchGestureHandler.js +0 -19
  572. package/dist/src/web/PressGestureHandler.js +0 -135
  573. package/dist/src/web/RotationGestureHandler.js +0 -20
  574. package/dist/src/web/TapGestureHandler.js +0 -143
  575. package/dist/src/web/constants.js +0 -42
  576. package/dist/src/web/utils.js +0 -15
  577. package/index.ts +0 -117
  578. package/src/GestureHandlerRootView.android.expo.tsx +0 -3
  579. package/src/__mocks__/RNGestureHandlerModule.ts +0 -27
  580. package/src/handlers/gestureHandlers.ts +0 -511
@@ -0,0 +1,17 @@
1
+ package com.swmansion.gesturehandler.react
2
+
3
+ import com.facebook.react.ReactPackage
4
+ import com.facebook.react.bridge.NativeModule
5
+ import com.facebook.react.bridge.ReactApplicationContext
6
+ import com.facebook.react.uimanager.ViewManager
7
+ import java.util.*
8
+
9
+ class RNGestureHandlerPackage : ReactPackage {
10
+ override fun createNativeModules(reactContext: ReactApplicationContext) =
11
+ listOf<NativeModule>(RNGestureHandlerModule(reactContext))
12
+
13
+ override fun createViewManagers(reactContext: ReactApplicationContext) =
14
+ listOf<ViewManager<*, *>>(
15
+ RNGestureHandlerRootViewManager(),
16
+ RNGestureHandlerButtonViewManager())
17
+ }
@@ -0,0 +1,95 @@
1
+ package com.swmansion.gesturehandler.react
2
+
3
+ import android.util.SparseArray
4
+ import android.view.View
5
+ import com.facebook.react.bridge.UiThreadUtil
6
+ import com.swmansion.gesturehandler.GestureHandler
7
+ import com.swmansion.gesturehandler.GestureHandlerRegistry
8
+ import java.util.*
9
+
10
+ class RNGestureHandlerRegistry : GestureHandlerRegistry {
11
+ private val handlers = SparseArray<GestureHandler<*>>()
12
+ private val attachedTo = SparseArray<Int?>()
13
+ private val handlersForView = SparseArray<ArrayList<GestureHandler<*>>>()
14
+
15
+ @Synchronized
16
+ fun registerHandler(handler: GestureHandler<*>) {
17
+ handlers.put(handler.tag, handler)
18
+ }
19
+
20
+ @Synchronized
21
+ fun getHandler(handlerTag: Int): GestureHandler<*>? {
22
+ return handlers[handlerTag]
23
+ }
24
+
25
+ @Synchronized
26
+ fun attachHandlerToView(handlerTag: Int, viewTag: Int, useDeviceEvents: Boolean = false): Boolean {
27
+ val handler = handlers[handlerTag]
28
+ return handler?.let {
29
+ detachHandler(handler)
30
+ handler.usesDeviceEvents = useDeviceEvents
31
+ registerHandlerForViewWithTag(viewTag, handler)
32
+ true
33
+ } ?: false
34
+ }
35
+
36
+ @Synchronized
37
+ private fun registerHandlerForViewWithTag(viewTag: Int, handler: GestureHandler<*>) {
38
+ check(attachedTo[handler.tag] == null) { "Handler $handler already attached" }
39
+ attachedTo.put(handler.tag, viewTag)
40
+ var listToAdd = handlersForView[viewTag]
41
+ if (listToAdd == null) {
42
+ listToAdd = ArrayList(1)
43
+ listToAdd.add(handler)
44
+ handlersForView.put(viewTag, listToAdd)
45
+ } else {
46
+ listToAdd.add(handler)
47
+ }
48
+ }
49
+
50
+ @Synchronized
51
+ private fun detachHandler(handler: GestureHandler<*>) {
52
+ val attachedToView = attachedTo[handler.tag]
53
+ if (attachedToView != null) {
54
+ attachedTo.remove(handler.tag)
55
+ val attachedHandlers = handlersForView[attachedToView]
56
+ if (attachedHandlers != null) {
57
+ attachedHandlers.remove(handler)
58
+ if (attachedHandlers.size == 0) {
59
+ handlersForView.remove(attachedToView)
60
+ }
61
+ }
62
+ }
63
+ if (handler.view != null) {
64
+ // Handler is in "prepared" state which means it is registered in the orchestrator and can
65
+ // receive touch events. This means that before we remove it from the registry we need to
66
+ // "cancel" it so that orchestrator does no longer keep a reference to it.
67
+ UiThreadUtil.runOnUiThread { handler.cancel() }
68
+ }
69
+ }
70
+
71
+ @Synchronized
72
+ fun dropHandler(handlerTag: Int) {
73
+ handlers[handlerTag]?.let {
74
+ detachHandler(it)
75
+ handlers.remove(handlerTag)
76
+ }
77
+ }
78
+
79
+ @Synchronized
80
+ fun dropAllHandlers() {
81
+ handlers.clear()
82
+ attachedTo.clear()
83
+ handlersForView.clear()
84
+ }
85
+
86
+ @Synchronized
87
+ fun getHandlersForViewWithTag(viewTag: Int): ArrayList<GestureHandler<*>>? {
88
+ return handlersForView[viewTag]
89
+ }
90
+
91
+ @Synchronized
92
+ override fun getHandlersForView(view: View): ArrayList<GestureHandler<*>>? {
93
+ return getHandlersForViewWithTag(view.id)
94
+ }
95
+ }
@@ -0,0 +1,132 @@
1
+ package com.swmansion.gesturehandler.react
2
+
3
+ import android.os.SystemClock
4
+ import android.util.Log
5
+ import android.view.MotionEvent
6
+ import android.view.ViewGroup
7
+ import android.view.ViewParent
8
+ import com.facebook.react.bridge.ReactContext
9
+ import com.facebook.react.bridge.UiThreadUtil
10
+ import com.facebook.react.common.ReactConstants
11
+ import com.facebook.react.uimanager.RootView
12
+ import com.facebook.react.views.modal.ReactModalHostView
13
+ import com.swmansion.gesturehandler.GestureHandler
14
+ import com.swmansion.gesturehandler.GestureHandlerOrchestrator
15
+
16
+ class RNGestureHandlerRootHelper(private val context: ReactContext, wrappedView: ViewGroup) {
17
+ private val orchestrator: GestureHandlerOrchestrator?
18
+ private val jsGestureHandler: GestureHandler<*>?
19
+ val rootView: ViewGroup
20
+ private var shouldIntercept = false
21
+ private var passingTouch = false
22
+
23
+ init {
24
+ UiThreadUtil.assertOnUiThread()
25
+ val wrappedViewTag = wrappedView.id
26
+ check(wrappedViewTag >= 1) { "Expect view tag to be set for $wrappedView" }
27
+ val module = context.getNativeModule(RNGestureHandlerModule::class.java)!!
28
+ val registry = module.registry
29
+ rootView = findRootViewTag(wrappedView)
30
+ Log.i(
31
+ ReactConstants.TAG,
32
+ "[GESTURE HANDLER] Initialize gesture handler for root view $rootView")
33
+ orchestrator = GestureHandlerOrchestrator(
34
+ wrappedView, registry, RNViewConfigurationHelper()).apply {
35
+ minimumAlphaForTraversal = MIN_ALPHA_FOR_TOUCH
36
+ }
37
+ jsGestureHandler = RootViewGestureHandler().apply { tag = -wrappedViewTag }
38
+ with(registry) {
39
+ registerHandler(jsGestureHandler)
40
+ attachHandlerToView(jsGestureHandler.tag, wrappedViewTag)
41
+ }
42
+ module.registerRootHelper(this)
43
+ }
44
+
45
+ fun tearDown() {
46
+ Log.i(
47
+ ReactConstants.TAG,
48
+ "[GESTURE HANDLER] Tearing down gesture handler registered for root view $rootView")
49
+ val module = context.getNativeModule(RNGestureHandlerModule::class.java)!!
50
+ with(module) {
51
+ registry.dropHandler(jsGestureHandler!!.tag)
52
+ unregisterRootHelper(this@RNGestureHandlerRootHelper)
53
+ }
54
+ }
55
+
56
+ private inner class RootViewGestureHandler : GestureHandler<RootViewGestureHandler>() {
57
+ override fun onHandle(event: MotionEvent) {
58
+ val currentState = state
59
+ if (currentState == STATE_UNDETERMINED) {
60
+ begin()
61
+ shouldIntercept = false
62
+ }
63
+ if (event.actionMasked == MotionEvent.ACTION_UP) {
64
+ end()
65
+ }
66
+ }
67
+
68
+ override fun onCancel() {
69
+ shouldIntercept = true
70
+ val time = SystemClock.uptimeMillis()
71
+ val event = MotionEvent.obtain(time, time, MotionEvent.ACTION_CANCEL, 0f, 0f, 0).apply {
72
+ action = MotionEvent.ACTION_CANCEL
73
+ }
74
+ if (rootView is RootView) {
75
+ rootView.onChildStartedNativeGesture(event)
76
+ }
77
+ }
78
+ }
79
+
80
+ fun requestDisallowInterceptTouchEvent(disallowIntercept: Boolean) {
81
+ // If this method gets called it means that some native view is attempting to grab lock for
82
+ // touch event delivery. In that case we cancel all gesture recognizers
83
+ if (orchestrator != null && !passingTouch) {
84
+ // if we are in the process of delivering touch events via GH orchestrator, we don't want to
85
+ // treat it as a native gesture capturing the lock
86
+ tryCancelAllHandlers()
87
+ }
88
+ }
89
+
90
+ fun dispatchTouchEvent(ev: MotionEvent): Boolean {
91
+ // We mark `mPassingTouch` before we get into `mOrchestrator.onTouchEvent` so that we can tell
92
+ // if `requestDisallow` has been called as a result of a normal gesture handling process or
93
+ // as a result of one of the gesture handlers activating
94
+ passingTouch = true
95
+ orchestrator!!.onTouchEvent(ev)
96
+ passingTouch = false
97
+ return shouldIntercept
98
+ }
99
+
100
+ private fun tryCancelAllHandlers() {
101
+ // In order to cancel handlers we activate handler that is hooked to the root view
102
+ jsGestureHandler?.apply {
103
+ if (state == GestureHandler.STATE_BEGAN) {
104
+ // Try activate main JS handler
105
+ activate()
106
+ end()
107
+ }
108
+ }
109
+ }
110
+
111
+ /*package*/
112
+ fun handleSetJSResponder(viewTag: Int, blockNativeResponder: Boolean) {
113
+ if (blockNativeResponder) {
114
+ UiThreadUtil.runOnUiThread { tryCancelAllHandlers() }
115
+ }
116
+ }
117
+
118
+ companion object {
119
+ private const val MIN_ALPHA_FOR_TOUCH = 0.1f
120
+ private fun findRootViewTag(viewGroup: ViewGroup): ViewGroup {
121
+ UiThreadUtil.assertOnUiThread()
122
+ var parent: ViewParent? = viewGroup
123
+ while (parent != null && parent !is RootView) {
124
+ parent = parent.parent
125
+ }
126
+ checkNotNull(parent) {
127
+ "View $viewGroup has not been mounted under ReactRootView"
128
+ }
129
+ return parent as ViewGroup
130
+ }
131
+ }
132
+ }
@@ -0,0 +1,5 @@
1
+ package com.swmansion.gesturehandler.react
2
+
3
+ interface RNGestureHandlerRootInterface {
4
+ val rootHelper: RNGestureHandlerRootHelper?
5
+ }
@@ -0,0 +1,68 @@
1
+ package com.swmansion.gesturehandler.react
2
+
3
+ import android.content.Context
4
+ import android.util.Log
5
+ import android.view.MotionEvent
6
+ import android.view.ViewGroup
7
+ import android.view.ViewParent
8
+ import com.facebook.react.bridge.ReactContext
9
+ import com.facebook.react.bridge.UiThreadUtil
10
+ import com.facebook.react.common.ReactConstants
11
+ import com.facebook.react.uimanager.RootView
12
+ import com.facebook.react.views.modal.ReactModalHostView
13
+ import com.facebook.react.views.view.ReactViewGroup
14
+
15
+ class RNGestureHandlerRootView(context: Context?) : ReactViewGroup(context) {
16
+ private var _enabled = false
17
+ private var rootHelper: RNGestureHandlerRootHelper? = null // TODO: resettable lateinit
18
+ override fun onAttachedToWindow() {
19
+ super.onAttachedToWindow()
20
+ _enabled = !hasGestureHandlerEnabledRootView(this)
21
+ if (!_enabled) {
22
+ Log.i(
23
+ ReactConstants.TAG,
24
+ "[GESTURE HANDLER] Gesture handler is already enabled for a parent view"
25
+ )
26
+ }
27
+ if (_enabled && rootHelper == null) {
28
+ rootHelper = RNGestureHandlerRootHelper(context as ReactContext, this)
29
+ }
30
+ }
31
+
32
+ fun tearDown() {
33
+ rootHelper?.tearDown()
34
+ }
35
+
36
+ override fun dispatchTouchEvent(ev: MotionEvent) =
37
+ if (_enabled && rootHelper!!.dispatchTouchEvent(ev)) {
38
+ true
39
+ } else super.dispatchTouchEvent(ev)
40
+
41
+ override fun requestDisallowInterceptTouchEvent(disallowIntercept: Boolean) {
42
+ if (_enabled) {
43
+ rootHelper!!.requestDisallowInterceptTouchEvent(disallowIntercept)
44
+ }
45
+ super.requestDisallowInterceptTouchEvent(disallowIntercept)
46
+ }
47
+
48
+ companion object {
49
+ private fun hasGestureHandlerEnabledRootView(viewGroup: ViewGroup): Boolean {
50
+ UiThreadUtil.assertOnUiThread()
51
+
52
+ var parent = viewGroup.parent
53
+ while (parent != null) {
54
+ if (parent is RNGestureHandlerEnabledRootView || parent is RNGestureHandlerRootView) {
55
+ return true
56
+ }
57
+ // Checks other roots views but it's mainly for ReactModalHostView.DialogRootViewGroup
58
+ // since modals are outside RN hierachy and we have to initialize GH's root view for it
59
+ // Note that RNGestureHandlerEnabledRootView implements RootView - that's why this check has to be below
60
+ if (parent is RootView) {
61
+ return false
62
+ }
63
+ parent = parent.parent
64
+ }
65
+ return false
66
+ }
67
+ }
68
+ }
@@ -0,0 +1,34 @@
1
+ package com.swmansion.gesturehandler.react
2
+
3
+ import com.facebook.react.module.annotations.ReactModule
4
+ import com.facebook.react.uimanager.ThemedReactContext
5
+ import com.facebook.react.uimanager.ViewGroupManager
6
+
7
+ /**
8
+ * React native's view manager used for creating instances of []RNGestureHandlerRootView}. It
9
+ * is being used by projects using react-native-navigation where for each screen new root view need
10
+ * to be provided.
11
+ */
12
+ @ReactModule(name = RNGestureHandlerRootViewManager.REACT_CLASS)
13
+ class RNGestureHandlerRootViewManager : ViewGroupManager<RNGestureHandlerRootView>() {
14
+ override fun getName() = REACT_CLASS
15
+ override fun createViewInstance(reactContext: ThemedReactContext) = RNGestureHandlerRootView(reactContext)
16
+
17
+ override fun onDropViewInstance(view: RNGestureHandlerRootView) {
18
+ view.tearDown()
19
+ }
20
+
21
+ /**
22
+ * The following event configuration is necessary even if you are not using
23
+ * GestureHandlerRootView component directly.
24
+ */
25
+ override fun getExportedCustomDirectEventTypeConstants(): Map<String, Map<String, String>> = mutableMapOf(
26
+ RNGestureHandlerEvent.EVENT_NAME to
27
+ mutableMapOf("registrationName" to RNGestureHandlerEvent.EVENT_NAME),
28
+ RNGestureHandlerStateChangeEvent.EVENT_NAME to
29
+ mutableMapOf("registrationName" to RNGestureHandlerStateChangeEvent.EVENT_NAME))
30
+
31
+ companion object {
32
+ const val REACT_CLASS = "GestureHandlerRootView"
33
+ }
34
+ }
@@ -0,0 +1,66 @@
1
+ package com.swmansion.gesturehandler.react
2
+
3
+ import androidx.core.util.Pools
4
+ import com.facebook.react.bridge.Arguments
5
+ import com.facebook.react.bridge.WritableMap
6
+ import com.facebook.react.uimanager.events.Event
7
+ import com.facebook.react.uimanager.events.RCTEventEmitter
8
+ import com.swmansion.gesturehandler.GestureHandler
9
+
10
+ class RNGestureHandlerStateChangeEvent private constructor() : Event<RNGestureHandlerStateChangeEvent>() {
11
+ private var extraData: WritableMap? = null
12
+ private fun <T : GestureHandler<T>> init(
13
+ handler: T,
14
+ newState: Int,
15
+ oldState: Int,
16
+ dataExtractor: RNGestureHandlerEventDataExtractor<T>?,
17
+ ) {
18
+ super.init(handler.view!!.id)
19
+ extraData = createEventData(handler, dataExtractor, newState, oldState)
20
+ }
21
+
22
+ override fun onDispose() {
23
+ extraData = null
24
+ EVENTS_POOL.release(this)
25
+ }
26
+
27
+ override fun getEventName() = EVENT_NAME
28
+
29
+ // TODO: coalescing
30
+ override fun canCoalesce() = false
31
+
32
+ // TODO: coalescing
33
+ override fun getCoalescingKey(): Short = 0
34
+
35
+ override fun dispatch(rctEventEmitter: RCTEventEmitter) {
36
+ rctEventEmitter.receiveEvent(viewTag, EVENT_NAME, extraData)
37
+ }
38
+
39
+ companion object {
40
+ const val EVENT_NAME = "onGestureHandlerStateChange"
41
+ private const val TOUCH_EVENTS_POOL_SIZE = 7 // magic
42
+ private val EVENTS_POOL = Pools.SynchronizedPool<RNGestureHandlerStateChangeEvent>(TOUCH_EVENTS_POOL_SIZE)
43
+
44
+ fun <T : GestureHandler<T>> obtain(
45
+ handler: T,
46
+ newState: Int,
47
+ oldState: Int,
48
+ dataExtractor: RNGestureHandlerEventDataExtractor<T>?,
49
+ ): RNGestureHandlerStateChangeEvent =
50
+ (EVENTS_POOL.acquire() ?: RNGestureHandlerStateChangeEvent()).apply {
51
+ init(handler, newState, oldState, dataExtractor)
52
+ }
53
+
54
+ fun <T: GestureHandler<T>> createEventData(
55
+ handler: T,
56
+ dataExtractor: RNGestureHandlerEventDataExtractor<T>?,
57
+ newState: Int,
58
+ oldState: Int,
59
+ ): WritableMap = Arguments.createMap().apply {
60
+ dataExtractor?.extractEventData(handler, this)
61
+ putInt("handlerTag", handler.tag)
62
+ putInt("state", newState)
63
+ putInt("oldState", oldState)
64
+ }
65
+ }
66
+ }
@@ -0,0 +1,69 @@
1
+ package com.swmansion.gesturehandler.react
2
+
3
+ import androidx.core.util.Pools
4
+ import com.facebook.react.bridge.Arguments
5
+ import com.facebook.react.bridge.WritableMap
6
+ import com.facebook.react.uimanager.events.Event
7
+ import com.facebook.react.uimanager.events.RCTEventEmitter
8
+ import com.swmansion.gesturehandler.GestureHandler
9
+
10
+ class RNGestureHandlerTouchEvent private constructor() : Event<RNGestureHandlerTouchEvent>() {
11
+ private var extraData: WritableMap? = null
12
+ private var coalescingKey: Short = 0
13
+ private fun <T : GestureHandler<T>> init(handler: T) {
14
+ super.init(handler.view!!.id)
15
+ extraData = createEventData(handler)
16
+ coalescingKey = handler.eventCoalescingKey
17
+ }
18
+
19
+ override fun onDispose() {
20
+ extraData = null
21
+ EVENTS_POOL.release(this)
22
+ }
23
+
24
+ override fun getEventName() = EVENT_NAME
25
+
26
+ override fun canCoalesce() = true
27
+
28
+ override fun getCoalescingKey() = coalescingKey
29
+
30
+ override fun dispatch(rctEventEmitter: RCTEventEmitter) {
31
+ rctEventEmitter.receiveEvent(viewTag, EVENT_NAME, extraData)
32
+ }
33
+
34
+ companion object {
35
+ const val EVENT_UNDETERMINED = 0
36
+ const val EVENT_TOUCH_DOWN = 1
37
+ const val EVENT_TOUCH_MOVE = 2
38
+ const val EVENT_TOUCH_UP = 3
39
+ const val EVENT_TOUCH_CANCELLED = 4
40
+
41
+ const val EVENT_NAME = "onGestureHandlerEvent"
42
+ private const val TOUCH_EVENTS_POOL_SIZE = 7 // magic
43
+ private val EVENTS_POOL = Pools.SynchronizedPool<RNGestureHandlerTouchEvent>(TOUCH_EVENTS_POOL_SIZE)
44
+
45
+ fun <T : GestureHandler<T>> obtain(handler: T): RNGestureHandlerTouchEvent =
46
+ (EVENTS_POOL.acquire() ?: RNGestureHandlerTouchEvent()).apply {
47
+ init(handler)
48
+ }
49
+
50
+ fun <T: GestureHandler<T>> createEventData(handler: T,): WritableMap = Arguments.createMap().apply {
51
+ putInt("handlerTag", handler.tag)
52
+ putInt("state", handler.state)
53
+ putInt("numberOfTouches", handler.trackedPointersCount)
54
+ putInt("eventType", handler.touchEventType)
55
+
56
+ handler.consumeChangedTouchesPayload()?.let {
57
+ putArray("changedTouches", it)
58
+ }
59
+
60
+ handler.consumeAllTouchesPayload()?.let {
61
+ putArray("allTouches", it)
62
+ }
63
+
64
+ if (handler.isAwaiting && handler.state == GestureHandler.STATE_ACTIVE) {
65
+ putInt("state", GestureHandler.STATE_BEGAN)
66
+ }
67
+ }
68
+ }
69
+ }
@@ -0,0 +1,51 @@
1
+ package com.swmansion.gesturehandler.react
2
+
3
+ import android.view.View
4
+ import android.view.ViewGroup
5
+ import com.facebook.react.uimanager.PointerEvents
6
+ import com.facebook.react.uimanager.ReactPointerEventsView
7
+ import com.facebook.react.views.view.ReactViewGroup
8
+ import com.swmansion.gesturehandler.PointerEventsConfig
9
+ import com.swmansion.gesturehandler.ViewConfigurationHelper
10
+
11
+ class RNViewConfigurationHelper : ViewConfigurationHelper {
12
+ override fun getPointerEventsConfigForView(view: View): PointerEventsConfig {
13
+ val pointerEvents: PointerEvents =
14
+ if (view is ReactPointerEventsView) {
15
+ (view as ReactPointerEventsView).pointerEvents
16
+ } else PointerEvents.AUTO
17
+
18
+ // Views that are disabled should never be the target of pointer events. However, their children
19
+ // can be because some views (SwipeRefreshLayout) use enabled but still have children that can
20
+ // be valid targets.
21
+ if (!view.isEnabled) {
22
+ if (pointerEvents == PointerEvents.AUTO) {
23
+ return PointerEventsConfig.BOX_NONE
24
+ } else if (pointerEvents == PointerEvents.BOX_ONLY) {
25
+ return PointerEventsConfig.NONE
26
+ }
27
+ }
28
+
29
+ return when (pointerEvents) {
30
+ PointerEvents.BOX_ONLY -> PointerEventsConfig.BOX_ONLY
31
+ PointerEvents.BOX_NONE -> PointerEventsConfig.BOX_NONE
32
+ PointerEvents.NONE -> PointerEventsConfig.NONE
33
+ PointerEvents.AUTO -> PointerEventsConfig.AUTO
34
+ }
35
+ }
36
+
37
+ override fun getChildInDrawingOrderAtIndex(parent: ViewGroup, index: Int): View {
38
+ return if (parent is ReactViewGroup) {
39
+ parent.getChildAt(parent.getZIndexMappedChildIndex(index))
40
+ } else parent.getChildAt(index)
41
+ }
42
+
43
+ override fun isViewClippingChildren(view: ViewGroup): Boolean {
44
+ if (view.clipChildren) {
45
+ return true
46
+ }
47
+ return if (view is ReactViewGroup) {
48
+ "hidden" == view.overflow
49
+ } else false
50
+ }
51
+ }
@@ -1,14 +1,78 @@
1
1
  #import "RNFlingHandler.h"
2
2
 
3
+ @interface RNBetterSwipeGestureRecognizer : UISwipeGestureRecognizer
4
+
5
+ - (id)initWithGestureHandler:(RNGestureHandler*)gestureHandler;
6
+
7
+ @end
8
+
9
+ @implementation RNBetterSwipeGestureRecognizer {
10
+ __weak RNGestureHandler* _gestureHandler;
11
+ }
12
+
13
+ - (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler
14
+ {
15
+ if ((self = [super initWithTarget:gestureHandler action:@selector(handleGesture:)])) {
16
+ _gestureHandler = gestureHandler;
17
+ }
18
+ return self;
19
+ }
20
+
21
+ - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
22
+ {
23
+ [_gestureHandler reset];
24
+ [self triggerAction];
25
+ [super touchesBegan:touches withEvent:event];
26
+ [_gestureHandler.pointerTracker touchesBegan:touches withEvent:event];
27
+ }
28
+
29
+ - (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
30
+ {
31
+ [super touchesMoved:touches withEvent:event];
32
+ [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event];
33
+ }
34
+
35
+ - (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
36
+ {
37
+ [super touchesEnded:touches withEvent:event];
38
+ [_gestureHandler.pointerTracker touchesEnded:touches withEvent:event];
39
+ }
40
+
41
+ - (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
42
+ {
43
+ [super touchesCancelled:touches withEvent:event];
44
+ [_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event];
45
+ }
46
+
47
+ - (void)triggerAction
48
+ {
49
+ [_gestureHandler handleGesture:self];
50
+ }
51
+
52
+ - (void)reset
53
+ {
54
+ [self triggerAction];
55
+ [_gestureHandler.pointerTracker reset];
56
+ [super reset];
57
+ }
58
+
59
+ @end
60
+
3
61
  @implementation RNFlingGestureHandler
4
62
 
5
63
  - (instancetype)initWithTag:(NSNumber *)tag
6
64
  {
7
- if ((self = [super initWithTag:tag])) {
8
- _recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];
9
-
10
- }
11
- return self;
65
+ if ((self = [super initWithTag:tag])) {
66
+ _recognizer = [[RNBetterSwipeGestureRecognizer alloc] initWithGestureHandler:self];
67
+ }
68
+ return self;
69
+ }
70
+ - (void)resetConfig
71
+ {
72
+ [super resetConfig];
73
+ UISwipeGestureRecognizer *recognizer = (UISwipeGestureRecognizer *)_recognizer;
74
+ recognizer.direction = UISwipeGestureRecognizerDirectionRight;
75
+ recognizer.numberOfTouchesRequired = 1;
12
76
  }
13
77
 
14
78
  - (void)configure:(NSDictionary *)config
@@ -29,5 +93,14 @@
29
93
  #endif
30
94
  }
31
95
 
96
+ - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
97
+ {
98
+ RNGestureHandlerState savedState = _lastState;
99
+ BOOL shouldBegin = [super gestureRecognizerShouldBegin:gestureRecognizer];
100
+ _lastState = savedState;
101
+
102
+ return shouldBegin;
103
+ }
104
+
32
105
  @end
33
106