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
@@ -1,731 +0,0 @@
1
- package com.swmansion.gesturehandler.react;
2
-
3
- import android.content.Context;
4
- import android.view.MotionEvent;
5
- import android.view.View;
6
- import android.view.ViewGroup;
7
-
8
- import com.facebook.react.ReactRootView;
9
- import com.facebook.react.bridge.JSApplicationIllegalArgumentException;
10
- import com.facebook.react.bridge.ReactApplicationContext;
11
- import com.facebook.react.bridge.ReactContextBaseJavaModule;
12
- import com.facebook.react.bridge.ReactMethod;
13
- import com.facebook.react.bridge.ReadableMap;
14
- import com.facebook.react.bridge.ReadableType;
15
- import com.facebook.react.bridge.WritableMap;
16
- import com.facebook.react.common.MapBuilder;
17
- import com.facebook.react.module.annotations.ReactModule;
18
- import com.facebook.react.uimanager.NativeViewHierarchyManager;
19
- import com.facebook.react.uimanager.PixelUtil;
20
- import com.facebook.react.uimanager.UIBlock;
21
- import com.facebook.react.uimanager.UIManagerModule;
22
- import com.facebook.react.uimanager.events.EventDispatcher;
23
- import com.swmansion.gesturehandler.FlingGestureHandler;
24
- import com.swmansion.gesturehandler.GestureHandler;
25
- import com.swmansion.gesturehandler.LongPressGestureHandler;
26
- import com.swmansion.gesturehandler.NativeViewGestureHandler;
27
- import com.swmansion.gesturehandler.OnTouchEventListener;
28
- import com.swmansion.gesturehandler.PanGestureHandler;
29
- import com.swmansion.gesturehandler.PinchGestureHandler;
30
- import com.swmansion.gesturehandler.RotationGestureHandler;
31
- import com.swmansion.gesturehandler.TapGestureHandler;
32
-
33
- import java.util.ArrayList;
34
- import java.util.List;
35
- import java.util.Map;
36
-
37
- import androidx.annotation.Nullable;
38
-
39
- import static com.swmansion.gesturehandler.GestureHandler.HIT_SLOP_NONE;
40
-
41
- @ReactModule(name=RNGestureHandlerModule.MODULE_NAME)
42
- public class RNGestureHandlerModule extends ReactContextBaseJavaModule {
43
-
44
- public static final String MODULE_NAME = "RNGestureHandlerModule";
45
-
46
- private static final String KEY_SHOULD_CANCEL_WHEN_OUTSIDE = "shouldCancelWhenOutside";
47
- private static final String KEY_ENABLED = "enabled";
48
- private static final String KEY_HIT_SLOP = "hitSlop";
49
- private static final String KEY_HIT_SLOP_LEFT = "left";
50
- private static final String KEY_HIT_SLOP_TOP = "top";
51
- private static final String KEY_HIT_SLOP_RIGHT = "right";
52
- private static final String KEY_HIT_SLOP_BOTTOM = "bottom";
53
- private static final String KEY_HIT_SLOP_VERTICAL = "vertical";
54
- private static final String KEY_HIT_SLOP_HORIZONTAL = "horizontal";
55
- private static final String KEY_HIT_SLOP_WIDTH = "width";
56
- private static final String KEY_HIT_SLOP_HEIGHT = "height";
57
- private static final String KEY_NATIVE_VIEW_SHOULD_ACTIVATE_ON_START = "shouldActivateOnStart";
58
- private static final String KEY_NATIVE_VIEW_DISALLOW_INTERRUPTION = "disallowInterruption";
59
- private static final String KEY_TAP_NUMBER_OF_TAPS = "numberOfTaps";
60
- private static final String KEY_TAP_MAX_DURATION_MS = "maxDurationMs";
61
- private static final String KEY_TAP_MAX_DELAY_MS = "maxDelayMs";
62
- private static final String KEY_TAP_MAX_DELTA_X = "maxDeltaX";
63
- private static final String KEY_TAP_MAX_DELTA_Y = "maxDeltaY";
64
- private static final String KEY_TAP_MAX_DIST = "maxDist";
65
- private static final String KEY_TAP_MIN_POINTERS = "minPointers";
66
- private static final String KEY_LONG_PRESS_MIN_DURATION_MS = "minDurationMs";
67
- private static final String KEY_LONG_PRESS_MAX_DIST = "maxDist";
68
- private static final String KEY_PAN_ACTIVE_OFFSET_X_START = "activeOffsetXStart";
69
- private static final String KEY_PAN_ACTIVE_OFFSET_X_END = "activeOffsetXEnd";
70
- private static final String KEY_PAN_FAIL_OFFSET_RANGE_X_START = "failOffsetXStart";
71
- private static final String KEY_PAN_FAIL_OFFSET_RANGE_X_END = "failOffsetXEnd";
72
- private static final String KEY_PAN_ACTIVE_OFFSET_Y_START = "activeOffsetYStart";
73
- private static final String KEY_PAN_ACTIVE_OFFSET_Y_END = "activeOffsetYEnd";
74
- private static final String KEY_PAN_FAIL_OFFSET_RANGE_Y_START = "failOffsetYStart";
75
- private static final String KEY_PAN_FAIL_OFFSET_RANGE_Y_END = "failOffsetYEnd";
76
- private static final String KEY_PAN_MIN_DIST = "minDist";
77
- private static final String KEY_PAN_MIN_VELOCITY = "minVelocity";
78
- private static final String KEY_PAN_MIN_VELOCITY_X = "minVelocityX";
79
- private static final String KEY_PAN_MIN_VELOCITY_Y = "minVelocityY";
80
- private static final String KEY_PAN_MIN_POINTERS = "minPointers";
81
- private static final String KEY_PAN_MAX_POINTERS = "maxPointers";
82
- private static final String KEY_PAN_AVG_TOUCHES = "avgTouches";
83
- private static final String KEY_NUMBER_OF_POINTERS = "numberOfPointers";
84
- private static final String KEY_DIRECTION= "direction";
85
-
86
- private abstract static class HandlerFactory<T extends GestureHandler>
87
- implements RNGestureHandlerEventDataExtractor<T> {
88
-
89
- public abstract Class<T> getType();
90
-
91
- public abstract String getName();
92
-
93
- public abstract T create(Context context);
94
-
95
- public void configure(T handler, ReadableMap config) {
96
- if (config.hasKey(KEY_SHOULD_CANCEL_WHEN_OUTSIDE)) {
97
- handler.setShouldCancelWhenOutside(config.getBoolean(KEY_SHOULD_CANCEL_WHEN_OUTSIDE));
98
- }
99
- if (config.hasKey(KEY_ENABLED)) {
100
- handler.setEnabled(config.getBoolean(KEY_ENABLED));
101
- }
102
- if (config.hasKey(KEY_HIT_SLOP)) {
103
- handleHitSlopProperty(handler, config);
104
- }
105
- }
106
-
107
- @Override
108
- public void extractEventData(T handler, WritableMap eventData) {
109
- eventData.putDouble("numberOfPointers", handler.getNumberOfPointers());
110
- }
111
- }
112
-
113
- private static class NativeViewGestureHandlerFactory extends
114
- HandlerFactory<NativeViewGestureHandler> {
115
- @Override
116
- public Class<NativeViewGestureHandler> getType() {
117
- return NativeViewGestureHandler.class;
118
- }
119
-
120
- @Override
121
- public String getName() {
122
- return "NativeViewGestureHandler";
123
- }
124
-
125
- @Override
126
- public NativeViewGestureHandler create(Context context) {
127
- return new NativeViewGestureHandler();
128
- }
129
-
130
- @Override
131
- public void configure(NativeViewGestureHandler handler, ReadableMap config) {
132
- super.configure(handler, config);
133
- if (config.hasKey(KEY_NATIVE_VIEW_SHOULD_ACTIVATE_ON_START)) {
134
- handler.setShouldActivateOnStart(
135
- config.getBoolean(KEY_NATIVE_VIEW_SHOULD_ACTIVATE_ON_START));
136
- }
137
- if (config.hasKey(KEY_NATIVE_VIEW_DISALLOW_INTERRUPTION)) {
138
- handler.setDisallowInterruption(config.getBoolean(KEY_NATIVE_VIEW_DISALLOW_INTERRUPTION));
139
- }
140
- }
141
-
142
- @Override
143
- public void extractEventData(NativeViewGestureHandler handler, WritableMap eventData) {
144
- super.extractEventData(handler, eventData);
145
- eventData.putBoolean("pointerInside", handler.isWithinBounds());
146
- }
147
- }
148
-
149
- private static class TapGestureHandlerFactory extends HandlerFactory<TapGestureHandler> {
150
- @Override
151
- public Class<TapGestureHandler> getType() {
152
- return TapGestureHandler.class;
153
- }
154
-
155
- @Override
156
- public String getName() {
157
- return "TapGestureHandler";
158
- }
159
-
160
- @Override
161
- public TapGestureHandler create(Context context) {
162
- return new TapGestureHandler();
163
- }
164
-
165
- @Override
166
- public void configure(TapGestureHandler handler, ReadableMap config) {
167
- super.configure(handler, config);
168
- if (config.hasKey(KEY_TAP_NUMBER_OF_TAPS)) {
169
- handler.setNumberOfTaps(config.getInt(KEY_TAP_NUMBER_OF_TAPS));
170
- }
171
- if (config.hasKey(KEY_TAP_MAX_DURATION_MS)) {
172
- handler.setMaxDurationMs(config.getInt(KEY_TAP_MAX_DURATION_MS));
173
- }
174
- if (config.hasKey(KEY_TAP_MAX_DELAY_MS)) {
175
- handler.setMaxDelayMs(config.getInt(KEY_TAP_MAX_DELAY_MS));
176
- }
177
- if (config.hasKey(KEY_TAP_MAX_DELTA_X)) {
178
- handler.setMaxDx(PixelUtil.toPixelFromDIP(config.getDouble(KEY_TAP_MAX_DELTA_X)));
179
- }
180
- if (config.hasKey(KEY_TAP_MAX_DELTA_Y)) {
181
- handler.setMaxDy(PixelUtil.toPixelFromDIP(config.getDouble(KEY_TAP_MAX_DELTA_Y)));
182
- }
183
- if (config.hasKey(KEY_TAP_MAX_DIST)) {
184
- handler.setMaxDist(PixelUtil.toPixelFromDIP(config.getDouble(KEY_TAP_MAX_DIST)));
185
- }
186
- if (config.hasKey(KEY_TAP_MIN_POINTERS)) {
187
- handler.setMinNumberOfPointers(config.getInt(KEY_TAP_MIN_POINTERS));
188
- }
189
- }
190
-
191
- @Override
192
- public void extractEventData(TapGestureHandler handler, WritableMap eventData) {
193
- super.extractEventData(handler, eventData);
194
- eventData.putDouble("x", PixelUtil.toDIPFromPixel(handler.getLastRelativePositionX()));
195
- eventData.putDouble("y", PixelUtil.toDIPFromPixel(handler.getLastRelativePositionY()));
196
- eventData.putDouble("absoluteX", PixelUtil.toDIPFromPixel(handler.getLastAbsolutePositionX()));
197
- eventData.putDouble("absoluteY", PixelUtil.toDIPFromPixel(handler.getLastAbsolutePositionY()));
198
- }
199
- }
200
-
201
- private static class LongPressGestureHandlerFactory extends
202
- HandlerFactory<LongPressGestureHandler> {
203
- @Override
204
- public Class<LongPressGestureHandler> getType() {
205
- return LongPressGestureHandler.class;
206
- }
207
-
208
- @Override
209
- public String getName() {
210
- return "LongPressGestureHandler";
211
- }
212
-
213
- @Override
214
- public LongPressGestureHandler create(Context context) {
215
- return new LongPressGestureHandler(context);
216
- }
217
-
218
- @Override
219
- public void configure(LongPressGestureHandler handler, ReadableMap config) {
220
- super.configure(handler, config);
221
- if (config.hasKey(KEY_LONG_PRESS_MIN_DURATION_MS)) {
222
- handler.setMinDurationMs(config.getInt(KEY_LONG_PRESS_MIN_DURATION_MS));
223
- }
224
- if (config.hasKey(KEY_LONG_PRESS_MAX_DIST)) {
225
- handler.setMaxDist(PixelUtil.toPixelFromDIP(config.getDouble(KEY_LONG_PRESS_MAX_DIST)));
226
- }
227
- }
228
-
229
- @Override
230
- public void extractEventData(LongPressGestureHandler handler, WritableMap eventData) {
231
- super.extractEventData(handler, eventData);
232
- eventData.putDouble("x", PixelUtil.toDIPFromPixel(handler.getLastRelativePositionX()));
233
- eventData.putDouble("y", PixelUtil.toDIPFromPixel(handler.getLastRelativePositionY()));
234
- eventData.putDouble("absoluteX", PixelUtil.toDIPFromPixel(handler.getLastAbsolutePositionX()));
235
- eventData.putDouble("absoluteY", PixelUtil.toDIPFromPixel(handler.getLastAbsolutePositionY()));
236
- }
237
- }
238
-
239
- private static class PanGestureHandlerFactory extends HandlerFactory<PanGestureHandler> {
240
- @Override
241
- public Class<PanGestureHandler> getType() {
242
- return PanGestureHandler.class;
243
- }
244
-
245
- @Override
246
- public String getName() {
247
- return "PanGestureHandler";
248
- }
249
-
250
- @Override
251
- public PanGestureHandler create(Context context) {
252
- return new PanGestureHandler(context);
253
- }
254
-
255
- @Override
256
- public void configure(PanGestureHandler handler, ReadableMap config) {
257
- super.configure(handler, config);
258
- boolean hasCustomActivationCriteria = false;
259
- if(config.hasKey(KEY_PAN_ACTIVE_OFFSET_X_START)) {
260
- handler.setActiveOffsetXStart(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_ACTIVE_OFFSET_X_START)));
261
- hasCustomActivationCriteria = true;
262
- }
263
- if(config.hasKey(KEY_PAN_ACTIVE_OFFSET_X_END)) {
264
- handler.setActiveOffsetXEnd(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_ACTIVE_OFFSET_X_END)));
265
- hasCustomActivationCriteria = true;
266
- }
267
- if(config.hasKey(KEY_PAN_FAIL_OFFSET_RANGE_X_START)) {
268
- handler.setFailOffsetXStart(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_FAIL_OFFSET_RANGE_X_START)));
269
- hasCustomActivationCriteria = true;
270
- }
271
- if(config.hasKey(KEY_PAN_FAIL_OFFSET_RANGE_X_END)) {
272
- handler.setFailOffsetXEnd(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_FAIL_OFFSET_RANGE_X_END)));
273
- hasCustomActivationCriteria = true;
274
- }
275
- if(config.hasKey(KEY_PAN_ACTIVE_OFFSET_Y_START)) {
276
- handler.setActiveOffsetYStart(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_ACTIVE_OFFSET_Y_START)));
277
- hasCustomActivationCriteria = true;
278
- }
279
- if(config.hasKey(KEY_PAN_ACTIVE_OFFSET_Y_END)) {
280
- handler.setActiveOffsetYEnd(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_ACTIVE_OFFSET_Y_END)));
281
- hasCustomActivationCriteria = true;
282
- }
283
- if(config.hasKey(KEY_PAN_FAIL_OFFSET_RANGE_Y_START)) {
284
- handler.setFailOffsetYStart(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_FAIL_OFFSET_RANGE_Y_START)));
285
- hasCustomActivationCriteria = true;
286
- }
287
- if(config.hasKey(KEY_PAN_FAIL_OFFSET_RANGE_Y_END)) {
288
- handler.setFailOffsetYEnd(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_FAIL_OFFSET_RANGE_Y_END)));
289
- hasCustomActivationCriteria = true;
290
- }
291
-
292
- if (config.hasKey(KEY_PAN_MIN_VELOCITY)) {
293
- // This value is actually in DPs/ms, but we can use the same function as for converting
294
- // from DPs to pixels as the unit we're converting is in the numerator
295
- handler.setMinVelocity(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_MIN_VELOCITY)));
296
- hasCustomActivationCriteria = true;
297
- }
298
- if (config.hasKey(KEY_PAN_MIN_VELOCITY_X)) {
299
- handler.setMinVelocityX(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_MIN_VELOCITY_X)));
300
- hasCustomActivationCriteria = true;
301
- }
302
- if (config.hasKey(KEY_PAN_MIN_VELOCITY_Y)) {
303
- handler.setMinVelocityY(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_MIN_VELOCITY_Y)));
304
- hasCustomActivationCriteria = true;
305
- }
306
-
307
- // PanGestureHandler sets minDist by default, if there are custom criteria specified we want
308
- // to reset that setting and use provided criteria instead.
309
- if (config.hasKey(KEY_PAN_MIN_DIST)) {
310
- handler.setMinDist(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_MIN_DIST)));
311
- } else if (hasCustomActivationCriteria) {
312
- handler.setMinDist(Float.MAX_VALUE);
313
- }
314
-
315
- if (config.hasKey(KEY_PAN_MIN_POINTERS)) {
316
- handler.setMinPointers(config.getInt(KEY_PAN_MIN_POINTERS));
317
- }
318
- if (config.hasKey(KEY_PAN_MAX_POINTERS)) {
319
- handler.setMaxPointers(config.getInt(KEY_PAN_MAX_POINTERS));
320
- }
321
- if (config.hasKey(KEY_PAN_AVG_TOUCHES)) {
322
- handler.setAverageTouches(config.getBoolean(KEY_PAN_AVG_TOUCHES));
323
- }
324
- }
325
-
326
- @Override
327
- public void extractEventData(PanGestureHandler handler, WritableMap eventData) {
328
- super.extractEventData(handler, eventData);
329
- eventData.putDouble("x", PixelUtil.toDIPFromPixel(handler.getLastRelativePositionX()));
330
- eventData.putDouble("y", PixelUtil.toDIPFromPixel(handler.getLastRelativePositionY()));
331
- eventData.putDouble("absoluteX", PixelUtil.toDIPFromPixel(handler.getLastAbsolutePositionX()));
332
- eventData.putDouble("absoluteY", PixelUtil.toDIPFromPixel(handler.getLastAbsolutePositionY()));
333
- eventData.putDouble("translationX", PixelUtil.toDIPFromPixel(handler.getTranslationX()));
334
- eventData.putDouble("translationY", PixelUtil.toDIPFromPixel(handler.getTranslationY()));
335
- eventData.putDouble("velocityX", PixelUtil.toDIPFromPixel(handler.getVelocityX()));
336
- eventData.putDouble("velocityY", PixelUtil.toDIPFromPixel(handler.getVelocityY()));
337
- }
338
- }
339
-
340
- private static class PinchGestureHandlerFactory extends HandlerFactory<PinchGestureHandler> {
341
- @Override
342
- public Class<PinchGestureHandler> getType() {
343
- return PinchGestureHandler.class;
344
- }
345
-
346
- @Override
347
- public String getName() {
348
- return "PinchGestureHandler";
349
- }
350
-
351
- @Override
352
- public PinchGestureHandler create(Context context) {
353
- return new PinchGestureHandler();
354
- }
355
-
356
- @Override
357
- public void extractEventData(PinchGestureHandler handler, WritableMap eventData) {
358
- super.extractEventData(handler, eventData);
359
- eventData.putDouble("scale", handler.getScale());
360
- eventData.putDouble("focalX", PixelUtil.toDIPFromPixel(handler.getFocalPointX()));
361
- eventData.putDouble("focalY", PixelUtil.toDIPFromPixel(handler.getFocalPointY()));
362
- eventData.putDouble("velocity", handler.getVelocity());
363
- }
364
- }
365
-
366
- private static class FlingGestureHandlerFactory extends HandlerFactory<FlingGestureHandler> {
367
- @Override
368
- public Class<FlingGestureHandler> getType() {
369
- return FlingGestureHandler.class;
370
- }
371
-
372
- @Override
373
- public String getName() {
374
- return "FlingGestureHandler";
375
- }
376
-
377
- @Override
378
- public FlingGestureHandler create(Context context) {
379
- return new FlingGestureHandler();
380
- }
381
-
382
- @Override
383
- public void configure(FlingGestureHandler handler, ReadableMap config) {
384
- super.configure(handler, config);
385
- if (config.hasKey(KEY_NUMBER_OF_POINTERS)) {
386
- handler.setNumberOfPointersRequired(config.getInt(KEY_NUMBER_OF_POINTERS));
387
- }
388
- if (config.hasKey(KEY_DIRECTION)) {
389
- handler.setDirection(config.getInt(KEY_DIRECTION));
390
- }
391
- }
392
- @Override
393
- public void extractEventData(FlingGestureHandler handler, WritableMap eventData) {
394
- super.extractEventData(handler, eventData);
395
- eventData.putDouble("x", PixelUtil.toDIPFromPixel(handler.getLastRelativePositionX()));
396
- eventData.putDouble("y", PixelUtil.toDIPFromPixel(handler.getLastRelativePositionY()));
397
- eventData.putDouble("absoluteX", PixelUtil.toDIPFromPixel(handler.getLastAbsolutePositionX()));
398
- eventData.putDouble("absoluteY", PixelUtil.toDIPFromPixel(handler.getLastAbsolutePositionY()));
399
- }
400
- }
401
-
402
- private static class RotationGestureHandlerFactory extends HandlerFactory<RotationGestureHandler> {
403
- @Override
404
- public Class<RotationGestureHandler> getType() {
405
- return RotationGestureHandler.class;
406
- }
407
-
408
- @Override
409
- public String getName() {
410
- return "RotationGestureHandler";
411
- }
412
-
413
- @Override
414
- public RotationGestureHandler create(Context context) {
415
- return new RotationGestureHandler();
416
- }
417
-
418
- @Override
419
- public void extractEventData(RotationGestureHandler handler, WritableMap eventData) {
420
- super.extractEventData(handler, eventData);
421
- eventData.putDouble("rotation", handler.getRotation());
422
- eventData.putDouble("anchorX", PixelUtil.toDIPFromPixel(handler.getAnchorX()));
423
- eventData.putDouble("anchorY", PixelUtil.toDIPFromPixel(handler.getAnchorY()));
424
- eventData.putDouble("velocity", handler.getVelocity());
425
- }
426
- }
427
-
428
- private OnTouchEventListener mEventListener = new OnTouchEventListener() {
429
- @Override
430
- public void onTouchEvent(GestureHandler handler, MotionEvent event) {
431
- RNGestureHandlerModule.this.onTouchEvent(handler, event);
432
- }
433
-
434
- @Override
435
- public void onStateChange(GestureHandler handler, int newState, int oldState) {
436
- RNGestureHandlerModule.this.onStateChange(handler, newState, oldState);
437
- }
438
- };
439
-
440
- private HandlerFactory[] mHandlerFactories = new HandlerFactory[] {
441
- new NativeViewGestureHandlerFactory(),
442
- new TapGestureHandlerFactory(),
443
- new LongPressGestureHandlerFactory(),
444
- new PanGestureHandlerFactory(),
445
- new PinchGestureHandlerFactory(),
446
- new RotationGestureHandlerFactory(),
447
- new FlingGestureHandlerFactory()
448
- };
449
- private final RNGestureHandlerRegistry mRegistry = new RNGestureHandlerRegistry();
450
-
451
- private RNGestureHandlerInteractionManager mInteractionManager =
452
- new RNGestureHandlerInteractionManager();
453
- private List<RNGestureHandlerRootHelper> mRoots = new ArrayList<>();
454
- private List<Integer> mEnqueuedRootViewInit = new ArrayList<>();
455
-
456
- public RNGestureHandlerModule(ReactApplicationContext reactContext) {
457
- super(reactContext);
458
- }
459
-
460
- @Override
461
- public String getName() {
462
- return MODULE_NAME;
463
- }
464
-
465
- @ReactMethod
466
- public void createGestureHandler(
467
- String handlerName,
468
- int handlerTag,
469
- ReadableMap config) {
470
- for (int i = 0; i < mHandlerFactories.length; i++) {
471
- HandlerFactory handlerFactory = mHandlerFactories[i];
472
- if (handlerFactory.getName().equals(handlerName)) {
473
- GestureHandler handler = handlerFactory.create(getReactApplicationContext());
474
- handler.setTag(handlerTag);
475
- handler.setOnTouchEventListener(mEventListener);
476
- mRegistry.registerHandler(handler);
477
- mInteractionManager.configureInteractions(handler, config);
478
- handlerFactory.configure(handler, config);
479
- return;
480
- }
481
- }
482
- throw new JSApplicationIllegalArgumentException("Invalid handler name " + handlerName);
483
- }
484
-
485
- @ReactMethod
486
- public void attachGestureHandler(int handlerTag, int viewTag) {
487
- tryInitializeHandlerForReactRootView(viewTag);
488
- if (!mRegistry.attachHandlerToView(handlerTag, viewTag)) {
489
- throw new JSApplicationIllegalArgumentException(
490
- "Handler with tag " + handlerTag + " does not exists");
491
- }
492
- }
493
-
494
- @ReactMethod
495
- public void updateGestureHandler(
496
- int handlerTag,
497
- ReadableMap config) {
498
- GestureHandler handler = mRegistry.getHandler(handlerTag);
499
- if (handler != null) {
500
- HandlerFactory factory = findFactoryForHandler(handler);
501
- if (factory != null) {
502
- mInteractionManager.dropRelationsForHandlerWithTag(handlerTag);
503
- mInteractionManager.configureInteractions(handler, config);
504
- factory.configure(handler, config);
505
- }
506
- }
507
- }
508
-
509
- @ReactMethod
510
- public void dropGestureHandler(int handlerTag) {
511
- mInteractionManager.dropRelationsForHandlerWithTag(handlerTag);
512
- mRegistry.dropHandler(handlerTag);
513
- }
514
-
515
- @ReactMethod
516
- public void handleSetJSResponder(int viewTag, boolean blockNativeResponder) {
517
- if (mRegistry != null) {
518
- RNGestureHandlerRootHelper rootView = findRootHelperForViewAncestor(viewTag);
519
- if (rootView != null) {
520
- rootView.handleSetJSResponder(viewTag, blockNativeResponder);
521
- }
522
- }
523
- }
524
-
525
- @ReactMethod
526
- public void handleClearJSResponder() {
527
- }
528
-
529
- @Override
530
- public @Nullable Map getConstants() {
531
- return MapBuilder.of("State", MapBuilder.of(
532
- "UNDETERMINED", GestureHandler.STATE_UNDETERMINED,
533
- "BEGAN", GestureHandler.STATE_BEGAN,
534
- "ACTIVE", GestureHandler.STATE_ACTIVE,
535
- "CANCELLED", GestureHandler.STATE_CANCELLED,
536
- "FAILED", GestureHandler.STATE_FAILED,
537
- "END", GestureHandler.STATE_END
538
- ), "Direction", MapBuilder.of(
539
- "RIGHT", GestureHandler.DIRECTION_RIGHT,
540
- "LEFT", GestureHandler.DIRECTION_LEFT,
541
- "UP", GestureHandler.DIRECTION_UP,
542
- "DOWN", GestureHandler.DIRECTION_DOWN
543
- ));
544
- }
545
-
546
- public RNGestureHandlerRegistry getRegistry() {
547
- return mRegistry;
548
- }
549
-
550
-
551
- @Override
552
- public void onCatalystInstanceDestroy() {
553
- mRegistry.dropAllHandlers();
554
- mInteractionManager.reset();
555
- synchronized (mRoots) {
556
- while (!mRoots.isEmpty()) {
557
- int sizeBefore = mRoots.size();
558
- RNGestureHandlerRootHelper root = mRoots.get(0);
559
- ViewGroup reactRootView = root.getRootView();
560
- if (reactRootView instanceof RNGestureHandlerEnabledRootView) {
561
- ((RNGestureHandlerEnabledRootView) reactRootView).tearDown();
562
- } else {
563
- root.tearDown();
564
- }
565
- if (mRoots.size() >= sizeBefore) {
566
- throw new IllegalStateException("Expected root helper to get unregistered while tearing down");
567
- }
568
- }
569
- }
570
- super.onCatalystInstanceDestroy();
571
- }
572
-
573
- private void tryInitializeHandlerForReactRootView(int ancestorViewTag) {
574
- UIManagerModule uiManager = getReactApplicationContext().getNativeModule(UIManagerModule.class);
575
- final int rootViewTag = uiManager.resolveRootTagFromReactTag(ancestorViewTag);
576
- if (rootViewTag < 1) {
577
- throw new JSApplicationIllegalArgumentException("Could find root view for a given ancestor with tag "
578
- + ancestorViewTag);
579
- }
580
- synchronized (mRoots) {
581
- for (int i = 0; i < mRoots.size(); i++) {
582
- RNGestureHandlerRootHelper root = mRoots.get(i);
583
- ViewGroup rootView = root.getRootView();
584
- if (rootView instanceof ReactRootView && ((ReactRootView) rootView).getRootViewTag() == rootViewTag) {
585
- // we have found root helper registered for a given react root, we don't need to
586
- // initialize a new one then
587
- return;
588
- }
589
- }
590
- }
591
- synchronized (mEnqueuedRootViewInit) {
592
- if (mEnqueuedRootViewInit.contains(rootViewTag)) {
593
- // root view initialization already enqueued -> we skip
594
- return;
595
- }
596
- mEnqueuedRootViewInit.add(rootViewTag);
597
- }
598
- // root helper for a given root tag has not been found, we may wat to check if the root view is
599
- // an instance of RNGestureHandlerEnabledRootView and then initialize gesture handler with it
600
- uiManager.addUIBlock(new UIBlock() {
601
- @Override
602
- public void execute(NativeViewHierarchyManager nativeViewHierarchyManager) {
603
- View view = nativeViewHierarchyManager.resolveView(rootViewTag);
604
- if (view instanceof RNGestureHandlerEnabledRootView) {
605
- ((RNGestureHandlerEnabledRootView) view).initialize();
606
- } else {
607
- // Seems like the root view is something else than RNGestureHandlerEnabledRootView, this
608
- // is fine though as long as gestureHandlerRootHOC is used in JS
609
- // FIXME: check and warn about gestureHandlerRootHOC
610
- }
611
- synchronized (mEnqueuedRootViewInit) {
612
- mEnqueuedRootViewInit.remove(new Integer(rootViewTag));
613
- }
614
- }
615
- });
616
- }
617
-
618
- public void registerRootHelper(RNGestureHandlerRootHelper root) {
619
- synchronized (mRoots) {
620
- if (mRoots.contains(root)) {
621
- throw new IllegalStateException("Root helper" + root + " already registered");
622
- }
623
- mRoots.add(root);
624
- }
625
- }
626
-
627
- public void unregisterRootHelper(RNGestureHandlerRootHelper root) {
628
- synchronized (mRoots) {
629
- mRoots.remove(root);
630
- }
631
- }
632
-
633
-
634
- private @Nullable RNGestureHandlerRootHelper findRootHelperForViewAncestor(int viewTag) {
635
- UIManagerModule uiManager = getReactApplicationContext().getNativeModule(UIManagerModule.class);
636
- int rootViewTag = uiManager.resolveRootTagFromReactTag(viewTag);
637
- if (rootViewTag < 1) {
638
- return null;
639
- }
640
- synchronized (mRoots) {
641
- for (int i = 0; i < mRoots.size(); i++) {
642
- RNGestureHandlerRootHelper root = mRoots.get(i);
643
- ViewGroup rootView = root.getRootView();
644
- if (rootView instanceof ReactRootView && ((ReactRootView) rootView).getRootViewTag() == rootViewTag) {
645
- return root;
646
- }
647
- }
648
- }
649
- return null;
650
- }
651
-
652
- private @Nullable HandlerFactory findFactoryForHandler(GestureHandler handler) {
653
- for (int i = 0; i < mHandlerFactories.length; i++) {
654
- HandlerFactory factory = mHandlerFactories[i];
655
- if (factory.getType().equals(handler.getClass())) {
656
- return factory;
657
- }
658
- }
659
- return null;
660
- }
661
-
662
- private void onTouchEvent(GestureHandler handler, MotionEvent motionEvent) {
663
- if (handler.getTag() < 0) {
664
- // root containers use negative tags, we don't need to dispatch events for them to the JS
665
- return;
666
- }
667
- if (handler.getState() == GestureHandler.STATE_ACTIVE) {
668
- HandlerFactory handlerFactory = findFactoryForHandler(handler);
669
- EventDispatcher eventDispatcher = getReactApplicationContext()
670
- .getNativeModule(UIManagerModule.class)
671
- .getEventDispatcher();
672
- RNGestureHandlerEvent event = RNGestureHandlerEvent.obtain(handler, handlerFactory);
673
- eventDispatcher.dispatchEvent(event);
674
- }
675
- }
676
-
677
- private void onStateChange(GestureHandler handler, int newState, int oldState) {
678
- if (handler.getTag() < 0) {
679
- // root containers use negative tags, we don't need to dispatch events for them to the JS
680
- return;
681
- }
682
- HandlerFactory handlerFactory = findFactoryForHandler(handler);
683
- EventDispatcher eventDispatcher = getReactApplicationContext()
684
- .getNativeModule(UIManagerModule.class)
685
- .getEventDispatcher();
686
- RNGestureHandlerStateChangeEvent event = RNGestureHandlerStateChangeEvent.obtain(
687
- handler,
688
- newState,
689
- oldState,
690
- handlerFactory);
691
- eventDispatcher.dispatchEvent(event);
692
- }
693
-
694
- private static void handleHitSlopProperty(GestureHandler handler, ReadableMap config) {
695
- if (config.getType(KEY_HIT_SLOP) == ReadableType.Number) {
696
- float hitSlop = PixelUtil.toPixelFromDIP(config.getDouble(KEY_HIT_SLOP));
697
- handler.setHitSlop(hitSlop, hitSlop, hitSlop, hitSlop, HIT_SLOP_NONE, HIT_SLOP_NONE);
698
- } else {
699
- ReadableMap hitSlop = config.getMap(KEY_HIT_SLOP);
700
- float left = HIT_SLOP_NONE, top = HIT_SLOP_NONE, right = HIT_SLOP_NONE, bottom = HIT_SLOP_NONE;
701
- float width = HIT_SLOP_NONE, height = HIT_SLOP_NONE;
702
- if (hitSlop.hasKey(KEY_HIT_SLOP_HORIZONTAL)) {
703
- float horizontalPad = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_HORIZONTAL));
704
- left = right = horizontalPad;
705
- }
706
- if (hitSlop.hasKey(KEY_HIT_SLOP_VERTICAL)) {
707
- float verticalPad = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_VERTICAL));
708
- top = bottom = verticalPad;
709
- }
710
- if (hitSlop.hasKey(KEY_HIT_SLOP_LEFT)) {
711
- left = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_LEFT));
712
- }
713
- if (hitSlop.hasKey(KEY_HIT_SLOP_TOP)) {
714
- top = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_TOP));
715
- }
716
- if (hitSlop.hasKey(KEY_HIT_SLOP_RIGHT)) {
717
- right = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_RIGHT));
718
- }
719
- if (hitSlop.hasKey(KEY_HIT_SLOP_BOTTOM)) {
720
- bottom = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_BOTTOM));
721
- }
722
- if (hitSlop.hasKey(KEY_HIT_SLOP_WIDTH)) {
723
- width = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_WIDTH));
724
- }
725
- if (hitSlop.hasKey(KEY_HIT_SLOP_HEIGHT)) {
726
- height = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_HEIGHT));
727
- }
728
- handler.setHitSlop(left, top, right, bottom, width, height);
729
- }
730
- }
731
- }