react-native-gesture-handler 1.10.3 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (384) hide show
  1. package/README.md +10 -8
  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 +744 -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 +596 -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 +292 -0
  19. package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.kt +90 -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 +81 -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/RNGestureHandler.xcodeproj/project.xcworkspace/xcuserdata/jakubpiasecki.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  53. package/ios/RNGestureHandler.xcodeproj/xcuserdata/jakubpiasecki.xcuserdatad/xcschemes/xcschememanagement.plist +19 -0
  54. package/ios/RNGestureHandlerEvents.h +9 -0
  55. package/ios/RNGestureHandlerEvents.m +34 -0
  56. package/ios/RNGestureHandlerManager.h +7 -0
  57. package/ios/RNGestureHandlerManager.m +62 -34
  58. package/ios/RNGestureHandlerModule.m +39 -3
  59. package/ios/RNGestureHandlerPointerTracker.h +25 -0
  60. package/ios/RNGestureHandlerPointerTracker.m +237 -0
  61. package/ios/RNGestureHandlerRegistry.h +1 -0
  62. package/ios/RNGestureHandlerRegistry.m +10 -0
  63. package/ios/RNGestureHandlerStateManager.h +5 -0
  64. package/ios/RNManualActivationRecognizer.h +10 -0
  65. package/ios/RNManualActivationRecognizer.m +80 -0
  66. package/ios/RNRootViewGestureRecognizer.m +1 -1
  67. package/ios/RNTouchEventType.h +9 -0
  68. package/lib/commonjs/EventType.js +16 -0
  69. package/lib/commonjs/EventType.js.map +1 -0
  70. package/lib/commonjs/GestureHandlerRootView.android.js +1 -13
  71. package/lib/commonjs/GestureHandlerRootView.android.js.map +1 -1
  72. package/lib/commonjs/GestureHandlerRootView.js +11 -3
  73. package/lib/commonjs/GestureHandlerRootView.js.map +1 -1
  74. package/lib/commonjs/RNGestureHandlerModule.js +3 -1
  75. package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
  76. package/lib/commonjs/RNGestureHandlerModule.web.js +2 -2
  77. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
  78. package/lib/commonjs/components/DrawerLayout.js +41 -37
  79. package/lib/commonjs/components/DrawerLayout.js.map +1 -1
  80. package/lib/commonjs/components/GestureButtons.js.map +1 -1
  81. package/lib/commonjs/components/GestureComponents.js +31 -12
  82. package/lib/commonjs/components/GestureComponents.js.map +1 -1
  83. package/lib/commonjs/components/Swipeable.js +10 -6
  84. package/lib/commonjs/components/Swipeable.js.map +1 -1
  85. package/lib/commonjs/components/touchables/GenericTouchable.js +2 -1
  86. package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
  87. package/lib/commonjs/components/touchables/TouchableOpacity.js +1 -1
  88. package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
  89. package/lib/commonjs/gestureHandlerRootHOC.js +1 -1
  90. package/lib/commonjs/gestureHandlerRootHOC.js.map +1 -1
  91. package/lib/commonjs/handlers/FlingGestureHandler.js +23 -0
  92. package/lib/commonjs/handlers/FlingGestureHandler.js.map +1 -0
  93. package/lib/commonjs/handlers/ForceTouchGestureHandler.js +44 -0
  94. package/lib/commonjs/handlers/ForceTouchGestureHandler.js.map +1 -0
  95. package/lib/commonjs/handlers/LongPressGestureHandler.js +23 -0
  96. package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -0
  97. package/lib/commonjs/handlers/NativeViewGestureHandler.js +6 -4
  98. package/lib/commonjs/handlers/NativeViewGestureHandler.js.map +1 -1
  99. package/lib/commonjs/handlers/PanGestureHandler.js +121 -0
  100. package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -0
  101. package/lib/commonjs/handlers/PinchGestureHandler.js +21 -0
  102. package/lib/commonjs/handlers/PinchGestureHandler.js.map +1 -0
  103. package/lib/commonjs/handlers/RotationGestureHandler.js +21 -0
  104. package/lib/commonjs/handlers/RotationGestureHandler.js.map +1 -0
  105. package/lib/commonjs/handlers/TapGestureHandler.js +23 -0
  106. package/lib/commonjs/handlers/TapGestureHandler.js.map +1 -0
  107. package/lib/commonjs/handlers/createHandler.js +65 -84
  108. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  109. package/lib/commonjs/handlers/gestureHandlerCommon.js +80 -0
  110. package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -0
  111. package/lib/commonjs/handlers/gestures/GestureDetector.js +440 -0
  112. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -0
  113. package/lib/commonjs/handlers/gestures/eventReceiver.js +135 -0
  114. package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -0
  115. package/lib/commonjs/handlers/gestures/flingGesture.js +34 -0
  116. package/lib/commonjs/handlers/gestures/flingGesture.js.map +1 -0
  117. package/lib/commonjs/handlers/gestures/forceTouchGesture.js +65 -0
  118. package/lib/commonjs/handlers/gestures/forceTouchGesture.js.map +1 -0
  119. package/lib/commonjs/handlers/gestures/gesture.js +193 -0
  120. package/lib/commonjs/handlers/gestures/gesture.js.map +1 -0
  121. package/lib/commonjs/handlers/gestures/gestureComposition.js +94 -0
  122. package/lib/commonjs/handlers/gestures/gestureComposition.js.map +1 -0
  123. package/lib/commonjs/handlers/gestures/gestureObjects.js +85 -0
  124. package/lib/commonjs/handlers/gestures/gestureObjects.js.map +1 -0
  125. package/lib/commonjs/handlers/gestures/gestureStateManager.js +58 -0
  126. package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -0
  127. package/lib/commonjs/handlers/gestures/longPressGesture.js +34 -0
  128. package/lib/commonjs/handlers/gestures/longPressGesture.js.map +1 -0
  129. package/lib/commonjs/handlers/gestures/manualGesture.js +31 -0
  130. package/lib/commonjs/handlers/gestures/manualGesture.js.map +1 -0
  131. package/lib/commonjs/handlers/gestures/nativeGesture.js +34 -0
  132. package/lib/commonjs/handlers/gestures/nativeGesture.js.map +1 -0
  133. package/lib/commonjs/handlers/gestures/panGesture.js +144 -0
  134. package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -0
  135. package/lib/commonjs/handlers/gestures/pinchGesture.js +45 -0
  136. package/lib/commonjs/handlers/gestures/pinchGesture.js.map +1 -0
  137. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js +24 -0
  138. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -0
  139. package/lib/commonjs/handlers/gestures/rotationGesture.js +45 -0
  140. package/lib/commonjs/handlers/gestures/rotationGesture.js.map +1 -0
  141. package/lib/commonjs/handlers/gestures/tapGesture.js +59 -0
  142. package/lib/commonjs/handlers/gestures/tapGesture.js.map +1 -0
  143. package/lib/commonjs/handlers/handlersRegistry.js +31 -0
  144. package/lib/commonjs/handlers/handlersRegistry.js.map +1 -0
  145. package/lib/commonjs/index.js +40 -8
  146. package/lib/commonjs/index.js.map +1 -1
  147. package/lib/commonjs/init.js +13 -0
  148. package/lib/commonjs/init.js.map +1 -0
  149. package/lib/commonjs/mocks.js +31 -2
  150. package/lib/commonjs/mocks.js.map +1 -1
  151. package/lib/commonjs/utils.js +15 -0
  152. package/lib/commonjs/utils.js.map +1 -0
  153. package/lib/commonjs/web/Errors.js +1 -1
  154. package/lib/commonjs/web/Errors.js.map +1 -1
  155. package/lib/commonjs/web/GestureHandler.js +4 -6
  156. package/lib/commonjs/web/GestureHandler.js.map +1 -1
  157. package/lib/commonjs/web/NodeManager.js +8 -2
  158. package/lib/commonjs/web/NodeManager.js.map +1 -1
  159. package/lib/module/EventType.js +8 -0
  160. package/lib/module/EventType.js.map +1 -0
  161. package/lib/module/GestureHandlerRootView.android.js +2 -14
  162. package/lib/module/GestureHandlerRootView.android.js.map +1 -1
  163. package/lib/module/GestureHandlerRootView.js +5 -1
  164. package/lib/module/GestureHandlerRootView.js.map +1 -1
  165. package/lib/module/RNGestureHandlerModule.js +3 -1
  166. package/lib/module/RNGestureHandlerModule.js.map +1 -1
  167. package/lib/module/RNGestureHandlerModule.web.js +2 -2
  168. package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
  169. package/lib/module/components/DrawerLayout.js +43 -40
  170. package/lib/module/components/DrawerLayout.js.map +1 -1
  171. package/lib/module/components/GestureButtons.js.map +1 -1
  172. package/lib/module/components/GestureComponents.js +29 -11
  173. package/lib/module/components/GestureComponents.js.map +1 -1
  174. package/lib/module/components/Swipeable.js +9 -6
  175. package/lib/module/components/Swipeable.js.map +1 -1
  176. package/lib/module/components/touchables/GenericTouchable.js +2 -1
  177. package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
  178. package/lib/module/components/touchables/TouchableOpacity.js +1 -1
  179. package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
  180. package/lib/module/gestureHandlerRootHOC.js +1 -1
  181. package/lib/module/gestureHandlerRootHOC.js.map +1 -1
  182. package/lib/module/handlers/FlingGestureHandler.js +10 -0
  183. package/lib/module/handlers/FlingGestureHandler.js.map +1 -0
  184. package/lib/module/handlers/ForceTouchGestureHandler.js +29 -0
  185. package/lib/module/handlers/ForceTouchGestureHandler.js.map +1 -0
  186. package/lib/module/handlers/LongPressGestureHandler.js +10 -0
  187. package/lib/module/handlers/LongPressGestureHandler.js.map +1 -0
  188. package/lib/module/handlers/NativeViewGestureHandler.js +4 -3
  189. package/lib/module/handlers/NativeViewGestureHandler.js.map +1 -1
  190. package/lib/module/handlers/PanGestureHandler.js +106 -0
  191. package/lib/module/handlers/PanGestureHandler.js.map +1 -0
  192. package/lib/module/handlers/PinchGestureHandler.js +9 -0
  193. package/lib/module/handlers/PinchGestureHandler.js.map +1 -0
  194. package/lib/module/handlers/RotationGestureHandler.js +9 -0
  195. package/lib/module/handlers/RotationGestureHandler.js.map +1 -0
  196. package/lib/module/handlers/TapGestureHandler.js +10 -0
  197. package/lib/module/handlers/TapGestureHandler.js.map +1 -0
  198. package/lib/module/handlers/createHandler.js +55 -77
  199. package/lib/module/handlers/createHandler.js.map +1 -1
  200. package/lib/module/handlers/gestureHandlerCommon.js +66 -0
  201. package/lib/module/handlers/gestureHandlerCommon.js.map +1 -0
  202. package/lib/module/handlers/gestures/GestureDetector.js +402 -0
  203. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -0
  204. package/lib/module/handlers/gestures/eventReceiver.js +120 -0
  205. package/lib/module/handlers/gestures/eventReceiver.js.map +1 -0
  206. package/lib/module/handlers/gestures/flingGesture.js +24 -0
  207. package/lib/module/handlers/gestures/flingGesture.js.map +1 -0
  208. package/lib/module/handlers/gestures/forceTouchGesture.js +56 -0
  209. package/lib/module/handlers/gestures/forceTouchGesture.js.map +1 -0
  210. package/lib/module/handlers/gestures/gesture.js +175 -0
  211. package/lib/module/handlers/gestures/gesture.js.map +1 -0
  212. package/lib/module/handlers/gestures/gestureComposition.js +79 -0
  213. package/lib/module/handlers/gestures/gestureComposition.js.map +1 -0
  214. package/lib/module/handlers/gestures/gestureObjects.js +67 -0
  215. package/lib/module/handlers/gestures/gestureObjects.js.map +1 -0
  216. package/lib/module/handlers/gestures/gestureStateManager.js +48 -0
  217. package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -0
  218. package/lib/module/handlers/gestures/longPressGesture.js +24 -0
  219. package/lib/module/handlers/gestures/longPressGesture.js.map +1 -0
  220. package/lib/module/handlers/gestures/manualGesture.js +22 -0
  221. package/lib/module/handlers/gestures/manualGesture.js.map +1 -0
  222. package/lib/module/handlers/gestures/nativeGesture.js +24 -0
  223. package/lib/module/handlers/gestures/nativeGesture.js.map +1 -0
  224. package/lib/module/handlers/gestures/panGesture.js +135 -0
  225. package/lib/module/handlers/gestures/panGesture.js.map +1 -0
  226. package/lib/module/handlers/gestures/pinchGesture.js +36 -0
  227. package/lib/module/handlers/gestures/pinchGesture.js.map +1 -0
  228. package/lib/module/handlers/gestures/reanimatedWrapper.js +19 -0
  229. package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -0
  230. package/lib/module/handlers/gestures/rotationGesture.js +36 -0
  231. package/lib/module/handlers/gestures/rotationGesture.js.map +1 -0
  232. package/lib/module/handlers/gestures/tapGesture.js +49 -0
  233. package/lib/module/handlers/gestures/tapGesture.js.map +1 -0
  234. package/lib/module/handlers/handlersRegistry.js +16 -0
  235. package/lib/module/handlers/handlersRegistry.js.map +1 -0
  236. package/lib/module/index.js +11 -1
  237. package/lib/module/index.js.map +1 -1
  238. package/lib/module/init.js +5 -0
  239. package/lib/module/init.js.map +1 -0
  240. package/lib/module/mocks.js +31 -2
  241. package/lib/module/mocks.js.map +1 -1
  242. package/lib/module/utils.js +8 -0
  243. package/lib/module/utils.js.map +1 -0
  244. package/lib/module/web/Errors.js +1 -1
  245. package/lib/module/web/Errors.js.map +1 -1
  246. package/lib/module/web/GestureHandler.js +4 -6
  247. package/lib/module/web/GestureHandler.js.map +1 -1
  248. package/lib/module/web/NodeManager.js +8 -2
  249. package/lib/module/web/NodeManager.js.map +1 -1
  250. package/lib/typescript/EventType.d.ts +8 -0
  251. package/lib/typescript/GestureHandlerRootView.android.d.ts +2 -4
  252. package/lib/typescript/GestureHandlerRootView.d.ts +5 -2
  253. package/lib/typescript/RNGestureHandlerModule.d.ts +1 -1
  254. package/lib/typescript/RNGestureHandlerModule.web.d.ts +1 -1
  255. package/lib/typescript/components/DrawerLayout.d.ts +50 -1
  256. package/lib/typescript/components/GestureButtons.d.ts +36 -0
  257. package/lib/typescript/components/GestureComponents.d.ts +8 -35
  258. package/lib/typescript/components/Swipeable.d.ts +73 -6
  259. package/lib/typescript/components/touchables/GenericTouchable.d.ts +2 -2
  260. package/lib/typescript/components/touchables/TouchableHighlight.d.ts +1 -0
  261. package/lib/typescript/components/touchables/TouchableOpacity.d.ts +1 -0
  262. package/lib/typescript/handlers/FlingGestureHandler.d.ts +33 -0
  263. package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +43 -0
  264. package/lib/typescript/handlers/LongPressGestureHandler.d.ts +55 -0
  265. package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +19 -4
  266. package/lib/typescript/handlers/PanGestureHandler.d.ts +137 -0
  267. package/lib/typescript/handlers/PinchGestureHandler.d.ts +28 -0
  268. package/lib/typescript/handlers/RotationGestureHandler.d.ts +28 -0
  269. package/lib/typescript/handlers/TapGestureHandler.d.ts +56 -0
  270. package/lib/typescript/handlers/createHandler.d.ts +1 -1
  271. package/lib/typescript/handlers/gestureHandlerCommon.d.ts +62 -0
  272. package/lib/typescript/handlers/gestureHandlerTypesCompat.d.ts +8 -1
  273. package/lib/typescript/handlers/gestures/GestureDetector.d.ts +16 -0
  274. package/lib/typescript/handlers/gestures/eventReceiver.d.ts +2 -0
  275. package/lib/typescript/handlers/gestures/flingGesture.d.ts +9 -0
  276. package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +16 -0
  277. package/lib/typescript/handlers/gestures/gesture.d.ts +97 -0
  278. package/lib/typescript/handlers/gestures/gestureComposition.d.ts +21 -0
  279. package/lib/typescript/handlers/gestures/gestureObjects.d.ts +39 -0
  280. package/lib/typescript/handlers/gestures/gestureStateManager.d.ts +9 -0
  281. package/lib/typescript/handlers/gestures/longPressGesture.d.ts +9 -0
  282. package/lib/typescript/handlers/gestures/manualGesture.d.ts +7 -0
  283. package/lib/typescript/handlers/gestures/nativeGesture.d.ts +9 -0
  284. package/lib/typescript/handlers/gestures/panGesture.d.ts +26 -0
  285. package/lib/typescript/handlers/gestures/pinchGesture.d.ts +12 -0
  286. package/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts +14 -0
  287. package/lib/typescript/handlers/gestures/rotationGesture.d.ts +12 -0
  288. package/lib/typescript/handlers/gestures/tapGesture.d.ts +14 -0
  289. package/lib/typescript/handlers/handlersRegistry.d.ts +6 -0
  290. package/lib/typescript/index.d.ts +29 -2
  291. package/lib/typescript/init.d.ts +1 -0
  292. package/lib/typescript/mocks.d.ts +21 -2
  293. package/lib/typescript/utils.d.ts +1 -0
  294. package/lib/typescript/web/FlingGestureHandler.d.ts +0 -1
  295. package/lib/typescript/web/GestureHandler.d.ts +0 -1
  296. package/lib/typescript/web/PanGestureHandler.d.ts +0 -1
  297. package/lib/typescript/web/PinchGestureHandler.d.ts +0 -1
  298. package/lib/typescript/web/PressGestureHandler.d.ts +0 -1
  299. package/lib/typescript/web/RotationGestureHandler.d.ts +0 -1
  300. package/lib/typescript/web/TapGestureHandler.d.ts +0 -1
  301. package/package.json +8 -5
  302. package/src/EventType.ts +10 -0
  303. package/src/GestureHandlerRootView.android.tsx +9 -25
  304. package/src/GestureHandlerRootView.tsx +11 -2
  305. package/src/RNGestureHandlerModule.ts +5 -1
  306. package/src/RNGestureHandlerModule.web.ts +1 -0
  307. package/src/components/DrawerLayout.tsx +114 -41
  308. package/src/components/GestureButtons.tsx +45 -5
  309. package/src/components/GestureComponents.tsx +47 -41
  310. package/src/components/Swipeable.tsx +108 -21
  311. package/src/components/touchables/GenericTouchable.tsx +2 -1
  312. package/src/components/touchables/TouchableOpacity.tsx +1 -1
  313. package/src/handlers/FlingGestureHandler.ts +57 -0
  314. package/src/handlers/ForceTouchGestureHandler.ts +83 -0
  315. package/src/handlers/LongPressGestureHandler.ts +84 -0
  316. package/src/handlers/NativeViewGestureHandler.ts +31 -7
  317. package/src/handlers/PanGestureHandler.ts +321 -0
  318. package/src/handlers/PinchGestureHandler.ts +46 -0
  319. package/src/handlers/RotationGestureHandler.ts +46 -0
  320. package/src/handlers/TapGestureHandler.ts +90 -0
  321. package/src/handlers/createHandler.ts +67 -79
  322. package/src/handlers/gestureHandlerCommon.ts +185 -0
  323. package/src/handlers/gestureHandlerTypesCompat.ts +19 -5
  324. package/src/handlers/gestures/GestureDetector.tsx +519 -0
  325. package/src/handlers/gestures/eventReceiver.ts +151 -0
  326. package/src/handlers/gestures/flingGesture.ts +27 -0
  327. package/src/handlers/gestures/forceTouchGesture.ts +74 -0
  328. package/src/handlers/gestures/gesture.ts +292 -0
  329. package/src/handlers/gestures/gestureComposition.ts +109 -0
  330. package/src/handlers/gestures/gestureObjects.ts +79 -0
  331. package/src/handlers/gestures/gestureStateManager.ts +60 -0
  332. package/src/handlers/gestures/longPressGesture.ts +27 -0
  333. package/src/handlers/gestures/manualGesture.ts +31 -0
  334. package/src/handlers/gestures/nativeGesture.ts +27 -0
  335. package/src/handlers/gestures/panGesture.ts +147 -0
  336. package/src/handlers/gestures/pinchGesture.ts +51 -0
  337. package/src/handlers/gestures/reanimatedWrapper.ts +45 -0
  338. package/src/handlers/gestures/rotationGesture.ts +51 -0
  339. package/src/handlers/gestures/tapGesture.ts +52 -0
  340. package/src/handlers/handlersRegistry.ts +22 -0
  341. package/src/index.ts +57 -17
  342. package/src/init.ts +5 -0
  343. package/src/mocks.ts +42 -2
  344. package/src/utils.ts +7 -0
  345. package/src/web/GestureHandler.ts +1 -2
  346. package/src/web/NodeManager.ts +5 -0
  347. package/android/lib/src/main/java/com/swmansion/gesturehandler/BaseGestureHandlerInteractionController.java +0 -23
  348. package/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.java +0 -110
  349. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.java +0 -531
  350. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerInteractionController.java +0 -8
  351. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.java +0 -543
  352. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistry.java +0 -10
  353. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistryImpl.java +0 -29
  354. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureUtils.java +0 -53
  355. package/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.java +0 -81
  356. package/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.java +0 -110
  357. package/android/lib/src/main/java/com/swmansion/gesturehandler/OnTouchEventListener.java +0 -8
  358. package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.java +0 -312
  359. package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.java +0 -109
  360. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureDetector.java +0 -169
  361. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.java +0 -96
  362. package/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.java +0 -172
  363. package/android/lib/src/main/java/com/swmansion/gesturehandler/ViewConfigurationHelper.java +0 -10
  364. package/android/src/main/java/com/facebook/react/views/modal/RNGHModalUtils.java +0 -21
  365. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.java +0 -296
  366. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.java +0 -72
  367. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.java +0 -77
  368. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.java +0 -8
  369. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.java +0 -86
  370. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.java +0 -731
  371. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerPackage.java +0 -31
  372. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.java +0 -101
  373. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.java +0 -151
  374. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootInterface.java +0 -7
  375. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.java +0 -76
  376. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.java +0 -49
  377. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.java +0 -82
  378. package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.java +0 -61
  379. package/lib/commonjs/handlers/gestureHandlers.js +0 -236
  380. package/lib/commonjs/handlers/gestureHandlers.js.map +0 -1
  381. package/lib/module/handlers/gestureHandlers.js +0 -216
  382. package/lib/module/handlers/gestureHandlers.js.map +0 -1
  383. package/lib/typescript/handlers/gestureHandlers.d.ts +0 -158
  384. 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
- }