react-native-gesture-handler 1.10.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (592) hide show
  1. package/DrawerLayout/package.json +3 -3
  2. package/README.md +7 -6
  3. package/Swipeable/package.json +3 -3
  4. package/android/build.gradle +23 -1
  5. package/android/gradle.properties +19 -0
  6. package/android/lib/src/main/java/com/swmansion/gesturehandler/BaseGestureHandlerInteractionController.kt +18 -0
  7. package/android/lib/src/main/java/com/swmansion/gesturehandler/Extensions.kt +11 -0
  8. package/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.kt +96 -0
  9. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt +710 -0
  10. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerInteractionController.kt +8 -0
  11. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt +562 -0
  12. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistry.kt +8 -0
  13. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistryImpl.kt +21 -0
  14. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureUtils.kt +49 -0
  15. package/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.kt +97 -0
  16. package/android/lib/src/main/java/com/swmansion/gesturehandler/ManualGestureHandler.kt +11 -0
  17. package/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.kt +129 -0
  18. package/android/lib/src/main/java/com/swmansion/gesturehandler/OnTouchEventListener.kt +9 -0
  19. package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.kt +289 -0
  20. package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.kt +88 -0
  21. package/android/lib/src/main/java/com/swmansion/gesturehandler/{PointerEventsConfig.java → PointerEventsConfig.kt} +3 -5
  22. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureDetector.kt +125 -0
  23. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.kt +79 -0
  24. package/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.kt +167 -0
  25. package/android/lib/src/main/java/com/swmansion/gesturehandler/ViewConfigurationHelper.kt +10 -0
  26. package/android/src/main/java/com/swmansion/common/GestureHandlerStateManager.kt +5 -0
  27. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +348 -0
  28. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt +57 -0
  29. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +59 -0
  30. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt +8 -0
  31. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +61 -0
  32. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +686 -0
  33. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerPackage.kt +17 -0
  34. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt +95 -0
  35. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +132 -0
  36. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootInterface.kt +5 -0
  37. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +68 -0
  38. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt +34 -0
  39. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt +66 -0
  40. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt +69 -0
  41. package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt +51 -0
  42. package/ios/Handlers/RNFlingHandler.m +78 -5
  43. package/ios/Handlers/RNForceTouchHandler.m +29 -4
  44. package/ios/Handlers/RNLongPressHandler.m +105 -3
  45. package/ios/Handlers/RNManualHandler.h +4 -0
  46. package/ios/Handlers/RNManualHandler.m +73 -0
  47. package/ios/Handlers/RNNativeViewHandler.m +30 -2
  48. package/ios/Handlers/RNPanHandler.m +64 -4
  49. package/ios/Handlers/RNPinchHandler.m +61 -2
  50. package/ios/Handlers/RNRotationHandler.m +60 -1
  51. package/ios/Handlers/RNTapHandler.m +55 -8
  52. package/ios/RNGestureHandler.h +18 -4
  53. package/ios/RNGestureHandler.m +123 -13
  54. package/ios/RNGestureHandler.xcodeproj/xcuserdata/mdk.xcuserdatad/xcschemes/RNGestureHandler.xcscheme +80 -0
  55. package/ios/RNGestureHandler.xcodeproj/xcuserdata/mdk.xcuserdatad/xcschemes/xcschememanagement.plist +27 -0
  56. package/ios/RNGestureHandlerEvents.h +9 -0
  57. package/ios/RNGestureHandlerEvents.m +34 -0
  58. package/ios/RNGestureHandlerManager.h +7 -0
  59. package/ios/RNGestureHandlerManager.m +62 -34
  60. package/ios/RNGestureHandlerModule.m +39 -3
  61. package/ios/RNGestureHandlerPointerTracker.h +25 -0
  62. package/ios/RNGestureHandlerPointerTracker.m +237 -0
  63. package/ios/RNGestureHandlerRegistry.h +1 -0
  64. package/ios/RNGestureHandlerRegistry.m +10 -0
  65. package/ios/RNGestureHandlerStateManager.h +5 -0
  66. package/ios/RNManualActivationRecognizer.h +10 -0
  67. package/ios/RNManualActivationRecognizer.m +80 -0
  68. package/ios/RNRootViewGestureRecognizer.m +1 -1
  69. package/ios/RNTouchEventType.h +9 -0
  70. package/jestSetup.js +7 -0
  71. package/lib/commonjs/Directions.js +15 -0
  72. package/lib/commonjs/Directions.js.map +1 -0
  73. package/lib/commonjs/EventType.js +16 -0
  74. package/lib/commonjs/EventType.js.map +1 -0
  75. package/lib/commonjs/GestureHandlerRootView.android.js +24 -0
  76. package/lib/commonjs/GestureHandlerRootView.android.js.map +1 -0
  77. package/lib/commonjs/GestureHandlerRootView.js +20 -0
  78. package/lib/commonjs/GestureHandlerRootView.js.map +1 -0
  79. package/lib/commonjs/PlatformConstants.js +15 -0
  80. package/lib/commonjs/PlatformConstants.js.map +1 -0
  81. package/lib/commonjs/PlatformConstants.web.js +14 -0
  82. package/lib/commonjs/PlatformConstants.web.js.map +1 -0
  83. package/lib/commonjs/RNGestureHandlerModule.js +22 -0
  84. package/lib/commonjs/RNGestureHandlerModule.js.map +1 -0
  85. package/lib/commonjs/RNGestureHandlerModule.web.js +80 -0
  86. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -0
  87. package/lib/commonjs/State.js +18 -0
  88. package/lib/commonjs/State.js.map +1 -0
  89. package/lib/commonjs/components/DrawerLayout.js +535 -0
  90. package/lib/commonjs/components/DrawerLayout.js.map +1 -0
  91. package/lib/commonjs/components/GestureButtons.js +207 -0
  92. package/lib/commonjs/components/GestureButtons.js.map +1 -0
  93. package/lib/commonjs/components/GestureComponents.js +76 -0
  94. package/lib/commonjs/components/GestureComponents.js.map +1 -0
  95. package/lib/commonjs/components/GestureComponents.web.js +46 -0
  96. package/lib/commonjs/components/GestureComponents.web.js.map +1 -0
  97. package/lib/commonjs/components/GestureHandlerButton.js +13 -0
  98. package/lib/commonjs/components/GestureHandlerButton.js.map +1 -0
  99. package/lib/commonjs/components/GestureHandlerButton.web.js +24 -0
  100. package/lib/commonjs/components/GestureHandlerButton.web.js.map +1 -0
  101. package/lib/commonjs/components/Swipeable.js +365 -0
  102. package/lib/commonjs/components/Swipeable.js.map +1 -0
  103. package/lib/commonjs/components/touchables/GenericTouchable.js +278 -0
  104. package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -0
  105. package/lib/commonjs/components/touchables/TouchableHighlight.js +109 -0
  106. package/lib/commonjs/components/touchables/TouchableHighlight.js.map +1 -0
  107. package/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js +100 -0
  108. package/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js.map +1 -0
  109. package/lib/commonjs/components/touchables/TouchableNativeFeedback.js +12 -0
  110. package/lib/commonjs/components/touchables/TouchableNativeFeedback.js.map +1 -0
  111. package/lib/commonjs/components/touchables/TouchableOpacity.js +75 -0
  112. package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -0
  113. package/lib/commonjs/components/touchables/TouchableWithoutFeedback.js +26 -0
  114. package/lib/commonjs/components/touchables/TouchableWithoutFeedback.js.map +1 -0
  115. package/lib/commonjs/components/touchables/index.js +40 -0
  116. package/lib/commonjs/components/touchables/index.js.map +1 -0
  117. package/lib/commonjs/gestureHandlerRootHOC.js +39 -0
  118. package/lib/commonjs/gestureHandlerRootHOC.js.map +1 -0
  119. package/lib/commonjs/handlers/FlingGestureHandler.js +23 -0
  120. package/lib/commonjs/handlers/FlingGestureHandler.js.map +1 -0
  121. package/lib/commonjs/handlers/ForceTouchGestureHandler.js +44 -0
  122. package/lib/commonjs/handlers/ForceTouchGestureHandler.js.map +1 -0
  123. package/lib/commonjs/handlers/LongPressGestureHandler.js +23 -0
  124. package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -0
  125. package/lib/commonjs/handlers/NativeViewGestureHandler.js +25 -0
  126. package/lib/commonjs/handlers/NativeViewGestureHandler.js.map +1 -0
  127. package/lib/commonjs/handlers/PanGestureHandler.js +121 -0
  128. package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -0
  129. package/lib/commonjs/handlers/PinchGestureHandler.js +21 -0
  130. package/lib/commonjs/handlers/PinchGestureHandler.js.map +1 -0
  131. package/lib/commonjs/handlers/RotationGestureHandler.js +21 -0
  132. package/lib/commonjs/handlers/RotationGestureHandler.js.map +1 -0
  133. package/lib/commonjs/handlers/TapGestureHandler.js +23 -0
  134. package/lib/commonjs/handlers/TapGestureHandler.js.map +1 -0
  135. package/lib/commonjs/handlers/createHandler.js +373 -0
  136. package/lib/commonjs/handlers/createHandler.js.map +1 -0
  137. package/lib/commonjs/handlers/createNativeWrapper.js +70 -0
  138. package/lib/commonjs/handlers/createNativeWrapper.js.map +1 -0
  139. package/lib/commonjs/handlers/gestureHandlerCommon.js +80 -0
  140. package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -0
  141. package/lib/commonjs/handlers/gestureHandlerTypesCompat.js +2 -0
  142. package/lib/commonjs/handlers/gestureHandlerTypesCompat.js.map +1 -0
  143. package/lib/commonjs/handlers/gestures/GestureDetector.js +415 -0
  144. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -0
  145. package/lib/commonjs/handlers/gestures/eventReceiver.js +112 -0
  146. package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -0
  147. package/lib/commonjs/handlers/gestures/flingGesture.js +34 -0
  148. package/lib/commonjs/handlers/gestures/flingGesture.js.map +1 -0
  149. package/lib/commonjs/handlers/gestures/forceTouchGesture.js +39 -0
  150. package/lib/commonjs/handlers/gestures/forceTouchGesture.js.map +1 -0
  151. package/lib/commonjs/handlers/gestures/gesture.js +177 -0
  152. package/lib/commonjs/handlers/gestures/gesture.js.map +1 -0
  153. package/lib/commonjs/handlers/gestures/gestureComposition.js +94 -0
  154. package/lib/commonjs/handlers/gestures/gestureComposition.js.map +1 -0
  155. package/lib/commonjs/handlers/gestures/gestureObjects.js +85 -0
  156. package/lib/commonjs/handlers/gestures/gestureObjects.js.map +1 -0
  157. package/lib/commonjs/handlers/gestures/gestureStateManager.js +58 -0
  158. package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -0
  159. package/lib/commonjs/handlers/gestures/longPressGesture.js +34 -0
  160. package/lib/commonjs/handlers/gestures/longPressGesture.js.map +1 -0
  161. package/lib/commonjs/handlers/gestures/manualGesture.js +19 -0
  162. package/lib/commonjs/handlers/gestures/manualGesture.js.map +1 -0
  163. package/lib/commonjs/handlers/gestures/nativeGesture.js +34 -0
  164. package/lib/commonjs/handlers/gestures/nativeGesture.js.map +1 -0
  165. package/lib/commonjs/handlers/gestures/panGesture.js +116 -0
  166. package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -0
  167. package/lib/commonjs/handlers/gestures/pinchGesture.js +19 -0
  168. package/lib/commonjs/handlers/gestures/pinchGesture.js.map +1 -0
  169. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js +24 -0
  170. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -0
  171. package/lib/commonjs/handlers/gestures/rotationGesture.js +19 -0
  172. package/lib/commonjs/handlers/gestures/rotationGesture.js.map +1 -0
  173. package/lib/commonjs/handlers/gestures/tapGesture.js +59 -0
  174. package/lib/commonjs/handlers/gestures/tapGesture.js.map +1 -0
  175. package/lib/commonjs/handlers/handlersRegistry.js +31 -0
  176. package/lib/commonjs/handlers/handlersRegistry.js.map +1 -0
  177. package/lib/commonjs/index.js +338 -0
  178. package/lib/commonjs/index.js.map +1 -0
  179. package/lib/commonjs/init.js +13 -0
  180. package/lib/commonjs/init.js.map +1 -0
  181. package/lib/commonjs/mocks.js +64 -0
  182. package/lib/commonjs/mocks.js.map +1 -0
  183. package/lib/commonjs/typeUtils.js +2 -0
  184. package/lib/commonjs/typeUtils.js.map +1 -0
  185. package/lib/commonjs/utils.js +15 -0
  186. package/lib/commonjs/utils.js.map +1 -0
  187. package/lib/commonjs/web/DiscreteGestureHandler.js +105 -0
  188. package/lib/commonjs/web/DiscreteGestureHandler.js.map +1 -0
  189. package/lib/commonjs/web/DraggingGestureHandler.js +53 -0
  190. package/lib/commonjs/web/DraggingGestureHandler.js.map +1 -0
  191. package/lib/commonjs/web/Errors.js +16 -0
  192. package/lib/commonjs/web/Errors.js.map +1 -0
  193. package/lib/commonjs/web/FlingGestureHandler.js +170 -0
  194. package/lib/commonjs/web/FlingGestureHandler.js.map +1 -0
  195. package/lib/commonjs/web/GestureHandler.js +533 -0
  196. package/lib/commonjs/web/GestureHandler.js.map +1 -0
  197. package/lib/commonjs/web/IndiscreteGestureHandler.js +54 -0
  198. package/lib/commonjs/web/IndiscreteGestureHandler.js.map +1 -0
  199. package/lib/commonjs/web/LongPressGestureHandler.js +71 -0
  200. package/lib/commonjs/web/LongPressGestureHandler.js.map +1 -0
  201. package/lib/commonjs/web/NativeViewGestureHandler.js +62 -0
  202. package/lib/commonjs/web/NativeViewGestureHandler.js.map +1 -0
  203. package/lib/commonjs/web/NodeManager.js +43 -0
  204. package/lib/commonjs/web/NodeManager.js.map +1 -0
  205. package/lib/commonjs/web/PanGestureHandler.js +189 -0
  206. package/lib/commonjs/web/PanGestureHandler.js.map +1 -0
  207. package/lib/commonjs/web/PinchGestureHandler.js +40 -0
  208. package/lib/commonjs/web/PinchGestureHandler.js.map +1 -0
  209. package/lib/commonjs/web/PressGestureHandler.js +188 -0
  210. package/lib/commonjs/web/PressGestureHandler.js.map +1 -0
  211. package/lib/commonjs/web/RotationGestureHandler.js +44 -0
  212. package/lib/commonjs/web/RotationGestureHandler.js.map +1 -0
  213. package/lib/commonjs/web/TapGestureHandler.js +192 -0
  214. package/lib/commonjs/web/TapGestureHandler.js.map +1 -0
  215. package/lib/commonjs/web/constants.js +64 -0
  216. package/lib/commonjs/web/constants.js.map +1 -0
  217. package/lib/commonjs/web/utils.js +42 -0
  218. package/lib/commonjs/web/utils.js.map +1 -0
  219. package/lib/module/Directions.js +7 -0
  220. package/lib/module/Directions.js.map +1 -0
  221. package/lib/module/EventType.js +8 -0
  222. package/lib/module/EventType.js.map +1 -0
  223. package/lib/module/GestureHandlerRootView.android.js +10 -0
  224. package/lib/module/GestureHandlerRootView.android.js.map +1 -0
  225. package/lib/module/GestureHandlerRootView.js +7 -0
  226. package/lib/module/GestureHandlerRootView.js.map +1 -0
  227. package/lib/module/PlatformConstants.js +5 -0
  228. package/lib/module/PlatformConstants.js.map +1 -0
  229. package/lib/module/PlatformConstants.web.js +7 -0
  230. package/lib/module/PlatformConstants.web.js.map +1 -0
  231. package/lib/module/RNGestureHandlerModule.js +13 -0
  232. package/lib/module/RNGestureHandlerModule.js.map +1 -0
  233. package/lib/module/RNGestureHandlerModule.web.js +56 -0
  234. package/lib/module/RNGestureHandlerModule.web.js.map +1 -0
  235. package/lib/module/State.js +10 -0
  236. package/lib/module/State.js.map +1 -0
  237. package/lib/module/components/DrawerLayout.js +520 -0
  238. package/lib/module/components/DrawerLayout.js.map +1 -0
  239. package/lib/module/components/GestureButtons.js +172 -0
  240. package/lib/module/components/GestureButtons.js.map +1 -0
  241. package/lib/module/components/GestureComponents.js +53 -0
  242. package/lib/module/components/GestureComponents.js.map +1 -0
  243. package/lib/module/components/GestureComponents.web.js +25 -0
  244. package/lib/module/components/GestureComponents.web.js.map +1 -0
  245. package/{dist/src → lib/module}/components/GestureHandlerButton.js +1 -0
  246. package/lib/module/components/GestureHandlerButton.js.map +1 -0
  247. package/lib/module/components/GestureHandlerButton.web.js +9 -0
  248. package/lib/module/components/GestureHandlerButton.web.js.map +1 -0
  249. package/lib/module/components/Swipeable.js +347 -0
  250. package/lib/module/components/Swipeable.js.map +1 -0
  251. package/lib/module/components/touchables/GenericTouchable.js +262 -0
  252. package/lib/module/components/touchables/GenericTouchable.js.map +1 -0
  253. package/lib/module/components/touchables/TouchableHighlight.js +95 -0
  254. package/lib/module/components/touchables/TouchableHighlight.js.map +1 -0
  255. package/lib/module/components/touchables/TouchableNativeFeedback.android.js +84 -0
  256. package/lib/module/components/touchables/TouchableNativeFeedback.android.js.map +1 -0
  257. package/{dist/src → lib/module}/components/touchables/TouchableNativeFeedback.js +1 -0
  258. package/lib/module/components/touchables/TouchableNativeFeedback.js.map +1 -0
  259. package/lib/module/components/touchables/TouchableOpacity.js +61 -0
  260. package/lib/module/components/touchables/TouchableOpacity.js.map +1 -0
  261. package/lib/module/components/touchables/TouchableWithoutFeedback.js +10 -0
  262. package/lib/module/components/touchables/TouchableWithoutFeedback.js.map +1 -0
  263. package/{dist/src → lib/module}/components/touchables/index.js +1 -0
  264. package/lib/module/components/touchables/index.js.map +1 -0
  265. package/lib/module/gestureHandlerRootHOC.js +21 -0
  266. package/lib/module/gestureHandlerRootHOC.js.map +1 -0
  267. package/lib/module/handlers/FlingGestureHandler.js +10 -0
  268. package/lib/module/handlers/FlingGestureHandler.js.map +1 -0
  269. package/lib/module/handlers/ForceTouchGestureHandler.js +29 -0
  270. package/lib/module/handlers/ForceTouchGestureHandler.js.map +1 -0
  271. package/lib/module/handlers/LongPressGestureHandler.js +10 -0
  272. package/lib/module/handlers/LongPressGestureHandler.js.map +1 -0
  273. package/lib/module/handlers/NativeViewGestureHandler.js +11 -0
  274. package/lib/module/handlers/NativeViewGestureHandler.js.map +1 -0
  275. package/lib/module/handlers/PanGestureHandler.js +106 -0
  276. package/lib/module/handlers/PanGestureHandler.js.map +1 -0
  277. package/lib/module/handlers/PinchGestureHandler.js +9 -0
  278. package/lib/module/handlers/PinchGestureHandler.js.map +1 -0
  279. package/lib/module/handlers/RotationGestureHandler.js +9 -0
  280. package/lib/module/handlers/RotationGestureHandler.js.map +1 -0
  281. package/lib/module/handlers/TapGestureHandler.js +10 -0
  282. package/lib/module/handlers/TapGestureHandler.js.map +1 -0
  283. package/lib/module/handlers/createHandler.js +348 -0
  284. package/lib/module/handlers/createHandler.js.map +1 -0
  285. package/lib/module/handlers/createNativeWrapper.js +58 -0
  286. package/lib/module/handlers/createNativeWrapper.js.map +1 -0
  287. package/lib/module/handlers/gestureHandlerCommon.js +66 -0
  288. package/lib/module/handlers/gestureHandlerCommon.js.map +1 -0
  289. package/lib/module/handlers/gestureHandlerTypesCompat.js +2 -0
  290. package/lib/module/handlers/gestureHandlerTypesCompat.js.map +1 -0
  291. package/lib/module/handlers/gestures/GestureDetector.js +378 -0
  292. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -0
  293. package/lib/module/handlers/gestures/eventReceiver.js +97 -0
  294. package/lib/module/handlers/gestures/eventReceiver.js.map +1 -0
  295. package/lib/module/handlers/gestures/flingGesture.js +24 -0
  296. package/lib/module/handlers/gestures/flingGesture.js.map +1 -0
  297. package/lib/module/handlers/gestures/forceTouchGesture.js +29 -0
  298. package/lib/module/handlers/gestures/forceTouchGesture.js.map +1 -0
  299. package/lib/module/handlers/gestures/gesture.js +159 -0
  300. package/lib/module/handlers/gestures/gesture.js.map +1 -0
  301. package/lib/module/handlers/gestures/gestureComposition.js +79 -0
  302. package/lib/module/handlers/gestures/gestureComposition.js.map +1 -0
  303. package/lib/module/handlers/gestures/gestureObjects.js +67 -0
  304. package/lib/module/handlers/gestures/gestureObjects.js.map +1 -0
  305. package/lib/module/handlers/gestures/gestureStateManager.js +48 -0
  306. package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -0
  307. package/lib/module/handlers/gestures/longPressGesture.js +24 -0
  308. package/lib/module/handlers/gestures/longPressGesture.js.map +1 -0
  309. package/lib/module/handlers/gestures/manualGesture.js +9 -0
  310. package/lib/module/handlers/gestures/manualGesture.js.map +1 -0
  311. package/lib/module/handlers/gestures/nativeGesture.js +24 -0
  312. package/lib/module/handlers/gestures/nativeGesture.js.map +1 -0
  313. package/lib/module/handlers/gestures/panGesture.js +106 -0
  314. package/lib/module/handlers/gestures/panGesture.js.map +1 -0
  315. package/lib/module/handlers/gestures/pinchGesture.js +9 -0
  316. package/lib/module/handlers/gestures/pinchGesture.js.map +1 -0
  317. package/lib/module/handlers/gestures/reanimatedWrapper.js +19 -0
  318. package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -0
  319. package/lib/module/handlers/gestures/rotationGesture.js +9 -0
  320. package/lib/module/handlers/gestures/rotationGesture.js.map +1 -0
  321. package/lib/module/handlers/gestures/tapGesture.js +49 -0
  322. package/lib/module/handlers/gestures/tapGesture.js.map +1 -0
  323. package/lib/module/handlers/handlersRegistry.js +16 -0
  324. package/lib/module/handlers/handlersRegistry.js.map +1 -0
  325. package/lib/module/index.js +34 -0
  326. package/lib/module/index.js.map +1 -0
  327. package/lib/module/init.js +5 -0
  328. package/lib/module/init.js.map +1 -0
  329. package/lib/module/mocks.js +54 -0
  330. package/lib/module/mocks.js.map +1 -0
  331. package/lib/module/typeUtils.js +2 -0
  332. package/lib/module/typeUtils.js.map +1 -0
  333. package/lib/module/utils.js +8 -0
  334. package/lib/module/utils.js.map +1 -0
  335. package/lib/module/web/DiscreteGestureHandler.js +94 -0
  336. package/lib/module/web/DiscreteGestureHandler.js.map +1 -0
  337. package/lib/module/web/DraggingGestureHandler.js +40 -0
  338. package/lib/module/web/DraggingGestureHandler.js.map +1 -0
  339. package/lib/module/web/Errors.js +7 -0
  340. package/lib/module/web/Errors.js.map +1 -0
  341. package/lib/module/web/FlingGestureHandler.js +156 -0
  342. package/lib/module/web/FlingGestureHandler.js.map +1 -0
  343. package/lib/module/web/GestureHandler.js +518 -0
  344. package/lib/module/web/GestureHandler.js.map +1 -0
  345. package/lib/module/web/IndiscreteGestureHandler.js +44 -0
  346. package/lib/module/web/IndiscreteGestureHandler.js.map +1 -0
  347. package/lib/module/web/LongPressGestureHandler.js +58 -0
  348. package/lib/module/web/LongPressGestureHandler.js.map +1 -0
  349. package/lib/module/web/NativeViewGestureHandler.js +45 -0
  350. package/lib/module/web/NativeViewGestureHandler.js.map +1 -0
  351. package/lib/module/web/NodeManager.js +30 -0
  352. package/lib/module/web/NodeManager.js.map +1 -0
  353. package/lib/module/web/PanGestureHandler.js +175 -0
  354. package/lib/module/web/PanGestureHandler.js.map +1 -0
  355. package/lib/module/web/PinchGestureHandler.js +29 -0
  356. package/lib/module/web/PinchGestureHandler.js.map +1 -0
  357. package/lib/module/web/PressGestureHandler.js +174 -0
  358. package/lib/module/web/PressGestureHandler.js.map +1 -0
  359. package/lib/module/web/RotationGestureHandler.js +32 -0
  360. package/lib/module/web/RotationGestureHandler.js.map +1 -0
  361. package/lib/module/web/TapGestureHandler.js +180 -0
  362. package/lib/module/web/TapGestureHandler.js.map +1 -0
  363. package/lib/module/web/constants.js +43 -0
  364. package/lib/module/web/constants.js.map +1 -0
  365. package/lib/module/web/utils.js +19 -0
  366. package/lib/module/web/utils.js.map +1 -0
  367. package/lib/typescript/Directions.d.ts +7 -0
  368. package/lib/typescript/EventType.d.ts +8 -0
  369. package/lib/typescript/GestureHandlerRootView.android.d.ts +2 -0
  370. package/lib/typescript/GestureHandlerRootView.d.ts +5 -0
  371. package/{dist/src → lib/typescript}/PlatformConstants.d.ts +0 -0
  372. package/{dist/src → lib/typescript}/PlatformConstants.web.d.ts +0 -0
  373. package/{dist/src → lib/typescript}/RNGestureHandlerModule.d.ts +1 -8
  374. package/{dist/src → lib/typescript}/RNGestureHandlerModule.web.d.ts +1 -1
  375. package/{dist/src → lib/typescript}/State.d.ts +0 -0
  376. package/{dist/src → lib/typescript}/components/DrawerLayout.d.ts +52 -2
  377. package/{dist/src → lib/typescript}/components/GestureButtons.d.ts +37 -1
  378. package/lib/typescript/components/GestureComponents.d.ts +18 -0
  379. package/lib/typescript/components/GestureComponents.web.d.ts +7 -0
  380. package/{dist/src → lib/typescript}/components/GestureHandlerButton.d.ts +0 -0
  381. package/{dist/src → lib/typescript}/components/GestureHandlerButton.web.d.ts +1 -1
  382. package/lib/typescript/components/Swipeable.d.ts +150 -0
  383. package/{dist/src → lib/typescript}/components/touchables/GenericTouchable.d.ts +3 -3
  384. package/{dist/src → lib/typescript}/components/touchables/TouchableHighlight.d.ts +1 -0
  385. package/{dist/src → lib/typescript}/components/touchables/TouchableNativeFeedback.android.d.ts +0 -0
  386. package/{dist/src → lib/typescript}/components/touchables/TouchableNativeFeedback.d.ts +0 -0
  387. package/{dist/src → lib/typescript}/components/touchables/TouchableOpacity.d.ts +1 -0
  388. package/{dist/src → lib/typescript}/components/touchables/TouchableWithoutFeedback.d.ts +4 -2
  389. package/{dist/src → lib/typescript}/components/touchables/index.d.ts +0 -0
  390. package/lib/typescript/gestureHandlerRootHOC.d.ts +3 -0
  391. package/lib/typescript/handlers/FlingGestureHandler.d.ts +33 -0
  392. package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +43 -0
  393. package/lib/typescript/handlers/LongPressGestureHandler.d.ts +55 -0
  394. package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +27 -0
  395. package/lib/typescript/handlers/PanGestureHandler.d.ts +137 -0
  396. package/lib/typescript/handlers/PinchGestureHandler.d.ts +28 -0
  397. package/lib/typescript/handlers/RotationGestureHandler.d.ts +28 -0
  398. package/lib/typescript/handlers/TapGestureHandler.d.ts +56 -0
  399. package/{dist/src → lib/typescript}/handlers/createHandler.d.ts +2 -2
  400. package/{dist/src → lib/typescript}/handlers/createNativeWrapper.d.ts +1 -1
  401. package/lib/typescript/handlers/gestureHandlerCommon.d.ts +62 -0
  402. package/{dist/src → lib/typescript}/handlers/gestureHandlerTypesCompat.d.ts +17 -2
  403. package/lib/typescript/handlers/gestures/GestureDetector.d.ts +16 -0
  404. package/lib/typescript/handlers/gestures/eventReceiver.d.ts +2 -0
  405. package/lib/typescript/handlers/gestures/flingGesture.d.ts +9 -0
  406. package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +10 -0
  407. package/lib/typescript/handlers/gestures/gesture.d.ts +90 -0
  408. package/lib/typescript/handlers/gestures/gestureComposition.d.ts +21 -0
  409. package/lib/typescript/handlers/gestures/gestureObjects.d.ts +39 -0
  410. package/lib/typescript/handlers/gestures/gestureStateManager.d.ts +9 -0
  411. package/lib/typescript/handlers/gestures/longPressGesture.d.ts +9 -0
  412. package/lib/typescript/handlers/gestures/manualGesture.d.ts +5 -0
  413. package/lib/typescript/handlers/gestures/nativeGesture.d.ts +9 -0
  414. package/lib/typescript/handlers/gestures/panGesture.d.ts +19 -0
  415. package/lib/typescript/handlers/gestures/pinchGesture.d.ts +6 -0
  416. package/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts +14 -0
  417. package/lib/typescript/handlers/gestures/rotationGesture.d.ts +6 -0
  418. package/lib/typescript/handlers/gestures/tapGesture.d.ts +14 -0
  419. package/lib/typescript/handlers/handlersRegistry.d.ts +6 -0
  420. package/lib/typescript/index.d.ts +44 -0
  421. package/lib/typescript/init.d.ts +1 -0
  422. package/lib/typescript/mocks.d.ts +43 -0
  423. package/{dist/src → lib/typescript}/typeUtils.d.ts +0 -0
  424. package/lib/typescript/utils.d.ts +1 -0
  425. package/{dist/src → lib/typescript}/web/DiscreteGestureHandler.d.ts +0 -0
  426. package/{dist/src → lib/typescript}/web/DraggingGestureHandler.d.ts +0 -0
  427. package/{dist/src → lib/typescript}/web/Errors.d.ts +0 -0
  428. package/{dist/src → lib/typescript}/web/FlingGestureHandler.d.ts +0 -1
  429. package/{dist/src → lib/typescript}/web/GestureHandler.d.ts +0 -1
  430. package/{dist/src → lib/typescript}/web/IndiscreteGestureHandler.d.ts +0 -0
  431. package/{dist/src → lib/typescript}/web/LongPressGestureHandler.d.ts +0 -0
  432. package/{dist/src → lib/typescript}/web/NativeViewGestureHandler.d.ts +0 -0
  433. package/{dist/src → lib/typescript}/web/NodeManager.d.ts +0 -0
  434. package/{dist/src → lib/typescript}/web/PanGestureHandler.d.ts +0 -1
  435. package/{dist/src → lib/typescript}/web/PinchGestureHandler.d.ts +0 -1
  436. package/{dist/src → lib/typescript}/web/PressGestureHandler.d.ts +0 -1
  437. package/{dist/src → lib/typescript}/web/RotationGestureHandler.d.ts +0 -1
  438. package/{dist/src → lib/typescript}/web/TapGestureHandler.d.ts +0 -1
  439. package/{dist/src → lib/typescript}/web/constants.d.ts +0 -0
  440. package/{dist/src → lib/typescript}/web/utils.d.ts +0 -0
  441. package/package.json +38 -16
  442. package/src/Directions.ts +8 -2
  443. package/src/EventType.ts +10 -0
  444. package/src/GestureHandlerRootView.android.tsx +10 -25
  445. package/src/GestureHandlerRootView.tsx +12 -0
  446. package/src/PlatformConstants.ts +3 -2
  447. package/src/RNGestureHandlerModule.ts +15 -9
  448. package/src/RNGestureHandlerModule.web.ts +1 -0
  449. package/src/components/DrawerLayout.tsx +117 -43
  450. package/src/components/GestureButtons.tsx +46 -6
  451. package/src/components/GestureComponents.tsx +48 -41
  452. package/src/components/GestureComponents.web.tsx +1 -1
  453. package/src/components/{GestureHandlerButton.ts → GestureHandlerButton.tsx} +0 -0
  454. package/src/components/GestureHandlerButton.web.tsx +1 -1
  455. package/src/components/Swipeable.tsx +110 -22
  456. package/src/components/touchables/GenericTouchable.tsx +5 -3
  457. package/src/components/touchables/TouchableHighlight.tsx +2 -1
  458. package/src/components/touchables/TouchableNativeFeedback.android.tsx +2 -1
  459. package/src/components/touchables/{TouchableNativeFeedback.ts → TouchableNativeFeedback.tsx} +0 -0
  460. package/src/components/touchables/TouchableOpacity.tsx +3 -2
  461. package/src/components/touchables/TouchableWithoutFeedback.tsx +3 -2
  462. package/src/gestureHandlerRootHOC.tsx +5 -5
  463. package/src/handlers/FlingGestureHandler.ts +57 -0
  464. package/src/handlers/ForceTouchGestureHandler.ts +83 -0
  465. package/src/handlers/LongPressGestureHandler.ts +84 -0
  466. package/src/handlers/NativeViewGestureHandler.ts +31 -7
  467. package/src/handlers/PanGestureHandler.ts +321 -0
  468. package/src/handlers/PinchGestureHandler.ts +46 -0
  469. package/src/handlers/RotationGestureHandler.ts +46 -0
  470. package/src/handlers/TapGestureHandler.ts +90 -0
  471. package/src/handlers/createHandler.ts +61 -83
  472. package/src/handlers/createNativeWrapper.tsx +3 -2
  473. package/src/handlers/gestureHandlerCommon.ts +185 -0
  474. package/src/handlers/gestureHandlerTypesCompat.ts +37 -4
  475. package/src/handlers/gestures/GestureDetector.tsx +490 -0
  476. package/src/handlers/gestures/eventReceiver.ts +129 -0
  477. package/src/handlers/gestures/flingGesture.ts +27 -0
  478. package/src/handlers/gestures/forceTouchGesture.ts +32 -0
  479. package/src/handlers/gestures/gesture.ts +262 -0
  480. package/src/handlers/gestures/gestureComposition.ts +109 -0
  481. package/src/handlers/gestures/gestureObjects.ts +79 -0
  482. package/src/handlers/gestures/gestureStateManager.ts +60 -0
  483. package/src/handlers/gestures/longPressGesture.ts +27 -0
  484. package/src/handlers/gestures/manualGesture.ts +11 -0
  485. package/src/handlers/gestures/nativeGesture.ts +27 -0
  486. package/src/handlers/gestures/panGesture.ts +105 -0
  487. package/src/handlers/gestures/pinchGesture.ts +12 -0
  488. package/src/handlers/gestures/reanimatedWrapper.ts +45 -0
  489. package/src/handlers/gestures/rotationGesture.ts +12 -0
  490. package/src/handlers/gestures/tapGesture.ts +52 -0
  491. package/src/handlers/handlersRegistry.ts +22 -0
  492. package/src/index.ts +156 -0
  493. package/src/init.ts +5 -0
  494. package/src/mocks.ts +65 -0
  495. package/src/utils.ts +7 -0
  496. package/src/web/GestureHandler.ts +3 -4
  497. package/src/web/NativeViewGestureHandler.ts +0 -2
  498. package/src/web/NodeManager.ts +5 -0
  499. package/android/lib/src/main/java/com/swmansion/gesturehandler/BaseGestureHandlerInteractionController.java +0 -23
  500. package/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.java +0 -110
  501. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.java +0 -531
  502. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerInteractionController.java +0 -8
  503. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.java +0 -543
  504. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistry.java +0 -10
  505. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistryImpl.java +0 -29
  506. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureUtils.java +0 -53
  507. package/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.java +0 -81
  508. package/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.java +0 -110
  509. package/android/lib/src/main/java/com/swmansion/gesturehandler/OnTouchEventListener.java +0 -8
  510. package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.java +0 -312
  511. package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.java +0 -109
  512. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureDetector.java +0 -169
  513. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.java +0 -96
  514. package/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.java +0 -172
  515. package/android/lib/src/main/java/com/swmansion/gesturehandler/ViewConfigurationHelper.java +0 -10
  516. package/android/src/main/java/com/facebook/react/views/modal/RNGHModalUtils.java +0 -21
  517. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.java +0 -296
  518. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.java +0 -72
  519. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.java +0 -77
  520. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.java +0 -8
  521. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.java +0 -86
  522. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.java +0 -731
  523. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerPackage.java +0 -31
  524. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.java +0 -101
  525. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.java +0 -151
  526. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootInterface.java +0 -7
  527. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.java +0 -76
  528. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.java +0 -49
  529. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.java +0 -82
  530. package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.java +0 -61
  531. package/dist/index.d.ts +0 -13
  532. package/dist/index.js +0 -16
  533. package/dist/src/Directions.d.ts +0 -7
  534. package/dist/src/Directions.js +0 -2
  535. package/dist/src/GestureHandlerRootView.android.d.ts +0 -4
  536. package/dist/src/GestureHandlerRootView.android.expo.d.ts +0 -2
  537. package/dist/src/GestureHandlerRootView.android.expo.js +0 -2
  538. package/dist/src/GestureHandlerRootView.android.js +0 -21
  539. package/dist/src/GestureHandlerRootView.d.ts +0 -2
  540. package/dist/src/GestureHandlerRootView.js +0 -2
  541. package/dist/src/PlatformConstants.js +0 -2
  542. package/dist/src/PlatformConstants.web.js +0 -5
  543. package/dist/src/RNGestureHandlerModule.js +0 -3
  544. package/dist/src/RNGestureHandlerModule.web.js +0 -47
  545. package/dist/src/State.js +0 -9
  546. package/dist/src/__mocks__/RNGestureHandlerModule.d.ts +0 -23
  547. package/dist/src/__mocks__/RNGestureHandlerModule.js +0 -25
  548. package/dist/src/components/DrawerLayout.js +0 -390
  549. package/dist/src/components/GestureButtons.js +0 -113
  550. package/dist/src/components/GestureComponents.d.ts +0 -45
  551. package/dist/src/components/GestureComponents.js +0 -18
  552. package/dist/src/components/GestureComponents.web.d.ts +0 -7
  553. package/dist/src/components/GestureComponents.web.js +0 -18
  554. package/dist/src/components/GestureHandlerButton.web.js +0 -3
  555. package/dist/src/components/Swipeable.d.ts +0 -82
  556. package/dist/src/components/Swipeable.js +0 -248
  557. package/dist/src/components/touchables/GenericTouchable.js +0 -209
  558. package/dist/src/components/touchables/TouchableHighlight.js +0 -72
  559. package/dist/src/components/touchables/TouchableNativeFeedback.android.js +0 -62
  560. package/dist/src/components/touchables/TouchableOpacity.js +0 -49
  561. package/dist/src/components/touchables/TouchableWithoutFeedback.js +0 -5
  562. package/dist/src/gestureHandlerRootHOC.d.ts +0 -3
  563. package/dist/src/gestureHandlerRootHOC.js +0 -17
  564. package/dist/src/handlers/NativeViewGestureHandler.d.ts +0 -12
  565. package/dist/src/handlers/NativeViewGestureHandler.js +0 -13
  566. package/dist/src/handlers/createHandler.js +0 -292
  567. package/dist/src/handlers/createNativeWrapper.js +0 -50
  568. package/dist/src/handlers/gestureHandlerTypesCompat.js +0 -1
  569. package/dist/src/handlers/gestureHandlers.d.ts +0 -158
  570. package/dist/src/handlers/gestureHandlers.js +0 -247
  571. package/dist/src/typeUtils.js +0 -1
  572. package/dist/src/web/DiscreteGestureHandler.js +0 -48
  573. package/dist/src/web/DraggingGestureHandler.js +0 -25
  574. package/dist/src/web/Errors.js +0 -5
  575. package/dist/src/web/FlingGestureHandler.js +0 -119
  576. package/dist/src/web/GestureHandler.js +0 -413
  577. package/dist/src/web/IndiscreteGestureHandler.js +0 -26
  578. package/dist/src/web/LongPressGestureHandler.js +0 -46
  579. package/dist/src/web/NativeViewGestureHandler.js +0 -39
  580. package/dist/src/web/NodeManager.js +0 -22
  581. package/dist/src/web/PanGestureHandler.js +0 -145
  582. package/dist/src/web/PinchGestureHandler.js +0 -19
  583. package/dist/src/web/PressGestureHandler.js +0 -135
  584. package/dist/src/web/RotationGestureHandler.js +0 -20
  585. package/dist/src/web/TapGestureHandler.js +0 -143
  586. package/dist/src/web/constants.js +0 -42
  587. package/dist/src/web/utils.js +0 -15
  588. package/index.ts +0 -103
  589. package/src/GestureHandlerRootView.android.expo.ts +0 -3
  590. package/src/GestureHandlerRootView.ts +0 -3
  591. package/src/__mocks__/RNGestureHandlerModule.ts +0 -27
  592. package/src/handlers/gestureHandlers.ts +0 -511
@@ -0,0 +1,710 @@
1
+ package com.swmansion.gesturehandler
2
+
3
+ import android.view.MotionEvent
4
+ import android.view.MotionEvent.PointerCoords
5
+ import android.view.MotionEvent.PointerProperties
6
+ import android.view.View
7
+ import com.facebook.react.bridge.Arguments
8
+ import com.facebook.react.bridge.UiThreadUtil
9
+ import com.facebook.react.bridge.WritableArray
10
+ import com.facebook.react.uimanager.PixelUtil
11
+ import com.swmansion.gesturehandler.react.RNGestureHandlerTouchEvent
12
+ import java.lang.IllegalStateException
13
+ import java.util.*
14
+
15
+ open class GestureHandler<ConcreteGestureHandlerT : GestureHandler<ConcreteGestureHandlerT>> {
16
+ private val trackedPointerIDs = IntArray(MAX_POINTERS_COUNT)
17
+ private var trackedPointersIDsCount = 0
18
+ var tag = 0
19
+ var view: View? = null
20
+ private set
21
+ var state = STATE_UNDETERMINED
22
+ private set
23
+ var x = 0f
24
+ private set
25
+ var y = 0f
26
+ private set
27
+ var isWithinBounds = false
28
+ private set
29
+ var isEnabled = true
30
+ private set
31
+ var usesDeviceEvents = false
32
+
33
+ var changedTouchesPayload: WritableArray? = null
34
+ private set
35
+ var allTouchesPayload: WritableArray? = null
36
+ private set
37
+ var touchEventType = RNGestureHandlerTouchEvent.EVENT_UNDETERMINED
38
+ private set
39
+ var trackedPointersCount = 0
40
+ private set
41
+ private val trackedPointers: Array<PointerData?> = Array(MAX_POINTERS_COUNT) { null }
42
+ var needsPointerData = false
43
+
44
+
45
+ private var hitSlop: FloatArray? = null
46
+ var eventCoalescingKey: Short = 0
47
+ private set
48
+ var lastAbsolutePositionX = 0f
49
+ private set
50
+ var lastAbsolutePositionY = 0f
51
+ private set
52
+
53
+ private var manualActivation = false
54
+
55
+ private var lastEventOffsetX = 0f
56
+ private var lastEventOffsetY = 0f
57
+ private var shouldCancelWhenOutside = false
58
+ var numberOfPointers = 0
59
+ private set
60
+ private var orchestrator: GestureHandlerOrchestrator? = null
61
+ private var onTouchEventListener: OnTouchEventListener? = null
62
+ private var interactionController: GestureHandlerInteractionController? = null
63
+
64
+ @Suppress("UNCHECKED_CAST")
65
+ protected fun self(): ConcreteGestureHandlerT = this as ConcreteGestureHandlerT
66
+
67
+ protected inline fun applySelf(block: ConcreteGestureHandlerT.() -> Unit): ConcreteGestureHandlerT =
68
+ self().apply { block() }
69
+
70
+ // set and accessed only by the orchestrator
71
+ var activationIndex = 0
72
+
73
+ // set and accessed only by the orchestrator
74
+ var isActive = false
75
+
76
+ // set and accessed only by the orchestrator
77
+ var isAwaiting = false
78
+
79
+ open fun dispatchStateChange(newState: Int, prevState: Int) {
80
+ onTouchEventListener?.onStateChange(self(), newState, prevState)
81
+ }
82
+
83
+ open fun dispatchHandlerUpdate(event: MotionEvent) {
84
+ onTouchEventListener?.onHandlerUpdate(self(), event)
85
+ }
86
+
87
+ open fun dispatchTouchEvent() {
88
+ if (changedTouchesPayload != null) {
89
+ onTouchEventListener?.onTouchEvent(self())
90
+ }
91
+ }
92
+
93
+ open fun resetConfig() {
94
+ needsPointerData = false
95
+ manualActivation = false
96
+ shouldCancelWhenOutside = false
97
+ isEnabled = true
98
+ hitSlop = null
99
+ }
100
+
101
+ fun hasCommonPointers(other: GestureHandler<*>): Boolean {
102
+ for (i in trackedPointerIDs.indices) {
103
+ if (trackedPointerIDs[i] != -1 && other.trackedPointerIDs[i] != -1) {
104
+ return true
105
+ }
106
+ }
107
+ return false
108
+ }
109
+
110
+ fun setShouldCancelWhenOutside(shouldCancelWhenOutside: Boolean): ConcreteGestureHandlerT =
111
+ applySelf { this.shouldCancelWhenOutside = shouldCancelWhenOutside }
112
+
113
+ fun setEnabled(enabled: Boolean): ConcreteGestureHandlerT = applySelf {
114
+ if (view != null) {
115
+ // If view is set then handler is in "active" state. In that case we want to "cancel" handler
116
+ // when it changes enabled state so that it gets cleared from the orchestrator
117
+ UiThreadUtil.runOnUiThread { cancel() }
118
+ }
119
+ isEnabled = enabled
120
+ }
121
+
122
+ fun setManualActivation(manualActivation: Boolean): ConcreteGestureHandlerT =
123
+ applySelf { this.manualActivation = manualActivation }
124
+
125
+ fun setHitSlop(
126
+ leftPad: Float, topPad: Float, rightPad: Float, bottomPad: Float,
127
+ width: Float, height: Float,
128
+ ): ConcreteGestureHandlerT = applySelf {
129
+ if (hitSlop == null) {
130
+ hitSlop = FloatArray(6)
131
+ }
132
+ hitSlop!![HIT_SLOP_LEFT_IDX] = leftPad
133
+ hitSlop!![HIT_SLOP_TOP_IDX] = topPad
134
+ hitSlop!![HIT_SLOP_RIGHT_IDX] = rightPad
135
+ hitSlop!![HIT_SLOP_BOTTOM_IDX] = bottomPad
136
+ hitSlop!![HIT_SLOP_WIDTH_IDX] = width
137
+ hitSlop!![HIT_SLOP_HEIGHT_IDX] = height
138
+ require(!(hitSlopSet(width) && hitSlopSet(leftPad) && hitSlopSet(rightPad))) { "Cannot have all of left, right and width defined" }
139
+ require(!(hitSlopSet(width) && !hitSlopSet(leftPad) && !hitSlopSet(rightPad))) { "When width is set one of left or right pads need to be defined" }
140
+ require(!(hitSlopSet(height) && hitSlopSet(bottomPad) && hitSlopSet(topPad))) { "Cannot have all of top, bottom and height defined" }
141
+ require(!(hitSlopSet(height) && !hitSlopSet(bottomPad) && !hitSlopSet(topPad))) { "When height is set one of top or bottom pads need to be defined" }
142
+ }
143
+
144
+ fun setHitSlop(padding: Float): ConcreteGestureHandlerT {
145
+ return setHitSlop(padding, padding, padding, padding, HIT_SLOP_NONE, HIT_SLOP_NONE)
146
+ }
147
+
148
+ fun setInteractionController(controller: GestureHandlerInteractionController?): ConcreteGestureHandlerT =
149
+ applySelf { interactionController = controller }
150
+
151
+ fun prepare(view: View?, orchestrator: GestureHandlerOrchestrator?) {
152
+ check(!(this.view != null || this.orchestrator != null)) { "Already prepared or hasn't been reset" }
153
+ Arrays.fill(trackedPointerIDs, -1)
154
+ trackedPointersIDsCount = 0
155
+ state = STATE_UNDETERMINED
156
+ this.view = view
157
+ this.orchestrator = orchestrator
158
+ }
159
+
160
+ private fun findNextLocalPointerId(): Int {
161
+ var localPointerId = 0
162
+ while (localPointerId < trackedPointersIDsCount) {
163
+ var i = 0
164
+ while (i < trackedPointerIDs.size) {
165
+ if (trackedPointerIDs[i] == localPointerId) {
166
+ break
167
+ }
168
+ i++
169
+ }
170
+ if (i == trackedPointerIDs.size) {
171
+ return localPointerId
172
+ }
173
+ localPointerId++
174
+ }
175
+ return localPointerId
176
+ }
177
+
178
+ fun startTrackingPointer(pointerId: Int) {
179
+ if (trackedPointerIDs[pointerId] == -1) {
180
+ trackedPointerIDs[pointerId] = findNextLocalPointerId()
181
+ trackedPointersIDsCount++
182
+ }
183
+ }
184
+
185
+ fun stopTrackingPointer(pointerId: Int) {
186
+ if (trackedPointerIDs[pointerId] != -1) {
187
+ trackedPointerIDs[pointerId] = -1
188
+ trackedPointersIDsCount--
189
+ }
190
+ }
191
+
192
+ private fun needAdapt(event: MotionEvent): Boolean {
193
+ if (event.pointerCount != trackedPointersIDsCount) {
194
+ return true
195
+ }
196
+
197
+ for (i in trackedPointerIDs.indices) {
198
+ val trackedPointer = trackedPointerIDs[i]
199
+ if (trackedPointer != -1 && trackedPointer != i) {
200
+ return true
201
+ }
202
+ }
203
+ return false
204
+ }
205
+
206
+ private fun adaptEvent(event: MotionEvent): MotionEvent {
207
+ if (!needAdapt(event)) {
208
+ return event
209
+ }
210
+ var action = event.actionMasked
211
+ var actionIndex = -1
212
+ if (action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_POINTER_DOWN) {
213
+ actionIndex = event.actionIndex
214
+ val actionPointer = event.getPointerId(actionIndex)
215
+ action = if (trackedPointerIDs[actionPointer] != -1) {
216
+ if (trackedPointersIDsCount == 1) MotionEvent.ACTION_DOWN else MotionEvent.ACTION_POINTER_DOWN
217
+ } else {
218
+ MotionEvent.ACTION_MOVE
219
+ }
220
+ } else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_POINTER_UP) {
221
+ actionIndex = event.actionIndex
222
+ val actionPointer = event.getPointerId(actionIndex)
223
+ action = if (trackedPointerIDs[actionPointer] != -1) {
224
+ if (trackedPointersIDsCount == 1) MotionEvent.ACTION_UP else MotionEvent.ACTION_POINTER_UP
225
+ } else {
226
+ MotionEvent.ACTION_MOVE
227
+ }
228
+ }
229
+ initPointerProps(trackedPointersIDsCount)
230
+ var count = 0
231
+ val oldX = event.x
232
+ val oldY = event.y
233
+ event.setLocation(event.rawX, event.rawY)
234
+ var index = 0
235
+ val size = event.pointerCount
236
+ while (index < size) {
237
+ val origPointerId = event.getPointerId(index)
238
+ if (trackedPointerIDs[origPointerId] != -1) {
239
+ event.getPointerProperties(index, pointerProps[count])
240
+ pointerProps[count]!!.id = trackedPointerIDs[origPointerId]
241
+ event.getPointerCoords(index, pointerCoords[count])
242
+ if (index == actionIndex) {
243
+ action = action or (count shl MotionEvent.ACTION_POINTER_INDEX_SHIFT)
244
+ }
245
+ count++
246
+ }
247
+ index++
248
+ }
249
+
250
+ // introduced in 1.11.0, remove if crashes are not reported
251
+ if(pointerProps.isEmpty()|| pointerCoords.isEmpty()){
252
+ throw IllegalStateException("pointerCoords.size=${pointerCoords.size}, pointerProps.size=${pointerProps.size}")
253
+ }
254
+
255
+ val result: MotionEvent
256
+ try {
257
+ result = MotionEvent.obtain(
258
+ event.downTime,
259
+ event.eventTime,
260
+ action,
261
+ count,
262
+ pointerProps, /* props are copied and hence it is safe to use static array here */
263
+ pointerCoords, /* same applies to coords */
264
+ event.metaState,
265
+ event.buttonState,
266
+ event.xPrecision,
267
+ event.yPrecision,
268
+ event.deviceId,
269
+ event.edgeFlags,
270
+ event.source,
271
+ event.flags
272
+ )
273
+ } catch (e: IllegalArgumentException) {
274
+ throw AdaptEventException(this, event, e)
275
+ }
276
+ event.setLocation(oldX, oldY)
277
+ result.setLocation(oldX, oldY)
278
+ return result
279
+ }
280
+
281
+ // exception to help debug https://github.com/software-mansion/react-native-gesture-handler/issues/1188
282
+ class AdaptEventException(
283
+ handler: GestureHandler<*>,
284
+ event: MotionEvent,
285
+ e: IllegalArgumentException
286
+ ) : Exception("""
287
+ handler: ${handler::class.simpleName}
288
+ state: ${handler.state}
289
+ view: ${handler.view}
290
+ orchestrator: ${handler.orchestrator}
291
+ isEnabled: ${handler.isEnabled}
292
+ isActive: ${handler.isActive}
293
+ isAwaiting: ${handler.isAwaiting}
294
+ trackedPointersCount: ${handler.trackedPointersCount}
295
+ trackedPointers: ${handler.trackedPointerIDs.joinToString(separator = ", ")}
296
+ while handling event: $event
297
+ """.trimIndent(), e) {}
298
+
299
+ fun handle(origEvent: MotionEvent) {
300
+ if (!isEnabled
301
+ || state == STATE_CANCELLED
302
+ || state == STATE_FAILED
303
+ || state == STATE_END
304
+ || trackedPointersIDsCount < 1) {
305
+ return
306
+ }
307
+ val event = adaptEvent(origEvent)
308
+ x = event.x
309
+ y = event.y
310
+ numberOfPointers = event.pointerCount
311
+ isWithinBounds = isWithinBounds(view, x, y)
312
+ if (shouldCancelWhenOutside && !isWithinBounds) {
313
+ if (state == STATE_ACTIVE) {
314
+ cancel()
315
+ } else if (state == STATE_BEGAN) {
316
+ fail()
317
+ }
318
+ return
319
+ }
320
+ lastAbsolutePositionX = GestureUtils.getLastPointerX(event, true)
321
+ lastAbsolutePositionY = GestureUtils.getLastPointerY(event, true)
322
+ lastEventOffsetX = event.rawX - event.x
323
+ lastEventOffsetY = event.rawY - event.y
324
+ onHandle(event)
325
+ if (event != origEvent) {
326
+ event.recycle()
327
+ }
328
+ }
329
+
330
+ private fun dispatchTouchDownEvent(event: MotionEvent) {
331
+ changedTouchesPayload = null
332
+ touchEventType = RNGestureHandlerTouchEvent.EVENT_TOUCH_DOWN
333
+ val pointerId = event.getPointerId(event.actionIndex)
334
+ val offsetX = event.rawX - event.x
335
+ val offsetY = event.rawY - event.y
336
+
337
+ trackedPointers[pointerId] = PointerData(
338
+ pointerId,
339
+ event.getX(event.actionIndex),
340
+ event.getY(event.actionIndex),
341
+ event.getX(event.actionIndex) + offsetX,
342
+ event.getY(event.actionIndex) + offsetY,
343
+ )
344
+ trackedPointersCount++
345
+ addChangedPointer(trackedPointers[pointerId]!!)
346
+ extractAllPointersData()
347
+
348
+ dispatchTouchEvent()
349
+ }
350
+
351
+ private fun dispatchTouchUpEvent(event: MotionEvent) {
352
+ extractAllPointersData()
353
+ changedTouchesPayload = null
354
+ touchEventType = RNGestureHandlerTouchEvent.EVENT_TOUCH_UP
355
+ val pointerId = event.getPointerId(event.actionIndex)
356
+ val offsetX = event.rawX - event.x
357
+ val offsetY = event.rawY - event.y
358
+
359
+ trackedPointers[pointerId] = PointerData(
360
+ pointerId,
361
+ event.getX(event.actionIndex),
362
+ event.getY(event.actionIndex),
363
+ event.getX(event.actionIndex) + offsetX,
364
+ event.getY(event.actionIndex) + offsetY,
365
+ )
366
+ addChangedPointer(trackedPointers[pointerId]!!)
367
+ trackedPointers[pointerId] = null
368
+ trackedPointersCount--
369
+
370
+ dispatchTouchEvent()
371
+ }
372
+
373
+ private fun dispatchTouchMoveEvent(event: MotionEvent) {
374
+ changedTouchesPayload = null
375
+ touchEventType = RNGestureHandlerTouchEvent.EVENT_TOUCH_MOVE
376
+ val offsetX = event.rawX - event.x
377
+ val offsetY = event.rawY - event.y
378
+ var pointersAdded = 0
379
+
380
+ for (i in 0 until event.pointerCount) {
381
+ val pointerId = event.getPointerId(i)
382
+ val pointer = trackedPointers[pointerId] ?: continue
383
+
384
+ if (pointer.x != event.getX(i) || pointer.y != event.getY(i)) {
385
+ pointer.x = event.getX(i)
386
+ pointer.y = event.getY(i)
387
+ pointer.absoluteX = event.getX(i) + offsetX
388
+ pointer.absoluteY = event.getY(i) + offsetY
389
+
390
+ addChangedPointer(pointer)
391
+ pointersAdded++
392
+ }
393
+ }
394
+
395
+ // only data about pointers that have changed their position is sent, it makes no sense to send
396
+ // an empty move event (especially when this method is called during down/up event and there is
397
+ // only info about one pointer)
398
+ if (pointersAdded > 0) {
399
+ extractAllPointersData()
400
+ dispatchTouchEvent()
401
+ }
402
+ }
403
+
404
+ fun updatePointerData(event: MotionEvent) {
405
+ if (event.actionMasked == MotionEvent.ACTION_DOWN || event.actionMasked == MotionEvent.ACTION_POINTER_DOWN) {
406
+ dispatchTouchDownEvent(event)
407
+ dispatchTouchMoveEvent(event)
408
+ } else if (event.actionMasked == MotionEvent.ACTION_UP || event.actionMasked == MotionEvent.ACTION_POINTER_UP) {
409
+ dispatchTouchMoveEvent(event)
410
+ dispatchTouchUpEvent(event)
411
+ } else if (event.actionMasked == MotionEvent.ACTION_MOVE) {
412
+ dispatchTouchMoveEvent(event)
413
+ }
414
+ }
415
+
416
+ private fun extractAllPointersData() {
417
+ allTouchesPayload = null
418
+
419
+ for (pointerData in trackedPointers) {
420
+ if (pointerData != null) {
421
+ addPointerToAll(pointerData)
422
+ }
423
+ }
424
+ }
425
+
426
+ private fun cancelPointers() {
427
+ touchEventType = RNGestureHandlerTouchEvent.EVENT_TOUCH_CANCELLED
428
+ changedTouchesPayload = null
429
+ extractAllPointersData()
430
+
431
+ for (pointer in trackedPointers) {
432
+ pointer?.let {
433
+ addChangedPointer(it)
434
+ }
435
+ }
436
+
437
+ trackedPointersCount = 0
438
+ trackedPointers.fill(null)
439
+
440
+ dispatchTouchEvent()
441
+ }
442
+
443
+ private fun addChangedPointer(pointerData: PointerData) {
444
+ if (changedTouchesPayload == null) {
445
+ changedTouchesPayload = Arguments.createArray()
446
+ }
447
+
448
+ changedTouchesPayload!!.pushMap(createPointerData(pointerData))
449
+ }
450
+
451
+ private fun addPointerToAll(pointerData: PointerData) {
452
+ if (allTouchesPayload == null) {
453
+ allTouchesPayload = Arguments.createArray()
454
+ }
455
+
456
+ allTouchesPayload!!.pushMap(createPointerData(pointerData))
457
+ }
458
+
459
+ private fun createPointerData(pointerData: PointerData) = Arguments.createMap().apply {
460
+ putInt("id", pointerData.pointerId)
461
+ putDouble("x", PixelUtil.toDIPFromPixel(pointerData.x).toDouble())
462
+ putDouble("y", PixelUtil.toDIPFromPixel(pointerData.y).toDouble())
463
+ putDouble("absoluteX", PixelUtil.toDIPFromPixel(pointerData.absoluteX).toDouble())
464
+ putDouble("absoluteY", PixelUtil.toDIPFromPixel(pointerData.absoluteY).toDouble())
465
+ }
466
+
467
+ fun consumeChangedTouchesPayload(): WritableArray? {
468
+ val result = changedTouchesPayload
469
+ changedTouchesPayload = null
470
+ return result
471
+ }
472
+
473
+ fun consumeAllTouchesPayload(): WritableArray? {
474
+ val result = allTouchesPayload
475
+ allTouchesPayload = null
476
+ return result
477
+ }
478
+
479
+ private fun moveToState(newState: Int) {
480
+ UiThreadUtil.assertOnUiThread()
481
+ if (state == newState) {
482
+ return
483
+ }
484
+
485
+ // if there are tracked pointers and the gesture is about to end, send event cancelling all pointers
486
+ if (trackedPointersCount > 0 && (newState == STATE_END || newState == STATE_CANCELLED || newState == STATE_FAILED)) {
487
+ cancelPointers()
488
+ }
489
+
490
+ val oldState = state
491
+ state = newState
492
+ if (state == STATE_ACTIVE) {
493
+ // Generate a unique coalescing-key each time the gesture-handler becomes active. All events will have
494
+ // the same coalescing-key allowing EventDispatcher to coalesce RNGestureHandlerEvents when events are
495
+ // generated faster than they can be treated by JS thread
496
+ eventCoalescingKey = nextEventCoalescingKey++
497
+ }
498
+ orchestrator!!.onHandlerStateChange(this, newState, oldState)
499
+ onStateChange(newState, oldState)
500
+ }
501
+
502
+ fun wantEvents(): Boolean {
503
+ return isEnabled
504
+ && state != STATE_FAILED
505
+ && state != STATE_CANCELLED
506
+ && state != STATE_END
507
+ && trackedPointersIDsCount > 0
508
+ }
509
+
510
+ open fun shouldRequireToWaitForFailure(handler: GestureHandler<*>): Boolean {
511
+ if (handler === this) {
512
+ return false
513
+ }
514
+
515
+ return interactionController?.shouldRequireHandlerToWaitForFailure(this, handler) ?: false
516
+ }
517
+
518
+ fun shouldWaitForHandlerFailure(handler: GestureHandler<*>): Boolean {
519
+ if (handler === this) {
520
+ return false
521
+ }
522
+
523
+ return interactionController?.shouldWaitForHandlerFailure(this, handler) ?: false
524
+ }
525
+
526
+ open fun shouldRecognizeSimultaneously(handler: GestureHandler<*>): Boolean {
527
+ if (handler === this) {
528
+ return true
529
+ }
530
+
531
+ return interactionController?.shouldRecognizeSimultaneously(this, handler) ?: false
532
+ }
533
+
534
+ open fun shouldBeCancelledBy(handler: GestureHandler<*>): Boolean {
535
+ if (handler === this) {
536
+ return false
537
+ }
538
+
539
+ return interactionController?.shouldHandlerBeCancelledBy(this, handler) ?: false
540
+ }
541
+
542
+ fun isWithinBounds(view: View?, posX: Float, posY: Float): Boolean {
543
+ var left = 0f
544
+ var top = 0f
545
+ var right = view!!.width.toFloat()
546
+ var bottom = view.height.toFloat()
547
+ if (hitSlop != null) {
548
+ val padLeft = hitSlop!![HIT_SLOP_LEFT_IDX]
549
+ val padTop = hitSlop!![HIT_SLOP_TOP_IDX]
550
+ val padRight = hitSlop!![HIT_SLOP_RIGHT_IDX]
551
+ val padBottom = hitSlop!![HIT_SLOP_BOTTOM_IDX]
552
+ if (hitSlopSet(padLeft)) {
553
+ left -= padLeft
554
+ }
555
+ if (hitSlopSet(padTop)) {
556
+ top -= padTop
557
+ }
558
+ if (hitSlopSet(padRight)) {
559
+ right += padRight
560
+ }
561
+ if (hitSlopSet(padBottom)) {
562
+ bottom += padBottom
563
+ }
564
+ val width = hitSlop!![HIT_SLOP_WIDTH_IDX]
565
+ val height = hitSlop!![HIT_SLOP_HEIGHT_IDX]
566
+ if (hitSlopSet(width)) {
567
+ if (!hitSlopSet(padLeft)) {
568
+ left = right - width
569
+ } else if (!hitSlopSet(padRight)) {
570
+ right = left + width
571
+ }
572
+ }
573
+ if (hitSlopSet(height)) {
574
+ if (!hitSlopSet(padTop)) {
575
+ top = bottom - height
576
+ } else if (!hitSlopSet(padBottom)) {
577
+ bottom = top + height
578
+ }
579
+ }
580
+ }
581
+ return posX in left..right && posY in top..bottom
582
+ }
583
+
584
+ fun cancel() {
585
+ if (state == STATE_ACTIVE || state == STATE_UNDETERMINED || state == STATE_BEGAN) {
586
+ onCancel()
587
+ moveToState(STATE_CANCELLED)
588
+ }
589
+ }
590
+
591
+ fun fail() {
592
+ if (state == STATE_ACTIVE || state == STATE_UNDETERMINED || state == STATE_BEGAN) {
593
+ moveToState(STATE_FAILED)
594
+ }
595
+ }
596
+
597
+ fun activate() = activate(force = false)
598
+
599
+ open fun activate(force: Boolean) {
600
+ if ((!manualActivation || force) && (state == STATE_UNDETERMINED || state == STATE_BEGAN)) {
601
+ moveToState(STATE_ACTIVE)
602
+ }
603
+ }
604
+
605
+ fun begin() {
606
+ if (state == STATE_UNDETERMINED) {
607
+ moveToState(STATE_BEGAN)
608
+ }
609
+ }
610
+
611
+ fun end() {
612
+ if (state == STATE_BEGAN || state == STATE_ACTIVE) {
613
+ moveToState(STATE_END)
614
+ }
615
+ }
616
+
617
+ protected open fun onHandle(event: MotionEvent) {
618
+ moveToState(STATE_FAILED)
619
+ }
620
+
621
+ protected open fun onStateChange(newState: Int, previousState: Int) {}
622
+ protected open fun onReset() {}
623
+ protected open fun onCancel() {}
624
+ fun reset() {
625
+ view = null
626
+ orchestrator = null
627
+ Arrays.fill(trackedPointerIDs, -1)
628
+ trackedPointersIDsCount = 0
629
+
630
+ trackedPointersCount = 0
631
+ trackedPointers.fill(null)
632
+ touchEventType = RNGestureHandlerTouchEvent.EVENT_UNDETERMINED
633
+ onReset()
634
+ }
635
+
636
+ fun setOnTouchEventListener(listener: OnTouchEventListener?): GestureHandler<*> {
637
+ onTouchEventListener = listener
638
+ return this
639
+ }
640
+
641
+ override fun toString(): String {
642
+ val viewString = if (view == null) null else view!!.javaClass.simpleName
643
+ return this.javaClass.simpleName + "@[" + tag + "]:" + viewString
644
+ }
645
+
646
+ val lastRelativePositionX: Float
647
+ get() = lastAbsolutePositionX - lastEventOffsetX
648
+ val lastRelativePositionY: Float
649
+ get() = lastAbsolutePositionY - lastEventOffsetY
650
+
651
+ companion object {
652
+ const val STATE_UNDETERMINED = 0
653
+ const val STATE_FAILED = 1
654
+ const val STATE_BEGAN = 2
655
+ const val STATE_CANCELLED = 3
656
+ const val STATE_ACTIVE = 4
657
+ const val STATE_END = 5
658
+ const val HIT_SLOP_NONE = Float.NaN
659
+ private const val HIT_SLOP_LEFT_IDX = 0
660
+ private const val HIT_SLOP_TOP_IDX = 1
661
+ private const val HIT_SLOP_RIGHT_IDX = 2
662
+ private const val HIT_SLOP_BOTTOM_IDX = 3
663
+ private const val HIT_SLOP_WIDTH_IDX = 4
664
+ private const val HIT_SLOP_HEIGHT_IDX = 5
665
+ const val DIRECTION_RIGHT = 1
666
+ const val DIRECTION_LEFT = 2
667
+ const val DIRECTION_UP = 4
668
+ const val DIRECTION_DOWN = 8
669
+ private const val MAX_POINTERS_COUNT = 12
670
+ private lateinit var pointerProps: Array<PointerProperties?>
671
+ private lateinit var pointerCoords: Array<PointerCoords?>
672
+ private fun initPointerProps(size: Int) {
673
+ var size = size
674
+ if (!::pointerProps.isInitialized) {
675
+ pointerProps = arrayOfNulls(MAX_POINTERS_COUNT)
676
+ pointerCoords = arrayOfNulls(MAX_POINTERS_COUNT)
677
+ }
678
+ while (size > 0 && pointerProps[size - 1] == null) {
679
+ pointerProps[size - 1] = PointerProperties()
680
+ pointerCoords[size - 1] = PointerCoords()
681
+ size--
682
+ }
683
+ }
684
+
685
+ private var nextEventCoalescingKey: Short = 0
686
+ private fun hitSlopSet(value: Float): Boolean {
687
+ return !java.lang.Float.isNaN(value)
688
+ }
689
+
690
+ fun stateToString(state: Int): String? {
691
+ when (state) {
692
+ STATE_UNDETERMINED -> return "UNDETERMINED"
693
+ STATE_ACTIVE -> return "ACTIVE"
694
+ STATE_FAILED -> return "FAILED"
695
+ STATE_BEGAN -> return "BEGIN"
696
+ STATE_CANCELLED -> return "CANCELLED"
697
+ STATE_END -> return "END"
698
+ }
699
+ return null
700
+ }
701
+ }
702
+
703
+ private data class PointerData(
704
+ val pointerId: Int,
705
+ var x: Float,
706
+ var y: Float,
707
+ var absoluteX: Float,
708
+ var absoluteY: Float
709
+ )
710
+ }
@@ -0,0 +1,8 @@
1
+ package com.swmansion.gesturehandler
2
+
3
+ interface GestureHandlerInteractionController {
4
+ fun shouldWaitForHandlerFailure(handler: GestureHandler<*>, otherHandler: GestureHandler<*>): Boolean
5
+ fun shouldRequireHandlerToWaitForFailure(handler: GestureHandler<*>, otherHandler: GestureHandler<*>): Boolean
6
+ fun shouldRecognizeSimultaneously(handler: GestureHandler<*>, otherHandler: GestureHandler<*>): Boolean
7
+ fun shouldHandlerBeCancelledBy(handler: GestureHandler<*>, otherHandler: GestureHandler<*>): Boolean
8
+ }